Is it too late to apologize for abuse 20 years later, and more advice from Dear Prudie. | #facebookdating | #tinder | #pof

Photo illustration by Slate. Photo by Wavebreakmedia/iStock/Getty Images Plus.

Danny is online weekly to chat live with readers. Here’s an edited transcript of this week’s chat.

Q. Better to apologize late or never? Nearly 20 years ago, when we were both young adults, I acted toward my partner at the time in ways that I now recognize as abusive. I have grown considerably since then and feel genuine remorse for the behaviors and mindsets I had back then. I have run into my former partner a few times over the years when visiting my old hometown, and our interactions were brief and polite. We are otherwise not in contact. I would like to apologize to them for my past behaviors, but I am worried that it might do more harm than good by making them relive past trauma or feel obligated to respond. I am not looking for forgiveness or ongoing communication with them. Should I send a note of apology, or leave the past where it is and focus on being a good partner and working for a more just world in the present? If an apology is appropriate, would an email be the right format?

A: The desire to apologize for past abuse is a good one, but it’s definitely not something that you should pursue without expert supervision and counsel. Did your past abuse ever involve something like insisting upon continued contact or boundary-pushing after your partner said no? Did any of it involve monitoring their communication with others, stalking, or demanding forgiveness on your timetable? In such instances, I’d encourage you to turn your energies toward the kind of repair that does not involve renewed contact, and to set your goal as not compounding past harm by contacting your former partner.

Have you shared any of your new realizations about your past abuse with a therapist, with your friends, or with any of your subsequent partners? What steps have you taken to ensure that you do not repeat this abusive behavior? It’s a good indicator that you’re prepared for a nonresponse or for your ex not to forgive you, but I think you should run this plan past multiple people whose judgment you trust and who can offer you ongoing support (at least some of that support should be therapeutic, I think) with a clear-eyed perspective of the past abuse. Only after such preemptive work should you even consider the possibility of a note—and such a note should not, I think, contain an apology but instead ask for whether your ex is interested/available in the possibility of hearing an apology from you, since that offers them the freedom to decide for themselves whether they want to hear from you on the subject. Please write back if you can to let us know how that process goes; and move forward very carefully and double-check your impulses and desires with someone experienced in ending abusive cycles.

How to Get Advice From Prudie:

• Send questions for publication to (Questions may be edited.)

• Join the live chat Mondays at noon. Submit your questions and comments here before or during the discussion.

• Call the voicemail of the Dear Prudence podcast at 401-371-DEAR (3327) to hear your question answered on a future episode of the show.

Q. Catfish gone wrong: A while ago, I started chatting online with guys because I’d been single for a while and the pandemic has of course limited other forms of contact. When I say chatting, I mean genuinely trying to find connections—I’m in my late 30s and way past the dick pic stage. I had seemingly gotten really close to this guy when he suddenly ghosted me. I was stung but had been forewarned that this sort of thing happens, so I quietly nursed my ego and moved on.

Lo and behold, a few weeks later and who do I see appear under a different account? So in a moment of unbelievable stupidity, I messaged him under a fake account and got him talking. I wanted to know what I had done wrong by asking about “previous relationships” and intended to let it go after that. We’ve gotten really close. He still has no idea of my real identity. He’s told me the last girl he was with (definitely me—same age, same state) came across as a little too needy for him so he ghosted her and was ashamed of it. He’s even promised to go to family therapy after we spent all night talking about his anger issues with his daughter. Last night he told me he loved me, and I was making him a better man. And to be honest, I’m getting strong feelings for him too. I cannot see a way out of this. I did something so wrong and I continue to propagate this wrongdoing every day. But I risk humiliating and upsetting this man who, in short, doesn’t deserve it. I know that you’re going to be brutal, and I deserve that, but how do I get out of this without destroying him?

