Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 77.04 KB | None | 0 0
  1. "use strict";
  2.  
  3. function CLoginPromptManager( strBaseURL, rgOptions )
  4. {
  5. // normalize with trailing slash
  6. this.m_strBaseURL = strBaseURL + ( strBaseURL.substr(-1) == '/' ? '' : '/' ) + ( this.m_bIsMobile ? 'mobilelogin' : 'login' ) + '/';
  7.  
  8. // read options
  9. rgOptions = rgOptions || {};
  10. this.m_bIsMobile = rgOptions.bIsMobile || false;
  11. this.m_strMobileClientType = rgOptions.strMobileClientType || '';
  12. this.m_strMobileClientVersion = rgOptions.strMobileClientVersion || '';
  13. this.m_bIsMobileSteamClient = ( this.m_strMobileClientType ? true : false );
  14.  
  15. this.m_$LogonForm = $JFromIDOrElement( rgOptions.elLogonForm || document.forms['logon'] );
  16.  
  17. this.m_fnOnFailure = rgOptions.fnOnFailure || null;
  18. this.m_fnOnSuccess = rgOptions.fnOnSuccess || null;
  19.  
  20. this.m_strRedirectURL = rgOptions.strRedirectURL || (this.m_bIsMobile ? '' : strBaseURL);
  21. this.m_strSessionID = rgOptions.strSessionID || null;
  22.  
  23. this.m_strUsernameEntered = null;
  24. this.m_strUsernameCanonical = null;
  25.  
  26. if ( rgOptions.gidCaptcha )
  27. this.UpdateCaptcha( rgOptions.gidCaptcha );
  28. else
  29. this.RefreshCaptcha(); // check if needed
  30.  
  31.  
  32. this.m_bLoginInFlight = false;
  33. this.m_bInEmailAuthProcess = false;
  34. this.m_bInTwoFactorAuthProcess = false;
  35. this.m_TwoFactorModal = null;
  36. this.m_bEmailAuthSuccessful = false;
  37. this.m_bLoginTransferInProgress = false;
  38. this.m_bEmailAuthSuccessfulWantToLeave = false;
  39. this.m_bTwoFactorAuthSuccessful = false;
  40. this.m_bTwoFactorAuthSuccessfulWantToLeave = false;
  41. this.m_sOAuthRedirectURI = 'steammobile://mobileloginsucceeded';
  42. this.m_sAuthCode = "";
  43. this.m_sPhoneNumberLastDigits = "??";
  44. this.m_bTwoFactorReset = false;
  45.  
  46. // values we collect from the user
  47. this.m_steamidEmailAuth = '';
  48.  
  49.  
  50. // record keeping
  51. this.m_iIncorrectLoginFailures = 0; // mobile reveals password after a couple failures
  52.  
  53. var _this = this;
  54.  
  55. this.m_$LogonForm.submit( function(e) {
  56. _this.DoLogin();
  57. e.preventDefault();
  58. });
  59. // find buttons and make them clickable
  60. $J('#login_btn_signin' ).children('a, button' ).click( function() { _this.DoLogin(); } );
  61.  
  62. this.InitModalContent();
  63.  
  64. // these modals need to be in the body because we refer to elements by name before they are ready
  65. this.m_$ModalAuthCode = this.GetModalContent( 'loginAuthCodeModal' );
  66. this.m_$ModalAuthCode.find('[data-modalstate]' ).each( function() {
  67. $J(this).click( function() { _this.SetEmailAuthModalState( $J(this).data('modalstate') ); } );
  68. });
  69. this.m_$ModalAuthCode.find('form').submit( function(e) {
  70. _this.SetEmailAuthModalState('submit');
  71. e.preventDefault();
  72. });
  73. this.m_EmailAuthModal = null;
  74.  
  75. this.m_$ModalIPT = this.GetModalContent( 'loginIPTModal' );
  76.  
  77. this.m_$ModalTwoFactor = this.GetModalContent( 'loginTwoFactorCodeModal' );
  78. this.m_$ModalTwoFactor.find( '[data-modalstate]' ).each( function() {
  79. $J(this).click( function() { _this.SetTwoFactorAuthModalState( $J(this).data('modalstate') ); } );
  80. });
  81. this.m_$ModalTwoFactor.find( 'form' ).submit( function(e) {
  82. // Prevent submit if nothing was entered
  83. if ( $J('#twofactorcode_entry').val() != '' )
  84. {
  85. // Push the left button
  86. var $btnLeft = _this.m_$ModalTwoFactor.find( '.auth_buttonset:visible .auth_button.leftbtn ' );
  87. $btnLeft.trigger( 'click' );
  88. }
  89.  
  90. e.preventDefault();
  91. });
  92.  
  93.  
  94.  
  95. // register to listen to IOS two factor callback
  96. $J(document).on('SteamMobile_ReceiveAuthCode', function( e, authcode ) {
  97. _this.m_sAuthCode = authcode;
  98. });
  99.  
  100. $J('#captchaRefreshLink' ).click( $J.proxy( this.RefreshCaptcha, this ) );
  101.  
  102. // include some additional scripts we may need
  103. if ( typeof BigNumber == 'undefined' )
  104. $J.ajax( { url: 'https://steamcommunity-a.akamaihd.net/public/shared/javascript/crypto/jsbn.js', type: 'get', dataType: 'script', cache: true } );
  105. if ( typeof RSA == 'undefined' )
  106. $J.ajax( { url: 'https://steamcommunity-a.akamaihd.net/public/shared/javascript/crypto/rsa.js', type: 'get', dataType: 'script', cache: true } );
  107. }
  108.  
  109. CLoginPromptManager.prototype.BIsIos = function() { return this.m_strMobileClientType == 'ios'; };
  110. CLoginPromptManager.prototype.BIsAndroid = function() { return this.m_strMobileClientType == 'android'; };
  111. CLoginPromptManager.prototype.BIsWinRT = function() { return this.m_strMobileClientType == 'winrt'; };
  112.  
  113. CLoginPromptManager.prototype.BIsUserInMobileClientVersionOrNewer = function( nMinMajor, nMinMinor, nMinPatch ) {
  114. if ( (!this.BIsIos() && !this.BIsAndroid() && !this.BIsWinRT() ) || this.m_strMobileClientVersion == '' )
  115. return false;
  116.  
  117. var version = this.m_strMobileClientVersion.match( /(?:(\d+) )?\(?(\d+)\.(\d+)(?:\.(\d+))?\)?/ );
  118. if ( version && version.length >= 3 )
  119. {
  120. var nMajor = parseInt( version[2] );
  121. var nMinor = parseInt( version[3] );
  122. var nPatch = parseInt( version[4] );
  123.  
  124. return nMajor > nMinMajor || ( nMajor == nMinMajor && ( nMinor > nMinMinor || ( nMinor == nMinMinor && nPatch >= nMinPatch ) ) );
  125. }
  126. };
  127.  
  128. CLoginPromptManager.prototype.GetParameters = function( rgParams )
  129. {
  130. var rgDefaultParams = { 'donotcache': new Date().getTime() };
  131. if ( this.m_strSessionID )
  132. rgDefaultParams['sessionid'] = this.m_strSessionID;
  133.  
  134. return $J.extend( rgDefaultParams, rgParams );
  135. };
  136.  
  137. CLoginPromptManager.prototype.$LogonFormElement = function( strElementName )
  138. {
  139. var $Form = this.m_$LogonForm;
  140. var elInput = this.m_$LogonForm[0].elements[ strElementName ];
  141.  
  142. if ( !elInput )
  143. {
  144. var $Input = $J('<input/>', {type: 'hidden', name: strElementName } );
  145. $Form.append( $Input );
  146. return $Input;
  147. }
  148. else
  149. {
  150. return $J( elInput );
  151. }
  152. };
  153.  
  154. CLoginPromptManager.prototype.HighlightFailure = function( msg )
  155. {
  156. if ( this.m_fnOnFailure )
  157. {
  158. this.m_fnOnFailure( msg );
  159.  
  160. // always blur on mobile so the error can be seen
  161. if ( this.m_bIsMobile && msg )
  162. $J('input:focus').blur();
  163. }
  164. else
  165. {
  166. var $ErrorElement = $J('#error_display');
  167.  
  168. if ( msg )
  169. {
  170. $ErrorElement.text( msg );
  171. $ErrorElement.slideDown();
  172.  
  173. if ( this.m_bIsMobile )
  174. $J('input:focus').blur();
  175. }
  176. else
  177. {
  178. $ErrorElement.hide();
  179. }
  180. }
  181. };
  182.  
  183.  
  184. //Refresh the catpcha image
  185. CLoginPromptManager.prototype.RefreshCaptcha = function()
  186. {
  187. var _this = this;
  188. $J.post( this.m_strBaseURL + 'refreshcaptcha/', this.GetParameters( {} ) )
  189. .done( function( data ) {
  190. _this.UpdateCaptcha( data.gid );
  191. });
  192. };
  193.  
  194. CLoginPromptManager.prototype.UpdateCaptcha = function( gid )
  195. {
  196. if ( gid != -1 )
  197. {
  198. $J('#captcha_entry').show();
  199. $J('#captchaImg').attr( 'src', this.m_strBaseURL + 'rendercaptcha/?gid='+gid );
  200. this.$LogonFormElement('captcha_text').val('');
  201. }
  202. else
  203. {
  204. $J('#captcha_entry' ).hide();
  205. }
  206. this.m_gidCaptcha = gid;
  207. };
  208.  
  209. CLoginPromptManager.prototype.DoLogin = function()
  210. {
  211. var form = this.m_$LogonForm[0];
  212.  
  213. var username = form.elements['username'].value;
  214. this.m_strUsernameEntered = username;
  215. username = username.replace( /[^\x00-\x7F]/g, '' ); // remove non-standard-ASCII characters
  216. this.m_strUsernameCanonical = username;
  217.  
  218. var password = form.elements['password'].value;
  219. password = password.replace( /[^\x00-\x7F]/g, '' ); // remove non-standard-ASCII characters
  220.  
  221. if ( this.m_bLoginInFlight || password.length == 0 || username.length == 0 )
  222. return;
  223.  
  224. this.m_bLoginInFlight = true;
  225. $J('#login_btn_signin').hide();
  226. $J('#login_btn_wait').show();
  227.  
  228. // reset some state
  229. this.HighlightFailure( '' );
  230.  
  231. var _this = this;
  232. $J.post( this.m_strBaseURL + 'getrsakey/', this.GetParameters( { username: username } ) )
  233. .done( $J.proxy( this.OnRSAKeyResponse, this ) )
  234. .fail( function () {
  235. ShowAlertDialog( 'Ошибка', 'При подключении к серверам Steam возникла проблема. Повторите попытку позже.' );
  236. $J('#login_btn_signin').show();
  237. $J('#login_btn_wait').hide();
  238. _this.m_bLoginInFlight = false;
  239. });
  240. };
  241.  
  242. // used to get mobile client to execute a steammobile URL
  243. CLoginPromptManager.prototype.RunLocalURL = function(url)
  244. {
  245. var $IFrame = $J('<iframe/>', {src: url} );
  246. $J(document.body).append( $IFrame );
  247.  
  248. // take it back out immediately
  249. $IFrame.remove();
  250. };
  251.  
  252. var g_interval = null;
  253.  
  254. // read results from Android or WinRT clients
  255. CLoginPromptManager.prototype.GetValueFromLocalURL = function( url, callback )
  256. {
  257. window.g_status = null;
  258. window.g_data = null;
  259. this.RunLocalURL( url );
  260.  
  261. var timeoutTime = Date.now() + 1000 * 5;
  262.  
  263. if ( g_interval != null )
  264. {
  265. window.clearInterval( g_interval );
  266. g_interval = null;
  267. }
  268.  
  269. // poll regularly (but gently) for an update.
  270. g_interval = window.setInterval( function() {
  271. var status = window.SGHandler.getResultStatus();
  272. if ( status && status != 'busy' )
  273. {
  274. if ( g_interval )
  275. window.clearInterval( g_interval );
  276.  
  277. var value = window.SGHandler.getResultValue();
  278. callback( [ status, value ] );
  279. return;
  280. }
  281. if ( Date.now() > timeoutTime )
  282. {
  283. if ( g_interval )
  284. window.clearInterval( g_interval );
  285. callback( ['error', 'timeout'] );
  286. return;
  287. }
  288. }, 100);
  289. };
  290.  
  291. // this function is invoked by iOS after the steammobile:// url is triggered by GetAuthCode.
  292. // we post an event to the dom to let any login handlers deal with it.
  293. function receiveAuthCode( code )
  294. {
  295. $J(document).trigger( 'SteamMobile_ReceiveAuthCode', [ code ] );
  296. };
  297.  
  298. CLoginPromptManager.prototype.GetAuthCode = function( results, callback )
  299. {
  300. if ( this.m_bIsMobile )
  301. {
  302. // honor manual entry before anything else
  303. var code = $J('#twofactorcode_entry').val();
  304. if ( code.length > 0 )
  305. {
  306. callback( results, code );
  307. return;
  308. }
  309.  
  310. if ( this.BIsIos() )
  311. {
  312. this.m_sAuthCode = '';
  313. this.RunLocalURL( "steammobile://twofactorcode?gid=" + results.token_gid );
  314.  
  315. // this is expected to trigger receiveAuthCode and we'll have this value set by the time it's done
  316. if ( this.m_sAuthCode.length > 0 )
  317. {
  318. callback( results, this.m_sAuthCode );
  319. return;
  320. }
  321. }
  322. else if ( this.BIsAndroid() || this.BIsWinRT() )
  323. {
  324. var result = this.GetValueFromLocalURL('steammobile://twofactorcode?gid=' + results.token_gid, function(result) {
  325. if ( result[0] == 'ok' )
  326. {
  327. callback(results, result[1]);
  328. } else {
  329. // this may be in the modal
  330. callback(results, $J('#twofactorcode_entry').val());
  331. }
  332. });
  333. return;
  334. }
  335.  
  336. // this may be in the modal
  337. callback(results, $J('#twofactorcode_entry').val());
  338. }
  339. else
  340. {
  341. var authCode = this.m_sAuthCode;
  342. this.m_sAuthCode = '';
  343. callback( results, authCode );
  344. }
  345. };
  346.  
  347.  
  348. CLoginPromptManager.prototype.OnRSAKeyResponse = function( results )
  349. {
  350. if ( results.publickey_mod && results.publickey_exp && results.timestamp )
  351. {
  352. this.GetAuthCode( results , $J.proxy(this.OnAuthCodeResponse, this) );
  353. }
  354. else
  355. {
  356. if ( results.message )
  357. {
  358. this.HighlightFailure( results.message );
  359. }
  360.  
  361. $J('#login_btn_signin').show();
  362. $J('#login_btn_wait').hide();
  363.  
  364. this.m_bLoginInFlight = false;
  365. }
  366. };
  367.  
  368. CLoginPromptManager.prototype.OnAuthCodeResponse = function( results, authCode )
  369. {
  370. var form = this.m_$LogonForm[0];
  371. var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp);
  372. var username = this.m_strUsernameCanonical;
  373. var password = form.elements['password'].value;
  374. password = password.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
  375. var encryptedPassword = RSA.encrypt(password, pubKey);
  376.  
  377. var rgParameters = {
  378. password: encryptedPassword,
  379. username: username,
  380. twofactorcode: authCode,
  381. emailauth: form.elements['emailauth'] ? form.elements['emailauth'].value : '',
  382. loginfriendlyname: form.elements['loginfriendlyname'] ? form.elements['loginfriendlyname'].value : '',
  383. captchagid: this.m_gidCaptcha,
  384. captcha_text: form.elements['captcha_text'] ? form.elements['captcha_text'].value : '',
  385. emailsteamid: this.m_steamidEmailAuth,
  386. rsatimestamp: results.timestamp,
  387. remember_login: ( form.elements['remember_login'] && form.elements['remember_login'].checked ) ? 'true' : 'false'
  388. };
  389.  
  390. if (this.m_bIsMobile)
  391. rgParameters.oauth_client_id = form.elements['oauth_client_id'].value;
  392.  
  393. var _this = this;
  394. $J.post(this.m_strBaseURL + 'dologin/', this.GetParameters(rgParameters))
  395. .done($J.proxy(this.OnLoginResponse, this))
  396. .fail(function () {
  397. ShowAlertDialog('Error', 'There was a problem communicating with the Steam servers. Please try again later.');
  398.  
  399. $J('#login_btn_signin').show();
  400. $J('#login_btn_wait').hide();
  401. _this.m_bLoginInFlight = false;
  402. });
  403. };
  404.  
  405.  
  406. CLoginPromptManager.prototype.OnLoginResponse = function( results )
  407. {
  408. this.m_bLoginInFlight = false;
  409. var bRetry = true;
  410.  
  411. if ( results.login_complete )
  412. {
  413. if ( this.m_bIsMobile && results.oauth )
  414. {
  415. if( results.redirect_uri )
  416. {
  417. this.m_sOAuthRedirectURI = results.redirect_uri;
  418. }
  419.  
  420. this.$LogonFormElement('oauth' ).val( results.oauth );
  421. bRetry = false;
  422. this.LoginComplete();
  423. return;
  424. }
  425.  
  426. var bRunningTransfer = false;
  427. if ( ( results.transfer_url || results.transfer_urls ) && results.transfer_parameters )
  428. {
  429. bRunningTransfer = true;
  430. this.TransferLogin( results.transfer_urls || [ results.transfer_url ], results.transfer_parameters );
  431. }
  432.  
  433. if ( this.m_bInEmailAuthProcess )
  434. {
  435. this.m_bEmailAuthSuccessful = true;
  436. this.SetEmailAuthModalState( 'success' );
  437. }
  438. else if ( this.m_bInTwoFactorAuthProcess )
  439. {
  440. this.m_bTwoFactorAuthSuccessful = true;
  441. this.SetTwoFactorAuthModalState( 'success' );
  442. }
  443. else
  444. {
  445. bRetry = false;
  446. if ( !bRunningTransfer )
  447. this.LoginComplete();
  448. }
  449. }
  450. else
  451. {
  452. // if there was some kind of other error while doing email auth or twofactor, make sure
  453. // the modals don't get stuck
  454. if ( !results.emailauth_needed && this.m_EmailAuthModal )
  455. this.m_EmailAuthModal.Dismiss();
  456.  
  457. if ( !results.requires_twofactor && this.m_TwoFactorModal )
  458. this.m_TwoFactorModal.Dismiss();
  459.  
  460. if ( results.requires_twofactor )
  461. {
  462. $J('#captcha_entry').hide();
  463.  
  464. if ( !this.m_bInTwoFactorAuthProcess )
  465. this.StartTwoFactorAuthProcess();
  466. else
  467. this.SetTwoFactorAuthModalState( 'incorrectcode' );
  468. }
  469. else if ( results.captcha_needed && results.captcha_gid )
  470. {
  471. this.UpdateCaptcha( results.captcha_gid );
  472. this.m_iIncorrectLoginFailures ++;
  473. }
  474. else if ( results.emailauth_needed )
  475. {
  476. if ( results.emaildomain )
  477. $J('#emailauth_entercode_emaildomain').text( results.emaildomain );
  478.  
  479. if ( results.emailsteamid )
  480. this.m_steamidEmailAuth = results.emailsteamid;
  481.  
  482. if ( !this.m_bInEmailAuthProcess )
  483. this.StartEmailAuthProcess();
  484. else
  485. this.SetEmailAuthModalState( 'incorrectcode' );
  486. }
  487. else if ( results.denied_ipt )
  488. {
  489. ShowDialog( 'Технология Intel® Identity Protection', this.m_$ModalIPT.show() ).always( $J.proxy( this.ClearLoginForm, this ) );
  490. }
  491. else
  492. {
  493. this.m_strUsernameEntered = null;
  494. this.m_strUsernameCanonical = null;
  495. this.m_iIncorrectLoginFailures ++;
  496. }
  497.  
  498. if ( results.message )
  499. {
  500. this.HighlightFailure( results.message );
  501. if ( this.m_bIsMobile && this.m_iIncorrectLoginFailures > 1 && !results.emailauth_needed && !results.bad_captcha )
  502. {
  503. // 2 failed logins not due to Steamguard or captcha, un-obfuscate the password field
  504. $J( '#passwordclearlabel' ).show();
  505. $J( '#steamPassword' ).val('');
  506. $J( '#steamPassword' ).attr( 'type', 'text' );
  507. $J( '#steamPassword' ).attr( 'autocomplete', 'off' );
  508. }
  509. else if ( results.clear_password_field )
  510. {
  511. $J( '#input_password' ).val('');
  512. $J( '#input_password' ).focus();
  513. }
  514.  
  515. }
  516. }
  517. if ( bRetry )
  518. {
  519. $J('#login_btn_signin').show();
  520. $J('#login_btn_wait').hide();
  521. }
  522. };
  523.  
  524. CLoginPromptManager.prototype.ClearLoginForm = function()
  525. {
  526. var rgElements = this.m_$LogonForm[0].elements;
  527. rgElements['username'].value = '';
  528. rgElements['password'].value = '';
  529. if ( rgElements['emailauth'] ) rgElements['emailauth'].value = '';
  530. this.m_steamidEmailAuth = '';
  531.  
  532. // part of the email auth modal
  533. $J('#authcode').value = '';
  534.  
  535. if ( this.m_gidCaptcha )
  536. this.RefreshCaptcha();
  537.  
  538. rgElements['username'].focus();
  539. };
  540.  
  541. CLoginPromptManager.prototype.StartEmailAuthProcess = function()
  542. {
  543. this.m_bInEmailAuthProcess = true;
  544.  
  545. this.SetEmailAuthModalState( 'entercode' );
  546.  
  547. var _this = this;
  548. this.m_EmailAuthModal = ShowDialog( 'Steam Guard', this.m_$ModalAuthCode.show() )
  549. .always( function() {
  550. $J(document.body).append( _this.m_$ModalAuthCode.hide() );
  551. _this.CancelEmailAuthProcess();
  552. _this.m_EmailAuthModal = null;
  553. } );
  554.  
  555. this.m_EmailAuthModal.SetDismissOnBackgroundClick( false );
  556. this.m_EmailAuthModal.SetRemoveContentOnDismissal( false );
  557. $J('#authcode_entry').find('input').focus();
  558. };
  559.  
  560. CLoginPromptManager.prototype.CancelEmailAuthProcess = function()
  561. {
  562. this.m_steamidEmailAuth = '';
  563. if ( this.m_bInEmailAuthProcess )
  564. {
  565. this.m_bInEmailAuthProcess = false;
  566.  
  567. // if the user closed the auth window on the last step, just redirect them like we normally would
  568. if ( this.m_bEmailAuthSuccessful )
  569. this.LoginComplete();
  570. }
  571. };
  572.  
  573. CLoginPromptManager.prototype.TransferLogin = function( rgURLs, parameters )
  574. {
  575. if ( this.m_bLoginTransferInProgress )
  576. return;
  577. this.m_bLoginTransferInProgress = true;
  578.  
  579. var bOnCompleteFired = false;
  580. var _this = this;
  581. var fnOnComplete = function() {
  582. if ( !bOnCompleteFired )
  583. _this.OnTransferComplete();
  584. bOnCompleteFired = true;
  585. };
  586.  
  587. var cResponsesExpected = rgURLs.length;
  588. $J(window).on( 'message', function() {
  589. if ( --cResponsesExpected == 0 )
  590. fnOnComplete();
  591. });
  592.  
  593. for ( var i = 0 ; i < rgURLs.length; i++ )
  594. {
  595. var $IFrame = $J('<iframe>', {id: 'transfer_iframe' } ).hide();
  596. $J(document.body).append( $IFrame );
  597.  
  598. var doc = $IFrame[0].contentWindow.document;
  599. doc.open();
  600. doc.write( '<form method="POST" action="' + rgURLs[i] + '" name="transfer_form">' );
  601. for ( var param in parameters )
  602. {
  603. doc.write( '<input type="hidden" name="' + param + '" value="' + V_EscapeHTML( parameters[param] ) + '">' );
  604. }
  605. doc.write( '</form>' );
  606. doc.write( '<script>window.onload = function(){ document.forms["transfer_form"].submit(); }</script>' );
  607. doc.close();
  608. }
  609.  
  610. // after 10 seconds, give up on waiting for transfer
  611. window.setTimeout( fnOnComplete, 10000 );
  612. };
  613.  
  614. CLoginPromptManager.prototype.OnTransferComplete = function()
  615. {
  616. if ( !this.m_bLoginTransferInProgress )
  617. return;
  618. this.m_bLoginTransferInProgress = false;
  619. if ( !this.m_bInEmailAuthProcess && !this.m_bInTwoFactorAuthProcess )
  620. this.LoginComplete();
  621. else if ( this.m_bEmailAuthSuccessfulWantToLeave || this.m_bTwoFactorAuthSuccessfulWantToLeave)
  622. this.LoginComplete();
  623. };
  624.  
  625. CLoginPromptManager.prototype.OnEmailAuthSuccessContinue = function()
  626. {
  627. $J('#auth_buttonsets').children().hide();
  628. $J('#auth_buttonset_waiting').show();
  629.  
  630. if ( this.m_bLoginTransferInProgress )
  631. {
  632. this.m_bEmailAuthSuccessfulWantToLeave = true;
  633. }
  634. else
  635. this.LoginComplete();
  636. };
  637.  
  638. CLoginPromptManager.prototype.LoginComplete = function()
  639. {
  640. if ( this.m_fnOnSuccess )
  641. {
  642. this.m_fnOnSuccess();
  643. }
  644. else if ( $J('#openidForm').length )
  645. {
  646. $J('#openidForm').submit();
  647. }
  648. else if ( this.m_strRedirectURL != '' )
  649. {
  650. window.location = this.m_strRedirectURL;
  651. }
  652. else if ( this.m_bIsMobile )
  653. {
  654. if ( document.forms['logon'].elements['oauth'] && ( document.forms['logon'].elements['oauth'].value.length > 0 ) )
  655. {
  656. window.location = this.m_sOAuthRedirectURI + '?' + document.forms['logon'].elements['oauth'].value;
  657. }
  658. }
  659. };
  660.  
  661. CLoginPromptManager.prototype.SubmitAuthCode = function()
  662. {
  663. if ( !v_trim( $J('#authcode').val() ).length )
  664. return;
  665.  
  666. $J('#auth_details_computer_name').css('color', '85847f' ); //TODO
  667. $J('#auth_buttonsets').children().hide();
  668. $J('#auth_buttonset_waiting').show();
  669.  
  670. this.$LogonFormElement( 'loginfriendlyname' ).val( $J('#friendlyname').val() );
  671. this.$LogonFormElement( 'emailauth' ).val( $J('#authcode').val() );
  672.  
  673. this.DoLogin();
  674. };
  675.  
  676. CLoginPromptManager.prototype.SetEmailAuthModalState = function( step )
  677. {
  678. if ( step == 'submit' )
  679. {
  680. this.SubmitAuthCode();
  681. return;
  682. }
  683. else if ( step == 'complete' )
  684. {
  685. this.OnEmailAuthSuccessContinue();
  686. return;
  687. }
  688.  
  689. $J('#auth_messages').children().hide();
  690. $J('#auth_message_' + step ).show();
  691.  
  692. $J('#auth_details_messages').children().hide();
  693. $J('#auth_details_' + step ).show();
  694.  
  695. $J('#auth_buttonsets').children().hide();
  696. $J('#auth_buttonset_' + step ).show();
  697.  
  698. $J('#authcode_help_supportlink').hide();
  699.  
  700. var icon='key';
  701. var bShowAuthcodeEntry = true;
  702. if ( step == 'entercode' )
  703. {
  704. icon = 'mail';
  705. }
  706. else if ( step == 'checkspam' )
  707. {
  708. icon = 'trash';
  709. }
  710. else if ( step == 'success' )
  711. {
  712. icon = 'unlock';
  713. bShowAuthcodeEntry = false;
  714. $J('#success_continue_btn').focus();
  715. this.m_EmailAuthModal.SetDismissOnBackgroundClick( true );
  716. this.m_EmailAuthModal.always( $J.proxy( this.LoginComplete, this ) );
  717. }
  718. else if ( step == 'incorrectcode' )
  719. {
  720. icon = 'lock';
  721. }
  722. else if ( step == 'help' )
  723. {
  724. icon = 'steam';
  725. bShowAuthcodeEntry = false;
  726. $J('#authcode_help_supportlink').show();
  727. }
  728.  
  729. if ( bShowAuthcodeEntry )
  730. {
  731. var $AuthcodeEntry = $J('#authcode_entry');
  732. if ( !$AuthcodeEntry.is(':visible') )
  733. {
  734. $AuthcodeEntry.show().find('input').focus();
  735. }
  736. $J('#auth_details_computer_name').show();
  737. }
  738. else
  739. {
  740. $J('#authcode_entry').hide();
  741. $J('#auth_details_computer_name').hide();
  742. }
  743.  
  744. $J('#auth_icon').attr('class', 'auth_icon auth_icon_' + icon );
  745. };
  746.  
  747. CLoginPromptManager.prototype.StartTwoFactorAuthProcess = function()
  748. {
  749. this.m_bInTwoFactorAuthProcess = true;
  750. this.SetTwoFactorAuthModalState( 'entercode' );
  751.  
  752. var _this = this;
  753. this.m_TwoFactorModal = ShowDialog( 'Мобильная аутентификация Steam Guard', this.m_$ModalTwoFactor.show() )
  754. .fail( function() { _this.CancelTwoFactorAuthProcess(); } )
  755. .always( function() {
  756. $J(document.body).append( _this.m_$ModalTwoFactor.hide() );
  757. _this.m_bInTwoFactorAuthProcess = false;
  758. _this.m_TwoFactorModal = null;
  759. } );
  760.  
  761. this.m_TwoFactorModal.SetDismissOnBackgroundClick( false );
  762. this.m_TwoFactorModal.SetRemoveContentOnDismissal( false );
  763.  
  764. $J('#twofactorcode_entry').focus();
  765. };
  766.  
  767.  
  768. CLoginPromptManager.prototype.CancelTwoFactorAuthProcess = function()
  769. {
  770. this.m_bInTwoFactorAuthProcess = false;
  771.  
  772. if ( this.m_bTwoFactorAuthSuccessful )
  773. this.LoginComplete();
  774. else
  775. this.ClearLoginForm();
  776. };
  777.  
  778.  
  779. CLoginPromptManager.prototype.OnTwoFactorResetOptionsResponse = function( results )
  780. {
  781. if ( results.success && results.options.sms.allowed )
  782. {
  783. this.m_sPhoneNumberLastDigits = results.options.sms.last_digits;
  784. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove' ); // Or reset if this.m_bTwoFactorReset
  785. }
  786. else if ( results.success )
  787. {
  788. this.SetTwoFactorAuthModalState( 'selfhelp_nosms' );
  789. }
  790. else
  791. {
  792. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  793. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  794. }
  795. };
  796.  
  797.  
  798. CLoginPromptManager.prototype.OnTwoFactorRecoveryFailure = function()
  799. {
  800. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  801. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( '' ); // v0v
  802. };
  803.  
  804.  
  805. CLoginPromptManager.prototype.OnStartRemoveTwoFactorResponse = function( results )
  806. {
  807. if ( results.success )
  808. {
  809. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_entercode' );
  810. }
  811. else
  812. {
  813. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  814. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  815. }
  816. };
  817.  
  818.  
  819. CLoginPromptManager.prototype.OnRemoveTwoFactorResponse = function( results )
  820. {
  821. if ( results.success )
  822. {
  823. if ( this.m_bTwoFactorReset )
  824. {
  825. this.RunLocalURL( "steammobile://steamguard?op=setsecret&arg1=" + results.replacement_token );
  826. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_replaced' );
  827. }
  828. else
  829. {
  830. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_removed' );
  831. }
  832. }
  833. else if ( results.retry )
  834. {
  835. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_incorrectcode' );
  836. }
  837. else
  838. {
  839. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  840. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  841. }
  842. };
  843.  
  844.  
  845. CLoginPromptManager.prototype.OnUseTwoFactorRecoveryCodeResponse = function( results )
  846. {
  847. if ( results.success )
  848. {
  849. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_removed' );
  850. }
  851. else if ( results.retry )
  852. {
  853. $J( '#login_twofactorauth_details_selfhelp_rcode_incorrectcode' ).text( results.message );
  854. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode' );
  855. }
  856. else if ( results.exhausted )
  857. {
  858. $J( '#login_twofactorauth_details_selfhelp_rcode_incorrectcode_exhausted' ).text( results.message );
  859. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode_exhausted' );
  860. }
  861. else
  862. {
  863. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  864. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  865. }
  866. };
  867.  
  868.  
  869. CLoginPromptManager.prototype.OnTwoFactorAuthSuccessContinue = function()
  870. {
  871. if ( !this.m_bIsMobile )
  872. {
  873. $J('#login_twofactorauth_buttonsets').children().hide();
  874. $J('#login_twofactorauth_buttonset_waiting').show();
  875. }
  876.  
  877. if ( this.m_bLoginTransferInProgress )
  878. {
  879. this.m_bTwoFactorAuthSuccessfulWantToLeave = true;
  880. }
  881. else
  882. {
  883. this.LoginComplete();
  884. }
  885. };
  886.  
  887. CLoginPromptManager.prototype.SetTwoFactorAuthModalState = function( step )
  888. {
  889. if ( step == 'submit' )
  890. {
  891. $J('#login_twofactor_authcode_entry').hide();
  892. this.SubmitTwoFactorCode();
  893. return;
  894. }
  895. else if ( step == 'success' )
  896. {
  897. this.OnTwoFactorAuthSuccessContinue();
  898. return;
  899. }
  900.  
  901. $J('#login_twofactorauth_messages').children().hide();
  902. $J('#login_twofactorauth_message_' + step ).show();
  903.  
  904. $J('#login_twofactorauth_details_messages').children().hide();
  905. $J('#login_twofactorauth_details_' + step ).show();
  906.  
  907. $J('#login_twofactorauth_buttonsets').children().hide();
  908. $J('#login_twofactorauth_buttonset_' + step ).show();
  909.  
  910. $J('#login_twofactor_authcode_help_supportlink').hide();
  911.  
  912. var icon = 'key';
  913. if ( step == 'entercode' )
  914. {
  915. icon = 'phone';
  916. $J('#login_twofactor_authcode_entry').show();
  917. $J('#twofactorcode_entry').val('');
  918. $J('#login_twofactorauth_message_entercode_accountname').text( this.m_strUsernameEntered );
  919. $J('#twofactorcode_entry').focus();
  920. }
  921. else if ( step == 'incorrectcode' )
  922. {
  923. icon = 'lock';
  924. $J('#login_twofactor_authcode_entry').show();
  925. $J('#twofactorcode_entry').val('');
  926. $J('#twofactorcode_entry').focus();
  927. }
  928. else if ( step == 'selfhelp' )
  929. {
  930. icon = 'steam';
  931. $J('#login_twofactor_authcode_entry').hide();
  932.  
  933. if ( !this.m_bIsMobileSteamClient
  934. || this.BIsAndroid() && !this.BIsUserInMobileClientVersionOrNewer( 2, 0, 32 )
  935. || this.BIsIos() && !this.BIsUserInMobileClientVersionOrNewer( 2, 0, 0 )
  936. // no version minimum for Windows phones
  937. )
  938. {
  939. $J( '#login_twofactorauth_buttonset_selfhelp div[data-modalstate=selfhelp_sms_reset_start]' ).hide();
  940. }
  941. }
  942. else if ( step == 'selfhelp_sms_remove_start' || step == 'selfhelp_sms_reset_start' )
  943. {
  944. icon = 'steam';
  945. $J('#login_twofactor_authcode_entry').hide();
  946.  
  947. $J('#login_twofactorauth_messages').children().hide();
  948. $J('#login_twofactorauth_details_messages').children().hide();
  949.  
  950. $J('#login_twofactorauth_buttonsets').children().hide();
  951. $J('#login_twofactorauth_buttonset_waiting').show();
  952.  
  953. this.m_bTwoFactorReset = (step == 'selfhelp_sms_reset_start');
  954.  
  955. $J.post( this.m_strBaseURL + 'getresetoptions/', this.GetParameters( {} ) )
  956. .done( $J.proxy( this.OnTwoFactorResetOptionsResponse, this ) )
  957. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  958. }
  959. else if ( step == 'selfhelp_sms_remove' )
  960. {
  961. icon = 'steam';
  962. $J('#login_twofactorauth_selfhelp_sms_remove_last_digits').text( this.m_sPhoneNumberLastDigits );
  963. }
  964. else if ( step == 'selfhelp_sms_remove_sendcode' )
  965. {
  966. icon = 'steam';
  967. $J('#login_twofactor_authcode_entry').hide();
  968.  
  969. $J('#login_twofactorauth_messages').children().hide();
  970. $J('#login_twofactorauth_details_messages').children().hide();
  971.  
  972. $J('#login_twofactorauth_buttonsets').children().hide();
  973. $J('#login_twofactorauth_buttonset_waiting').show();
  974.  
  975. $J.post( this.m_strBaseURL + 'startremovetwofactor/', this.GetParameters( {} ) )
  976. .done( $J.proxy( this.OnStartRemoveTwoFactorResponse, this ) )
  977. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  978. }
  979. else if ( step == 'selfhelp_sms_remove_entercode' )
  980. {
  981. $J('#login_twofactorauth_selfhelp_sms_remove_entercode_last_digits').text( this.m_sPhoneNumberLastDigits );
  982.  
  983. $J('#login_twofactor_authcode_entry').show();
  984. $J('#twofactorcode_entry').val('');
  985. $J('#twofactorcode_entry').focus();
  986. }
  987. else if ( step == 'selfhelp_sms_remove_checkcode' )
  988. {
  989. $J('#login_twofactor_authcode_entry').hide();
  990.  
  991. $J('#login_twofactorauth_messages').children().hide();
  992. $J('#login_twofactorauth_details_messages').children().hide();
  993.  
  994. $J('#login_twofactorauth_buttonsets').children().hide();
  995. $J('#login_twofactorauth_buttonset_waiting').show();
  996.  
  997. // Immediately skip to incorrect code step without actually checking it if the user forgot to enter a code.
  998. if ( $J('#twofactorcode_entry').val().length == 0 )
  999. {
  1000. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_incorrectcode' );
  1001. }
  1002. else
  1003. {
  1004. var rgParameters = {
  1005. smscode: $J( '#twofactorcode_entry' ).val(),
  1006. reset: this.m_bTwoFactorReset ? 1 : 0
  1007. };
  1008.  
  1009. $J.post( this.m_strBaseURL + 'removetwofactor/', this.GetParameters( rgParameters ) )
  1010. .done( $J.proxy( this.OnRemoveTwoFactorResponse, this ) )
  1011. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1012. }
  1013. }
  1014. else if ( step == 'selfhelp_sms_remove_incorrectcode' )
  1015. {
  1016. icon = 'lock';
  1017. $J('#login_twofactor_authcode_entry').show();
  1018. $J('#twofactorcode_entry').focus();
  1019. }
  1020. else if ( step == 'selfhelp_twofactor_removed' )
  1021. {
  1022. icon = 'unlock';
  1023. $J('#twofactorcode_entry').val(''); // Make sure the next login doesn't supply a code
  1024. }
  1025. else if ( step == 'selfhelp_twofactor_replaced' )
  1026. {
  1027. icon = 'steam';
  1028. $J('#twofactorcode_entry').val('');
  1029. }
  1030. else if ( step == 'selfhelp_sms_remove_complete' )
  1031. {
  1032. this.m_TwoFactorModal.Dismiss();
  1033. this.m_bInTwoFactorAuthProcess = false;
  1034. this.DoLogin();
  1035. }
  1036. else if ( step == 'selfhelp_nosms' )
  1037. {
  1038. icon = 'steam';
  1039. $J('#login_twofactor_authcode_entry').hide();
  1040. }
  1041. else if ( step == 'selfhelp_rcode' )
  1042. {
  1043. $J('#login_twofactor_authcode_entry').show();
  1044. $J('#twofactorcode_entry').val('');
  1045. $J('#twofactorcode_entry').focus();
  1046. }
  1047. else if ( step == 'selfhelp_rcode_checkcode' )
  1048. {
  1049. $J('#login_twofactor_authcode_entry').hide();
  1050.  
  1051. $J('#login_twofactorauth_messages').children().hide();
  1052. $J('#login_twofactorauth_details_messages').children().hide();
  1053.  
  1054. $J('#login_twofactorauth_buttonsets').children().hide();
  1055. $J('#login_twofactorauth_buttonset_waiting').show();
  1056.  
  1057. // Immediately skip to incorrect code step without actually checking it if the user forgot to enter a code.
  1058. if ( $J('#twofactorcode_entry').val().length == 0 )
  1059. {
  1060. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode' );
  1061. }
  1062. else
  1063. {
  1064. var rgParameters = { rcode: $J( '#twofactorcode_entry' ).val() };
  1065.  
  1066. $J.post( this.m_strBaseURL + 'userecoverycode/', this.GetParameters( rgParameters ) )
  1067. .done( $J.proxy( this.OnUseTwoFactorRecoveryCodeResponse, this ) )
  1068. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1069. }
  1070. }
  1071. else if ( step == 'selfhelp_rcode_incorrectcode' )
  1072. {
  1073. icon = 'lock';
  1074. $J('#login_twofactor_authcode_entry').show();
  1075. $J('#twofactorcode_entry').focus();
  1076. }
  1077. else if ( step == 'selfhelp_couldnthelp' )
  1078. {
  1079. icon = 'steam';
  1080. $J('#login_twofactor_authcode_entry').hide();
  1081. }
  1082. else if ( step == 'help' )
  1083. {
  1084. icon = 'steam';
  1085. $J('#login_twofactor_authcode_entry').hide();
  1086. $J('#login_twofactor_authcode_help_supportlink').show();
  1087. }
  1088. else if ( step == 'selfhelp_failure' )
  1089. {
  1090. icon = 'steam';
  1091. }
  1092.  
  1093. if ( this.m_bInTwoFactorAuthProcess && this.m_TwoFactorModal )
  1094. {
  1095. this.m_TwoFactorModal.AdjustSizing();
  1096. }
  1097.  
  1098. $J('#login_twofactorauth_icon').attr( 'class', 'auth_icon auth_icon_' + icon );
  1099. };
  1100.  
  1101. CLoginPromptManager.prototype.SubmitTwoFactorCode = function()
  1102. {
  1103. this.m_sAuthCode = $J('#twofactorcode_entry').val();
  1104.  
  1105.  
  1106. $J('#login_twofactorauth_messages').children().hide();
  1107. $J('#login_twofactorauth_details_messages').children().hide();
  1108.  
  1109. $J('#login_twofactorauth_buttonsets').children().hide();
  1110. $J('#login_twofactorauth_buttonset_waiting').show();
  1111.  
  1112. this.DoLogin();
  1113. };
  1114.  
  1115. CLoginPromptManager.sm_$Modals = null; // static
  1116. CLoginPromptManager.prototype.InitModalContent = function()
  1117. {
  1118.  
  1119. var $modals = $J('#loginModals');
  1120. if ( $modals.length == 0 )
  1121. {
  1122. // This does not work on Android 2.3, nor does creating the DOM node and
  1123. // setting innerHTML without jQuery. So on the mobile login page, we put
  1124. // the modals into the page directly, but not all pages have that.
  1125. CLoginPromptManager.sm_$Modals = $J( "<div id=\"loginModals\">\r\n\t<div class=\"login_modal loginAuthCodeModal\" style=\"display: none\">\r\n\t\t<form data-ajax=\"false\">\r\n\t\t\t<div class=\"auth_message_area\">\r\n\t\t\t\t<div id=\"auth_icon\" class=\"auth_icon auth_icon_key\">\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_messages\" id=\"auth_messages\">\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435!<\/div>\r\n\t\t\t\t\t\t<p>\u0412\u0438\u0434\u0438\u043c\u043e, \u0432\u044b \u0432\u043e\u0448\u043b\u0438 \u0432 Steam \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u043b\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0418\u043b\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043b\u0438...<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_checkspam\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043e\u043d\u043e \u043f\u043e\u043f\u0430\u043b\u043e \u0432 \u0441\u043f\u0430\u043c?<\/div>\r\n\t\t\t\t\t\t<p>\u0412\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u043f\u0430\u043f\u043a\u0443 \u0441\u043e \u0441\u043f\u0430\u043c\u043e\u043c? \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0430\u043c, \u0435\u0441\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_success\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u0413\u043e\u0442\u043e\u0432\u043e!<\/div>\r\n\t\t\t\t\t\t<p>\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 Steam.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043e\u043d \u043d\u0435\u0432\u0435\u0440\u0435\u043d...<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_help\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t\t<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Steam \u0432\u0430\u0436\u0435\u043d \u0434\u043b\u044f \u0432\u0430\u0441, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0442 \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043b\u0438\u0446.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div id=\"auth_details_messages\" class=\"auth_details_messages\">\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u044d\u0442\u043e\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443, \u0432\u0432\u0435\u0434\u044f \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043d\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b <span id=\"emailauth_entercode_emaildomain\"><\/span>.\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_success\" style=\"display: none;\">\r\n\t\t\t\t\t\u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u0448 \u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u043f\u0435\u0440\u0435\u0434 \u0443\u0445\u043e\u0434\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0448\u043b\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 Steam.\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_help\" style=\"display: none;\">\r\n\t\t\t\t\t\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u2014 \u043d\u0430\u0448\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"authcode_entry_area\">\r\n\t\t\t\t<div id=\"authcode_entry\">\r\n\t\t\t\t\t<div class=\"authcode_entry_box\">\r\n\t\t\t\t\t\t<input class=\"authcode_entry_input authcode_placeholder\" id=\"authcode\" type=\"text\" value=\"\"\r\n\t\t\t\t\t\t\t placeholder=\"\u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c\">\r\n\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div id=\"authcode_help_supportlink\">\r\n\t\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=4020-ALZM-5519\" data-ajax=\"false\" data-externallink=\"1\">\u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443<\/a>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"modal_buttons\" id=\"auth_buttonsets\">\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u043c\u043e\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"checkspam\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041a\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435?<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam...<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_checkspam\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041d\u0430\u0448\u0435\u043b!<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u0432\u0432\u0435\u043b \u043c\u043e\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u044b\u0448\u0435<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"help\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b...<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam...<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_success\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_button auth_button_spacer\">\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<a data-modalstate=\"complete\" class=\"auth_button\" id=\"success_continue_btn\" href=\"javascript:void(0);\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a Steam!<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">&nbsp;<br>&nbsp;<\/div>\r\n\t\t\t\t\t<\/a>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u044b\u0448\u0435<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"help\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam...<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_waiting\" style=\"display: none;\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div style=\"\" id=\"auth_details_computer_name\" class=\"auth_details_messages\">\r\n\t\t\t\t\u0427\u0442\u043e\u0431\u044b \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0443\u0437\u043d\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u0440\u0435\u0434\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 Steam Guard, \u0434\u0430\u0439\u0442\u0435 \u0435\u043c\u0443 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0438\u043c\u044f \u0434\u043b\u0438\u043d\u043e\u0439 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0448\u0435\u0441\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.\t\t\t\t<div id=\"friendly_name_box\" class=\"friendly_name_box\">\r\n\t\t\t\t\t<input class=\"authcode_entry_input authcode_placeholder\" id=\"friendlyname\" type=\"text\"\r\n\t\t\t\t\t\t placeholder=\"\u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div style=\"display: none;\">\r\n\t\t\t\t<input type=\"submit\">\r\n\t\t\t<\/div>\r\n\t\t<\/form>\r\n\t<\/div>\r\n\r\n\t<div class=\"login_modal loginIPTModal\" style=\"display: none\">\r\n\t\t<div class=\"auth_message_area\">\r\n\t\t\t<div class=\"auth_icon ipt_icon\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_messages\">\r\n\t\t\t\t<div class=\"auth_message\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435<\/div>\r\n\t\t\t\t\t<p>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"auth_details_messages\">\r\n\t\t\t<div class=\"auth_details\">\r\n\t\t\t\t\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u2014 \u043d\u0430\u0448\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"authcode_entry_area\">\r\n\t\t<\/div>\r\n\t\t<div class=\"modal_buttons\">\r\n\t\t\t<div class=\"auth_buttonset\" >\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=9400-IPAX-9398&auth=e39b5c227cffc8ae65414aba013e5fef\" class=\"auth_button leftbtn\" data-ajax=\"false\" data-externallink=\"1\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0437\u0430\u0449\u0438\u0442\u044b \u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438 Intel\u00ae<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\" class=\"auth_button\" data-ajax=\"false\" data-externallink=\"1\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam\u2026<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n\r\n\t<div class=\"login_modal loginTwoFactorCodeModal\" style=\"display: none\">\r\n\t\t<form>\r\n\t\t<div class=\"twofactorauth_message_area\">\r\n\t\t\t<div id=\"login_twofactorauth_icon\" class=\"auth_icon auth_icon_key\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_messages\" id=\"login_twofactorauth_messages\">\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, <span id=\"login_twofactorauth_message_entercode_accountname\"><\/span>!<\/div>\r\n\t\t\t\t\t<p>\u042d\u0442\u043e\u0442 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 Steam.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u0441\u043e\u0436\u0430\u043b\u0435\u0435\u043c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Steam \u0432\u0430\u0436\u0435\u043d \u0434\u043b\u044f \u0432\u0430\u0441, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0442 \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043b\u0438\u0446.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u0421\u041c\u0421 \u0441 \u043a\u043e\u0434\u043e\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043d\u0430 \u043d\u043e\u043c\u0435\u0440, \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 <span id=\"login_twofactorauth_selfhelp_sms_remove_last_digits\"><\/span>. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0432\u044b \u0432\u0432\u0435\u0434\u0435\u0442\u0435 \u043a\u043e\u0434, \u043c\u044b \u0443\u0434\u0430\u043b\u0438\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0438 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b Steam Guard \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0421\u041c\u0421 \u0441 \u043a\u043e\u0434\u043e\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0448 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <span id=\"login_twofactorauth_selfhelp_sms_remove_entercode_last_digits\"><\/span>. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_twofactor_removed\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0413\u043e\u0442\u043e\u0432\u043e!<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. \u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0445\u043e\u0434\u0435 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434 Steam Guard, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0432\u0430\u0448\u0443 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_twofactor_replaced\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0413\u043e\u0442\u043e\u0432\u043e!<\/div>\r\n\t\t\t\t\t<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0442\u0435\u043b\u0435\u0444\u043e\u043d.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_nosms\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f?<\/div>\r\n\t\t\t\t\t<p>\u041a \u0432\u0430\u0448\u0435\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 Steam \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0421\u041c\u0421 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041c\u043e\u0436\u0435\u0442, \u0443 \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430? \u041e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b R.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/div>\r\n\t\t\t\t\t<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0438\u0436\u0435. \u041e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b R.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_message\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_couldnthelp\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0438\u043b\u0438 \u043d\u043e\u043c\u0435\u0440\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u043a\u043e\u0434\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_help\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u0441\u043e\u0436\u0430\u043b\u0435\u0435\u043c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Steam \u0432\u0430\u0436\u0435\u043d \u0434\u043b\u044f \u0432\u0430\u0441, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0442 \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043b\u0438\u0446.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_failure\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<p>\u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"login_twofactorauth_details_messages\" class=\"twofactorauth_details_messages\">\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_entercode\" style=\"display: none;\">\r\n\t\t\t\t\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0438\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Steam:\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Steam \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u043a\u043e\u0434\u044b, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. \u042d\u0442\u043e \u0441\u043d\u0438\u0437\u0438\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435.\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_help\" style=\"display: none;\">\r\n\t\t\t\t\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam.\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_failure\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"twofactorauthcode_entry_area\">\r\n\t\t\t<div id=\"login_twofactor_authcode_entry\">\r\n\t\t\t\t<div class=\"twofactorauthcode_entry_box\">\r\n\t\t\t\t\t<input class=\"twofactorauthcode_entry_input authcode_placeholder\" id=\"twofactorcode_entry\" type=\"text\"\r\n\t\t\t\t\t\t placeholder=\"\u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c\" autocomplete=\"off\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div id=\"login_twofactor_authcode_help_supportlink\">\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=4020-ALZM-5519\">\r\n\t\t\t\t\t\u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443\t\t\t\t<\/a>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"modal_buttons\" id=\"login_twofactorauth_buttonsets\">\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_entercode\" style=\"display: none;\">\r\n\t\t\t\t<div type=\"submit\" class=\"auth_button leftbtn\" data-modalstate=\"submit\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u0434\u0430\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"submit\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0432\u0432\u0435\u0434\u0435\u043d \u0432\u0435\u0440\u043d\u043e<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_start\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\" style=\"font-size: 16px;\">\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_sms_reset_start\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_sendcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0425\u043e\u0440\u043e\u0448\u043e!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043c\u043d\u0435 \u0421\u041c\u0421<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041d\u0435 \u043d\u0430\u0434\u043e,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u0442\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove_entercode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u0432\u0432\u0435\u043b \u043a\u043e\u0434 \u0432\u044b\u0448\u0435<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437.<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_twofactor_removed\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_complete\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0412\u043e\u0439\u0442\u0438<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_twofactor_replaced\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_complete\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0412\u043e\u0439\u0442\u0438<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Steam<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_nosms\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0414\u0430,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 R<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041d\u0435\u0442,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437.<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_couldnthelp\" style=\"display: none;\">\r\n\t\t\t\t<a class=\"auth_button leftbtn\" href=\"https:\/\/help.steampowered.com\/\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u043c\u0438<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0434\u043b\u044f \u043f\u043e\u043c\u043e\u0449\u0438 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_waiting\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div style=\"display: none;\">\r\n\t\t\t<input type=\"submit\">\r\n\t\t<\/div>\r\n\t\t<\/form>\r\n\t<\/div>\r\n<\/div>\r\n" );
  1126. $J('body').append( CLoginPromptManager.sm_$Modals );
  1127. }
  1128. else
  1129. {
  1130. CLoginPromptManager.sm_$Modals = $modals;
  1131. }
  1132. };
  1133.  
  1134. CLoginPromptManager.prototype.GetModalContent = function( strModalType )
  1135. {
  1136. var $ModalContent = CLoginPromptManager.sm_$Modals.find( '.login_modal.' + strModalType );
  1137.  
  1138. if ( this.m_bIsMobileSteamClient )
  1139. {
  1140. $ModalContent.find('a[data-externallink]' ).each( function() {
  1141. $J(this).attr( 'href', 'steammobile://openexternalurl?url=' + $J(this).attr('href') );
  1142. });
  1143. }
  1144.  
  1145. return $ModalContent;
  1146. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement