@volcengine/veplayer 1.15.1 → 1.15.2-rc.1
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.
Potentially problematic release.
This version of @volcengine/veplayer might be problematic. Click here for more details.
- package/.changeset/config.json +11 -0
- package/.changeset/curvy-yaks-smoke.md +5 -0
- package/.changeset/neat-eyes-search.md +5 -0
- package/.codebase/pipelines/create-api-doc.yaml +16 -0
- package/.eslintignore +5 -0
- package/.eslintrc.json +53 -0
- package/.stylelintrc.js +51 -0
- package/CHANGELOG.md +5665 -0
- package/DEV_README.md +39 -0
- package/LICENSE +20 -0
- package/README_EN.md +46 -0
- package/build.sh +44 -0
- package/docg.config.js +65 -0
- package/env/byteplus.js +30 -0
- package/env/volcengine.js +50 -0
- package/fixtures/favicon.ico +0 -0
- package/fixtures/index.base.js +59 -0
- package/fixtures/index.html +41 -0
- package/fixtures/index.js +185 -0
- package/libd.config.js +147 -0
- package/localhost+2-key.pem +28 -0
- package/localhost+2.pem +26 -0
- package/lux.config.mjs +37 -0
- package/package.json +123 -4
- package/sdkhub.config.json +10 -0
- package/src/@types/global.d.ts +35 -0
- package/src/assets/common/error.svg +3 -0
- package/src/assets/common/errorImg.png +0 -0
- package/src/assets/common/errorImg.svg +12 -0
- package/src/assets/icons/mobile/definition.svg +3 -0
- package/src/assets/icons/mobile/line.svg +3 -0
- package/src/assets/icons/mobile/mobileDanmu.svg +1 -0
- package/src/assets/icons/mobile/mobileDanmuAcitive.svg +1 -0
- package/src/assets/icons/mobile/mobileDanmuSetting.svg +1 -0
- package/src/assets/icons/mobile/mobileExitFullscreen.svg +1 -0
- package/src/assets/icons/mobile/mobileFullscreen.svg +1 -0
- package/src/assets/icons/mobile/mobilePause.svg +4 -0
- package/src/assets/icons/mobile/mobilePlay.svg +4 -0
- package/src/assets/icons/mobile/mobilePlaynext.svg +1 -0
- package/src/assets/icons/mobile/mobileRefresh.svg +1 -0
- package/src/assets/icons/mobile/more.svg +3 -0
- package/src/assets/icons/mobile/muted.svg +22 -0
- package/src/assets/icons/mobile/playbackrate.svg +3 -0
- package/src/assets/icons/pc/danmu.svg +1 -0
- package/src/assets/icons/pc/danmuActive.svg +1 -0
- package/src/assets/icons/pc/danmuSettings.svg +1 -0
- package/src/assets/icons/pc/download.svg +14 -0
- package/src/assets/icons/pc/exitFullscreen.svg +1 -0
- package/src/assets/icons/pc/exitMirror.svg +10 -0
- package/src/assets/icons/pc/extend.svg +1 -0
- package/src/assets/icons/pc/fullscreen.svg +1 -0
- package/src/assets/icons/pc/getMirror.svg +10 -0
- package/src/assets/icons/pc/list.svg +20 -0
- package/src/assets/icons/pc/noPoster.svg +119 -0
- package/src/assets/icons/pc/pause.svg +1 -0
- package/src/assets/icons/pc/pip.svg +1 -0
- package/src/assets/icons/pc/pipExit.svg +1 -0
- package/src/assets/icons/pc/play-next-btn.svg +4 -0
- package/src/assets/icons/pc/play.svg +1 -0
- package/src/assets/icons/pc/playNext.svg +1 -0
- package/src/assets/icons/pc/playerLoading.svg +1 -0
- package/src/assets/icons/pc/refresh.svg +1 -0
- package/src/assets/icons/pc/replay.svg +1 -0
- package/src/assets/icons/pc/reset.svg +6 -0
- package/src/assets/icons/pc/startPlay.svg +1 -0
- package/src/assets/icons/pc/subtitleclose.svg +5 -0
- package/src/assets/icons/pc/subtitleopen.svg +3 -0
- package/src/assets/icons/pc/theaterEnter.svg +1 -0
- package/src/assets/icons/pc/theaterExit.svg +1 -0
- package/src/assets/icons/pc/volumeLarge.svg +1 -0
- package/src/assets/icons/pc/volumeMuted.svg +1 -0
- package/src/assets/icons/pc/volumeSmall.svg +1 -0
- package/src/config/defaultPreset.ts +110 -0
- package/src/config/playerOptionMobile.ts +166 -0
- package/src/config/playerOptionPc.ts +147 -0
- package/src/config/playerPreset.ts +242 -0
- package/src/constants/api.ts +13 -0
- package/src/constants/event.ts +577 -0
- package/src/constants/player.ts +84 -0
- package/src/constants/plugin.ts +19 -0
- package/src/constants/umdMap.ts +137 -0
- package/src/constants/umdPlugins.json +68 -0
- package/src/core/index.ts +7 -0
- package/src/core/player.ts +2713 -0
- package/src/core/playerData.ts +812 -0
- package/src/env.d.ts +47 -0
- package/src/index.ts +24 -0
- package/src/index.umd.ts +54 -0
- package/src/interface/adaptRange.d.ts +33 -0
- package/src/interface/api.ts +132 -0
- package/src/interface/autoBitrate.d.ts +41 -0
- package/src/interface/index.ts +1685 -0
- package/src/interface/rtm.ts +56 -0
- package/src/interface/sdkErrorPlugin.ts +145 -0
- package/src/interface/subtitle.ts +381 -0
- package/src/interface/video.ts +107 -0
- package/src/interface/xgplayer.ts +748 -0
- package/src/lang/constants.ts +69 -0
- package/src/lang/en.ts +98 -0
- package/src/lang/index.ts +33 -0
- package/src/lang/jp.ts +100 -0
- package/src/lang/zh-hk.ts +80 -0
- package/src/lang/zh.ts +79 -0
- package/src/license/index.ts +315 -0
- package/src/license/ttlicense2.js +15 -0
- package/src/license/ttlicense2.wasm +0 -0
- package/src/music/icons/back.svg +3 -0
- package/src/music/icons/forward.svg +3 -0
- package/src/music/icons/loop.svg +10 -0
- package/src/music/icons/order.svg +10 -0
- package/src/music/icons/pause-circle.svg +23 -0
- package/src/music/icons/play-circle.svg +22 -0
- package/src/music/icons/random.svg +10 -0
- package/src/music/icons/sloop.svg +10 -0
- package/src/music/index.ts +5 -0
- package/src/music/music.ts +550 -0
- package/src/music/plugins/index.less +185 -0
- package/src/music/plugins/index.ts +6 -0
- package/src/music/plugins/musicBackward.ts +82 -0
- package/src/music/plugins/musicCover.ts +45 -0
- package/src/music/plugins/musicForward.ts +82 -0
- package/src/music/plugins/musicMeta.ts +32 -0
- package/src/music/plugins/musicMode.ts +152 -0
- package/src/music/plugins/musicNext.ts +93 -0
- package/src/music/plugins/musicPrev.ts +94 -0
- package/src/music/preset.ts +69 -0
- package/src/music/xhr.ts +37 -0
- package/src/plugins/common/extendPluginFactory.ts +132 -0
- package/src/plugins/common/mobilePlayerPanel.ts +253 -0
- package/src/plugins/external/LiveInfoPanel.ts +340 -0
- package/src/plugins/external/ad/adsPlugin.ts +1 -0
- package/src/plugins/external/aiSubtitleIconPlugin.ts +270 -0
- package/src/plugins/external/aiSubtitlePlugin.ts +452 -0
- package/src/plugins/external/definitionDemotePlugin.ts +591 -0
- package/src/plugins/external/memoryPlay.ts +247 -0
- package/src/plugins/external/mirrorPlugin.ts +141 -0
- package/src/plugins/external/playList/OptionList.ts +204 -0
- package/src/plugins/external/playList/index.ts +743 -0
- package/src/plugins/external/subtitle/index.ts +672 -0
- package/src/plugins/external/subtitle/nativeSubTitle.ts +115 -0
- package/src/plugins/external/timeShiftPlugin.ts +484 -0
- package/src/plugins/external/watermark/dynamicWatermark.less +13 -0
- package/src/plugins/external/watermark/dynamicWatermark.ts +449 -0
- package/src/plugins/external/watermark/dynamicWatermarkPlugin.ts +185 -0
- package/src/plugins/inner/common/autoplayPlugin.ts +435 -0
- package/src/plugins/inner/common/danmu/container.ts +120 -0
- package/src/plugins/inner/common/danmu/index.ts +683 -0
- package/src/plugins/inner/common/danmu/lang.ts +139 -0
- package/src/plugins/inner/common/danmu/panel.ts +20 -0
- package/src/plugins/inner/common/danmu/slider.ts +210 -0
- package/src/plugins/inner/common/danmu/state.ts +118 -0
- package/src/plugins/inner/common/danmu/switch.ts +74 -0
- package/src/plugins/inner/common/definitionBasePlugin.ts +353 -0
- package/src/plugins/inner/common/errorPlugin.ts +544 -0
- package/src/plugins/inner/common/liveLogger.ts +137 -0
- package/src/plugins/inner/common/poster/index.less +66 -0
- package/src/plugins/inner/common/poster/index.ts +178 -0
- package/src/plugins/inner/common/refreshPlugin.ts +88 -0
- package/src/plugins/inner/common/rtmPlugin.ts +62 -0
- package/src/plugins/inner/common/toastPlugin.ts +90 -0
- package/src/plugins/inner/common/unmutePlugin.ts +133 -0
- package/src/plugins/inner/common/vodLogger.ts +80 -0
- package/src/plugins/inner/mobile/DefinitionMobilePlugin.ts +217 -0
- package/src/plugins/inner/mobile/LineMobilePlugins.ts +169 -0
- package/src/plugins/inner/mobile/MoreButtonPlugin.ts +176 -0
- package/src/plugins/inner/mobile/PlaybackRatePlugin.ts +199 -0
- package/src/plugins/inner/pc/definitionPlugin.ts +203 -0
- package/src/plugins/inner/pc/multilinePlugin.ts +93 -0
- package/src/sdkPlugin/abr.ts +67 -0
- package/src/sdkPlugin/adaptRange.ts +49 -0
- package/src/sdkPlugin/authToken.ts +557 -0
- package/src/sdkPlugin/sdkPlugin.ts +125 -0
- package/src/sdkPlugin/sdkPluginManager.ts +157 -0
- package/src/sdkPlugin/strategy.ts +47 -0
- package/src/strategy/index.ts +740 -0
- package/src/strategy/vestrategy-h265-wrapper.ts +34 -0
- package/src/strategy/vestrategy-preload-wrapper.ts +414 -0
- package/src/streamAdapters/base.ts +89 -0
- package/src/streamAdapters/dash.ts +230 -0
- package/src/streamAdapters/default.ts +53 -0
- package/src/streamAdapters/hls.ts +278 -0
- package/src/streamAdapters/index.ts +40 -0
- package/src/streamAdapters/mp4.ts +214 -0
- package/src/style/bytelive/danmu.less +293 -0
- package/src/style/bytelive/definitionIcon.less +80 -0
- package/src/style/bytelive/error.less +165 -0
- package/src/style/bytelive/index.less +62 -0
- package/src/style/bytelive/loading.less +5 -0
- package/src/style/bytelive/mobiePlugin.less +2 -0
- package/src/style/bytelive/mobile.less +76 -0
- package/src/style/bytelive/moreButton.less +79 -0
- package/src/style/bytelive/panel.less +259 -0
- package/src/style/bytelive/pc.less +161 -0
- package/src/style/bytelive/refresh.less +3 -0
- package/src/style/bytelive/reset.less +4 -0
- package/src/style/bytelive/toast.less +61 -0
- package/src/style/bytelive/unmute.less +65 -0
- package/src/style/external/LiveInfoPanel.less +41 -0
- package/src/style/external/aisub.less +139 -0
- package/src/style/external/aisubIcon.less +25 -0
- package/src/style/external/index.less +5 -0
- package/src/style/external/larkWindow.less +36 -0
- package/src/style/external/mirror.less +27 -0
- package/src/style/external/playList.less +258 -0
- package/src/style/external/timeShift.less +102 -0
- package/src/style/external/vttSubtitle.less +25 -0
- package/src/utils/debug.ts +62 -0
- package/src/utils/definition.ts +61 -0
- package/src/utils/escapeHtml.ts +93 -0
- package/src/utils/eventMiddleWare.ts +108 -0
- package/src/utils/index.ts +621 -0
- package/src/utils/intervalTimer.ts +38 -0
- package/src/utils/isHijackBrowser.ts +71 -0
- package/src/utils/proxy.ts +139 -0
- package/src/utils/storage.ts +34 -0
- package/src/utils/time.ts +19 -0
- package/src/utils/toast/index.less +20 -0
- package/src/utils/toast/index.ts +21 -0
- package/src/utils/token.ts +395 -0
- package/src/utils/u8a.ts +4 -0
- package/src/utils/umdLoader.ts +193 -0
- package/src/utils/video.ts +43 -0
- package/src/utils/xhr.ts +160 -0
- package/src/veError/error.ts +301 -0
- package/src/veError/index.ts +681 -0
- package/src/veError/playerProxy.ts +69 -0
- package/tsconfig.json +27 -0
- package/index.d.ts +0 -6874
- package/index.min.css +0 -1
- package/index.min.js +0 -2
- package/plugin/DashAbralgo.js +0 -2
- package/plugin/XGVideo.js +0 -2
- package/plugin/danmuMask.js +0 -2
- package/plugin/danmujs.js +0 -3
- package/plugin/dash.js +0 -2
- package/plugin/flv.js +0 -2
- package/plugin/hls.js +0 -2
- package/plugin/hlsEncrypt.js +0 -2
- package/plugin/mp4Encrypt.js +0 -2
- package/plugin/preloader.js +0 -2
- package/plugin/streamprobe.js +0 -2
- package/plugin/vestrategy.js +0 -1
- package/plugin/vestrategy_adapt_range.js +0 -1
- package/plugin/vestrategy_h265.js +0 -1
- package/plugin/vestrategy_preload.js +0 -1
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { VE_DEBUG } from '@/utils';
|
|
2
|
+
import createModule from './ttlicense2.js';
|
|
3
|
+
|
|
4
|
+
interface IlicenseContent {
|
|
5
|
+
content: string; // license包中Content内容
|
|
6
|
+
sign: string; // license包中Signature签名
|
|
7
|
+
mainUrl?: string; // 下载licenseUrl,配合autoUpload使用
|
|
8
|
+
}
|
|
9
|
+
export enum LicenseEdition {
|
|
10
|
+
EDITION_STANDARD = 'standard_edition', // 基础版
|
|
11
|
+
EDITION_PREMIUM = 'premium_edition', // 高级版
|
|
12
|
+
EDITION_NONE = 'none_edition', // 无
|
|
13
|
+
}
|
|
14
|
+
export enum SDKType { // SDK类型
|
|
15
|
+
SDK_VOD_PLAY = 'web_vod_play', // 点播SDK
|
|
16
|
+
SDK_LIVE_PULL = 'web_live_pull', // 直播SDK
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export enum LicenseFeature {
|
|
20
|
+
H265 = 'h265',
|
|
21
|
+
PRELOAD = 'preload',
|
|
22
|
+
ADAPT_RANGE = 'adaptRange',
|
|
23
|
+
ABR = 'abr',
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export enum LicenseStatus {
|
|
27
|
+
LICENSE_STATUS_INVALID = 0, //无效
|
|
28
|
+
LICENSE_STATUS_OK = 1, // 检验通过
|
|
29
|
+
LICENSE_STATUS_EXPIRED = 2, // 已过期
|
|
30
|
+
LICENSE_STATUS_ERROR_DOMAIN_NOT_MATCH = 401, // 域名校验失败
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface ILicenseConfig {
|
|
34
|
+
license: string | IlicenseContent;
|
|
35
|
+
autoUpload?: boolean; // 是否自动更新,默认自动更新
|
|
36
|
+
expireDiffTime?: number; // 单位s,超时客户端提醒license即将超期,默认24H 即24*60*60
|
|
37
|
+
expireCallback?: (expireDiffTime?: number) => void; // 超时客户端回调函数
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const VEPLAYER_LOCASTORAGE_LICENSE_KEY = '__veplayer_license_info__';
|
|
41
|
+
class LicenseManager {
|
|
42
|
+
private fetchOriginLicenseFlag = false;
|
|
43
|
+
private fetchPromise: Promise<any>;
|
|
44
|
+
private initModulePromise: Promise<void>;
|
|
45
|
+
private _Module: any;
|
|
46
|
+
private logoPngBase64 =
|
|
47
|
+
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAAA0CAYAAADc3zcIAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAt7SURBVHgB7V3LbttIFr2S5SQTDMaajbPppBlgejmIF7NvZmfkAbu/oO0fGDtfEHk1SztfEPsLIsOJk82glS9oNdC7XoSdNDpoYwZQBuhJ/JA454pVUrFUpFgk9YinDkCILBVLNHlv3XNuFctE08TfwwZthd+Rg8OcoErTxRqF5NN2WCcHhznA9BwgMvoVcbRCDg5zgOk5wAV6fokerZODwxxgeg5QVRygQnfIwWEOMD0HUI0+BAVyOsBhDjAdB2BjD5UIQKTqAQeHmWFaEWDU2Hsxh3BwmAmm4wAm0Vuhr8nBYcaYjgOYRK/TAQ5zgMk7wCj/l3A6wGHmmEYESDZypwMcZozJO0DaoJfTAQ4zxuQdIG3Qy+kAhxnD3gHYYLdDP3PdMJXmOB3gMFPYO0AXlKZH32Xsuccbd9c5gMPsYO8AVVrrf3YzTGjLInJlew4OM0AeDRD12JUMPXcWkRu6COAwO9g5wHa4AoP1xNH4njvMlObMrikcHEqGnQPE+bo3ogPev/exef19G6N2OsBhRrBzgOoIpfFjR2H4lHq9x/19m0EupwMcZoQa2cGPHUVG3uzvc8/f63nYY3G82ef/IWXDHOuABw8eNOR+GIadFy9e7JHDpUF2B9gOYeAD/h9BFbndrk+VCu/V+87wD6tpDpEO2Ku0aI6wurrqwegfa8UzcYD19fX62dnZ9/K4UqkEcMa7VALg5D7lRK1WC5rNZqCX379/fxv3bkspOjw+Pt42tXHv3r2VarVa7/V6bE8byld7KP9BHqC9XWx92s1/P7YdcQ1tXENH/C6vOuKL+vybqdnK7A7QRaMVrUyO5O5VOriioTP8eG2XbBHpgBY5GPHp06f6wsKCRyWDjR+GknupmvPz833iiK8BxsmG6ilFS0ltoC4btl+p6AZGeyjX68pd7px83rm4uOCOoIVOwsP1+ErdO2oE1wGHa2Z3gGoipfGJaVCl4pO82G6Ol94r/Xbivevbt+tot0M3b7bIwSEB3W63zo4M43+qfWWK4AOgQwlsNIBvLGUd8P59W/D/CLdOKQdGxwyq1cfYOLS1qCQwlUCPMdAcSSE8D2Qoz9o26m+gvqfU35OhvCgErfGVotbz589bNIeAkR7gPrzGp0dxO2ihF/9ZOV6TFAjo4LtD3oEhr6QZehqyOYCJ/0uwDuh226SGr6VutH1YIAvU++MMe5V2/ygS1Rh3CDv05k2dbt8uxTDQS3CU+VY5DvBxm0oAHsj3asiGozFHbaTU/1aGcVG/ReU5u68ahaAOLb0S82dxnVlxB+2WuqwNePo+OoMGDY2/jbJvDFUbpvO5I1HpE/ZboDcHah042Jp63djfxLNvZXMAE/8ftATu/rG2Rte78fKbiAIfrpMVuv0eK3KA8/MVuDbv1fGUStMHuDkdjVd6VAI4suCGxso4a0RzDhFxGlnrC2Mr1QE4cnJnQMNn4UHMZs0h7uM+vxb7AbYniHQjiQpERI9oSM3Z6fgz2zhAdcyUhnMD5791RtaoKCG7WjXvF8eIUbLxUkGwSNXLqhF9c0gBUzWOnFSgI7py5UpzcXGRo3gL2xpnggziV52WP3gu2SJAWp5+6SKiOzqK64DhvpphKgiExsCQbWDjLWSsoBKenrHAcUAOVsA9e0KSBSQAz4+pnSePRRTrwOg/SEqJzxV0bANNxcfK+YP2xztAxP+THWD5wlxeRAdsBQGucvibfPEl6gAdyK8XjgCc9tMdAM429xFApA6fWpzi0eTAwpZ76pGXqJhOSl2AHl6lSyqa2OTYA1NSdpRHcIwtIbD7UPXBeAe4gPGnEaWvPiV/l1cHID2llZamAxAu2zpX5ywCjel1xqGnZsGGvxXQnAMC2COa3bvZnJmCE/4Zz0TSIN9Ujwe+srQF52gpbWzjmJ1nW6kWMGWSB+M1wMKYeTo3Urh+Xh1g4vyRkRYGuPpIrwzjLSUC6GVlpTQvO/T7xHxebhQJ28zAmMAmJzqUItX42Rl21N8bHwHG8f8kCsTIrwO+NJSzI+5RQbx69SrgXkGFGh4LQA/bATnkgohKfZiopQ5OYpyenrKYrjOFEtrLZLcdHndh4c30FJGgM+oAv/76DF3iDn3xRTs3/5fIqwP+A7qjC2tFxJSAgBQOiZu2RAWhDNDINgP6PMFzjEoZF8mLpKkZIl3KHN9Ty6Hh1mHYWXRMXYyNPOZECFPhuAP88gsPPPH0A56A1C7E/yXy6ICfrhH97Xe9tE7v3vklTYsIKH4Tjc5lyuywaDSN7uKGrqh1XQbIDrh/B9i+TKnSQa/tU3yyXJZ2WyLCe6bv4w7A3Jsfokw7LvT/pVEybmTg+DcQJX4kO/y2aC6PdECLiuNQGzkMTJVCQ9RBqOWykfpoo6m2iTB+SA6ZAQHbGFcH1OWZIdN2qOgvTnFzJqmN8h+gIfYl33/48OE6ytZFlsmTETvuAGH4tfiM0o67Bfi/xFcfif75J7ICRwAzStEBYk5/lnZGEgAVnvQn34FQcHR0tEmXA/W0GZQ6IDrbL1++bFJB6POoEn7rAFF50LGgk+kgg9cfA8A2mBrOTsKdEc/5wt8iy9gx9pU6Rg3gi886/fs67+fn/xLM5a/1kH6xePnstBrphsnqgFToU2sleMge3zUucYanbjOxDEa7T4YOwRa4r8/GJSPwW9zjx47HCeSUtlp4hneHVsn8PxoRjfCvK+k3wSbD85cMWkGHOQpEOmAKEIMoxmtAz7JNDpcCwwgg+b/EyWJ6b2vjAPOpAxIhev+NpO/5TSd1mN2hOBABbCnkrqrReEIcevVG1pPlKP3QAST/l3h7Nfnsq73sFIgxhzogDTD+Z1pRQPEsAg+z81tvnz3v59FT8OTMr1ZyJkbMxZkE/KwVDWnnJbIb0e7Ttprxx5mDn6SMkdmO8H5GOgBijB9u7Dc4RUcRN1bfcd1A3eD4+NhmLv1cwuZFGfzNHk0Gft6XWgRWQgvbWIim27Qji9T5/9sr6WfnGeHNowPMUahOJycTcQI2fhh7QysOOEWH7AOXB+oXXFdMzHIoCPHuRGCxxSCmP2Q+nzNIfF7Uzev8P43+MPI4QB4dwI741/+Oll9c+FRw8poOGDJTmpi45ZsqXrjuz1cBVdg0jFLy20zeZYgEs4RFaroPdfUHBp5LE21YU9KaOHty/F8ij9O8S7iOaM53KTpAmQ7s69/xxCqeOySPxWzDR9iNrXohIoGHgZedst4v/n8COpA3ZAl9jhC/pYZ2fLIAD4DWxN7KIAKUzf8lls/tdQBrAJMOoOL/WUass7MlUpq6oOJBk0foUUby29xTIRKYcuUbPG6Ah7CPAZYD5wjZgXvtkSUMLx/VTTNyx6Em5v94g5LfxkwQzTfDM8LNs7TsjhkcjUZpUKQDlpetaJBYA4f1wxobK48WGgZSAmQ6vgGlSWybNQGG1nm4nSOBp3zlcTRA2w04Ak+NeM3D8llFJl+bHLnUYXrfIG1BK7SVNq/GCI6G6BA2xlS7k3fwKQlygSsb4Br0l2LacpUIizb6I8FxQfnTH9LPWj6n3LiVxwHK0wHhmAWgeD4PxO5mlvz+0dFRc3V1tY1sgpE+iRfH18WkuKyzK3eTjMvwGqcXFljQygSOhlqmayrIMg9IBygnswBPKWrnaaeGOxuf73KymFyb+X9eCsSYUx3AMwbxsWO7bo7QB3fFSgmx91Q/UxSmlpMEjJ61gkclojbC/9NSoHnEb+z8+dEBguc3eVGmogtGiSU29nnGIYfmstfNmQbEsi7W6WX8rT/TFCDoq0fJ1/GBcqCGVMcB0qARX7yAYf4RBvp7goFepeLgAGMbCD5WRx2g17P+g5lr8qoQ2G1DzJaaRmUwLSIxwij1RtraQBi6f6KsaTNR8DqY4+rg/mQeERZtdpK0Es8SBZ3cV44L/Z28/KHang6x4Jk1/gen2mQhMoQueAAAAABJRU5ErkJggg==';
|
|
48
|
+
// wasm在低版本浏览器初始化时则设置为true,用于豁免
|
|
49
|
+
private _needExemptions = false;
|
|
50
|
+
constructor() {
|
|
51
|
+
this._init();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async _init() {
|
|
55
|
+
let resolveFn: () => void;
|
|
56
|
+
this.initModulePromise = new Promise<void>(resolve => {
|
|
57
|
+
resolveFn = resolve;
|
|
58
|
+
});
|
|
59
|
+
try {
|
|
60
|
+
this._Module = await createModule();
|
|
61
|
+
const domain = __DEV__
|
|
62
|
+
? 'localhost'
|
|
63
|
+
: (window?.top || window)?.location?.hostname;
|
|
64
|
+
// const domain = 'volcvideo1.com';
|
|
65
|
+
if (!this._Module?.calledRun) {
|
|
66
|
+
this._Module.onRuntimeInitialized = () => {
|
|
67
|
+
this.initModule(domain);
|
|
68
|
+
resolveFn();
|
|
69
|
+
};
|
|
70
|
+
} else {
|
|
71
|
+
this.initModule(domain);
|
|
72
|
+
resolveFn();
|
|
73
|
+
}
|
|
74
|
+
} catch (e) {
|
|
75
|
+
VE_DEBUG.error('license module init failed');
|
|
76
|
+
resolveFn();
|
|
77
|
+
this._needExemptions = true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async initModule(domain) {
|
|
81
|
+
this._Module?.ccall('init', 'null', ['string'], [domain]);
|
|
82
|
+
this.checkLocalLicense();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
isWasmSupported() {
|
|
86
|
+
return (
|
|
87
|
+
typeof WebAssembly === 'object' &&
|
|
88
|
+
typeof WebAssembly.instantiate === 'function'
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
private async fetchOrginUrl(mainUrl: string) {
|
|
92
|
+
if (this.fetchPromise) {
|
|
93
|
+
return this.fetchPromise;
|
|
94
|
+
}
|
|
95
|
+
this.fetchPromise = fetch(mainUrl) // 返回一个 Promise
|
|
96
|
+
.then(response => {
|
|
97
|
+
if (!response.ok) {
|
|
98
|
+
throw new Error('Network response was not ok');
|
|
99
|
+
}
|
|
100
|
+
return response.text();
|
|
101
|
+
})
|
|
102
|
+
.then(data => {
|
|
103
|
+
try {
|
|
104
|
+
const parsedData = JSON.parse(data);
|
|
105
|
+
const licenseData = {
|
|
106
|
+
sign: parsedData?.Signature,
|
|
107
|
+
content: parsedData?.Content,
|
|
108
|
+
mainUrl: parsedData?.MainURL,
|
|
109
|
+
};
|
|
110
|
+
this.nativeAddLicense(licenseData?.content, licenseData?.sign);
|
|
111
|
+
localStorage.setItem(
|
|
112
|
+
VEPLAYER_LOCASTORAGE_LICENSE_KEY,
|
|
113
|
+
JSON.stringify(licenseData),
|
|
114
|
+
);
|
|
115
|
+
return Promise.resolve(parsedData);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
throw new Error('Failed to parse JSON');
|
|
118
|
+
}
|
|
119
|
+
})
|
|
120
|
+
.catch(error => {
|
|
121
|
+
VE_DEBUG.error('fetchLicenseFailed', error);
|
|
122
|
+
return Promise.reject(error);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
return this.fetchPromise;
|
|
126
|
+
}
|
|
127
|
+
private checkLocalLicense() {
|
|
128
|
+
const localLicenseString = localStorage.getItem(
|
|
129
|
+
VEPLAYER_LOCASTORAGE_LICENSE_KEY,
|
|
130
|
+
);
|
|
131
|
+
if (localLicenseString) {
|
|
132
|
+
const localLicenseJson = JSON.parse(localLicenseString);
|
|
133
|
+
this.nativeAddLicense(localLicenseJson?.content, localLicenseJson?.sign);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
private nativeAddLicense(content: string, sign: string) {
|
|
137
|
+
try {
|
|
138
|
+
const res = this._Module?.ccall(
|
|
139
|
+
'addLicense',
|
|
140
|
+
'string',
|
|
141
|
+
['string', 'string'],
|
|
142
|
+
[content, sign],
|
|
143
|
+
);
|
|
144
|
+
return res;
|
|
145
|
+
} catch (error) {
|
|
146
|
+
VE_DEBUG.error('nativeAddLicense failed');
|
|
147
|
+
this._needExemptions = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
private nativeCheckSDKAuth(): LicenseStatus {
|
|
151
|
+
const result = this._Module?.ccall(
|
|
152
|
+
'checkSDKAuth',
|
|
153
|
+
'number',
|
|
154
|
+
['string'],
|
|
155
|
+
['web_vod_play'],
|
|
156
|
+
);
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
private nativeGetModuleEdition(): LicenseEdition {
|
|
160
|
+
const result = this._Module?.ccall(
|
|
161
|
+
'getModuleEdition',
|
|
162
|
+
'string',
|
|
163
|
+
['string'],
|
|
164
|
+
['web_vod_play'],
|
|
165
|
+
);
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
async setLicenseConfig(config: ILicenseConfig) {
|
|
169
|
+
const licenseMainUrl =
|
|
170
|
+
typeof config?.license === 'string'
|
|
171
|
+
? config?.license
|
|
172
|
+
: config?.license?.mainUrl;
|
|
173
|
+
if (licenseMainUrl) {
|
|
174
|
+
this.fetchOriginLicenseFlag = true;
|
|
175
|
+
this.fetchOrginUrl(licenseMainUrl)
|
|
176
|
+
.then(data => {
|
|
177
|
+
// console.log('Fetched data:', data);
|
|
178
|
+
|
|
179
|
+
this.fetchOriginLicenseFlag = false;
|
|
180
|
+
})
|
|
181
|
+
.catch(error => {
|
|
182
|
+
this.fetchOriginLicenseFlag = false;
|
|
183
|
+
console.error('Error fetching data:', error);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
const licenseInfo = config?.license as IlicenseContent;
|
|
187
|
+
if (licenseInfo?.content && licenseInfo?.sign) {
|
|
188
|
+
await this.initModulePromise;
|
|
189
|
+
this.nativeAddLicense(licenseInfo?.content, licenseInfo?.sign);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
private async checkHttpLicenseStatus() {
|
|
193
|
+
const moduleEdition = this.nativeGetModuleEdition();
|
|
194
|
+
const chekSDKAuth = this.nativeCheckSDKAuth();
|
|
195
|
+
if (
|
|
196
|
+
moduleEdition !== LicenseEdition.EDITION_PREMIUM ||
|
|
197
|
+
chekSDKAuth !== LicenseStatus.LICENSE_STATUS_OK
|
|
198
|
+
) {
|
|
199
|
+
await this.fetchPromise;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async checkLicense() {
|
|
203
|
+
// 检查版本
|
|
204
|
+
await this.initModulePromise;
|
|
205
|
+
if (this._needExemptions) {
|
|
206
|
+
return Promise.resolve(LicenseEdition.EDITION_PREMIUM);
|
|
207
|
+
}
|
|
208
|
+
if (this.fetchOriginLicenseFlag) {
|
|
209
|
+
await this.checkHttpLicenseStatus();
|
|
210
|
+
}
|
|
211
|
+
const moduleEdition = this.nativeGetModuleEdition();
|
|
212
|
+
return Promise.resolve(moduleEdition);
|
|
213
|
+
}
|
|
214
|
+
// {
|
|
215
|
+
// featrueName : 功能名称
|
|
216
|
+
// featureSuppored: 功能支持性
|
|
217
|
+
// LicenseEdition license版本
|
|
218
|
+
// }
|
|
219
|
+
async checkLicenseStatus() {
|
|
220
|
+
//校验过期
|
|
221
|
+
await this.initModulePromise;
|
|
222
|
+
if (this._needExemptions) {
|
|
223
|
+
return Promise.resolve(LicenseStatus.LICENSE_STATUS_OK);
|
|
224
|
+
}
|
|
225
|
+
if (this.fetchOriginLicenseFlag) {
|
|
226
|
+
await this.checkHttpLicenseStatus();
|
|
227
|
+
}
|
|
228
|
+
const chekSDKAuth = this.nativeCheckSDKAuth();
|
|
229
|
+
return Promise.resolve(chekSDKAuth);
|
|
230
|
+
}
|
|
231
|
+
async checkModuleList() {
|
|
232
|
+
// 获取当前支持功能列表
|
|
233
|
+
await this.initModulePromise;
|
|
234
|
+
if (this._needExemptions) {
|
|
235
|
+
return Promise.resolve(Object.values(LicenseFeature));
|
|
236
|
+
}
|
|
237
|
+
if (this.fetchOriginLicenseFlag) {
|
|
238
|
+
await this.checkHttpLicenseStatus();
|
|
239
|
+
}
|
|
240
|
+
const moduleEdition = this.nativeGetModuleEdition();
|
|
241
|
+
const chekSDKAuth = this.nativeCheckSDKAuth();
|
|
242
|
+
const supportList =
|
|
243
|
+
moduleEdition === LicenseEdition.EDITION_PREMIUM &&
|
|
244
|
+
chekSDKAuth === LicenseStatus.LICENSE_STATUS_OK
|
|
245
|
+
? Object.values(LicenseFeature)
|
|
246
|
+
: [];
|
|
247
|
+
return Promise.resolve(supportList);
|
|
248
|
+
}
|
|
249
|
+
async checkLicenseModuleAuth(module: string, featureName: LicenseFeature) {
|
|
250
|
+
const result = await this.checkModuleList();
|
|
251
|
+
return Promise.resolve(result?.includes(featureName));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
addLogoIcon(playerContainer: HTMLDivElement) {
|
|
255
|
+
const img = document.createElement('img');
|
|
256
|
+
img.setAttribute('src', this.logoPngBase64);
|
|
257
|
+
img.setAttribute('alt', 'ERROR_LICENSE_HAS_EXPIRED');
|
|
258
|
+
img.className = 'veplayer-logo';
|
|
259
|
+
img.setAttribute(
|
|
260
|
+
'style',
|
|
261
|
+
'display: block !important; opacity: 1 !important',
|
|
262
|
+
);
|
|
263
|
+
playerContainer.appendChild(img);
|
|
264
|
+
}
|
|
265
|
+
initObserver(playerContainer: HTMLDivElement) {
|
|
266
|
+
const config = {
|
|
267
|
+
childList: true,
|
|
268
|
+
attributes: true,
|
|
269
|
+
attributeFilter: ['src', 'style'], // 只监控 src 和 style 属性的变化
|
|
270
|
+
attributeOldValue: true,
|
|
271
|
+
subtree: true,
|
|
272
|
+
};
|
|
273
|
+
const observer = new MutationObserver((mutations: any) => {
|
|
274
|
+
mutations.forEach(mutation => {
|
|
275
|
+
if (mutation.type === 'childList' && mutation.removedNodes.length) {
|
|
276
|
+
mutation.removedNodes.forEach(removedNode => {
|
|
277
|
+
if (removedNode?.currentSrc === this.logoPngBase64) {
|
|
278
|
+
// 如果监控的元素被删除,重新添加
|
|
279
|
+
this.addLogoIcon(playerContainer);
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
} else if (mutation.type === 'attributes') {
|
|
283
|
+
const target = mutation.target;
|
|
284
|
+
if (target?.currentSrc === this.logoPngBase64) {
|
|
285
|
+
if (
|
|
286
|
+
mutation.attributeName === 'src' &&
|
|
287
|
+
target.src !== this.logoPngBase64
|
|
288
|
+
) {
|
|
289
|
+
// 如果src属性被更改,重置为原始URL
|
|
290
|
+
target.src = this.logoPngBase64;
|
|
291
|
+
} else if (mutation.attributeName === 'style') {
|
|
292
|
+
if (
|
|
293
|
+
target.style.opacity !== '1' ||
|
|
294
|
+
target.style.display != 'block'
|
|
295
|
+
) {
|
|
296
|
+
target.setAttribute(
|
|
297
|
+
'style',
|
|
298
|
+
'display: block !important; opacity: 1 !important',
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
observer?.observe(playerContainer, config);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
renderLogo(playerContainer: HTMLDivElement) {
|
|
310
|
+
this.addLogoIcon(playerContainer);
|
|
311
|
+
this.initObserver(playerContainer);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export default new LicenseManager();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var Module = (() => {
|
|
2
|
+
var _scriptName = import.meta.url;
|
|
3
|
+
|
|
4
|
+
return (
|
|
5
|
+
async function(moduleArg = {}) {
|
|
6
|
+
var moduleRtn;
|
|
7
|
+
|
|
8
|
+
var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("module");var require=createRequire(import.meta.url)}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(!import.meta.url.startsWith("data:")){scriptDirectory=nodePath.dirname(require("url").fileURLToPath(import.meta.url))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var isFileURI=filename=>filename.startsWith("file://");function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["j"]()}function preMain(){}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("ttlicense2.wasm")}return new URL("ttlicense2.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["i"];updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{receiveInstance(mod,inst);resolve(mod.exports)})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.unshift(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.unshift(cb);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var noExitRuntime=Module["noExitRuntime"]||true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>abort("");var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){HEAP8[buffer++]=str.charCodeAt(i)}HEAP8[buffer]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};Module["ccall"]=ccall;var wasmImports={b:___assert_fail,a:___cxa_throw,f:__abort_js,c:__tzset_js,g:_clock_time_get,h:_emscripten_resize_heap,d:_environ_get,e:_environ_sizes_get};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports["j"];var _init=Module["_init"]=wasmExports["k"];var _addLicense=Module["_addLicense"]=wasmExports["l"];var _checkSDKAuth=Module["_checkSDKAuth"]=wasmExports["m"];var _getModuleEdition=Module["_getModuleEdition"]=wasmExports["n"];var _checkFeatureAuth=Module["_checkFeatureAuth"]=wasmExports["o"];var _main=Module["_main"]=wasmExports["p"];var _malloc=Module["_malloc"]=wasmExports["r"];var __emscripten_stack_restore=wasmExports["s"];var __emscripten_stack_alloc=wasmExports["t"];var _emscripten_stack_get_current=wasmExports["u"];function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"];if(!noInitialRun)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
return moduleRtn;
|
|
12
|
+
}
|
|
13
|
+
);
|
|
14
|
+
})();
|
|
15
|
+
export default Module;
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2478 0C6.32662 0 2.94593 2.3143 1.39715 5.65152L0.558008 5.42701C0.321533 5.36365 0.0784664 5.50398 0.0151043 5.74046C-0.00971985 5.8331 -0.00382614 5.9313 0.0319023 6.02031L1.13271 8.76283C1.22391 8.99003 1.48202 9.10028 1.70921 9.00908C1.74819 8.99344 1.78475 8.97233 1.81779 8.94639L4.14238 7.12171C4.33496 6.97055 4.36853 6.69189 4.21737 6.49932C4.15815 6.42387 4.07605 6.36967 3.98341 6.34485L3.14176 6.1196C4.46348 3.53919 7.14942 1.77312 10.2478 1.77312C14.6545 1.77312 18.2269 5.34545 18.2269 9.75215C18.2269 14.1589 14.6545 17.7312 10.2478 17.7312C6.45067 17.7312 3.273 15.0787 2.4666 11.5256L0.656528 11.5254C1.49041 16.0647 5.46745 19.5043 10.2478 19.5043C15.6338 19.5043 20 15.1381 20 9.75215C20 4.36619 15.6338 0 10.2478 0Z" fill="white"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.75215 0C13.6734 0 17.0541 2.3143 18.6029 5.65152L19.442 5.42701C19.6785 5.36365 19.9215 5.50398 19.9849 5.74046C20.0097 5.8331 20.0038 5.9313 19.9681 6.02031L18.8673 8.76283C18.7761 8.99003 18.518 9.10028 18.2908 9.00908C18.2518 8.99344 18.2152 8.97233 18.1822 8.94639L15.8576 7.12171C15.665 6.97055 15.6315 6.69189 15.7826 6.49932C15.8419 6.42387 15.9239 6.36967 16.0166 6.34485L16.8582 6.1196C15.5365 3.53919 12.8506 1.77312 9.75215 1.77312C5.34545 1.77312 1.77312 5.34545 1.77312 9.75215C1.77312 14.1589 5.34545 17.7312 9.75215 17.7312C13.5493 17.7312 16.727 15.0787 17.5334 11.5256L19.3435 11.5254C18.5096 16.0647 14.5325 19.5043 9.75215 19.5043C4.36619 19.5043 0 15.1381 0 9.75215C0 4.36619 4.36619 0 9.75215 0Z" fill="white"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_20731_14771)">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.0018 23V29.024C42.0018 34.569 37.5247 39.064 32.0018 39.064H17.9999V42.6585C17.9999 43.2108 17.5522 43.6585 16.9999 43.6585C16.7991 43.6585 16.603 43.598 16.437 43.485L8.20729 37.8803C7.75081 37.5694 7.63278 36.9473 7.94366 36.4908C8.01331 36.3886 8.10134 36.3001 8.20327 36.23L16.433 30.5662C16.888 30.2531 17.5106 30.3681 17.8237 30.8231C17.9385 30.9899 17.9999 31.1875 17.9999 31.39V35.048H32.0018C35.3155 35.048 38.0018 32.351 38.0018 29.024V23H42.0018ZM31.0019 5.89087C31.2027 5.89087 31.3988 5.95132 31.5648 6.06434L39.7945 11.6691C40.251 11.98 40.369 12.602 40.0582 13.0585C39.9885 13.1608 39.9005 13.2492 39.7986 13.3194L31.5688 18.9831C31.1139 19.2962 30.4912 19.1812 30.1781 18.7263C30.0633 18.5595 30.0019 18.3618 30.0019 18.1593V14.5013H16C12.6863 14.5013 10 17.1984 10 20.5254V26.5494H6V20.5254C6 14.9804 10.4772 10.4853 16 10.4853H30.0019V6.89087C30.0019 6.33858 30.4496 5.89087 31.0019 5.89087Z" fill="white"/>
|
|
4
|
+
</g>
|
|
5
|
+
<defs>
|
|
6
|
+
<clipPath id="clip0_20731_14771">
|
|
7
|
+
<rect width="48" height="48" fill="white"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_20779_14791)">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M39 8C39.5523 8 40 8.44772 40 9V11C40 11.5523 39.5523 12 39 12H7C6.44772 12 6 11.5523 6 11V9C6 8.44772 6.44772 8 7 8H39ZM30 23C30 22.4477 29.5523 22 29 22H7C6.44772 22 6 22.4477 6 23V25C6 25.5523 6.44772 26 7 26H29C29.5523 26 30 25.5523 30 25V23ZM46.0725 31C46.0725 31.2113 46.0056 31.4173 45.8812 31.5882L39.845 39.888C39.5202 40.3346 38.8948 40.4334 38.4481 40.1086C38.3635 40.047 38.2891 39.9726 38.2275 39.888L32.1913 31.5882C31.8665 31.1415 31.9652 30.5161 32.4119 30.1913C32.5828 30.067 32.7887 30 33 30H37V19.5C37 19.2239 37.2239 19 37.5 19H40.5C40.7761 19 41 19.2239 41 19.5V30H45.0725C45.6248 30 46.0725 30.4477 46.0725 31ZM29 36C29.5523 36 30 36.4477 30 37V39C30 39.5523 29.5523 40 29 40H7C6.44772 40 6 39.5523 6 39V37C6 36.4477 6.44772 36 7 36H29Z" fill="white"/>
|
|
4
|
+
</g>
|
|
5
|
+
<defs>
|
|
6
|
+
<clipPath id="clip0_20779_14791">
|
|
7
|
+
<rect width="48" height="48" fill="white"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<svg width="30" height="30" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_20330_26170)">
|
|
3
|
+
<g filter="url(#filter0_d_20330_26170)">
|
|
4
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M25 0C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0Z" fill="#1664FF"/>
|
|
5
|
+
</g>
|
|
6
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.75 11C21.4404 11 22 11.6044 22 12.35V36.65C22 37.3956 21.4404 38 20.75 38H18.25C17.5596 38 17 37.3956 17 36.65V12.35C17 11.6044 17.5596 11 18.25 11H20.75Z" fill="white"/>
|
|
7
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M31.75 11C32.4404 11 33 11.6044 33 12.35V36.65C33 37.3956 32.4404 38 31.75 38H29.25C28.5596 38 28 37.3956 28 36.65V12.35C28 11.6044 28.5596 11 29.25 11H31.75Z" fill="white"/>
|
|
8
|
+
</g>
|
|
9
|
+
<defs>
|
|
10
|
+
<filter id="filter0_d_20330_26170" x="-8" y="-6" width="66" height="66" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
|
11
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
|
12
|
+
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
|
13
|
+
<feOffset dy="2"/>
|
|
14
|
+
<feGaussianBlur stdDeviation="4"/>
|
|
15
|
+
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
|
|
16
|
+
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_20330_26170"/>
|
|
17
|
+
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_20330_26170" result="shape"/>
|
|
18
|
+
</filter>
|
|
19
|
+
<clipPath id="clip0_20330_26170">
|
|
20
|
+
<rect width="50" height="50" fill="white"/>
|
|
21
|
+
</clipPath>
|
|
22
|
+
</defs>
|
|
23
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<svg width="30" height="30" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_20323_25753)">
|
|
3
|
+
<g filter="url(#filter0_d_20323_25753)">
|
|
4
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M25 0C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0Z" fill="#1664FF"/>
|
|
5
|
+
</g>
|
|
6
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.3863 11.7091L37.5681 23.0728C38.9924 23.9629 38.9924 26.0372 37.5681 26.9273L19.3863 38.2909C17.8726 39.237 15.9091 38.1488 15.9091 36.3637V13.6364C15.9091 11.8513 17.8726 10.763 19.3863 11.7091Z" fill="white"/>
|
|
7
|
+
</g>
|
|
8
|
+
<defs>
|
|
9
|
+
<filter id="filter0_d_20323_25753" x="-8" y="-6" width="66" height="66" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
|
10
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
|
11
|
+
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
|
12
|
+
<feOffset dy="2"/>
|
|
13
|
+
<feGaussianBlur stdDeviation="4"/>
|
|
14
|
+
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
|
|
15
|
+
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_20323_25753"/>
|
|
16
|
+
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_20323_25753" result="shape"/>
|
|
17
|
+
</filter>
|
|
18
|
+
<clipPath id="clip0_20323_25753">
|
|
19
|
+
<rect width="50" height="50" fill="white"/>
|
|
20
|
+
</clipPath>
|
|
21
|
+
</defs>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_20731_14777)">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M35.0194 27.9598C35.2314 27.9598 35.4379 28.0272 35.6091 28.1522L41.8863 32.736C42.3323 33.0617 42.4298 33.6873 42.1041 34.1333C42.0419 34.2186 41.9665 34.2934 41.8809 34.3551L35.6037 38.875C35.1556 39.1977 34.5306 39.096 34.2079 38.6478C34.0853 38.4776 34.0194 38.2732 34.0194 38.0635V35.5556C30.1354 35.5195 27.7656 34.3892 25.642 31.7548C26.4304 30.621 27.1705 29.3627 27.8834 27.9788C29.5719 30.6143 31.112 31.5275 34.0194 31.5546V28.9598C34.0194 28.4075 34.4671 27.9598 35.0194 27.9598ZM35.0112 7.94434C35.2205 7.94434 35.4246 8.01001 35.5946 8.13211L41.8792 12.6458C42.3278 12.968 42.4303 13.5928 42.1081 14.0414C42.0464 14.1273 41.9715 14.2028 41.8861 14.2652L35.6015 18.8607C35.1557 19.1867 34.53 19.0895 34.204 18.6437C34.0787 18.4724 34.0112 18.2657 34.0112 18.0535V15.4606C29.9521 15.4984 28.443 17.234 25.7897 23.0253C25.4916 23.6778 25.333 24.0244 25.1845 24.3452C21.6243 32.0396 17.983 35.4364 10.0186 35.5591H6V31.5394L9.98762 31.5397C16.0421 31.4462 18.5555 29.1016 21.5376 22.6568C21.6818 22.3451 21.8361 22.0079 22.1364 21.3507C25.3774 14.2767 27.8951 11.4978 34.0112 11.4409V8.94434C34.0112 8.39205 34.4589 7.94434 35.0112 7.94434ZM10.0186 11.4409C14.8213 11.5149 18.0519 12.7794 20.6407 15.459C19.9655 16.6111 19.3108 17.8933 18.6522 19.3098C16.5567 16.6161 14.0817 15.5236 9.98762 15.4604L6 15.4606V11.4409H10.0186Z" fill="white"/>
|
|
4
|
+
</g>
|
|
5
|
+
<defs>
|
|
6
|
+
<clipPath id="clip0_20731_14777">
|
|
7
|
+
<rect width="48" height="48" fill="white"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_20731_14784)">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.0018 22.1091V28.1331C42.0018 33.6781 37.5247 38.1732 32.0018 38.1732H17.9999V41.7676C17.9999 42.3199 17.5522 42.7676 16.9999 42.7676C16.7991 42.7676 16.603 42.7072 16.437 42.5941L8.20729 36.9894C7.75081 36.6785 7.63278 36.0564 7.94366 35.6C8.01331 35.4977 8.10134 35.4092 8.20327 35.3391L16.433 29.6754C16.888 29.3623 17.5106 29.4773 17.8237 29.9322C17.9385 30.099 17.9999 30.2967 17.9999 30.4991V34.1572H32.0018C35.3155 34.1572 38.0018 31.4601 38.0018 28.1331V22.1091H42.0018ZM26.05 18V29.664H23.19V21.08L21 22.852V19.772L23.19 18H26.05ZM31.0019 5C31.2027 5 31.3988 5.06045 31.5648 5.17347L39.7945 10.7782C40.251 11.0891 40.369 11.7112 40.0582 12.1677C39.9885 12.2699 39.9005 12.3584 39.7986 12.4285L31.5688 18.0922C31.1139 18.4054 30.4912 18.2904 30.1781 17.8354C30.0633 17.6686 30.0019 17.4709 30.0019 17.2685V13.6105H16C12.6863 13.6105 10 16.3075 10 19.6345V25.6585H6V19.6345C6 14.0895 10.4772 9.59443 16 9.59443H30.0019V6C30.0019 5.44772 30.4496 5 31.0019 5Z" fill="white"/>
|
|
4
|
+
</g>
|
|
5
|
+
<defs>
|
|
6
|
+
<clipPath id="clip0_20731_14784">
|
|
7
|
+
<rect width="48" height="48" fill="white"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|