рд░реАрдбрдореА рдиреЗ рдХрд╣рд╛ рдХрд┐ рдХрд╕реНрдЯрдо рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдиреЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред
рдореЗрд░реА рд╕рдордЭ рд╕реЗ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬрдм рдлрд╛рдпрд░рдмреЗрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореБрдЭреЗ рддрддреНрдХрд╛рд▓ рд╕рддреНрдпрд╛рдкрди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдХрд╕реНрдЯрдо рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реЗ рдХрд╕реНрдЯрдо рдЯреЛрдХрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ рд╕рд╛рдЗрди рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдХреНрдпрд╛ рд░реАрдбрдореА рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рд╡рд┐рдзрд┐ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╕рдорд╛рдзрд╛рди рдпрд╛ рд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИ?
рдореИрдВ рдЙрд╕реА рджреБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдлрд╛рдпрд░рдмреЗрд╕ рдбреЙрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реНрдерд╛рдпреА рд╕реБрдзрд╛рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдлрд╛рдпрд░рдмреЗрд╕ рдбреЙрдХреНрд╕ рд╕реЗ рд▓рд┐рдВрдХ: - рдлреЛрди рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВ
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП: -
onVerificationCompleted(PhoneAuthCredential)
рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рджреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рддрддреНрдХрд╛рд▓ рд╕рддреНрдпрд╛рдкрди: рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рднреЗрдЬрдиреЗ рдпрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдлрд╝реЛрди рдирдВрдмрд░ рдХреЛ рддреБрд░рдВрдд рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рд╕реНрд╡рддрдГ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐: рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░, Google Play рд╕реЗрд╡рд╛рдПрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреА рд╣реИрдВ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд┐рдирд╛ рдПрд╕рдПрдордПрд╕ рдХрд░реЗрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд░реЗрдВред (рдпрд╣ рдХреНрд╖рдорддрд╛ рдХреБрдЫ рд╡рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИред)
рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, _рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдлрд╝реЛрди рдирдВрдмрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЙрд╕ PhoneAuthCredential рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдореЗрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред_
onCodeSent (рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рддреНрдпрд╛рдкрди рдЖрдИрдбреА, PhoneAuthProvider.ForceResendingToken)
рд╡реИрдХрд▓реНрдкрд┐рдХред рджрд┐рдП рдЧрдП рдлреЛрди рдирдВрдмрд░ рдкрд░ рдПрд╕рдПрдордПрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрдм рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдРрдкреНрд╕ рдПрдХ UI рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рд╕реЗ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред (рдЙрд╕реА рд╕рдордп, рд╕реНрд╡рдд: рд╕рддреНрдпрд╛рдкрди рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред) _ рдлрд┐рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ PhoneAuthCredential рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдЖрдк рдмрджрд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ _
рдпрджрд┐ рдЖрдк рдЗрдЯреИрд▓рд┐рдХрд╛рдЗрдЬрд╝реНрдб рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PhoneAuthCredential
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
onCodeSent()
рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕реНрд╡рдпрдВ PhoneAuthCredential
рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрди рдЗрди рдХрд░рддреЗ рд╣реИрдВ:
signInWithOTP(verificationId: string, otpCode: string): Promise<firebase.User> {
return firebase.auth().signInWithCredential(
firebase.auth.PhoneAuthProvider.credential(verificationId, otpCode)
);
}
рд▓реЗрдХрд┐рди onVerificationCompleted()
рдорд╛рдорд▓реЗ рдореЗрдВ, PhoneAuthCredential
рдХреЙрд▓рдмреИрдХ рдХреЛ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...
рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд╣рд╛рдВ PhoneAuthCredential
рдХреЛ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: -
https://github.com/arnesson/cordova-plugin-firebase/blob/c53bd4aa04e83e37009ecfb1fd4342ac2cc78618/src/android/FirebasePlugin.java#L937 -L962
рддреЛ, рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░ рд╕рдХреЗ PhoneAuthCredentia
рдкреНрд▓рдЧрдЗрди рдмрд╛рд╣рд░ рдПрд▓, рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ pluginResult
рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рдХреЛ рд▓рд╛рдЧреВ signIn()
рдкреНрд▓рдЧрдЗрди рдХреЗ рднреАрддрд░ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ firebase рдбреЙрдХреНрд╕ рд╕реЗ рдЙрджреНрдзреГрдд: -
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВ
PhoneAuthCredential рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЪрд╛рд╣реЗ onVerificationCompleted рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдпрд╛ PhoneAuthProvider.getCredential рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, PhoneAuthCredential рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ FirebaseAuth.signInWithCredential рдкрд░ рдкрд╛рд╕ рдХрд░рдХреЗ рд╕рд╛рдЗрди-рдЗрди рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ:
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { <strong i="24">@Override</strong> public void onComplete(<strong i="25">@NonNull</strong> Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = task.getResult().getUser(); // ... } else { // Sign in failed, display a message and update the UI Log.w(TAG, "signInWithCredential:failure", task.getException()); if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) { // The verification code entered was invalid } } } }); }
рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ returnResults.put("credential", credential);
рдЬреЛрдбрд╝рдХрд░, рд╣рдо PhoneAuthCredential
рдХреЛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ onCodeSent()
рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ: -
https://github.com/arnesson/cordova-plugin-firebase/blob/c53bd4aa04e83e37009ecfb1fd4342ac2cc78618/src/android/FirebasePlugin.java#L948 -L951
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрддреНрдХрд╛рд▓ рд╕рддреНрдпрд╛рдкрди рдХреЛ рднреА рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛ рд╕рдХреЗред
рдореИрдВ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдХреБрдЫ рдХрдЯреМрддреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рддрд░рд╣ рд╕реЗ рд╡рд┐рдЪрд╛рд░-рдордВрдерди, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рдпрд╣рд╛рдВ рд╕реЗ рдЖрдЧреЗ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
@ YaMo97 : рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╣реА рд╣реИ ЁЯСНред рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рд╕рд░реНрд╡рд░ рдХреЛ рдлреЛрди рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИ ред рдХреЛрдИ рднреА рдЗрд╕ рдпреВрдЖрд░рдПрд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдлреЛрди рдирдВрдмрд░ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдРрдк рдкрд░ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ @ placha433 - рдЬрдм рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рд╣реИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред рддреЛ рдпрд╣ рдореЗрд░реЗ рдКрдкрд░ рд╣реИ рдФрд░ рд░реАрдбрдореА рдХреЛ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рдареАрдХ рд╡реИрд╕рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗред
рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓рддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ
рдпрд╣ https://github.com/arnesson/cordova-plugin-firebase/pull/861 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ v2.0.3 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@ YaMo97 : рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╣реА рд╣реИ ЁЯСНред рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рд╕рд░реНрд╡рд░ рдХреЛ рдлреЛрди рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИ ред рдХреЛрдИ рднреА рдЗрд╕ рдпреВрдЖрд░рдПрд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдлреЛрди рдирдВрдмрд░ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдРрдк рдкрд░ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред