;// bundle: page___ac24ff6e98147e0e0f17f892a302424c_m
;// files: utilities/datetime/formatDateTimesI18n.js, ~/Generated/js/Roblox_TranslationResources_Purchasing_PurchaseDialogResources_en_us_standard.js, ~/Generated/js/Roblox_TranslationResources_Feature_PrivateServersResources_en_us_standard.js, ~/Generated/js/Roblox_TranslationResources_Feature_ItemResources_en_us_standard.js, Tracking/FormEvents.js, Game/Index.js, VotingPanel.js, pageStyleNotifications.js, ItemPurchaseForDialog/ItemPurchaseForDialog.js, jquery/jquery.history.js, utilities/robloxTabs.js, utilities/dialog.js, Games/GameDetailReferral.js, Game/GameDetailsInteractionEvents.js, PrivateServers/LinkJoin.js, utilities/robloxAds.js, jquery/lazyLoadImage/jquery.lazyload.js, jquery/lazyLoadImage/lazyLoadImg.js, NumberFormatting.js, ~/Generated/js/Roblox_TranslationResources_Feature_VotingPanelResources_en_us_standard.js, Game/GameFavoriteButton.js, ~/Generated/js/Roblox_TranslationResources_Feature_FavoritesResources_en_us_standard.js, Game/GameFollowButton.js, ~/Generated/js/Roblox_TranslationResources_Feature_GameFollowsResources_en_us_standard.js, Game/GamePassLazyLoading.js, GenericModal.js, GenericConfirmation.js, common/deviceMeta.js, TosModalCheck.js, AbuseReport/AbuseReportDispatcher.js