A: I don’t want to be brutal, but I do think the reality of your situation is a brutal one—you know that this is not a healthy or workable foundation for a real or lasting relationship, and that fact makes you very sad. You know that this man found your needs excessive, and that he chose to respond to that realization by ghosting you. The fact that you’ve gotten close under an assumed new name doesn’t change that emotional reality, nor has it really addressed the underlying hurt. You’ve reestablished a new kind of emotional intimacy, but promising someone you’ve only messaged with online that you’re going to go to family therapy isn’t the same thing as a truly honest reconciliation.

Frankly, I think you should ghost him now, not as retribution for his past ghosting, but because there’s simply no way forward from here, and because I think the best sort of help you can receive will come from a therapist, and from sharing what you’ve done with some trusted friends and asking for their support as you figure out how to behave differently in future relationships. If the idea of ghosting him seems unbearable, your other option is to tell him the truth and prepare yourself for a likely breakup. If that seems unbearable too, your other option is to keep the fiction going until he figures it out. That option to me seems the worst of the three, and I’d encourage you not to pursue it.

Q. Drinks too much: I moved in with my boyfriend in the middle of the pandemic. I didn’t realize until now, but he drinks almost every day. He rarely gets drunk during the week, but he almost always does during the weekend. We’ve been dating almost three years, and I’ve never seen him sloppy drunk or doing anything regrettable. As far as I can tell, he just gets a bit more extroverted when he’s drunk.

I’m worried about this behavior. My father was an alcoholic, but he had a very different personality. He was a fun-loving guy but got angry pretty easily, more so when he was drunk. My current boyfriend doesn’t do that. I know your advice would be to talk to him about it; I’ve just heard so many stories of alcoholics who will constantly shape up when their significant other talks to them but slowly slip into their old habits. I’m wondering if I should just leave without talking to him. I don’t want to continue in this relationship for months or even years only for him to develop full-blown alcoholism. What would you advise?

A:  I’d advise you to base all your decisions on the following principle: You are absolutely allowed to leave your boyfriend because of how his drinking makes you feel. That doesn’t mean you have to consign him to “definite future alcoholic” status, place his drinking on par with your father’s, or make a universal claim that anyone else would see his drinking as similarly problematic. If you decide that based on your own history with an alcoholic parent, it’s not possible for you to safely and happily live with someone who drinks every day and gets drunk most weekends (even if their drunkenness results primarily in exuberance and does not result in anger), then ending your relationship is a perfectly reasonable option. And it’s not a reasonable option because you know for certain what his drinking will look like in the future—you don’t know that—but because you know his drinking habits right now set off primal fears rooted in your own childhood about volatility/loss of control and inhibition. It’s not a question of “either your partner is 100 percent bound to become an alcoholic like your father,” in which case you have to leave him for your own safety, or “your partner’s drinking is fine and therefore you have to stay in this relationship and learn to accept it.” It’s a question of what makes you feel safe and able to connect, and it’s perfectly reasonable to say that even if he’s sweet and friendly when he gets drunk, you don’t want to be in a relationship with someone who gets drunk most weekends.

I would encourage you to have some sort of conversation with your boyfriend before initiating a breakup, if only because I think it would provide you with meaningful peace of mind, but you don’t have to have that conversation in your home, or all by yourself, or with the goal of getting him to agree with your perspective. If you want to enlist a friend or two to check in with you before and after the breakup, please do; it might help to feel like you have someone in your corner and a safe place you can stay the night afterward. You can make it clear that the issue is one of compatibility; it doesn’t sound like you want him to drastically amend his relationship to drinking and stick around to see if it works for you. It sounds like you want to end things, and look for future partners who drink very little, or not at all. That’s eminently reasonable. It might help to attend a few Al-Anon meetings, if you haven’t already and even if you’re only able to do so online, so you can start to think about your own limits around alcohol in terms of your own needs, rather than simply “Is it fair for me to be upset by [X]?,” but you certainly don’t have to in order to take the next step here.

Q. No more cookies, please: How do you tell someone they’re bad at something they think they are good at? My friend is a terrible baker and she thinks she’s great. Her baking is inedible. She instigates cookie exchanges and offers to bake for parties. Her stuff is frankly embarrassing to serve. Do we tell her, and if so, how? Or let it go since it’s mostly innocuous and throw it all out after she leaves?

