Join 58,000+ Looksmaxxing Members!

Register a FREE account today to become a member. Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox.

  • DISCLAIMER: DO NOT ATTEMPT TREATMENT WITHOUT LICENCED MEDICAL CONSULTATION AND SUPERVISION

    This is a public discussion forum. The owners, staff, and users of this website ARE NOT engaged in rendering professional services to the individual reader. DO NOT use the content of this website as an alternative to personal examination and advice from licenced healthcare providers. DO NOT begin, delay, or discontinue treatments and/or exercises without licenced medical supervision. Learn more

niggula banned again over

Register to hide this ad
why
 
  • Wow
Reactions: RAD
18679.jpg
 
Ye ye we all know why
 
Oh well I take it back
stfu

if (XF.activate)
console.error("XF core has been double loaded");
else {
XF.browser || (XF.browser = {
browser: "",
version: 0,
os: "",
osVersion: null
});
XF.extendObject = (...a) => {
let c = !1
, b = a[0] || {}
, f = 1;
"boolean" === typeof b && (c = b,
b = a[f] || {},
f++);
for (; f < a.length; f++) {
if (!a[f])
continue;
const d = a[f];
Object.keys(d).forEach(e => {
const g = b[e]
, h = d[e];
c && h && "object" === typeof h ? (Array.isArray(h) ? b[e] = g && Array.isArray(g) ? g : [] : b[e] = g && "object" === typeof g ? g : {},
b[e] = XF.extendObject(c, b[e], h)) : void 0 !== h && (b[e] = h)
}
)
}
return b
}
;
XF.createElement = (a, c={}, b=null) => {
const f = m.createElement(a);
Object.entries(c).forEach( ([d,e]) => {
"object" === typeof e ? Object.entries(e).forEach( ([g,h]) => {
switch (d) {
case "properties":
return f[g] = h;
case "attributes":
return f.setAttribute(g, h);
case "dataset":
return f.dataset[g] = h;
case "style":
return f.style[g] = h;
default:
console.error("XF.createElement supports properties, attributes, dataset and style objects only.")
}
}
) : f[d] = e
}
);
b instanceof HTMLElement && b.appendChild(f);
return f
}
;
XF.createElementFromString = (a, c=null) => {
a = `<body>${a}</body>`;
a = (new q.DOMParser).parseFromString(a, "text/html").body;
if (1 < a.children.length) {
const b = m.createElement("div");
b.classList.add("js-createdContainer");
b.append(...a.children);
a = b
} else
a = a.firstChild;
c instanceof Node && c.appendChild(a);
return a
}
;
XF.isCreatedContainer = a => a instanceof Element && a.classList.contains("js-createdContainer");
XF.extendObject(XF, {
config: {
userId: null,
enablePush: !1,
skipServiceWorkerRegistration: !1,
skipPushNotificationSubscription: !1,
skipPushNotificationCta: !1,
serviceWorkerPath: null,
pushAppServerKey: null,
csrf: m.querySelector("html").dataset.csrf,
time: {
now: 0,
today: 0,
todayDow: 0,
tomorrow: 0,
yesterday: 0,
week: 0,
month: 0,
year: 0
},
cookie: {
path: "/",
domain: "",
prefix: "xf_"
},
url: {
fullBase: "/",
basePath: "/",
css: "",
js: "",
icon: "",
keepAlive: ""
},
css: {},
js: {},
jsMt: {},
fullJs: !1,
jsState: {},
speed: {
xxfast: 50,
xfast: 100,
fast: 200,
normal: 400,
slow: 600
},
job: {
manualUrl: ""
},
borderSizeFeature: "3px",
fontAwesomeWeight: "r",
enableRtnProtect: !0,
enableFormSubmitSticky: !0,
visitorCounts: {
conversations_unread: "0",
alerts_unviewed: "0",
total_unread: "0",
title_count: !1,
icon_indicator: !1
},
uploadMaxFilesize: null,
uploadMaxWidth: 0,
uploadMaxHeight: 0,
allowedVideoExtensions: [],
allowedAudioExtensions: [],
shortcodeToEmoji: !0,
publicMetadataLogoUrl: "",
publicPushBadgeUrl: ""
},
debug: {
disableAjaxSubmit: !1
},
counter: 1,
pageDisplayTime: null,
phrases: {},
getApp: () => m.querySelector("html").dataset.app || null,
isFunction: a => "function" === typeof a,
isObject: a => a === Object(a),
isPlainObject: a => "[object Object]" === Object.prototype.toString.call(a),
isEmptyObject: a => 0 === Object.keys(a).length,
hasOwn: (a, c) => Object.prototype.hasOwnProperty.call(a, c),
isNumeric: a => !isNaN(parseFloat(a)) && isFinite(a),
isHidden: a => "none" === q.getComputedStyle(a).display || 0 === a.offsetHeight || "hidden" === a.type && "input" === a.tagName.toLowerCase(),
toBoolean: a => {
switch (a) {
case "true":
case "yes":
case "on":
case "1":
case 1:
return !0;
default:
return !1
}
}
,
toCamelCase: a => a.replace(/-([a-z])/g, (c, b) => b.toUpperCase()),
_scrollLeftType: null,
scrollLeftType: () => {
if (null !== XF._scrollLeftType)
return XF._scrollLeftType;
if (XF.isRtl()) {
const a = XF.createElementFromString('<div style="width: 80px; height: 40px; font-size: 30px; overflow: scroll; white-space: nowrap; word-wrap: normal; position: absolute; top: -1000px; visibility: hidden; pointer-events: none">MMMMMMMMMM</div>');
m.body.append(a);
XF._scrollLeftType = 0 < a.scrollLeft ? "inverted" : -1 === a.scrollLeft ? "negative" : "normal";
a.remove();
return XF._scrollLeftType
}
XF._scrollLeftType = "normal";
return XF._scrollLeftType
}
,
eventHandlers: {},
customEvent: (a, c) => new G(a,c),
trigger: (a, c, b={}) => {
"string" === typeof c && (c = XF.customEvent(c, b));
const f = c.type
, [d,e="default"] = f.split(".");
if (!XF.eventHandlers[e] || !XF.eventHandlers[e][d])
return !(d.cancelable && d.defaultPrevented);
if ("default" === e)
return a.dispatchEvent(c);
XF.eventHandlers[e][d].forEach(g => {
if (a === g.element) {
const {handler: h, options: k} = g;
k.once && XF.off(a, f, h, k);
h.call(a, c);
k.passive && c.defaultPrevented && console.warn("preventDefault() was called on a namespaced passive event listener and this is not supported.")
}
}
);
return !(d.cancelable && d.defaultPrevented)
}
,
onDelegated: (a, c, b, f, d={}) => {
const e = g => {
const h = g.target.closest(b);
h && a.contains(h) && f.call(h, g)
}
;
e.originalHandler = f;
XF.on(a, c, e, d)
}
,
on: (a, c, b, f={}) => {
a ? c.split(" ").forEach(d => {
const [e,g="default"] = d.split(".");
d = {
element: a,
handler: b,
options: f
};
XF.eventHandlers[g] || (XF.eventHandlers[g] = {});
XF.eventHandlers[g][e] || (XF.eventHandlers[g][e] = []);
XF.eventHandlers[g][e].push(d);
a.addEventListener(e, b, f)
}
) : console.error("No element passed in to event.")
}
,
off: (a, c, b=null, f=!1) => {
const [d,e="default"] = c.split(".");
!d && e ? XF.eventHandlers[e] && (Object.keys(XF.eventHandlers[e]).forEach(g => {
XF.eventHandlers[e][g].forEach(h => {
a.removeEventListener(g, h.handler, f)
}
)
}
),
delete XF.eventHandlers[e]) : XF.eventHandlers[e] && XF.eventHandlers[e][d] && (XF.eventHandlers[e][d] = XF.eventHandlers[e][d].filter(g => b && b !== g.handler && b !== g.handler.originalHandler ? !0 : (a.removeEventListener(d, g.handler, f),
!1)),
XF.eventHandlers[e][d].length || delete XF.eventHandlers[e][d])
}
,
onTransitionEnd: (a, c, b) => {
let f = !1;
const d = (e, ...g) => {
if (e.target === e.currentTarget && !f)
return f = !0,
XF.off(e.currentTarget, "transitionend", d),
b(e, ...g)
}
;
XF.on(a, "transitionend", d);
setTimeout( () => {
f || XF.trigger(a, "transitionend")
}
, c + 10)
}
,
onWithin: (a, c, b, f=!1) => {
c.split(" ").forEach(d => {
const e = g => {
g.target.contains(a) && (f && XF.off(m, d, e),
b(g))
}
;
XF.on(m, d, e)
}
);
return a
}
,
oneWithin: (a, c, b) => XF.onWithin(a, c, b, !0),
onPointer: (a, c, b, f={}) => {
if (XF.isPlainObject(c)) {
for (const d of Object.keys(c))
XF.onPointer(a, d, c[d], f);
return a
}
"string" === typeof c && (c = c.split(/\s+/));
c.forEach(d => XF.on(a, d, e => {
e.xfPointerType = e.pointerType || a.getAttribute("data-xf-pointer-type") || "";
b(e)
}
, f));
XF.on(a, "pointerdown", d => a.setAttribute("data-xf-pointer-type", d.pointerType), {
passive: !0
});
return a
}
,
uniqueId: a => {
let c = a.getAttribute("id");
c || (c = "js-XFUniqueId" + XF.getUniqueCounter(),
a.setAttribute("id", c));
return c
}
,
findExtended: (a, c) => {
const b = a.match(/^<([^|]+)(\|([\s\S]+))?$/);
if ("string" === typeof a && b) {
a = b[1].trim();
let f, d;
const e = {
up: "parentElement",
next: "nextElementSibling",
prev: "previousElementSibling"
};
let g;
do
if (f = a.match(/^:(up|next|prev)(\((\d+)\))?/)) {
f[2] || (f[3] = 1);
g = e[f[1]];
for (d = 0; d < f[3]; d++)
(c = c[g]) || (c = null);
a = a.substr(f[0].length).trim()
}
while (f);
a.length && (c = c.closest(a));
c || (c = null);
a = b[2] ? b[3].trim() : "";
return c && a.length ? c.querySelectorAll(a) : c
}
return c.querySelectorAll(a)
}
,
position: a => ({
top: a.offsetTop,
left: a.offsetLeft
}),
dimensions: (a, c, b) => {
const f = a.getBoundingClientRect()
, d = {
top: f.top + q.scrollY,
left: f.left + q.scrollX
};
c ? (d.width = a.offsetWidth || f.width,
d.height = a.offsetHeight || f.height,
b && (a = q.getComputedStyle(a),
d.width += parseInt(a.marginLeft) + parseInt(a.marginRight),
d.height += parseInt(a.marginTop) + parseInt(a.marginBottom))) : (d.width = a.clientWidth || f.width,
d.height = a.clientHeight || f.height);
d.right = d.left + d.width;
d.bottom = d.top + d.height;
return d
}
,
viewport: (a, c, b) => {
a === q && (a = m.documentElement);
a = {
width: c ? a.offsetWidth : a.clientWidth,
height: c ? a.offsetHeight : a.clientHeight,
left: a.scrollLeft,
top: a.scrollTop,
right: 0,
bottom: 0,
docWidth: m.documentElement.scrollWidth,
docHeight: m.documentElement.scrollHeight
};
a.bottom = a.top + a.height;
a.right = a.left + a.width;
return a
}
,
hasFixableParent: a => {
let c = !1;
for (; a.parentNode; )
if (a = a.parentNode,
a instanceof Element) {
switch (q.getComputedStyle(a).getPropertyValue("position")) {
case "fixed":
case "sticky":
case "-webkit-sticky":
c = a
}
if (c)
break
}
return c
}
,
hasFixedParent: a => {
let c = !1;
for (; a.parentNode; )
if (a = a.parentNode,
a instanceof Element) {
var b = q.getComputedStyle(a);
switch (b.getPropertyValue("position")) {
case "fixed":
c = a;
break;
case "sticky":
case "-webkit-sticky":
const d = XF.dimensions(a, !0)
, e = XF.viewport(q);
var f = b.getPropertyValue("top");
b = b.getPropertyValue("bottom");
if ("auto" !== f && (f = d.top - e.top - parseInt(f, 10),
.5 >= Math.abs(f))) {
c = a;
break
}
"auto" !== b && (f = d.bottom - e.bottom - parseInt(b, 10),
.5 >= Math.abs(f) && (c = a))
}
if (c)
break
}
return c
}
,
autofocus: a => {
XF.isIOS() ? a.matches(":focus") || (a.classList.add("is-focused"),
XF.on(a, "blur", () => a.classList.remove("is-focused"))) : a.focus();
return this
}
,
replaceSelectedText: (a, c) => {
let b = a.selectionStart;
a.setRangeText(c, b, a.selectionEnd, "preserve");
a.selectionStart = b + c.length;
a.selectionEnd = a.selectionStart
}
,
normalizedScrollLeft: (a, c) => {
const b = XF.scrollLeftType();
if ("undefined" !== typeof c) {
switch (b) {
case "negative":
c = 0 < c ? -c : 0;
break;
case "inverted":
c = a.scrollWidth - a.offsetWidth - c
}
a.scrollLeft = c
} else
switch (c = a.scrollLeft,
b) {
case "negative":
return 0 > c ? -c : 0;
case "inverted":
return a = a.scrollWidth - c - a.offsetWidth,
.5 > a ? 0 : a;
default:
return c
}
}
,
focusNext: a => {
var c = Array.prototype.slice.call(m.querySelectorAll('input:not([type="hidden"]),select,textarea,a,button'));
c = c.filter(b => 0 < b.offsetWidth || 0 < b.offsetHeight || 0 < b.getClientRects().length);
a = c.indexOf(a);
(c = c[a + 1] || null) && c.focus();
return c
}
,
getKeyboardInputs: () => "input:not([type=radio], [type=checkbox], [type=submit], [type=reset]), textarea",
onPageLoad: () => {
XF.trigger(m, "xf:page-load-start");
XF.NavDeviceWatcher.initialize();
XF.ActionIndicator.initialize();
XF.DynamicDate.initialize();
XF.KeepAlive.initialize();
XF.LinkWatcher.initLinkProxy();
XF.LinkWatcher.initExternalWatcher();
XF.ExpandableContent.watch();
XF.ScrollButtons.initialize();
XF.NavButtons.initialize();
XF.KeyboardShortcuts.initialize();
XF.FormInputValidation.initialize();
XF.PWA.initialize();
XF.Push.initialize();
XF.IgnoreWatcher.initializeHash();
XF.BrowserWarning.display();
XF.BrowserWarning.hideJsWarning();
XF.History.initialize();
XF.PullToRefresh.initialize();
XF.LazyHandlerLoader.initialize();
XF.config.jsState = XF.applyJsState({}, XF.config.jsState);
XF.activate(m);
XF.on(m, "ajax:complete", a => {
({data: a} = a);
a && a.visitor && XF.updateVisitorCounts(a.visitor, !0)
}
);
XF.on(m, "ajax:before-success", a => {
({data: a} = a);
a && a && a.job && (a = a.job,
a.manual && XF.JobRunner.runManual(a.manual),
a.autoBlocking ? XF.JobRunner.runAutoBlocking(a.autoBlocking, a.autoBlockingMessage) : a.auto && setTimeout(XF.JobRunner.runAuto, 0))
}
);
XF.on(m, "keyup", a => {
"Enter" === a.key && (a = a.target,
a.matches("a:not([href])") && a.click())
}
);
m.querySelector("html[data-run-jobs]") && setTimeout(XF.JobRunner.runAuto, 100);
XF.config.visitorCounts && XF.updateVisitorCountsOnLoad(XF.config.visitorCounts);
XF.CrossTab.on("visitorCounts", a => {
XF.updateVisitorCounts(a, !1)
}
);
XF.pageLoadScrollFix();
setTimeout( () => {
const a = m.querySelector("[data-load-auto-click]");
a && a.click()
}
, 100);
XF.trigger(m, "xf:page-load-complete")
}
,
addExtraPhrases: a => {
a.querySelectorAll("script.js-extraPhrases").forEach(c => {
let b;
try {
b = JSON.parse(c.textContent) || {},
XF.extendObject(XF.phrases, b)
} catch (f) {
console.error(f)
}
c.remove()
}
)
}
,
phrase: (a, c, b) => {
let f = XF.phrases[a];
f && c && (f = XF.stringTranslate(f, c));
return f || b || a
}
,
_isRtl: null,
isRtl: () => {
if (null === XF._isRtl) {
const a = m.querySelector("html").getAttribute("dir");
XF._isRtl = a && "RTL" === a.toUpperCase()
}
return XF._isRtl
}
,
rtlFlipKeyword: a => {
if (!XF.isRtl())
return a;
switch (a.toLowerCase()) {
case "left":
return "right";
case "right":
return "left";
default:
return a
}
}
,
isMac: () => "mac" === XF.browser.os,
isIOS: () => "ios" === XF.browser.os,
log: (...a) => {
console.log && console.log(...a)
}
,
findRelativeIf: (a, c, b=!0) => {
if (!a)
throw Error("No selector provided");
a.endsWith(">") && (a += " *");
const f = a.match(/^([<>|])/);
f ? "<" === f[1] ? (a = XF.findExtended(a, c),
b && a instanceof NodeList && (a = 1 <= a.length ? a[0] : null)) : ("|" === f[1] ? a = a.substring(1) : ">" === f[1] && (a = ":scope " + a),
a = b ? c.querySelector(a) : c.querySelectorAll(a)) : a = b ? m.querySelector(a) : m.querySelectorAll(a);
return a
}
,
isElementVisible: a => {
const c = m.documentElement;
a = a.getBoundingClientRect();
return 0 <= a.top && 0 <= a.left && a.bottom <= c.clientHeight && a.right <= c.clientWidth
}
,
layoutChange: () => {
XF._layoutChangeTriggered || (XF._layoutChangeTriggered = !0,
setTimeout( () => {
XF._layoutChangeTriggered = !1;
XF.trigger(m.body, "xf:layout")
}
, 0))
}
,
_layoutChangeTriggered: !1,
updateAvatars: (a, c, b) => {
m.querySelectorAll(".avatar").forEach(f => {
var d = f.querySelector("img, span");
const e = "avatar-u" + a + "-"
, g = f.classList.contains("avatar--updateLink") ? f.querySelector(".avatar-update") : null;
if ((b || !d.classList.contains("js-croppedAvatar")) && d.className.startsWith(e)) {
if (d.classList.contains(e + "s"))
d = XF.createElementFromString(c.s);
else if (d.classList.contains(e + "m"))
d = XF.createElementFromString(c.m);
else if (d.classList.contains(e + "l"))
d = XF.createElementFromString(c.l);
else if (d.classList.contains(e + "o"))
d = XF.createElementFromString(c.o);
else
return;
f.innerHTML = "";
f.append(...d.childNodes);
d.classList.contains("avatar--default") ? (f.classList.add("avatar--default"),
d.classList.contains("avatar--default--dynamic") ? f.classList.add("avatar--default--dynamic") : d.classList.contains("avatar--default--text") ? f.classList.add("avatar--default--text") : d.classList.contains("avatar--default--image") && f.classList.add("avatar--default--image")) : f.classList.remove("avatar--default", "avatar--default--dynamic", "avatar--default--text", "avatar--default--image");
f.setAttribute("style", d.getAttribute("style"));
g && f.appendChild(g)
}
}
)
}
,
updateVisitorCounts: (a, c, b) => {
a && "public" === XF.getApp() && (XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--conversations"), a.conversations_unread),
XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--alerts"), a.alerts_unviewed),
XF.config.visitorCounts.title_count && XF.pageTitleCounterUpdate(a.total_unread),
XF.config.visitorCounts.icon_indicator && XF.faviconUpdate(a.total_unread),
c && (XF.appBadgeUpdate(a.total_unread),
XF.CrossTab.trigger("visitorCounts", a),
XF.LocalStorage.setJson("visitorCounts", {
time: b || Math.floor((new Date).getTime() / 1E3) - 1,
conversations_unread: a.conversations_unread,
alerts_unviewed: a.alerts_unviewed,
total_unread: a.total_unread
})))
}
,
updateVisitorCountsOnLoad: a => {
const c = XF.getLocalLoadTime()
, b = XF.LocalStorage.getJson("visitorCounts");
b && b.time && b.time > c && (a.conversations_unread = b.conversations_unread,
a.alerts_unviewed = b.alerts_unviewed,
a.total_unread = b.total_unread);
XF.updateVisitorCounts(a, !0, c)
}
,
badgeCounterUpdate: (a, c) => {
a.forEach(b => {
b && (b.setAttribute("data-badge", c),
"0" !== String(c) ? b.classList.add("badgeContainer--highlighted") : b.classList.remove("badgeContainer--highlighted"))
}
)
}
,
shouldCountBeShown: a => 0 < parseInt(a.replace(/[,. ]/g, "")),
pageTitleCache: "",
pageTitleCounterUpdate: a => {
let c = m.title;
 
stfu

if (XF.activate)
console.error("XF core has been double loaded");
else {
XF.browser || (XF.browser = {
browser: "",
version: 0,
os: "",
osVersion: null
});
XF.extendObject = (...a) => {
let c = !1
, b = a[0] || {}
, f = 1;
"boolean" === typeof b && (c = b,
b = a[f] || {},
f++);
for (; f < a.length; f++) {
if (!a[f])
continue;
const d = a[f];
Object.keys(d).forEach(e => {
const g = b[e]
, h = d[e];
c && h && "object" === typeof h ? (Array.isArray(h) ? b[e] = g && Array.isArray(g) ? g : [] : b[e] = g && "object" === typeof g ? g : {},
b[e] = XF.extendObject(c, b[e], h)) : void 0 !== h && (b[e] = h)
}
)
}
return b
}
;
XF.createElement = (a, c={}, b=null) => {
const f = m.createElement(a);
Object.entries(c).forEach( ([d,e]) => {
"object" === typeof e ? Object.entries(e).forEach( ([g,h]) => {
switch (d) {
case "properties":
return f[g] = h;
case "attributes":
return f.setAttribute(g, h);
case "dataset":
return f.dataset[g] = h;
case "style":
return f.style[g] = h;
default:
console.error("XF.createElement supports properties, attributes, dataset and style objects only.")
}
}
) : f[d] = e
}
);
b instanceof HTMLElement && b.appendChild(f);
return f
}
;
XF.createElementFromString = (a, c=null) => {
a = `<body>${a}</body>`;
a = (new q.DOMParser).parseFromString(a, "text/html").body;
if (1 < a.children.length) {
const b = m.createElement("div");
b.classList.add("js-createdContainer");
b.append(...a.children);
a = b
} else
a = a.firstChild;
c instanceof Node && c.appendChild(a);
return a
}
;
XF.isCreatedContainer = a => a instanceof Element && a.classList.contains("js-createdContainer");
XF.extendObject(XF, {
config: {
userId: null,
enablePush: !1,
skipServiceWorkerRegistration: !1,
skipPushNotificationSubscription: !1,
skipPushNotificationCta: !1,
serviceWorkerPath: null,
pushAppServerKey: null,
csrf: m.querySelector("html").dataset.csrf,
time: {
now: 0,
today: 0,
todayDow: 0,
tomorrow: 0,
yesterday: 0,
week: 0,
month: 0,
year: 0
},
cookie: {
path: "/",
domain: "",
prefix: "xf_"
},
url: {
fullBase: "/",
basePath: "/",
css: "",
js: "",
icon: "",
keepAlive: ""
},
css: {},
js: {},
jsMt: {},
fullJs: !1,
jsState: {},
speed: {
xxfast: 50,
xfast: 100,
fast: 200,
normal: 400,
slow: 600
},
job: {
manualUrl: ""
},
borderSizeFeature: "3px",
fontAwesomeWeight: "r",
enableRtnProtect: !0,
enableFormSubmitSticky: !0,
visitorCounts: {
conversations_unread: "0",
alerts_unviewed: "0",
total_unread: "0",
title_count: !1,
icon_indicator: !1
},
uploadMaxFilesize: null,
uploadMaxWidth: 0,
uploadMaxHeight: 0,
allowedVideoExtensions: [],
allowedAudioExtensions: [],
shortcodeToEmoji: !0,
publicMetadataLogoUrl: "",
publicPushBadgeUrl: ""
},
debug: {
disableAjaxSubmit: !1
},
counter: 1,
pageDisplayTime: null,
phrases: {},
getApp: () => m.querySelector("html").dataset.app || null,
isFunction: a => "function" === typeof a,
isObject: a => a === Object(a),
isPlainObject: a => "[object Object]" === Object.prototype.toString.call(a),
isEmptyObject: a => 0 === Object.keys(a).length,
hasOwn: (a, c) => Object.prototype.hasOwnProperty.call(a, c),
isNumeric: a => !isNaN(parseFloat(a)) && isFinite(a),
isHidden: a => "none" === q.getComputedStyle(a).display || 0 === a.offsetHeight || "hidden" === a.type && "input" === a.tagName.toLowerCase(),
toBoolean: a => {
switch (a) {
case "true":
case "yes":
case "on":
case "1":
case 1:
return !0;
default:
return !1
}
}
,
toCamelCase: a => a.replace(/-([a-z])/g, (c, b) => b.toUpperCase()),
_scrollLeftType: null,
scrollLeftType: () => {
if (null !== XF._scrollLeftType)
return XF._scrollLeftType;
if (XF.isRtl()) {
const a = XF.createElementFromString('<div style="width: 80px; height: 40px; font-size: 30px; overflow: scroll; white-space: nowrap; word-wrap: normal; position: absolute; top: -1000px; visibility: hidden; pointer-events: none">MMMMMMMMMM</div>');
m.body.append(a);
XF._scrollLeftType = 0 < a.scrollLeft ? "inverted" : -1 === a.scrollLeft ? "negative" : "normal";
a.remove();
return XF._scrollLeftType
}
XF._scrollLeftType = "normal";
return XF._scrollLeftType
}
,
eventHandlers: {},
customEvent: (a, c) => new G(a,c),
trigger: (a, c, b={}) => {
"string" === typeof c && (c = XF.customEvent(c, b));
const f = c.type
, [d,e="default"] = f.split(".");
if (!XF.eventHandlers[e] || !XF.eventHandlers[e][d])
return !(d.cancelable && d.defaultPrevented);
if ("default" === e)
return a.dispatchEvent(c);
XF.eventHandlers[e][d].forEach(g => {
if (a === g.element) {
const {handler: h, options: k} = g;
k.once && XF.off(a, f, h, k);
h.call(a, c);
k.passive && c.defaultPrevented && console.warn("preventDefault() was called on a namespaced passive event listener and this is not supported.")
}
}
);
return !(d.cancelable && d.defaultPrevented)
}
,
onDelegated: (a, c, b, f, d={}) => {
const e = g => {
const h = g.target.closest(b);
h && a.contains(h) && f.call(h, g)
}
;
e.originalHandler = f;
XF.on(a, c, e, d)
}
,
on: (a, c, b, f={}) => {
a ? c.split(" ").forEach(d => {
const [e,g="default"] = d.split(".");
d = {
element: a,
handler: b,
options: f
};
XF.eventHandlers[g] || (XF.eventHandlers[g] = {});
XF.eventHandlers[g][e] || (XF.eventHandlers[g][e] = []);
XF.eventHandlers[g][e].push(d);
a.addEventListener(e, b, f)
}
) : console.error("No element passed in to event.")
}
,
off: (a, c, b=null, f=!1) => {
const [d,e="default"] = c.split(".");
!d && e ? XF.eventHandlers[e] && (Object.keys(XF.eventHandlers[e]).forEach(g => {
XF.eventHandlers[e][g].forEach(h => {
a.removeEventListener(g, h.handler, f)
}
)
}
),
delete XF.eventHandlers[e]) : XF.eventHandlers[e] && XF.eventHandlers[e][d] && (XF.eventHandlers[e][d] = XF.eventHandlers[e][d].filter(g => b && b !== g.handler && b !== g.handler.originalHandler ? !0 : (a.removeEventListener(d, g.handler, f),
!1)),
XF.eventHandlers[e][d].length || delete XF.eventHandlers[e][d])
}
,
onTransitionEnd: (a, c, b) => {
let f = !1;
const d = (e, ...g) => {
if (e.target === e.currentTarget && !f)
return f = !0,
XF.off(e.currentTarget, "transitionend", d),
b(e, ...g)
}
;
XF.on(a, "transitionend", d);
setTimeout( () => {
f || XF.trigger(a, "transitionend")
}
, c + 10)
}
,
onWithin: (a, c, b, f=!1) => {
c.split(" ").forEach(d => {
const e = g => {
g.target.contains(a) && (f && XF.off(m, d, e),
b(g))
}
;
XF.on(m, d, e)
}
);
return a
}
,
oneWithin: (a, c, b) => XF.onWithin(a, c, b, !0),
onPointer: (a, c, b, f={}) => {
if (XF.isPlainObject(c)) {
for (const d of Object.keys(c))
XF.onPointer(a, d, c[d], f);
return a
}
"string" === typeof c && (c = c.split(/\s+/));
c.forEach(d => XF.on(a, d, e => {
e.xfPointerType = e.pointerType || a.getAttribute("data-xf-pointer-type") || "";
b(e)
}
, f));
XF.on(a, "pointerdown", d => a.setAttribute("data-xf-pointer-type", d.pointerType), {
passive: !0
});
return a
}
,
uniqueId: a => {
let c = a.getAttribute("id");
c || (c = "js-XFUniqueId" + XF.getUniqueCounter(),
a.setAttribute("id", c));
return c
}
,
findExtended: (a, c) => {
const b = a.match(/^<([^|]+)(\|([\s\S]+))?$/);
if ("string" === typeof a && b) {
a = b[1].trim();
let f, d;
const e = {
up: "parentElement",
next: "nextElementSibling",
prev: "previousElementSibling"
};
let g;
do
if (f = a.match(/^:(up|next|prev)(\((\d+)\))?/)) {
f[2] || (f[3] = 1);
g = e[f[1]];
for (d = 0; d < f[3]; d++)
(c = c[g]) || (c = null);
a = a.substr(f[0].length).trim()
}
while (f);
a.length && (c = c.closest(a));
c || (c = null);
a = b[2] ? b[3].trim() : "";
return c && a.length ? c.querySelectorAll(a) : c
}
return c.querySelectorAll(a)
}
,
position: a => ({
top: a.offsetTop,
left: a.offsetLeft
}),
dimensions: (a, c, b) => {
const f = a.getBoundingClientRect()
, d = {
top: f.top + q.scrollY,
left: f.left + q.scrollX
};
c ? (d.width = a.offsetWidth || f.width,
d.height = a.offsetHeight || f.height,
b && (a = q.getComputedStyle(a),
d.width += parseInt(a.marginLeft) + parseInt(a.marginRight),
d.height += parseInt(a.marginTop) + parseInt(a.marginBottom))) : (d.width = a.clientWidth || f.width,
d.height = a.clientHeight || f.height);
d.right = d.left + d.width;
d.bottom = d.top + d.height;
return d
}
,
viewport: (a, c, b) => {
a === q && (a = m.documentElement);
a = {
width: c ? a.offsetWidth : a.clientWidth,
height: c ? a.offsetHeight : a.clientHeight,
left: a.scrollLeft,
top: a.scrollTop,
right: 0,
bottom: 0,
docWidth: m.documentElement.scrollWidth,
docHeight: m.documentElement.scrollHeight
};
a.bottom = a.top + a.height;
a.right = a.left + a.width;
return a
}
,
hasFixableParent: a => {
let c = !1;
for (; a.parentNode; )
if (a = a.parentNode,
a instanceof Element) {
switch (q.getComputedStyle(a).getPropertyValue("position")) {
case "fixed":
case "sticky":
case "-webkit-sticky":
c = a
}
if (c)
break
}
return c
}
,
hasFixedParent: a => {
let c = !1;
for (; a.parentNode; )
if (a = a.parentNode,
a instanceof Element) {
var b = q.getComputedStyle(a);
switch (b.getPropertyValue("position")) {
case "fixed":
c = a;
break;
case "sticky":
case "-webkit-sticky":
const d = XF.dimensions(a, !0)
, e = XF.viewport(q);
var f = b.getPropertyValue("top");
b = b.getPropertyValue("bottom");
if ("auto" !== f && (f = d.top - e.top - parseInt(f, 10),
.5 >= Math.abs(f))) {
c = a;
break
}
"auto" !== b && (f = d.bottom - e.bottom - parseInt(b, 10),
.5 >= Math.abs(f) && (c = a))
}
if (c)
break
}
return c
}
,
autofocus: a => {
XF.isIOS() ? a.matches(":focus") || (a.classList.add("is-focused"),
XF.on(a, "blur", () => a.classList.remove("is-focused"))) : a.focus();
return this
}
,
replaceSelectedText: (a, c) => {
let b = a.selectionStart;
a.setRangeText(c, b, a.selectionEnd, "preserve");
a.selectionStart = b + c.length;
a.selectionEnd = a.selectionStart
}
,
normalizedScrollLeft: (a, c) => {
const b = XF.scrollLeftType();
if ("undefined" !== typeof c) {
switch (b) {
case "negative":
c = 0 < c ? -c : 0;
break;
case "inverted":
c = a.scrollWidth - a.offsetWidth - c
}
a.scrollLeft = c
} else
switch (c = a.scrollLeft,
b) {
case "negative":
return 0 > c ? -c : 0;
case "inverted":
return a = a.scrollWidth - c - a.offsetWidth,
.5 > a ? 0 : a;
default:
return c
}
}
,
focusNext: a => {
var c = Array.prototype.slice.call(m.querySelectorAll('input:not([type="hidden"]),select,textarea,a,button'));
c = c.filter(b => 0 < b.offsetWidth || 0 < b.offsetHeight || 0 < b.getClientRects().length);
a = c.indexOf(a);
(c = c[a + 1] || null) && c.focus();
return c
}
,
getKeyboardInputs: () => "input:not([type=radio], [type=checkbox], [type=submit], [type=reset]), textarea",
onPageLoad: () => {
XF.trigger(m, "xf:page-load-start");
XF.NavDeviceWatcher.initialize();
XF.ActionIndicator.initialize();
XF.DynamicDate.initialize();
XF.KeepAlive.initialize();
XF.LinkWatcher.initLinkProxy();
XF.LinkWatcher.initExternalWatcher();
XF.ExpandableContent.watch();
XF.ScrollButtons.initialize();
XF.NavButtons.initialize();
XF.KeyboardShortcuts.initialize();
XF.FormInputValidation.initialize();
XF.PWA.initialize();
XF.Push.initialize();
XF.IgnoreWatcher.initializeHash();
XF.BrowserWarning.display();
XF.BrowserWarning.hideJsWarning();
XF.History.initialize();
XF.PullToRefresh.initialize();
XF.LazyHandlerLoader.initialize();
XF.config.jsState = XF.applyJsState({}, XF.config.jsState);
XF.activate(m);
XF.on(m, "ajax:complete", a => {
({data: a} = a);
a && a.visitor && XF.updateVisitorCounts(a.visitor, !0)
}
);
XF.on(m, "ajax:before-success", a => {
({data: a} = a);
a && a && a.job && (a = a.job,
a.manual && XF.JobRunner.runManual(a.manual),
a.autoBlocking ? XF.JobRunner.runAutoBlocking(a.autoBlocking, a.autoBlockingMessage) : a.auto && setTimeout(XF.JobRunner.runAuto, 0))
}
);
XF.on(m, "keyup", a => {
"Enter" === a.key && (a = a.target,
a.matches("a:not([href])") && a.click())
}
);
m.querySelector("html[data-run-jobs]") && setTimeout(XF.JobRunner.runAuto, 100);
XF.config.visitorCounts && XF.updateVisitorCountsOnLoad(XF.config.visitorCounts);
XF.CrossTab.on("visitorCounts", a => {
XF.updateVisitorCounts(a, !1)
}
);
XF.pageLoadScrollFix();
setTimeout( () => {
const a = m.querySelector("[data-load-auto-click]");
a && a.click()
}
, 100);
XF.trigger(m, "xf:page-load-complete")
}
,
addExtraPhrases: a => {
a.querySelectorAll("script.js-extraPhrases").forEach(c => {
let b;
try {
b = JSON.parse(c.textContent) || {},
XF.extendObject(XF.phrases, b)
} catch (f) {
console.error(f)
}
c.remove()
}
)
}
,
phrase: (a, c, b) => {
let f = XF.phrases[a];
f && c && (f = XF.stringTranslate(f, c));
return f || b || a
}
,
_isRtl: null,
isRtl: () => {
if (null === XF._isRtl) {
const a = m.querySelector("html").getAttribute("dir");
XF._isRtl = a && "RTL" === a.toUpperCase()
}
return XF._isRtl
}
,
rtlFlipKeyword: a => {
if (!XF.isRtl())
return a;
switch (a.toLowerCase()) {
case "left":
return "right";
case "right":
return "left";
default:
return a
}
}
,
isMac: () => "mac" === XF.browser.os,
isIOS: () => "ios" === XF.browser.os,
log: (...a) => {
console.log && console.log(...a)
}
,
findRelativeIf: (a, c, b=!0) => {
if (!a)
throw Error("No selector provided");
a.endsWith(">") && (a += " *");
const f = a.match(/^([<>|])/);
f ? "<" === f[1] ? (a = XF.findExtended(a, c),
b && a instanceof NodeList && (a = 1 <= a.length ? a[0] : null)) : ("|" === f[1] ? a = a.substring(1) : ">" === f[1] && (a = ":scope " + a),
a = b ? c.querySelector(a) : c.querySelectorAll(a)) : a = b ? m.querySelector(a) : m.querySelectorAll(a);
return a
}
,
isElementVisible: a => {
const c = m.documentElement;
a = a.getBoundingClientRect();
return 0 <= a.top && 0 <= a.left && a.bottom <= c.clientHeight && a.right <= c.clientWidth
}
,
layoutChange: () => {
XF._layoutChangeTriggered || (XF._layoutChangeTriggered = !0,
setTimeout( () => {
XF._layoutChangeTriggered = !1;
XF.trigger(m.body, "xf:layout")
}
, 0))
}
,
_layoutChangeTriggered: !1,
updateAvatars: (a, c, b) => {
m.querySelectorAll(".avatar").forEach(f => {
var d = f.querySelector("img, span");
const e = "avatar-u" + a + "-"
, g = f.classList.contains("avatar--updateLink") ? f.querySelector(".avatar-update") : null;
if ((b || !d.classList.contains("js-croppedAvatar")) && d.className.startsWith(e)) {
if (d.classList.contains(e + "s"))
d = XF.createElementFromString(c.s);
else if (d.classList.contains(e + "m"))
d = XF.createElementFromString(c.m);
else if (d.classList.contains(e + "l"))
d = XF.createElementFromString(c.l);
else if (d.classList.contains(e + "o"))
d = XF.createElementFromString(c.o);
else
return;
f.innerHTML = "";
f.append(...d.childNodes);
d.classList.contains("avatar--default") ? (f.classList.add("avatar--default"),
d.classList.contains("avatar--default--dynamic") ? f.classList.add("avatar--default--dynamic") : d.classList.contains("avatar--default--text") ? f.classList.add("avatar--default--text") : d.classList.contains("avatar--default--image") && f.classList.add("avatar--default--image")) : f.classList.remove("avatar--default", "avatar--default--dynamic", "avatar--default--text", "avatar--default--image");
f.setAttribute("style", d.getAttribute("style"));
g && f.appendChild(g)
}
}
)
}
,
updateVisitorCounts: (a, c, b) => {
a && "public" === XF.getApp() && (XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--conversations"), a.conversations_unread),
XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--alerts"), a.alerts_unviewed),
XF.config.visitorCounts.title_count && XF.pageTitleCounterUpdate(a.total_unread),
XF.config.visitorCounts.icon_indicator && XF.faviconUpdate(a.total_unread),
c && (XF.appBadgeUpdate(a.total_unread),
XF.CrossTab.trigger("visitorCounts", a),
XF.LocalStorage.setJson("visitorCounts", {
time: b || Math.floor((new Date).getTime() / 1E3) - 1,
conversations_unread: a.conversations_unread,
alerts_unviewed: a.alerts_unviewed,
total_unread: a.total_unread
})))
}
,
updateVisitorCountsOnLoad: a => {
const c = XF.getLocalLoadTime()
, b = XF.LocalStorage.getJson("visitorCounts");
b && b.time && b.time > c && (a.conversations_unread = b.conversations_unread,
a.alerts_unviewed = b.alerts_unviewed,
a.total_unread = b.total_unread);
XF.updateVisitorCounts(a, !0, c)
}
,
badgeCounterUpdate: (a, c) => {
a.forEach(b => {
b && (b.setAttribute("data-badge", c),
"0" !== String(c) ? b.classList.add("badgeContainer--highlighted") : b.classList.remove("badgeContainer--highlighted"))
}
)
}
,
shouldCountBeShown: a => 0 < parseInt(a.replace(/[,. ]/g, "")),
pageTitleCache: "",
pageTitleCounterUpdate: a => {
let c = m.title;
AWOOOOOOOOO
 
shit he got access to my alts password gotta change it so it doesnt get permad too
Man im gonna ask him for an alt with 2019 join date so i merge it with my main and look like and oldcel
 
What did he do this time?
 

Users who are viewing this thread

Back
Top