My boyfriend’s mom suddenly hates me. | #facebookdating | #tinder | #pof


Photo illustration by Slate. Photos by maroke/iStock/Getty Images Plus and Piotr Marcinski/iStock/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’ve been dating an Asian American man for the better part of a year, and he’s the most wonderful person I’ve ever met. His mother and I got along for about six months. I was invited over for dinner, stayed at their house (he lives with his parents), and we even exchanged phone numbers. My boyfriend agrees that I was polite to her and never stepped on her toes. Recently they got into an argument (she didn’t know I was there), and she went on a tirade about how he shouldn’t bring his “little girlfriend” into her house anymore, that I was not a member of their family and was no longer welcome. He tried to reassure me that it was something she said in the heat of the moment, but she’s stood by those words. I’m devastated.

I can’t stop thinking that perhaps she wanted her son to date someone else. My free trial in their home has expired, and she’s ready for her son to date a woman from their heritage. When I’ve been in the house since then, she stands in the backyard until I leave. English is not her first language, and I’m not sure it’d be productive for me to talk to her myself. What would you do in this situation?

—No Longer Welcome

There’s no “perhaps” about it—your boyfriend’s mother absolutely wants him to date someone else. I don’t know if it has to do with heritage or not, but the point is that she doesn’t want you two to be together. That’s not always an insurmountable issue, but given that your boyfriend and his mother live together and he seems fairly committed to not rocking the boat, you likely have a difficult road ahead here.

If I were in your situation, I would ask my boyfriend what he felt prepared to do, given that the untenable nature of the present arrangement, where his mother leaves the house to wait in the backyard whenever I visit him. Would he be prepared to confront her behavior and stand up for you? Move out? Find other places for you two to meet? If his answer is merely, “Oh, I’m sure she’s just doing this in the heat of the moment” or “Give it another few weeks, I’m sure she’ll come in once it starts snowing,” I would thank him for a lovely 10 months, wish him the best in the future, and be on my way. Since his original answer was “I’m sure she doesn’t mean it,” and his subsequent response appears to be nothing, I think it’s likely that he doesn’t have much of a strategy in mind.

Help! I Witnessed My Boss Get Berated by Her Wife Over Zoom.

Danny M. Lavery is joined by Anna Hetherington 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 am a 27-year-old woman in a relationship with a 34-year-old woman. We have been together a year and a half, and what started out as something casual has developed into a more serious relationship. However, it’s not a traditional relationship. She still lives with her ex-girlfriend, who she has a 9-year-old child with. They are raising the kid together and haven’t told him about their breakup. I haven’t had an issue with this, because I live by myself, and I’m happy to have her over at my place. I am also an introvert who enjoys spending time alone when she is taking care of family responsibilities.

The issue is that lately she’s been pushing for more commitment from me, talking about moving in together and having kids together. I do want to have kids of my own, but I really wasn’t thinking about that with her yet. Now that she’s mentioned it, I can’t really picture us living together. The real issue is her son. After a year and a half, I still have not met him, and he doesn’t know of my existence. She says this is because her ex doesn’t feel comfortable with it. My girlfriend has said she would want to pursue joint custody if she moves in with me. I just can’t imagine a child wanting to go live with a stranger he’s never met before, nor what my role would be in that situation. This relationship probably sounds a little weird from the outside, but I love my girlfriend very much, I feel comfortable when I’m around her, and I trust her. But am I delusional to think that this is somehow going to work out? I could just really use some outside perspective.

—Not the Brady Bunch