A: I think you’re free to follow your heart on this one! In the grand scheme of things, you’re right that it’s mostly innocuous to occasionally take a polite nibble of her cookies, offer her a white lie, and then get rid of the remainders; it’s not going to ruin your friend’s life and if the most embarrassing thing that happens to her is she occasionally goes home with more leftovers than she’d planned on, I think she’ll be fine.

I certainly don’t think you should tell her that her baking embarrasses you. If you want to tell her this latest batch is too salty, or tastes like the ingredients have gone off, by all means do so, but you don’t need to tell her she’s somehow humiliated you, since I do think that’s a step too far. I’d really lean toward one-off honesty rather than, “You’re a lousy baker and we’ve all been mortified on your behalf.” Stick with “Thank you so much for bringing these. But I think you might have mixed up the salt and sugar, because they’re overpoweringly bitter!” She’ll feel a little bad, you’ll feel a little relieved, and everyone will survive.

Q. Spouse’s work-life balance: I am writing because my spouse’s workplace has become increasingly abusive toward its workers since the pandemic started. She is working from home and her department has gotten more understaffed and overworked, to the point where she regularly works extra unpaid hours just to catch up. Her supervisors are at best willfully ignorant of this fact, as she sends emails and submits work after 5 p.m., while always being clocked out at 5 p.m.

What is my role here? My spouse is openly hostile to the suggestion that she say something, or just stop working and do what work she can by 5 and pick it up the next day. I have considered attempting to anonymously report her employer to the Department of Labor, but I’m not sure what effect that would have, and I am sure she would be angry if she found out I did, as she very clearly does not want to make waves.

A: I think you’re right not to make an anonymous report, not only because you know it would anger your spouse but because it’s possible that she could still be targeted for retaliation if her employers suspected the report came from her. As awful as this situation sounds, I don’t think your spouse is in the kind of danger that might merit an intervention that overrides her wishes, and that should be your guiding principle when it comes to something like making a report to the Department of Labor.

Instead, I think you can ask your wife for guidance: What does she need from you in terms of support or distance right now? Conversely, are there some limits you need to set for yourself, either in terms of how much you’re prepared to hear her complaints about work, or in terms of encouraging her to look for work elsewhere? Does she have reason to fear she’ll be fired if she just stops working at 5? If so, I don’t think your advice to “just stop working” at 5 will be very effective, even though I wish it were. You don’t have to pretend that this is a healthy situation, or even one that’s sustainable in the long run, but I think you should confine your position here to asking questions, trusting your wife’s sense of her job security, and encouraging her to come up with backup strategies.

Q. Picking the wrong parent: I’ve been with my boyfriend for six months, and we both have very complicated family histories. I’ve always been close with my mother, but she has a tendency to be emotionally draining (a wonderful human, but someone who rides the storm with you instead of providing shelter from it like I wish she could). This has led to me making a bad impression of her to my partner.

My father, however, and I have a far more strained relationship. He was a physically and verbally abusive alcoholic throughout my childhood (my parents divorced when I was a preteen). I’m quiet about this and as an adult infrequently see him, and always on my terms. He’s charismatic and people love him (though he’s never quit drinking). My partner subsequently thinks he’s the better parent. How do I get him to see the truth?

A: I’d start by asking your partner a little bit more about his feelings—has he said “I think your father is/was a better parent” to you? Has he seemed to prefer your father’s company, or is there something concrete he’s said to you on the subject? Does he know much about your father’s abuse? My advice about what to do next will largely depend on learning more about your boyfriend’s perspective (and whether he’s been pushing you to spend more time with your father). Certainly you should tell your boyfriend that you’re only able to see your father under certain conditions, and that you expect him to respect your right to determine the kind of relationship you have with him. And it makes perfect sense for you to have different feelings about the parent who physically abused you than the parent who enabled that abuse. Moreover, your boyfriend doesn’t need to offer any sort of judgment about which of your parents is “better,” and if he’s been attempting to do so, he needs to stop immediately. And if he’s seemed inclined to downplay or minimize your father’s abuse because your father has been charming the handful of times they’ve had a meal together, that may certainly be reason for you to express serious concerns about the future of your own relationship. Your boyfriend can hold his own perspective, to be sure, but he’s only known your parents for six months, and he should defer to you as a matter of course about how to engage with your parents, especially so early on in a relationship.

If you haven’t disclosed details about your father’s abuse to your boyfriend, and you don’t feel prepared to at the moment, you certainly don’t have to. That might be the most important thing to stress here—you’re not under any obligation to disclose something so vulnerable and intimate in order to ask your boyfriend to stop making comments about how great your father seems or to pressure you (if he’s done so) to “like” your father more. You can simply say, “I know my history with my father, and I need you to respect my decision to limit contact with him, even if I don’t share all of the details with you.” That’s your inarguable right and a good partner will respect that limit.

Q. Quit comparing me to my dead mom! My mother passed away somewhat recently. Though we were more present in each other’s lives in her last few years, I had a strained relationship with her throughout my youth. This is likely related to the fact that when I attempted to come out to her as queer, I was met with dead silence. We never talked through it, and it never came up again, not even when I “came back.” This wasn’t a singular event, either, as there were many disagreements we had where the conversation ended with her just ignoring the topic and moving on. In addition to working through the grief of losing my mom and processing the complicated relationship I had with her, I’ve also recently come out as nonbinary (to my friends).

The oscillations between grief over my mother’s death and the residual anger for having been taught to shut up and not make waves, while also trying to figure out when, how, and if I even want to come out to my family, is only compounded by the fact that whenever I do see them, they love to tell me how much I remind them of my mom. I was hoping this would be a short-term annoyance that I endured during her wake and funeral, but it’s been more than a year and they still tell me this whenever they get the chance. What can I say to make them stop doing this that will keep the conversation short?

A: That’s an achievable goal, I think; you don’t have to come out to your family before you’re ready in order to ask them to stop. “I know you mean well when you tell me I remind you of Mom, but it’s hard for me to hear that sentiment so often. I’d really appreciate it if you would stop saying that; it would help me work through my grief better and it would feel like a real act of kindness and grace to me. That’s not to say I don’t want to talk about her; I just want you to stop making that one comment. Would you please do that for me?”

Q. Do I need to be friends with my wifes girlfriend? My wife and I are polyamorous and, apart from some mishaps early on, we are happy with the arrangement. She started dating a new girlfriend a few months ago. I have met the girlfriend a couple of times and like her, but my wife wants us to socialize all together more often, something that I’m not really interested in doing. I certainly support my wife spending time with her, but don’t see a need to have a close relationship with her girlfriend. Because of COVID, we have to restrict who we can see in person, so I understand why my wife wants to include her girlfriend in social events. Even so, I would still rather have a pleasant but acquaintance-like relationship with my wife’s girlfriend. What should I do?

A: Reiterate your limit (“My goal is to have a friendly but limited relationship with your partners; I’m not interested in a close friendship for [X] reasons”) and ask your wife to talk a little more about why this is important to her. Maybe it’s just that her dream of a polyamorous relationship is one where everyone’s very close to one another, and you two will have to deal with the fact that your two ideals aren’t in perfect alignment. Or maybe it has something to do with your earlier mishaps, and she thinks this is the best way to avoid future problems. Maybe it’s a question of convenience, because seeing someone outside of your household during a pandemic is fairly complicated, in which case you might have a right to express resentment over being instrumentalized. Maybe she just thinks you two would really like each other, and you’ll have to clarify that your desire to keep some space between you two isn’t due to hostility but the need for room to work through (present or potential) complicated emotions in safety and privacy.

