рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдПрдХ рдУрдкрдирд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдлрд┐рдбреЛрд╢рд┐рдХ рдЬреАрд╡рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдлрд┐рдбреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИред
рдХрд╣рд╛рдиреА
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА
рд▓рд┐рдЦрд╛ рдерд╛ , 2010 рдореЗрдВ рдореБрдЭреЗ рдиреЛрдб рдирдВрдмрд░ 2: 5020/848 рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдХрд╛рдо рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ "рд░рдЪрдирд╛рддреНрдордХ рднреВрдЦ" рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рддрд╛рдХрдд рдХрд╣рд╛рдБ рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдБред рдФрд░ рдкрд╛рдпрд╛! рдПрдХ рдорд╣реАрдиреЗ рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ, рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рд╢рд┐ рд▓рд┐рдЦреА рдЧрдИ, рдЬрд┐рд╕рдиреЗ рдореЗрд░реА рд╕рд╛рдЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╡рд╕рд░ рджрд┐рдП - рдПрдХ рдордВрдЪ рдпрд╛ рдПрдирдПрдирдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд┐рджреЛ рддрдХ рдкрд╣реБрдВрдЪ, рдИрдореЗрд▓ рдХреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрд▓ рдХрд╛ рдЕрдиреБрд╡рд╛рдж, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдЬрдм рддрдХ рдЗрд╕ рдкреВрд░реЗ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рддрдм рддрдХ рдореИрдВ рд╕рд╛рдЗрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧрднрдЧ рдЦреЛ рдЧрдпрд╛ рдФрд░ рдорд╣реАрдиреЗ рдореЗрдВ рдПрдХ-рджреЛ рдмрд╛рд░ рдореЗрд▓ рджреЗрдЦрд╛ред
2011 рдореЗрдВ, рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рднрд╛рдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдЖ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдиреЛрдб рдирдВрдмрд░ 2: 5020/849 рднреА рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рдкрд╛рдпрд╛ред
рдФрд░ рдЕрднреА рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рдореБрдЭреЗ рдЙрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬреЛ рдореЗрд░реА рд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдХрдЪреНрдЪрд╛ рднреЗрдЬрдирд╛ рдмрджрд╕реВрд░рдд рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдлрд┐рд░, рдЗрд╕ рд╕рднреА рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЪреВрдВрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдореЗрдВ рдпрд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереА? рдЦреИрд░, рдпрд╣ рд╢реБрд░реВ рд╣реБрдЖ ...
рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП
рдЬреЛ рд▓реЛрдЧ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдЖрдкрдХреЛ рд╕рд╛рд░ рдмрддрд╛рдКрдВрдЧрд╛:
рд╡рд░реНрддрдорд╛рди рдореЗрдВ,
jNode рдПрдХ рдПрдХ-рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдореЗрд▓рд░ (рдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рднреЗрдЬрддрд╛ рд╣реИ), рдПрдХ рдЯреЙрд╕рд░ (рдЗрдХреЛ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдПрдХ рдЯреНрд░реИрдХрд░ (рдиреЗрдЯрдореЗрд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ) рдХреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдореЗрдЬрдмрд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ jNode рд╕реЗрдЯ рдХрд░рдХреЗ, рдСрдкрд░реЗрдЯрд░, рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдХреЛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдХреЗрд╡рд▓ рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ :)
рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдПрдВрдб-рдпреВрдЬрд╝рд░ рдлрд╝рд┐рдбреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛рдВрдЯрд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред
рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг
рдиреАрдЪреЗ рдЖрдкрдХреЛ рдХреЛрдб рд╕реЗ рдирдореВрдиреЗ рдорд┐рд▓реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреНрдпреЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдгред
рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдЬреЛ рдПрдлрдЯреАрдПрди рдпрд╛ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд░реАрдмреА рдкрд░рд┐рдЪрд┐рдд рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ ред
рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг: 1.7
рдкреБрд╕реНрддрдХрд╛рд▓рдп: ORMLite 4, рдЪрдпрдирд┐рдд DBMS рдХреЗ рд▓рд┐рдП JBDC- рдЪрд╛рд▓рдХред
рд▓рд╛рдЗрд╕реЗрдВрд╕: рдЕрдкрд╛рдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ 2.0рдХрд╣рд╛рдВ рд╕реЗ рд▓рд╛рдПрдВ : рдЬреАрдареВрдм0. рдПрдлрдЯреАрдПрди рд▓реЗ-рд╢реЙрд░реНрдЯ рдлреАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкрд░ рдмрд╛рд░реА:
public static short revShort(short v) { return (short) ((short) ((short) (v >> 8) & 0xff) | (short) (v << 8)); }
1. рдлреЙрд░реНрдо Z рдХрд╛ рдПрдлрдЯреАрдПрди рдкрддрд╛: рдПрди / рдПрдлрдкреА @ рдбреАред рд╣рдо рдПрдХ рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдПрдХ рдорд╛рдирдХ "fidonet" рдорд╛рдирддреЗ рд╣реИрдВред
public class FtnAddress { private int zone; private int net; private int node; private int point; }
2. рдПрдХ рдкреИрдХреЗрдЬ рд╣реЗрдбрд░ рдФрд░ рдПрди рд╕рдВрджреЗрд╢реЛрдВ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред
public class FtnPkt { private FtnAddress fromAddr; private FtnAddress toAddr; private String password; private List<FtnMessage> messages; private Date date; }
3. рд╕рдВрджреЗрд╢ - рдЗрд╕рдореЗрдВ / рд╕реЗ, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рд╡рд┐рд╖рдп рдФрд░ рд╕рдВрджреЗрд╢ рдкрд╛рда рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
public class FtnMessage { private boolean isNetmail; private Date date; private String fromName; private String toName; private FtnAddress fromAddr; private FtnAddress toAddr; private String area; private String subject; private String text; private List<Ftn2D> seenby; private List<Ftn2D> path; }
4. ORMLite - рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рджрд╛рдУ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдореИрдиреЗрдЬрд░ рд▓рд┐рдЦрд╛ред
public class ORMManager { private static ORMManager self = new ORMManager(); private boolean started = false; private Dao<X, ?> daoX; public static ORMManager getInstanse() { return self; } public void start(Hashtable<String, String> settings) throws SQLException { if (!started) { ConnectionSource source = new JdbcConnectionSource(JDBC_URL, JDBC_USER, JDBC_PASS); daoX = DaoManager.createDao(source, X.class); if (!daoX.isTableExists()) { TableUtils.createTable(source, X.class); } started = true; } } public static Dao<X, ?> x() { return getInstanse().daoX; } }
5. FtnTosser - рдпрд╣рд╛рдВ рдкреИрдХреЗрдЬ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ-> рдЖрдзрд╛рд░ рдФрд░ рдЖрдзрд╛рд░-> рдкреИрдХреЗрдЬ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕реНрдерд┐рд░ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рджреЛ рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ:
public class FtnTosser { public static void tossIncoming(Message[] received) {
6. рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдХреЙрдиреНрдХреНрдЯрд░ - рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред рдЕрдм рддрдХ, рдХреЗрд╡рд▓ рдмрд┐рдВрдХрдк рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ - рдЕрдЧрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдлрд┐рджреЛ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдХреЗрд╡рд▓ рдЗрдирдкреБрдЯрд╕реНрдЯреНрд░реАрдо рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рднреА рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
public interface ProtocolConnector {
7. рдХрдиреЗрдХреНрдЯрд░ - рд╕реАрдзреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрд╣ ProtocolConnector рдФрд░ рдкрддрд╛ (рдпрджрд┐ рд╣рдо рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ) рдпрд╛ рд╕реЙрдХреЗрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдпрджрд┐ рд╣рдо рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИрдВ) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
ProtocolConnector (рдЗрд╕рдХреЗ рдмрд╛рдж рдкреАрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдХреЗ рд▓рд┐рдП init рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ canSend () рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (FtnTosser.getMessagesForLink (рд▓рд┐рдВрдХ рд▓рд┐рдВрдХ)) рдФрд░ PC.send () рдХрд░рддрд╛ рд╣реИ; рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ PC.eob () рдХрд░рддрд╛ рд╣реИред
PC.closed () рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ (FtnTosser.tossIncoming (PC.getReceived ()) рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИ;
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдЖрдк рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреБрдЫ рдЖрдзреБрдирд┐рдХ рдлрд┐рджреЛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдХрд╛рдлреА рдЬреАрд╡рдВрдд рдиреЗрдЯрд╡рд░реНрдХ рд╣реИред
рд╢рд╛рдпрдж рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдорд┐рд▓реЗрдЧрд╛ред
рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдПрдХреНрд╕реЗрд╕
рдореБрдЭрд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред