安全声明:本平台专为移动应用安全风险研究与合规评估设计,严禁用于任何非法用途。如有疑问或建议,欢迎加入微信群交流

应用图标

文件基本信息

文件名称
com-bulkypix-madaces-55-18519752-f29ebd7c5808053d9f3f3722a5db1688.apk
文件大小
53.7MB
MD5
f29ebd7c5808053d9f3f3722a5db1688
SHA1
973fba7b907e47ba8c161534b7a81e90ec1f344a
SHA256
175e10fa99c28ce65d5cbe69175fb5f9cc79a512c6a3eb9024edf82c0db505c7

应用基础信息

应用名称
Mad Aces
包名
com.bulkypix.madaces
主活动
y.z.a.Main
目标SDK
23
最小SDK
14
版本号
1.2.2.3
子版本号
55
加固信息
未加壳

反编译与源码导出

Manifest文件 查看
Java源代码 查看 -- 下载

文件结构与资源列表

    应用签名证书信息

    二进制文件没有签名
    缺少代码签名证书
    v1 签名: False
    v2 签名: False
    v3 签名: False
    v4 签名: False

    权限声明与风险分级

    权限名称 安全等级 权限内容 权限描述 关联代码
    android.permission.INTERNET 危险 完全互联网访问 允许应用程序创建网络套接字。
    android.permission.ACCESS_NETWORK_STATE 普通 获取网络状态 允许应用程序查看所有网络的状态。
    android.permission.READ_PHONE_STATE 危险 读取手机状态和标识 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。
    android.permission.ACCESS_WIFI_STATE 普通 查看Wi-Fi状态 允许应用程序查看有关Wi-Fi状态的信息。
    android.permission.WRITE_EXTERNAL_STORAGE 危险 读取/修改/删除外部存储内容 允许应用程序写入外部存储。
    com.android.vending.BILLING 普通 应用程序具有应用内购买 允许应用程序从 Google Play 进行应用内购买。
    android.permission.READ_EXTERNAL_STORAGE 危险 读取SD卡内容 允许应用程序从SD卡读取信息。

    证书安全合规分析

    高危
    1
    警告
    0
    信息
    0
    标题 严重程度 描述信息
    缺少代码签名证书 高危 未找到代码签名证书

    Manifest 配置安全分析

    高危
    10
    警告
    3
    信息
    0
    屏蔽
    0
    序号 问题 严重程度 描述信息 操作
    1 应用程序可以安装在有漏洞的已更新 Android 版本上
    Android 4.0-4.0.2, [minSdk=14]
    信息 该应用程序可以安装在具有多个未修复漏洞的旧版本 Android 上。这些设备不会从 Google 接收合理的安全更新。支持 Android 版本 => 10、API 29 以接收合理的安全更新。
    2 应用程序数据存在被泄露的风险
    未设置[android:allowBackup]标志
    警告 这个标志 [android:allowBackup]应该设置为false。默认情况下它被设置为true,允许任何人通过adb备份你的应用程序数据。它允许已经启用了USB调试的用户从设备上复制应用程序数据。
    3 Activity (com.unity3d.player.UnityPlayerProxyActivity) 的启动模式不是standard模式 高危 Activity 不应将启动模式属性设置为 "singleTask/singleInstance",因为这会使其成为根 Activity,并可能导致其他应用程序读取调用 Intent 的内容。因此,当 Intent 包含敏感信息时,需要使用 "standard" 启动模式属性。
    4 Activity (com.unity3d.player.UnityPlayerProxyActivity) 容易受到 Android Task Hijacking/StrandHogg 的攻击。 高危 活动不应将启动模式属性设置为“singleTask”。 然后,其他应用程序可以将恶意活动放置在活动栈顶部,从而导致任务劫持/StrandHogg 1.0 漏洞。 这使应用程序成为网络钓鱼攻击的易受攻击目标。 可以通过将启动模式属性设置为“singleInstance”或设置空 taskAffinity (taskAffinity="") 属性来修复此漏洞。 您还可以将应用的目标 SDK 版本 (23) 更新到 28 或更高版本以在平台级别修复此问题。
    5 Activity (com.unity3d.player.UnityPlayerActivity) 的启动模式不是standard模式 高危 Activity 不应将启动模式属性设置为 "singleTask/singleInstance",因为这会使其成为根 Activity,并可能导致其他应用程序读取调用 Intent 的内容。因此,当 Intent 包含敏感信息时,需要使用 "standard" 启动模式属性。
    6 Activity (com.unity3d.player.UnityPlayerActivity) 容易受到 Android Task Hijacking/StrandHogg 的攻击。 高危 活动不应将启动模式属性设置为“singleTask”。 然后,其他应用程序可以将恶意活动放置在活动栈顶部,从而导致任务劫持/StrandHogg 1.0 漏洞。 这使应用程序成为网络钓鱼攻击的易受攻击目标。 可以通过将启动模式属性设置为“singleInstance”或设置空 taskAffinity (taskAffinity="") 属性来修复此漏洞。 您还可以将应用的目标 SDK 版本 (23) 更新到 28 或更高版本以在平台级别修复此问题。
    7 Activity (com.unity3d.player.UnityPlayerNativeActivity) 的启动模式不是standard模式 高危 Activity 不应将启动模式属性设置为 "singleTask/singleInstance",因为这会使其成为根 Activity,并可能导致其他应用程序读取调用 Intent 的内容。因此,当 Intent 包含敏感信息时,需要使用 "standard" 启动模式属性。
    8 Activity (com.unity3d.player.UnityPlayerNativeActivity) 容易受到 Android Task Hijacking/StrandHogg 的攻击。 高危 活动不应将启动模式属性设置为“singleTask”。 然后,其他应用程序可以将恶意活动放置在活动栈顶部,从而导致任务劫持/StrandHogg 1.0 漏洞。 这使应用程序成为网络钓鱼攻击的易受攻击目标。 可以通过将启动模式属性设置为“singleInstance”或设置空 taskAffinity (taskAffinity="") 属性来修复此漏洞。 您还可以将应用的目标 SDK 版本 (23) 更新到 28 或更高版本以在平台级别修复此问题。
    9 Broadcast Receiver (com.heyzap.sdk.ads.PackageAddedReceiver) 未被保护。
    存在一个intent-filter。
    警告 发现 Broadcast Receiver与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Broadcast Receiver是显式导出的。
    10 Activity (com.vungle.publisher.FullScreenAdActivity) 的启动模式不是standard模式 高危 Activity 不应将启动模式属性设置为 "singleTask/singleInstance",因为这会使其成为根 Activity,并可能导致其他应用程序读取调用 Intent 的内容。因此,当 Intent 包含敏感信息时,需要使用 "standard" 启动模式属性。
    11 Activity (com.vungle.publisher.FullScreenAdActivity) 容易受到 Android Task Hijacking/StrandHogg 的攻击。 高危 活动不应将启动模式属性设置为“singleTask”。 然后,其他应用程序可以将恶意活动放置在活动栈顶部,从而导致任务劫持/StrandHogg 1.0 漏洞。 这使应用程序成为网络钓鱼攻击的易受攻击目标。 可以通过将启动模式属性设置为“singleInstance”或设置空 taskAffinity (taskAffinity="") 属性来修复此漏洞。 您还可以将应用的目标 SDK 版本 (23) 更新到 28 或更高版本以在平台级别修复此问题。
    12 Activity (y.z.a.Main) 的启动模式不是standard模式 高危 Activity 不应将启动模式属性设置为 "singleTask/singleInstance",因为这会使其成为根 Activity,并可能导致其他应用程序读取调用 Intent 的内容。因此,当 Intent 包含敏感信息时,需要使用 "standard" 启动模式属性。
    13 Activity (y.z.a.Main) 容易受到 Android Task Hijacking/StrandHogg 的攻击。 高危 活动不应将启动模式属性设置为“singleTask”。 然后,其他应用程序可以将恶意活动放置在活动栈顶部,从而导致任务劫持/StrandHogg 1.0 漏洞。 这使应用程序成为网络钓鱼攻击的易受攻击目标。 可以通过将启动模式属性设置为“singleInstance”或设置空 taskAffinity (taskAffinity="") 属性来修复此漏洞。 您还可以将应用的目标 SDK 版本 (23) 更新到 28 或更高版本以在平台级别修复此问题。
    14 Broadcast Receiver (y.z.a.Receiver) 未被保护。
    存在一个intent-filter。
    警告 发现 Broadcast Receiver与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Broadcast Receiver是显式导出的。

    可浏览 Activity 组件分析

    ACTIVITY INTENT

    网络通信安全风险分析

    序号 范围 严重级别 描述

    API调用分析

    API功能 源码文件
    一般功能-> 文件操作
    com/chartboost/sdk/Libraries/CBUtility.java
    com/chartboost/sdk/Libraries/c.java
    com/chartboost/sdk/Libraries/d.java
    com/chartboost/sdk/Libraries/h.java
    com/chartboost/sdk/Libraries/j.java
    com/chartboost/sdk/Tracking/CBAnalytics.java
    com/chartboost/sdk/Tracking/a.java
    com/chartboost/sdk/b.java
    com/chartboost/sdk/impl/aa.java
    com/chartboost/sdk/impl/ac.java
    com/chartboost/sdk/impl/ad.java
    com/chartboost/sdk/impl/ba.java
    com/chartboost/sdk/impl/bc.java
    com/chartboost/sdk/impl/bd.java
    com/chartboost/sdk/impl/be.java
    com/chartboost/sdk/impl/bf.java
    com/chartboost/sdk/impl/cc.java
    com/chartboost/sdk/impl/cd.java
    com/chartboost/sdk/impl/ce.java
    com/chartboost/sdk/impl/cf.java
    com/chartboost/sdk/impl/co.java
    com/chartboost/sdk/impl/cp.java
    com/chartboost/sdk/impl/cq.java
    com/chartboost/sdk/impl/cs.java
    com/chartboost/sdk/impl/ct.java
    com/chartboost/sdk/impl/cu.java
    com/chartboost/sdk/impl/cw.java
    com/chartboost/sdk/impl/cx.java
    com/chartboost/sdk/impl/cy.java
    com/chartboost/sdk/impl/cz.java
    com/chartboost/sdk/impl/da.java
    com/chartboost/sdk/impl/l.java
    com/chartboost/sdk/impl/u.java
    com/chartboost/sdk/impl/w.java
    com/chartboost/sdk/impl/x.java
    com/chartboost/sdk/impl/z.java
    com/chartboost/sdk/unity/CBPlugin.java
    com/gameanalytics/sdk/GAPlatform.java
    com/gameanalytics/sdk/support/GetGoogleAIDAsync.java
    com/heyzap/common/cache/Entry.java
    com/heyzap/common/cache/FileCache.java
    com/heyzap/common/io/Gzip.java
    com/heyzap/common/mraid/MRAIDView.java
    com/heyzap/common/mraid/nativefeature/MRAIDNativeFeatureProvider.java
    com/heyzap/common/vast/VASTInterstitial.java
    com/heyzap/common/vast/model/VASTMediaFile.java
    com/heyzap/common/vast/model/VASTModel.java
    com/heyzap/common/vast/processor/VASTProcessor.java
    com/heyzap/common/vast/util/XmlTools.java
    com/heyzap/common/vast/util/XmlValidation.java
    com/heyzap/common/video/Cacher.java
    com/heyzap/common/video/VideoDisplayOptions.java
    com/heyzap/common/video/view/FullscreenVideoView.java
    com/heyzap/house/Manager.java
    com/heyzap/house/handler/AttributionHandler.java
    com/heyzap/house/handler/ImageCacheProvider.java
    com/heyzap/house/model/AdModel.java
    com/heyzap/house/model/InterstitialModel.java
    com/heyzap/house/model/NativeModel.java
    com/heyzap/house/model/VideoModel.java
    com/heyzap/http/AsyncHttpClient.java
    com/heyzap/http/AsyncHttpRequest.java
    com/heyzap/http/AsyncHttpResponseHandler.java
    com/heyzap/http/Base64.java
    com/heyzap/http/Base64DataException.java
    com/heyzap/http/Base64OutputStream.java
    com/heyzap/http/BinaryHttpResponseHandler.java
    com/heyzap/http/DataAsyncHttpResponseHandler.java
    com/heyzap/http/FileAsyncHttpResponseHandler.java
    com/heyzap/http/JsonStreamerEntity.java
    com/heyzap/http/MySSLSocketFactory.java
    com/heyzap/http/PersistentCookieStore.java
    com/heyzap/http/RequestParams.java
    com/heyzap/http/ResponseHandlerInterface.java
    com/heyzap/http/RetryHandler.java
    com/heyzap/http/SDKCookieStore.java
    com/heyzap/http/SerializableCookie.java
    com/heyzap/http/SimpleMultipartEntity.java
    com/heyzap/http/TextHttpResponseHandler.java
    com/heyzap/internal/AdvertisingIdClient.java
    com/heyzap/internal/Assets.java
    com/heyzap/internal/Base64.java
    com/heyzap/internal/Logger.java
    com/heyzap/internal/PackageManager.java
    com/heyzap/internal/ProxyActivity.java
    com/heyzap/internal/Utils.java
    com/heyzap/mediation/MediationManager.java
    com/heyzap/mediation/adapter/AdapterScanner.java
    com/heyzap/mediation/config/MediationConfigLoader.java
    com/heyzap/mediation/display/MediatedDisplayConfigLoader.java
    com/heyzap/sdk/ads/HeyzapNativeAd.java
    com/heyzap/sdk/ads/MediationTestActivityDisabledNetworks.java
    com/immersion/hapticmediasdk/MediaPlaybackSDK.java
    com/immersion/hapticmediasdk/controllers/FileReaderFactory.java
    com/immersion/hapticmediasdk/controllers/HapticDownloadThread.java
    com/immersion/hapticmediasdk/controllers/ImmersionHttpClient.java
    com/immersion/hapticmediasdk/controllers/MemoryAlignedFileReader.java
    com/immersion/hapticmediasdk/controllers/MemoryMappedFileReader.java
    com/immersion/hapticmediasdk/utils/FileManager.java
    com/jirbo/adcolony/ADCData.java
    com/jirbo/adcolony/ADCDownload.java
    com/jirbo/adcolony/ADCImage.java
    com/jirbo/adcolony/ADCStorage.java
    com/jirbo/adcolony/ADCVideo.java
    com/jirbo/adcolony/AdColonyAd.java
    com/jirbo/adcolony/AdColonyNativeAdView.java
    com/jirbo/adcolony/ab.java
    com/jirbo/adcolony/ag.java
    com/jirbo/adcolony/ai.java
    com/jirbo/adcolony/aj.java
    com/jirbo/adcolony/e.java
    com/jirbo/adcolony/f.java
    com/jirbo/adcolony/i.java
    com/jirbo/adcolony/m.java
    com/jirbo/adcolony/o.java
    com/jirbo/adcolony/s.java
    com/jirbo/adcolony/x.java
    com/jirbo/adcolony/y.java
    com/nineoldandroids/animation/AnimatorInflater.java
    com/prime31/AlarmManagerReceiver.java
    com/prime31/EtceteraPlugin.java
    com/prime31/EtceteraProxyActivity.java
    com/prime31/GoogleIABPluginBase.java
    com/prime31/ImageUtils.java
    com/prime31/P31VideoPlayerActivity.java
    com/prime31/WebViewActivity.java
    com/unity3d/ads/android/UnityAdsUtils.java
    com/unity3d/ads/android/cache/UnityAdsCache.java
    com/unity3d/ads/android/cache/a.java
    com/unity3d/ads/android/cache/c.java
    com/unity3d/ads/android/campaign/UnityAdsCampaign.java
    com/unity3d/ads/android/video/UnityAdsVideoPlayView.java
    com/unity3d/ads/android/view/b.java
    com/unity3d/ads/android/webapp/UnityAdsWebData.java
    com/unity3d/ads/android/webapp/UnityAdsWebView.java
    com/unity3d/ads/android/webapp/k.java
    com/unity3d/ads/android/webapp/o.java
    com/vungle/publisher/FullScreenAdActivity.java
    com/vungle/publisher/cc.java
    com/vungle/publisher/cd.java
    com/vungle/publisher/ce.java
    com/vungle/publisher/cf.java
    com/vungle/publisher/ct.java
    com/vungle/publisher/cx.java
    com/vungle/publisher/cy.java
    com/vungle/publisher/db/model/LocalArchive.java
    com/vungle/publisher/db/model/LocalVideo.java
    com/vungle/publisher/db/model/LocalViewableDelegate.java
    com/vungle/publisher/display/view/VideoFragment.java
    com/vungle/publisher/env/AndroidDevice.java
    com/vungle/publisher/file/CacheManager.java
    com/vungle/publisher/image/AssetBitmapFactory.java
    com/vungle/publisher/image/BitmapFactory.java
    com/vungle/publisher/inject/ConfigurablePublisherModule.java
    com/vungle/publisher/net/http/AppFingerprintHttpResponseHandler.java
    com/vungle/publisher/net/http/DownloadHttpResponseHandler.java
    com/vungle/publisher/net/http/HttpTransport.java
    com/vungle/publisher/net/http/HttpURLConnectionFactory.java
    com/vungle/publisher/net/http/ReportExceptionsHttpResponseHandler.java
    com/vungle/publisher/protocol/ReportLocalAdHttpResponseHandler.java
    com/vungle/publisher/protocol/RequestLocalAdHttpResponseHandler.java
    com/vungle/publisher/protocol/RequestStreamingAdHttpResponseHandler.java
    com/vungle/publisher/protocol/TrackInstallHttpResponseHandler.java
    com/vungle/publisher/util/ViewUtils.java
    rrrrrr/rrccrr.java
    y/z/a/G.java
    y/z/a/Main.java
    y/z/a/a.java
    y/z/a/f.java
    y/z/a/i.java
    y/z/a/n.java
    y/z/a/r.java
    y/z/a/v.java
    y/z/a/x.java
    y/z/a/y.java
    网络通信-> HTTP建立连接
    网络通信-> TCP套接字
    一般功能-> IPC通信
    com/chartboost/sdk/CBImpressionActivity.java
    com/chartboost/sdk/Chartboost.java
    com/chartboost/sdk/impl/a.java
    com/chartboost/sdk/impl/ay.java
    com/chartboost/sdk/impl/az.java
    com/chartboost/sdk/impl/bb.java
    com/chartboost/sdk/impl/be.java
    com/chartboost/sdk/impl/bf.java
    com/flurry/android/FlurryFullscreenTakeoverActivity.java
    com/flurry/android/InstallReceiver.java
    com/gameanalytics/sdk/GAPlatform.java
    com/heyzap/common/mraid/nativefeature/MRAIDNativeFeatureProvider.java
    com/heyzap/common/vast/VASTInterstitial.java
    com/heyzap/house/abstr/AbstractActivity.java
    com/heyzap/house/handler/ClickHandler.java
    com/heyzap/house/request/AdRequest.java
    com/heyzap/internal/AdvertisingIdClient.java
    com/heyzap/internal/HeaderActions.java
    com/heyzap/internal/ProxyActivity.java
    com/heyzap/internal/Utils.java
    com/heyzap/sdk/ads/HeyzapAds.java
    com/heyzap/sdk/ads/HeyzapProxyActivity.java
    com/heyzap/sdk/ads/PackageAddedReceiver.java
    com/heyzap/sdk/ads/VASTActivity.java
    com/heyzap/sdk/mediation/adapter/HyprmxAdapter.java
    com/jirbo/adcolony/AdColonyBrowser.java
    com/jirbo/adcolony/AdColonyNativeAdView.java
    com/jirbo/adcolony/ae.java
    com/jirbo/adcolony/d.java
    com/jirbo/adcolony/e.java
    com/jirbo/adcolony/m.java
    com/prime31/ActivityProxyObjectHelper.java
    com/prime31/AlarmManagerReceiver.java
    com/prime31/EtceteraPlugin.java
    com/prime31/EtceteraProxyActivity.java
    com/prime31/GoogleIABPlugin.java
    com/prime31/GoogleIABProxyActivity.java
    com/prime31/P31VideoPlayerActivity.java
    com/prime31/SamsungCameraHack.java
    com/prime31/UnityPlayerNativeActivity.java
    com/prime31/WebViewActivity.java
    com/prime31/util/IabHelper.java
    com/unity3d/ads/android/UnityAds.java
    com/unity3d/ads/android/data/UnityAdsAdvertisingId.java
    com/unity3d/ads/android/data/a.java
    com/unity3d/ads/android/data/b.java
    com/unity3d/ads/android/properties/UnityAdsConstants.java
    com/unity3d/ads/android/view/UnityAdsFullscreenActivity.java
    com/unity3d/ads/android/view/d.java
    com/unity3d/ads/android/webapp/IUnityAdsWebBridgeListener.java
    com/unity3d/ads/android/webapp/UnityAdsWebBridge.java
    com/unity3d/ads/android/webapp/b.java
    com/vungle/publisher/FullScreenAdActivity$$InjectAdapter.java
    com/vungle/publisher/FullScreenAdActivity.java
    com/vungle/publisher/VunglePubBase.java
    com/vungle/publisher/db/DatabaseBroadcastReceiver.java
    com/vungle/publisher/device/ExternalStorageStateBroadcastReceiver.java
    com/vungle/publisher/env/SdkState.java
    com/vungle/publisher/net/NetworkBroadcastReceiver.java
    com/vungle/publisher/util/IntentFactory$$InjectAdapter.java
    com/vungle/publisher/util/IntentFactory.java
    y/z/a/G.java
    y/z/a/Main.java
    y/z/a/Receiver.java
    y/z/a/d.java
    y/z/a/k.java
    y/z/a/l.java
    y/z/a/v.java
    y/z/a/x.java
    加密解密-> 信息摘要算法
    组件-> 发送广播
    网络通信-> DefaultHttpClient Connection
    隐私数据-> 获取已安装的应用程序
    调用java反射机制
    组件-> 启动 Activity
    一般功能-> 获取系统服务(getSystemService)
    组件-> 启动 Service
    网络通信-> WebView JavaScript接口
    网络通信-> WebView GET请求
    网络通信-> WebView 相关
    网络通信-> HTTP请求、连接和会话
    加密解密-> Base64 加密
    隐私数据-> 获取GPS位置信息 com/vungle/publisher/location/BaseGoogleDetailedLocationProvider.java
    com/vungle/publisher/protocol/message/RequestAd.java
    网络通信-> URLConnection com/unity3d/ads/android/cache/c.java
    网络通信-> HTTPS建立连接 com/chartboost/sdk/impl/aa.java
    com/jirbo/adcolony/ADCDownload.java
    com/unity3d/ads/android/webapp/k.java
    网络通信-> SSL证书处理
    一般功能-> 获取活动网路信息
    JavaScript 接口方法 com/prime31/EtceteraPlugin.java
    com/unity3d/ads/android/webapp/UnityAdsWebBridge.java
    一般功能-> 获取WiFi相关信息 com/chartboost/sdk/Libraries/c.java
    com/jirbo/adcolony/g.java
    com/vungle/publisher/env/AdaptiveDeviceIdStrategy.java
    隐私数据-> 录制音频行为 org/fmod/a.java
    一般功能-> 获取网络接口信息 com/chartboost/sdk/impl/cy.java
    一般功能-> 设置手机铃声,媒体音量 com/unity3d/ads/android/video/UnityAdsVideoPlayView.java
    com/vungle/publisher/device/AudioHelper.java
    一般功能-> 获取Android广告ID
    加密解密-> Base64 解密 com/heyzap/common/mraid/MRAIDView.java
    com/heyzap/internal/Assets.java
    加密解密-> Crypto加解密组件 com/prime31/util/Security.java
    进程操作-> 杀死进程 com/heyzap/common/concurrency/WrappedRunnable.java
    网络通信-> WebView使用File协议 com/prime31/WebViewActivity.java
    一般功能-> Android通知 com/prime31/AlarmManagerReceiver.java
    一般功能-> 加载so文件 com/gameanalytics/sdk/GAPlatform.java
    com/immersion/content/EndpointWarp.java
    命令执行-> getRuntime.exec() com/gameanalytics/sdk/GAPlatform.java
    隐私数据-> 读写通讯录 com/prime31/ContactFetcher.java
    进程操作-> 获取运行的进程\服务 com/heyzap/internal/Utils.java
    com/prime31/EtceteraPlugin.java
    组件-> ContentProvider com/heyzap/house/handler/ImageCacheProvider.java
    组件-> Provider openFile com/heyzap/house/handler/ImageCacheProvider.java
    设备指纹-> getSimOperator com/chartboost/sdk/impl/az.java

    安全漏洞检测

    高危
    5
    警告
    9
    信息
    1
    安全
    2
    屏蔽
    0
    序号 问题 等级 参考标准 文件位置 操作
    1 应用程序记录日志信息,不得记录敏感信息 信息 CWE: CWE-532: 通过日志文件的信息暴露
    OWASP MASVS: MSTG-STORAGE-3
    升级会员:解锁高级权限
    2 应用程序可以读取/写入外部存储器,任何应用程序都可以读取写入外部存储器的数据 警告 CWE: CWE-276: 默认权限不正确
    OWASP Top 10: M2: Insecure Data Storage
    OWASP MASVS: MSTG-STORAGE-2
    升级会员:解锁高级权限
    3 MD5是已知存在哈希冲突的弱哈希 警告 CWE: CWE-327: 使用已被攻破或存在风险的密码学算法
    OWASP Top 10: M5: Insufficient Cryptography
    OWASP MASVS: MSTG-CRYPTO-4
    升级会员:解锁高级权限
    4 文件可能包含硬编码的敏感信息,如用户名、密码、密钥等 警告 CWE: CWE-312: 明文存储敏感信息
    OWASP Top 10: M9: Reverse Engineering
    OWASP MASVS: MSTG-STORAGE-14
    升级会员:解锁高级权限
    5 SHA-1是已知存在哈希冲突的弱哈希 警告 CWE: CWE-327: 使用已被攻破或存在风险的密码学算法
    OWASP Top 10: M5: Insufficient Cryptography
    OWASP MASVS: MSTG-CRYPTO-4
    升级会员:解锁高级权限
    6 应用程序创建临时文件。敏感信息永远不应该被写进临时文件 警告 CWE: CWE-276: 默认权限不正确
    OWASP Top 10: M2: Insecure Data Storage
    OWASP MASVS: MSTG-STORAGE-2
    升级会员:解锁高级权限
    7 如果一个应用程序使用WebView.loadDataWithBaseURL方法来加载一个网页到WebView,那么这个应用程序可能会遭受跨站脚本攻击 高危 CWE: CWE-79: 在Web页面生成时对输入的转义处理不恰当('跨站脚本')
    OWASP Top 10: M1: Improper Platform Usage
    OWASP MASVS: MSTG-PLATFORM-6
    升级会员:解锁高级权限
    8 IP地址泄露 警告 CWE: CWE-200: 信息泄露
    OWASP MASVS: MSTG-CODE-2
    升级会员:解锁高级权限
    9 不安全的Web视图实现。可能存在WebView任意代码执行漏洞 警告 CWE: CWE-749: 暴露危险方法或函数
    OWASP Top 10: M1: Improper Platform Usage
    OWASP MASVS: MSTG-PLATFORM-7
    升级会员:解锁高级权限
    10 应用程序使用不安全的随机数生成器 警告 CWE: CWE-330: 使用不充分的随机数
    OWASP Top 10: M5: Insufficient Cryptography
    OWASP MASVS: MSTG-CRYPTO-6
    升级会员:解锁高级权限
    11 已启用远程WebView调试 高危 CWE: CWE-919: 移动应用程序中的弱点
    OWASP Top 10: M1: Improper Platform Usage
    OWASP MASVS: MSTG-RESILIENCE-2
    升级会员:解锁高级权限
    12 此应用程序可能具有Root检测功能 安全
    OWASP MASVS: MSTG-RESILIENCE-1
    升级会员:解锁高级权限
    13 应用程序使用SQLite数据库并执行原始SQL查询。原始SQL查询中不受信任的用户输入可能会导致SQL注入。敏感信息也应加密并写入数据库 警告 CWE: CWE-89: SQL命令中使用的特殊元素转义处理不恰当('SQL 注入')
    OWASP Top 10: M7: Client Code Quality
    升级会员:解锁高级权限
    14 WebView域控制不严格漏洞 高危 CWE: CWE-73: 外部控制文件名或路径 升级会员:解锁高级权限
    15 启用了调试配置。生产版本不能是可调试的 高危 CWE: CWE-919: 移动应用程序中的弱点
    OWASP Top 10: M1: Improper Platform Usage
    OWASP MASVS: MSTG-RESILIENCE-2
    升级会员:解锁高级权限
    16 SSL的不安全实现。信任所有证书或接受自签名证书是一个关键的安全漏洞。此应用程序易受MITM攻击 高危 CWE: CWE-295: 证书验证不恰当
    OWASP Top 10: M3: Insecure Communication
    OWASP MASVS: MSTG-NETWORK-3
    升级会员:解锁高级权限
    17 此应用程序使用SSL Pinning 来检测或防止安全通信通道中的MITM攻击 安全
    OWASP MASVS: MSTG-NETWORK-4
    升级会员:解锁高级权限

    Native库安全分析

    序号 动态库 NX(堆栈禁止执行) PIE STACK CANARY(栈保护) RELRO RPATH(指定SO搜索路径) RUNPATH(指定SO搜索路径) FORTIFY(常用函数加强检查) SYMBOLS STRIPPED(裁剪符号表)
    1 armeabi-v7a/libGameAnalytics.so
    True
    info
    二进制文件设置了 NX 位。这标志着内存页面不可执行,使得攻击者注入的 shellcode 不可执行。


    True
    info
    这个二进制文件在栈上添加了一个栈哨兵值,以便它会被溢出返回地址的栈缓冲区覆盖。这样可以通过在函数返回之前验证栈哨兵的完整性来检测溢出
    Full RELRO
    info
    此共享对象已完全启用 RELRO。 RELRO 确保 GOT 不会在易受攻击的 ELF 二进制文件中被覆盖。在完整 RELRO 中,整个 GOT(.got 和 .got.plt 两者)被标记为只读。
    None
    info
    二进制文件没有设置运行时搜索路径或RPATH
    None
    info
    二进制文件没有设置 RUNPATH
    False
    warning
    二进制文件没有任何加固函数。加固函数提供了针对 glibc 的常见不安全函数(如 strcpy,gets 等)的缓冲区溢出检查。使用编译选项 -D_FORTIFY_SOURCE=2 来加固函数。这个检查对于 Dart/Flutter 库不适用
    False
    warning
    符号可用
    2 armeabi-v7a/libmain.so
    True
    info
    二进制文件设置了 NX 位。这标志着内存页面不可执行,使得攻击者注入的 shellcode 不可执行。


    True
    info
    这个二进制文件在栈上添加了一个栈哨兵值,以便它会被溢出返回地址的栈缓冲区覆盖。这样可以通过在函数返回之前验证栈哨兵的完整性来检测溢出
    No RELRO
    high
    此共享对象未启用 RELRO。整个 GOT(.got 和 .got.plt)都是可写的。如果没有此编译器标志,全局变量上的缓冲区溢出可能会覆盖 GOT 条目。使用选项 -z,relro,-z,now 启用完整 RELRO,仅使用 -z,relro 启用部分 RELRO。
    None
    info
    二进制文件没有设置运行时搜索路径或RPATH
    None
    info
    二进制文件没有设置 RUNPATH
    False
    warning
    二进制文件没有任何加固函数。加固函数提供了针对 glibc 的常见不安全函数(如 strcpy,gets 等)的缓冲区溢出检查。使用编译选项 -D_FORTIFY_SOURCE=2 来加固函数。这个检查对于 Dart/Flutter 库不适用
    False
    warning
    符号可用

    文件分析

    序号 问题 文件

    敏感权限分析

    恶意软件常用权限 1/30
    android.permission.READ_PHONE_STATE
    其它常用权限 5/46
    android.permission.INTERNET
    android.permission.ACCESS_NETWORK_STATE
    android.permission.ACCESS_WIFI_STATE
    android.permission.WRITE_EXTERNAL_STORAGE
    android.permission.READ_EXTERNAL_STORAGE

    恶意软件常用权限 是被已知恶意软件广泛滥用的权限。
    其它常用权限 是已知恶意软件经常滥用的权限。

    IP地理位置

    恶意域名检测

    域名 状态 中国境内 位置信息 解析
    api.vungle.com 安全
    IP地址: 34.232.246.224
    国家: 美利坚合众国
    地区: 弗吉尼亚州
    城市: 阿什本
    查看: Google 地图

    www.linkedin.com 安全
    IP地址: 52.130.75.155
    国家: 中国
    地区: 上海
    城市: 上海
    查看: 高德地图

    market.android.com 安全
    IP地址: 142.251.222.46
    国家: 美利坚合众国
    地区: 加利福尼亚
    城市: 山景城
    查看: Google 地图

    androidads21.adcolony.com 安全
    IP地址: 35.186.210.75
    国家: 美利坚合众国
    地区: 密苏里州
    城市: 堪萨斯城
    查看: Google 地图

    adlog.flurry.com 安全
    IP地址: 180.222.106.12
    国家: 台湾省
    地区: 台北
    城市: 台北
    查看: Google 地图

    ingest.vungle.com 安全
    IP地址: 54.197.112.97
    国家: 美利坚合众国
    地区: 弗吉尼亚州
    城市: 阿什本
    查看: Google 地图

    gcc.gnu.org 安全
    IP地址: 8.43.85.97
    国家: 美利坚合众国
    地区: 北卡罗来纳州
    城市: 罗利
    查看: Google 地图

    www.chartboost.com 安全
    IP地址: 13.226.210.11
    国家: 美利坚合众国
    地区: 加利福尼亚
    城市: 洛杉矶
    查看: Google 地图

    impact.applifier.com 安全
    IP地址: 130.211.33.175
    国家: 美利坚合众国
    地区: 密苏里州
    城市: 堪萨斯城
    查看: Google 地图

    login.live.com 安全
    IP地址: 20.190.144.161
    国家: 大韩民国
    地区: 首尔teukbyeolsi
    城市: 首尔
    查看: Google 地图

    ads.flurry.com 安全
    IP地址: 180.222.106.11
    国家: 台湾省
    地区: 台北
    城市: 台北
    查看: Google 地图

    med.heyzap.com 安全
    IP地址: 127.0.0.1
    国家: -
    地区: -
    城市: -
    查看: Google 地图

    data.flurry.com 安全
    IP地址: 106.10.248.147
    国家: 新加坡
    地区: 新加坡
    城市: 新加坡
    查看: Google 地图

    www.vungle.com 安全
    IP地址: 141.193.213.10
    国家: 美利坚合众国
    地区: 得克萨斯州
    城市: 奥斯丁
    查看: Google 地图

    flurry.cachefly.net 安全
    IP地址: 127.0.0.1
    国家: -
    地区: -
    城市: -
    查看: Google 地图

    ads.heyzap.com 安全
    IP地址: 127.0.0.1
    国家: -
    地区: -
    城市: -
    查看: Google 地图

    proton.flurry.com 安全
    没有可用的地理位置信息。
    analytics.query.yahoo.com 安全
    IP地址: 180.222.102.158
    国家: 台湾省
    地区: 台北
    城市: 台北
    查看: Google 地图

    x.heyzap.com 安全
    IP地址: 127.0.0.1
    国家: -
    地区: -
    城市: -
    查看: Google 地图

    loopj.com 安全
    IP地址: 185.199.108.153
    国家: 美利坚合众国
    地区: 宾夕法尼亚
    城市: 加利福尼亚
    查看: Google 地图

    twitter.com 安全
    IP地址: 104.244.42.65
    国家: 美利坚合众国
    地区: 加利福尼亚
    城市: 旧金山
    查看: Google 地图

    www.paypal.com 安全
    IP地址: 146.75.49.21
    国家: 瑞典
    地区: Vastra Gotalands lan
    城市: Goeteborg
    查看: Google 地图

    contax.stan.cn 安全
    IP地址: 23.89.5.60
    国家: 美利坚合众国
    地区: 加利福尼亚
    城市: 圣何塞
    查看: Google 地图

    live.chartboost.com 安全
    IP地址: 34.107.157.36
    国家: 美利坚合众国
    地区: 密苏里州
    城市: 堪萨斯城
    查看: Google 地图

    login.yahoo.com 安全
    IP地址: 124.108.115.75
    国家: 台湾省
    地区: 台北
    城市: 台北
    查看: Google 地图

    cdn.flurry.com 安全
    IP地址: 180.222.109.251
    国家: 台湾省
    地区: 台北
    城市: 台北
    查看: Google 地图

    impact.staging.applifier.com 安全
    IP地址: 54.172.187.201
    国家: 美利坚合众国
    地区: 弗吉尼亚州
    城市: 阿什本
    查看: Google 地图

    手机号提取

    URL链接分析

    URL信息 源码文件
    http://scripts.sil.org/OFL
    http://pixelspread.com
    http://www.ascendercorp.com/
    http://theleagueofmoveabletype.com
    http://www.thomashourdel.com/colorful/doc/blur-effects/gaussian-blur.html
    http://www.ascendercorp.com/typedesigners.html
    自研引擎-A
    1.2.2.3
    自研引擎-M
    https://www.chartboost.com/support/sdk_download/?os=ios
    com/chartboost/sdk/Chartboost.java
    file:///android_res/
    com/chartboost/sdk/impl/at.java
    https://live.chartboost.com
    com/chartboost/sdk/impl/ba.java
    http://market.android.com/
    com/chartboost/sdk/impl/bb.java
    http://ads.heyzap.com/in_game_api/ads
    com/heyzap/house/Manager.java
    http://loopj.com/android-async-http
    com/heyzap/http/AsyncHttpClient.java
    https://med.heyzap.com/start
    com/heyzap/mediation/config/MediationConfigLoader.java
    https://med.heyzap.com/mediate
    com/heyzap/mediation/display/MediatedDisplayConfigLoader.java
    https://med.heyzap.com/impression
    https://med.heyzap.com/click
    https://med.heyzap.com/fetch
    https://med.heyzap.com/complete
    com/heyzap/mediation/handler/MediationEventReporter.java
    https://med.heyzap.com/info
    com/heyzap/sdk/ads/MediationTestActivity.java
    https://x.heyzap.com/_/0/ad
    com/heyzap/sdk/mediation/adapter/HeyzapExchangeAdapter.java
    2.0.68.4
    com/immersion/hapticmediasdk/HapticMediaSDKVersion.java
    https://androidads21.adcolony.com/configure
    com/jirbo/adcolony/c.java
    https://impact.staging.applifier.com/mobile/campaigns
    com/unity3d/ads/android/UnityAds.java
    https://impact.applifier.com/mobile/campaigns
    com/unity3d/ads/android/properties/UnityAdsProperties.java
    https://www.vungle.com/privacy/
    com/vungle/publisher/FullScreenAdActivity.java
    http://api.vungle.com/api/v4/
    https://ingest.vungle.com/
    com/vungle/publisher/inject/ConfigurablePublisherModule.java
    http://contax.stan.cn/click?appid=%s&placementid=%s&adid=%s&advid=%s&androidid=%s
    y/z/a/c.java
    https://play.google.com
    y/z/a/d.java
    http://contax.stan.cn/ads?appid=%s&placement=%s&platform=android
    y/z/a/G.java
    http://contax.stan.cn/impression
    y/z/a/i.java
    http://contax.stan.cn/timeoutstats
    y/z/a/n.java
    http://contax.stan.cn/check
    y/z/a/v.java
    http://contax.stan.cn/install
    y/z/a/x.java
    http://data.flurry.com/aap.do
    https://med.heyzap.com/mediate
    http://adlog.flurry.com
    https://www.chartboost.com/support/sdk_download/?os=ios
    https://www.paypal.com
    http://cdn.flurry.com/adspacestyles.dev/images/bttn-close-bw.png
    http://contax.stan.cn/click?appid=%s&placementid=%s&adid=%s&advid=%s&androidid=%s
    http://contax.stan.cn/ads?appid=%s&placement=%s&platform=android
    http://ads.heyzap.com/in_game_api/ads
    http://contax.stan.cn/install
    https://med.heyzap.com/complete
    https://x.heyzap.com/_/0/ad
    https://twitter.com
    https://adlog.flurry.com
    https://analytics.query.yahoo.com/v1/public/yql?
    https://ads.flurry.com/v13/getads.do
    http://contax.stan.cn/check
    https://impact.applifier.com/mobile/campaigns
    https://med.heyzap.com/fetch
    http://flurry.cachefly.net/vast/videocontrols/v1/android.zip
    https://live.chartboost.com
    https://ingest.vungle.com/
    https://login.live.com
    file:///android_res/
    https://www.facebook.com
    https://med.heyzap.com/start
    https://androidads21.adcolony.com/configure
    https://play.google.com/store/apps/details?id=
    https://play.google.com
    https://med.heyzap.com/info
    https://data.flurry.com/aap.do
    https://accounts.google.com
    https://med.heyzap.com/click
    https://impact.staging.applifier.com/mobile/campaigns
    http://ads.flurry.com/v13/getads.do
    https://login.yahoo.com
    https://www.linkedin.com
    https://med.heyzap.com/impression
    http://contax.stan.cn/timeoutstats
    http://api.vungle.com/api/v4/
    http://market.android.com/
    2.0.68.4
    http://plus.google.com/
    https://proton.flurry.com:443/sdk/v1/config
    http://contax.stan.cn/impression
    https://www.vungle.com/privacy/
    http://loopj.com/android-async-http
    http://flurry.cachefly.net/adspacestyles/images/bttn-close-bw.png
    自研引擎-S
    https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html
    lib/armeabi-v7a/libGameAnalytics.so

    Firebase配置检测

    邮箱地址提取

    第三方追踪器

    敏感凭证泄露

    显示全部的 443 个secrets
    1、 凭证信息=> "com.google.android.gms.appstate.APP_ID" : "\ 1073917636070"
    2、 凭证信息=> "com.google.android.gms.games.APP_ID" : "\ 1073917636070"
    3、 JiYgNTAgPD0gaGVpZ2h0Ow0KCQkJfSwNCgkJCSJvZmZzZXRYIiA6IGZ1bmN0aW9uKG9mZnNldFgp
    4、 ZA0KCQlmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVyc0ZvckV2ZW50Lmxlbmd0aDsgaSsrKSB7
    5、 DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgcndQcm9wcy5sZW5ndGg7IGkrKykgew0KCQkJdmFyIHBy
    6、 CgkJCQl2YXIgdmFsaWRQb3NpdGlvbnMgPSBbICJ0b3AtbGVmdCIsICJ0b3AtY2VudGVyIiwgInRv
    7、 Q2hpbGQoaWZyYW1lKTsNCgkJaWZyYW1lID0gbnVsbDsNCgl9Ow0KDQoJZnVuY3Rpb24gZmlyZUV2
    8、 CgkJdmFyIGN1c3RvbUNsb3NlUG9zaXRpb24gPSBwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCJj
    9、 ZVZpZXdPblNjcmVlbihwcm9wZXJ0aWVzKSB7DQogICAgICAgIGxvZy5kKCJmaXRSZXNpemVWaWV3
    10、 aGVpZ2h0Ow0KCX07DQoNCgltcmFpZC5zZXRQbGFjZW1lbnRUeXBlID0gZnVuY3Rpb24ocHQpIHsN
    11、 dmVudC5sZW5ndGggPT09IDApIHsNCgkJCQkJZGVsZXRlIGxpc3RlbmVyc1tldmVudF07DQoJCQkJ
    12、 LmhlaWdodDsNCiAgICAgICAgcHJpbnRSZWN0KCJyZXNpemVSZWN0IiwgcmVzaXplUmVjdCk7DQoN
    13、 TkdFIiA6ICJzaXplQ2hhbmdlIiwNCgkJIlNUQVRFQ0hBTkdFIiA6ICJzdGF0ZUNoYW5nZSIsDQoJ
    14、 bmFtZSkpIHsNCgkJCQlleHBhbmRQcm9wZXJ0aWVzW3Byb3BuYW1lXSA9IHByb3BlcnRpZXNbcHJv
    15、 PT0gbXJhaWQuU1RBVEVTLkxPQURJTkcpIHsNCgkJCWZpcmVFdmVudChtcmFpZC5FVkVOVFMuU0la
    16、 e307DQoJdmFyIGlzVmlld2FibGUgPSBmYWxzZTsNCgl2YXIgaXNFeHBhbmRQcm9wZXJ0aWVzU2V0
    17、 cmVlbiA9IHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoImFsbG93T2Zmc2NyZWVuIikgPyBwcm9w
    18、 IHRoZSBhZCBpcw0KCQkvLyBhIGJhbm5lciBjdXJyZW50bHkgaW4gZWl0aGVyIGRlZmF1bHQgb3Ig
    19、 ZC5zZXRSZXNpemVQcm9wZXJ0aWVzIik7DQoJCQlyZXR1cm47DQoJCX0NCgkJDQogICAgICAgIHZh
    20、 ZXQgIiArIHByb3BlcnRpZXMub2Zmc2V0WCArICIgIiArIHByb3BlcnRpZXMub2Zmc2V0WSk7DQoN
    21、 LlBMQUNFTUVOVF9UWVBFUyA9IHsNCgkJIklOTElORSIgOiAiaW5saW5lIiwNCgkJIklOVEVSU1RJ
    22、 CiAgICAgICAgbG9nLmQoImFkanVzdG1lbnRzLnkgIiArIGFkanVzdG1lbnRzLnkpOw0KDQogICAg
    23、 DQoJCSJFWFBBTkRFRCIgOiAiZXhwYW5kZWQiLA0KCQkiUkVTSVpFRCIgOiAicmVzaXplZCIsDQoJ
    24、 CQkJcmV0dXJuOw0KCQl9DQoJCWlmICghaXNSZXNpemVSZWFkeSkgew0KCQkJbXJhaWQuZmlyZUVy
    25、 VElBTCIgOiAiaW50ZXJzdGl0aWFsIg0KCX07DQoNCgl2YXIgUkVTSVpFX1BST1BFUlRJRVNfQ1VT
    26、 bnQoIlVua25vd24gTVJBSUQgZXZlbnQ6ICIgKyBldmVudCwgInJlbW92ZUV2ZW50TGlzdGVuZXIi
    27、 ZSB7DQoJCQlsb2cuZSgic3RvcmVQaWN0dXJlIGlzIG5vdCBzdXBwb3J0ZWQiKTsNCgkJfQ0KCX07
    28、 bCA9IG1yYWlkLkxvZ0xldmVsRW51bS5OT05FOw0KCXZhciBsb2cgPSB7fTsNCg0KCWxvZy5kID0g
    29、 cGVydGllcyA9IGZ1bmN0aW9uKCkgew0KCQlsb2cuaSgibXJhaWQuZ2V0T3JpZW50YXRpb25Qcm9w
    30、 ImN1c3RvbUNsb3NlUG9zaXRpb24gIiArIGN1c3RvbUNsb3NlUG9zaXRpb24pOw0KICAgICAgICAN
    31、 VElPTi5OT05FDQoJfTsNCg0KCXZhciByZXNpemVQcm9wZXJ0aWVzID0gew0KCQkid2lkdGgiIDog
    32、 UG9zaXRpb24ud2lkdGggPSB3aWR0aDsNCgkJY3VycmVudFBvc2l0aW9uLmhlaWdodCA9IGhlaWdo
    33、 emUiKTsNCgkJcmV0dXJuIG1heFNpemU7DQoJfTsNCg0KCW1yYWlkLmdldE9yaWVudGF0aW9uUHJv
    34、 CSJWSUVXQUJMRUNIQU5HRSIgOiAidmlld2FibGVDaGFuZ2UiDQoJfTsNCg0KCXZhciBTVVBQT1JU
    35、 ZXMub2Zmc2V0WCArICIgIiArIHByb3BlcnRpZXMub2Zmc2V0WSk7DQoNCiAgICAgICAgdmFyIHJl
    36、 aXMgaW52YWxpZCIsICJtcmFpZC4iICsgYWN0aW9uKTsNCgkJCQlyZXR2YWwgPSBmYWxzZTsNCgkJ
    37、 Y2sgb24gdGhlIHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllcywgdG9vLg0KCQkJIndpZHRoIiA6
    38、 aCBldmVudCBhbmQgbGlzdGVuZXIgYXJlIHJlcXVpcmVkLiIsICJhZGRFdmVudExpc3RlbmVyIik7
    39、 CSJ4IiA6IDAsDQoJCSJ5IiA6IDAsDQoJCSJ3aWR0aCIgOiAwLA0KCQkiaGVpZ2h0IiA6IDANCgl9
    40、 KTsNCgkJCXJldHVybjsNCgkJfQ0KCQlpZiAobGlzdGVuZXJzLmhhc093blByb3BlcnR5KGV2ZW50
    41、 cm9yRXZlbnQoIm1yYWlkLnJlc2l6ZSBpcyBub3QgcmVhZHkgdG8gYmUgY2FsbGVkIiwgIm1yYWlk
    42、 IHsNCgkJCQlyZXR1cm4gIWlzTmFOKG9mZnNldFgpOw0KCQkJfSwNCgkJCSJvZmZzZXRZIiA6IGZ1
    43、 MCwNCgkJImhlaWdodCIgOiAwLA0KCQkiY3VzdG9tQ2xvc2VQb3NpdGlvbiIgOiBSRVNJWkVfUFJP
    44、 c2l6ZVJlY3QgPSB7fTsNCiAgICAgICAgcmVzaXplUmVjdC54ID0gZGVmYXVsdFBvc2l0aW9uLngg
    45、 c3RlbmVycyByZWdpc3RlcmVkIGZvciBldmVudCAiICsgZXZlbnQpOw0KCQl9DQoJfTsNCg0KCW1y
    46、 cm47DQoJCQl9DQoJCX0NCgkJbGlzdGVuZXJzRm9yRXZlbnQucHVzaChsaXN0ZW5lcik7DQoJfTsN
    47、 bmN0aW9uKG9mZnNldFkpIHsNCgkJCQlyZXR1cm4gIWlzTmFOKG9mZnNldFkpOw0KCQkJfSwNCgkJ
    48、 LCBzbyByZW1vdmUgYWxsIGxpc3RlbmVycw0KCQkJCS8vIGZvciBnaXZlbiBldmVudA0KCQkJCWRl
    49、 Tikgew0KCQkJLy8gZG8gbm90aGluZw0KCQkJcmV0dXJuOw0KCQl9DQoJCWlmIChzdGF0ZSA9PT0g
    50、 bmdlRXZlbnQgPSBmdW5jdGlvbihuZXdTdGF0ZSkgew0KCQlsb2cuaSgibXJhaWQuZmlyZVN0YXRl
    51、 CSJjdXN0b21DbG9zZVBvc2l0aW9uIiA6IGZ1bmN0aW9uKGN1c3RvbUNsb3NlUG9zaXRpb24pIHsN
    52、 cmllbnRhdGlvblByb3BlcnRpZXMgY29udGFpbnMgMiByZWFkLXdyaXRlIHByb3BlcnRpZXM6DQoJ
    53、 CgkJaWYgKCFjb250YWlucyhldmVudCwgRVZFTlRTKSkgew0KCQkJbXJhaWQuZmlyZUVycm9yRXZl
    54、 bmFtZSA9IHJ3UHJvcHNbaV07DQoJCQlpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9w
    55、 CQlpZiAodmFsaWRhdG9yICYmICF2YWxpZGF0b3IodmFsdWUpKSB7DQoJCQkJbXJhaWQuZmlyZUVy
    56、 Y2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxpc3RlbmVyIGlzbid0IGFscmVhZHkgcmVnaXN0ZXJl
    57、 ciBhZGp1c3RtZW50cyA9IHsgIngiOiAwLCAieSI6IDAgfTsNCgkJDQoJCXZhciBhbGxvd09mZnNj
    58、 c2l0aW9uLnggKyAiICIgKyBkZWZhdWx0UG9zaXRpb24ueSk7DQogICAgICAgIGxvZy5kKCJvZmZz
    59、 ew0KCQkiRVJST1IiIDogImVycm9yIiwNCgkJIlJFQURZIiA6ICJyZWFkeSIsDQoJCSJTSVpFQ0hB
    60、 cmFpZC5zZXRSZXNpemVQcm9wZXJ0aWVzIik7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAg
    61、 CQl9DQoJCQ0KCQlpZiAoIXZhbGlkYXRlKHByb3BlcnRpZXMsICJzZXRSZXNpemVQcm9wZXJ0aWVz
    62、 bmdlRXZlbnQgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7DQoJCWxvZy5pKCJtcmFpZC5maXJl
    63、 b3NpdGlvbi53aWR0aCA9IHdpZHRoOw0KCQlkZWZhdWx0UG9zaXRpb24uaGVpZ2h0ID0gaGVpZ2h0
    64、 dGVuZXJzW2V2ZW50XTsNCgkJCQkvLyB0cnkgdG8gZmluZCB0aGUgZ2l2ZW4gbGlzdGVuZXINCgkJ
    65、 DQoNCgltcmFpZC5zdXBwb3J0cyA9IGZ1bmN0aW9uKGZlYXR1cmUpIHsNCgkJbG9nLmkoIm1yYWlk
    66、 dW1lbnRzKTsNCgkJYXJncy5zaGlmdCgpOw0KCQlsb2cuaSgiZmlyZUV2ZW50ICIgKyBldmVudCAr
    67、 ICsgYWRqdXN0bWVudHMueDsNCiAgICAgICAgcmVzaXplUmVjdC55ID0gZGVmYXVsdFBvc2l0aW9u
    68、 ID0gbmV3T3JpZW50YXRpb25Qcm9wZXJ0aWVzLmZvcmNlT3JpZW50YXRpb247DQoNCgkJdmFyIHBh
    69、 b21wb25lbnQodXJsKSk7DQoJfTsNCg0KCW1yYWlkLnBsYXlWaWRlbyA9IGZ1bmN0aW9uKHVybCkg
    70、 ZXMuaGFzT3duUHJvcGVydHkocHJvcG5hbWUpKSB7DQoJCQkJbXJhaWQuZmlyZUVycm9yRXZlbnQo
    71、 CgkJInNldFJlc2l6ZVByb3BlcnRpZXMiIDogew0KCQkJIndpZHRoIiA6IGZ1bmN0aW9uKHdpZHRo
    72、 bGxvd09yaWVudGF0aW9uQ2hhbmdlID0gbmV3T3JpZW50YXRpb25Qcm9wZXJ0aWVzLmFsbG93T3Jp
    73、 YW5kZWQuDQoJCWlmIChwbGFjZW1lbnRUeXBlID09PSBQTEFDRU1FTlRfVFlQRVMuSU5URVJTVElU
    74、 bnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50LCBsaXN0ZW5lcikgew0KCQlsb2cuaSgibXJhaWQu
    75、 cy55ID0gbWF4UmVjdC55IC0gcmVzaXplUmVjdC55Ow0KICAgICAgICB9IGVsc2UgaWYgKChyZXNp
    76、 IG9yaWVudGF0aW9uUHJvcGVydGllcy5mb3JjZU9yaWVudGF0aW9uOw0KDQoJCWNhbGxOYXRpdmUo
    77、 Ow0KCQlleHBhbmRQcm9wZXJ0aWVzLndpZHRoID0gd2lkdGg7DQoJCWV4cGFuZFByb3BlcnRpZXMu
    78、 cmlnaHQiDQoJfTsNCg0KCXZhciBPUklFTlRBVElPTl9QUk9QRVJUSUVTX0ZPUkNFX09SSUVOVEFU
    79、 cmFtcyA9ICJhbGxvd09yaWVudGF0aW9uQ2hhbmdlPSINCgkJCQkrIG9yaWVudGF0aW9uUHJvcGVy
    80、 c2VDdXN0b21DbG9zZSk7DQoJCX0NCgkJDQoJCWlzRXhwYW5kUHJvcGVydGllc1NldCA9IHRydWU7
    81、 RVZFTlRTLkVSUk9SLCBtZXNzYWdlLCBhY3Rpb24pOw0KCX07DQoNCgltcmFpZC5maXJlUmVhZHlF
    82、 bS1yaWdodCIgXTsNCgkJCQlyZXR1cm4gKHR5cGVvZiBjdXN0b21DbG9zZVBvc2l0aW9uID09PSAi
    83、 ZW50YXRpb25DaGFuZ2U7DQoJCW9yaWVudGF0aW9uUHJvcGVydGllcy5mb3JjZU9yaWVudGF0aW9u
    84、 aWdodCA9IGN1cnJlbnRQb3NpdGlvbi5oZWlnaHQ7DQoJCWxvZy5pKCJwcmV2aW91c1NpemUgIiAr
    85、 fQ0KCQkJfSBlbHNlIHsNCgkJCQkvLyBubyBsaXN0ZW5lciB0byByZW1vdmUgd2FzIHByb3ZpZGVk
    86、 dFNjcmVlblNpemUgPSBmdW5jdGlvbigpIHsNCgkJbG9nLmkoIm1yYWlkLmdldFNjcmVlblNpemUi
    87、 YXVsdFBvc2l0aW9uLnggPSB4Ow0KCQlkZWZhdWx0UG9zaXRpb24ueSA9IHk7DQoJCWRlZmF1bHRQ
    88、 Zm91bmQgZm9yIGV2ZW50ICIgKyBldmVudCk7DQoJCQkJfQ0KCQkJCWlmIChsaXN0ZW5lcnNGb3JF
    89、 bWVudFR5cGUiKTsNCgkJcmV0dXJuIHBsYWNlbWVudFR5cGU7DQoJfTsNCg0KCW1yYWlkLmdldFJl
    90、 b21DbG9zZVBvc2l0aW9uLnNlYXJjaCgidG9wIikgIT09IC0xKSB7DQogICAgICAgICAgICBjbG9z
    91、 Y2VtZW50VHlwZSA9PT0gUExBQ0VNRU5UX1RZUEVTLklOTElORSkNCgkJCQl8fCBzdGF0ZSA9PT0g
    92、 IGNvbnRhaW5lZFJlY3QueSA+PSBjb250YWluaW5nUmVjdC55ICYmDQogICAgICAgICAgICAoY29u
    93、 Cg0KCW1yYWlkLmdldFZlcnNpb24gPSBmdW5jdGlvbigpIHsNCgkJbG9nLmkoIm1yYWlkLmdldFZl
    94、 aHQgPSBwcm9wZXJ0aWVzLmhlaWdodDsNCiAgICAgICAgcHJpbnRSZWN0KCJyZXNpemVSZWN0Iiwg
    95、 dEVsZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lKTsNCgkJaWZyYW1lLnBhcmVudE5vZGUucmVtb3Zl
    96、 SU9OID0gbXJhaWQuT1JJRU5UQVRJT05fUFJPUEVSVElFU19GT1JDRV9PUklFTlRBVElPTiA9IHsN
    97、 b2cuaSgibXJhaWQuc2V0Q3VycmVudFBvc2l0aW9uICIgKyB4ICsgIiwiICsgeSArICIsIiArIHdp
    98、 KyAiKSIpOw0KICAgIH0NCgkNCgltcmFpZC5kdW1wTGlzdGVuZXJzID0gZnVuY3Rpb24oKSB7DQoJ
    99、 ZXMgYXJlIG5vdCBuZWVkZWQgYnkgdGhlIG5hdGl2ZSBjb2RlLikNCgkJaWYgKGV4cGFuZFByb3Bl
    100、 aW9uICIgKyB4ICsgIiwiICsgeSArICIsIiArIHdpZHRoICsgIiwiCSsgaGVpZ2h0KTsNCgkJZGVm
    101、 CWxvZy5pKCJtcmFpZC5jcmVhdGVDYWxlbmRhckV2ZW50IHdpdGggIiArIHBhcmFtZXRlcnMpOw0K
    102、 YXVsdFBvc2l0aW9uLnggKyBwcm9wZXJ0aWVzLm9mZnNldFg7DQogICAgICAgIHJlc2l6ZVJlY3Qu
    103、 c0N1c3RvbUNsb3NlKSB7DQoJCWxvZy5pKCJtcmFpZC51c2VDdXN0b21DbG9zZSAiICsgaXNDdXN0
    104、 dGFpbmVkIik7DQogICAgICAgIHByaW50UmVjdCgiY29udGFpbmluZ1JlY3QiLCBjb250YWluaW5n
    105、 ZXRZLg0KCQkvLyBUaGUgcmVtYWluaW5nIHR3byBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbC4NCgkJ
    106、 bGlzdGVuZXJzIGZvdW5kIik7DQoJCX0NCgl9Ow0KDQoJZnVuY3Rpb24gY29udGFpbnModmFsdWUs
    107、 LmhlaWdodCA9IG1heFNpemUuaGVpZ2h0Ow0KDQogICAgICAgIHZhciBhZGp1c3RtZW50cyA9IHsg
    108、 ZXhwYW5kP3VybD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHVybCkpOw0KCQl9DQoJfTsNCg0KCW1y
    109、 c0ZvckV2ZW50LnNwbGljZShpLCAxKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJfQ0KCQkJ
    110、 CgkJbG9nLmkoIm1yYWlkLnNldFBsYWNlbWVudFR5cGUgIiArIHB0KTsNCgkJcGxhY2VtZW50VHlw
    111、 LCBhbGxvd09mZnNjcmVlbg0KDQoJCS8vIFRoZSBwcm9wZXJ0aWVzIG9iamVjdCBwYXNzZWQgaW50
    112、 ZXZpb3VzU2l6ZS5oZWlnaHQpIHsNCgkJCW1yYWlkLmZpcmVTaXplQ2hhbmdlRXZlbnQod2lkdGgs
    113、 cmVzaXplUmVjdCk7DQoNCiAgICAgICAgdmFyIG1heFJlY3QgPSB7ICJ4IjogMCwgInkiOiAwIH07
    114、 dGVuZXJzLmxlbmd0aCArICIgbGlzdGVuZXJzIik7DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGV2
    115、 Cg0KCW1yYWlkLmNyZWF0ZUNhbGVuZGFyRXZlbnQgPSBmdW5jdGlvbihwYXJhbWV0ZXJzKSB7DQoJ
    116、 cm9yRXZlbnQgIiArIG1lc3NhZ2UgKyAiICIgKyBhY3Rpb24pOw0KCQlmaXJlRXZlbnQobXJhaWQu
    117、 UkVQSUNUVVJFIiA6ICJzdG9yZVBpY3R1cmUiLA0KCQkiSU5MSU5FVklERU8iIDogImlubGluZVZp
    118、 IHByZXZpb3VzU2l6ZS53aWR0aCArICIsIiArIHByZXZpb3VzU2l6ZS5oZWlnaHQpOw0KDQoJCWN1
    119、 IGlzIHJlcXVpcmVkLiIsICJyZW1vdmVFdmVudExpc3RlbmVyIik7DQoJCQlyZXR1cm47DQoJCX0N
    120、 IHsNCgkJCWNhbGxOYXRpdmUoImV4cGFuZCIpOw0KCQl9IGVsc2Ugew0KCQkJY2FsbE5hdGl2ZSgi
    121、 Vmlld2FibGUpIHsNCgkJCWlzVmlld2FibGUgPSBuZXdJc1ZpZXdhYmxlOw0KCQkJZmlyZUV2ZW50
    122、 ZHRoIG9yIGhlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heFNpemUgd2lkdGggb3IgaGVpZ2h0
    123、 cHJvcGVydGllcywgInNldEV4cGFuZFByb3BlcnRpZXMiKSkgew0KCQkJbG9nLmUoImZhaWxlZCB2
    124、 cyBieSBkZWZpbml0aW9uIGNvdmVyIHRoZSBlbnRpcmUgc2NyZWVuLA0KCQkvLyBzbyB0aGUgb25s
    125、 SUFMIHx8IHN0YXRlID09PSBTVEFURVMuTE9BRElORyB8fCBzdGF0ZSA9PT0gU1RBVEVTLkhJRERF
    126、 ICAgIGlmIChyZXNpemVSZWN0LnggPCBtYXhSZWN0LngpIHsNCiAgICAgICAgICAgIGFkanVzdG1l
    127、 cnNpb24iKTsNCgkJcmV0dXJuIFZFUlNJT047DQoJfTsNCg0KCW1yYWlkLmlzVmlld2FibGUgPSBm
    128、 CgkJIkVSUk9SIiAgIDogMywNCgkJIk5PTkUiICAgIDogNA0KCX07DQoNCgltcmFpZC5sb2dMZXZl
    129、 bXJhaWQuZmlyZUVycm9yRXZlbnQoIlVua25vd24gTVJBSUQgZXZlbnQ6ICIgKyBldmVudCwgImFk
    130、 dmFyIHJlcXVpcmVkUHJvcHMgPSBbICJ3aWR0aCIsICJoZWlnaHQiLCAib2Zmc2V0WCIsICJvZmZz
    131、 OyBpIDwgbGVuOyBpKyspIHsNCgkJCQkJdmFyIHJlZ2lzdGVyZWRMaXN0ZW5lciA9IGxpc3RlbmVy
    132、 aXMNCgkJLy8gYSBiYW5uZXIgY3VycmVudGx5IGluIGVpdGhlciBkZWZhdWx0IG9yIHJlc2l6ZWQg
    133、 IGNhbGxlZCB3aGVuIGFkIGlzIGluIGV4cGFuZGVkIHN0YXRlIiwgIm1yYWlkLnJlc2l6ZSIpOw0K
    134、 b3BuYW1lKSkgew0KCQkJCW5ld09yaWVudGF0aW9uUHJvcGVydGllc1twcm9wbmFtZV0gPSBwcm9w
    135、 IH0NCgkJDQoJCXZhciByd1Byb3BzID0gWyAid2lkdGgiLCAiaGVpZ2h0IiwgIm9mZnNldFgiLCAi
    136、 ZnVuY3Rpb24obXNnKSB7DQoJCWlmIChtcmFpZC5sb2dMZXZlbCA8PSBtcmFpZC5Mb2dMZXZlbEVu
    137、 eSBwcm9wZXJ0eSB0aGF0IHRoZSBuYXRpdmUgc2lkZSBoYXMgdG8ga25vdyBhYm91dCBpcyB1c2VD
    138、 ICAgIHJlc2l6ZVJlY3QueCA9IGRlZmF1bHRQb3NpdGlvbi54ICsgcHJvcGVydGllcy5vZmZzZXRY
    139、 KioqKioqKioqKioqLw0KDQoJZnVuY3Rpb24gY2FsbE5hdGl2ZShjb21tYW5kKSB7DQoJCXZhciBp
    140、 dEV4cGFuZFByb3BlcnRpZXMiKTsNCgkJcmV0dXJuIGV4cGFuZFByb3BlcnRpZXM7DQoJfTsNCg0K
    141、 YW5nZUV2ZW50ICIgKyBuZXdJc1ZpZXdhYmxlKTsNCgkJaWYgKGlzVmlld2FibGUgIT09IG5ld0lz
    142、 dGllcy5hbGxvd09yaWVudGF0aW9uQ2hhbmdlDQoJCQkJKyAiJmZvcmNlT3JpZW50YXRpb249IiAr
    143、 IiwgIm1yYWlkLnNldFJlc2l6ZVByb3BlcnRpZXMiKTsNCiAgICAgICAgICAgICAgICByZXR1cm47
    144、 DQoJfTsNCg0KCW1yYWlkLnNldE9yaWVudGF0aW9uUHJvcGVydGllcyA9IGZ1bmN0aW9uKHByb3Bl
    145、 bnRzLnggPSBtYXhSZWN0LnggLSByZXNpemVSZWN0Lng7DQogICAgICAgIH0gZWxzZSBpZiAoKHJl
    146、 U1RBVEVTLkVYUEFOREVEKSB7DQoJCQltcmFpZC5maXJlRXJyb3JFdmVudCgibXJhaWQucmVzaXpl
    147、 b24NCgkvLyAoaW4gb3RoZXIgd29yZHMsIHNldEV4cGFuZFByb3BldGllcywgc2V0T3JpZW50YXRp
    148、 W2V2ZW50XTsNCgkJCWxvZy5pKCIgICIgKyBldmVudCArICIgY29udGFpbnMgIiArIGV2ZW50TGlz
    149、 b3BuYW1lID0gcndQcm9wc1tpXTsNCgkJCWlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHBy
    150、 Ly8NCi8vICBtcmFpZC5qcw0KLy8NCg0KKGZ1bmN0aW9uKCkgew0KCQ0KCWNvbnNvbGUubG9nKCJN
    151、 DQoJCX0sDQoJCSJzZXRPcmllbnRhdGlvblByb3BlcnRpZXMiIDogew0KCQkJImFsbG93T3JpZW50
    152、 LnN1cHBvcnRzICIgKyBmZWF0dXJlICsgIiAiICsgc3VwcG9ydGVkRmVhdHVyZXNbZmVhdHVyZV0p
    153、 Ow0KDQoJdmFyIG1heFNpemUgPSB7DQoJCSJ3aWR0aCIgOiAwLA0KCQkiaGVpZ2h0IiA6IDANCgl9
    154、 U1RBVEVTLkhJRERFTikgew0KCQkJLy8gZG8gbm90aGluZw0KCQkJcmV0dXJuOw0KCQl9DQoJCWNh
    155、 DQoJCSJOT05FIiA6ICJub25lIg0KCX07DQoNCgl2YXIgRVZFTlRTID0gbXJhaWQuRVZFTlRTID0g
    156、 CWlmIChpID09PSBsZW4pIHsNCgkJCQkJbG9nLmkoImxpc3RlbmVyICIgKyBzdHIxICsgIiBub3Qg
    157、 Ow0KCX07DQoNCgltcmFpZC5zZXRFeHBhbmRTaXplID0gZnVuY3Rpb24od2lkdGgsIGhlaWdodCkg
    158、 U2NyZWVuKHByb3BlcnRpZXMpKSB7DQogICAgICAgICAgICBtcmFpZC5maXJlRXJyb3JFdmVudCgi
    159、 IDogMCwNCgkJImhlaWdodCIgOiAwDQoJfTsNCg0KCXZhciBkZWZhdWx0UG9zaXRpb24gPSB7DQoJ
    160、 DQogICAgICAgIG1heFJlY3Qud2lkdGggPSBtYXhTaXplLndpZHRoOw0KICAgICAgICBtYXhSZWN0
    161、 ZSA9IHB0Ow0KCX07DQoNCgltcmFpZC5zZXRTY3JlZW5TaXplID0gZnVuY3Rpb24od2lkdGgsIGhl
    162、 ZXRZIiBdOw0KCQlmb3IgKHZhciBpID0gMDsgaSA8IHJlcXVpcmVkUHJvcHMubGVuZ3RoOyBpKysp
    163、 DQoJCQl9LA0KCQkJInVzZUN1c3RvbUNsb3NlIiA6IGZ1bmN0aW9uKHVzZUN1c3RvbUNsb3NlKSB7
    164、 TV9DRU5URVIiIDogImJvdHRvbS1jZW50ZXIiLA0KCQkiQk9UVE9NX1JJR0hUIiA6ICJib3R0b20t
    165、 b2YgcmV0dmFsID09PSAidW5kZWZpbmVkIikgew0KCQkJcmV0dmFsID0gZmFsc2U7DQoJCX0NCgkJ
    166、 Cgl9Ow0KDQoJbG9nLmkgPSBmdW5jdGlvbihtc2cpIHsNCgkJaWYgKG1yYWlkLmxvZ0xldmVsIDw9
    167、 ICAgICAgICBtYXhSZWN0LndpZHRoID0gbWF4U2l6ZS53aWR0aDsNCiAgICAgICAgbWF4UmVjdC5o
    168、 IHsNCgkJCXZhciBwcm9wbmFtZSA9IHJlcXVpcmVkUHJvcHNbaV07DQoJCQlpZiAoIXByb3BlcnRp
    169、 cmV0dXJuIHJldHZhbDsNCgl9Ow0KDQoJbXJhaWQudXNlQ3VzdG9tQ2xvc2UgPSBmdW5jdGlvbihp
    170、 CSJISURERU4iIDogImhpZGRlbiINCgl9Ow0KDQoJdmFyIFBMQUNFTUVOVF9UWVBFUyA9IG1yYWlk
    171、 b3IgKHZhciBpID0gMDsgaSA8IHJ3UHJvcHMubGVuZ3RoOyBpKyspIHsNCgkJCXZhciBwcm9wbmFt
    172、 KioqKioqKioqKioqKioqKi8NCg0KCS8vIHNldHRlcnMgdG8gY2hhbmdlIHN0YXRlDQoJbXJhaWQu
    173、 YWlkLmdldERlZmF1bHRQb3NpdGlvbiA9IGZ1bmN0aW9uKCkgew0KCQlsb2cuaSgibXJhaWQuZ2V0
    174、 CWlmICghZXZlbnQgfHwgIWxpc3RlbmVyKSB7DQoJCQltcmFpZC5maXJlRXJyb3JFdmVudCgiQm90
    175、 CW1yYWlkLmdldE1heFNpemUgPSBmdW5jdGlvbigpIHsNCgkJbG9nLmkoIm1yYWlkLmdldE1heFNp
    176、 DQogICAgICAgIGlmIChjdXN0b21DbG9zZVBvc2l0aW9uLnNlYXJjaCgibGVmdCIpICE9PSAtMSkg
    177、 YWRkRXZlbnRMaXN0ZW5lciAiICsgZXZlbnQgKyAiOiAiICsgU3RyaW5nKGxpc3RlbmVyKSk7DQoJ
    178、 UmVzaXplUHJvcGVydGllcyA9IGZ1bmN0aW9uKHByb3BlcnRpZXMpIHsNCgkJbG9nLmkoIm1yYWlk
    179、 KioqKioqKioqKioqKioqKioqDQoJICogaGVscGVyIG1ldGhvZHMgY2FsbGVkIGJ5IFNESw0KCSAq
    180、 CQkJCXZhciB2YWxpZFZhbHVlcyA9IFsgInBvcnRyYWl0IiwgImxhbmRzY2FwZSIsICJub25lIiBd
    181、 ZHRoICsgIiwiCSsgaGVpZ2h0KTsNCg0KCQl2YXIgcHJldmlvdXNTaXplID0ge307DQoJCXByZXZp
    182、 b3BlcnRpZXMiKTsNCgkJcmV0dXJuIHJlc2l6ZVByb3BlcnRpZXM7DQoJfTsNCg0KCW1yYWlkLmdl
    183、 c0ZvckV2ZW50W2ldOw0KCQkJCQl2YXIgc3RyMSA9IFN0cmluZyhsaXN0ZW5lcik7DQoJCQkJCXZh
    184、 bWVdOw0KCQkJfQ0KCQl9DQoJCQ0KCQl2YXIgcGFyYW1zID0NCgkJCSJ3aWR0aD0iICsgcmVzaXpl
    185、 cmVlbj0iICsgcmVzaXplUHJvcGVydGllcy5hbGxvd09mZnNjcmVlbjsNCg0KCQljYWxsTmF0aXZl
    186、 YWRqdXN0bWVudHMueCkgKw0KCSAgICAgICAgIiZvZmZzZXRZPSIgKyAocmVzaXplUHJvcGVydGll
    187、 dmVudCA9IGZ1bmN0aW9uKCkgew0KCQlsb2cuaSgibXJhaWQuZmlyZVJlYWR5RXZlbnQiKTsNCgkJ
    188、 2741b4b2f9c14003c3580be594ec921c
    189、 ZWlnaHQpOw0KCQlzY3JlZW5TaXplLndpZHRoID0gd2lkdGg7DQoJCXNjcmVlblNpemUuaGVpZ2h0
    190、 RVMuUkVTSVpFRCkpIHsNCgkJCXJldHVybjsNCgkJfQ0KCQlpZiAodXJsID09PSB1bmRlZmluZWQp
    191、 VmlkZW8/dXJsPSIgKyBlbmNvZGVVUklDb21wb25lbnQodXJsKSk7DQoJfTsNCg0KCW1yYWlkLnJl
    192、 c3RvbUNsb3NlKSB7DQoJCQlleHBhbmRQcm9wZXJ0aWVzLnVzZUN1c3RvbUNsb3NlID0gaXNDdXN0
    193、 ICAgICAgbG9nLmQoImRlZmF1bHRQb3NpdGlvbiAiICsgZGVmYXVsdFBvc2l0aW9uLnggKyAiICIg
    194、 YXRpb25DaGFuZ2UNCgkJCQkmJiBuZXdPcmllbnRhdGlvblByb3BlcnRpZXMuZm9yY2VPcmllbnRh
    195、 RUNIQU5HRSwgd2lkdGgsIGhlaWdodCk7DQoJCX0NCgl9Ow0KDQoJbXJhaWQuZmlyZVN0YXRlQ2hh
    196、 YXRpb25DaGFuZ2UiIDogZnVuY3Rpb24oYWxsb3dPcmllbnRhdGlvbkNoYW5nZSkgew0KCQkJCXJl
    197、 ZSBpZiAoY3VzdG9tQ2xvc2VQb3NpdGlvbi5zZWFyY2goImNlbnRlciIpICE9PSAtMSkgew0KICAg
    198、 ZXJ0aWVzID0gew0KCQkid2lkdGgiIDogMCwNCgkJImhlaWdodCIgOiAwLA0KCQkidXNlQ3VzdG9t
    199、 aWVzLmFsbG93T3JpZW50YXRpb25DaGFuZ2UgPSBvcmllbnRhdGlvblByb3BlcnRpZXMuYWxsb3dP
    200、 bGlkVmFsdWVzLmluZGV4T2YoZm9yY2VPcmllbnRhdGlvbikgIT09IC0xKTsNCgkJCX0NCgkJfSwN
    201、 KiovDQoNCgl2YXIgVkVSU0lPTiA9ICIyLjAiOw0KDQoJdmFyIFNUQVRFUyA9IG1yYWlkLlNUQVRF
    202、 DQoNCgltcmFpZC5zZXRFeHBhbmRQcm9wZXJ0aWVzID0gZnVuY3Rpb24ocHJvcGVydGllcykgew0K
    203、 UHJvcGVydGllcy53aWR0aCArDQoJCQkiJmhlaWdodD0iICsgcmVzaXplUHJvcGVydGllcy5oZWln
    204、 IngiOiAwLCAieSI6IDAgfTsNCg0KICAgICAgICBpZiAoaXNSZWN0Q29udGFpbmVkKG1heFJlY3Qs
    205、 ImhlaWdodCIgOiBmdW5jdGlvbihoZWlnaHQpIHsNCgkJCQlyZXR1cm4gIWlzTmFOKGhlaWdodCk7
    206、 ZW5lcnNbaV0pOw0KCQkJfQ0KCQl9DQoJfTsNCgkNCgljb25zb2xlLmxvZygiTVJBSUQgb2JqZWN0
    207、 cmFpZC5sb2dMZXZlbCA8PSBtcmFpZC5Mb2dMZXZlbEVudW0uV0FSTklORykgew0KCQkJY29uc29s
    208、 eSBwcm9wZXJ0eSBpbiBleHBhbmRQcm9wZXJ0aWVzIHdlIGFjdHVhbGx5IGNhcmUgYWJvdXQgaXMg
    209、 ICAgIGNsb3NlUmVjdC55ID0gcmVzaXplUmVjdC55ICsgcmVzaXplUmVjdC5oZWlnaHQgLSA1MDsN
    210、 c3VwcG9ydGVkKSB7DQoJCWxvZy5pKCJtcmFpZC5zZXRTdXBwb3J0cyAiICsgZmVhdHVyZSArICIg
    211、 DQoJCQlsb2cuZSgiZmFpbGVkIHZhbGlkYXRpb24iKTsNCgkJCXJldHVybjsNCgkJfQ0KDQoJCXZh
    212、 b21DbG9zZSk7DQoJCWlmIChleHBhbmRQcm9wZXJ0aWVzLnVzZUN1c3RvbUNsb3NlICE9PSBpc0N1
    213、 dmVudCA9IGZ1bmN0aW9uKG1lc3NhZ2UsIGFjdGlvbikgew0KCQlsb2cuaSgibXJhaWQuZmlyZUVy
    214、 W21yYWlkLlNVUFBPUlRFRF9GRUFUVVJFUy5TVE9SRVBJQ1RVUkVdKSB7DQoJCQljYWxsTmF0aXZl
    215、 Y2xvc2UgZXZlbnQgcmVnaW9uIHdpbGwgbm90IGFwcGVhciBlbnRpcmVseSBvbnNjcmVlbiIsICJt
    216、 CiAgICAgICAgfQ0KDQogICAgICAgIHZhciBtYXhSZWN0ID0geyAieCI6IDAsICJ5IjogMCB9Ow0K
    217、 bGV0ZSBsaXN0ZW5lcnNbZXZlbnRdOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJbG9nLmkoIm5vIGxp
    218、 c2VDdXN0b21DbG9zZTsNCgkJLy8gdGhlIGlzTW9kYWwgcHJvcGVydHkgaXMgcmVhZC1vbmx5DQoJ
    219、 ImhlaWdodCIgOiBmdW5jdGlvbihoZWlnaHQpIHsNCgkJCQlyZXR1cm4gIWlzTmFOKGhlaWdodCkg
    220、 ZW50W2ldIHx8IHN0cjEgPT09IHN0cjIpIHsNCgkJCQlsb2cuaSgibGlzdGVuZXIgIiArIHN0cjEg
    221、 CQlsb2cuaSgibXJhaWQuc2V0RXhwYW5kUHJvcGVydGllcyIpOw0KDQoJCWlmICghdmFsaWRhdGUo
    222、 ZWlnaHQpIHsNCiAgICAgICAgICAgICAgICBtcmFpZC5maXJlRXJyb3JFdmVudCgicmVzaXplIHdp
    223、 YWRqdXN0bWVudHM7DQogICAgfQ0KICAgIA0KICAgIGZ1bmN0aW9uIGlzUmVjdENvbnRhaW5lZChj
    224、 dGlvbkNoYW5nZSB0byB0cnVlIHdoaWxlIHNldHRpbmcgZm9yY2VPcmllbnRhdGlvbg0KCQkvLyB0
    225、 ZSA9IHJ3UHJvcHNbaV07DQoJCQlpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wbmFt
    226、 c2V0Q3VycmVudFBvc2l0aW9uID0gZnVuY3Rpb24oeCwgeSwgd2lkdGgsIGhlaWdodCkgew0KCQls
    227、 InJpZ2h0IikgIT09IC0xKSB7DQogICAgICAgICAgICBjbG9zZVJlY3QueCA9IHJlc2l6ZVJlY3Qu
    228、 Uk9SKSB7DQoJCQljb25zb2xlLmxvZygiKEUtbXJhaWQuanMpICIgKyBtc2cpOw0KCQl9DQoJfTsN
    229、 KGN1c3RvbUNsb3NlUG9zaXRpb24uc2VhcmNoKCJib3R0b20iKSAhPT0gLTEpIHsNCiAgICAgICAg
    230、 ZW50KGV2ZW50KSB7DQoJCXZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn
    231、 IHZhbHVlKSB7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0K
    232、 KyAocmVjdC54ICsgcmVjdC53aWR0aCkgKyAiLCIgKyAocmVjdC55ICsgcmVjdC5oZWlnaHQpICsg
    233、 IikpIHsNCgkJCW1yYWlkLmZpcmVFcnJvckV2ZW50KCJmYWlsZWQgdmFsaWRhdGlvbiIsICJtcmFp
    234、 dmVudExpc3RlbmVycy5sZW5ndGg7DQoJCQlsb2cuaShsZW4gKyAiIGxpc3RlbmVyKHMpIGZvdW5k
    235、 CS8vIGFsbG93T3JpZW50YXRpb25DaGFuZ2UgYW5kIGZvcmNlT3JpZW50YXRpb24NCgkJdmFyIHJ3
    236、 ZWVuKSB7DQoJCQkJcmV0dXJuICh0eXBlb2YgYWxsb3dPZmZzY3JlZW4gPT09ICJib29sZWFuIik7
    237、 YWlkLnJlc2l6ZSA9IGZ1bmN0aW9uKCkgew0KCQlsb2cuaSgibXJhaWQucmVzaXplIik7DQoJCS8v
    238、 KG1yYWlkLkVWRU5UUy5WSUVXQUJMRUNIQU5HRSwgaXNWaWV3YWJsZSk7DQoJCX0NCgl9Ow0KDQoJ
    239、 KSB7DQoJCQkJcmV0dXJuICFpc05hTih3aWR0aCkgJiYgNTAgPD0gd2lkdGg7DQoJCQl9LA0KCQkJ
    240、 ZmlyZUV2ZW50KG1yYWlkLkVWRU5UUy5SRUFEWSk7DQoJfTsNCg0KCW1yYWlkLmZpcmVTaXplQ2hh
    241、 eSA9IGRlZmF1bHRQb3NpdGlvbi55ICsgcHJvcGVydGllcy5vZmZzZXRZOw0KICAgICAgICByZXNp
    242、 aW9uXTsNCgkJZm9yICh2YXIgcHJvcCBpbiBwcm9wZXJ0aWVzKSB7DQoJCQl2YXIgdmFsaWRhdG9y
    243、 dDsNCg0KCQlpZiAod2lkdGggIT09IHByZXZpb3VzU2l6ZS53aWR0aCB8fCBoZWlnaHQgIT09IHBy
    244、 d2lkdGgpIC0gKHJlc2l6ZVJlY3QueCArIHJlc2l6ZVJlY3Qud2lkdGgpOw0KICAgICAgICB9DQog
    245、 IDIpIC0gMjU7DQogICAgICAgIH0gZWxzZSBpZiAoY3VzdG9tQ2xvc2VQb3NpdGlvbi5zZWFyY2go
    246、 KyBwcm9wZXJ0aWVzLm9mZnNldFg7DQogICAgICAgIHJlc2l6ZVJlY3QueSA9IGRlZmF1bHRQb3Np
    247、 emVSZWN0LnkgKyByZXNpemVSZWN0LmhlaWdodCkgPiAobWF4UmVjdC55ICsgbWF4UmVjdC5oZWln
    248、 c2l6ZVJlY3QueCArIHJlc2l6ZVJlY3Qud2lkdGgpID4gKG1heFJlY3QueCArIG1heFJlY3Qud2lk
    249、 ID0gdmFsaWRhdG9yc1twcm9wXTsNCgkJCXZhciB2YWx1ZSA9IHByb3BlcnRpZXNbcHJvcF07DQoJ
    250、 DQoJCQkJcmV0dXJuICh0eXBlb2YgdXNlQ3VzdG9tQ2xvc2UgPT09ICJib29sZWFuIik7DQoJCQl9
    251、 YWxlbmRhckV2ZW50IGlzIG5vdCBzdXBwb3J0ZWQiKTsNCgkJfQ0KCX07DQoNCgltcmFpZC5jbG9z
    252、 ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJRlJBTUUiKTsNCgkJaWZyYW1lLnNldEF0
    253、 Ow0KCQkJCXJldHVybiAodHlwZW9mIGZvcmNlT3JpZW50YXRpb24gPT09ICJzdHJpbmciICYmIHZh
    254、 LnJlc2l6ZSIpOw0KCQkJcmV0dXJuOw0KCQl9DQoJCWNhbGxOYXRpdmUoInJlc2l6ZSIpOw0KCX07
    255、 KyBkZWZhdWx0UG9zaXRpb24ueSk7DQogICAgICAgIGxvZy5kKCJvZmZzZXQgIiArIHByb3BlcnRp
    256、 IDogInRvcC1jZW50ZXIiLA0KCQkiVE9QX1JJR0hUIiA6ICJ0b3AtcmlnaHQiLA0KCQkiQ0VOVEVS
    257、 IGZ1bmN0aW9uKHdpZHRoKSB7DQoJCQkJcmV0dXJuICFpc05hTih3aWR0aCk7DQoJCQl9LA0KCQkJ
    258、 ZW50TGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7DQoJCQkJbG9nLmkoIiAgICAiICsgZXZlbnRMaXN0
    259、 PSBTVEFURVMuTE9BRElORw0KCQkJCXx8IChzdGF0ZSA9PT0gU1RBVEVTLkRFRkFVTFQgJiYgcGxh
    260、 KGNvbnRhaW5pbmdSZWN0LnggKyBjb250YWluaW5nUmVjdC53aWR0aCkgJiYNCiAgICAgICAgICAg
    261、 Cgl9Ow0KDQoJdmFyIGN1cnJlbnRPcmllbnRhdGlvbiA9IDA7DQoNCgl2YXIgbGlzdGVuZXJzID0g
    262、 cyIsDQoJCSJURUwiIDogInRlbCIsDQoJCSJDQUxFTkRBUiIgOiAiY2FsZW5kYXIiLA0KCQkiU1RP
    263、 LmkoIm1yYWlkLnN0b3JlUGljdHVyZSAiICsgdXJsKTsNCgkJaWYgKHN1cHBvcnRlZEZlYXR1cmVz
    264、 ZXMud2lkdGggPiBtYXhTaXplLndpZHRoIHx8IHByb3BlcnRpZXMuaGVpZ2h0ID4gbWF4U2l6ZS5o
    265、 IiArIHN1cHBvcnRlZCk7DQoJCXN1cHBvcnRlZEZlYXR1cmVzW2ZlYXR1cmVdID0gc3VwcG9ydGVk
    266、 KCJzZXRSZXNpemVQcm9wZXJ0aWVzPyIgKyBwYXJhbXMpOw0KDQoJCWlzUmVzaXplUmVhZHkgPSB0
    267、 T25TY3JlZW4iKTsNCiAgICAgICAgbG9nLmQoImRlZmF1bHRQb3NpdGlvbiAiICsgZGVmYXVsdFBv
    268、 CQkvLyB3aWR0aCwgaGVpZ2h0LCBvZmZzZXRYLCBvZmZzZXRZLCBjdXN0b21DbG9zZVBvc2l0aW9u
    269、 ICsgY29udGFpbmluZ1JlY3QuaGVpZ2h0KSk7DQogICAgfQ0KICAgIA0KICAgIGZ1bmN0aW9uIHBy
    270、 VHlwZSA9IFBMQUNFTUVOVF9UWVBFUy5JTkxJTkU7DQoJdmFyIHN1cHBvcnRlZEZlYXR1cmVzID0g
    271、 LnNldFJlc2l6ZVByb3BlcnRpZXMiKTsNCgkJDQoJCWlzUmVzaXplUmVhZHkgPSBmYWxzZTsNCg0K
    272、 CgkJCQkJCSJtcmFpZC5zZXRSZXNpemVQcm9wZXJ0aWVzIik7DQoJCQkJcmV0dXJuOw0KCQkJfQ0K
    273、 UyA9IHsNCgkJIkxPQURJTkciIDogImxvYWRpbmciLA0KCQkiREVGQVVMVCIgOiAiZGVmYXVsdCIs
    274、 RGVmYXVsdFBvc2l0aW9uIik7DQoJCXJldHVybiBkZWZhdWx0UG9zaXRpb247DQoJfTsNCg0KCW1y
    275、 cyB3ZWxsIGFzIHRoZSBhY3Rpb24gcGFyYW1ldGVyIG9mIGFueSBlcnJvciBldmVudCB0aGF0IG1h
    276、 b24oeCwgeSwgd2lkdGgsIGhlaWdodCkgew0KCQlsb2cuaSgibXJhaWQuc2V0RGVmYXVsdFBvc2l0
    277、 aWdodCkgew0KCQlsb2cuaSgibXJhaWQuc2V0U2NyZWVuU2l6ZSAiICsgd2lkdGggKyAieCIgKyBo
    278、 UHJvcHMgPSBbICJhbGxvd09yaWVudGF0aW9uQ2hhbmdlIiwgImZvcmNlT3JpZW50YXRpb24iIF07
    279、 KyBoZWlnaHQpOw0KCQltYXhTaXplLndpZHRoID0gd2lkdGg7DQoJCW1heFNpemUuaGVpZ2h0ID0g
    280、 ZSkpIHsNCgkJCQlyZXNpemVQcm9wZXJ0aWVzW3Byb3BuYW1lXSA9IHByb3BlcnRpZXNbcHJvcG5h
    281、 aXZlKCJ1c2VDdXN0b21DbG9zZT91c2VDdXN0b21DbG9zZT0iCSsgZXhwYW5kUHJvcGVydGllcy51
    282、 dGFpbmVkUmVjdC55ICsgY29udGFpbmVkUmVjdC5oZWlnaHQpIDw9IChjb250YWluaW5nUmVjdC55
    283、 IGV2ZW50IGluIGxpc3RlbmVycykgew0KCQkJdmFyIGV2ZW50TGlzdGVuZXJzID0gbGlzdGVuZXJz
    284、 dGlvbiAhPT0gbXJhaWQuT1JJRU5UQVRJT05fUFJPUEVSVElFU19GT1JDRV9PUklFTlRBVElPTi5O
    285、 bGxOYXRpdmUoImNsb3NlIik7DQoJfTsNCg0KCW1yYWlkLmV4cGFuZCA9IGZ1bmN0aW9uKHVybCkg
    286、 b3IgY29uZGl0aW9uLg0KCQlpZiAobmV3T3JpZW50YXRpb25Qcm9wZXJ0aWVzLmFsbG93T3JpZW50
    287、 b21DbG9zZTsNCgkJCWNhbGxOYXRpdmUoInVzZUN1c3RvbUNsb3NlP3VzZUN1c3RvbUNsb3NlPSIN
    288、 aGFuZ2UgaXMgdHJ1ZSBidXQgZm9yY2VPcmllbnRhdGlvbiBpcyAiDQoJCQkJCSsgbmV3T3JpZW50
    289、 CQlpZiAoc3VwcG9ydGVkRmVhdHVyZXNbbXJhaWQuU1VQUE9SVEVEX0ZFQVRVUkVTLkNBTEVOREFS
    290、 VE9NX0NMT1NFX1BPU0lUSU9OID0gbXJhaWQuUkVTSVpFX1BST1BFUlRJRVNfQ1VTVE9NX0NMT1NF
    291、 Ow0KCQl2YXIgcmV0dmFsID0gc3VwcG9ydGVkRmVhdHVyZXNbZmVhdHVyZV07DQoJCWlmICh0eXBl
    292、 KioqKioqKiovDQoNCgl2YXIgc3RhdGUgPSBTVEFURVMuTE9BRElORzsNCgl2YXIgcGxhY2VtZW50
    293、 YWlkLmdldEN1cnJlbnRQb3NpdGlvbiA9IGZ1bmN0aW9uKCkgew0KCQlsb2cuaSgibXJhaWQuZ2V0
    294、 IGZ1bmN0aW9uKG5ld0lzVmlld2FibGUpIHsNCgkJbG9nLmkoIm1yYWlkLmZpcmVWaWV3YWJsZUNo
    295、 dW5jdGlvbigpIHsNCgkJbG9nLmkoIm1yYWlkLmlzVmlld2FibGUiKTsNCgkJcmV0dXJuIGlzVmll
    296、 cGVydGllcy53aWR0aCA9IHdpZHRoOw0KCQkJZXhwYW5kUHJvcGVydGllcy5oZWlnaHQgPSBoZWln
    297、 YXRpbmcNCgkvLyBmdW5jdGlvbnMgZnJvbSB0aGUgYWxsVmFsaWRhdG9ycyBvYmplY3QNCgkvLyBh
    298、 eCArIHJlc2l6ZVJlY3Qud2lkdGggLSA1MDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChjdXN0
    299、 CQkvLyByZXNpemVQcm9wZXJ0aWVzIGNvbnRhaW5zIDYgcmVhZC13cml0ZSBwcm9wZXJ0aWVzOg0K
    300、 b24oKSB7DQoJCWxvZy5pKCJtcmFpZC5nZXRTdGF0ZSIpOw0KCQlyZXR1cm4gc3RhdGU7DQoJfTsN
    301、 Y3QoImFkanVzdGVkIHJlc2l6ZVJlY3QiLCByZXNpemVSZWN0KTsNCg0KICAgICAgICByZXR1cm4g
    302、 cnkiKTsNCiAgICAgICAgICAgIHJldHVybiBhZGp1c3RtZW50czsNCiAgICAgICAgfQ0KDQogICAg
    303、 aXN0ZW5lcnNGb3JFdmVudFtpXSk7DQoJCQlpZiAobGlzdGVuZXIgPT09IGxpc3RlbmVyc0ZvckV2
    304、 cmllbnRhdGlvbkNoYW5nZSwNCgkJbmV3T3JpZW50YXRpb25Qcm9wZXJ0aWVzLmZvcmNlT3JpZW50
    305、 dGVuZXIpKTsNCgkJaWYgKCFldmVudCkgew0KCQkJbXJhaWQuZmlyZUVycm9yRXZlbnQoIkV2ZW50
    306、 CQkJc3RhdGUgPSBuZXdTdGF0ZTsNCgkJCWZpcmVFdmVudChtcmFpZC5FVkVOVFMuU1RBVEVDSEFO
    307、 c3RhdGUuDQoJCS8vIFRyaWdnZXIgYW4gZXJyb3IgaWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgZXhw
    308、 CgkJIlBPUlRSQUlUIiA6ICJwb3J0cmFpdCIsDQoJCSJMQU5EU0NBUEUiIDogImxhbmRzY2FwZSIs
    309、 XSkgew0KCQkJY2FsbE5hdGl2ZSgiY3JlYXRlQ2FsZW5kYXJFdmVudD9ldmVudEpTT049IgkrIEpT
    310、 KCJzdG9yZVBpY3R1cmU/dXJsPSIgKyBlbmNvZGVVUklDb21wb25lbnQodXJsKSk7DQoJCX0gZWxz
    311、 dHJpYnV0ZSgic3JjIiwgIm1yYWlkOi8vIiArIGNvbW1hbmQpOw0KCQlkb2N1bWVudC5kb2N1bWVu
    312、 Im1yYWlkLnJlbW92ZUV2ZW50TGlzdGVuZXIgIiArIGV2ZW50ICsgIiA6ICIgKyBTdHJpbmcobGlz
    313、 CX07DQoNCgkvLyBUaGUgYWN0aW9uIHBhcmFtZXRlciBpcyBhIHN0cmluZyB3aGljaCBpcyB0aGUg
    314、 CgkJCQkJKyBleHBhbmRQcm9wZXJ0aWVzLnVzZUN1c3RvbUNsb3NlKTsNCgkJfQ0KCX07DQoNCgkv
    315、 YXRpb25Qcm9wZXJ0aWVzLmZvcmNlT3JpZW50YXRpb24sDQoJCQkJCSJzZXRPcmllbnRhdGlvblBy
    316、 ew0KCQlpZiAodXJsID09PSB1bmRlZmluZWQpIHsNCgkJCWxvZy5pKCJtcmFpZC5leHBhbmQgKDEt
    317、 DQoJCQl2YXIgc3RyMSA9IFN0cmluZyhsaXN0ZW5lcik7DQoJCQl2YXIgc3RyMiA9IFN0cmluZyhs
    318、 aGVpZ2h0ID0gaGVpZ2h0Ow0KCX07DQoNCgltcmFpZC5zZXRNYXhTaXplID0gZnVuY3Rpb24od2lk
    319、 PSBleHBhbmRQcm9wZXJ0aWVzLnVzZUN1c3RvbUNsb3NlOw0KDQoJCS8vIGV4cGFuZFByb3BlcnRp
    320、 ZWlnaHQgPSBtYXhTaXplLmhlaWdodDsNCg0KICAgICAgICByZXR1cm4gaXNSZWN0Q29udGFpbmVk
    321、 IHJlc2l6ZVJlY3QpKSB7DQogICAgICAgICAgICBsb2cuZCgibm8gYWRqdXN0bWVudCBuZWNlc3Nh
    322、 cy5vZmZzZXRZICsgYWRqdXN0bWVudHMueSkgKw0KCQkJIiZjdXN0b21DbG9zZVBvc2l0aW9uPSIg
    323、 b2Zmc2V0WSIsICJjdXN0b21DbG9zZVBvc2l0aW9uIiwgImFsbG93T2Zmc2NyZWVuIiBdOw0KCQlm
    324、 Ow0KDQoJdmFyIHNjcmVlblNpemUgPSB7DQoJCSJ3aWR0aCIgOiAwLA0KCQkiaGVpZ2h0IiA6IDAN
    325、 Q3VycmVudFBvc2l0aW9uIik7DQoJCXJldHVybiBjdXJyZW50UG9zaXRpb247DQoJfTsNCg0KCW1y
    326、 ZVJlY3QueSA9IHJlc2l6ZVJlY3QueTsNCiAgICAgICAgfSBlbHNlIGlmIChjdXN0b21DbG9zZVBv
    327、 ew0KICAgICAgICAgICAgY2xvc2VSZWN0LnggPSByZXNpemVSZWN0Lng7DQogICAgICAgIH0gZWxz
    328、 c2l6ZVByb3BlcnRpZXMgPSBmdW5jdGlvbigpIHsNCgkJbG9nLmkoIm1yYWlkLmdldFJlc2l6ZVBy
    329、 DQogICAgICAgICAgICAoY29udGFpbmVkUmVjdC54ICsgY29udGFpbmVkUmVjdC53aWR0aCkgPD0g
    330、 YWlkLm9wZW4gIiArIHVybCk7DQoJCWNhbGxOYXRpdmUoIm9wZW4/dXJsPSIgKyBlbmNvZGVVUklD
    331、 Ow0KICAgICAgICByZXR1cm4gKGNvbnRhaW5lZFJlY3QueCA+PSBjb250YWluaW5nUmVjdC54ICYm
    332、 cnJlbnRQb3NpdGlvbi54ID0geDsNCgkJY3VycmVudFBvc2l0aW9uLnkgPSB5Ow0KCQljdXJyZW50
    333、 KyAiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgZXZlbnQgIiArIGV2ZW50KTsNCgkJCQlyZXR1
    334、 CiAgICAgICAgdmFyIHJlc2l6ZVJlY3QgPSB7fTsNCiAgICAgICAgcmVzaXplUmVjdC54ID0gZGVm
    335、 DQoJCQl9DQoJCX0NCgl9Ow0KCQ0KICAgIGZ1bmN0aW9uIGlzQ2xvc2VSZWdpb25PblNjcmVlbihw
    336、 ZXJ0aWVzIik7DQoJCXJldHVybiBvcmllbnRhdGlvblByb3BlcnRpZXM7DQoJfTsNCg0KCW1yYWlk
    337、 bnQgPSBsaXN0ZW5lcnNbZXZlbnRdID0gbGlzdGVuZXJzW2V2ZW50XSB8fCBbXTsNCgkJLy8gY2hl
    338、 b3VzU2l6ZS53aWR0aCA9IGN1cnJlbnRQb3NpdGlvbi53aWR0aDsNCgkJcHJldmlvdXNTaXplLmhl
    339、 dW0uREVCVUcpIHsNCgkJCWNvbnNvbGUubG9nKCIoRC1tcmFpZC5qcykgIiArIG1zZyk7DQoJCX0N
    340、 aW9uUHJvcGVydGllcyA9IHsNCgkJImFsbG93T3JpZW50YXRpb25DaGFuZ2UiIDogdHJ1ZSwNCgkJ
    341、 ZXMgY29udGFpbnMgMyByZWFkLXdyaXRlIHByb3BlcnRpZXM6IHdpZHRoLCBoZWlnaHQsIGFuZCB1
    342、 ew0KCQlsb2cuaSgibXJhaWQuc2V0RXhwYW5kU2l6ZSAiICsgd2lkdGggKyAieCIgKyBoZWlnaHQp
    343、 KyByZXNpemVQcm9wZXJ0aWVzLmN1c3RvbUNsb3NlUG9zaXRpb24gKw0KCQkJIiZhbGxvd09mZnNj
    344、 dXNlQ3VzdG9tQ2xvc2UuDQoJCQkvLyBTdGlsbCwgd2UnbGwgZG8gYSBiYXNpYyBzYW5pdHkgY2hl
    345、 dHVybiAodHlwZW9mIGFsbG93T3JpZW50YXRpb25DaGFuZ2UgPT09ICJib29sZWFuIik7DQoJCQl9
    346、 blNjcmVlbihwcm9wZXJ0aWVzKTsNCiAgICAgICAgfSBlbHNlIGlmICghaXNDbG9zZVJlZ2lvbk9u
    347、 eSBiZSB0aHJvd24uDQoJZnVuY3Rpb24gdmFsaWRhdGUocHJvcGVydGllcywgYWN0aW9uKSB7DQoJ
    348、 cm9yRXZlbnQoIlZhbHVlIG9mIHByb3BlcnR5ICIgKyBwcm9wICsgIiAoIiArIHZhbHVlCSsgIikg
    349、 cyBib3RoIGFzIHRoZSBrZXkgdG8gZ2V0IHRoZSB0aGUgYXBwcm9wcmlhdGUgc2V0IG9mIHZhbGlk
    350、 CXZhciBuRXZlbnRzID0gT2JqZWN0LmtleXMobGlzdGVuZXJzKS5sZW5ndGg7DQoJCWxvZy5pKCJk
    351、 aGVpZ2h0KSAtIChyZXNpemVSZWN0LnkgKyByZXNpemVSZWN0LmhlaWdodCk7DQogICAgICAgIH0N
    352、 dXN0b21DbG9zZVBvc2l0aW9uIikgPw0KCQkJCXByb3BlcnRpZXMuY3VzdG9tQ2xvc2VQb3NpdGlv
    353、 byB0aGlzIGZ1bmN0aW9uIG11c3QgY29udGFpbiB3aWR0aCwgaGVpZ2h0LCBvZmZzZXRYLCBvZmZz
    354、 aXN0ZW5lcnNbZXZlbnRdOw0KCQlpZiAoZXZlbnRMaXN0ZW5lcnMpIHsNCgkJCXZhciBsZW4gPSBl
    355、 Iik7DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7DQoJCQkJZXZlbnRMaXN0ZW5l
    356、 dXN0b21DbG9zZS4NCgkJLy8gKFRoYXQgaXMsIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHByb3BlcnRp
    357、 aW9uKG1zZykgew0KCQlpZiAobXJhaWQubG9nTGV2ZWwgPD0gbXJhaWQuTG9nTGV2ZWxFbnVtLkVS
    358、 cnRpZXMudXNlQ3VzdG9tQ2xvc2UgIT09IG9sZFVzZUN1c3RvbUNsb3NlKSB7DQoJCQljYWxsTmF0
    359、 aHQgKw0KCSAgICAgICAgIiZvZmZzZXRYPSIgKyAocmVzaXplUHJvcGVydGllcy5vZmZzZXRYICsg
    360、 CWlmICghdmFsaWRhdGUocHJvcGVydGllcywgInNldE9yaWVudGF0aW9uUHJvcGVydGllcyIpKSB7
    361、 CQl2YXIgbGVuID0gbGlzdGVuZXJzRm9yRXZlbnQubGVuZ3RoOw0KCQkJCWZvciAodmFyIGkgPSAw
    362、 LA0KCQkJImZvcmNlT3JpZW50YXRpb24iIDogZnVuY3Rpb24oZm9yY2VPcmllbnRhdGlvbikgew0K
    363、 aHQ7Ow0KCQl9DQoJfTsNCg0KCW1yYWlkLnNldFN1cHBvcnRzID0gZnVuY3Rpb24oZmVhdHVyZSwg
    364、 IFRoZSBvbmx5IHRpbWUgaXQgaXMgdmFsaWQgdG8gY2FsbCByZXNpemUgaXMgd2hlbiB0aGUgYWQg
    365、 bW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCwgbGlzdGVuZXIpIHsNCgkJbG9nLmko
    366、 IiA6ICJjZW50ZXIiLA0KCQkiQk9UVE9NX0xFRlQiIDogImJvdHRvbS1sZWZ0IiwNCgkJIkJPVFRP
    367、 c3RyaW5nIiAmJiB2YWxpZFBvc2l0aW9ucy5pbmRleE9mKGN1c3RvbUNsb3NlUG9zaXRpb24pICE9
    368、 bmFtZSBvZiB0aGUgc2V0dGVyIGZ1bmN0aW9uDQoJLy8gd2hpY2ggY2FsbGVkIHRoaXMgZnVuY3Rp
    369、 cHJvcGVydGllcy53aWR0aDsNCiAgICAgICAgcmVzaXplUmVjdC5oZWlnaHQgPSBwcm9wZXJ0aWVz
    370、 ZSA9IGZ1bmN0aW9uKCkgew0KCQlsb2cuaSgibXJhaWQuY2xvc2UiKTsNCgkJaWYgKHN0YXRlID09
    371、 LmdldFBsYWNlbWVudFR5cGUgPSBmdW5jdGlvbigpIHsNCgkJbG9nLmkoIm1yYWlkLmdldFBsYWNl
    372、 dGgsIGhlaWdodCkgew0KCQlsb2cuaSgibXJhaWQuc2V0TWF4U2l6ZSAiICsgd2lkdGggKyAieCIg
    373、 KSkgew0KCQkJaWYgKGxpc3RlbmVyKSB7DQoJCQkJdmFyIGxpc3RlbmVyc0ZvckV2ZW50ID0gbGlz
    374、 ICIgKyBtc2cpOw0KCQl9DQoJfTsNCg0KCWxvZy53ID0gZnVuY3Rpb24obXNnKSB7DQoJCWlmICht
    375、 LnkgKyBwcm9wZXJ0aWVzLm9mZnNldFkgKyBhZGp1c3RtZW50cy55Ow0KICAgICAgICBwcmludFJl
    376、 UEVSVElFU19DVVNUT01fQ0xPU0VfUE9TSVRJT04uVE9QX1JJR0hULA0KCQkib2Zmc2V0WCIgOiAw
    377、 cmVzaXplZCBzdGF0ZS4NCgkJaWYgKHBsYWNlbWVudFR5cGUgIT09IFBMQUNFTUVOVF9UWVBFUy5J
    378、 b250YWluaW5nUmVjdCwgY29udGFpbmVkUmVjdCkgew0KICAgICAgICBsb2cuZCgiaXNSZWN0Q29u
    379、 LA0KCQkib2Zmc2V0WSIgOiAwLA0KCQkiYWxsb3dPZmZzY3JlZW4iIDogdHJ1ZQ0KCX07DQoNCgl2
    380、 ICIgWyIgKyBhcmdzLnRvU3RyaW5nKCkgKyAiXSIpOw0KCQl2YXIgZXZlbnRMaXN0ZW5lcnMgPSBs
    381、 U2l6ZUNoYW5nZUV2ZW50ICIgKyB3aWR0aCArICJ4IiArIGhlaWdodCk7DQoJCWlmIChzdGF0ZSAh
    382、 b3BlcnRpZXMiKTsNCgkJCXJldHVybjsNCgkJfQ0KDQoJCW9yaWVudGF0aW9uUHJvcGVydGllcy5h
    383、 aHQpKSB7DQogICAgICAgICAgICBhZGp1c3RtZW50cy55ID0gKG1heFJlY3QueSArIG1heFJlY3Qu
    384、 YXRpb24gPSBvcmllbnRhdGlvblByb3BlcnRpZXMuZm9yY2VPcmllbnRhdGlvbjsNCg0KCQkvLyBv
    385、 biA6IHJlc2l6ZVByb3BlcnRpZXMuY3VzdG9tQ2xvc2VQb3NpdGlvbjsNCiAgICAgICAgbG9nLmQo
    386、 cG5hbWVdOw0KCQkJfQ0KCQl9DQoNCgkJLy8gSW4gTVJBSUQgdjIuMCwgYWxsIGV4cGFuZGVkIGFk
    387、 CgkJInNldEV4cGFuZFByb3BlcnRpZXMiIDogew0KCQkJLy8gSW4gTVJBSUQgMi4wLCB0aGUgb25s
    388、 CiAgICAgICAgdmFyIGNsb3NlUmVjdCA9IHsgIndpZHRoIjogNTAsICJoZWlnaHQiOiA1MCB9Ow0K
    389、 T04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpKTsNCgkJfSBlbHNlIHsNCgkJCWxvZy5lKCJjcmVhdGVD
    390、 aW50UmVjdChsYWJlbCwgcmVjdCkgew0KICAgICAgICBsb2cuZChsYWJlbCArDQogICAgICAgICAg
    391、 DQoJCQkJCQkicmVxdWlyZWQgcHJvcGVydHkgIiArIHByb3BuYW1lICsgIiBpcyBtaXNzaW5nIiwN
    392、 KG1heFJlY3QsIGNsb3NlUmVjdCk7DQogICAgfQ0KICAgIA0KICAgIGZ1bmN0aW9uIGZpdFJlc2l6
    393、 ImZvcmNlT3JpZW50YXRpb24iIDogT1JJRU5UQVRJT05fUFJPUEVSVElFU19GT1JDRV9PUklFTlRB
    394、 UmVjdCk7DQogICAgICAgIHByaW50UmVjdCgiY29udGFpbmVkUmVjdCIsIGNvbnRhaW5lZFJlY3Qp
    395、 ciBzdHIyID0gU3RyaW5nKHJlZ2lzdGVyZWRMaXN0ZW5lcik7DQoJCQkJCWlmIChsaXN0ZW5lciA9
    396、 CiAgICAgICAgaWYgKCFhbGxvd09mZnNjcmVlbikgew0KICAgICAgICAgICAgaWYgKHByb3BlcnRp
    397、 YWxpZGF0aW9uIik7DQoJCQlyZXR1cm47DQoJCX0NCg0KCQl2YXIgb2xkVXNlQ3VzdG9tQ2xvc2Ug
    398、 R0UsIHN0YXRlKTsNCgkJfQ0KCX07DQoNCgltcmFpZC5maXJlVmlld2FibGVDaGFuZ2VFdmVudCA9
    399、 CXZhciByd1Byb3BzID0gWyAid2lkdGgiLCAiaGVpZ2h0IiwgInVzZUN1c3RvbUNsb3NlIiBdOw0K
    400、 InNldE9yaWVudGF0aW9uUHJvcGVydGllcz8iICsgcGFyYW1zKTsNCgl9Ow0KDQoJbXJhaWQuc2V0
    401、 ICBpZiAocmVzaXplUmVjdC55IDwgbWF4UmVjdC55KSB7DQogICAgICAgICAgICBhZGp1c3RtZW50
    402、 CX0NCgkJLy8gVGhlIG9ubHkgdGltZSBpdCBpcyB2YWxpZCB0byBjYWxsIGV4cGFuZCBpcyB3aGVu
    403、 ZS5sb2coIihXLW1yYWlkLmpzKSAiICsgbXNnKTsNCgkJfQ0KCX07DQoNCglsb2cuZSA9IGZ1bmN0
    404、 Ow0KCX07DQoNCgkvLyBtZXRob2RzIHRvIGZpcmUgZXZlbnRzDQoNCgltcmFpZC5maXJlRXJyb3JF
    405、 ciBuZXdPcmllbnRhdGlvblByb3BlcnRpZXMgPSB7fTsNCgkJbmV3T3JpZW50YXRpb25Qcm9wZXJ0
    406、 cm9wZXJ0aWVzKSB7DQogICAgICAgIGxvZy5kKCJpc0Nsb3NlUmVnaW9uT25TY3JlZW4iKTsNCiAg
    407、 c2l0aW9uID09PSAiY2VudGVyIikgew0KICAgICAgICAgICAgY2xvc2VSZWN0LnkgPSByZXNpemVS
    408、 ID0gZmFsc2U7DQoJdmFyIGlzUmVzaXplUmVhZHkgPSBmYWxzZTsNCg0KCXZhciBleHBhbmRQcm9w
    409、 cnVlOw0KCX07DQoNCgltcmFpZC5zdG9yZVBpY3R1cmUgPSBmdW5jdGlvbih1cmwpIHsNCgkJbG9n
    410、 CX0NCgkJfQ0KCQlyZXR1cm4gcmV0dmFsOw0KCX07DQoNCgl2YXIgYWxsVmFsaWRhdG9ycyA9IHsN
    411、 dGlvbi55ICsgcHJvcGVydGllcy5vZmZzZXRZOw0KICAgICAgICByZXNpemVSZWN0LndpZHRoID0g
    412、 CQlmb3IgKHZhciBpID0gMDsgaSA8IHJ3UHJvcHMubGVuZ3RoOyBpKyspIHsNCgkJCXZhciBwcm9w
    413、 PSAtMSk7DQoJCQl9LA0KCQkJImFsbG93T2Zmc2NyZWVuIiA6IGZ1bmN0aW9uKGFsbG93T2Zmc2Ny
    414、 ZXJ0aWVzLmFsbG93T2Zmc2NyZWVuIDogcmVzaXplUHJvcGVydGllcy5hbGxvd09mZnNjcmVlbjsN
    415、 DQoJCQlyZXR1cm47DQoJCX0NCgkJaWYgKCFjb250YWlucyhldmVudCwgRVZFTlRTKSkgew0KCQkJ
    416、 ZWN0LnkgKyAocmVzaXplUmVjdC5oZWlnaHQgLyAyKSAtIDI1Ow0KICAgICAgICB9IGVsc2UgaWYg
    417、 YXIgY3VycmVudFBvc2l0aW9uID0gew0KCQkieCIgOiAwLA0KCQkieSIgOiAwLA0KCQkid2lkdGgi
    418、 cnRpZXMpIHsNCgkJbG9nLmkoIm1yYWlkLnNldE9yaWVudGF0aW9uUHJvcGVydGllcyIpOw0KDQoJ
    419、 b25Qcm9wZXJ0aWVzLCBvcg0KCS8vIHNldFJlc2l6ZVByb3BlcnRpZXMpLg0KCS8vIEl0IHNlcnZl
    420、 ZEV2ZW50TGlzdGVuZXIiKTsNCgkJCXJldHVybjsNCgkJfQ0KCQl2YXIgbGlzdGVuZXJzRm9yRXZl
    421、 byBlaXRoZXIgcG9ydHJhaXQgb3IgbGFuZHNjYXBlDQoJCS8vIGlzIGNvbnNpZGVyZWQgYW4gZXJy
    422、 ID0gaGVpZ2h0Ow0KCQlpZiAoIWlzRXhwYW5kUHJvcGVydGllc1NldCkgew0KCQkJZXhwYW5kUHJv
    423、 ICAgICAgICAgY2xvc2VSZWN0LnggPSByZXNpemVSZWN0LnggKyAocmVzaXplUmVjdC53aWR0aCAv
    424、 TkxJTkUNCgkJCQl8fCAoc3RhdGUgIT09IFNUQVRFUy5ERUZBVUxUICYmIHN0YXRlICE9PSBTVEFU
    425、 ew0KCQlsb2cuaSgibXJhaWQucGxheVZpZGVvICIgKyB1cmwpOw0KCQljYWxsTmF0aXZlKCJwbGF5
    426、 dGgpKSB7DQogICAgICAgICAgICBhZGp1c3RtZW50cy54ID0gKG1heFJlY3QueCArIG1heFJlY3Qu
    427、 emVSZWN0LndpZHRoID0gcHJvcGVydGllcy53aWR0aDsNCiAgICAgICAgcmVzaXplUmVjdC5oZWln
    428、 X1BPU0lUSU9OID0gew0KCQkiVE9QX0xFRlQiIDogInRvcC1sZWZ0IiwNCgkJIlRPUF9DRU5URVIi
    429、 IGhlaWdodCk7DQoJCX0NCgl9Ow0KDQoJbXJhaWQuc2V0RGVmYXVsdFBvc2l0aW9uID0gZnVuY3Rp
    430、 cnNbaV0uYXBwbHkobnVsbCwgYXJncyk7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlsb2cuaSgibm8g
    431、 IGFycmF5KSB7DQoJCWZvciAoIHZhciBpIGluIGFycmF5KSB7DQoJCQlpZiAoYXJyYXlbaV0gPT09
    432、 CXZhciByZXR2YWwgPSB0cnVlOw0KCQl2YXIgdmFsaWRhdG9ycyA9IGFsbFZhbGlkYXRvcnNbYWN0
    433、 ZXJ0aWVzW3Byb3BuYW1lXTsNCgkJCX0NCgkJfQ0KDQoJCS8vIFNldHRpbmcgYWxsb3dPcmllbnRh
    434、 d2FibGU7DQoJfTsNCg0KCW1yYWlkLm9wZW4gPSBmdW5jdGlvbih1cmwpIHsNCgkJbG9nLmkoIm1y
    435、 IG1yYWlkLkxvZ0xldmVsRW51bS5JTkZPKSB7DQoJCQljb25zb2xlLmxvZygiKEktbXJhaWQuanMp
    436、 YWlkLmdldEV4cGFuZFByb3BlcnRpZXMgPSBmdW5jdGlvbigpIHsNCgkJbG9nLmkoIm1yYWlkLmdl
    437、 KTsNCgkJcmV0dXJuIHNjcmVlblNpemU7DQoJfTsNCg0KCW1yYWlkLmdldFN0YXRlID0gZnVuY3Rp
    438、 Q2xvc2UiIDogZmFsc2UsDQoJCSJpc01vZGFsIiA6IHRydWUNCgl9Ow0KDQoJdmFyIG9yaWVudGF0
    439、 PT0gcmVnaXN0ZXJlZExpc3RlbmVyIHx8IHN0cjEgPT09IHN0cjIpIHsNCgkJCQkJCWxpc3RlbmVy
    440、 T05FKSB7DQoJCQltcmFpZC5maXJlRXJyb3JFdmVudCgNCgkJCQkJImFsbG93T3JpZW50YXRpb25D
    441、 cGFydCkiKTsNCgkJfSBlbHNlIHsNCgkJCWxvZy5pKCJtcmFpZC5leHBhbmQgIiArIHVybCk7DQoJ
    442、 Q2hhbmdlRXZlbnQgIiArIG5ld1N0YXRlKTsNCgkJaWYgKHN0YXRlICE9PSBuZXdTdGF0ZSkgew0K
    443、 dW1waW5nIGxpc3RlbmVycyAoIiArIG5FdmVudHMgKyAiIGV2ZW50cykiKTsNCgkJZm9yICggdmFy

    字符串信息

    建议导出为TXT,方便查看。

    内容提供者列表

    第三方SDK

    SDK名称 开发者 描述信息
    Google Play Games plugin for Unity Google 使游戏开发人员能在使用 Unity® 编写的游戏中集成 Google Play Games API。
    File Provider Android FileProvider 是 ContentProvider 的特殊子类,它通过创建 content://Uri 代替 file:///Uri 以促进安全分享与应用程序关联的文件。

    污点分析

    当apk较大时,代码量会很大,造成数据流图(ICFG)呈现爆炸式增长,所以该功能比较耗时,请先喝杯咖啡,耐心等待……
    规则名称 描述信息 操作
    病毒分析 使用安卓恶意软件常用的API进行污点分析 开始分析  
    漏洞挖掘 漏洞挖掘场景下的污点分析 开始分析  
    隐私合规 隐私合规场景下的污点分析:组件内污点传播、组件间污点传播、组件与库函数之间的污点传播 开始分析  
    密码分析 分析加密算法是否使用常量密钥、静态初始化的向量(IV)、加密模式是否使用ECB等 开始分析  
    Callback 因为Android中系统级的Callback并不会出现显式地进行回调方法的调用,所以如果需要分析Callback方法需要在声明文件中将其声明,这里提供一份AndroidCallbacks.txt文件,里面是一些常见的原生回调接口或类,如果有特殊接口需求,可以联系管理员 开始分析