PageSourceSearch

https://blockclubchicago.org/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.js?ver=11.1.2

js blockclubchicago.org collected 2026-09-24 08:31:22 UTC 30,315 bytes, 936 lines download raw bytes

vendor: 5,232 bytes, lines 1-158
1!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.sbjs=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
2"use strict";
3
4var init = _dereq_('./init');
5
6var sbjs = {
7  init: function(prefs) {
8    this.get = init(prefs);
9    if (prefs && prefs.callback && typeof prefs.callback === 'function') {
10      prefs.callback(this.get);
11    }
12  }
13};
14
15module.exports = sbjs;
16},{"./init":6}],2:[function(_dereq_,module,exports){
17"use strict";
18
19var terms = _dereq_('./terms'),
20    utils = _dereq_('./helpers/utils');
21
22var data = {
23
24  containers: {
25    current:          'sbjs_current',
26    current_extra:    'sbjs_current_add',
27    first:            'sbjs_first',
28    first_extra:      'sbjs_first_add',
29    session:          'sbjs_session',
30    udata:            'sbjs_udata',
31    promocode:        'sbjs_promo'
32  },
33
34  service: {
35    migrations:       'sbjs_migrations'
36  },
37
38  delimiter:          '|||',
39
40  aliases: {
41
42    main: {
43      type:           'typ',
44      source:         'src',
45      medium:         'mdm',
46      campaign:       'cmp',
47      content:        'cnt',
48      term:           'trm',
49      id:             'id',
50      platform:       'plt',
51      format:         'fmt',
52      tactic:         'tct'
53    },
54
55    extra: {
56      fire_date:      'fd',
57      entrance_point: 'ep',
58      referer:        'rf'
59    },
60
61    session: {
62      pages_seen:     'pgs',
63      current_page:   'cpg'
64    },
65
66    udata: {
67      visits:         'vst',
68      ip:             'uip',
69      agent:          'uag'
70    },
71
72    promo:            'code'
73
74  },
75
76  pack: {
77
78    main: function(sbjs) {
79      return (
80        data.aliases.main.type      + '=' + sbjs.type     + data.delimiter +
81        data.aliases.main.source    + '=' + sbjs.source   + data.delimiter +
82        data.aliases.main.medium    + '=' + sbjs.medium   + data.delimiter +
83        data.aliases.main.campaign  + '=' + sbjs.campaign + data.delimiter +
84        data.aliases.main.content   + '=' + sbjs.content  + data.delimiter +
85        data.aliases.main.term      + '=' + sbjs.term     + data.delimiter +
86        data.aliases.main.id        + '=' + sbjs.id       + data.delimiter +
87        data.aliases.main.platform  + '=' + sbjs.platform + data.delimiter +
88        data.aliases.main.format    + '=' + sbjs.format   + data.delimiter +
89        data.aliases.main.tactic    + '=' + sbjs.tactic
90      );
91    },
92
93    extra: function(timezone_offset) {
94      return (
95        data.aliases.extra.fire_date      + '=' + utils.setDate(new Date, timezone_offset) + data.delimiter +
96        data.aliases.extra.entrance_point + '=' + document.location.href                   + data.delimiter +
97        data.aliases.extra.referer        + '=' + (document.referrer || terms.none)
98      );
99    },
100
101    user: function(visits, user_ip) {
102      return (
103        data.aliases.udata.visits + '=' + visits  + data.delimiter +
104        data.aliases.udata.ip     + '=' + user_ip + data.delimiter +
105        data.aliases.udata.agent  + '=' + navigator.userAgent
106      );
107    },
108
109    session: function(pages) {
110      return (
111      data.aliases.session.pages_seen   + '=' + pages + data.delimiter +
112      data.aliases.session.current_page + '=' + document.location.href
113      );
114    },
115
116    promo: function(promo) {
117      return (
118        data.aliases.promo + '=' + utils.setLeadingZeroToInt(utils.randomInt(promo.min, promo.max), promo.max.toString().length)
119      );
120    }
121
122  }
123};
124
125module.exports = data;
126
127},{"./helpers/utils":5,"./terms":9}],3:[function(_dereq_,module,exports){
128"use strict";
129
130var delimiter = _dereq_('../data').delimiter;
131
132module.exports = {
133
134  useBase64: false, // Base64 flag set to false by default
135
136  setBase64Flag: function(value) {
137    this.useBase64 = value;
138  },
139
140  encodeData: function(s) {
141    return encodeURIComponent(s).replace(/\!/g, '%21')
142                                .replace(/\~/g, '%7E')
143                                .replace(/\*/g, '%2A')
144                                .replace(/\'/g, '%27')
145                                .replace(/\(/g, '%28')
146                                .replace(/\)/g, '%29');
147  },
148
149  decodeData: function(s) {
150    try {
151      return decodeURIComponent(s).replace(/\%21/g, '!')
152                                  .replace(/\%7E/g, '~')
153                                  .replace(/\%2A/g, '*')
154                                  .replace(/\%27/g, "'")
155                                  .replace(/\%28/g, '(')
156                                  .replace(/\%29/g, ')');
157    } catch(err1) {
158      // try unescape for backward compatibility
vendor: 6,017 bytes, lines 159-356
159      try { return unescape(s); } catch(err2) { return ''; }
160    }
161  },
162
163  set: function(name, value, minutes, domain, excl_subdomains) {
164    var expires, basehost;
165
166    if (minutes) {
167      var date = new Date();
168      date.setTime(date.getTime() + (minutes * 60 * 1000));
169      expires = '; expires=' + date.toGMTString();
170    } else {
171      expires = '';
172    }
173    if (domain && !excl_subdomains) {
174      basehost = ';domain=.' + domain;
175    } else {
176      basehost = '';
177    }
178    var cookie_content = this.encodeData(value);
179    if (this.useBase64) {
180        // Base64 encoding and removing equal sign padding
181        cookie_content = btoa(cookie_content).replace(/=+$/, '');
182    }
183    document.cookie = this.encodeData(name) + '=' + cookie_content + expires + basehost + '; path=/';
184  },
185
186  get: function(name) {
187    var nameEQ = this.encodeData(name) + '=',
188        ca = document.cookie.split(';');
189
190    for (var i = 0; i < ca.length; i++) {
191      var c = ca[i];
192      while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }
193      if (c.indexOf(nameEQ) === 0) {
194        var cookie_content = c.substring(nameEQ.length, c.length);
195        // Decode the content if it only contains Base64-valid characters
196        // Non-alphanumeric characters indicate that the cookie data is not encoded
197        if (/^[A-Za-z0-9+/]+$/.test(cookie_content)) {
198          try {
199            // Attempt to decode the Base64 string (after padding with = to make it a multiple of 4)
200            cookie_content = atob( cookie_content.padEnd(Math.ceil(cookie_content.length / 4) * 4, "=") );
201          } catch (error) {
202            // If the Base64 string is invalid, just keep the cookie content as is
203          }
204        }
205        return this.decodeData(cookie_content);
206      }
207    }
208    return null;
209  },
210
211  destroy: function(name, domain, excl_subdomains) {
212    this.set(name, '', -1, domain, excl_subdomains);
213  },
214
215  parse: function(yummy) {
216
217    var cookies = [],
218        data    = {};
219
220    if (typeof yummy === 'string') {
221      cookies.push(yummy);
222    } else {
223      for (var prop in yummy) {
224        if (yummy.hasOwnProperty(prop)) {
225          cookies.push(yummy[prop]);
226        }
227      }
228    }
229
230    for (var i1 = 0; i1 < cookies.length; i1++) {
231      var cookie_array;
232      data[this.unsbjs(cookies[i1])] = {};
233      if (this.get(cookies[i1])) {
234        cookie_array = this.get(cookies[i1]).split(delimiter);
235      } else {
236        cookie_array = [];
237      }
238      for (var i2 = 0; i2 < cookie_array.length; i2++) {
239        var tmp_array = cookie_array[i2].split('='),
240            result_array = tmp_array.splice(0, 1);
241        result_array.push(tmp_array.join('='));
242        data[this.unsbjs(cookies[i1])][result_array[0]] = this.decodeData(result_array[1]);
243      }
244    }
245
246    return data;
247
248  },
249
250  unsbjs: function (string) {
251    return string.replace('sbjs_', '');
252  }
253
254};
255
256},{"../data":2}],4:[function(_dereq_,module,exports){
257"use strict";
258
259module.exports = {
260
261  parse: function(str) {
262    var o = this.parseOptions,
263        m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str),
264        uri = {},
265        i = 14;
266
267    while (i--) { uri[o.key[i]] = m[i] || ''; }
268
269    uri[o.q.name] = {};
270    uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
271      if ($1) { uri[o.q.name][$1] = $2; }
272    });
273
274    return uri;
275  },
276
277  parseOptions: {
278    strictMode: false,
279    key: ['source','protocol','authority','userInfo','user','password','host','port','relative','path','directory','file','query','anchor'],
280    q: {
281      name:   'queryKey',
282      parser: /(?:^|&)([^&=]*)=?([^&]*)/g
283    },
284    parser: {
285      strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
286      loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
287    }
288  },
289
290  getParam: function(custom_params) {
291    var query_string = {},
292        query = custom_params ? custom_params : window.location.search.substring(1),
293        vars = query.split('&');
294
295    for (var i = 0; i < vars.length; i++) {
296      var pair = vars[i].split('=');
297      if (typeof query_string[pair[0]] === 'undefined') {
298        query_string[pair[0]] = pair[1];
299      } else if (typeof query_string[pair[0]] === 'string') {
300        var arr = [ query_string[pair[0]], pair[1] ];
301        query_string[pair[0]] = arr;
302      } else {
303        query_string[pair[0]].push(pair[1]);
304      }
305    }
306    return query_string;
307  },
308
309  getHost: function(request) {
310    return this.parse(request).host.replace('www.', '');
311  }
312
313};
314},{}],5:[function(_dereq_,module,exports){
315"use strict";
316
317module.exports = {
318
319  escapeRegexp: function(string) {
320    return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
321  },
322
323  setDate: function(date, offset) {
324    var utc_offset    = date.getTimezoneOffset() / 60,
325        now_hours     = date.getHours(),
326        custom_offset = offset || offset === 0 ? offset : -utc_offset;
327
328    date.setHours(now_hours + utc_offset + custom_offset);
329
330    var year    = date.getFullYear(),
331        month   = this.setLeadingZeroToInt(date.getMonth() + 1,   2),
332        day     = this.setLeadingZeroToInt(date.getDate(),        2),
333        hour    = this.setLeadingZeroToInt(date.getHours(),       2),
334        minute  = this.setLeadingZeroToInt(date.getMinutes(),     2),
335        second  = this.setLeadingZeroToInt(date.getSeconds(),     2);
336
337    return (year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
338  },
339
340  setLeadingZeroToInt: function(num, size) {
341    var s = num + '';
342    while (s.length < size) { s = '0' + s; }
343    return s;
344  },
345
346  randomInt: function(min, max) {
347    return Math.floor(Math.random() * (max - min + 1)) + min;
348  }
349
350};
351
352},{}],6:[function(_dereq_,module,exports){
353"use strict";
354
355var data        = _dereq_('./data'),
356    terms       = _dereq_('./terms'),
vendor: 6,934 bytes, lines 357-546
357    cookies     = _dereq_('./helpers/cookies'),
358    uri         = _dereq_('./helpers/uri'),
359    utils       = _dereq_('./helpers/utils'),
360    params      = _dereq_('./params'),
361    migrations  = _dereq_('./migrations');
362
363module.exports = function(prefs) {
364
365  var p         = params.fetch(prefs);
366  var get_param = uri.getParam();
367  var domain    = p.domain.host,
368      isolate   = p.domain.isolate,
369      lifetime  = p.lifetime;
370
371  cookies.setBase64Flag( p.base64 );
372
373  migrations.go(lifetime, domain, isolate);
374
375  var __sbjs_type,
376      __sbjs_source,
377      __sbjs_medium,
378      __sbjs_campaign,
379      __sbjs_content,
380      __sbjs_term,
381      __sbjs_id,
382      __sbjs_platform,
383      __sbjs_format,
384      __sbjs_tactic;
385
386  function mainData() {
387    var sbjs_data;
388    if (
389        typeof get_param.utm_source           !== 'undefined' ||
390        typeof get_param.utm_medium           !== 'undefined' ||
391        typeof get_param.utm_campaign         !== 'undefined' ||
392        typeof get_param.utm_content          !== 'undefined' ||
393        typeof get_param.utm_term             !== 'undefined' ||
394        typeof get_param.utm_id               !== 'undefined' ||
395        typeof get_param.utm_source_platform  !== 'undefined' ||
396        typeof get_param.utm_creative_format  !== 'undefined' ||
397        typeof get_param.utm_marketing_tactic !== 'undefined' ||
398        typeof get_param.gclid                !== 'undefined' ||
399        typeof get_param.yclid                !== 'undefined' ||
400        typeof get_param[p.campaign_param]    !== 'undefined' ||
401        typeof get_param[p.term_param]        !== 'undefined' ||
402        typeof get_param[p.content_param]     !== 'undefined'
403    ) {
404      setFirstAndCurrentExtraData();
405      sbjs_data = getData(terms.traffic.utm);
406    } else if (checkReferer(terms.traffic.organic)) {
407      setFirstAndCurrentExtraData();
408      sbjs_data = getData(terms.traffic.organic);
409    } else if (!cookies.get(data.containers.session) && checkReferer(terms.traffic.referral)) {
410      setFirstAndCurrentExtraData();
411      sbjs_data = getData(terms.traffic.referral);
412    } else if (!cookies.get(data.containers.first) && !cookies.get(data.containers.current)) {
413      setFirstAndCurrentExtraData();
414      sbjs_data = getData(terms.traffic.typein);
415    } else {
416      return cookies.get(data.containers.current);
417    }
418
419    return sbjs_data;
420  }
421
422  function getData(type) {
423
424    switch (type) {
425
426      case terms.traffic.utm:
427
428        __sbjs_type = terms.traffic.utm;
429
430        if (typeof get_param.utm_source !== 'undefined') {
431          __sbjs_source = get_param.utm_source;
432        } else if (typeof get_param.gclid !== 'undefined') {
433          __sbjs_source = 'google';
434        } else if (typeof get_param.yclid !== 'undefined') {
435          __sbjs_source = 'yandex';
436        } else {
437          __sbjs_source = terms.none;
438        }
439
440        if (typeof get_param.utm_medium !== 'undefined') {
441          __sbjs_medium = get_param.utm_medium;
442        } else if (typeof get_param.gclid !== 'undefined') {
443          __sbjs_medium = 'cpc';
444        } else if (typeof get_param.yclid !== 'undefined') {
445          __sbjs_medium = 'cpc';
446        } else {
447          __sbjs_medium = terms.none;
448        }
449
450        if (typeof get_param.utm_campaign !== 'undefined') {
451          __sbjs_campaign = get_param.utm_campaign;
452        } else if (typeof get_param[p.campaign_param] !== 'undefined') {
453          __sbjs_campaign = get_param[p.campaign_param];
454        } else if (typeof get_param.gclid !== 'undefined') {
455          __sbjs_campaign = 'google_cpc';
456        } else if (typeof get_param.yclid !== 'undefined') {
457          __sbjs_campaign = 'yandex_cpc';
458        } else {
459          __sbjs_campaign = terms.none;
460        }
461
462        if (typeof get_param.utm_content !== 'undefined') {
463          __sbjs_content = get_param.utm_content;
464        } else if (typeof get_param[p.content_param] !== 'undefined') {
465          __sbjs_content = get_param[p.content_param];
466        } else {
467          __sbjs_content = terms.none;
468        }
469
470        __sbjs_id       = get_param.utm_id || terms.none;
471        __sbjs_platform = get_param.utm_source_platform || terms.none;
472        __sbjs_format   = get_param.utm_creative_format || terms.none;
473        __sbjs_tactic   = get_param.utm_marketing_tactic || terms.none;
474
475        if (typeof get_param.utm_term !== 'undefined') {
476          __sbjs_term = get_param.utm_term;
477        } else if (typeof get_param[p.term_param] !== 'undefined') {
478          __sbjs_term = get_param[p.term_param];
479        } else {
480          __sbjs_term = getUtmTerm() || terms.none;
481        }
482
483        break;
484
485      case terms.traffic.organic:
486        __sbjs_type     = terms.traffic.organic;
487        __sbjs_source   = __sbjs_source || uri.getHost(document.referrer);
488        __sbjs_medium   = terms.referer.organic;
489        __sbjs_campaign = terms.none;
490        __sbjs_content  = terms.none;
491        __sbjs_term     = terms.none;
492        __sbjs_id       = terms.none;
493        __sbjs_platform = terms.none;
494        __sbjs_format   = terms.none;
495        __sbjs_tactic   = terms.none;
496        break;
497
498      case terms.traffic.referral:
499        __sbjs_type     = terms.traffic.referral;
500        __sbjs_source   = __sbjs_source || uri.getHost(document.referrer);
501        __sbjs_medium   = __sbjs_medium || terms.referer.referral;
502        __sbjs_campaign = terms.none;
503        __sbjs_content  = uri.parse(document.referrer).path;
504        __sbjs_term     = terms.none;
505        __sbjs_id       = terms.none;
506        __sbjs_platform = terms.none;
507        __sbjs_format   = terms.none;
508        __sbjs_tactic   = terms.none;
509        break;
510
511      case terms.traffic.typein:
512        __sbjs_type     = terms.traffic.typein;
513        __sbjs_source   = p.typein_attributes.source;
514        __sbjs_medium   = p.typein_attributes.medium;
515        __sbjs_campaign = terms.none;
516        __sbjs_content  = terms.none;
517        __sbjs_term     = terms.none;
518        __sbjs_id       = terms.none;
519        __sbjs_platform = terms.none;
520        __sbjs_format   = terms.none;
521        __sbjs_tactic   = terms.none;
522        break;
523
524      default:
525        __sbjs_type     = terms.oops;
526        __sbjs_source   = terms.oops;
527        __sbjs_medium   = terms.oops;
528        __sbjs_campaign = terms.oops;
529        __sbjs_content  = terms.oops;
530        __sbjs_term     = terms.oops;
531        __sbjs_id       = terms.oops;
532        __sbjs_platform = terms.oops;
533        __sbjs_format   = terms.oops;
534        __sbjs_tactic   = terms.oops;
535    }
536    var sbjs_data = {
537      type:             __sbjs_type,
538      source:           __sbjs_source,
539      medium:           __sbjs_medium,
540      campaign:         __sbjs_campaign,
541      content:          __sbjs_content,
542      term:             __sbjs_term,
543      id:               __sbjs_id,
544      platform:         __sbjs_platform,
545      format:           __sbjs_format,
546      tactic:           __sbjs_tactic
vendor: 5,026 bytes, lines 546-696
546
547    };
548
549    return data.pack.main(sbjs_data);
550
551  }
552
553  function getUtmTerm() {
554    var referer = document.referrer;
555    if (get_param.utm_term) {
556      return get_param.utm_term;
557    } else if (referer && uri.parse(referer).host && uri.parse(referer).host.match(/^(?:.*\.)?yandex\..{2,9}$/i)) {
558      try {
559        return uri.getParam(uri.parse(document.referrer).query).text;
560      } catch (err) {
561        return false;
562      }
563    } else {
564      return false;
565    }
566  }
567
568  function checkReferer(type) {
569    var referer = document.referrer;
570    switch(type) {
571      case terms.traffic.organic:
572        return (!!referer && checkRefererHost(referer) && isOrganic(referer));
573      case terms.traffic.referral:
574        return (!!referer && checkRefererHost(referer) && isReferral(referer));
575      default:
576        return false;
577    }
578  }
579
580  function checkRefererHost(referer) {
581    if (p.domain) {
582      if (!isolate) {
583        var host_regex = new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(domain) + '$', 'i');
584        return !(uri.getHost(referer).match(host_regex));
585      } else {
586        return (uri.getHost(referer) !== uri.getHost(domain));
587      }
588    } else {
589      return (uri.getHost(referer) !== uri.getHost(document.location.href));
590    }
591  }
592
593  function isOrganic(referer) {
594
595    var y_host  = 'yandex',
596        y_param = 'text',
597        g_host  = 'google';
598
599    var y_host_regex  = new RegExp('^(?:.*\\.)?'  + utils.escapeRegexp(y_host)  + '\\..{2,9}$'),
600        y_param_regex = new RegExp('.*'           + utils.escapeRegexp(y_param) + '=.*'),
601        g_host_regex  = new RegExp('^(?:www\\.)?' + utils.escapeRegexp(g_host)  + '\\..{2,9}$');
602
603    if (
604        !!uri.parse(referer).query &&
605        !!uri.parse(referer).host.match(y_host_regex) &&
606        !!uri.parse(referer).query.match(y_param_regex)
607      ) {
608      __sbjs_source = y_host;
609      return true;
610    } else if (!!uri.parse(referer).host.match(g_host_regex)) {
611      __sbjs_source = g_host;
612      return true;
613    } else if (!!uri.parse(referer).query) {
614      for (var i = 0; i < p.organics.length; i++) {
615        if (
616            uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.organics[i].host)  + '$', 'i')) &&
617            uri.parse(referer).query.match(new RegExp('.*'         + utils.escapeRegexp(p.organics[i].param) + '=.*', 'i'))
618          ) {
619          __sbjs_source = p.organics[i].display || p.organics[i].host;
620          return true;
621        }
622        if (i + 1 === p.organics.length) {
623          return false;
624        }
625      }
626    } else {
627      return false;
628    }
629  }
630
631  function isReferral(referer) {
632    if (p.referrals.length > 0) {
633      for (var i = 0; i < p.referrals.length; i++) {
634        if (uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.referrals[i].host) + '$', 'i'))) {
635          __sbjs_source = p.referrals[i].display  || p.referrals[i].host;
636          __sbjs_medium = p.referrals[i].medium   || terms.referer.referral;
637          return true;
638        }
639        if (i + 1 === p.referrals.length) {
640          __sbjs_source = uri.getHost(referer);
641          return true;
642        }
643      }
644    } else {
645      __sbjs_source = uri.getHost(referer);
646      return true;
647    }
648  }
649
650  function setFirstAndCurrentExtraData() {
651    cookies.set(data.containers.current_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate);
652    if (!cookies.get(data.containers.first_extra)) {
653      cookies.set(data.containers.first_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate);
654    }
655  }
656
657  (function setData() {
658
659    // Main data
660    cookies.set(data.containers.current, mainData(), lifetime, domain, isolate);
661    if (!cookies.get(data.containers.first)) {
662      cookies.set(data.containers.first, cookies.get(data.containers.current), lifetime, domain, isolate);
663    }
664
665    // User data
666    var visits, udata;
667    if (!cookies.get(data.containers.udata)) {
668      visits  = 1;
669      udata   = data.pack.user(visits, p.user_ip);
670    } else {
671      visits  = parseInt(cookies.parse(data.containers.udata)[cookies.unsbjs(data.containers.udata)][data.aliases.udata.visits]) || 1;
672      visits  = cookies.get(data.containers.session) ? visits : visits + 1;
673      udata   = data.pack.user(visits, p.user_ip);
674    }
675    cookies.set(data.containers.udata, udata, lifetime, domain, isolate);
676
677    // Session
678    var pages_count;
679    if (!cookies.get(data.containers.session)) {
680      pages_count = 1;
681    } else {
682      pages_count = parseInt(cookies.parse(data.containers.session)[cookies.unsbjs(data.containers.session)][data.aliases.session.pages_seen]) || 1;
683      pages_count += 1;
684    }
685    cookies.set(data.containers.session, data.pack.session(pages_count), p.session_length, domain, isolate);
686
687    // Promocode
688    if (p.promocode && !cookies.get(data.containers.promocode)) {
689      cookies.set(data.containers.promocode, data.pack.promo(p.promocode), lifetime, domain, isolate);
690    }
691
692  })();
693
694  return cookies.parse(data.containers);
695
696};
vendor: 7,106 bytes, lines 697-936
697
698},{"./data":2,"./helpers/cookies":3,"./helpers/uri":4,"./helpers/utils":5,"./migrations":7,"./params":8,"./terms":9}],7:[function(_dereq_,module,exports){
699"use strict";
700
701var data    = _dereq_('./data'),
702    cookies = _dereq_('./helpers/cookies');
703
704module.exports = {
705
706  go: function(lifetime, domain, isolate) {
707
708    var migrate = this.migrations,
709        _with   = { l: lifetime, d: domain, i: isolate };
710
711    var i;
712
713    if (!cookies.get(data.containers.first) && !cookies.get(data.service.migrations)) {
714
715      var mids = [];
716      for (i = 0; i < migrate.length; i++) { mids.push(migrate[i].id); }
717
718      var advance = '';
719      for (i = 0; i < mids.length; i++) {
720        advance += mids[i] + '=1';
721        if (i < mids.length - 1) { advance += data.delimiter; }
722      }
723      cookies.set(data.service.migrations, advance, _with.l, _with.d, _with.i);
724
725    } else if (!cookies.get(data.service.migrations)) {
726
727      // We have only one migration for now, so just
728      for (i = 0; i < migrate.length; i++) {
729        migrate[i].go(migrate[i].id, _with);
730      }
731
732    }
733
734  },
735
736  migrations: [
737
738    {
739      id: '1418474375998',
740      version: '1.0.0-beta',
741      go: function(mid, _with) {
742
743        var success = mid + '=1',
744            fail    = mid + '=0';
745
746        var safeReplace = function($0, $1, $2) {
747          return ($1 || $2 ? $0 : data.delimiter);
748        };
749
750        try {
751
752          // Switch delimiter and renew cookies
753          var _in = [];
754          for (var prop in data.containers) {
755            if (data.containers.hasOwnProperty(prop)) {
756              _in.push(data.containers[prop]);
757            }
758          }
759
760          for (var i = 0; i < _in.length; i++) {
761            if (cookies.get(_in[i])) {
762              var buffer = cookies.get(_in[i]).replace(/(\|)?\|(\|)?/g, safeReplace);
763              cookies.destroy(_in[i], _with.d, _with.i);
764              cookies.destroy(_in[i], _with.d, !_with.i);
765              cookies.set(_in[i], buffer, _with.l, _with.d, _with.i);
766            }
767          }
768
769          // Update `session`
770          if (cookies.get(data.containers.session)) {
771            cookies.set(data.containers.session, data.pack.session(0), _with.l, _with.d, _with.i);
772          }
773
774          // Yay!
775          cookies.set(data.service.migrations, success, _with.l, _with.d, _with.i);
776
777        } catch (err) {
778          // Oops
779          cookies.set(data.service.migrations, fail, _with.l, _with.d, _with.i);
780        }
781      }
782    }
783
784  ]
785
786};
787},{"./data":2,"./helpers/cookies":3}],8:[function(_dereq_,module,exports){
788"use strict";
789
790var terms = _dereq_('./terms'),
791    uri   = _dereq_('./helpers/uri');
792
793module.exports = {
794
795  fetch: function(prefs) {
796
797    var user   = prefs || {},
798        params = {};
799
800    // Set `lifetime of the cookie` in months
801    params.lifetime = this.validate.checkFloat(user.lifetime) || 6;
802    params.lifetime = parseInt(params.lifetime * 30 * 24 * 60);
803
804    // Set `session length` in minutes
805    params.session_length = this.validate.checkInt(user.session_length) || 30;
806
807    // Set `timezone offset` in hours
808    params.timezone_offset = this.validate.checkInt(user.timezone_offset);
809
810    // Enable `base64 encoding`
811    params.base64 = user.base64 || false;
812
813    // Set `campaign param` for AdWords links
814    params.campaign_param = user.campaign_param || false;
815
816    // Set `term param` and `content param` for AdWords links
817    params.term_param = user.term_param || false;
818    params.content_param = user.content_param || false;
819
820    // Set `user ip`
821    params.user_ip = user.user_ip || terms.none;
822
823    // Set `promocode`
824    if (user.promocode) {
825      params.promocode = {};
826      params.promocode.min = parseInt(user.promocode.min) || 100000;
827      params.promocode.max = parseInt(user.promocode.max) || 999999;
828    } else {
829      params.promocode = false;
830    }
831
832    // Set `typein attributes`
833    if (user.typein_attributes && user.typein_attributes.source && user.typein_attributes.medium) {
834      params.typein_attributes = {};
835      params.typein_attributes.source = user.typein_attributes.source;
836      params.typein_attributes.medium = user.typein_attributes.medium;
837    } else {
838      params.typein_attributes = { source: '(direct)', medium: '(none)' };
839    }
840
841    // Set `domain`
842    if (user.domain && this.validate.isString(user.domain)) {
843      params.domain = { host: user.domain, isolate: false };
844    } else if (user.domain && user.domain.host) {
845      params.domain = user.domain;
846    } else {
847      params.domain = { host: uri.getHost(document.location.hostname), isolate: false };
848    }
849
850    // Set `referral sources`
851    params.referrals = [];
852
853    if (user.referrals && user.referrals.length > 0) {
854      for (var ir = 0; ir < user.referrals.length; ir++) {
855        if (user.referrals[ir].host) {
856          params.referrals.push(user.referrals[ir]);
857        }
858      }
859    }
860
861    // Set `organic sources`
862    params.organics = [];
863
864    if (user.organics && user.organics.length > 0) {
865      for (var io = 0; io < user.organics.length; io++) {
866        if (user.organics[io].host && user.organics[io].param) {
867          params.organics.push(user.organics[io]);
868        }
869      }
870    }
871
872    params.organics.push({ host: 'bing.com',      param: 'q',     display: 'bing'            });
873    params.organics.push({ host: 'yahoo.com',     param: 'p',     display: 'yahoo'           });
874    params.organics.push({ host: 'about.com',     param: 'q',     display: 'about'           });
875    params.organics.push({ host: 'aol.com',       param: 'q',     display: 'aol'             });
876    params.organics.push({ host: 'ask.com',       param: 'q',     display: 'ask'             });
877    params.organics.push({ host: 'globososo.com', param: 'q',     display: 'globo'           });
878    params.organics.push({ host: 'go.mail.ru',    param: 'q',     display: 'go.mail.ru'      });
879    params.organics.push({ host: 'rambler.ru',    param: 'query', display: 'rambler'         });
880    params.organics.push({ host: 'tut.by',        param: 'query', display: 'tut.by'          });
881
882    params.referrals.push({ host: 't.co',                         display: 'twitter.com'     });
883    params.referrals.push({ host: 'plus.url.google.com',          display: 'plus.google.com' });
884
885
886    return params;
887
888  },
889
890  validate: {
891
892    checkFloat: function(v) {
893      return v && this.isNumeric(parseFloat(v)) ? parseFloat(v) : false;
894    },
895
896    checkInt: function(v) {
897      return v && this.isNumeric(parseInt(v)) ? parseInt(v) : false;
898    },
899
900    isNumeric: function(v){
901      return !isNaN(v);
902    },
903
904    isString: function(v) {
905      return Object.prototype.toString.call(v) === '[object String]';
906    }
907
908  }
909
910};
911
912},{"./helpers/uri":4,"./terms":9}],9:[function(_dereq_,module,exports){
913"use strict";
914
915module.exports = {
916
917  traffic: {
918    utm:        'utm',
919    organic:    'organic',
920    referral:   'referral',
921    typein:     'typein'
922  },
923
924  referer: {
925    referral:   'referral',
926    organic:    'organic',
927    social:     'social'
928  },
929
930  none:         '(none)',
931  oops:         '(Houston, we have a problem)'
932
933};
934
935},{}]},{},[1])(1)
936});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.