Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅Π»ΠΈΠ·Π° (2.3.0) ShinyProxy Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ DT Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΡΠ°ΡΠ·Π΅Ρ ΠΆΠ°Π»ΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ Ajax, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π³ΠΎΠ²ΠΎΡΠΈΡ: Β«jquery.min.js:4 POST http://myip/app_direct/retire/session/cbc7bf01da3a023b6db378384c240836/dataobj/shiny_table?w=&nonce=22377961e7fd2317 503 (ΡΠ»ΡΠΆΠ±Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°)Β»
ΠΎΠΊΠ½ΠΎ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅Π²:
myip ι‘― η€Ί
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ DataTables: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°Π±Π»ΠΈΡΡ = DataTables_Table_0 β ΠΎΡΠΈΠ±ΠΊΠ° Ajax. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠΌ. Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ http://datatables.net/tn/7 .
ΠΊΠ°ΠΊ https://github.com/openanalytics/shinyproxy/issues/140
ΠΌΠΎΡ ΡΡΠ΅Π΄Π°:
ΠΠ‘: Ubuntu 18.04.3 LTS
Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: keycloak 7.0.0
ΠΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ: Nginx
ΠΡΠΈΠΌΠ΅Ρ Π±Π»Π΅ΡΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° (Π±Π»Π΅ΡΡΡΡΠ°Ρ)
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° (DT)
ui <-fluidPage(DT::dataTableOutput('tbl'))
ΡΠ΅ΡΠ²Π΅Ρ <- ΡΡΠ½ΠΊΡΠΈΡ (Π²Π²ΠΎΠ΄, Π²ΡΠ²ΠΎΠ΄, ΡΠ΅Π°Π½Ρ) {
output$tbl <- DT::renderDataTable(data.frame(Col_1=c(1:10), Col_2=c(11:20)))
}
Π±Π»Π΅ΡΡΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ΅ΡΠ²Π΅Ρ)
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΌΠ°ΡΠΈΠ½Π° (Π½Π°ΡΡΡΠΎΠΉΠΊΠ° docker,shinyproxy,nginx) Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ldap Π² application.yml ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
shininproxy.log ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
2019-08-28 11:46:21.991 ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠ― 14337 --- [XNIO-2 Π·Π°Π΄Π°ΡΠ°-3] eocontainerproxy.service.UserService: ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΡ [ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ: test1]
2019-08-28 11:46:25.142 ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠ― 14337 --- [XNIO-2 Π·Π°Π΄Π°ΡΠ°-6] csdocker.client.DefaultDockerClient : Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ: f24f391a707d19228f5e97da1e7f8e271230760e91bee2898f454b0bddd0f15ad
2019-08-28 11:46:28.068 ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠ― 14337 --- [XNIO-2 Π·Π°Π΄Π°ΡΠ°-6] eocontainerproxy.service.ProxyService : ΠΏΡΠΎΠΊΡΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ [ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ: test1] [ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: ΡΠΉΡΠΈ Π² ΠΎΡΡΡΠ°Π²ΠΊΡ] [id: 4199b4a8-60dd-43e7- ad8e-0bfac025cc76]
2019-08-28 11:46:28.828 ΠΠ¨ΠΠΠΠ 14337 --- [XNIO-2 I/O-3] io.undertow.proxy: UT005028: Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ ΠΊ /proxy_endpoint/4199b4a8-60dd-43e7-ad8e-0bfac025cc76/session ΠΡΠΈΠ±ΠΊΠ° /4fba467e8b4976c85ad4be80ee538d7d/dataobj/shiny_table
io.undertow.server.TruncatedResponseException: null
Π½Π° io.undertow.client.http.HttpRequestConduit.truncateWrites(HttpRequestConduit.java:711) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.terminateWrites(AbstractFixedLengthStreamSinkConduit.java:256) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π² org.xnio.conduits.ConduitStreamSinkChannel.shutdownWrites(ConduitStreamSinkChannel.java:178) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
at io.undertow.channels.DetachableStreamSinkChannel.shutdownWrites(DetachableStreamSinkChannel.java:79) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:754) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π½Π° io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π² io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:410) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π½Π° io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:343) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π² io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π½Π° io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:815) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:338) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π½Π° io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:525) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π² io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:301) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π² eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) [containerproxy-0.8.3.jar!/:0.8.3]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
Π² org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:582) [xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]
Π² org.xnio.nio.WorkerThread.run(WorkerThread.java:466) [xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΡΠ΅Ρ! ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ # 140
ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΆΠ΄ΠΈΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ
ΠΡΡΡ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅?
Π― Π±ΡΠ» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡ Π³ΠΎΡΠΎΠ²ΠΈΠΌΡΡ ΠΊ Π²ΡΠΏΡΡΠΊΡ.
@tverbeke ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ PR? ΠΠ°ΠΌ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ, ΠΌΡ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π°ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠ΅ΡΠΈΡΡ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡ ΠΈΠ»ΠΈ Π²Π΅ΡΠΊΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. @ΡΠ²Π΅ΡΠ±Π΅ΠΊΠ΅
@tverbeke ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅? ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ: https://github.com/openanalytics/containerproxy/commit/c99298934470b2ecee35c9eb9ad67e49fc7acd46 .
https://github.com/openanalytics/shinyproxy/issues/184 ΠΠ΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Keyclock, Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ none.
ΠΡΡΡ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠ²ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΠΌ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΡΠΏΡΡΠΊΠ°Ρ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π·Π°ΠΊΡΡΡ ΠΊΠ°ΠΊ Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ...
https://github.com/openanalytics/shinyproxy/issues/184 ΠΠ΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Keyclock, Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ none.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, β 184 ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠΌΠΎΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ _ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅_ (ΠΈ β 140), Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ keycloak.
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠΎΡ ΠΈΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡ POST, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. Π£ Π½ΠΈΡ
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡ
ΠΎΠΆΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π‘ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ #184 βΊοΈ
ΠΡΠΈΠ²Π΅Ρ, Ρ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ. Π― ΠΏΠΎΠ½ΠΈΠ·ΠΈΠ» Π²Π΅ΡΡΠΈΡ Ρ 2.4.1 Π΄ΠΎ 2.3.1, ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΡΡΠ΅Π·Π»Π°.
@KZARCA ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ @LEDfan Π±ΡΠ΄Π΅Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΡΠΏΡΡΠΊΠ΅.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― Π±ΡΠ» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡ Π³ΠΎΡΠΎΠ²ΠΈΠΌΡΡ ΠΊ Π²ΡΠΏΡΡΠΊΡ.