@expensify/react-native-wallet 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +259 -0
- package/android/build.gradle +103 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/expensify/wallet/Utils.kt +148 -0
- package/android/src/main/java/com/expensify/wallet/WalletModule.kt +301 -0
- package/android/src/main/java/com/expensify/wallet/WalletPackage.kt +43 -0
- package/android/src/main/java/com/expensify/wallet/error/InvalidNetworkError.kt +6 -0
- package/android/src/main/java/com/expensify/wallet/event/OnCardActivatedEvent.kt +18 -0
- package/android/src/main/java/com/expensify/wallet/model/CardData.kt +12 -0
- package/android/src/main/java/com/expensify/wallet/model/CardStatus.kt +15 -0
- package/android/src/main/java/com/expensify/wallet/model/TokenizationStatus.kt +7 -0
- package/android/src/main/java/com/expensify/wallet/model/WalletData.kt +7 -0
- package/android/src/paper/java/com/expensify/wallet/NativeWalletSpec.java +71 -0
- package/assets/buttons/android/af.svg +10 -0
- package/assets/buttons/android/am.svg +11 -0
- package/assets/buttons/android/ar.svg +16 -0
- package/assets/buttons/android/az.svg +16 -0
- package/assets/buttons/android/be.svg +16 -0
- package/assets/buttons/android/bg.svg +16 -0
- package/assets/buttons/android/bn.svg +10 -0
- package/assets/buttons/android/br.svg +16 -0
- package/assets/buttons/android/bs.svg +16 -0
- package/assets/buttons/android/ca.svg +16 -0
- package/assets/buttons/android/cs.svg +16 -0
- package/assets/buttons/android/da.svg +16 -0
- package/assets/buttons/android/de.svg +16 -0
- package/assets/buttons/android/el.svg +16 -0
- package/assets/buttons/android/en.svg +16 -0
- package/assets/buttons/android/es.svg +16 -0
- package/assets/buttons/android/et.svg +16 -0
- package/assets/buttons/android/fa.svg +11 -0
- package/assets/buttons/android/fi.svg +16 -0
- package/assets/buttons/android/fil.svg +16 -0
- package/assets/buttons/android/fr.svg +16 -0
- package/assets/buttons/android/he.svg +16 -0
- package/assets/buttons/android/hk.svg +16 -0
- package/assets/buttons/android/hr.svg +16 -0
- package/assets/buttons/android/hu.svg +16 -0
- package/assets/buttons/android/hy.svg +16 -0
- package/assets/buttons/android/id.svg +16 -0
- package/assets/buttons/android/is.svg +16 -0
- package/assets/buttons/android/it.svg +16 -0
- package/assets/buttons/android/ja.svg +16 -0
- package/assets/buttons/android/ka.svg +16 -0
- package/assets/buttons/android/kk.svg +16 -0
- package/assets/buttons/android/km.svg +10 -0
- package/assets/buttons/android/ky.svg +16 -0
- package/assets/buttons/android/lo.svg +10 -0
- package/assets/buttons/android/lt.svg +16 -0
- package/assets/buttons/android/lv.svg +16 -0
- package/assets/buttons/android/mk.svg +16 -0
- package/assets/buttons/android/mn.svg +10 -0
- package/assets/buttons/android/my.svg +10 -0
- package/assets/buttons/android/ne.svg +10 -0
- package/assets/buttons/android/nl.svg +16 -0
- package/assets/buttons/android/no.svg +16 -0
- package/assets/buttons/android/pl.svg +16 -0
- package/assets/buttons/android/pt.svg +16 -0
- package/assets/buttons/android/ro.svg +16 -0
- package/assets/buttons/android/ru.svg +16 -0
- package/assets/buttons/android/se.svg +16 -0
- package/assets/buttons/android/si.svg +10 -0
- package/assets/buttons/android/sk.svg +16 -0
- package/assets/buttons/android/sl.svg +16 -0
- package/assets/buttons/android/sq.svg +16 -0
- package/assets/buttons/android/sr.svg +16 -0
- package/assets/buttons/android/sw.svg +10 -0
- package/assets/buttons/android/th.svg +16 -0
- package/assets/buttons/android/tr.svg +16 -0
- package/assets/buttons/android/tw.svg +16 -0
- package/assets/buttons/android/uk.svg +16 -0
- package/assets/buttons/android/ur.svg +11 -0
- package/assets/buttons/android/uz.svg +16 -0
- package/assets/buttons/android/vi.svg +16 -0
- package/assets/buttons/apple/ar.svg +269 -0
- package/assets/buttons/apple/az.svg +275 -0
- package/assets/buttons/apple/bg.svg +275 -0
- package/assets/buttons/apple/cs.svg +288 -0
- package/assets/buttons/apple/da.svg +267 -0
- package/assets/buttons/apple/de.svg +282 -0
- package/assets/buttons/apple/el.svg +298 -0
- package/assets/buttons/apple/en.svg +259 -0
- package/assets/buttons/apple/es.svg +291 -0
- package/assets/buttons/apple/et.svg +279 -0
- package/assets/buttons/apple/fi.svg +287 -0
- package/assets/buttons/apple/fil.svg +292 -0
- package/assets/buttons/apple/fr.svg +295 -0
- package/assets/buttons/apple/he.svg +274 -0
- package/assets/buttons/apple/hi.svg +227 -0
- package/assets/buttons/apple/hk.svg +265 -0
- package/assets/buttons/apple/hr.svg +277 -0
- package/assets/buttons/apple/hu.svg +302 -0
- package/assets/buttons/apple/id.svg +284 -0
- package/assets/buttons/apple/it.svg +280 -0
- package/assets/buttons/apple/ja.svg +268 -0
- package/assets/buttons/apple/ko.svg +266 -0
- package/assets/buttons/apple/lt.svg +283 -0
- package/assets/buttons/apple/lv.svg +277 -0
- package/assets/buttons/apple/ms.svg +280 -0
- package/assets/buttons/apple/mt.svg +268 -0
- package/assets/buttons/apple/nl.svg +290 -0
- package/assets/buttons/apple/no.svg +284 -0
- package/assets/buttons/apple/pl.svg +280 -0
- package/assets/buttons/apple/pt.svg +290 -0
- package/assets/buttons/apple/ro.svg +290 -0
- package/assets/buttons/apple/ru.svg +279 -0
- package/assets/buttons/apple/sk.svg +288 -0
- package/assets/buttons/apple/sl.svg +269 -0
- package/assets/buttons/apple/sv.svg +287 -0
- package/assets/buttons/apple/th.svg +277 -0
- package/assets/buttons/apple/tr.svg +273 -0
- package/assets/buttons/apple/uk.svg +274 -0
- package/assets/buttons/apple/vi.svg +259 -0
- package/assets/buttons/apple/zh.svg +279 -0
- package/assets/hero-image.png +0 -0
- package/assets/signature-dark.png +0 -0
- package/assets/signature-light.png +0 -0
- package/ios/RNWallet.h +13 -0
- package/ios/RNWallet.mm +153 -0
- package/ios/WalletManager.swift +292 -0
- package/ios/stucts/AddPassResponse.swift +36 -0
- package/ios/stucts/CardInfo.swift +37 -0
- package/ios/stucts/WalletEncryptedPayload.swift +27 -0
- package/lib/commonjs/AddToWalletButton.js +47 -0
- package/lib/commonjs/AddToWalletButton.js.map +1 -0
- package/lib/commonjs/NativeWallet.js +22 -0
- package/lib/commonjs/NativeWallet.js.map +1 -0
- package/lib/commonjs/constants.js +195 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/index.js +114 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/utils.js +38 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/module/AddToWalletButton.js +38 -0
- package/lib/module/AddToWalletButton.js.map +1 -0
- package/lib/module/NativeWallet.js +17 -0
- package/lib/module/NativeWallet.js.map +1 -0
- package/lib/module/constants.js +188 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/index.js +92 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/utils.js +32 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/typescript/src/AddToWalletButton.d.ts +10 -0
- package/lib/typescript/src/AddToWalletButton.d.ts.map +1 -0
- package/lib/typescript/src/NativeWallet.d.ts +64 -0
- package/lib/typescript/src/NativeWallet.d.ts.map +1 -0
- package/lib/typescript/src/constants.d.ts +4 -0
- package/lib/typescript/src/constants.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +20 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/utils.d.ts +5 -0
- package/lib/typescript/src/utils.d.ts.map +1 -0
- package/package.json +172 -0
- package/react-native-wallet.podspec +36 -0
- package/src/AddToWalletButton.tsx +49 -0
- package/src/NativeWallet.ts +87 -0
- package/src/constants.ts +191 -0
- package/src/index.tsx +124 -0
- package/src/utils.ts +35 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
package com.expensify.wallet
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import android.app.Activity.RESULT_CANCELED
|
|
5
|
+
import android.app.Activity.RESULT_OK
|
|
6
|
+
import android.content.ActivityNotFoundException
|
|
7
|
+
import android.content.Intent
|
|
8
|
+
import com.facebook.react.bridge.ActivityEventListener
|
|
9
|
+
import com.facebook.react.bridge.Arguments
|
|
10
|
+
import com.facebook.react.bridge.Promise
|
|
11
|
+
import com.facebook.react.bridge.PromiseImpl
|
|
12
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
13
|
+
import com.facebook.react.bridge.ReactContext
|
|
14
|
+
import com.facebook.react.bridge.ReactMethod
|
|
15
|
+
import com.facebook.react.bridge.ReadableMap
|
|
16
|
+
import com.facebook.react.bridge.WritableMap
|
|
17
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
18
|
+
import com.google.android.gms.tapandpay.TapAndPay
|
|
19
|
+
import com.google.android.gms.tapandpay.TapAndPayClient
|
|
20
|
+
import com.google.android.gms.tapandpay.issuer.PushTokenizeRequest
|
|
21
|
+
import kotlinx.coroutines.CoroutineScope
|
|
22
|
+
import kotlinx.coroutines.Dispatchers
|
|
23
|
+
import kotlinx.coroutines.launch
|
|
24
|
+
import com.expensify.wallet.Utils.getAsyncResult
|
|
25
|
+
import com.expensify.wallet.Utils.toCardData
|
|
26
|
+
import com.expensify.wallet.error.InvalidNetworkError
|
|
27
|
+
import com.expensify.wallet.event.OnCardActivatedEvent
|
|
28
|
+
import com.expensify.wallet.model.CardStatus
|
|
29
|
+
import com.expensify.wallet.model.TokenizationStatus
|
|
30
|
+
import com.expensify.wallet.model.WalletData
|
|
31
|
+
import com.google.android.gms.common.api.ApiException
|
|
32
|
+
import kotlinx.coroutines.Deferred
|
|
33
|
+
import java.nio.charset.Charset
|
|
34
|
+
import java.util.Locale
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class WalletModule internal constructor(context: ReactApplicationContext) :
|
|
38
|
+
NativeWalletSpec(context) {
|
|
39
|
+
companion object {
|
|
40
|
+
const val NAME = "RNWallet"
|
|
41
|
+
const val REQUEST_CODE_PUSH_TOKENIZE: Int = 0xA001
|
|
42
|
+
const val REQUEST_CREATE_WALLET: Int = 0xA002
|
|
43
|
+
|
|
44
|
+
const val E_SDK_API = "SDK API Error"
|
|
45
|
+
const val E_OPERATION_FAILED = "E_OPERATION_FAILED"
|
|
46
|
+
const val E_NO_TOKENS_AVAILABLE = "E_NO_TOKENS_AVAILABLE"
|
|
47
|
+
const val E_INVALID_DATA = "E_INVALID_DATA"
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private val activity = currentActivity ?: throw ActivityNotFoundException()
|
|
51
|
+
private val tapAndPayClient: TapAndPayClient = TapAndPay.getClient(activity)
|
|
52
|
+
private var pendingCreateWalletPromise: Promise? = null
|
|
53
|
+
private var pendingPushTokenizePromise: Promise? = null
|
|
54
|
+
|
|
55
|
+
override fun initialize() {
|
|
56
|
+
super.initialize()
|
|
57
|
+
reactApplicationContext.addActivityEventListener(cardListener)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
override fun invalidate() {
|
|
61
|
+
super.invalidate()
|
|
62
|
+
reactApplicationContext.removeActivityEventListener(cardListener)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private val cardListener = object : ActivityEventListener {
|
|
66
|
+
override fun onActivityResult(
|
|
67
|
+
activity: Activity?, requestCode: Int, resultCode: Int, intent: Intent?
|
|
68
|
+
) {
|
|
69
|
+
if (requestCode == REQUEST_CREATE_WALLET) {
|
|
70
|
+
pendingCreateWalletPromise?.resolve(resultCode == RESULT_OK)
|
|
71
|
+
pendingCreateWalletPromise = null
|
|
72
|
+
} else if (requestCode == REQUEST_CODE_PUSH_TOKENIZE) {
|
|
73
|
+
if (resultCode == RESULT_OK) {
|
|
74
|
+
intent?.let {
|
|
75
|
+
val tokenId = it.getStringExtra(TapAndPay.EXTRA_ISSUER_TOKEN_ID).toString()
|
|
76
|
+
sendEvent(
|
|
77
|
+
context,
|
|
78
|
+
OnCardActivatedEvent.NAME,
|
|
79
|
+
OnCardActivatedEvent("active", tokenId).toMap()
|
|
80
|
+
)
|
|
81
|
+
pendingPushTokenizePromise?.resolve(TokenizationStatus.SUCCESS.code)
|
|
82
|
+
}
|
|
83
|
+
} else if (resultCode == RESULT_CANCELED) {
|
|
84
|
+
sendEvent(
|
|
85
|
+
context,
|
|
86
|
+
OnCardActivatedEvent.NAME,
|
|
87
|
+
OnCardActivatedEvent("canceled", null).toMap()
|
|
88
|
+
)
|
|
89
|
+
pendingPushTokenizePromise?.resolve(TokenizationStatus.CANCELED.code)
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
override fun onNewIntent(p0: Intent?) {}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@ReactMethod
|
|
98
|
+
override fun ensureGoogleWalletInitialized(promise: Promise) {
|
|
99
|
+
val localPromise = PromiseImpl({ _ ->
|
|
100
|
+
promise.resolve(true)
|
|
101
|
+
}, { _ ->
|
|
102
|
+
pendingCreateWalletPromise = promise
|
|
103
|
+
tapAndPayClient.createWallet(activity, REQUEST_CREATE_WALLET)
|
|
104
|
+
})
|
|
105
|
+
getWalletId(localPromise)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@ReactMethod
|
|
109
|
+
override fun checkWalletAvailability(promise: Promise) {
|
|
110
|
+
tapAndPayClient.environment.addOnCompleteListener { task ->
|
|
111
|
+
if (task.isSuccessful) {
|
|
112
|
+
promise.resolve(true)
|
|
113
|
+
} else {
|
|
114
|
+
promise.resolve(false)
|
|
115
|
+
}
|
|
116
|
+
}.addOnFailureListener { e ->
|
|
117
|
+
promise.reject(E_OPERATION_FAILED, "Checking Wallet availability failed: ${e.localizedMessage}")
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@ReactMethod
|
|
122
|
+
override fun getSecureWalletInfo(promise: Promise) {
|
|
123
|
+
CoroutineScope(Dispatchers.Main).launch {
|
|
124
|
+
try {
|
|
125
|
+
val walletId = getWalletIdAsync()
|
|
126
|
+
val hardwareId = getHardwareIdAsync()
|
|
127
|
+
val walletData = WalletData(
|
|
128
|
+
platform = "android", deviceID = hardwareId.await(), walletAccountID = walletId.await()
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
val walletDataMap: WritableMap = Arguments.createMap().apply {
|
|
132
|
+
putString("platform", walletData.platform)
|
|
133
|
+
putString("deviceID", walletData.deviceID)
|
|
134
|
+
putString("walletAccountID", walletData.walletAccountID)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
promise.resolve(walletDataMap)
|
|
138
|
+
} catch (e: ApiException) {
|
|
139
|
+
promise.reject(E_SDK_API, e.localizedMessage)
|
|
140
|
+
} catch (e: Exception) {
|
|
141
|
+
promise.reject(E_OPERATION_FAILED, "Failed to retrieve IDs: ${e.localizedMessage}")
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@ReactMethod
|
|
147
|
+
override fun getCardStatusBySuffix(last4Digits: String, promise: Promise) {
|
|
148
|
+
tapAndPayClient.listTokens()
|
|
149
|
+
.addOnCompleteListener { task ->
|
|
150
|
+
if (!task.isSuccessful || task.result == null) {
|
|
151
|
+
promise.resolve(CardStatus.NOT_FOUND_IN_WALLET.code)
|
|
152
|
+
return@addOnCompleteListener
|
|
153
|
+
}
|
|
154
|
+
task.result.find { it.fpanLastFour == last4Digits }?.let {
|
|
155
|
+
promise.resolve(
|
|
156
|
+
getCardStatusCode(it.tokenState)
|
|
157
|
+
)
|
|
158
|
+
} ?: promise.resolve(CardStatus.NOT_FOUND_IN_WALLET.code)
|
|
159
|
+
}
|
|
160
|
+
.addOnFailureListener { e ->
|
|
161
|
+
promise.reject(E_OPERATION_FAILED, "getCardStatusBySuffix: ${e.localizedMessage}")
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@ReactMethod
|
|
166
|
+
override fun getCardStatusByIdentifier(identifier: String, tsp: String, promise: Promise) {
|
|
167
|
+
tapAndPayClient.getTokenStatus(getTokenServiceProvider(tsp), identifier)
|
|
168
|
+
.addOnCompleteListener { task ->
|
|
169
|
+
if (!task.isSuccessful || task.result == null) {
|
|
170
|
+
promise.resolve(CardStatus.NOT_FOUND_IN_WALLET.code)
|
|
171
|
+
return@addOnCompleteListener
|
|
172
|
+
}
|
|
173
|
+
task.result?.let {
|
|
174
|
+
promise.resolve(
|
|
175
|
+
getCardStatusCode(it.tokenState)
|
|
176
|
+
)
|
|
177
|
+
} ?: promise.resolve(CardStatus.NOT_FOUND_IN_WALLET.code)
|
|
178
|
+
}
|
|
179
|
+
.addOnFailureListener { e ->
|
|
180
|
+
promise.reject(E_OPERATION_FAILED, "getCardStatusByIdentifier: ${e.localizedMessage}")
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@ReactMethod
|
|
185
|
+
override fun addCardToGoogleWallet(
|
|
186
|
+
data: ReadableMap, promise: Promise
|
|
187
|
+
) {
|
|
188
|
+
try {
|
|
189
|
+
val cardData = data.toCardData() ?: return promise.reject(E_INVALID_DATA, "Insufficient data")
|
|
190
|
+
val cardNetwork = getCardNetwork(cardData.network)
|
|
191
|
+
val tokenServiceProvider = getTokenServiceProvider(cardData.network)
|
|
192
|
+
pendingPushTokenizePromise = promise
|
|
193
|
+
|
|
194
|
+
val pushTokenizeRequest = PushTokenizeRequest.Builder()
|
|
195
|
+
.setOpaquePaymentCard(cardData.opaquePaymentCard.toByteArray(Charset.forName("UTF-8")))
|
|
196
|
+
.setNetwork(cardNetwork)
|
|
197
|
+
.setTokenServiceProvider(tokenServiceProvider)
|
|
198
|
+
.setDisplayName(cardData.cardHolderName)
|
|
199
|
+
.setLastDigits(cardData.lastDigits)
|
|
200
|
+
.setUserAddress(cardData.userAddress)
|
|
201
|
+
.build()
|
|
202
|
+
|
|
203
|
+
tapAndPayClient.pushTokenize(
|
|
204
|
+
activity, pushTokenizeRequest, REQUEST_CODE_PUSH_TOKENIZE
|
|
205
|
+
)
|
|
206
|
+
} catch (e: java.lang.Exception) {
|
|
207
|
+
promise.reject(e)
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private fun getWalletId(promise: Promise) {
|
|
212
|
+
tapAndPayClient.activeWalletId.addOnCompleteListener { task ->
|
|
213
|
+
if (task.isSuccessful) {
|
|
214
|
+
val walletId = task.result
|
|
215
|
+
if (walletId != null) {
|
|
216
|
+
promise.resolve(walletId)
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}.addOnFailureListener { e ->
|
|
220
|
+
promise.reject(E_OPERATION_FAILED, "Wallet id retrieval failed: ${e.localizedMessage}")
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
private fun getHardwareId(promise: Promise) {
|
|
225
|
+
tapAndPayClient.stableHardwareId.addOnCompleteListener { task ->
|
|
226
|
+
if (task.isSuccessful) {
|
|
227
|
+
val hardwareId = task.result
|
|
228
|
+
promise.resolve(hardwareId)
|
|
229
|
+
}
|
|
230
|
+
}.addOnFailureListener { e ->
|
|
231
|
+
promise.reject(E_OPERATION_FAILED, "Stable hardware id retrieval failed: ${e.localizedMessage}")
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
private fun getCardStatusCode(code: Int): Int {
|
|
236
|
+
return when (code) {
|
|
237
|
+
TapAndPay.TOKEN_STATE_ACTIVE -> CardStatus.ACTIVE.code
|
|
238
|
+
TapAndPay.TOKEN_STATE_PENDING -> CardStatus.PENDING.code
|
|
239
|
+
TapAndPay.TOKEN_STATE_SUSPENDED -> CardStatus.SUSPENDED.code
|
|
240
|
+
TapAndPay.TOKEN_STATE_NEEDS_IDENTITY_VERIFICATION -> CardStatus.REQUIRE_AUTHORIZATION.code
|
|
241
|
+
TapAndPay.TOKEN_STATE_FELICA_PENDING_PROVISIONING -> CardStatus.PENDING.code
|
|
242
|
+
else -> CardStatus.NOT_FOUND_IN_WALLET.code
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
private fun getCardNetwork(network: String): Int {
|
|
247
|
+
return when (network.uppercase(Locale.getDefault())) {
|
|
248
|
+
"VISA" -> TapAndPay.CARD_NETWORK_VISA
|
|
249
|
+
"MASTERCARD" -> TapAndPay.CARD_NETWORK_MASTERCARD
|
|
250
|
+
"AMEX" -> TapAndPay.CARD_NETWORK_AMEX
|
|
251
|
+
"DISCOVER" -> TapAndPay.CARD_NETWORK_DISCOVER
|
|
252
|
+
else -> throw InvalidNetworkError()
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
private fun getTokenServiceProvider(network: String): Int {
|
|
257
|
+
return when (network.uppercase(Locale.getDefault())) {
|
|
258
|
+
"VISA" -> TapAndPay.TOKEN_PROVIDER_VISA
|
|
259
|
+
"MASTERCARD" -> TapAndPay.TOKEN_PROVIDER_MASTERCARD
|
|
260
|
+
"AMEX" -> TapAndPay.TOKEN_PROVIDER_AMEX
|
|
261
|
+
"DISCOVER" -> TapAndPay.TOKEN_PROVIDER_DISCOVER
|
|
262
|
+
else -> throw InvalidNetworkError()
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
private suspend fun getWalletIdAsync(): Deferred<String> =
|
|
267
|
+
getAsyncResult(String::class.java) { promise ->
|
|
268
|
+
getWalletId(promise)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
private suspend fun getHardwareIdAsync(): Deferred<String> =
|
|
272
|
+
getAsyncResult(String::class.java) { promise ->
|
|
273
|
+
getHardwareId(promise)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
private fun sendEvent(reactContext: ReactContext, eventName: String, params: WritableMap?) {
|
|
277
|
+
reactContext
|
|
278
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
279
|
+
.emit(eventName, params)
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
override fun IOSPresentAddPaymentPassView(cardData: ReadableMap?, promise: Promise?) {
|
|
283
|
+
// no-op
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
override fun IOSHandleAddPaymentPassResponse(payload: ReadableMap?, promise: Promise?) {
|
|
287
|
+
// no-op
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
override fun addListener(eventType: String?) {
|
|
291
|
+
// no-op
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
override fun removeListeners(count: Double) {
|
|
295
|
+
// no-op
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
override fun getName(): String {
|
|
299
|
+
return NAME
|
|
300
|
+
}
|
|
301
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
package com.expensify.wallet
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.BaseReactPackage
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.bridge.NativeModule
|
|
6
|
+
import com.facebook.react.module.annotations.ReactModuleList
|
|
7
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
8
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
|
9
|
+
import java.util.HashMap
|
|
10
|
+
|
|
11
|
+
// Fool auto linking for older versions that do not support BaseReactPackage.
|
|
12
|
+
// public class WalletPackage implements TurboReactPackage {
|
|
13
|
+
@ReactModuleList(
|
|
14
|
+
nativeModules = [
|
|
15
|
+
WalletModule::class,
|
|
16
|
+
],
|
|
17
|
+
)
|
|
18
|
+
class WalletPackage : BaseReactPackage() {
|
|
19
|
+
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
20
|
+
return if (name == WalletModule.NAME) {
|
|
21
|
+
WalletModule(reactContext)
|
|
22
|
+
} else {
|
|
23
|
+
null
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
|
28
|
+
return ReactModuleInfoProvider {
|
|
29
|
+
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
|
|
30
|
+
val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
|
31
|
+
moduleInfos[WalletModule.NAME] = ReactModuleInfo(
|
|
32
|
+
WalletModule.NAME,
|
|
33
|
+
WalletModule.NAME,
|
|
34
|
+
canOverrideExistingModule = false,
|
|
35
|
+
needsEagerInit = false,
|
|
36
|
+
hasConstants = true,
|
|
37
|
+
isCxxModule = false,
|
|
38
|
+
isTurboModule
|
|
39
|
+
)
|
|
40
|
+
moduleInfos
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
package com.expensify.wallet.event
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class OnCardActivatedEvent(private val status: String, private val tokenId: String?) {
|
|
8
|
+
companion object {
|
|
9
|
+
const val NAME = "onCardActivated"
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
fun toMap(): WritableMap? {
|
|
13
|
+
val params = Arguments.createMap()
|
|
14
|
+
params.putString("status", status)
|
|
15
|
+
params.putString("tokenId", tokenId)
|
|
16
|
+
return params
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package com.expensify.wallet.model
|
|
2
|
+
|
|
3
|
+
import com.google.android.gms.tapandpay.issuer.UserAddress
|
|
4
|
+
|
|
5
|
+
data class CardData(
|
|
6
|
+
val platform: String = "android",
|
|
7
|
+
val network: String,
|
|
8
|
+
val opaquePaymentCard: String,
|
|
9
|
+
val cardHolderName: String,
|
|
10
|
+
val lastDigits: String,
|
|
11
|
+
val userAddress: UserAddress,
|
|
12
|
+
)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package com.expensify.wallet.model
|
|
2
|
+
|
|
3
|
+
enum class CardStatus(val code: Int, val message: String) {
|
|
4
|
+
NOT_FOUND_IN_WALLET(-1, "The card can't be found in your active wallet"),
|
|
5
|
+
ACTIVE(0, "The card is ready to use."),
|
|
6
|
+
REQUIRE_AUTHORIZATION(1, "The card requires identity verification."),
|
|
7
|
+
PENDING(2, "The card is pending."),
|
|
8
|
+
SUSPENDED(3, "The card has been suspended."),
|
|
9
|
+
DEACTIVATED(4, "The card is deactivated.");
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
override fun toString(): String {
|
|
13
|
+
return "$message (Code: $code)"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJavaSpec.js
|
|
9
|
+
*
|
|
10
|
+
* @nolint
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
package com.expensify.wallet;
|
|
14
|
+
|
|
15
|
+
import com.facebook.proguard.annotations.DoNotStrip;
|
|
16
|
+
import com.facebook.react.bridge.Promise;
|
|
17
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
18
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
19
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
20
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
21
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
22
|
+
import javax.annotation.Nonnull;
|
|
23
|
+
|
|
24
|
+
public abstract class NativeWalletSpec extends ReactContextBaseJavaModule implements TurboModule {
|
|
25
|
+
public static final String NAME = "RNWallet";
|
|
26
|
+
|
|
27
|
+
public NativeWalletSpec(ReactApplicationContext reactContext) {
|
|
28
|
+
super(reactContext);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
public @Nonnull String getName() {
|
|
33
|
+
return NAME;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@ReactMethod
|
|
37
|
+
@DoNotStrip
|
|
38
|
+
public abstract void checkWalletAvailability(Promise promise);
|
|
39
|
+
|
|
40
|
+
@ReactMethod
|
|
41
|
+
@DoNotStrip
|
|
42
|
+
public abstract void getSecureWalletInfo(Promise promise);
|
|
43
|
+
|
|
44
|
+
@ReactMethod
|
|
45
|
+
@DoNotStrip
|
|
46
|
+
public abstract void getCardStatusBySuffix(String last4Digits, Promise promise);
|
|
47
|
+
|
|
48
|
+
@ReactMethod
|
|
49
|
+
@DoNotStrip
|
|
50
|
+
public abstract void getCardStatusByIdentifier(String identifier, String tsp, Promise promise);
|
|
51
|
+
|
|
52
|
+
@ReactMethod
|
|
53
|
+
@DoNotStrip
|
|
54
|
+
public abstract void addCardToGoogleWallet(ReadableMap cardData, Promise promise);
|
|
55
|
+
|
|
56
|
+
@ReactMethod
|
|
57
|
+
@DoNotStrip
|
|
58
|
+
public abstract void IOSPresentAddPaymentPassView(ReadableMap cardData, Promise promise);
|
|
59
|
+
|
|
60
|
+
@ReactMethod
|
|
61
|
+
@DoNotStrip
|
|
62
|
+
public abstract void IOSHandleAddPaymentPassResponse(ReadableMap payload, Promise promise);
|
|
63
|
+
|
|
64
|
+
@ReactMethod
|
|
65
|
+
@DoNotStrip
|
|
66
|
+
public abstract void addListener(String eventType);
|
|
67
|
+
|
|
68
|
+
@ReactMethod
|
|
69
|
+
@DoNotStrip
|
|
70
|
+
public abstract void removeListeners(double count);
|
|
71
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="199" height="55" viewBox="0 0 199 55" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="0.5" y="0.5" width="198" height="54" rx="27" fill="#1F1F1F"/>
|
|
3
|
+
<rect x="0.5" y="0.5" width="198" height="54" rx="27" stroke="#747775"/>
|
|
4
|
+
<path d="M57 23.791H21V18.1455C21 15.0808 23.6422 12.5 26.7798 12.5H51.2202C54.3578 12.5 57 15.0808 57 18.1455V23.791Z" fill="#34A853"/>
|
|
5
|
+
<path d="M57 29H21V23C21 19.7429 23.6422 17 26.7798 17H51.2202C54.3578 17 57 19.7429 57 23V29Z" fill="#FBBC04"/>
|
|
6
|
+
<path d="M57 34H21V28C21 24.7429 23.6422 22 26.7798 22H51.2202C54.3578 22 57 24.7429 57 28V34Z" fill="#EA4335"/>
|
|
7
|
+
<path d="M21 25.2406L43.8493 30.4022C46.4795 31.0473 49.4384 30.4022 51.5753 28.7892L57 24.918V37.0154C57 40.0801 54.3699 42.4996 51.2466 42.4996H26.7534C23.6301 42.4996 21 40.0801 21 37.0154V25.2406Z" fill="#4285F4"/>
|
|
8
|
+
<path d="M72.484 21.5L69.182 12.192H70.742L72.848 18.38L73.173 19.433H73.251L73.602 18.38L75.799 12.192H77.359L73.966 21.5H72.484ZM80.7085 21.708C80.0239 21.708 79.4215 21.552 78.9015 21.24C78.3815 20.928 77.9742 20.5077 77.6795 19.979C77.3849 19.4417 77.2375 18.8437 77.2375 18.185C77.2375 17.5263 77.3849 16.9327 77.6795 16.404C77.9742 15.8667 78.3815 15.442 78.9015 15.13C79.4215 14.818 80.0239 14.662 80.7085 14.662C81.3845 14.662 81.9825 14.8223 82.5025 15.143C83.0225 15.455 83.4299 15.8753 83.7245 16.404C84.0192 16.9327 84.1665 17.5263 84.1665 18.185C84.1665 18.8437 84.0192 19.4417 83.7245 19.979C83.4299 20.5077 83.0225 20.928 82.5025 21.24C81.9825 21.552 81.3845 21.708 80.7085 21.708ZM80.7085 20.421C81.0725 20.421 81.4105 20.3343 81.7225 20.161C82.0345 19.979 82.2859 19.7233 82.4765 19.394C82.6759 19.056 82.7755 18.653 82.7755 18.185C82.7755 17.717 82.6759 17.3183 82.4765 16.989C82.2859 16.651 82.0345 16.3953 81.7225 16.222C81.4105 16.04 81.0725 15.949 80.7085 15.949C80.3445 15.949 80.0022 16.04 79.6815 16.222C79.3695 16.3953 79.1139 16.651 78.9145 16.989C78.7239 17.3183 78.6285 17.717 78.6285 18.185C78.6285 18.653 78.7239 19.056 78.9145 19.394C79.1139 19.7233 79.3739 19.979 79.6945 20.161C80.0152 20.3343 80.3532 20.421 80.7085 20.421ZM88.4886 21.708C87.8386 21.708 87.258 21.5563 86.7466 21.253C86.2353 20.9497 85.8323 20.5337 85.5376 20.005C85.2516 19.4763 85.1086 18.874 85.1086 18.198C85.1086 17.5653 85.2473 16.9803 85.5246 16.443C85.802 15.9057 86.1876 15.4767 86.6816 15.156C87.1843 14.8267 87.7606 14.662 88.4106 14.662C89.0953 14.662 89.676 14.8093 90.1526 15.104C90.638 15.3987 91.0063 15.8017 91.2576 16.313C91.509 16.8243 91.6346 17.4007 91.6346 18.042C91.6346 18.1373 91.6303 18.224 91.6216 18.302C91.6216 18.38 91.6173 18.4407 91.6086 18.484H86.4866C86.5213 18.848 86.6123 19.1643 86.7596 19.433C86.9503 19.771 87.2016 20.0267 87.5136 20.2C87.8256 20.3733 88.1636 20.46 88.5276 20.46C88.9696 20.46 89.338 20.3603 89.6326 20.161C89.936 19.953 90.1743 19.6973 90.3476 19.394L91.5046 19.953C91.2186 20.473 90.8286 20.8977 90.3346 21.227C89.8406 21.5477 89.2253 21.708 88.4886 21.708ZM86.5646 17.431H90.2436C90.235 17.2663 90.1916 17.093 90.1136 16.911C90.0356 16.7203 89.923 16.547 89.7756 16.391C89.6283 16.235 89.442 16.1093 89.2166 16.014C88.9913 15.91 88.727 15.858 88.4236 15.858C88.0423 15.858 87.7043 15.9577 87.4096 16.157C87.115 16.3477 86.8853 16.6163 86.7206 16.963C86.6513 17.1103 86.5993 17.2663 86.5646 17.431ZM95.9906 24.516C95.41 24.516 94.9073 24.4207 94.4826 24.23C94.0666 24.048 93.7286 23.8097 93.4686 23.515C93.2086 23.229 93.0223 22.9343 92.9096 22.631L94.2096 22.085C94.3483 22.4317 94.5693 22.7133 94.8726 22.93C95.1846 23.1553 95.5573 23.268 95.9906 23.268C96.606 23.268 97.087 23.086 97.4336 22.722C97.7803 22.358 97.9536 21.8423 97.9536 21.175V20.538H97.8756C97.6676 20.8413 97.3816 21.0883 97.0176 21.279C96.6536 21.4697 96.2333 21.565 95.7566 21.565C95.1933 21.565 94.6733 21.422 94.1966 21.136C93.7286 20.85 93.3516 20.4513 93.0656 19.94C92.7883 19.42 92.6496 18.8133 92.6496 18.12C92.6496 17.418 92.7883 16.8113 93.0656 16.3C93.3516 15.78 93.7286 15.377 94.1966 15.091C94.6733 14.805 95.1933 14.662 95.7566 14.662C96.2333 14.662 96.6536 14.7573 97.0176 14.948C97.3816 15.13 97.6676 15.3813 97.8756 15.702H97.9536V14.87H99.2926V21.149C99.2926 21.8683 99.1496 22.4793 98.8636 22.982C98.5863 23.4847 98.2006 23.866 97.7066 24.126C97.2126 24.386 96.6406 24.516 95.9906 24.516ZM96.0036 20.291C96.3503 20.291 96.671 20.2087 96.9656 20.044C97.269 19.8707 97.5073 19.6237 97.6806 19.303C97.8626 18.9737 97.9536 18.5793 97.9536 18.12C97.9536 17.6347 97.8626 17.2317 97.6806 16.911C97.5073 16.5903 97.269 16.3477 96.9656 16.183C96.671 16.0183 96.3503 15.936 96.0036 15.936C95.657 15.936 95.332 16.0183 95.0286 16.183C94.734 16.3477 94.4956 16.5947 94.3136 16.924C94.1316 17.2447 94.0406 17.6433 94.0406 18.12C94.0406 18.588 94.1316 18.9867 94.3136 19.316C94.4956 19.6367 94.734 19.8793 95.0286 20.044C95.332 20.2087 95.657 20.291 96.0036 20.291ZM107.505 21.708C107.167 21.708 106.86 21.656 106.582 21.552C106.305 21.448 106.062 21.3137 105.854 21.149C105.655 20.9757 105.495 20.798 105.373 20.616H105.295V21.5H103.969V12.192H105.373V14.844L105.295 15.767H105.373C105.495 15.5763 105.655 15.3987 105.854 15.234C106.062 15.0607 106.305 14.922 106.582 14.818C106.86 14.714 107.167 14.662 107.505 14.662C108.112 14.662 108.654 14.8137 109.13 15.117C109.607 15.4203 109.984 15.8363 110.261 16.365C110.547 16.8937 110.69 17.5003 110.69 18.185C110.69 18.8697 110.547 19.4763 110.261 20.005C109.984 20.5337 109.607 20.9497 109.13 21.253C108.654 21.5563 108.112 21.708 107.505 21.708ZM107.297 20.421C107.644 20.421 107.969 20.33 108.272 20.148C108.584 19.966 108.831 19.706 109.013 19.368C109.204 19.03 109.299 18.6357 109.299 18.185C109.299 17.7257 109.204 17.3313 109.013 17.002C108.831 16.664 108.584 16.404 108.272 16.222C107.969 16.04 107.644 15.949 107.297 15.949C106.951 15.949 106.626 16.04 106.322 16.222C106.019 16.404 105.772 16.664 105.581 17.002C105.391 17.3313 105.295 17.7257 105.295 18.185C105.295 18.6443 105.391 19.043 105.581 19.381C105.772 19.7103 106.019 19.966 106.322 20.148C106.626 20.33 106.951 20.421 107.297 20.421ZM113.988 23.983C113.962 24.0437 113.932 24.1043 113.897 24.165C113.871 24.2343 113.854 24.282 113.845 24.308H112.35C112.394 24.2127 112.454 24.0783 112.532 23.905C112.619 23.7317 112.701 23.5583 112.779 23.385C112.831 23.2723 112.883 23.151 112.935 23.021C112.996 22.891 113.057 22.7567 113.117 22.618C113.187 22.4793 113.252 22.345 113.312 22.215L113.806 21.136L111.037 14.87H112.597L114.495 19.394H114.56L116.393 14.87H117.94L114.508 22.774C114.448 22.9213 114.378 23.0773 114.3 23.242C114.231 23.4067 114.166 23.554 114.105 23.684C114.053 23.8227 114.014 23.9223 113.988 23.983Z" fill="white"/>
|
|
9
|
+
<path d="M76.14 41.772C75.2673 41.772 74.4457 41.6133 73.675 41.296C72.9043 40.9787 72.2243 40.5367 71.635 39.97C71.057 39.392 70.598 38.7177 70.258 37.947C69.9293 37.165 69.765 36.3207 69.765 35.414C69.765 34.5073 69.9293 33.6687 70.258 32.898C70.598 32.116 71.057 31.4417 71.635 30.875C72.2243 30.297 72.9043 29.8493 73.675 29.532C74.4457 29.2147 75.2673 29.056 76.14 29.056C77.0693 29.056 77.925 29.2203 78.707 29.549C79.5003 29.8777 80.1633 30.3367 80.696 30.926L79.404 32.201C79.1433 31.9063 78.843 31.657 78.503 31.453C78.1743 31.249 77.8117 31.096 77.415 30.994C77.0183 30.8807 76.5933 30.824 76.14 30.824C75.5393 30.824 74.967 30.9317 74.423 31.147C73.879 31.3623 73.3973 31.674 72.978 32.082C72.57 32.4787 72.247 32.9603 72.009 33.527C71.771 34.0823 71.652 34.7113 71.652 35.414C71.652 36.1167 71.771 36.7513 72.009 37.318C72.2583 37.8733 72.587 38.355 72.995 38.763C73.4143 39.1597 73.896 39.4657 74.44 39.681C74.984 39.8963 75.5563 40.004 76.157 40.004C76.7123 40.004 77.228 39.9247 77.704 39.766C78.1913 39.6073 78.6163 39.3807 78.979 39.086C79.3417 38.7913 79.6363 38.4343 79.863 38.015C80.0897 37.5843 80.2313 37.1027 80.288 36.57H76.123V34.921H82.039C82.0617 35.057 82.0843 35.2157 82.107 35.397C82.1297 35.567 82.141 35.7313 82.141 35.89V35.907C82.141 36.7797 81.988 37.5787 81.682 38.304C81.3873 39.0293 80.9737 39.6527 80.441 40.174C79.9083 40.684 79.2737 41.0807 78.537 41.364C77.8117 41.636 77.0127 41.772 76.14 41.772ZM87.6149 41.772C86.7195 41.772 85.9319 41.568 85.2519 41.16C84.5719 40.752 84.0392 40.2023 83.6539 39.511C83.2685 38.8083 83.0759 38.0263 83.0759 37.165C83.0759 36.3037 83.2685 35.5273 83.6539 34.836C84.0392 34.1333 84.5719 33.578 85.2519 33.17C85.9319 32.762 86.7195 32.558 87.6149 32.558C88.4989 32.558 89.2809 32.7677 89.9609 33.187C90.6409 33.595 91.1735 34.1447 91.5589 34.836C91.9442 35.5273 92.1369 36.3037 92.1369 37.165C92.1369 38.0263 91.9442 38.8083 91.5589 39.511C91.1735 40.2023 90.6409 40.752 89.9609 41.16C89.2809 41.568 88.4989 41.772 87.6149 41.772ZM87.6149 40.089C88.0909 40.089 88.5329 39.9757 88.9409 39.749C89.3489 39.511 89.6775 39.1767 89.9269 38.746C90.1875 38.304 90.3179 37.777 90.3179 37.165C90.3179 36.553 90.1875 36.0317 89.9269 35.601C89.6775 35.159 89.3489 34.8247 88.9409 34.598C88.5329 34.36 88.0909 34.241 87.6149 34.241C87.1389 34.241 86.6912 34.36 86.2719 34.598C85.8639 34.8247 85.5295 35.159 85.2689 35.601C85.0195 36.0317 84.8949 36.553 84.8949 37.165C84.8949 37.777 85.0195 38.304 85.2689 38.746C85.5295 39.1767 85.8695 39.511 86.2889 39.749C86.7082 39.9757 87.1502 40.089 87.6149 40.089ZM97.9078 41.772C97.0125 41.772 96.2248 41.568 95.5448 41.16C94.8648 40.752 94.3322 40.2023 93.9468 39.511C93.5615 38.8083 93.3688 38.0263 93.3688 37.165C93.3688 36.3037 93.5615 35.5273 93.9468 34.836C94.3322 34.1333 94.8648 33.578 95.5448 33.17C96.2248 32.762 97.0125 32.558 97.9078 32.558C98.7918 32.558 99.5738 32.7677 100.254 33.187C100.934 33.595 101.467 34.1447 101.852 34.836C102.237 35.5273 102.43 36.3037 102.43 37.165C102.43 38.0263 102.237 38.8083 101.852 39.511C101.467 40.2023 100.934 40.752 100.254 41.16C99.5738 41.568 98.7918 41.772 97.9078 41.772ZM97.9078 40.089C98.3838 40.089 98.8258 39.9757 99.2338 39.749C99.6418 39.511 99.9705 39.1767 100.22 38.746C100.481 38.304 100.611 37.777 100.611 37.165C100.611 36.553 100.481 36.0317 100.22 35.601C99.9705 35.159 99.6418 34.8247 99.2338 34.598C98.8258 34.36 98.3838 34.241 97.9078 34.241C97.4318 34.241 96.9842 34.36 96.5648 34.598C96.1568 34.8247 95.8225 35.159 95.5618 35.601C95.3125 36.0317 95.1878 36.553 95.1878 37.165C95.1878 37.777 95.3125 38.304 95.5618 38.746C95.8225 39.1767 96.1625 39.511 96.5818 39.749C97.0012 39.9757 97.4432 40.089 97.9078 40.089ZM108.031 45.444C107.271 45.444 106.614 45.3193 106.059 45.07C105.515 44.832 105.073 44.5203 104.733 44.135C104.393 43.761 104.149 43.3757 104.002 42.979L105.702 42.265C105.883 42.7183 106.172 43.0867 106.569 43.37C106.977 43.6647 107.464 43.812 108.031 43.812C108.835 43.812 109.464 43.574 109.918 43.098C110.371 42.622 110.598 41.9477 110.598 41.075V40.242H110.496C110.224 40.6387 109.85 40.9617 109.374 41.211C108.898 41.4603 108.348 41.585 107.725 41.585C106.988 41.585 106.308 41.398 105.685 41.024C105.073 40.65 104.58 40.1287 104.206 39.46C103.843 38.78 103.662 37.9867 103.662 37.08C103.662 36.162 103.843 35.3687 104.206 34.7C104.58 34.02 105.073 33.493 105.685 33.119C106.308 32.745 106.988 32.558 107.725 32.558C108.348 32.558 108.898 32.6827 109.374 32.932C109.85 33.17 110.224 33.4987 110.496 33.918H110.598V32.83H112.349V41.041C112.349 41.9817 112.162 42.7807 111.788 43.438C111.425 44.0953 110.921 44.594 110.275 44.934C109.629 45.274 108.881 45.444 108.031 45.444ZM108.048 39.919C108.501 39.919 108.92 39.8113 109.306 39.596C109.702 39.3693 110.014 39.0463 110.241 38.627C110.479 38.1963 110.598 37.6807 110.598 37.08C110.598 36.4453 110.479 35.9183 110.241 35.499C110.014 35.0797 109.702 34.7623 109.306 34.547C108.92 34.3317 108.501 34.224 108.048 34.224C107.594 34.224 107.169 34.3317 106.773 34.547C106.387 34.7623 106.076 35.0853 105.838 35.516C105.6 35.9353 105.481 36.4567 105.481 37.08C105.481 37.692 105.6 38.2133 105.838 38.644C106.076 39.0633 106.387 39.3807 106.773 39.596C107.169 39.8113 107.594 39.919 108.048 39.919ZM114.514 41.5V29.328H116.35V41.5H114.514ZM122.392 41.772C121.542 41.772 120.783 41.5737 120.114 41.177C119.446 40.7803 118.919 40.2363 118.533 39.545C118.159 38.8537 117.972 38.066 117.972 37.182C117.972 36.3547 118.154 35.5897 118.516 34.887C118.879 34.1843 119.383 33.6233 120.029 33.204C120.687 32.7733 121.44 32.558 122.29 32.558C123.186 32.558 123.945 32.7507 124.568 33.136C125.203 33.5213 125.685 34.0483 126.013 34.717C126.342 35.3857 126.506 36.1393 126.506 36.978C126.506 37.1027 126.501 37.216 126.489 37.318C126.489 37.42 126.484 37.4993 126.472 37.556H119.774C119.82 38.032 119.939 38.4457 120.131 38.797C120.381 39.239 120.709 39.5733 121.117 39.8C121.525 40.0267 121.967 40.14 122.443 40.14C123.021 40.14 123.503 40.0097 123.888 39.749C124.285 39.477 124.597 39.1427 124.823 38.746L126.336 39.477C125.962 40.157 125.452 40.7123 124.806 41.143C124.16 41.5623 123.356 41.772 122.392 41.772ZM119.876 36.179H124.687C124.676 35.9637 124.619 35.737 124.517 35.499C124.415 35.2497 124.268 35.023 124.075 34.819C123.883 34.615 123.639 34.4507 123.344 34.326C123.05 34.19 122.704 34.122 122.307 34.122C121.809 34.122 121.367 34.2523 120.981 34.513C120.596 34.7623 120.296 35.1137 120.08 35.567C119.99 35.7597 119.922 35.9637 119.876 36.179ZM133.979 41.5L130.715 29.328H132.789L134.727 37.233L134.931 38.287H135.033L135.288 37.233L137.736 29.328H139.606L141.952 37.233L142.207 38.27H142.309L142.513 37.233L144.451 29.328H146.508L143.295 41.5H141.323L138.994 33.425L138.722 32.286H138.62L138.331 33.425L135.9 41.5H133.979ZM149.922 41.772C149.299 41.772 148.743 41.6473 148.256 41.398C147.78 41.1487 147.4 40.8087 147.117 40.378C146.845 39.936 146.709 39.4317 146.709 38.865C146.709 38.2417 146.868 37.7147 147.185 37.284C147.514 36.8533 147.95 36.5247 148.494 36.298C149.038 36.0713 149.639 35.958 150.296 35.958C150.659 35.958 150.993 35.9863 151.299 36.043C151.616 36.0883 151.888 36.145 152.115 36.213C152.353 36.281 152.54 36.3547 152.676 36.434V35.975C152.676 35.4083 152.472 34.955 152.064 34.615C151.656 34.275 151.129 34.105 150.483 34.105C150.041 34.105 149.622 34.207 149.225 34.411C148.828 34.6037 148.511 34.87 148.273 35.21L147.015 34.241C147.264 33.8897 147.565 33.5893 147.916 33.34C148.279 33.0907 148.681 32.898 149.123 32.762C149.576 32.626 150.047 32.558 150.534 32.558C151.792 32.558 152.761 32.8697 153.441 33.493C154.121 34.105 154.461 34.9663 154.461 36.077V41.5H152.676V40.429H152.574C152.427 40.6557 152.223 40.871 151.962 41.075C151.713 41.279 151.412 41.4433 151.061 41.568C150.721 41.704 150.341 41.772 149.922 41.772ZM150.245 40.276C150.721 40.276 151.14 40.1627 151.503 39.936C151.877 39.7093 152.166 39.4147 152.37 39.052C152.574 38.678 152.676 38.2757 152.676 37.845C152.427 37.6977 152.121 37.5787 151.758 37.488C151.407 37.386 151.033 37.335 150.636 37.335C149.888 37.335 149.355 37.4823 149.038 37.777C148.721 38.0717 148.562 38.44 148.562 38.882C148.562 39.29 148.715 39.6243 149.021 39.885C149.327 40.1457 149.735 40.276 150.245 40.276ZM156.499 41.5V29.328H158.335V41.5H156.499ZM160.517 41.5V29.328H162.353V41.5H160.517ZM168.395 41.772C167.545 41.772 166.786 41.5737 166.117 41.177C165.449 40.7803 164.922 40.2363 164.536 39.545C164.162 38.8537 163.975 38.066 163.975 37.182C163.975 36.3547 164.157 35.5897 164.519 34.887C164.882 34.1843 165.386 33.6233 166.032 33.204C166.69 32.7733 167.443 32.558 168.293 32.558C169.189 32.558 169.948 32.7507 170.571 33.136C171.206 33.5213 171.688 34.0483 172.016 34.717C172.345 35.3857 172.509 36.1393 172.509 36.978C172.509 37.1027 172.504 37.216 172.492 37.318C172.492 37.42 172.487 37.4993 172.475 37.556H165.777C165.823 38.032 165.942 38.4457 166.134 38.797C166.384 39.239 166.712 39.5733 167.12 39.8C167.528 40.0267 167.97 40.14 168.446 40.14C169.024 40.14 169.506 40.0097 169.891 39.749C170.288 39.477 170.6 39.1427 170.826 38.746L172.339 39.477C171.965 40.157 171.455 40.7123 170.809 41.143C170.163 41.5623 169.359 41.772 168.395 41.772ZM165.879 36.179H170.69C170.679 35.9637 170.622 35.737 170.52 35.499C170.418 35.2497 170.271 35.023 170.078 34.819C169.886 34.615 169.642 34.4507 169.347 34.326C169.053 34.19 168.707 34.122 168.31 34.122C167.812 34.122 167.37 34.2523 166.984 34.513C166.599 34.7623 166.299 35.1137 166.083 35.567C165.993 35.7597 165.925 35.9637 165.879 36.179ZM173.369 32.83H174.882V30.382H176.718V32.83H178.843V34.428H176.718V38.593C176.718 39.0237 176.803 39.3523 176.973 39.579C177.154 39.8057 177.454 39.919 177.874 39.919C178.078 39.919 178.259 39.8907 178.418 39.834C178.576 39.766 178.735 39.6867 178.894 39.596V41.381C178.701 41.4603 178.497 41.5227 178.282 41.568C178.066 41.6133 177.811 41.636 177.517 41.636C176.712 41.636 176.072 41.4037 175.596 40.939C175.12 40.463 174.882 39.8113 174.882 38.984V34.428H173.369V32.83Z" fill="white"/>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg width="228" height="55" viewBox="0 0 228 55" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="0.5" y="0.5" width="227" height="54" rx="27" fill="#1F1F1F"/>
|
|
3
|
+
<rect x="0.5" y="0.5" width="227" height="54" rx="27" stroke="#747775"/>
|
|
4
|
+
<path d="M57 23.791H21V18.1455C21 15.0808 23.6422 12.5 26.7798 12.5H51.2202C54.3578 12.5 57 15.0808 57 18.1455V23.791Z" fill="#34A853"/>
|
|
5
|
+
<path d="M57 29H21V23C21 19.7429 23.6422 17 26.7798 17H51.2202C54.3578 17 57 19.7429 57 23V29Z" fill="#FBBC04"/>
|
|
6
|
+
<path d="M57 34H21V28C21 24.7429 23.6422 22 26.7798 22H51.2202C54.3578 22 57 24.7429 57 28V34Z" fill="#EA4335"/>
|
|
7
|
+
<path d="M21 25.2406L43.8493 30.4022C46.4795 31.0473 49.4384 30.4022 51.5753 28.7892L57 24.918V37.0154C57 40.0801 54.3699 42.4996 51.2466 42.4996H26.7534C23.6301 42.4996 21 40.0801 21 37.0154V25.2406Z" fill="#4285F4"/>
|
|
8
|
+
<path d="M72.757 24.514C72.179 24.514 71.652 24.4007 71.176 24.174C70.7113 23.9473 70.3373 23.5507 70.054 22.984C69.782 22.406 69.646 21.6127 69.646 20.604C69.646 19.3913 69.8557 18.36 70.275 17.51C70.7057 16.66 71.295 15.997 72.043 15.521C72.8023 15.0337 73.675 14.7503 74.661 14.671L76.48 14.518V15.334L76.565 15.368C76.6557 15.2433 76.7803 15.1187 76.939 14.994C77.0977 14.858 77.3073 14.7447 77.568 14.654C77.84 14.5633 78.163 14.518 78.537 14.518C79.1263 14.518 79.642 14.6597 80.084 14.943C80.526 15.215 80.8717 15.6683 81.121 16.303C81.3703 16.9263 81.495 17.765 81.495 18.819C81.495 19.9183 81.3363 20.8477 81.019 21.607C80.713 22.3663 80.254 22.9387 79.642 23.324C79.0413 23.7093 78.299 23.902 77.415 23.902C77.0183 23.902 76.6953 23.868 76.446 23.8C76.208 23.732 76.0267 23.6527 75.902 23.562C75.7773 23.46 75.681 23.375 75.613 23.307H75.511C75.409 23.4657 75.2447 23.6413 75.018 23.834C74.8027 24.0267 74.508 24.191 74.134 24.327C73.7713 24.4517 73.3123 24.514 72.757 24.514ZM72.995 22.95C73.3123 22.95 73.5957 22.8933 73.845 22.78C74.0943 22.6667 74.2927 22.4797 74.44 22.219C74.5873 21.9583 74.661 21.624 74.661 21.216V16.252C74.0377 16.3087 73.488 16.5127 73.012 16.864C72.5473 17.204 72.179 17.68 71.907 18.292C71.6463 18.8927 71.516 19.6237 71.516 20.485C71.516 21.4143 71.6407 22.0603 71.89 22.423C72.1507 22.7743 72.519 22.95 72.995 22.95ZM77.466 22.338C77.8513 22.338 78.2027 22.236 78.52 22.032C78.8487 21.8167 79.1093 21.471 79.302 20.995C79.506 20.519 79.608 19.873 79.608 19.057C79.608 18.3317 79.5457 17.7537 79.421 17.323C79.2963 16.8923 79.1093 16.5807 78.86 16.388C78.622 16.184 78.3273 16.082 77.976 16.082C77.5567 16.082 77.211 16.1897 76.939 16.405C76.6783 16.6203 76.5253 16.9093 76.48 17.272V21.097C76.48 21.5277 76.5423 21.845 76.667 22.049C76.803 22.2417 77.0693 22.338 77.466 22.338ZM86.4838 18.989C86.5632 19.2723 86.6765 19.5727 86.8238 19.89C86.9712 20.2073 87.1355 20.519 87.3168 20.825C87.4982 21.131 87.6795 21.42 87.8608 21.692C88.0535 21.9527 88.2292 22.168 88.3878 22.338H92.0768C92.0542 22.508 92.0315 22.7063 92.0088 22.933C91.9975 23.1597 91.9918 23.409 91.9918 23.681C91.9918 23.885 92.0032 24.1173 92.0258 24.378C92.0485 24.6387 92.0768 24.8823 92.1108 25.109C92.1562 25.3243 92.1958 25.4887 92.2298 25.602L90.4108 25.789C90.3542 25.6643 90.3032 25.4887 90.2578 25.262C90.2125 25.0353 90.1728 24.7917 90.1388 24.531C90.1162 24.2703 90.1048 24.038 90.1048 23.834H84.6308C84.6308 24.004 84.6195 24.208 84.5968 24.446C84.5855 24.684 84.5628 24.9163 84.5288 25.143C84.4948 25.3697 84.4495 25.551 84.3928 25.687L82.5568 25.534C82.6022 25.4093 82.6362 25.2393 82.6588 25.024C82.6928 24.8087 82.7155 24.582 82.7268 24.344C82.7495 24.0947 82.7608 23.8737 82.7608 23.681C82.7608 23.3977 82.7495 23.137 82.7268 22.899C82.7155 22.6497 82.6985 22.4627 82.6758 22.338H86.1778V22.304C86.0532 22.168 85.8718 21.93 85.6338 21.59C85.4072 21.25 85.1748 20.8307 84.9368 20.332C84.6988 19.8333 84.4948 19.2723 84.3248 18.649C84.1662 18.0143 84.0868 17.34 84.0868 16.626C84.0868 15.2093 84.4495 14.127 85.1748 13.379C85.9115 12.6197 86.9428 12.24 88.2688 12.24C89.3002 12.24 90.0652 12.512 90.5638 13.056C91.0738 13.5887 91.3288 14.3083 91.3288 15.215C91.3288 16.0537 91.1135 16.7393 90.6828 17.272C90.2635 17.7933 89.6855 18.19 88.9488 18.462C88.2235 18.7227 87.4018 18.8983 86.4838 18.989ZM86.0588 17.442C86.8522 17.3853 87.4982 17.2607 87.9968 17.068C88.4955 16.864 88.8582 16.6033 89.0848 16.286C89.3228 15.9687 89.4418 15.6117 89.4418 15.215C89.4418 14.7843 89.3285 14.4443 89.1018 14.195C88.8865 13.9343 88.5578 13.804 88.1158 13.804C87.4585 13.804 86.9372 14.042 86.5518 14.518C86.1665 14.994 85.9738 15.6853 85.9738 16.592C85.9738 16.8073 85.9795 16.983 85.9908 17.119C86.0135 17.255 86.0362 17.3627 86.0588 17.442Z" fill="white"/>
|
|
9
|
+
<path d="M105.14 25.772C104.267 25.772 103.446 25.6133 102.675 25.296C101.904 24.9787 101.224 24.5367 100.635 23.97C100.057 23.392 99.598 22.7177 99.258 21.947C98.9293 21.165 98.765 20.3207 98.765 19.414C98.765 18.5073 98.9293 17.6687 99.258 16.898C99.598 16.116 100.057 15.4417 100.635 14.875C101.224 14.297 101.904 13.8493 102.675 13.532C103.446 13.2147 104.267 13.056 105.14 13.056C106.069 13.056 106.925 13.2203 107.707 13.549C108.5 13.8777 109.163 14.3367 109.696 14.926L108.404 16.201C108.143 15.9063 107.843 15.657 107.503 15.453C107.174 15.249 106.812 15.096 106.415 14.994C106.018 14.8807 105.593 14.824 105.14 14.824C104.539 14.824 103.967 14.9317 103.423 15.147C102.879 15.3623 102.397 15.674 101.978 16.082C101.57 16.4787 101.247 16.9603 101.009 17.527C100.771 18.0823 100.652 18.7113 100.652 19.414C100.652 20.1167 100.771 20.7513 101.009 21.318C101.258 21.8733 101.587 22.355 101.995 22.763C102.414 23.1597 102.896 23.4657 103.44 23.681C103.984 23.8963 104.556 24.004 105.157 24.004C105.712 24.004 106.228 23.9247 106.704 23.766C107.191 23.6073 107.616 23.3807 107.979 23.086C108.342 22.7913 108.636 22.4343 108.863 22.015C109.09 21.5843 109.231 21.1027 109.288 20.57H105.123V18.921H111.039C111.062 19.057 111.084 19.2157 111.107 19.397C111.13 19.567 111.141 19.7313 111.141 19.89V19.907C111.141 20.7797 110.988 21.5787 110.682 22.304C110.387 23.0293 109.974 23.6527 109.441 24.174C108.908 24.684 108.274 25.0807 107.537 25.364C106.812 25.636 106.013 25.772 105.14 25.772ZM116.615 25.772C115.72 25.772 114.932 25.568 114.252 25.16C113.572 24.752 113.039 24.2023 112.654 23.511C112.269 22.8083 112.076 22.0263 112.076 21.165C112.076 20.3037 112.269 19.5273 112.654 18.836C113.039 18.1333 113.572 17.578 114.252 17.17C114.932 16.762 115.72 16.558 116.615 16.558C117.499 16.558 118.281 16.7677 118.961 17.187C119.641 17.595 120.174 18.1447 120.559 18.836C120.944 19.5273 121.137 20.3037 121.137 21.165C121.137 22.0263 120.944 22.8083 120.559 23.511C120.174 24.2023 119.641 24.752 118.961 25.16C118.281 25.568 117.499 25.772 116.615 25.772ZM116.615 24.089C117.091 24.089 117.533 23.9757 117.941 23.749C118.349 23.511 118.678 23.1767 118.927 22.746C119.188 22.304 119.318 21.777 119.318 21.165C119.318 20.553 119.188 20.0317 118.927 19.601C118.678 19.159 118.349 18.8247 117.941 18.598C117.533 18.36 117.091 18.241 116.615 18.241C116.139 18.241 115.691 18.36 115.272 18.598C114.864 18.8247 114.53 19.159 114.269 19.601C114.02 20.0317 113.895 20.553 113.895 21.165C113.895 21.777 114.02 22.304 114.269 22.746C114.53 23.1767 114.87 23.511 115.289 23.749C115.708 23.9757 116.15 24.089 116.615 24.089ZM126.908 25.772C126.013 25.772 125.225 25.568 124.545 25.16C123.865 24.752 123.332 24.2023 122.947 23.511C122.562 22.8083 122.369 22.0263 122.369 21.165C122.369 20.3037 122.562 19.5273 122.947 18.836C123.332 18.1333 123.865 17.578 124.545 17.17C125.225 16.762 126.013 16.558 126.908 16.558C127.792 16.558 128.574 16.7677 129.254 17.187C129.934 17.595 130.467 18.1447 130.852 18.836C131.237 19.5273 131.43 20.3037 131.43 21.165C131.43 22.0263 131.237 22.8083 130.852 23.511C130.467 24.2023 129.934 24.752 129.254 25.16C128.574 25.568 127.792 25.772 126.908 25.772ZM126.908 24.089C127.384 24.089 127.826 23.9757 128.234 23.749C128.642 23.511 128.971 23.1767 129.22 22.746C129.481 22.304 129.611 21.777 129.611 21.165C129.611 20.553 129.481 20.0317 129.22 19.601C128.971 19.159 128.642 18.8247 128.234 18.598C127.826 18.36 127.384 18.241 126.908 18.241C126.432 18.241 125.984 18.36 125.565 18.598C125.157 18.8247 124.823 19.159 124.562 19.601C124.313 20.0317 124.188 20.553 124.188 21.165C124.188 21.777 124.313 22.304 124.562 22.746C124.823 23.1767 125.163 23.511 125.582 23.749C126.001 23.9757 126.443 24.089 126.908 24.089ZM137.031 29.444C136.271 29.444 135.614 29.3193 135.059 29.07C134.515 28.832 134.073 28.5203 133.733 28.135C133.393 27.761 133.149 27.3757 133.002 26.979L134.702 26.265C134.883 26.7183 135.172 27.0867 135.569 27.37C135.977 27.6647 136.464 27.812 137.031 27.812C137.835 27.812 138.464 27.574 138.918 27.098C139.371 26.622 139.598 25.9477 139.598 25.075V24.242H139.496C139.224 24.6387 138.85 24.9617 138.374 25.211C137.898 25.4603 137.348 25.585 136.725 25.585C135.988 25.585 135.308 25.398 134.685 25.024C134.073 24.65 133.58 24.1287 133.206 23.46C132.843 22.78 132.662 21.9867 132.662 21.08C132.662 20.162 132.843 19.3687 133.206 18.7C133.58 18.02 134.073 17.493 134.685 17.119C135.308 16.745 135.988 16.558 136.725 16.558C137.348 16.558 137.898 16.6827 138.374 16.932C138.85 17.17 139.224 17.4987 139.496 17.918H139.598V16.83H141.349V25.041C141.349 25.9817 141.162 26.7807 140.788 27.438C140.425 28.0953 139.921 28.594 139.275 28.934C138.629 29.274 137.881 29.444 137.031 29.444ZM137.048 23.919C137.501 23.919 137.92 23.8113 138.306 23.596C138.702 23.3693 139.014 23.0463 139.241 22.627C139.479 22.1963 139.598 21.6807 139.598 21.08C139.598 20.4453 139.479 19.9183 139.241 19.499C139.014 19.0797 138.702 18.7623 138.306 18.547C137.92 18.3317 137.501 18.224 137.048 18.224C136.594 18.224 136.169 18.3317 135.773 18.547C135.387 18.7623 135.076 19.0853 134.838 19.516C134.6 19.9353 134.481 20.4567 134.481 21.08C134.481 21.692 134.6 22.2133 134.838 22.644C135.076 23.0633 135.387 23.3807 135.773 23.596C136.169 23.8113 136.594 23.919 137.048 23.919ZM143.514 25.5V13.328H145.35V25.5H143.514ZM151.392 25.772C150.542 25.772 149.783 25.5737 149.114 25.177C148.446 24.7803 147.919 24.2363 147.533 23.545C147.159 22.8537 146.972 22.066 146.972 21.182C146.972 20.3547 147.154 19.5897 147.516 18.887C147.879 18.1843 148.383 17.6233 149.029 17.204C149.687 16.7733 150.44 16.558 151.29 16.558C152.186 16.558 152.945 16.7507 153.568 17.136C154.203 17.5213 154.685 18.0483 155.013 18.717C155.342 19.3857 155.506 20.1393 155.506 20.978C155.506 21.1027 155.501 21.216 155.489 21.318C155.489 21.42 155.484 21.4993 155.472 21.556H148.774C148.82 22.032 148.939 22.4457 149.131 22.797C149.381 23.239 149.709 23.5733 150.117 23.8C150.525 24.0267 150.967 24.14 151.443 24.14C152.021 24.14 152.503 24.0097 152.888 23.749C153.285 23.477 153.597 23.1427 153.823 22.746L155.336 23.477C154.962 24.157 154.452 24.7123 153.806 25.143C153.16 25.5623 152.356 25.772 151.392 25.772ZM148.876 20.179H153.687C153.676 19.9637 153.619 19.737 153.517 19.499C153.415 19.2497 153.268 19.023 153.075 18.819C152.883 18.615 152.639 18.4507 152.344 18.326C152.05 18.19 151.704 18.122 151.307 18.122C150.809 18.122 150.367 18.2523 149.981 18.513C149.596 18.7623 149.296 19.1137 149.08 19.567C148.99 19.7597 148.922 19.9637 148.876 20.179ZM162.979 25.5L159.715 13.328H161.789L163.727 21.233L163.931 22.287H164.033L164.288 21.233L166.736 13.328H168.606L170.952 21.233L171.207 22.27H171.309L171.513 21.233L173.451 13.328H175.508L172.295 25.5H170.323L167.994 17.425L167.722 16.286H167.62L167.331 17.425L164.9 25.5H162.979ZM178.922 25.772C178.299 25.772 177.743 25.6473 177.256 25.398C176.78 25.1487 176.4 24.8087 176.117 24.378C175.845 23.936 175.709 23.4317 175.709 22.865C175.709 22.2417 175.868 21.7147 176.185 21.284C176.514 20.8533 176.95 20.5247 177.494 20.298C178.038 20.0713 178.639 19.958 179.296 19.958C179.659 19.958 179.993 19.9863 180.299 20.043C180.616 20.0883 180.888 20.145 181.115 20.213C181.353 20.281 181.54 20.3547 181.676 20.434V19.975C181.676 19.4083 181.472 18.955 181.064 18.615C180.656 18.275 180.129 18.105 179.483 18.105C179.041 18.105 178.622 18.207 178.225 18.411C177.828 18.6037 177.511 18.87 177.273 19.21L176.015 18.241C176.264 17.8897 176.565 17.5893 176.916 17.34C177.279 17.0907 177.681 16.898 178.123 16.762C178.576 16.626 179.047 16.558 179.534 16.558C180.792 16.558 181.761 16.8697 182.441 17.493C183.121 18.105 183.461 18.9663 183.461 20.077V25.5H181.676V24.429H181.574C181.427 24.6557 181.223 24.871 180.962 25.075C180.713 25.279 180.412 25.4433 180.061 25.568C179.721 25.704 179.341 25.772 178.922 25.772ZM179.245 24.276C179.721 24.276 180.14 24.1627 180.503 23.936C180.877 23.7093 181.166 23.4147 181.37 23.052C181.574 22.678 181.676 22.2757 181.676 21.845C181.427 21.6977 181.121 21.5787 180.758 21.488C180.407 21.386 180.033 21.335 179.636 21.335C178.888 21.335 178.355 21.4823 178.038 21.777C177.721 22.0717 177.562 22.44 177.562 22.882C177.562 23.29 177.715 23.6243 178.021 23.885C178.327 24.1457 178.735 24.276 179.245 24.276ZM185.499 25.5V13.328H187.335V25.5H185.499ZM189.517 25.5V13.328H191.353V25.5H189.517ZM197.395 25.772C196.545 25.772 195.786 25.5737 195.117 25.177C194.449 24.7803 193.922 24.2363 193.536 23.545C193.162 22.8537 192.975 22.066 192.975 21.182C192.975 20.3547 193.157 19.5897 193.519 18.887C193.882 18.1843 194.386 17.6233 195.032 17.204C195.69 16.7733 196.443 16.558 197.293 16.558C198.189 16.558 198.948 16.7507 199.571 17.136C200.206 17.5213 200.688 18.0483 201.016 18.717C201.345 19.3857 201.509 20.1393 201.509 20.978C201.509 21.1027 201.504 21.216 201.492 21.318C201.492 21.42 201.487 21.4993 201.475 21.556H194.777C194.823 22.032 194.942 22.4457 195.134 22.797C195.384 23.239 195.712 23.5733 196.12 23.8C196.528 24.0267 196.97 24.14 197.446 24.14C198.024 24.14 198.506 24.0097 198.891 23.749C199.288 23.477 199.6 23.1427 199.826 22.746L201.339 23.477C200.965 24.157 200.455 24.7123 199.809 25.143C199.163 25.5623 198.359 25.772 197.395 25.772ZM194.879 20.179H199.69C199.679 19.9637 199.622 19.737 199.52 19.499C199.418 19.2497 199.271 19.023 199.078 18.819C198.886 18.615 198.642 18.4507 198.347 18.326C198.053 18.19 197.707 18.122 197.31 18.122C196.812 18.122 196.37 18.2523 195.984 18.513C195.599 18.7623 195.299 19.1137 195.083 19.567C194.993 19.7597 194.925 19.9637 194.879 20.179ZM202.369 16.83H203.882V14.382H205.718V16.83H207.843V18.428H205.718V22.593C205.718 23.0237 205.803 23.3523 205.973 23.579C206.154 23.8057 206.454 23.919 206.874 23.919C207.078 23.919 207.259 23.8907 207.418 23.834C207.576 23.766 207.735 23.6867 207.894 23.596V25.381C207.701 25.4603 207.497 25.5227 207.282 25.568C207.066 25.6133 206.811 25.636 206.517 25.636C205.712 25.636 205.072 25.4037 204.596 24.939C204.12 24.463 203.882 23.8113 203.882 22.984V18.428H202.369V16.83Z" fill="white"/>
|
|
10
|
+
<path d="M70.235 41.565C70.027 41.591 69.8493 41.5433 69.702 41.422C69.5633 41.3007 69.494 41.0623 69.494 40.707C69.494 40.2563 69.5807 39.758 69.754 39.212C69.9273 38.6573 70.1527 38.1027 70.43 37.548C70.7073 36.9847 71.0063 36.4473 71.327 35.936C71.6477 35.416 71.9467 34.961 72.224 34.571L72.198 34.532H70.911V32.517C70.911 32.257 70.8893 32.0403 70.846 31.867C70.8113 31.685 70.755 31.5333 70.677 31.412C70.6077 31.282 70.508 31.1693 70.378 31.074L71.691 30.983C71.9423 30.9657 72.1113 31.0697 72.198 31.295C72.2847 31.5203 72.328 31.9103 72.328 32.465V33.375H74.642L74.681 33.466C74.395 33.804 74.096 34.1897 73.784 34.623C73.4807 35.0477 73.186 35.4897 72.9 35.949L72.926 35.988C73.1427 35.9187 73.3983 35.8537 73.693 35.793C73.9877 35.7323 74.2823 35.702 74.577 35.702C74.837 35.702 75.045 35.7583 75.201 35.871C75.3657 35.9837 75.5 36.1873 75.604 36.482C75.708 36.768 75.8033 37.1753 75.89 37.704L76.345 40.265C76.3883 40.525 76.4447 40.7373 76.514 40.902C76.5833 41.058 76.657 41.1793 76.735 41.266C76.8217 41.3527 76.9083 41.4177 76.995 41.461L75.799 41.578C75.6257 41.5953 75.487 41.578 75.383 41.526C75.279 41.4827 75.1923 41.37 75.123 41.188C75.0537 40.9973 74.9843 40.6983 74.915 40.291L74.473 37.704C74.4297 37.4527 74.356 37.2577 74.252 37.119C74.1567 36.9717 73.9573 36.898 73.654 36.898C73.3593 36.898 73.069 36.937 72.783 37.015C72.5057 37.0843 72.302 37.145 72.172 37.197C72.068 37.3703 71.9467 37.6 71.808 37.886C71.6693 38.1633 71.5307 38.4667 71.392 38.796C71.262 39.1253 71.1493 39.4547 71.054 39.784C70.9673 40.1133 70.924 40.421 70.924 40.707C70.924 40.9497 70.9543 41.123 71.015 41.227C71.0843 41.331 71.1753 41.409 71.288 41.461L70.235 41.565ZM79.5124 41.565C79.3824 41.5737 79.2784 41.5563 79.2004 41.513C79.1311 41.4697 79.0618 41.3917 78.9924 41.279C78.9144 41.1317 78.8408 40.9237 78.7714 40.655C78.7108 40.3863 78.6804 40.0873 78.6804 39.758C78.6804 39.16 78.7541 38.666 78.9014 38.276C79.0488 37.886 79.1874 37.6087 79.3174 37.444H78.3554C78.3814 36.56 78.5504 35.7887 78.8624 35.13C79.0964 34.636 79.3998 34.2243 79.7724 33.895H78.9144V32.075C78.9144 31.685 78.8711 31.386 78.7844 31.178C78.7064 30.97 78.5721 30.788 78.3814 30.632L79.6944 30.541C79.8591 30.5237 79.9891 30.5627 80.0844 30.658C80.1798 30.7533 80.2448 30.9137 80.2794 31.139C80.3141 31.3557 80.3314 31.6503 80.3314 32.023V33.492C80.8514 33.1973 81.4581 33.05 82.1514 33.05C83.1048 33.05 83.7894 33.297 84.2054 33.791C84.6301 34.285 84.8424 35.0217 84.8424 36.001C84.8424 36.5817 84.8078 37.1623 84.7384 37.743C84.6691 38.3237 84.6344 38.9173 84.6344 39.524C84.6344 39.9833 84.6648 40.343 84.7254 40.603C84.7861 40.8543 84.8641 41.0407 84.9594 41.162C85.0548 41.2833 85.1501 41.383 85.2454 41.461L83.9194 41.565C83.7634 41.5823 83.6334 41.5347 83.5294 41.422C83.4254 41.3093 83.3431 41.11 83.2824 40.824C83.2304 40.5293 83.2044 40.1177 83.2044 39.589C83.2044 38.939 83.2391 38.341 83.3084 37.795C83.3864 37.249 83.4254 36.6987 83.4254 36.144C83.4254 35.4767 83.3128 35.0043 83.0874 34.727C82.8621 34.441 82.5068 34.298 82.0214 34.298C81.6141 34.298 81.2674 34.389 80.9814 34.571C80.6954 34.753 80.4658 35 80.2924 35.312C80.1278 35.6153 80.0151 35.9707 79.9544 36.378H81.6834C81.4408 36.586 81.1981 36.8503 80.9554 37.171C80.7128 37.483 80.5091 37.8427 80.3444 38.25C80.1884 38.6573 80.1104 39.1167 80.1104 39.628C80.1104 40.1047 80.1798 40.486 80.3184 40.772C80.4571 41.058 80.6174 41.2877 80.7994 41.461L79.5124 41.565ZM88.4895 37.834L88.5415 37.873C88.6109 37.847 88.7192 37.8123 88.8665 37.769C89.0225 37.7257 89.2435 37.704 89.5295 37.704C89.8589 37.704 90.1709 37.7647 90.4655 37.886C90.7602 38.0073 91.0029 38.211 91.1935 38.497C91.3842 38.783 91.4795 39.1687 91.4795 39.654C91.4795 40.1133 91.3799 40.499 91.1805 40.811C90.9899 41.1143 90.7212 41.3397 90.3745 41.487C90.0279 41.6343 89.6249 41.708 89.1655 41.708C88.7062 41.708 88.3075 41.6343 87.9695 41.487C87.6315 41.331 87.3715 41.0537 87.1895 40.655C87.0075 40.2563 86.9165 39.6973 86.9165 38.978C86.9165 38.224 87.0509 37.496 87.3195 36.794C87.5882 36.092 87.9522 35.4507 88.4115 34.87C88.8709 34.2807 89.3909 33.7867 89.9715 33.388L89.6335 31.581L91.0505 31.321L91.4015 33.31C91.9302 33.6307 92.3375 34.0207 92.6235 34.48C92.9095 34.9393 93.1305 35.4723 93.2865 36.079C93.4512 36.6857 93.5899 37.366 93.7025 38.12L94.0275 40.187C94.0709 40.4557 94.1229 40.6723 94.1835 40.837C94.2529 40.993 94.3309 41.1187 94.4175 41.214C94.5042 41.3007 94.5995 41.383 94.7035 41.461L93.5205 41.578C93.3472 41.5953 93.1999 41.578 93.0785 41.526C92.9659 41.4827 92.8705 41.3657 92.7925 41.175C92.7232 40.9843 92.6582 40.694 92.5975 40.304L92.2985 38.289C92.1512 37.249 91.9562 36.4213 91.7135 35.806C91.4709 35.182 91.1459 34.753 90.7385 34.519C90.4439 34.6923 90.1665 34.9177 89.9065 35.195C89.6552 35.4637 89.4299 35.7583 89.2305 36.079C89.0312 36.3997 88.8665 36.7117 88.7365 37.015C88.6065 37.3183 88.5242 37.5913 88.4895 37.834ZM89.1655 40.551C89.4169 40.551 89.6249 40.4773 89.7895 40.33C89.9542 40.1827 90.0365 39.9703 90.0365 39.693C90.0365 39.407 89.9585 39.199 89.8025 39.069C89.6465 38.9303 89.4429 38.861 89.1915 38.861C88.9662 38.861 88.7842 38.8913 88.6455 38.952C88.5069 39.004 88.4072 39.056 88.3465 39.108C88.3465 39.2813 88.3552 39.4547 88.3725 39.628C88.3899 39.7927 88.4245 39.9487 88.4765 40.096C88.5285 40.2347 88.6065 40.3473 88.7105 40.434C88.8232 40.512 88.9749 40.551 89.1655 40.551Z" fill="white"/>
|
|
11
|
+
</svg>
|