If you both want different things, that’s not a sign of disaster, but an opportunity to really hash out (in writing, if possible) what you can both reasonably offer each other, how you might strive to meet needs the other isn’t prepared to fulfill, and what “good enough” looks like. It’s possible for people in an open relationship to get seized with a utopian vision of the future where everything feels good all the time, and it can be really useful to ground yourselves in practical expectations. Just because your wife loves you and is really into her new girlfriend, it doesn’t necessarily follow that you’re going to become the Three Musketeers. That’s not an impediment to your wife’s happiness, nor an indicator that her desires are bad or shameful or Pollyanna-ish. It’s just a reality check.

Q. Re: Better to apologize late or never? Starting in college and for a few years afterward, I was in a relationship that I now realize—while maybe wasn’t abusive—certainly had a negative impact on me. My partner lied and had affairs while we were long-distance. We broke up; he got married and years later, so did I. After we had broken up, he continually reached out to “check in,” “catch up,” etc. After I married, I didn’t hear from him for years, and then I learned from a mutual friend that he had had a heart attack and died. Leading up to the heart attack, he had apparently reformed, seen that his behavior had been hurtful to many, and had been reaching out to women he had hurt, to make amends. He died before he could reach out to me.

I would recommend to the letter writer to reach out, in writing, and make amends as soon as possible, and let the person whom you hurt know that you are available to answer questions, confirm feelings, etc. For me, that kind of closure would have been meaningful. Now, since he died, I’m left with several questions about his behavior, treatment of me, and things he told me that I don’t know were the truth or lies, and that I would love to have had answered.

A: Thank you so much for sharing this; I’m so sorry for the distress and bewilderment your ex’s sudden death in the midst of an attempt to make amends has caused you. The most important thing I hope the letter writer can take away from this is that different individuals might have very different responses to the possibility of hearing an apology from someone who hurt or abused them, and that honoring those individual wishes is of primary importance. One person might dearly wish to hear such an apology, while another might wish only to be left alone; this is why I think it’s so important to check one’s intentions and begin by asking whether the person in question is available to hear an apology, instead of assuming the apology is welcome first.

Danny M. Lavery: Thanks so much for your help, everyone! See you next week, and next year.

If you missed Part 1 of this week’s chat, click here to read it.

Discuss this column on our Facebook page!

From Care and Feeding

Q. Lonely mama: I am a single mother who has recently, in the past year, moved in with a kind and caring man whom I love very much. I have one son, aged 14, and an older son who is 26 and out of the home. My partner has two daughters, aged 16 and 18. The kids seem to have a normal stepsibling relationship: one part affection, one part annoyance, one part disinterest. Our home is beautiful, I love all the kids so deeply, and I’m very happy in my relationship.

But here’s the problem: I’m lonely. Read what Carvell Wallace had to say.

