#include "display.h" #include "eadkpp.h"
<title>Roblox</title> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Organization", "name" : "Roblox", "url" : "https://www.roblox.com/", "logo": "https://images.rbxcdn.com/cece570e37aa8f95a450ab0484a18d91", "sameAs" : [ "https://www.facebook.com/roblox/", "https://twitter.com/roblox", "https://www.linkedin.com/company/147977", "https://www.instagram.com/roblox/", "https://www.youtube.com/user/roblox", "https://plus.google.com/+roblox", "https://www.twitch.tv/roblox" ] } </script><script type="text/javascript"> var Roblox = Roblox || {}; Roblox.BundleVerifierConstants = { isMetricsApiEnabled: true, eventStreamUrl: "//ecsv2.roblox.com/pe?t=diagnostic", deviceType: "Computer", cdnLoggingEnabled: JSON.parse("true") }; </script> <script type="text/javascript">
var Roblox = Roblox || {};
Roblox.BundleDetector = (function () { var isMetricsApiEnabled = Roblox.BundleVerifierConstants && Roblox.BundleVerifierConstants.isMetricsApiEnabled;
var loadStates = {
loadSuccess: "loadSuccess",
loadFailure: "loadFailure",
executionFailure: "executionFailure"
};
var bundleContentTypes = {
javascript: "javascript",
css: "css"
};
var ephemeralCounterNames = {
cdnPrefix: "CDNBundleError_",
unknown: "CDNBundleError_unknown",
cssError: "CssBundleError",
jsError: "JavascriptBundleError",
jsFileError: "JsFileExecutionError",
resourceError: "ResourcePerformance_Error",
resourceLoaded: "ResourcePerformance_Loaded"
};
return {
jsBundlesLoaded: {},
bundlesReported: {},
counterNames: ephemeralCounterNames,
loadStates: loadStates,
bundleContentTypes: bundleContentTypes,
timing: undefined,
setTiming: function (windowTiming) {
this.timing = windowTiming;
},
getLoadTime: function () {
if (this.timing && this.timing.domComplete) {
return this.getCurrentTime() - this.timing.domComplete;
}
},
getCurrentTime: function () {
return new Date().getTime();
},
getCdnProviderName: function (bundleUrl, callBack) {
if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) {
var xhr = new XMLHttpRequest();
xhr.open('GET', bundleUrl, true);
xhr.onreadystatechange = function () {
if (xhr.readyState === xhr.HEADERS_RECEIVED) {
try {
var headerValue = xhr.getResponseHeader("rbx-cdn-provider");
if (headerValue) {
callBack(headerValue);
} else {
callBack();
}
} catch (e) {
callBack();
}
}
};
xhr.onerror = function () {
callBack();
};
xhr.send();
} else {
callBack();
}
},
getCdnProviderAndReportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType) {
this.getCdnProviderName(bundleUrl, function (cdnProviderName) {
Roblox.BundleDetector.reportMetrics(bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName);
});
},
reportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName) {
if (!isMetricsApiEnabled
|| !bundleUrl
|| !loadState
|| !loadStates.hasOwnProperty(loadState)
|| !bundleContentType
|| !bundleContentTypes.hasOwnProperty(bundleContentType)) {
return;
}
var xhr = new XMLHttpRequest();
var metricsApiUrl = (Roblox.EnvironmentUrls && Roblox.EnvironmentUrls.metricsApi) || "https://metrics.roblox.com";
xhr.open("POST", metricsApiUrl + "/v1/bundle-metrics/report", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.withCredentials = true;
xhr.send(JSON.stringify({
bundleUrl: bundleUrl,
bundleName: bundleName || "",
bundleContentType: bundleContentType,
loadState: loadState,
cdnProviderName: cdnProviderName,
loadTimeInMilliseconds: this.getLoadTime() || 0
}));
},
logToEphemeralStatistics: function (sequenceName, value) {
var deviceType = Roblox.BundleVerifierConstants.deviceType;
sequenceName += "_" + deviceType;
var xhr = new XMLHttpRequest();
xhr.open('POST', '/game/report-stats?name=' + sequenceName + "&value=" + value, true);
xhr.withCredentials = true;
xhr.send();
},
logToEphemeralCounter: function (ephemeralCounterName) {
var deviceType = Roblox.BundleVerifierConstants.deviceType;
ephemeralCounterName += "_" + deviceType;
//log to ephemeral counters - taken from eventTracker.js
var xhr = new XMLHttpRequest();
xhr.open('POST', '/game/report-event?name=' + ephemeralCounterName, true);
xhr.withCredentials = true;
xhr.send();
},
logToEventStream: function (failedBundle, ctx, cdnProvider, status) {
var esUrl = Roblox.BundleVerifierConstants.eventStreamUrl,
currentPageUrl = encodeURIComponent(window.location.href);
var deviceType = Roblox.BundleVerifierConstants.deviceType;
ctx += "_" + deviceType;
//try and grab performance data.
//Note that this is the performance of the xmlhttprequest rather than the original resource load.
var duration = 0;
if (window.performance) {
var perfTiming = window.performance.getEntriesByName(failedBundle);
if (perfTiming.length > 0) {
var data = perfTiming[0];
duration = data.duration || 0;
}
}
//log to event stream (diagnostic)
var params = "&evt=webBundleError&url=" + currentPageUrl +
"&ctx=" + ctx + "&fileSourceUrl=" + encodeURIComponent(failedBundle) +
"&cdnName=" + (cdnProvider || "unknown") +
"&statusCode=" + (status || "unknown") +
"&loadDuration=" + Math.floor(duration);
var img = new Image();
img.src = esUrl + params;
},
getCdnInfo: function (failedBundle, ctx, fileType) {
if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) {
var xhr = new XMLHttpRequest();
var counter = this.counterNames;
xhr.open('GET', failedBundle, true);
var cdnProvider;
//succesful request
xhr.onreadystatechange = function () {
if (xhr.readyState === xhr.HEADERS_RECEIVED) {
cdnProvider = xhr.getResponseHeader("rbx-cdn-provider");
if (cdnProvider && cdnProvider.length > 0) {
Roblox.BundleDetector.logToEphemeralCounter(counter.cdnPrefix + cdnProvider + "_" + fileType);
}
else {
Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType);
}
}
else if (xhr.readyState === xhr.DONE) {
// append status to cdn provider so we know its not related to network error.
Roblox.BundleDetector.logToEventStream(failedBundle, ctx, cdnProvider, xhr.status);
}
};
//attach to possible things that can go wrong with the request.
//additionally a network error will trigger this callback
xhr.onerror = function () {
Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType);
Roblox.BundleDetector.logToEventStream(failedBundle, ctx, counter.unknown);
};
xhr.send();
}
else {
this.logToEventStream(failedBundle, ctx);
}
},
reportResourceError: function (resourceName) {
var ephemeralCounterName = this.counterNames.resourceError + "_" + resourceName;
this.logToEphemeralCounter(ephemeralCounterName);
},
reportResourceLoaded: function (resourceName) {
var loadTimeInMs = this.getLoadTime();
if (loadTimeInMs) {
var sequenceName = this.counterNames.resourceLoaded + "_" + resourceName;
this.logToEphemeralStatistics(sequenceName, loadTimeInMs);
}
},
reportBundleError: function (bundleTag) {
var ephemeralCounterName, failedBundle, ctx, contentType;
if (bundleTag.rel && bundleTag.rel === "stylesheet") {
ephemeralCounterName = this.counterNames.cssError;
failedBundle = bundleTag.href;
ctx = "css";
contentType = bundleContentTypes.css;
} else {
ephemeralCounterName = this.counterNames.jsError;
failedBundle = bundleTag.src;
ctx = "js";
contentType = bundleContentTypes.javascript;
}
//mark that we logged this bundle
this.bundlesReported[failedBundle] = true;
//e.g. javascriptBundleError_Computer
this.logToEphemeralCounter(ephemeralCounterName);
//this will also log to event stream
this.getCdnInfo(failedBundle, ctx, ctx);
var bundleName;
if (bundleTag.dataset) {
bundleName = bundleTag.dataset.bundlename;
}
else {
bundleName = bundleTag.getAttribute('data-bundlename');
}
this.getCdnProviderAndReportMetrics(failedBundle, bundleName, loadStates.loadFailure, contentType);
},
bundleDetected: function (bundleName) {
this.jsBundlesLoaded[bundleName] = true;
},
verifyBundles: function (document) {
var ephemeralCounterName = this.counterNames.jsFileError,
eventContext = ephemeralCounterName;
//grab all roblox script tags in the page.
var scripts = (document && document.scripts) || window.document.scripts;
var errorsList = [];
var bundleName;
var monitor;
for (var i = 0; i < scripts.length; i++) {
var item = scripts[i];
if (item.dataset) {
bundleName = item.dataset.bundlename;
monitor = item.dataset.monitor;
}
else {
bundleName = item.getAttribute('data-bundlename');
monitor = item.getAttribute('data-monitor');
}
if (item.src && monitor && bundleName) {
if (!Roblox.BundleDetector.jsBundlesLoaded.hasOwnProperty(bundleName)) {
errorsList.push(item);
}
}
}
if (errorsList.length > 0) {
for (var j = 0; j < errorsList.length; j++) {
var script = errorsList[j];
if (!this.bundlesReported[script.src]) {
//log the counter only if the file is actually corrupted, not just due to failure to load
//e.g. JsFileExecutionError_Computer
this.logToEphemeralCounter(ephemeralCounterName);
this.getCdnInfo(script.src, eventContext, 'js');
if (script.dataset) {
bundleName = script.dataset.bundlename;
}
else {
bundleName = script.getAttribute('data-bundlename');
}
this.getCdnProviderAndReportMetrics(script.src, bundleName, loadStates.executionFailure, bundleContentTypes.javascript);
}
}
}
}
};
})();
window.addEventListener("load", function (evt) { Roblox.BundleDetector.verifyBundles(); });
Roblox.BundleDetector.setTiming(window.performance.timing); //# sourceURL=somename.js </script>
<link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="StyleGuide" data-bundle-source="Main" href="https://css.rbxcdn.com/0aa766ffd0373b2b467c169ceb5456fc8b56a9a4dac2b81da6e2e74ae35f002d.css" />
<link rel="canonical" href="https://www.roblox.com/NewLogin" />
<link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="RobuxIcon" data-bundle-source="Main" href="https://css.rbxcdn.com/2f599b9e9ca20ee3c155684adbf1cdcb7220bab681b55b4505123a0c34e81969.css" />
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='headerinit' type='text/javascript' src='https://js.rbxcdn.com/a67ddd9413db88f4124e2c4f25d8cb1f.js'></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Polyfill" data-bundle-source="Main" src="https://js.rbxcdn.com/772034db167d3f4260047db4a7f2b8a58cf448709327013541e47c8962b6e556.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="XsrfProtection" data-bundle-source="Main" src="https://js.rbxcdn.com/4db2f741b7a3ec36d11fec999ce33f708ae85641cabfd27e11e0935928f7d9c4.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="HeaderScripts" data-bundle-source="Main" src="https://js.rbxcdn.com/97cb9ac7262155c329a259fce9f940f9bcfa852a6a1ccb44bd8a41c31e84e54b.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Sentry" data-bundle-source="Main" src="https://js.rbxcdn.com/edc66704bd1974195d8c60f4a163441bec82f1bcb11c492e7df07c43f45a4d49.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="RobloxTracer" data-bundle-source="Main" src="https://js.rbxcdn.com/ca2261fe9ad840ce9ed16c2b34a21f45a3bfaaf229bdab564a169aa3d505f92d.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
$(function () {
RobloxEventManager.triggerEvent('rbx_evt_newuser', {});
});
</script>
<!--[if lt IE 9]>
<script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
window.GoogleAnalyticsDisableRoblox2 = true;
_gaq.push(['b._setAccount', 'UA-486632-1']);
_gaq.push(['b._setSampleRate', '10']);
_gaq.push(['b._setCampSourceKey', 'rbx_source']);
_gaq.push(['b._setCampMediumKey', 'rbx_medium']);
_gaq.push(['b._setCampContentKey', 'rbx_campaign']);
_gaq.push(['b._setDomainName', 'roblox.com']);
_gaq.push(['b._setCustomVar', 1, 'Visitor', 'Anonymous', 2]);
_gaq.push(['b._setPageGroup', 1, 'Login']);
_gaq.push(['b._trackPageview']);
_gaq.push(['c._setAccount', 'UA-26810151-2']);
_gaq.push(['c._setSampleRate', '1']);
_gaq.push(['c._setDomainName', 'roblox.com']);
_gaq.push(['c._setPageGroup', 1, 'Login']);
(function() {
if (!Roblox.browserDoNotTrack) {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
}
})();
</script>
<script async src='https://www.googletagmanager.com/gtag/js?id=AW-1065449093'></script>
<script type="text/javascript">
var accountCode = "AW-1065449093";
var signupConversionEventKey = "wmuJCO3CZBCF7YX8Aw";
var webPurchaseConversionEventKey = "XDQ_CJme6s0BEIXthfwD";
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag.conversionEvents = {
signupConversionEvent: accountCode + '/' + signupConversionEventKey,
webPurchaseConversionEvent: accountCode + '/' + webPurchaseConversionEventKey
}
gtag ('set', 'allow_ad_personalization_signals', false) ;
gtag('js', new Date());
gtag('config', accountCode);
</script>
<script type="text/javascript">
if (Roblox && Roblox.EventStream) {
Roblox.EventStream.Init("//ecsv2.roblox.com/www/e.png",
"//ecsv2.roblox.com/www/e.png",
"//ecsv2.roblox.com/pe?t=studio",
"//ecsv2.roblox.com/pe?t=diagnostic");
}
</script>
<script type="text/javascript">
if (typeof(Roblox) === "undefined") { Roblox = {}; } Roblox.Endpoints = Roblox.Endpoints || {}; Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {}; Roblox.Endpoints.Urls['/asset/'] = 'https://assetgame.roblox.com/asset/'; Roblox.Endpoints.Urls['/client-status/set'] = 'https://www.roblox.com/client-status/set'; Roblox.Endpoints.Urls['/client-status'] = 'https://www.roblox.com/client-status'; Roblox.Endpoints.Urls['/game/'] = 'https://assetgame.roblox.com/game/'; Roblox.Endpoints.Urls['/game/edit.ashx'] = 'https://assetgame.roblox.com/game/edit.ashx'; Roblox.Endpoints.Urls['/game/placelauncher.ashx'] = 'https://assetgame.roblox.com/game/placelauncher.ashx'; Roblox.Endpoints.Urls['/game/preloader'] = 'https://assetgame.roblox.com/game/preloader'; Roblox.Endpoints.Urls['/game/report-stats'] = 'https://assetgame.roblox.com/game/report-stats'; Roblox.Endpoints.Urls['/game/report-event'] = 'https://assetgame.roblox.com/game/report-event'; Roblox.Endpoints.Urls['/game/updateprerollcount'] = 'https://assetgame.roblox.com/game/updateprerollcount'; Roblox.Endpoints.Urls['/login/default.aspx'] = 'https://www.roblox.com/login/default.aspx'; Roblox.Endpoints.Urls['/my/avatar'] = 'https://www.roblox.com/my/avatar'; Roblox.Endpoints.Urls['/my/money.aspx'] = 'https://www.roblox.com/my/money.aspx'; Roblox.Endpoints.Urls['/navigation/userdata'] = 'https://www.roblox.com/navigation/userdata'; Roblox.Endpoints.Urls['/chat/chat'] = 'https://www.roblox.com/chat/chat'; Roblox.Endpoints.Urls['/chat/data'] = 'https://www.roblox.com/chat/data'; Roblox.Endpoints.Urls['/friends/list'] = 'https://www.roblox.com/friends/list'; Roblox.Endpoints.Urls['/navigation/getcount'] = 'https://www.roblox.com/navigation/getCount'; Roblox.Endpoints.Urls['/regex/email'] = 'https://www.roblox.com/regex/email'; Roblox.Endpoints.Urls['/catalog/browse.aspx'] = 'https://www.roblox.com/catalog/browse.aspx'; Roblox.Endpoints.Urls['/catalog/html'] = 'https://search.roblox.com/catalog/html'; Roblox.Endpoints.Urls['/catalog/json'] = 'https://search.roblox.com/catalog/json'; Roblox.Endpoints.Urls['/catalog/contents'] = 'https://search.roblox.com/catalog/contents'; Roblox.Endpoints.Urls['/catalog/lists.aspx'] = 'https://search.roblox.com/catalog/lists.aspx'; Roblox.Endpoints.Urls['/catalog/items'] = 'https://search.roblox.com/catalog/items'; Roblox.Endpoints.Urls['/asset-hash-thumbnail/image'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/image'; Roblox.Endpoints.Urls['/asset-hash-thumbnail/json'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/json'; Roblox.Endpoints.Urls['/asset-thumbnail-3d/json'] = 'https://assetgame.roblox.com/asset-thumbnail-3d/json'; Roblox.Endpoints.Urls['/asset-thumbnail/image'] = 'https://assetgame.roblox.com/asset-thumbnail/image'; Roblox.Endpoints.Urls['/asset-thumbnail/json'] = 'https://assetgame.roblox.com/asset-thumbnail/json'; Roblox.Endpoints.Urls['/asset-thumbnail/url'] = 'https://assetgame.roblox.com/asset-thumbnail/url'; Roblox.Endpoints.Urls['/asset/request-thumbnail-fix'] = 'https://assetgame.roblox.com/asset/request-thumbnail-fix'; Roblox.Endpoints.Urls['/avatar-thumbnail-3d/json'] = 'https://www.roblox.com/avatar-thumbnail-3d/json'; Roblox.Endpoints.Urls['/avatar-thumbnail/image'] = 'https://www.roblox.com/avatar-thumbnail/image'; Roblox.Endpoints.Urls['/avatar-thumbnail/json'] = 'https://www.roblox.com/avatar-thumbnail/json'; Roblox.Endpoints.Urls['/avatar-thumbnails'] = 'https://www.roblox.com/avatar-thumbnails'; Roblox.Endpoints.Urls['/avatar/request-thumbnail-fix'] = 'https://www.roblox.com/avatar/request-thumbnail-fix'; Roblox.Endpoints.Urls['/bust-thumbnail/json'] = 'https://www.roblox.com/bust-thumbnail/json'; Roblox.Endpoints.Urls['/headshot-thumbnail/json'] = 'https://www.roblox.com/headshot-thumbnail/json'; Roblox.Endpoints.Urls['/item-thumbnails'] = 'https://www.roblox.com/item-thumbnails'; Roblox.Endpoints.Urls['/outfit-thumbnail/json'] = 'https://www.roblox.com/outfit-thumbnail/json'; Roblox.Endpoints.Urls['/place-thumbnails'] = 'https://www.roblox.com/place-thumbnails'; Roblox.Endpoints.Urls['/thumbnail/asset/'] = 'https://www.roblox.com/thumbnail/asset/'; Roblox.Endpoints.Urls['/thumbnail/avatar-headshot'] = 'https://www.roblox.com/thumbnail/avatar-headshot'; Roblox.Endpoints.Urls['/thumbnail/avatar-headshots'] = 'https://www.roblox.com/thumbnail/avatar-headshots'; Roblox.Endpoints.Urls['/thumbnail/user-avatar'] = 'https://www.roblox.com/thumbnail/user-avatar'; Roblox.Endpoints.Urls['/thumbnail/resolve-hash'] = 'https://www.roblox.com/thumbnail/resolve-hash'; Roblox.Endpoints.Urls['/thumbnail/place'] = 'https://www.roblox.com/thumbnail/place'; Roblox.Endpoints.Urls['/thumbnail/get-asset-media'] = 'https://www.roblox.com/thumbnail/get-asset-media'; Roblox.Endpoints.Urls['/thumbnail/remove-asset-media'] = 'https://www.roblox.com/thumbnail/remove-asset-media'; Roblox.Endpoints.Urls['/thumbnail/set-asset-media-sort-order'] = 'https://www.roblox.com/thumbnail/set-asset-media-sort-order'; Roblox.Endpoints.Urls['/thumbnail/place-thumbnails'] = 'https://www.roblox.com/thumbnail/place-thumbnails'; Roblox.Endpoints.Urls['/thumbnail/place-thumbnails-partial'] = 'https://www.roblox.com/thumbnail/place-thumbnails-partial'; Roblox.Endpoints.Urls['/thumbnail_holder/g'] = 'https://www.roblox.com/thumbnail_holder/g'; Roblox.Endpoints.Urls['/users/{id}/profile'] = 'https://www.roblox.com/users/{id}/profile'; Roblox.Endpoints.Urls['/service-workers/push-notifications'] = 'https://www.roblox.com/service-workers/push-notifications'; Roblox.Endpoints.Urls['/notification-stream/notification-stream-data'] = 'https://www.roblox.com/notification-stream/notification-stream-data'; Roblox.Endpoints.Urls['/api/friends/acceptfriendrequest'] = 'https://www.roblox.com/api/friends/acceptfriendrequest'; Roblox.Endpoints.Urls['/api/friends/declinefriendrequest'] = 'https://www.roblox.com/api/friends/declinefriendrequest'; Roblox.Endpoints.Urls['/authentication/is-logged-in'] = 'https://www.roblox.com/authentication/is-logged-in'; Roblox.Endpoints.addCrossDomainOptionsToAllRequests = true; </script>
<script type="text/javascript">
if (typeof(Roblox) === "undefined") { Roblox = {}; } Roblox.Endpoints = Roblox.Endpoints || {}; Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {}; </script>
<script>
Roblox = Roblox || {};
Roblox.AbuseReportPVMeta = {
desktopEnabled: false,
phoneEnabled: false,
inAppEnabled: false
};
<meta name="csrf-token" data-token="0bFEoHnmX4cg" />
<div id="roblox-linkify" data-enabled="true" data-regex="(https?\:\/\/)?(?:www\.)?([a-z0-9-]{2,}\.)*(((m|de|www|web|api|blog|wiki|corp|polls|bloxcon|developer|devforum|forum|status)\.roblox\.com|robloxlabs\.com)|(www\.shoproblox\.com)|(roblox\.status\.io)|(rblx\.co)|help\.roblox\.com(?![A-Za-z0-9\/.]*\/attachments\/))(?!\/[A-Za-z0-9-+&@#\/=~_|!:,.;]*%)((\/[A-Za-z0-9-+&@#\/%?=~_|!:,.;]*)|(?=\s|\b))" data-regex-flags="gm" data-as-http-regex="(([^.]help|polls)\.roblox\.com)"></div>
<div class="container-main
"
id="container-main">
<script type="text/javascript">
if (top.location != self.location) {
top.location = self.location.href;
}
</script>
<div class="alert-container">
<noscript><div><div class="alert-info" role="alert">Please enable Javascript to use all the features on this site.</div></div></noscript>
</div>
<div class="content">
<script src="https://roblox-api.arkoselabs.com/fc/api/?onload=reportFunCaptchaLoaded" async onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportResourceError('funcaptcha')"></script>
<script type="text/javascript" src="https://cdns.gigya.com/js/gigya.js?apiKey=3_OsvmtBbTg6S_EUbwTPtbbmoihFY5ON6v6hbVrTbuqpBs7SyF_LQaJwtwKJ60sY1p" async defer>
{
bypassCookiePolicy: 'never'
}
</script>
</div>
</div>
<script type="text/javascript">function urchinTracker() {}</script>
You're moments away from getting into the experience!
", buttonText: "Download and Install Roblox", footerContent: "Click here for help " }, studio: { content: "Get started creating your own experiences!
", buttonText: "Download Studio" } }, ProtocolHandlerStartingDialog: { play: { content: robloxIcon + "Roblox is now loading. Get ready!
" }, studio: { content: "Checking for Roblox Studio...
" }, loader: "" } }; </script> style="display:none;">
<p class="larger-font-size">
<span class="icon-moreinfo"></span>
Check <strong>Always open links for URL: Roblox Protocol</strong> and click <strong>Open URL: Roblox Protocol</strong> in the dialog box above to join experiences faster in the future!
</p>
<div id="InstallationInstructions" class="" style="display:none;">
<div class="ph-installinstructions">
<div class="ph-modal-header">
<span class="icon-close simplemodal-close"></span>
<h3 class="title">Thanks for visiting Roblox</h3>
</div>
<div class="modal-content-container">
<div class="ph-installinstructions-body ">
<ul class="modal-col-4">
<li class="step1-of-4">
<h2>1</h2>
<p class="larger-font-size">Click <strong>RobloxPlayer.exe</strong> to run the Roblox installer, which just downloaded via your web browser.</p>
<img data-delaysrc="https://images.rbxcdn.com/28eaa93b899b93461399aebf21c5346f.png" />
</li>
<li class="step2-of-4">
<h2>2</h2>
<p class="larger-font-size">Click <strong>Run</strong> when prompted by your computer to begin the installation process.</p>
<img data-delaysrc="https://images.rbxcdn.com/51328932dedb5d8d61107272cc1a27db.png" />
</li>
<li class="step3-of-4">
<h2>3</h2>
<p class="larger-font-size">Click <strong>Ok</strong> once you've successfully installed Roblox.</p>
<img data-delaysrc="https://images.rbxcdn.com/3797745629baca2d1b9496b76bc9e6dc.png" />
</li>
<li class="step4-of-4">
<h2>4</h2>
<p class="larger-font-size">After installation, click <strong>Join</strong> below to join the action!</p>
<div class="VisitButton VisitButtonContinueGLI">
<a class="btn btn-primary-lg disabled btn-full-width">Join</a>
</div>
</li>
</ul>
</div>
</div>
<div class="xsmall">
The Roblox installer should download shortly. If it doesn’t, start the <a id="GameLaunchManualInstallLink" href="#" class="text-link">download now.</a>
</div>
</div>
</div>
<div class="InstallInstructionsImage" data-modalwidth="970" style="display:none;"></div>
</div>
</div>
<script type="text/javascript">
Roblox = Roblox || {};
Roblox.Resources = Roblox.Resources || {};
Roblox.Resources.GenericConfirmation = {
yes: "Yes",
No: "No",
Confirm: "Confirm",
Cancel: "Cancel"
};
</script>
<div class="modal-body">
<div class="modal-top-body">
<div class="modal-message"></div>
<div class="modal-image-container roblox-item-image" data-image-size="medium" data-no-overlays data-no-click>
<img class="modal-thumb" alt="generic image"/>
</div>
<div class="modal-checkbox checkbox">
<input id="modal-checkbox-input" type="checkbox"/>
<label for="modal-checkbox-input"></label>
</div>
</div>
<div class="modal-btns">
<a href id="confirm-btn"><span></span></a>
<a href id="decline-btn"><span></span></a>
</div>
<div class="loading modal-processing">
<img class="loading-default" src='https://images.rbxcdn.com/4bed93c91f909002b1f17f05c0ce13d1.gif' alt="Processing..." />
</div>
</div>
<div class="modal-footer text-footer">
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
Roblox.CookieUpgrader.domain = 'roblox.com';
Roblox.CookieUpgrader.upgrade("GuestData", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow });
Roblox.CookieUpgrader.upgrade("RBXSource", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("rbx_acquisition_time", cookie); } });
Roblox.CookieUpgrader.upgrade("RBXViralAcquisition", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("time", cookie); } });
Roblox.CookieUpgrader.upgrade("RBXMarketing", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow });
Roblox.CookieUpgrader.upgrade("RBXSessionTracker", { expires: Roblox.CookieUpgrader.fourHoursFromNow });
Roblox.CookieUpgrader.upgrade("RBXEventTrackerV2", {expires: Roblox.CookieUpgrader.thirtyYearsFromNow});
});
</script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='intl-polyfill' type='text/javascript' src='https://js.rbxcdn.com/d44520f7da5ec476cfb1704d91bab327.js'></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalCore" data-bundle-source="Main" src="https://js.rbxcdn.com/95044be3ff42e3dc429313faca1316cea62f328a39e29689ffeda9002f3a8bc6.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="TranslationResources" data-bundle-source="Main" src="https://js.rbxcdn.com/83d836a661ff433d5b7ce719c489e43af590ff75ab39ccc6d393546fe91b766a.js"></script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='leanbase' type='text/javascript' src='https://js.rbxcdn.com/813b0b3708eea139d6161f58f9abd6e2.js'></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/72bb88d05dec1c72332849b75defc1dee84a86e71851dba5a3b54d66a4adf95e.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreRobloxUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/c976b451423c5e351a96ec4d40b51672d4bad997549809b7d93a114a07d43df1.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="React" data-bundle-source="Main" src="https://js.rbxcdn.com/4c9a00164d9242bd60de5451a22f502c0c221a896d3a555470c03712d5ee4aa1.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/cf340fb618d9a73913b30dfc624ae60d68b9e59723746e6c08d06d14ebdd6dca.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactStyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/c8a1e368ba1d54d37175401204098f957f024a2f942b33a76a604d379cfc635a.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ConfigureWebApps" data-bundle-source="Main" src="https://js.rbxcdn.com/c756de2b0f5f2f05d62899a3b602b4a3b573ad3faa1adea789291ebe9c66a002.js"></script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='angular' type='text/javascript' src='https://js.rbxcdn.com/ae3d621886e736e52c97008e085fa286.js'></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="AngularJsUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/81164cee2ed2b07903bf00968368213664e0e78bdbdf9418389c2d2a8512cccf.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalAngularJs" data-bundle-source="Main" src="https://js.rbxcdn.com/90f18784a43a70553e967191b948f70b0193df565f1605762c3c1e245ab4b55a.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Thumbnails" data-bundle-source="Main" src="https://js.rbxcdn.com/8e523fb6013bf64fc1b8df80df34c48f04f2a3a9ee6f322580dc468f791382f4.js"></script>
<div ng-modules="pageTemplateApp">
<script type="text/javascript" src="https://js.rbxcdn.com/3e544c8e724dcdc296258b0ca69401a9.js"></script>
</div>
<script type='text/javascript'>Roblox.config.externalResources = [];Roblox.config.paths['Pages.Catalog'] = 'https://js.rbxcdn.com/7f8e0e0a96b00feb668cc45b4ea8b9c6.js';Roblox.config.paths['Pages.CatalogShared'] = 'https://js.rbxcdn.com/8680a449ea23b2b842200032b01e95ff.js';Roblox.config.paths['Widgets.AvatarImage'] = 'https://js.rbxcdn.com/7d49ac94271bd506077acc9d0130eebb.js';Roblox.config.paths['Widgets.DropdownMenu'] = 'https://js.rbxcdn.com/da553e6b77b3d79bec37441b5fb317e7.js';Roblox.config.paths['Widgets.HierarchicalDropdown'] = 'https://js.rbxcdn.com/4a0af9989732810851e9e12809aeb8ad.js';Roblox.config.paths['Widgets.ItemImage'] = 'https://js.rbxcdn.com/61a0490ba23afa17f9ecca2a079a6a57.js';Roblox.config.paths['Widgets.PlaceImage'] = 'https://js.rbxcdn.com/a6df74a754523e097cab747621643c98.js';</script>
<script>
$(function () {
Roblox.DeveloperConsoleWarning.showWarning();
});
</script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='page' type='text/javascript' src='https://js.rbxcdn.com/700b2a99c40bbe02b6862bc5205e5249.js'></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="StyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/6a3913d7d6137c9572a54288a066698b15457998f8727879a4ead3bb28bfa639.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CookieBannerV3" data-bundle-source="Main" src="https://js.rbxcdn.com/54d644ac4dba14d818e9f8d4fa76eb286d65e413e6f214e4719ea1bf2dbb01e6.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ItemPurchase" data-bundle-source="Main" src="https://js.rbxcdn.com/bf6ae6dfa7d79f9ffe1a0c1b3a22c25707722264d9afdd2fae5cc3e7f51e5d70.js"></script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='pageEnd' type='text/javascript' src='https://js.rbxcdn.com/2cbedad045eb032d6abd7d779e4960a0.js'></script>
