Should I get my clumsy boyfriend an ax for Christmas? | #teacher | #children | #kids

Photo illustration by Slate. Photo by Getty Images Plus.

Slate is now asking those who read the most to support our journalism more directly by subscribing to Slate Plus. Learn more.

To get advice from Prudie, send questions for publication to prudence@slate.com. (Questions may be edited.) Join the live chat every Monday at noon. Submit your questions and comments here before or during the live discussion. Or call the Dear Prudence podcast voicemail at 401-371-DEAR (3327) to hear your question answered on a future episode of the show.

Dear Prudence,

I am getting a head start on the winter holidays by drawing up an early gift list, but I am stuck on one recipient in particular. My boyfriend is generally handy and especially enjoys building fires, and he has expressed interest in chopping wood for the last few fires we’ve had. Great, I thought—I can get him a high-quality ax or hatchet for Christmas. But then I started thinking about the potential for injuries. I have anxiety and know it can skew my perception of things, so I’m trying to think it through rationally. My boyfriend is very aware of safety and risk assessments in daily life, but he’s also not the most spatially aware person. He can be clumsy by himself or with others, especially after a few drinks. He’s also never been trained in any kind of ax safety. I still think he’d be delighted by this present, and part of me wants to be convinced by that alone, but another part of me thinks that even having an ax around would kick my fear of accidental injury into permanent overdrive. Should I try to muscle through the anxiety or start looking for a different present? Or is there a compromise here that would satisfy both my fears and my desire to impress with a cool gift?

—Ax Anxiety

Let’s leave aside the question of how much your anxiety may be affecting your decision-making here or how clumsy your boyfriend is. This is not a referendum on his ability to hold his drinks but a pretty straightforward question about the whole point of gift-giving: Does it make you feel excited to contemplate giving it to him? If the answer isn’t “yes,” just move on and think of another gift. Chopping wood doesn’t seem like his secret dream hobby, and he won’t be broken-hearted to get something else. If he were a professional lumberjack or had his heart dead-set on becoming an expert woodsman survivalist, I might have different advice. But he’s not, so I don’t! Just get him something that doesn’t stress you out. If he’s generally handy and into DIY projects, I’m sure there’s some other gadget or carrying case you could get him that would line up nicely with his interests and be sure to please. This is already a very weird and difficult year. Go easy on yourself as often as you can.

Help! My Husband Wants to Leave Our Kids but Stay Married to Me.

Danny M. Lavery is joined by Alicia Harris on this week’s episode of the Dear Prudence podcast.

Subscribe to the Dear Prudence Podcast on Apple Podcasts, Spotify, Stitcher, or wherever you get your podcasts.

Dear Prudence,

I’m a 45-year-old transgender woman who was a successful high school teacher until I transitioned eight years ago. Being trans in a fairly socially conservative profession eventually led me to a nervous breakdown. The exclusion, hostility, and harassment pushed me out of the field I loved, and I’ve been drifting and depressed ever since. I have since worked at a number of office jobs I didn’t care about, but I no longer make enough to afford my own place, and I had to move in with my parents. My mother is my rock and accepts me for who I am, but my stepfather is an angry alcoholic who’s been unpleasant ever since I got here. I want to leave and focus on my own life, but I don’t know how to make the money to move out unless I teach again. The thought of being in a school again, dealing with that level of transphobic hostility and harassment, gives me an anxiety attack. I feel trapped in a depressing situation that I have no financial or emotional power to change. What should I do to extricate myself from this morass?

—Tired (Ex-) Teacher

Are you familiar with the Trans Educators Network? They’re a collective founded in 2015 that works to build community and provide mutual aid in the trans community. They offer a self-advocacy guide on their website that might provide a useful framework for attempting to safely reenter your former profession. You can also email them with specific questions or join their listserv. If you live in the South, you might also want to join Southerners on New Ground. Since money is so tight right now, I won’t recommend traditional therapy, but I’d encourage you to look for local support groups (even if they’re only able to meet online). Contact the nearest LGBTQ center, or use Psychology Today’s searchable-by-state index of support groups for trans people. You may ultimately decide that there’s no going back to teaching for you, even with support, and in that case I hope it will help to speak to other trans people about moving to a more trans-friendly field so that your two options aren’t “go back to teaching” or “temp jobs that don’t pay the bills.”

I also hope you’ll speak to your doctor about your chronic depression, especially if you’re covered by health insurance from one of those office jobs. Eight years is a long time to struggle with this kind of despondency (and what sound like fairly serious panic attacks), and although much of it may be the result of circumstances you can’t presently change, you may find antidepressants make tackling those difficult circumstances seem a little less daunting. Good luck—you deserve it!

Dear Prudence,

I have a college-aged younger sibling who has expressed their intention to attend an SEC football game in person before returning home before Thanksgiving break. I reached out to them (admittedly in a pretty aggressive way) and asked (alongside a really, really mean question), “Do you have a quarantine plan?” I was told, “If you don’t like it, then leave.” I have an autoimmune disorder. I am also in graduate school, so I understand their issues with social isolation. I haven’t seen my friends in months. All throughout the summer months, my sibling chose to go hang out with friends, despite the COVID risk. I can’t—and don’t want to—risk infection. Our parents don’t seem inclined to set boundaries with them, which has long been the norm in our family. (I’ve tried for years to get us all into therapy. I’m the only relative who has consistently worked on my issues.) If I try bringing anything like this up, I get dismissed through some form of, “Oh, [Sibling]’s being [Sibling]. Cut them some slack.” I (the first-born child) put up with years of helicopter parenting and emotional guilt-tripping.

I’ve given up on trying to change my sibling’s plans. How do I tell my parents that if they don’t set their foot down, I’m leaving? And how do I work up the courage to say it, knowing full well I’ll probably get an adverse reaction?

—Exhausted Eldest

I’m so curious as to what your “really, really mean” question was! Please write back and let me know, not because it would materially change my answer, but because I’m nosy, and wonder if I’d consider it “really, really mean” or just “kind of snippy.” But all you have to say to your parents is, “I can’t travel for Thanksgiving this year, since I’m at a higher risk for possible COVID complications. I’ll be sorry to miss seeing you, but I have to put my health and safety first.” If you can’t imagine saying that to them directly, you can send it via text or over email. But don’t make that commitment conditionally, as if it would stop being risky to travel to your parents’ house if your sibling didn’t attend a football game first. You have good reason to make that choice, and you should stand by it—it’s not punitive or manipulative, just the result of honest risk assessment. You don’t need anyone’s permission or agreement in order to make it, and no matter how adverse the reaction, you’re entitled to stick to it. “I’m sorry to hear that, but my decision is final” should be your go-to response if anyone tries to guilt-trip you on the subject. Repeat it as often as you have to until your interlocutors get bored and give up. If they don’t get bored and give up, just end the conversation. Have a happy, safe Thanksgiving.

Catch up on this week’s Prudie.

Now available in your podcast player: the audiobook edition of Danny M. Lavery’s latest book, Something That May Shock and Discredit YouGet it from Slate

More Advice From Care and Feeding

My sweet, energetic, and articulate 3-year-old (“Sam”) has gone through a lot of change this past year—we moved to a very large, noisy city far from the quieter, smaller city where we lived before; we had a second baby boy; and I went back to work last month after several months of leave. Sam has always been challenging due to his energy level, but he is extremely affectionate and has been unfailingly kind and gentle to his baby brother. I have mostly borne the brunt of his anger about the big changes in his life. He definitely has good days where he listens well and is fun to be around, but then he also has really bad days where he is pretty out of control: huge tantrums that involve scratching, hitting, kicking, throwing hard things at my head, and running away down the street when the nanny picks him up from preschool.

These tantrums have gotten more frequent over the past six months. We have tried a range of disciplinary tactics like taking toys away for bad behavior and offering incentives for good behavior, but these don’t seem to work. His teacher and nanny say that this behavior is not normal and he should be “evaluated” for some kind of disorder (though the teacher was vague about what this would be), but my husband is adamantly opposed to an evaluation for fear Sam will receive a label. My husband, who is an M.D., says this is how he was when he was a child (very stubborn), there is nothing abnormal about our son, and there is a tendency these days to overdiagnose kids who really are in the normal range. I feel that even if the behavior is normal, it doesn’t hurt for Sam to get a little help managing his anger. However, I have a lot of respect for my husband (and he’s often right), and I also understand his worry about having our child labeled. I guess my question has two parts: 1) Is this behavior normal for a 3-year-old?, and 2) should I insist that he get the evaluation over my husband’s objections?

n “.concat(container.innerHTML, “n n “);
loaded.delete(el);
container.classList.remove(“lazyload-container–loaded”);

  if (opts.fluid) {
    container.style.paddingBottom = "".concat(containerHeight, "px");
    container.classList.remove("lazyload-container--fluid");
  }
} else {
  console.error("cannot find container to unload el", el);
}

}
}

module.exports.createObserver = function (opts) {
opts = _objectSpread({
// give the content a chance to finish loading before the user gets there
intersectionObserverOptions: {
rootMargin: “100% 0% 100% 0%”
},
// the number of concurrently loaded elements that we will strive for,
// it may not be perfectly respected – we won’t unload anything if it’s currently intersecting
limit: Infinity,
// ideally lazyloaded content is just an iframe so whatever junk it contains is sandboxed,
// but not all platforms support/encourage this, e.g. twitter tweets and tiktoks.
// iframes aren’t typically fluid, unless they include something like pym.js, which most don’t,
// so basically I would suggest setting fluid: true when !container.matches('iframe')
fluid: false,
// todo: maybe also an option to always reinject scripts and default to only injecting once?
// this would be a performance improvement for today but it would also mean external scripts could change and it would be a bug for us to fix
onLoad: function onLoad() {},
onUnload: function onUnload() {}
}, opts); // latest intersection observer entries, keyed by target element

var entryInfo = new Map();
return new IntersectionObserver(function (entries) {
// load any newly intersecting elements
entries.forEach(function (entry) {
// get or create an info entry for this element
var info;

  if (entryInfo.has(entry.target)) {
    info = entryInfo.get(entry.target);
  } else {
    info = {
      el: entry.target
    };
    entryInfo.set(entry.target, info);
  } // add/update intersection info


  info.isIntersecting = entry.isIntersecting;
  info.offsetTop = entry.boundingClientRect.top + window.scrollY; // maybe load the contents

  if (!info.loaded && info.isIntersecting) {
    load(entry.target, opts);
    info.loaded = true;
    opts.onLoad(entry.target, opts);
  }
}); // think about maybe unloading some videos
// using "forEach" because IE11 has a deficient implementation of Map

var loadedEntries = [];
entryInfo.forEach(function (info) {
  if (info.loaded) {
    loadedEntries.push(info);
  }
}); // const loadedEntries = [...entryInfo.values()].filter(info => info.loaded);

var slop = loadedEntries.length - opts.limit;

if (slop > 0) {
  loadedEntries // discount anything that is currently in or near the viewport
  .filter(function (info) {
    return !info.isIntersecting;
  }) // calculcate the distance from the current viewport to figure out which are farthest away
  .map(function (info) {
    info.distance = Math.abs(info.offsetTop - window.scrollY);
    return info;
  }) // sort by distance, descending
  .sort(function (a, b) {
    return b.distance - a.distance;
  }).slice(0, slop).forEach(function (info) {
    unload(info.el, opts);
    info.loaded = false;
    opts.onUnload(info.el, opts);
  });
}

}, opts.intersectionObserverOptions);
};
}, {}];
window.modules[“39”] = [function(require,module,exports){“use strict”;

module.exports.track = function (eventName, extraData, options) {
try {
// check for permutive Data object
var data = Object.assign({}, window.slatePermutiveData && window.slatePermutiveData.page || {});

if (extraData) {
  data = Object.assign(data, extraData);
}

if (data.article && data.article.gsChannels) {
  delete data.article.gsChannels;
}

window.permutive && window.permutive.track(eventName, data, options);

} catch (e) {
console.error(“failed to log permutive”, e);
}
};
}, {}];
window.modules[“41”] = [function(require,module,exports){var isObject = require(595),
now = require(723),
toNumber = require(722);

/** Error message constants. */
var FUNC_ERROR_TEXT = ‘Expected a function’;

/* Built-in method references for those with the same name as other lodash methods. */
var nativeMax = Math.max,
nativeMin = Math.min;

/**
* Creates a debounced function that delays invoking func until after wait
* milliseconds have elapsed since the last time the debounced function was
* invoked. The debounced function comes with a cancel method to cancel
* delayed func invocations and a flush method to immediately invoke them.
* Provide options to indicate whether func should be invoked on the
* leading and/or trailing edge of the wait timeout. The func is invoked
* with the last arguments provided to the debounced function. Subsequent
* calls to the debounced function return the result of the last func
* invocation.
*
* Note: If leading and trailing options are true, func is
* invoked on the trailing edge of the timeout only if the debounced function
* is invoked more than once during the wait timeout.
*
* If wait is 0 and leading is false, func invocation is deferred
* until to the next tick, similar to setTimeout with a timeout of 0.
*
* See David Corbacho’s article
* for details over the differences between _.debounce and _.throttle.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to debounce.
* @param {number} [wait=0] The number of milliseconds to delay.
* @param {Object} [options={}] The options object.
* @param {boolean} [options.leading=false] * Specify invoking on the leading edge of the timeout.
* @param {number} [options.maxWait] * The maximum time func is allowed to be delayed before it’s invoked.
* @param {boolean} [options.trailing=true] * Specify invoking on the trailing edge of the timeout.
* @returns {Function} Returns the new debounced function.
* @example
*
* // Avoid costly calculations while the window size is in flux.
* jQuery(window).on(‘resize’, _.debounce(calculateLayout, 150));
*
* // Invoke sendMail when clicked, debouncing subsequent calls.
* jQuery(element).on(‘click’, _.debounce(sendMail, 300, {
* ‘leading’: true,
* ‘trailing’: false
* }));
*
* // Ensure batchLog is invoked once after 1 second of debounced calls.
* var debounced = _.debounce(batchLog, 250, { ‘maxWait’: 1000 });
* var source = new EventSource(‘/stream’);
* jQuery(source).on(‘message’, debounced);
*
* // Cancel the trailing debounced invocation.
* jQuery(window).on(‘popstate’, debounced.cancel);
*/
function debounce(func, wait, options) {
var lastArgs,
lastThis,
maxWait,
result,
timerId,
lastCallTime,
lastInvokeTime = 0,
leading = false,
maxing = false,
trailing = true;

if (typeof func != ‘function’) {
throw new TypeError(FUNC_ERROR_TEXT);
}
wait = toNumber(wait) || 0;
if (isObject(options)) {
leading = !!options.leading;
maxing = ‘maxWait’ in options;
maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
trailing = ‘trailing’ in options ? !!options.trailing : trailing;
}

function invokeFunc(time) {
var args = lastArgs,
thisArg = lastThis;

lastArgs = lastThis = undefined;
lastInvokeTime = time;
result = func.apply(thisArg, args);
return result;

}

function leadingEdge(time) {
// Reset any maxWait timer.
lastInvokeTime = time;
// Start the timer for the trailing edge.
timerId = setTimeout(timerExpired, wait);
// Invoke the leading edge.
return leading ? invokeFunc(time) : result;
}

function remainingWait(time) {
var timeSinceLastCall = time – lastCallTime,
timeSinceLastInvoke = time – lastInvokeTime,
timeWaiting = wait – timeSinceLastCall;

return maxing
  ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
  : timeWaiting;

}

function shouldInvoke(time) {
var timeSinceLastCall = time – lastCallTime,
timeSinceLastInvoke = time – lastInvokeTime;

// Either this is the first call, activity has stopped and we're at the
// trailing edge, the system time has gone backwards and we're treating
// it as the trailing edge, or we've hit the `maxWait` limit.
return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
  (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));

}

function timerExpired() {
var time = now();
if (shouldInvoke(time)) {
return trailingEdge(time);
}
// Restart the timer.
timerId = setTimeout(timerExpired, remainingWait(time));
}

function trailingEdge(time) {
timerId = undefined;

// Only invoke if we have `lastArgs` which means `func` has been
// debounced at least once.
if (trailing && lastArgs) {
  return invokeFunc(time);
}
lastArgs = lastThis = undefined;
return result;

}

function cancel() {
if (timerId !== undefined) {
clearTimeout(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = undefined;
}

function flush() {
return timerId === undefined ? result : trailingEdge(now());
}

function debounced() {
var time = now(),
isInvoking = shouldInvoke(time);

lastArgs = arguments;
lastThis = this;
lastCallTime = time;

if (isInvoking) {
  if (timerId === undefined) {
    return leadingEdge(lastCallTime);
  }
  if (maxing) {
    // Handle invocations in a tight loop.
    clearTimeout(timerId);
    timerId = setTimeout(timerExpired, wait);
    return invokeFunc(lastCallTime);
  }
}
if (timerId === undefined) {
  timerId = setTimeout(timerExpired, wait);
}
return result;

}
debounced.cancel = cancel;
debounced.flush = flush;
return debounced;
}

module.exports = debounce;
}, {“595″:595,”722″:722,”723”:723}];
window.modules[“42”] = [function(require,module,exports){“use strict”;

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }

function _nonIterableRest() { throw new TypeError(“Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a Symbol.iterator method.”); }

function _iterableToArrayLimit(arr, i) { if (typeof Symbol === “undefined” || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arrSymbol.iterator, _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[“return”] != null) _i“return”; } finally { if (_d) throw _e; } } return _arr; }

function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }

function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === “undefined” || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === “number”) { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(“Invalid attempt to iterate non-iterable instance.nIn order to be iterable, non-array objects must have a Symbol.iterator method.”); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = oSymbol.iterator; }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }

function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === “string”) return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === “Object” && o.constructor) n = o.constructor.name; if (n === “Map” || n === “Set”) return Array.from(o); if (n === “Arguments” || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

/**
* Mostly copied from static/js/morgioni.es6.js in my-slate
* Responsible for getting/setting utm params on localStorage so product can track
* how people purchase Slate Plus.
*
* The name was chosen because anything remotely utm/analytics-y gets picked up and blocked by ad-blockers.
*/
var STORAGE_KEY = “morgioni”;
var PARAM_NAMES = [“utm_medium”https://slate.com/human-interest/2020/11/,”utm_campaign”https://slate.com/human-interest/2020/11/,”utm_content”https://slate.com/human-interest/2020/11/,”utm_source”];

function setMorgioniProps() {
if (location.search) {
var redirectUri = new URLSearchParams(location.search).get(“redirect_uri”);
var newMorgioniProps = {};

if (redirectUri) {
  var redirectParams = new URLSearchParams(redirectUri);

  var _iterator = _createForOfIteratorHelper(redirectParams),
      _step;

  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var _step$value = _slicedToArray(_step.value, 2),
          key = _step$value[0],
          value = _step$value[1];

      if (value && PARAM_NAMES.includes(key)) {
        newMorgioniProps[key] = value;
      }
    }
  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }
}

if (Object.keys(newMorgioniProps).length > 0) {
  // merge new props with anything in storage, and save it back
  var morgioniProps = _objectSpread(_objectSpread({}, getMorgioniProps()), newMorgioniProps);

  try {
    localStorage.setItem(STORAGE_KEY, JSON.stringify(morgioniProps));
  } catch (e) {
    // probably a "block all cookies" user, nothin we can do
    console.error("failed to store event props", e);
  }
}

}
} // @returns a {String: String} object of utm names and values, or undefined

function getMorgioniProps() {
try {
// use “undefined” instead of “null”, to faciliate not sending “null” values in our tracking calls
return JSON.parse(localStorage.getItem(STORAGE_KEY)) || undefined;
} catch (e) {
console.error(“failed to access event props”, e);
}
}

function removeMorgioniProps() {
localStorage.removeItem(STORAGE_KEY);
}

module.exports = {
getMorgioniProps: getMorgioniProps,
setMorgioniProps: setMorgioniProps,
removeMorgioniProps: removeMorgioniProps
};
}, {}];
window.modules[“43”] = [function(require,module,exports){/*!
* JavaScript Cookie v2.2.1
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
;(function (factory) {
var registeredInModuleLoader;
if (typeof define === ‘function’ && define.amd) {
define(factory);
registeredInModuleLoader = true;
}
if (typeof exports === ‘object’) {
module.exports = factory();
registeredInModuleLoader = true;
}
if (!registeredInModuleLoader) {
var OldCookies = window.Cookies;
var api = window.Cookies = factory();
api.noConflict = function () {
window.Cookies = OldCookies;
return api;
};
}
}(function () {
function extend () {
var i = 0;
var result = {};
for (; i < arguments.length; i++) {
var attributes = arguments[ i ];
for (var key in attributes) {
result[key] = attributes[key];
}
}
return result;
}

function decode (s) {
    return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
}

function init (converter) {
    function api() {}

    function set (key, value, attributes) {
        if (typeof document === 'undefined') {
            return;
        }

        attributes = extend({
            path: '/'
        }, api.defaults, attributes);

        if (typeof attributes.expires === 'number') {
            attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
        }

        // We're using "expires" because "max-age" is not supported by IE
        attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';

        try {
            var result = JSON.stringify(value);
            if (/^[{[]/.test(result)) {
                value = result;
            }
        } catch (e) {}

        value = converter.write ?
            converter.write(value, key) :
            encodeURIComponent(String(value))
                .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);

        key = encodeURIComponent(String(key))
            .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
            .replace(/[()]/g, escape);

        var stringifiedAttributes="";
        for (var attributeName in attributes) {
            if (!attributes[attributeName]) {
                continue;
            }
            stringifiedAttributes += '; ' + attributeName;
            if (attributes[attributeName] === true) {
                continue;
            }

            // Considers RFC 6265 section 5.2:
            // ...
            // 3.  If the remaining unparsed-attributes contains a %x3B (";")
            //     character:
            // Consume the characters of the unparsed-attributes up to,
            // not including, the first %x3B (";") character.
            // ...
            stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
        }

        return (document.cookie = key + '=' + value + stringifiedAttributes);
    }

    function get (key, json) {
        if (typeof document === 'undefined') {
            return;
        }

        var jar = {};
        // To prevent the for loop in the first place assign an empty array
        // in case there are no cookies at all.
        var cookies = document.cookie ? document.cookie.split('; ') : [];
        var i = 0;

        for (; i < cookies.length; i++) {
            var parts = cookies[i].split('=');
            var cookie = parts.slice(1).join('=');

            if (!json && cookie.charAt(0) === '"') {
                cookie = cookie.slice(1, -1);
            }

            try {
                var name = decode(parts[0]);
                cookie = (converter.read || converter)(cookie, name) ||
                    decode(cookie);

                if (json) {
                    try {
                        cookie = JSON.parse(cookie);
                    } catch (e) {}
                }

                jar[name] = cookie;

                if (key === name) {
                    break;
                }
            } catch (e) {}
        }

        return key ? jar[key] : jar;
    }

    api.set = set;
    api.get = function (key) {
        return get(key, false /* read as raw */);
    };
    api.getJSON = function (key) {
        return get(key, true /* read as json */);
    };
    api.remove = function (key, attributes) {
        set(key, '', extend(attributes, {
            expires: -1
        }));
    };

    api.defaults = {};

    api.withConverter = init;

    return api;
}

return init(function () {});

}));
}, {}];
window.modules[“48”] = [function(require,module,exports){“use strict”;

var abStringRe = new RegExp(“^([0-9]+)_([0-9]+)$”);

function parseAbTestString(abTestString) {
var abTest = abStringRe.exec(abTestString);
return abTest;
}

function isValidAbTestString(abTestString) {
return !!parseAbTestString(abTestString);
}

module.exports.parseAbTestString = parseAbTestString;
module.exports.isValidAbTestString = isValidAbTestString;
}, {}];
window.modules[“49”] = [function(require,module,exports){“use strict”;

var Cookies = require(43);

var MPV_COOKIE_NAME = “mpv”;
var PAGE_HASH_KEY = “pageHashes”;
var INITIAL_PAGE_VIEW_COUNT = 0;
/**
* Set the mpv cookie
* @param {Object} mpvCookie
* @returns {Void}
*/

function setMpvCookie(mpvCookie) {
Cookies.remove(MPV_COOKIE_NAME);
var domain = document.documentElement.dataset.trackingdomain;
Cookies.set(MPV_COOKIE_NAME, mpvCookie, {
domain: domain,
expires: 365
});
}
/**
* Get the mpvCookie value when the user hits the page or return a default value if it doesn’t exist
* @returns {Object} mpvCookie object
*/

function getMpvCookie() {
var defaultMpv = “{“pv”:”.concat(INITIAL_PAGE_VIEW_COUNT, “,”first”:null}”);
var nthPageViewCookie = Cookies.get(MPV_COOKIE_NAME) || defaultMpv;
return JSON.parse(nthPageViewCookie);
}
/**
* Check the currentMpv object against localStorage, return the updated mpv
* @param {Object} currentMpv
* @param {String} pageHash
* @returns {Object} newMpv
*/

function updateMpvValue(currentMpv, pageHash) {
var pv = currentMpv.pv,
first = currentMpv.first;
pv = parseInt(pv, 10);
var now = new Date().getTime(); // restart every 30 days

if (first && now – first > 30 * 86400 * 1000) {
pv = INITIAL_PAGE_VIEW_COUNT;
localStorage.removeItem(PAGE_HASH_KEY);
} // Check if the current page ID is hashed in localStorage

var storedPages = localStorage.getItem(PAGE_HASH_KEY) || “”;
var storedPagesArr = storedPages.split(“,”).filter(Boolean);
var pageHasBeenViewed = storedPagesArr.includes(pageHash); // Increment if the page hasn’t been viewed

if (!pageHasBeenViewed) {
// Reset first on your first page
if (pv === INITIAL_PAGE_VIEW_COUNT) {
first = now;
} // Add page hash to localStorage

storedPagesArr.push(pageHash);
localStorage.setItem(PAGE_HASH_KEY, storedPagesArr.join());
pv++;

}

return {
pv: pv,
first: first
};
}

module.exports = {
getMpvCookie: getMpvCookie,
updateMpvValue: updateMpvValue,
setMpvCookie: setMpvCookie
};
}, {“43”:43}];
window.modules[“61”] = [function(require,module,exports){var baseGet = require(608);

/**
* Gets the value at path of object. If the resolved value is
* undefined, the defaultValue is returned in its place.
*
* @static
* @memberOf _
* @since 3.7.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @param {} [defaultValue] The value returned for undefined resolved values.
* @returns {
} Returns the resolved value.
* @example
*
* var object = { ‘a’: [{ ‘b’: { ‘c’: 3 } }] };
*
* _.get(object, ‘a[0].b.c’);
* // => 3
*
* _.get(object, [‘a”https://slate.com/human-interest/2020/11/,”0″https://slate.com/human-interest/2020/11/,”b”https://slate.com/human-interest/2020/11/,”c’]);
* // => 3
*
* _.get(object, ‘a.b.c”https://slate.com/human-interest/2020/11/,”default’);
* // => ‘default’
*/
function get(object, path, defaultValue) {
var result = object == null ? undefined : baseGet(object, path);
return result === undefined ? defaultValue : result;
}

module.exports = get;
}, {“608”:608}];
window.modules[“64”] = [function(require,module,exports){var Module = (function () {
‘use strict’;

/**
* Is obj an Element via duck-typing
* @param {{}} obj
* @returns {boolean}
*/
function isElement(obj) {
return !!(obj && obj.nodeType === 1);
}

/**
* Get the first item in arguments that is a DOM/jQuery element via duck-typing
* @param args
* @returns {Element}
* @throws Error if no element is found
*/
function getFirstElementArgument(args) {
var $el, i;
for (i = 0; i < args.length; i++) {
//assume first element in arguments is root element
if (!$el && isElement(args[i])) {
return args[i]; //do not cast to jq, because we can’t assume that it exists
}
}
throw new Error(‘Must have element to bind controller’);
}

/**
* Iterates through all event definitions in object
* @param {{}} events
* @param {Element} el
* @param {function} controller
*/
function addEvents(events, el, controller) {
var i, event, eventName, indexOfLastSpace, elList;

// loop through the defined events
for (event in events) {
  if (events.hasOwnProperty(event)) {
    indexOfLastSpace = event.lastIndexOf(' ');

    if (indexOfLastSpace === -1) {
      // event is defined on the component el, e.g. 'click'
      el.addEventListener(event, controller[events[event]].bind(controller));
    } else {
      // event is defined on a child el, e.g. 'div a click'
      eventName = event.substring(indexOfLastSpace + 1);
      elList = el.querySelectorAll(event.substring(0, indexOfLastSpace)); // get all child els that match

      // loop through child els (could be just one!) and add event listeners
      for (i = 0; i < elList.length; i++) {
        elList[i].addEventListener(eventName, controller[events[event]].bind(controller));
      }
    }
  }
}

}

/**
* Create a Service
*
* Basically any kind of stand-alone singleton.
*
* @param definition
* @param dependencies
* @constructor
*/
function DSService(definition, dependencies) {
//jshint -W058
//the ‘new’ keyword resets the service’s context
var service = new (Function.prototype.bind.apply(definition, [null].concat(dependencies)));
definition.module.context[definition.refName] = service;
return service;
}

/**
* Create a Controller
*
* Mimics both AngularJS controllers and directives, since we don’t need double-binding or scopes
*
* @param definition
* @param dependencies
* @param instanceArguments
* @constructor
*/
function DSController(definition, dependencies, instanceArguments) {
//jshint -W058
var el = getFirstElementArgument(instanceArguments),
constructor = definition.apply(null, dependencies),
controller = new (Function.prototype.bind.apply(constructor, [null].concat(instanceArguments)));

//we handle event registration, ala Marionette
// so event attachment does not need to be unit tested
if (controller.events) {
  addEvents(controller.events, el, controller);
}

return controller;

}

/**
* Define a thing that can be instantiated using a provider strategy
*
* NOTE: keep private because it’s a reclusive iterator
*
* @param {Module} module
* @param {function} providerStrategy
* @param {string} name
* @param {[] || function} definition
* @returns {function}
* @private
*/
function define(module, providerStrategy, name, definition) {
var dependencies;
if (typeof name !== ‘string’) {
throw new Error(‘Name must be a string’);
}

if (typeof definition === 'function') {
  dependencies = [];
} else {
  dependencies = definition.slice(0, definition.length - 1);
  definition = definition[definition.length - 1];
}

if (typeof definition !== 'function') {
  throw new Error('Must define function as last argument or last element of definition array');
}

//everything needed to create this thing on demand
definition.refName = name;
definition.dependencies = dependencies;
definition.module = module;
definition.providerStrategy = providerStrategy;
return definition;

}

/**
* Create a new thing based solely on definition
*
* NOTE: Visitor pattern. Can jump from module to module, do not reference ‘this’.
* @param definition
* @returns {*}
*/
function instantiate(definition) {
var i,
constructorArgs = [],
module = definition.module,
dependencies = definition.dependencies;

//get dependencies
for (i = 0; i < dependencies.length; i++) {
  if (module.context[dependencies[i]]) {
    constructorArgs[i] = module.context[dependencies[i]];
  } else if (module.definitions[dependencies[i]]) {
    constructorArgs[i] = instantiate(module.definitions[dependencies[i]]);
  } else {
    throw new Error(dependencies[i] + ' not defined');
  }
}

return definition.providerStrategy(definition, constructorArgs, Array.prototype.slice.call(arguments, 1));

}

var constructor = function () {
this.definitions = {};
this.context = {};
};
constructor.prototype = {

providers: {
  controller: DSController,
  service: DSService
},

/**
 * Create a new thing based solely on definition
 *
 * NOTE: Is safe, because instantiate does not and should not reference 'this'.
 * @param definition
 * @returns {*}
 */
instantiate: instantiate,

/**
 * Gets or instantiates thing
 * @param name
 * @returns {*}
 */
get: function (name) {
  if (this.context[name]) {
    return this.context[name];
  }

  if (this.definitions[name] && typeof this.definitions[name] === 'function') {
    return instantiate.apply(this, [this.definitions[name]].concat(Array.prototype.slice.call(arguments, 1)));
  } else if (typeof require !== 'undefined') {
    return instantiate.apply(this, [define(this, DSController, name, require(name))].concat(Array.prototype.slice.call(arguments, 1)));
    // note: this will throw an error if `name` doesn't exist anywhere
  } else {
    // note: this can only be hit when not using browserify
    throw new Error(name + ' is not defined');
  }
},

/**
 * Only create if exists in DOM.  Has distinct graphical attachment.  Scope represents container for thing on the
 * page.  Remembers container element.
 * @param name
 * @param definition
 * @returns {Module}
 */
controller: function (name, definition) {
  this.definitions[name] = define(this, DSController, name, definition);
  return this;
},

/**
 * Singleton helper classes and abstractions
 * @param {string} name
 * @param {[] || function} definition
 */
service: function (name, definition) {
  //definition always becomes a function when defined
  this.definitions[name] = define(this, DSService, name, definition);
  return this;
},

/**
 * @param name
 * @param value
 * @returns {Module}
 */
value: function (name, value) {
  this.context[name] = value;
  return this;
}

};
return constructor;
})();

//at least always one default module
var DS = new Module();
var attach = this;

if (this === undefined) {
// support for es2015 module strictness (this will be undefined, so explicitly add it to window)
attach = window;
} // older browsers, commonjs modules, etc will simply use this

// internally defined components should start with $, ala Angular convention
DS.value(‘$window’, attach);
DS.value(‘$document’, attach.document);

//explicitly global
attach.DS = DS;

//reliable self reference
DS.value(‘$module’, DS);

// export it for node and browserify
if (typeof exports !== ‘undefined’) {
module.exports = DS;
}
}, {}];
window.modules[“65”] = [function(require,module,exports){// Eventify
// —————–
// Copyright(c) 2010-2012 Jeremy Ashkenas, DocumentCloud
// Copyright(c) 2014 Bermi Ferrer bermi@bermilabs.com
// Copyright(c) 2013 Nicolas Perriault

// MIT Licensed

// A module that can be mixed in to any object in order to provide it with
// custom events. You may bind with on or remove with off callback functions
// to an event; trigger`-ing an event fires all callbacks in succession.
//
// var object = {};
// Eventify.enable(object);
// object.on(‘expand’, function(){ alert(‘expanded’); });
// object.trigger(‘expand’);
(function (name, global, definition) {
if (typeof module !== ‘undefined’) {
module.exports = definition(name, global);
} else if (typeof define === ‘function’ && typeof define.amd === ‘object’) {
define(definition);
} else {
// global[name] = definition(name, global);
var self = definition(),

// Save the previous value of the `Eventify` variable.
prev = global[name];

// Run Eventify in *noConflict* mode, returning the `Eventify`
// variable to its previous owner. Returns a reference to
// the Eventify object.
self.noConflict = function () {
  global[name] = prev;
  return self;
};

global[name] = self;

}

}(this.localEventifyLibraryName || “Eventify”, this, function () {
‘use strict’;

// Eventify, based on Backbone.Events
// —————–

function uniqueId(prefix) {
idCounter = idCounter + 1;
var id = idCounter + ”;
return prefix ? prefix + id : id;
}

function once(func) {
var ran = false,
memo;
return function () {
if (ran) {
return memo;
}
var args = (arguments.length === 1 ?
[arguments[0]] : Array.apply(null, arguments));
ran = true;
memo = func.apply(this, args);
func = null;
return memo;
};
}

var EventifyInstance,
listenMethods = {
listenTo: ‘on’,
listenToOnce: ‘once’
},
slice = Array.prototype.slice,
idCounter = 0,

// Regular expression used to split event strings
eventSplitter = /s+/,

// Defines the name of the local variable the Eventify library will use
// this is specially useful if window.Eventify is already being used
// by your application and you want a different name. For example:
//    // Declare before including the Eventify library
//    var localEventifyLibraryName="EventManager";

// Create a safe reference to the Eventify object for use below.
Eventify = function () {
  return this;
};

Eventify.prototype = {

// Event Functions
// -----------------

// Bind an event to a `callback` function. Passing `"all"` will bind
// the callback to all events fired.
on: function (name, callback, context) {
  if (!eventsApi(this, 'on', name, [callback, context]) || !callback) {
    return this;
  }
  this._events = this._events || {};
  var events = this._events[name] || (this._events[name] = []);
  events.push({
    callback: callback,
    context: context,
    ctx: context || this
  });
  return this;
},


// Bind an event to only be triggered a single time. After the first time
// the callback is invoked, it will be removed.
once: function (name, callback, context) {
  var self = this,
    onceListener;

  if (!eventsApi(this, 'once', name, [callback, context]) || !callback) {
    return this;
  }

  onceListener = once(function () {
    self.off(name, onceListener);
    var args = (arguments.length === 1 ?
            [arguments[0]] : Array.apply(null, arguments));
    callback.apply(this, args);
  });

  onceListener._callback = callback;
  return this.on(name, onceListener, context);
},

// Remove one or many callbacks. If `context` is null, removes all
// callbacks with that function. If `callback` is null, removes all
// callbacks for the event. If `name` is null, removes all bound
// callbacks for all events.
off: function (name, callback, context) {
  var retain, ev, events, names, i, l, j, k;
  if (!this._events || !eventsApi(this, 'off', name, [callback, context])) {
    return this;
  }
  if (!name && !callback && !context) {
    this._events = {};
    return this;
  }

  names = name ? [name] : Object.keys(this._events);
  for (i = 0, l = names.length; i < l; i += 1) {
    name = names[i];
    events = this._events[name];
    if (events) {
      this._events[name] = retain = [];
      if (callback || context) {
        for (j = 0, k = events.length; j < k; j += 1) {
          ev = events[j];
          if ((callback &&
              callback !== ev.callback &&
              callback !== ev.callback._callback) ||
            (context && context !== ev.context)) {
            retain.push(ev);
          }
        }
      }
      if (!retain.length) {
        delete this._events[name];
      }
    }
  }

  return this;
},

// Trigger one or many events, firing all bound callbacks. Callbacks are
// passed the same arguments as `trigger` is, apart from the event name
// (unless you're listening on `"all"`, which will cause your callback to
// receive the true name of the event as the first argument).
trigger: function () {
  if (!this._events) {
    return this;
  }
  // #6 arguments should not be leaked in order to allow V8 optimizations.
  // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers
  var args = (arguments.length === 1 ?
          [arguments[0]] : Array.apply(null, arguments));

  var events, allEvents;
  var name = args[0];
  var extraArgs = args.slice(1);
  if (!eventsApi(this, 'trigger', name, extraArgs)) {
    return this;
  }
  events = this._events[name];
  allEvents = this._events.all;
  if (events) {
    triggerEvents(events, extraArgs);
  }
  if (allEvents) {
    triggerEvents(allEvents, args);
  }
  return this;
},

// Tell this object to stop listening to either specific events ... or
// to every object it's currently listening to.
stopListening: function (obj, name, callback) {
  var deleteListener, id,
    listeners = this._listeners;
  if (!listeners) {
    return this;
  }
  deleteListener = !name && !callback;
  if (typeof name === 'object') {
    callback = this;
  }
  listeners = {};
  if (obj) {
    listeners[obj._listenerId] = obj;
  }
  for (id in listeners) {
    if (listeners.hasOwnProperty(id)) {
      listeners[id].off(name, callback, this);
      if (deleteListener) {
        delete this._listeners[id];
      }
    }
  }
  return this;
},

};

// Implement fancy features of the Events API such as multiple event
// names "change blur" and jQuery-style event maps {change: action}
// in terms of the existing API.
function eventsApi(obj, action, name, rest) {
var key, i, l, names;

if (!name) {
  return true;
}

// Handle event maps.
if (typeof name === 'object') {
  for (key in name) {
    if (name.hasOwnProperty(key)) {
      obj[action].apply(obj, [key, name[key]].concat(rest));
    }
  }
  return false;
}

// Handle space separated event names.
if (eventSplitter.test(name)) {
  names = name.split(eventSplitter);
  for (i = 0, l = names.length; i < l; i += 1) {
    obj[action].apply(obj, [names[i]].concat(rest));
  }
  return false;
}

return true;

}

// A difficult-to-believe, but optimized internal dispatch function for
// triggering events. Tries to keep the usual cases speedy (most internal
// Backbone events have 3 arguments).

function triggerEvents(events, args) {
var ev,
i = 0,
l = events.length,
a1 = args[0],
a2 = args[1],
a3 = args[2];
switch (args.length) {
case 0:
while (i < l) {
ev = events[i];
ev.callback.call(ev.ctx);
i += 1;
}
return;
case 1:
while (i < l) {
ev = events[i];
ev.callback.call(ev.ctx, a1);
i += 1;
}
return;
case 2:
while (i < l) {
ev = events[i];
ev.callback.call(ev.ctx, a1, a2);
i += 1;
}
return;
case 3:
while (i < l) {
ev = events[i];
ev.callback.call(ev.ctx, a1, a2, a3);
i += 1;
}
return;
default:
while (i < l) {
ev = events[i];
ev.callback.apply(ev.ctx, args);
i += 1;
}
}
}

// Inversion-of-control versions of on and once. Tell this object to
// listen to an event in another object … keeping track of what it’s
// listening to.
Object.keys(listenMethods).forEach(function (method) {
var implementation = listenMethods[method];
Eventify.prototype[method] = function (obj, name, callback) {
var id,
listeners = this._listeners || (this._listeners = {});
obj._listenerId = obj._listenerId || uniqueId(‘l’);
id = obj._listenerId;
listeners[id] = obj;
if (typeof name === ‘object’) {
callback = this;
}
obj[implementation](name, callback, this);
return this;
};
});

// Export an Eventify instance for Node.js, with
// backwards-compatibility for the old require() API. If we’re in
// the browser, add Eventify as a global object via a string identifier,
// for Closure Compiler “advanced” mode.
EventifyInstance = new Eventify();

EventifyInstance.version = “2.0.0”;

// Utility Functions
// —————–

// Adds the methods on, off and trigger to a target Object
EventifyInstance.enable = function enable(target) {
var i, len,
methods = Object.keys(Eventify.prototype);
target = target || {};
for (i = 0, len = methods.length; i < len; i = i + 1) {
target[methods[i]] = this[methods[i]];
}
return target;
};

EventifyInstance.create = function () {
return Object.create(Eventify.prototype);
};

// Backbone.Events drop in replacement compatibility
EventifyInstance.mixin = EventifyInstance.enable;

// Expose prototype so other objects can extend it
EventifyInstance.proto = Eventify.prototype;

// Sets Eventify on the browser window or on the process
return EventifyInstance;

// Establish the root object, window in the browser,
// or global on the server.
}));
}, {}];
window.modules[“66”] = [function(require,module,exports){var debounce = require(41),
isObject = require(595);

/** Error message constants. */
var FUNC_ERROR_TEXT = ‘Expected a function’;

/**
* Creates a throttled function that only invokes func at most once per
* every wait milliseconds. The throttled function comes with a cancel
* method to cancel delayed func invocations and a flush method to
* immediately invoke them. Provide options to indicate whether func
* should be invoked on the leading and/or trailing edge of the wait
* timeout. The func is invoked with the last arguments provided to the
* throttled function. Subsequent calls to the throttled function return the
* result of the last func invocation.
*
* Note: If leading and trailing options are true, func is
* invoked on the trailing edge of the timeout only if the throttled function
* is invoked more than once during the wait timeout.
*
* If wait is 0 and leading is false, func invocation is deferred
* until to the next tick, similar to setTimeout with a timeout of 0.
*
* See David Corbacho’s article
* for details over the differences between _.throttle and _.debounce.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to throttle.
* @param {number} [wait=0] The number of milliseconds to throttle invocations to.
* @param {Object} [options={}] The options object.
* @param {boolean} [options.leading=true] * Specify invoking on the leading edge of the timeout.
* @param {boolean} [options.trailing=true] * Specify invoking on the trailing edge of the timeout.
* @returns {Function} Returns the new throttled function.
* @example
*
* // Avoid excessively updating the position while scrolling.
* jQuery(window).on(‘scroll’, _.throttle(updatePosition, 100));
*
* // Invoke renewToken when the click event is fired, but not more than once every 5 minutes.
* var throttled = _.throttle(renewToken, 300000, { ‘trailing’: false });
* jQuery(element).on(‘click’, throttled);
*
* // Cancel the trailing throttled invocation.
* jQuery(window).on(‘popstate’, throttled.cancel);
*/
function throttle(func, wait, options) {
var leading = true,
trailing = true;

if (typeof func != ‘function’) {
throw new TypeError(FUNC_ERROR_TEXT);
}
if (isObject(options)) {
leading = ‘leading’ in options ? !!options.leading : leading;
trailing = ‘trailing’ in options ? !!options.trailing : trailing;
}
return debounce(func, wait, {
‘leading’: leading,
‘maxWait’: wait,
‘trailing’: trailing
});
}

module.exports = throttle;
}, {“41″:41,”595”:595}];
window.modules[“67”] = [function(require,module,exports){module.exports = require(725);
}, {“725”:725}];
window.modules[“68”] = [function(require,module,exports){var before = require(720);

/**
* Creates a function that is restricted to invoking func once. Repeat calls
* to the function return the value of the first invocation. The func is
* invoked with the this binding and arguments of the created function.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to restrict.
* @returns {Function} Returns the new restricted function.
* @example
*
* var initialize = _.once(createApplication);
* initialize();
* initialize();
* // => createApplication is invoked once
*/
function once(func) {
return before(2, func);
}

module.exports = once;
}, {“720”:720}];
window.modules[“69”] = [function(require,module,exports){var arrayMap = require(581),
baseIteratee = require(635),
basePickBy = require(663),
getAllKeysIn = require(703);

/**
* Creates an object composed of the object properties predicate returns
* truthy for. The predicate is invoked with two arguments: (value, key).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Object
* @param {Object} object The source object.
* @param {Function} [predicate=_.identity] The function invoked per property.
* @returns {Object} Returns the new object.
* @example
*
* var object = { ‘a’: 1, ‘b’: ‘2″https://slate.com/human-interest/2020/11/,”c’: 3 };
*
* _.pickBy(object, _.isNumber);
* // => { ‘a’: 1, ‘c’: 3 }
*/
function pickBy(object, predicate) {
if (object == null) {
return {};
}
var props = arrayMap(getAllKeysIn(object), function(prop) {
return [prop];
});
predicate = baseIteratee(predicate);
return basePickBy(object, props, function(value, path) {
return predicate(value, path[0]);
});
}

module.exports = pickBy;
}, {“581″:581,”635″:635,”663″:663,”703”:703}];
window.modules[“70”] = [function(require,module,exports){(function(window, factory) {
var lazySizes = factory(window, window.document);
window.lazySizes = lazySizes;
if(typeof module == ‘object’ && module.exports){
module.exports = lazySizes;
}
}(window, function l(window, document) {
‘use strict’;
/*jshint eqnull:true */
if(!document.getElementsByClassName){return;}

var lazysizes, lazySizesConfig;

var docElem = document.documentElement;

var Date = window.Date;

var supportPicture = window.HTMLPictureElement;

var _addEventListener="addEventListener";

var _getAttribute="getAttribute";

var addEventListener = window[_addEventListener];

var setTimeout = window.setTimeout;

var requestAnimationFrame = window.requestAnimationFrame || setTimeout;

var requestIdleCallback = window.requestIdleCallback;

var regPicture = /^picture$/i;

var loadEvents = ['load"https://slate.com/human-interest/2020/11/,"error"https://slate.com/human-interest/2020/11/,"lazyincluded"https://slate.com/human-interest/2020/11/,"_lazyloaded'];

var regClassCache = {};

var forEach = Array.prototype.forEach;

var hasClass = function(ele, cls) {
    if(!regClassCache[cls]){
        regClassCache[cls] = new RegExp('(\s|^)'+cls+'(\s|$)');
    }
    return regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];
};

var addClass = function(ele, cls) {
    if (!hasClass(ele, cls)){
        ele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);
    }
};

var removeClass = function(ele, cls) {
    var reg;
    if ((reg = hasClass(ele,cls))) {
        ele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));
    }
};

var addRemoveLoadEvents = function(dom, fn, add){
    var action = add ? _addEventListener : 'removeEventListener';
    if(add){
        addRemoveLoadEvents(dom, fn);
    }
    loadEvents.forEach(function(evt){
        dom[action](evt, fn);
    });
};

var triggerEvent = function(elem, name, detail, noBubbles, noCancelable){
    var event = document.createEvent('Event');

    if(!detail){
        detail = {};
    }

    detail.instance = lazysizes;

    event.initEvent(name, !noBubbles, !noCancelable);

    event.detail = detail;

    elem.dispatchEvent(event);
    return event;
};

var updatePolyfill = function (el, full){
    var polyfill;
    if( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){
        if(full && full.src && !el[_getAttribute]('srcset')){
            el.setAttribute('srcset', full.src);
        }
        polyfill({reevaluate: true, elements: [el]});
    } else if(full && full.src){
        el.src = full.src;
    }
};

var getCSS = function (elem, style){
    return (getComputedStyle(elem, null) || {})[style];
};

var getWidth = function(elem, parent, width){
    width = width || elem.offsetWidth;

    while(width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth){
        width =  parent.offsetWidth;
        parent = parent.parentNode;
    }

    return width;
};

var rAF = (function(){
    var running, waiting;
    var firstFns = [];
    var secondFns = [];
    var fns = firstFns;

    var run = function(){
        var runFns = fns;

        fns = firstFns.length ? secondFns : firstFns;

        running = true;
        waiting = false;

        while(runFns.length){
            runFns.shift()();
        }

        running = false;
    };

    var rafBatch = function(fn, queue){
        if(running && !queue){
            fn.apply(this, arguments);
        } else {
            fns.push(fn);

            if(!waiting){
                waiting = true;
                (document.hidden ? setTimeout : requestAnimationFrame)(run);
            }
        }
    };

    rafBatch._lsFlush = run;

    return rafBatch;
})();

var rAFIt = function(fn, simple){
    return simple ?
        function() {
            rAF(fn);
        } :
        function(){
            var that = this;
            var args = arguments;
            rAF(function(){
                fn.apply(that, args);
            });
        }
    ;
};

var throttle = function(fn){
    var running;
    var lastTime = 0;
    var gDelay = lazySizesConfig.throttleDelay;
    var rICTimeout = lazySizesConfig.ricTimeout;
    var run = function(){
        running = false;
        lastTime = Date.now();
        fn();
    };
    var idleCallback = requestIdleCallback && rICTimeout > 49 ?
        function(){
            requestIdleCallback(run, {timeout: rICTimeout});

            if(rICTimeout !== lazySizesConfig.ricTimeout){
                rICTimeout = lazySizesConfig.ricTimeout;
            }
        } :
        rAFIt(function(){
            setTimeout(run);
        }, true)
    ;

    return function(isPriority){
        var delay;

        if((isPriority = isPriority === true)){
            rICTimeout = 33;
        }

        if(running){
            return;
        }

        running =  true;

        delay = gDelay - (Date.now() - lastTime);

        if(delay < 0){
            delay = 0;
        }

        if(isPriority || delay < 9){
            idleCallback();
        } else {
            setTimeout(idleCallback, delay);
        }
    };
};

//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html
var debounce = function(func) {
    var timeout, timestamp;
    var wait = 99;
    var run = function(){
        timeout = null;
        func();
    };
    var later = function() {
        var last = Date.now() - timestamp;

        if (last < wait) {
            setTimeout(later, wait - last);
        } else {
            (requestIdleCallback || run)(run);
        }
    };

    return function() {
        timestamp = Date.now();

        if (!timeout) {
            timeout = setTimeout(later, wait);
        }
    };
};

(function(){
    var prop;

    var lazySizesDefaults = {
        lazyClass: 'lazyload',
        loadedClass: 'lazyloaded',
        loadingClass: 'lazyloading',
        preloadClass: 'lazypreload',
        errorClass: 'lazyerror',
        //strictClass: 'lazystrict',
        autosizesClass: 'lazyautosizes',
        srcAttr: 'data-src',
        srcsetAttr: 'data-srcset',
        sizesAttr: 'data-sizes',
        //preloadAfterLoad: false,
        minSize: 40,
        customMedia: {},
        init: true,
        expFactor: 1.5,
        hFac: 0.8,
        loadMode: 2,
        loadHidden: true,
        ricTimeout: 0,
        throttleDelay: 125,
    };

    lazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};

    for(prop in lazySizesDefaults){
        if(!(prop in lazySizesConfig)){
            lazySizesConfig[prop] = lazySizesDefaults[prop];
        }
    }

    window.lazySizesConfig = lazySizesConfig;

    setTimeout(function(){
        if(lazySizesConfig.init){
            init();
        }
    });
})();

var loader = (function(){
    var preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;

    var eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;

    var regImg = /^img$/i;
    var regIframe = /^iframe$/i;

    var supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));

    var shrinkExpand = 0;
    var currentExpand = 0;

    var isLoading = 0;
    var lowRuns = -1;

    var resetPreloading = function(e){
        isLoading--;
        if(!e || isLoading < 0 || !e.target){
            isLoading = 0;
        }
    };

    var isVisible = function (elem) {
        if (isBodyHidden == null) {
            isBodyHidden = getCSS(document.body, 'visibility') == 'hidden';
        }

        return isBodyHidden || (getCSS(elem.parentNode, 'visibility') != 'hidden' && getCSS(elem, 'visibility') != 'hidden');
    };

    var isNestedVisible = function(elem, elemExpand){
        var outerRect;
        var parent = elem;
        var visible = isVisible(elem);

        eLtop -= elemExpand;
        eLbottom += elemExpand;
        eLleft -= elemExpand;
        eLright += elemExpand;

        while(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){
            visible = ((getCSS(parent, 'opacity') || 1) > 0);

            if(visible && getCSS(parent, 'overflow') != 'visible'){
                outerRect = parent.getBoundingClientRect();
                visible = eLright > outerRect.left &&
                    eLleft < outerRect.right &&
                    eLbottom > outerRect.top - 1 &&
                    eLtop < outerRect.bottom + 1
                ;
            }
        }

        return visible;
    };

    var checkElements = function() {
        var eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,
            beforeExpandVal, defaultExpand, preloadExpand, hFac;
        var lazyloadElems = lazysizes.elements;

        if((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){

            i = 0;

            lowRuns++;

            defaultExpand = (!lazySizesConfig.expand || lazySizesConfig.expand < 1) ?
                docElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :
                lazySizesConfig.expand;

            lazysizes._defEx = defaultExpand;

            preloadExpand = defaultExpand * lazySizesConfig.expFactor;
            hFac = lazySizesConfig.hFac;
            isBodyHidden = null;

            if(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){
                currentExpand = preloadExpand;
                lowRuns = 0;
            } else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){
                currentExpand = defaultExpand;
            } else {
                currentExpand = shrinkExpand;
            }

            for(; i < eLlen; i++){

                if(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}

                if(!supportScroll){unveilElement(lazyloadElems[i]);continue;}

                if(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){
                    elemExpand = currentExpand;
                }

                if(beforeExpandVal !== elemExpand){
                    eLvW = innerWidth + (elemExpand * hFac);
                    elvH = innerHeight + elemExpand;
                    elemNegativeExpand = elemExpand * -1;
                    beforeExpandVal = elemExpand;
                }

                rect = lazyloadElems[i].getBoundingClientRect();

                if ((eLbottom = rect.bottom) >= elemNegativeExpand &&
                    (eLtop = rect.top) <= elvH &&
                    (eLright = rect.right) >= elemNegativeExpand * hFac &&
                    (eLleft = rect.left) <= eLvW &&
                    (eLbottom || eLright || eLleft || eLtop) &&
                    (lazySizesConfig.loadHidden || isVisible(lazyloadElems[i])) &&
                    ((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){
                    unveilElement(lazyloadElems[i]);
                    loadedSomething = true;
                    if(isLoading > 9){break;}
                } else if(!loadedSomething && isCompleted && !autoLoadElem &&
                    isLoading < 4 && lowRuns < 4 && loadMode > 2 &&
                    (preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&
                    (preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != 'auto')))){
                    autoLoadElem = preloadElems[0] || lazyloadElems[i];
                }
            }

            if(autoLoadElem && !loadedSomething){
                unveilElement(autoLoadElem);
            }
        }
    };

    var throttledCheckElements = throttle(checkElements);

    var switchLoadingClass = function(e){
        var elem = e.target;

        if (elem._lazyCache) {
            delete elem._lazyCache;
            return;
        }

        resetPreloading(e);
        addClass(elem, lazySizesConfig.loadedClass);
        removeClass(elem, lazySizesConfig.loadingClass);
        addRemoveLoadEvents(elem, rafSwitchLoadingClass);
        triggerEvent(elem, 'lazyloaded');
    };
    var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);
    var rafSwitchLoadingClass = function(e){
        rafedSwitchLoadingClass({target: e.target});
    };

    var changeIframeSrc = function(elem, src){
        try {
            elem.contentWindow.location.replace(src);
        } catch(e){
            elem.src = src;
        }
    };

    var handleSources = function(source){
        var customMedia;

        var sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);

        if( (customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){
            source.setAttribute('media', customMedia);
        }

        if(sourceSrcset){
            source.setAttribute('srcset', sourceSrcset);
        }
    };

    var lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){
        var src, srcset, parent, isPicture, event, firesLoad;

        if(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){

            if(sizes){
                if(isAuto){
                    addClass(elem, lazySizesConfig.autosizesClass);
                } else {
                    elem.setAttribute('sizes', sizes);
                }
            }

            srcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);
            src = elem[_getAttribute](lazySizesConfig.srcAttr);

            if(isImg) {
                parent = elem.parentNode;
                isPicture = parent && regPicture.test(parent.nodeName || '');
            }

            firesLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));

            event = {target: elem};

            addClass(elem, lazySizesConfig.loadingClass);

            if(firesLoad){
                clearTimeout(resetPreloadingTimer);
                resetPreloadingTimer = setTimeout(resetPreloading, 2500);
                addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);
            }

            if(isPicture){
                forEach.call(parent.getElementsByTagName('source'), handleSources);
            }

            if(srcset){
                elem.setAttribute('srcset', srcset);
            } else if(src && !isPicture){
                if(regIframe.test(elem.nodeName)){
                    changeIframeSrc(elem, src);
                } else {
                    elem.src = src;
                }
            }

            if(isImg && (srcset || isPicture)){
                updatePolyfill(elem, {src: src});
            }
        }

        if(elem._lazyRace){
            delete elem._lazyRace;
        }
        removeClass(elem, lazySizesConfig.lazyClass);

        rAF(function(){
            // Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)
            var isLoaded = elem.complete && elem.naturalWidth > 1;

            if( !firesLoad || isLoaded){
                if (isLoaded) {
                    addClass(elem, 'ls-is-cached');
                }
                switchLoadingClass(event);
                elem._lazyCache = true;
                setTimeout(function(){
                    if ('_lazyCache' in elem) {
                        delete elem._lazyCache;
                    }
                }, 9);
            }
        }, true);
    });

    var unveilElement = function (elem){
        var detail;

        var isImg = regImg.test(elem.nodeName);

        //allow using , but don't use. it's invalid. Use data- or a valid value for sizes instead (i.e.: )
        var sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));
        var isAuto = sizes == 'auto';

        if( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass) && hasClass(elem, lazySizesConfig.lazyClass)){return;}

        detail = triggerEvent(elem, 'lazyunveilread').detail;

        if(isAuto){
             autoSizer.updateElem(elem, true, elem.offsetWidth);
        }

        elem._lazyRace = true;
        isLoading++;

        lazyUnveil(elem, detail, isAuto, sizes, isImg);
    };

    var onload = function(){
        if(isCompleted){return;}
        if(Date.now() - started < 999){
            setTimeout(onload, 999);
            return;
        }
        var afterScroll = debounce(function(){
            lazySizesConfig.loadMode = 3;
            throttledCheckElements();
        });

        isCompleted = true;

        lazySizesConfig.loadMode = 3;

        throttledCheckElements();

        addEventListener('scroll', function(){
            if(lazySizesConfig.loadMode == 3){
                lazySizesConfig.loadMode = 2;
            }
            afterScroll();
        }, true);
    };

    return {
        _: function(){
            started = Date.now();

            lazysizes.elements = document.getElementsByClassName(lazySizesConfig.lazyClass);
            preloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);

            addEventListener('scroll', throttledCheckElements, true);

            addEventListener('resize', throttledCheckElements, true);

            if(window.MutationObserver){
                new MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );
            } else {
                docElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);
                docElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);
                setInterval(throttledCheckElements, 999);
            }

            addEventListener('hashchange', throttledCheckElements, true);

            //, 'fullscreenchange'
            ['focus"https://slate.com/human-interest/2020/11/,"mouseover"https://slate.com/human-interest/2020/11/,"click"https://slate.com/human-interest/2020/11/,"load"https://slate.com/human-interest/2020/11/,"transitionend"https://slate.com/human-interest/2020/11/,"animationend"https://slate.com/human-interest/2020/11/,"webkitAnimationEnd'].forEach(function(name){
                document[_addEventListener](name, throttledCheckElements, true);
            });

            if((/d$|^c/.test(document.readyState))){
                onload();
            } else {
                addEventListener('load', onload);
                document[_addEventListener]('DOMContentLoaded', throttledCheckElements);
                setTimeout(onload, 20000);
            }

            if(lazysizes.elements.length){
                checkElements();
                rAF._lsFlush();
            } else {
                throttledCheckElements();
            }
        },
        checkElems: throttledCheckElements,
        unveil: unveilElement
    };
})();


var autoSizer = (function(){
    var autosizesElems;

    var sizeElement = rAFIt(function(elem, parent, event, width){
        var sources, i, len;
        elem._lazysizesWidth = width;
        width += 'px';

        elem.setAttribute('sizes', width);

        if(regPicture.test(parent.nodeName || '')){
            sources = parent.getElementsByTagName('source');
            for(i = 0, len = sources.length; i < len; i++){
                sources[i].setAttribute('sizes', width);
            }
        }

        if(!event.detail.dataAttr){
            updatePolyfill(elem, event.detail);
        }
    });
    var getSizeElement = function (elem, dataAttr, width){
        var event;
        var parent = elem.parentNode;

        if(parent){
            width = getWidth(elem, parent, width);
            event = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});

            if(!event.defaultPrevented){
                width = event.detail.width;

                if(width && width !== elem._lazysizesWidth){
                    sizeElement(elem, parent, event, width);
                }
            }
        }
    };

    var updateElementsSizes = function(){
        var i;
        var len = autosizesElems.length;
        if(len){
            i = 0;

            for(; i < len; i++){
                getSizeElement(autosizesElems[i]);
            }
        }
    };

    var debouncedUpdateElementsSizes = debounce(updateElementsSizes);

    return {
        _: function(){
            autosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);
            addEventListener('resize', debouncedUpdateElementsSizes);
        },
        checkElems: debouncedUpdateElementsSizes,
        updateElem: getSizeElement
    };
})();

var init = function(){
    if(!init.i){
        init.i = true;
        autoSizer._();
        loader._();
    }
};

lazysizes = {
    cfg: lazySizesConfig,
    autoSizer: autoSizer,
    loader: loader,
    init: init,
    uP: updatePolyfill,
    aC: addClass,
    rC: removeClass,
    hC: hasClass,
    fire: triggerEvent,
    gW: getWidth,
    rAF: rAF,
};

return lazysizes;

}
));
}, {}];
window.modules[“71”] = [function(require,module,exports){(function (global, factory) {
typeof exports === ‘object’ && typeof module !== ‘undefined’ ? module.exports = factory() :
typeof define === ‘function’ && define.amd ? define(factory) :
(global.Layzr = factory());
}(this, (function () { ‘use strict’;

var _extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];

for (var key in source) {
  if (Object.prototype.hasOwnProperty.call(source, key)) {
    target[key] = source[key];
  }
}

}

return target;
};

var knot = function knot() {
var extended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

var events = Object.create(null);

function on(name, handler) {
events[name] = events[name] || [];
events[name].push(handler);
return this;
}

function once(name, handler) {
handler._once = true;
on(name, handler);
return this;
}

function off(name) {
var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;

handler ? events[name].splice(events[name].indexOf(handler), 1) : delete events[name];

return this;

}

function emit(name) {
var _this = this;

for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  args[_key - 1] = arguments[_key];
}

// cache the events, to avoid consequences of mutation
var cache = events[name] && events[name].slice();

// only fire handlers if they exist
cache && cache.forEach(function (handler) {
  // remove handlers added with 'once'
  handler._once && off(name, handler);

  // set 'this' context, pass args to handlers
  handler.apply(_this, args);
});

return this;

}

return _extends({}, extended, {

on: on,
once: once,
off: off,
emit: emit

});
};

var layzr = (function () {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

// private

var prevLoc = getLoc();
var ticking = void 0;

var nodes = void 0;
var windowHeight = void 0;

// options

var settings = {
normal: options.normal || ‘data-normal’,
retina: options.retina || ‘data-retina’,
srcset: options.srcset || ‘data-srcset’,
threshold: options.threshold || 0
};

// feature detection
// https://github.com/Modernizr/Modernizr/blob/master/feature-detects/img/srcset.js

var srcset = document.body.classList.contains(‘srcset’) || ‘srcset’ in document.createElement(‘img’);

// device pixel ratio
// not supported in IE10 – https://msdn.microsoft.com/en-us/library/dn265030(v=vs.85).aspx

var dpr = window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI;

// instance

var instance = knot({
handlers: handlers,
check: check,
update: update
});

return instance;

// location helper

function getLoc() {
return window.scrollY || window.pageYOffset;
}

// debounce helpers

function requestScroll() {
prevLoc = getLoc();
requestFrame();
}

function requestFrame() {
if (!ticking) {
window.requestAnimationFrame(function () {
return check();
});
ticking = true;
}
}

// offset helper

function getOffset(node) {
return node.getBoundingClientRect().top + prevLoc;
}

// in viewport helper

function inViewport(node) {
var viewTop = prevLoc;
var viewBot = viewTop + windowHeight;

var nodeTop = getOffset(node);
var nodeBot = nodeTop + node.offsetHeight;

var offset = settings.threshold / 100 * windowHeight;

return nodeBot >= viewTop - offset && nodeTop <= viewBot + offset;

}

// source helper

function setSource(node) {
instance.emit(‘src:before’, node);

// prefer srcset, fallback to pixel density
if (srcset && node.hasAttribute(settings.srcset)) {
  node.setAttribute('srcset', node.getAttribute(settings.srcset));
} else {
  var retina = dpr > 1 && node.getAttribute(settings.retina);
  node.setAttribute('src', retina || node.getAttribute(settings.normal));
}

instance.emit('src:after', node);[settings.normal, settings.retina, settings.srcset].forEach(function (attr) {
  return node.removeAttribute(attr);
});

update();

}

// API

function handlers(flag) {
var action = flag ? ‘addEventListener’ : ‘removeEventListener’;[‘scroll”https://slate.com/human-interest/2020/11/,”resize’].forEach(function (event) {
return window[action](event, requestScroll);
});
return this;
}

function check() {
windowHeight = window.innerHeight;

nodes.forEach(function (node) {
  return inViewport(node) && setSource(node);
});

ticking = false;
return this;

}

function update() {
nodes = Array.prototype.slice.call(document.querySelectorAll(‘[‘ + settings.normal + ‘]’));
return this;
}
});

return layzr;

})));
}, {}];
window.modules[“535”] = [function(require,module,exports){var getNative = require(536),
root = require(537);

/* Built-in method references that are verified to be native. */
var DataView = getNative(root, ‘DataView’);

module.exports = DataView;
}, {“536″:536,”537”:537}];
window.modules[“536”] = [function(require,module,exports){var baseIsNative = require(629),
getValue = require(707);

/**
* Gets the native function at key of object.
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the method to get.
* @returns {*} Returns the function if it’s native, else undefined.
*/
function getNative(object, key) {
var value = getValue(object, key);
return baseIsNative(value) ? value : undefined;
}

module.exports = getNative;
}, {“629″:629,”707”:707}];
window.modules[“537”] = [function(require,module,exports){var freeGlobal = require(701);

/** Detect free variable self. */
var freeSelf = typeof self == ‘object’ && self && self.Object === Object && self;

/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function(‘return this’)();

module.exports = root;
}, {“701”:701}];
window.modules[“538”] = [function(require,module,exports){var hashClear = require(543),
hashDelete = require(539),
hashGet = require(540),
hashHas = require(542),
hashSet = require(541);

/**
* Creates a hash object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Hash(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;

this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}

// Add methods to Hash.
Hash.prototype.clear = hashClear;
Hash.prototype[‘delete’] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;

module.exports = Hash;
}, {“539″:539,”540″:540,”541″:541,”542″:542,”543”:543}];
window.modules[“539”] = [function(require,module,exports){/**
* Removes key and its value from the hash.
*
* @private
* @name delete
* @memberOf Hash
* @param {Object} hash The hash to modify.
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns true if the entry was removed, else false.
*/
function hashDelete(key) {
var result = this.has(key) && delete this.data[key];
this.size -= result ? 1 : 0;
return result;
}

module.exports = hashDelete;
}, {}];
window.modules[“540”] = [function(require,module,exports){var nativeCreate = require(713);

/** Used to stand-in for undefined hash values. */
var HASH_UNDEFINED = ‘lodash_hash_undefined‘;

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* Gets the hash value for key.
*
* @private
* @name get
* @memberOf Hash
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function hashGet(key) {
var data = this.data;
if (nativeCreate) {
var result = data[key];
return result === HASH_UNDEFINED ? undefined : result;
}
return hasOwnProperty.call(data, key) ? data[key] : undefined;
}

module.exports = hashGet;
}, {“713”:713}];
window.modules[“541”] = [function(require,module,exports){var nativeCreate = require(713);

/** Used to stand-in for undefined hash values. */
var HASH_UNDEFINED = ‘lodash_hash_undefined‘;

/**
* Sets the hash key to value.
*
* @private
* @name set
* @memberOf Hash
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the hash instance.
*/
function hashSet(key, value) {
var data = this.data;
this.size += this.has(key) ? 0 : 1;
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
return this;
}

module.exports = hashSet;
}, {“713”:713}];
window.modules[“542”] = [function(require,module,exports){var nativeCreate = require(713);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* Checks if a hash value for key exists.
*
* @private
* @name has
* @memberOf Hash
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns true if an entry for key exists, else false.
*/
function hashHas(key) {
var data = this.data;
return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
}

module.exports = hashHas;
}, {“713”:713}];
window.modules[“543”] = [function(require,module,exports){var nativeCreate = require(713);

/**
* Removes all key-value entries from the hash.
*
* @private
* @name clear
* @memberOf Hash
*/
function hashClear() {
this.data = nativeCreate ? nativeCreate(null) : {};
this.size = 0;
}

module.exports = hashClear;
}, {“713”:713}];
window.modules[“544”] = [function(require,module,exports){var listCacheClear = require(545),
listCacheDelete = require(549),
listCacheGet = require(546),
listCacheHas = require(547),
listCacheSet = require(548);

/**
* Creates an list cache object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function ListCache(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;

this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}

// Add methods to ListCache.
ListCache.prototype.clear = listCacheClear;
ListCache.prototype[‘delete’] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;

module.exports = ListCache;
}, {“545″:545,”546″:546,”547″:547,”548″:548,”549”:549}];
window.modules[“545”] = [function(require,module,exports){/**
* Removes all key-value entries from the list cache.
*
* @private
* @name clear
* @memberOf ListCache
*/
function listCacheClear() {
this.data = [];
this.size = 0;
}

module.exports = listCacheClear;
}, {}];
window.modules[“546”] = [function(require,module,exports){var assocIndexOf = require(592);

/**
* Gets the list cache value for key.
*
* @private
* @name get
* @memberOf ListCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function listCacheGet(key) {
var data = this.data,
index = assocIndexOf(data, key);

return index < 0 ? undefined : data[index][1];
}

module.exports = listCacheGet;
}, {“592”:592}];
window.modules[“547”] = [function(require,module,exports){var assocIndexOf = require(592);

/**
* Checks if a list cache value for key exists.
*
* @private
* @name has
* @memberOf ListCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns true if an entry for key exists, else false.
*/
function listCacheHas(key) {
return assocIndexOf(this.data, key) > -1;
}

module.exports = listCacheHas;
}, {“592”:592}];
window.modules[“548”] = [function(require,module,exports){var assocIndexOf = require(592);

/**
* Sets the list cache key to value.
*
* @private
* @name set
* @memberOf ListCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the list cache instance.
*/
function listCacheSet(key, value) {
var data = this.data,
index = assocIndexOf(data, key);

if (index < 0) {
++this.size;
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}

module.exports = listCacheSet;
}, {“592”:592}];
window.modules[“549”] = [function(require,module,exports){var assocIndexOf = require(592);

/** Used for built-in method references. */
var arrayProto = Array.prototype;

/** Built-in value references. */
var splice = arrayProto.splice;

/**
* Removes key and its value from the list cache.
*
* @private
* @name delete
* @memberOf ListCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns true if the entry was removed, else false.
*/
function listCacheDelete(key) {
var data = this.data,
index = assocIndexOf(data, key);

if (index < 0) {
return false;
}
var lastIndex = data.length – 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
–this.size;
return true;
}

module.exports = listCacheDelete;
}, {“592”:592}];
window.modules[“550”] = [function(require,module,exports){var getNative = require(536),
root = require(537);

/* Built-in method references that are verified to be native. */
var Map = getNative(root, ‘Map’);

module.exports = Map;
}, {“536″:536,”537”:537}];
window.modules[“551”] = [function(require,module,exports){var mapCacheClear = require(556),
mapCacheDelete = require(555),
mapCacheGet = require(553),
mapCacheHas = require(552),
mapCacheSet = require(554);

/**
* Creates a map cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function MapCache(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;

this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}

// Add methods to MapCache.
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype[‘delete’] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;

module.exports = MapCache;
}, {“552″:552,”553″:553,”554″:554,”555″:555,”556”:556}];
window.modules[“552”] = [function(require,module,exports){var getMapData = require(705);

/**
* Checks if a map value for key exists.
*
* @private
* @name has
* @memberOf MapCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns true if an entry for key exists, else false.
*/
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}

module.exports = mapCacheHas;
}, {“705”:705}];
window.modules[“553”] = [function(require,module,exports){var getMapData = require(705);

/**
* Gets the map value for key.
*
* @private
* @name get
* @memberOf MapCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}

module.exports = mapCacheGet;
}, {“705”:705}];
window.modules[“554”] = [function(require,module,exports){var getMapData = require(705);

/**
* Sets the map key to value.
*
* @private
* @name set
* @memberOf MapCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the map cache instance.
*/
function mapCacheSet(key, value) {
var data = getMapData(this, key),
size = data.size;

data.set(key, value);
this.size += data.size == size ? 0 : 1;
return this;
}

module.exports = mapCacheSet;
}, {“705”:705}];
window.modules[“555”] = [function(require,module,exports){var getMapData = require(705);

/**
* Removes key and its value from the map.
*
* @private
* @name delete
* @memberOf MapCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns true if the entry was removed, else false.
*/
function mapCacheDelete(key) {
var result = getMapData(this, key)‘delete’;
this.size -= result ? 1 : 0;
return result;
}

module.exports = mapCacheDelete;
}, {“705”:705}];
window.modules[“556”] = [function(require,module,exports){var Hash = require(538),
ListCache = require(544),
Map = require(550);

/**
* Removes all key-value entries from the map.
*
* @private
* @name clear
* @memberOf MapCache
*/
function mapCacheClear() {
this.size = 0;
this.data = {
‘hash’: new Hash,
‘map’: new (Map || ListCache),
‘string’: new Hash
};
}

module.exports = mapCacheClear;
}, {“538″:538,”544″:544,”550”:550}];
window.modules[“557”] = [function(require,module,exports){var getNative = require(536),
root = require(537);

/* Built-in method references that are verified to be native. */
var Promise = getNative(root, ‘Promise’);

module.exports = Promise;
}, {“536″:536,”537”:537}];
window.modules[“558”] = [function(require,module,exports){var getNative = require(536),
root = require(537);

/* Built-in method references that are verified to be native. */
var Set = getNative(root, ‘Set’);

module.exports = Set;
}, {“536″:536,”537”:537}];
window.modules[“559”] = [function(require,module,exports){var MapCache = require(551),
setCacheAdd = require(561),
setCacheHas = require(560);

/**
*
* Creates an array cache object to store unique values.
*
* @private
* @constructor
* @param {Array} [values] The values to cache.
*/
function SetCache(values) {
var index = -1,
length = values == null ? 0 : values.length;

this.data = new MapCache;
while (++index < length) {
this.add(values[index]);
}
}

// Add methods to SetCache.
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;

module.exports = SetCache;
}, {“551″:551,”560″:560,”561”:561}];
window.modules[“560”] = [function(require,module,exports){/**
* Checks if value is in the array cache.
*
* @private
* @name has
* @memberOf SetCache
* @param {*} value The value to search for.
* @returns {number} Returns true if value is found, else false.
*/
function setCacheHas(value) {
return this.data.has(value);
}

module.exports = setCacheHas;
}, {}];
window.modules[“561”] = [function(require,module,exports){/** Used to stand-in for undefined hash values. */
var HASH_UNDEFINED = ‘lodash_hash_undefined‘;

/**
* Adds value to the array cache.
*
* @private
* @name add
* @memberOf SetCache
* @alias push
* @param {*} value The value to cache.
* @returns {Object} Returns the cache instance.
*/
function setCacheAdd(value) {
this.data.set(value, HASH_UNDEFINED);
return this;
}

module.exports = setCacheAdd;
}, {}];
window.modules[“562”] = [function(require,module,exports){var ListCache = require(544),
stackClear = require(566),
stackDelete = require(564),
stackGet = require(565),
stackHas = require(563),
stackSet = require(567);

/**
* Creates a stack cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Stack(entries) {
var data = this.data = new ListCache(entries);
this.size = data.size;
}

// Add methods to Stack.
Stack.prototype.clear = stackClear;
Stack.prototype[‘delete’] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;

module.exports = Stack;
}, {“544″:544,”563″:563,”564″:564,”565″:565,”566″:566,”567”:567}];
window.modules[“563”] = [function(require,module,exports){/**
* Checks if a stack value for key exists.
*
* @private
* @name has
* @memberOf Stack
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns true if an entry for key exists, else false.
*/
function stackHas(key) {
return this.data.has(key);
}

module.exports = stackHas;
}, {}];
window.modules[“564”] = [function(require,module,exports){/**
* Removes key and its value from the stack.
*
* @private
* @name delete
* @memberOf Stack
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns true if the entry was removed, else false.
*/
function stackDelete(key) {
var data = this.data,
result = data‘delete’;

this.size = data.size;
return result;
}

module.exports = stackDelete;
}, {}];
window.modules[“565”] = [function(require,module,exports){/**
* Gets the stack value for key.
*
* @private
* @name get
* @memberOf Stack
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function stackGet(key) {
return this.data.get(key);
}

module.exports = stackGet;
}, {}];
window.modules[“566”] = [function(require,module,exports){var ListCache = require(544);

/**
* Removes all key-value entries from the stack.
*
* @private
* @name clear
* @memberOf Stack
*/
function stackClear() {
this.data = new ListCache;
this.size = 0;
}

module.exports = stackClear;
}, {“544”:544}];
window.modules[“567”] = [function(require,module,exports){var ListCache = require(544),
Map = require(550),
MapCache = require(551);

/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;

/**
* Sets the stack key to value.
*
* @private
* @name set
* @memberOf Stack
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the stack cache instance.
*/
function stackSet(key, value) {
var data = this.data;
if (data instanceof ListCache) {
var pairs = data.data;
if (!Map || (pairs.length < LARGE_ARRAY_SIZE – 1)) {
pairs.push([key, value]);
this.size = ++data.size;
return this;
}
data = this.data = new MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;
}

module.exports = stackSet;
}, {“544″:544,”550″:550,”551”:551}];
window.modules[“568”] = [function(require,module,exports){var root = require(537);

/** Built-in value references. */
var Symbol = root.Symbol;

module.exports = Symbol;
}, {“537”:537}];
window.modules[“569”] = [function(require,module,exports){var root = require(537);

/** Built-in value references. */
var Uint8Array = root.Uint8Array;

module.exports = Uint8Array;
}, {“537”:537}];
window.modules[“570”] = [function(require,module,exports){var getNative = require(536),
root = require(537);

/* Built-in method references that are verified to be native. */
var WeakMap = getNative(root, ‘WeakMap’);

module.exports = WeakMap;
}, {“536″:536,”537”:537}];
window.modules[“572”] = [function(require,module,exports){/**
* A specialized version of _.forEach for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns array.
*/
function arrayEach(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length;

while (++index < length) {
if (iteratee(array[index], index, array) === false) {
break;
}
}
return array;
}

module.exports = arrayEach;
}, {}];
window.modules[“573”] = [function(require,module,exports){/**
* A specialized version of _.filter for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {Array} Returns the new filtered array.
*/
function arrayFilter(array, predicate) {
var index = -1,
length = array == null ? 0 : array.length,
resIndex = 0,
result = [];

while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result[resIndex++] = value;
}
}
return result;
}

module.exports = arrayFilter;
}, {}];
window.modules[“574”] = [function(require,module,exports){var baseTimes = require(580),
isArguments = require(575),
isArray = require(576),
isBuffer = require(577),
isIndex = require(579),
isTypedArray = require(578);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* Creates an array of the enumerable property names of the array-like value.
*
* @private
* @param {*} value The value to query.
* @param {boolean} inherited Specify returning inherited property names.
* @returns {Array} Returns the array of property names.
*/
function arrayLikeKeys(value, inherited) {
var isArr = isArray(value),
isArg = !isArr && isArguments(value),
isBuff = !isArr && !isArg && isBuffer(value),
isType = !isArr && !isArg && !isBuff && isTypedArray(value),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? baseTimes(value.length, String) : [],
length = result.length;

for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) &&
!(skipIndexes && (
// Safari 9 has enumerable arguments.length in strict mode.
key == ‘length’ ||
// Node.js 0.10 has enumerable non-index properties on buffers.
(isBuff && (key == ‘offset’ || key == ‘parent’)) ||
// PhantomJS 2 has enumerable non-index properties on typed arrays.
(isType && (key == ‘buffer’ || key == ‘byteLength’ || key == ‘byteOffset’)) ||
// Skip index properties.
isIndex(key, length)
))) {
result.push(key);
}
}
return result;
}

module.exports = arrayLikeKeys;
}, {“575″:575,”576″:576,”577″:577,”578″:578,”579″:579,”580”:580}];
window.modules[“575”] = [function(require,module,exports){var baseIsArguments = require(620),
isObjectLike = require(621);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/** Built-in value references. */
var propertyIsEnumerable = objectProto.propertyIsEnumerable;

/**
* Checks if value is likely an arguments object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is an arguments object,
* else false.
* @example
*
* _.isArguments(function() { return arguments; }());
* // => true
*
* _.isArguments([1, 2, 3]);
* // => false
*/
var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty.call(value, ‘callee’) &&
!propertyIsEnumerable.call(value, ‘callee’);
};

module.exports = isArguments;
}, {“620″:620,”621”:621}];
window.modules[“576”] = [function(require,module,exports){/**
* Checks if value is classified as an Array object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is an array, else false.
* @example
*
* _.isArray([1, 2, 3]);
* // => true
*
* _.isArray(document.body.children);
* // => false
*
* _.isArray(‘abc’);
* // => false
*
* _.isArray(_.noop);
* // => false
*/
var isArray = Array.isArray;

module.exports = isArray;
}, {}];
window.modules[“577”] = [function(require,module,exports){var root = require(537),
stubFalse = require(733);

/** Detect free variable exports. */
var freeExports = typeof exports == ‘object’ && exports && !exports.nodeType && exports;

/** Detect free variable module. */
var freeModule = freeExports && typeof module == ‘object’ && module && !module.nodeType && module;

/** Detect the popular CommonJS extension module.exports. */
var moduleExports = freeModule && freeModule.exports === freeExports;

/** Built-in value references. */
var Buffer = moduleExports ? root.Buffer : undefined;

/* Built-in method references for those with the same name as other lodash methods. */
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;

/**
* Checks if value is a buffer.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a buffer, else false.
* @example
*
* _.isBuffer(new Buffer(2));
* // => true
*
* _.isBuffer(new Uint8Array(2));
* // => false
*/
var isBuffer = nativeIsBuffer || stubFalse;

module.exports = isBuffer;
}, {“537″:537,”733”:733}];
window.modules[“578”] = [function(require,module,exports){var baseIsTypedArray = require(633),
baseUnary = require(677),
nodeUtil = require(716);

/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;

/**
* Checks if value is classified as a typed array.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a typed array, else false.
* @example
*
* _.isTypedArray(new Uint8Array);
* // => true
*
* _.isTypedArray([]);
* // => false
*/
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;

module.exports = isTypedArray;
}, {“633″:633,”677″:677,”716”:716}];
window.modules[“579”] = [function(require,module,exports){/** Used as references for various Number constants. */
var MAX_SAFE_INTEGER = 9007199254740991;

/** Used to detect unsigned integer values. /
var reIsUint = /^(?:0|[1-9]d
)$/;

/**
* Checks if value is a valid array-like index.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns true if value is a valid index, else false.
*/
function isIndex(value, length) {
var type = typeof value;
length = length == null ? MAX_SAFE_INTEGER : length;

return !!length &&
(type == ‘number’ ||
(type != ‘symbol’ && reIsUint.test(value))) &&
(value > -1 && value % 1 == 0 && value < length);
}

module.exports = isIndex;
}, {}];
window.modules[“580”] = [function(require,module,exports){/**
* The base implementation of _.times without support for iteratee shorthands
* or max array length checks.
*
* @private
* @param {number} n The number of times to invoke iteratee.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the array of results.
*/
function baseTimes(n, iteratee) {
var index = -1,
result = Array(n);

while (++index < n) {
result[index] = iteratee(index);
}
return result;
}

module.exports = baseTimes;
}, {}];
window.modules[“581”] = [function(require,module,exports){/**
* A specialized version of _.map for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function arrayMap(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length,
result = Array(length);

while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}

module.exports = arrayMap;
}, {}];
window.modules[“582”] = [function(require,module,exports){/**
* Appends the elements of values to array.
*
* @private
* @param {Array} array The array to modify.
* @param {Array} values The values to append.
* @returns {Array} Returns array.
*/
function arrayPush(array, values) {
var index = -1,
length = values.length,
offset = array.length;

while (++index < length) {
array[offset + index] = values[index];
}
return array;
}

module.exports = arrayPush;
}, {}];
window.modules[“585”] = [function(require,module,exports){/**
* A specialized version of _.some for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns true if any element passes the predicate check,
* else false.
*/
function arraySome(array, predicate) {
var index = -1,
length = array == null ? 0 : array.length;

while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}

module.exports = arraySome;
}, {}];
window.modules[“589”] = [function(require,module,exports){/**
* Performs a
* SameValueZero
* comparison between two values to determine if they are equivalent.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {} value The value to compare.
* @param {
} other The other value to compare.
* @returns {boolean} Returns true if the values are equivalent, else false.
* @example
*
* var object = { ‘a’: 1 };
* var other = { ‘a’: 1 };
*
* _.eq(object, object);
* // => true
*
* _.eq(object, other);
* // => false
*
* _.eq(‘a”https://slate.com/human-interest/2020/11/,”a’);
* // => true
*
* _.eq(‘a’, Object(‘a’));
* // => false
*
* _.eq(NaN, NaN);
* // => true
*/
function eq(value, other) {
return value === other || (value !== value && other !== other);
}

module.exports = eq;
}, {}];
window.modules[“590”] = [function(require,module,exports){var defineProperty = require(593);

/**
* The base implementation of assignValue and assignMergeValue without
* value checks.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function baseAssignValue(object, key, value) {
if (key == ‘proto‘ && defineProperty) {
defineProperty(object, key, {
‘configurable’: true,
‘enumerable’: true,
‘value’: value,
‘writable’: true
});
} else {
object[key] = value;
}
}

module.exports = baseAssignValue;
}, {“593”:593}];
window.modules[“591”] = [function(require,module,exports){var baseAssignValue = require(590),
eq = require(589);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* Assigns value to key of object if the existing value is not equivalent
* using SameValueZero
* for equality comparisons.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function assignValue(object, key, value) {
var objValue = object[key];
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
(value === undefined && !(key in object))) {
baseAssignValue(object, key, value);
}
}

module.exports = assignValue;
}, {“589″:589,”590”:590}];
window.modules[“592”] = [function(require,module,exports){var eq = require(589);

/**
* Gets the index at which the key is found in array of key-value pairs.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} key The key to search for.
* @returns {number} Returns the index of the matched value, else -1.
*/
function assocIndexOf(array, key) {
var length = array.length;
while (length–) {
if (eq(array[length][0], key)) {
return length;
}
}
return -1;
}

module.exports = assocIndexOf;
}, {“589”:589}];
window.modules[“593″] = [function(require,module,exports){var getNative = require(536);

var defineProperty = (function() {
try {
var func = getNative(Object, ‘defineProperty’);
func({}, ”, {});
return func;
} catch (e) {}
}());

module.exports = defineProperty;
}, {“536”:536}];
window.modules[“595”] = [function(require,module,exports){/**
* Checks if value is the
* language type
* of Object. (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is an object, else false.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(_.noop);
* // => true
*
* _.isObject(null);
* // => false
*/
function isObject(value) {
var type = typeof value;
return value != null && (type == ‘object’ || type == ‘function’);
}

module.exports = isObject;
}, {}];
window.modules[“596”] = [function(require,module,exports){var baseForOwn = require(598),
createBaseEach = require(597);

/**
* The base implementation of _.forEach without support for iteratee shorthands.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array|Object} Returns collection.
*/
var baseEach = createBaseEach(baseForOwn);

module.exports = baseEach;
}, {“597″:597,”598”:598}];
window.modules[“597”] = [function(require,module,exports){var isArrayLike = require(646);

/**
* Creates a baseEach or baseEachRight function.
*
* @private
* @param {Function} eachFunc The function to iterate over a collection.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new base function.
*/
function createBaseEach(eachFunc, fromRight) {
return function(collection, iteratee) {
if (collection == null) {
return collection;
}
if (!isArrayLike(collection)) {
return eachFunc(collection, iteratee);
}
var length = collection.length,
index = fromRight ? length : -1,
iterable = Object(collection);

while ((fromRight ? index-- : ++index < length)) {
  if (iteratee(iterable[index], index, iterable) === false) {
    break;
  }
}
return collection;

};
}

module.exports = createBaseEach;
}, {“646”:646}];
window.modules[“598”] = [function(require,module,exports){var baseFor = require(604),
keys = require(606);

/**
* The base implementation of _.forOwn without support for iteratee shorthands.
*
* @private
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Object} Returns object.
*/
function baseForOwn(object, iteratee) {
return object && baseFor(object, iteratee, keys);
}

module.exports = baseForOwn;
}, {“604″:604,”606”:606}];
window.modules[“604”] = [function(require,module,exports){var createBaseFor = require(605);

/**
* The base implementation of baseForOwn which iterates over object
* properties returned by keysFunc and invokes iteratee for each property.
* Iteratee functions may exit iteration early by explicitly returning false.
*
* @private
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {Function} keysFunc The function to get the keys of object.
* @returns {Object} Returns object.
*/
var baseFor = createBaseFor();

module.exports = baseFor;
}, {“605”:605}];
window.modules[“605”] = [function(require,module,exports){/**
* Creates a base function for methods like _.forIn and _.forOwn.
*
* @private
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new base function.
*/
function createBaseFor(fromRight) {
return function(object, iteratee, keysFunc) {
var index = -1,
iterable = Object(object),
props = keysFunc(object),
length = props.length;

while (length--) {
  var key = props[fromRight ? length : ++index];
  if (iteratee(iterable[key], key, iterable) === false) {
    break;
  }
}
return object;

};
}

module.exports = createBaseFor;
}, {}];
window.modules[“606”] = [function(require,module,exports){var arrayLikeKeys = require(574),
baseKeys = require(640),
isArrayLike = require(646);

/**
* Creates an array of the own enumerable property names of object.
*
* Note: Non-object values are coerced to objects. See the
* ES spec
* for more details.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keys(new Foo);
* // => [‘a”https://slate.com/human-interest/2020/11/,”b’] (iteration order is not guaranteed)
*
* _.keys(‘hi’);
* // => [‘0″https://slate.com/human-interest/2020/11/,”1’] */
function keys(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}

module.exports = keys;
}, {“574″:574,”640″:640,”646”:646}];
window.modules[“608”] = [function(require,module,exports){var castPath = require(609),
toKey = require(610);

/**
* The base implementation of _.get without support for default values.
*
* @private
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @returns {*} Returns the resolved value.
*/
function baseGet(object, path) {
path = castPath(path, object);

var index = 0,
length = path.length;

while (object != null && index < length) {
object = object[toKey(path[index++])];
}
return (index && index == length) ? object : undefined;
}

module.exports = baseGet;
}, {“609″:609,”610”:610}];
window.modules[“609”] = [function(require,module,exports){var isArray = require(576),
isKey = require(649),
stringToPath = require(682),
toString = require(681);

/**
* Casts value to a path array if it’s not one.
*
* @private
* @param {*} value The value to inspect.
* @param {Object} [object] The object to query keys on.
* @returns {Array} Returns the cast property path array.
*/
function castPath(value, object) {
if (isArray(value)) {
return value;
}
return isKey(value, object) ? [value] : stringToPath(toString(value));
}

module.exports = castPath;
}, {“576″:576,”649″:649,”681″:681,”682”:682}];
window.modules[“610”] = [function(require,module,exports){var isSymbol = require(676);

/** Used as references for various Number constants. */
var INFINITY = 1 / 0;

/**
* Converts value to a string key if it’s not a string or symbol.
*
* @private
* @param {*} value The value to inspect.
* @returns {string|symbol} Returns the key.
*/
function toKey(value) {
if (typeof value == ‘string’ || isSymbol(value)) {
return value;
}
var result = (value + ”);
return (result == ‘0’ && (1 / value) == -INFINITY) ? ‘-0’ : result;
}

module.exports = toKey;
}, {“676”:676}];
window.modules[“611”] = [function(require,module,exports){var arrayPush = require(582),
isArray = require(576);

/**
* The base implementation of getAllKeys and getAllKeysIn which uses
* keysFunc and symbolsFunc to get the enumerable property names and
* symbols of object.
*
* @private
* @param {Object} object The object to query.
* @param {Function} keysFunc The function to get the keys of object.
* @param {Function} symbolsFunc The function to get the symbols of object.
* @returns {Array} Returns the array of property names and symbols.
*/
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
var result = keysFunc(object);
return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
}

module.exports = baseGetAllKeys;
}, {“576″:576,”582”:582}];
window.modules[“612”] = [function(require,module,exports){var Symbol = require(568),
getRawTag = require(614),
objectToString = require(613);

/** Object#toString result references. */
var nullTag = ‘[object Null]’,
undefinedTag = ‘[object Undefined]’;

/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/**
* The base implementation of getTag without fallbacks for buggy environments.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the toStringTag.
*/
function baseGetTag(value) {
if (value == null) {
return value === undefined ? undefinedTag : nullTag;
}
return (symToStringTag && symToStringTag in Object(value))
? getRawTag(value)
: objectToString(value);
}

module.exports = baseGetTag;
}, {“568″:568,”613″:613,”614”:614}];
window.modules[“613”] = [function(require,module,exports){/** Used for built-in method references. */
var objectProto = Object.prototype;

/**
* Used to resolve the
* toStringTag
* of values.
*/
var nativeObjectToString = objectProto.toString;

/**
* Converts value to a string using Object.prototype.toString.
*
* @private
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
*/
function objectToString(value) {
return nativeObjectToString.call(value);
}

module.exports = objectToString;
}, {}];
window.modules[“614”] = [function(require,module,exports){var Symbol = require(568);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* Used to resolve the
* toStringTag
* of values.
*/
var nativeObjectToString = objectProto.toString;

/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/**
* A specialized version of baseGetTag which ignores Symbol.toStringTag values.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the raw toStringTag.
*/
function getRawTag(value) {
var isOwn = hasOwnProperty.call(value, symToStringTag),
tag = value[symToStringTag];

try {
value[symToStringTag] = undefined;
var unmasked = true;
} catch (e) {}

var result = nativeObjectToString.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag] = tag;
} else {
delete value[symToStringTag];
}
}
return result;
}

module.exports = getRawTag;
}, {“568”:568}];
window.modules[“616”] = [function(require,module,exports){/**
* The base implementation of _.hasIn without support for deep paths.
*
* @private
* @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns true if key exists, else false.
*/
function baseHasIn(object, key) {
return object != null && key in Object(object);
}

module.exports = baseHasIn;
}, {}];
window.modules[“620”] = [function(require,module,exports){var baseGetTag = require(612),
isObjectLike = require(621);

/** Object#toString result references. */
var argsTag = ‘[object Arguments]’;

/**
* The base implementation of _.isArguments.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is an arguments object,
*/
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag;
}

module.exports = baseIsArguments;
}, {“612″:612,”621”:621}];
window.modules[“621”] = [function(require,module,exports){/**
* Checks if value is object-like. A value is object-like if it’s not null
* and has a typeof result of “object”.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is object-like, else false.
* @example
*
* _.isObjectLike({});
* // => true
*
* _.isObjectLike([1, 2, 3]);
* // => true
*
* _.isObjectLike(_.noop);
* // => false
*
* _.isObjectLike(null);
* // => false
*/
function isObjectLike(value) {
return value != null && typeof value == ‘object’;
}

module.exports = isObjectLike;
}, {}];
window.modules[“622”] = [function(require,module,exports){var baseIsEqualDeep = require(623),
isObjectLike = require(621);

/**
* The base implementation of _.isEqual which supports partial comparisons
* and tracks traversed objects.
*
* @private
* @param {} value The value to compare.
* @param {
} other The other value to compare.
* @param {boolean} bitmask The bitmask flags.
* 1 – Unordered comparison
* 2 – Partial comparison
* @param {Function} [customizer] The function to customize comparisons.
* @param {Object} [stack] Tracks traversed value and other objects.
* @returns {boolean} Returns true if the values are equivalent, else false.
*/
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}

module.exports = baseIsEqual;
}, {“621″:621,”623”:623}];
window.modules[“623”] = [function(require,module,exports){var Stack = require(562),
equalArrays = require(627),
equalByTag = require(625),
equalObjects = require(626),
getTag = require(624),
isArray = require(576),
isBuffer = require(577),
isTypedArray = require(578);

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1;

/** Object#toString result references. */
var argsTag = ‘[object Arguments]’,
arrayTag = ‘[object Array]’,
objectTag = ‘[object Object]’;

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* A specialized version of baseIsEqual for arrays and objects which performs
* deep comparisons and tracks traversed objects enabling objects with circular
* references to be compared.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {number} bitmask The bitmask flags. See baseIsEqual for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} [stack] Tracks traversed object and other objects.
* @returns {boolean} Returns true if the objects are equivalent, else false.
*/
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray(object),
othIsArr = isArray(other),
objTag = objIsArr ? arrayTag : getTag(object),
othTag = othIsArr ? arrayTag : getTag(other);

objTag = objTag == argsTag ? objectTag : objTag;
othTag = othTag == argsTag ? objectTag : othTag;

var objIsObj = objTag == objectTag,
othIsObj = othTag == objectTag,
isSameTag = objTag == othTag;

if (isSameTag && isBuffer(object)) {
if (!isBuffer(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack);
return (objIsArr || isTypedArray(object))
? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
: equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty.call(object, ‘wrapped‘),
othIsWrapped = othIsObj && hasOwnProperty.call(other, ‘wrapped‘);

if (objIsWrapped || othIsWrapped) {
  var objUnwrapped = objIsWrapped ? object.value() : object,
      othUnwrapped = othIsWrapped ? other.value() : other;

  stack || (stack = new Stack);
  return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}

}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack);
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}

module.exports = baseIsEqualDeep;
}, {“562″:562,”576″:576,”577″:577,”578″:578,”624″:624,”625″:625,”626″:626,”627”:627}];
window.modules[“624”] = [function(require,module,exports){var DataView = require(535),
Map = require(550),
Promise = require(557),
Set = require(558),
WeakMap = require(570),
baseGetTag = require(612),
toSource = require(631);

/** Object#toString result references. */
var mapTag = ‘[object Map]’,
objectTag = ‘[object Object]’,
promiseTag = ‘[object Promise]’,
setTag = ‘[object Set]’,
weakMapTag = ‘[object WeakMap]’;

var dataViewTag = ‘[object DataView]’;

/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = toSource(DataView),
mapCtorString = toSource(Map),
promiseCtorString = toSource(Promise),
setCtorString = toSource(Set),
weakMapCtorString = toSource(WeakMap);

/**
* Gets the toStringTag of value.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the toStringTag.
*/
var getTag = baseGetTag;

// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
(Map && getTag(new Map) != mapTag) ||
(Promise && getTag(Promise.resolve()) != promiseTag) ||
(Set && getTag(new Set) != setTag) ||
(WeakMap && getTag(new WeakMap) != weakMapTag)) {
getTag = function(value) {
var result = baseGetTag(value),
Ctor = result == objectTag ? value.constructor : undefined,
ctorString = Ctor ? toSource(Ctor) : ”;

if (ctorString) {
  switch (ctorString) {
    case dataViewCtorString: return dataViewTag;
    case mapCtorString: return mapTag;
    case promiseCtorString: return promiseTag;
    case setCtorString: return setTag;
    case weakMapCtorString: return weakMapTag;
  }
}
return result;

};
}

module.exports = getTag;
}, {“535″:535,”550″:550,”557″:557,”558″:558,”570″:570,”612″:612,”631”:631}];
window.modules[“625”] = [function(require,module,exports){var Symbol = require(568),
Uint8Array = require(569),
eq = require(589),
equalArrays = require(627),
mapToArray = require(698),
setToArray = require(699);

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
COMPARE_UNORDERED_FLAG = 2;

/** Object#toString result references. */
var boolTag = ‘[object Boolean]’,
dateTag = ‘[object Date]’,
errorTag = ‘[object Error]’,
mapTag = ‘[object Map]’,
numberTag = ‘[object Number]’,
regexpTag = ‘[object RegExp]’,
setTag = ‘[object Set]’,
stringTag = ‘[object String]’,
symbolTag = ‘[object Symbol]’;

var arrayBufferTag = ‘[object ArrayBuffer]’,
dataViewTag = ‘[object DataView]’;

/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;

/**
* A specialized version of baseIsEqualDeep for comparing objects of
* the same toStringTag.
*
* Note: This function only supports comparing values with tags of
* Boolean, Date, Error, Number, RegExp, or String.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {string} tag The toStringTag of the objects to compare.
* @param {number} bitmask The bitmask flags. See baseIsEqual for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed object and other objects.
* @returns {boolean} Returns true if the objects are equivalent, else false.
*/
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if ((object.byteLength != other.byteLength) ||
(object.byteOffset != other.byteOffset)) {
return false;
}
object = object.buffer;
other = other.buffer;

case arrayBufferTag:
  if ((object.byteLength != other.byteLength) ||
      !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
    return false;
  }
  return true;

case boolTag:
case dateTag:
case numberTag:
  // Coerce booleans to `1` or `0` and dates to milliseconds.
  // Invalid dates are coerced to `NaN`.
  return eq(+object, +other);

case errorTag:
  return object.name == other.name && object.message == other.message;

case regexpTag:
case stringTag:
  // Coerce regexes to strings and treat strings, primitives and objects,
  // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
  // for more details.
  return object == (other + '');

case mapTag:
  var convert = mapToArray;

case setTag:
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
  convert || (convert = setToArray);

  if (object.size != other.size && !isPartial) {
    return false;
  }
  // Assume cyclic values are equal.
  var stacked = stack.get(object);
  if (stacked) {
    return stacked == other;
  }
  bitmask |= COMPARE_UNORDERED_FLAG;

  // Recursively compare objects (susceptible to call stack limits).
  stack.set(object, other);
  var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
  stack['delete'](object);
  return result;

case symbolTag:
  if (symbolValueOf) {
    return symbolValueOf.call(object) == symbolValueOf.call(other);
  }

}
return false;
}

module.exports = equalByTag;
}, {“568″:568,”569″:569,”589″:589,”627″:627,”698″:698,”699”:699}];
window.modules[“626”] = [function(require,module,exports){var getAllKeys = require(700);

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1;

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* A specialized version of baseIsEqualDeep for objects with support for
* partial deep comparisons.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {number} bitmask The bitmask flags. See baseIsEqual for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed object and other objects.
* @returns {boolean} Returns true if the objects are equivalent, else false.
*/
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
objProps = getAllKeys(object),
objLength = objProps.length,
othProps = getAllKeys(other),
othLength = othProps.length;

if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index–) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
// Assume cyclic values are equal.
var stacked = stack.get(object);
if (stacked && stack.get(other)) {
return stacked == other;
}
var result = true;
stack.set(object, other);
stack.set(other, object);

var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object[key],
othValue = other[key];

if (customizer) {
  var compared = isPartial
    ? customizer(othValue, objValue, key, other, object, stack)
    : customizer(objValue, othValue, key, object, other, stack);
}
// Recursively compare objects (susceptible to call stack limits).
if (!(compared === undefined
      ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
      : compared
    )) {
  result = false;
  break;
}
skipCtor || (skipCtor = key == 'constructor');

}
if (result && !skipCtor) {
var objCtor = object.constructor,
othCtor = other.constructor;

// Non `Object` object instances with different constructors are not equal.
if (objCtor != othCtor &&
    ('constructor' in object && 'constructor' in other) &&
    !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
      typeof othCtor == 'function' && othCtor instanceof othCtor)) {
  result = false;
}

}
stack‘delete’;
stack‘delete’;
return result;
}

module.exports = equalObjects;
}, {“700”:700}];
window.modules[“627”] = [function(require,module,exports){var SetCache = require(559),
arraySome = require(585),
cacheHas = require(679);

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
COMPARE_UNORDERED_FLAG = 2;

/**
* A specialized version of baseIsEqualDeep for arrays with support for
* partial deep comparisons.
*
* @private
* @param {Array} array The array to compare.
* @param {Array} other The other array to compare.
* @param {number} bitmask The bitmask flags. See baseIsEqual for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed array and other objects.
* @returns {boolean} Returns true if the arrays are equivalent, else false.
*/
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
arrLength = array.length,
othLength = other.length;

if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
// Assume cyclic values are equal.
var stacked = stack.get(array);
if (stacked && stack.get(other)) {
return stacked == other;
}
var index = -1,
result = true,
seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;

stack.set(array, other);
stack.set(other, array);

// Ignore non-index properties.
while (++index < arrLength) {
var arrValue = array[index],
othValue = other[index];

if (customizer) {
  var compared = isPartial
    ? customizer(othValue, arrValue, index, other, array, stack)
    : customizer(arrValue, othValue, index, array, other, stack);
}
if (compared !== undefined) {
  if (compared) {
    continue;
  }
  result = false;
  break;
}
// Recursively compare arrays (susceptible to call stack limits).
if (seen) {
  if (!arraySome(other, function(othValue, othIndex) {
        if (!cacheHas(seen, othIndex) &&
            (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
          return seen.push(othIndex);
        }
      })) {
    result = false;
    break;
  }
} else if (!(
      arrValue === othValue ||
        equalFunc(arrValue, othValue, bitmask, customizer, stack)
    )) {
  result = false;
  break;
}

}
stack‘delete’;
stack‘delete’;
return result;
}

module.exports = equalArrays;
}, {“559″:559,”585″:585,”679”:679}];
window.modules[“628”] = [function(require,module,exports){var Stack = require(562),
baseIsEqual = require(622);

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
COMPARE_UNORDERED_FLAG = 2;

/**
* The base implementation of _.isMatch without support for iteratee shorthands.
*
* @private
* @param {Object} object The object to inspect.
* @param {Object} source The object of property values to match.
* @param {Array} matchData The property names, values, and compare flags to match.
* @param {Function} [customizer] The function to customize comparisons.
* @returns {boolean} Returns true if object is a match, else false.
*/
function baseIsMatch(object, source, matchData, customizer) {
var index = matchData.length,
length = index,
noCustomizer = !customizer;

if (object == null) {
return !length;
}
object = Object(object);
while (index–) {
var data = matchData[index];
if ((noCustomizer && data[2])
? data[1] !== object[data[0]] : !(data[0] in object)
) {
return false;
}
}
while (++index < length) {
data = matchData[index];
var key = data[0],
objValue = object[key],
srcValue = data[1];

if (noCustomizer && data[2]) {
  if (objValue === undefined && !(key in object)) {
    return false;
  }
} else {
  var stack = new Stack;
  if (customizer) {
    var result = customizer(objValue, srcValue, key, object, source, stack);
  }
  if (!(result === undefined
        ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
        : result
      )) {
    return false;
  }
}

}
return true;
}

module.exports = baseIsMatch;
}, {“562″:562,”622”:622}];
window.modules[“629”] = [function(require,module,exports){var isFunction = require(630),
isMasked = require(632),
isObject = require(595),
toSource = require(631);

/**
* Used to match RegExp
* syntax characters.
/
var reRegExpChar = /[\^$.
+?()[]{}|]/g;

/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^[object .+?Constructor]$/;

/** Used for built-in method references. */
var funcProto = Function.prototype,
objectProto = Object.prototype;

/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/** Used to detect if a method is native. /
var reIsNative = RegExp(‘^’ +
funcToString.call(hasOwnProperty).replace(reRegExpChar, ‘\$&’)
.replace(/hasOwnProperty|(function).
?(?=()| for .+?(?=])/g, ‘$1.*?’) + ‘$’
);

/**
* The base implementation of _.isNative without bad shim checks.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a native function,
* else false.
*/
function baseIsNative(value) {
if (!isObject(value) || isMasked(value)) {
return false;
}
var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
return pattern.test(toSource(value));
}

module.exports = baseIsNative;
}, {“595″:595,”630″:630,”631″:631,”632”:632}];
window.modules[“630”] = [function(require,module,exports){var baseGetTag = require(612),
isObject = require(595);

/** Object#toString result references. */
var asyncTag = ‘[object AsyncFunction]’,
funcTag = ‘[object Function]’,
genTag = ‘[object GeneratorFunction]’,
proxyTag = ‘[object Proxy]’;

/**
* Checks if value is classified as a Function object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a function, else false.
* @example
*
* _.isFunction(_);
* // => true
*
* _.isFunction(/abc/);
* // => false
*/
function isFunction(value) {
if (!isObject(value)) {
return false;
}
// The use of Object#toString avoids issues with the typeof operator
// in Safari 9 which returns ‘object’ for typed arrays and other constructors.
var tag = baseGetTag(value);
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}

module.exports = isFunction;
}, {“595″:595,”612”:612}];
window.modules[“631”] = [function(require,module,exports){/** Used for built-in method references. */
var funcProto = Function.prototype;

/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;

/**
* Converts func to its source code.
*
* @private
* @param {Function} func The function to convert.
* @returns {string} Returns the source code.
*/
function toSource(func) {
if (func != null) {
try {
return funcToString.call(func);
} catch (e) {}
try {
return (func + ”);
} catch (e) {}
}
return ”;
}

module.exports = toSource;
}, {}];
window.modules[“632″] = [function(require,module,exports){var coreJsData = require(687);

/** Used to detect methods masquerading as native. */
var maskSrcKey = (function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ”);
return uid ? (‘Symbol(src)_1.’ + uid) : ”;
}());

/**
* Checks if func has its source masked.
*
* @private
* @param {Function} func The function to check.
* @returns {boolean} Returns true if func is masked, else false.
*/
function isMasked(func) {
return !!maskSrcKey && (maskSrcKey in func);
}

module.exports = isMasked;
}, {“687”:687}];
window.modules[“633”] = [function(require,module,exports){var baseGetTag = require(612),
isLength = require(634),
isObjectLike = require(621);

/** Object#toString result references. */
var argsTag = ‘[object Arguments]’,
arrayTag = ‘[object Array]’,
boolTag = ‘[object Boolean]’,
dateTag = ‘[object Date]’,
errorTag = ‘[object Error]’,
funcTag = ‘[object Function]’,
mapTag = ‘[object Map]’,
numberTag = ‘[object Number]’,
objectTag = ‘[object Object]’,
regexpTag = ‘[object RegExp]’,
setTag = ‘[object Set]’,
stringTag = ‘[object String]’,
weakMapTag = ‘[object WeakMap]’;

var arrayBufferTag = ‘[object ArrayBuffer]’,
dataViewTag = ‘[object DataView]’,
float32Tag = ‘[object Float32Array]’,
float64Tag = ‘[object Float64Array]’,
int8Tag = ‘[object Int8Array]’,
int16Tag = ‘[object Int16Array]’,
int32Tag = ‘[object Int32Array]’,
uint8Tag = ‘[object Uint8Array]’,
uint8ClampedTag = ‘[object Uint8ClampedArray]’,
uint16Tag = ‘[object Uint16Array]’,
uint32Tag = ‘[object Uint32Array]’;

/** Used to identify toStringTag values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;

/**
* The base implementation of _.isTypedArray without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a typed array, else false.
*/
function baseIsTypedArray(value) {
return isObjectLike(value) &&
isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}

module.exports = baseIsTypedArray;
}, {“612″:612,”621″:621,”634”:634}];
window.modules[“634”] = [function(require,module,exports){/** Used as references for various Number constants. */
var MAX_SAFE_INTEGER = 9007199254740991;

/**
* Checks if value is a valid array-like length.
*
* Note: This method is loosely based on
* ToLength.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a valid length, else false.
* @example
*
* _.isLength(3);
* // => true
*
* _.isLength(Number.MIN_VALUE);
* // => false
*
* _.isLength(Infinity);
* // => false
*
* _.isLength(‘3’);
* // => false
*/
function isLength(value) {
return typeof value == ‘number’ &&
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}

module.exports = isLength;
}, {}];
window.modules[“635”] = [function(require,module,exports){var baseMatches = require(637),
baseMatchesProperty = require(639),
identity = require(636),
isArray = require(576),
property = require(638);

/**
* The base implementation of _.iteratee.
*
* @private
* @param {*} [value=_.identity] The value to convert to an iteratee.
* @returns {Function} Returns the iteratee.
*/
function baseIteratee(value) {
// Don’t store the typeof result in a variable to avoid a JIT bug in Safari 9.
// See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
if (typeof value == ‘function’) {
return value;
}
if (value == null) {
return identity;
}
if (typeof value == ‘object’) {
return isArray(value)
? baseMatchesProperty(value[0], value[1])
: baseMatches(value);
}
return property(value);
}

module.exports = baseIteratee;
}, {“576″:576,”636″:636,”637″:637,”638″:638,”639”:639}];
window.modules[“636”] = [function(require,module,exports){/**
* This method returns the first argument it receives.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Util
* @param {} value Any value.
* @returns {
} Returns value.
* @example
*
* var object = { ‘a’: 1 };
*
* console.log(_.identity(object) === object);
* // => true
*/
function identity(value) {
return value;
}

module.exports = identity;
}, {}];
window.modules[“637”] = [function(require,module,exports){var baseIsMatch = require(628),
getMatchData = require(648),
matchesStrictComparable = require(647);

/**
* The base implementation of _.matches which doesn’t clone source.
*
* @private
* @param {Object} source The object of property values to match.
* @returns {Function} Returns the new spec function.
*/
function baseMatches(source) {
var matchData = getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object) {
return object === source || baseIsMatch(object, source, matchData);
};
}

module.exports = baseMatches;
}, {“628″:628,”647″:647,”648”:648}];
window.modules[“638”] = [function(require,module,exports){var baseProperty = require(665),
basePropertyDeep = require(666),
isKey = require(649),
toKey = require(610);

/**
* Creates a function that returns the value at path of a given object.
*
* @static
* @memberOf _
* @since 2.4.0
* @category Util
* @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new accessor function.
* @example
*
* var objects = [
* { ‘a’: { ‘b’: 2 } },
* { ‘a’: { ‘b’: 1 } }
* ];
*
* .map(objects, _.property(‘a.b’));
* // => [2, 1] *
* _.map(
.sortBy(objects, _.property([‘a”https://slate.com/human-interest/2020/11/,”b’])), ‘a.b’);
* // => [1, 2] */
function property(path) {
return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}

module.exports = property;
}, {“610″:610,”649″:649,”665″:665,”666”:666}];
window.modules[“639”] = [function(require,module,exports){var baseIsEqual = require(622),
get = require(61),
hasIn = require(651),
isKey = require(649),
isStrictComparable = require(650),
matchesStrictComparable = require(647),
toKey = require(610);

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
COMPARE_UNORDERED_FLAG = 2;

/**
* The base implementation of _.matchesProperty which doesn’t clone srcValue.
*
* @private
* @param {string} path The path of the property to get.
* @param {*} srcValue The value to match.
* @returns {Function} Returns the new spec function.
*/
function baseMatchesProperty(path, srcValue) {
if (isKey(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(toKey(path), srcValue);
}
return function(object) {
var objValue = get(object, path);
return (objValue === undefined && objValue === srcValue)
? hasIn(object, path)
: baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
};
}

module.exports = baseMatchesProperty;
}, {“61″:61,”610″:610,”622″:622,”647″:647,”649″:649,”650″:650,”651”:651}];
window.modules[“640”] = [function(require,module,exports){var isPrototype = require(641),
nativeKeys = require(642);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* The base implementation of _.keys which doesn’t treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeys(object) {
if (!isPrototype(object)) {
return nativeKeys(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty.call(object, key) && key != ‘constructor’) {
result.push(key);
}
}
return result;
}

module.exports = baseKeys;
}, {“641″:641,”642”:642}];
window.modules[“641”] = [function(require,module,exports){/** Used for built-in method references. */
var objectProto = Object.prototype;

/**
* Checks if value is likely a prototype object.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a prototype, else false.
*/
function isPrototype(value) {
var Ctor = value && value.constructor,
proto = (typeof Ctor == ‘function’ && Ctor.prototype) || objectProto;

return value === proto;
}

module.exports = isPrototype;
}, {}];
window.modules[“642”] = [function(require,module,exports){var overArg = require(709);

/* Built-in method references for those with the same name as other lodash methods. */
var nativeKeys = overArg(Object.keys, Object);

module.exports = nativeKeys;
}, {“709”:709}];
window.modules[“643”] = [function(require,module,exports){var isObject = require(595),
isPrototype = require(641),
nativeKeysIn = require(644);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
* The base implementation of _.keysIn which doesn’t treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeysIn(object) {
if (!isObject(object)) {
return nativeKeysIn(object);
}
var isProto = isPrototype(object),
result = [];

for (var key in object) {
if (!(key == ‘constructor’ && (isProto || !hasOwnProperty.call(object, key)))) {
result.push(key);
}
}
return result;
}

module.exports = baseKeysIn;
}, {“595″:595,”641″:641,”644”:644}];
window.modules[“644”] = [function(require,module,exports){/**
* This function is like
* Object.keys
* except that it includes inherited enumerable properties.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function nativeKeysIn(object) {
var result = [];
if (object != null) {
for (var key in Object(object)) {
result.push(key);
}
}
return result;
}

module.exports = nativeKeysIn;
}, {}];
window.modules[“646”] = [function(require,module,exports){var isFunction = require(630),
isLength = require(634);

/**
* Checks if value is array-like. A value is considered array-like if it’s
* not a function and has a value.length that’s an integer greater than or
* equal to 0 and less than or equal to Number.MAX_SAFE_INTEGER.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is array-like, else false.
* @example
*
* _.isArrayLike([1, 2, 3]);
* // => true
*
* _.isArrayLike(document.body.children);
* // => true
*
* _.isArrayLike(‘abc’);
* // => true
*
* _.isArrayLike(_.noop);
* // => false
*/
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}

module.exports = isArrayLike;
}, {“630″:630,”634”:634}];
window.modules[“647”] = [function(require,module,exports){/**
* A specialized version of matchesProperty for source values suitable
* for strict equality comparisons, i.e. ===.
*
* @private
* @param {string} key The key of the property to get.
* @param {*} srcValue The value to match.
* @returns {Function} Returns the new spec function.
*/
function matchesStrictComparable(key, srcValue) {
return function(object) {
if (object == null) {
return false;
}
return object[key] === srcValue &&
(srcValue !== undefined || (key in Object(object)));
};
}

module.exports = matchesStrictComparable;
}, {}];
window.modules[“648”] = [function(require,module,exports){var isStrictComparable = require(650),
keys = require(606);

/**
* Gets the property names, values, and compare flags of object.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the match data of object.
*/
function getMatchData(object) {
var result = keys(object),
length = result.length;

while (length–) {
var key = result[length],
value = object[key];

result[length] = [key, value, isStrictComparable(value)];

}
return result;
}

module.exports = getMatchData;
}, {“606″:606,”650”:650}];
window.modules[“649”] = [function(require,module,exports){var isArray = require(576),
isSymbol = require(676);

/** Used to match property names within property paths. /
var reIsDeepProp = /.|[(?:[^[]]
|([“‘])(?:(?!1)[^]|.)?1)]/,
reIsPlainProp = /^w
$/;

/**
* Checks if value is a property name and not a property path.
*
* @private
* @param {*} value The value to check.
* @param {Object} [object] The object to query keys on.
* @returns {boolean} Returns true if value is a property name, else false.
*/
function isKey(value, object) {
if (isArray(value)) {
return false;
}
var type = typeof value;
if (type == ‘number’ || type == ‘symbol’ || type == ‘boolean’ ||
value == null || isSymbol(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
(object != null && value in Object(object));
}

module.exports = isKey;
}, {“576″:576,”676”:676}];
window.modules[“650”] = [function(require,module,exports){var isObject = require(595);

/**
* Checks if value is suitable for strict equality comparisons, i.e. ===.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns true if value if suitable for strict
* equality comparisons, else false.
*/
function isStrictComparable(value) {
return value === value && !isObject(value);
}

module.exports = isStrictComparable;
}, {“595”:595}];
window.modules[“651”] = [function(require,module,exports){var baseHasIn = require(616),
hasPath = require(711);

/**
* Checks if path is a direct or inherited property of object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @returns {boolean} Returns true if path exists, else false.
* @example
*
* var object = _.create({ ‘a’: _.create({ ‘b’: 2 }) });
*
* _.hasIn(object, ‘a’);
* // => true
*
* _.hasIn(object, ‘a.b’);
* // => true
*
* _.hasIn(object, [‘a”https://slate.com/human-interest/2020/11/,”b’]);
* // => true
*
* _.hasIn(object, ‘b’);
* // => false
*/
function hasIn(object, path) {
return object != null && hasPath(object, path, baseHasIn);
}

module.exports = hasIn;
}, {“616″:616,”711”:711}];
window.modules[“653”] = [function(require,module,exports){var arrayLikeKeys = require(574),
baseKeysIn = require(643),
isArrayLike = require(646);

/**
* Creates an array of the own and inherited enumerable property names of object.
*
* Note: Non-object values are coerced to objects.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keysIn(new Foo);
* // => [‘a”https://slate.com/human-interest/2020/11/,”b”https://slate.com/human-interest/2020/11/,”c’] (iteration order is not guaranteed)
*/
function keysIn(object) {
return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
}

module.exports = keysIn;
}, {“574″:574,”643″:643,”646”:646}];
window.modules[“663”] = [function(require,module,exports){var baseGet = require(608),
baseSet = require(664),
castPath = require(609);

/**
* The base implementation of _.pickBy without support for iteratee shorthands.
*
* @private
* @param {Object} object The source object.
* @param {string[]} paths The property paths to pick.
* @param {Function} predicate The function invoked per property.
* @returns {Object} Returns the new object.
*/
function basePickBy(object, paths, predicate) {
var index = -1,
length = paths.length,
result = {};

while (++index < length) {
var path = paths[index],
value = baseGet(object, path);

if (predicate(value, path)) {
  baseSet(result, castPath(path, object), value);
}

}
return result;
}

module.exports = basePickBy;
}, {“608″:608,”609″:609,”664”:664}];
window.modules[“664”] = [function(require,module,exports){var assignValue = require(591),
castPath = require(609),
isIndex = require(579),
isObject = require(595),
toKey = require(610);

/**
* The base implementation of _.set.
*
* @private
* @param {Object} object The object to modify.
* @param {Array|string} path The path of the property to set.
* @param {*} value The value to set.
* @param {Function} [customizer] The function to customize path creation.
* @returns {Object} Returns object.
*/
function baseSet(object, path, value, customizer) {
if (!isObject(object)) {
return object;
}
path = castPath(path, object);

var index = -1,
length = path.length,
lastIndex = length – 1,
nested = object;

while (nested != null && ++index < length) {
var key = toKey(path[index]),
newValue = value;

if (index != lastIndex) {
  var objValue = nested[key];
  newValue = customizer ? customizer(objValue, key, nested) : undefined;
  if (newValue === undefined) {
    newValue = isObject(objValue)
      ? objValue
      : (isIndex(path[index + 1]) ? [] : {});
  }
}
assignValue(nested, key, newValue);
nested = nested[key];

}
return object;
}

module.exports = baseSet;
}, {“579″:579,”591″:591,”595″:595,”609″:609,”610”:610}];
window.modules[“665”] = [function(require,module,exports){/**
* The base implementation of _.property without support for deep paths.
*
* @private
* @param {string} key The key of the property to get.
* @returns {Function} Returns the new accessor function.
*/
function baseProperty(key) {
return function(object) {
return object == null ? undefined : object[key];
};
}

module.exports = baseProperty;
}, {}];
window.modules[“666”] = [function(require,module,exports){var baseGet = require(608);

/**
* A specialized version of baseProperty which supports deep paths.
*
* @private
* @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new accessor function.
*/
function basePropertyDeep(path) {
return function(object) {
return baseGet(object, path);
};
}

module.exports = basePropertyDeep;
}, {“608”:608}];
window.modules[“675”] = [function(require,module,exports){var Symbol = require(568),
arrayMap = require(581),
isArray = require(576),
isSymbol = require(676);

/** Used as references for various Number constants. */
var INFINITY = 1 / 0;

/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
symbolToString = symbolProto ? symbolProto.toString : undefined;

/**
* The base implementation of _.toString which doesn’t convert nullish
* values to empty strings.
*
* @private
* @param {*} value The value to process.
* @returns {string} Returns the string.
*/
function baseToString(value) {
// Exit early for strings to avoid a performance hit in some environments.
if (typeof value == ‘string’) {
return value;
}
if (isArray(value)) {
// Recursively convert values (susceptible to call stack limits).
return arrayMap(value, baseToString) + ”;
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : ”;
}
var result = (value + ”);
return (result == ‘0’ && (1 / value) == -INFINITY) ? ‘-0’ : result;
}

module.exports = baseToString;
}, {“568″:568,”576″:576,”581″:581,”676”:676}];
window.modules[“676”] = [function(require,module,exports){var baseGetTag = require(612),
isObjectLike = require(621);

/** Object#toString result references. */
var symbolTag = ‘[object Symbol]’;

/**
* Checks if value is classified as a Symbol primitive or object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is a symbol, else false.
* @example
*
* _.isSymbol(Symbol.iterator);
* // => true
*
* _.isSymbol(‘abc’);
* // => false
*/
function isSymbol(value) {
return typeof value == ‘symbol’ ||
(isObjectLike(value) && baseGetTag(value) == symbolTag);
}

module.exports = isSymbol;
}, {“612″:612,”621”:621}];
window.modules[“677”] = [function(require,module,exports){/**
* The base implementation of _.unary without support for storing metadata.
*
* @private
* @param {Function} func The function to cap arguments for.
* @returns {Function} Returns the new capped function.
*/
function baseUnary(func) {
return function(value) {
return func(value);
};
}

module.exports = baseUnary;
}, {}];
window.modules[“679”] = [function(require,module,exports){/**
* Checks if a cache value for key exists.
*
* @private
* @param {Object} cache The cache to query.
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns true if an entry for key exists, else false.
*/
function cacheHas(cache, key) {
return cache.has(key);
}

module.exports = cacheHas;
}, {}];
window.modules[“680”] = [function(require,module,exports){var identity = require(636);

/**
* Casts value to identity if it’s not a function.
*
* @private
* @param {*} value The value to inspect.
* @returns {Function} Returns cast function.
*/
function castFunction(value) {
return typeof value == ‘function’ ? value : identity;
}

module.exports = castFunction;
}, {“636”:636}];
window.modules[“681”] = [function(require,module,exports){var baseToString = require(675);

/**
* Converts value to a string. An empty string is returned for null
* and undefined values. The sign of -0 is preserved.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
* @example
*
* _.toString(null);
* // => ”
*
* _.toString(-0);
* // => ‘-0’
*
* _.toString([1, 2, 3]);
* // => ‘1,2,3’
*/
function toString(value) {
return value == null ? ” : baseToString(value);
}

module.exports = toString;
}, {“675”:675}];
window.modules[“682”] = [function(require,module,exports){var memoizeCapped = require(714);

/** Used to match property names within property paths. /
var rePropName = /[^.[]]+|[(?:(-?d+(?:.d+)?)|([“‘])((?:(?!2)[^]|.)
?)2)]|(?=(?:.|[])(?:.|[]|$))/g;

/** Used to match backslashes in property paths. */
var reEscapeChar = /()?/g;

/**
* Converts string to a property path array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the property path array.
/
var stringToPath = memoizeCapped(function(string) {
var result = [];
if (string.charCodeAt(0) === 46 /
. */) {
result.push(”);
}
string.replace(rePropName, function(match, number, quote, subString) {
result.push(quote ? subString.replace(reEscapeChar, ‘$1’) : (number || match));
});
return result;
});

module.exports = stringToPath;
}, {“714”:714}];
window.modules[“687”] = [function(require,module,exports){var root = require(537);

/** Used to detect overreaching core-js shims. */
var coreJsData = root[‘core-js_shared‘];

module.exports = coreJsData;
}, {“537”:537}];
window.modules[“698”] = [function(require,module,exports){/**
* Converts map to its key-value pairs.
*
* @private
* @param {Object} map The map to convert.
* @returns {Array} Returns the key-value pairs.
*/
function mapToArray(map) {
var index = -1,
result = Array(map.size);

map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}

module.exports = mapToArray;
}, {}];
window.modules[“699”] = [function(require,module,exports){/**
* Converts set to an array of its values.
*
* @private
* @param {Object} set The set to convert.
* @returns {Array} Returns the values.
*/
function setToArray(set) {
var index = -1,
result = Array(set.size);

set.forEach(function(value) {
result[++index] = value;
});
return result;
}

module.exports = setToArray;
}, {}];
window.modules[“700”] = [function(require,module,exports){var baseGetAllKeys = require(611),
getSymbols = require(702),
keys = require(606);

/**
* Creates an array of own enumerable property names and symbols of object.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names and symbols.
*/
function getAllKeys(object) {
return baseGetAllKeys(object, keys, getSymbols);
}

module.exports = getAllKeys;
}, {“606″:606,”611″:611,”702”:702}];
window.modules[“701”] = [function(require,module,exports){(function (global){
/** Detect free variable global from Node.js. */
var freeGlobal = typeof global == ‘object’ && global && global.Object === Object && global;

module.exports = freeGlobal;

}).call(this,typeof global !== “undefined” ? global : typeof self !== “undefined” ? self : typeof window !== “undefined” ? window : {})}, {}];
window.modules[“702”] = [function(require,module,exports){var arrayFilter = require(573),
stubArray = require(710);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Built-in value references. */
var propertyIsEnumerable = objectProto.propertyIsEnumerable;

/* Built-in method references for those with the same name as other lodash methods. */
var nativeGetSymbols = Object.getOwnPropertySymbols;

/**
* Creates an array of the own enumerable symbols of object.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of symbols.
*/
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
if (object == null) {
return [];
}
object = Object(object);
return arrayFilter(nativeGetSymbols(object), function(symbol) {
return propertyIsEnumerable.call(object, symbol);
});
};

module.exports = getSymbols;
}, {“573″:573,”710”:710}];
window.modules[“703”] = [function(require,module,exports){var baseGetAllKeys = require(611),
getSymbolsIn = require(704),
keysIn = require(653);

/**
* Creates an array of own and inherited enumerable property names and
* symbols of object.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names and symbols.
*/
function getAllKeysIn(object) {
return baseGetAllKeys(object, keysIn, getSymbolsIn);
}

module.exports = getAllKeysIn;
}, {“611″:611,”653″:653,”704”:704}];
window.modules[“704”] = [function(require,module,exports){var arrayPush = require(582),
getPrototype = require(708),
getSymbols = require(702),
stubArray = require(710);

/* Built-in method references for those with the same name as other lodash methods. */
var nativeGetSymbols = Object.getOwnPropertySymbols;

/**
* Creates an array of the own and inherited enumerable symbols of object.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of symbols.
*/
var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
var result = [];
while (object) {
arrayPush(result, getSymbols(object));
object = getPrototype(object);
}
return result;
};

module.exports = getSymbolsIn;
}, {“582″:582,”702″:702,”708″:708,”710”:710}];
window.modules[“705”] = [function(require,module,exports){var isKeyable = require(706);

/**
* Gets the data for map.
*
* @private
* @param {Object} map The map to query.
* @param {string} key The reference key.
* @returns {*} Returns the map data.
*/
function getMapData(map, key) {
var data = map.data;
return isKeyable(key)
? data[typeof key == ‘string’ ? ‘string’ : ‘hash’] : data.map;
}

module.exports = getMapData;
}, {“706”:706}];
window.modules[“706”] = [function(require,module,exports){/**
* Checks if value is suitable for use as unique object key.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns true if value is suitable, else false.
*/
function isKeyable(value) {
var type = typeof value;
return (type == ‘string’ || type == ‘number’ || type == ‘symbol’ || type == ‘boolean’)
? (value !== ‘proto‘)
: (value === null);
}

module.exports = isKeyable;
}, {}];
window.modules[“707”] = [function(require,module,exports){/**
* Gets the value at key of object.
*
* @private
* @param {Object} [object] The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function getValue(object, key) {
return object == null ? undefined : object[key];
}

module.exports = getValue;
}, {}];
window.modules[“708”] = [function(require,module,exports){var overArg = require(709);

/** Built-in value references. */
var getPrototype = overArg(Object.getPrototypeOf, Object);

module.exports = getPrototype;
}, {“709”:709}];
window.modules[“709”] = [function(require,module,exports){/**
* Creates a unary function that invokes func with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}

module.exports = overArg;
}, {}];
window.modules[“710”] = [function(require,module,exports){/**
* This method returns a new empty array.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {Array} Returns the new empty array.
* @example
*
* var arrays = _.times(2, _.stubArray);
*
* console.log(arrays);
* // => [[], []] *
* console.log(arrays[0] === arrays[1]);
* // => false
*/
function stubArray() {
return [];
}

module.exports = stubArray;
}, {}];
window.modules[“711”] = [function(require,module,exports){var castPath = require(609),
isArguments = require(575),
isArray = require(576),
isIndex = require(579),
isLength = require(634),
toKey = require(610);

/**
* Checks if path exists on object.
*
* @private
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @param {Function} hasFunc The function to check properties.
* @returns {boolean} Returns true if path exists, else false.
*/
function hasPath(object, path, hasFunc) {
path = castPath(path, object);

var index = -1,
length = path.length,
result = false;

while (++index < length) {
var key = toKey(path[index]);
if (!(result = object != null && hasFunc(object, key))) {
break;
}
object = object[key];
}
if (result || ++index != length) {
return result;
}
length = object == null ? 0 : object.length;
return !!length && isLength(length) && isIndex(key, length) &&
(isArray(object) || isArguments(object));
}

module.exports = hasPath;
}, {“575″:575,”576″:576,”579″:579,”609″:609,”610″:610,”634”:634}];
window.modules[“713”] = [function(require,module,exports){var getNative = require(536);

/* Built-in method references that are verified to be native. */
var nativeCreate = getNative(Object, ‘create’);

module.exports = nativeCreate;
}, {“536”:536}];
window.modules[“714”] = [function(require,module,exports){var memoize = require(715);

/** Used as the maximum memoize cache size. */
var MAX_MEMOIZE_SIZE = 500;

/**
* A specialized version of _.memoize which clears the memoized function’s
* cache when it exceeds MAX_MEMOIZE_SIZE.
*
* @private
* @param {Function} func The function to have its output memoized.
* @returns {Function} Returns the new memoized function.
*/
function memoizeCapped(func) {
var result = memoize(func, function(key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
return key;
});

var cache = result.cache;
return result;
}

module.exports = memoizeCapped;
}, {“715”:715}];
window.modules[“715”] = [function(require,module,exports){var MapCache = require(551);

/** Error message constants. */
var FUNC_ERROR_TEXT = ‘Expected a function’;

/**
* Creates a function that memoizes the result of func. If resolver is
* provided, it determines the cache key for storing the result based on the
* arguments provided to the memoized function. By default, the first argument
* provided to the memoized function is used as the map cache key. The func
* is invoked with the this binding of the memoized function.
*
* Note: The cache is exposed as the cache property on the memoized
* function. Its creation may be customized by replacing the _.memoize.Cache
* constructor with one whose instances implement the
* Map
* method interface of clear, delete, get, has, and set.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to have its output memoized.
* @param {Function} [resolver] The function to resolve the cache key.
* @returns {Function} Returns the new memoized function.
* @example
*
* var object = { ‘a’: 1, ‘b’: 2 };
* var other = { ‘c’: 3, ‘d’: 4 };
*
* var values = .memoize(.values);
* values(object);
* // => [1, 2] *
* values(other);
* // => [3, 4] *
* object.a = 2;
* values(object);
* // => [1, 2] *
* // Modify the result cache.
* values.cache.set(object, [‘a”https://slate.com/human-interest/2020/11/,”b’]);
* values(object);
* // => [‘a”https://slate.com/human-interest/2020/11/,”b’] *
* // Replace _.memoize.Cache.
* _.memoize.Cache = WeakMap;
*/
function memoize(func, resolver) {
if (typeof func != ‘function’ || (resolver != null && typeof resolver != ‘function’)) {
throw new TypeError(FUNC_ERROR_TEXT);
}
var memoized = function() {
var args = arguments,
key = resolver ? resolver.apply(this, args) : args[0],
cache = memoized.cache;

if (cache.has(key)) {
  return cache.get(key);
}
var result = func.apply(this, args);
memoized.cache = cache.set(key, result) || cache;
return result;

};
memoized.cache = new (memoize.Cache || MapCache);
return memoized;
}

// Expose MapCache.
memoize.Cache = MapCache;

module.exports = memoize;
}, {“551”:551}];
window.modules[“716”] = [function(require,module,exports){var freeGlobal = require(701);

/** Detect free variable exports. */
var freeExports = typeof exports == ‘object’ && exports && !exports.nodeType && exports;

/** Detect free variable module. */
var freeModule = freeExports && typeof module == ‘object’ && module && !module.nodeType && module;

/** Detect the popular CommonJS extension module.exports. */
var moduleExports = freeModule && freeModule.exports === freeExports;

/** Detect free variable process from Node.js. */
var freeProcess = moduleExports && freeGlobal.process;

/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
try {
// Use util.types for Node.js 10+.
var types = freeModule && freeModule.require && freeModule.require(‘util’).types;

if (types) {
  return types;
}

// Legacy `process.binding('util')` for Node.js < 10.
return freeProcess && freeProcess.binding && freeProcess.binding('util');

} catch (e) {}
}());

module.exports = nodeUtil;
}, {“701”:701}];
window.modules[“720”] = [function(require,module,exports){var toInteger = require(721);

/** Error message constants. */
var FUNC_ERROR_TEXT = ‘Expected a function’;

/**
* Creates a function that invokes func, with the this binding and arguments
* of the created function, while it’s called less than n times. Subsequent
* calls to the created function return the result of the last func invocation.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Function
* @param {number} n The number of calls at which func is no longer invoked.
* @param {Function} func The function to restrict.
* @returns {Function} Returns the new restricted function.
* @example
*
* jQuery(element).on(‘click’, _.before(5, addContactToList));
* // => Allows adding up to 4 contacts to the list.
*/
function before(n, func) {
var result;
if (typeof func != ‘function’) {
throw new TypeError(FUNC_ERROR_TEXT);
}
n = toInteger(n);
return function() {
if (–n > 0) {
result = func.apply(this, arguments);
}
if (n <= 1) {
func = undefined;
}
return result;
};
}

module.exports = before;
}, {“721”:721}];
window.modules[“721”] = [function(require,module,exports){var toFinite = require(742);

/**
* Converts value to an integer.
*
* Note: This method is loosely based on
* ToInteger.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {number} Returns the converted integer.
* @example
*
* _.toInteger(3.2);
* // => 3
*
* _.toInteger(Number.MIN_VALUE);
* // => 0
*
* _.toInteger(Infinity);
* // => 1.7976931348623157e+308
*
* _.toInteger(‘3.2’);
* // => 3
*/
function toInteger(value) {
var result = toFinite(value),
remainder = result % 1;

return result === result ? (remainder ? result – remainder : result) : 0;
}

module.exports = toInteger;
}, {“742”:742}];
window.modules[“722”] = [function(require,module,exports){var isObject = require(595),
isSymbol = require(676);

/** Used as references for various Number constants. */
var NAN = 0 / 0;

/** Used to match leading and trailing whitespace. */
var reTrim = /^s+|s+$/g;

/** Used to detect bad signed hexadecimal string values. */
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;

/** Used to detect binary string values. */
var reIsBinary = /^0b[01]+$/i;

/** Used to detect octal string values. */
var reIsOctal = /^0o[0-7]+$/i;

/** Built-in method references without a dependency on root. */
var freeParseInt = parseInt;

/**
* Converts value to a number.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to process.
* @returns {number} Returns the number.
* @example
*
* _.toNumber(3.2);
* // => 3.2
*
* _.toNumber(Number.MIN_VALUE);
* // => 5e-324
*
* _.toNumber(Infinity);
* // => Infinity
*
* _.toNumber(‘3.2’);
* // => 3.2
*/
function toNumber(value) {
if (typeof value == ‘number’) {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject(value)) {
var other = typeof value.valueOf == ‘function’ ? value.valueOf() : value;
value = isObject(other) ? (other + ”) : other;
}
if (typeof value != ‘string’) {
return value === 0 ? value : +value;
}
value = value.replace(reTrim, ”);
var isBinary = reIsBinary.test(value);
return (isBinary || reIsOctal.test(value))
? freeParseInt(value.slice(2), isBinary ? 2 : 8)
: (reIsBadHex.test(value) ? NAN : +value);
}

module.exports = toNumber;
}, {“595″:595,”676”:676}];
window.modules[“723”] = [function(require,module,exports){var root = require(537);

/**
* Gets the timestamp of the number of milliseconds that have elapsed since
* the Unix epoch (1 January 1970 00:00:00 UTC).
*
* @static
* @memberOf _
* @since 2.4.0
* @category Date
* @returns {number} Returns the timestamp.
* @example
*
* .defer(function(stamp) {
* console.log(
.now() – stamp);
* }, _.now());
* // => Logs the number of milliseconds it took for the deferred invocation.
*/
var now = function() {
return root.Date.now();
};

module.exports = now;
}, {“537”:537}];
window.modules[“725”] = [function(require,module,exports){var arrayEach = require(572),
baseEach = require(596),
castFunction = require(680),
isArray = require(576);

/**
* Iterates over elements of collection and invokes iteratee for each element.
* The iteratee is invoked with three arguments: (value, index|key, collection).
* Iteratee functions may exit iteration early by explicitly returning false.
*
* Note: As with other “Collections” methods, objects with a “length”
* property are iterated like arrays. To avoid this behavior use _.forIn
* or _.forOwn for object iteration.
*
* @static
* @memberOf _
* @since 0.1.0
* @alias each
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array|Object} Returns collection.
* @see _.forEachRight
* @example
*
* _.forEach([1, 2], function(value) {
* console.log(value);
* });
* // => Logs 1 then 2.
*
* _.forEach({ ‘a’: 1, ‘b’: 2 }, function(value, key) {
* console.log(key);
* });
* // => Logs ‘a’ then ‘b’ (iteration order is not guaranteed).
*/
function forEach(collection, iteratee) {
var func = isArray(collection) ? arrayEach : baseEach;
return func(collection, castFunction(iteratee));
}

module.exports = forEach;
}, {“572″:572,”576″:576,”596″:596,”680”:680}];
window.modules[“733”] = [function(require,module,exports){/**
* This method returns false.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {boolean} Returns false.
* @example
*
* _.times(2, _.stubFalse);
* // => [false, false] */
function stubFalse() {
return false;
}

module.exports = stubFalse;
}, {}];
window.modules[“742”] = [function(require,module,exports){var toNumber = require(722);

/** Used as references for various Number constants. */
var INFINITY = 1 / 0,
MAX_INTEGER = 1.7976931348623157e+308;

/**
* Converts value to a finite number.
*
* @static
* @memberOf _
* @since 4.12.0
* @category Lang
* @param {*} value The value to convert.
* @returns {number} Returns the converted number.
* @example
*
* _.toFinite(3.2);
* // => 3.2
*
* _.toFinite(Number.MIN_VALUE);
* // => 5e-324
*
* _.toFinite(Infinity);
* // => 1.7976931348623157e+308
*
* _.toFinite(‘3.2’);
* // => 3.2
*/
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber(value);
if (value === INFINITY || value === -INFINITY) {
var sign = (value < 0 ? -1 : 1);
return sign * MAX_INTEGER;
}
return value === value ? value : 0;
}

module.exports = toFinite;
}, {“722”:722}];
window.modules[“slate-ad.client”] = [function(require,module,exports){“use strict”;

var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
DS.controller(“slate-ad”, [“adService”https://slate.com/human-interest/2020/11/,”$visibility”https://slate.com/human-interest/2020/11/,”headerBidding”https://slate.com/human-interest/2020/11/,”adsPlus”, function (adService, $visibility, headerBidding) {
var Ad = function Ad(el) {
var ad = adService.createAd(el);

if (isSponsored() || isBouncex(ad) || isPodcastTextAd(ad)) {
  // if there is a homepage sponsorhip today or
  // this is an bouncex ad
  // request ad now instead of lazy loading
  requestAdNow(ad, el);
} else {
  // in all other cases ads
  // are lazy loaded
  lazyLoadAd(ad, el);
}

};

function isBouncex(ad) {
return ad.type === “non-standard”;
}

function isPodcastTextAd(ad) {
return ad.type === “podcast-headline”;
}

function requestAdNow(ad, el) {
if ($visibility.isElementNotHidden(el)) {
window.googletag.cmd.push(function () {
adService.requestAd(ad);
});
}
}

function lazyLoadAd(ad, el) {
var visible = new $visibility.Visible(el, {
preloadThreshhold: 400
});
visible.on(“preload”, function () {
if ($visibility.isElementNotHidden(el)) {
if (ad.prebid) {
// run header bidding first then request ad from dfp
headerBidding.prebid(ad);
} else {
// request ads from DFP without header bidding
window.googletag.cmd.push(function () {
adService.requestAd(ad);
});
}
}
});
}

function isSponsored() {
var hpSponsorship = document.querySelector(“.homepage-sponsorship”);
isSponsored = false;

if (hpSponsorship) {
  var sponsorshipStart = hpSponsorship.getAttribute("data-sponsorship-start"),
      currentTime = new Date().getTime(),
      oneDayInMs = 24 * 60 * 60 * 1000,
      isSponsored = currentTime > sponsorshipStart && currentTime - sponsorshipStart < oneDayInMs;
}

return isSponsored;

}

return Ad;
}]);
DS.service(“adsPlus”, [“$window”, function ($window) {
var membership = require(3),
isMember = membership.isMember();

if (isMember) {
$window.googletag.cmd.push(function () {
$window.googletag.pubads().setTargeting(“segs”https://slate.com/human-interest/2020/11/,”plus”);
});
}
}]);
}, {“3”:3}];
window.modules[“slate-paywall.client”] = [function(require,module,exports){“use strict”;

var cookies = require(43);

var slateAmplitude = require(2);

var membership = require(3);

var _require = require(29),
toUrl = _require.toUrl;

module.exports = function (el) {
// Bail if the flag is off
if (!JSON.parse(el.dataset.isActive)) {
return;
}

document.addEventListener(“articleLoaded”, function (event) {
checkPaywall(el, event.detail);
}); // Warning close button

var closeButton = el.querySelector(“.slate-paywall__close-button”);
closeButton.addEventListener(“click”, function () {
el.classList.add(“slate-paywall–hidden”);
});
};
/**
* Check whether to show paywall/warning/roadblock
* @param {HTMLElement} el
* @param {Object} articlePaywallData
* @returns {void}
*/

function checkPaywall(el, articlePaywallData) {
var isRoadblockVisible = articlePaywallData.isRoadblockVisible,
paywallDisabled = articlePaywallData.paywallDisabled,
rubric = articlePaywallData.rubric; // We never show the warning or the paywall if the roadblock is on the page

if (isRoadblockVisible) {
el.parentElement.classList.add(“roadblock-visible”);
firePaywallComplete(true);
return;
}

var maxMpv = JSON.parse(el.dataset.maxMpv);
var mpv = cookies.getJSON(“mpv”) ? cookies.getJSON(“mpv”).pv : 1; // Account for if a user has deleted their cookies

var excludedContent = JSON.parse(el.dataset.excludedContent);
var pageTags = [];

try {
pageTags = slateAmplitude.getDomEventData().tags;
} catch (e) {
console.warn(“unable to get page tags”, e);
}

var isSplus = membership.isMember();
var hasExcludedContent = checkExcludedContent(excludedContent, {
pageTags: pageTags,
rubric: rubric
}); // Basic conditions needed to show a paywall or warning
// prettier-ignore

var commonConditions = [maxMpv !== -1, // A page view limit exists
!isSplus, // Is not a Slate Plus user
!isRoadblockVisible // No roadblock present
];

if (commonConditions.every(Boolean)) {
// Show the paywall
var paywallConditions = mpv >= maxMpv && !hasExcludedContent && !paywallDisabled;

if (paywallConditions) {
  enablePaywall(el);
  firePaywallComplete(true);
  return;
} // Show the warning


var warningConditions = maxMpv - mpv <= 5 && mpv < maxMpv;
if (warningConditions) enableWarning(el);

}

firePaywallComplete();
}
/**
* Event to fire for Taboola when the paywall check has finished
* @param {Boolean} isSplus
* @param {Boolean} isPaywalledOrRoadblocked
* @returns {void}
*/

function firePaywallComplete() {
var isPaywalledOrRoadblocked = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var paywallComplete = new CustomEvent(“paywallComplete”, {
detail: {
isPaywalled: isPaywalledOrRoadblocked,
isMember: membership.isMember(),
isLoggedIn: membership.isLoggedIn()
}
});
document.dispatchEvent(paywallComplete);
}
/**
* Toggle the warning, update its links, and fire the Amplitude event
* @param {HTMLElement} el
*/

function enableWarning(el) {
el.parentElement.classList.add(“warning-eligible”);
var buttonLinkEl = el.querySelector(“.slate-paywall__content–warning .slate-paywall__button”); // Button link

buttonLinkEl.href = buildWarningButtonLink(el);
sendWarningAmplitude(buttonLinkEl);
}
/**
* Toggle the paywall, update its links, and fire the Amplitude event
* @param {HTMLElement} el
*/

function enablePaywall(el) {
el.parentElement.classList.add(“paywall-eligible”);
var buttonLinkEl = el.querySelector(“.slate-paywall__content–paywall .slate-paywall__button”); // Button link

buttonLinkEl.href = buildPaywallButtonLink(el);
sendPaywallAmplitude(buttonLinkEl);
}
/**
* Check if the page contains any content that exempts it from the paywall
* @param {Object} excludedContent
* @param {Array} pageContent
* @returns {Boolean}
*/

function checkExcludedContent(excludedContent, _ref) {
var rubric = _ref.rubric,
pageTags = _ref.pageTags;
var hasExcludedTags = checkExcludedTags(excludedContent.tags, pageTags);
var hasExcludedRubric = excludedContent.rubrics.includes(rubric);
return hasExcludedTags || hasExcludedRubric;
}
/**
* Check if the page contains paywall-exempted tags
* @param {Array} excludedTags
* @param {Array} pageTags
* @returns {Boolean}
*/

function checkExcludedTags(excludedTags, pageTags) {
return pageTags.some(function (tag) {
return excludedTags.includes(tag);
});
}
/**
* Add params to the paywall button URL
* @param {HTMLElement} el
*/

function buildPaywallButtonLink(el) {
var buttonLink = el.querySelector(“.slate-paywall__button”).href;
var headlineEl = el.querySelector(“.article__hed”);
var params = {
redirect_uri: window.location.href,
utm_medium: “paywall”,
utm_campaign: “plus100”,
utm_source: “article”,
via: “paywall”
};
if (headlineEl) params.utm_content = firstTwoWords(headlineEl.textContent);
return toUrl(buttonLink, params).href;
}

function buildWarningButtonLink(el) {
var buttonLink = el.querySelector(“.slate-paywall__button”).href;
var params = {
utm_medium: “link”,
utm_campaign: “plus”,
utm_content: “meter_warning”,
utm_source: “sticky_banner”
};
return toUrl(buttonLink, params);
}
/**
* Paywall amplitude tracking events
* @param {HTMLElement} buttonLinkEl
*/

function sendPaywallAmplitude(buttonLinkEl) {
window.slateAmplitudeQueue.push(function () {
slateAmplitude.trackAfterPageview(“MeterWallShown”, {
value: true
});
});
buttonLinkEl.addEventListener(“click”, function () {
slateAmplitude.track(“Click Paywall CTA”);
});
}
/**
* Warning amplitude tracking events
* @param {HTMLElement} buttonLinkEl
*/

function sendWarningAmplitude(buttonLinkEl) {
window.slateAmplitudeQueue.push(function () {
slateAmplitude.trackAfterPageview(“MeterWarningShown”, {
value: true
});
});
buttonLinkEl.addEventListener(“click”, function () {
slateAmplitude.track(“Click Meter Warning CTA”);
});
}
/**
* Get the first two words of a string and join them with an underscore
* ie. “Foo Bar Baz” => “Foo_Bar”
* @param {String} str
* @returns {String}
*/

function firstTwoWords() {
var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : “”;
return str.split(” “).slice(0, 2).join(“_”);
}
}, {“2″:2,”3″:3,”29″:29,”43”:43}];
window.modules[“analytics-js-loader.client”] = [function(require,module,exports){“use strict”;

module.exports = function (el) {
if (el.dataset.disableClientJs !== undefined) return; // prettier-ignore

(function (e, t) {
var n = e.amplitude || {
_q: [],
_iq: {}
};
var r = t.createElement(“script”);
r.type = “text/javascript”;
r.integrity = “sha384-t5vT47el2d0e6uQ1h75P9Lbzo8by6pbk+Rg41Gm4xuTGR+eDLpbWslKUtZMDe9Bj”;
r.crossOrigin = “anonymous”;
r.defer = true;
r.src = “https://cdn.amplitude.com/libs/amplitude-5.6.0-min.gz.js”;

r.onload = function () {
  if (!e.amplitude.runQueuedFunctions) {
    console.log("[Amplitude] Error: could not load SDK");
  }
};

var i = t.getElementsByTagName("script")[0];
i.parentNode.insertBefore(r, i);

function s(e, t) {
  e.prototype[t] = function () {
    this._q.push([t].concat(Array.prototype.slice.call(arguments, 0)));

    return this;
  };
}

var o = function o() {
  this._q = [];
  return this;
};

var a = ["add"https://slate.com/human-interest/2020/11/,"append"https://slate.com/human-interest/2020/11/,"clearAll"https://slate.com/human-interest/2020/11/,"prepend"https://slate.com/human-interest/2020/11/,"set"https://slate.com/human-interest/2020/11/,"setOnce"https://slate.com/human-interest/2020/11/,"unset"];

for (var u = 0; u < a.length; u++) {
  s(o, a[u]);
}

n.Identify = o;

var c = function c() {
  this._q = [];
  return this;
};

var l = ["setProductId"https://slate.com/human-interest/2020/11/,"setQuantity"https://slate.com/human-interest/2020/11/,"setPrice"https://slate.com/human-interest/2020/11/,"setRevenueType"https://slate.com/human-interest/2020/11/,"setEventProperties"];

for (var p = 0; p < l.length; p++) {
  s(c, l[p]);
}

n.Revenue = c;
var d = ["init"https://slate.com/human-interest/2020/11/,"logEvent"https://slate.com/human-interest/2020/11/,"logRevenue"https://slate.com/human-interest/2020/11/,"setUserId"https://slate.com/human-interest/2020/11/,"setUserProperties"https://slate.com/human-interest/2020/11/,"setOptOut"https://slate.com/human-interest/2020/11/,"setVersionName"https://slate.com/human-interest/2020/11/,"setDomain"https://slate.com/human-interest/2020/11/,"setDeviceId"https://slate.com/human-interest/2020/11/,"setGlobalUserProperties"https://slate.com/human-interest/2020/11/,"identify"https://slate.com/human-interest/2020/11/,"clearUserProperties"https://slate.com/human-interest/2020/11/,"setGroup"https://slate.com/human-interest/2020/11/,"logRevenueV2"https://slate.com/human-interest/2020/11/,"regenerateDeviceId"https://slate.com/human-interest/2020/11/,"groupIdentify"https://slate.com/human-interest/2020/11/,"onInit"https://slate.com/human-interest/2020/11/,"logEventWithTimestamp"https://slate.com/human-interest/2020/11/,"logEventWithGroups"https://slate.com/human-interest/2020/11/,"setSessionId"https://slate.com/human-interest/2020/11/,"resetSessionId"];

function v(e) {
  function t(t) {
    e[t] = function () {
      e._q.push([t].concat(Array.prototype.slice.call(arguments, 0)));
    };
  }

  for (var n = 0; n < d.length; n++) {
    t(d[n]);
  }
}

v(n);

n.getInstance = function (e) {
  e = (!e || e.length === 0 ? "$default_instance" : e).toLowerCase();

  if (!n._iq.hasOwnProperty(e)) {
    n._iq[e] = {
      _q: []
    };
    v(n._iq[e]);
  }

  return n._iq[e];
};

e.amplitude = n;

})(window, document); // Register amplitude

window.nonIabVendorApi.registerVendor(“amplitude”, {
categories: [“C0002”],
initFunc: function initFunc(consent) {
window.amplitude.getInstance().init(el.dataset.amplitudeApiKey, null, {
includeUtm: true,
includeReferrer: true,
includeGclid: true,
logLevel: el.dataset.amplitudeLogLevel,
saveParamsReferrerOncePerSession: false,
domain: el.dataset.amplitudeDomain
}, function (instance) {
window.slateAmplitudeQueue.init(instance, consent);
});
return true;
},
updateConsentFunc: function updateConsentFunc(consent) {
window.slateAmplitudeQueue.push(function (instance) {
instance.setOptOut(!consent);
});
}
});
window.nonIabVendorApi.registerVendor(“parsely”, {
categories: [“C0002”],
initFunc: function initFunc(consent) {
if (!consent) return false;

  if (window.PARSELY) {
    delete window.PARSELY;
  }

  var elem = document.createElement("script");
  elem.id = "parsely-cfg";
  elem["data-parsely-site"] = "slate.com";
  elem.src = el.dataset.parselyScriptSrc;
  elem.defer = true;
  var scpt = document.getElementsByTagName("script")[0];
  scpt.parentNode.insertBefore(elem, scpt);
  return true;
},
updateConsentFunc: function updateConsentFunc(consent) {
  if (!consent) if (window.PARSELY) {
    window.PARSELY = Function.prototype; // noop
  }
}

});
window.nonIabVendorApi.registerVendor(“fbPixel”, {
categories: [“C0002″https://slate.com/human-interest/2020/11/,”C0003″https://slate.com/human-interest/2020/11/,”C0004”],
initFunc: function initFunc(consent) {
if (!consent) return false; // prettier-ignore

  !function (f, b, e, v, n, t, s) {
    if (f.fbq) return;

    n = f.fbq = function () {
      n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);
    };

    if (!f._fbq) f._fbq = n;
    n.push = n;
    n.loaded = !0;
    n.version = '2.0';
    n.queue = [];
    t = b.createElement(e);
    t.async = !0;
    t.src = v;
    s = b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t, s);
  }(window, document, 'script"https://slate.com/human-interest/2020/11/,"https://connect.facebook.net/en_US/fbevents.js');
  fbq("consent"https://slate.com/human-interest/2020/11/,"grant");
  fbq("set"https://slate.com/human-interest/2020/11/,"autoConfig", false, "166975463695820");
  fbq("init"https://slate.com/human-interest/2020/11/,"166975463695820");
  fbq("track"https://slate.com/human-interest/2020/11/,"PageView");
  return true;
},
updateConsentFunc: function updateConsentFunc(consent) {
  if (window.fbq) {
    fbq("consent", consent && "grant" || "revoke");
  }
}

});
};
}, {}];
window.modules[“slate-ad-aps.client”] = [function(require,module,exports){“use strict”;

try {
window.__uspapi(“getUSPData”, 1, function (uspData, success) {
var params = {
si_section: getApsSection()
};

if (success) {
  params["us_privacy"] = uspData.uspString;
}

window.slateCMP.TCF.ready.then(function () {
  window.apstag && window.apstag.init({
    pubID: "3075",
    adServer: "googletag",
    params: params,
    gdpr: {
      cmpTimeout: 200
    }
  });
});

});
} catch (e) {
console.warn(“__uspapi failed”, e);
}

function getApsSection() {
var adNodeElement = document.querySelector(“div[data-adnode]”),
adNode = “”;

if (adNodeElement) {
adNode = adNodeElement.getAttribute(“data-adnode”);
}

return adNode.replace(“/”https://slate.com/human-interest/2020/11/,” “).replace(/_/g, ” “);
}
}, {}];
window.modules[“piano-mount.client”] = [function(require,module,exports){“use strict”;

// append resize script only once!
var script = document.createElement(“script”);
script.src = “/piano/scripts/resize.js”;
document.head.appendChild(script);

var _debounce = require(41);

var allowedOrigins = [“https://sandbox.tinypass.com”https://slate.com/human-interest/2020/11/,”https://id.tinypass.com”https://slate.com/human-interest/2020/11/,”https://buy.tinypass.com”];

function eventAllowed(event) {
return allowedOrigins.indexOf(event.origin) !== -1 && event.data.slate;
}

function waitForPiano(el) {
var loadingClass = “piano-mount–loading”;
var errorClass = “piano-mount–error”;
el.classList.add(loadingClass);

var handleMessage = function handleMessage(e) {
if (eventAllowed(e)) stopWaiting();
}; // unveil the content after a reasonable delay between our own messages,
// piano sends a slew of events like “loaded”https://slate.com/human-interest/2020/11/,”layoutReady” etc. etc..
// but they are inconsistent across screens/views so, not reliable.

var stopWaiting = _debounce(function () {
el.classList.remove(loadingClass, errorClass);
window.removeEventListener(“message”, handleMessage);
clearTimeout(errorTimeout);
}, 200);

window.addEventListener(“message”, handleMessage); // in my experience, piano routinely takes over 20s on decent 3G to finish, after 1.5x the expected delay, suggest there might be an error

var errorTimeout = setTimeout(function () {
el.classList.remove(loadingClass);
el.classList.add(errorClass);
}, 30000); // todo: adjust this value based on connection type when Network Information API becomes standard
}

module.exports = function (el) {
waitForPiano(el);
};
}, {“41”:41}];
window.modules[“masthead.client”] = [function(require,module,exports){“use strict”;

var membership = require(3);

var dropdown = require(28);

module.exports = function (el) {
// highlight the appropriate section
var sectionLinks = el.querySelectorAll(“.sections__link”);

for (var i = 0; i < sectionLinks.length; ++i) {
var sectionLink = sectionLinks[i];

if (location.pathname.indexOf(sectionLink.getAttribute("href")) !== -1) {
  sectionLink.classList.add("sections__link--current");
}

}

var selectors = getVisibleSelectors();

for (var _i = 0; _i < selectors.length; _i++) {
var selector = “.js-account–“.concat(selectors[_i]);
document.querySelectorAll(selector).forEach(function (el) {
return el.hidden = false;
});
}

el.querySelectorAll(“.js-toggle-menu”).forEach(function (el) {
el.addEventListener(“click”, toggleMenu);
});
el.querySelectorAll(“.js-redirect-return”).forEach(function (el) {
el.addEventListener(“click”, addRedirectParam);
});
dropdown(el);
};

var menu;

function toggleMenu(e) {
menu = menu || e.target.closest(“.menu”);
menu.classList.toggle(“menu–open”);
document.documentElement.classList.toggle(“menu-open”, menu.classList.contains(“menu–open”));
}

function addRedirectParam(e) {
var url = new URL(e.currentTarget.href);
url.searchParams.set(“redirect_uri”, location.href);
e.currentTarget.href = url.toString();
}

function getVisibleSelectors() {
// Keys represent different states, strings in the arrays are the suffixes of CSS classes associated with the elements that are visible in those states. The full class names look like “js-account–subscribe,” “js-account–profile,” etc.
var stateMap = {
signedOut: [“mobile-subscribe”https://slate.com/human-interest/2020/11/,”sign-in”https://slate.com/human-interest/2020/11/,”subscribe”],
signedIn: [“mobile-subscribe”https://slate.com/human-interest/2020/11/,”profile”https://slate.com/human-interest/2020/11/,”sign-out”https://slate.com/human-interest/2020/11/,”subscribe”],
member: [“mobile-profile”https://slate.com/human-interest/2020/11/,”profile”https://slate.com/human-interest/2020/11/,”sign-out”https://slate.com/human-interest/2020/11/,”slate-plus”] };
var state;

if (membership.isMember()) {
state = “member”;
} else if (membership.isLoggedIn()) {
state = “signedIn”;
} else {
state = “signedOut”;
}

return stateMap[state];
}
}, {“3″:3,”28”:28}];
window.modules[“article.client”] = [function(require,module,exports){“use strict”;

module.exports = function (el) {
// For slate-paywall component
var articleLoaded = new CustomEvent(“articleLoaded”, {
detail: {
isRoadblockVisible: JSON.parse(el.dataset.hasRoadblock),
paywallDisabled: JSON.parse(el.dataset.paywallDisabled),
rubric: el.dataset.rubric
}
});
document.dispatchEvent(articleLoaded);
};
}, {}];
window.modules[“slate-parsely.client”] = [function(require,module,exports){“use strict”;

DS.controller(“slate-parsely”, [function () {
“use strict”;

function Constructor(el) {
return;
}

Constructor.prototype = {
events: {
click: “handler”
},
handler: function handler(e) {
console.log(e.target);
}
};
return Constructor;
}]);
}, {}];
window.modules[“slate-analytics-js.client”] = [function(require,module,exports){“use strict”;

/* globals DS: false, Scroll: false, amplitude: false */

/* eslint no-console: [“error”, { allow: [“warn”https://slate.com/human-interest/2020/11/,”error”] }] */
DS.controller(“slate-analytics-js”, [“via”https://slate.com/human-interest/2020/11/,”_once”https://slate.com/human-interest/2020/11/,”_throttle”https://slate.com/human-interest/2020/11/,”Cookies”, function (via, _once, _throttle, Cookies) {
var slateAmplitude = require(2),
slatePermutive = require(39),
_require = require(3),
getLoginId = _require.getLoginId,
_require2 = require(1),
isAbEnabled = _require2.isAbEnabled,
_require3 = require(48),
isValidAbTestString = _require3.isValidAbTestString;

var _require4 = require(49),
getMpvCookie = _require4.getMpvCookie,
updateMpvValue = _require4.updateMpvValue,
setMpvCookie = _require4.setMpvCookie;

var loginId = getLoginId();

function castAsAmplitudeBool(boolValue) {
return boolValue && “TRUE” || “FALSE”;
}
/**
* window._taboola starts as an empty array
*
* if it is undefined, that means that it was never in the HTML,
* so was taken out by the splus or scroll html renderer filters.
*
* if it exists at all, then the view was taboola eligible.
*
* we count taboolaLoaded based on the .registered property
* of window._taboola property
*/

function isTaboolaLoaded() {
return isTaboolaEligible() && window._taboola.registered !== undefined;
}

function isTaboolaEligible() {
return window._taboola !== undefined;
}

var getAffiliateLinks = _once(function () {
var affiliateLinks = [];
var nodeList = document.body.querySelectorAll( // not a perfect test of the apex domain, we’ll verify just below
‘a[href*=”amazon”]’); // todo: use Array.from to simplify this a bit, when we drop support for IE

for (var i = 0; i < nodeList.length; i++) {
  var a = nodeList[i]; // double-check that "amazon" is in the domain, and it's not internal to a product component

  if (new URL(a.href).host.indexOf("amazon") !== -1 && !a.matches(".product a")) {
    affiliateLinks.push(a);
  }
}

return affiliateLinks;

});

function trackAffiliateLinks() {
getAffiliateLinks().forEach(function (a) {
a.addEventListener(“click”, function (e) {
slateAmplitude.track(“Click – Affiliate Link”);
});
});
}

function getUserMembershipType() {
var membership = require(3),
isMember = membership.isMember();

if (isMember) {
  return membership.getMembershipType();
}

}

function isVisitStart() {
try {
if (!window.sessionStorage.getItem(“visitstarted”)) {
window.sessionStorage.setItem(“visitstarted”https://slate.com/human-interest/2020/11/,”1”);
return true;
}

  return false;
} catch (e) {
  console.error(e);
}

}
/**
*
* Given the ” + e + “</” + g + “>”;
}

var o,
    a = n(15),
    c = n(117),
    u = n(84),
    s = n(53),
    d = n(120),
    f = n(73),
    l = n(65),
    p = "prototype",
    g = "script",
    b = l("IE_PROTO"),
    _v = function v() {
  try {
    o = document.domain && new ActiveXObject("htmlfile");
  } catch (e) {}

  var e, t;
  _v = o ? function (e) {
    e.write(i("")), e.close();
    var t = e.parentWindow.Object;
    return e = null, t;
  }(o) : ((t = f("iframe")).style.display = "none", d.appendChild(t), t.src = String("javascript:"), (e = t.contentWindow.document).open(), e.write(i("document.F=Object")), e.close(), e.F);

  for (var n = u.length; n--;) {
    delete _v[p][u[n]];
  }

  return _v();
};

s[b] = !0, e.exports = Object.create || function (e, t) {
  var n;
  return null !== e ? (r[p] = a(e), n = new r(), r[p] = null, n[b] = e) : n = _v(), void 0 === t ? n : c(n, t);
};

},
84: function _(e, t) {
e.exports = [“constructor”https://slate.com/human-interest/2020/11/,”hasOwnProperty”https://slate.com/human-interest/2020/11/,”isPrototypeOf”https://slate.com/human-interest/2020/11/,”propertyIsEnumerable”https://slate.com/human-interest/2020/11/,”toLocaleString”https://slate.com/human-interest/2020/11/,”toString”https://slate.com/human-interest/2020/11/,”valueOf”];
},
85: function _(e, t, n) {
var i = n(32);

e.exports = function (e, t, n, r) {
  r && r.enumerable ? e[t] = n : i(e, t, n);
};

},
86: function _(e, t, n) {
“use strict”;

var r,
    i,
    o,
    a = n(87),
    c = n(32),
    u = n(27),
    s = n(20),
    d = n(16),
    f = s("iterator"),
    l = !1;
[].keys && ("next" in (o = [].keys()) ? (i = a(a(o))) !== Object.prototype && (r = i) : l = !0), null == r && (r = {}), d || u(r, f) || c(r, f, function () {
  return this;
}), e.exports = {
  IteratorPrototype: r,
  BUGGY_SAFARI_ITERATORS: l
};

},
87: function _(e, t, n) {
var r = n(27),
i = n(57),
o = n(65),
a = n(123),
c = o(“IE_PROTO”),
u = Object.prototype;
e.exports = a ? Object.getPrototypeOf : function (e) {
return e = i(e), r(e, c) ? e[c] : “function” == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? u : null;
};
},
88: function _(e, t, n) {
“use strict”;

var i = n(128).charAt,
    r = n(54),
    o = n(66),
    a = "String Iterator",
    c = r.set,
    u = r.getterFor(a);
o(String, "String", function (e) {
  c(this, {
    type: a,
    string: String(e),
    index: 0
  });
}, function () {
  var e,
      t = u(this),
      n = t.string,
      r = t.index;
  return r >= n.length ? {
    value: void 0,
    done: !0
  } : (e = i(n, r), t.index += e.length, {
    value: e,
    done: !1
  });
});

},
89: function _(e, t, n) {
var r = n(15),
i = n(61);

e.exports = function (e) {
  var t = i(e);
  if ("function" != typeof t) throw TypeError(String(e) + " is not iterable");
  return r(t.call(e));
};

},
9: function _(e, t, n) {
“use strict”;

Object.defineProperty(t, "__esModule", {
  value: !0
}), n.d(t, "gdprDataHandler", function () {
  return R;
}), n.d(t, "uspDataHandler", function () {
  return k;
}), t.setS2STestingModule = function (e) {
  I = e;
};
var S = n(0),
    p = n(92),
    g = n(37),
    l = n(1),
    h = n(4),
    A = n(3),
    r = n(13),
    i = n(12),
    E = n.n(i),
    o = n(10),
    O = n.n(o),
    b = n(67),
    T = n(21);

function m(e, t) {
  return function (e) {
    if (Array.isArray(e)) return e;
  }(e) || function (e, t) {
    if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
    var n = [],
        r = !0,
        i = !1,
        o = void 0;

    try {
      for (var a, c = e[Symbol.iterator](); !(r = (a = c.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0) {
        ;
      }
    } catch (e) {
      i = !0, o = e;
    } finally {
      try {
        r || null == c.return || c.return();
      } finally {
        if (i) throw o;
      }
    }

    return n;
  }(e, t) || function (e, t) {
    if (!e) return;
    if ("string" == typeof e) return a(e, t);
    var n = Object.prototype.toString.call(e).slice(8, -1);
    "Object" === n && e.constructor && (n = e.constructor.name);
    if ("Map" === n || "Set" === n) return Array.from(e);
    if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return a(e, t);
  }(e, t) || function () {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }();
}

function a(e, t) {
  (null == t || t > e.length) && (t = e.length);

  for (var n = 0, r = new Array(t); n < t; n++) {
    r[n] = e[n];
  }

  return r;
}

function v() {
  return (v = Object.assign || function (e) {
    for (var t = 1; t < arguments.length; t++) {
      var n = arguments[t];

      for (var r in n) {
        Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);
      }
    }

    return e;
  }).apply(this, arguments);
}

var I,
    C = n(0),
    j = n(5),
    w = n(8),
    y = {},
    _ = y.bidderRegistry = {},
    B = y.aliasRegistry = {},
    U = {};

A.b.getConfig("s2sConfig", function (e) {
  U = e.s2sConfig;
});
var c = {};
var x = Object(r.b)("sync", function (e) {
  var i = e.bidderCode,
      s = e.auctionId,
      d = e.bidderRequestId,
      t = e.adUnits,
      f = e.labels,
      l = e.src;
  return t.reduce(function (e, c) {
    var t = Object(p.b)(Object(p.a)(c, f), c.mediaTypes, c.sizes),
        n = t.active,
        u = t.mediaTypes,
        r = t.filterResults;
    return n ? r && C.logInfo('Size mapping filtered adUnit "'.concat(c.code, '" banner sizes from '), r.before, "to ", r.after) : C.logInfo('Size mapping disabled adUnit "'.concat(c.code, '"')), n && e.push(c.bids.filter(function (e) {
      return e.bidder === i;
    }).reduce(function (e, t) {
      var n = c.nativeParams || C.deepAccess(c, "mediaTypes.native");
      n && (t = v({}, t, {
        nativeParams: Object(g.g)(n)
      })), t = v({}, t, Object(S.getDefinedParams)(c, ["fpd"https://slate.com/human-interest/2020/11/,"mediaType"https://slate.com/human-interest/2020/11/,"renderer"https://slate.com/human-interest/2020/11/,"storedAuctionResponse"]));
      var r = Object(p.b)(Object(p.a)(t, f), u),
          i = r.active,
          o = r.mediaTypes,
          a = r.filterResults;
      return i ? a && C.logInfo('Size mapping filtered adUnit "'.concat(c.code, '" bidder "').concat(t.bidder, '" banner sizes from '), a.before, "to ", a.after) : C.logInfo('Size mapping deactivated adUnit "'.concat(c.code, '" bidder "').concat(t.bidder, '"')), C.isValidMediaTypes(o) ? t = v({}, t, {
        mediaTypes: o
      }) : C.logError("mediaTypes is not correctly configured for adunit ".concat(c.code)), i && e.push(v({}, t, {
        adUnitCode: c.code,
        transactionId: c.transactionId,
        sizes: C.deepAccess(o, "banner.sizes") || C.deepAccess(o, "video.playerSize") || [],
        bidId: t.bid_id || C.getUniqueIdentifierStr(),
        bidderRequestId: d,
        auctionId: s,
        src: l,
        bidRequestsCount: b.a.getRequestsCounter(c.code),
        bidderRequestsCount: b.a.getBidderRequestsCounter(c.code, t.bidder),
        bidderWinsCount: b.a.getBidderWinsCounter(c.code, t.bidder)
      })), e;
    }, [])), e;
  }, []).reduce(S.flatten, []).filter(function (e) {
    return "" !== e;
  });
}, "getBids");
var R = {
  consentData: null,
  setConsentData: function setConsentData(e) {
    R.consentData = e;
  },
  getConsentData: function getConsentData() {
    return R.consentData;
  }
},
    k = {
  consentData: null,
  setConsentData: function setConsentData(e) {
    k.consentData = e;
  },
  getConsentData: function getConsentData() {
    return k.consentData;
  }
};

function D() {
  return U && U.enabled && U.testing && I;
}

function u(t, n, e) {
  try {
    var r = _[t].getSpec();

    r && r[n] && "function" == typeof r[n] && (C.logInfo("Invoking ".concat(t, ".").concat(n)), A.b.runWithBidder(t, S.bind.call(r[n], r, e)));
  } catch (e) {
    C.logWarn("Error calling ".concat(n, " of ").concat(t));
  }
}

y.makeBidRequests = Object(r.b)("sync", function (e, i, o, a, c) {
  w.emit(j.EVENTS.BEFORE_REQUEST_BIDS, e);
  var u = [],
      t = Object(S.getBidderCodes)(e);
  A.b.getConfig("bidderSequence") === A.a && (t = Object(S.shuffle)(t));
  var n,
      r,
      s,
      d,
      f,
      l,
      p,
      g = Object(T.a)(),
      b = t,
      v = [];
  U.enabled && (D() && (v = I.getSourceBidderMap(e)[I.CLIENT]), n = U.bidders, b = t.filter(function (e) {
    return !E()(n, e) || E()(v, e);
  }), Boolean(D() && U.testServerOnly) && (p = e, Boolean(O()(p, function (e) {
    return O()(e.bids, function (e) {
      return (e.bidSource || U.bidderControl && U.bidderControl[e.bidder]) && e.finalSource === I.SERVER;
    });
  }))) && (b.length = 0), d = e, f = U.bidders, (l = C.deepClone(d)).forEach(function (e) {
    e.bids = e.bids.filter(function (e) {
      return E()(f, e.bidder) && (!D() || e.finalSource !== I.CLIENT);
    }).map(function (e) {
      return e.bid_id = C.getUniqueIdentifierStr(), e;
    });
  }), r = l = l.filter(function (e) {
    return 0 !== e.bids.length;
  }), s = C.generateUUID(), n.forEach(function (e) {
    var t = C.getUniqueIdentifierStr(),
        n = {
      bidderCode: e,
      auctionId: o,
      bidderRequestId: t,
      tid: s,
      bids: x({
        bidderCode: e,
        auctionId: o,
        bidderRequestId: t,
        adUnits: C.deepClone(r),
        labels: c,
        src: j.S2S.SRC
      }),
      auctionStart: i,
      timeout: U.timeout,
      src: j.S2S.SRC,
      refererInfo: g
    };
    0 !== n.bids.length && u.push(n);
  }), r.forEach(function (e) {
    var t = e.bids.filter(function (t) {
      return O()(u, function (e) {
        return O()(e.bids, function (e) {
          return e.bidId === t.bid_id;
        });
      });
    });
    e.bids = t;
  }), u.forEach(function (e) {
    e.adUnitsS2SCopy = r.filter(function (e) {
      return 0 < e.bids.length;
    });
  }));
  var y,
      h,
      m = (y = e, (h = C.deepClone(y)).forEach(function (e) {
    e.bids = e.bids.filter(function (e) {
      return !D() || e.finalSource !== I.SERVER;
    });
  }), h = h.filter(function (e) {
    return 0 !== e.bids.length;
  }));
  return b.forEach(function (e) {
    var t = C.getUniqueIdentifierStr(),
        n = {
      bidderCode: e,
      auctionId: o,
      bidderRequestId: t,
      bids: x({
        bidderCode: e,
        auctionId: o,
        bidderRequestId: t,
        adUnits: C.deepClone(m),
        labels: c,
        src: "client"
      }),
      auctionStart: i,
      timeout: a,
      refererInfo: g
    },
        r = _[e];
    r || C.logError("Trying to make a request for bidder that does not exist: ".concat(e)), r && n.bids && 0 !== n.bids.length && u.push(n);
  }), R.getConsentData() && u.forEach(function (e) {
    e.gdprConsent = R.getConsentData();
  }), k.getConsentData() && u.forEach(function (e) {
    e.uspConsent = k.getConsentData();
  }), u;
}, "makeBidRequests"), y.callBids = function (e, t, i, o, a, c, u) {
  var n, r, s, d, f, l, p, g, b, v, y;
  t.length ? (r = (n = m(t.reduce(function (e, t) {
    return e[Number(void 0 !== t.src && t.src === j.S2S.SRC)].push(t), e;
  }, [[], []]), 2))[0], (s = n[1]).length && (d = Object(h.b)(c, a ? {
    request: a.request.bind(null, "s2s"),
    done: a.done
  } : void 0), f = U.bidders, l = _[U.adapter], p = s[0].tid, g = s[0].adUnitsS2SCopy, l ? (b = {
    tid: p,
    ad_units: g
  }).ad_units.length && (v = s.map(function (e) {
    return e.start = Object(S.timestamp)(), o.bind(e);
  }), y = b.ad_units.reduce(function (e, t) {
    return e.concat((t.bids || []).reduce(function (e, t) {
      return e.concat(t.bidder);
    }, []));
  }, []), C.logMessage("CALLING S2S HEADER BIDDERS ==== ".concat(f.filter(function (e) {
    return E()(y, e);
  }).join(","))), s.forEach(function (e) {
    w.emit(j.EVENTS.BID_REQUESTED, e);
  }), l.callBids(b, s, function (e, t) {
    var n = Object(S.getBidderRequest)(s, t.bidderCode, e);
    n && i.call(n, e, t);
  }, function () {
    return v.forEach(function (e) {
      return e();
    });
  }, d)) : C.logError("missing " + U.adapter)), r.forEach(function (t) {
    t.start = Object(S.timestamp)();
    var e = _[t.bidderCode];
    C.logMessage("CALLING BIDDER ======= ".concat(t.bidderCode)), w.emit(j.EVENTS.BID_REQUESTED, t);
    var n = Object(h.b)(c, a ? {
      request: a.request.bind(null, t.bidderCode),
      done: a.done
    } : void 0),
        r = o.bind(t);

    try {
      A.b.runWithBidder(t.bidderCode, S.bind.call(e.callBids, e, t, i.bind(t), r, n, u, A.b.callbackWithBidder(t.bidderCode)));
    } catch (e) {
      C.logError("".concat(t.bidderCode, " Bid Adapter emitted an uncaught error when parsing their bidRequest"), {
        e: e,
        bidRequest: t
      }), r();
    }
  })) : C.logWarn("callBids executed with no bidRequests.  Were they filtered by labels or sizing?");
}, y.videoAdapters = [], y.registerBidAdapter = function (e, t) {
  var n = (2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}).supportedMediaTypes,
      r = void 0 === n ? [] : n;
  e && t ? "function" == typeof e.callBids ? (_[t] = e, E()(r, "video") && y.videoAdapters.push(t), E()(r, "native") && g.e.push(t)) : C.logError("Bidder adaptor error for bidder code: " + t + "bidder must implement a callBids() function") : C.logError("bidAdaptor or bidderCode not specified");
}, y.aliasBidAdapter = function (t, e, n) {
  var r, i;

  if (void 0 === _[e]) {
    var o = _[t];

    if (void 0 === o) {
      var a = A.b.getConfig("s2sConfig"),
          c = a && a.bidders;
      c && E()(c, e) ? B[e] = t : C.logError('bidderCode "' + t + '" is not an existing bidder."https://slate.com/human-interest/2020/11/,"adapterManager.aliasBidAdapter");
    } else try {
      var u,
          s,
          d,
          f = (r = t, i = [], E()(y.videoAdapters, r) && i.push("video"), E()(g.e, r) && i.push("native"), i);
      o.constructor.prototype != Object.prototype ? (d = new o.constructor()).setBidderCode(e) : (u = o.getSpec(), s = n && n.gvlid, d = Object(l.newBidder)(v({}, u, {
        code: e,
        gvlid: s
      })), B[e] = t), y.registerBidAdapter(d, e, {
        supportedMediaTypes: f
      });
    } catch (e) {
      C.logError(t + " bidder does not currently support aliasing."https://slate.com/human-interest/2020/11/,"adapterManager.aliasBidAdapter");
    }
  } else C.logMessage('alias name "' + e + '" has been already specified.');
}, y.registerAnalyticsAdapter = function (e) {
  var t = e.adapter,
      n = e.code,
      r = e.gvlid;
  t && n ? "function" == typeof t.enableAnalytics ? (t.code = n, c[n] = {
    adapter: t,
    gvlid: r
  }) : C.logError('Prebid Error: Analytics adaptor error for analytics "'.concat(n, '"n        analytics adapter must implement an enableAnalytics() function')) : C.logError("Prebid Error: analyticsAdapter or analyticsCode not specified");
}, y.enableAnalytics = function (e) {
  C.isArray(e) || (e = [e]), C._each(e, function (e) {
    var t = c[e.provider].adapter;
    t ? t.enableAnalytics(e) : C.logError("Prebid Error: no analytics adapter found in registry forn        ".concat(e.provider, "."));
  });
}, y.getBidAdapter = function (e) {
  return _[e];
}, y.getAnalyticsAdapter = function (e) {
  return c[e];
}, y.callTimedOutBidders = function (t, n, r) {
  n = n.map(function (e) {
    return e.params = C.getUserConfiguredParams(t, e.adUnitCode, e.bidder), e.timeout = r, e;
  }), n = C.groupBy(n, "bidder"), Object.keys(n).forEach(function (e) {
    u(e, "onTimeout", n[e]);
  });
}, y.callBidWonBidder = function (e, t, n) {
  t.params = C.getUserConfiguredParams(n, t.adUnitCode, t.bidder), b.a.incrementBidderWinsCounter(t.adUnitCode, t.bidder), u(e, "onBidWon", t);
}, y.callSetTargetingBidder = function (e, t) {
  u(e, "onSetTargeting", t);
}, t.default = y;

},
90: function _(e, t, n) {
var r = n(154);
e.exports = r;
},
905: function _(e, t, n) {
e.exports = n(69);
},
91: function _(e, t, n) {
“use strict”;

t.a = function (e) {
  var t = e;
  return {
    callBids: function callBids() {},
    setBidderCode: function setBidderCode(e) {
      t = e;
    },
    getBidderCode: function getBidderCode() {
      return t;
    }
  };
};

},
92: function _(e, t, n) {
“use strict”;

t.a = function (e, t) {
  if (e.labelAll) return {
    labelAll: !0,
    labels: e.labelAll,
    activeLabels: t
  };
  return {
    labelAll: !1,
    labels: e.labelAny,
    activeLabels: t
  };
}, t.c = function (e) {
  var t = v(1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : b);
  return !t.shouldFilter || !!t.sizesSupported[e];
}, t.b = function () {
  var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
      t = e.labels,
      n = void 0 === t ? [] : t,
      r = e.labelAll,
      i = void 0 !== r && r,
      o = e.activeLabels,
      a = void 0 === o ? [] : o,
      c = 1 < arguments.length ? arguments[1] : void 0,
      u = 2 < arguments.length ? arguments[2] : void 0,
      s = v(3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : b);
  c = Object(p.isPlainObject)(c) ? Object(p.deepClone)(c) : u ? {
    banner: {
      sizes: u
    }
  } : {};
  var d = Object(p.deepAccess)(c, "banner.sizes");
  s.shouldFilter && d && (c.banner.sizes = d.filter(function (e) {
    return s.sizesSupported[e];
  }));
  var f = Object.keys(c),
      l = {
    active: f.every(function (e) {
      return "banner" !== e;
    }) || f.some(function (e) {
      return "banner" === e;
    }) && 0 < Object(p.deepAccess)(c, "banner.sizes.length") && (0 === n.length || !i && (n.some(function (e) {
      return s.labels[e];
    }) || n.some(function (e) {
      return g()(a, e);
    })) || i && n.reduce(function (e, t) {
      return e ? s.labels[t] || g()(a, t) : e;
    }, !0)),
    mediaTypes: c
  };
  d && d.length !== c.banner.sizes.length && (l.filterResults = {
    before: d,
    after: c.banner.sizes
  });
  return l;
};
var r = n(3),
    p = n(0),
    i = n(12),
    g = n.n(i);

function o(e) {
  return (o = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
    return _typeof(e);
  } : function (e) {
    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
  })(e);
}

var b = [];

function v(e) {
  return e.reduce(function (n, r) {
    if ("object" === o(r) && "string" == typeof r.mediaQuery) {
      var t = !1;
      if ("" === r.mediaQuery) t = !0;else try {
        t = Object(p.getWindowTop)().matchMedia(r.mediaQuery).matches;
      } catch (e) {
        Object(p.logWarn)("Unfriendly iFrame blocks sizeConfig from being correctly evaluated"), t = matchMedia(r.mediaQuery).matches;
      }
      t && (Array.isArray(r.sizesSupported) && (n.shouldFilter = !0), ["labels"https://slate.com/human-interest/2020/11/,"sizesSupported"].forEach(function (t) {
        return (r[t] || []).forEach(function (e) {
          return n[t][e] = !0;
        });
      }));
    } else Object(p.logWarn)('sizeConfig rule missing required property "mediaQuery"');

    return n;
  }, {
    labels: {},
    sizesSupported: {},
    shouldFilter: !1
  });
}

r.b.getConfig("sizeConfig", function (e) {
  return t = e.sizeConfig, void (b = t);
  var t;
});

},
93: function _(e, t, n) {
var r = n(219);
e.exports = r;
},
94: function _(e, t, n) {
“use strict”;

t.b = function (e, t, n) {
  var r = {
    puts: e.map(c, n)
  };
  Object(i.a)(o.b.getConfig("cache.url"), function (n) {
    return {
      success: function success(e) {
        var t;

        try {
          t = JSON.parse(e).responses;
        } catch (e) {
          return void n(e, []);
        }

        t ? n(null, t) : n(new Error("The cache server didn't respond with a responses property."), []);
      },
      error: function error(e, t) {
        n(new Error("Error storing video ad in the cache: ".concat(e, ": ").concat(JSON.stringify(t))), []);
      }
    };
  }(t), JSON.stringify(r), {
    contentType: "text/plain",
    withCredentials: !0
  });
}, t.a = function (e) {
  return "".concat(o.b.getConfig("cache.url"), "?uuid=").concat(e);
};
var i = n(4),
    o = n(3),
    a = n(0);

function c(e) {
  var t,
      n,
      r,
      i = {
    type: "xml",
    value: e.vastXml ? e.vastXml : (t = e.vastUrl, n = e.vastImpUrl, r = n ? "<![CDATA[".concat(n, "]]>") : ""https://slate.com/human-interest/2020/11/,"<VAST version="3.0">n    <Ad>n      <Wrapper>n        <AdSystem>prebid.org wrapper</AdSystem>n        <VASTAdTagURI><![CDATA['.concat(t, "]]></VASTAdTagURI>n        <Impression>").concat(r, "</Impression>n        <Creatives></Creatives>n      </Wrapper>n    </Ad>n  </VAST>")),
    ttlseconds: Number(e.ttl)
  };
  return o.b.getConfig("cache.vasttrack") && (i.bidder = e.bidder, i.bidid = e.requestId, a.isPlainObject(this) && this.hasOwnProperty("auctionStart") && (i.timestamp = this.auctionStart)), "string" == typeof e.customCacheKey && "" !== e.customCacheKey && (i.key = e.customCacheKey), i;
}

},
97: function _(e, t, n) {
n(98);
var r = n(52);
e.exports = r(“Array”https://slate.com/human-interest/2020/11/,”find”);
},
98: function _(e, t, n) {
“use strict”;

var r = n(14),
    i = n(56).find,
    o = n(51),
    a = n(60),
    c = "find",
    u = !0,
    s = a(c);
c in [] && Array(1).find(function () {
  u = !1;
}), r({
  target: "Array",
  proto: !0,
  forced: u || !s
}, {
  find: function find(e, t) {
    return i(this, e, 1 < arguments.length ? t : void 0);
  }
}), o(c);

},
99: function _(e, t, n) {
var r = n(30),
i = n(100),
o = n(46),
a = n(47),
c = n(55),
u = n(27),
s = n(72),
d = Object.getOwnPropertyDescriptor;
t.f = r ? d : function (e, t) {
if (e = a(e), t = c(t, !0), s) try {
return d(e, t);
} catch (e) {}
if (u(e, t)) return o(!i.f.call(e, t), e[t]);
};
}
});
pbjsChunk([321], {
259: function _(n, e, t) {
n.exports = t(260);
},
260: function _(n, e, t) {
“use strict”;

function i(n) {
  return (i = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (n) {
    return _typeof(n);
  } : function (n) {
    return n && "function" == typeof Symbol && n.constructor === Symbol && n !== Symbol.prototype ? "symbol" : _typeof(n);
  })(n);
}

Object.defineProperty(e, "__esModule", {
  value: !0
});
var a,
    u = t(8),
    l = t(0),
    o = t(5),
    s = t(9).default,
    c = o.EVENTS.BID_REQUESTED,
    d = o.EVENTS.BID_TIMEOUT,
    r = o.EVENTS.BID_RESPONSE,
    f = o.EVENTS.BID_WON,
    p = [],
    b = null,
    y = !0,
    v = 0,
    g = ["bidder"https://slate.com/human-interest/2020/11/,"bidderCode"https://slate.com/human-interest/2020/11/,"size"https://slate.com/human-interest/2020/11/,"cpm"https://slate.com/human-interest/2020/11/,"statusMessage"https://slate.com/human-interest/2020/11/,"timeToRespond"https://slate.com/human-interest/2020/11/,"adUnitCode"],
    m = {};

function E() {
  if (y && "object" === i(window[b]) && "function" == typeof window[b].getInstance && "object" === i(window.slateAmplitudeQueue) && window.slateAmplitudeQueue.initCalled) {
    for (var n = 0; n < p.length; n++) {
      p[n].call();
    }

    p.push = function (n) {
      n.call();
    }, y = !1;
  }

  l.logMessage("event count sent to Amplitude: " + v);
}

function w(e) {
  var t = {};
  return g.forEach(function (n) {
    n in e && (t[n] = e[n]);
  }), t;
}

function T(e) {
  e && e.bidderCode && p.push(function () {
    var n = w(e);
    v++, window[b].logEvent("Prebid.js Requests", n);
  }), E();
}

function h(e) {
  e && e.bidderCode && p.push(function () {
    var n;
    0 < e.cpm && (n = w(e), v++, window[b].logEvent("Prebid.js Bids", n));
  }), E();
}

function S(n) {
  p.push(function () {
    l._each(n, function (n) {
      var e = w(n);
      v++, window[b].logEvent("Prebid.js Timeouts", e);
    });
  }), E();
}

function j(e) {
  p.push(function () {
    var n = w(e);
    v++, window[b].logEvent("Prebid.js Wins", n);
  }), E();
}

m.enableAnalytics = function (n) {
  var e = n.provider,
      t = n.options;
  b = e || "amplitude", a = void 0 === t || void 0 === t.sampling || Math.random() < parseFloat(t.sampling), t && void 0 !== t.global && (b = t.global);
  var o;
  a ? (o = u.getEvents(), l._each(o, function (n) {
    var e;
    "object" === i(n) && (e = n.args, n.eventType === c ? T(e) : n.eventType === r ? h(e) : n.eventType === d ? S(e) : n.eventType === f && j(e));
  }), u.on(c, function (n) {
    T(n);
  }), u.on(r, function (n) {
    h(n);
  }), u.on(d, function (n) {
    S(n);
  }), u.on(f, function (n) {
    j(n);
  })) : l.logMessage("Prebid.js amplitude analytics disabled by sampling"), this.enableAnalytics = function () {
    return l.logMessage("Analytics adapter already enabled, unnecessary call to `enableAnalytics`.");
  };
}, s.registerAnalyticsAdapter({
  adapter: m,
  code: "amplitude"
}), e.default = m;

}
}, [259]);
pbjsChunk([315], {
275: function _(e, r, a) {
e.exports = a(276);
},
276: function _(e, r, a) {
“use strict”;

Object.defineProperty(r, "__esModule", {
  value: !0
}), a.d(r, "spec", function () {
  return k;
});
var f = a(11),
    w = a(0),
    A = a(3),
    v = a(1),
    y = a(2),
    p = a(24),
    t = a(10),
    x = a.n(t),
    n = a(12),
    C = a.n(n),
    g = a(29),
    i = a(7);

function s(e) {
  return (s = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
    return _typeof(e);
  } : function (e) {
    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
  })(e);
}

function b() {
  return (b = Object.assign || function (e) {
    for (var r = 1; r < arguments.length; r++) {
      var a = arguments[r];

      for (var t in a) {
        Object.prototype.hasOwnProperty.call(a, t) && (e[t] = a[t]);
      }
    }

    return e;
  }).apply(this, arguments);
}

function S(e) {
  return function (e) {
    if (Array.isArray(e)) return o(e);
  }(e) || function (e) {
    if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);
  }(e) || function (e, r) {
    if (!e) return;
    if ("string" == typeof e) return o(e, r);
    var a = Object.prototype.toString.call(e).slice(8, -1);
    "Object" === a && e.constructor && (a = e.constructor.name);
    if ("Map" === a || "Set" === a) return Array.from(e);
    if ("Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)) return o(e, r);
  }(e) || function () {
    throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }();
}

function o(e, r) {
  (null == r || r > e.length) && (r = e.length);

  for (var a = 0, t = new Array(r); a < r; a++) {
    t[a] = e[a];
  }

  return t;
}

var d = "appnexus",
    T = "https://ib.adnxs.com/ut/v3/prebid",
    c = ["id"https://slate.com/human-interest/2020/11/,"minduration"https://slate.com/human-interest/2020/11/,"maxduration"https://slate.com/human-interest/2020/11/,"skippable"https://slate.com/human-interest/2020/11/,"playback_method"https://slate.com/human-interest/2020/11/,"frameworks"https://slate.com/human-interest/2020/11/,"context"https://slate.com/human-interest/2020/11/,"skipoffset"],
    E = ["age"https://slate.com/human-interest/2020/11/,"externalUid"https://slate.com/human-interest/2020/11/,"segments"https://slate.com/human-interest/2020/11/,"gender"https://slate.com/human-interest/2020/11/,"dnt"https://slate.com/human-interest/2020/11/,"language"],
    O = ["geo"https://slate.com/human-interest/2020/11/,"device_id"],
    R = ["enabled"https://slate.com/human-interest/2020/11/,"dongle"https://slate.com/human-interest/2020/11/,"member_id"https://slate.com/human-interest/2020/11/,"debug_timeout"],
    u = {
  playback_method: {
    unknown: 0,
    auto_play_sound_on: 1,
    auto_play_sound_off: 2,
    click_to_play: 3,
    mouse_over: 4,
    auto_play_sound_unknown: 5
  },
  context: {
    unknown: 0,
    pre_roll: 1,
    mid_roll: 2,
    post_roll: 3,
    outstream: 4,
    "in-banner": 5
  }
},
    m = {
  body: "description",
  body2: "desc2",
  cta: "ctatext",
  image: {
    serverName: "main_image",
    requiredParams: {
      required: !0
    }
  },
  icon: {
    serverName: "icon",
    requiredParams: {
      required: !0
    }
  },
  sponsoredBy: "sponsored_by",
  privacyLink: "privacy_link",
  salePrice: "saleprice",
  displayUrl: "displayurl"
},
    l = "');
}

function tryGetCriteoFastBid() {
  try {
    var fastBidStorageKey = "criteo_fast_bid",
        hashPrefix = "// Hash: ",
        fastBidFromStorage = storage.getDataFromLocalStorage(fastBidStorageKey),
        firstLineEndPosition,
        firstLine,
        publisherTagHash,
        publisherTag;
    null !== fastBidFromStorage && (firstLineEndPosition = fastBidFromStorage.indexOf("n"), firstLine = fastBidFromStorage.substr(0, firstLineEndPosition).trim(), firstLine.substr(0, hashPrefix.length) !== hashPrefix ? (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logWarn("No hash found in FastBid"), storage.removeDataFromLocalStorage(fastBidStorageKey)) : (publisherTagHash = firstLine.substr(hashPrefix.length), publisherTag = fastBidFromStorage.substr(firstLineEndPosition + 1), Object(__WEBPACK_IMPORTED_MODULE_6_criteo_direct_rsa_validate_build_verify_js__.verify)(publisherTag, publisherTagHash, FAST_BID_PUBKEY_N, FAST_BID_PUBKEY_E) ? (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logInfo("Using Criteo FastBid"), eval(publisherTag)) : (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logWarn("Invalid Criteo FastBid found"), storage.removeDataFromLocalStorage(fastBidStorageKey))));
  } catch (t) {}
}

Object(__WEBPACK_IMPORTED_MODULE_1__src_adapters_bidderFactory_js__.registerBidder)(spec);

},
377: function _(t, e, r) {
“use strict”;

Object.defineProperty(e, "__esModule", {
  value: !0
});
var a = r(378),
    n = r(379);

e.verify = function (t, e, r, i) {
  var s = new a.BigInteger(a.b64toHex(e)),
      o = new a.BigInteger(a.b64toHex(r)),
      _ = s.modPowInt(i, o);

  return a.removeExtraSymbols(_.toHexString()) === n.Sha256.hash(t);
};

},
378: function _(t, e, r) {
“use strict”;

var i;
Object.defineProperty(e, "__esModule", {
  value: !0
});
var s = (T.prototype.toHexString = function () {
  if (this.s < 0) return "-" + this.negate().toHexString();
  var t,
      e = !1,
      r = "",
      i = this.t,
      s = this.DB - i * this.DB % 4;
  if (0 < i--) for (s < this.DB && 0 < (t = this[i] >> s) && (e = !0, r = c(t)); 0 <= i;) {
    s < 4 ? (t = (this[i] & (1 << s) - 1) << 4 - s, t |= this[--i] >> (s += this.DB - 4)) : (t = this[i] >> (s -= 4) & 15, s <= 0 && (s += this.DB, --i)), 0 < t && (e = !0), e && (r += c(t));
  }
  return e ? r : "0";
}, T.prototype.fromHexString = function (t) {
  if (null !== t) {
    this.t = 0, this.s = 0;

    for (var e = t.length, r = !1, i = 0; 0 <= --e;) {
      var s = n(t, e);
      s < 0 ? "-" == t.charAt(e) && (r = !0) : (r = !1, 0 == i ? this[this.t++] = s : i + 4 > this.DB ? (this[this.t - 1] |= (s & (1 << this.DB - i) - 1) << i, this[this.t++] = s >> this.DB - i) : this[this.t - 1] |= s << i, (i += 4) >= this.DB && (i -= this.DB));
    }

    this.clamp(), r && T.ZERO.subTo(this, this);
  }
}, T.prototype.negate = function () {
  var t = b();
  return T.ZERO.subTo(this, t), t;
}, T.prototype.abs = function () {
  return this.s < 0 ? this.negate() : this;
}, T.prototype.mod = function (t) {
  var e = b();
  return this.abs().divRemTo(t, null, e), this.s < 0 && 0 < e.compareTo(T.ZERO) && t.subTo(e, e), e;
}, T.prototype.copyTo = function (t) {
  for (var e = this.t - 1; 0 <= e; --e) {
    t[e] = this[e];
  }

  t.t = this.t, t.s = this.s;
}, T.prototype.lShiftTo = function (t, e) {
  for (var r = t % this.DB, i = this.DB - r, s = (1 << i) - 1, o = Math.floor(t / this.DB), _ = this.s << r & this.DM, a = this.t - 1; 0 <= a; --a) {
    e[a + o + 1] = this[a] >> i | _, _ = (this[a] & s) << r;
  }

  for (a = o - 1; 0 <= a; --a) {
    e[a] = 0;
  }

  e[o] = _, e.t = this.t + o + 1, e.s = this.s, e.clamp();
}, T.prototype.invDigit = function () {
  if (this.t < 1) return 0;
  var t = this[0];
  if (0 == (1 & t)) return 0;
  var e = 3 & t;
  return 0 < (e = (e = (e = (e = e * (2 - (15 & t) * e) & 15) * (2 - (255 & t) * e) & 255) * (2 - ((65535 & t) * e & 65535)) & 65535) * (2 - t * e % this.DV) % this.DV) ? this.DV - e : -e;
}, T.prototype.dlShiftTo = function (t, e) {
  for (var r = this.t - 1; 0 <= r; --r) {
    e[r + t] = this[r];
  }

  for (r = t - 1; 0 <= r; --r) {
    e[r] = 0;
  }

  e.t = this.t + t, e.s = this.s;
}, T.prototype.squareTo = function (t) {
  for (var e = this.abs(), r = t.t = 2 * e.t; 0 <= --r;) {
    t[r] = 0;
  }

  for (r = 0; r < e.t - 1; ++r) {
    var i = e.am(r, e[r], t, 2 * r, 0, 1);
    (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, i, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);
  }

  0 < t.t && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)), t.s = 0, t.clamp();
}, T.prototype.multiplyTo = function (t, e) {
  var r = this.abs(),
      i = t.abs(),
      s = r.t;

  for (e.t = s + i.t; 0 <= --s;) {
    e[s] = 0;
  }

  for (s = 0; s < i.t; ++s) {
    e[s + r.t] = r.am(0, i[s], e, s, 0, r.t);
  }

  e.s = 0, e.clamp(), this.s != t.s && T.ZERO.subTo(e, e);
}, T.prototype.divRemTo = function (t, e, r) {
  var i = t.abs();

  if (!(i.t <= 0)) {
    var s = this.abs();
    if (s.t < i.t) return null != e && e.fromHexString("0"), void (null != r && this.copyTo(r));
    null == r && (r = b());
    var o = b(),
        _ = this.s,
        a = t.s,
        n = this.DB - D(i[i.t - 1]);
    0 < n ? (i.lShiftTo(n, o), s.lShiftTo(n, r)) : (i.copyTo(o), s.copyTo(r));
    var p = o.t,
        c = o[p - 1];

    if (0 != c) {
      var d = c * (1 << this.F1) + (1 < p ? o[p - 2] >> this.F2 : 0),
          u = this.FV / d,
          h = (1 << this.F1) / d,
          l = 1 << this.F2,
          f = r.t,
          E = f - p,
          v = null == e ? b() : e;

      for (o.dlShiftTo(E, v), 0 <= r.compareTo(v) && (r[r.t++] = 1, r.subTo(v, r)), T.ONE.dlShiftTo(p, v), v.subTo(o, o); o.t < p;) {
        o[o.t++] = 0;
      }

      for (; 0 <= --E;) {
        var m = r[--f] == c ? this.DM : Math.floor(r[f] * u + (r[f - 1] + l) * h);
        if ((r[f] += o.am(0, m, r, E, 0, p)) < m) for (o.dlShiftTo(E, v), r.subTo(v, r); r[f] < --m;) {
          r.subTo(v, r);
        }
      }

      null != e && (r.drShiftTo(p, e), _ != a && T.ZERO.subTo(e, e)), r.t = p, r.clamp(), 0 < n && r.rShiftTo(n, r), _ < 0 && T.ZERO.subTo(r, r);
    }
  }
}, T.prototype.rShiftTo = function (t, e) {
  e.s = this.s;
  var r = Math.floor(t / this.DB);
  if (r >= this.t) e.t = 0;else {
    var i = t % this.DB,
        s = this.DB - i,
        o = (1 << i) - 1;
    e[0] = this[r] >> i;

    for (var _ = r + 1; _ < this.t; ++_) {
      e[_ - r - 1] |= (this[_] & o) << s, e[_ - r] = this[_] >> i;
    }

    0 < i && (e[this.t - r - 1] |= (this.s & o) << s), e.t = this.t - r, e.clamp();
  }
}, T.prototype.drShiftTo = function (t, e) {
  for (var r = t; r < this.t; ++r) {
    e[r - t] = this[r];
  }

  e.t = Math.max(this.t - t, 0), e.s = this.s;
}, T.prototype.subTo = function (t, e) {
  for (var r = 0, i = 0, s = Math.min(t.t, this.t); r < s;) {
    i += this[r] - t[r], e[r++] = i & this.DM, i >>= this.DB;
  }

  if (t.t < this.t) {
    for (i -= t.s; r < this.t;) {
      i += this[r], e[r++] = i & this.DM, i >>= this.DB;
    }

    i += this.s;
  } else {
    for (i += this.s; r < t.t;) {
      i -= t[r], e[r++] = i & this.DM, i >>= this.DB;
    }

    i -= t.s;
  }

  e.s = i < 0 ? -1 : 0, i < -1 ? e[r++] = this.DV + i : 0 < i && (e[r++] = i), e.t = r, e.clamp();
}, T.prototype.clamp = function () {
  for (var t = this.s & this.DM; 0 < this.t && this[this.t - 1] == t;) {
    --this.t;
  }
}, T.prototype.modPowInt = function (t, e) {
  var r = new (t < 256 || e.isEven() ? d : h)(e);
  return this.exp(t, r);
}, T.prototype.exp = function (t, e) {
  if (4294967295 < t || t < 1) return T.ONE;

  var r,
      i = b(),
      s = b(),
      o = e.convert(this),
      _ = D(t) - 1;

  for (o.copyTo(i); 0 <= --_;) {
    e.sqrTo(i, s), 0 < (t & 1 << _) ? e.mulTo(s, o, i) : (r = i, i = s, s = r);
  }

  return e.revert(i);
}, T.prototype.isEven = function () {
  return 0 == (0 < this.t ? 1 & this[0] : this.s);
}, T.prototype.compareTo = function (t) {
  var e = this.s - t.s;
  if (0 != e) return e;
  var r = this.t;
  if (0 != (e = r - t.t)) return this.s < 0 ? -e : e;

  for (; 0 <= --r;) {
    if (0 != (e = this[r] - t[r])) return e;
  }

  return 0;
}, T.prototype.am1 = function (t, e, r, i, s, o) {
  for (; 0 <= --o;) {
    var _ = e * this[t++] + r[i] + s;

    s = Math.floor(_ / 67108864), r[i++] = 67108863 & _;
  }

  return s;
}, T.prototype.am2 = function (t, e, r, i, s, o) {
  for (var _ = 32767 & e, a = e >> 15; 0 <= --o;) {
    var n = 32767 & this[t],
        p = this[t++] >> 15,
        c = a * n + p * _;
    s = ((n = _ * n + ((32767 & c) << 15) + r[i] + (1073741823 & s)) >>> 30) + (c >>> 15) + a * p + (s >>> 30), r[i++] = 1073741823 & n;
  }

  return s;
}, T.prototype.am3 = function (t, e, r, i, s, o) {
  for (var _ = 16383 & e, a = e >> 14; 0 <= --o;) {
    var n = 16383 & this[t],
        p = this[t++] >> 14,
        c = a * n + p * _;
    s = ((n = _ * n + ((16383 & c) << 14) + r[i] + s) >> 28) + (c >> 14) + a * p, r[i++] = 268435455 & n;
  }

  return s;
}, T);

function T(t) {
  null !== t && this.fromHexString(t);
}

function b() {
  return new s(null);
}

function D(t) {
  var e,
      r = 1;
  return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r;
}

e.BigInteger = s, e.nbi = b, e.nbits = D;

for (var o = [], _ = "0".charCodeAt(0), a = 0; a <= 9; ++a) {
  o[_++] = a;
}

for (_ = "a".charCodeAt(0), a = 10; a < 36; ++a) {
  o[_++] = a;
}

for (_ = "A".charCodeAt(0), a = 10; a < 36; ++a) {
  o[_++] = a;
}

function n(t, e) {
  var r = o[t.charCodeAt(e)];
  return null == r ? -1 : r;
}

e.intAt = n;
var p = "0123456789abcdefghijklmnopqrstuvwxyz";

function c(t) {
  return p.charAt(t);
}

e.int2char = c;
e.b64toHex = function (t) {
  for (var e = "", r = 0, i = 0, s = 0; s < t.length && "=" != t.charAt(s); ++s) {
    var o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(t.charAt(s));
    o < 0 || (r = 0 == r ? (e += c(o >> 2), i = 3 & o, 1) : 1 == r ? (e += c(i << 2 | o >> 4), i = 15 & o, 2) : 2 == r ? (e += c(i), e += c(o >> 2), i = 3 & o, 3) : (e += c(i << 2 | o >> 4), e += c(15 & o), 0));
  }

  return 1 == r && (e += c(i << 2)), e;
}, e.removeExtraSymbols = function (t) {
  return t.replace(/^1f+00/, "").replace("3031300d060960864801650304020105000420"https://slate.com/human-interest/2020/11/,"");
};
var d = (u.prototype.convert = function (t) {
  return t.s < 0 || 0 <= t.compareTo(this.m) ? t.mod(this.m) : t;
}, u.prototype.revert = function (t) {
  return t;
}, u.prototype.reduce = function (t) {
  t.divRemTo(this.m, null, t);
}, u.prototype.mulTo = function (t, e, r) {
  t.multiplyTo(e, r), this.reduce(r);
}, u.prototype.sqrTo = function (t, e) {
  t.squareTo(e), this.reduce(e);
}, u);

function u(t) {
  this.m = t;
}

var h = (l.prototype.convert = function (t) {
  var e = b();
  return t.abs().dlShiftTo(this.m.t, e), e.divRemTo(this.m, null, e), t.s < 0 && 0 < e.compareTo(s.ZERO) && this.m.subTo(e, e), e;
}, l.prototype.revert = function (t) {
  var e = b();
  return t.copyTo(e), this.reduce(e), e;
}, l.prototype.reduce = function (t) {
  for (; t.t <= this.mt2;) {
    t[t.t++] = 0;
  }

  for (var e = 0; e < this.m.t; ++e) {
    var r = 32767 & t[e],
        i = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM;

    for (t[r = e + this.m.t] += this.m.am(0, i, t, e, 0, this.m.t); t[r] >= t.DV;) {
      t[r] -= t.DV, t[++r]++;
    }
  }

  t.clamp(), t.drShiftTo(this.m.t, t), 0 <= t.compareTo(this.m) && t.subTo(this.m, t);
}, l.prototype.mulTo = function (t, e, r) {
  t.multiplyTo(e, r), this.reduce(r);
}, l.prototype.sqrTo = function (t, e) {
  t.squareTo(e), this.reduce(e);
}, l);

function l(t) {
  this.m = t, this.mp = t.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << t.DB - 15) - 1, this.mt2 = 2 * t.t;
}

function f(t) {
  var e = b();
  return e.fromHexString(t.toString()), e;
}

e.nbv = f, s.ZERO = f(0), s.ONE = f(1), i = "Microsoft Internet Explorer" == navigator.appName ? (s.prototype.am = s.prototype.am2, 30) : "Netscape" != navigator.appName ? (s.prototype.am = s.prototype.am1, 26) : (s.prototype.am = s.prototype.am3, 28), s.prototype.DB = i, s.prototype.DM = (1 << i) - 1, s.prototype.DV = 1 << i;
s.prototype.FV = Math.pow(2, 52), s.prototype.F1 = 52 - i, s.prototype.F2 = 2 * i - 52;

},
379: function _(t, e, r) {
“use strict”;

Object.defineProperty(e, "__esModule", {
  value: !0
});
var i = (y.hash = function (t) {
  t = y.utf8Encode(t || "");

  for (var e = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], r = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], i = (t += String.fromCharCode(128)).length / 4 + 2, s = Math.ceil(i / 16), o = new Array(s), _ = 0; _ < s; _++) {
    o[_] = new Array(16);

    for (var a = 0; a < 16; a++) {
      o[_][a] = t.charCodeAt(64 * _ + 4 * a) << 24 | t.charCodeAt(64 * _ + 4 * a + 1) << 16 | t.charCodeAt(64 * _ + 4 * a + 2) << 8 | t.charCodeAt(64 * _ + 4 * a + 3) << 0;
    }
  }

  var n = 8 * (t.length - 1) / Math.pow(2, 32),
      p = 8 * (t.length - 1) >>> 0;

  for (o[s - 1][14] = Math.floor(n), o[s - 1][15] = p, _ = 0; _ < s; _++) {
    for (var c = new Array(64), d = 0; d < 16; d++) {
      c[d] = o[_][d];
    }

    for (d = 16; d < 64; d++) {
      c[d] = y.q1(c[d - 2]) + c[d - 7] + y.q0(c[d - 15]) + c[d - 16] >>> 0;
    }

    for (var u = r[0], h = r[1], l = r[2], f = r[3], E = r[4], v = r[5], m = r[6], T = r[7], d = 0; d < 64; d++) {
      var b = T + y.z1(E) + y.Ch(E, v, m) + e[d] + c[d],
          D = y.z0(u) + y.Maj(u, h, l);
      T = m, m = v, v = E, E = f + b >>> 0, f = l, l = h, h = u, u = b + D >>> 0;
    }

    r[0] = r[0] + u >>> 0, r[1] = r[1] + h >>> 0, r[2] = r[2] + l >>> 0, r[3] = r[3] + f >>> 0, r[4] = r[4] + E >>> 0, r[5] = r[5] + v >>> 0, r[6] = r[6] + m >>> 0, r[7] = r[7] + T >>> 0;
  }

  for (var P = new Array(r.length), T = 0; T < r.length; T++) {
    P[T] = ("00000000" + r[T].toString(16)).slice(-8);
  }

  return P.join("");
}, y.utf8Encode = function (e) {
  try {
    return new TextEncoder().encode(e).reduce(function (t, e) {
      return t + String.fromCharCode(e);
    }, "");
  } catch (t) {
    return unescape(encodeURIComponent(e));
  }
}, y.ROTR = function (t, e) {
  return e >>> t | e << 32 - t;
}, y.z0 = function (t) {
  return y.ROTR(2, t) ^ y.ROTR(13, t) ^ y.ROTR(22, t);
}, y.z1 = function (t) {
  return y.ROTR(6, t) ^ y.ROTR(11, t) ^ y.ROTR(25, t);
}, y.q0 = function (t) {
  return y.ROTR(7, t) ^ y.ROTR(18, t) ^ t >>> 3;
}, y.q1 = function (t) {
  return y.ROTR(17, t) ^ y.ROTR(19, t) ^ t >>> 10;
}, y.Ch = function (t, e, r) {
  return t & e ^ ~t & r;
}, y.Maj = function (t, e, r) {
  return t & e ^ t & r ^ e & r;
}, y);

function y() {}

e.Sha256 = i;

}
}, [375]);
pbjsChunk([218], {
501: function _(e, r, t) {
e.exports = t(502);
},
502: function _(e, r, t) {
“use strict”;

Object.defineProperty(r, "__esModule", {
  value: !0
}), t.d(r, "spec", function () {
  return c;
});
var F = t(0),
    j = t(2),
    B = t(3),
    i = t(10),
    l = t.n(i),
    n = t(503),
    s = t.n(n),
    a = t(1);

function J(e) {
  return function (e) {
    if (Array.isArray(e)) return o(e);
  }(e) || function (e) {
    if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);
  }(e) || function (e, r) {
    if (!e) return;
    if ("string" == typeof e) return o(e, r);
    var t = Object.prototype.toString.call(e).slice(8, -1);
    "Object" === t && e.constructor && (t = e.constructor.name);
    if ("Map" === t || "Set" === t) return Array.from(e);
    if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r);
  }(e) || function () {
    throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }();
}

function o(e, r) {
  (null == r || r > e.length) && (r = e.length);

  for (var t = 0, i = new Array(r); t < r; t++) {
    i[t] = e[t];
  }

  return i;
}

function d(r, e) {
  var t,
      i = Object.keys(r);
  return Object.getOwnPropertySymbols && (t = Object.getOwnPropertySymbols(r), e && (t = t.filter(function (e) {
    return Object.getOwnPropertyDescriptor(r, e).enumerable;
  })), i.push.apply(i, t)), i;
}

function M(n) {
  for (var e = 1; e < arguments.length; e++) {
    var s = null != arguments[e] ? arguments[e] : {};
    e % 2 ? d(Object(s), !0).forEach(function (e) {
      var r, t, i;
      r = n, i = s[t = e], t in r ? Object.defineProperty(r, t, {
        value: i,
        enumerable: !0,
        configurable: !0,
        writable: !0
      }) : r[t] = i;
    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(s)) : d(Object(s)).forEach(function (e) {
      Object.defineProperty(n, e, Object.getOwnPropertyDescriptor(s, e));
    });
  }

  return n;
}

function N(e) {
  return (N = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
    return _typeof(e);
  } : function (e) {
    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
  })(e);
}

var p = [j.b, j.d],
    f = 100,
    g = 300,
    b = 3600,
    h = !0,
    v = {
  JPY: 1
};

function C(e) {
  var r = {};
  return r.id = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") || "string" != typeof e.params.id && "number" != typeof e.params.id ? r.ext.sid = "".concat(e.params.size[0], "x").concat(e.params.size[1]) : r.ext.sid = String(e.params.id), e.params.hasOwnProperty("bidFloor") && e.params.hasOwnProperty("bidFloorCur") && (r.bidfloor = e.params.bidFloor, r.bidfloorcur = e.params.bidFloorCur), r;
}

function m(e) {
  return Array.isArray(e) && 2 === e.length && s()(e[0]) && s()(e[1]);
}

function T(e, r) {
  if (m(e)) return e[0] === r[0] && e[1] === r[1];

  for (var t = 0; t < e.length; t++) {
    if (e[t][0] === r[0] && e[t][1] === r[1]) return 1;
  }
}

function A(e, r, t, i) {
  var n = [],
      s = "https://htlb.casalemedia.com/cygnus",
      a = {},
      o = e[0].userId;

  if (o && "object" === N(o) && o.idl_env && function (e, r, t, i, n, s) {
    if (t) return r[n] = 1, e.push({
      source: i,
      uids: [{
        id: t,
        ext: {
          rtiPartner: s
        }
      }]
    });
    F.logWarn("Tried to add a user ID from Prebid, the ID received was null");
  }(n, a, o.idl_env, "liveramp.com"https://slate.com/human-interest/2020/11/,"LiveRampIp"https://slate.com/human-interest/2020/11/,"idl"), window.headertag && "function" == typeof window.headertag.getIdentityInfo) {
    var d,
        p = window.headertag.getIdentityInfo();
    if (p && "object" === N(p)) for (var m in p) {
      p.hasOwnProperty(m) && (a.hasOwnProperty(m) || !(d = p[m]).responsePending && d.data && "object" === N(d.data) && Object.keys(d.data).length && n.push(d.data));
    }
  }

  var c,
      u = {};
  u.id = e[0].bidderRequestId, u.site = {}, u.ext = {}, u.ext.source = "prebid", u.ext.ixdiag = {}, e[0].schain && (u.source = {
    ext: {
      schain: e[0].schain
    }
  }), 0 < n.length && (u.user = {}, u.user.eids = n), document.referrer && "" !== document.referrer && (u.site.ref = document.referrer), r && (r.gdprConsent && ((c = r.gdprConsent).hasOwnProperty("gdprApplies") && (u.regs = {
    ext: {
      gdpr: c.gdprApplies ? 1 : 0
    }
  }), c.hasOwnProperty("consentString") && (u.user = u.user || {}, u.user.ext = {
    consent: c.consentString || ""
  })), r.uspConsent && F.deepSetValue(u, "regs.ext.us_privacy", r.uspConsent), r.refererInfo && (u.site.page = r.refererInfo.referer));
  var y = {},
      l = r && r.bidderCode || "ix",
      f = B.b.getConfig(l);

  if (f) {
    if ("object" === N(f.firstPartyData)) {
      var g = f.firstPartyData,
          b = "?";

      for (var h in g) {
        g.hasOwnProperty(h) && (b += "".concat(encodeURIComponent(h), "=").concat(encodeURIComponent(g[h]), "&"));
      }

      b = b.slice(0, -1), u.site.page += b;
    }

    "number" == typeof f.timeout && (y.t = f.timeout), "boolean" == typeof f.detectMissingSizes ? u.ext.ixdiag.dms = f.detectMissingSizes : u.ext.ixdiag.dms = !0;
  }

  y.s = e[0].params.siteId, y.v = i, y.ac = "j", y.sd = 1, 8.1 === i && (y.nf = 1);
  var v = [],
      O = {
    method: "GET",
    url: s,
    data: y
  },
      x = new Blob(["".concat(O.url).concat(F.parseQueryStringParameters(M(M({}, O.data), {}, {
    r: JSON.stringify(u)
  })))]).size,
      I = x,
      w = 0,
      P = 0,
      S = 0;
  u.ext.ixdiag.msd = 0, u.ext.ixdiag.msi = 0, u.imp = [];

  for (var z, j, C, T, A, E = 0, D = Object.keys(t), R = []; E < D.length && v.length < 4;) {
    t[D[E]].hasOwnProperty("missingCount") && (S = t[D[E]].missingCount), function (e, r) {
      var t = new Blob([encodeURIComponent(JSON.stringify(e))]).size;
      if (t < r) return;

      for (; r < t;) {
        e.hasOwnProperty("missingImps") && 0 < e.missingImps.length ? e.missingImps.pop() : e.hasOwnProperty("ixImps") && 0 < e.ixImps.length && e.ixImps.pop(), t = new Blob([encodeURIComponent(JSON.stringify(e))]).size;
      }
    }(t[D[E]], 8e3 - x), t[D[E]].hasOwnProperty("missingImps") && (P = t[D[E]].missingImps.length), (I += new Blob([encodeURIComponent(JSON.stringify(t[D[E]]))]).size) < 8e3 ? ((z = u.imp).push.apply(z, J(t[D[E]].ixImps)), u.ext.ixdiag.msd += S, u.ext.ixdiag.msi += P, t[D[E]].hasOwnProperty("missingImps") && R.push.apply(R, J(t[D[E]].missingImps)), E++) : (C = F.deepClone(y), (j = u.imp).push.apply(j, J(R)), u.ext.ixdiag.sn = w, C.sn = w, w++, C.r = JSON.stringify(u), v.push({
      method: "GET",
      url: s,
      data: C
    }), R = [], I = x, u.imp = [], P = S = 0, u.ext.ixdiag.msd = 0, u.ext.ixdiag.msi = 0);
  }

  return x < I && I < 8e3 && v.length < 4 && (A = F.deepClone(y), (T = u.imp).push.apply(T, J(R)), 0 < v.length && (u.ext.ixdiag.sn = w, A.sn = w), A.r = JSON.stringify(u), v.push({
    method: "GET",
    url: s,
    data: A
  })), v;
}

function E(e, r) {
  for (var t = 0; t < e.length; t++) {
    if (r[0] == e[t][0] && r[1] == e[t][1]) return e.splice(t, 1), 1;
  }
}

var c = {
  code: "ix",
  gvlid: 10,
  supportedMediaTypes: p,
  isBidRequestValid: function isBidRequestValid(e) {
    if (!m(e.params.size)) return F.logError("ix bidder params: bid size has invalid format."), !1;
    if (!T(e.sizes, e.params.size)) return F.logError("ix bidder params: bid size is not included in ad unit sizes."), !1;
    if (e.hasOwnProperty("mediaType") && !F.contains(p, e.mediaType)) return !1;
    if (e.hasOwnProperty("mediaTypes") && !F.deepAccess(e, "mediaTypes.banner.sizes") && !F.deepAccess(e, "mediaTypes.video.playerSize")) return !1;
    if ("string" != typeof e.params.siteId && "number" != typeof e.params.siteId) return F.logError("ix bidder params: siteId must be string or number value."), !1;
    var r,
        t,
        i = e.params.hasOwnProperty("bidFloor"),
        n = e.params.hasOwnProperty("bidFloorCur");
    return !!(!i && !n || i && n && (r = e.params.bidFloor, t = e.params.bidFloorCur, Boolean("number" == typeof r && "string" == typeof t && t.match(/^[A-Z]{3}$/)))) || (F.logError("ix bidder params: bidFloor / bidFloorCur parameter has invalid format."), !1);
  },
  buildRequests: function buildRequests(e, r) {
    for (var t, i, n, s, a, o, d, p, m, c, u, y, l, f = [], g = {}, b = {}, h = null, v = {}, O = M(M({}, {
      detectMissingSizes: !0
    }), B.b.getConfig("ix")), x = 0; x < e.length; x++) {
      (h = e[x]).mediaType !== j.d && !F.deepAccess(h, "mediaTypes.video") || (h.mediaType === j.d || T(h.mediaTypes.video.playerSize, h.params.size) ? (b.hasOwnProperty(h.transactionId) || (b[h.transactionId] = {}), b[h.transactionId].hasOwnProperty("ixImps") || (b[h.transactionId].ixImps = []), b[h.transactionId].ixImps.push(function (e) {
        var r = C(e);
        r.video = F.deepClone(e.params.video), r.video.w = e.params.size[0], r.video.h = e.params.size[1];
        var t = F.deepAccess(e, "mediaTypes.video.context");
        return t && ("instream" === t ? r.video.placement = 1 : "outstream" === t ? r.video.placement = 4 : F.logWarn("ix bidder params: video context '".concat(t, "' is not supported"))), r;
      }(h))) : F.logError("Bid size is not included in video playerSize")), h.mediaType !== j.b && !F.deepAccess(h, "mediaTypes.banner") && (h.mediaType || h.mediaTypes) || (c = void 0, (c = C(m = h)).banner = {}, c.banner.w = m.params.size[0], c.banner.h = m.params.size[1], c.banner.topframe = F.inIframe() ? 0 : 1, t = c, g.hasOwnProperty(h.transactionId) || (g[h.transactionId] = {}), g[h.transactionId].hasOwnProperty("ixImps") || (g[h.transactionId].ixImps = []), g[h.transactionId].ixImps.push(t), O.hasOwnProperty("detectMissingSizes") && O.detectMissingSizes && (n = v, s = t, p = d = o = a = void 0, p = (i = h).transactionId, n.hasOwnProperty(p) ? (a = [], n[p].hasOwnProperty("missingSizes") && (a = n[p].missingSizes), E(a, i.params.size), n[p].missingSizes = a) : F.deepAccess(i, "mediaTypes.banner.sizes") && (E(o = F.deepClone(i.mediaTypes.banner.sizes), i.params.size), d = {
        missingSizes: o,
        impression: s
      }, n[p] = d)));
    }

    for (var I in v) {
      if (v.hasOwnProperty(I)) {
        var w = v[I].missingSizes;
        g.hasOwnProperty(I) || (g[I] = {}), g[I].hasOwnProperty("missingImps") || (g[I].missingImps = [], g[I].missingCount = 0);

        for (var P = v[I].impression, S = 0; S < w.length; S++) {
          var z = (u = P, y = w[S], l = void 0, (l = F.deepClone(u)).ext.sid = "".concat(y[0], "x").concat(y[1]), l.banner.w = y[0], l.banner.h = y[1], l);
          g[I].missingImps.push(z), g[I].missingCount++;
        }
      }
    }

    return 0 < Object.keys(g).length && f.push.apply(f, J(A(e, r, g, 7.2))), 0 < Object.keys(b).length && f.push.apply(f, J(A(e, r, b, 8.1))), f;
  },
  interpretResponse: function interpretResponse(e, r) {
    var t = [];
    if (!e.hasOwnProperty("body") || !e.body.hasOwnProperty("seatbid")) return t;

    for (var i, n, s, a, o = e.body, d = o.seatbid, p = 0; p < d.length; p++) {
      if (d[p].hasOwnProperty("bid")) for (var m = d[p].bid, c = JSON.parse(r.data.r), u = 0; u < m.length; u++) {
        var y = function (r, e) {
          if (r) return l()(e, function (e) {
            return e.id === r;
          });
        }(m[u].impid, c.imp);

        i = m[u], n = o.cur, s = y, a = void 0, a = {}, v.hasOwnProperty(n) ? a.cpm = i.price / v[n] : a.cpm = i.price / f, a.requestId = i.impid, a.dealId = F.deepAccess(i, "ext.dealid"), a.netRevenue = h, a.currency = n, a.creativeId = i.hasOwnProperty("crid") ? i.crid : "-", F.deepAccess(i, "ext.vasturl") ? (a.vastUrl = i.ext.vasturl, a.width = s.video.w, a.height = s.video.h, a.mediaType = j.d, a.ttl = b) : (a.ad = i.adm, a.width = i.w, a.height = i.h, a.mediaType = j.b, a.ttl = g), a.meta = {}, a.meta.networkId = F.deepAccess(i, "ext.dspid"), a.meta.brandId = F.deepAccess(i, "ext.advbrandid"), a.meta.brandName = F.deepAccess(i, "ext.advbrand"), i.adomain && 0 < i.adomain.length && (a.meta.advertiserDomains = i.adomain), t.push(a);
      }
    }

    return t;
  },
  transformBidParams: function transformBidParams(e) {
    return F.convertTypes({
      siteID: "number"
    }, e);
  },
  getUserSyncs: function getUserSyncs(e) {
    return e.iframeEnabled ? [{
      type: "iframe",
      url: "https://js-sec.indexww.com/um/ixmatch.html"
    }] : [];
  }
};
Object(a.registerBidder)(c);

}
}, [501]);
pbjsChunk([213], {
517: function _(e, t, r) {
e.exports = r(518);
},
518: function _(e, t, r) {
“use strict”;

Object.defineProperty(t, "__esModule", {
  value: !0
}), r.d(t, "spec", function () {
  return l;
});
var s = r(0),
    d = r(3),
    n = r(1),
    a = r(7);

function g() {
  return (g = Object.assign || function (e) {
    for (var t = 1; t < arguments.length; t++) {
      var r = arguments[t];

      for (var n in r) {
        Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]);
      }
    }

    return e;
  }).apply(this, arguments);
}

var o,
    i,
    c,
    u = Object(a.b)(),
    l = {
  code: "kargo",
  isBidRequestValid: function isBidRequestValid(e) {
    return !(!e || !e.params) && !!e.params.placementId;
  },
  buildRequests: function buildRequests(e, t) {
    var r,
        n = d.b.getConfig("currency"),
        a = n && n.adServerCurrency || "USD",
        o = {},
        i = {};
    s._each(e, function (e) {
      o[e.bidId] = e.params.placementId, i[e.bidId] = e.sizes;
    }), 0 < e.length && e[0].userId && e[0].userId.tdid && (r = e[0].userId.tdid);
    var c = g({}, {
      sessionId: l._getSessionId(),
      requestCount: l._getRequestCount(),
      timeout: t.timeout,
      currency: a,
      cpmGranularity: 1,
      timestamp: new Date().getTime(),
      cpmRange: {
        floor: 0,
        ceil: 20
      },
      bidIDs: o,
      bidSizes: i,
      prebidRawBidRequests: e
    }, l._getAllMetadata(r, t.uspConsent)),
        u = encodeURIComponent(JSON.stringify(c));
    return g({}, t, {
      method: "GET",
      url: "".concat("https://krk.kargo.com"https://slate.com/human-interest/2020/11/,"/api/v2/bid"),
      data: "json=".concat(u),
      currency: a
    });
  },
  interpretResponse: function interpretResponse(e, t) {
    var r = e.body,
        n = [];

    for (var a in r) {
      var o = r[a],
          i = void 0;
      o.metadata && o.metadata.landingPageDomain && (i = {
        clickUrl: o.metadata.landingPageDomain,
        advertiserDomains: [o.metadata.landingPageDomain]
      }), n.push({
        requestId: a,
        cpm: Number(o.cpm),
        width: o.width,
        height: o.height,
        ad: o.adm,
        ttl: 300,
        creativeId: o.id,
        dealId: o.targetingCustom,
        netRevenue: !0,
        currency: t.currency,
        meta: i
      });
    }

    return n;
  },
  getUserSyncs: function getUserSyncs(e) {
    var t = [],
        r = l._generateRandomUuid(),
        n = l._getClientId();

    if (e.iframeEnabled && r && n) for (var a = 0; a < 5; a++) {
      t.push({
        type: "iframe",
        url: "https://crb.kargo.com/api/v1/initsyncrnd/{UUID}?seed={SEED}&idx={INDEX}".replace("{UUID}", n).replace("{SEED}", r).replace("{INDEX}", a)
      });
    }
    return t;
  },
  _readCookie: function _readCookie(e) {
    if (!u.cookiesAreEnabled()) return null;

    for (var t = "".concat(e, "="), r = document.cookie.split(";"), n = 0; n < r.length; n++) {
      for (var a = r[n]; " " === a.charAt(0);) {
        a = a.substring(1, a.length);
      }

      if (0 === a.indexOf(t)) return a.substring(t.length, a.length);
    }

    return null;
  },
  _getCrbFromCookie: function _getCrbFromCookie() {
    try {
      var e = JSON.parse(decodeURIComponent(l._readCookie("krg_crb")));

      if (e && e.v) {
        var t = JSON.parse(atob(e.v));
        if (t) return t;
      }

      return {};
    } catch (e) {
      return {};
    }
  },
  _getCrbFromLocalStorage: function _getCrbFromLocalStorage() {
    try {
      return JSON.parse(atob(l._getLocalStorageSafely("krg_crb")));
    } catch (e) {
      return {};
    }
  },
  _getCrb: function _getCrb() {
    var e = l._getCrbFromLocalStorage();

    return Object.keys(e).length ? e : l._getCrbFromCookie();
  },
  _getKruxUserId: function _getKruxUserId() {
    return l._getLocalStorageSafely("kxkar_user");
  },
  _getKruxSegments: function _getKruxSegments() {
    return l._getLocalStorageSafely("kxkar_segs");
  },
  _getKrux: function _getKrux() {
    var e = l._getKruxSegments(),
        t = [];

    return e && (t = e.split(",")), {
      userID: l._getKruxUserId(),
      segments: t
    };
  },
  _getLocalStorageSafely: function _getLocalStorageSafely(e) {
    try {
      return u.getDataFromLocalStorage(e);
    } catch (e) {
      return null;
    }
  },
  _getUserIds: function _getUserIds(e, t) {
    var r = l._getCrb(),
        n = {
      kargoID: r.userId,
      clientID: r.clientId,
      crbIDs: r.syncIds || {},
      optOut: r.optOut,
      usp: t
    };

    return e && (n.tdID = e), n;
  },
  _getClientId: function _getClientId() {
    return l._getCrb().clientId;
  },
  _getAllMetadata: function _getAllMetadata(e, t) {
    return {
      userIDs: l._getUserIds(e, t),
      krux: l._getKrux(),
      pageURL: window.location.href,
      rawCRB: l._readCookie("krg_crb"),
      rawCRBLocalStorage: l._getLocalStorageSafely("krg_crb")
    };
  },
  _getSessionId: function _getSessionId() {
    return o = o || l._generateRandomUuid();
  },
  _getRequestCount: function _getRequestCount() {
    return i === window.location.pathname ? ++c : (i = window.location.pathname, c = 0);
  },
  _generateRandomUuid: function _generateRandomUuid() {
    try {
      var e = new Uint8Array(16);
      crypto.getRandomValues(e), e[6] = -177 & e[6] | 64, e[8] = -65 & e[8] | 128;
      var t = Array.prototype.map.call(new Uint8Array(e), function (e) {
        return ("00" + e.toString(16)).slice(-2);
      }).join("");
      return t.slice(0, 8) + "-" + t.slice(8, 12) + "-" + t.slice(12, 16) + "-" + t.slice(16, 20) + "-" + t.slice(20);
    } catch (e) {
      return "";
    }
  }
};
Object(n.registerBidder)(l);

}
}, [517]);
pbjsChunk([128], {
727: function _(e, r, t) {
e.exports = t(728);
},
728: function _(e, r, t) {
“use strict”;

Object.defineProperty(r, "__esModule", {
  value: !0
}), t.d(r, "spec", function () {
  return A;
}), r.hasVideoMediaType = s, t.d(r, "resetRubiConf", function () {
  return c;
}), r.masSizeOrdering = d, r.determineRubiconVideoSizeId = f, r.getPriceGranularity = C, r.hasValidVideoParams = I, r.hasValidSupplyChainParams = k, r.encodeParam = w, r.resetUserSync = function () {
  z = !1;
};
var g = t(0),
    i = t(1),
    v = t(3),
    p = t(2),
    n = t(10),
    b = t.n(n);

function y(e, r) {
  return function (e) {
    if (Array.isArray(e)) return e;
  }(e) || function (e, r) {
    if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
    var t = [],
        i = !0,
        n = !1,
        o = void 0;

    try {
      for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (t.push(a.value), !r || t.length !== r); i = !0) {
        ;
      }
    } catch (e) {
      n = !0, o = e;
    } finally {
      try {
        i || null == s.return || s.return();
      } finally {
        if (n) throw o;
      }
    }

    return t;
  }(e, r) || function (e, r) {
    if (!e) return;
    if ("string" == typeof e) return o(e, r);
    var t = Object.prototype.toString.call(e).slice(8, -1);
    "Object" === t && e.constructor && (t = e.constructor.name);
    if ("Map" === t || "Set" === t) return Array.from(e);
    if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r);
  }(e, r) || function () {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }();
}

function o(e, r) {
  (null == r || r > e.length) && (r = e.length);

  for (var t = 0, i = new Array(r); t < r; t++) {
    i[t] = e[t];
  }

  return i;
}

function x() {
  return (x = Object.assign || function (e) {
    for (var r = 1; r < arguments.length; r++) {
      var t = arguments[r];

      for (var i in t) {
        Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
      }
    }

    return e;
  }).apply(this, arguments);
}

function l(e, r, t) {
  return r in e ? Object.defineProperty(e, r, {
    value: t,
    enumerable: !0,
    configurable: !0,
    writable: !0
  }) : e[r] = t, e;
}

function h(e) {
  return (h = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
    return _typeof(e);
  } : function (e) {
    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
  })(e);
}

var _ = {};
v.b.getConfig("rubicon", function (e) {
  g.mergeDeep(_, e.rubicon);
});
var u = {
  1: "468x60",
  2: "728x90",
  5: "120x90",
  7: "125x125",
  8: "120x600",
  9: "160x600",
  10: "300x600",
  13: "200x200",
  14: "250x250",
  15: "300x250",
  16: "336x280",
  17: "240x400",
  19: "300x100",
  31: "980x120",
  32: "250x360",
  33: "180x500",
  35: "980x150",
  37: "468x400",
  38: "930x180",
  39: "750x100",
  40: "750x200",
  41: "750x300",
  42: "2x4",
  43: "320x50",
  44: "300x50",
  48: "300x300",
  53: "1024x768",
  54: "300x1050",
  55: "970x90",
  57: "970x250",
  58: "1000x90",
  59: "320x80",
  60: "320x150",
  61: "1000x1000",
  64: "580x500",
  65: "640x480",
  66: "930x600",
  67: "320x480",
  68: "1800x1000",
  72: "320x320",
  73: "320x160",
  78: "980x240",
  79: "980x300",
  80: "980x400",
  83: "480x300",
  85: "300x120",
  90: "548x150",
  94: "970x310",
  95: "970x100",
  96: "970x210",
  101: "480x320",
  102: "768x1024",
  103: "480x280",
  105: "250x800",
  108: "320x240",
  113: "1000x300",
  117: "320x100",
  125: "800x250",
  126: "200x600",
  144: "980x600",
  145: "980x150",
  152: "1000x250",
  156: "640x320",
  159: "320x250",
  179: "250x600",
  195: "600x300",
  198: "640x360",
  199: "640x200",
  213: "1030x590",
  214: "980x360",
  221: "1x1",
  229: "320x180",
  230: "2000x1400",
  232: "580x400",
  234: "6x6",
  251: "2x2",
  256: "480x820",
  257: "400x600",
  258: "500x200",
  259: "998x200",
  264: "970x1000",
  265: "1920x1080",
  274: "1800x200",
  278: "320x500",
  282: "320x400",
  288: "640x380",
  548: "500x1000"
};

g._each(u, function (e, r) {
  return u[e] = r;
});

var A = {
  code: "rubicon",
  gvlid: 52,
  supportedMediaTypes: [p.b, p.d],
  isBidRequestValid: function isBidRequestValid(e) {
    if ("object" !== h(e.params)) return !1;

    for (var r = 0, t = ["accountId"https://slate.com/human-interest/2020/11/,"siteId"https://slate.com/human-interest/2020/11/,"zoneId"]; r < t.length; r++) {
      if (e.params[t[r]] = parseInt(e.params[t[r]]), isNaN(e.params[t[r]])) return g.logError("Rubicon: wrong format of accountId or siteId or zoneId."), !1;
    }

    var i = m(e, !0);
    return !!i && ("video" !== i || I(e));
  },
  buildRequests: function buildRequests(e, u) {
    var n,
        r = e.filter(function (e) {
      return "video" === m(e);
    }).map(function (t) {
      t.startTime = new Date().getTime();
      var e,
          r,
          i,
          n = {
        id: t.transactionId,
        test: v.b.getConfig("debug") ? 1 : 0,
        cur: ["USD"],
        source: {
          tid: t.transactionId
        },
        tmax: u.timeout,
        imp: [{
          exp: v.b.getConfig("s2sConfig.defaultTtl"),
          id: t.adUnitCode,
          secure: 1,
          ext: l({}, t.bidder, t.params),
          video: g.deepAccess(t, "mediaTypes.video") || {}
        }],
        ext: {
          prebid: {
            cache: {
              vastxml: {
                returnCreative: !0 === _.returnVast
              }
            },
            targeting: {
              includewinners: !0,
              includebidderkeys: !1,
              pricegranularity: C(v.b)
            },
            bidders: {
              rubicon: {
                integration: _.int_type || "pbjs"
              }
            }
          }
        }
      };
      if ("rubicon" !== t.bidder && (n.ext.prebid.aliases = l({}, t.bidder, "rubicon")), "function" != typeof t.getFloor || _.disableFloors) e = parseFloat(g.deepAccess(t, "params.floor"));else {
        try {
          r = t.getFloor({
            currency: "USD",
            mediaType: "video",
            size: j(t, "video")
          });
        } catch (e) {
          g.logError("Rubicon: getFloor threw an error: ", e);
        }

        e = "object" !== h(r) || "USD" !== r.currency || isNaN(parseInt(r.floor)) ? void 0 : parseFloat(r.floor);
      }
      isNaN(e) || (n.imp[0].bidfloor = e), n.imp[0].ext[t.bidder].video.size_id = f(t), function (r, t, e) {
        if (!r) return;
        "object" === h(v.b.getConfig("app")) ? r.app = v.b.getConfig("app") : r.site = {
          page: S(t, e)
        };
        "object" === h(v.b.getConfig("device")) && (r.device = v.b.getConfig("device"));
        t.params.video.language && ["site"https://slate.com/human-interest/2020/11/,"device"].forEach(function (e) {
          r[e] && (r[e].content = x({
            language: t.params.video.language
          }, r[e].content));
        });
      }(n, t, u), function (e, r) {
        "object" === h(e.imp[0].video) && void 0 === e.imp[0].video.skip && (e.imp[0].video.skip = r.params.video.skip);
        "object" === h(e.imp[0].video) && void 0 === e.imp[0].video.skipafter && (e.imp[0].video.skipafter = r.params.video.skipdelay);
        "object" === h(e.imp[0].video) && void 0 === e.imp[0].video.pos && ("atf" === r.params.position ? e.imp[0].video.pos = 1 : "btf" === r.params.position && (e.imp[0].video.pos = 3));
        var t = j(r, "video");
        e.imp[0].video.w = t[0], e.imp[0].video.h = t[1];
      }(n, t), u.gdprConsent && ("boolean" == typeof u.gdprConsent.gdprApplies && (i = u.gdprConsent.gdprApplies ? 1 : 0), g.deepSetValue(n, "regs.ext.gdpr", i), g.deepSetValue(n, "user.ext.consent", u.gdprConsent.consentString)), u.uspConsent && g.deepSetValue(n, "regs.ext.us_privacy", u.uspConsent);
      var o = g.deepAccess(u, "bids.0.userIdAsEids");
      o && o.length && g.deepSetValue(n, "user.ext.eids", o);
      var a = v.b.getConfig("user.id");
      a && g.deepSetValue(n, "user.id", a), !0 === v.b.getConfig("coppa") && g.deepSetValue(n, "regs.coppa", 1), t.schain && k(t.schain) && g.deepSetValue(n, "source.ext.schain", t.schain);
      var s,
          c = x({}, t.params.inventory, v.b.getConfig("fpd.context")),
          d = x({}, t.params.visitor, v.b.getConfig("fpd.user"));
      g.isEmpty(c) && g.isEmpty(d) || (s = {
        bidders: [u.bidderCode],
        config: {
          fpd: {}
        }
      }, g.isEmpty(c) || (s.config.fpd.site = c), g.isEmpty(d) || (s.config.fpd.user = d), g.deepSetValue(n, "ext.prebid.bidderconfig.0", s));
      var p = g.deepAccess(t, "fpd.context.pbAdSlot");
      return "string" == typeof p && p && g.deepSetValue(n.imp[0].ext, "context.data.pbadslot", p), ["name"https://slate.com/human-interest/2020/11/,"adSlot"].forEach(function (e) {
        var r = g.deepAccess(t, "fpd.context.adserver.".concat(e));
        "string" == typeof r && r && g.deepSetValue(n.imp[0].ext, "context.data.adserver.".concat(e.toLowerCase()), r);
      }), t.storedAuctionResponse && g.deepSetValue(n.imp[0], "ext.prebid.storedauctionresponse.id", t.storedAuctionResponse.toString()), g.deepSetValue(n.imp[0], "ext.prebid.auctiontimestamp", u.auctionStart), {
        method: "POST",
        url: "https://".concat(_.videoHost || "prebid-server"https://slate.com/human-interest/2020/11/,".rubiconproject.com/openrtb2/auction"),
        data: n,
        bidRequest: t
      };
    });
    return !0 !== _.singleRequest ? r.concat(e.filter(function (e) {
      return "banner" === m(e);
    }).map(function (e) {
      var i = A.createSlotParams(e, u);
      return {
        method: "GET",
        url: "https://".concat(_.bannerHost || "fastlane"https://slate.com/human-interest/2020/11/,".rubiconproject.com/a/api/fastlane.json"),
        data: A.getOrderedParams(i).reduce(function (e, r) {
          var t = i[r];
          return g.isStr(t) && "" !== t || g.isNumber(t) ? "".concat(e).concat(w(r, t), "&") : e;
        }, "") + "slots=1&rand=".concat(Math.random()),
        bidRequest: e
      };
    })) : (n = e.filter(function (e) {
      return "banner" === m(e);
    }).reduce(function (e, r) {
      return (e[r.params.siteId] = e[r.params.siteId] || []).push(r), e;
    }, {}), r.concat(Object.keys(n).reduce(function (r, e) {
      var t, i;
      return t = n[e], i = 10, t.map(function (e, r) {
        return r % i == 0 ? t.slice(r, r + i) : null;
      }).filter(function (e) {
        return e;
      }).forEach(function (e) {
        var i = A.combineSlotUrlParams(e.map(function (e) {
          return A.createSlotParams(e, u);
        }));
        r.push({
          method: "GET",
          url: "https://".concat(_.bannerHost || "fastlane"https://slate.com/human-interest/2020/11/,".rubiconproject.com/a/api/fastlane.json"),
          data: A.getOrderedParams(i).reduce(function (e, r) {
            var t = i[r];
            return g.isStr(t) && "" !== t || g.isNumber(t) ? "".concat(e).concat(w(r, t), "&") : e;
          }, "") + "slots=".concat(e.length, "&rand=").concat(Math.random()),
          bidRequest: e
        });
      }), r;
    }, [])));
  },
  getOrderedParams: function getOrderedParams(e) {
    var r = /^tg_v/,
        t = /^tg_i/,
        i = /^eid_|^tpid_/,
        n = ["account_id"https://slate.com/human-interest/2020/11/,"site_id"https://slate.com/human-interest/2020/11/,"zone_id"https://slate.com/human-interest/2020/11/,"size_id"https://slate.com/human-interest/2020/11/,"alt_size_ids"https://slate.com/human-interest/2020/11/,"p_pos"https://slate.com/human-interest/2020/11/,"gdpr"https://slate.com/human-interest/2020/11/,"gdpr_consent"https://slate.com/human-interest/2020/11/,"us_privacy"https://slate.com/human-interest/2020/11/,"rp_schain"].concat(Object.keys(e).filter(function (e) {
      return i.test(e);
    })).concat(["x_liverampidl"https://slate.com/human-interest/2020/11/,"ppuid"https://slate.com/human-interest/2020/11/,"rf"https://slate.com/human-interest/2020/11/,"p_geo.latitude"https://slate.com/human-interest/2020/11/,"p_geo.longitude"https://slate.com/human-interest/2020/11/,"kw"]).concat(Object.keys(e).filter(function (e) {
      return r.test(e);
    })).concat(Object.keys(e).filter(function (e) {
      return t.test(e);
    })).concat(["tk_flint"https://slate.com/human-interest/2020/11/,"x_source.tid"https://slate.com/human-interest/2020/11/,"x_source.pchain"https://slate.com/human-interest/2020/11/,"p_screen_res"https://slate.com/human-interest/2020/11/,"rp_floor"https://slate.com/human-interest/2020/11/,"rp_secure"https://slate.com/human-interest/2020/11/,"tk_user_key"]);
    return n.concat(Object.keys(e).filter(function (e) {
      return -1 === n.indexOf(e);
    }));
  },
  combineSlotUrlParams: function combineSlotUrlParams(n) {
    if (1 === n.length) return n[0];
    var i = n.reduce(function (r, t, i) {
      return Object.keys(t).forEach(function (e) {
        r.hasOwnProperty(e) || (r[e] = new Array(n.length)), r[e].splice(i, 1, t[e]);
      }), r;
    }, {}),
        o = new RegExp("^([^;]*)(;\1)+$");
    return Object.keys(i).forEach(function (e) {
      var r = i[e].join(";"),
          t = r.match(o);
      i[e] = t ? t[1] : r;
    }), i;
  },
  createSlotParams: function createSlotParams(e, r) {
    e.startTime = new Date().getTime();
    var t,
        i = e.params,
        n = j(e, "banner"),
        o = y(i.latLong || [], 2),
        a = o[0],
        s = o[1],
        c = {
      account_id: i.accountId,
      site_id: i.siteId,
      zone_id: i.zoneId,
      size_id: n[0],
      alt_size_ids: n.slice(1).join(",") || void 0,
      rp_floor: .01 < (i.floor = parseFloat(i.floor)) ? i.floor : .01,
      rp_secure: "1",
      tk_flint: "".concat(_.int_type || "pbjs_lite"https://slate.com/human-interest/2020/11/,"_v4.17.0"),
      "x_source.tid": e.transactionId,
      "x_source.pchain": i.pchain,
      p_screen_res: [window.screen.width, window.screen.height].join("x"),
      tk_user_key: i.userId,
      "p_geo.latitude": isNaN(parseFloat(a)) ? void 0 : parseFloat(a).toFixed(4),
      "p_geo.longitude": isNaN(parseFloat(s)) ? void 0 : parseFloat(s).toFixed(4),
      "tg_fl.eid": e.code,
      rf: S(e, r)
    };

    if ("function" == typeof e.getFloor && !_.disableFloors) {
      try {
        t = e.getFloor({
          currency: "USD",
          mediaType: "banner",
          size: "*"
        });
      } catch (e) {
        g.logError("Rubicon: getFloor threw an error: ", e);
      }

      c.rp_hard_floor = "object" !== h(t) || "USD" !== t.currency || isNaN(parseInt(t.floor)) ? void 0 : t.floor;
    }

    c.p_pos = "atf" === i.position || "btf" === i.position ? i.position : "";
    var d = v.b.getConfig("user.id");
    d && (c.ppuid = d), e.userIdAsEids && e.userIdAsEids.forEach(function (r) {
      try {
        var e;
        "adserver.org" === r.source ? (c.tpid_tdid = r.uids[0].id, c["eid_adserver.org"] = r.uids[0].id) : "liveintent.com" === r.source ? (c["tpid_liveintent.com"] = r.uids[0].id, c["eid_liveintent.com"] = r.uids[0].id, r.ext && Array.isArray(r.ext.segments) && r.ext.segments.length && (c["tg_v.LIseg"] = r.ext.segments.join(","))) : "liveramp.com" === r.source ? c.x_liverampidl = r.uids[0].id : "sharedid.org" === r.source ? c["eid_sharedid.org"] = "".concat(r.uids[0].id, "^").concat(r.uids[0].atype, "^").concat(r.uids[0].ext && r.uids[0].ext.third || "") : "id5-sync.com" === r.source ? c["eid_id5-sync.com"] = "".concat(r.uids[0].id, "^").concat(r.uids[0].atype, "^").concat(r.ext && r.ext.linkType || "") : c["eid_".concat(r.source)] = "".concat(r.uids[0].id, "^").concat(r.uids[0].atype || ""), c.ppuid || (e = b()(r.uids, function (e) {
          return e.ext && "ppuid" === e.ext.stype;
        })) && e.id && (c.ppuid = e.id);
      } catch (e) {
        g.logWarn("Rubicon: error reading eid:", r, e);
      }
    }), r.gdprConsent && ("boolean" == typeof r.gdprConsent.gdprApplies && (c.gdpr = Number(r.gdprConsent.gdprApplies)), c.gdpr_consent = r.gdprConsent.consentString), r.uspConsent && (c.us_privacy = encodeURIComponent(r.uspConsent));
    var p = x({}, i.visitor, v.b.getConfig("fpd.user"));
    Object.keys(p).forEach(function (e) {
      null != p[e] && "keywords" !== e && (c["tg_v.".concat(e)] = "object" !== h(p[e]) || Array.isArray(p[e]) ? p[e].toString() : JSON.stringify(p[e]));
    });
    var u = x({}, i.inventory, v.b.getConfig("fpd.context"));
    Object.keys(u).forEach(function (e) {
      null != u[e] && "keywords" !== e && (c["tg_i.".concat(e)] = "object" !== h(u[e]) || Array.isArray(u[e]) ? u[e].toString() : JSON.stringify(u[e]));
    });
    var l = (i.keywords || []).concat(g.deepAccess(v.b.getConfig("fpd.user"), "keywords") || [], g.deepAccess(v.b.getConfig("fpd.context"), "keywords") || []);
    c.kw = Array.isArray(l) && l.length ? l.join(",") : "";
    var m = g.deepAccess(e, "fpd.context.pbAdSlot");
    "string" == typeof m && m && (c["tg_i.pbadslot"] = m.replace(/^/+/, ""));
    var f = g.deepAccess(e, "fpd.context.adServer.adSlot");
    return "string" == typeof f && f && (c["tg_i.dfp_ad_unit_code"] = f.replace(/^/+/, "")), !0 === v.b.getConfig("coppa") && (c.coppa = 1), e.schain && k(e.schain) && (c.rp_schain = A.serializeSupplyChain(e.schain)), c;
  },
  serializeSupplyChain: function serializeSupplyChain(e) {
    if (!k(e)) return "";
    var r = e.ver,
        t = e.complete,
        i = e.nodes;
    return "".concat(r, ",").concat(t, "!").concat(A.serializeSupplyChainNodes(i));
  },
  serializeSupplyChainNodes: function serializeSupplyChainNodes(e) {
    var t = ["asi"https://slate.com/human-interest/2020/11/,"sid"https://slate.com/human-interest/2020/11/,"hp"https://slate.com/human-interest/2020/11/,"rid"https://slate.com/human-interest/2020/11/,"name"https://slate.com/human-interest/2020/11/,"domain"];
    return e.map(function (r) {
      return t.map(function (e) {
        return encodeURIComponent(r[e] || "");
      }).join(",");
    }).join("!");
  },
  interpretResponse: function interpretResponse(c, e) {
    var d = e.bidRequest;
    if (!(c = c.body) || "object" !== h(c)) return [];

    if (c.seatbid) {
      var r = g.deepAccess(c, "ext.errors.rubicon");
      Array.isArray(r) && 0 < r.length && g.logWarn("Rubicon: Error in video response");
      var o = [];
      return c.seatbid.forEach(function (n) {
        (n.bid || []).forEach(function (e) {
          var r = {
            requestId: d.bidId,
            currency: c.cur || "USD",
            creativeId: e.crid,
            cpm: e.price || 0,
            bidderCode: n.seat,
            ttl: 300,
            netRevenue: !1 !== _.netRevenue,
            width: e.w || g.deepAccess(d, "mediaTypes.video.w") || g.deepAccess(d, "params.video.playerWidth"),
            height: e.h || g.deepAccess(d, "mediaTypes.video.h") || g.deepAccess(d, "params.video.playerHeight")
          };
          e.id && (r.seatBidId = e.id), e.dealid && (r.dealId = e.dealid), e.adomain && g.deepSetValue(r, "meta.advertiserDomains", Array.isArray(e.adomain) ? e.adomain : [e.adomain]), g.deepAccess(e, "ext.bidder.rp.advid") && g.deepSetValue(r, "meta.advertiserId", e.ext.bidder.rp.advid);
          var t,
              i = g.deepAccess(c, "ext.responsetimemillis.rubicon");
          d && i && (d.serverResponseTimeMs = i), g.deepAccess(e, "ext.prebid.type") === p.d ? (r.mediaType = p.d, g.deepSetValue(r, "meta.mediaType", p.d), (t = g.deepAccess(e, "ext.prebid.targeting")) && "object" === h(t) && (r.adserverTargeting = t), e.ext.prebid.cache && "object" === h(e.ext.prebid.cache.vastXml) && e.ext.prebid.cache.vastXml.cacheId && e.ext.prebid.cache.vastXml.url ? (r.videoCacheKey = e.ext.prebid.cache.vastXml.cacheId, r.vastUrl = e.ext.prebid.cache.vastXml.url) : t && t.hb_uuid && t.hb_cache_host && t.hb_cache_path && (r.videoCacheKey = t.hb_uuid, r.vastUrl = "https://".concat(t.hb_cache_host).concat(t.hb_cache_path, "?uuid=").concat(t.hb_uuid)), e.adm && (r.vastXml = e.adm), e.nurl && (r.vastUrl = e.nurl), !r.vastUrl && e.nurl && (r.vastUrl = e.nurl)) : g.logWarn("Rubicon: video response received non-video media type"), o.push(r);
        });
      }), o;
    }

    var t = c.ads;
    return "object" !== h(d) || Array.isArray(d) || "video" !== m(d) || "object" !== h(t) || (t = t[d.adUnitCode]), !Array.isArray(t) || t.length < 1 ? [] : t.reduce(function (e, r, t) {
      if ("ok" !== r.status) return e;
      var i,
          n,
          o,
          a,
          s = Array.isArray(d) ? d[t] : d;
      return s && "object" === h(s) ? (i = {
        requestId: s.bidId,
        currency: "USD",
        creativeId: r.creative_id || "".concat(r.network || ""https://slate.com/human-interest/2020/11/,"-").concat(r.advertiser || ""),
        cpm: r.cpm || 0,
        dealId: r.deal,
        ttl: 300,
        netRevenue: !1 !== _.netRevenue,
        rubicon: {
          advertiserId: r.advertiser,
          networkId: r.network
        },
        meta: {
          advertiserId: r.advertiser,
          networkId: r.network,
          mediaType: p.b
        }
      }, r.creative_type && (i.mediaType = r.creative_type), r.adomain && (i.meta.advertiserDomains = Array.isArray(r.adomain) ? r.adomain : [r.adomain]), r.creative_type === p.d ? (i.width = s.params.video.playerWidth, i.height = s.params.video.playerHeight, i.vastUrl = r.creative_depot_url, i.impression_id = r.impression_id, i.videoCacheKey = r.impression_id) : (i.ad = (o = r.script, a = r.impression_id, "<html>n<head></head>n<body style="margin : 0; padding: 0;">nx3c!-- Rubicon Project Ad Tag --x3en<div data-rp-impression-id='".concat(a, "'>nn</div>n</body>n</html>")), n = y(u[r.size_id].split("x").map(function (e) {
        return Number(e);
      }), 2), i.width = n[0], i.height = n[1]), i.rubiconTargeting = (Array.isArray(r.targeting) ? r.targeting : []).reduce(function (e, r) {
        return e[r.key] = r.values[0], e;
      }, {
        rpfl_elemid: s.adUnitCode
      }), e.push(i)) : g.logError("Rubicon: bidRequest undefined at index position:".concat(t), d, c), e;
    }, []).sort(function (e, r) {
      return (r.cpm || 0) - (e.cpm || 0);
    });
  },
  getUserSyncs: function getUserSyncs(e, r, t, i) {
    if (!z && e.iframeEnabled) {
      var n = "";
      return t && "string" == typeof t.consentString && ("boolean" == typeof t.gdprApplies ? n += "?gdpr=".concat(Number(t.gdprApplies), "&gdpr_consent=").concat(t.consentString) : n += "?gdpr_consent=".concat(t.consentString)), i && (n += "".concat(n ? "&" : "?"https://slate.com/human-interest/2020/11/,"us_privacy=").concat(encodeURIComponent(i))), z = !0, {
        type: "iframe",
        url: "https://".concat(_.syncHost || "eus"https://slate.com/human-interest/2020/11/,".rubiconproject.com/usync.html") + n
      };
    }
  },
  transformBidParams: function transformBidParams(e) {
    return g.convertTypes({
      accountId: "number",
      siteId: "number",
      zoneId: "number"
    }, e);
  }
};

function S(e, r) {
  var t = v.b.getConfig("pageUrl"),
      t = e.params.referrer ? e.params.referrer : t || r.refererInfo.referer;
  return e.params.secure ? t.replace(/^http:/i, "https:") : t;
}

function j(e, r) {
  var t = e.params;

  if ("video" === r) {
    var i = [];
    return t.video && t.video.playerWidth && t.video.playerHeight ? i = [t.video.playerWidth, t.video.playerHeight] : Array.isArray(g.deepAccess(e, "mediaTypes.video.playerSize")) && 1 === e.mediaTypes.video.playerSize.length ? i = e.mediaTypes.video.playerSize[0] : Array.isArray(e.sizes) && 0 < e.sizes.length && Array.isArray(e.sizes[0]) && 1 < e.sizes[0].length && (i = e.sizes[0]), i;
  }

  var n = [];
  return Array.isArray(t.sizes) ? n = t.sizes : void 0 !== g.deepAccess(e, "mediaTypes.banner.sizes") ? n = a(e.mediaTypes.banner.sizes) : Array.isArray(e.sizes) && 0 < e.sizes.length ? n = a(e.sizes) : g.logWarn("Rubicon: no sizes are setup or found"), d(n);
}

function a(e) {
  return g.parseSizesInput(e).reduce(function (e, r) {
    var t = parseInt(u[r], 10);
    return t && e.push(t), e;
  }, []);
}

function s(e) {
  return "object" === h(g.deepAccess(e, "params.video")) && void 0 !== g.deepAccess(e, "mediaTypes.".concat(p.d));
}

function m(e, r) {
  var t = 1 < arguments.length && void 0 !== r && r;
  return s(e) ? -1 === ["outstream"https://slate.com/human-interest/2020/11/,"instream"].indexOf(g.deepAccess(e, "mediaTypes.".concat(p.d, ".context"))) ? void (t && g.logError("Rubicon: mediaTypes.video.context must be outstream or instream")) : j(e, "video").length < 2 ? void (t && g.logError("Rubicon: could not determine the playerSize of the video")) : (t && g.logMessage("Rubicon: making video request for adUnit", e.adUnitCode), "video") : 0 === j(e, "banner").length ? void (t && g.logError("Rubicon: could not determine the sizes for banner request")) : (t && g.logMessage("Rubicon: making banner request for adUnit", e.adUnitCode), "banner");
}

var c = function c() {
  return _ = {};
};

function d(e) {
  var n = [15, 2, 9];
  return e.sort(function (e, r) {
    var t = n.indexOf(e),
        i = n.indexOf(r);
    return -1 < t || -1 < i ? -1 === t ? 1 : -1 === i ? -1 : t - i : e - r;
  });
}

function f(e) {
  var r = parseInt(g.deepAccess(e, "params.video.size_id"));
  return isNaN(r) ? "outstream" === g.deepAccess(e, "mediaTypes.".concat(p.d, ".context")) ? 203 : 201 : r;
}

function C(e) {
  return {
    ranges: {
      low: [{
        max: 5,
        increment: .5
      }],
      medium: [{
        max: 20,
        increment: .1
      }],
      high: [{
        max: 20,
        increment: .01
      }],
      auto: [{
        max: 5,
        increment: .05
      }, {
        min: 5,
        max: 10,
        increment: .1
      }, {
        min: 10,
        max: 20,
        increment: .5
      }],
      dense: [{
        max: 3,
        increment: .01
      }, {
        min: 3,
        max: 8,
        increment: .05
      }, {
        min: 8,
        max: 20,
        increment: .5
      }],
      custom: e.getConfig("customPriceBucket") && e.getConfig("customPriceBucket").buckets
    }[e.getConfig("priceGranularity")]
  };
}

function I(r) {
  var t = !0,
      e = Object.prototype.toString.call([]),
      i = Object.prototype.toString.call(0),
      n = {
    mimes: e,
    protocols: e,
    maxduration: i,
    linearity: i,
    api: e
  };
  return Object.keys(n).forEach(function (e) {
    Object.prototype.toString.call(g.deepAccess(r, "mediaTypes.video." + e)) !== n[e] && (t = !1, g.logError("Rubicon: mediaTypes.video." + e + " is required and must be of type: " + n[e]));
  }), t;
}

function k(e) {
  var r = !1,
      t = ["asi"https://slate.com/human-interest/2020/11/,"sid"https://slate.com/human-interest/2020/11/,"hp"];
  return e.nodes && ((r = e.nodes.reduce(function (e, r) {
    return e ? t.every(function (e) {
      return r.hasOwnProperty(e);
    }) : e;
  }, !0)) || g.logError("Rubicon: required schain params missing")), r;
}

function w(e, r) {
  return "rp_schain" === e ? "rp_schain=".concat(r) : "".concat(e, "=").concat(encodeURIComponent(r));
}

var z = !1;
Object(i.registerBidder)(A);

}
}, [727]);
pbjsChunk([108], {
777: function _(e, t, r) {
e.exports = r(778);
},
778: function _(e, t, r) {
“use strict”;

Object.defineProperty(t, "__esModule", {
  value: !0
}), r.d(t, "spec", function () {
  return a;
}), r.d(t, "_isInbounds", function () {
  return m;
}), t._getPlatform = v;
var n = r(1),
    y = r(0),
    i = r(2),
    o = r(3),
    g = r(11),
    c = r(43);

function h(e, t) {
  return function (e) {
    if (Array.isArray(e)) return e;
  }(e) || function (e, t) {
    if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
    var r = [],
        n = !0,
        i = !1,
        s = void 0;

    try {
      for (var a, o = e[Symbol.iterator](); !(n = (a = o.next()).done) && (r.push(a.value), !t || r.length !== t); n = !0) {
        ;
      }
    } catch (e) {
      i = !0, s = e;
    } finally {
      try {
        n || null == o.return || o.return();
      } finally {
        if (i) throw s;
      }
    }

    return r;
  }(e, t) || function (e, t) {
    if (!e) return;
    if ("string" == typeof e) return s(e, t);
    var r = Object.prototype.toString.call(e).slice(8, -1);
    "Object" === r && e.constructor && (r = e.constructor.name);
    if ("Map" === r || "Set" === r) return Array.from(e);
    if ("Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) return s(e, t);
  }(e, t) || function () {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }();
}

function s(e, t) {
  (null == t || t > e.length) && (t = e.length);

  for (var r = 0, n = new Array(t); r < t; r++) {
    n[r] = e[r];
  }

  return n;
}

function d() {
  return (d = Object.assign || function (e) {
    for (var t = 1; t < arguments.length; t++) {
      var r = arguments[t];

      for (var n in r) {
        Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]);
      }
    }

    return e;
  }).apply(this, arguments);
}

function u(e, t, r) {
  return t in e ? Object.defineProperty(e, t, {
    value: r,
    enumerable: !0,
    configurable: !0,
    writable: !0
  }) : e[t] = r, e;
}

var p = "sonobi",
    b = Object(y.generateUUID)(),
    a = {
  code: p,
  supportedMediaTypes: [i.b, i.d],
  isBidRequestValid: function isBidRequestValid(e) {
    if (!e.params) return !1;
    if (!e.params.ad_unit && !e.params.placement_id) return !1;
    if (!Object(y.deepAccess)(e, "mediaTypes.banner") && !Object(y.deepAccess)(e, "mediaTypes.video")) return !1;

    if (Object(y.deepAccess)(e, "mediaTypes.banner")) {
      if (!Object(y.deepAccess)(e, "mediaTypes.banner.sizes") && !e.params.sizes) return !1;
    } else if (Object(y.deepAccess)(e, "mediaTypes.video")) {
      if ("outstream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !e.params.sizes) return !1;
      if ("instream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !Object(y.deepAccess)(e, "mediaTypes.video.playerSize")) return !1;
    }

    return !0;
  },
  buildRequests: function buildRequests(e, t) {
    var r = e.map(function (e) {
      var t = function (e) {
        if (e.params.ad_unit) return e.params.ad_unit;
        return e.params.placement_id;
      }(e);

      return /^[/]?[d]+[[/].+[/]?]?$/.test(t) ? (t = "/" === t.charAt(0) ? t : "/" + t, u({}, "".concat(t, "|").concat(e.bidId), "".concat(l(e)).concat(f(e)))) : /^[0-9a-fA-F]{20}$/.test(t) && 20 === t.length ? u({}, e.bidId, "".concat(t, "|").concat(l(e)).concat(f(e))) : void Object(y.logError)("The ad unit code or Sonobi Placement id for slot ".concat(e.bidId, " is invalid"));
    }),
        n = {};
    r.forEach(function (e) {
      d(n, e);
    });
    var i = {
      key_maker: JSON.stringify(n),
      ref: t.refererInfo.referer,
      s: Object(y.generateUUID)(),
      pv: b,
      vp: v(),
      lib_name: "prebid",
      lib_v: "4.17.0",
      us: 0
    };
    o.b.getConfig("userSync") && o.b.getConfig("userSync").syncsPerBidder && (i.us = o.b.getConfig("userSync").syncsPerBidder), c.a.canBidderRegisterSync("iframe", p) ? i.ius = 1 : i.ius = 0, Object(y.deepAccess)(e[0], "params.hfa") && (i.hfa = Object(y.deepAccess)(e[0], "params.hfa")), e[0].params.referrer && (i.ref = e[0].params.referrer), t && t.gdprConsent && (i.gdpr = t.gdprConsent.gdprApplies ? "true" : "false", t.gdprConsent.consentString && (i.consent_string = t.gdprConsent.consentString)), e[0].schain && (i.schain = JSON.stringify(e[0].schain)), Object(y.deepAccess)(e[0], "userId") && 0 < Object.keys(e[0].userId).length && (i.userid = JSON.stringify(e[0].userId));
    var s = e[0].params.keywords;
    if (s && (i.kw = s), t && t.uspConsent && (i.us_privacy = t.uspConsent), Object(y.isEmpty)(n)) return null;
    var a = "https://apex.go.sonobi.com/trinity.json";
    return Object(y.deepAccess)(e[0], "params.bid_request_url") && (a = Object(y.deepAccess)(e[0], "params.bid_request_url")), {
      method: "GET",
      url: a,
      withCredentials: !0,
      data: i,
      bidderRequests: e
    };
  },
  interpretResponse: function interpretResponse(e, l) {
    var f = e.body,
        m = [],
        v = l.data.ref;
    return 0 === Object.keys(f.slots).length || Object.keys(f.slots).forEach(function (e) {
      var t = f.slots[e],
          r = e.split("|").slice(-1)[0],
          n = function (e, t) {
        for (var r = 0; r < e.length; r++) {
          if (e[r].bidId === t) return e[r];
        }
      }(l.bidderRequests, r),
          i = null;

      "video" === t.sbi_ct && (i = "video"https://slate.com/human-interest/2020/11/,"outstream" === Object(y.deepAccess)(n, "mediaTypes.video.context") && (i = "outstream"));
      var s,
          a,
          o,
          c,
          d,
          u,
          p,
          b = j(i, v);
      t.sbi_aid && t.sbi_mouse && t.sbi_size && (o = void 0 === (a = (s = h(t.sbi_size.split("x"), 2))[0]) ? 1 : a, d = void 0 === (c = s[1]) ? 1 : c, u = {
        requestId: r,
        cpm: Number(t.sbi_mouse),
        width: Number(o),
        height: Number(d),
        ad: b(f.sbi_dc, t.sbi_aid),
        ttl: 500,
        creativeId: t.sbi_crid || t.sbi_aid,
        aid: t.sbi_aid,
        netRevenue: !0,
        currency: "USD"
      }, t.sbi_dozer && (u.dealId = t.sbi_dozer), "video" === i ? (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), delete u.ad, delete u.width, delete u.height) : "outstream" === i && n && (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), u.renderer = function (e, t) {
        var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {},
            n = g.a.install({
          id: t.aid,
          url: "https://mtrx.go.sonobi.com/sbi_outstream_renderer.js",
          config: r,
          loaded: !1,
          adUnitCode: e
        });

        try {
          n.setRender(O);
        } catch (e) {
          Object(y.logWarn)("Prebid Error calling setRender on renderer", e);
        }

        return n.setEventHandlers({
          impression: function impression() {
            return Object(y.logMessage)("Sonobi outstream video impression event");
          },
          loaded: function loaded() {
            return Object(y.logMessage)("Sonobi outstream video loaded event");
          },
          ended: function ended() {
            Object(y.logMessage)("Sonobi outstream renderer video event");
          }
        }), n;
      }(n.adUnitCode, u, Object(y.deepAccess)(n, "renderer.options")), p = Object(y.deepAccess)(n, "params.sizes"), Array.isArray(p) && Array.isArray(p[0]) && (p = p[0]), p && (u.width = p[0], u.height = p[1])), m.push(u));
    }), m;
  },
  getUserSyncs: function getUserSyncs(e, t) {
    var r = [];

    try {
      e.pixelEnabled && t[0].body.sbi_px.forEach(function (e) {
        r.push({
          type: e.type,
          url: e.url
        });
      });
    } catch (e) {}

    return r;
  }
};

function l(e) {
  return Object(y.deepAccess)(e, "mediaTypes.video") ? "" : e.params.sizes ? Object(y.parseSizesInput)(e.params.sizes).join(",") : Object(y.deepAccess)(e, "mediaTypes.banner.sizes") ? Object(y.parseSizesInput)(Object(y.deepAccess)(e, "mediaTypes.banner.sizes")).join(",") : e.sizes ? Object(y.parseSizesInput)(e.sizes).join(",") : void 0;
}

function f(e) {
  return e.params.floor ? "|f=".concat(e.params.floor) : "";
}

var j = function j(i, s) {
  return function (e, t) {
    return "video" === i || "outstream" === i ? (r = t, n = s, "https://".concat(e, "apex.go.sonobi.com/vast.xml?vid=").concat(r, "&ref=").concat(encodeURIComponent(n))) : '';
    var r, n;
  };
};

var m = function m(e) {
  var r = 0 < arguments.length && void 0 !== e ? e : window;
  return function () {
    var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0,
        t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : Number.MAX_SAFE_INTEGER;
    return r.innerWidth >= e && r.innerWidth < t;
  };
};

function v() {
  var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : window,
      t = m(e),
      r = 992,
      n = 768;
  return t(0, 768) ? "mobile" : t(n, r) ? "tablet" : "desktop";
}

function O(i) {
  i.renderer.push(function () {
    var e = h(i.getSize().split("x"), 2),
        t = e[0],
        r = e[1],
        n = new window.SbiOutstreamRenderer();
    n.init({
      vastUrl: i.vastUrl,
      height: r,
      width: t
    }), n.setRootElement(i.adUnitCode);
  });
}

Object(n.registerBidder)(a);

}
}, [777]);
pbjsChunk([106], {
787: function _(e, t, r) {
e.exports = r(788);
},
788: function _(e, t, r) {
“use strict”;

Object.defineProperty(t, "__esModule", {
  value: !0
}), r.d(t, "GOOGLE_CONSENT", function () {
  return B;
}), r.d(t, "spec", function () {
  return n;
});
var I = r(0),
    P = r(3),
    u = r(11),
    a = r(1),
    c = r(2);

function d(e) {
  return (d = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
    return _typeof(e);
  } : function (e) {
    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
  })(e);
}

var i = "spotx",
    B = {
  consented_providers: ["3"https://slate.com/human-interest/2020/11/,"7"https://slate.com/human-interest/2020/11/,"11"https://slate.com/human-interest/2020/11/,"12"https://slate.com/human-interest/2020/11/,"15"https://slate.com/human-interest/2020/11/,"20"https://slate.com/human-interest/2020/11/,"22"https://slate.com/human-interest/2020/11/,"35"https://slate.com/human-interest/2020/11/,"43"https://slate.com/human-interest/2020/11/,"46"https://slate.com/human-interest/2020/11/,"48"https://slate.com/human-interest/2020/11/,"55"https://slate.com/human-interest/2020/11/,"57"https://slate.com/human-interest/2020/11/,"61"https://slate.com/human-interest/2020/11/,"62"https://slate.com/human-interest/2020/11/,"66"https://slate.com/human-interest/2020/11/,"70"https://slate.com/human-interest/2020/11/,"80"https://slate.com/human-interest/2020/11/,"83"https://slate.com/human-interest/2020/11/,"85"https://slate.com/human-interest/2020/11/,"86"https://slate.com/human-interest/2020/11/,"89"https://slate.com/human-interest/2020/11/,"93"https://slate.com/human-interest/2020/11/,"108"https://slate.com/human-interest/2020/11/,"122"https://slate.com/human-interest/2020/11/,"124"https://slate.com/human-interest/2020/11/,"125"https://slate.com/human-interest/2020/11/,"126"https://slate.com/human-interest/2020/11/,"131"https://slate.com/human-interest/2020/11/,"134"https://slate.com/human-interest/2020/11/,"135"https://slate.com/human-interest/2020/11/,"136"https://slate.com/human-interest/2020/11/,"143"https://slate.com/human-interest/2020/11/,"144"https://slate.com/human-interest/2020/11/,"147"https://slate.com/human-interest/2020/11/,"149"https://slate.com/human-interest/2020/11/,"153"https://slate.com/human-interest/2020/11/,"154"https://slate.com/human-interest/2020/11/,"159"https://slate.com/human-interest/2020/11/,"161"https://slate.com/human-interest/2020/11/,"162"https://slate.com/human-interest/2020/11/,"165"https://slate.com/human-interest/2020/11/,"167"https://slate.com/human-interest/2020/11/,"171"https://slate.com/human-interest/2020/11/,"178"https://slate.com/human-interest/2020/11/,"184"https://slate.com/human-interest/2020/11/,"188"https://slate.com/human-interest/2020/11/,"192"https://slate.com/human-interest/2020/11/,"195"https://slate.com/human-interest/2020/11/,"196"https://slate.com/human-interest/2020/11/,"202"https://slate.com/human-interest/2020/11/,"209"https://slate.com/human-interest/2020/11/,"211"https://slate.com/human-interest/2020/11/,"218"https://slate.com/human-interest/2020/11/,"221"https://slate.com/human-interest/2020/11/,"228"https://slate.com/human-interest/2020/11/,"229"https://slate.com/human-interest/2020/11/,"230"https://slate.com/human-interest/2020/11/,"236"https://slate.com/human-interest/2020/11/,"239"https://slate.com/human-interest/2020/11/,"241"https://slate.com/human-interest/2020/11/,"253"https://slate.com/human-interest/2020/11/,"255"https://slate.com/human-interest/2020/11/,"259"https://slate.com/human-interest/2020/11/,"266"https://slate.com/human-interest/2020/11/,"271"https://slate.com/human-interest/2020/11/,"272"https://slate.com/human-interest/2020/11/,"274"https://slate.com/human-interest/2020/11/,"286"https://slate.com/human-interest/2020/11/,"291"https://slate.com/human-interest/2020/11/,"294"https://slate.com/human-interest/2020/11/,"303"https://slate.com/human-interest/2020/11/,"308"https://slate.com/human-interest/2020/11/,"310"https://slate.com/human-interest/2020/11/,"311"https://slate.com/human-interest/2020/11/,"313"https://slate.com/human-interest/2020/11/,"314"https://slate.com/human-interest/2020/11/,"316"https://slate.com/human-interest/2020/11/,"317"https://slate.com/human-interest/2020/11/,"322"https://slate.com/human-interest/2020/11/,"323"https://slate.com/human-interest/2020/11/,"327"https://slate.com/human-interest/2020/11/,"336"https://slate.com/human-interest/2020/11/,"338"https://slate.com/human-interest/2020/11/,"340"https://slate.com/human-interest/2020/11/,"348"https://slate.com/human-interest/2020/11/,"350"https://slate.com/human-interest/2020/11/,"358"https://slate.com/human-interest/2020/11/,"359"https://slate.com/human-interest/2020/11/,"363"https://slate.com/human-interest/2020/11/,"367"https://slate.com/human-interest/2020/11/,"370"https://slate.com/human-interest/2020/11/,"371"https://slate.com/human-interest/2020/11/,"384"https://slate.com/human-interest/2020/11/,"385"https://slate.com/human-interest/2020/11/,"389"https://slate.com/human-interest/2020/11/,"393"https://slate.com/human-interest/2020/11/,"394"https://slate.com/human-interest/2020/11/,"397"https://slate.com/human-interest/2020/11/,"398"https://slate.com/human-interest/2020/11/,"407"https://slate.com/human-interest/2020/11/,"414"https://slate.com/human-interest/2020/11/,"415"https://slate.com/human-interest/2020/11/,"424"https://slate.com/human-interest/2020/11/,"429"https://slate.com/human-interest/2020/11/,"430"https://slate.com/human-interest/2020/11/,"432"https://slate.com/human-interest/2020/11/,"436"https://slate.com/human-interest/2020/11/,"438"https://slate.com/human-interest/2020/11/,"440"https://slate.com/human-interest/2020/11/,"442"https://slate.com/human-interest/2020/11/,"443"https://slate.com/human-interest/2020/11/,"445"https://slate.com/human-interest/2020/11/,"448"https://slate.com/human-interest/2020/11/,"449"https://slate.com/human-interest/2020/11/,"453"https://slate.com/human-interest/2020/11/,"459"https://slate.com/human-interest/2020/11/,"479"https://slate.com/human-interest/2020/11/,"482"https://slate.com/human-interest/2020/11/,"486"https://slate.com/human-interest/2020/11/,"491"https://slate.com/human-interest/2020/11/,"492"https://slate.com/human-interest/2020/11/,"494"https://slate.com/human-interest/2020/11/,"495"https://slate.com/human-interest/2020/11/,"503"https://slate.com/human-interest/2020/11/,"505"https://slate.com/human-interest/2020/11/,"510"https://slate.com/human-interest/2020/11/,"522"https://slate.com/human-interest/2020/11/,"523"https://slate.com/human-interest/2020/11/,"528"https://slate.com/human-interest/2020/11/,"537"https://slate.com/human-interest/2020/11/,"540"https://slate.com/human-interest/2020/11/,"550"https://slate.com/human-interest/2020/11/,"559"https://slate.com/human-interest/2020/11/,"560"https://slate.com/human-interest/2020/11/,"568"https://slate.com/human-interest/2020/11/,"571"https://slate.com/human-interest/2020/11/,"574"https://slate.com/human-interest/2020/11/,"575"https://slate.com/human-interest/2020/11/,"576"https://slate.com/human-interest/2020/11/,"584"https://slate.com/human-interest/2020/11/,"585"https://slate.com/human-interest/2020/11/,"587"https://slate.com/human-interest/2020/11/,"588"https://slate.com/human-interest/2020/11/,"590"https://slate.com/human-interest/2020/11/,"591"https://slate.com/human-interest/2020/11/,"592"https://slate.com/human-interest/2020/11/,"595"https://slate.com/human-interest/2020/11/,"609"https://slate.com/human-interest/2020/11/,"621"https://slate.com/human-interest/2020/11/,"624"https://slate.com/human-interest/2020/11/,"723"https://slate.com/human-interest/2020/11/,"725"https://slate.com/human-interest/2020/11/,"733"https://slate.com/human-interest/2020/11/,"737"https://slate.com/human-interest/2020/11/,"776"https://slate.com/human-interest/2020/11/,"780"https://slate.com/human-interest/2020/11/,"782"https://slate.com/human-interest/2020/11/,"787"https://slate.com/human-interest/2020/11/,"797"https://slate.com/human-interest/2020/11/,"798"https://slate.com/human-interest/2020/11/,"802"https://slate.com/human-interest/2020/11/,"803"https://slate.com/human-interest/2020/11/,"814"https://slate.com/human-interest/2020/11/,"817"https://slate.com/human-interest/2020/11/,"820"https://slate.com/human-interest/2020/11/,"821"https://slate.com/human-interest/2020/11/,"827"https://slate.com/human-interest/2020/11/,"829"https://slate.com/human-interest/2020/11/,"839"https://slate.com/human-interest/2020/11/,"853"https://slate.com/human-interest/2020/11/,"864"https://slate.com/human-interest/2020/11/,"867"https://slate.com/human-interest/2020/11/,"874"https://slate.com/human-interest/2020/11/,"899"https://slate.com/human-interest/2020/11/,"904"https://slate.com/human-interest/2020/11/,"922"https://slate.com/human-interest/2020/11/,"926"https://slate.com/human-interest/2020/11/,"931"https://slate.com/human-interest/2020/11/,"932"https://slate.com/human-interest/2020/11/,"933"https://slate.com/human-interest/2020/11/,"938"https://slate.com/human-interest/2020/11/,"955"https://slate.com/human-interest/2020/11/,"973"https://slate.com/human-interest/2020/11/,"976"https://slate.com/human-interest/2020/11/,"979"https://slate.com/human-interest/2020/11/,"981"https://slate.com/human-interest/2020/11/,"985"https://slate.com/human-interest/2020/11/,"987"https://slate.com/human-interest/2020/11/,"991"https://slate.com/human-interest/2020/11/,"1003"https://slate.com/human-interest/2020/11/,"1024"https://slate.com/human-interest/2020/11/,"1025"https://slate.com/human-interest/2020/11/,"1027"https://slate.com/human-interest/2020/11/,"1028"https://slate.com/human-interest/2020/11/,"1029"https://slate.com/human-interest/2020/11/,"1033"https://slate.com/human-interest/2020/11/,"1034"https://slate.com/human-interest/2020/11/,"1040"https://slate.com/human-interest/2020/11/,"1047"https://slate.com/human-interest/2020/11/,"1048"https://slate.com/human-interest/2020/11/,"1051"https://slate.com/human-interest/2020/11/,"1052"https://slate.com/human-interest/2020/11/,"1053"https://slate.com/human-interest/2020/11/,"1054"https://slate.com/human-interest/2020/11/,"1062"https://slate.com/human-interest/2020/11/,"1063"https://slate.com/human-interest/2020/11/,"1067"https://slate.com/human-interest/2020/11/,"1072"https://slate.com/human-interest/2020/11/,"1085"https://slate.com/human-interest/2020/11/,"1092"https://slate.com/human-interest/2020/11/,"1095"https://slate.com/human-interest/2020/11/,"1097"https://slate.com/human-interest/2020/11/,"1099"https://slate.com/human-interest/2020/11/,"1100"https://slate.com/human-interest/2020/11/,"1107"https://slate.com/human-interest/2020/11/,"1126"https://slate.com/human-interest/2020/11/,"1127"https://slate.com/human-interest/2020/11/,"1143"https://slate.com/human-interest/2020/11/,"1149"https://slate.com/human-interest/2020/11/,"1152"https://slate.com/human-interest/2020/11/,"1162"https://slate.com/human-interest/2020/11/,"1166"https://slate.com/human-interest/2020/11/,"1167"https://slate.com/human-interest/2020/11/,"1170"https://slate.com/human-interest/2020/11/,"1171"https://slate.com/human-interest/2020/11/,"1172"https://slate.com/human-interest/2020/11/,"1188"https://slate.com/human-interest/2020/11/,"1192"https://slate.com/human-interest/2020/11/,"1199"https://slate.com/human-interest/2020/11/,"1201"https://slate.com/human-interest/2020/11/,"1204"https://slate.com/human-interest/2020/11/,"1205"https://slate.com/human-interest/2020/11/,"1211"https://slate.com/human-interest/2020/11/,"1212"https://slate.com/human-interest/2020/11/,"1215"https://slate.com/human-interest/2020/11/,"1220"https://slate.com/human-interest/2020/11/,"1225"https://slate.com/human-interest/2020/11/,"1226"https://slate.com/human-interest/2020/11/,"1227"https://slate.com/human-interest/2020/11/,"1230"https://slate.com/human-interest/2020/11/,"1232"https://slate.com/human-interest/2020/11/,"1236"https://slate.com/human-interest/2020/11/,"1241"https://slate.com/human-interest/2020/11/,"1248"https://slate.com/human-interest/2020/11/,"1250"https://slate.com/human-interest/2020/11/,"1252"https://slate.com/human-interest/2020/11/,"1268"https://slate.com/human-interest/2020/11/,"1275"https://slate.com/human-interest/2020/11/,"1276"https://slate.com/human-interest/2020/11/,"1284"https://slate.com/human-interest/2020/11/,"1286"https://slate.com/human-interest/2020/11/,"1298"https://slate.com/human-interest/2020/11/,"1301"https://slate.com/human-interest/2020/11/,"1307"https://slate.com/human-interest/2020/11/,"1312"https://slate.com/human-interest/2020/11/,"1313"https://slate.com/human-interest/2020/11/,"1317"https://slate.com/human-interest/2020/11/,"1329"https://slate.com/human-interest/2020/11/,"1336"https://slate.com/human-interest/2020/11/,"1344"https://slate.com/human-interest/2020/11/,"1345"https://slate.com/human-interest/2020/11/,"1356"https://slate.com/human-interest/2020/11/,"1362"https://slate.com/human-interest/2020/11/,"1365"https://slate.com/human-interest/2020/11/,"1375"https://slate.com/human-interest/2020/11/,"1403"https://slate.com/human-interest/2020/11/,"1409"https://slate.com/human-interest/2020/11/,"1411"https://slate.com/human-interest/2020/11/,"1415"https://slate.com/human-interest/2020/11/,"1416"https://slate.com/human-interest/2020/11/,"1419"https://slate.com/human-interest/2020/11/,"1423"https://slate.com/human-interest/2020/11/,"1440"https://slate.com/human-interest/2020/11/,"1442"https://slate.com/human-interest/2020/11/,"1449"https://slate.com/human-interest/2020/11/,"1451"https://slate.com/human-interest/2020/11/,"1455"https://slate.com/human-interest/2020/11/,"1456"https://slate.com/human-interest/2020/11/,"1468"https://slate.com/human-interest/2020/11/,"1496"https://slate.com/human-interest/2020/11/,"1503"https://slate.com/human-interest/2020/11/,"1509"https://slate.com/human-interest/2020/11/,"1512"https://slate.com/human-interest/2020/11/,"1514"https://slate.com/human-interest/2020/11/,"1517"https://slate.com/human-interest/2020/11/,"1520"https://slate.com/human-interest/2020/11/,"1525"https://slate.com/human-interest/2020/11/,"1540"https://slate.com/human-interest/2020/11/,"1547"https://slate.com/human-interest/2020/11/,"1548"https://slate.com/human-interest/2020/11/,"1555"https://slate.com/human-interest/2020/11/,"1558"https://slate.com/human-interest/2020/11/,"1570"https://slate.com/human-interest/2020/11/,"1575"https://slate.com/human-interest/2020/11/,"1577"https://slate.com/human-interest/2020/11/,"1579"https://slate.com/human-interest/2020/11/,"1583"https://slate.com/human-interest/2020/11/,"1584"https://slate.com/human-interest/2020/11/,"1591"https://slate.com/human-interest/2020/11/,"1598"https://slate.com/human-interest/2020/11/,"1603"https://slate.com/human-interest/2020/11/,"1608"https://slate.com/human-interest/2020/11/,"1613"https://slate.com/human-interest/2020/11/,"1616"https://slate.com/human-interest/2020/11/,"1626"https://slate.com/human-interest/2020/11/,"1631"https://slate.com/human-interest/2020/11/,"1633"https://slate.com/human-interest/2020/11/,"1638"https://slate.com/human-interest/2020/11/,"1642"https://slate.com/human-interest/2020/11/,"1648"https://slate.com/human-interest/2020/11/,"1651"https://slate.com/human-interest/2020/11/,"1652"https://slate.com/human-interest/2020/11/,"1653"https://slate.com/human-interest/2020/11/,"1660"https://slate.com/human-interest/2020/11/,"1665"https://slate.com/human-interest/2020/11/,"1667"https://slate.com/human-interest/2020/11/,"1669"https://slate.com/human-interest/2020/11/,"1671"https://slate.com/human-interest/2020/11/,"1674"https://slate.com/human-interest/2020/11/,"1677"https://slate.com/human-interest/2020/11/,"1678"https://slate.com/human-interest/2020/11/,"1682"https://slate.com/human-interest/2020/11/,"1684"https://slate.com/human-interest/2020/11/,"1697"https://slate.com/human-interest/2020/11/,"1703"https://slate.com/human-interest/2020/11/,"1705"https://slate.com/human-interest/2020/11/,"1716"https://slate.com/human-interest/2020/11/,"1720"https://slate.com/human-interest/2020/11/,"1721"https://slate.com/human-interest/2020/11/,"1722"https://slate.com/human-interest/2020/11/,"1725"https://slate.com/human-interest/2020/11/,"1732"https://slate.com/human-interest/2020/11/,"1733"https://slate.com/human-interest/2020/11/,"1735"https://slate.com/human-interest/2020/11/,"1739"https://slate.com/human-interest/2020/11/,"1741"https://slate.com/human-interest/2020/11/,"1745"https://slate.com/human-interest/2020/11/,"1750"https://slate.com/human-interest/2020/11/,"1753"https://slate.com/human-interest/2020/11/,"1760"https://slate.com/human-interest/2020/11/,"1765"https://slate.com/human-interest/2020/11/,"1769"https://slate.com/human-interest/2020/11/,"1776"https://slate.com/human-interest/2020/11/,"1780"https://slate.com/human-interest/2020/11/,"1782"https://slate.com/human-interest/2020/11/,"1786"https://slate.com/human-interest/2020/11/,"1791"https://slate.com/human-interest/2020/11/,"1794"https://slate.com/human-interest/2020/11/,"1799"https://slate.com/human-interest/2020/11/,"1800"https://slate.com/human-interest/2020/11/,"1801"https://slate.com/human-interest/2020/11/,"1810"https://slate.com/human-interest/2020/11/,"1827"https://slate.com/human-interest/2020/11/,"1831"https://slate.com/human-interest/2020/11/,"1832"https://slate.com/human-interest/2020/11/,"1834"https://slate.com/human-interest/2020/11/,"1837"https://slate.com/human-interest/2020/11/,"1840"https://slate.com/human-interest/2020/11/,"1843"https://slate.com/human-interest/2020/11/,"1844"https://slate.com/human-interest/2020/11/,"1845"https://slate.com/human-interest/2020/11/,"1858"https://slate.com/human-interest/2020/11/,"1859"https://slate.com/human-interest/2020/11/,"1863"https://slate.com/human-interest/2020/11/,"1866"https://slate.com/human-interest/2020/11/,"1870"https://slate.com/human-interest/2020/11/,"1872"https://slate.com/human-interest/2020/11/,"1875"https://slate.com/human-interest/2020/11/,"1878"https://slate.com/human-interest/2020/11/,"1880"https://slate.com/human-interest/2020/11/,"1882"https://slate.com/human-interest/2020/11/,"1883"https://slate.com/human-interest/2020/11/,"1889"https://slate.com/human-interest/2020/11/,"1892"https://slate.com/human-interest/2020/11/,"1896"https://slate.com/human-interest/2020/11/,"1898"https://slate.com/human-interest/2020/11/,"1899"https://slate.com/human-interest/2020/11/,"1902"https://slate.com/human-interest/2020/11/,"1905"https://slate.com/human-interest/2020/11/,"1911"https://slate.com/human-interest/2020/11/,"1922"https://slate.com/human-interest/2020/11/,"1928"https://slate.com/human-interest/2020/11/,"1929"https://slate.com/human-interest/2020/11/,"1934"https://slate.com/human-interest/2020/11/,"1942"https://slate.com/human-interest/2020/11/,"1943"https://slate.com/human-interest/2020/11/,"1944"https://slate.com/human-interest/2020/11/,"1945"https://slate.com/human-interest/2020/11/,"1958"https://slate.com/human-interest/2020/11/,"1960"https://slate.com/human-interest/2020/11/,"1962"https://slate.com/human-interest/2020/11/,"1963"https://slate.com/human-interest/2020/11/,"1964"https://slate.com/human-interest/2020/11/,"1967"https://slate.com/human-interest/2020/11/,"1968"https://slate.com/human-interest/2020/11/,"1978"https://slate.com/human-interest/2020/11/,"1985"https://slate.com/human-interest/2020/11/,"1986"https://slate.com/human-interest/2020/11/,"1987"https://slate.com/human-interest/2020/11/,"1998"https://slate.com/human-interest/2020/11/,"2003"https://slate.com/human-interest/2020/11/,"2007"https://slate.com/human-interest/2020/11/,"2012"https://slate.com/human-interest/2020/11/,"2013"https://slate.com/human-interest/2020/11/,"2027"https://slate.com/human-interest/2020/11/,"2035"https://slate.com/human-interest/2020/11/,"2038"https://slate.com/human-interest/2020/11/,"2039"https://slate.com/human-interest/2020/11/,"2044"https://slate.com/human-interest/2020/11/,"2047"https://slate.com/human-interest/2020/11/,"2052"https://slate.com/human-interest/2020/11/,"2056"https://slate.com/human-interest/2020/11/,"2059"https://slate.com/human-interest/2020/11/,"2062"https://slate.com/human-interest/2020/11/,"2064"https://slate.com/human-interest/2020/11/,"2068"https://slate.com/human-interest/2020/11/,"2070"https://slate.com/human-interest/2020/11/,"2072"https://slate.com/human-interest/2020/11/,"2078"https://slate.com/human-interest/2020/11/,"2079"https://slate.com/human-interest/2020/11/,"2084"https://slate.com/human-interest/2020/11/,"2088"https://slate.com/human-interest/2020/11/,"2090"https://slate.com/human-interest/2020/11/,"2095"https://slate.com/human-interest/2020/11/,"2100"https://slate.com/human-interest/2020/11/,"2103"https://slate.com/human-interest/2020/11/,"2107"https://slate.com/human-interest/2020/11/,"2109"https://slate.com/human-interest/2020/11/,"2113"https://slate.com/human-interest/2020/11/,"2115"https://slate.com/human-interest/2020/11/,"2121"https://slate.com/human-interest/2020/11/,"2127"https://slate.com/human-interest/2020/11/,"2130"https://slate.com/human-interest/2020/11/,"2133"https://slate.com/human-interest/2020/11/,"2137"https://slate.com/human-interest/2020/11/,"2140"https://slate.com/human-interest/2020/11/,"2141"https://slate.com/human-interest/2020/11/,"2145"https://slate.com/human-interest/2020/11/,"2147"https://slate.com/human-interest/2020/11/,"2150"https://slate.com/human-interest/2020/11/,"2156"https://slate.com/human-interest/2020/11/,"2166"https://slate.com/human-interest/2020/11/,"2170"https://slate.com/human-interest/2020/11/,"2171"https://slate.com/human-interest/2020/11/,"2176"https://slate.com/human-interest/2020/11/,"2177"https://slate.com/human-interest/2020/11/,"2179"https://slate.com/human-interest/2020/11/,"2183"https://slate.com/human-interest/2020/11/,"2186"https://slate.com/human-interest/2020/11/,"2192"https://slate.com/human-interest/2020/11/,"2198"https://slate.com/human-interest/2020/11/,"2202"https://slate.com/human-interest/2020/11/,"2205"https://slate.com/human-interest/2020/11/,"2214"https://slate.com/human-interest/2020/11/,"2216"https://slate.com/human-interest/2020/11/,"2219"https://slate.com/human-interest/2020/11/,"2220"https://slate.com/human-interest/2020/11/,"2222"https://slate.com/human-interest/2020/11/,"2223"https://slate.com/human-interest/2020/11/,"2224"https://slate.com/human-interest/2020/11/,"2225"https://slate.com/human-interest/2020/11/,"2227"https://slate.com/human-interest/2020/11/,"2228"https://slate.com/human-interest/2020/11/,"2234"https://slate.com/human-interest/2020/11/,"2238"https://slate.com/human-interest/2020/11/,"2247"https://slate.com/human-interest/2020/11/,"2251"https://slate.com/human-interest/2020/11/,"2253"https://slate.com/human-interest/2020/11/,"2262"https://slate.com/human-interest/2020/11/,"2264"https://slate.com/human-interest/2020/11/,"2271"https://slate.com/human-interest/2020/11/,"2276"https://slate.com/human-interest/2020/11/,"2278"https://slate.com/human-interest/2020/11/,"2279"https://slate.com/human-interest/2020/11/,"2282"https://slate.com/human-interest/2020/11/,"2290"https://slate.com/human-interest/2020/11/,"2292"https://slate.com/human-interest/2020/11/,"2295"https://slate.com/human-interest/2020/11/,"2299"https://slate.com/human-interest/2020/11/,"2305"https://slate.com/human-interest/2020/11/,"2306"https://slate.com/human-interest/2020/11/,"2310"https://slate.com/human-interest/2020/11/,"2311"https://slate.com/human-interest/2020/11/,"2312"https://slate.com/human-interest/2020/11/,"2315"https://slate.com/human-interest/2020/11/,"2320"https://slate.com/human-interest/2020/11/,"2325"https://slate.com/human-interest/2020/11/,"2328"https://slate.com/human-interest/2020/11/,"2331"https://slate.com/human-interest/2020/11/,"2334"https://slate.com/human-interest/2020/11/,"2335"https://slate.com/human-interest/2020/11/,"2336"https://slate.com/human-interest/2020/11/,"2337"https://slate.com/human-interest/2020/11/,"2343"https://slate.com/human-interest/2020/11/,"2346"https://slate.com/human-interest/2020/11/,"2354"https://slate.com/human-interest/2020/11/,"2357"https://slate.com/human-interest/2020/11/,"2358"https://slate.com/human-interest/2020/11/,"2359"https://slate.com/human-interest/2020/11/,"2366"https://slate.com/human-interest/2020/11/,"2370"https://slate.com/human-interest/2020/11/,"2373"https://slate.com/human-interest/2020/11/,"2376"https://slate.com/human-interest/2020/11/,"2377"https://slate.com/human-interest/2020/11/,"2380"https://slate.com/human-interest/2020/11/,"2382"https://slate.com/human-interest/2020/11/,"2387"https://slate.com/human-interest/2020/11/,"2389"https://slate.com/human-interest/2020/11/,"2392"https://slate.com/human-interest/2020/11/,"2394"https://slate.com/human-interest/2020/11/,"2400"https://slate.com/human-interest/2020/11/,"2403"https://slate.com/human-interest/2020/11/,"2405"https://slate.com/human-interest/2020/11/,"2406"https://slate.com/human-interest/2020/11/,"2407"https://slate.com/human-interest/2020/11/,"2410"https://slate.com/human-interest/2020/11/,"2411"https://slate.com/human-interest/2020/11/,"2413"https://slate.com/human-interest/2020/11/,"2414"https://slate.com/human-interest/2020/11/,"2415"https://slate.com/human-interest/2020/11/,"2416"https://slate.com/human-interest/2020/11/,"2418"https://slate.com/human-interest/2020/11/,"2422"https://slate.com/human-interest/2020/11/,"2425"https://slate.com/human-interest/2020/11/,"2427"https://slate.com/human-interest/2020/11/,"2435"https://slate.com/human-interest/2020/11/,"2437"https://slate.com/human-interest/2020/11/,"2440"https://slate.com/human-interest/2020/11/,"2441"https://slate.com/human-interest/2020/11/,"2447"https://slate.com/human-interest/2020/11/,"2453"https://slate.com/human-interest/2020/11/,"2459"https://slate.com/human-interest/2020/11/,"2461"https://slate.com/human-interest/2020/11/,"2462"https://slate.com/human-interest/2020/11/,"2464"https://slate.com/human-interest/2020/11/,"2467"https://slate.com/human-interest/2020/11/,"2468"https://slate.com/human-interest/2020/11/,"2472"https://slate.com/human-interest/2020/11/,"2477"https://slate.com/human-interest/2020/11/,"2481"https://slate.com/human-interest/2020/11/,"2484"https://slate.com/human-interest/2020/11/,"2486"https://slate.com/human-interest/2020/11/,"2492"https://slate.com/human-interest/2020/11/,"2493"https://slate.com/human-interest/2020/11/,"2496"https://slate.com/human-interest/2020/11/,"2497"https://slate.com/human-interest/2020/11/,"2498"https://slate.com/human-interest/2020/11/,"2499"https://slate.com/human-interest/2020/11/,"2504"https://slate.com/human-interest/2020/11/,"2506"https://slate.com/human-interest/2020/11/,"2510"https://slate.com/human-interest/2020/11/,"2511"https://slate.com/human-interest/2020/11/,"2512"https://slate.com/human-interest/2020/11/,"2517"https://slate.com/human-interest/2020/11/,"2526"https://slate.com/human-interest/2020/11/,"2527"https://slate.com/human-interest/2020/11/,"2531"https://slate.com/human-interest/2020/11/,"2532"https://slate.com/human-interest/2020/11/,"2534"https://slate.com/human-interest/2020/11/,"2542"https://slate.com/human-interest/2020/11/,"2544"https://slate.com/human-interest/2020/11/,"2552"https://slate.com/human-interest/2020/11/,"2555"https://slate.com/human-interest/2020/11/,"2559"https://slate.com/human-interest/2020/11/,"2563"https://slate.com/human-interest/2020/11/,"2564"https://slate.com/human-interest/2020/11/,"2567"https://slate.com/human-interest/2020/11/,"2568"https://slate.com/human-interest/2020/11/,"2569"https://slate.com/human-interest/2020/11/,"2571"https://slate.com/human-interest/2020/11/,"2572"https://slate.com/human-interest/2020/11/,"2573"https://slate.com/human-interest/2020/11/,"2575"https://slate.com/human-interest/2020/11/,"2577"https://slate.com/human-interest/2020/11/,"2579"https://slate.com/human-interest/2020/11/,"2583"https://slate.com/human-interest/2020/11/,"2584"https://slate.com/human-interest/2020/11/,"2586"https://slate.com/human-interest/2020/11/,"2589"https://slate.com/human-interest/2020/11/,"2595"https://slate.com/human-interest/2020/11/,"2596"https://slate.com/human-interest/2020/11/,"2597"https://slate.com/human-interest/2020/11/,"2601"https://slate.com/human-interest/2020/11/,"2604"https://slate.com/human-interest/2020/11/,"2605"https://slate.com/human-interest/2020/11/,"2609"https://slate.com/human-interest/2020/11/,"2610"https://slate.com/human-interest/2020/11/,"2612"https://slate.com/human-interest/2020/11/,"2614"https://slate.com/human-interest/2020/11/,"2621"https://slate.com/human-interest/2020/11/,"2622"https://slate.com/human-interest/2020/11/,"2624"https://slate.com/human-interest/2020/11/,"2628"https://slate.com/human-interest/2020/11/,"2629"https://slate.com/human-interest/2020/11/,"2632"https://slate.com/human-interest/2020/11/,"2634"https://slate.com/human-interest/2020/11/,"2636"https://slate.com/human-interest/2020/11/,"2639"https://slate.com/human-interest/2020/11/,"2643"https://slate.com/human-interest/2020/11/,"2645"https://slate.com/human-interest/2020/11/,"2646"https://slate.com/human-interest/2020/11/,"2647"https://slate.com/human-interest/2020/11/,"2649"https://slate.com/human-interest/2020/11/,"2650"https://slate.com/human-interest/2020/11/,"2651"https://slate.com/human-interest/2020/11/,"2652"https://slate.com/human-interest/2020/11/,"2656"https://slate.com/human-interest/2020/11/,"2657"https://slate.com/human-interest/2020/11/,"2658"https://slate.com/human-interest/2020/11/,"2660"https://slate.com/human-interest/2020/11/,"2661"https://slate.com/human-interest/2020/11/,"2662"https://slate.com/human-interest/2020/11/,"2663"https://slate.com/human-interest/2020/11/,"2664"https://slate.com/human-interest/2020/11/,"2669"https://slate.com/human-interest/2020/11/,"2670"https://slate.com/human-interest/2020/11/,"2673"https://slate.com/human-interest/2020/11/,"2676"https://slate.com/human-interest/2020/11/,"2677"https://slate.com/human-interest/2020/11/,"2678"https://slate.com/human-interest/2020/11/,"2681"https://slate.com/human-interest/2020/11/,"2682"https://slate.com/human-interest/2020/11/,"2684"https://slate.com/human-interest/2020/11/,"2685"https://slate.com/human-interest/2020/11/,"2686"https://slate.com/human-interest/2020/11/,"2689"https://slate.com/human-interest/2020/11/,"2690"https://slate.com/human-interest/2020/11/,"2691"https://slate.com/human-interest/2020/11/,"2695"https://slate.com/human-interest/2020/11/,"2698"https://slate.com/human-interest/2020/11/,"2699"https://slate.com/human-interest/2020/11/,"2702"https://slate.com/human-interest/2020/11/,"2704"https://slate.com/human-interest/2020/11/,"2705"https://slate.com/human-interest/2020/11/,"2706"https://slate.com/human-interest/2020/11/,"2707"https://slate.com/human-interest/2020/11/,"2709"https://slate.com/human-interest/2020/11/,"2710"https://slate.com/human-interest/2020/11/,"2713"https://slate.com/human-interest/2020/11/,"2714"https://slate.com/human-interest/2020/11/,"2727"https://slate.com/human-interest/2020/11/,"2729"https://slate.com/human-interest/2020/11/,"2739"https://slate.com/human-interest/2020/11/,"2758"https://slate.com/human-interest/2020/11/,"2765"https://slate.com/human-interest/2020/11/,"2766"https://slate.com/human-interest/2020/11/,"2767"https://slate.com/human-interest/2020/11/,"2768"https://slate.com/human-interest/2020/11/,"2770"https://slate.com/human-interest/2020/11/,"2771"https://slate.com/human-interest/2020/11/,"2772"https://slate.com/human-interest/2020/11/,"2776"https://slate.com/human-interest/2020/11/,"2777"https://slate.com/human-interest/2020/11/,"2778"https://slate.com/human-interest/2020/11/,"2779"https://slate.com/human-interest/2020/11/,"2780"https://slate.com/human-interest/2020/11/,"2783"https://slate.com/human-interest/2020/11/,"2784"https://slate.com/human-interest/2020/11/,"2786"https://slate.com/human-interest/2020/11/,"2787"https://slate.com/human-interest/2020/11/,"2791"https://slate.com/human-interest/2020/11/,"2792"https://slate.com/human-interest/2020/11/,"2793"https://slate.com/human-interest/2020/11/,"2797"https://slate.com/human-interest/2020/11/,"2798"https://slate.com/human-interest/2020/11/,"2801"https://slate.com/human-interest/2020/11/,"2802"https://slate.com/human-interest/2020/11/,"2803"https://slate.com/human-interest/2020/11/,"2805"https://slate.com/human-interest/2020/11/,"2808"https://slate.com/human-interest/2020/11/,"2809"https://slate.com/human-interest/2020/11/,"2810"https://slate.com/human-interest/2020/11/,"2811"https://slate.com/human-interest/2020/11/,"2812"https://slate.com/human-interest/2020/11/,"2813"https://slate.com/human-interest/2020/11/,"2814"https://slate.com/human-interest/2020/11/,"2817"https://slate.com/human-interest/2020/11/,"2818"https://slate.com/human-interest/2020/11/,"2824"https://slate.com/human-interest/2020/11/,"2826"https://slate.com/human-interest/2020/11/,"2827"https://slate.com/human-interest/2020/11/,"2829"https://slate.com/human-interest/2020/11/,"2830"https://slate.com/human-interest/2020/11/,"2831"https://slate.com/human-interest/2020/11/,"2832"https://slate.com/human-interest/2020/11/,"2834"https://slate.com/human-interest/2020/11/,"2836"https://slate.com/human-interest/2020/11/,"2838"https://slate.com/human-interest/2020/11/,"2840"https://slate.com/human-interest/2020/11/,"2842"https://slate.com/human-interest/2020/11/,"2843"https://slate.com/human-interest/2020/11/,"2844"https://slate.com/human-interest/2020/11/,"2850"https://slate.com/human-interest/2020/11/,"2851"https://slate.com/human-interest/2020/11/,"2852"https://slate.com/human-interest/2020/11/,"2854"https://slate.com/human-interest/2020/11/,"2858"https://slate.com/human-interest/2020/11/,"2860"https://slate.com/human-interest/2020/11/,"2862"https://slate.com/human-interest/2020/11/,"2864"https://slate.com/human-interest/2020/11/,"2865"https://slate.com/human-interest/2020/11/,"2866"https://slate.com/human-interest/2020/11/,"2867"https://slate.com/human-interest/2020/11/,"2868"https://slate.com/human-interest/2020/11/,"2869"https://slate.com/human-interest/2020/11/,"2871"]
},
    n = {
  code: i,
  gvlid: 165,
  aliases: ["spotx"],
  supportedMediaTypes: [c.d],
  isBidRequestValid: function isBidRequestValid(e) {
    if (e && "object" !== d(e.params)) return I.logError(i + ": params is not defined or is incorrect in the bidder settings."), !1;
    if (!I.deepAccess(e, "mediaTypes.video")) return I.logError(i + ": mediaTypes.video is not present in the bidder settings."), !1;
    var t = I.deepAccess(e, "mediaTypes.video.playerSize");
    if (!t || !I.isArray(t)) return I.logError(i + ": mediaTypes.video.playerSize is not defined in the bidder settings."), !1;
    if (!I.getBidIdParameter("channel_id", e.params)) return I.logError(i + ": channel_id is not present in bidder params"), !1;

    if (("outstream" == I.deepAccess(e, "mediaTypes.video.context") || "outstream" == I.deepAccess(e, "params.ad_unit")) && !I.getBidIdParameter("outstream_function", e.params)) {
      if (!I.getBidIdParameter("outstream_options", e.params)) return I.logError(i + ": please define outstream_options parameter or override the default SpotX outstream rendering by defining your own Outstream function using field outstream_function."), !1;
      if (!I.getBidIdParameter("slot", e.params.outstream_options)) return I.logError(i + ": please define parameters slot outstream_options object in the configuration."), !1;
    }

    return !0;
  },
  buildRequests: function buildRequests(e, h) {
    var y = h.refererInfo.referer,
        b = !!y.match(/^https:/);
    return e.map(function (e) {
      var t = I.getBidIdParameter("page", e.params) ? I.getBidIdParameter("page", e.params) : P.b.getConfig("pageUrl") ? P.b.getConfig("pageUrl") : y,
          r = I.getBidIdParameter("channel_id", e.params),
          a = null,
          d = I.deepAccess(e, "mediaTypes.video.playerSize"),
          i = d[0][0],
          n = d[0][1],
          o = b || (I.getBidIdParameter("secure", e.params) ? 1 : 0),
          s = {
        sdk_name: "Prebid 1+",
        versionOrtb: "2.3"
      };

      if ("" != I.getBidIdParameter("hide_skin", e.params) && (s.hide_skin = +!!I.getBidIdParameter("hide_skin", e.params)), "" != I.getBidIdParameter("ad_volume", e.params) && (s.ad_volume = I.getBidIdParameter("ad_volume", e.params)), "" != I.getBidIdParameter("ad_unit", e.params) && (s.ad_unit = I.getBidIdParameter("ad_unit", e.params)), "" != I.getBidIdParameter("outstream_options", e.params) && (s.outstream_options = I.getBidIdParameter("outstream_options", e.params)), "" != I.getBidIdParameter("outstream_function", e.params) && (s.outstream_function = I.getBidIdParameter("outstream_function", e.params)), "" != I.getBidIdParameter("custom", e.params) && (s.custom = I.getBidIdParameter("custom", e.params)), "" != I.getBidIdParameter("pre_market_bids", e.params) && I.isArray(I.getBidIdParameter("pre_market_bids", e.params))) {
        var p = I.getBidIdParameter("pre_market_bids", e.params);

        for (var m in (s.pre_market_bids = [], p)) {
          var u = p[m],
              c = "";
          u.vast_url ? c="<?xml version="1.0" encoding="utf-8"?><VAST version="2.0"><Ad><Wrapper><VASTAdTagURI>" + u.vast_url + "</VASTAdTagURI></Wrapper></Ad></VAST>" : u.vast_string && (c = u.vast_string), s.pre_market_bids.push({
            id: u.deal_id,
            seatbid: [{
              bid: [{
                impid: Date.now(),
                dealid: u.deal_id,
                price: u.price,
                adm: c
              }]
            }],
            cur: u.currency,
            ext: {
              event_log: [{}]
            }
          });
        }
      }

      var g = I.getBidIdParameter("mimes", e.params) || ["application/javascript"https://slate.com/human-interest/2020/11/,"video/mp4"https://slate.com/human-interest/2020/11/,"video/webm"],
          _ = {
        id: e.bidId,
        secure: o,
        video: {
          w: i,
          h: n,
          ext: s,
          mimes: g
        }
      };
      "" != I.getBidIdParameter("price_floor", e.params) && (_.bidfloor = I.getBidIdParameter("price_floor", e.params)), "" != I.getBidIdParameter("start_delay", e.params) && (_.video.startdelay = 0 + Boolean(I.getBidIdParameter("start_delay", e.params))), "" != I.getBidIdParameter("min_duration", e.params) && (_.video.minduration = I.getBidIdParameter("min_duration", e.params)), "" != I.getBidIdParameter("max_duration", e.params) && (_.video.maxduration = I.getBidIdParameter("max_duration", e.params)), "" != I.getBidIdParameter("placement_type", e.params) && (_.video.ext.placement = I.getBidIdParameter("placement_type", e.params)), "" != I.getBidIdParameter("position", e.params) && (_.video.ext.pos = I.getBidIdParameter("position", e.params)), e.crumbs && e.crumbs.pubcid && (a = e.crumbs.pubcid);
      var l = navigator.language ? "language" : "userLanguage",
          v = {
        id: r,
        imp: _,
        site: {
          id: "",
          page: t,
          content: "content"
        },
        device: {
          h: screen.height,
          w: screen.width,
          dnt: I.getDNT() ? 1 : 0,
          language: navigator[l].split("-")[0],
          make: navigator.vendor ? navigator.vendor : "",
          ua: navigator.userAgent
        },
        ext: {
          wrap_response: 1
        }
      };
      I.getBidIdParameter("number_of_ads", e.params) && (v.ext.number_of_ads = I.getBidIdParameter("number_of_ads", e.params));
      var f = {};
      return 1 == I.getBidIdParameter("spotx_all_google_consent", e.params) && (f.consented_providers_settings = B), h && h.gdprConsent && (f.consent = h.gdprConsent.consentString, void 0 !== h.gdprConsent.gdprApplies && I.deepSetValue(v, "regs.ext.gdpr", h.gdprConsent.gdprApplies ? 1 : 0)), h && h.uspConsent && I.deepSetValue(v, "regs.ext.us_privacy", h.uspConsent), I.deepAccess(e, "userId.id5id.uid") && (f.eids = f.eids || [], f.eids.push({
        source: "id5-sync.com",
        uids: [{
          id: e.userId.id5id.uid
        }],
        ext: e.userId.id5id.ext || {}
      })), a && (f.fpc = a), e && e.schain && (v.source = {
        ext: {
          schain: e.schain
        }
      }), e && e.userId && e.userId.tdid && (f.eids = f.eids || [], f.eids.push({
        source: "adserver.org",
        uids: [{
          id: e.userId.tdid,
          ext: {
            rtiPartner: "TDID"
          }
        }]
      })), I.isEmpty(f) || (v.user = {
        ext: f
      }), {
        method: "POST",
        url: "https://search.spotxchange.com/openrtb/2.3/dados/" + r,
        data: v,
        bidRequest: h
      };
    });
  },
  interpretResponse: function interpretResponse(e, s) {
    var p = [],
        m = e.body;
    return m && I.isArray(m.seatbid) && I._each(m.seatbid, function (e) {
      I._each(e.bid, function (t) {
        var e = {};

        for (var r in s.bidRequest.bids) {
          t.impid == s.bidRequest.bids[r].bidId && (e = s.bidRequest.bids[r]);
        }

        I._each(e.params.pre_market_bids, function (e) {
          e.deal_id == t.id && (t.price = e.price, m.cur = e.currency);
        });

        var a = {
          requestId: e.bidId,
          currency: m.cur || "USD",
          cpm: t.price,
          creativeId: t.crid || "",
          dealId: t.dealid || "",
          ttl: 360,
          netRevenue: !0,
          channel_id: m.id,
          cache_key: t.ext.cache_key,
          vastUrl: "https://search.spotxchange.com/ad/vast.html?key=" + t.ext.cache_key,
          videoCacheKey: t.ext.cache_key,
          mediaType: c.d,
          width: t.w,
          height: t.h
        };
        a.meta = a.meta || {}, t && t.adomain && 0 < t.adomain.length && (a.meta.advertiserDomains = t.adomain);
        var d = I.deepAccess(e, "mediaTypes.video.context"),
            i = I.deepAccess(e, "params.ad_unit");

        if ("outstream" == d || "outstream" == i) {
          var n = I.deepAccess(e, "mediaTypes.video.playerSize"),
              o = u.a.install({
            id: 0,
            url: "//",
            config: {
              adText: "SpotX Outstream Video Ad via Prebid.js",
              player_width: n[0][0],
              player_height: n[0][1],
              content_page_url: I.deepAccess(s, "data.site.page"),
              ad_mute: +!!I.deepAccess(e, "params.ad_mute"),
              hide_skin: +!!I.deepAccess(e, "params.hide_skin"),
              outstream_options: I.deepAccess(e, "params.outstream_options"),
              outstream_function: I.deepAccess(e, "params.outstream_function")
            }
          });

          try {
            o.setRender(g), o.setEventHandlers({
              impression: function impression() {
                return I.logMessage("SpotX outstream video impression event");
              },
              loaded: function loaded() {
                return I.logMessage("SpotX outstream video loaded event");
              },
              ended: function ended() {
                I.logMessage("SpotX outstream renderer video event");
              }
            });
          } catch (e) {
            I.logWarn("Prebid Error calling setRender or setEve,tHandlers on renderer", e);
          }

          a.renderer = o;
        }

        p.push(a);
      });
    }), p;
  }
};

function g(e) {
  var t = function (e) {
    var t = I.getBidIdParameter("slot", e.renderer.config.outstream_options);
    I.logMessage("[SPOTX][renderer] Handle SpotX outstream renderer");
    var r = window.document.createElement("script");
    r.type = "text/javascript", r.src = "https://js.spotx.tv/easi/v1/" + e.channel_id + ".js";
    var a = {};
    a["data-spotx_channel_id"] = "" + e.channel_id, a["data-spotx_vast_url"] = "" + e.vastUrl, a["data-spotx_content_page_url"] = e.renderer.config.content_page_url, a["data-spotx_ad_unit"] = "incontent", I.logMessage("[SPOTX][renderer] Default beahavior"), I.getBidIdParameter("ad_mute", e.renderer.config.outstream_options) && (a["data-spotx_ad_mute"] = "1"), a["data-spotx_collapse"] = "0", a["data-spotx_autoplay"] = "1", a["data-spotx_blocked_autoplay_override_mode"] = "1", a["data-spotx_video_slot_can_autoplay"] = "1";
    var d,
        i,
        n,
        o,
        s,
        p,
        m = I.getBidIdParameter("playersize_auto_adapt", e.renderer.config.outstream_options);
    m && I.isBoolean(m) && !0 === m && (e.width && I.isNumber(e.width) && e.height && I.isNumber(e.height) ? (d = e.width / e.height, i = window.document.getElementById(t).clientWidth, n = e.renderer.config.player_width, o = e.renderer.config.player_height, p = s = 0, i < n && (o = (n = i) / d), p = d <= 1 ? (s = Math.round(o * d), o) : (s = n, Math.round(n / d)), a["data-spotx_content_width"] = "" + s, a["data-spotx_content_height"] = "" + p) : I.logWarn("[SPOTX][renderer] PlayerSize auto adapt: bid.width and bid.height are incorrect"));
    var u = I.getBidIdParameter("custom_override", e.renderer.config.outstream_options);
    if (u && I.isPlainObject(u)) for (var c in (I.logMessage("[SPOTX][renderer] Custom behavior."), u)) {
      u.hasOwnProperty(c) && ("channel_id" === c || "vast_url" === c || "content_page_url" === c || "ad_unit" === c ? I.logWarn("[SPOTX][renderer] Custom behavior: following option cannot be overridden: " + c) : a["data-spotx_" + c] = u[c]);
    }

    for (var g in a) {
      a.hasOwnProperty(g) && r.setAttribute(g, a[g]);
    }

    return r;
  }(e);

  if (null != e.renderer.config.outstream_function && "function" == typeof e.renderer.config.outstream_function) e.renderer.config.outstream_function(e, t);else try {
    var r,
        a,
        d,
        i = I.getBidIdParameter("in_iframe", e.renderer.config.outstream_options);
    i && "IFRAME" == window.document.getElementById(i).nodeName ? (!(a = (r = window.document.getElementById(i)).contentDocument) && r.contentWindow && (a = r.contentWindow.document), a.body.appendChild(t)) : (d = I.getBidIdParameter("slot", e.renderer.config.outstream_options)) && window.document.getElementById(d) ? window.document.getElementById(d).appendChild(t) : window.document.getElementsByTagName("head")[0].appendChild(t);
  } catch (e) {
    I.logError("[SPOTX][renderer] Error:" + e.message);
  }
}

Object(a.registerBidder)(n);

}
}, [787]);
pbjsChunk([99], {
803: function _(e, t, r) {
e.exports = r(804);
},
804: function _(e, t, r) {
“use strict”;

Object.defineProperty(t, "__esModule", {
  value: !0
}), r.d(t, "spec", function () {
  return i;
});
var n = r(1),
    a = r(0),
    p = 12,
    c = 11,
    u = 0,
    g = 22,
    i = {
  code: "teads",
  gvlid: 132,
  supportedMediaTypes: ["video"https://slate.com/human-interest/2020/11/,"banner"],
  isBidRequestValid: function isBidRequestValid(e) {
    var t,
        r,
        n = !1;
    return void 0 !== e.params && (t = s(a.getValue(e.params, "placementId")), r = s(a.getValue(e.params, "pageId")), n = t && r), n || a.logError("Teads placementId and pageId parameters are required. Bid aborted."), n;
  },
  buildRequests: function buildRequests(e, t) {
    var r,
        n = e.map(f),
        i = {
      referrer: function (e) {
        var t = "";
        e && e.refererInfo && e.refererInfo.referer && (t = e.refererInfo.referer);
        return t;
      }(t),
      pageReferrer: document.referrer,
      networkBandwidth: (r = window.navigator) && r.connection && 0 <= r.connection.downlink ? r.connection.downlink.toString() : "",
      timeToFirstByte: function (e) {
        var t = e.performance || e.webkitPerformance || e.msPerformance || e.mozPerformance,
            r = t && "function" == typeof t.getEntriesByType && "[object Function]" === Object.prototype.toString.call(t.getEntriesByType) && t.getEntriesByType("navigation")[0] && t.getEntriesByType("navigation")[0].responseStart && t.getEntriesByType("navigation")[0].requestStart && 0 < t.getEntriesByType("navigation")[0].responseStart && 0 < t.getEntriesByType("navigation")[0].requestStart && Math.round(t.getEntriesByType("navigation")[0].responseStart - t.getEntriesByType("navigation")[0].requestStart);
        if (r) return r.toString();
        var n = t && t.timing.responseStart && t.timing.requestStart && 0 < t.timing.responseStart && 0 < t.timing.requestStart && t.timing.responseStart - t.timing.requestStart;
        return n ? n.toString() : "";
      }(window),
      data: n,
      deviceWidth: screen.width,
      hb_version: "4.17.0"
    };
    e[0].schain && (i.schain = e[0].schain);
    var a,
        s,
        o,
        d = t.gdprConsent;
    return t && d && (a = "boolean" == typeof d.gdprApplies, s = "string" == typeof d.consentString, o = a ? function (e, t, r) {
      var n = p;
      e ? function (e, t) {
        return e && 1 === t ? e.hasGlobalScope || e.hasGlobalConsent : !(!e || 2 !== t) && !e.isServiceSpecific;
      }(t, r) && (n = c) : n = u;
      return n;
    }(d.gdprApplies, d.vendorData, d.apiVersion) : g, i.gdpr_iab = {
      consent: s ? d.consentString : "",
      status: o,
      apiVersion: d.apiVersion
    }), t && t.uspConsent && (i.us_privacy = t.uspConsent), {
      method: "POST",
      url: "https://a.teads.tv/hb/bid-request",
      data: JSON.stringify(i)
    };
  },
  interpretResponse: function interpretResponse(e) {
    var r = [];
    return (e = e.body).responses && e.responses.forEach(function (e) {
      var t = {
        cpm: e.cpm,
        width: e.width,
        height: e.height,
        currency: e.currency,
        netRevenue: !0,
        ttl: e.ttl,
        ad: e.ad,
        requestId: e.bidId,
        creativeId: e.creativeId,
        placementId: e.placementId
      };
      e.dealId && (t.dealId = e.dealId), r.push(t);
    }), r;
  }
};

function f(e) {
  var t,
      r = {},
      n = a.getValue(e.params, "placementId"),
      i = a.getValue(e.params, "pageId");
  return r.sizes = (t = e, a.parseSizesInput(function (e) {
    var t = a.deepAccess(e, "mediaTypes.video.playerSize"),
        r = a.deepAccess(e, "mediaTypes.video.sizes"),
        n = a.deepAccess(e, "mediaTypes.banner.sizes");
    return a.isArray(n) || a.isArray(t) || a.isArray(r) ? [n, r, t].reduce(function (t, e) {
      return a.isArray(e) && (a.isArray(e[0]) ? e.forEach(function (e) {
        t.push(e);
      }) : t.push(e)), t;
    }, []) : e.sizes;
  }(t))), r.bidId = a.getBidIdParameter("bidId", e), r.bidderRequestId = a.getBidIdParameter("bidderRequestId", e), r.placementId = parseInt(n, 10), r.pageId = parseInt(i, 10), r.adUnitCode = a.getBidIdParameter("adUnitCode", e), r.auctionId = a.getBidIdParameter("auctionId", e), r.transactionId = a.getBidIdParameter("transactionId", e), r;
}

function s(e) {
  return 0 < parseInt(e);
}

Object(n.registerBidder)(i);

}
}, [803]);
pbjsChunk([90], {
823: function _(e, r, t) {
e.exports = t(824);
},
824: function _(e, r, t) {
“use strict”;

Object.defineProperty(r, "__esModule", {
  value: !0
}), t.d(r, "tripleliftAdapterSpec", function () {
  return m;
});
var n = t(2),
    i = t(1),
    u = t(0),
    a = t(3);

function p() {
  return (p = Object.assign || function (e) {
    for (var r = 1; r < arguments.length; r++) {
      var t = arguments[r];

      for (var n in t) {
        Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
      }
    }

    return e;
  }).apply(this, arguments);
}

function c(e) {
  return (c = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
    return _typeof(e);
  } : function (e) {
    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
  })(e);
}

function s(r, e) {
  var t,
      n = Object.keys(r);
  return Object.getOwnPropertySymbols && (t = Object.getOwnPropertySymbols(r), e && (t = t.filter(function (e) {
    return Object.getOwnPropertyDescriptor(r, e).enumerable;
  })), n.push.apply(n, t)), n;
}

function d(i) {
  for (var e = 1; e < arguments.length; e++) {
    var o = null != arguments[e] ? arguments[e] : {};
    e % 2 ? s(Object(o), !0).forEach(function (e) {
      var r, t, n;
      r = i, n = o[t = e], t in r ? Object.defineProperty(r, t, {
        value: n,
        enumerable: !0,
        configurable: !0,
        writable: !0
      }) : r[t] = n;
    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(o)) : s(Object(o)).forEach(function (e) {
      Object.defineProperty(i, e, Object.getOwnPropertyDescriptor(o, e));
    });
  }

  return i;
}

function f(e) {
  return function (e) {
    if (Array.isArray(e)) return o(e);
  }(e) || function (e) {
    if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e);
  }(e) || function (e, r) {
    if (!e) return;
    if ("string" == typeof e) return o(e, r);
    var t = Object.prototype.toString.call(e).slice(8, -1);
    "Object" === t && e.constructor && (t = e.constructor.name);
    if ("Map" === t || "Set" === t) return Array.from(e);
    if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r);
  }(e) || function () {
    throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }();
}

function o(e, r) {
  (null == r || r > e.length) && (r = e.length);

  for (var t = 0, n = new Array(r); t < r; t++) {
    n[t] = e[t];
  }

  return n;
}

var l = !0,
    y = null,
    m = {
  gvlid: 28,
  code: "triplelift",
  supportedMediaTypes: [n.b, n.d],
  isBidRequestValid: function isBidRequestValid(e) {
    return void 0 !== e.params.inventoryCode;
  },
  buildRequests: function buildRequests(e, r) {
    var t,
        n = "https://tlx.3lift.com/header/auction?",
        i = function (e) {
      var r = {},
          t = e[0].schain,
          n = function () {
        var e = {},
            r = p({}, a.b.getConfig("fpd.context")),
            t = p({}, a.b.getConfig("fpd.user"));
        return g(e, r), g(e, t), e;
      }();

      r.imp = e.map(function (e, r) {
        var t = {
          id: r,
          tagid: e.params.inventoryCode,
          floor: function (e) {
            var r = null;
            {
              var t;
              "function" == typeof e.getFloor && ("object" !== c(t = e.getFloor({
                currency: "USD",
                mediaType: "banner",
                size: S(e.sizes)
              })) || "USD" !== t.currency || isNaN(parseFloat(t.floor)) || (r = parseFloat(t.floor)));
            }
            return null !== r ? r : e.params.floor;
          }(e)
        };
        return b(e) ? t.video = function (e) {
          var r = d(d({}, e.params.video), e.mediaTypes.video);
          r.w || (r.w = r.playerSize[0][0]);
          r.h || (r.h = r.playerSize[0][1]);
          "instream" === r.context && (r.placement = 1);
          return delete r.playerSize, r;
        }(e) : e.mediaTypes.banner && (t.banner = {
          format: S(e.sizes)
        }), t;
      });
      var i = [].concat(f(function (e) {
        return v(e, "tdid"https://slate.com/human-interest/2020/11/,"adserver.org"https://slate.com/human-interest/2020/11/,"TDID");
      }(e)), f(function (e) {
        return v(e, "idl_env"https://slate.com/human-interest/2020/11/,"liveramp.com"https://slate.com/human-interest/2020/11/,"idl");
      }(e)), f(function (e) {
        return v(e, "criteoId"https://slate.com/human-interest/2020/11/,"criteo.com"https://slate.com/human-interest/2020/11/,"criteoId");
      }(e)));
      0 < i.length && (r.user = {
        ext: {
          eids: i
        }
      });

      var o = function (e, r) {
        var t = {};
        u.isEmpty(e) || (t.schain = d({}, e));
        u.isEmpty(r) || (t.fpd = d({}, r));
        return t;
      }(t, n);

      u.isEmpty(o) || (r.ext = o);
      return r;
    }(e);

    return n = u.tryAppendQueryString(n, "lib"https://slate.com/human-interest/2020/11/,"prebid"), n = u.tryAppendQueryString(n, "v"https://slate.com/human-interest/2020/11/,"4.17.0"), r && r.refererInfo && (t = r.refererInfo.referer, n = u.tryAppendQueryString(n, "referrer", t)), r && r.timeout && (n = u.tryAppendQueryString(n, "tmax", r.timeout)), r && r.gdprConsent && (void 0 !== r.gdprConsent.gdprApplies && (l = r.gdprConsent.gdprApplies, n = u.tryAppendQueryString(n, "gdpr", l.toString())), void 0 !== r.gdprConsent.consentString && (y = r.gdprConsent.consentString, n = u.tryAppendQueryString(n, "cmp_cs", y))), r && r.uspConsent && (n = u.tryAppendQueryString(n, "us_privacy", r.uspConsent)), !0 === a.b.getConfig("coppa") && (n = u.tryAppendQueryString(n, "coppa", !0)), n.lastIndexOf("&") === n.length - 1 && (n = n.substring(0, n.length - 1)), u.logMessage("tlCall request built: " + n), {
      method: "POST",
      url: n,
      data: i,
      bidderRequest: r
    };
  },
  interpretResponse: function interpretResponse(e, r) {
    var t = r.bidderRequest;
    return (e.body.bids || []).map(function (e) {
      return function (e, r) {
        var t = {},
            n = r.width || 1,
            i = r.height || 1,
            o = r.deal_id || "",
            u = r.crid || "",
            a = e.bids[r.imp_id];
        0 != r.cpm && r.ad && (t = {
          requestId: a.bidId,
          cpm: r.cpm,
          width: n,
          height: i,
          netRevenue: !0,
          ad: r.ad,
          creativeId: u,
          dealId: o,
          currency: "USD",
          ttl: 300,
          tl_source: r.tl_source,
          meta: {}
        }, b(a) && (t.vastXml = r.ad, t.mediaType = "video"), r.advertiser_name && (t.meta.advertiserName = r.advertiser_name));
        return t;
      }(t, e);
    });
  },
  getUserSyncs: function getUserSyncs(e, r, t, n) {
    var i = function (e) {
      if (!e) return;
      if (e.iframeEnabled) return "iframe";
      if (e.pixelEnabled) return "image";
    }(e);

    if (i) {
      var o = "https://eb2.3lift.com/sync?";
      return "image" === i && (o = u.tryAppendQueryString(o, "px", 1), o = u.tryAppendQueryString(o, "src"https://slate.com/human-interest/2020/11/,"prebid")), null !== y && (o = u.tryAppendQueryString(o, "gdpr", l), o = u.tryAppendQueryString(o, "cmp_cs", y)), n && (o = u.tryAppendQueryString(o, "us_privacy", n)), [{
        type: i,
        url: o
      }];
    }
  }
};

function b(e) {
  return e.mediaTypes.video && e.mediaTypes.video.context && "instream" === e.mediaTypes.video.context.toLowerCase();
}

function g(r, t) {
  u.isEmpty(t) || Object.keys(t).forEach(function (e) {
    null != t[e] && (r[e] = t[e]);
  });
}

function v(e, r, t, n) {
  return e.map((u = r, function (e) {
    return e && e.userId && e.userId[u];
  })).filter(function (e) {
    return !!e;
  }).map((i = t, o = n, function (e) {
    return {
      source: i,
      uids: [{
        id: e,
        ext: {
          rtiPartner: o
        }
      }]
    };
  }));
  var i, o, u;
}

function S(e) {
  return e.filter(h).map(function (e) {
    return {
      w: e[0],
      h: e[1]
    };
  });
}

function h(e) {
  return 2 === e.length && "number" == typeof e[0] && "number" == typeof e[1];
}

Object(i.registerBidder)(m);

}
}, [823]);
pbjs.processQueue();
}, {}];
window.modules[“via.legacy”] = [function(require,module,exports){“use strict”;

DS.service(“via”, function () {
“use strict”; // remove via from url, to be used after amplitude logs it to prevent users from sharing such urls

function removeFromLocation() {
var url = new URL(location.href);
url.searchParams.delete(“via”);
history.replaceState(null, “”, url.toString());
} // and add via param to any outbound links

function addViaToUrl(href, via) {
if (!href || href.substr(0, 1) === “#”) {
return href; // don’t add to jumps on the current page, e.g. “Skip to main content”
}

var url = new URL(href);
var apexDomain = new URL(location.href).hostname.split(".").slice(-2).join(".");

if (url.hostname.indexOf(apexDomain) === -1) {
  return href; // don't add it to external links
}

url.searchParams.set("via", via);
return url.toString();

} // keys correspond to “page_types” in editable_components.yml

var PREFIXES = {
article: “article”,
homepage: “homepage”,
“vertical front”: “section”,
“rubric front”: “rubric”
};
var pageType;

function setPageType(amplitudePageType) {
pageType = PREFIXES[amplitudePageType];
}

var DELIMITER = “_”;

function concatVia(node, via) {
var tag = node.dataset && node.dataset.via;

if (tag) {
  via = (via.length ? tag + DELIMITER : tag) + via;
}

return via;

}

function addToClickedLinks() {
document.documentElement.addEventListener(“click”, function (e) {
var a;
var via = “”; // detect link nodes and collect via directives to append to the href

  var node = e.target; // the element where this event originated may have been removed from the dom, e.g. in the case of the OIL CMP which disappears after you interact with it

  while (node && node !== e.currentTarget) {
    if (node.tagName === "A") {
      a = node;
    }

    via = concatVia(node, via);
    node = node.parentNode;
  }

  if (a && via) {
    if (pageType) {
      via = pageType + DELIMITER + via;
    }

    a.href = addViaToUrl(a.href, via);
  }
});

}

function addToSubmittedForms() {
document.documentElement.addEventListener(“submit”, function (e) {
var form = e.target; // collect via directives

  var via = "";
  var node = e.target;

  while (node !== e.currentTarget) {
    via = concatVia(node, via);
    node = node.parentNode;
  }

  if (via) {
    if (pageType) {
      via = pageType + DELIMITER + via;
    } // dynamically create a hidden input for the form url


    var input = document.createElement("input");
    input.type = "hidden";
    input.name = "via";
    input.value = via;
    form.appendChild(input);
  }
});

} // start listening only once, when first injected

addToClickedLinks();
addToSubmittedForms();
return {
setPageType: setPageType,
removeFromLocation: removeFromLocation
};
});
}, {}];
window.modules[“visibility.legacy”] = [function(require,module,exports){“use strict”;

DS.service(“$visibility”, [“$document”https://slate.com/human-interest/2020/11/,”$window”https://slate.com/human-interest/2020/11/,”_throttle”https://slate.com/human-interest/2020/11/,”Eventify”, function ($document, $window, _throttle, Eventify) {
var list = [],
Visible,
VisibleEvent;
/**
* @param {number} a
* @param {number} b
* @returns {*}
* @see http://jsperf.com/math-min-vs-if-condition-vs/8
*/

function min(a, b) {
return a < b ? a : b;
}
/**
* @param {number} a
* @param {number} b
* @returns {*}
* @see http://jsperf.com/math-min-vs-if-condition-vs/8
*/

function max(a, b) {
return a > b ? a : b;
}
/**
* Fast loop through watched elements
*/

function onScroll() {
list.forEach(updateVisibility);
}
/**
* updates seen property
* @param {Visble} item
* @param {{}} evt
* @fires Visible#shown
* @fires Visible#hidden
*/

function updateSeen(item, evt) {
var px = evt.visiblePx,
percent = evt.visiblePercent; // if some pixels are visible and we’re greater/equal to threshold

if (px && percent >= item.shownThreshold && !item.seen) {
  item.seen = true;
  setTimeout(function () {
    item.trigger("shown", new VisibleEvent("shown", evt));
  }, 15); // if no pixels or percent is less than threshold
} else if ((!px || percent < item.hiddenThreshold) && item.seen) {
  item.seen = false;
  setTimeout(function () {
    item.trigger("hidden", new VisibleEvent("hidden", evt));
  }, 15);
}

}
/**
* sets preload property
* @param {Visible} item
* @param {{}} evt
* @param {Number} innerHeight
* @fires Visible#preload
*/

function updatePreload(item, evt, innerHeight) {
if (!item.preload && item.preloadThreshhold && shouldBePreloaded(evt.target, evt.rect, item.preloadThreshhold, innerHeight)) {
item.preload = true;
setTimeout(function () {
item.trigger(“preload”, new VisibleEvent(“preload”, evt));
}, 15);
}
}
/**
* Trigger events
* @param {Visible} item
*/

function updateVisibility(item) {
var rect = item.el.getBoundingClientRect(),
innerHeight = $window.innerHeight || $document.documentElement.clientHeight,
px = getVerticallyVisiblePixels(rect, innerHeight),
percent = px / (rect.height || innerHeight),
evt = {
target: item.el,
rect: rect,
visiblePx: px,
visiblePercent: percent
};
updateSeen(item, evt);
updatePreload(item, evt, innerHeight);
}
/**
* Return normalized viewport height
* @return {number}
*/

function getViewportHeight() {
return $window.innerHeight || $document.documentElement.clientHeight || $document.body.clientHeight;
}
/**
* Return normalized viewport width
* @return {number}
*/

function getViewportWidth() {
return $window.innerWidth || $document.documentElement.clientWidth || $document.body.clientWidth;
}
/**
* make sure an element isn’t hidden by styles or etc
* @param {Element} el
* @return {Boolean}
*/

function isElementNotHidden(el) {
return el && el.offsetParent !== null && !el.getAttribute(“hidden”) && getComputedStyle(el).display !== “none” && getComputedStyle(el).visibility !== “hidden”;
}
/**
* Apparently the fastest way…
* @param {Element} el
* @returns {boolean}
* @example if (!$visibility.isElementInViewport(el)) { … }
*/

function isElementInViewport(el) {
var rect = el.getBoundingClientRect();
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= ($window.innerHeight || $document.documentElement.clientHeight) && rect.right <= ($window.innerWidth || $document.documentElement.clientWidth);
}
/**
* @param {Element} el
* @param {ClientRect} rect
* @param {Number} preloadThreshhold
* @param {Number} innerHeight
* @return {Boolean}
*/

function shouldBePreloaded(el, rect, preloadThreshhold, innerHeight) {
return rect.top <= innerHeight + preloadThreshhold && isElementNotHidden(el);
}
/**
* Create a one-dimensional spacial hash of x
* @param {number} x
* @param {number} stepSize
* @param {number} optimalK
* @param {number} base
* @return {number}
*/

function getLinearSpacialHash(x, stepSize, optimalK, base) {
var index = Math.floor(x / (stepSize || 1)),
remainder = x % stepSize,
result = index.toString(base);

if (optimalK > 1) {
  result += getLinearSpacialHash(remainder, Math.floor(stepSize / base), optimalK - 1, base);
}

return result;

}
/**
* @param {ClientRect} rect
* @param {number} innerHeight
* @returns {number}
*/

function getVerticallyVisiblePixels(rect, innerHeight) {
return min(innerHeight, max(rect.bottom, 0)) – min(max(rect.top, 0), innerHeight);
}
/**
* Get offset of element relative to entire page
*
* @param {Element} el
* @returns {{left: number, top: number}}
* @see http://jsperf.com/offset-vs-getboundingclientrect/7
*/

function getPageOffset(el) {
var offsetLeft = el.offsetLeft,
offsetTop = el.offsetTop;

while (el = el.offsetParent) {
  offsetLeft += el.offsetLeft;
  offsetTop += el.offsetTop;
}

return {
  left: offsetLeft,
  top: offsetTop
};

}
/**
* Create a new Visible class to observe when elements enter and leave the viewport
*
* Call destroy function to stop listening (this is until we have better support for watching for Node Removal)
* @param {Element} el
* @param {{shownThreshold: number, hiddenThreshold: number}} [options] * @class
* @example this.visible = new $visibility.Visible(el);
*/

Visible = function Visible(el, options) {
options = options || {};
this.el = el;
this.seen = false;
this.preload = false;
this.preloadThreshhold = options && options.preloadThreshhold || 0;
this.shownThreshold = options && options.shownThreshold || 0;
this.hiddenThreshold = options && min(options.shownThreshold, options.hiddenThreshold) || 0;
list.push(this);
updateVisibility(this); // set immediately to visible or not
};

Visible.prototype = {
/**
* Stop triggering.
*/
destroy: function destroy() {
// remove from list
list.splice(list.indexOf(this), 1);
}
/**
* @name Visible#on
* @function
* @param {‘shown’|’hidden’} e EventName
* @param {function} cb Callback
*/

/**
 * @name Visible#trigger
 * @function
 * @param {'shown'|'hidden'} e
 * @param {{}}
 */

};
Eventify.enable(Visible.prototype);

VisibleEvent = function VisibleEvent(type, options) {
var _this = this;

this.type = type;
Object.keys(options).forEach(function (key) {
  _this[key] = options[key];
});

}; // listen for scroll events (throttled)

$document.addEventListener(“scroll”, _throttle(onScroll, 200)); // public

this.getPageOffset = getPageOffset;
this.getLinearSpacialHash = getLinearSpacialHash;
this.getVerticallyVisiblePixels = getVerticallyVisiblePixels;
this.getViewportHeight = getViewportHeight;
this.getViewportWidth = getViewportWidth;
this.isElementNotHidden = isElementNotHidden;
this.isElementInViewport = isElementInViewport;
this.Visible = Visible;
}]);
}, {}];
require=(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})(window.modules,{},[]);
‘use strict’;
/**
* mount legacy services from _global.js, if any
*/

function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === “undefined” || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === “number”) { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(“Invalid attempt to iterate non-iterable instance.nIn order to be iterable, non-array objects must have a Symbol.iterator method.”); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = oSymbol.iterator; }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }

function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === “string”) return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === “Object” && o.constructor) n = o.constructor.name; if (n === “Map” || n === “Set”) return Array.from(o); if (n === “Arguments” || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

function mountLegacyServices() {
Object.keys(window.modules).filter(function (key) {
return typeof key === ‘string’ && key.match(/.legacy$/);
}).forEach(function (key) {
return window.require(key);
});
}

function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
var elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(“Error initializing controller for “”.concat(name, “” on “”).concat(elementTag, “””), e);
}
}
/**
* mount client.js component controllers
*/

function mountComponentModules() {
Object.keys(window.modules).filter(function (key) {
return typeof key === ‘string’ && key.match(/.client$/);
}).forEach(function (key) {
var controllerFn = window.require(key);

if (typeof controllerFn === 'function') {
  var name = key.replace('.client"https://slate.com/human-interest/2020/11/,"'),
      instancesSelector = "[data-uri*="_components/".concat(name, "/"]"),
      defaultSelector = "[data-uri$="_components".concat(name, ""]"),
      instances = document.querySelectorAll(instancesSelector),
      defaults = document.querySelectorAll(defaultSelector);

  var _iterator = _createForOfIteratorHelper(instances),
      _step;

  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var el = _step.value;
      tryToMount(controllerFn, el, name);
    }
  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }

  var _iterator2 = _createForOfIteratorHelper(defaults),
      _step2;

  try {
    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
      var _el = _step2.value;
      tryToMount(controllerFn, _el, name);
    }
  } catch (err) {
    _iterator2.e(err);
  } finally {
    _iterator2.f();
  }
}

});
} // Make sure that a window.process.env.NODE_ENV is available in the client for any dependencies,
// services, or components that could require it
// note: the “ value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js

window.process = window.process || {};
window.process.env = window.process.env || {};

if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = ”;
} // note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first

mountLegacyServices();
mountComponentModules();
// ]]


Source link
.  .  .  .  .  .  . .  .  .  .  .  .  .  .  .  .   .   .   .    .    .   .   .   .   .   .  .   .   .   .  .  .   .  .