;// utilities/datetime/formatDateTimesI18n.js
"use strict";Roblox=Roblox||{},Roblox.FormatDateTimesI18n=function(){document.addEventListener("DOMContentLoaded",function(){for(var u=(new Roblox.Intl).getDateTimeFormatter(),t=document.getElementsByClassName("date-time-i18n"),i,e,r,s,h,o,f,n=0;n<t.length;n++){if(i=t[n].getAttribute("data-date-time-i18n-value"),e=t[n].getAttribute("data-date-time-i18n-format"),e==="custom")try{s=t[n].getAttribute("data-date-time-i18n-options").replace(/'/g,'"'),h=JSON.parse(s),r=u.getCustomDateTime(i,h)}catch(c){r=u.getShortDate(i)}else r=e==="full"?u.getFullDate(i):u.getShortDate(i);t[n].innerHTML=r}for(o=document.querySelectorAll(".wait-for-i18n-format-render"),f=0;f<o.length;f++)o[f].classList.remove("invisible")})}();

;// ~/Generated/js/Roblox_TranslationResources_Purchasing_PurchaseDialogResources_en_us_standard.js
var Roblox=Roblox||{};Roblox.Lang=Roblox.Lang||{},Roblox.Lang["Purchasing.PurchaseDialog"]={"Action.BuyAccess":"Buy Access","Action.BuyNow":"Buy Now","Action.BuyRobux":"Buy Robux","Action.Cancel":"Cancel","Action.Configure":"Configure","Action.Continue":"Continue","Action.Customize":"Customize","Action.GetNow":"Get Now","Action.GoToSecurity":"Go To Security","Action.GoToSettings":"Go to Settings","Action.NotNow":"Not Now","Action.Ok":"OK","Action.RentNow":"Rent Now","Action.ResendCode":"Resend Code","Action.Verify":"Verify","Heading.BuyItem":"Buy Item","Heading.ErrorOccured":"Error Occured","Heading.GetItem":"Get Item","Heading.InsufficientFunds":"Insufficient Funds","Heading.PriceChanged":"Item Price Has Changed","Heading.PurchaseComplete":"Purchase Complete","Heading.RentItem":"Rent Item","Heading.TwoStepVerificationRequired":"Email Verification Required","Heading.TwoStepVerificationRequiredV2":"Email Verification Required","Heading.TwoStepVerificationRequiredV3":"2-Step Verification Required","Label.AgreeAndPay":"Agree and Pay","Label.CodeInputPlaceholder":"Enter 6-digit Code","Label.EnterEmailCode":"Enter the code we just sent you via email","Label.Free":"Free","Label.NeedHelpContactRobloxSupport":"Need help? Contact Roblox Support","Label.NeedHelpContactSupport":"Need help? Contact {supportLink}","Label.RobloxSupport":"Roblox Support","Label.TwoStepVerification":"2-Step Verification","Message.BalanceAfter":"Your balance after this transaction will be {robuxBalance}.","Message.InsufficientFunds":"You need {robux} more to purchase this item.","Message.PriceChanged":"While you were shopping, the price of this item changed from {robuxBefore} to {robuxAfter}.","Message.PromptBuy":'Would you like to buy the {assetType} "{assetName}" from {seller} for {robux}?',"Message.PromptBuyAccess":'Would you like to buy access to the {assetType} "{assetName}" from {seller} for {robux}?',"Message.PromptGetFree":'Would you like to get the {assetType} "{assetName}" from {seller} for {freeTextStart}Free{freeTextEnd}?',"Message.PromptGetFreeAccess":'Would you like to get access to the {assetType} "{assetName}" from {seller} for {freeTextStart}Free{freeTextEnd}?',"Message.PromptRent":'Would you like to rent the {assetType} "{assetName}" from {seller} for {robux}?',"Message.PromptRentAccess":'Would you like to rent access to the {assetType} "{assetName}" from {seller} for {robux}?',"Message.PurchasingUnavailable":"Purchasing is temporarily unavailable. Please try again later.","Message.SuccessfullyAcquired":"You have successfully acquired the {assetName} {assetType} from {seller} for {robux}.","Message.SuccessfullyAcquiredAccess":"You have successfully acquired access to the {assetName} {assetType} from {seller} for {robux}.","Message.SuccessfullyBought":"You have successfully bought the {assetName} {assetType} from {seller} for {robux}.","Message.SuccessfullyBoughtAccess":"You have successfully bought access to the {assetName} {assetType} from {seller} for {robux}.","Message.SuccessfullyRenewed":"You have successfully renewed the {assetName} {assetType} from {seller} for {robux}.","Message.SuccessfullyRenewedAccess":"You have successfully renewed access to the {assetName} {assetType} from {seller} for {robux}.","Message.SuccessfullyRented":"You have successfully rented the {assetName} {assetType} from {seller} for {robux}.","Message.SuccessfullyRentedAccess":"You have successfully rented access to the {assetName} {assetType} from {seller} for {robux}.","Message.TwoStepVerificationRequired":"2-Step Verification is required to make further transactions. Go to Settings > Security to complete 2-Step Verification.","Message.TwoStepVerificationRequiredv2":"2-Step Verification is required to make further transactions. Go to your Security page to enable and complete 2-Step Verification via email.","Message.TwoStepVerificationRequiredV3":"2-Step Verification is required to make further transactions. Go to your Security page to enable and complete 2-Step Verification via email.","Message.TwoStepVerificationRequiredV4":"2-Step Verification is required to make further transactions. Go to your Security page to enable and complete 2-Step Verification.","Response.CodeSent":"Code Sent","Response.InvalidCode":"Invalid code. Please try again.","Response.InvalidCodeTryAgain":"Invalid code. Please try again.","Response.SuccessfulVerification":"You have successfully verified!","Response.SuccessfulVerificationV2":"You have successfully verified! Please retry your previous action.","Response.VerificationError":"System error occurred during verification."},Roblox.Lang.PurchaseDialogResources=Roblox.Lang["Purchasing.PurchaseDialog"];

;// ~/Generated/js/Roblox_TranslationResources_Feature_PrivateServersResources_en_us_standard.js
var Roblox=Roblox||{};Roblox.Lang=Roblox.Lang||{},Roblox.Lang["Feature.PrivateServers"]={"Action.CreatePrivateServer":"Create Private Server","Action.CreateVipServer":"Create VIP Server","Action.Refresh":"Refresh","Description.RecurringSubscriptionRenewal":"This is a subscription-based feature. It will auto-renew once a month until you cancel the subscription.","Heading.ConfigurePrivateServer":"Configure Private Server","Heading.InvalidLink":"Invalid Link","Heading.PrivateServers":"Private Servers","Heading.VipServers":"VIP Servers","Label.Cancel":"Cancel","Label.ConfirmEnableFuturePayments":"Are you sure you want to enable future payments for your private version of {placeName} by {creatorName}?","Label.CreatePrivateServerFor":"Create a private server for {target}?","Label.CreatePrivateServerForFree":"Create a private server for free?","Label.CreateVipServerFor":"Create a VIP Server for {target}?","Label.FooterText":"Your balance after this transaction will be {robuxIcon}. This is a subscription-based feature. It will auto-renew once a month until you cancel the subscription.","Label.GameJoinPrivateErrorTitle":"Unable to join","Label.GameName":"Experience Name","Label.NoPrivateServers":"No Private Server Instances Found.","Label.NoVipServers":"No VIP Server Instances Found.","Label.PlayWithOthers":"Visit this experience with friends and other people you invite.","Label.Price":"Price: {price}","Label.PrivateServer":"Private Server","Label.PrivateServerJoinGamePrivateError":"You cannot join this private server because the experience is private.","Label.PrivateServersAbout":"Private servers let you visit this experience privately with friends or people you invite!","Label.Renew":"Renew","Label.RenewPrivateServer":"Renew Private Server","Label.SeeAllPrivateServers":"See all your private servers in the {serversLink} tab.","Label.SeeAllServers":"See all your VIP servers in the {serversLink} tab.","Label.ServerName":"Server Name","Label.Servers":"Servers","Label.StartRenewingPrice":"This VIP server will start renewing every month at {price} until you cancel.","Label.StartRenewingPrivateServerPrice":"This private server will start renewing every month at {price} until you cancel.","Label.VIPServerGameJoinErrorAcknowledgement":"OK","Label.VipServerJoinGamePrivateError":"You cannot join this VIP server because the game is private.","Label.VipServersAbout":"VIP servers let you play this game privately with friends, your clan, or people you invite!","Label.VipServersNotSupported":"This experience does not support {vipServersLink}.","Message.InvalidLink":"This VIP Server link is no longer valid.","Message.InvalidPrivateServerLink":"This private server link is no longer valid."},Roblox.Lang.PrivateServersResources=Roblox.Lang["Feature.PrivateServers"];

;// ~/Generated/js/Roblox_TranslationResources_Feature_ItemResources_en_us_standard.js
var Roblox=Roblox||{};Roblox.Lang=Roblox.Lang||{},Roblox.Lang["Feature.Item"]={"Action.Add":"Add","Action.AddToGame":"Add To Experience","Action.AddToProfile":"Add to Profile","Action.Advertise":"Advertise","Action.Agree":"Agree","Action.Buy":"Buy","Action.Cancel":"Cancel","Action.Configure":"Configure","Action.Confirm":"Confirm","Action.Delete":"Delete from Inventory","Action.DisableBadge":"Disable Badge","Action.EditAvatar":"Edit Avatar","Action.EnableBadge":"Enable Badge","Action.Get":"Get","Action.GetPremium":"Get Premium","Action.Install":"Install","Action.Inventory":"Inventory","Action.No":"No","Action.Ok":"OK","Action.Remove":"Remove","Action.RemoveFromProfile":"Remove from Profile","Action.Rent":"Rent","Action.ReportItem":"Report Item","Action.Sell":"Sell","Action.SellNow":"Sell Now","Action.SponsorItem":"Sponsor This Item","Action.TakeOff":"Take Off","Action.TakeOffSale":"Take Off Sale","Action.TryInStudio":"Try in Studio","Action.TryOn":"Try On","Action.Upgrade":"Upgrade","Action.Wear":"Wear","Action.Yes":"Yes","Heading.IncludedItems":"Included Items","Heading.PromoteItem":"Promote Item","Label.AllowPlayersPlusEarn":"Allow visitors to use this gear inside your experience plus earn {affiliateSaleTotal} when it's purchased from your experience page.","Label.AssetGrantedModalAcceptText":"OK","Label.AssetGrantedModalMessage":"You just got this item courtesy of our sponsor.","Label.AssetGrantedModalTitle":"This item is now yours","Label.Attributes":"Attributes","Label.BestPrice":"Best Price","Label.BuildersClubExclusive":"Builders Club exclusive.","Label.By":"By {creator}","Label.CountdownTimerDayHourMinute":"Offsale in {numberOfDays} d {numberOfHours} h {numberOfMinutes} m","Label.DeleteFromInventoryConfirm":"Are you sure you want to permanently DELETE this item from your inventory?","Label.DeleteItem":"Delete Item","Label.Description":"Description","Label.DisableBadgeConfirm":"Are you sure you want to disable this Badge?","Label.DiscontinuedItem":"Discontinued item, resellable.","Label.EarnBadgeGameLink":"Earn this Badge in: {placeLink}","Label.EnableBadgeConfirm":"Are you sure you want to enable this Badge?","Label.ErrorOccurred":"Error occurred","Label.Free":"Free","Label.Genres":"Genres","Label.GetBuildersClub":"Only Builders Club members can re-sell collectible items. Get Builders Club today!","Label.GetPremiumMembership":"Only Premium members can re-sell collectible items. Get Premium today!","Label.GetPremiumSubscription":"Only Premium subscribers can re-sell collectible items. Get Premium today!","Label.InvalidPlace":"Invalid Place.","Label.InvalidProduct":"Invalid Product.","Label.ItemOwned":"Item Owned","Label.ItemOwnedAmount":"Item Owned ({amount})","Label.ItemRecentPrice":"{name}'s recent average price is {price}.","Label.MarketplaceFee":"Marketplace fee (at {percent}%)","Label.None":"None","Label.NotAvailable":"N/A","Label.OffsaleCountdownHourMinuteSecond":"Offsale in {numberOfHours} h {numberOfMinutes} m {numberOfSeconds} s","Label.PremiumDiscountOpportunityPrompt":"Get Premium and buy for {premiumDiscountedPrice}","Label.PremiumDiscountSavings":"You save {discountPercentage}% with Premium (original price: {originalPrice})","Label.PremiumExclusiveEligiblePrompt":"Available because you have Premium","Label.PremiumExclusiveIneligiblePrompt":"Available for Premium users only","Label.Price":"Price","Label.PriceIsInvalid":"Price is invalid","Label.PriceMinimumOne":"Price (minimum 1)","Label.PurchaseCompleted":"Purchase Completed","Label.Rarity":"Rarity","Label.ReadMore":"Read More","Label.RentingItem":"Renting Item","Label.Rthro":"Rthro","Label.SellConfirm":"Are you sure you want to sell {name} for {price}?","Label.SellYourCollectibleItem":"Sell Your Collectible Item","Label.SerializedLimitedRelease":"Serialized limited release, resellable.","Label.SerialNotAvailable":"Serial N/A","Label.SerialNumber":"Serial Number","Label.SerialNumberOfTotal":"Serial #{number} of {total}","Label.ShowLess":"Show Less","Label.Tags":"Tags","Label.TakeOffSale":"Take off Sale","Label.TakeOffSaleConfirm":"Are you sure you want to take the item off sale?","Label.ThirteenPlusOnly":"13+ Only.","Label.Type":"Type","Label.Updated":"Updated","Label.UpdatedBy":"(by {link})","Label.UseGamePassLink":"Use this Pass in: {placeLink}","Label.YouGet":"You get","Response.AddedToProfile":"Added to your profile","Response.AddedToYourAvater":"Added to your Avatar","Response.AlreadyHaveMaxItems":"You already have the maximum number of items on your experience!","Response.DisabledBadge":"Successfully disabled the badge","Response.EnabledBadge":"Successfully enabled the badge","Response.FailedToAddToProfile":"Failed to add to profile","Response.FailedToDeleteFromInventory":"Failed to delete item from inventory","Response.FailedToDisableBadge":"Failed to disable badge","Response.FailedToEnableBadge":"Failed to enable badge","Response.FailedToRemoveFromProfile":"Failed to remove from profile","Response.GearAddSuccess":"Added to your experience, {placeName}.","Response.GearAlreadyAdded":"You have already added this gear to {placeName}.","Response.RemovedFromInventory":"Successfully removed from your inventory","Response.RemovedFromProfile":"Removed from your profile","Response.RemovedFromYourAvater":"Removed from your Avatar"},Roblox.Lang.ItemResources=Roblox.Lang["Feature.Item"];

;// Tracking/FormEvents.js
typeof Roblox=="undefined"&&(Roblox={}),typeof Roblox.FormEvents=="undefined"&&(Roblox.FormEvents=function(){function n(n,t,i){Roblox.EventStream&&Roblox.EventStream.SendEvent(n,t,i)}function t(t,i,r,u){var f={msg:u,input:r,field:i,vis:!0};n("formValidation",t,f)}function i(t,i){var r={aType:"focus",field:i};n("formInteraction",t,r)}function r(t,i,r){var u={aType:"offFocus",field:i};r&&(u.input=r),n("formInteraction",t,u)}function u(t,i,r,u){var f={aType:"click",field:i};r&&(f.input=r),u&&(f=$.extend(f,u)),n("formInteraction",t,f)}return{SendValidationFailed:t,SendInteractionFocus:i,SendInteractionOffFocus:r,SendInteractionClick:u}}());

;// Game/Index.js
$(function(){$(".game-play-buttons").data("autoplay")==!0&&$("#MultiplayerVisitButton").trigger("click");$(".VisitButtonPlay a").on("click",function(){var t=$(this),n=t.attr("backup-url");n&&n.length>0&&setTimeout(function(){document.hasFocus&&document.hasFocus()&&(window.location=n)},250)})});

;// VotingPanel.js
var Roblox=Roblox||{};Roblox.Voting=function(){var i=function(){var t=$(".voting-panel"),i,u;t.length!==0&&($(".users-vote .upvote").unbind().click(function(){r($(this),!0)}),$(".users-vote .downvote").unbind().click(function(){r($(this),!1)}),i=parseInt(t.data("total-up-votes")),u=parseInt(t.data("total-down-votes")),n(i,u))},e=function(n,t){var r="/games/votingservice/"+t;$.ajax({url:r,success:function(t){n.replaceWith(t),$(function(){i()})}})},r=function(n,i){var e=$(".voting-panel").data("user-authenticated");if(!e){f("GuestUser");return}var o=$(".voting-panel").data("target-id"),r="/voting/vote?assetId="+o+"&vote=",u=$(".voting-panel").data("vote-url");u&&(r=u),n.hasClass("selected")||n.find("i").hasClass("selected")||n.find(".icon-like, .icon-dislike").hasClass("selected")?t(r,null):t(r,i)},t=function(n,t){$(".voting-panel .loading").show(),$.ajax({type:"POST",url:n+t,success:o,error:s})},o=function(t){var o=$(".icon-like").length;if($(".voting-panel .loading").hide(),t.Success){u(t.Model.UpVotes,t.Model.DownVotes);var i=$(".voting-panel .upvote"),r=$(".voting-panel .downvote"),e=$(".users-vote");o&&(i=$(".voting-panel .upvote .icon-like"),r=$(".voting-panel .downvote .icon-dislike")),t.Model.UserVote!==null?e.hasClass("has-voted")||e.addClass("has-voted"):e.removeClass("has-voted"),i.hasClass("selected")&&i.removeClass("selected"),r.hasClass("selected")&&r.removeClass("selected"),t.Model.UserVote!==null&&(t.Model.UserVote?i.addClass("selected"):r.addClass("selected")),n(t.Model.UpVotes,t.Model.DownVotes)}else f(t.ModalType)},s=function(){$(".voting-panel .loading").hide()},n=function(n,t,i){var e=i||$("#voting-section"),r,u,f;isNaN(n)||isNaN(t)||(r=n===0?0:t===0?100:Math.floor(n/(n+t)*100),r>100&&(r=100),u=e.find(".vote-container"),f=u.find(".vote-background"),u.find(".vote-percentage").css("width",r+"%"),t>0?f.addClass("has-votes"):f.removeClass("has-votes"))},u=function(t,i){t=Roblox.NumberFormatting.abbreviatedFormat(t),i=Roblox.NumberFormatting.abbreviatedFormat(i),$(".voting-panel .total-upvotes-text").text(t),$(".voting-panel .total-downvotes-text").text(i),$(".voting-panel #vote-up-text").text(t),$(".voting-panel #vote-down-text").text(i),n(t,i)},h=function(n){var t=Roblox.Lang.VotingPanelResources,i=Roblox.Intl&&t&&new Roblox.Intl,r=$("#voting-section"),u=r.data("accountPageUrl"),f=r.data("registerUrl"),o="<a href='"+u+"'>"+t["Label.AccountPageTitle"]+"</a>",s="<a href='"+f+"'>"+t["Label.LoginOrRegisterPageTitle"]+"</a>",e={EmailIsVerified:{titleText:t["Label.EmailVerifiedTitle"],bodyContent:i.f(t["Label.EmailVerifiedMessage"],{accountPageLink:o}),onAccept:function(){window.location.href=u},acceptColor:Roblox.Dialog.green,acceptText:t["Label.Accept"],declineText:t["Label.Decline"],allowHtmlContentInBody:!0},PlayGame:{titleText:t["Label.PlayGameTitle"],bodyContent:t["Label.PlayGameMessage"],showAccept:!1,declineText:t["Label.Ok"]},UseModel:{titleText:t["Label.UseModelTitle"],bodyContent:t["Label.UseModelMessage"],showAccept:!1,declineText:t["Label.Ok"]},InstallPlugin:{titleText:t["Label.InstallPluginTitle"],bodyContent:t["Label.InstallPluginMessage"],showAccept:!1,declineText:t["Label.Ok"]},BuyGamePass:{titleText:t["Label.BuyGamePassTitle"],bodyContent:t["Label.BuyGamePassMessage"],showAccept:!1,declineText:t["Label.Ok"]},FloodCheckThresholdMet:{titleText:t["Label.FloodCheckTitle"],bodyContent:t["Label.FloodCheckMessage"],showAccept:!1,declineText:t["Label.Ok"]},GuestUser:{titleText:t["Label.GuestUserTitle"],bodyContent:"<div>"+t["Label.YouMustLoginToVote"]+"</div><div>"+i.f(t["Label.GuestUserMessage"],{loginOrRegisterPageLink:s})+"</div>",onAccept:function(){window.location.href=f},acceptColor:Roblox.Dialog.green,acceptText:t["Label.Login"],declineText:t["Label.Decline"],allowHtmlContentInBody:!0},Error:{titleText:t["Label.UnknownProblemTitle"],bodyContent:t["Label.UnknownProblemMessage"],showAccept:!1,declineText:t["Label.Ok"]},AssetNotVoteable:{titleText:t["Label.AssetNotVoteableTitle"],bodyContent:t["Label.AssetNotVoteableMessage"],showAccept:!1,declineText:t["Label.Ok"]}};return e[n]||e.Error},f=function(n){n&&Roblox.Dialog.open(h(n))};return{Vote:t,Initialize:i,SetVotes:u,UpdateVoteBar:n,LoadVotingService:e}}(),$(function(){Roblox.Voting.Initialize()});

;// pageStyleNotifications.js
$(function(){$(".pagification .pagification-showall, .pagification .pagification-collapse").click(function(){$(this).parents(".pagification-body").toggleClass("collapsed")})});

;// ItemPurchaseForDialog/ItemPurchaseForDialog.js
var Roblox=Roblox||{};Roblox.ItemPurchase=function(n,t,i){function h(n){n+="";for(var i=n.split("."),t=i[0],u=i.length>1?"."+i[1]:"",r=/(\d+)(\d{3})/;r.test(t);)t=t.replace(r,"$1,$2");return t+u}function nt(n){return n<1?n+"":n<1e4?h(n):n>=1e6?Math.floor(n/1e6)+"M+":Math.floor(n/1e3)+"K+"}function l(){window.location.href=Roblox.Endpoints.getAbsoluteUrl("/login/Default.aspx")+"?ReturnUrl="+encodeURIComponent(location.pathname+location.search)}function it(n){return n.toLowerCase()===a.toLowerCase()?a:n}function rt(n){if(!Roblox)return null;var i=Roblox.CurrentUser?Roblox.CurrentUser.userId:null,t=Roblox.UrlParser.getParametersAsObject();return{assetId:n,category:t.Category,creatorId:t.CreatorId,genre:t.GenreCsv,page:t.Page,position:t.Position,searchKeyword:t.SearchKeyword,sortAggregation:t.SortAggregation,sortType:t.SortType,userId:i,searchId:t.SearchId}}function s(n,u){var f=$(n),e;if(f.attr("data-modal-field-validation-required")==="true"&&(u=""),Roblox.Dialog.toggleProcessing(!0),!f.hasClass("btn-disabled-primary")){var c=f.attr("data-product-id"),l=parseInt(f.attr("data-expected-price")),a=f.attr("data-expected-currency"),s=f.attr("data-placeproductpromotion-id"),p=f.attr("data-expected-seller-id"),h=f.attr("data-userasset-id"),b=Roblox.MetaDataValues&&Roblox.MetaDataValues.getPageName()||"",k=b=="LibraryItem";if(t)return t({productId:c,expectedPrice:l,expectedCurrency:a,expectedPromoId:s,expectedSellerId:p,userAssetId:h});e={expectedCurrency:parseInt(a),expectedPrice:parseInt(l),expectedSellerId:parseInt(p)},s&&(e.expectedPromoId=parseInt(s)),h&&(e.userAssetId=parseInt(h)),$.ajax({type:"POST",url:Roblox.EnvironmentUrls.economyApi+"/v1/purchases/products/"+c,data:JSON.stringify(e),cache:!1,processData:!1,contentType:"application/json; charset=utf-8",success:function(n){if(n.statusCode===500)Roblox.Dialog.toggleProcessing(!1,u),n.showDivID===undefined&&(n.showDivID=n.showDivId),n.AssetID===undefined&&(n.AssetID=n.assetId),o(n);else{if(Roblox.Dialog.toggleProcessing(!1,u),k&&Roblox&&Roblox.EventStream&&Roblox.UrlParser){var t=rt(n.assetId);Roblox.EventStream.SendEventWithTarget("LibraryAssetAcquired","Marketplace",t,Roblox.EventStream.TargetTypes.WWW)}i?w():(n={AssetId:n.assetId,AssetIsWearable:n.assetIsWearable,AssetName:n.assetName,AssetType:n.assetType,AssetTypeDisplayName:n.assetTypeDisplayName,Currency:n.currency,IsMultiPrivateSale:n.isMultiPrivateSale,Price:n.price,ProductId:n.productId,Purchased:n.purchased,Reason:n.reason,SellerName:n.sellerName,TransactionVerb:n.transactionVerb},v(n))}},error:function(n){if(Roblox.Dialog.toggleProcessing(!1,u),$.modal.close(".ProcessingView"),n.responseText==="Bad Request")Roblox.Dialog.open({titleText:r["Heading.ErrorOccured"],bodyContent:r["Message.PurchasingUnavailable"],imageUrl:y,acceptText:r["Action.Ok"],acceptColor:Roblox.Dialog.white,declineColor:Roblox.Dialog.none,dismissable:!0,allowHtmlContentInBody:!0});else{var t=$.parseJSON(n.responseText);o(t)}}})}}function o(n){var i,t;if(n.showDivID==="TransactionFailureView")Roblox.Dialog.open({titleText:n.title,bodyContent:n.errorMsg,imageUrl:y,acceptText:r["Action.Ok"],acceptColor:Roblox.Dialog.white,declineColor:Roblox.Dialog.none,dismissable:!0,allowHtmlContentInBody:!0});else if(n.showDivID==="InsufficientFundsView")i="<span class='icon-robux-16x16'></span><span class='text-robux'>"+Roblox.NumberFormatting.commas(n.shortfallPrice)+"</span>",Roblox.Dialog.open({titleText:r["Heading.InsufficientFunds"],bodyContent:e.f(r["Message.InsufficientFunds"],{robux:i}),declineText:r["Action.Cancel"],acceptText:r["Action.BuyRobux"],acceptColor:Roblox.Dialog.green,onAccept:function(){return window.location=Roblox.Endpoints.getAbsoluteUrl("/Upgrades/Robux.aspx")+"?ctx="+n.source,!1},imageUrl:d,allowHtmlContentInBody:!0,allowHtmlContentInFooter:!1,fieldValidationRequired:!0,dismissable:!0,xToCancel:!0});else if(n.showDivID==="PriceChangedView"){t="targetSelector"in n?$(n.targetSelector):$(".PurchaseButton[data-item-id="+n.AssetID+"][data-expected-currency="+n.expectedCurrency+"][data-expected-price="+n.expectedPrice+"]");var u=function(){t.attr("data-expected-price",n.currentPrice),t.attr("data-expected-currency",n.currentCurrency),s(t,"PurchaseVerificationView")},f="<span class='icon-robux-gray-16x16'></span>"+n.expectedPrice,o="<span class='icon-robux-gray-16x16'></span>"+n.currentPrice,h="<span class='icon-robux-gray-16x16'></span>"+n.balanceAfterSale;Roblox.Dialog.open({titleText:r["Heading.PriceChanged"],bodyContent:e.f(r["Message.PriceChanged"],{robuxBefore:f,robuxAfter:o}),acceptText:r["Action.BuyNow"],acceptColor:Roblox.Dialog.green,onAccept:u,declineText:r["Action.Cancel"],footerText:e.f(r["Message.BalanceAfter"],{robuxBalance:h}),allowHtmlContentInBody:!0,allowHtmlContentInFooter:!0,dismissable:!0,checkboxAgreementText:r["Label.AgreeAndPay"],checkboxAgreementRequired:!0})}else n.showDivID==="TwoStepVerificationRequiredView"&&g.start()}function ft(n,t){var i,vt,kt,bt,v,pt,w,f,a,at,lt,ni,ti;if(t=typeof t!="undefined"?t:"item",i=$(n),!i.hasClass("btn-disabled-primary")){if(et){o({showDivID:"TransactionFailureView",title:"Error",errorMsg:ot});return}if(k==="True"&&(vt=i.attr("data-bc-requirement"),vt>tt&&p==="False")){showBCOnlyModal("BCOnlyModal");return}var yt=i.attr("data-item-name"),fi=yt?yt.escapeHTML():"",d=parseInt(i.attr("data-expected-price")),ui=i.attr("data-expected-currency"),ii=it(i.attr("data-seller-name")).escapeHTML(),g=i.attr("data-asset-type"),oi=i.attr("data-asset-type-display-name");(g===0||g==="0")&&(g=i.attr("data-item-type"));var ei=i.attr("data-item-id"),gt=$("#ItemPurchaseAjaxData").attr("data-footer-text"),ct=gt==null?"":gt;if($("#ItemPurchaseAjaxData").attr("data-footer-text",null),u=g=="Place",p==="True"){l();return}var wt=i.hasClass("rentable"),st=parseInt(ut)-d,ht="",rt="",dt="",nt="";if(wt?(ht=c.rent,rt=r["Heading.RentItem"],nt=r["Action.RentNow"]):d===0?(ht=c.get,rt=r["Heading.GetItem"],nt=r["Action.GetNow"]):(ht=c.buy,rt=r["Heading.BuyItem"],nt=r["Action.BuyNow"]),st<0){kt={shortfallPrice:0-st,currentCurrency:ui,showDivID:"InsufficientFundsView",isPlace:u,source:t},o(kt);return}var ri=$("#ItemPurchaseAjaxData").attr("data-imageurl"),ft="<span class='icon-robux-16x16'></span><span class='text-robux'>"+Roblox.NumberFormatting.commas(d)+"</span>",y="";y+=h(st),bt=function(){return s(n,"PurchaseVerificationView")},v=i.attr("data-purchase-title-text"),v=v?v:rt,pt="<span class='font-bold'>"+fi+"</span>",f={assetName:pt,assetType:oi,seller:ii},wt?(w=u?"Message.PromptRentAccess":"Message.PromptRent",f.robux=ft):d===0?(w=u?"Message.PromptGetFreeAccess":"Message.PromptGetFree",f.freeTextStart="<span class='text-robux'>",f.freeTextEnd="</span>"):(w=u?"Message.PromptBuyAccess":"Message.PromptBuy",f.robux=ft),dt=e.f(r[w],f),a=i.attr("data-purchase-body-content"),at=dt,a=a?a.format(ft):at,lt=i.attr("data-modal-field-validation-required")==="true",ni=r["Action.BuyAccess"],ct.length===0&&(y="<span class='icon-robux-gray-16x16'></span>"+y),ti=e.f(r["Message.BalanceAfter"],{robuxBalance:y}),Roblox.Dialog.open({titleText:v,bodyContent:a,imageUrl:ri,xToCancel:!0,acceptText:u?ni:nt,acceptColor:Roblox.Dialog.green,onAccept:bt,declineText:r["Action.Cancel"],footerText:ct.length===0?ti:ct.format(y),footerMiddleAligned:b,allowHtmlContentInBody:!0,allowHtmlContentInFooter:!0,dismissable:!0,fieldValidationRequired:lt,cssClass:"need-padding",onOpenCallback:function(){if($(".modal-confirmation .roblox-item-image").attr("data-item-id",ei),Roblox.require("Widgets.ItemImage",function(n){n.load($(".modal-confirmation .roblox-item-image"))}),Roblox.ModalEvents&&i){var n=i.attr("data-button-type");n&&Roblox.ModalEvents.SendAssetPurchaseConfirmationShown("assetPurchaseConfirmation",n)}}})}}function w(){var n=$(".system-feedback .alert-success");n.length>0&&Roblox.BootstrapWidgets&&(Roblox.BootstrapWidgets.ToggleSystemMessage(n,100,1e3),setTimeout(function(){window.location.reload()},1e3))}function v(t){var f,l,a;t.Price==0?(l=r["Label.Free"],f="<span class='text-robux'>"+l+"</span>"):f="<span class='icon-robux-16x16'></span><span class='text-robux'>"+t.Price+"</span>";var v=$("#ItemPurchaseAjaxData").attr("data-imageurl"),y=function(){var n=$("#ItemPurchaseAjaxData").attr("data-continueshopping-url");n!=undefined&&n!=""&&(document.location.href=n)},p=function(){var n=Roblox.Endpoints.getAbsoluteUrl("/my/avatar");n!=undefined&&n!=""&&(document.location.href=n)},o="",s=r["Action.Continue"],h=Roblox.Dialog.none,c;t.AssetType==="Private Server"?(o=r["Action.Configure"],s=r["Action.NotNow"],h=Roblox.Dialog.blue,c=y):t.AssetIsWearable&&(o=r["Action.Customize"],h=Roblox.Dialog.white,s=r["Action.NotNow"],c=p);var w="<span class='font-bold'>"+t.AssetName.escapeHTML()+"</span>",b=t.AssetTypeDisplayName?t.AssetTypeDisplayName:t.AssetType,k={assetName:w,assetType:b,seller:t.SellerName.escapeHTML(),robux:f},i;i=t.TransactionVerb==="bought"?u?"Message.SuccessfullyBoughtAccess":"Message.SuccessfullyBought":t.TransactionVerb==="rented"?u?"Message.SuccessfullyRentedAccess":"Message.SuccessfullyRented":t.TransactionVerb==="renewed"?u?"Message.SuccessfullyRenewedAccess":"Message.SuccessfullyRenewed":u?"Message.SuccessfullyAcquiredAccess":"Message.SuccessfullyAcquired",a=e.f(r[i],k),Roblox.Dialog.open({titleText:r["Heading.PurchaseComplete"],bodyContent:a,imageUrl:v,acceptText:o,declineText:s,xToCancel:!0,onAccept:c,onDecline:function(){window.location.reload()},acceptColor:h,declineColor:Roblox.Dialog.white,allowHtmlContentInBody:!0,dismissable:!0,onOpenCallback:function(){$(".modal-confirmation .roblox-item-image").html("").attr("data-item-id",t.AssetId),Roblox.require("Widgets.ItemImage",function(n){n.load($(".modal-confirmation .roblox-item-image"))})}}),n(t)}if(!(this instanceof Roblox.ItemPurchase))return new Roblox.ItemPurchase(n,t,i);t=typeof t=="undefined"?!1:t;var e=new Roblox.Intl,r=Roblox.Lang.PurchaseDialogResources,f=$("#ItemPurchaseAjaxData"),p=f.attr("data-authenticateduser-isnull"),ut=f.attr("data-user-balance-robux"),tt=f.attr("data-user-bc"),y=f.attr("data-alerturl"),d=f.attr("data-inSufficentFundsurl"),k=f.attr("data-is-bc-only-requirement-enabled"),u=!1,et=f.attr("data-has-currency-service-error")==="True",ot=f.attr("data-currency-service-error-message"),b=f.attr("data-is-modal-footer-centered-enabled")==="True",a="Roblox",c={buy:"buy",rent:"rent",get:"get"},g=new Roblox.TwoStepVerificationFlow("RobuxSpend");return{purchaseItem:s,openPurchaseVerificationView:ft,openPurchaseConfirmationView:v,redirectToLogin:l,purchaseConfirmationCallback:n,openErrorView:o,addCommasToMoney:h,formatMoney:nt}},Roblox.ItemPurchase.ModalClose=function(n){$.modal.close("."+n)},Roblox.TwoStepVerificationFlow=function(n){function e(){$.ajax({type:"POST",url:Roblox.EnvironmentUrls.economyApi+"/v2/"+r+"/two-step-verification/generate",success:function(t){s=t,Roblox.AccountIntegrityChallengeService.TwoStepVerification.renderChallenge({containerId:"2sv-popup-container",userId:o.userId,challengeId:t,actionType:n,renderInline:!1,shouldShowRememberDeviceCheckbox:!1,shouldDynamicallyLoadTranslationResources:!1,onChallengeCompleted:y,onChallengeInvalidated:p,onModalChallengeAbandoned:$.noop}).catch(function(){u()})},error:function(){u()}})}function l(){var r=function(){window.location.href=Roblox.Endpoints.getAbsoluteUrl("/my/account#!/security")},n={titleText:t["Heading.TwoStepVerificationRequiredV3"],bodyContent:t["Message.TwoStepVerificationRequiredV4"],imageUrl:c,acceptText:t["Action.GoToSecurity"],acceptColor:Roblox.Dialog.green,onAccept:r,declineText:t["Action.Cancel"],dismissable:!0,allowHtmlContentInBody:!0,onOpenCallback:function(){w()}};$.ajax({type:"GET",url:Roblox.EnvironmentUrls.twoStepVerificationApi+"/v1/users/"+o.userId+"/configuration",success:function(t){var u=!1,r;if(t&&t.methods)for(r=0;r<t.methods.length;r++)if(t.methods[r].enabled){u=!0;break}u===!1?(i("settingsRedirectModalTriggered"),Roblox.Dialog.open(n)):(i("codeInputModalTriggered"),e())},error:function(){i("settingsRedirectModalTriggered"),Roblox.Dialog.open(n)}})}function a(){$.modal.close();var n=$(".system-feedback .alert-success"),i=t["Response.SuccessfulVerificationV2"];n.length>0&&Roblox.BootstrapWidgets&&Roblox.BootstrapWidgets.ToggleSystemMessage(n,100,6e3,i)}function u(){$.modal.close();var n=$(".system-feedback .alert-warning"),i=t["Response.VerificationError"];n.length>0&&Roblox.BootstrapWidgets&&Roblox.BootstrapWidgets.ToggleSystemMessage(n,100,6e3,i)}function y(n){var t={challengeToken:s,verificationToken:n.verificationToken};$.ajax({type:"POST",url:Roblox.EnvironmentUrls.economyApi+"/v2/"+r+"/two-step-verification/redeem",data:t,crossDomain:!0,xhrFields:{withCredentials:!0},success:function(n){n?a():u()},error:function(){u()}})}function p(){var n=3;h<n&&e(),h+=1}function i(n){Roblox.EventStream&&Roblox.EventStream.SendEvent(n,f,{})}function w(){$(".modal-btns #confirm-btn").click(function(){i("goToSecurity")}),$(".modal-btns #decline-btn").click(function(){i("closeSettingsRedirectModal")})}var r,f;n==="RobuxSpend"?(r="spend-friction",f="2svRobuxSpend"):(r="resale-friction",f="2svResale");var t=Roblox.Lang.PurchaseDialogResources,v=$("#ItemPurchaseAjaxData"),c=v.attr("data-alerturl"),s="",h=0,o={userId:Roblox.CurrentUser?Roblox.CurrentUser.userId:null,challengeToken:"",verificationToken:"",code:"",actionType:n,supportPageUrl:Roblox.Endpoints.getAbsoluteUrl("/info/account-safety"),supportLink:""};return{start:l}};

;// jquery/jquery.history.js
typeof window.console=="undefined"&&(window.console={}),typeof window.console.emulated=="undefined"&&(typeof window.console.log=="function"?window.console.hasLog=!0:(typeof window.console.log=="undefined"&&(window.console.log=function(){}),window.console.hasLog=!1),typeof window.console.debug=="function"?window.console.hasDebug=!0:(typeof window.console.debug=="undefined"&&(window.console.debug=window.console.hasLog?function(){for(var t=["console.debug:"],n=0;n<arguments.length;n++)t.push(arguments[n]);window.console.log.apply(window.console,t)}:function(){}),window.console.hasDebug=!1),typeof window.console.warn=="function"?window.console.hasWarn=!0:(typeof window.console.warn=="undefined"&&(window.console.warn=window.console.hasLog?function(){for(var t=["console.warn:"],n=0;n<arguments.length;n++)t.push(arguments[n]);window.console.log.apply(window.console,t)}:function(){}),window.console.hasWarn=!1),typeof window.console.error=="function"?window.console.hasError=!0:(typeof window.console.error=="undefined"&&(window.console.error=function(){var t="An error has occured.",i,n;if(window.console.hasLog){for(i=["console.error:"],n=0;n<arguments.length;n++)i.push(arguments[n]);window.console.log.apply(window.console,i),t="An error has occured. More information is available in your browser's javascript console."}for(n=0;n<arguments.length;++n){if(typeof arguments[n]!="string")break;t+="\n"+arguments[n]}if(typeof Error!="undefined")throw new Error(t);else throw t;}),window.console.hasError=!1),typeof window.console.trace=="function"?window.console.hasTrace=!0:(typeof window.console.trace=="undefined"&&(window.console.trace=function(){window.console.error("console.trace does not exist")}),window.console.hasTrace=!1),window.console.emulated=!0),function(n){n.History||!1?window.console.warn("$.History has already been defined..."):(n.History={options:{debug:!1},state:"",$window:null,$iframe:null,handlers:{generic:[],specific:{}},extractHash:function(n){return n.replace(/^[^#]*#/,"").replace(/^#+|#+$/,"")},getState:function(){var t=n.History;return t.state},setState:function(t){var i=n.History;return t=i.extractHash(t),i.state=t},getHash:function(){var t=n.History;return t.extractHash(window.location.hash||location.hash)},setHash:function(t){var i=n.History;return t=i.extractHash(t),typeof window.location.hash!="undefined"?window.location.hash!==t&&(window.location.hash=t):location.hash!==t&&(location.hash=t),t},go:function(t){var i=n.History,r,u;return t=i.extractHash(t),r=i.getHash(),u=i.getState(),t!==r?i.setHash(t):(t!==u&&i.setState(t),i.trigger()),!0},hashchange:function(){var i=n.History,r=i.getHash();return i.go(r),!0},bind:function(t,i){var r=n.History;return i?(typeof r.handlers.specific[t]=="undefined"&&(r.handlers.specific[t]=[]),r.handlers.specific[t].push(i)):(i=t,r.handlers.generic.push(i)),!0},trigger:function(t){var u=n.History,i,f,e,r;if(typeof t=="undefined"&&(t=u.getState()),typeof u.handlers.specific[t]!="undefined")for(r=u.handlers.specific[t],i=0,f=r.length;i<f;++i)e=r[i],e(t);for(r=u.handlers.generic,i=0,f=r.length;i<f;++i)e=r[i],e(t);return!0},construct:function(){var t=n.History;return n(document).ready(function(){t.domReady()}),!0},configure:function(t){var i=n.History;return i.options=n.extend(i.options,t),!0},domReadied:!1,domReady:function(){var t=n.History;if(!t.domRedied)return t.domRedied=!0,t.$window=n(window),t.$window.bind("hashchange",this.hashchange),setTimeout(t.hashchangeLoader,200),!0},nativeSupport:function(t){t=t||n.browser;var e=t.version,o=parseInt(e,10),u=e.split(/[^0-9]/g),r=parseInt(u[0],10),f=parseInt(u[1],10),s=parseInt(u[2],10),i=!1;return(t.msie||!1)&&o>=8?i=!0:(t.webkit||!1)&&o>=528?i=!0:t.mozilla||!1?r>1?i=!0:r===1&&(f>9?i=!0:f===9&&s>=2&&(i=!0)):(t.opera||!1)&&(r>10?i=!0:r===10&&f>=60&&(i=!0)),i},hashchangeLoader:function(){var t=n.History,f=t.nativeSupport(),r,i,u;return f?(u=t.getHash(),u&&t.$window.trigger("hashchange")):(n.browser.msie?(t.$iframe=n('<iframe id="jquery-history-iframe" style="display: none;"></$iframe>').prependTo(document.body)[0],t.$iframe.contentWindow.document.open(),t.$iframe.contentWindow.document.close(),i=!1,r=function(){var n=t.getHash(),r=t.getState(),u=t.extractHash(t.$iframe.contentWindow.document.location.hash);r!==n?(i||(t.$iframe.contentWindow.document.open(),t.$iframe.contentWindow.document.close(),t.$iframe.contentWindow.document.location.hash=n),i=!1,t.$window.trigger("hashchange")):r!==u&&(i=!0,t.setHash(u))}):r=function(){var n=t.getHash(),i=t.getState();i!==n&&t.$window.trigger("hashchange")},setInterval(r,200)),!0}},n.History.construct())}(jQuery);

;// utilities/robloxTabs.js
$(function(){$.History.bind(function(n){var t="#"+n.substring(2);$(".rbx-tab a").each(function(){$(this).attr("href")==t&&$(this).click()})});var n=".rbx-tab";$(n).click(function(n){if(n.hasOwnProperty("originalEvent")){var t="!/"+$(this).find("a").attr("href").substring(1);$.History.go(t)}})});

;// utilities/dialog.js
typeof Roblox=="undefined"&&(Roblox={}),typeof Roblox.Dialog=="undefined"&&(Roblox.Dialog=function(){function g(f){var k,c,v,w,o,b;n.isOpen=!0,k={titleText:"",bodyContent:"",footerText:"",footerMiddleAligned:!1,acceptText:Roblox.Lang.ControlsResources["Action.Yes"]||a.Yes,declineText:Roblox.Lang.ControlsResources["Action.No"]||a.No,acceptColor:h,declineColor:s,xToCancel:!1,onAccept:function(){return!1},onDecline:function(){return!1},onCancel:function(){return!1},imageUrl:null,showAccept:!0,showDecline:!0,allowHtmlContentInBody:!1,allowHtmlContentInFooter:!1,dismissable:!0,fieldValidationRequired:!1,onOpenCallback:function(){},onCloseCallback:t,cssClass:null,checkboxAgreementText:Roblox.Lang.ControlsResources["Action.Agree"]||a.Agree,checkboxAgreementRequired:!1},f=$.extend({},k,f),i.overlayClose=f.dismissable,i.escClose=f.dismissable,f.onCloseCallback&&(i.onClose=function(){f.onCloseCallback(),t()}),c=$(u),c.html(f.acceptText),c.attr("class",f.acceptColor),c.unbind(),c.bind("click",function(){return p(c)?!1:(f.fieldValidationRequired?nt(f.onAccept):l(f.onAccept),!1)}),v=$(e),v.html(f.declineText),v.attr("class",f.declineColor),v.unbind(),v.bind("click",function(){return p(v)?!1:(l(f.onDecline),!1)}),w=$(tt),w.unbind(),w.bind("change",function(){w.is(":checked")?y(c):r(c)}),o=$('[data-modal-type="confirmation"]'),o.find(".modal-title").text(f.titleText),f.imageUrl==null?o.addClass("noImage"):(o.find("img.modal-thumb").attr("src",f.imageUrl),o.removeClass("noImage")),n.extraClass&&(o.removeClass(n.extraClass),n.extraClass=!1),f.cssClass!=null&&(o.addClass(f.cssClass),n.extraClass=f.cssClass),f.allowHtmlContentInBody?o.find(".modal-message").html(f.bodyContent):o.find(".modal-message").text(f.bodyContent),f.checkboxAgreementRequired?(r(c),o.find(".modal-checkbox.checkbox > input").prop("checked",!1),o.find(".modal-checkbox.checkbox > label").text(f.checkboxAgreementText),o.find(".modal-checkbox.checkbox").show()):(o.find(".modal-checkbox.checkbox > input").prop("checked",!0),o.find(".modal-checkbox.checkbox").hide()),$.trim(f.footerText)==""?o.find(".modal-footer").hide():o.find(".modal-footer").show(),f.allowHtmlContentInFooter?o.find(".modal-footer").html(f.footerText):o.find(".modal-footer").text(f.footerText),f.footerMiddleAligned&&o.find(".modal-footer").addClass("modal-footer-center"),o.modal(i),b=$(d+" .modal-header .close"),b.unbind(),b.bind("click",function(){return l(f.onCancel),!1}),f.xToCancel||b.hide(),f.showAccept||c.hide(),f.showDecline||v.hide(),$("#rbx-body").addClass("modal-mask"),f.onOpenCallback()}function r(n){n.hasClass(s)?n.addClass(f):n.hasClass(v)?n.addClass(o):n.hasClass(h)&&n.addClass(c)}function p(n){return n.hasClass(c)||n.hasClass(f)||n.hasClass(o)?!0:!1}function rt(){var n=$(u),t=$(e);r(n),r(t)}function y(n){n.hasClass(f)?(n.removeClass(f),n.addClass(s)):n.hasClass(o)?(n.removeClass(o),n.addClass(v)):n.hasClass(c)&&(n.removeClass(c),n.addClass(h))}function w(){var n=$(u),t=$(e);y(n),y(t)}function k(){if(n.isOpen){var t=$(u);t.click()}}function b(){var n=$(e);n.click()}function t(t){n.isOpen=!1,typeof t!="undefined"?$.modal.close(t):$.modal.close(),$("#rbx-body").removeClass("modal-mask")}function l(n){t(),typeof n=="function"&&n()}function nt(n){if(typeof n=="function"){var i=n();if(i!=="undefined"&&i==!1)return!1}t()}function ut(n,t){var i=$(".modal-body");n?(i.find(".modal-btns").hide(),i.find(".modal-processing").show()):(i.find(".modal-btns").show(),i.find(".modal-processing").hide()),typeof t!="undefined"&&t!==""&&$.modal.close("."+t)}var d=".simplemodal-container",v="btn-primary-md",h="btn-secondary-md",s="btn-control-md",o="btn-primary-md disabled",c="btn-secondary-md disabled",f="btn-control-md disabled",it="btn-none",u=".modal-btns #confirm-btn",e=".modal-btns #decline-btn",tt="#modal-checkbox-input",n={isOpen:!1},i={overlayClose:!0,escClose:!0,opacity:80,zIndex:1040,overlayCss:{backgroundColor:"#000"},onClose:t,focus:!1},a={Yes:"Yes",No:"No",Agree:"Agree"};return{open:g,close:t,disableButtons:rt,enableButtons:w,clickYes:k,clickNo:b,status:n,toggleProcessing:ut,green:v,blue:h,white:s,none:it}}()),$(document).keypress(function(n){Roblox.Dialog.isOpen&&n.which===13&&Roblox.Dialog.clickYes()});

;// Games/GameDetailReferral.js
Roblox=Roblox||{},Roblox.GameDetailReferral=Roblox.GameDetailReferral||{},Roblox.GameDetailReferral.AppendUrl=function(n,t,i){if(!n.data("modified")){var e=$(t).length,u=i||n,f=u.attr("href"),r=f;r+=f.indexOf("?")!==-1?"&":"?",r+="LocalTimestamp="+(new Date).toISOString()+"&TotalInSort="+e,u.attr("href",r),n.data("modified",!0)}},$(function(){var t=".game-card-link",n="mousedown touchstart";$("#recently-visited-places").on(n,".game-card",function(){Roblox.GameDetailReferral.AppendUrl($(this).find(t),"#recently-visited-places .list-item")});$("#my-favorites-games").on(n,".game-card",function(){Roblox.GameDetailReferral.AppendUrl($(this).find(t),"#my-favorites-games .game-card")});$("#friend-activity").on(n,".game-card",function(){Roblox.GameDetailReferral.AppendUrl($(this).find(t),"#friend-activity .game-card")});$("#UserPlaces div.Thumbnail").on(n,function(){Roblox.GameDetailReferral.AppendUrl($(this),".Thumbnail",$(this).find("a"))});$("#GamesListsContainer").on(n,".game-card",function(){var n=$(this).parent().siblings().length+1;Roblox.GameDetailReferral.AppendUrl($(this).find(t),new Array(n))});$("#my-recommended-games").on(n,".game-card",function(){Roblox.GameDetailReferral.AppendUrl($(this).find(t),"#my-recommended-games .game-card")});$("#HomeContainer #FeaturedGamesContainer").on(n,".item-place a",function(){Roblox.GameDetailReferral.AppendUrl($(this),"#FeaturedGamesContainer .item-place")})});

;// Game/GameDetailsInteractionEvents.js
typeof Roblox=="undefined"&&(Roblox={}),typeof Roblox.GameDetailsInteractionEvents=="undefined"&&(Roblox.GameDetailsInteractionEvents=function(){var i=!1,t,r=function(){return{pid:t}},n=function(n){Roblox.EventStream&&Roblox.EventStream.SendEvent("gameDetailsTabInteraction",n,r(t))},u=function(){n("about")},f=function(){n("store")},e=function(){n("leaderboards")},o=function(){n("gameInstances")},s=function(){i||(i=!0,t=$(".rbx-tabs-horizontal").data("place-id"),$("#tab-about").mousedown(u),$("#tab-store").mousedown(f),$("#tab-leaderboards").mousedown(e),$("#tab-game-instances").mousedown(o))};return{Init:s}}()),$(function(){Roblox.GameDetailsInteractionEvents.Init()});

;// PrivateServers/LinkJoin.js
var Roblox=Roblox||{};Roblox.PrivateServerLinkJoin=function(){var n,t=function(t){n=t},i=function(){typeof n=="function"&&n()};return{init:t,execute:i}}();

;// utilities/robloxAds.js
"use strict";var Roblox=Roblox||{};Roblox.AdsHelper=Roblox.AdsHelper||{},Roblox.AdsLibrary={},Roblox.AdsLibrary.adsIdList=["Skyscraper-Abp-Left","Skyscraper-Abp-Right","Leaderboard-Abp","GamePageAdDiv1","GamePageAdDiv2","GamePageAdDiv3","ProfilePageAdDiv1","ProfilePageAdDiv2"],Roblox.AdsLibrary.adsParameters={"Skyscraper-Abp-Left":{element:$("#Skyscraper-Abp-Left"),template:null,fitTwoAds:!0,fitOneAd:!1,isSkyscraper:!0},"Skyscraper-Abp-Right":{element:$("#Skyscraper-Abp-Right"),tempalte:null,fitTwoAds:!0,fitOneAd:!0,isSkyscraper:!0},"Leaderboard-Abp":{element:$("#Leaderboard-Abp"),tempalte:null,fitTwoAds:!0,fitOneAd:!0,isLeaderboard:!0},GamePageAdDiv1:{element:$("#GamePageAdDiv1"),template:null,isPageAd:!0},GamePageAdDiv2:{element:$("#GamePageAdDiv2"),template:null,isPageAd:!0},GamePageAdDiv3:{element:$("#GamePageAdDiv3"),template:null,isPageAd:!0},ProfilePageAdDiv1:{element:$("#ProfilePageAdDiv1"),template:null,isPageAd:!0},ProfilePageAdDiv2:{element:$("#ProfilePageAdDiv2"),template:null,isPageAd:!0}},Roblox.AdsHelper.AdRefresher=function(){function c(n){return!n||!$.trim($(n).html())}function h(n){t.push(n)}function s(){return googletag.pubadsReady}function r(n){var u,f,e,i;typeof n=="undefined"&&(n=v),u=!1;for(f in t){if(e="#"+t[f]+" [data-js-adtype]",i=$(e),typeof i=="undefined")return;if(i.attr("data-js-adtype")==="iframead")o(i);else if(i.attr("data-js-adtype")==="gptAd")if(s())u=!0;else if(n>0){setTimeout(function(){r(--n)},y);break}}u&&googletag.cmd.push(function(){googletag.pubads().refresh()})}function o(n){var i=n.attr("src"),r,u,t;typeof i=="string"&&(r=i.indexOf("?")<0?"?":"&",u=i+r+"nocache="+(new Date).getMilliseconds().toString(),typeof n[0]!="undefined")&&(t=n[0].contentDocument,t===undefined&&(t=n[0].contentWindow),t&&t.location.href!=="about:blank"&&t.location.replace(u))}function n(n,t,i){i.length&&c(i)&&(i.append(n),r())}function b(){for(var u=$(window).width(),f,r,t,i=0;i<Roblox.AdsLibrary.adsIdList.length;i++)r=Roblox.AdsLibrary.adsIdList[i],t=Roblox.AdsLibrary.adsParameters[r],t&&!t.template&&(f=t.element,t.template=f.html());for(i=0;i<Roblox.AdsLibrary.adsIdList.length;i++)(r=Roblox.AdsLibrary.adsIdList[i],t=Roblox.AdsLibrary.adsParameters[r],t)&&(t.isSkyscraper?u>=e&&t.fitTwoAds?n(t.template,r,t.element):u<e&&u>=l?t.fitOneAd?n(t.template,r,t.element):t.element.empty():t.element.empty():t.isLeaderboard?u<p?t.element.empty():n(t.template,r,t.element):t.isPageAd&&(u<w?t.element.empty():n(t.template,r,t.element)))}var t=[],i=20,u=970,f=160,p=728,y=100,v=16,e=$("[data-max-width-for-two-ads]").attr("data-max-width-for-two-ads")||u+f*2+48-i,l=$("[data-max-width-for-one-ads]").attr("data-max-width-for-one-ads")||u+f+24-i,a=1024,w=a-i;return{registerAd:h,refreshAds:r,adjustAdsFitScreen:b,getAds:n}}(),Roblox.AdsHelper.DynamicAdCreator=function(){function n(){var n=$(".dynamic-ad").filter(".unpopulated");n.each(function(n,t){var i=$(t),u=i.attr("data-ad-slot"),f=parseInt(i.attr("data-ad-width")),e=parseInt(i.attr("data-ad-height")),r=i.children(".ad-slot").attr("id");googletag.cmd.push(function(){var n=googletag.defineSlot(u,[f,e],r).addService(googletag.pubads());googletag.display(r),googletag.pubads().refresh([n])}),i.removeClass("unpopulated")})}return{populateNewAds:n}}(),$(function(){$(window).resize(function(){Roblox.AdsHelper.AdRefresher.adjustAdsFitScreen()})});

;// jquery/lazyLoadImage/jquery.lazyload.js
/*!
 * Lazy Load - jQuery plugin for lazy loading images
 *
 * Copyright (c) 2007-2015 Mika Tuupola
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *   http://www.appelsiini.net/projects/lazyload
 *
 * Version:  1.9.7
 *
 */
(function(n,t,i,r){var u=n(t);n.fn.lazyload=function(f){function s(){var t=0;o.each(function(){var i=n(this);if((!e.skip_invisible||i.is(":visible"))&&!n.abovethetop(this,e)&&!n.leftofbegin(this,e))if(n.belowthefold(this,e)||n.rightoffold(this,e)){if(++t>e.failure_limit)return!1}else i.trigger("appear"),t=0})}var o=this,h,e={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!1,appear:null,load:null,placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",loading_class:""};return f&&(r!==f.failurelimit&&(f.failure_limit=f.failurelimit,delete f.failurelimit),r!==f.effectspeed&&(f.effect_speed=f.effectspeed,delete f.effectspeed),n.extend(e,f)),h=e.container===r||e.container===t?u:n(e.container),0===e.event.indexOf("scroll")&&h.bind(e.event,function(){return s()}),this.each(function(){var i=this,t=n(i);i.loaded=!1,(t.attr("src")===r||t.attr("src")===!1)&&(t.is("img")&&e.loading_class.length<1&&t.attr("src",e.placeholder),e.loading_class.length>=1&&t.addClass(e.loading_class));t.one("appear",function(){if(!this.loaded){if(e.appear){var r=o.length;e.appear.call(i,r,e)}n("<img />").bind("load",function(){var r=t.attr("data-"+e.data_attribute),u,f;t.hide(),t.is("img")?t.attr("src",r):t.css("background-image","url('"+r+"')"),t.removeClass(e.loading_class),t[e.effect](e.effect_speed),i.loaded=!0,u=n.grep(o,function(n){return!n.loaded}),o=n(u),e.load&&(f=o.length,e.load.call(i,f,e))}).attr("src",t.attr("data-"+e.data_attribute))}});0!==e.event.indexOf("scroll")&&t.bind(e.event,function(){i.loaded||t.trigger("appear")})}),u.bind("resize",function(){s()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&u.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&o.each(function(){n(this).trigger("appear")})}),n(i).ready(function(){s()}),this},n.belowthefold=function(i,f){var e;return e=f.container===r||f.container===t?(t.innerHeight?t.innerHeight:u.height())+u.scrollTop():n(f.container).offset().top+n(f.container).height(),e<=n(i).offset().top-f.threshold},n.rightoffold=function(i,f){var e;return e=f.container===r||f.container===t?u.width()+u.scrollLeft():n(f.container).offset().left+n(f.container).width(),e<=n(i).offset().left-f.threshold},n.abovethetop=function(i,f){var e;return e=f.container===r||f.container===t?u.scrollTop():n(f.container).offset().top,e>=n(i).offset().top+f.threshold+n(i).height()},n.leftofbegin=function(i,f){var e;return e=f.container===r||f.container===t?u.scrollLeft():n(f.container).offset().left,e>=n(i).offset().left+f.threshold+n(i).width()},n.inviewport=function(t,i){return!n.rightoffold(t,i)&&!n.leftofbegin(t,i)&&!n.belowthefold(t,i)&&!n.abovethetop(t,i)},n.extend(n.expr[":"],{"below-the-fold":function(t){return n.belowthefold(t,{threshold:0})},"above-the-top":function(t){return!n.belowthefold(t,{threshold:0})},"right-of-screen":function(t){return n.rightoffold(t,{threshold:0})},"left-of-screen":function(t){return!n.rightoffold(t,{threshold:0})},"in-viewport":function(t){return n.inviewport(t,{threshold:0})},"above-the-fold":function(t){return!n.belowthefold(t,{threshold:0})},"right-of-fold":function(t){return n.rightoffold(t,{threshold:0})},"left-of-fold":function(t){return!n.rightoffold(t,{threshold:0})}})})(jQuery,window,document);

;// jquery/lazyLoadImage/lazyLoadImg.js
"use strict";var Roblox=Roblox||{};Roblox.LazyLoadImg=Roblox.LazyLoadImg||{},Roblox.LazyLoadImg.init=function(n,t){var i=(t?t.selector+" ":"")+"img.lazy";$(i).lazyload({skip_invisible:!0,placeholder:"",loading_class:"icon-placeholder-game",threshold:n,container:t})},Roblox.LazyLoadImg.scrollWhenTabsAreClicked=function(){$(".rbx-tab").on("shown.bs.tab",function(){$(document).trigger("scroll")})},Roblox.LazyLoadImg.updateImageScroll=function(n){n?n.trigger("scroll"):$(document).trigger("scroll")},$(function(){Roblox.LazyLoadImg.init(),Roblox.LazyLoadImg.scrollWhenTabsAreClicked()});

;// NumberFormatting.js
typeof Roblox=="undefined"&&(Roblox={}),typeof Roblox.NumberFormatting=="undefined"&&(Roblox.NumberFormatting=function(){var n=function(n){if(typeof n!="number")throw"'number' is not a number";return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},t=function(n){var t;if(typeof n!="number")throw"'number' is not a number";var i=1e3,r=1e6,u=1e9;return n<=0?"0":n<i?n:n<r?(t=Math.round(n/i*10)/10,t>=i)?Math.round(t/i*10)/10+"M":t+"K":n<u?(t=Math.round(n/r*10)/10,t>=i)?Math.round(t/i*10)/10+"B":t+"M":Math.round(n/u*10)/10+"B"},i=function(t){var i,r,u;if(typeof t!="number")throw"'number' is not a number";var f=1e4,e=1e6,o=1e9;return t==0?"0":t<f?n(t):(i="B+",r=9,t<e?(i="K+",r=3):t<o&&(i="M+",r=6),u=t.toString(),u.substring(0,u.length-r)+i)};return{abbreviatedFormat:i,commas:n,abbreviate:t}}());

;// ~/Generated/js/Roblox_TranslationResources_Feature_VotingPanelResources_en_us_standard.js
var Roblox=Roblox||{};Roblox.Lang=Roblox.Lang||{},Roblox.Lang["Feature.VotingPanel"]={"Label.Accept":"Verify","Label.AccountPageTitle":"Account","Label.AccountUnderDayOneMessage":"You will be able to vote on Experiences and Studio Models later, after you've had a chance to experience Roblox a bit more. Come back to this page in a couple days.","Label.AccountUnderDayOneTitle":"Voter Feedback","Label.AssetNotVoteableMessage":"This asset may not be voted on at this time.","Label.AssetNotVoteableTitle":"Unable to Vote","Label.BuyGamePassMessage":"You must own this pass before you can vote on it.","Label.BuyGamePassTitle":"Buy Pass","Label.Decline":"Cancel","Label.EmailVerifiedMessage":"You must verify your email before you can vote. You can verify your email on the {accountPageLink} page.","Label.EmailVerifiedTitle":"Verify Your Email","Label.FloodCheckMessage":"You're voting too quickly. Come back later and try again.","Label.FloodCheckTitle":"Slow Down","Label.GuestUserMessage":"Please {loginOrRegisterPageLink} to continue.","Label.GuestUserTitle":"Login to Vote","Label.InstallPluginMessage":"You must install this plugin before you can vote on it.","Label.InstallPluginTitle":"Install Plugin","Label.Login":"Login","Label.LoginOrRegisterPageTitle":"login or register","Label.Ok":"OK","Label.PlayGameMessage":"You must visit the experience before you can vote on it.","Label.PlayGameTitle":"Join Experience","Label.UnknownProblemMessage":"There was an unknown problem voting. Please try again.","Label.UnknownProblemTitle":"Something Broke","Label.UseModelMessage":"You must use this model before you can vote on it.","Label.UseModelTitle":"Use Model","Label.YouMustLoginToVote":"You must login to vote."},Roblox.Lang.VotingPanelResources=Roblox.Lang["Feature.VotingPanel"];

;// Game/GameFavoriteButton.js
var Roblox=Roblox||{};$(function(){var r=$("#toggle-game-favorite"),f=$("#game-favorite-icon"),h=$("#game-favorite-icon-label"),o=$(".game-favorite-button-container .tooltip-container"),c=r.data("signin-url"),l=f.length,u=f.hasClass("favorited"),e=$(".game-favorite-count"),i=0,a=200,v=2e3,y=["0","1","2","3","4","5","6","7","8","9"],n=Roblox.Lang.FavoritesResources,t={loggedInTitle:n.LabelLoginRequired,buttonLabel:n["Label.Favorite"],buttonLabelFavorited:n["Label.Favorited"],tooltipRemoveFavorite:n.ActionRemoveFromFavorites,tooltipAddFavorite:n.ActionAddToFavorites,loggedInMsg:n.DescriptionLoginRequired,loginAction:n.ActionLogin,cancelAction:n.ActionCancel},s=function(){var n,i;u?(n=t.tooltipRemoveFavorite,i=t.buttonLabelFavorited):(n=t.tooltipAddFavorite,i=t.buttonLabel),h.text(i),l?o.attr("data-original-title",n):o.attr("title",n),f.removeClass("favorited"),u&&f.addClass("favorited")};s(),r.click(function(){r.data("isguest").toLowerCase()==="true"?Roblox.Dialog.open({titleText:t.loggedInTitle,bodyContent:t.loggedInMsg,onAccept:function(){window.location.href=c},acceptColor:Roblox.Dialog.blue,acceptText:t.loginAction,declineText:t.cancelAction}):$.post(r.data("toggle-url"),{assetID:r.data("assetid")},function(n){var r=!0,t=e.text(),h="",c=$(".content .alert-warning"),f,o,l;if(n.success){for(u=!u,f=0;f<t.length&&r;f++)o=t[f],o!==","&&$.inArray(o,y)<0&&(r=!1);r&&(l=/,/gi,t=t.replace(l,""),i=parseInt(t,10)),r&&!isNaN(i)&&(u?i++:i--,h=Roblox.NumberFormatting.commas(i),i>0?e.text(h):e.text("0")),s()}else Roblox.BootstrapWidgets&&Roblox.BootstrapWidgets.ToggleSystemMessage&&c.length&&Roblox.BootstrapWidgets.ToggleSystemMessage(c,a,v,n.message)})})});

;// ~/Generated/js/Roblox_TranslationResources_Feature_FavoritesResources_en_us_standard.js
var Roblox=Roblox||{};Roblox.Lang=Roblox.Lang||{},Roblox.Lang["Feature.Favorites"]={ActionAddToFavorites:"Add to Favorites",ActionCancel:"Cancel",ActionLogin:"Login",ActionRemoveFromFavorites:"Remove from Favorites",DescriptionLoginRequired:"You must be logged in to add this to your favorites. Please Login or Register to continue","Heading.Favorites":"Favorites","Heading.MyFavorites":"My Favorites","Heading.UserFavorites":"{username}'s Favorites","Label.AddToFavorites":"Add to Favorites","Label.Favorite":"Favorite","Label.Favorited":"Favorited",LabelLoginRequired:"Login Required",MessageAssetNotFoundError:"The asset you are trying to favorite cannot be found."},Roblox.Lang.FavoritesResources=Roblox.Lang["Feature.Favorites"];

;// Game/GameFollowButton.js
var Roblox=Roblox||{};$(function(){var i=$("#toggle-game-follow"),o=$("#game-follow-icon"),p=$("#game-follow-icon-label"),h=$(".game-follow-button-container .tooltip-container"),y=i.data("signin-url"),v=o.length,f=i.data("user-id"),e=i.data("universe-id"),a=i.data("is-guest"),c=i.data("originator"),w=i.data("originator-id"),r=!1,s=!1,k=200,d=2e3,t=Roblox.Lang.GameFollowsResources,n={buttonLabelFollow:t.LabelFollow,buttonLabelFollowed:t.LabelFollowing,tooltipFollow:t.TooltipFollowGame,tooltipUnfollow:t.TooltipUnfollowGame,tooltipFollowLimitReached:t.TooltipFollowLimitReached,loggedInTitle:t.LabelLoginRequired,loggedInMsg:t.DescriptionLoginRequired,loginAction:t.ActionLogin,cancelAction:t.ActionCancel},u=function(){var t,i;r?(t=n.tooltipUnfollow,i=n.buttonLabelFollowed):s?(t=n.tooltipFollowLimitReached,i=n.buttonLabelFollow):(t=n.tooltipFollow,i=n.buttonLabelFollow),p.text(i),v?h.attr("data-original-title",t):h.attr("title",t),o.removeClass("followed"),r&&o.addClass("followed")},l=function(){r=!0,u()},b=function(){r=!1,u(),c==="GameUpdateNotification"&&$.ajax({url:Roblox.EnvironmentUrls.notificationApi+"/v2/stream-notifications/game-update-notification-interacted",type:"POST",data:{universeId:e,createdOn:new Date(w),interactionType:"Unfollowed",currentUserId:f}})};a?(u(),i.click(function(){Roblox.Dialog.open({titleText:n.loggedInTitle,bodyContent:n.loggedInMsg,onAccept:function(){window.location.href=y},acceptColor:Roblox.Dialog.blue,acceptText:n.loginAction,declineText:n.cancelAction})})):$.ajax({url:Roblox.EnvironmentUrls.followingsApi+"/v1/users/"+f+"/universes/"+e+"/status",type:"GET"}).done(function(n){r=n.IsFollowing,s=n.FollowingCountByType>=n.FollowingLimitByType,u(),s||i.click(function(){r?$.ajax({url:Roblox.EnvironmentUrls.followingsApi+"/v1/users/"+f+"/universes/"+e,type:"DELETE",success:b}):$.ajax({url:Roblox.EnvironmentUrls.followingsApi+"/v1/users/"+f+"/universes/"+e,type:"POST",success:l})})})});

;// ~/Generated/js/Roblox_TranslationResources_Feature_GameFollowsResources_en_us_standard.js
var Roblox=Roblox||{};Roblox.Lang=Roblox.Lang||{},Roblox.Lang["Feature.GameFollows"]={ActionCancel:"Cancel",ActionLogin:"Login",DescriptionLoginRequired:"You must be logged in to follow this experience. Please Login or Register to continue.",LabelFollow:"Follow",LabelFollowing:"Following",LabelLoginRequired:"Login Required",TooltipFollowGame:"Follow Experience",TooltipFollowLimitReached:"Limit reached. Please unfollow other experiences to follow this one.",TooltipUnfollowGame:"Unfollow Experience"},Roblox.Lang.GameFollowsResources=Roblox.Lang["Feature.GameFollows"];

;// Game/GamePassLazyLoading.js
var Roblox=Roblox||{};Roblox.GamePassLazyLoading=function(){function i(){n.find(".list-item.real-game-pass").remove()}function r(t){n.prepend(t)}function u(){$("#rbx-game-passes").append('<p id="store-does-not-sell" class="section-content-off">'+Roblox.GamePassJSData.LabelGameDoesNotSell+"</p>")}function f(){var f=t.clone().css("display","inherit"),n;$("#rbx-passes-container").append(f),n="/Games/GetGamePassesInnerPartial?startIndex=0&maxRows="+Roblox.GamePassJSData.GamePassesPerPlaceLimit+"&placeId="+Roblox.GamePassJSData.PlaceID,$.ajax({type:"GET",url:n,contentType:"application/json; charset=utf-8",cache:!1,success:function(n){$(".rbx-passes-item-container#spinner").remove(),i(),r(n),n.length<1&&u()},error:function(){Roblox.Dialog.open({titleText:"Error",bodyContent:"Failed to load Game Passes.  Please try again later.",acceptText:"Ok",acceptColor:Roblox.Dialog.none,dismissable:!0})}})}var n=$("#rbx-passes-container"),t=$(".rbx-gear-passes-item-add#spinner");return{init:f}}();

;// GenericModal.js
typeof Roblox.GenericModal=="undefined"&&(Roblox.GenericModal=function(){function s(u,f,e,s,h,c){var l,a;t.isOpen=!0,n=$.extend({},n,c),i=s,l=$("div.GenericModal").filter(":first"),l.find("div.Title").text(u),f===null?l.addClass("noImage"):(l.find("img.GenericModalImage").attr("src",f),l.removeClass("noImage")),l.find("div.Message").html(e),h&&(l.removeClass("smallModal"),l.addClass("largeModal")),a=l.find(o),a.attr("class","btn-large "+n.acceptColor),a.unbind(),a.bind("click",function(){r()}),l.modal(n)}function r(){t.isOpen=!1,$.modal.close(),typeof i=="function"&&i()}var f="btn-primary",u="btn-neutral",e="btn-negative",o=".ImageButton.btn-neutral.btn-large.roblox-ok",t={isOpen:!1},n={overlayClose:!0,escClose:!0,opacity:80,overlayCss:{backgroundColor:"#000"},acceptColor:u},i;return $(function(){$(document).on("click",".GenericModal .roblox-ok",function(){r()})}),{close:r,open:s,status:t,green:f,blue:u,gray:e}}()),Roblox.GenericModal.Resources={ErrorText:"Error",ErrorMessage:"Sorry, an error occurred."},$(document).keypress(function(n){n.which===13&&Roblox.GenericModal.status.isOpen&&Roblox.GenericModal.close()});

;// GenericConfirmation.js
typeof Roblox=="undefined"&&(Roblox={}),typeof Roblox.GenericConfirmation=="undefined"&&(Roblox.GenericConfirmation=function(){function w(){n.isOpen=!1,t()}function k(t){var a,e,o,s,l;n.isOpen=!0,a={titleText:"",bodyContent:"",footerText:"",acceptText:Roblox.Resources.GenericConfirmation.yes,declineText:Roblox.Resources.GenericConfirmation.No,acceptColor:u,declineColor:f,xToCancel:!1,onAccept:function(){return!1},onDecline:function(){return!1},onCancel:function(){return!1},imageUrl:null,allowHtmlContentInBody:!1,allowHtmlContentInFooter:!1,dismissable:!0,fieldValidationRequired:!1,onOpenCallback:function(){}},t=$.extend({},a,t),c.overlayClose=t.dismissable,c.escClose=t.dismissable,e=$(i),e.html(t.acceptText),e.attr("class","btn-large "+t.acceptColor),e.unbind(),e.bind("click",function(){return v(e)?!1:(t.fieldValidationRequired?nt(t.onAccept):h(t.onAccept),!1)}),o=$(r),o.html(t.declineText),o.attr("class","btn-large "+t.declineColor),o.unbind(),o.bind("click",function(){return v(o)?!1:(h(t.onDecline),!1)}),$('[data-modal-handle="confirmation"] div.Title').text(t.titleText),s=$("[data-modal-handle='confirmation']"),t.imageUrl==null?s.addClass("noImage"):(s.find("img.GenericModalImage").attr("src",t.imageUrl),s.removeClass("noImage")),t.allowHtmlContentInBody?$("[data-modal-handle='confirmation'] div.Message").html(t.bodyContent):$("[data-modal-handle='confirmation'] div.Message").text(t.bodyContent),$.trim(t.footerText)==""?$('[data-modal-handle="confirmation"] div.ConfirmationModalFooter').hide():$('[data-modal-handle="confirmation"] div.ConfirmationModalFooter').show(),t.allowHtmlContentInFooter?$('[data-modal-handle="confirmation"] div.ConfirmationModalFooter').html(t.footerText):$('[data-modal-handle="confirmation"] div.ConfirmationModalFooter').text(t.footerText),$("[data-modal-handle='confirmation']").modal(c),l=$("a.genericmodal-close"),l.unbind(),l.bind("click",function(){return h(t.onCancel),!1}),t.xToCancel||l.hide(),t.onOpenCallback()}function a(n){n.hasClass(f)?n.addClass(s):n.hasClass(l)?n.addClass(e):n.hasClass(u)&&n.addClass(o)}function v(n){return n.hasClass(o)||n.hasClass(s)||n.hasClass(e)?!0:!1}function b(){var n=$(i),t=$(r);a(n),a(t)}function g(){var u=$(i),t=$(r),n=o+" "+s+" "+e;u.removeClass(n),t.removeClass(n)}function p(){if(n.isOpen){var t=$(i);t.click()}}function y(){var n=$(r);n.click()}function t(t){n.isOpen=!1,typeof t!="undefined"?$.modal.close(t):$.modal.close()}function h(n){t(),typeof n=="function"&&n()}function nt(n){if(typeof n=="function"){var i=n();if(i!=="undefined"&&i==!1)return!1}t()}var l="btn-primary",u="btn-neutral",f="btn-negative",e="btn-disabled-primary",o="btn-disabled-neutral",s="btn-disabled-negative",d="btn-none",i="#roblox-confirm-btn",r="#roblox-decline-btn",n={isOpen:!1},c={overlayClose:!0,escClose:!0,opacity:80,overlayCss:{backgroundColor:"#000"},onClose:w};return{open:k,close:t,disableButtons:b,enableButtons:g,clickYes:p,clickNo:y,status:n,green:l,blue:u,gray:f,none:d}}()),$(document).keypress(function(n){Roblox.GenericConfirmation.status.isOpen&&n.which===13&&Roblox.GenericConfirmation.clickYes()});

;// common/deviceMeta.js
var Roblox=Roblox||{};Roblox.DeviceMeta=function(){var t=document.querySelector('meta[name="device-meta"]');if(t===null){console.debug("Error loading device information from meta tag - please check if meta tag is present");return}var n=t.dataset||{},i={android:"android",ios:"ios",xbox:"xbox",uwp:"uwp",amazon:"amazon",win32:"win32",universalapp:"universalApp",unknown:"unknown"},r={computer:"computer",tablet:"tablet",phone:"phone",console:"console"};return function(){return{deviceType:r[n.deviceType]||"",appType:i[n.appType]||"",isInApp:n.isInApp==="true",isDesktop:n.isDesktop==="true",isPhone:n.isPhone==="true",isTablet:n.isTablet==="true",isConsole:n.isConsole==="true",isAndroidApp:n.isAndroidApp==="true",isIosApp:n.isIosApp==="true",isUWPApp:n.isUwpApp==="true",isXboxApp:n.isXboxApp==="true",isAmazonApp:n.isAmazonApp==="true",isWin32App:n.isWin32App==="true",isStudio:n.isStudio==="true",isIosDevice:n.isIosDevice==="true",isAndroidDevice:n.isAndroidDevice==="true",isUniversalApp:n.isUniversalApp==="true"}}}();

;// TosModalCheck.js
function showTosModal(n,t,i,r){Roblox.Dialog.open({titleText:n,bodyContent:t,acceptText:i,onAccept:function(){submitTosAgreement(r)},acceptColor:Roblox.Dialog.blue,fieldValidationRequired:!1,dismissable:!1,xToCancel:!1,declineColor:Roblox.Dialog.none,allowHtmlContentInBody:!0})}function submitTosAgreement(n){$.ajax({type:"POST",url:n,contentType:"application/json; charset=utf-8",success:function(){}})}$(function(){var n,t,i,r,u="/UserCheck/show-tos",f=$("#TosAgreementInfo").data("terms-check-needed");$.ajax({type:"GET",url:u,data:{isLicensingTermsCheckNeeded:f},contentType:"application/json; charset=utf-8",success:function(u){if(u.PartialViewName){var f=Roblox.Intl&&new Roblox.Intl,e='<a href="'+u.TermsOfServiceUrl+'" class="text-link" target="_blank">',s=' <a href="'+u.PrivacyUrl+'" class="text-link" target="_blank">',o='<a href="'+u.LegalChangesUrl+'" class="text-link" target="_blank">';u.PartialViewName==="CaptureTosAgreement_v2"?(n=f.f(u.LangResources["Heading.TosHaveChangedTitle"]),t=f.f(u.LangResources["Message.AgreeToTosAndPrivacyBody"],{tosLinkStart:e,tosLinkEnd:"</a>",privacyLinkStart:s,privacyLinkEnd:"</a>",legalChangesLinkStart:o,legalChangesLinkEnd:"</a>"}),i=f.f(u.LangResources["Label.IAgree"]),r="/UserCheck/update-tos"):u.PartialViewName==="CaptureTosAgreementWithExplicitLicenseClause"&&(n=f.f(u.LangResources["Heading.TosAgreementTitle"]),t=f.f(u.LangResources["Message.TosAgreementBody"],{tosLinkStart:e,tosLinkEnd:"</a>",legalChangesLinkStart:o,legalChangesLinkEnd:"</a>"}),i=f.f(u.LangResources["Label.IAgree"]),r="/UserCheck/update-tos-licensing"),showTosModal(n,t,i,r)}},error:function(){}})});

;// AbuseReport/AbuseReportDispatcher.js
var Roblox=Roblox||{};Roblox.AbuseReportDispatcher=function(){var i=!1,n=function(n,t){n=n.replace(/[\[\]]/g,"\\$&");var r=new RegExp("[?&]"+n+"(=([^&#]*)|&|#|$)"),i=r.exec(t);return i?i[2]?decodeURIComponent(i[2].replace(/\+/g," ")):"":null},r=function(t){var i,o;if(typeof t!="string")return!1;t=t.toLowerCase();var s=t.split("?"),f=s[0],r,u=Roblox.AbuseReportPVMeta,h=Roblox.DeviceMeta();if(u.inApp=h.isInApp,f&&typeof f=="string"&&(r=f.split("abusereport/")[1]),r&&(i={actionName:r,id:n("id",t),redirectUrl:n("redirecturl",t)},n("conversationid",t)&&(i.conversationId=n("conversationid",t)),n("partyguid",t)&&(i.partyGuid=n("partyguid",t)),i.id&&i.redirectUrl)){var c=$.param(i),e="abusereport/embedded/"+r+"?"+c,l=Roblox.Endpoints.getAbsoluteUrl("/"+e);u.inApp?u.inAppEnabled?(o={urlPath:e,feature:"Abuse Report"},console.debug("Calling navigateToFeature for Hybrid Overlay"),Roblox.Hybrid.Navigation.navigateToFeature(o,function(n){console.debug("navigateToFeature ---- status:"+n)})):window.location.href=t:window.location.href=u.phoneEnabled?l:t}},t=function(n){n.preventDefault();var t=$(this).attr("href");t&&r(t)},u=function(){if(!i){$(".abuse-report-modal").click(t);$(".messages-container").on("click",".abuse-report-modal",t);$("#AjaxCommentsContainer").on("click",".abuse-report-modal",t);$("#item-context-menu").on("click",".abuse-report-modal",t);$(".GroupWallPane").on("click",".abuse-report-modal",t);$(".group-details-container").on("click",".abuse-report-modal",t);i=!0}};return{triggerUrlAction:r,initialize:u}}(),$(document).ready(function(){Roblox.AbuseReportDispatcher.initialize()});

;//Bundle detector
Roblox && Roblox.BundleDetector && Roblox.BundleDetector.bundleDetected('page');