This doesn’t sound “a little weird.” This goes way beyond it. “A little weird” is a barely visible dot on a horizon that your girlfriend and her ex blew past on a dune buggy a long time ago. You don’t mention whether anyone in your life is aware of this arrangement, and I wonder if part of the reason is because you know the people who care about you would be troubled to learn what your girlfriend is asking of you, not to mention what she’s doing to her son. Take a moment to remember what it felt like to be 9 years old and how much you depended on your parents to provide you with a sense of reliability, honesty, and solidity. Now imagine you find out that your parents have been secretly broken up for the last 18 months while you thought everything was normal, that one of your parents is dating someone else, and that you’re going to be living with them half of the time. (And that’s a best-case scenario, because it assumes your girlfriend is able to get joint custody without having to go to court. If her ex isn’t willing to let you meet their kid or even mention your existence to him, what makes you think she’s going to OK a joint-custody agreement when you move in with your girlfriend?) Imagine the devastation, bewilderment, and sense of betrayal you’d feel in his position.

Your girlfriend has demonstrated a shockingly cavalier attitude about her son’s well-being. This isn’t a momentary lapse in judgment or a common error lots of parents make. It’s a deliberate misinformation campaign designed to prioritize adult comfort over her child’s best interests. This is not a healthy situation, and I don’t see any way forward for you except to get out, as fast as you can.

Dear Prudence,

I’m a Latina woman who is the president of a student organization at a university. One of the organization’s officers was not performing to expectations. He’s a white man. I told him I wasn’t satisfied with his performance and I was going to speak with the faculty adviser about replacing him. He abruptly resigned. He was respectful while leaving and had remained a member in good standing. I was just informed he filed a bias complaint against me and some of the other officers. He provided a collection of context-free text messages and group discussions that he claims showed he was discriminated against. Providing context makes most of the messages fine, but there are a few that do look bad. And, in hindsight, he was always careful to not say any of his biased statements in writing or when we were recording meetings. I’m so stressed by this for two reasons. I’m scared that I’ll be disciplined by the university, but I’m also worried that I have been unfair and that I didn’t see discriminatory behavior because it was directed at a white man.

—On Tenterhooks

The good news is also the same thing as the bad news here: There’s not much you can do right now beyond let the university conduct its investigation. If you’re a graduate student in a union, be sure that you’re keeping your representative looped in. Otherwise be prepared to provide context, answer questions, and explain your side of the story as honestly and as thoroughly as you can. If you’re able to access psychological services through campus for additional support, please do; finding an appropriate and confidential outlet for your fears will help you keep a clear mind and maintain a sense of equanimity. If the investigation finds you have discriminated against him, and you are disciplined, you’ll survive, even if it feels painful or embarrassing at the time. If the investigation finds his case to be without merit, but you still want to spend some time reflecting on whether you could have handled things differently for your own satisfaction, you’re free to do so. Regardless of what happens, this will not be the final word on either your life or his.

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

Five years ago, my partner cheated on me and got pregnant. We got past the infidelity, and I have raised her son as my own since the moment he was born. At what age is it appropriate to tell him that his social father and his biological father are not the same person? The biological father is not in the picture and seems to have no interest in being a parent. I think our son should be told eventually, but I think 4 is much too young. My partner disagrees. I would appreciate your advice.