')}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(e){}}Object(__WEBPACK_IMPORTED_MODULE_1__src_adapters_bidderFactory_js__.registerBidder)(spec)},377:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0});var n=r(378),i=r(379);t.verify=function(e,t,r,o){var a=new n.BigInteger(n.b64toHex(t)),s=new n.BigInteger(n.b64toHex(r)),c=a.modPowInt(o,s);return n.removeExtraSymbols(c.toHexString())===i.Sha256.hash(e)}},378:function(e,t,r){var n;Object.defineProperty(t,"__esModule",{value:!0});var i=(o.prototype.toHexString=function(){if(this.s<0)return"-"+this.negate().toHexString();var e,t=!1,r="",n=this.t,i=this.DB-n*this.DB%4;if(0>i)&&(t=!0,r=l(e));0<=n;)i<4?(e=(this[n]&(1<>(i+=this.DB-4)):(e=this[n]>>(i-=4)&15,i<=0&&(i+=this.DB,--n)),0this.DB?(this[this.t-1]|=(i&(1<>this.DB-n):this[this.t-1]|=i<=this.DB&&(n-=this.DB))}this.clamp(),r&&o.ZERO.subTo(this,this)}},o.prototype.negate=function(){var e=a();return o.ZERO.subTo(this,e),e},o.prototype.abs=function(){return this.s<0?this.negate():this},o.prototype.mod=function(e){var t=a();return this.abs().divRemTo(e,null,t),this.s<0&&0>n|a,a=(this[s]&i)<=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}0>this.F2:0),m=this.FV/g,b=(1<=this.t)t.t=0;else{var n=e%this.DB,i=this.DB-n,o=(1<>n;for(var a=r+1;a>n;0>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t[r++]=this.DV+n:0>15;0<=--o;){var c=32767&this[e],d=this[e++]>>15,u=s*c+d*a;i=((c=a*c+((32767&u)<<15)+r[n]+(1073741823&i))>>>30)+(u>>>15)+s*d+(i>>>30),r[n++]=1073741823&c}return i},o.prototype.am3=function(e,t,r,n,i,o){for(var a=16383&t,s=t>>14;0<=--o;){var c=16383&this[e],d=this[e++]>>14,u=s*c+d*a;i=((c=a*c+((16383&u)<<14)+r[n]+i)>>28)+(u>>14)+s*d,r[n++]=268435455&c}return i},o);function o(e){null!==e&&this.fromHexString(e)}function a(){return new i(null)}function s(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}t.BigInteger=i,t.nbi=a,t.nbits=s;for(var c=[],d="0".charCodeAt(0),u=0;u<=9;++u)c[d++]=u;for(d="a".charCodeAt(0),u=10;u<36;++u)c[d++]=u;for(d="A".charCodeAt(0),u=10;u<36;++u)c[d++]=u;function p(e,t){var r=c[e.charCodeAt(t)];return null==r?-1:r}t.intAt=p;var f="0123456789abcdefghijklmnopqrstuvwxyz";function l(e){return f.charAt(e)}t.int2char=l,t.b64toHex=function(e){for(var t="",r=0,n=0,i=0;i>2),n=3&o,1):1==r?(t+=l(n<<2|o>>4),n=15&o,2):2==r?(t+=l(n),t+=l(o>>2),n=3&o,3):(t+=l(n<<2|o>>4),t+=l(15&o),0))}return 1==r&&(t+=l(n<<2)),t},t.removeExtraSymbols=function(e){return e.replace(/^1f+00/,"").replace("3031300d060960864801650304020105000420","")};var g=(m.prototype.convert=function(e){return e.s<0""0<=e.compareTo(this.m)?e.mod(this.m):e},m.prototype.revert=function(e){return e},m.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},m.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},m.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},m);function m(e){this.m=e}var b=(v.prototype.convert=function(e){var t=a();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&0>15)*this.mpl&<<15)&e.DM;for(e[r=t+this.m.t],n,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),0<=e.compareTo(this.m)&&e.subTo(this.m,e)},v.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},v.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},v);function v(e){this.m=e,,this.mpl=32767&,>>15,<>>0;for(a[o-1][14]=Math.floor(d),a[o-1][15]=u,s=0;s>>0;var l=r[0],g=r[1],m=r[2],b=r[3],v=r[4],y=r[5],h=r[6],_=r[7];for(f=0;f<64;f++){var S=_+i.z1(v)+i.Ch(v,y,h)+t[f]+p[f],I=i.z0(l)+i.Maj(l,g,m);_=h,h=y,y=v,v=b+S>>>0,b=m,m=g,g=l,l=S+I>>>0}r[0]=r[0]+l>>>0,r[1]=r[1]+g>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+b>>>0,r[4]=r[4]+v>>>0,r[5]=r[5]+y>>>0,r[6]=r[6]+h>>>0,r[7]=r[7]+_>>>0}var A=new Array(r.length);for(_=0;_>>e|t<<32-e},i.z0=function(e){return i.ROTR(2,e)^i.ROTR(13,e)^i.ROTR(22,e)},i.z1=function(e){return i.ROTR(6,e)^i.ROTR(11,e)^i.ROTR(25,e)},i.q0=function(e){return i.ROTR(7,e)^i.ROTR(18,e)^e>>>3},i.q1=function(e){return i.ROTR(17,e)^i.ROTR(19,e)^e>>>10},i.Ch=function(e,t,r){return e&t^~e&r},i.Maj=function(e,t,r){return e&t^e&r^t&r},i);function i(){}t.Sha256=n}},[375]),pbjsChunk([218],{501:function(e,t,r){e.exports=r(502)},502:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r.d(t,"spec",function(){return A});var n=r(0),i=r(2),o=r(3),a=r(10),s=r.n(a),c=r(503),d=r.n(c),u=r(1);function p(e){return function(e){if(Array.isArray(e))return f(e)}(e)""function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)""function(e,t){if(e){if("string"==typeof e)return f(e,t);var,-1);return"Object"===r&&e.constructor&&(,"Map"===r"""Set"===r?Array.from(e):"Arguments"===r""/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(e,t):void 0}}(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 f(e,t){(null==t""t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);rnnnx3c!-- Rubicon Project Ad Tag --x3en


