Hi there, I have just switched to 2019.3.0f1 and since I am working on mobile game, I tried to compile my project, which so far runs smoothly on 2019.2.14f1. My OS is Windows 10 home 64.
The first bummer I have got is the one described here - Android NDK missing . Anyway I thought I fixed it, however UnityHub basically is not able to download the proper NDK, so I have to download it manually from the provided link and to place it into separate folder.
Then I built the project. I use IL2CPP, ARM64, ARMv7, split APKs by target architecture. Again, please note all these work just fine under 2019.2.
Once the compilation process completed, I install ARM64 on my device and try to run it. I can see a short screen blink and the app closes - I cannot see even the Unity splash screen.
Same goes with Armv7.
So basically I cannot build an Android app with Unity 2019.3.
Post your logcat logs.
Here it is:
12-04 10:44:28.764 3885 3885 D ActivityManager: package com.samsung.android.bixby.service, user - 0 is SDcard whitelisted
12-04 10:44:28.807 3885 3903 I ActivityManager: Start proc 29469:com.samsung.android.bixby.service/5018 for service com.samsung.android.bixby.service/.bixbysearch.scheduling.jobservices.AppJobService
12-04 10:44:28.852 3885 13659 I ActivityManager: DSS on for com.samsung.android.bixby.service and scale is 1.0
12-04 10:44:29.236 3885 13659 I ActivityManager: Killing 28649:com.facebook.system/u0a20 (adj 906): empty #25
12-04 10:44:33.975 3885 12314 V ActivityManager: Scheduling idle now: forceIdle=trueimmediate=true
12-04 10:44:38.018 3885 3885 I ActivityManager: Killing 17507:com.sec.android.app.camera/u0a56 (adj 906): empty for 1802s
12-04 10:44:38.225 3885 13660 D ActivityManager: setLockScreenShown(false,true) is called from 12221
12-04 10:44:38.630 3885 13659 D ActivityManager: setLockScreenShown(false,false) is called from 12221
12-04 10:44:45.568 3885 3896 D ActivityManager: package com.sec.spp.push, user - 0 is SDcard whitelisted
12-04 10:44:45.595 3885 3903 I ActivityManager: Start proc 29536:com.sec.spp.push:RemoteDlcProcess/u0a51 for broadcast com.sec.spp.push/.dlc.sender.DlcRequestReceiver
12-04 10:44:45.639 3885 3896 I ActivityManager: DSS on for com.sec.spp.push and scale is 1.0
12-04 10:44:59.458 3885 12988 I ActivityManager: Killing 28496:com.facebook.appmanager/u0a113 (adj 906): empty #25
12-04 10:45:01.842 3885 12168 D ActivityManager: Checking for the Active launch isPkgEverLaunched :true, isPkgStopped : false, isDataCleared :false, isAutoRunBlocked : false
12-04 10:45:01.844 3885 12168 E ActivityManager: TouchDown intent received, starting ActiveLaunch
12-04 10:45:01.846 3885 12168 D ActivityManager: package net.sensortronic.MobilePlayGroundUPR, user - 0 is SDcard whitelisted
12-04 10:45:01.847 3885 12168 D ActivityManager: starting Active launch
12-04 10:45:01.867 3885 3903 I ActivityManager: Start proc 29655:net.sensortronic.MobilePlayGroundUPR/u0a512 for activelaunch net.sensortronic.MobilePlayGroundUPR/com.unity3d.player.UnityPlayerActivity
12-04 10:45:01.899 3885 13660 I ActivityManager: DSS on for net.sensortronic.MobilePlayGroundUPR and scale is 1.0
12-04 10:45:01.962 3885 13660 I ActivityManager: START u0 {act=android.intent.action.MAIN typ=null flg=0x10200000 cmp=ComponentInfo{net.sensortronic.MobilePlayGroundUPR/com.unity3d.player.UnityPlayerActivity}} from uid 10081
12-04 10:45:01.964 3885 13660 W ActivityManager: Launch on display check: display not found
12-04 10:45:01.964 3885 13660 I ActivityManager: [IOP] sourceDir : /data/app/net.sensortronic.MobilePlayGroundUPR-jzheVBHPT6b8TgNy6vIEaA== in ActivityStacksupervisor
12-04 10:45:01.967 3885 13660 W ActivityManager: Launch on display check: display not found
12-04 10:45:01.970 3885 13660 D ActivityManager: [PIP] Update supportsEnterPipOnTaskSwitch(startActivityLocked
12-04 10:45:01.989 3885 14561 V ActivityManager: Scheduling idle now: forceIdle=trueimmediate=true
12-04 10:45:02.226 3885 3901 D ActivityManager: package com.sec.android.provider.badge, user - 0 is SDcard whitelisted
12-04 10:45:02.238 3885 3903 I ActivityManager: Start proc 29678:com.sec.android.provider.badge/u0a4 for broadcast com.sec.android.provider.badge/.BadgeCountReceiver
12-04 10:45:02.262 3885 14561 I ActivityManager: DSS on for com.sec.android.provider.badge and scale is 1.0
12-04 10:45:02.275 29680 29680 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-04 10:45:02.275 29680 29680 F DEBUG : Build fingerprint: ‘samsung/dreamltexx/dreamlte:9/PPR1.180610.011/G950FXXS5DSJ1:user/release-keys’
12-04 10:45:02.275 29680 29680 F DEBUG : Revision: ‘10’
12-04 10:45:02.275 29680 29680 F DEBUG : ABI: ‘arm64’
12-04 10:45:02.275 29680 29680 F DEBUG : pid: 29655, tid: 29655, name: lePlayGroundUPR >>> net.sensortronic.MobilePlayGroundUPR <<<
12-04 10:45:02.275 29680 29680 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
12-04 10:45:02.275 29680 29680 F DEBUG : Abort message: ‘jni_internal.cc:616] JNI FatalError called: com/google/androidgamesdk/ChoreographerCallback’
12-04 10:45:02.275 29680 29680 F DEBUG : x0 0000000000000000 x1 00000000000073d7 x2 0000000000000006 x3 0000000000000008
12-04 10:45:02.275 29680 29680 F DEBUG : x4 fefeff774396d667 x5 fefeff774396d667 x6 fefeff774396d667 x7 7f7f7f7f7fffff7f
12-04 10:45:02.275 29680 29680 F DEBUG : x8 0000000000000083 x9 00000078453fc828 x10 fffffff87ffffbdf x11 0000000000000001
12-04 10:45:02.275 29680 29680 F DEBUG : x12 0000007fd4600ec8 x13 ffffffffffffffff x14 ffffffffff000000 x15 ffffffffffffffff
12-04 10:45:02.275 29680 29680 F DEBUG : x16 0000007845433290 x17 00000078453728e0 x18 0000007fd460069a x19 00000000000073d7
12-04 10:45:02.275 29680 29680 F DEBUG : x20 00000000000073d7 x21 0000000000000083 x22 00000077c3414c00 x23 00000077c343e350
12-04 10:45:02.275 29680 29680 F DEBUG : x24 0000000000000058 x25 0000000000000012 x26 0000000000000005 x27 00000077c3292013
12-04 10:45:02.275 29680 29680 F DEBUG : x28 00000077c3291ec7 x29 0000007fd4601420
12-04 10:45:02.275 29680 29680 F DEBUG : sp 0000007fd46013e0 lr 0000007845365d28 pc 0000007845365d54
12-04 10:45:02.370 29680 29680 F DEBUG :
12-04 10:45:02.370 29680 29680 F DEBUG : backtrace:
12-04 10:45:02.370 29680 29680 F DEBUG : #00 pc 0000000000021d54 /system/lib64/libc.so (abort+124)
12-04 10:45:02.370 29680 29680 F DEBUG : #01 pc 000000000046fcc0 /system/lib64/libart.so (art::Runtime::Abort(char const*)+1320)
12-04 10:45:02.370 29680 29680 F DEBUG : #02 pc 0000000000008d2c /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+724)
12-04 10:45:02.370 29680 29680 F DEBUG : #03 pc 000000000033539c /system/lib64/libart.so (art::JNI::FatalError(_JNIEnv*, char const*)+196)
12-04 10:45:02.370 29680 29680 F DEBUG : #04 pc 000000000032c85c /data/app/net.sensortronic.MobilePlayGroundUPR-jzheVBHPT6b8TgNy6vIEaA==/lib/arm64/libunity.so (JNI_OnLoad+68)
12-04 10:45:02.370 29680 29680 F DEBUG : #05 pc 0000000000000acc /data/app/net.sensortronic.MobilePlayGroundUPR-jzheVBHPT6b8TgNy6vIEaA==/lib/arm64/libmain.so
12-04 10:45:02.370 29680 29680 F DEBUG : #06 pc 000000000000355c /data/app/net.sensortronic.MobilePlayGroundUPR-jzheVBHPT6b8TgNy6vIEaA==/oat/arm64/base.odex (offset 0x3000) (com.unity3d.player.NativeLoader.load+172)
12-04 10:45:02.370 29680 29680 F DEBUG : #07 pc 000000000056224c /system/lib64/libart.so (art_quick_invoke_static_stub+604)
12-04 10:45:02.370 29680 29680 F DEBUG : #08 pc 00000000000d0160 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
12-04 10:45:02.370 29680 29680 F DEBUG : #09 pc 00000000002865e8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
12-04 10:45:02.370 29680 29680 F DEBUG : #10 pc 00000000002805a4 /system/lib64/libart.so (bool art::interpreter:
oCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+948)
12-04 10:45:02.370 29680 29680 F DEBUG : #11 pc 000000000053273c /system/lib64/libart.so (MterpInvokeStatic+204)
12-04 10:45:02.370 29680 29680 F DEBUG : #12 pc 0000000000554794 /system/lib64/libart.so (ExecuteMterpImpl+14612)
12-04 10:45:02.370 29680 29680 F DEBUG : #13 pc 000000000000b504 /data/app/net.sensortronic.MobilePlayGroundUPR-jzheVBHPT6b8TgNy6vIEaA==/oat/arm64/base.vdex (com.unity3d.player.UnityPlayer.loadNative+4)
12-04 10:45:02.371 29680 29680 F DEBUG : #14 pc 000000000025a0a0 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.783209430+496)
12-04 10:45:02.371 29680 29680 F DEBUG : #15 pc 000000000025fc20 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
12-04 10:45:02.371 29680 29680 F DEBUG : #16 pc 0000000000280588 /system/lib64/libart.so (bool art::interpreter:
oCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
12-04 10:45:02.371 29680 29680 F DEBUG : #17 pc 000000000053273c /system/lib64/libart.so (MterpInvokeStatic+204)
12-04 10:45:02.371 29680 29680 F DEBUG : #18 pc 0000000000554794 /system/lib64/libart.so (ExecuteMterpImpl+14612)
12-04 10:45:02.371 29680 29680 F DEBUG : #19 pc 000000000000ae38 /data/app/net.sensortronic.MobilePlayGroundUPR-jzheVBHPT6b8TgNy6vIEaA==/oat/arm64/base.vdex (com.unity3d.player.UnityPlayer.+296)
12-04 10:45:02.371 29680 29680 F DEBUG : #20 pc 000000000025a0a0 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.783209430+496)
12-04 10:45:02.371 29680 29680 F DEBUG : #21 pc 000000000025fc20 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
12-04 10:45:02.371 29680 29680 F DEBUG : #22 pc 0000000000280588 /system/lib64/libart.so (bool art::interpreter:
oCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
12-04 10:45:02.371 29680 29680 F DEBUG : #23 pc 0000000000532578 /system/lib64/libart.so (MterpInvokeDirect+296)
12-04 10:45:02.371 29680 29680 F DEBUG : #24 pc 0000000000554714 /system/lib64/libart.so (ExecuteMterpImpl+14484)
12-04 10:45:02.371 29680 29680 F DEBUG : #25 pc 000000000000a198 /data/app/net.sensortronic.MobilePlayGroundUPR-jzheVBHPT6b8TgNy6vIEaA==/oat/arm64/base.vdex (com.unity3d.player.UnityPlayerActivity.onCreate+60)
12-04 10:45:02.371 29680 29680 F DEBUG : #26 pc 000000000025a0a0 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.783209430+496)
12-04 10:45:02.371 29680 29680 F DEBUG : #27 pc 0000000000521978 /system/lib64/libart.so (artQuickToInterpreterBridge+1032)
12-04 10:45:02.371 29680 29680 F DEBUG : #28 pc 000000000056b0fc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
12-04 10:45:02.371 29680 29680 F DEBUG : #29 pc 0000000000ad76ec /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.Activity.performCreate+172)
12-04 10:45:02.371 29680 29680 F DEBUG : #30 pc 00000000007f3ab0 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.Instrumentation.callActivityOnCreate+80)
12-04 10:45:02.371 29680 29680 F DEBUG : #31 pc 0000000000902dfc /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.ActivityThread.performLaunchActivity+2636)
12-04 10:45:02.371 29680 29680 F DEBUG : #32 pc 00000000009087a8 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.ActivityThread.handleLaunchActivity+424)
12-04 10:45:02.371 29680 29680 F DEBUG : #33 pc 0000000000ae1454 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.servertransaction.LaunchActivityItem.execute+372)
12-04 10:45:02.371 29680 29680 F DEBUG : #34 pc 00000000008122c4 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.servertransaction.TransactionExecutor.executeCallbacks+708)
12-04 10:45:02.371 29680 29680 F DEBUG : #35 pc 0000000000811f88 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.servertransaction.TransactionExecutor.execute+280)
12-04 10:45:02.371 29680 29680 F DEBUG : #36 pc 00000000008f4aa8 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.ActivityThread$H.handleMessage+1112)
12-04 10:45:02.371 29680 29680 F DEBUG : #37 pc 0000000000b25044 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.os.Handler.dispatchMessage+180)
12-04 10:45:02.371 29680 29680 F DEBUG : #38 pc 0000000000b28140 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.os.Looper.loop+1264)
12-04 10:45:02.371 29680 29680 F DEBUG : #39 pc 0000000000901948 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (android.app.ActivityThread.main+680)
12-04 10:45:02.371 29680 29680 F DEBUG : #40 pc 000000000056224c /system/lib64/libart.so (art_quick_invoke_static_stub+604)
12-04 10:45:02.371 29680 29680 F DEBUG : #41 pc 00000000000d0160 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
12-04 10:45:02.371 29680 29680 F DEBUG : #42 pc 00000000004682d8 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
12-04 10:45:02.371 29680 29680 F DEBUG : #43 pc 0000000000469d30 /system/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1440)
12-04 10:45:02.371 29680 29680 F DEBUG : #44 pc 00000000003f87b0 /system/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+48)
12-04 10:45:02.371 29680 29680 F DEBUG : #45 pc 000000000011e7e4 /system/framework/arm64/boot.oat (offset 0x114000) (java.lang.Class.getDeclaredMethodInternal [DEDUPED]+180)
12-04 10:45:02.371 29680 29680 F DEBUG : #46 pc 0000000000e0fd48 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+136)
12-04 10:45:02.371 29680 29680 F DEBUG : #47 pc 0000000000e168f0 /system/framework/arm64/boot-framework.oat (offset 0x41f000) (com.android.internal.os.ZygoteInit.main+2208)
12-04 10:45:02.371 29680 29680 F DEBUG : #48 pc 000000000056224c /system/lib64/libart.so (art_quick_invoke_static_stub+604)
12-04 10:45:02.371 29680 29680 F DEBUG : #49 pc 00000000000d0160 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
12-04 10:45:02.371 29680 29680 F DEBUG : #50 pc 00000000004682d8 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
12-04 10:45:02.371 29680 29680 F DEBUG : #51 pc 0000000000467f30 /system/lib64/libart.so (art::InvokeWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+416)
12-04 10:45:02.371 29680 29680 F DEBUG : #52 pc 000000000036ab1c /system/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+644)
12-04 10:45:02.371 29680 29680 F DEBUG : #53 pc 00000000000b9d10 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, …)+120)
12-04 10:45:02.371 29680 29680 F DEBUG : #54 pc 00000000000bc8d4 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vectorandroid::String8 const&, bool)+780)
12-04 10:45:02.371 29680 29680 F DEBUG : #55 pc 0000000000004990 /system/bin/app_process64 (main+1200)
12-04 10:45:02.371 29680 29680 F DEBUG : #56 pc 00000000000b0510 /system/lib64/libc.so (__libc_init+88)
12-04 10:45:02.374 3885 13922 I ActivityManager: Killing 28310:com.samsung.android.sm.provider/1000 (adj 906): empty #25
12-04 10:45:02.596 3885 29699 W ActivityManager: crash : net.sensortronic.MobilePlayGroundUPR,0
12-04 10:45:02.597 3885 29699 W ActivityManager: Force finishing activity net.sensortronic.MobilePlayGroundUPR/com.unity3d.player.UnityPlayerActivity
12-04 10:45:02.648 3885 13660 I ActivityManager: Process net.sensortronic.MobilePlayGroundUPR (pid 29655) has died: vis +99TOP (337,998)
12-04 10:45:02.695 3885 13660 D ActivityManager: package com.samsung.android.lool, user - 0 is SDcard whitelisted
12-04 10:45:02.696 3885 13660 W ActivityManager: wait for provider publish: waiters=1 callerApp=ProcessRecord{aa443d0 28272:com.samsung.android.lool/1000} cpr=ContentProviderRecord{e547cf u0 com.samsung.android.lool/com.samsung.android.sm.database.SmProvider}
12-04 10:45:02.712 3885 3903 I ActivityManager: Start proc 29713:com.samsung.android.sm.provider/1000 for content provider com.samsung.android.lool/com.samsung.android.sm.database.SmProvider
12-04 10:45:02.761 3885 13803 I ActivityManager: DSS on for com.samsung.android.lool and scale is 1.0
12-04 10:45:03.748 3885 3895 D ActivityManager: package com.samsung.android.sm.devicesecurity, user - 0 is SDcard whitelisted
12-04 10:45:03.748 3885 3895 W ActivityManager: wait for provider publish: waiters=1 callerApp=ProcessRecord{aa443d0 28272:com.samsung.android.lool/1000} cpr=ContentProviderRecord{6211db6 u0 com.samsung.android.sm.devicesecurity/.DeviceSecurityProvider}
12-04 10:45:03.772 3885 3903 I ActivityManager: Start proc 29748:com.samsung.android.sm.devicesecurity/5012 for content provider com.samsung.android.sm.devicesecurity/.DeviceSecurityProvider
12-04 10:45:03.812 3885 12314 I ActivityManager: DSS on for com.samsung.android.sm.devicesecurity and scale is 1.0
12-04 10:45:04.913 3885 12314 I ActivityManager: Process android:drmService (pid 14282) has died: cch+6SVC (292,1006)
12-04 10:45:04.915 3885 12314 W ActivityManager: Scheduling restart of crashed service android/com.android.server.DrmEventService in 0ms
12-04 10:45:04.928 3885 3901 D ActivityManager: package android, user - 0 is SDcard whitelisted
12-04 10:45:04.953 3885 3903 I ActivityManager: Start proc 29763:android:drmService/1000 for service android/com.android.server.DrmEventService
12-04 10:45:05.034 3885 12314 I ActivityManager: DSS on for android and scale is 1.0
12-04 10:45:06.827 3885 3896 D ActivityManager: package com.expensemanager, user - 0 is SDcard whitelisted
12-04 10:45:06.864 3885 3903 I ActivityManager: Start proc 29782:com.expensemanager/u0a14 for broadcast com.expensemanager/.ExpenseSyncReceiver
12-04 10:45:06.913 3885 3896 I ActivityManager: DSS on for com.expensemanager and scale is 1.0
12-04 10:45:07.013 3885 3896 I ActivityManager: Killing 28775:com.samsung.android.SettingsReceiver/1000 (adj 906): empty #25
It seems you’re using a native library that the Android Runtime is unable to load. Try building and running an empty new project on that device and see if it crashes too. If it doesn’t, the problem lies in your code.
@TommyTheITGuy - I spent some time today and created a brand new Unity project with Unity 2019.3.0f1 - just a 3D project, no other extras.
Below are my Player Settings:
again - the app builds and then fails on load - w/o even show me an Unity splash screen.
Attached (mobile.txt) is the collected logcat output.
One thing need to mention - I set manually NDK path as well as Android SDK, since during the install via SmartHub Unity didn’t able to find NDK.
So basically, this is an empty project and as you can see it fails as well.
5301558–532521–mobile.txt (32.4 KB)