'; }, t.createTrackPixelIframeHtml = se, t.getValueString = de, t.uniques = fe, t.flatten = le, t.getBidRequest = function (n, e) { return n ? (e.some(function (e) { var t = c()(e.bids, function (t) { return ["bidId"https://slate.com/,"adId"https://slate.com/,"bid_id"].some(function (e) { return t[e] === n; }); }); return t && (r = t), t; }), r) : void 0; var r; }, t.getKeys = pe, t.getValue = ge, t.getKeyByValue = function (e, t) { for (var n in e) { if (e.hasOwnProperty(n) && e[n] === t) return n; } }, t.getBidderCodes = function () { return (0 t[n] ? -1 : 0; }; }, t.parseQS = Ie, t.formatQS = Ce, t.parseUrl = function (e, t) { var n = document.createElement("a"); t && "noDecodeWholeURL" in t && t.noDecodeWholeURL ? n.href = e : n.href = decodeURIComponent(e); var r = t && "decodeSearchAsString" in t && t.decodeSearchAsString; return { href: n.href, protocol: (n.protocol "https://slate.com/"https://slate.com/"https://slate.com/").replace(/:$/, "https://slate.com/"), hostname: n.hostname, port: +n.port, pathname: n.pathname.replace(/^(?!/)/, "/"), search: r ? n.search : k.parseQS(n.search "https://slate.com/"https://slate.com/"https://slate.com/"), hash: (n.hash "https://slate.com/"https://slate.com/"https://slate.com/").replace(/^#/, "https://slate.com/"), host: n.host "https://slate.com/" window.location.host }; }, t.buildUrl = function (e) { return (e.protocol "https://slate.com/"https://slate.com/"http") + "://" + (e.host "https://slate.com/" e.hostname + (e.port ? ":".concat(e.port) : "https://slate.com/")) + (e.pathname "https://slate.com/"https://slate.com/"https://slate.com/") + (e.search ? "?".concat(k.formatQS(e.search "https://slate.com/"https://slate.com/"https://slate.com/")) : "https://slate.com/") + (e.hash ? "#".concat(e.hash) : "https://slate.com/"); }, t.deepEqual = je, t.mergeDeep = we, t.cyrb53Hash = function (e) { for (var t, n = 1 >> 16, 2246822507) ^ r(o ^ o >>> 13, 3266489909), (4294967296 * (2097151 & (o = r(o ^ o >>> 16, 2246822507) ^ r(i ^ i >>> 13, 3266489909))) + (i >>> 0)).toString(); }; var r = n(3), i = n(158), o = n.n(i), a = n(10), c = n.n(a), u = n(12), s = n.n(u), d = n(159); n.d(t, "deepAccess", function () { return d.a; }); var f = n(160); function l(e, t) { return function (e) { if (Array.isArray(e)) return e; }(e) "https://slate.com/" function (e, t) { if ("undefined" == typeof Symbol "https://slate.com/" !(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 "https://slate.com/" n.length !== t); r = !0) { ; } } catch (e) { i = !0, o = e; } finally { try { r "https://slate.com/" null == c.return "https://slate.com/" c.return(); } finally { if (i) throw o; } } return n; }(e, t) "https://slate.com/" g(e, t) "https://slate.com/" 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 p(e) { return function (e) { if (Array.isArray(e)) return b(e); }(e) "https://slate.com/" function (e) { if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e); }(e) "https://slate.com/" g(e) "https://slate.com/" 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 g(e, t) { if (e) { if ("string" == typeof e) return b(e, t); var n = Object.prototype.toString.call(e).slice(8, -1); return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n "https://slate.com/"https://slate.com/"Set" === n ? Array.from(e) : "Arguments" === n "https://slate.com/" /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? b(e, t) : void 0; } } function b(e, t) { (null == t "https://slate.com/" t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n n ')) : "https://slate.com/"; } function de(e, t, n) { return null == t ? n : Z(t) ? t : te(t) ? t.toString() : void k.logWarn("Unsuported type for param: " + e + " required type: String"); } function fe(e, t, n) { return n.indexOf(e) === t; } function le(e, t) { return e.concat(t); } function pe(e) { return Object.keys(e); } function ge(e, t) { return e[t]; } function be() { if (window.googletag && X(window.googletag.pubads) && X(window.googletag.pubads().getSlots)) return !0; } var ve = me("timeToRespond", function (e, t) { return t e.length) && (t = e.length); for (var n = 0, r = new Array(t); n o.lastUpdated + 24 * r * 60 * 60 * 1e3) && Object(p.a)(t.url, { success: function success(e) { try { e = JSON.parse(e); var t = { lastUpdated: Object(m.timestamp)(), mapping: e.mapping }; I.setDataInLocalStorage(i, JSON.stringify(t)); } catch (e) { Object(m.logError)("Failed to parse ".concat(n, " bidder translation mapping file")); } }, error: function error() { Object(m.logError)("Failed to load ".concat(n, " bidder translation file")); } }); } catch (e) { Object(m.logError)("Failed to parse ".concat(n, " bidder translation mapping file")); } } }), e.call(this, t); } function U(e, t, n) { function r(e) { return "Invalid bid from ".concat(t.bidderCode, ". Ignoring bid: ").concat(e); } return e ? t ? (i = Object.keys(t), C.every(function (e) { return l()(i, e) && !l()([void 0, null], t[e]); }) ? "native" !== t.mediaType "https://slate.com/" Object(o.f)(t, n) ? "video" !== t.mediaType "https://slate.com/" Object(a.d)(t, n) ? !("banner" === t.mediaType && !function (e, t, n) { if ((t.width "https://slate.com/" 0 === parseInt(t.width, 10)) && (t.height "https://slate.com/" 0 === parseInt(t.height, 10))) return t.width = parseInt(t.width, 10), t.height = parseInt(t.height, 10), 1; var r = Object(m.getBidderRequest)(n, t.bidderCode, e), i = r && r.bids && r.bids[0] && r.bids[0].sizes, o = Object(m.parseSizesInput)(i); if (1 === o.length) { var a = A(o[0].split("x"), 2), c = a[0], u = a[1]; return t.width = parseInt(c, 10), t.height = parseInt(u, 10), 1; } }(e, t, n)) "https://slate.com/" (Object(m.logError)(r("Banner bids require a width and height")), !1) : (Object(m.logError)(r("Video bid does not have required vastUrl or renderer property")), !1) : (Object(m.logError)(r("Native bid missing some required properties.")), !1) : (Object(m.logError)(r("Bidder ".concat(t.bidderCode, " is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params."))), !1)) : (Object(m.logWarn)("Some adapter tried to add an undefined bid for ".concat(e, ".")), !1) : (Object(m.logWarn)("No adUnitCode was supplied to addBidResponse."), !1); var i; } Object(b.a)("checkAdUnitSetup").before(B); }, 10: function _(e, t, n) { var r = n(96); e.exports = r; }, 100: function _(e, t, n) { function r(e, t) { var n = c[a(e)]; return n == s "https://slate.com/" n != u && ("function" == typeof t ? i(t) : !!t); } var i = n(30), o = /#|.prototype./, a = r.normalize = function (e) { return String(e).replace(o, ".").toLowerCase(); }, c = r.data = {}, u = r.NATIVE = "N", s = r.POLYFILL = "P"; e.exports = r; }, 101: function _(e, t, n) { var r = n(25), i = n(102), o = n(19)("species"); e.exports = function (e, t) { var n; return i(e) && ("function" == typeof (n = e.constructor) && (n === Array "https://slate.com/" i(n.prototype)) "https://slate.com/" r(n) && null === (n = n[o])) && (n = void 0), new (void 0 === n ? Array : n)(0 === t ? 0 : t); }; }, 102: function _(e, t, n) { var r = n(48); e.exports = Array.isArray "https://slate.com/" function (e) { return "Array" == r(e); }; }, 103: function _(e, t, n) { var r = n(24), i = n(31); e.exports = function (t, n) { try { i(r, t, n); } catch (e) { r[t] = n; } return n; }; }, 104: function _(e, t, n) { var r = n(75); e.exports = r && !Symbol.sham && "symbol" == _typeof(Symbol.iterator); }, 105: function _(e, t, n) { n(106); var r = n(52); e.exports = r("Array"https://slate.com/,"includes"); }, 106: function _(e, t, n) { "use strict"; var r = n(14), i = n(76).includes, o = n(51); r({ target: "Array", proto: !0, forced: !n(60)("indexOf", { ACCESSORS: !0, 1: 0 }) }, { includes: function includes(e, t) { return i(this, e, 1 i;) { a(r, n = t[i++]) && (~u(o, n) "https://slate.com/" o.push(n)); } return o; }; }, 119: function _(e, t, n) { var r = n(27); e.exports = r("document"https://slate.com/,"documentElement"); }, 12: function _(e, t, n) { var r = n(105); e.exports = r; }, 120: function _(e, t, n) { var i = n(84); e.exports = function (e, t, n) { for (var r in t) { n && n.unsafe && e[r] ? e[r] = t[r] : i(e, r, t[r], n); } return e; }; }, 121: function _(e, t, n) { "use strict"; function i() { return this; } var o = n(85).IteratorPrototype, a = n(82), c = n(46), u = n(64), s = n(38); e.exports = function (e, t, n) { var r = t + " Iterator"; return e.prototype = a(o, { next: c(1, n) }), u(e, r, !1, !0), s[r] = i, e; }; }, 122: function _(e, t, n) { var r = n(30); e.exports = !r(function () { function e() {} return e.prototype.constructor = null, Object.getPrototypeOf(new e()) !== e.prototype; }); }, 123: function _(e, t, n) { var i = n(15), o = n(124); e.exports = Object.setPrototypeOf "https://slate.com/" ("__proto__" in {} ? function () { var n, r = !1, e = {}; try { (n = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(e, []), r = e instanceof Array; } catch (e) {} return function (e, t) { return i(e), o(t), r ? n.call(e, t) : e.__proto__ = t, e; }; }() : void 0); }, 124: function _(e, t, n) { var r = n(25); e.exports = function (e) { if (!r(e) && null !== e) throw TypeError("Can't set " + String(e) + " as a prototype"); return e; }; }, 125: function _(e, t, n) { "use strict"; var r = n(27), i = n(33), o = n(19), a = n(29), c = o("species"); e.exports = function (e) { var t = r(e), n = i.f; a && t && !t[c] && n(t, c, { configurable: !0, get: function get() { return this; } }); }; }, 126: function _(e, t) {}, 127: function _(e, t, n) { function r(c) { return function (e, t) { var n, r, i = String(s(e)), o = u(t), a = i.length; return o = t.length ? { value: e.target = void 0, done: !0 } : "keys" == n ? { value: r, done: !1 } : "values" == n ? { value: t[r], done: !1 } : { value: [r, t[r]], done: !1 }; }, "values"), o.Arguments = o.Array, i("keys"), i("values"), i("entries"); }, 13: function _(e, t, n) { "use strict"; n.d(t, "b", function () { return a; }), n.d(t, "a", function () { return c; }), t.d = function (e, t) { var n = 2 e.length) && (t = e.length); for (var n = 0, r = new Array(t); n >> 0, o = 0; if (t) n = t;else { for (; o i && (r = !1)), !r; }), r && e.run(), r; } function g(e, t) { void 0 === e[t] ? e[t] = 1 : e[t]++; } p(e) "https://slate.com/" (N.logWarn("queueing auction due to limited endpoint capacity"), H.push(e)); } return { addBidReceived: function addBidReceived(e) { f = f.concat(e); }, addNoBid: function addNoBid(e) { l = l.concat(e); }, executeCallback: O, callBids: function callBids() { b = G, t = Date.now(); var e = P.makeBidRequests(y, t, p, m, s); N.logInfo("Bids Requested for Auction with id: ".concat(p), e), e.length e.getTimeout() + B.b.getConfig("timeoutBuffer") && e.executeCallback(!0); } function Q(e, t) { var n = e.getBidRequests(), r = U()(n, function (e) { return e.bidderCode === t.bidderCode; }); !function (t, e) { var n; { var r; t.bidderCode && (0 e.length) && (t = e.length); for (var n = 0, r = new Array(t); n = h.syncsPerBidder ? a.logWarn('Number of user syncs exceeded for "https://slate.com/".concat(t, "https://slate.com/"https://slate.com/")) : p.canBidderRegisterSync(e, t) ? (g[e].push([t, n]), (r = v)[i = t] ? r[i] += 1 : r[i] = 1, void (v = r)) : a.logWarn('Bidder "https://slate.com/".concat(t, "https://slate.com/" not permitted to register their "https://slate.com/").concat(e, "https://slate.com/" userSync pixels.')) : a.logWarn("Bidder is required for registering sync") : a.logWarn('User sync type "https://slate.com/".concat(e, "https://slate.com/" not supported')); var r, i; }, p.syncUsers = function () { var e = 0 e.length) && (t = e.length); for (var n = 0, r = new Array(t); n Object(S.timestamp)(); }, s = function s(e) { return e && (e.status && !O()([w.BID_STATUS.RENDERED], e.status) "https://slate.com/" !e.status); }; function U(e, r, t) { var i = 2 t.max ? e : t; }, { max: 0 }), g = 0, b = v()(e.buckets, function (e) { if (n > p.max * r) { var t = e.precision; void 0 === t && (t = y), i = (e.max * r).toFixed(t); } else { if (n " + e + "" + g + ">"; } var o, a = n(15), c = n(116), u = n(83), s = n(53), d = n(119), f = n(72), 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("https://slate.com/")), 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 "https://slate.com/" 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); }; }, 83: function _(e, t) { e.exports = ["constructor"https://slate.com/,"hasOwnProperty"https://slate.com/,"isPrototypeOf"https://slate.com/,"propertyIsEnumerable"https://slate.com/,"toLocaleString"https://slate.com/,"toString"https://slate.com/,"valueOf"]; }, 84: function _(e, t, n) { var i = n(31); e.exports = function (e, t, n, r) { r && r.enumerable ? e[t] = n : i(e, t, n); }; }, 85: function _(e, t, n) { "use strict"; var r, i, o, a = n(86), c = n(31), u = n(26), s = n(19), 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 "https://slate.com/" u(r, f) "https://slate.com/" c(r, f, function () { return this; }), e.exports = { IteratorPrototype: r, BUGGY_SAFARI_ITERATORS: l }; }, 86: function _(e, t, n) { var r = n(26), i = n(57), o = n(65), a = n(122), 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; }; }, 87: function _(e, t, n) { "use strict"; var i = n(127).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 }); }); }, 88: 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)); }; }, 89: function _(e, t, n) { var r = n(153); e.exports = r; }, 896: function _(e, t, n) { e.exports = n(68); }, 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(91), 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(20); function m(e, t) { return function (e) { if (Array.isArray(e)) return e; }(e) "https://slate.com/" function (e, t) { if ("undefined" == typeof Symbol "https://slate.com/" !(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 "https://slate.com/" n.length !== t); r = !0) { ; } } catch (e) { i = !0, o = e; } finally { try { r "https://slate.com/" null == c.return "https://slate.com/" c.return(); } finally { if (i) throw o; } } return n; }(e, t) "https://slate.com/" 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 "https://slate.com/"https://slate.com/"Set" === n) return Array.from(e); if ("Arguments" === n "https://slate.com/" /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return a(e, t); }(e, t) "https://slate.com/" 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 "https://slate.com/" t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n n n n prebid.org wrappern n ").concat(r, "n n n n ")), 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 && "https://slate.com/" !== e.customCacheKey && (i.key = e.customCacheKey), i; } }, 96: function _(e, t, n) { n(97); var r = n(52); e.exports = r("Array"https://slate.com/,"find"); }, 97: 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 "https://slate.com/" !s }, { find: function find(e, t) { return i(this, e, 1 e.length) && (r = e.length);

for (var a = 0, t = new Array(r); a |

)/gm, "t").replace(/(

|

)/gm, "n").replace(/^
/gm, "https://slate.com/").replace(/(
n|
)/gm, "n").replace(/

(.*)

/gm, "nn===== $1 =====nn").replace(/(.*)[2-6]>/gm, "nn*** $1 ***nn").replace(/(]+)>)/gim, "https://slate.com/"), w.logMessage("https://console.appnexus.com/docs/understanding-the-debug-auction"), w.logMessage(a)), o; var t = "in response for ".concat(s.bidderCode, " adapter"); return e && e.error && (t += ": ".concat(e.error)), w.logError(t), o; }, getMappingFileInfo: function getMappingFileInfo() { return { url: "https://acdn.adnxs.com/prebid/appnexus-mapping/mappings.json", refreshInDays: 2 }; }, getUserSyncs: function getUserSyncs(e) { if (e.iframeEnabled) return [{ type: "iframe", url: "https://acdn.adnxs.com/dmp/async_usersync.html" }]; }, transformBidParams: function transformBidParams(a, e) { return a = w.convertTypes({ member: "string", invCode: "string", placementId: "number", keywords: w.transformBidderParamKeywords, publisherId: "number" }, a), e && (a.use_pmt_rule = "boolean" == typeof a.usePaymentRule && a.usePaymentRule, a.usePaymentRule && delete a.usePaymentRule, I(a.keywords) && a.keywords.forEach(P), Object.keys(a).forEach(function (e) { var r = w.convertCamelToUnderscore(e); r !== e && (a[r] = a[e], delete a[e]); })), a; }, onBidWon: function onBidWon(e) { e.native && function (e) { var r = function (e) { var r; if (w.isStr(e) && U(e)) r = e;else if (w.isArray(e)) for (var a = 0; a nfor (var i = 0; i ');
}

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 > s) && (e = !0, r = c(t)); 0 > (s += this.DB - 4)) : (t = this[i] >> (s -= 4) & 15, s this.DB ? (this[this.t - 1] |= (s & (1 > this.DB - i) : this[this.t - 1] |= s = 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 > i | _, _ = (this[a] & s) = e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);
}

0 > this.F2 : 0),
u = this.FV / d,
h = (1 = this.t) e.t = 0;else {
var i = t % this.DB,
s = this.DB - i,
o = (1 > i;

for (var _ = r + 1; _ > i;
}

0 >= this.DB;
}

if (t.t >= this.DB;
}

i += this.s;
} else {
for (i += this.s; r >= this.DB;
}

i -= t.s;
}

e.s = i > 15; 0 > 15,
c = a * n + p * _;
s = ((n = _ * n + ((32767 & c) >> 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 > 14,
c = a * n + p * _;
s = ((n = _ * n + ((16383 & c) > 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 > 2), i = 3 & o, 1) : 1 == r ? (e += c(i > 4), i = 15 & o, 2) : 2 == r ? (e += c(i), e += c(o >> 2), i = 3 & o, 3) : (e += c(i > 4), e += c(15 & o), 0));
}

return 1 == r && (e += c(i > 15) * this.mpl & this.um) = t.DV;) {
t[r] -= t.DV, t[++r]++;
}
}

t.clamp(), t.drShiftTo(this.m.t, t), 0 > 15, this.um = (1 >> 0;

for (o[s - 1][14] = Math.floor(n), o[s - 1][15] = p, _ = 0; _ >> 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 >> 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 >> t | e >> 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([214], {
496: function _(e, r, i) {
e.exports = i(497);
},
497: function _(e, r, i) {
"use strict";

Object.defineProperty(r, "__esModule", {
value: !0
}), i.d(r, "spec", function () {
return p;
});
var T = i(0),
S = i(2),
v = i(3),
t = i(10),
l = i.n(t),
a = i(498),
n = i.n(a),
s = i(1);

function g(e) {
return (g = "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 o = [S.b, S.d],
y = 100,
b = 300,
h = 3600,
w = !0,
x = {
JPY: 1
};

function C(e) {
var r = {};
return r.id = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") "https://slate.com/"https://slate.com/"string" != typeof e.params.id && "number" != typeof e.params.id ? r.ext.sid = "https://slate.com/".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 d(e) {
return Array.isArray(e) && 2 === e.length && n()(e[0]) && n()(e[1]);
}

function A(e, r) {
if (d(e)) return e[0] === r[0] && e[1] === r[1];

for (var i = 0; i e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t n

nnx3c!-- Rubicon Project Ad Tag --x3en
nn

nn