nn")),c=d(m[i.size_id].split("x").map(function(e){return Number(e)}),2),s.width=c[0],s.height=c[1]),s.rubiconTargeting=(Array.isArray(i.targeting)?i.targeting:[]).reduce(function(e,t){return e[t.key]=t.values[0],e},{rpfl_elemid:f.adUnitCode}),t.push(s)):n.logError("Rubicon: bidRequest undefined at index position:".concat(o),r,e),t},[]).sort(function(e,t){return(t.cpm""0)-(e.cpm""0)})},getUserSyncs:function(e,t,r,n){if(!x&&e.iframeEnabled){var i="";return r&&"string"==typeof r.consentString&&("boolean"==typeof r.gdprApplies?i+="?gdpr=".concat(Number(r.gdprApplies),"&gdpr_consent=").concat(r.consentString):i+="?gdpr_consent=".concat(r.consentString)),n&&(i+="".concat(i?"&":"?","us_privacy=").concat(encodeURIComponent(n))),x=!0,{type:"iframe",url:"https://".concat(g.syncHost"""eus","")+i}}},transformBidParams:function(e){return n.convertTypes({accountId:"number",siteId:"number",zoneId:"number"},e)}};function v(e,t){var r=o.b.getConfig("pageUrl");r=e.params.referrer?e.params.referrer:r""t.refererInfo.referer;return^http:/i,"https:"):r}function y(e,t){var r=e.params;if("video"===t){var i=[];return[,]:Array.isArray(n.deepAccess(e,""))&&[0]:Array.isArray(e.sizes)&&0e.length)&&(t=e.length);for(var r=0,n=new Array(t);r‘;var i,o}},h=function(e){var t=0=e&&t.innerWidth‘+v.vast_url+”“:v.vast_string&&(y=v.vast_string),g.pre_market_bids.push({id:v.deal_id,seatbid:[{bid:[{,dealid:v.deal_id,price:v.price,adm:y}]}],cur:v.currency,ext:{event_log:[{}]}})}}var h=n.getBidIdParameter(“mimes”,e.params)””[“application/javascript”,”video/mp4″,”video/webm”],_={id:e.bidId,secure:l,video:{w:p,h:f,ext:g,mimes:h}};””!=n.getBidIdParameter(“price_floor”,e.params)&&(_.bidfloor=n.getBidIdParameter(“price_floor”,e.params)),””!=n.getBidIdParameter(“start_delay”,e.params)&&(“start_delay”,e.params))),””!=n.getBidIdParameter(“min_duration”,e.params)&&(“min_duration”,e.params)),””!=n.getBidIdParameter(“max_duration”,e.params)&&(“max_duration”,e.params)),””!=n.getBidIdParameter(“placement_type”,e.params)&&(“placement_type”,e.params)),””!=n.getBidIdParameter(“position”,e.params)&&(“position”,e.params)),e.crumbs&&e.crumbs.pubcid&&(c=e.crumbs.pubcid);var S=navigator.language?”language”:”userLanguage”,I={id:s,imp:_,site:{id:””,page:a,content:”content”},device:{h:screen.height,w:screen.width,dnt:n.getDNT()?1:0,language:navigator[S].split(“-“)[0],make:navigator.vendor?navigator.vendor:””,ua:navigator.userAgent},ext:{wrap_response:1}};n.getBidIdParameter(“number_of_ads”,e.params)&&(I.ext.number_of_ads=n.getBidIdParameter(“number_of_ads”,e.params));var A={};return 1==n.getBidIdParameter(“spotx_all_google_consent”,e.params)&&(A.consented_providers_settings=u),t&&t.gdprConsent&&(A.consent=t.gdprConsent.consentString,void 0!==t.gdprConsent.gdprApplies&&n.deepSetValue(I,”regs.ext.gdpr”,t.gdprConsent.gdprApplies?1:0)),t&&t.uspConsent&&n.deepSetValue(I,”regs.ext.us_privacy”,t.uspConsent),n.deepAccess(e,”userId.id5id.uid”)&&(A.eids=A.eids””[],A.eids.push({source:””,uids:[{id:e.userId.id5id.uid}],ext:e.userId.id5id.ext””{}})),c&&(A.fpc=c),e&&e.schain&&(I.source={ext:{schain:e.schain}}),e&&e.userId&&e.userId.tdid&&(A.eids=A.eids””[],A.eids.push({source:””,uids:[{id:e.userId.tdid,ext:{rtiPartner:”TDID”}}]})),n.isEmpty(A)””(I.user={ext:A}),{method:”POST”,url:””+s,data:I,bidRequest:t}})},interpretResponse:function(e,t){var r=[],i=e.body;return i&&n.isArray(i.seatbid)&&n._each(i.seatbid,function(e){n._each(,function(e){var a={};for(var c in t.bidRequest.bids)e.impid==t.bidRequest.bids[c].bidId&&(a=t.bidRequest.bids[c]);n._each(a.params.pre_market_bids,function(t){,i.cur=t.currency)});var d={requestId:a.bidId,currency:i.cur”””USD”,cpm:e.price,creativeId:e.crid””””,dealId:e.dealid””””,ttl:360,netRevenue:!0,,cache_key:e.ext.cache_key,vastUrl:””+e.ext.cache_key,videoCacheKey:e.ext.cache_key,mediaType:s.d,width:e.w,height:e.h};d.meta=d.meta””{},e&&e.adomain&&0e.length)&&(t=e.length);for(var r=0,n=new Array(t);rt?e:t}function d(e,t,n){!e.preload&&e.preloadThreshhold&&function(e,t,n,i){return<=i+n&&u(e)}(,t.rect,e.preloadThreshhold,n)&&(e.preload=!0,setTimeout(function(){e.trigger("preload",new r("preload",t))},15))}function c(n){var i=n.el.getBoundingClientRect(),o=t.innerHeight""e.documentElement.clientHeight,h=f(i,o),s=h/(i.height""o),l={target:n.el,rect:i,visiblePx:h,visiblePercent:s};!function(e,t){var n=t.visiblePx,i=t.visiblePercent;n&&i>=e.shownThreshold&&!e.seen?(e.seen=!0,setTimeout(function(){e.trigger(“shown”,new r(“shown”,t))},15)):(!n””i1&&(h+=e(r,Math.floor(n/o),i-1,o)),h},this.getVerticallyVisiblePixels=f,this.getViewportHeight=function(){return t.innerHeight””e.documentElement.clientHeight””e.body.clientHeight},this.getViewportWidth=function(){return t.innerWidth””e.documentElement.clientWidth””e.body.clientWidth},this.isElementNotHidden=u,this.isElementInViewport=function(n){var i=n.getBoundingClientRect();return>=0&&i.left>=0&&i.bottom<=(t.innerHeight""e.documentElement.clientHeight)&&i.right<=(t.innerWidth""e.documentElement.clientWidth)},this.Visible=o}]); }, {}]; 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= 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 = o[Symbol.iterator](); }, n: function n() { var step =; 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 =, -1); if (n === “Object” && o.constructor) n =; 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",""), 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

.  .  .  .  .  .  . .  .  .  .  .  .  .  .  .  .   .   .   .    .    .   .   .   .   .   .  .   .   .   .  .  .   .  .