Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
4,994
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.74 KB | None | 0 0
  1. [jlee@iel-jlee-lt1 security]$ keytool -genkey -keyalg "RSA" -dname "cn=tangotelecom.com, ou=dev, o=tangotelecom, c=IE" -alias tangotelecom -keystore tangotelecom.ks -storepass secret -validity 730
  2. Enter key password for <tangotelecom>
  3. (RETURN if same as keystore password):
  4. [jlee@iel-jlee-lt1 security]$ keytool -list -keystore tangotelecom.ks
  5. Enter keystore password:
  6.  
  7. Keystore type: JKS
  8. Keystore provider: SUN
  9.  
  10. Your keystore contains 1 entry
  11.  
  12. tangotelecom, 06-Jul-2017, PrivateKeyEntry,
  13. Certificate fingerprint (SHA1): 56:0C:5C:7A:DD:97:F1:4D:A2:B6:D1:2B:EC:D0:11:4A:B1:79:F3:CF
  14.  
  15. [jlee@iel-jlee-lt1 security]$ keytool -export -keystore tangotelecom.ks -alias tangotelecom -file tangotelecom.cer
  16. Enter keystore password:
  17. Certificate stored in file <tangotelecom.cer>
  18.  
  19. [tango@iel-dev-tfsr-vm2 16:30:57 john]$ sudo keytool -import -trustcacerts -keystore /opt/java8/jre/lib/security/cacerts -storepass changeit -noprompt -alias tangotelecom -file /home/tango/john/tangotelecom.cer
  20. [sudo] password for tango:
  21. Certificate was added to keystore
  22.  
  23. Allow unsafe renegotiation: false
  24. Allow legacy hello messages: true
  25. Is initial handshake: true
  26. Is secure renegotiation: false
  27.  
  28. %% No cached client session
  29.  
  30. *** ClientHello, TLSv1.2
  31. RandomCookie: GMT: 1500415942 bytes = { 188, 130, 166, 249, 170, 224, 174, 199, 55, 88, 195, 144, 45, 147, 143, 225, 45, 223, 30, 91, 195, 43, 83, 241, 197, 150, 41, 54 }
  32. Session ID: {}
  33. Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
  34. Compression Methods: { 0 }
  35. Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1}
  36. Extension ec_point_formats, formats: [uncompressed]
  37. Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA224withECDSA, SHA224withRSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA
  38. Extension server_name, server_name: [type=host_name (0), value=tangotelecom.com]
  39. ***
  40. Thread-8, WRITE: TLSv1.2 Handshake, length = 260
  41.  
  42. Thread-8, READ: TLSv1.2 Handshake, length = 1257
  43. *** ServerHello, TLSv1.2
  44. RandomCookie: GMT: 1500416088 bytes = { 2, 142, 226, 16, 107, 183, 43, 206, 220, 107, 239, 113, 204, 172, 241, 154, 87, 185, 49, 94, 163, 9, 187, 229, 53, 41, 78, 254 }
  45. Session ID: {89, 111, 136, 88, 183, 123, 76, 181, 211, 21, 149, 160, 218, 222, 226, 244, 139, 145, 143, 72, 3, 7, 184, 96, 34, 155, 76, 54, 60, 117, 215, 179}
  46. Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  47. Compression Method: 0
  48. Extension renegotiation_info, renegotiated_connection: <empty>
  49. ***
  50. %% Initialized: [Session-1, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384]
  51. ** TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  52. *** Certificate chain
  53.  
  54. chain [0] = [
  55. [
  56. Version: V3
  57. Subject: CN=tangotelecom.com, OU=dev, O=tangotelecom, C=IE
  58. Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
  59.  
  60. Key: Sun RSA public key, 2048 bits
  61. modulus: 22980180191390060691645191877521292031505114546367033225089259442617005098274762521554359946742065878415849288262185146512594592923140681158742168163906077539516435863146152603064701157961527256158756559349035940810739650464273192076580461817700601005238106947505955687153311906740088488389957201959449147054853786865353874624664733186248186940444317144962411956375681259742751499094173934719877768378414836567412356975874572170519318320962628133692056724599530776533547533308568698574604059550372476889963449850184432248569481738632894450321061794712987632959422197533269207285625710288277728878653909213375498707927
  62. public exponent: 65537
  63. Validity: [From: Thu Jul 06 15:48:29 IST 2017,
  64. To: Sat Jul 06 15:48:29 IST 2019]
  65. Issuer: CN=tangotelecom.com, OU=dev, O=tangotelecom, C=IE
  66. SerialNumber: [ 6dce9c09]
  67.  
  68. Certificate Extensions: 1
  69. [1]: ObjectId: 2.5.29.14 Criticality=false
  70. SubjectKeyIdentifier [
  71. KeyIdentifier [
  72. 0000: E1 BA 73 DD F2 41 0F CF BD 4B 9B 99 D7 01 BD 2F ..s..A...K...../
  73. 0010: 7D 9A 31 B7 ..1.
  74. ]
  75. ]
  76.  
  77. ]
  78. Algorithm: [SHA256withRSA]
  79. Signature:
  80. 0000: 2C DB 4A FA BD A9 1D 29 C0 0A 8F 69 7F 39 11 DA ,.J....)...i.9..
  81. 0010: 4A 21 0D 66 53 A5 03 CC 33 AB 4D E6 C1 55 75 E3 J!.fS...3.M..Uu.
  82. 0020: 8C 22 C6 F9 05 26 27 EF BC C0 CB D8 12 3C 7C 95 ."...&'......<..
  83. 0030: 9B 56 88 06 71 CA 3A 17 99 6A 23 53 E9 CC 9B 05 .V..q.:..j#S....
  84. 0040: E6 85 89 25 DC CF 95 3A 41 62 5D 0C CE E9 0F D4 ...%...:Ab].....
  85. 0050: 7E 0E B6 4D CE 5A 49 F4 BB DD 9A 85 55 C1 39 0E ...M.ZI.....U.9.
  86. 0060: 0F B4 34 44 05 64 E5 F3 F0 4A 5C 40 91 2C 1E B3 ..4D.d...J@.,..
  87. 0070: 39 D1 56 71 C2 83 48 CA 31 E5 44 60 B4 65 8D BA 9.Vq..H.1.D`.e..
  88. 0080: 70 65 7C 93 B8 84 E4 60 38 EA C7 21 7D AF 30 BD pe.....`8..!..0.
  89. 0090: 6F D5 CC 04 DA 33 E8 14 DA E8 AC BA 6A 03 5E C9 o....3......j.^.
  90. 00A0: 56 DC 78 07 FB 44 DB A8 B2 4D CE 30 CB 56 7E 6B V.x..D...M.0.V.k
  91. 00B0: F6 CE BF 3D B4 77 21 33 53 BA D8 E2 B1 B9 F4 95 ...=.w!3S.......
  92. 00C0: 05 7E FB B4 3A CF 09 29 10 B1 4E CF 38 AF 81 D6 ....:..)..N.8...
  93. 00D0: 6B DD 60 51 1C 04 27 41 71 98 07 DE B9 82 4A 1A k.`Q..'Aq.....J.
  94. 00E0: 0D F7 04 6D 09 F4 E7 1F FE 2C 07 41 EE 84 F3 F6 ...m.....,.A....
  95. 00F0: 1A F4 62 87 3D 94 A6 5D FD 3D 8B EE 1B A1 5B 52 ..b.=..].=....[R
  96.  
  97. ]
  98. ***
  99. Found trusted certificate:
  100. [
  101. [
  102. Version: V3
  103. Subject: CN=tangotelecom.com, OU=dev, O=tangotelecom, C=IE
  104. Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
  105.  
  106. Key: Sun RSA public key, 2048 bits
  107. modulus: 22980180191390060691645191877521292031505114546367033225089259442617005098274762521554359946742065878415849288262185146512594592923140681158742168163906077539516435863146152603064701157961527256158756559349035940810739650464273192076580461817700601005238106947505955687153311906740088488389957201959449147054853786865353874624664733186248186940444317144962411956375681259742751499094173934719877768378414836567412356975874572170519318320962628133692056724599530776533547533308568698574604059550372476889963449850184432248569481738632894450321061794712987632959422197533269207285625710288277728878653909213375498707927
  108. public exponent: 65537
  109. Validity: [From: Thu Jul 06 15:48:29 IST 2017,
  110. To: Sat Jul 06 15:48:29 IST 2019]
  111. Issuer: CN=tangotelecom.com, OU=dev, O=tangotelecom, C=IE
  112. SerialNumber: [ 6dce9c09]
  113.  
  114. Certificate Extensions: 1
  115. [1]: ObjectId: 2.5.29.14 Criticality=false
  116. SubjectKeyIdentifier [
  117. KeyIdentifier [
  118. 0000: E1 BA 73 DD F2 41 0F CF BD 4B 9B 99 D7 01 BD 2F ..s..A...K...../
  119. 0010: 7D 9A 31 B7 ..1.
  120. ]
  121. ]
  122.  
  123. ]
  124. Algorithm: [SHA256withRSA]
  125. Signature:
  126. 0000: 2C DB 4A FA BD A9 1D 29 C0 0A 8F 69 7F 39 11 DA ,.J....)...i.9..
  127. 0010: 4A 21 0D 66 53 A5 03 CC 33 AB 4D E6 C1 55 75 E3 J!.fS...3.M..Uu.
  128. 0020: 8C 22 C6 F9 05 26 27 EF BC C0 CB D8 12 3C 7C 95 ."...&'......<..
  129. 0030: 9B 56 88 06 71 CA 3A 17 99 6A 23 53 E9 CC 9B 05 .V..q.:..j#S....
  130. 0040: E6 85 89 25 DC CF 95 3A 41 62 5D 0C CE E9 0F D4 ...%...:Ab].....
  131. 0050: 7E 0E B6 4D CE 5A 49 F4 BB DD 9A 85 55 C1 39 0E ...M.ZI.....U.9.
  132. 0060: 0F B4 34 44 05 64 E5 F3 F0 4A 5C 40 91 2C 1E B3 ..4D.d...J@.,..
  133. 0070: 39 D1 56 71 C2 83 48 CA 31 E5 44 60 B4 65 8D BA 9.Vq..H.1.D`.e..
  134. 0080: 70 65 7C 93 B8 84 E4 60 38 EA C7 21 7D AF 30 BD pe.....`8..!..0.
  135. 0090: 6F D5 CC 04 DA 33 E8 14 DA E8 AC BA 6A 03 5E C9 o....3......j.^.
  136. 00A0: 56 DC 78 07 FB 44 DB A8 B2 4D CE 30 CB 56 7E 6B V.x..D...M.0.V.k
  137. 00B0: F6 CE BF 3D B4 77 21 33 53 BA D8 E2 B1 B9 F4 95 ...=.w!3S.......
  138. 00C0: 05 7E FB B4 3A CF 09 29 10 B1 4E CF 38 AF 81 D6 ....:..)..N.8...
  139. 00D0: 6B DD 60 51 1C 04 27 41 71 98 07 DE B9 82 4A 1A k.`Q..'Aq.....J.
  140. 00E0: 0D F7 04 6D 09 F4 E7 1F FE 2C 07 41 EE 84 F3 F6 ...m.....,.A....
  141. 00F0: 1A F4 62 87 3D 94 A6 5D FD 3D 8B EE 1B A1 5B 52 ..b.=..].=....[R
  142.  
  143. ]
  144. *** ECDH ServerKeyExchange
  145. Signature Algorithm SHA512withRSA
  146. Server key: Sun EC public key, 256 bits
  147. public x coord: 65335040139868512120179408985992060136049248034231183953393366519969264579494
  148. public y coord: 99476183036375747385598841109418769282434814800382623908755157948061455956677
  149. parameters: secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)
  150. *** ServerHelloDone
  151. *** ECDHClientKeyExchange
  152. ECDH Public value: { 4, 6, 89, 131, 180, 42, 189, 111, 119, 56, 149, 20, 50, 182, 23, 83, 192, 173, 201, 60, 5, 132, 156, 221, 3, 44, 131, 63, 1, 166, 164, 34, 3, 56, 203, 122, 234, 174, 144, 123, 135, 210, 236, 219, 230, 153, 161, 126, 189, 78, 72, 8, 98, 201, 57, 28, 243, 18, 56, 113, 156, 118, 238, 160, 238 }
  153. Thread-8, WRITE: TLSv1.2 Handshake, length = 70
  154. SESSION KEYGEN:
  155. PreMaster Secret:
  156. 0000: BD 2B CF E4 3E 6A 0D 32 97 16 67 3E 5A 46 CD CD .+..>j.2..g>ZF..
  157. 0010: CA 52 5B 89 28 43 45 35 09 89 74 1F B6 D9 02 7B .R[.(CE5..t.....
  158. CONNECTION KEYGEN:
  159. Client Nonce:
  160. 0000: 59 6F 88 C6 BC 82 A6 F9 AA E0 AE C7 37 58 C3 90 Yo..........7X..
  161. 0010: 2D 93 8F E1 2D DF 1E 5B C3 2B 53 F1 C5 96 29 36 -...-..[.+S...)6
  162. Server Nonce:
  163. 0000: 59 6F 88 58 02 8E E2 10 6B B7 2B CE DC 6B EF 71 Yo.X....k.+..k.q
  164. 0010: CC AC F1 9A 57 B9 31 5E A3 09 BB E5 35 29 4E FE ....W.1^....5)N.
  165. Master Secret:
  166. 0000: 44 0B B5 4E 2C 69 E1 68 85 F3 21 08 1A 75 F8 01 D..N,i.h..!..u..
  167. 0010: 33 1A 6B 3A 55 7B D3 65 F8 D6 3C BD 10 40 B2 E4 3.k:U..e..<..@..
  168. 0020: A2 BC 8A 31 1F 41 9E C6 FC A4 40 F7 2F B2 59 3F ...1.A....@./.Y?
  169. Client MAC write Secret:
  170. 0000: C0 97 F8 99 19 72 9D 18 63 FD CD 8C 64 23 BC B1 .....r..c...d#..
  171. 0010: 7B 58 D4 52 9C 71 E6 42 0A 20 ED 53 31 5F 27 A7 .X.R.q.B. .S1_'.
  172. 0020: 47 3E EA 1D AA 12 CA AA 14 1B 63 98 E0 1B AD F8 G>........c.....
  173. Server MAC write Secret:
  174. 0000: 98 BE 74 96 5D 1B 69 7D 96 0D 83 25 C3 D6 24 B0 ..t.].i....%..$.
  175. 0010: 57 15 08 62 A6 69 E3 DA 77 3D 73 A3 E6 D9 A8 7A W..b.i..w=s....z
  176. 0020: 46 E0 D2 49 ED 53 86 45 18 97 92 C3 C9 61 45 4E F..I.S.E.....aEN
  177. Client write key:
  178. 0000: 27 67 0E 91 81 3A 6A 5B 87 78 1D E0 EB 6B C7 AE 'g...:j[.x...k..
  179. 0010: B8 78 13 9F 6F C2 8B 4E AC 3F 01 07 BC 5C 9B 0E .x..o..N.?.....
  180. Server write key:
  181. 0000: 3E D2 EE 99 D4 53 84 15 C6 D6 66 5D A8 A5 40 7C >....S....f]..@.
  182. 0010: 65 BB 8E A8 DF F7 B8 22 6C EF 6C 82 26 63 7D 99 e......"l.l.&c..
  183. ... no IV derived for this protocol
  184. Thread-8, WRITE: TLSv1.2 Change Cipher Spec, length = 1
  185. *** Finished
  186. verify_data: { 101, 250, 185, 66, 42, 146, 49, 129, 108, 63, 34, 156 }
  187. ***
  188. Thread-8, WRITE: TLSv1.2 Handshake, length = 96
  189. Thread-8, READ: TLSv1.2 Change Cipher Spec, length = 1
  190. Thread-8, READ: TLSv1.2 Handshake, length = 96
  191. *** Finished
  192. verify_data: { 221, 251, 110, 51, 35, 95, 63, 112, 169, 189, 61, 120 }
  193. ***
  194. %% Cached client session: [Session-1, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384]
  195. ForkJoinPool.commonPool-worker-2, WRITE: TLSv1.2 Application Data, length = 96
  196. Thread-8, handling exception: javax.net.ssl.SSLException: Unsupported record version Unknown-38.2
  197. %% Invalidated: [Session-1, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384]
  198. Thread-8, SEND TLSv1.2 ALERT: fatal, description = unexpected_message
  199. Thread-8, WRITE: TLSv1.2 Alert, length = 80
  200. Thread-8, called closeSocket()
  201. Thread-8, called close()
  202. Thread-8, called closeInternal(true)
  203.  
  204. <?xml version="1.0" encoding="UTF-8"?>
  205. <beans xmlns="http://www.springframework.org/schema/beans"
  206. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  207. xmlns:context="http://www.springframework.org/schema/context"
  208. xmlns:ldap="http://www.springframework.org/schema/ldap"
  209. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  210. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  211. http://www.springframework.org/schema/ldap http://www.springframework.org/schema/ldap/spring-ldap.xsd">
  212. <context:property-placeholder location="classpath:application.properties"/>
  213. <bean id="ldapAuthenticationStrategy" class="org.springframework.ldap.core.support.DefaultTlsDirContextAuthenticationStrategy">
  214. <property name="shutdownTlsGracefully" value="true"/>
  215. </bean>
  216. <ldap:context-source url="${ldap.primary.url}, ${ldap.secondary.url}"
  217. username="${ldap.userDn}"
  218. password="${ldap.password}"
  219. base="${ldap.base}"
  220. referral="follow"
  221. native-pooling="false"
  222. authentication-strategy-ref="ldapAuthenticationStrategy">
  223. </ldap:context-source>
  224. <ldap:ldap-template id="ldapTemplate" context-source-ref="contextSource" time-limit="5000"/>
  225.  
  226. public class TangoLdapClient {
  227. static final String UID = "uid";
  228.  
  229. private final LdapTemplate ldapTemplate;
  230.  
  231. /**
  232. * Constructor.
  233. * @param ldapTemplate {@link LdapTemplate}.
  234. */
  235. public TangoLdapClient(@NonNull final LdapTemplate ldapTemplate) {
  236. this.ldapTemplate = ldapTemplate;
  237. }
  238.  
  239. /**
  240. * Authenticate with username and password.
  241. * @param username username.
  242. * @param password password.
  243. * @throws EmptyResultDataAccessException in the case that the username is not found, and therefore cannot be mapped to dn.
  244. * @throws AuthenticationException in the case where the password doesn't match.
  245. */
  246. public void authenticate(@NonNull final String username, @NonNull final String password)
  247. throws EmptyResultDataAccessException, AuthenticationException {
  248. Preconditions.checkArgument(StringUtils.isNotBlank(username));
  249. ldapTemplate.authenticate(buildFindUserFromUserName(username), password,
  250. (ctx, ldapEntryIdentification) -> wrappedMapper(ctx, ldapEntryIdentification));
  251. }
  252.  
  253. private LdapQuery buildFindUserFromUserName(final String username) {
  254. return query().where(UID).is(username);
  255. }
  256.  
  257. private static DirContextOperations wrappedMapper(final DirContext ctx,
  258. final LdapEntryIdentification ldapEntryIdentification) {
  259. try {
  260. return (DirContextOperations) ctx.lookup(ldapEntryIdentification.getRelativeName());
  261. } catch (NamingException e) {
  262. throw new RuntimeException("Failed to lookup " + ldapEntryIdentification.getRelativeName(), e);
  263. }
  264. }
  265. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement