--- /home/fdroid/fdroiddata/tmp/com.f2prateek.dfg_113.apk +++ /home/fdroid/fdroiddata/tmp/sigcp_com.f2prateek.dfg_113.apk ├── zipinfo /dev/stdin │ @@ -1,117 +1,118 @@ │ -Zip file size: 10368142 bytes, number of entries: 115 │ +Zip file size: 10387416 bytes, number of entries: 116 │ -rw---- 2.0 fat 10660 bl defN 13-Nov-05 05:16 META-INF/MANIFEST.MF │ -rw---- 2.0 fat 10781 bl defN 13-Nov-05 05:16 META-INF/765C18FA.SF │ -rw---- 2.0 fat 1297 bl defN 13-Nov-05 05:16 META-INF/765C18FA.RSA │ --rw---- 1.0 fat 3797 bx stor 13-Nov-05 03:43 res/drawable/app_icon_256.png │ --rw---- 2.0 fat 384 bl defN 13-Nov-05 03:44 res/layout/activity_main.xml │ --rw---- 2.0 fat 1888 bl defN 13-Nov-05 03:44 res/layout/fragment_about.xml │ --rw---- 2.0 fat 1940 bl defN 13-Nov-05 03:44 res/layout/fragment_device.xml │ --rw---- 2.0 fat 752 bl defN 13-Nov-05 03:44 res/menu/activity_main.xml │ --rw---- 2.0 fat 4064 bl defN 13-Nov-05 03:44 AndroidManifest.xml │ --rw---- 1.0 fat 17660 b- stor 13-Nov-05 03:43 resources.arsc │ --rw---- 1.0 fat 1631 b- stor 13-Nov-05 03:42 res/drawable-hdpi/app_icon.png │ --rw---- 1.0 fat 656 b- stor 13-Nov-05 03:42 res/drawable-hdpi/ic_action_error.png │ --rw---- 1.0 fat 577 b- stor 13-Nov-05 03:43 res/drawable-hdpi/ic_action_info.png │ --rw---- 1.0 fat 962 b- stor 13-Nov-05 03:43 res/drawable-hdpi/ic_action_share.png │ --rw---- 1.0 fat 1322 b- stor 13-Nov-05 03:43 res/drawable-hdpi/ic_action_star.png │ --rw---- 1.0 fat 942 b- stor 13-Nov-05 03:42 res/drawable-hdpi/ic_action_star_selected.png │ --rw---- 1.0 fat 1289 b- stor 13-Nov-05 03:43 res/drawable-mdpi/app_icon.png │ --rw---- 1.0 fat 461 b- stor 13-Nov-05 03:43 res/drawable-mdpi/ic_action_error.png │ --rw---- 1.0 fat 355 b- stor 13-Nov-05 03:42 res/drawable-mdpi/ic_action_info.png │ --rw---- 1.0 fat 695 b- stor 13-Nov-05 03:43 res/drawable-mdpi/ic_action_share.png │ --rw---- 1.0 fat 917 b- stor 13-Nov-05 03:43 res/drawable-mdpi/ic_action_star.png │ --rw---- 1.0 fat 672 b- stor 13-Nov-05 03:43 res/drawable-mdpi/ic_action_star_selected.png │ --rw---- 1.0 fat 89046 b- stor 13-Nov-05 03:42 res/drawable-nodpi/galaxy_nexus_land_back.png │ --rw---- 1.0 fat 10524 b- stor 13-Nov-05 03:42 res/drawable-nodpi/galaxy_nexus_land_glare.png │ --rw---- 1.0 fat 32356 b- stor 13-Nov-05 03:43 res/drawable-nodpi/galaxy_nexus_land_shadow.png │ --rw---- 1.0 fat 79314 b- stor 13-Nov-05 03:42 res/drawable-nodpi/galaxy_nexus_port_back.png │ --rw---- 1.0 fat 9245 b- stor 13-Nov-05 03:43 res/drawable-nodpi/galaxy_nexus_port_glare.png │ --rw---- 1.0 fat 30242 b- stor 13-Nov-05 03:43 res/drawable-nodpi/galaxy_nexus_port_shadow.png │ --rw---- 1.0 fat 39632 b- stor 13-Nov-05 03:43 res/drawable-nodpi/galaxy_nexus_thumb.png │ --rw---- 1.0 fat 699282 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_m7_land_back.png │ --rw---- 1.0 fat 24957 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_m7_land_glare.png │ --rw---- 1.0 fat 88354 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_m7_land_shadow.png │ --rw---- 1.0 fat 614297 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_m7_port_back.png │ --rw---- 1.0 fat 28508 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_m7_port_glare.png │ --rw---- 1.0 fat 65782 b- stor 13-Nov-05 03:42 res/drawable-nodpi/htc_m7_port_shadow.png │ --rw---- 1.0 fat 104701 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_m7_thumb.png │ --rw---- 1.0 fat 277177 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_one_x_land_back.png │ --rw---- 1.0 fat 8726 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_one_x_land_glare.png │ --rw---- 1.0 fat 32657 b- stor 13-Nov-05 03:42 res/drawable-nodpi/htc_one_x_land_shadow.png │ --rw---- 1.0 fat 277860 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_one_x_port_back.png │ --rw---- 1.0 fat 8043 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_one_x_port_glare.png │ --rw---- 1.0 fat 32475 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_one_x_port_shadow.png │ --rw---- 1.0 fat 73653 b- stor 13-Nov-05 03:43 res/drawable-nodpi/htc_one_x_thumb.png │ --rw---- 1.0 fat 211888 b- stor 13-Nov-05 03:42 res/drawable-nodpi/nexus_10_land_back.png │ --rw---- 1.0 fat 11418 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_10_land_glare.png │ --rw---- 1.0 fat 23355 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_10_land_shadow.png │ --rw---- 1.0 fat 206961 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_10_port_back.png │ --rw---- 1.0 fat 11113 b- stor 13-Nov-05 03:42 res/drawable-nodpi/nexus_10_port_glare.png │ --rw---- 1.0 fat 30144 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_10_port_shadow.png │ --rw---- 1.0 fat 71850 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_10_thumb.png │ --rw---- 1.0 fat 822843 b- stor 13-Nov-05 03:42 res/drawable-nodpi/nexus_4_land_back.png │ --rw---- 1.0 fat 9726 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_4_land_glare.png │ --rw---- 1.0 fat 24262 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_4_land_shadow.png │ --rw---- 1.0 fat 855324 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_4_port_back.png │ --rw---- 1.0 fat 9466 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_4_port_glare.png │ --rw---- 1.0 fat 28525 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_4_port_shadow.png │ --rw---- 1.0 fat 79401 b- stor 13-Nov-05 03:42 res/drawable-nodpi/nexus_4_thumb.png │ --rw---- 1.0 fat 188239 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_2013_land_back.png │ --rw---- 1.0 fat 9280 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_2013_land_glare.png │ --rw---- 1.0 fat 22908 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_2013_land_shadow.png │ --rw---- 1.0 fat 214623 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_2013_port_back.png │ --rw---- 1.0 fat 11269 b- stor 13-Nov-05 03:42 res/drawable-nodpi/nexus_7_2013_port_glare.png │ --rw---- 1.0 fat 20441 b- stor 13-Nov-05 03:42 res/drawable-nodpi/nexus_7_2013_port_shadow.png │ --rw---- 1.0 fat 192391 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_2013_thumb.png │ --rw---- 1.0 fat 153615 b- stor 13-Nov-05 03:42 res/drawable-nodpi/nexus_7_land_back.png │ --rw---- 1.0 fat 10474 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_land_glare.png │ --rw---- 1.0 fat 23935 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_land_shadow.png │ --rw---- 1.0 fat 172509 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_port_back.png │ --rw---- 1.0 fat 11691 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_port_glare.png │ --rw---- 1.0 fat 20633 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_port_shadow.png │ --rw---- 1.0 fat 26893 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_7_thumb.png │ --rw---- 1.0 fat 124147 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_s_land_back.png │ --rw---- 1.0 fat 6610 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_s_land_glare.png │ --rw---- 1.0 fat 17317 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_s_land_shadow.png │ --rw---- 1.0 fat 117593 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_s_port_back.png │ --rw---- 1.0 fat 8968 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_s_port_glare.png │ --rw---- 1.0 fat 16934 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_s_port_shadow.png │ --rw---- 1.0 fat 69517 b- stor 13-Nov-05 03:43 res/drawable-nodpi/nexus_s_thumb.png │ --rw---- 1.0 fat 469394 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_note_land_back.png │ --rw---- 1.0 fat 9657 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_note_land_glare.png │ --rw---- 1.0 fat 32883 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_note_land_shadow.png │ --rw---- 1.0 fat 479723 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_note_port_back.png │ --rw---- 1.0 fat 8520 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_note_port_glare.png │ --rw---- 1.0 fat 33438 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_note_port_shadow.png │ --rw---- 1.0 fat 97077 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_note_thumb.png │ --rw---- 1.0 fat 422003 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_s3_land_back.png │ --rw---- 1.0 fat 8603 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_s3_land_glare.png │ --rw---- 1.0 fat 30675 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_s3_land_shadow.png │ --rw---- 1.0 fat 430678 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_s3_port_back.png │ --rw---- 1.0 fat 7877 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_s3_port_glare.png │ --rw---- 1.0 fat 29177 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_s3_port_shadow.png │ --rw---- 1.0 fat 96528 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_s3_thumb.png │ --rw---- 1.0 fat 478180 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_land_back.png │ --rw---- 1.0 fat 7741 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_land_glare.png │ --rw---- 1.0 fat 17118 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_land_shadow.png │ --rw---- 1.0 fat 482930 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_port_back.png │ --rw---- 1.0 fat 8662 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_port_glare.png │ --rw---- 1.0 fat 21989 b- stor 13-Nov-05 03:42 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_port_shadow.png │ --rw---- 1.0 fat 150879 b- stor 13-Nov-05 03:43 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_thumb.png │ --rw---- 1.0 fat 27908 b- stor 13-Nov-05 03:42 res/drawable-nodpi/xoom_land_back.png │ --rw---- 1.0 fat 9453 b- stor 13-Nov-05 03:43 res/drawable-nodpi/xoom_land_glare.png │ --rw---- 1.0 fat 18291 b- stor 13-Nov-05 03:43 res/drawable-nodpi/xoom_land_shadow.png │ --rw---- 1.0 fat 26503 b- stor 13-Nov-05 03:43 res/drawable-nodpi/xoom_port_back.png │ --rw---- 1.0 fat 9983 b- stor 13-Nov-05 03:43 res/drawable-nodpi/xoom_port_glare.png │ --rw---- 1.0 fat 22359 b- stor 13-Nov-05 03:43 res/drawable-nodpi/xoom_port_shadow.png │ --rw---- 1.0 fat 26017 b- stor 13-Nov-05 03:43 res/drawable-nodpi/xoom_thumb.png │ --rw---- 1.0 fat 2139 b- stor 13-Nov-05 03:43 res/drawable-xhdpi/app_icon.png │ --rw---- 1.0 fat 801 b- stor 13-Nov-05 03:42 res/drawable-xhdpi/ic_action_error.png │ --rw---- 1.0 fat 626 b- stor 13-Nov-05 03:43 res/drawable-xhdpi/ic_action_info.png │ --rw---- 1.0 fat 1145 b- stor 13-Nov-05 03:43 res/drawable-xhdpi/ic_action_share.png │ --rw---- 1.0 fat 1618 b- stor 13-Nov-05 03:42 res/drawable-xhdpi/ic_action_star.png │ --rw---- 1.0 fat 1182 b- stor 13-Nov-05 03:43 res/drawable-xhdpi/ic_action_star_selected.png │ --rw---- 1.0 fat 3192 b- stor 13-Nov-05 03:42 res/drawable-xxhdpi/app_icon.png │ --rw---- 2.0 fat 1976 bl defN 13-Nov-05 03:44 res/layout-land/fragment_device.xml │ --rw---- 2.0 fat 859936 bl defN 13-Nov-05 03:44 classes.dex │ -115 files, 10863657 bytes uncompressed, 10349630 bytes compressed: 4.7% │ +-rw---- 2.0 fat 354 bX defN 17-Jul-17 14:19 assets/crashlytics-build.properties │ +-rw---- 1.0 fat 3797 b- stor 17-Jul-17 14:18 res/drawable/app_icon_256.png │ +-rw---- 2.0 fat 384 bl defN 17-Jul-17 14:19 res/layout/activity_main.xml │ +-rw---- 2.0 fat 1888 bl defN 17-Jul-17 14:19 res/layout/fragment_about.xml │ +-rw---- 2.0 fat 1940 bl defN 17-Jul-17 14:19 res/layout/fragment_device.xml │ +-rw---- 2.0 fat 752 bl defN 17-Jul-17 14:19 res/menu/activity_main.xml │ +-rw---- 2.0 fat 4064 bl defN 17-Jul-17 14:19 AndroidManifest.xml │ +-rw---- 1.0 fat 17660 b- stor 17-Jul-17 14:18 resources.arsc │ +-rw---- 1.0 fat 1631 b- stor 17-Jul-17 14:18 res/drawable-hdpi/app_icon.png │ +-rw---- 1.0 fat 656 b- stor 17-Jul-17 14:18 res/drawable-hdpi/ic_action_error.png │ +-rw---- 1.0 fat 577 b- stor 17-Jul-17 14:18 res/drawable-hdpi/ic_action_info.png │ +-rw---- 1.0 fat 962 b- stor 17-Jul-17 14:18 res/drawable-hdpi/ic_action_share.png │ +-rw---- 1.0 fat 1322 b- stor 17-Jul-17 14:18 res/drawable-hdpi/ic_action_star.png │ +-rw---- 1.0 fat 942 b- stor 17-Jul-17 14:18 res/drawable-hdpi/ic_action_star_selected.png │ +-rw---- 1.0 fat 1289 b- stor 17-Jul-17 14:18 res/drawable-mdpi/app_icon.png │ +-rw---- 1.0 fat 461 b- stor 17-Jul-17 14:18 res/drawable-mdpi/ic_action_error.png │ +-rw---- 1.0 fat 355 b- stor 17-Jul-17 14:18 res/drawable-mdpi/ic_action_info.png │ +-rw---- 1.0 fat 695 b- stor 17-Jul-17 14:18 res/drawable-mdpi/ic_action_share.png │ +-rw---- 1.0 fat 917 b- stor 17-Jul-17 14:18 res/drawable-mdpi/ic_action_star.png │ +-rw---- 1.0 fat 672 b- stor 17-Jul-17 14:18 res/drawable-mdpi/ic_action_star_selected.png │ +-rw---- 1.0 fat 89046 b- stor 17-Jul-17 14:18 res/drawable-nodpi/galaxy_nexus_land_back.png │ +-rw---- 1.0 fat 10524 b- stor 17-Jul-17 14:18 res/drawable-nodpi/galaxy_nexus_land_glare.png │ +-rw---- 1.0 fat 32356 b- stor 17-Jul-17 14:18 res/drawable-nodpi/galaxy_nexus_land_shadow.png │ +-rw---- 1.0 fat 79314 b- stor 17-Jul-17 14:18 res/drawable-nodpi/galaxy_nexus_port_back.png │ +-rw---- 1.0 fat 9245 b- stor 17-Jul-17 14:18 res/drawable-nodpi/galaxy_nexus_port_glare.png │ +-rw---- 1.0 fat 30242 b- stor 17-Jul-17 14:18 res/drawable-nodpi/galaxy_nexus_port_shadow.png │ +-rw---- 1.0 fat 39632 b- stor 17-Jul-17 14:18 res/drawable-nodpi/galaxy_nexus_thumb.png │ +-rw---- 1.0 fat 699282 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_m7_land_back.png │ +-rw---- 1.0 fat 24957 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_m7_land_glare.png │ +-rw---- 1.0 fat 88354 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_m7_land_shadow.png │ +-rw---- 1.0 fat 614297 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_m7_port_back.png │ +-rw---- 1.0 fat 28508 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_m7_port_glare.png │ +-rw---- 1.0 fat 65782 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_m7_port_shadow.png │ +-rw---- 1.0 fat 104701 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_m7_thumb.png │ +-rw---- 1.0 fat 277177 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_one_x_land_back.png │ +-rw---- 1.0 fat 8726 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_one_x_land_glare.png │ +-rw---- 1.0 fat 32657 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_one_x_land_shadow.png │ +-rw---- 1.0 fat 277860 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_one_x_port_back.png │ +-rw---- 1.0 fat 8043 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_one_x_port_glare.png │ +-rw---- 1.0 fat 32475 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_one_x_port_shadow.png │ +-rw---- 1.0 fat 73653 b- stor 17-Jul-17 14:18 res/drawable-nodpi/htc_one_x_thumb.png │ +-rw---- 1.0 fat 211888 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_10_land_back.png │ +-rw---- 1.0 fat 11418 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_10_land_glare.png │ +-rw---- 1.0 fat 23355 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_10_land_shadow.png │ +-rw---- 1.0 fat 206961 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_10_port_back.png │ +-rw---- 1.0 fat 11113 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_10_port_glare.png │ +-rw---- 1.0 fat 30144 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_10_port_shadow.png │ +-rw---- 1.0 fat 71850 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_10_thumb.png │ +-rw---- 1.0 fat 822843 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_4_land_back.png │ +-rw---- 1.0 fat 9726 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_4_land_glare.png │ +-rw---- 1.0 fat 24262 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_4_land_shadow.png │ +-rw---- 1.0 fat 855324 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_4_port_back.png │ +-rw---- 1.0 fat 9466 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_4_port_glare.png │ +-rw---- 1.0 fat 28525 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_4_port_shadow.png │ +-rw---- 1.0 fat 79401 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_4_thumb.png │ +-rw---- 1.0 fat 188239 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_2013_land_back.png │ +-rw---- 1.0 fat 9280 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_2013_land_glare.png │ +-rw---- 1.0 fat 22908 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_2013_land_shadow.png │ +-rw---- 1.0 fat 214623 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_2013_port_back.png │ +-rw---- 1.0 fat 11269 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_2013_port_glare.png │ +-rw---- 1.0 fat 20441 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_2013_port_shadow.png │ +-rw---- 1.0 fat 192391 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_2013_thumb.png │ +-rw---- 1.0 fat 153615 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_land_back.png │ +-rw---- 1.0 fat 10474 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_land_glare.png │ +-rw---- 1.0 fat 23935 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_land_shadow.png │ +-rw---- 1.0 fat 172509 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_port_back.png │ +-rw---- 1.0 fat 11691 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_port_glare.png │ +-rw---- 1.0 fat 20633 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_port_shadow.png │ +-rw---- 1.0 fat 26893 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_7_thumb.png │ +-rw---- 1.0 fat 124147 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_s_land_back.png │ +-rw---- 1.0 fat 6610 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_s_land_glare.png │ +-rw---- 1.0 fat 17317 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_s_land_shadow.png │ +-rw---- 1.0 fat 117593 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_s_port_back.png │ +-rw---- 1.0 fat 8968 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_s_port_glare.png │ +-rw---- 1.0 fat 16934 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_s_port_shadow.png │ +-rw---- 1.0 fat 69517 b- stor 17-Jul-17 14:18 res/drawable-nodpi/nexus_s_thumb.png │ +-rw---- 1.0 fat 469394 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_note_land_back.png │ +-rw---- 1.0 fat 9657 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_note_land_glare.png │ +-rw---- 1.0 fat 32883 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_note_land_shadow.png │ +-rw---- 1.0 fat 479723 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_note_port_back.png │ +-rw---- 1.0 fat 8520 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_note_port_glare.png │ +-rw---- 1.0 fat 33438 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_note_port_shadow.png │ +-rw---- 1.0 fat 97077 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_note_thumb.png │ +-rw---- 1.0 fat 422003 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_s3_land_back.png │ +-rw---- 1.0 fat 8603 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_s3_land_glare.png │ +-rw---- 1.0 fat 30675 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_s3_land_shadow.png │ +-rw---- 1.0 fat 430678 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_s3_port_back.png │ +-rw---- 1.0 fat 7877 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_s3_port_glare.png │ +-rw---- 1.0 fat 29177 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_s3_port_shadow.png │ +-rw---- 1.0 fat 96528 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_s3_thumb.png │ +-rw---- 1.0 fat 478180 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_land_back.png │ +-rw---- 1.0 fat 7741 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_land_glare.png │ +-rw---- 1.0 fat 17118 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_land_shadow.png │ +-rw---- 1.0 fat 482930 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_port_back.png │ +-rw---- 1.0 fat 8662 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_port_glare.png │ +-rw---- 1.0 fat 21989 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_port_shadow.png │ +-rw---- 1.0 fat 150879 b- stor 17-Jul-17 14:18 res/drawable-nodpi/samsung_galaxy_tab_2_7inch_thumb.png │ +-rw---- 1.0 fat 27908 b- stor 17-Jul-17 14:18 res/drawable-nodpi/xoom_land_back.png │ +-rw---- 1.0 fat 9453 b- stor 17-Jul-17 14:18 res/drawable-nodpi/xoom_land_glare.png │ +-rw---- 1.0 fat 18291 b- stor 17-Jul-17 14:18 res/drawable-nodpi/xoom_land_shadow.png │ +-rw---- 1.0 fat 26503 b- stor 17-Jul-17 14:18 res/drawable-nodpi/xoom_port_back.png │ +-rw---- 1.0 fat 9983 b- stor 17-Jul-17 14:18 res/drawable-nodpi/xoom_port_glare.png │ +-rw---- 1.0 fat 22359 b- stor 17-Jul-17 14:18 res/drawable-nodpi/xoom_port_shadow.png │ +-rw---- 1.0 fat 26017 b- stor 17-Jul-17 14:18 res/drawable-nodpi/xoom_thumb.png │ +-rw---- 1.0 fat 2139 b- stor 17-Jul-17 14:18 res/drawable-xhdpi/app_icon.png │ +-rw---- 1.0 fat 801 b- stor 17-Jul-17 14:18 res/drawable-xhdpi/ic_action_error.png │ +-rw---- 1.0 fat 626 b- stor 17-Jul-17 14:18 res/drawable-xhdpi/ic_action_info.png │ +-rw---- 1.0 fat 1145 b- stor 17-Jul-17 14:18 res/drawable-xhdpi/ic_action_share.png │ +-rw---- 1.0 fat 1618 b- stor 17-Jul-17 14:18 res/drawable-xhdpi/ic_action_star.png │ +-rw---- 1.0 fat 1182 b- stor 17-Jul-17 14:18 res/drawable-xhdpi/ic_action_star_selected.png │ +-rw---- 1.0 fat 3192 b- stor 17-Jul-17 14:18 res/drawable-xxhdpi/app_icon.png │ +-rw---- 2.0 fat 1976 bl defN 17-Jul-17 14:19 res/layout-land/fragment_device.xml │ +-rw---- 2.0 fat 906860 bl defN 17-Jul-17 14:19 classes.dex │ +116 files, 10910935 bytes uncompressed, 10368934 bytes compressed: 5.0% ├── AndroidManifest.xml (original / undecoded) │┄ No difference found for decoded AndroidManifest.xml │ @@ -149,30 +149,30 @@ │ 00000940: 0000 0000 0f00 0000 0400 0000 1800 0000 ................ │ 00000950: 0800 0003 1800 0000 0301 1000 1800 0000 ................ │ 00000960: 1400 0000 ffff ffff ffff ffff 1600 0000 ................ │ 00000970: 0201 1000 9c00 0000 1600 0000 ffff ffff ................ │ 00000980: ffff ffff 1900 0000 1400 1400 0600 0000 ................ │ 00000990: 0000 0000 0f00 0000 0900 0000 ffff ffff ................ │ 000009a0: 0800 0001 0400 067f 0f00 0000 0700 0000 ................ │ -000009b0: ffff ffff 0800 0001 0100 057f 0f00 0000 ................ │ +000009b0: ffff ffff 0800 0001 0200 047f 0f00 0000 ................ │ 000009c0: 0600 0000 ffff ffff 0800 0001 0000 027f ................ │ 000009d0: 0f00 0000 0400 0000 1a00 0000 0800 0003 ................ │ 000009e0: 1a00 0000 0f00 0000 0500 0000 ffff ffff ................ │ 000009f0: 0800 0012 ffff ffff 0f00 0000 0800 0000 ................ │ 00000a00: ffff ffff 0800 0012 ffff ffff 0201 1000 ................ │ 00000a10: 4c00 0000 1800 0000 ffff ffff ffff ffff L............... │ 00000a20: 1b00 0000 1400 1400 0200 0000 0000 0000 ................ │ 00000a30: 0f00 0000 0400 0000 1c00 0000 0800 0003 ................ │ 00000a40: 1c00 0000 0f00 0000 0a00 0000 1d00 0000 ................ │ 00000a50: 0800 0003 1d00 0000 0301 1000 1800 0000 ................ │ 00000a60: 1800 0000 ffff ffff ffff ffff 1b00 0000 ................ │ 00000a70: 0201 1000 6000 0000 1a00 0000 ffff ffff ....`........... │ 00000a80: ffff ffff 1e00 0000 1400 1400 0300 0000 ................ │ 00000a90: 0000 0000 0f00 0000 0700 0000 ffff ffff ................ │ -00000aa0: 0800 0001 0100 057f 0f00 0000 0400 0000 ................ │ +00000aa0: 0800 0001 0200 047f 0f00 0000 0400 0000 ................ │ 00000ab0: 1f00 0000 0800 0003 1f00 0000 0f00 0000 ................ │ 00000ac0: 0b00 0000 ffff ffff 0800 0010 0100 0000 ................ │ 00000ad0: 0201 1000 2400 0000 1b00 0000 ffff ffff ....$........... │ 00000ae0: ffff ffff 2000 0000 1400 1400 0000 0000 .... ........... │ 00000af0: 0000 0000 0201 1000 3800 0000 1c00 0000 ........8....... │ 00000b00: ffff ffff ffff ffff 2100 0000 1400 1400 ........!....... │ 00000b10: 0100 0000 0000 0000 0f00 0000 0400 0000 ................ │ @@ -191,15 +191,15 @@ │ 00000be0: 2300 0000 0301 1000 1800 0000 1f00 0000 #............... │ 00000bf0: ffff ffff ffff ffff 2000 0000 0301 1000 ........ ....... │ 00000c00: 1800 0000 2000 0000 ffff ffff ffff ffff .... ........... │ 00000c10: 1e00 0000 0201 1000 7400 0000 2200 0000 ........t..."... │ 00000c20: ffff ffff ffff ffff 1e00 0000 1400 1400 ................ │ 00000c30: 0400 0000 0000 0000 0f00 0000 0900 0000 ................ │ 00000c40: ffff ffff 0800 0001 1000 0301 0f00 0000 ................ │ -00000c50: 0700 0000 ffff ffff 0800 0001 0100 057f ................ │ +00000c50: 0700 0000 ffff ffff 0800 0001 0200 047f ................ │ 00000c60: 0f00 0000 0400 0000 2600 0000 0800 0003 ........&....... │ 00000c70: 2600 0000 0f00 0000 0c00 0000 ffff ffff &............... │ 00000c80: 0800 0011 a004 0000 0201 1000 2400 0000 ............$... │ 00000c90: 2300 0000 ffff ffff ffff ffff 2000 0000 #........... ... │ 00000ca0: 1400 1400 0000 0000 0000 0000 0201 1000 ................ │ 00000cb0: 3800 0000 2400 0000 ffff ffff ffff ffff 8...$........... │ 00000cc0: 2100 0000 1400 1400 0100 0000 0000 0000 !............... ├── classes.dex │ ├── classes.jar │ │ ├── zipinfo /dev/stdin │ │ │ @@ -1,8 +1,8 @@ │ │ │ -Zip file size: 1271343 bytes, number of entries: 742 │ │ │ +Zip file size: 1383123 bytes, number of entries: 809 │ │ │ ?rwxrwxr-x 2.0 unx 195 b- stor 80-Jan-01 00:00 android/support/v13/app/FragmentCompat$FragmentCompatImpl.class │ │ │ ?rwxrwxr-x 2.0 unx 365 b- stor 80-Jan-01 00:00 android/support/v13/app/FragmentCompat$BaseFragmentCompatImpl.class │ │ │ ?rwxrwxr-x 2.0 unx 358 b- stor 80-Jan-01 00:00 android/support/v13/app/FragmentCompat$ICSFragmentCompatImpl.class │ │ │ ?rwxrwxr-x 2.0 unx 364 b- stor 80-Jan-01 00:00 android/support/v13/app/FragmentCompat$ICSMR1FragmentCompatImpl.class │ │ │ ?rwxrwxr-x 2.0 unx 852 b- stor 80-Jan-01 00:00 android/support/v13/app/FragmentCompat.class │ │ │ ?rwxrwxr-x 2.0 unx 280 b- stor 80-Jan-01 00:00 android/support/v13/app/FragmentCompatICS.class │ │ │ ?rwxrwxr-x 2.0 unx 284 b- stor 80-Jan-01 00:00 android/support/v13/app/FragmentCompatICSMR1.class │ │ │ @@ -391,120 +391,186 @@ │ │ │ ?rwxrwxr-x 2.0 unx 71 b- stor 80-Jan-01 00:00 butterknife/Views$1.class │ │ │ ?rwxrwxr-x 2.0 unx 918 b- stor 80-Jan-01 00:00 butterknife/Views$Finder.class │ │ │ ?rwxrwxr-x 2.0 unx 379 b- stor 80-Jan-01 00:00 butterknife/Views$Finder$1.class │ │ │ ?rwxrwxr-x 2.0 unx 382 b- stor 80-Jan-01 00:00 butterknife/Views$Finder$2.class │ │ │ ?rwxrwxr-x 2.0 unx 207 b- stor 80-Jan-01 00:00 butterknife/Views$UnableToInjectException.class │ │ │ ?rwxrwxr-x 2.0 unx 206 b- stor 80-Jan-01 00:00 butterknife/Views$UnableToResetException.class │ │ │ ?rwxrwxr-x 2.0 unx 4513 b- stor 80-Jan-01 00:00 butterknife/Views.class │ │ │ -?rwxrwxr-x 2.0 unx 9988 b- stor 80-Jan-01 00:00 butterknife/internal/InjectViewProcessor.class │ │ │ +?rwxrwxr-x 2.0 unx 10020 b- defN 80-Jan-01 00:00 butterknife/internal/InjectViewProcessor.class │ │ │ ?rwxrwxr-x 2.0 unx 324 b- stor 80-Jan-01 00:00 butterknife/internal/TargetClass$FieldInjection.class │ │ │ ?rwxrwxr-x 2.0 unx 325 b- stor 80-Jan-01 00:00 butterknife/internal/TargetClass$MethodInjection.class │ │ │ ?rwxrwxr-x 2.0 unx 355 b- stor 80-Jan-01 00:00 butterknife/internal/TargetClass$ViewId.class │ │ │ -?rwxrwxr-x 2.0 unx 4166 b- stor 80-Jan-01 00:00 butterknife/internal/TargetClass.class │ │ │ -?rwxrwxr-x 2.0 unx 1408 b- stor 80-Jan-01 00:00 com/crashlytics/android/A.class │ │ │ -?rwxrwxr-x 2.0 unx 1174 b- stor 80-Jan-01 00:00 com/crashlytics/android/B.class │ │ │ -?rwxrwxr-x 2.0 unx 654 b- stor 80-Jan-01 00:00 com/crashlytics/android/C.class │ │ │ -?rwxrwxr-x 2.0 unx 1238 b- stor 80-Jan-01 00:00 com/crashlytics/android/CrashTest.class │ │ │ -?rwxrwxr-x 2.0 unx 20670 b- defN 80-Jan-01 00:00 com/crashlytics/android/Crashlytics.class │ │ │ +?rwxrwxr-x 2.0 unx 4304 b- stor 80-Jan-01 00:00 butterknife/internal/TargetClass.class │ │ │ +?rwxrwxr-x 2.0 unx 788 b- stor 80-Jan-01 00:00 com/crashlytics/android/A.class │ │ │ +?rwxrwxr-x 2.0 unx 1412 b- stor 80-Jan-01 00:00 com/crashlytics/android/B.class │ │ │ +?rwxrwxr-x 2.0 unx 539 b- stor 80-Jan-01 00:00 com/crashlytics/android/C.class │ │ │ +?rwxrwxr-x 2.0 unx 1467 b- stor 80-Jan-01 00:00 com/crashlytics/android/CrashTest.class │ │ │ +?rwxrwxr-x 2.0 unx 1336 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/p.class │ │ │ +?rwxrwxr-x 2.0 unx 167 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/u.class │ │ │ +?rwxrwxr-x 2.0 unx 18683 b- defN 80-Jan-01 00:00 com/crashlytics/android/Crashlytics.class │ │ │ ?rwxrwxr-x 2.0 unx 160 b- stor 80-Jan-01 00:00 com/crashlytics/android/CrashlyticsListener.class │ │ │ -?rwxrwxr-x 2.0 unx 890 b- stor 80-Jan-01 00:00 com/crashlytics/android/CrashlyticsMissingDependencyException.class │ │ │ -?rwxrwxr-x 2.0 unx 140 b- stor 80-Jan-01 00:00 com/crashlytics/android/D.class │ │ │ -?rwxrwxr-x 2.0 unx 35751 b- defN 80-Jan-01 00:00 com/crashlytics/android/E.class │ │ │ -?rwxrwxr-x 2.0 unx 397 b- stor 80-Jan-01 00:00 com/crashlytics/android/F.class │ │ │ -?rwxrwxr-x 2.0 unx 894 b- stor 80-Jan-01 00:00 com/crashlytics/android/G.class │ │ │ -?rwxrwxr-x 2.0 unx 142 b- stor 80-Jan-01 00:00 com/crashlytics/android/QueueFile$ElementReader.class │ │ │ -?rwxrwxr-x 2.0 unx 540 b- stor 80-Jan-01 00:00 com/crashlytics/android/H.class │ │ │ -?rwxrwxr-x 2.0 unx 2672 b- stor 80-Jan-01 00:00 com/crashlytics/android/HttpRequest$Base64.class │ │ │ -?rwxrwxr-x 2.0 unx 575 b- stor 80-Jan-01 00:00 com/crashlytics/android/HttpRequest$Operation.class │ │ │ -?rwxrwxr-x 2.0 unx 516 b- stor 80-Jan-01 00:00 com/crashlytics/android/HttpRequest$CloseOperation.class │ │ │ -?rwxrwxr-x 2.0 unx 131 b- stor 80-Jan-01 00:00 com/crashlytics/android/HttpRequest$FlushOperation.class │ │ │ -?rwxrwxr-x 2.0 unx 467 b- stor 80-Jan-01 00:00 com/crashlytics/android/HttpRequest$HttpRequestException.class │ │ │ -?rwxrwxr-x 2.0 unx 1026 b- stor 80-Jan-01 00:00 com/crashlytics/android/HttpRequest$RequestOutputStream.class │ │ │ -?rwxrwxr-x 2.0 unx 8456 b- stor 80-Jan-01 00:00 com/crashlytics/android/HttpRequest.class │ │ │ -?rwxrwxr-x 2.0 unx 409 b- stor 80-Jan-01 00:00 com/crashlytics/android/I.class │ │ │ -?rwxrwxr-x 2.0 unx 1204 b- stor 80-Jan-01 00:00 com/crashlytics/android/IdManager$DeviceIdentifierType.class │ │ │ -?rwxrwxr-x 2.0 unx 5907 b- stor 80-Jan-01 00:00 com/crashlytics/android/IdManager.class │ │ │ -?rwxrwxr-x 2.0 unx 753 b- stor 80-Jan-01 00:00 com/crashlytics/android/J.class │ │ │ -?rwxrwxr-x 2.0 unx 525 b- stor 80-Jan-01 00:00 com/crashlytics/android/K.class │ │ │ -?rwxrwxr-x 2.0 unx 422 b- stor 80-Jan-01 00:00 com/crashlytics/android/L.class │ │ │ -?rwxrwxr-x 2.0 unx 492 b- stor 80-Jan-01 00:00 com/crashlytics/android/M.class │ │ │ -?rwxrwxr-x 2.0 unx 553 b- stor 80-Jan-01 00:00 com/crashlytics/android/N.class │ │ │ -?rwxrwxr-x 2.0 unx 401 b- stor 80-Jan-01 00:00 com/crashlytics/android/O.class │ │ │ -?rwxrwxr-x 2.0 unx 403 b- stor 80-Jan-01 00:00 com/crashlytics/android/P.class │ │ │ +?rwxrwxr-x 2.0 unx 1516 b- stor 80-Jan-01 00:00 com/crashlytics/android/CrashlyticsMissingDependencyException.class │ │ │ +?rwxrwxr-x 2.0 unx 306 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aa.class │ │ │ +?rwxrwxr-x 2.0 unx 736 b- stor 80-Jan-01 00:00 com/crashlytics/android/D.class │ │ │ +?rwxrwxr-x 2.0 unx 525 b- stor 80-Jan-01 00:00 com/crashlytics/android/E.class │ │ │ +?rwxrwxr-x 2.0 unx 422 b- stor 80-Jan-01 00:00 com/crashlytics/android/F.class │ │ │ +?rwxrwxr-x 2.0 unx 697 b- stor 80-Jan-01 00:00 com/crashlytics/android/G.class │ │ │ +?rwxrwxr-x 2.0 unx 401 b- stor 80-Jan-01 00:00 com/crashlytics/android/H.class │ │ │ +?rwxrwxr-x 2.0 unx 758 b- stor 80-Jan-01 00:00 com/crashlytics/android/I.class │ │ │ +?rwxrwxr-x 2.0 unx 403 b- stor 80-Jan-01 00:00 com/crashlytics/android/J.class │ │ │ +?rwxrwxr-x 2.0 unx 487 b- stor 80-Jan-01 00:00 com/crashlytics/android/K.class │ │ │ +?rwxrwxr-x 2.0 unx 430 b- stor 80-Jan-01 00:00 com/crashlytics/android/L.class │ │ │ +?rwxrwxr-x 2.0 unx 425 b- stor 80-Jan-01 00:00 com/crashlytics/android/M.class │ │ │ +?rwxrwxr-x 2.0 unx 596 b- stor 80-Jan-01 00:00 com/crashlytics/android/N.class │ │ │ +?rwxrwxr-x 2.0 unx 659 b- stor 80-Jan-01 00:00 com/crashlytics/android/O.class │ │ │ +?rwxrwxr-x 2.0 unx 733 b- stor 80-Jan-01 00:00 com/crashlytics/android/P.class │ │ │ ?rwxrwxr-x 2.0 unx 244 b- stor 80-Jan-01 00:00 com/crashlytics/android/PinningInfoProvider.class │ │ │ -?rwxrwxr-x 2.0 unx 487 b- stor 80-Jan-01 00:00 com/crashlytics/android/Q.class │ │ │ -?rwxrwxr-x 2.0 unx 7312 b- stor 80-Jan-01 00:00 com/crashlytics/android/QueueFile.class │ │ │ -?rwxrwxr-x 2.0 unx 430 b- stor 80-Jan-01 00:00 com/crashlytics/android/R.class │ │ │ -?rwxrwxr-x 2.0 unx 425 b- stor 80-Jan-01 00:00 com/crashlytics/android/S.class │ │ │ -?rwxrwxr-x 2.0 unx 948 b- stor 80-Jan-01 00:00 com/crashlytics/android/SettingsController$CacheBehavior.class │ │ │ -?rwxrwxr-x 2.0 unx 3078 b- stor 80-Jan-01 00:00 com/crashlytics/android/SettingsController.class │ │ │ -?rwxrwxr-x 2.0 unx 596 b- stor 80-Jan-01 00:00 com/crashlytics/android/T.class │ │ │ -?rwxrwxr-x 2.0 unx 571 b- stor 80-Jan-01 00:00 com/crashlytics/android/U.class │ │ │ -?rwxrwxr-x 2.0 unx 733 b- stor 80-Jan-01 00:00 com/crashlytics/android/V.class │ │ │ -?rwxrwxr-x 2.0 unx 146 b- stor 80-Jan-01 00:00 com/crashlytics/android/Version.class │ │ │ -?rwxrwxr-x 2.0 unx 584 b- stor 80-Jan-01 00:00 com/crashlytics/android/W.class │ │ │ -?rwxrwxr-x 2.0 unx 499 b- stor 80-Jan-01 00:00 com/crashlytics/android/X.class │ │ │ -?rwxrwxr-x 2.0 unx 750 b- stor 80-Jan-01 00:00 com/crashlytics/android/Y.class │ │ │ -?rwxrwxr-x 2.0 unx 2553 b- stor 80-Jan-01 00:00 com/crashlytics/android/b.class │ │ │ -?rwxrwxr-x 2.0 unx 2697 b- stor 80-Jan-01 00:00 com/crashlytics/android/a.class │ │ │ -?rwxrwxr-x 2.0 unx 337 b- stor 80-Jan-01 00:00 com/crashlytics/android/Z.class │ │ │ -?rwxrwxr-x 2.0 unx 338 b- stor 80-Jan-01 00:00 com/crashlytics/android/aA.class │ │ │ -?rwxrwxr-x 2.0 unx 15452 b- defN 80-Jan-01 00:00 com/crashlytics/android/aB.class │ │ │ -?rwxrwxr-x 2.0 unx 323 b- stor 80-Jan-01 00:00 com/crashlytics/android/aC.class │ │ │ -?rwxrwxr-x 2.0 unx 129 b- stor 80-Jan-01 00:00 com/crashlytics/android/aD.class │ │ │ -?rwxrwxr-x 2.0 unx 417 b- stor 80-Jan-01 00:00 com/crashlytics/android/aa.class │ │ │ -?rwxrwxr-x 2.0 unx 124 b- stor 80-Jan-01 00:00 com/crashlytics/android/ab.class │ │ │ -?rwxrwxr-x 2.0 unx 233 b- stor 80-Jan-01 00:00 com/crashlytics/android/ac.class │ │ │ -?rwxrwxr-x 2.0 unx 2266 b- stor 80-Jan-01 00:00 com/crashlytics/android/ad.class │ │ │ -?rwxrwxr-x 2.0 unx 144 b- stor 80-Jan-01 00:00 com/crashlytics/android/ay.class │ │ │ -?rwxrwxr-x 2.0 unx 3118 b- stor 80-Jan-01 00:00 com/crashlytics/android/ae.class │ │ │ -?rwxrwxr-x 2.0 unx 1192 b- stor 80-Jan-01 00:00 com/crashlytics/android/af.class │ │ │ -?rwxrwxr-x 2.0 unx 931 b- stor 80-Jan-01 00:00 com/crashlytics/android/ag.class │ │ │ -?rwxrwxr-x 2.0 unx 1573 b- stor 80-Jan-01 00:00 com/crashlytics/android/ah.class │ │ │ -?rwxrwxr-x 2.0 unx 779 b- stor 80-Jan-01 00:00 com/crashlytics/android/ai.class │ │ │ -?rwxrwxr-x 2.0 unx 165 b- stor 80-Jan-01 00:00 com/crashlytics/android/aj.class │ │ │ -?rwxrwxr-x 2.0 unx 468 b- stor 80-Jan-01 00:00 com/crashlytics/android/ak.class │ │ │ -?rwxrwxr-x 2.0 unx 3254 b- stor 80-Jan-01 00:00 com/crashlytics/android/al.class │ │ │ -?rwxrwxr-x 2.0 unx 763 b- stor 80-Jan-01 00:00 com/crashlytics/android/am.class │ │ │ -?rwxrwxr-x 2.0 unx 609 b- stor 80-Jan-01 00:00 com/crashlytics/android/an.class │ │ │ -?rwxrwxr-x 2.0 unx 728 b- stor 80-Jan-01 00:00 com/crashlytics/android/ao.class │ │ │ -?rwxrwxr-x 2.0 unx 1250 b- stor 80-Jan-01 00:00 com/crashlytics/android/ap.class │ │ │ -?rwxrwxr-x 2.0 unx 1362 b- stor 80-Jan-01 00:00 com/crashlytics/android/aq.class │ │ │ -?rwxrwxr-x 2.0 unx 3337 b- stor 80-Jan-01 00:00 com/crashlytics/android/ar.class │ │ │ -?rwxrwxr-x 2.0 unx 434 b- stor 80-Jan-01 00:00 com/crashlytics/android/as.class │ │ │ -?rwxrwxr-x 2.0 unx 3142 b- stor 80-Jan-01 00:00 com/crashlytics/android/at.class │ │ │ -?rwxrwxr-x 2.0 unx 665 b- stor 80-Jan-01 00:00 com/crashlytics/android/au.class │ │ │ -?rwxrwxr-x 2.0 unx 2648 b- stor 80-Jan-01 00:00 com/crashlytics/android/av.class │ │ │ -?rwxrwxr-x 2.0 unx 474 b- stor 80-Jan-01 00:00 com/crashlytics/android/aw.class │ │ │ -?rwxrwxr-x 2.0 unx 350 b- stor 80-Jan-01 00:00 com/crashlytics/android/ax.class │ │ │ -?rwxrwxr-x 2.0 unx 2707 b- stor 80-Jan-01 00:00 com/crashlytics/android/az.class │ │ │ -?rwxrwxr-x 2.0 unx 1772 b- stor 80-Jan-01 00:00 com/crashlytics/android/c.class │ │ │ -?rwxrwxr-x 2.0 unx 967 b- stor 80-Jan-01 00:00 com/crashlytics/android/d.class │ │ │ -?rwxrwxr-x 2.0 unx 447 b- stor 80-Jan-01 00:00 com/crashlytics/android/e.class │ │ │ -?rwxrwxr-x 2.0 unx 429 b- stor 80-Jan-01 00:00 com/crashlytics/android/f.class │ │ │ -?rwxrwxr-x 2.0 unx 433 b- stor 80-Jan-01 00:00 com/crashlytics/android/g.class │ │ │ -?rwxrwxr-x 2.0 unx 652 b- stor 80-Jan-01 00:00 com/crashlytics/android/h.class │ │ │ -?rwxrwxr-x 2.0 unx 673 b- stor 80-Jan-01 00:00 com/crashlytics/android/i.class │ │ │ -?rwxrwxr-x 2.0 unx 1264 b- stor 80-Jan-01 00:00 com/crashlytics/android/j.class │ │ │ -?rwxrwxr-x 2.0 unx 1292 b- stor 80-Jan-01 00:00 com/crashlytics/android/k.class │ │ │ -?rwxrwxr-x 2.0 unx 2076 b- stor 80-Jan-01 00:00 com/crashlytics/android/l.class │ │ │ -?rwxrwxr-x 2.0 unx 1843 b- stor 80-Jan-01 00:00 com/crashlytics/android/m.class │ │ │ -?rwxrwxr-x 2.0 unx 1683 b- stor 80-Jan-01 00:00 com/crashlytics/android/n.class │ │ │ -?rwxrwxr-x 2.0 unx 332 b- stor 80-Jan-01 00:00 com/crashlytics/android/o.class │ │ │ -?rwxrwxr-x 2.0 unx 3572 b- stor 80-Jan-01 00:00 com/crashlytics/android/p.class │ │ │ -?rwxrwxr-x 2.0 unx 311 b- stor 80-Jan-01 00:00 com/crashlytics/android/q.class │ │ │ -?rwxrwxr-x 2.0 unx 678 b- stor 80-Jan-01 00:00 com/crashlytics/android/r.class │ │ │ -?rwxrwxr-x 2.0 unx 670 b- stor 80-Jan-01 00:00 com/crashlytics/android/s.class │ │ │ -?rwxrwxr-x 2.0 unx 850 b- stor 80-Jan-01 00:00 com/crashlytics/android/t.class │ │ │ -?rwxrwxr-x 2.0 unx 604 b- stor 80-Jan-01 00:00 com/crashlytics/android/u.class │ │ │ -?rwxrwxr-x 2.0 unx 381 b- stor 80-Jan-01 00:00 com/crashlytics/android/v.class │ │ │ -?rwxrwxr-x 2.0 unx 2592 b- stor 80-Jan-01 00:00 com/crashlytics/android/w.class │ │ │ -?rwxrwxr-x 2.0 unx 560 b- stor 80-Jan-01 00:00 com/crashlytics/android/x.class │ │ │ -?rwxrwxr-x 2.0 unx 555 b- stor 80-Jan-01 00:00 com/crashlytics/android/y.class │ │ │ -?rwxrwxr-x 2.0 unx 674 b- stor 80-Jan-01 00:00 com/crashlytics/android/z.class │ │ │ +?rwxrwxr-x 2.0 unx 627 b- stor 80-Jan-01 00:00 com/crashlytics/android/Q.class │ │ │ +?rwxrwxr-x 2.0 unx 499 b- stor 80-Jan-01 00:00 com/crashlytics/android/R.class │ │ │ +?rwxrwxr-x 2.0 unx 750 b- stor 80-Jan-01 00:00 com/crashlytics/android/S.class │ │ │ +?rwxrwxr-x 2.0 unx 2325 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/Z.class │ │ │ +?rwxrwxr-x 2.0 unx 4322 b- stor 80-Jan-01 00:00 com/crashlytics/android/a.class │ │ │ +?rwxrwxr-x 2.0 unx 443 b- stor 80-Jan-01 00:00 com/crashlytics/android/T.class │ │ │ +?rwxrwxr-x 2.0 unx 296 b- stor 80-Jan-01 00:00 com/crashlytics/android/U.class │ │ │ +?rwxrwxr-x 2.0 unx 122 b- stor 80-Jan-01 00:00 com/crashlytics/android/V.class │ │ │ +?rwxrwxr-x 2.0 unx 2729 b- stor 80-Jan-01 00:00 com/crashlytics/android/W.class │ │ │ +?rwxrwxr-x 2.0 unx 1244 b- stor 80-Jan-01 00:00 com/crashlytics/android/X.class │ │ │ +?rwxrwxr-x 2.0 unx 1745 b- stor 80-Jan-01 00:00 com/crashlytics/android/Y.class │ │ │ +?rwxrwxr-x 2.0 unx 1584 b- stor 80-Jan-01 00:00 com/crashlytics/android/Z.class │ │ │ +?rwxrwxr-x 2.0 unx 3750 b- stor 80-Jan-01 00:00 com/crashlytics/android/aa.class │ │ │ +?rwxrwxr-x 2.0 unx 434 b- stor 80-Jan-01 00:00 com/crashlytics/android/ab.class │ │ │ +?rwxrwxr-x 2.0 unx 3398 b- stor 80-Jan-01 00:00 com/crashlytics/android/ac.class │ │ │ +?rwxrwxr-x 2.0 unx 444 b- stor 80-Jan-01 00:00 com/crashlytics/android/ad.class │ │ │ +?rwxrwxr-x 2.0 unx 129 b- stor 80-Jan-01 00:00 com/crashlytics/android/ae.class │ │ │ +?rwxrwxr-x 2.0 unx 1022 b- stor 80-Jan-01 00:00 com/crashlytics/android/b.class │ │ │ +?rwxrwxr-x 2.0 unx 1467 b- stor 80-Jan-01 00:00 com/crashlytics/android/c.class │ │ │ +?rwxrwxr-x 2.0 unx 1292 b- stor 80-Jan-01 00:00 com/crashlytics/android/d.class │ │ │ +?rwxrwxr-x 2.0 unx 2118 b- stor 80-Jan-01 00:00 com/crashlytics/android/e.class │ │ │ +?rwxrwxr-x 2.0 unx 1683 b- stor 80-Jan-01 00:00 com/crashlytics/android/f.class │ │ │ +?rwxrwxr-x 2.0 unx 332 b- stor 80-Jan-01 00:00 com/crashlytics/android/g.class │ │ │ +?rwxrwxr-x 2.0 unx 3572 b- stor 80-Jan-01 00:00 com/crashlytics/android/h.class │ │ │ +?rwxrwxr-x 2.0 unx 311 b- stor 80-Jan-01 00:00 com/crashlytics/android/i.class │ │ │ +?rwxrwxr-x 2.0 unx 350 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/q.class │ │ │ +?rwxrwxr-x 2.0 unx 588 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/A.class │ │ │ +?rwxrwxr-x 2.0 unx 6121 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/b.class │ │ │ +?rwxrwxr-x 2.0 unx 1097 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/B.class │ │ │ +?rwxrwxr-x 2.0 unx 543 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/C.class │ │ │ +?rwxrwxr-x 2.0 unx 7067 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/D.class │ │ │ +?rwxrwxr-x 2.0 unx 767 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/E.class │ │ │ +?rwxrwxr-x 2.0 unx 105 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ak.class │ │ │ +?rwxrwxr-x 2.0 unx 4984 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/O.class │ │ │ +?rwxrwxr-x 2.0 unx 1886 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/F.class │ │ │ +?rwxrwxr-x 2.0 unx 920 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/G.class │ │ │ +?rwxrwxr-x 2.0 unx 138 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/N.class │ │ │ +?rwxrwxr-x 2.0 unx 2190 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/H.class │ │ │ +?rwxrwxr-x 2.0 unx 259 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/U.class │ │ │ +?rwxrwxr-x 2.0 unx 472 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/I.class │ │ │ +?rwxrwxr-x 2.0 unx 4460 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/J.class │ │ │ +?rwxrwxr-x 2.0 unx 4726 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/K.class │ │ │ +?rwxrwxr-x 2.0 unx 382 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/L.class │ │ │ +?rwxrwxr-x 2.0 unx 281 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/M.class │ │ │ +?rwxrwxr-x 2.0 unx 1730 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/P.class │ │ │ +?rwxrwxr-x 2.0 unx 916 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/Q.class │ │ │ +?rwxrwxr-x 2.0 unx 925 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/R.class │ │ │ +?rwxrwxr-x 2.0 unx 659 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/S.class │ │ │ +?rwxrwxr-x 2.0 unx 755 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/T.class │ │ │ +?rwxrwxr-x 2.0 unx 1980 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/V.class │ │ │ +?rwxrwxr-x 2.0 unx 1337 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/W.class │ │ │ +?rwxrwxr-x 2.0 unx 2011 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/X.class │ │ │ +?rwxrwxr-x 2.0 unx 838 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/Y.class │ │ │ +?rwxrwxr-x 2.0 unx 3694 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/a.class │ │ │ +?rwxrwxr-x 2.0 unx 544 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aE.class │ │ │ +?rwxrwxr-x 2.0 unx 491 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aA.class │ │ │ +?rwxrwxr-x 2.0 unx 327 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aB.class │ │ │ +?rwxrwxr-x 2.0 unx 384 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aC.class │ │ │ +?rwxrwxr-x 2.0 unx 379 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aD.class │ │ │ +?rwxrwxr-x 2.0 unx 986 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aF.class │ │ │ +?rwxrwxr-x 2.0 unx 196 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aG.class │ │ │ +?rwxrwxr-x 2.0 unx 4217 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aH.class │ │ │ +?rwxrwxr-x 2.0 unx 2603 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aI.class │ │ │ +?rwxrwxr-x 2.0 unx 1290 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aJ.class │ │ │ +?rwxrwxr-x 2.0 unx 284 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aK.class │ │ │ +?rwxrwxr-x 2.0 unx 176 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aL.class │ │ │ +?rwxrwxr-x 2.0 unx 401 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aM.class │ │ │ +?rwxrwxr-x 2.0 unx 2284 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aN.class │ │ │ +?rwxrwxr-x 2.0 unx 162 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ba.class │ │ │ +?rwxrwxr-x 2.0 unx 3791 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aO.class │ │ │ +?rwxrwxr-x 2.0 unx 246 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aP.class │ │ │ +?rwxrwxr-x 2.0 unx 466 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aQ.class │ │ │ +?rwxrwxr-x 2.0 unx 193 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aR.class │ │ │ +?rwxrwxr-x 2.0 unx 6681 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aS.class │ │ │ +?rwxrwxr-x 2.0 unx 352 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aT.class │ │ │ +?rwxrwxr-x 2.0 unx 159 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aU.class │ │ │ +?rwxrwxr-x 2.0 unx 855 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aV.class │ │ │ +?rwxrwxr-x 2.0 unx 3620 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aW.class │ │ │ +?rwxrwxr-x 2.0 unx 714 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aX.class │ │ │ +?rwxrwxr-x 2.0 unx 3601 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aY.class │ │ │ +?rwxrwxr-x 2.0 unx 483 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aZ.class │ │ │ +?rwxrwxr-x 2.0 unx 12454 b- defN 80-Jan-01 00:00 com/crashlytics/android/internal/ab.class │ │ │ +?rwxrwxr-x 2.0 unx 332 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ac.class │ │ │ +?rwxrwxr-x 2.0 unx 2427 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ad.class │ │ │ +?rwxrwxr-x 2.0 unx 86 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/s.class │ │ │ +?rwxrwxr-x 2.0 unx 318 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ae.class │ │ │ +?rwxrwxr-x 2.0 unx 188 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/af.class │ │ │ +?rwxrwxr-x 2.0 unx 188 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ag.class │ │ │ +?rwxrwxr-x 2.0 unx 1867 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ah.class │ │ │ +?rwxrwxr-x 2.0 unx 1224 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ai.class │ │ │ +?rwxrwxr-x 2.0 unx 2538 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aj.class │ │ │ +?rwxrwxr-x 2.0 unx 1149 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/al.class │ │ │ +?rwxrwxr-x 2.0 unx 358 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/am.class │ │ │ +?rwxrwxr-x 2.0 unx 1978 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/an.class │ │ │ +?rwxrwxr-x 2.0 unx 6143 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ao.class │ │ │ +?rwxrwxr-x 2.0 unx 1117 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ap.class │ │ │ +?rwxrwxr-x 2.0 unx 7405 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aq.class │ │ │ +?rwxrwxr-x 2.0 unx 127 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/au.class │ │ │ +?rwxrwxr-x 2.0 unx 601 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ar.class │ │ │ +?rwxrwxr-x 2.0 unx 746 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/as.class │ │ │ +?rwxrwxr-x 2.0 unx 1300 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/at.class │ │ │ +?rwxrwxr-x 2.0 unx 4824 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/av.class │ │ │ +?rwxrwxr-x 2.0 unx 679 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/aw.class │ │ │ +?rwxrwxr-x 2.0 unx 888 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ax.class │ │ │ +?rwxrwxr-x 2.0 unx 9154 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/ay.class │ │ │ +?rwxrwxr-x 2.0 unx 773 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/az.class │ │ │ +?rwxrwxr-x 2.0 unx 323 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/c.class │ │ │ +?rwxrwxr-x 2.0 unx 333 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/d.class │ │ │ +?rwxrwxr-x 2.0 unx 323 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/e.class │ │ │ +?rwxrwxr-x 2.0 unx 266 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/f.class │ │ │ +?rwxrwxr-x 2.0 unx 1922 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/g.class │ │ │ +?rwxrwxr-x 2.0 unx 1914 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/h.class │ │ │ +?rwxrwxr-x 2.0 unx 327 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/i.class │ │ │ +?rwxrwxr-x 2.0 unx 359 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/j.class │ │ │ +?rwxrwxr-x 2.0 unx 125 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/k.class │ │ │ +?rwxrwxr-x 2.0 unx 125 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/l.class │ │ │ +?rwxrwxr-x 2.0 unx 398 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/m.class │ │ │ +?rwxrwxr-x 2.0 unx 264 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/n.class │ │ │ +?rwxrwxr-x 2.0 unx 745 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/o.class │ │ │ +?rwxrwxr-x 2.0 unx 3517 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/r.class │ │ │ +?rwxrwxr-x 2.0 unx 128 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/t.class │ │ │ +?rwxrwxr-x 2.0 unx 4693 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/v.class │ │ │ +?rwxrwxr-x 2.0 unx 680 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/w.class │ │ │ +?rwxrwxr-x 2.0 unx 1004 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/x.class │ │ │ +?rwxrwxr-x 2.0 unx 340 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/y.class │ │ │ +?rwxrwxr-x 2.0 unx 1807 b- stor 80-Jan-01 00:00 com/crashlytics/android/internal/z.class │ │ │ +?rwxrwxr-x 2.0 unx 678 b- stor 80-Jan-01 00:00 com/crashlytics/android/j.class │ │ │ +?rwxrwxr-x 2.0 unx 629 b- stor 80-Jan-01 00:00 com/crashlytics/android/k.class │ │ │ +?rwxrwxr-x 2.0 unx 718 b- stor 80-Jan-01 00:00 com/crashlytics/android/l.class │ │ │ +?rwxrwxr-x 2.0 unx 970 b- stor 80-Jan-01 00:00 com/crashlytics/android/m.class │ │ │ +?rwxrwxr-x 2.0 unx 770 b- stor 80-Jan-01 00:00 com/crashlytics/android/n.class │ │ │ +?rwxrwxr-x 2.0 unx 416 b- stor 80-Jan-01 00:00 com/crashlytics/android/o.class │ │ │ +?rwxrwxr-x 2.0 unx 2614 b- stor 80-Jan-01 00:00 com/crashlytics/android/p.class │ │ │ +?rwxrwxr-x 2.0 unx 560 b- stor 80-Jan-01 00:00 com/crashlytics/android/q.class │ │ │ +?rwxrwxr-x 2.0 unx 555 b- stor 80-Jan-01 00:00 com/crashlytics/android/r.class │ │ │ +?rwxrwxr-x 2.0 unx 674 b- stor 80-Jan-01 00:00 com/crashlytics/android/s.class │ │ │ +?rwxrwxr-x 2.0 unx 1415 b- stor 80-Jan-01 00:00 com/crashlytics/android/t.class │ │ │ +?rwxrwxr-x 2.0 unx 654 b- stor 80-Jan-01 00:00 com/crashlytics/android/u.class │ │ │ +?rwxrwxr-x 2.0 unx 36544 b- defN 80-Jan-01 00:00 com/crashlytics/android/v.class │ │ │ +?rwxrwxr-x 2.0 unx 397 b- stor 80-Jan-01 00:00 com/crashlytics/android/w.class │ │ │ +?rwxrwxr-x 2.0 unx 898 b- stor 80-Jan-01 00:00 com/crashlytics/android/x.class │ │ │ +?rwxrwxr-x 2.0 unx 528 b- stor 80-Jan-01 00:00 com/crashlytics/android/y.class │ │ │ +?rwxrwxr-x 2.0 unx 413 b- stor 80-Jan-01 00:00 com/crashlytics/android/z.class │ │ │ ?rwxrwxr-x 2.0 unx 110 b- stor 80-Jan-01 00:00 javax/inject/Provider.class │ │ │ ?rwxrwxr-x 2.0 unx 122 b- stor 80-Jan-01 00:00 dagger/MembersInjector.class │ │ │ ?rwxrwxr-x 2.0 unx 2480 b- stor 80-Jan-01 00:00 dagger/internal/Binding.class │ │ │ ?rwxrwxr-x 2.0 unx 727 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/AndroidModule$$ModuleAdapter$ProvideAppContextProvidesAdapter.class │ │ │ ?rwxrwxr-x 2.0 unx 1519 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/AndroidModule$$ModuleAdapter$ProvideDefaultSharedPreferencesProvidesAdapter.class │ │ │ ?rwxrwxr-x 2.0 unx 1498 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/AndroidModule$$ModuleAdapter$ProvideNotificationManagerProvidesAdapter.class │ │ │ ?rwxrwxr-x 2.0 unx 1471 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/AndroidModule$$ModuleAdapter$ProvidePackageInfoProvidesAdapter.class │ │ │ @@ -537,15 +603,15 @@ │ │ │ ?rwxrwxr-x 2.0 unx 284 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/DeviceFrameGenerator$Callback.class │ │ │ ?rwxrwxr-x 2.0 unx 2688 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/AbstractGenerateFrameService.class │ │ │ ?rwxrwxr-x 2.0 unx 396 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/DeviceFrameGenerator$ImageMetadata.class │ │ │ ?rwxrwxr-x 2.0 unx 7738 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/DeviceFrameGenerator.class │ │ │ ?rwxrwxr-x 2.0 unx 792 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/GenerateFrameService$1.class │ │ │ ?rwxrwxr-x 2.0 unx 6219 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/GenerateFrameService.class │ │ │ ?rwxrwxr-x 2.0 unx 861 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/GenerateMultipleFramesService$1.class │ │ │ -?rwxrwxr-x 2.0 unx 4680 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/GenerateMultipleFramesService.class │ │ │ +?rwxrwxr-x 2.0 unx 4673 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/GenerateMultipleFramesService.class │ │ │ ?rwxrwxr-x 2.0 unx 363 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/core/UnmatchedDimensionsException.class │ │ │ ?rwxrwxr-x 2.0 unx 599 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/model/Device$1.class │ │ │ ?rwxrwxr-x 2.0 unx 1461 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/model/Device$Builder.class │ │ │ ?rwxrwxr-x 2.0 unx 2865 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/model/Device.class │ │ │ ?rwxrwxr-x 2.0 unx 4241 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/model/DeviceProvider.class │ │ │ ?rwxrwxr-x 2.0 unx 1474 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/ui/AboutFragment$$InjectAdapter.class │ │ │ ?rwxrwxr-x 2.0 unx 453 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/ui/AboutFragment$$ViewInjector$1.class │ │ │ @@ -591,19 +657,19 @@ │ │ │ ?rwxrwxr-x 2.0 unx 904 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/util/SafeAsyncTask$Task$6.class │ │ │ ?rwxrwxr-x 2.0 unx 3132 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/util/SafeAsyncTask$Task.class │ │ │ ?rwxrwxr-x 2.0 unx 2749 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/util/SafeAsyncTask.class │ │ │ ?rwxrwxr-x 2.0 unx 699 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/util/StorageUtils.class │ │ │ ?rwxrwxr-x 2.0 unx 4962 b- stor 80-Jan-01 00:00 com/f2prateek/dfg/util/Strings.class │ │ │ ?rwxrwxr-x 2.0 unx 1199 b- stor 80-Jan-01 00:00 com/squareup/javawriter/JavaWriter$Scope.class │ │ │ ?rwxrwxr-x 2.0 unx 12620 b- defN 80-Jan-01 00:00 com/squareup/javawriter/JavaWriter.class │ │ │ -?rwxrwxr-x 2.0 unx 3854 b- stor 80-Jan-01 00:00 com/squareup/otto/AnnotatedHandlerFinder.class │ │ │ +?rwxrwxr-x 2.0 unx 4180 b- stor 80-Jan-01 00:00 com/squareup/otto/AnnotatedHandlerFinder.class │ │ │ ?rwxrwxr-x 2.0 unx 447 b- stor 80-Jan-01 00:00 com/squareup/otto/Bus$1.class │ │ │ ?rwxrwxr-x 2.0 unx 432 b- stor 80-Jan-01 00:00 com/squareup/otto/Bus$2.class │ │ │ ?rwxrwxr-x 2.0 unx 329 b- stor 80-Jan-01 00:00 com/squareup/otto/Bus$EventWithHandler.class │ │ │ -?rwxrwxr-x 2.0 unx 7050 b- stor 80-Jan-01 00:00 com/squareup/otto/Bus.class │ │ │ +?rwxrwxr-x 2.0 unx 7143 b- stor 80-Jan-01 00:00 com/squareup/otto/Bus.class │ │ │ ?rwxrwxr-x 2.0 unx 268 b- stor 80-Jan-01 00:00 com/squareup/otto/DeadEvent.class │ │ │ ?rwxrwxr-x 2.0 unx 1975 b- stor 80-Jan-01 00:00 com/squareup/otto/EventHandler.class │ │ │ ?rwxrwxr-x 2.0 unx 1974 b- stor 80-Jan-01 00:00 com/squareup/otto/EventProducer.class │ │ │ ?rwxrwxr-x 2.0 unx 364 b- stor 80-Jan-01 00:00 com/squareup/otto/HandlerFinder.class │ │ │ ?rwxrwxr-x 2.0 unx 393 b- stor 80-Jan-01 00:00 com/squareup/otto/HandlerFinder$1.class │ │ │ ?rwxrwxr-x 2.0 unx 116 b- stor 80-Jan-01 00:00 com/squareup/otto/Produce.class │ │ │ ?rwxrwxr-x 2.0 unx 118 b- stor 80-Jan-01 00:00 com/squareup/otto/Subscribe.class │ │ │ @@ -723,22 +789,23 @@ │ │ │ ?rwxrwxr-x 2.0 unx 6219 b- stor 80-Jan-01 00:00 dagger/internal/codegen/ValidationProcessor.class │ │ │ ?rwxrwxr-x 2.0 unx 416 b- stor 80-Jan-01 00:00 dagger/internal/loaders/GeneratedAdapters.class │ │ │ ?rwxrwxr-x 2.0 unx 6023 b- stor 80-Jan-01 00:00 dagger/internal/loaders/ReflectiveAtInjectBinding.class │ │ │ ?rwxrwxr-x 2.0 unx 2525 b- stor 80-Jan-01 00:00 dagger/internal/loaders/ReflectiveStaticInjection.class │ │ │ ?rwxrwxr-x 2.0 unx 108 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Configuration$1.class │ │ │ ?rwxrwxr-x 2.0 unx 1046 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Configuration$Builder.class │ │ │ ?rwxrwxr-x 2.0 unx 1647 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Configuration.class │ │ │ -?rwxrwxr-x 2.0 unx 14266 b- defN 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Crouton.class │ │ │ +?rwxrwxr-x 2.0 unx 15127 b- defN 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Crouton.class │ │ │ ?rwxrwxr-x 2.0 unx 1462 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder.class │ │ │ ?rwxrwxr-x 2.0 unx 158 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/LifecycleCallback.class │ │ │ -?rwxrwxr-x 2.0 unx 1967 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Manager$1.class │ │ │ +?rwxrwxr-x 2.0 unx 1979 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Manager$1.class │ │ │ ?rwxrwxr-x 2.0 unx 312 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Manager$Messages.class │ │ │ -?rwxrwxr-x 2.0 unx 6510 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Manager.class │ │ │ +?rwxrwxr-x 2.0 unx 7758 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Manager.class │ │ │ ?rwxrwxr-x 2.0 unx 100 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Style$1.class │ │ │ -?rwxrwxr-x 2.0 unx 5202 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Style$Builder.class │ │ │ -?rwxrwxr-x 2.0 unx 4511 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Style.class │ │ │ +?rwxrwxr-x 2.0 unx 5826 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Style$Builder.class │ │ │ +?rwxrwxr-x 2.0 unx 4962 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/Style.class │ │ │ +?rwxrwxr-x 2.0 unx 1390 b- stor 80-Jan-01 00:00 de/keyboardsurfer/android/widget/crouton/TypefaceSpan.class │ │ │ ?rwxrwxr-x 2.0 unx 110 b- stor 80-Jan-01 00:00 javax/inject/Inject.class │ │ │ ?rwxrwxr-x 2.0 unx 148 b- stor 80-Jan-01 00:00 javax/inject/Named.class │ │ │ ?rwxrwxr-x 2.0 unx 113 b- stor 80-Jan-01 00:00 javax/inject/Qualifier.class │ │ │ ?rwxrwxr-x 2.0 unx 109 b- stor 80-Jan-01 00:00 javax/inject/Scope.class │ │ │ ?rwxrwxr-x 2.0 unx 113 b- stor 80-Jan-01 00:00 javax/inject/Singleton.class │ │ │ -742 files, 1304940 bytes uncompressed, 1137027 bytes compressed: 12.9% │ │ │ +809 files, 1410547 bytes uncompressed, 1238117 bytes compressed: 12.2% │ │ ├── zipnote {} │ │ │ @@ -1209,252 +1209,450 @@ │ │ │ │ │ │ Filename: com/crashlytics/android/C.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/CrashTest.class │ │ │ Comment: │ │ │ │ │ │ +Filename: com/crashlytics/android/internal/p.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/u.class │ │ │ +Comment: │ │ │ + │ │ │ Filename: com/crashlytics/android/Crashlytics.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/CrashlyticsListener.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/CrashlyticsMissingDependencyException.class │ │ │ Comment: │ │ │ │ │ │ +Filename: com/crashlytics/android/internal/aa.class │ │ │ +Comment: │ │ │ + │ │ │ Filename: com/crashlytics/android/D.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/E.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/F.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/G.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/QueueFile$ElementReader.class │ │ │ +Filename: com/crashlytics/android/H.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/H.class │ │ │ +Filename: com/crashlytics/android/I.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/HttpRequest$Base64.class │ │ │ +Filename: com/crashlytics/android/J.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/HttpRequest$Operation.class │ │ │ +Filename: com/crashlytics/android/K.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/HttpRequest$CloseOperation.class │ │ │ +Filename: com/crashlytics/android/L.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/HttpRequest$FlushOperation.class │ │ │ +Filename: com/crashlytics/android/M.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/HttpRequest$HttpRequestException.class │ │ │ +Filename: com/crashlytics/android/N.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/HttpRequest$RequestOutputStream.class │ │ │ +Filename: com/crashlytics/android/O.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/HttpRequest.class │ │ │ +Filename: com/crashlytics/android/P.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/I.class │ │ │ +Filename: com/crashlytics/android/PinningInfoProvider.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/IdManager$DeviceIdentifierType.class │ │ │ +Filename: com/crashlytics/android/Q.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/IdManager.class │ │ │ +Filename: com/crashlytics/android/R.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/J.class │ │ │ +Filename: com/crashlytics/android/S.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/K.class │ │ │ +Filename: com/crashlytics/android/internal/Z.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/L.class │ │ │ +Filename: com/crashlytics/android/a.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/M.class │ │ │ +Filename: com/crashlytics/android/T.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/N.class │ │ │ +Filename: com/crashlytics/android/U.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/O.class │ │ │ +Filename: com/crashlytics/android/V.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/P.class │ │ │ +Filename: com/crashlytics/android/W.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/PinningInfoProvider.class │ │ │ +Filename: com/crashlytics/android/X.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/Q.class │ │ │ +Filename: com/crashlytics/android/Y.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/QueueFile.class │ │ │ +Filename: com/crashlytics/android/Z.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/R.class │ │ │ +Filename: com/crashlytics/android/aa.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/S.class │ │ │ +Filename: com/crashlytics/android/ab.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/SettingsController$CacheBehavior.class │ │ │ +Filename: com/crashlytics/android/ac.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/SettingsController.class │ │ │ +Filename: com/crashlytics/android/ad.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/T.class │ │ │ +Filename: com/crashlytics/android/ae.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/U.class │ │ │ +Filename: com/crashlytics/android/b.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/V.class │ │ │ +Filename: com/crashlytics/android/c.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/Version.class │ │ │ +Filename: com/crashlytics/android/d.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/W.class │ │ │ +Filename: com/crashlytics/android/e.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/X.class │ │ │ +Filename: com/crashlytics/android/f.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/Y.class │ │ │ +Filename: com/crashlytics/android/g.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/b.class │ │ │ +Filename: com/crashlytics/android/h.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/a.class │ │ │ +Filename: com/crashlytics/android/i.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/Z.class │ │ │ +Filename: com/crashlytics/android/internal/q.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aA.class │ │ │ +Filename: com/crashlytics/android/internal/A.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aB.class │ │ │ +Filename: com/crashlytics/android/internal/b.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aC.class │ │ │ +Filename: com/crashlytics/android/internal/B.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aD.class │ │ │ +Filename: com/crashlytics/android/internal/C.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aa.class │ │ │ +Filename: com/crashlytics/android/internal/D.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ab.class │ │ │ +Filename: com/crashlytics/android/internal/E.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ac.class │ │ │ +Filename: com/crashlytics/android/internal/ak.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ad.class │ │ │ +Filename: com/crashlytics/android/internal/O.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ay.class │ │ │ +Filename: com/crashlytics/android/internal/F.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ae.class │ │ │ +Filename: com/crashlytics/android/internal/G.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/af.class │ │ │ +Filename: com/crashlytics/android/internal/N.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ag.class │ │ │ +Filename: com/crashlytics/android/internal/H.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ah.class │ │ │ +Filename: com/crashlytics/android/internal/U.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ai.class │ │ │ +Filename: com/crashlytics/android/internal/I.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aj.class │ │ │ +Filename: com/crashlytics/android/internal/J.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ak.class │ │ │ +Filename: com/crashlytics/android/internal/K.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/al.class │ │ │ +Filename: com/crashlytics/android/internal/L.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/am.class │ │ │ +Filename: com/crashlytics/android/internal/M.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/an.class │ │ │ +Filename: com/crashlytics/android/internal/P.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ao.class │ │ │ +Filename: com/crashlytics/android/internal/Q.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ap.class │ │ │ +Filename: com/crashlytics/android/internal/R.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aq.class │ │ │ +Filename: com/crashlytics/android/internal/S.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ar.class │ │ │ +Filename: com/crashlytics/android/internal/T.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/as.class │ │ │ +Filename: com/crashlytics/android/internal/V.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/at.class │ │ │ +Filename: com/crashlytics/android/internal/W.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/au.class │ │ │ +Filename: com/crashlytics/android/internal/X.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/av.class │ │ │ +Filename: com/crashlytics/android/internal/Y.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/aw.class │ │ │ +Filename: com/crashlytics/android/internal/a.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/ax.class │ │ │ +Filename: com/crashlytics/android/internal/aE.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/az.class │ │ │ +Filename: com/crashlytics/android/internal/aA.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/c.class │ │ │ +Filename: com/crashlytics/android/internal/aB.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/d.class │ │ │ +Filename: com/crashlytics/android/internal/aC.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/e.class │ │ │ +Filename: com/crashlytics/android/internal/aD.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/f.class │ │ │ +Filename: com/crashlytics/android/internal/aF.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/g.class │ │ │ +Filename: com/crashlytics/android/internal/aG.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/h.class │ │ │ +Filename: com/crashlytics/android/internal/aH.class │ │ │ Comment: │ │ │ │ │ │ -Filename: com/crashlytics/android/i.class │ │ │ +Filename: com/crashlytics/android/internal/aI.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aJ.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aK.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aL.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aM.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aN.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ba.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aO.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aP.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aQ.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aR.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aS.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aT.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aU.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aV.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aW.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aX.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aY.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aZ.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ab.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ac.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ad.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/s.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ae.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/af.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ag.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ah.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ai.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aj.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/al.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/am.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/an.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ao.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ap.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aq.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/au.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ar.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/as.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/at.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/av.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/aw.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ax.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/ay.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/az.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/c.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/d.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/e.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/f.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/g.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/h.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/i.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/j.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/k.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/l.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/m.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/n.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/o.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/r.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/t.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/v.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/w.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/x.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/y.class │ │ │ +Comment: │ │ │ + │ │ │ +Filename: com/crashlytics/android/internal/z.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/j.class │ │ │ Comment: │ │ │ │ │ │ Filename: com/crashlytics/android/k.class │ │ │ Comment: │ │ │ @@ -2205,14 +2403,17 @@ │ │ │ │ │ │ Filename: de/keyboardsurfer/android/widget/crouton/Style$Builder.class │ │ │ Comment: │ │ │ │ │ │ Filename: de/keyboardsurfer/android/widget/crouton/Style.class │ │ │ Comment: │ │ │ │ │ │ +Filename: de/keyboardsurfer/android/widget/crouton/TypefaceSpan.class │ │ │ +Comment: │ │ │ + │ │ │ Filename: javax/inject/Inject.class │ │ │ Comment: │ │ │ │ │ │ Filename: javax/inject/Named.class │ │ │ Comment: │ │ │ │ │ │ Filename: javax/inject/Qualifier.class │ │ ├── butterknife/internal/InjectViewProcessor.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -7,16 +7,16 @@ │ │ │ │ import javax.annotation.processing.ProcessingEnvironment; │ │ │ │ import javax.lang.model.SourceVersion; │ │ │ │ import javax.tools.Diagnostic; │ │ │ │ import java.util.List; │ │ │ │ import javax.lang.model.element.VariableElement; │ │ │ │ import javax.lang.model.element.ExecutableElement; │ │ │ │ import butterknife.Optional; │ │ │ │ -import javax.lang.model.element.ElementKind; │ │ │ │ import javax.lang.model.element.Modifier; │ │ │ │ +import javax.lang.model.element.ElementKind; │ │ │ │ import javax.lang.model.type.DeclaredType; │ │ │ │ import javax.lang.model.type.TypeKind; │ │ │ │ import butterknife.OnClick; │ │ │ │ import java.util.Set; │ │ │ │ import javax.lang.model.element.Element; │ │ │ │ import java.lang.annotation.Annotation; │ │ │ │ import butterknife.InjectView; │ │ │ │ @@ -32,14 +32,15 @@ │ │ │ │ import javax.annotation.processing.Filer; │ │ │ │ import javax.lang.model.util.Elements; │ │ │ │ import javax.annotation.processing.AbstractProcessor; │ │ │ │ │ │ │ │ public class InjectViewProcessor extends AbstractProcessor │ │ │ │ { │ │ │ │ public static final String SUFFIX = "$$ViewInjector"; │ │ │ │ + static final String VIEW_TYPE = "android.view.View"; │ │ │ │ private Elements elementUtils; │ │ │ │ private Filer filer; │ │ │ │ private Types typeUtils; │ │ │ │ │ │ │ │ private boolean containsTypeMirror(final Collection collection, TypeMirror erasure) { │ │ │ │ erasure = this.typeUtils.erasure(erasure); │ │ │ │ final Iterator iterator = collection.iterator(); │ │ │ │ @@ -139,27 +140,27 @@ │ │ │ │ final TypeElement typeElement = (TypeElement)element.getEnclosingElement(); │ │ │ │ if (!this.isSubtypeOfView(element.asType())) { │ │ │ │ final String s = "@InjectView fields must extend from View (%s.%s)."; │ │ │ │ final Object[] array = new Object[n]; │ │ │ │ array[0] = typeElement.getQualifiedName(); │ │ │ │ this.error((Element)(array[n2] = element), s, array); │ │ │ │ } │ │ │ │ + else if (typeElement.getKind() != ElementKind.CLASS) { │ │ │ │ + final String s2 = "@InjectView field annotations may only be specified in classes (%s)."; │ │ │ │ + final Object[] array2 = new Object[n2]; │ │ │ │ + array2[0] = typeElement; │ │ │ │ + this.error(element, s2, array2); │ │ │ │ + } │ │ │ │ else { │ │ │ │ final Set modifiers = element.getModifiers(); │ │ │ │ if (modifiers.contains(Modifier.PRIVATE) || modifiers.contains(Modifier.STATIC)) { │ │ │ │ - final String s2 = "@InjectView fields must not be private or static (%s.%s)."; │ │ │ │ - final Object[] array2 = new Object[n]; │ │ │ │ - array2[0] = typeElement.getQualifiedName(); │ │ │ │ - this.error((Element)(array2[n2] = element), s2, array2); │ │ │ │ - } │ │ │ │ - else if (typeElement.getKind() != ElementKind.CLASS) { │ │ │ │ - final String s3 = "@InjectView field annotations may only be specified in classes (%s)."; │ │ │ │ - final Object[] array3 = new Object[n2]; │ │ │ │ - array3[0] = typeElement; │ │ │ │ - this.error(element, s3, array3); │ │ │ │ + final String s3 = "@InjectView fields must not be private or static (%s.%s)."; │ │ │ │ + final Object[] array3 = new Object[n]; │ │ │ │ + array3[0] = typeElement.getQualifiedName(); │ │ │ │ + this.error((Element)(array3[n2] = element), s3, array3); │ │ │ │ } │ │ │ │ else if (typeElement.getModifiers().contains(Modifier.PRIVATE)) { │ │ │ │ final String s4 = "@InjectView fields may not be on private classes (%s)."; │ │ │ │ final Object[] array4 = new Object[n2]; │ │ │ │ array4[0] = typeElement; │ │ │ │ this.error(element, s4, array4); │ │ │ │ } │ │ │ │ @@ -234,33 +235,32 @@ │ │ │ │ string = variableElement.asType().toString(); │ │ │ │ } │ │ │ │ final String string2 = executableElement.getSimpleName().toString(); │ │ │ │ final int[] value = ((OnClick)element.getAnnotation(OnClick.class)).value(); │ │ │ │ final boolean b = element.getAnnotation((Class)Optional.class) == null; │ │ │ │ final TargetClass orCreateTargetClass = this.getOrCreateTargetClass(map, typeElement); │ │ │ │ final LinkedHashSet set2 = new LinkedHashSet(); │ │ │ │ - final int[] array11 = value; │ │ │ │ for (int length = value.length, i = 0; i < length; ++i) { │ │ │ │ - final int n = array11[i]; │ │ │ │ + final int n = value[i]; │ │ │ │ if (!set2.add(n)) { │ │ │ │ - final String s7 = "@OnClick annotation for method %s contains duplicate ID %s."; │ │ │ │ - final Object[] array13; │ │ │ │ - final Object[] array12 = array13 = new Object[2]; │ │ │ │ - array12[0] = element; │ │ │ │ - array12[1] = n; │ │ │ │ - this.error(element, s7, array13); │ │ │ │ + final String s7 = "@OnClick annotation for method %s contains duplicate ID %d."; │ │ │ │ + final Object[] array12; │ │ │ │ + final Object[] array11 = array12 = new Object[2]; │ │ │ │ + array11[0] = element; │ │ │ │ + array11[1] = n; │ │ │ │ + this.error(element, s7, array12); │ │ │ │ return; │ │ │ │ } │ │ │ │ if (!orCreateTargetClass.addMethod(n, string2, string, b)) { │ │ │ │ final String s8 = "Multiple @OnClick methods declared for ID %s in %s."; │ │ │ │ - final Object[] array15; │ │ │ │ - final Object[] array14 = array15 = new Object[2]; │ │ │ │ - array14[0] = n; │ │ │ │ - array14[1] = typeElement.getQualifiedName(); │ │ │ │ - this.error(element, s8, array15); │ │ │ │ + final Object[] array14; │ │ │ │ + final Object[] array13 = array14 = new Object[2]; │ │ │ │ + array13[0] = n; │ │ │ │ + array13[1] = typeElement.getQualifiedName(); │ │ │ │ + this.error(element, s8, array14); │ │ │ │ return; │ │ │ │ } │ │ │ │ } │ │ │ │ set.add(this.typeUtils.erasure(typeElement.asType())); │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ ├── butterknife/internal/TargetClass.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -62,15 +62,19 @@ │ │ │ │ final int intValue = (int)entry.getKey(); │ │ │ │ sb.append(" view = finder.findById(source, ").append(intValue).append(");\n"); │ │ │ │ final TargetClass$ViewId targetClass$ViewId = (TargetClass$ViewId)entry.getValue(); │ │ │ │ for (final TargetClass$FieldInjection targetClass$FieldInjection : targetClass$ViewId.fields) { │ │ │ │ if (targetClass$FieldInjection.required) { │ │ │ │ sb.append(" if (view == null) {\n").append(" throw new IllegalStateException(\"Required view with id '").append(intValue).append("' for field '").append(targetClass$FieldInjection.name).append("' was not found. If this field binding is optional add '@Optional'.\");\n").append(" }\n"); │ │ │ │ } │ │ │ │ - sb.append(" target.").append(targetClass$FieldInjection.name).append(" = (").append(targetClass$FieldInjection.type).append(") view;\n"); │ │ │ │ + sb.append(" target.").append(targetClass$FieldInjection.name).append(" = "); │ │ │ │ + if (!"android.view.View".equals(targetClass$FieldInjection.type)) { │ │ │ │ + sb.append("(").append(targetClass$FieldInjection.type).append(") "); │ │ │ │ + } │ │ │ │ + sb.append("view;\n"); │ │ │ │ } │ │ │ │ final TargetClass$MethodInjection method = targetClass$ViewId.method; │ │ │ │ if (method != null) { │ │ │ │ if (method.required) { │ │ │ │ sb.append(" if (view == null) {\n").append(" throw new IllegalStateException(\"Required view with id '").append(intValue).append("' for method '").append(method.name).append("' was not found. If this method binding is optional add '@Optional'.\");\n").append(" }\n"); │ │ │ │ } │ │ │ │ else { │ │ ├── com/crashlytics/android/A.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,149 +1,13 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.content.Context; │ │ │ │ -import java.util.concurrent.CountDownLatch; │ │ │ │ -import java.io.File; │ │ │ │ +import java.util.concurrent.Callable; │ │ │ │ │ │ │ │ -final class A implements Runnable │ │ │ │ +final class A implements Callable │ │ │ │ { │ │ │ │ - private /* synthetic */ File a; │ │ │ │ - private /* synthetic */ CountDownLatch b; │ │ │ │ - private /* synthetic */ Context c; │ │ │ │ - private /* synthetic */ float d; │ │ │ │ - private /* synthetic */ CountDownLatch e; │ │ │ │ - private /* synthetic */ Crashlytics f; │ │ │ │ + private /* synthetic */ v a; │ │ │ │ │ │ │ │ - A(final Crashlytics f, final File a, final CountDownLatch b, final Context c, final float d, final CountDownLatch e) { │ │ │ │ - this.f = f; │ │ │ │ + A(final v a) { │ │ │ │ this.a = a; │ │ │ │ - this.b = b; │ │ │ │ - this.c = c; │ │ │ │ - this.d = d; │ │ │ │ - this.e = e; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void run() { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: getfield com/crashlytics/android/A.a:Ljava/io/File; │ │ │ │ - // 4: astore_1 │ │ │ │ - // 5: aload_1 │ │ │ │ - // 6: invokevirtual java/io/File.createNewFile:()Z │ │ │ │ - // 9: pop │ │ │ │ - // 10: aload_0 │ │ │ │ - // 11: getfield com/crashlytics/android/A.b:Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 14: astore_1 │ │ │ │ - // 15: aload_1 │ │ │ │ - // 16: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ - // 19: aload_0 │ │ │ │ - // 20: getfield com/crashlytics/android/A.f:Lcom/crashlytics/android/Crashlytics; │ │ │ │ - // 23: astore_1 │ │ │ │ - // 24: aload_0 │ │ │ │ - // 25: getfield com/crashlytics/android/A.c:Landroid/content/Context; │ │ │ │ - // 28: astore_2 │ │ │ │ - // 29: aload_0 │ │ │ │ - // 30: getfield com/crashlytics/android/A.d:F │ │ │ │ - // 33: fstore_3 │ │ │ │ - // 34: aload_1 │ │ │ │ - // 35: aload_2 │ │ │ │ - // 36: fload_3 │ │ │ │ - // 37: invokestatic com/crashlytics/android/Crashlytics.a:(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;F)V │ │ │ │ - // 40: aload_0 │ │ │ │ - // 41: getfield com/crashlytics/android/A.a:Ljava/io/File; │ │ │ │ - // 44: astore_1 │ │ │ │ - // 45: aload_1 │ │ │ │ - // 46: invokevirtual java/io/File.delete:()Z │ │ │ │ - // 49: pop │ │ │ │ - // 50: aload_0 │ │ │ │ - // 51: getfield com/crashlytics/android/A.e:Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 54: astore_1 │ │ │ │ - // 55: aload_1 │ │ │ │ - // 56: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ - // 59: return │ │ │ │ - // 60: astore_1 │ │ │ │ - // 61: ldc "Problem encountered creating Crashlytics initialization marker." │ │ │ │ - // 63: astore_2 │ │ │ │ - // 64: aload_2 │ │ │ │ - // 65: aload_1 │ │ │ │ - // 66: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 69: aload_0 │ │ │ │ - // 70: getfield com/crashlytics/android/A.b:Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 73: astore_1 │ │ │ │ - // 74: aload_1 │ │ │ │ - // 75: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ - // 78: goto 19 │ │ │ │ - // 81: astore_1 │ │ │ │ - // 82: aload_0 │ │ │ │ - // 83: getfield com/crashlytics/android/A.b:Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 86: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ - // 89: aload_1 │ │ │ │ - // 90: athrow │ │ │ │ - // 91: astore_1 │ │ │ │ - // 92: ldc "Problem encountered during Crashlytics initialization." │ │ │ │ - // 94: astore_2 │ │ │ │ - // 95: aload_2 │ │ │ │ - // 96: aload_1 │ │ │ │ - // 97: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 100: aload_0 │ │ │ │ - // 101: getfield com/crashlytics/android/A.e:Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 104: astore_1 │ │ │ │ - // 105: aload_1 │ │ │ │ - // 106: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ - // 109: goto 59 │ │ │ │ - // 112: astore_1 │ │ │ │ - // 113: aload_0 │ │ │ │ - // 114: getfield com/crashlytics/android/A.e:Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 117: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ - // 120: aload_1 │ │ │ │ - // 121: athrow │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 0 4 60 81 Ljava/lang/Exception; │ │ │ │ - // 0 4 81 91 Any │ │ │ │ - // 5 10 60 81 Ljava/lang/Exception; │ │ │ │ - // 5 10 81 91 Any │ │ │ │ - // 19 23 91 112 Ljava/lang/Exception; │ │ │ │ - // 19 23 112 122 Any │ │ │ │ - // 24 28 91 112 Ljava/lang/Exception; │ │ │ │ - // 24 28 112 122 Any │ │ │ │ - // 29 33 91 112 Ljava/lang/Exception; │ │ │ │ - // 29 33 112 122 Any │ │ │ │ - // 36 40 91 112 Ljava/lang/Exception; │ │ │ │ - // 36 40 112 122 Any │ │ │ │ - // 40 44 91 112 Ljava/lang/Exception; │ │ │ │ - // 40 44 112 122 Any │ │ │ │ - // 45 50 91 112 Ljava/lang/Exception; │ │ │ │ - // 45 50 112 122 Any │ │ │ │ - // 65 69 81 91 Any │ │ │ │ - // 96 100 112 122 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IllegalStateException: Expression is linked from several locations: Label_0019: │ │ │ │ - // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/B.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,55 +1,52 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -enum B │ │ │ │ +import com.crashlytics.android.internal.q; │ │ │ │ +import java.io.File; │ │ │ │ +import java.util.concurrent.Callable; │ │ │ │ + │ │ │ │ +final class B implements Callable │ │ │ │ { │ │ │ │ - a("DEVELOPER", 0, n4), │ │ │ │ - b("USER_SIDELOAD", n4, n3), │ │ │ │ - c("TEST_DISTRIBUTION", n3, n2), │ │ │ │ - d("APP_STORE", n2, n); │ │ │ │ - │ │ │ │ - private final int e; │ │ │ │ - │ │ │ │ - static { │ │ │ │ - final int n = 4; │ │ │ │ - final int n2 = 3; │ │ │ │ - final int n3 = 2; │ │ │ │ - final int n4 = 1; │ │ │ │ - final B[] f2 = new B[n]; │ │ │ │ - f2[0] = B.a; │ │ │ │ - f2[n4] = B.b; │ │ │ │ - f2[n3] = B.c; │ │ │ │ - f2[n2] = B.d; │ │ │ │ - f = f2; │ │ │ │ - } │ │ │ │ + private /* synthetic */ v a; │ │ │ │ │ │ │ │ - private B(final String s, final int n, final int e) { │ │ │ │ - this.e = e; │ │ │ │ + B(final v a) { │ │ │ │ + this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public static B a(final String s) { │ │ │ │ - int n; │ │ │ │ - if (s != null) { │ │ │ │ - n = 1; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n = 0; │ │ │ │ - } │ │ │ │ - B b; │ │ │ │ - if (n != 0) { │ │ │ │ - b = B.d; │ │ │ │ + private Boolean a() { │ │ │ │ + try { │ │ │ │ + final v a = this.a; │ │ │ │ + try { │ │ │ │ + final File f = v.f(a); │ │ │ │ + try { │ │ │ │ + final boolean delete = f.delete(); │ │ │ │ + try { │ │ │ │ + final com.crashlytics.android.internal.v a2 = com.crashlytics.android.internal.v.a(); │ │ │ │ + try { │ │ │ │ + final q b = a2.b(); │ │ │ │ + final String s = "Crashlytics"; │ │ │ │ + final StringBuilder sb = new StringBuilder("Initialization marker file removed: "); │ │ │ │ + try { │ │ │ │ + final StringBuilder append = sb.append(delete); │ │ │ │ + try { │ │ │ │ + b.a(s, append.toString()); │ │ │ │ + return delete; │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Problem encountered deleting Crashlytics initialization marker.", (Throwable)ex); │ │ │ │ + final Boolean b2 = false; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex2) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex3) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex4) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex5) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex6) {} │ │ │ │ } │ │ │ │ - else { │ │ │ │ - b = B.a; │ │ │ │ - } │ │ │ │ - return b; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final int a() { │ │ │ │ - return this.e; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final String toString() { │ │ │ │ - return Integer.toString(this.e); │ │ │ │ + catch (Exception ex7) {} │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/C.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,35 +1,13 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.concurrent.CountDownLatch; │ │ │ │ +import java.util.concurrent.Callable; │ │ │ │ │ │ │ │ -final class C │ │ │ │ +final class C implements Callable │ │ │ │ { │ │ │ │ - private boolean a; │ │ │ │ - private final CountDownLatch b; │ │ │ │ + private /* synthetic */ v a; │ │ │ │ │ │ │ │ - private C(final Crashlytics crashlytics) { │ │ │ │ - this.a = false; │ │ │ │ - this.b = new CountDownLatch(1); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final void a(final boolean a) { │ │ │ │ + C(final v a) { │ │ │ │ this.a = a; │ │ │ │ - this.b.countDown(); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final boolean a() { │ │ │ │ - return this.a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - final void b() { │ │ │ │ - try { │ │ │ │ - final CountDownLatch b = this.b; │ │ │ │ - try { │ │ │ │ - b.await(); │ │ │ │ - } │ │ │ │ - catch (InterruptedException ex) {} │ │ │ │ - } │ │ │ │ - catch (InterruptedException ex2) {} │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/CrashTest.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,20 +1,21 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ import android.os.AsyncTask; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ │ │ │ │ public class CrashTest │ │ │ │ { │ │ │ │ public void crashAsyncTask(final long n) { │ │ │ │ - ((AsyncTask)new r(this, n)).execute((Object[])new Void[] { null }); │ │ │ │ + ((AsyncTask)new j(this, n)).execute((Object[])new Void[] { null }); │ │ │ │ } │ │ │ │ │ │ │ │ public void indexOutOfBounds() { │ │ │ │ - aB.c("Out of bounds value: " + (new int[2])[10]); │ │ │ │ + v.a().b().a("Crashlytics", "Out of bounds value: " + (new int[2])[10]); │ │ │ │ } │ │ │ │ │ │ │ │ public void stackOverflow() { │ │ │ │ this.stackOverflow(); │ │ │ │ } │ │ │ │ │ │ │ │ public void throwFiveChainedExceptions() { │ │ ├── com/crashlytics/android/Crashlytics.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,698 +1,708 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ import java.net.HttpURLConnection; │ │ │ │ -import javax.net.ssl.SSLSocketFactory; │ │ │ │ +import com.crashlytics.android.internal.ay; │ │ │ │ import javax.net.ssl.HttpsURLConnection; │ │ │ │ +import com.crashlytics.android.internal.ax; │ │ │ │ import java.net.URL; │ │ │ │ +import com.crashlytics.android.internal.aR; │ │ │ │ +import com.crashlytics.android.internal.aU; │ │ │ │ +import com.crashlytics.android.internal.aS; │ │ │ │ +import com.crashlytics.android.internal.r; │ │ │ │ import java.util.Collections; │ │ │ │ import java.util.Map; │ │ │ │ -import java.io.InputStream; │ │ │ │ -import java.io.Closeable; │ │ │ │ -import java.security.MessageDigest; │ │ │ │ -import android.os.Bundle; │ │ │ │ -import android.content.pm.ApplicationInfo; │ │ │ │ +import com.crashlytics.android.internal.q; │ │ │ │ +import com.crashlytics.android.internal.A; │ │ │ │ +import com.crashlytics.android.internal.aG; │ │ │ │ +import com.crashlytics.android.internal.af; │ │ │ │ +import com.crashlytics.android.internal.aQ; │ │ │ │ import android.app.Activity; │ │ │ │ import android.content.Context; │ │ │ │ -import java.util.concurrent.atomic.AtomicReference; │ │ │ │ +import com.crashlytics.android.internal.ag; │ │ │ │ +import com.crashlytics.android.internal.D; │ │ │ │ +import com.crashlytics.android.internal.ai; │ │ │ │ +import com.crashlytics.android.internal.ab; │ │ │ │ +import com.crashlytics.android.internal.ao; │ │ │ │ import java.util.concurrent.ConcurrentHashMap; │ │ │ │ -import java.io.File; │ │ │ │ +import com.crashlytics.android.internal.av; │ │ │ │ import android.content.ContextWrapper; │ │ │ │ +import com.crashlytics.android.internal.u; │ │ │ │ │ │ │ │ -public final class Crashlytics │ │ │ │ +public final class Crashlytics extends u │ │ │ │ { │ │ │ │ - private static Crashlytics b; │ │ │ │ - private static int c; │ │ │ │ - private static ContextWrapper o; │ │ │ │ + public static final String TAG = "Crashlytics"; │ │ │ │ + private static ContextWrapper j; │ │ │ │ + private static String k; │ │ │ │ + private static String l; │ │ │ │ + private static String m; │ │ │ │ + private static String n; │ │ │ │ + private static String o; │ │ │ │ private static String p; │ │ │ │ private static String q; │ │ │ │ - private static String r; │ │ │ │ - private static String s; │ │ │ │ - private static String t; │ │ │ │ - private static String u; │ │ │ │ - private static String v; │ │ │ │ - private static File w; │ │ │ │ - private static boolean x; │ │ │ │ - private static PinningInfoProvider y; │ │ │ │ - String a; │ │ │ │ - private final long d; │ │ │ │ - private final ConcurrentHashMap e; │ │ │ │ - private final AtomicReference f; │ │ │ │ - private CrashlyticsListener g; │ │ │ │ - private E h; │ │ │ │ - private IdManager i; │ │ │ │ - private String j; │ │ │ │ - private String k; │ │ │ │ - private String l; │ │ │ │ - private String m; │ │ │ │ - private SettingsController n; │ │ │ │ + private static boolean r; │ │ │ │ + private static PinningInfoProvider s; │ │ │ │ + private static av t; │ │ │ │ + private static float u; │ │ │ │ + private static Crashlytics v; │ │ │ │ + private final long a; │ │ │ │ + private final ConcurrentHashMap b; │ │ │ │ + private CrashlyticsListener c; │ │ │ │ + private v d; │ │ │ │ + private ao e; │ │ │ │ + private String f; │ │ │ │ + private String g; │ │ │ │ + private String h; │ │ │ │ + private String i; │ │ │ │ │ │ │ │ static { │ │ │ │ - Crashlytics.b = null; │ │ │ │ - Crashlytics.c = 4; │ │ │ │ - Crashlytics.x = false; │ │ │ │ - Crashlytics.y = null; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private Crashlytics() { │ │ │ │ - this.f = new AtomicReference(); │ │ │ │ - this.i = null; │ │ │ │ - this.j = null; │ │ │ │ - this.k = null; │ │ │ │ - this.l = null; │ │ │ │ - this.a = null; │ │ │ │ - this.e = new ConcurrentHashMap(); │ │ │ │ - this.d = System.currentTimeMillis(); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private h a(final ak ak) { │ │ │ │ - return new h(Crashlytics.u, Crashlytics.p, Crashlytics.t, Crashlytics.s, aB.a(new String[] { this.m }), Crashlytics.r, B.a(Crashlytics.q).a(), Crashlytics.v, "0", ak); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private Object a(final D d, Object a) { │ │ │ │ - final au au = (au)this.f.get(); │ │ │ │ - if (au != null) { │ │ │ │ - a = d.a(au); │ │ │ │ + Crashlytics.r = false; │ │ │ │ + Crashlytics.s = null; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public Crashlytics() { │ │ │ │ + this.e = null; │ │ │ │ + this.f = null; │ │ │ │ + this.g = null; │ │ │ │ + this.h = null; │ │ │ │ + this.b = new ConcurrentHashMap(); │ │ │ │ + this.a = System.currentTimeMillis(); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private b a(final Y y) { │ │ │ │ + return new b(Crashlytics.p, Crashlytics.k, Crashlytics.o, Crashlytics.n, ab.a(new String[] { this.i }), Crashlytics.m, ai.a(Crashlytics.l).a(), Crashlytics.q, "0", y); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static void a(final int n, final String s, final String s2) { │ │ │ │ + final Crashlytics instance = getInstance(); │ │ │ │ + if (instance == null || instance.d == null) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a(s, "Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging messages.", (Throwable)null); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + instance.d.a(System.currentTimeMillis() - instance.a, ab.b(n) + "/" + s + " " + s2); │ │ │ │ } │ │ │ │ - return a; │ │ │ │ } │ │ │ │ │ │ │ │ - private static String a(String s) { │ │ │ │ - final int n = 1024; │ │ │ │ - if (s != null) { │ │ │ │ - s = s.trim(); │ │ │ │ - if (s.length() > n) { │ │ │ │ - s = s.substring(0, n); │ │ │ │ - } │ │ │ │ + static void a(final String s) { │ │ │ │ + final D d = (D)com.crashlytics.android.internal.v.a().a((Class)D.class); │ │ │ │ + if (d != null) { │ │ │ │ + d.a(new ag(s)); │ │ │ │ } │ │ │ │ - return s; │ │ │ │ } │ │ │ │ │ │ │ │ private void a(final String p0, final Context p1, final float p2) { │ │ │ │ // │ │ │ │ // This method could not be decompiled. │ │ │ │ // │ │ │ │ // Original Bytecode: │ │ │ │ // │ │ │ │ - // 1: monitorenter │ │ │ │ - // 2: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 5: astore 4 │ │ │ │ - // 7: aload 4 │ │ │ │ - // 9: ifnull 25 │ │ │ │ - // 12: ldc_w "Crashlytics already started, ignoring re-initialization attempt." │ │ │ │ - // 15: astore 4 │ │ │ │ - // 17: aload 4 │ │ │ │ - // 19: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 22: aload_0 │ │ │ │ - // 23: monitorexit │ │ │ │ - // 24: return │ │ │ │ - // 25: aload_1 │ │ │ │ - // 26: putstatic com/crashlytics/android/Crashlytics.u:Ljava/lang/String; │ │ │ │ - // 29: new Landroid/content/ContextWrapper; │ │ │ │ - // 32: astore 4 │ │ │ │ - // 34: aload_2 │ │ │ │ - // 35: invokevirtual android/content/Context.getApplicationContext:()Landroid/content/Context; │ │ │ │ - // 38: astore 5 │ │ │ │ - // 40: aload 4 │ │ │ │ - // 42: aload 5 │ │ │ │ - // 44: invokespecial android/content/ContextWrapper.:(Landroid/content/Context;)V │ │ │ │ - // 47: aload 4 │ │ │ │ - // 49: putstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 52: iconst_4 │ │ │ │ - // 53: istore 6 │ │ │ │ - // 55: ldc_w "Crashlytics" │ │ │ │ - // 58: astore 5 │ │ │ │ - // 60: new Ljava/lang/StringBuilder; │ │ │ │ - // 63: astore 7 │ │ │ │ - // 65: ldc_w "Initializing Crashlytics " │ │ │ │ - // 68: astore 8 │ │ │ │ - // 70: aload 7 │ │ │ │ - // 72: aload 8 │ │ │ │ - // 74: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 77: invokestatic com/crashlytics/android/Crashlytics.getCrashlyticsVersion:()Ljava/lang/String; │ │ │ │ - // 80: astore 8 │ │ │ │ - // 82: aload 7 │ │ │ │ - // 84: aload 8 │ │ │ │ - // 86: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 89: astore 7 │ │ │ │ - // 91: aload 7 │ │ │ │ - // 93: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 96: astore 7 │ │ │ │ - // 98: iload 6 │ │ │ │ - // 100: aload 5 │ │ │ │ - // 102: aload 7 │ │ │ │ - // 104: invokestatic com/crashlytics/android/aB.a:(ILjava/lang/String;Ljava/lang/String;)V │ │ │ │ - // 107: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 110: astore 4 │ │ │ │ - // 112: aload 4 │ │ │ │ - // 114: invokevirtual android/content/ContextWrapper.getPackageName:()Ljava/lang/String; │ │ │ │ - // 117: astore 4 │ │ │ │ - // 119: aload 4 │ │ │ │ - // 121: putstatic com/crashlytics/android/Crashlytics.p:Ljava/lang/String; │ │ │ │ - // 124: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 127: astore 4 │ │ │ │ - // 129: aload 4 │ │ │ │ - // 131: invokevirtual android/content/ContextWrapper.getPackageManager:()Landroid/content/pm/PackageManager; │ │ │ │ - // 134: astore 4 │ │ │ │ - // 136: getstatic com/crashlytics/android/Crashlytics.p:Ljava/lang/String; │ │ │ │ - // 139: astore 5 │ │ │ │ - // 141: aload 4 │ │ │ │ - // 143: aload 5 │ │ │ │ - // 145: invokevirtual android/content/pm/PackageManager.getInstallerPackageName:(Ljava/lang/String;)Ljava/lang/String; │ │ │ │ - // 148: astore 5 │ │ │ │ - // 150: aload 5 │ │ │ │ - // 152: putstatic com/crashlytics/android/Crashlytics.q:Ljava/lang/String; │ │ │ │ - // 155: new Ljava/lang/StringBuilder; │ │ │ │ - // 158: astore 5 │ │ │ │ - // 160: ldc_w "Installer package name is: " │ │ │ │ - // 163: astore 7 │ │ │ │ - // 165: aload 5 │ │ │ │ - // 167: aload 7 │ │ │ │ - // 169: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 172: getstatic com/crashlytics/android/Crashlytics.q:Ljava/lang/String; │ │ │ │ - // 175: astore 7 │ │ │ │ - // 177: aload 5 │ │ │ │ - // 179: aload 7 │ │ │ │ - // 181: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 184: astore 5 │ │ │ │ - // 186: aload 5 │ │ │ │ - // 188: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 191: astore 5 │ │ │ │ - // 193: aload 5 │ │ │ │ - // 195: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 198: getstatic com/crashlytics/android/Crashlytics.p:Ljava/lang/String; │ │ │ │ - // 201: astore 5 │ │ │ │ - // 203: iconst_0 │ │ │ │ - // 204: istore 9 │ │ │ │ - // 206: aconst_null │ │ │ │ - // 207: astore 7 │ │ │ │ - // 209: aload 4 │ │ │ │ - // 211: aload 5 │ │ │ │ - // 213: iconst_0 │ │ │ │ - // 214: invokevirtual android/content/pm/PackageManager.getPackageInfo:(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; │ │ │ │ - // 217: astore 4 │ │ │ │ - // 219: aload 4 │ │ │ │ - // 221: getfield android/content/pm/PackageInfo.versionCode:I │ │ │ │ - // 224: istore 10 │ │ │ │ - // 226: iload 10 │ │ │ │ - // 228: invokestatic java/lang/Integer.toString:(I)Ljava/lang/String; │ │ │ │ - // 231: astore 5 │ │ │ │ - // 233: aload 5 │ │ │ │ - // 235: putstatic com/crashlytics/android/Crashlytics.s:Ljava/lang/String; │ │ │ │ - // 238: aload 4 │ │ │ │ - // 240: getfield android/content/pm/PackageInfo.versionName:Ljava/lang/String; │ │ │ │ - // 243: astore 5 │ │ │ │ - // 245: aload 5 │ │ │ │ - // 247: ifnonnull 856 │ │ │ │ - // 250: ldc_w "0.0" │ │ │ │ - // 253: astore 4 │ │ │ │ - // 255: aload 4 │ │ │ │ - // 257: putstatic com/crashlytics/android/Crashlytics.t:Ljava/lang/String; │ │ │ │ - // 260: aload_2 │ │ │ │ - // 261: invokevirtual android/content/Context.getPackageManager:()Landroid/content/pm/PackageManager; │ │ │ │ - // 264: astore 4 │ │ │ │ - // 266: aload_2 │ │ │ │ - // 267: invokevirtual android/content/Context.getApplicationInfo:()Landroid/content/pm/ApplicationInfo; │ │ │ │ - // 270: astore 5 │ │ │ │ - // 272: aload 4 │ │ │ │ - // 274: aload 5 │ │ │ │ - // 276: invokevirtual android/content/pm/PackageManager.getApplicationLabel:(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; │ │ │ │ - // 279: astore 4 │ │ │ │ - // 281: aload 4 │ │ │ │ - // 283: invokevirtual java/lang/Object.toString:()Ljava/lang/String; │ │ │ │ - // 286: astore 4 │ │ │ │ - // 288: aload 4 │ │ │ │ - // 290: putstatic com/crashlytics/android/Crashlytics.r:Ljava/lang/String; │ │ │ │ - // 293: aload_2 │ │ │ │ - // 294: invokevirtual android/content/Context.getApplicationInfo:()Landroid/content/pm/ApplicationInfo; │ │ │ │ - // 297: astore 4 │ │ │ │ - // 299: aload 4 │ │ │ │ - // 301: getfield android/content/pm/ApplicationInfo.targetSdkVersion:I │ │ │ │ - // 304: istore 6 │ │ │ │ - // 306: iload 6 │ │ │ │ - // 308: invokestatic java/lang/Integer.toString:(I)Ljava/lang/String; │ │ │ │ - // 311: astore 4 │ │ │ │ - // 313: aload 4 │ │ │ │ - // 315: putstatic com/crashlytics/android/Crashlytics.v:Ljava/lang/String; │ │ │ │ - // 318: iconst_0 │ │ │ │ - // 319: istore 6 │ │ │ │ - // 321: aconst_null │ │ │ │ - // 322: astore 4 │ │ │ │ - // 324: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 327: astore 5 │ │ │ │ - // 329: ldc_w "com.crashlytics.android.build_id" │ │ │ │ - // 332: astore 7 │ │ │ │ - // 334: ldc_w "string" │ │ │ │ - // 337: astore 8 │ │ │ │ - // 339: aload 5 │ │ │ │ - // 341: aload 7 │ │ │ │ - // 343: aload 8 │ │ │ │ - // 345: invokestatic com/crashlytics/android/aB.a:(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ │ │ │ - // 348: istore 10 │ │ │ │ - // 350: iload 10 │ │ │ │ - // 352: ifeq 414 │ │ │ │ - // 355: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 358: astore 4 │ │ │ │ - // 360: aload 4 │ │ │ │ - // 362: invokevirtual android/content/ContextWrapper.getResources:()Landroid/content/res/Resources; │ │ │ │ - // 365: astore 4 │ │ │ │ - // 367: aload 4 │ │ │ │ - // 369: iload 10 │ │ │ │ - // 371: invokevirtual android/content/res/Resources.getString:(I)Ljava/lang/String; │ │ │ │ - // 374: astore 4 │ │ │ │ - // 376: new Ljava/lang/StringBuilder; │ │ │ │ - // 379: astore 5 │ │ │ │ - // 381: ldc_w "Build ID is: " │ │ │ │ - // 384: astore 7 │ │ │ │ - // 386: aload 5 │ │ │ │ - // 388: aload 7 │ │ │ │ - // 390: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 393: aload 5 │ │ │ │ - // 395: aload 4 │ │ │ │ - // 397: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 400: astore 5 │ │ │ │ - // 402: aload 5 │ │ │ │ - // 404: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 407: astore 5 │ │ │ │ - // 409: aload 5 │ │ │ │ - // 411: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 414: aload_0 │ │ │ │ - // 415: aload 4 │ │ │ │ - // 417: putfield com/crashlytics/android/Crashlytics.m:Ljava/lang/String; │ │ │ │ - // 420: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 423: astore 4 │ │ │ │ - // 425: new Ljava/io/File; │ │ │ │ - // 428: astore 5 │ │ │ │ - // 430: aload 4 │ │ │ │ - // 432: invokevirtual android/content/Context.getFilesDir:()Ljava/io/File; │ │ │ │ - // 435: astore 4 │ │ │ │ - // 437: ldc_w "com.crashlytics.sdk.android" │ │ │ │ - // 440: astore 7 │ │ │ │ - // 442: aload 5 │ │ │ │ - // 444: aload 4 │ │ │ │ - // 446: aload 7 │ │ │ │ - // 448: invokespecial java/io/File.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 451: aload 5 │ │ │ │ - // 453: putstatic com/crashlytics/android/Crashlytics.w:Ljava/io/File; │ │ │ │ - // 456: aload 5 │ │ │ │ - // 458: invokevirtual java/io/File.exists:()Z │ │ │ │ - // 461: istore 6 │ │ │ │ - // 463: iload 6 │ │ │ │ - // 465: ifne 479 │ │ │ │ - // 468: getstatic com/crashlytics/android/Crashlytics.w:Ljava/io/File; │ │ │ │ - // 471: astore 4 │ │ │ │ - // 473: aload 4 │ │ │ │ - // 475: invokevirtual java/io/File.mkdirs:()Z │ │ │ │ - // 478: pop │ │ │ │ - // 479: new Lcom/crashlytics/android/IdManager; │ │ │ │ - // 482: astore 4 │ │ │ │ - // 484: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 487: astore 5 │ │ │ │ - // 489: aload 4 │ │ │ │ - // 491: aload 5 │ │ │ │ - // 493: invokespecial com/crashlytics/android/IdManager.:(Landroid/content/Context;)V │ │ │ │ - // 496: aload_0 │ │ │ │ - // 497: aload 4 │ │ │ │ - // 499: putfield com/crashlytics/android/Crashlytics.i:Lcom/crashlytics/android/IdManager; │ │ │ │ - // 502: aload_0 │ │ │ │ - // 503: getfield com/crashlytics/android/Crashlytics.i:Lcom/crashlytics/android/IdManager; │ │ │ │ - // 506: astore 4 │ │ │ │ - // 508: aload 4 │ │ │ │ - // 510: invokevirtual com/crashlytics/android/IdManager.g:()Ljava/lang/String; │ │ │ │ - // 513: pop │ │ │ │ - // 514: new Lcom/crashlytics/android/j; │ │ │ │ - // 517: astore 4 │ │ │ │ - // 519: aload_0 │ │ │ │ - // 520: getfield com/crashlytics/android/Crashlytics.m:Ljava/lang/String; │ │ │ │ - // 523: astore 5 │ │ │ │ - // 525: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 528: astore 7 │ │ │ │ - // 530: ldc_w "com.crashlytics.RequireBuildId" │ │ │ │ - // 533: astore 8 │ │ │ │ - // 535: iconst_1 │ │ │ │ - // 536: istore 11 │ │ │ │ - // 538: aload 7 │ │ │ │ - // 540: aload 8 │ │ │ │ - // 542: iload 11 │ │ │ │ - // 544: invokestatic com/crashlytics/android/aB.a:(Landroid/content/Context;Ljava/lang/String;Z)Z │ │ │ │ - // 547: istore 9 │ │ │ │ - // 549: aload 4 │ │ │ │ - // 551: aload 5 │ │ │ │ - // 553: iload 9 │ │ │ │ - // 555: invokespecial com/crashlytics/android/j.:(Ljava/lang/String;Z)V │ │ │ │ - // 558: getstatic com/crashlytics/android/Crashlytics.p:Ljava/lang/String; │ │ │ │ - // 561: astore 5 │ │ │ │ - // 563: aload 4 │ │ │ │ - // 565: aload_1 │ │ │ │ - // 566: aload 5 │ │ │ │ - // 568: invokevirtual com/crashlytics/android/j.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ - // 571: ldc_w "Installing exception handler..." │ │ │ │ - // 574: astore 4 │ │ │ │ - // 576: aload 4 │ │ │ │ - // 578: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 581: new Lcom/crashlytics/android/E; │ │ │ │ - // 584: astore 4 │ │ │ │ - // 586: invokestatic java/lang/Thread.getDefaultUncaughtExceptionHandler:()Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ - // 589: astore 5 │ │ │ │ - // 591: aload_0 │ │ │ │ - // 592: getfield com/crashlytics/android/Crashlytics.g:Lcom/crashlytics/android/CrashlyticsListener; │ │ │ │ - // 595: astore 7 │ │ │ │ - // 597: aload_0 │ │ │ │ - // 598: getfield com/crashlytics/android/Crashlytics.m:Ljava/lang/String; │ │ │ │ - // 601: astore 8 │ │ │ │ - // 603: aload 4 │ │ │ │ - // 605: aload 5 │ │ │ │ - // 607: aload 7 │ │ │ │ - // 609: aload 8 │ │ │ │ - // 611: invokespecial com/crashlytics/android/E.:(Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/lang/String;)V │ │ │ │ - // 614: aload_0 │ │ │ │ - // 615: aload 4 │ │ │ │ - // 617: putfield com/crashlytics/android/Crashlytics.h:Lcom/crashlytics/android/E; │ │ │ │ - // 620: aload_0 │ │ │ │ - // 621: getfield com/crashlytics/android/Crashlytics.h:Lcom/crashlytics/android/E; │ │ │ │ - // 624: astore 4 │ │ │ │ - // 626: aload 4 │ │ │ │ - // 628: invokevirtual com/crashlytics/android/E.d:()V │ │ │ │ - // 631: aload_0 │ │ │ │ - // 632: getfield com/crashlytics/android/Crashlytics.h:Lcom/crashlytics/android/E; │ │ │ │ - // 635: astore 4 │ │ │ │ - // 637: aload 4 │ │ │ │ - // 639: invokestatic java/lang/Thread.setDefaultUncaughtExceptionHandler:(Ljava/lang/Thread$UncaughtExceptionHandler;)V │ │ │ │ - // 642: ldc_w "Successfully installed exception handler." │ │ │ │ - // 645: astore 4 │ │ │ │ - // 647: aload 4 │ │ │ │ - // 649: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 652: new Ljava/io/File; │ │ │ │ - // 655: astore 7 │ │ │ │ - // 657: getstatic com/crashlytics/android/Crashlytics.w:Ljava/io/File; │ │ │ │ - // 660: astore 4 │ │ │ │ - // 662: ldc_w "initialization_marker" │ │ │ │ - // 665: astore 5 │ │ │ │ - // 667: aload 7 │ │ │ │ - // 669: aload 4 │ │ │ │ - // 671: aload 5 │ │ │ │ - // 673: invokespecial java/io/File.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 676: aload 7 │ │ │ │ - // 678: invokevirtual java/io/File.exists:()Z │ │ │ │ - // 681: istore 12 │ │ │ │ - // 683: iload 12 │ │ │ │ - // 685: ifeq 698 │ │ │ │ - // 688: ldc_w "Crashlytics detected incomplete initialization on previous app launch. Will initialize synchronously." │ │ │ │ - // 691: astore 4 │ │ │ │ - // 693: aload 4 │ │ │ │ - // 695: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 698: new Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 701: astore 8 │ │ │ │ - // 703: iconst_1 │ │ │ │ - // 704: istore 6 │ │ │ │ - // 706: aload 8 │ │ │ │ - // 708: iload 6 │ │ │ │ - // 710: invokespecial java/util/concurrent/CountDownLatch.:(I)V │ │ │ │ - // 713: new Ljava/util/concurrent/CountDownLatch; │ │ │ │ - // 716: astore 13 │ │ │ │ - // 718: iconst_1 │ │ │ │ - // 719: istore 6 │ │ │ │ - // 721: aload 13 │ │ │ │ - // 723: iload 6 │ │ │ │ - // 725: invokespecial java/util/concurrent/CountDownLatch.:(I)V │ │ │ │ - // 728: new Ljava/lang/Thread; │ │ │ │ - // 731: astore 14 │ │ │ │ - // 733: new Lcom/crashlytics/android/A; │ │ │ │ - // 736: astore 4 │ │ │ │ - // 738: aload_0 │ │ │ │ - // 739: astore 5 │ │ │ │ - // 741: aload 4 │ │ │ │ - // 743: aload_0 │ │ │ │ - // 744: aload 7 │ │ │ │ - // 746: aload 8 │ │ │ │ - // 748: aload_2 │ │ │ │ - // 749: fload_3 │ │ │ │ - // 750: aload 13 │ │ │ │ - // 752: invokespecial com/crashlytics/android/A.:(Lcom/crashlytics/android/Crashlytics;Ljava/io/File;Ljava/util/concurrent/CountDownLatch;Landroid/content/Context;FLjava/util/concurrent/CountDownLatch;)V │ │ │ │ - // 755: ldc_w "Crashlytics Initializer" │ │ │ │ - // 758: astore 5 │ │ │ │ - // 760: aload 14 │ │ │ │ - // 762: aload 4 │ │ │ │ - // 764: aload 5 │ │ │ │ - // 766: invokespecial java/lang/Thread.:(Ljava/lang/Runnable;Ljava/lang/String;)V │ │ │ │ - // 769: aload 14 │ │ │ │ - // 771: invokevirtual java/lang/Thread.start:()V │ │ │ │ - // 774: ldc2_w 500 │ │ │ │ - // 777: lstore 15 │ │ │ │ - // 779: getstatic java/util/concurrent/TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ │ │ │ - // 782: astore 7 │ │ │ │ - // 784: aload 8 │ │ │ │ - // 786: lload 15 │ │ │ │ - // 788: aload 7 │ │ │ │ - // 790: invokevirtual java/util/concurrent/CountDownLatch.await:(JLjava/util/concurrent/TimeUnit;)Z │ │ │ │ - // 793: pop │ │ │ │ - // 794: iload 12 │ │ │ │ - // 796: ifeq 22 │ │ │ │ - // 799: ldc2_w 3500 │ │ │ │ - // 802: lstore 15 │ │ │ │ - // 804: getstatic java/util/concurrent/TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ │ │ │ - // 807: astore 7 │ │ │ │ - // 809: aload 13 │ │ │ │ - // 811: lload 15 │ │ │ │ - // 813: aload 7 │ │ │ │ - // 815: invokevirtual java/util/concurrent/CountDownLatch.await:(JLjava/util/concurrent/TimeUnit;)Z │ │ │ │ - // 818: pop │ │ │ │ - // 819: goto 22 │ │ │ │ - // 822: astore 4 │ │ │ │ - // 824: iconst_5 │ │ │ │ - // 825: istore 6 │ │ │ │ - // 827: ldc_w "Crashlytics" │ │ │ │ - // 830: astore 5 │ │ │ │ - // 832: ldc_w "Crashlytics initialization was not completed in the allotted time." │ │ │ │ - // 835: astore 7 │ │ │ │ - // 837: iload 6 │ │ │ │ - // 839: aload 5 │ │ │ │ - // 841: aload 7 │ │ │ │ - // 843: invokestatic com/crashlytics/android/aB.a:(ILjava/lang/String;Ljava/lang/String;)V │ │ │ │ - // 846: goto 22 │ │ │ │ - // 849: astore 4 │ │ │ │ - // 851: aload_0 │ │ │ │ - // 852: monitorexit │ │ │ │ - // 853: aload 4 │ │ │ │ - // 855: athrow │ │ │ │ - // 856: aload 4 │ │ │ │ - // 858: getfield android/content/pm/PackageInfo.versionName:Ljava/lang/String; │ │ │ │ - // 861: astore 4 │ │ │ │ - // 863: goto 255 │ │ │ │ - // 866: astore 4 │ │ │ │ - // 868: ldc_w "Error setting up app properties" │ │ │ │ - // 871: astore 5 │ │ │ │ - // 873: aload 5 │ │ │ │ - // 875: aload 4 │ │ │ │ - // 877: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 880: goto 479 │ │ │ │ - // 883: astore 4 │ │ │ │ - // 885: ldc_w "There was a problem installing the exception handler." │ │ │ │ - // 888: astore 5 │ │ │ │ - // 890: aload 5 │ │ │ │ - // 892: aload 4 │ │ │ │ - // 894: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 897: goto 652 │ │ │ │ - // 900: astore 4 │ │ │ │ - // 902: iconst_5 │ │ │ │ - // 903: istore 6 │ │ │ │ - // 905: ldc_w "Crashlytics" │ │ │ │ - // 908: astore 5 │ │ │ │ - // 910: ldc_w "Crashlytics initialization marker file was not created in the allotted time." │ │ │ │ - // 913: astore 7 │ │ │ │ - // 915: iload 6 │ │ │ │ - // 917: aload 5 │ │ │ │ - // 919: aload 7 │ │ │ │ - // 921: invokestatic com/crashlytics/android/aB.a:(ILjava/lang/String;Ljava/lang/String;)V │ │ │ │ - // 924: goto 794 │ │ │ │ + // 1: istore 4 │ │ │ │ + // 3: aconst_null │ │ │ │ + // 4: astore 5 │ │ │ │ + // 6: aload_0 │ │ │ │ + // 7: monitorenter │ │ │ │ + // 8: getstatic com/crashlytics/android/Crashlytics.j:Landroid/content/ContextWrapper; │ │ │ │ + // 11: astore 6 │ │ │ │ + // 13: aload 6 │ │ │ │ + // 15: ifnull 52 │ │ │ │ + // 18: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 21: astore 6 │ │ │ │ + // 23: aload 6 │ │ │ │ + // 25: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 28: astore 6 │ │ │ │ + // 30: ldc "Crashlytics" │ │ │ │ + // 32: astore 5 │ │ │ │ + // 34: ldc "Crashlytics already started, ignoring re-initialization attempt." │ │ │ │ + // 36: astore 7 │ │ │ │ + // 38: aload 6 │ │ │ │ + // 40: aload 5 │ │ │ │ + // 42: aload 7 │ │ │ │ + // 44: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 49: aload_0 │ │ │ │ + // 50: monitorexit │ │ │ │ + // 51: return │ │ │ │ + // 52: aload_1 │ │ │ │ + // 53: putstatic com/crashlytics/android/Crashlytics.p:Ljava/lang/String; │ │ │ │ + // 56: new Landroid/content/ContextWrapper; │ │ │ │ + // 59: astore 6 │ │ │ │ + // 61: aload_2 │ │ │ │ + // 62: invokevirtual android/content/Context.getApplicationContext:()Landroid/content/Context; │ │ │ │ + // 65: astore 7 │ │ │ │ + // 67: aload 6 │ │ │ │ + // 69: aload 7 │ │ │ │ + // 71: invokespecial android/content/ContextWrapper.:(Landroid/content/Context;)V │ │ │ │ + // 74: aload 6 │ │ │ │ + // 76: putstatic com/crashlytics/android/Crashlytics.j:Landroid/content/ContextWrapper; │ │ │ │ + // 79: new Lcom/crashlytics/android/internal/av; │ │ │ │ + // 82: astore 6 │ │ │ │ + // 84: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 87: astore 7 │ │ │ │ + // 89: aload 7 │ │ │ │ + // 91: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 94: astore 7 │ │ │ │ + // 96: aload 6 │ │ │ │ + // 98: aload 7 │ │ │ │ + // 100: invokespecial com/crashlytics/android/internal/av.:(Lcom/crashlytics/android/internal/q;)V │ │ │ │ + // 103: aload 6 │ │ │ │ + // 105: putstatic com/crashlytics/android/Crashlytics.t:Lcom/crashlytics/android/internal/av; │ │ │ │ + // 108: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 111: astore 6 │ │ │ │ + // 113: aload 6 │ │ │ │ + // 115: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 118: astore 6 │ │ │ │ + // 120: ldc "Crashlytics" │ │ │ │ + // 122: astore 7 │ │ │ │ + // 124: new Ljava/lang/StringBuilder; │ │ │ │ + // 127: astore 8 │ │ │ │ + // 129: ldc "Initializing Crashlytics " │ │ │ │ + // 131: astore 9 │ │ │ │ + // 133: aload 8 │ │ │ │ + // 135: aload 9 │ │ │ │ + // 137: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 140: invokestatic com/crashlytics/android/Crashlytics.getCrashlyticsVersion:()Ljava/lang/String; │ │ │ │ + // 143: astore 9 │ │ │ │ + // 145: aload 8 │ │ │ │ + // 147: aload 9 │ │ │ │ + // 149: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 152: astore 8 │ │ │ │ + // 154: aload 8 │ │ │ │ + // 156: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 159: astore 8 │ │ │ │ + // 161: aload 6 │ │ │ │ + // 163: aload 7 │ │ │ │ + // 165: aload 8 │ │ │ │ + // 167: invokeinterface com/crashlytics/android/internal/q.b:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 172: getstatic com/crashlytics/android/Crashlytics.j:Landroid/content/ContextWrapper; │ │ │ │ + // 175: astore 6 │ │ │ │ + // 177: aload 6 │ │ │ │ + // 179: invokevirtual android/content/ContextWrapper.getPackageName:()Ljava/lang/String; │ │ │ │ + // 182: astore 6 │ │ │ │ + // 184: aload 6 │ │ │ │ + // 186: putstatic com/crashlytics/android/Crashlytics.k:Ljava/lang/String; │ │ │ │ + // 189: getstatic com/crashlytics/android/Crashlytics.j:Landroid/content/ContextWrapper; │ │ │ │ + // 192: astore 6 │ │ │ │ + // 194: aload 6 │ │ │ │ + // 196: invokevirtual android/content/ContextWrapper.getPackageManager:()Landroid/content/pm/PackageManager; │ │ │ │ + // 199: astore 6 │ │ │ │ + // 201: getstatic com/crashlytics/android/Crashlytics.k:Ljava/lang/String; │ │ │ │ + // 204: astore 7 │ │ │ │ + // 206: aload 6 │ │ │ │ + // 208: aload 7 │ │ │ │ + // 210: invokevirtual android/content/pm/PackageManager.getInstallerPackageName:(Ljava/lang/String;)Ljava/lang/String; │ │ │ │ + // 213: astore 7 │ │ │ │ + // 215: aload 7 │ │ │ │ + // 217: putstatic com/crashlytics/android/Crashlytics.l:Ljava/lang/String; │ │ │ │ + // 220: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 223: astore 7 │ │ │ │ + // 225: aload 7 │ │ │ │ + // 227: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 230: astore 7 │ │ │ │ + // 232: ldc "Crashlytics" │ │ │ │ + // 234: astore 8 │ │ │ │ + // 236: new Ljava/lang/StringBuilder; │ │ │ │ + // 239: astore 9 │ │ │ │ + // 241: ldc "Installer package name is: " │ │ │ │ + // 243: astore 10 │ │ │ │ + // 245: aload 9 │ │ │ │ + // 247: aload 10 │ │ │ │ + // 249: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 252: getstatic com/crashlytics/android/Crashlytics.l:Ljava/lang/String; │ │ │ │ + // 255: astore 10 │ │ │ │ + // 257: aload 9 │ │ │ │ + // 259: aload 10 │ │ │ │ + // 261: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 264: astore 9 │ │ │ │ + // 266: aload 9 │ │ │ │ + // 268: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 271: astore 9 │ │ │ │ + // 273: aload 7 │ │ │ │ + // 275: aload 8 │ │ │ │ + // 277: aload 9 │ │ │ │ + // 279: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 284: getstatic com/crashlytics/android/Crashlytics.k:Ljava/lang/String; │ │ │ │ + // 287: astore 7 │ │ │ │ + // 289: iconst_0 │ │ │ │ + // 290: istore 11 │ │ │ │ + // 292: aconst_null │ │ │ │ + // 293: astore 8 │ │ │ │ + // 295: aload 6 │ │ │ │ + // 297: aload 7 │ │ │ │ + // 299: iconst_0 │ │ │ │ + // 300: invokevirtual android/content/pm/PackageManager.getPackageInfo:(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; │ │ │ │ + // 303: astore 6 │ │ │ │ + // 305: aload 6 │ │ │ │ + // 307: getfield android/content/pm/PackageInfo.versionCode:I │ │ │ │ + // 310: istore 12 │ │ │ │ + // 312: iload 12 │ │ │ │ + // 314: invokestatic java/lang/Integer.toString:(I)Ljava/lang/String; │ │ │ │ + // 317: astore 7 │ │ │ │ + // 319: aload 7 │ │ │ │ + // 321: putstatic com/crashlytics/android/Crashlytics.n:Ljava/lang/String; │ │ │ │ + // 324: aload 6 │ │ │ │ + // 326: getfield android/content/pm/PackageInfo.versionName:Ljava/lang/String; │ │ │ │ + // 329: astore 7 │ │ │ │ + // 331: aload 7 │ │ │ │ + // 333: ifnonnull 867 │ │ │ │ + // 336: ldc "0.0" │ │ │ │ + // 338: astore 6 │ │ │ │ + // 340: aload 6 │ │ │ │ + // 342: putstatic com/crashlytics/android/Crashlytics.o:Ljava/lang/String; │ │ │ │ + // 345: aload_2 │ │ │ │ + // 346: invokevirtual android/content/Context.getPackageManager:()Landroid/content/pm/PackageManager; │ │ │ │ + // 349: astore 6 │ │ │ │ + // 351: aload_2 │ │ │ │ + // 352: invokevirtual android/content/Context.getApplicationInfo:()Landroid/content/pm/ApplicationInfo; │ │ │ │ + // 355: astore 7 │ │ │ │ + // 357: aload 6 │ │ │ │ + // 359: aload 7 │ │ │ │ + // 361: invokevirtual android/content/pm/PackageManager.getApplicationLabel:(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; │ │ │ │ + // 364: astore 6 │ │ │ │ + // 366: aload 6 │ │ │ │ + // 368: invokeinterface java/lang/CharSequence.toString:()Ljava/lang/String; │ │ │ │ + // 373: astore 6 │ │ │ │ + // 375: aload 6 │ │ │ │ + // 377: putstatic com/crashlytics/android/Crashlytics.m:Ljava/lang/String; │ │ │ │ + // 380: aload_2 │ │ │ │ + // 381: invokevirtual android/content/Context.getApplicationInfo:()Landroid/content/pm/ApplicationInfo; │ │ │ │ + // 384: astore 6 │ │ │ │ + // 386: aload 6 │ │ │ │ + // 388: getfield android/content/pm/ApplicationInfo.targetSdkVersion:I │ │ │ │ + // 391: istore 13 │ │ │ │ + // 393: iload 13 │ │ │ │ + // 395: invokestatic java/lang/Integer.toString:(I)Ljava/lang/String; │ │ │ │ + // 398: astore 6 │ │ │ │ + // 400: aload 6 │ │ │ │ + // 402: putstatic com/crashlytics/android/Crashlytics.q:Ljava/lang/String; │ │ │ │ + // 405: aload_2 │ │ │ │ + // 406: invokestatic com/crashlytics/android/internal/ab.i:(Landroid/content/Context;)Ljava/lang/String; │ │ │ │ + // 409: astore 6 │ │ │ │ + // 411: aload_0 │ │ │ │ + // 412: aload 6 │ │ │ │ + // 414: putfield com/crashlytics/android/Crashlytics.i:Ljava/lang/String; │ │ │ │ + // 417: new Lcom/crashlytics/android/internal/ao; │ │ │ │ + // 420: astore 6 │ │ │ │ + // 422: getstatic com/crashlytics/android/Crashlytics.j:Landroid/content/ContextWrapper; │ │ │ │ + // 425: astore 7 │ │ │ │ + // 427: aload 6 │ │ │ │ + // 429: aload 7 │ │ │ │ + // 431: invokespecial com/crashlytics/android/internal/ao.:(Landroid/content/Context;)V │ │ │ │ + // 434: aload_0 │ │ │ │ + // 435: aload 6 │ │ │ │ + // 437: putfield com/crashlytics/android/Crashlytics.e:Lcom/crashlytics/android/internal/ao; │ │ │ │ + // 440: aload_0 │ │ │ │ + // 441: getfield com/crashlytics/android/Crashlytics.e:Lcom/crashlytics/android/internal/ao; │ │ │ │ + // 444: astore 6 │ │ │ │ + // 446: aload 6 │ │ │ │ + // 448: invokevirtual com/crashlytics/android/internal/ao.h:()Ljava/lang/String; │ │ │ │ + // 451: pop │ │ │ │ + // 452: new Lcom/crashlytics/android/c; │ │ │ │ + // 455: astore 6 │ │ │ │ + // 457: aload_0 │ │ │ │ + // 458: getfield com/crashlytics/android/Crashlytics.i:Ljava/lang/String; │ │ │ │ + // 461: astore 7 │ │ │ │ + // 463: getstatic com/crashlytics/android/Crashlytics.j:Landroid/content/ContextWrapper; │ │ │ │ + // 466: astore 8 │ │ │ │ + // 468: ldc_w "com.crashlytics.RequireBuildId" │ │ │ │ + // 471: astore 9 │ │ │ │ + // 473: iconst_1 │ │ │ │ + // 474: istore 14 │ │ │ │ + // 476: aload 8 │ │ │ │ + // 478: aload 9 │ │ │ │ + // 480: iload 14 │ │ │ │ + // 482: invokestatic com/crashlytics/android/internal/ab.a:(Landroid/content/Context;Ljava/lang/String;Z)Z │ │ │ │ + // 485: istore 11 │ │ │ │ + // 487: aload 6 │ │ │ │ + // 489: aload 7 │ │ │ │ + // 491: iload 11 │ │ │ │ + // 493: invokespecial com/crashlytics/android/c.:(Ljava/lang/String;Z)V │ │ │ │ + // 496: getstatic com/crashlytics/android/Crashlytics.k:Ljava/lang/String; │ │ │ │ + // 499: astore 7 │ │ │ │ + // 501: aload 6 │ │ │ │ + // 503: aload_1 │ │ │ │ + // 504: aload 7 │ │ │ │ + // 506: invokevirtual com/crashlytics/android/c.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 509: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 512: astore 6 │ │ │ │ + // 514: aload 6 │ │ │ │ + // 516: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 519: astore 6 │ │ │ │ + // 521: ldc "Crashlytics" │ │ │ │ + // 523: astore 7 │ │ │ │ + // 525: ldc_w "Installing exception handler..." │ │ │ │ + // 528: astore 8 │ │ │ │ + // 530: aload 6 │ │ │ │ + // 532: aload 7 │ │ │ │ + // 534: aload 8 │ │ │ │ + // 536: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 541: new Lcom/crashlytics/android/v; │ │ │ │ + // 544: astore 6 │ │ │ │ + // 546: invokestatic java/lang/Thread.getDefaultUncaughtExceptionHandler:()Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ + // 549: astore 7 │ │ │ │ + // 551: aload_0 │ │ │ │ + // 552: getfield com/crashlytics/android/Crashlytics.c:Lcom/crashlytics/android/CrashlyticsListener; │ │ │ │ + // 555: astore 8 │ │ │ │ + // 557: aload_0 │ │ │ │ + // 558: getfield com/crashlytics/android/Crashlytics.i:Ljava/lang/String; │ │ │ │ + // 561: astore 9 │ │ │ │ + // 563: aload 6 │ │ │ │ + // 565: aload 7 │ │ │ │ + // 567: aload 8 │ │ │ │ + // 569: aload 9 │ │ │ │ + // 571: invokespecial com/crashlytics/android/v.:(Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/lang/String;)V │ │ │ │ + // 574: aload_0 │ │ │ │ + // 575: aload 6 │ │ │ │ + // 577: putfield com/crashlytics/android/Crashlytics.d:Lcom/crashlytics/android/v; │ │ │ │ + // 580: aload_0 │ │ │ │ + // 581: getfield com/crashlytics/android/Crashlytics.d:Lcom/crashlytics/android/v; │ │ │ │ + // 584: astore 6 │ │ │ │ + // 586: aload 6 │ │ │ │ + // 588: invokevirtual com/crashlytics/android/v.f:()Z │ │ │ │ + // 591: istore 4 │ │ │ │ + // 593: aload_0 │ │ │ │ + // 594: getfield com/crashlytics/android/Crashlytics.d:Lcom/crashlytics/android/v; │ │ │ │ + // 597: astore 6 │ │ │ │ + // 599: aload 6 │ │ │ │ + // 601: invokevirtual com/crashlytics/android/v.d:()V │ │ │ │ + // 604: aload_0 │ │ │ │ + // 605: getfield com/crashlytics/android/Crashlytics.d:Lcom/crashlytics/android/v; │ │ │ │ + // 608: astore 6 │ │ │ │ + // 610: aload 6 │ │ │ │ + // 612: invokevirtual com/crashlytics/android/v.c:()V │ │ │ │ + // 615: aload_0 │ │ │ │ + // 616: getfield com/crashlytics/android/Crashlytics.d:Lcom/crashlytics/android/v; │ │ │ │ + // 619: astore 6 │ │ │ │ + // 621: aload 6 │ │ │ │ + // 623: invokevirtual com/crashlytics/android/v.h:()V │ │ │ │ + // 626: aload_0 │ │ │ │ + // 627: getfield com/crashlytics/android/Crashlytics.d:Lcom/crashlytics/android/v; │ │ │ │ + // 630: astore 6 │ │ │ │ + // 632: aload 6 │ │ │ │ + // 634: invokestatic java/lang/Thread.setDefaultUncaughtExceptionHandler:(Ljava/lang/Thread$UncaughtExceptionHandler;)V │ │ │ │ + // 637: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 640: astore 6 │ │ │ │ + // 642: aload 6 │ │ │ │ + // 644: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 647: astore 6 │ │ │ │ + // 649: ldc "Crashlytics" │ │ │ │ + // 651: astore 7 │ │ │ │ + // 653: ldc_w "Successfully installed exception handler." │ │ │ │ + // 656: astore 8 │ │ │ │ + // 658: aload 6 │ │ │ │ + // 660: aload 7 │ │ │ │ + // 662: aload 8 │ │ │ │ + // 664: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 669: new Ljava/util/concurrent/CountDownLatch; │ │ │ │ + // 672: astore 6 │ │ │ │ + // 674: iconst_1 │ │ │ │ + // 675: istore 12 │ │ │ │ + // 677: aload 6 │ │ │ │ + // 679: iload 12 │ │ │ │ + // 681: invokespecial java/util/concurrent/CountDownLatch.:(I)V │ │ │ │ + // 684: new Ljava/lang/Thread; │ │ │ │ + // 687: astore 7 │ │ │ │ + // 689: new Lcom/crashlytics/android/t; │ │ │ │ + // 692: astore 8 │ │ │ │ + // 694: aload 8 │ │ │ │ + // 696: aload_0 │ │ │ │ + // 697: aload_2 │ │ │ │ + // 698: fload_3 │ │ │ │ + // 699: aload 6 │ │ │ │ + // 701: invokespecial com/crashlytics/android/t.:(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;FLjava/util/concurrent/CountDownLatch;)V │ │ │ │ + // 704: ldc_w "Crashlytics Initializer" │ │ │ │ + // 707: astore 9 │ │ │ │ + // 709: aload 7 │ │ │ │ + // 711: aload 8 │ │ │ │ + // 713: aload 9 │ │ │ │ + // 715: invokespecial java/lang/Thread.:(Ljava/lang/Runnable;Ljava/lang/String;)V │ │ │ │ + // 718: aload 7 │ │ │ │ + // 720: invokevirtual java/lang/Thread.start:()V │ │ │ │ + // 723: iload 4 │ │ │ │ + // 725: ifeq 49 │ │ │ │ + // 728: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 731: astore 5 │ │ │ │ + // 733: aload 5 │ │ │ │ + // 735: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 738: astore 5 │ │ │ │ + // 740: ldc "Crashlytics" │ │ │ │ + // 742: astore 7 │ │ │ │ + // 744: ldc_w "Crashlytics detected incomplete initialization on previous app launch. Will initialize synchronously." │ │ │ │ + // 747: astore 8 │ │ │ │ + // 749: aload 5 │ │ │ │ + // 751: aload 7 │ │ │ │ + // 753: aload 8 │ │ │ │ + // 755: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 760: ldc2_w 4000 │ │ │ │ + // 763: lstore 15 │ │ │ │ + // 765: getstatic java/util/concurrent/TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ │ │ │ + // 768: astore 8 │ │ │ │ + // 770: aload 6 │ │ │ │ + // 772: lload 15 │ │ │ │ + // 774: aload 8 │ │ │ │ + // 776: invokevirtual java/util/concurrent/CountDownLatch.await:(JLjava/util/concurrent/TimeUnit;)Z │ │ │ │ + // 779: istore 13 │ │ │ │ + // 781: iload 13 │ │ │ │ + // 783: ifne 49 │ │ │ │ + // 786: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 789: astore 6 │ │ │ │ + // 791: aload 6 │ │ │ │ + // 793: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 796: astore 6 │ │ │ │ + // 798: ldc "Crashlytics" │ │ │ │ + // 800: astore 5 │ │ │ │ + // 802: ldc_w "Crashlytics initialization was not completed in the allotted time." │ │ │ │ + // 805: astore 7 │ │ │ │ + // 807: aload 6 │ │ │ │ + // 809: aload 5 │ │ │ │ + // 811: aload 7 │ │ │ │ + // 813: invokeinterface com/crashlytics/android/internal/q.c:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 818: goto 49 │ │ │ │ + // 821: astore 6 │ │ │ │ + // 823: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 826: astore 5 │ │ │ │ + // 828: aload 5 │ │ │ │ + // 830: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 833: astore 5 │ │ │ │ + // 835: ldc "Crashlytics" │ │ │ │ + // 837: astore 7 │ │ │ │ + // 839: ldc_w "Crashlytics was interrupted during initialization." │ │ │ │ + // 842: astore 8 │ │ │ │ + // 844: aload 5 │ │ │ │ + // 846: aload 7 │ │ │ │ + // 848: aload 8 │ │ │ │ + // 850: aload 6 │ │ │ │ + // 852: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 857: goto 49 │ │ │ │ + // 860: astore 6 │ │ │ │ + // 862: aload_0 │ │ │ │ + // 863: monitorexit │ │ │ │ + // 864: aload 6 │ │ │ │ + // 866: athrow │ │ │ │ + // 867: aload 6 │ │ │ │ + // 869: getfield android/content/pm/PackageInfo.versionName:Ljava/lang/String; │ │ │ │ + // 872: astore 6 │ │ │ │ + // 874: goto 340 │ │ │ │ + // 877: astore 6 │ │ │ │ + // 879: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 882: astore 7 │ │ │ │ + // 884: aload 7 │ │ │ │ + // 886: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 889: astore 7 │ │ │ │ + // 891: ldc "Crashlytics" │ │ │ │ + // 893: astore 8 │ │ │ │ + // 895: ldc_w "Error setting up app properties" │ │ │ │ + // 898: astore 9 │ │ │ │ + // 900: aload 7 │ │ │ │ + // 902: aload 8 │ │ │ │ + // 904: aload 9 │ │ │ │ + // 906: aload 6 │ │ │ │ + // 908: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 913: goto 417 │ │ │ │ + // 916: astore 6 │ │ │ │ + // 918: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 921: astore 7 │ │ │ │ + // 923: aload 7 │ │ │ │ + // 925: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 928: astore 7 │ │ │ │ + // 930: ldc "Crashlytics" │ │ │ │ + // 932: astore 8 │ │ │ │ + // 934: ldc_w "There was a problem installing the exception handler." │ │ │ │ + // 937: astore 9 │ │ │ │ + // 939: aload 7 │ │ │ │ + // 941: aload 8 │ │ │ │ + // 943: aload 9 │ │ │ │ + // 945: aload 6 │ │ │ │ + // 947: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 952: goto 669 │ │ │ │ // Exceptions: │ │ │ │ // Try Handler │ │ │ │ // Start End Start End Type │ │ │ │ // ----- ----- ----- ----- -------------------------------- │ │ │ │ - // 2 5 849 856 Any │ │ │ │ - // 17 22 849 856 Any │ │ │ │ - // 25 29 849 856 Any │ │ │ │ - // 29 32 849 856 Any │ │ │ │ - // 34 38 849 856 Any │ │ │ │ - // 42 47 849 856 Any │ │ │ │ - // 47 52 849 856 Any │ │ │ │ - // 60 63 849 856 Any │ │ │ │ - // 72 77 849 856 Any │ │ │ │ - // 77 80 849 856 Any │ │ │ │ - // 84 89 849 856 Any │ │ │ │ - // 91 96 849 856 Any │ │ │ │ - // 102 107 849 856 Any │ │ │ │ - // 107 110 866 883 Ljava/lang/Exception; │ │ │ │ - // 107 110 849 856 Any │ │ │ │ - // 112 117 866 883 Ljava/lang/Exception; │ │ │ │ - // 112 117 849 856 Any │ │ │ │ - // 119 124 866 883 Ljava/lang/Exception; │ │ │ │ - // 119 124 849 856 Any │ │ │ │ - // 124 127 866 883 Ljava/lang/Exception; │ │ │ │ - // 124 127 849 856 Any │ │ │ │ - // 129 134 866 883 Ljava/lang/Exception; │ │ │ │ - // 129 134 849 856 Any │ │ │ │ - // 136 139 866 883 Ljava/lang/Exception; │ │ │ │ - // 136 139 849 856 Any │ │ │ │ - // 143 148 866 883 Ljava/lang/Exception; │ │ │ │ - // 143 148 849 856 Any │ │ │ │ - // 150 155 866 883 Ljava/lang/Exception; │ │ │ │ - // 150 155 849 856 Any │ │ │ │ - // 155 158 866 883 Ljava/lang/Exception; │ │ │ │ - // 155 158 849 856 Any │ │ │ │ - // 167 172 866 883 Ljava/lang/Exception; │ │ │ │ - // 167 172 849 856 Any │ │ │ │ - // 172 175 866 883 Ljava/lang/Exception; │ │ │ │ - // 172 175 849 856 Any │ │ │ │ - // 179 184 866 883 Ljava/lang/Exception; │ │ │ │ - // 179 184 849 856 Any │ │ │ │ - // 186 191 866 883 Ljava/lang/Exception; │ │ │ │ - // 186 191 849 856 Any │ │ │ │ - // 193 198 866 883 Ljava/lang/Exception; │ │ │ │ - // 193 198 849 856 Any │ │ │ │ - // 198 201 866 883 Ljava/lang/Exception; │ │ │ │ - // 198 201 849 856 Any │ │ │ │ - // 213 217 866 883 Ljava/lang/Exception; │ │ │ │ - // 213 217 849 856 Any │ │ │ │ - // 219 224 866 883 Ljava/lang/Exception; │ │ │ │ - // 219 224 849 856 Any │ │ │ │ - // 226 231 866 883 Ljava/lang/Exception; │ │ │ │ - // 226 231 849 856 Any │ │ │ │ - // 233 238 866 883 Ljava/lang/Exception; │ │ │ │ - // 233 238 849 856 Any │ │ │ │ - // 238 243 866 883 Ljava/lang/Exception; │ │ │ │ - // 238 243 849 856 Any │ │ │ │ - // 255 260 866 883 Ljava/lang/Exception; │ │ │ │ - // 255 260 849 856 Any │ │ │ │ - // 260 264 866 883 Ljava/lang/Exception; │ │ │ │ - // 260 264 849 856 Any │ │ │ │ - // 266 270 866 883 Ljava/lang/Exception; │ │ │ │ - // 266 270 849 856 Any │ │ │ │ - // 274 279 866 883 Ljava/lang/Exception; │ │ │ │ - // 274 279 849 856 Any │ │ │ │ - // 281 286 866 883 Ljava/lang/Exception; │ │ │ │ - // 281 286 849 856 Any │ │ │ │ - // 288 293 866 883 Ljava/lang/Exception; │ │ │ │ - // 288 293 849 856 Any │ │ │ │ - // 293 297 866 883 Ljava/lang/Exception; │ │ │ │ - // 293 297 849 856 Any │ │ │ │ - // 299 304 866 883 Ljava/lang/Exception; │ │ │ │ - // 299 304 849 856 Any │ │ │ │ - // 306 311 866 883 Ljava/lang/Exception; │ │ │ │ - // 306 311 849 856 Any │ │ │ │ - // 313 318 866 883 Ljava/lang/Exception; │ │ │ │ - // 313 318 849 856 Any │ │ │ │ - // 324 327 866 883 Ljava/lang/Exception; │ │ │ │ - // 324 327 849 856 Any │ │ │ │ - // 343 348 866 883 Ljava/lang/Exception; │ │ │ │ - // 343 348 849 856 Any │ │ │ │ - // 355 358 866 883 Ljava/lang/Exception; │ │ │ │ - // 355 358 849 856 Any │ │ │ │ - // 360 365 866 883 Ljava/lang/Exception; │ │ │ │ - // 360 365 849 856 Any │ │ │ │ - // 369 374 866 883 Ljava/lang/Exception; │ │ │ │ - // 369 374 849 856 Any │ │ │ │ - // 376 379 866 883 Ljava/lang/Exception; │ │ │ │ - // 376 379 849 856 Any │ │ │ │ - // 388 393 866 883 Ljava/lang/Exception; │ │ │ │ - // 388 393 849 856 Any │ │ │ │ - // 395 400 866 883 Ljava/lang/Exception; │ │ │ │ - // 395 400 849 856 Any │ │ │ │ - // 402 407 866 883 Ljava/lang/Exception; │ │ │ │ - // 402 407 849 856 Any │ │ │ │ - // 409 414 866 883 Ljava/lang/Exception; │ │ │ │ - // 409 414 849 856 Any │ │ │ │ - // 415 420 866 883 Ljava/lang/Exception; │ │ │ │ - // 415 420 849 856 Any │ │ │ │ - // 420 423 866 883 Ljava/lang/Exception; │ │ │ │ - // 420 423 849 856 Any │ │ │ │ - // 425 428 866 883 Ljava/lang/Exception; │ │ │ │ - // 425 428 849 856 Any │ │ │ │ - // 430 435 866 883 Ljava/lang/Exception; │ │ │ │ - // 430 435 849 856 Any │ │ │ │ - // 446 451 866 883 Ljava/lang/Exception; │ │ │ │ - // 446 451 849 856 Any │ │ │ │ - // 451 456 866 883 Ljava/lang/Exception; │ │ │ │ - // 451 456 849 856 Any │ │ │ │ - // 456 461 866 883 Ljava/lang/Exception; │ │ │ │ - // 456 461 849 856 Any │ │ │ │ - // 468 471 866 883 Ljava/lang/Exception; │ │ │ │ - // 468 471 849 856 Any │ │ │ │ - // 473 479 866 883 Ljava/lang/Exception; │ │ │ │ - // 473 479 849 856 Any │ │ │ │ - // 479 482 849 856 Any │ │ │ │ - // 484 487 849 856 Any │ │ │ │ - // 491 496 849 856 Any │ │ │ │ - // 497 502 849 856 Any │ │ │ │ - // 502 506 849 856 Any │ │ │ │ - // 508 514 849 856 Any │ │ │ │ - // 514 517 849 856 Any │ │ │ │ - // 519 523 849 856 Any │ │ │ │ - // 525 528 849 856 Any │ │ │ │ - // 542 547 849 856 Any │ │ │ │ - // 553 558 849 856 Any │ │ │ │ - // 558 561 849 856 Any │ │ │ │ - // 566 571 849 856 Any │ │ │ │ - // 576 581 883 900 Ljava/lang/Exception; │ │ │ │ - // 576 581 849 856 Any │ │ │ │ - // 581 584 883 900 Ljava/lang/Exception; │ │ │ │ - // 581 584 849 856 Any │ │ │ │ - // 586 589 883 900 Ljava/lang/Exception; │ │ │ │ - // 586 589 849 856 Any │ │ │ │ - // 591 595 883 900 Ljava/lang/Exception; │ │ │ │ - // 591 595 849 856 Any │ │ │ │ - // 597 601 883 900 Ljava/lang/Exception; │ │ │ │ - // 597 601 849 856 Any │ │ │ │ - // 609 614 883 900 Ljava/lang/Exception; │ │ │ │ - // 609 614 849 856 Any │ │ │ │ - // 615 620 883 900 Ljava/lang/Exception; │ │ │ │ - // 615 620 849 856 Any │ │ │ │ - // 620 624 883 900 Ljava/lang/Exception; │ │ │ │ - // 620 624 849 856 Any │ │ │ │ - // 626 631 883 900 Ljava/lang/Exception; │ │ │ │ - // 626 631 849 856 Any │ │ │ │ - // 631 635 883 900 Ljava/lang/Exception; │ │ │ │ - // 631 635 849 856 Any │ │ │ │ - // 637 642 883 900 Ljava/lang/Exception; │ │ │ │ - // 637 642 849 856 Any │ │ │ │ - // 647 652 883 900 Ljava/lang/Exception; │ │ │ │ - // 647 652 849 856 Any │ │ │ │ - // 652 655 849 856 Any │ │ │ │ - // 657 660 849 856 Any │ │ │ │ - // 671 676 849 856 Any │ │ │ │ - // 676 681 849 856 Any │ │ │ │ - // 693 698 849 856 Any │ │ │ │ - // 698 701 849 856 Any │ │ │ │ - // 708 713 849 856 Any │ │ │ │ - // 713 716 849 856 Any │ │ │ │ - // 723 728 849 856 Any │ │ │ │ - // 728 731 849 856 Any │ │ │ │ - // 733 736 849 856 Any │ │ │ │ - // 750 755 849 856 Any │ │ │ │ - // 764 769 849 856 Any │ │ │ │ - // 769 774 849 856 Any │ │ │ │ - // 779 782 900 927 Ljava/lang/InterruptedException; │ │ │ │ - // 779 782 849 856 Any │ │ │ │ - // 788 794 900 927 Ljava/lang/InterruptedException; │ │ │ │ - // 788 794 849 856 Any │ │ │ │ - // 804 807 822 849 Ljava/lang/InterruptedException; │ │ │ │ - // 804 807 849 856 Any │ │ │ │ - // 813 819 822 849 Ljava/lang/InterruptedException; │ │ │ │ - // 813 819 849 856 Any │ │ │ │ - // 841 846 849 856 Any │ │ │ │ - // 856 861 866 883 Ljava/lang/Exception; │ │ │ │ - // 856 861 849 856 Any │ │ │ │ - // 875 880 849 856 Any │ │ │ │ - // 892 897 849 856 Any │ │ │ │ - // 919 924 849 856 Any │ │ │ │ + // 8 11 860 867 Any │ │ │ │ + // 18 21 860 867 Any │ │ │ │ + // 23 28 860 867 Any │ │ │ │ + // 42 49 860 867 Any │ │ │ │ + // 52 56 860 867 Any │ │ │ │ + // 56 59 860 867 Any │ │ │ │ + // 61 65 860 867 Any │ │ │ │ + // 69 74 860 867 Any │ │ │ │ + // 74 79 860 867 Any │ │ │ │ + // 79 82 860 867 Any │ │ │ │ + // 84 87 860 867 Any │ │ │ │ + // 89 94 860 867 Any │ │ │ │ + // 98 103 860 867 Any │ │ │ │ + // 103 108 860 867 Any │ │ │ │ + // 108 111 860 867 Any │ │ │ │ + // 113 118 860 867 Any │ │ │ │ + // 124 127 860 867 Any │ │ │ │ + // 135 140 860 867 Any │ │ │ │ + // 140 143 860 867 Any │ │ │ │ + // 147 152 860 867 Any │ │ │ │ + // 154 159 860 867 Any │ │ │ │ + // 165 172 860 867 Any │ │ │ │ + // 172 175 877 916 Ljava/lang/Exception; │ │ │ │ + // 172 175 860 867 Any │ │ │ │ + // 177 182 877 916 Ljava/lang/Exception; │ │ │ │ + // 177 182 860 867 Any │ │ │ │ + // 184 189 877 916 Ljava/lang/Exception; │ │ │ │ + // 184 189 860 867 Any │ │ │ │ + // 189 192 877 916 Ljava/lang/Exception; │ │ │ │ + // 189 192 860 867 Any │ │ │ │ + // 194 199 877 916 Ljava/lang/Exception; │ │ │ │ + // 194 199 860 867 Any │ │ │ │ + // 201 204 877 916 Ljava/lang/Exception; │ │ │ │ + // 201 204 860 867 Any │ │ │ │ + // 208 213 877 916 Ljava/lang/Exception; │ │ │ │ + // 208 213 860 867 Any │ │ │ │ + // 215 220 877 916 Ljava/lang/Exception; │ │ │ │ + // 215 220 860 867 Any │ │ │ │ + // 220 223 877 916 Ljava/lang/Exception; │ │ │ │ + // 220 223 860 867 Any │ │ │ │ + // 225 230 877 916 Ljava/lang/Exception; │ │ │ │ + // 225 230 860 867 Any │ │ │ │ + // 236 239 877 916 Ljava/lang/Exception; │ │ │ │ + // 236 239 860 867 Any │ │ │ │ + // 247 252 877 916 Ljava/lang/Exception; │ │ │ │ + // 247 252 860 867 Any │ │ │ │ + // 252 255 877 916 Ljava/lang/Exception; │ │ │ │ + // 252 255 860 867 Any │ │ │ │ + // 259 264 877 916 Ljava/lang/Exception; │ │ │ │ + // 259 264 860 867 Any │ │ │ │ + // 266 271 877 916 Ljava/lang/Exception; │ │ │ │ + // 266 271 860 867 Any │ │ │ │ + // 277 284 877 916 Ljava/lang/Exception; │ │ │ │ + // 277 284 860 867 Any │ │ │ │ + // 284 287 877 916 Ljava/lang/Exception; │ │ │ │ + // 284 287 860 867 Any │ │ │ │ + // 299 303 877 916 Ljava/lang/Exception; │ │ │ │ + // 299 303 860 867 Any │ │ │ │ + // 305 310 877 916 Ljava/lang/Exception; │ │ │ │ + // 305 310 860 867 Any │ │ │ │ + // 312 317 877 916 Ljava/lang/Exception; │ │ │ │ + // 312 317 860 867 Any │ │ │ │ + // 319 324 877 916 Ljava/lang/Exception; │ │ │ │ + // 319 324 860 867 Any │ │ │ │ + // 324 329 877 916 Ljava/lang/Exception; │ │ │ │ + // 324 329 860 867 Any │ │ │ │ + // 340 345 877 916 Ljava/lang/Exception; │ │ │ │ + // 340 345 860 867 Any │ │ │ │ + // 345 349 877 916 Ljava/lang/Exception; │ │ │ │ + // 345 349 860 867 Any │ │ │ │ + // 351 355 877 916 Ljava/lang/Exception; │ │ │ │ + // 351 355 860 867 Any │ │ │ │ + // 359 364 877 916 Ljava/lang/Exception; │ │ │ │ + // 359 364 860 867 Any │ │ │ │ + // 366 373 877 916 Ljava/lang/Exception; │ │ │ │ + // 366 373 860 867 Any │ │ │ │ + // 375 380 877 916 Ljava/lang/Exception; │ │ │ │ + // 375 380 860 867 Any │ │ │ │ + // 380 384 877 916 Ljava/lang/Exception; │ │ │ │ + // 380 384 860 867 Any │ │ │ │ + // 386 391 877 916 Ljava/lang/Exception; │ │ │ │ + // 386 391 860 867 Any │ │ │ │ + // 393 398 877 916 Ljava/lang/Exception; │ │ │ │ + // 393 398 860 867 Any │ │ │ │ + // 400 405 877 916 Ljava/lang/Exception; │ │ │ │ + // 400 405 860 867 Any │ │ │ │ + // 405 409 877 916 Ljava/lang/Exception; │ │ │ │ + // 405 409 860 867 Any │ │ │ │ + // 412 417 877 916 Ljava/lang/Exception; │ │ │ │ + // 412 417 860 867 Any │ │ │ │ + // 417 420 860 867 Any │ │ │ │ + // 422 425 860 867 Any │ │ │ │ + // 429 434 860 867 Any │ │ │ │ + // 435 440 860 867 Any │ │ │ │ + // 440 444 860 867 Any │ │ │ │ + // 446 452 860 867 Any │ │ │ │ + // 452 455 860 867 Any │ │ │ │ + // 457 461 860 867 Any │ │ │ │ + // 463 466 860 867 Any │ │ │ │ + // 480 485 860 867 Any │ │ │ │ + // 491 496 860 867 Any │ │ │ │ + // 496 499 860 867 Any │ │ │ │ + // 504 509 860 867 Any │ │ │ │ + // 509 512 916 955 Ljava/lang/Exception; │ │ │ │ + // 509 512 860 867 Any │ │ │ │ + // 514 519 916 955 Ljava/lang/Exception; │ │ │ │ + // 514 519 860 867 Any │ │ │ │ + // 534 541 916 955 Ljava/lang/Exception; │ │ │ │ + // 534 541 860 867 Any │ │ │ │ + // 541 544 916 955 Ljava/lang/Exception; │ │ │ │ + // 541 544 860 867 Any │ │ │ │ + // 546 549 916 955 Ljava/lang/Exception; │ │ │ │ + // 546 549 860 867 Any │ │ │ │ + // 551 555 916 955 Ljava/lang/Exception; │ │ │ │ + // 551 555 860 867 Any │ │ │ │ + // 557 561 916 955 Ljava/lang/Exception; │ │ │ │ + // 557 561 860 867 Any │ │ │ │ + // 569 574 916 955 Ljava/lang/Exception; │ │ │ │ + // 569 574 860 867 Any │ │ │ │ + // 575 580 916 955 Ljava/lang/Exception; │ │ │ │ + // 575 580 860 867 Any │ │ │ │ + // 580 584 916 955 Ljava/lang/Exception; │ │ │ │ + // 580 584 860 867 Any │ │ │ │ + // 586 591 916 955 Ljava/lang/Exception; │ │ │ │ + // 586 591 860 867 Any │ │ │ │ + // 593 597 916 955 Ljava/lang/Exception; │ │ │ │ + // 593 597 860 867 Any │ │ │ │ + // 599 604 916 955 Ljava/lang/Exception; │ │ │ │ + // 599 604 860 867 Any │ │ │ │ + // 604 608 916 955 Ljava/lang/Exception; │ │ │ │ + // 604 608 860 867 Any │ │ │ │ + // 610 615 916 955 Ljava/lang/Exception; │ │ │ │ + // 610 615 860 867 Any │ │ │ │ + // 615 619 916 955 Ljava/lang/Exception; │ │ │ │ + // 615 619 860 867 Any │ │ │ │ + // 621 626 916 955 Ljava/lang/Exception; │ │ │ │ + // 621 626 860 867 Any │ │ │ │ + // 626 630 916 955 Ljava/lang/Exception; │ │ │ │ + // 626 630 860 867 Any │ │ │ │ + // 632 637 916 955 Ljava/lang/Exception; │ │ │ │ + // 632 637 860 867 Any │ │ │ │ + // 637 640 916 955 Ljava/lang/Exception; │ │ │ │ + // 637 640 860 867 Any │ │ │ │ + // 642 647 916 955 Ljava/lang/Exception; │ │ │ │ + // 642 647 860 867 Any │ │ │ │ + // 662 669 916 955 Ljava/lang/Exception; │ │ │ │ + // 662 669 860 867 Any │ │ │ │ + // 669 672 860 867 Any │ │ │ │ + // 679 684 860 867 Any │ │ │ │ + // 684 687 860 867 Any │ │ │ │ + // 689 692 860 867 Any │ │ │ │ + // 699 704 860 867 Any │ │ │ │ + // 713 718 860 867 Any │ │ │ │ + // 718 723 860 867 Any │ │ │ │ + // 728 731 860 867 Any │ │ │ │ + // 733 738 860 867 Any │ │ │ │ + // 753 760 860 867 Any │ │ │ │ + // 765 768 821 860 Ljava/lang/InterruptedException; │ │ │ │ + // 765 768 860 867 Any │ │ │ │ + // 774 779 821 860 Ljava/lang/InterruptedException; │ │ │ │ + // 774 779 860 867 Any │ │ │ │ + // 786 789 821 860 Ljava/lang/InterruptedException; │ │ │ │ + // 786 789 860 867 Any │ │ │ │ + // 791 796 821 860 Ljava/lang/InterruptedException; │ │ │ │ + // 791 796 860 867 Any │ │ │ │ + // 811 818 821 860 Ljava/lang/InterruptedException; │ │ │ │ + // 811 818 860 867 Any │ │ │ │ + // 823 826 860 867 Any │ │ │ │ + // 828 833 860 867 Any │ │ │ │ + // 850 857 860 867 Any │ │ │ │ + // 867 872 877 916 Ljava/lang/Exception; │ │ │ │ + // 867 872 860 867 Any │ │ │ │ + // 879 882 860 867 Any │ │ │ │ + // 884 889 860 867 Any │ │ │ │ + // 906 913 860 867 Any │ │ │ │ + // 918 921 860 867 Any │ │ │ │ + // 923 928 860 867 Any │ │ │ │ + // 945 952 860 867 Any │ │ │ │ // │ │ │ │ // The error that occurred was: │ │ │ │ // │ │ │ │ - // java.lang.IndexOutOfBoundsException: Index: 412, Size: 412 │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 418, Size: 418 │ │ │ │ // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ @@ -707,154 +717,499 @@ │ │ │ │ // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ // │ │ │ │ throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ } │ │ │ │ │ │ │ │ static void a(final boolean b) { │ │ │ │ - aB.a().edit().putBoolean("always_send_reports_opt_in", true).commit(); │ │ │ │ + ab.a().edit().putBoolean("always_send_reports_opt_in", true).commit(); │ │ │ │ } │ │ │ │ │ │ │ │ - static int b() { │ │ │ │ - return Crashlytics.c; │ │ │ │ + private boolean a(final Context p0, final float p1) { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: istore_3 │ │ │ │ + // 2: iconst_0 │ │ │ │ + // 3: istore 4 │ │ │ │ + // 5: aload_0 │ │ │ │ + // 6: invokevirtual com/crashlytics/android/Crashlytics.getContext:()Landroid/content/Context; │ │ │ │ + // 9: astore 5 │ │ │ │ + // 11: aload 5 │ │ │ │ + // 13: invokestatic com/crashlytics/android/internal/ab.g:(Landroid/content/Context;)Ljava/lang/String; │ │ │ │ + // 16: astore 6 │ │ │ │ + // 18: invokestatic com/crashlytics/android/internal/aS.a:()Lcom/crashlytics/android/internal/aS; │ │ │ │ + // 21: astore 5 │ │ │ │ + // 23: getstatic com/crashlytics/android/Crashlytics.t:Lcom/crashlytics/android/internal/av; │ │ │ │ + // 26: astore 7 │ │ │ │ + // 28: getstatic com/crashlytics/android/Crashlytics.n:Ljava/lang/String; │ │ │ │ + // 31: astore 8 │ │ │ │ + // 33: getstatic com/crashlytics/android/Crashlytics.o:Ljava/lang/String; │ │ │ │ + // 36: astore 9 │ │ │ │ + // 38: invokestatic com/crashlytics/android/Crashlytics.i:()Ljava/lang/String; │ │ │ │ + // 41: astore 10 │ │ │ │ + // 43: aload_1 │ │ │ │ + // 44: astore 11 │ │ │ │ + // 46: aload 5 │ │ │ │ + // 48: aload_1 │ │ │ │ + // 49: aload 7 │ │ │ │ + // 51: aload 8 │ │ │ │ + // 53: aload 9 │ │ │ │ + // 55: aload 10 │ │ │ │ + // 57: invokevirtual com/crashlytics/android/internal/aS.a:(Landroid/content/Context;Lcom/crashlytics/android/internal/av;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/aS; │ │ │ │ + // 60: astore 5 │ │ │ │ + // 62: aload 5 │ │ │ │ + // 64: invokevirtual com/crashlytics/android/internal/aS.c:()Z │ │ │ │ + // 67: pop │ │ │ │ + // 68: invokestatic com/crashlytics/android/internal/aS.a:()Lcom/crashlytics/android/internal/aS; │ │ │ │ + // 71: astore 5 │ │ │ │ + // 73: aload 5 │ │ │ │ + // 75: invokevirtual com/crashlytics/android/internal/aS.b:()Lcom/crashlytics/android/internal/aX; │ │ │ │ + // 78: astore 5 │ │ │ │ + // 80: aload 5 │ │ │ │ + // 82: astore 7 │ │ │ │ + // 84: aload 7 │ │ │ │ + // 86: ifnull 671 │ │ │ │ + // 89: aload 7 │ │ │ │ + // 91: getfield com/crashlytics/android/internal/aX.a:Lcom/crashlytics/android/internal/aM; │ │ │ │ + // 94: astore 5 │ │ │ │ + // 96: ldc_w "new" │ │ │ │ + // 99: astore 11 │ │ │ │ + // 101: aload 5 │ │ │ │ + // 103: getfield com/crashlytics/android/internal/aM.a:Ljava/lang/String; │ │ │ │ + // 106: astore 8 │ │ │ │ + // 108: aload 11 │ │ │ │ + // 110: aload 8 │ │ │ │ + // 112: invokevirtual java/lang/String.equals:(Ljava/lang/Object;)Z │ │ │ │ + // 115: istore 12 │ │ │ │ + // 117: iload 12 │ │ │ │ + // 119: ifeq 393 │ │ │ │ + // 122: aload_0 │ │ │ │ + // 123: invokevirtual com/crashlytics/android/Crashlytics.getContext:()Landroid/content/Context; │ │ │ │ + // 126: astore 11 │ │ │ │ + // 128: aload 11 │ │ │ │ + // 130: aload 6 │ │ │ │ + // 132: invokestatic com/crashlytics/android/Y.a:(Landroid/content/Context;Ljava/lang/String;)Lcom/crashlytics/android/Y; │ │ │ │ + // 135: astore 11 │ │ │ │ + // 137: aload_0 │ │ │ │ + // 138: aload 11 │ │ │ │ + // 140: invokespecial com/crashlytics/android/Crashlytics.a:(Lcom/crashlytics/android/Y;)Lcom/crashlytics/android/b; │ │ │ │ + // 143: astore 11 │ │ │ │ + // 145: new Lcom/crashlytics/android/T; │ │ │ │ + // 148: astore 8 │ │ │ │ + // 150: invokestatic com/crashlytics/android/Crashlytics.i:()Ljava/lang/String; │ │ │ │ + // 153: astore 9 │ │ │ │ + // 155: aload 5 │ │ │ │ + // 157: getfield com/crashlytics/android/internal/aM.b:Ljava/lang/String; │ │ │ │ + // 160: astore 5 │ │ │ │ + // 162: getstatic com/crashlytics/android/Crashlytics.t:Lcom/crashlytics/android/internal/av; │ │ │ │ + // 165: astore 10 │ │ │ │ + // 167: aload 8 │ │ │ │ + // 169: aload 9 │ │ │ │ + // 171: aload 5 │ │ │ │ + // 173: aload 10 │ │ │ │ + // 175: invokespecial com/crashlytics/android/T.:(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ │ │ │ + // 178: aload 8 │ │ │ │ + // 180: aload 11 │ │ │ │ + // 182: invokevirtual com/crashlytics/android/T.a:(Lcom/crashlytics/android/b;)Z │ │ │ │ + // 185: istore 13 │ │ │ │ + // 187: iload 13 │ │ │ │ + // 189: ifeq 348 │ │ │ │ + // 192: invokestatic com/crashlytics/android/internal/aS.a:()Lcom/crashlytics/android/internal/aS; │ │ │ │ + // 195: astore 5 │ │ │ │ + // 197: aload 5 │ │ │ │ + // 199: invokevirtual com/crashlytics/android/internal/aS.d:()Z │ │ │ │ + // 202: istore 13 │ │ │ │ + // 204: iload 13 │ │ │ │ + // 206: istore 12 │ │ │ │ + // 208: aload 7 │ │ │ │ + // 210: getfield com/crashlytics/android/internal/aX.d:Lcom/crashlytics/android/internal/aP; │ │ │ │ + // 213: astore 5 │ │ │ │ + // 215: aload 5 │ │ │ │ + // 217: getfield com/crashlytics/android/internal/aP.b:Z │ │ │ │ + // 220: istore 13 │ │ │ │ + // 222: iload 12 │ │ │ │ + // 224: ifeq 665 │ │ │ │ + // 227: iload 13 │ │ │ │ + // 229: ifeq 665 │ │ │ │ + // 232: aload_0 │ │ │ │ + // 233: getfield com/crashlytics/android/Crashlytics.d:Lcom/crashlytics/android/v; │ │ │ │ + // 236: astore 5 │ │ │ │ + // 238: aload 5 │ │ │ │ + // 240: invokevirtual com/crashlytics/android/v.b:()Z │ │ │ │ + // 243: istore 13 │ │ │ │ + // 245: iload 13 │ │ │ │ + // 247: iconst_1 │ │ │ │ + // 248: iand │ │ │ │ + // 249: istore_3 │ │ │ │ + // 250: aload_0 │ │ │ │ + // 251: invokevirtual com/crashlytics/android/Crashlytics.q:()Lcom/crashlytics/android/V; │ │ │ │ + // 254: astore 5 │ │ │ │ + // 256: aload 5 │ │ │ │ + // 258: ifnull 279 │ │ │ │ + // 261: new Lcom/crashlytics/android/aa; │ │ │ │ + // 264: astore 11 │ │ │ │ + // 266: aload 11 │ │ │ │ + // 268: aload 5 │ │ │ │ + // 270: invokespecial com/crashlytics/android/aa.:(Lcom/crashlytics/android/V;)V │ │ │ │ + // 273: aload 11 │ │ │ │ + // 275: fload_2 │ │ │ │ + // 276: invokevirtual com/crashlytics/android/aa.a:(F)V │ │ │ │ + // 279: iload 4 │ │ │ │ + // 281: ifeq 312 │ │ │ │ + // 284: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 287: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 290: astore 5 │ │ │ │ + // 292: ldc "Crashlytics" │ │ │ │ + // 294: astore 11 │ │ │ │ + // 296: ldc_w "Crash reporting disabled." │ │ │ │ + // 299: astore 7 │ │ │ │ + // 301: aload 5 │ │ │ │ + // 303: aload 11 │ │ │ │ + // 305: aload 7 │ │ │ │ + // 307: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 312: iload_3 │ │ │ │ + // 313: ireturn │ │ │ │ + // 314: astore 5 │ │ │ │ + // 316: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 319: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 322: astore 11 │ │ │ │ + // 324: ldc_w "Error dealing with settings" │ │ │ │ + // 327: astore 8 │ │ │ │ + // 329: aload 11 │ │ │ │ + // 331: ldc "Crashlytics" │ │ │ │ + // 333: aload 8 │ │ │ │ + // 335: aload 5 │ │ │ │ + // 337: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 342: aconst_null │ │ │ │ + // 343: astore 7 │ │ │ │ + // 345: goto 84 │ │ │ │ + // 348: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 351: astore 5 │ │ │ │ + // 353: aload 5 │ │ │ │ + // 355: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 358: astore 5 │ │ │ │ + // 360: ldc "Crashlytics" │ │ │ │ + // 362: astore 11 │ │ │ │ + // 364: ldc_w "Failed to create app with Crashlytics service." │ │ │ │ + // 367: astore 8 │ │ │ │ + // 369: aconst_null │ │ │ │ + // 370: astore 9 │ │ │ │ + // 372: aload 5 │ │ │ │ + // 374: aload 11 │ │ │ │ + // 376: aload 8 │ │ │ │ + // 378: aconst_null │ │ │ │ + // 379: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 384: iconst_0 │ │ │ │ + // 385: istore 13 │ │ │ │ + // 387: aconst_null │ │ │ │ + // 388: astore 5 │ │ │ │ + // 390: goto 204 │ │ │ │ + // 393: ldc_w "configured" │ │ │ │ + // 396: astore 11 │ │ │ │ + // 398: aload 5 │ │ │ │ + // 400: getfield com/crashlytics/android/internal/aM.a:Ljava/lang/String; │ │ │ │ + // 403: astore 8 │ │ │ │ + // 405: aload 11 │ │ │ │ + // 407: aload 8 │ │ │ │ + // 409: invokevirtual java/lang/String.equals:(Ljava/lang/Object;)Z │ │ │ │ + // 412: istore 12 │ │ │ │ + // 414: iload 12 │ │ │ │ + // 416: ifeq 434 │ │ │ │ + // 419: invokestatic com/crashlytics/android/internal/aS.a:()Lcom/crashlytics/android/internal/aS; │ │ │ │ + // 422: astore 5 │ │ │ │ + // 424: aload 5 │ │ │ │ + // 426: invokevirtual com/crashlytics/android/internal/aS.d:()Z │ │ │ │ + // 429: istore 13 │ │ │ │ + // 431: goto 204 │ │ │ │ + // 434: aload 5 │ │ │ │ + // 436: getfield com/crashlytics/android/internal/aM.d:Z │ │ │ │ + // 439: istore 12 │ │ │ │ + // 441: iload 12 │ │ │ │ + // 443: ifeq 542 │ │ │ │ + // 446: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 449: astore 11 │ │ │ │ + // 451: aload 11 │ │ │ │ + // 453: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 456: astore 11 │ │ │ │ + // 458: ldc "Crashlytics" │ │ │ │ + // 460: astore 8 │ │ │ │ + // 462: ldc_w "Server says an update is required - forcing a full App update." │ │ │ │ + // 465: astore 9 │ │ │ │ + // 467: aload 11 │ │ │ │ + // 469: aload 8 │ │ │ │ + // 471: aload 9 │ │ │ │ + // 473: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 478: aload_0 │ │ │ │ + // 479: invokevirtual com/crashlytics/android/Crashlytics.getContext:()Landroid/content/Context; │ │ │ │ + // 482: astore 11 │ │ │ │ + // 484: aload 11 │ │ │ │ + // 486: aload 6 │ │ │ │ + // 488: invokestatic com/crashlytics/android/Y.a:(Landroid/content/Context;Ljava/lang/String;)Lcom/crashlytics/android/Y; │ │ │ │ + // 491: astore 11 │ │ │ │ + // 493: aload_0 │ │ │ │ + // 494: aload 11 │ │ │ │ + // 496: invokespecial com/crashlytics/android/Crashlytics.a:(Lcom/crashlytics/android/Y;)Lcom/crashlytics/android/b; │ │ │ │ + // 499: astore 11 │ │ │ │ + // 501: new Lcom/crashlytics/android/ad; │ │ │ │ + // 504: astore 8 │ │ │ │ + // 506: invokestatic com/crashlytics/android/Crashlytics.i:()Ljava/lang/String; │ │ │ │ + // 509: astore 9 │ │ │ │ + // 511: aload 5 │ │ │ │ + // 513: getfield com/crashlytics/android/internal/aM.b:Ljava/lang/String; │ │ │ │ + // 516: astore 5 │ │ │ │ + // 518: getstatic com/crashlytics/android/Crashlytics.t:Lcom/crashlytics/android/internal/av; │ │ │ │ + // 521: astore 10 │ │ │ │ + // 523: aload 8 │ │ │ │ + // 525: aload 9 │ │ │ │ + // 527: aload 5 │ │ │ │ + // 529: aload 10 │ │ │ │ + // 531: invokespecial com/crashlytics/android/ad.:(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ │ │ │ + // 534: aload 8 │ │ │ │ + // 536: aload 11 │ │ │ │ + // 538: invokevirtual com/crashlytics/android/ad.a:(Lcom/crashlytics/android/b;)Z │ │ │ │ + // 541: pop │ │ │ │ + // 542: iload_3 │ │ │ │ + // 543: istore 13 │ │ │ │ + // 545: goto 204 │ │ │ │ + // 548: astore 5 │ │ │ │ + // 550: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 553: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 556: astore 11 │ │ │ │ + // 558: ldc "Crashlytics" │ │ │ │ + // 560: astore 8 │ │ │ │ + // 562: ldc_w "Error performing auto configuration." │ │ │ │ + // 565: astore 9 │ │ │ │ + // 567: aload 11 │ │ │ │ + // 569: aload 8 │ │ │ │ + // 571: aload 9 │ │ │ │ + // 573: aload 5 │ │ │ │ + // 575: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 580: iconst_0 │ │ │ │ + // 581: istore 12 │ │ │ │ + // 583: aconst_null │ │ │ │ + // 584: astore 11 │ │ │ │ + // 586: goto 208 │ │ │ │ + // 589: astore 5 │ │ │ │ + // 591: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 594: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 597: astore 7 │ │ │ │ + // 599: ldc "Crashlytics" │ │ │ │ + // 601: astore 8 │ │ │ │ + // 603: ldc_w "Error getting collect reports setting." │ │ │ │ + // 606: astore 9 │ │ │ │ + // 608: aload 7 │ │ │ │ + // 610: aload 8 │ │ │ │ + // 612: aload 9 │ │ │ │ + // 614: aload 5 │ │ │ │ + // 616: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 621: iconst_0 │ │ │ │ + // 622: istore 13 │ │ │ │ + // 624: aconst_null │ │ │ │ + // 625: astore 5 │ │ │ │ + // 627: goto 222 │ │ │ │ + // 630: astore 5 │ │ │ │ + // 632: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 635: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 638: astore 11 │ │ │ │ + // 640: ldc "Crashlytics" │ │ │ │ + // 642: astore 7 │ │ │ │ + // 644: ldc_w "Error sending crash report" │ │ │ │ + // 647: astore 8 │ │ │ │ + // 649: aload 11 │ │ │ │ + // 651: aload 7 │ │ │ │ + // 653: aload 8 │ │ │ │ + // 655: aload 5 │ │ │ │ + // 657: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 662: goto 279 │ │ │ │ + // 665: iload_3 │ │ │ │ + // 666: istore 4 │ │ │ │ + // 668: goto 279 │ │ │ │ + // 671: iconst_0 │ │ │ │ + // 672: istore 13 │ │ │ │ + // 674: aconst_null │ │ │ │ + // 675: astore 5 │ │ │ │ + // 677: iconst_0 │ │ │ │ + // 678: istore 12 │ │ │ │ + // 680: aconst_null │ │ │ │ + // 681: astore 11 │ │ │ │ + // 683: goto 222 │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 18 21 314 348 Ljava/lang/Exception; │ │ │ │ + // 23 26 314 348 Ljava/lang/Exception; │ │ │ │ + // 28 31 314 348 Ljava/lang/Exception; │ │ │ │ + // 33 36 314 348 Ljava/lang/Exception; │ │ │ │ + // 38 41 314 348 Ljava/lang/Exception; │ │ │ │ + // 55 60 314 348 Ljava/lang/Exception; │ │ │ │ + // 62 68 314 348 Ljava/lang/Exception; │ │ │ │ + // 68 71 314 348 Ljava/lang/Exception; │ │ │ │ + // 73 78 314 348 Ljava/lang/Exception; │ │ │ │ + // 89 94 548 589 Ljava/lang/Exception; │ │ │ │ + // 101 106 548 589 Ljava/lang/Exception; │ │ │ │ + // 110 115 548 589 Ljava/lang/Exception; │ │ │ │ + // 122 126 548 589 Ljava/lang/Exception; │ │ │ │ + // 130 135 548 589 Ljava/lang/Exception; │ │ │ │ + // 138 143 548 589 Ljava/lang/Exception; │ │ │ │ + // 145 148 548 589 Ljava/lang/Exception; │ │ │ │ + // 150 153 548 589 Ljava/lang/Exception; │ │ │ │ + // 155 160 548 589 Ljava/lang/Exception; │ │ │ │ + // 162 165 548 589 Ljava/lang/Exception; │ │ │ │ + // 173 178 548 589 Ljava/lang/Exception; │ │ │ │ + // 180 185 548 589 Ljava/lang/Exception; │ │ │ │ + // 192 195 548 589 Ljava/lang/Exception; │ │ │ │ + // 197 202 548 589 Ljava/lang/Exception; │ │ │ │ + // 208 213 589 630 Ljava/lang/Exception; │ │ │ │ + // 215 220 589 630 Ljava/lang/Exception; │ │ │ │ + // 232 236 630 665 Ljava/lang/Exception; │ │ │ │ + // 238 243 630 665 Ljava/lang/Exception; │ │ │ │ + // 250 254 630 665 Ljava/lang/Exception; │ │ │ │ + // 261 264 630 665 Ljava/lang/Exception; │ │ │ │ + // 268 273 630 665 Ljava/lang/Exception; │ │ │ │ + // 275 279 630 665 Ljava/lang/Exception; │ │ │ │ + // 348 351 548 589 Ljava/lang/Exception; │ │ │ │ + // 353 358 548 589 Ljava/lang/Exception; │ │ │ │ + // 378 384 548 589 Ljava/lang/Exception; │ │ │ │ + // 398 403 548 589 Ljava/lang/Exception; │ │ │ │ + // 407 412 548 589 Ljava/lang/Exception; │ │ │ │ + // 419 422 548 589 Ljava/lang/Exception; │ │ │ │ + // 424 429 548 589 Ljava/lang/Exception; │ │ │ │ + // 434 439 548 589 Ljava/lang/Exception; │ │ │ │ + // 446 449 548 589 Ljava/lang/Exception; │ │ │ │ + // 451 456 548 589 Ljava/lang/Exception; │ │ │ │ + // 471 478 548 589 Ljava/lang/Exception; │ │ │ │ + // 478 482 548 589 Ljava/lang/Exception; │ │ │ │ + // 486 491 548 589 Ljava/lang/Exception; │ │ │ │ + // 494 499 548 589 Ljava/lang/Exception; │ │ │ │ + // 501 504 548 589 Ljava/lang/Exception; │ │ │ │ + // 506 509 548 589 Ljava/lang/Exception; │ │ │ │ + // 511 516 548 589 Ljava/lang/Exception; │ │ │ │ + // 518 521 548 589 Ljava/lang/Exception; │ │ │ │ + // 529 534 548 589 Ljava/lang/Exception; │ │ │ │ + // 536 542 548 589 Ljava/lang/Exception; │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 306, Size: 306 │ │ │ │ + // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ + // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ } │ │ │ │ │ │ │ │ - private static String b(final Context context) { │ │ │ │ - String s = null; │ │ │ │ - while (true) { │ │ │ │ - Label_0168: │ │ │ │ - while (true) { │ │ │ │ - Label_0163: { │ │ │ │ - try { │ │ │ │ - final Context applicationContext = context.getApplicationContext(); │ │ │ │ - try { │ │ │ │ - final String packageName = applicationContext.getPackageName(); │ │ │ │ - try { │ │ │ │ - final ApplicationInfo applicationInfo = applicationContext.getPackageManager().getApplicationInfo(packageName, 128); │ │ │ │ - try { │ │ │ │ - final Bundle metaData = applicationInfo.metaData; │ │ │ │ - if (metaData == null) { │ │ │ │ - break Label_0163; │ │ │ │ - } │ │ │ │ - s = metaData.getString("com.crashlytics.ApiKey"); │ │ │ │ - if (aB.d(s)) { │ │ │ │ - final int a = aB.a(context, "com.crashlytics.ApiKey", "string"); │ │ │ │ - if (a != 0) { │ │ │ │ - s = context.getResources().getString(a); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - if (!aB.d(s)) { │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - if (Crashlytics.x || aB.d(context)) { │ │ │ │ - throw new IllegalArgumentException("Crashlytics could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element \n\t"); │ │ │ │ - } │ │ │ │ - break Label_0168; │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - aB.c("Caught non-fatal exception while retrieving apiKey: " + ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex2) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex3) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex4) {} │ │ │ │ - } │ │ │ │ - s = null; │ │ │ │ - continue; │ │ │ │ + static void b(final String s) { │ │ │ │ + final D d = (D)com.crashlytics.android.internal.v.a().a((Class)D.class); │ │ │ │ + if (d != null) { │ │ │ │ + d.a(new af(s)); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static String c(String s) { │ │ │ │ + final int n = 1024; │ │ │ │ + if (s != null) { │ │ │ │ + s = s.trim(); │ │ │ │ + if (s.length() > n) { │ │ │ │ + s = s.substring(0, n); │ │ │ │ } │ │ │ │ - aB.a("Crashlytics could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element \n\t", (Throwable)null); │ │ │ │ - break; │ │ │ │ } │ │ │ │ return s; │ │ │ │ } │ │ │ │ │ │ │ │ - static ContextWrapper d() { │ │ │ │ - return Crashlytics.o; │ │ │ │ + static String d() { │ │ │ │ + return Crashlytics.k; │ │ │ │ } │ │ │ │ │ │ │ │ static String e() { │ │ │ │ - return Crashlytics.p; │ │ │ │ + return Crashlytics.l; │ │ │ │ } │ │ │ │ │ │ │ │ static String f() { │ │ │ │ - return Crashlytics.q; │ │ │ │ + return Crashlytics.o; │ │ │ │ } │ │ │ │ │ │ │ │ static String g() { │ │ │ │ - return Crashlytics.t; │ │ │ │ + return Crashlytics.n; │ │ │ │ } │ │ │ │ │ │ │ │ public static String getCrashlyticsVersion() { │ │ │ │ - return "1.0.4.15"; │ │ │ │ + return getInstance().getVersion(); │ │ │ │ } │ │ │ │ │ │ │ │ public static Crashlytics getInstance() { │ │ │ │ synchronized (Crashlytics.class) { │ │ │ │ - if (Crashlytics.b == null) { │ │ │ │ - Crashlytics.b = new Crashlytics(); │ │ │ │ + Crashlytics v = (Crashlytics)com.crashlytics.android.internal.v.a().a((Class)Crashlytics.class); │ │ │ │ + if (v == null) { │ │ │ │ + if (Crashlytics.v == null) { │ │ │ │ + Crashlytics.v = new Crashlytics(); │ │ │ │ + } │ │ │ │ + v = Crashlytics.v; │ │ │ │ } │ │ │ │ - return Crashlytics.b; │ │ │ │ + return v; │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public static PinningInfoProvider getPinningInfoProvider() { │ │ │ │ - return Crashlytics.y; │ │ │ │ + return Crashlytics.s; │ │ │ │ } │ │ │ │ │ │ │ │ static String h() { │ │ │ │ - return Crashlytics.s; │ │ │ │ + return Crashlytics.m; │ │ │ │ } │ │ │ │ │ │ │ │ static String i() { │ │ │ │ - return Crashlytics.u; │ │ │ │ - } │ │ │ │ - │ │ │ │ - static File j() { │ │ │ │ - return Crashlytics.w; │ │ │ │ - } │ │ │ │ - │ │ │ │ - static String k() { │ │ │ │ - return Crashlytics.r; │ │ │ │ + return ab.a((Context)Crashlytics.j, "com.crashlytics.ApiEndpoint"); │ │ │ │ } │ │ │ │ │ │ │ │ - static String l() { │ │ │ │ - return aB.a((Context)Crashlytics.o, "com.crashlytics.ApiEndpoint"); │ │ │ │ + static boolean k() { │ │ │ │ + return ab.a().getBoolean("always_send_reports_opt_in", false); │ │ │ │ } │ │ │ │ │ │ │ │ public static void log(final int n, final String s, final String s2) { │ │ │ │ - log(s2); │ │ │ │ - aB.b(n, new StringBuilder().append(s).toString(), new StringBuilder().append(s2).toString()); │ │ │ │ + a(n, s, s2); │ │ │ │ + com.crashlytics.android.internal.v.a().b().a(n, new StringBuilder().append(s).toString(), new StringBuilder().append(s2).toString(), true); │ │ │ │ } │ │ │ │ │ │ │ │ public static void log(final String s) { │ │ │ │ - if (Crashlytics.b == null || Crashlytics.b.h == null) { │ │ │ │ - aB.a("Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging messages.", (Throwable)null); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - Crashlytics.b.h.a(System.currentTimeMillis() - Crashlytics.b.d, s); │ │ │ │ - } │ │ │ │ + a(3, "Crashlytics", s); │ │ │ │ } │ │ │ │ │ │ │ │ public static void logException(final Throwable t) { │ │ │ │ - if (Crashlytics.b == null || Crashlytics.b.h == null) { │ │ │ │ - aB.a("Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging exceptions.", (Throwable)null); │ │ │ │ + final Crashlytics instance = getInstance(); │ │ │ │ + if (instance == null || instance.d == null) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging exceptions.", (Throwable)null); │ │ │ │ + } │ │ │ │ + else if (t == null) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a(5, "Crashlytics", "Crashlytics is ignoring a request to log a null exception."); │ │ │ │ } │ │ │ │ else { │ │ │ │ - Crashlytics.b.h.a(Thread.currentThread(), t); │ │ │ │ + instance.d.a(Thread.currentThread(), t); │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ - static boolean n() { │ │ │ │ - return aB.a().getBoolean("always_send_reports_opt_in", false); │ │ │ │ - } │ │ │ │ - │ │ │ │ public static void setApplicationInstallationIdentifier(final String s) { │ │ │ │ - getInstance().a = a(s); │ │ │ │ + com.crashlytics.android.internal.v.a().a(c(s)); │ │ │ │ } │ │ │ │ │ │ │ │ public static void setBool(final String s, final boolean b) { │ │ │ │ setString(s, Boolean.toString(b)); │ │ │ │ } │ │ │ │ │ │ │ │ public static void setDouble(final String s, final double n) { │ │ │ │ @@ -869,404 +1224,195 @@ │ │ │ │ setString(s, Integer.toString(n)); │ │ │ │ } │ │ │ │ │ │ │ │ public static void setLong(final String s, final long n) { │ │ │ │ setString(s, Long.toString(n)); │ │ │ │ } │ │ │ │ │ │ │ │ - public static void setPinningInfoProvider(final PinningInfoProvider y) { │ │ │ │ - if (Crashlytics.y != y) { │ │ │ │ - Crashlytics.y = y; │ │ │ │ - aB.g(); │ │ │ │ + public static void setPinningInfoProvider(final PinningInfoProvider s) { │ │ │ │ + if (Crashlytics.s != s) { │ │ │ │ + Crashlytics.s = s; │ │ │ │ + if (Crashlytics.t != null) { │ │ │ │ + if (s == null) { │ │ │ │ + Crashlytics.t.a((aG)null); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + Crashlytics.t.a((aG)new k(s)); │ │ │ │ + } │ │ │ │ + } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ - public static void setString(String a, String a2) { │ │ │ │ - if (a == null) { │ │ │ │ - if (Crashlytics.o != null && aB.d((Context)Crashlytics.o)) { │ │ │ │ + public static void setString(String c, String c2) { │ │ │ │ + if (c == null) { │ │ │ │ + if (Crashlytics.j != null && ab.f((Context)Crashlytics.j)) { │ │ │ │ throw new IllegalArgumentException("Custom attribute key cannot be null."); │ │ │ │ } │ │ │ │ - aB.a("Attempting to set custom attribute with null key, ignoring.", (Throwable)null); │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Attempting to set custom attribute with null key, ignoring.", (Throwable)null); │ │ │ │ } │ │ │ │ else { │ │ │ │ - a = a(a); │ │ │ │ - if (getInstance().e.size() < 64 || getInstance().e.containsKey(a)) { │ │ │ │ - if (a2 == null) { │ │ │ │ - a2 = ""; │ │ │ │ + c = c(c); │ │ │ │ + if (getInstance().b.size() < 64 || getInstance().b.containsKey(c)) { │ │ │ │ + if (c2 == null) { │ │ │ │ + c2 = ""; │ │ │ │ } │ │ │ │ else { │ │ │ │ - a2 = a(a2); │ │ │ │ + c2 = c(c2); │ │ │ │ } │ │ │ │ - Crashlytics.b.e.put(a, a2); │ │ │ │ + getInstance().b.put(c, c2); │ │ │ │ } │ │ │ │ else { │ │ │ │ - aB.c("Exceeded maximum number of custom attributes (64)"); │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Exceeded maximum number of custom attributes (64)"); │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public static void setUserEmail(final String s) { │ │ │ │ - getInstance().k = a(s); │ │ │ │ + getInstance().g = c(s); │ │ │ │ } │ │ │ │ │ │ │ │ public static void setUserIdentifier(final String s) { │ │ │ │ - getInstance().j = a(s); │ │ │ │ + getInstance().f = c(s); │ │ │ │ } │ │ │ │ │ │ │ │ public static void setUserName(final String s) { │ │ │ │ - getInstance().l = a(s); │ │ │ │ + getInstance().h = c(s); │ │ │ │ } │ │ │ │ │ │ │ │ public static void start(final Context context) { │ │ │ │ start(context, 1.0f); │ │ │ │ } │ │ │ │ │ │ │ │ - public static void start(final Context context, final float n) { │ │ │ │ - if (context == null) { │ │ │ │ - throw new IllegalArgumentException("context cannot be null."); │ │ │ │ + public static void start(final Context context, final float u) { │ │ │ │ + Crashlytics.u = u; │ │ │ │ + if (!ab.d(context)) { │ │ │ │ + com.crashlytics.android.internal.v.a().a((q)new A()); │ │ │ │ } │ │ │ │ - final String b = b(context); │ │ │ │ - if (b != null) { │ │ │ │ + com.crashlytics.android.internal.v.a(context, new u[] { getInstance(), new D() }); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final Map a() { │ │ │ │ + return Collections.unmodifiableMap((Map)this.b); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final ao b() { │ │ │ │ + return this.e; │ │ │ │ + } │ │ │ │ + │ │ │ │ + protected final void c() { │ │ │ │ + final Context context = super.getContext(); │ │ │ │ + final String a = com.crashlytics.android.internal.r.a(context, false); │ │ │ │ + if (a != null) { │ │ │ │ try { │ │ │ │ - getInstance().a(b, context, n); │ │ │ │ + this.a(a, context, Crashlytics.u); │ │ │ │ } │ │ │ │ catch (CrashlyticsMissingDependencyException ex) { │ │ │ │ throw ex; │ │ │ │ } │ │ │ │ catch (Exception ex2) { │ │ │ │ - aB.a("Crashlytics was not started due to an exception during initialization", (Throwable)ex2); │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Crashlytics was not started due to an exception during initialization", (Throwable)ex2); │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ - private boolean u() { │ │ │ │ - final au a = this.n.a(SettingsController$CacheBehavior.SKIP_CACHE_LOOKUP); │ │ │ │ - this.f.set(a); │ │ │ │ - if (a == null) { │ │ │ │ - aB.a("Failed to force reload of settings from Crashlytics.", (Throwable)null); │ │ │ │ - } │ │ │ │ - return a != null; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static String v() { │ │ │ │ - InputStream openRawResource = null; │ │ │ │ - final String s = "SHA-1"; │ │ │ │ - try { │ │ │ │ - final MessageDigest instance = MessageDigest.getInstance(s); │ │ │ │ - try { │ │ │ │ - final ContextWrapper o = Crashlytics.o; │ │ │ │ - try { │ │ │ │ - final Context applicationContext = o.getApplicationContext(); │ │ │ │ - try { │ │ │ │ - final ApplicationInfo applicationInfo = applicationContext.getApplicationInfo(); │ │ │ │ - try { │ │ │ │ - final int icon = applicationInfo.icon; │ │ │ │ - try { │ │ │ │ - final ContextWrapper o2 = Crashlytics.o; │ │ │ │ - try { │ │ │ │ - openRawResource = o2.getResources().openRawResource(icon); │ │ │ │ - final byte[] array = new byte[1024]; │ │ │ │ - while (true) { │ │ │ │ - final int read = openRawResource.read(array); │ │ │ │ - if (read == -1) { │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - instance.update(array, 0, read); │ │ │ │ - } │ │ │ │ - final MessageDigest messageDigest; │ │ │ │ - messageDigest.digest(); │ │ │ │ - return; │ │ │ │ - } │ │ │ │ - catch (Exception ex) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex2) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex3) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex4) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex5) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex6) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex7) {} │ │ │ │ - finally { │ │ │ │ - aB.a((Closeable)openRawResource, "Failed to close icon input stream."); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static ak w() { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: astore_0 │ │ │ │ - // 2: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 5: astore_1 │ │ │ │ - // 6: aload_1 │ │ │ │ - // 7: invokevirtual android/content/ContextWrapper.getApplicationContext:()Landroid/content/Context; │ │ │ │ - // 10: astore_1 │ │ │ │ - // 11: aload_1 │ │ │ │ - // 12: invokevirtual android/content/Context.getApplicationInfo:()Landroid/content/pm/ApplicationInfo; │ │ │ │ - // 15: astore_1 │ │ │ │ - // 16: aload_1 │ │ │ │ - // 17: getfield android/content/pm/ApplicationInfo.icon:I │ │ │ │ - // 20: istore_2 │ │ │ │ - // 21: getstatic com/crashlytics/android/Crashlytics.o:Landroid/content/ContextWrapper; │ │ │ │ - // 24: astore_3 │ │ │ │ - // 25: aload_3 │ │ │ │ - // 26: invokevirtual android/content/ContextWrapper.getResources:()Landroid/content/res/Resources; │ │ │ │ - // 29: astore_3 │ │ │ │ - // 30: aload_3 │ │ │ │ - // 31: iload_2 │ │ │ │ - // 32: invokevirtual android/content/res/Resources.openRawResource:(I)Ljava/io/InputStream; │ │ │ │ - // 35: astore_3 │ │ │ │ - // 36: aload_3 │ │ │ │ - // 37: invokestatic android/graphics/BitmapFactory.decodeStream:(Ljava/io/InputStream;)Landroid/graphics/Bitmap; │ │ │ │ - // 40: astore 4 │ │ │ │ - // 42: aload 4 │ │ │ │ - // 44: ifnonnull 78 │ │ │ │ - // 47: iconst_5 │ │ │ │ - // 48: istore_2 │ │ │ │ - // 49: ldc_w "Crashlytics" │ │ │ │ - // 52: astore 4 │ │ │ │ - // 54: ldc_w "Crashlytics could not load the application's icon." │ │ │ │ - // 57: astore 5 │ │ │ │ - // 59: iload_2 │ │ │ │ - // 60: aload 4 │ │ │ │ - // 62: aload 5 │ │ │ │ - // 64: invokestatic com/crashlytics/android/aB.a:(ILjava/lang/String;Ljava/lang/String;)V │ │ │ │ - // 67: ldc_w "Failed to close icon input stream." │ │ │ │ - // 70: astore_1 │ │ │ │ - // 71: aload_3 │ │ │ │ - // 72: aload_1 │ │ │ │ - // 73: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 76: aload_0 │ │ │ │ - // 77: areturn │ │ │ │ - // 78: aload 4 │ │ │ │ - // 80: invokestatic com/crashlytics/android/aB.a:(Landroid/graphics/Bitmap;)[B │ │ │ │ - // 83: astore 5 │ │ │ │ - // 85: aload 5 │ │ │ │ - // 87: invokestatic com/crashlytics/android/aB.a:([B)Ljava/lang/String; │ │ │ │ - // 90: astore 6 │ │ │ │ - // 92: new Lcom/crashlytics/android/ak; │ │ │ │ - // 95: astore_1 │ │ │ │ - // 96: aload 4 │ │ │ │ - // 98: invokevirtual android/graphics/Bitmap.getWidth:()I │ │ │ │ - // 101: istore 7 │ │ │ │ - // 103: aload 4 │ │ │ │ - // 105: invokevirtual android/graphics/Bitmap.getHeight:()I │ │ │ │ - // 108: istore 8 │ │ │ │ - // 110: aload_1 │ │ │ │ - // 111: aload 6 │ │ │ │ - // 113: aload 5 │ │ │ │ - // 115: iload 7 │ │ │ │ - // 117: iload 8 │ │ │ │ - // 119: invokespecial com/crashlytics/android/ak.:(Ljava/lang/String;[BII)V │ │ │ │ - // 122: aload_1 │ │ │ │ - // 123: astore_0 │ │ │ │ - // 124: goto 67 │ │ │ │ - // 127: astore_1 │ │ │ │ - // 128: aconst_null │ │ │ │ - // 129: astore_3 │ │ │ │ - // 130: ldc_w "Failed to load icon" │ │ │ │ - // 133: astore 4 │ │ │ │ - // 135: aload 4 │ │ │ │ - // 137: aload_1 │ │ │ │ - // 138: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 141: ldc_w "Failed to close icon input stream." │ │ │ │ - // 144: astore_1 │ │ │ │ - // 145: aload_3 │ │ │ │ - // 146: aload_1 │ │ │ │ - // 147: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 150: goto 76 │ │ │ │ - // 153: astore_1 │ │ │ │ - // 154: aconst_null │ │ │ │ - // 155: astore_3 │ │ │ │ - // 156: aload_1 │ │ │ │ - // 157: astore_0 │ │ │ │ - // 158: aload_3 │ │ │ │ - // 159: ldc_w "Failed to close icon input stream." │ │ │ │ - // 162: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 165: aload_0 │ │ │ │ - // 166: athrow │ │ │ │ - // 167: astore_0 │ │ │ │ - // 168: goto 158 │ │ │ │ - // 171: astore_1 │ │ │ │ - // 172: goto 130 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- ------------------------------------------------- │ │ │ │ - // 2 5 127 130 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 2 5 153 158 Any │ │ │ │ - // 6 10 127 130 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 6 10 153 158 Any │ │ │ │ - // 11 15 127 130 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 11 15 153 158 Any │ │ │ │ - // 16 20 127 130 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 16 20 153 158 Any │ │ │ │ - // 21 24 127 130 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 21 24 153 158 Any │ │ │ │ - // 25 29 127 130 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 25 29 153 158 Any │ │ │ │ - // 31 35 127 130 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 31 35 153 158 Any │ │ │ │ - // 36 40 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 36 40 167 171 Any │ │ │ │ - // 62 67 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 62 67 167 171 Any │ │ │ │ - // 78 83 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 78 83 167 171 Any │ │ │ │ - // 85 90 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 85 90 167 171 Any │ │ │ │ - // 92 95 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 92 95 167 171 Any │ │ │ │ - // 96 101 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 96 101 167 171 Any │ │ │ │ - // 103 108 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 103 108 167 171 Any │ │ │ │ - // 117 122 171 175 Landroid/content/res/Resources$NotFoundException; │ │ │ │ - // 117 122 167 171 Any │ │ │ │ - // 137 141 167 171 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IndexOutOfBoundsException: Index: 95, Size: 95 │ │ │ │ - // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ - // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final Map a() { │ │ │ │ - return Collections.unmodifiableMap((Map)this.e); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final boolean a(final Context context) { │ │ │ │ - return (boolean)this.a(new t(this, context), (Object)true); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final IdManager c() { │ │ │ │ - return this.i; │ │ │ │ - } │ │ │ │ - │ │ │ │ public final void crash() { │ │ │ │ new CrashTest().indexOutOfBounds(); │ │ │ │ } │ │ │ │ │ │ │ │ public final boolean getDebugMode() { │ │ │ │ - return Crashlytics.x; │ │ │ │ + return com.crashlytics.android.internal.v.a().f(); │ │ │ │ } │ │ │ │ │ │ │ │ - final boolean m() { │ │ │ │ - return (boolean)this.a(new s(this), (Object)false); │ │ │ │ + public final String getVersion() { │ │ │ │ + return com.crashlytics.android.internal.v.a().getVersion(); │ │ │ │ } │ │ │ │ │ │ │ │ - final E o() { │ │ │ │ - return this.h; │ │ │ │ + final boolean j() { │ │ │ │ + return (boolean)aS.a().a((aU)new l(this), (Object)false); │ │ │ │ } │ │ │ │ │ │ │ │ - final String p() { │ │ │ │ - String j; │ │ │ │ - if (this.i.a()) { │ │ │ │ - j = this.j; │ │ │ │ + final v l() { │ │ │ │ + return this.d; │ │ │ │ + } │ │ │ │ + │ │ │ │ + final String m() { │ │ │ │ + String f; │ │ │ │ + if (this.e.a()) { │ │ │ │ + f = this.f; │ │ │ │ } │ │ │ │ else { │ │ │ │ - j = null; │ │ │ │ + f = null; │ │ │ │ } │ │ │ │ - return j; │ │ │ │ + return f; │ │ │ │ } │ │ │ │ │ │ │ │ - final String q() { │ │ │ │ - String k; │ │ │ │ - if (this.i.a()) { │ │ │ │ - k = this.k; │ │ │ │ + final String n() { │ │ │ │ + String g; │ │ │ │ + if (this.e.a()) { │ │ │ │ + g = this.g; │ │ │ │ } │ │ │ │ else { │ │ │ │ - k = null; │ │ │ │ + g = null; │ │ │ │ } │ │ │ │ - return k; │ │ │ │ + return g; │ │ │ │ } │ │ │ │ │ │ │ │ - final String r() { │ │ │ │ - String l; │ │ │ │ - if (this.i.a()) { │ │ │ │ - l = this.l; │ │ │ │ + final String o() { │ │ │ │ + String h; │ │ │ │ + if (this.e.a()) { │ │ │ │ + h = this.h; │ │ │ │ } │ │ │ │ else { │ │ │ │ - l = null; │ │ │ │ + h = null; │ │ │ │ } │ │ │ │ - return l; │ │ │ │ + return h; │ │ │ │ } │ │ │ │ │ │ │ │ - final ab s() { │ │ │ │ - return (ab)this.a(new u(this), (Object)null); │ │ │ │ + final boolean p() { │ │ │ │ + return (boolean)aS.a().a((aU)new m(this), (Object)true); │ │ │ │ } │ │ │ │ │ │ │ │ - public final void setDebugMode(final boolean x) { │ │ │ │ - Crashlytics.x = x; │ │ │ │ - int c; │ │ │ │ - if (x) { │ │ │ │ - c = 3; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - c = 4; │ │ │ │ - } │ │ │ │ - Crashlytics.c = c; │ │ │ │ + final V q() { │ │ │ │ + return (V)aS.a().a((aU)new n(this), (Object)null); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final aR r() { │ │ │ │ + return (aR)aS.a().a((aU)new o(this), (Object)null); │ │ │ │ } │ │ │ │ │ │ │ │ - public final void setListener(final CrashlyticsListener g) { │ │ │ │ - this.g = g; │ │ │ │ + public final void setDebugMode(final boolean b) { │ │ │ │ + com.crashlytics.android.internal.v.a().a(b); │ │ │ │ } │ │ │ │ │ │ │ │ - final ax t() { │ │ │ │ - return (ax)this.a(new v(this), (Object)null); │ │ │ │ + public final void setListener(final CrashlyticsListener c) { │ │ │ │ + this.c = c; │ │ │ │ } │ │ │ │ │ │ │ │ public final boolean verifyPinning(final URL url) { │ │ │ │ try { │ │ │ │ - Label_0058: { │ │ │ │ - if (Crashlytics.y == null) { │ │ │ │ - break Label_0058; │ │ │ │ + Label_0059: { │ │ │ │ + if (getPinningInfoProvider() == null) { │ │ │ │ + break Label_0059; │ │ │ │ } │ │ │ │ - final HttpRequest a = HttpRequest.a(url); │ │ │ │ + final av t = Crashlytics.t; │ │ │ │ try { │ │ │ │ - final PinningInfoProvider y = Crashlytics.y; │ │ │ │ + final ax a = ax.a; │ │ │ │ try { │ │ │ │ - final SSLSocketFactory a2 = aB.a(y); │ │ │ │ + final ay a2 = t.a(a, url.toString()); │ │ │ │ try { │ │ │ │ - final HttpURLConnection a3 = a.a(); │ │ │ │ + final HttpURLConnection a3 = a2.a(); │ │ │ │ try { │ │ │ │ - final HttpsURLConnection httpsURLConnection = (HttpsURLConnection)a3; │ │ │ │ - httpsURLConnection.setSSLSocketFactory(a2); │ │ │ │ - httpsURLConnection.setInstanceFollowRedirects(false); │ │ │ │ - a.b(); │ │ │ │ + ((HttpsURLConnection)a3).setInstanceFollowRedirects(false); │ │ │ │ + a2.b(); │ │ │ │ return true; │ │ │ │ b = false; │ │ │ │ return b; │ │ │ │ } │ │ │ │ catch (Exception ex) { │ │ │ │ - aB.a("Could not verify SSL pinning", (Throwable)ex); │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Could not verify SSL pinning", (Throwable)ex); │ │ │ │ return false; │ │ │ │ } │ │ │ │ } │ │ │ │ catch (Exception ex2) {} │ │ │ │ } │ │ │ │ catch (Exception ex3) {} │ │ │ │ } │ │ ├── com/crashlytics/android/CrashlyticsMissingDependencyException.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,16 +1,43 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ +import java.io.UnsupportedEncodingException; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ import java.net.URLEncoder; │ │ │ │ │ │ │ │ public class CrashlyticsMissingDependencyException extends RuntimeException │ │ │ │ { │ │ │ │ private static final long serialVersionUID = -1151536370019872859L; │ │ │ │ │ │ │ │ CrashlyticsMissingDependencyException(final String s, final String s2) { │ │ │ │ + super(a(s, s2)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static String a(final String s, final String s2) { │ │ │ │ final StringBuilder sb = new StringBuilder(); │ │ │ │ - sb.append("\nSomething is missing! Find it here: \n"); │ │ │ │ - sb.append(String.format("http://www.crashlytics.com/api/v1/%s/android/confirm/%s", URLEncoder.encode(s), URLEncoder.encode(s2)) + "\n"); │ │ │ │ - super(sb.toString()); │ │ │ │ + final String s3 = "\nThis app relies on Crashlytics. Configure your build environment here: \n"; │ │ │ │ + final StringBuilder sb2 = sb; │ │ │ │ + try { │ │ │ │ + sb2.append(s3); │ │ │ │ + try { │ │ │ │ + final StringBuilder sb3 = new StringBuilder(); │ │ │ │ + final String s4 = "https://crashlytics.com/register/%s/android/%s"; │ │ │ │ + final Object[] array = { URLEncoder.encode(s, "UTF-8"), URLEncoder.encode(s2, "UTF-8") }; │ │ │ │ + final String s5 = s4; │ │ │ │ + try { │ │ │ │ + final StringBuilder append = sb3.append(String.format(s5, array)).append("\n"); │ │ │ │ + try { │ │ │ │ + sb.append(append.toString()); │ │ │ │ + return sb.toString(); │ │ │ │ + } │ │ │ │ + catch (UnsupportedEncodingException ex) { │ │ │ │ + v.a().b().a("Crashlytics", "Could not find UTF-8 encoding.", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (UnsupportedEncodingException ex2) {} │ │ │ │ + } │ │ │ │ + catch (UnsupportedEncodingException ex3) {} │ │ │ │ + } │ │ │ │ + catch (UnsupportedEncodingException ex4) {} │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/D.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,7 +1,21 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -interface D │ │ │ │ +import java.io.File; │ │ │ │ +import com.crashlytics.android.internal.aa; │ │ │ │ + │ │ │ │ +final class D extends aa │ │ │ │ { │ │ │ │ - Object a(final au p0); │ │ │ │ + private /* synthetic */ File a; │ │ │ │ + │ │ │ │ + D(final v v, final File a) { │ │ │ │ + this.a = a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a() { │ │ │ │ + final V q = Crashlytics.getInstance().q(); │ │ │ │ + if (q != null) { │ │ │ │ + new com.crashlytics.android.aa(q).a(new Z(this.a, v.j())); │ │ │ │ + } │ │ │ │ + } │ │ │ │ } │ │ ├── com/crashlytics/android/E.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,3931 +1,15 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.os.Process; │ │ │ │ -import android.content.ContextWrapper; │ │ │ │ -import java.util.UUID; │ │ │ │ -import java.io.Writer; │ │ │ │ -import java.io.OutputStream; │ │ │ │ -import java.util.Arrays; │ │ │ │ -import java.util.TreeMap; │ │ │ │ -import java.io.Closeable; │ │ │ │ -import java.util.LinkedList; │ │ │ │ -import android.os.Environment; │ │ │ │ -import android.content.Context; │ │ │ │ -import java.util.Date; │ │ │ │ -import java.util.concurrent.Future; │ │ │ │ -import java.util.concurrent.RejectedExecutionException; │ │ │ │ -import java.io.IOException; │ │ │ │ -import java.util.Iterator; │ │ │ │ -import android.content.IntentFilter; │ │ │ │ -import java.util.concurrent.Callable; │ │ │ │ -import java.util.concurrent.TimeUnit; │ │ │ │ -import java.util.concurrent.ThreadFactory; │ │ │ │ -import java.util.concurrent.Executors; │ │ │ │ -import java.util.concurrent.atomic.AtomicLong; │ │ │ │ -import java.util.Collections; │ │ │ │ -import java.util.List; │ │ │ │ -import android.app.ActivityManager$RunningAppProcessInfo; │ │ │ │ -import java.util.concurrent.ExecutorService; │ │ │ │ -import android.content.BroadcastReceiver; │ │ │ │ -import java.io.File; │ │ │ │ -import java.util.concurrent.atomic.AtomicBoolean; │ │ │ │ -import java.util.concurrent.atomic.AtomicInteger; │ │ │ │ -import java.util.Map; │ │ │ │ -import java.util.regex.Pattern; │ │ │ │ -import java.util.Comparator; │ │ │ │ -import java.io.FilenameFilter; │ │ │ │ - │ │ │ │ -final class E implements UncaughtExceptionHandler │ │ │ │ +final class E implements Runnable │ │ │ │ { │ │ │ │ - static final FilenameFilter a; │ │ │ │ - private static Comparator b; │ │ │ │ - private static Comparator c; │ │ │ │ - private static final Pattern d; │ │ │ │ - private static final Map e; │ │ │ │ - private static final k f; │ │ │ │ - private final AtomicInteger g; │ │ │ │ - private final AtomicBoolean h; │ │ │ │ - private final int i; │ │ │ │ - private final UncaughtExceptionHandler j; │ │ │ │ - private final File k; │ │ │ │ - private final AtomicBoolean l; │ │ │ │ - private final String m; │ │ │ │ - private final BroadcastReceiver n; │ │ │ │ - private final BroadcastReceiver o; │ │ │ │ - private final k p; │ │ │ │ - private final k q; │ │ │ │ - private final ExecutorService r; │ │ │ │ - private ActivityManager$RunningAppProcessInfo s; │ │ │ │ - private QueueFile t; │ │ │ │ - private boolean u; │ │ │ │ - private Thread[] v; │ │ │ │ - private List w; │ │ │ │ - private StackTraceElement[] x; │ │ │ │ - │ │ │ │ - static { │ │ │ │ - a = (FilenameFilter)new F(); │ │ │ │ - E.b = (Comparator)new O(); │ │ │ │ - E.c = (Comparator)new P(); │ │ │ │ - new Q(); │ │ │ │ - d = Pattern.compile("([\\d|A-Z|a-z]{12}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{12}).+"); │ │ │ │ - e = Collections.singletonMap("X-CRASHLYTICS-SEND-FLAGS", "1"); │ │ │ │ - f = k.a("0"); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public E(final UncaughtExceptionHandler uncaughtExceptionHandler, final CrashlyticsListener crashlyticsListener, final String s) { │ │ │ │ - final String s2 = "Crashlytics Exception Handler"; │ │ │ │ - final ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor((ThreadFactory)new ag(s2, new AtomicLong(1L))); │ │ │ │ - Runtime.getRuntime().addShutdownHook(new Thread((Runnable)new ah(s2, singleThreadExecutor, (long)2, TimeUnit.SECONDS), "Crashlytics Shutdown Hook for " + s2)); │ │ │ │ - this(uncaughtExceptionHandler, crashlyticsListener, singleThreadExecutor, s); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private E(final UncaughtExceptionHandler j, final CrashlyticsListener crashlyticsListener, final ExecutorService r, final String s) { │ │ │ │ - final int n = 1; │ │ │ │ - this.g = new AtomicInteger(0); │ │ │ │ - this.h = new AtomicBoolean(false); │ │ │ │ - this.j = j; │ │ │ │ - this.r = r; │ │ │ │ - this.l = new AtomicBoolean(false); │ │ │ │ - this.k = Crashlytics.j(); │ │ │ │ - final Object[] array = new Object[n]; │ │ │ │ - array[0] = Crashlytics.getCrashlyticsVersion(); │ │ │ │ - this.m = String.format("Crashlytics Android SDK/%s", array); │ │ │ │ - this.a((Callable)new I(this)); │ │ │ │ - this.i = 8; │ │ │ │ - aB.c("Checking for previous crash marker."); │ │ │ │ - final File file = new File(Crashlytics.j(), "crash_marker"); │ │ │ │ - Label_0199: │ │ │ │ - while (true) { │ │ │ │ - if (!file.exists()) { │ │ │ │ - break Label_0199; │ │ │ │ - } │ │ │ │ - file.delete(); │ │ │ │ - if (crashlyticsListener == null) { │ │ │ │ - break Label_0199; │ │ │ │ - } │ │ │ │ - while (true) { │ │ │ │ - while (true) { │ │ │ │ - try { │ │ │ │ - crashlyticsListener.crashlyticsDidDetectCrashDuringPreviousExecution(); │ │ │ │ - this.p = com.crashlytics.android.k.a(Crashlytics.e()); │ │ │ │ - if (s == null) { │ │ │ │ - final k a = null; │ │ │ │ - this.q = a; │ │ │ │ - this.o = (BroadcastReceiver)new R(this); │ │ │ │ - final IntentFilter intentFilter = new IntentFilter("android.intent.action.ACTION_POWER_CONNECTED"); │ │ │ │ - this.n = (BroadcastReceiver)new S(this); │ │ │ │ - final IntentFilter intentFilter2 = new IntentFilter("android.intent.action.ACTION_POWER_DISCONNECTED"); │ │ │ │ - Crashlytics.d().registerReceiver(this.o, intentFilter); │ │ │ │ - Crashlytics.d().registerReceiver(this.n, intentFilter2); │ │ │ │ - this.h.set(n != 0); │ │ │ │ - return; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - aB.a("Exception thrown by CrashlyticsListener while notifying of previous crash.", (Throwable)ex); │ │ │ │ - continue Label_0199; │ │ │ │ - } │ │ │ │ - final k a = com.crashlytics.android.k.a(s.replace((CharSequence)"-", (CharSequence)"")); │ │ │ │ - continue; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int a(final float n, final int n2, final boolean b, final int n3, final long n4, final long n5) { │ │ │ │ - return p.b(1, n) + 0 + p.f(2, n2) + p.b(3, b) + p.d(4, n3) + p.b(5, n4) + p.b(6, n5); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private int a(final int n, final k k, final k i, final int n2, final long n3, final long n4, final boolean b, final Map map, final int n5, final k j, final k l) { │ │ │ │ - final int n6 = com.crashlytics.android.p.e(3, n) + (com.crashlytics.android.p.b(1, k) + 0); │ │ │ │ - int b2; │ │ │ │ - if (i == null) { │ │ │ │ - b2 = 0; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - b2 = com.crashlytics.android.p.b(4, i); │ │ │ │ - } │ │ │ │ - final int n7 = b2 + n6 + com.crashlytics.android.p.d(5, n2) + com.crashlytics.android.p.b(6, n3) + com.crashlytics.android.p.b(7, n4) + com.crashlytics.android.p.b(10, b); │ │ │ │ - int n8; │ │ │ │ - if (map != null) { │ │ │ │ - final Iterator> iterator = map.entrySet().iterator(); │ │ │ │ - n8 = n7; │ │ │ │ - while (iterator.hasNext()) { │ │ │ │ - final Map.Entry entry = (Map.Entry)iterator.next(); │ │ │ │ - final int a = a(entry.getKey(), (String)entry.getValue()); │ │ │ │ - n8 += a + (com.crashlytics.android.p.a(11) + com.crashlytics.android.p.c(a)); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n8 = n7; │ │ │ │ - } │ │ │ │ - final int n9 = n8 + com.crashlytics.android.p.d(12, n5); │ │ │ │ - int b3; │ │ │ │ - if (j == null) { │ │ │ │ - b3 = 0; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - b3 = com.crashlytics.android.p.b(13, j); │ │ │ │ - } │ │ │ │ - final int n10 = n9 + b3; │ │ │ │ - int b4; │ │ │ │ - if (l == null) { │ │ │ │ - b4 = 0; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - b4 = com.crashlytics.android.p.b(14, l); │ │ │ │ - } │ │ │ │ - return b4 + n10; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int a(final IdManager$DeviceIdentifierType idManager$DeviceIdentifierType, final String s) { │ │ │ │ - return p.e(1, idManager$DeviceIdentifierType.protobufIndex) + p.b(2, k.a(s)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int a(final StackTraceElement stackTraceElement, final boolean b) { │ │ │ │ - final int n = 2; │ │ │ │ - final int n2 = 1; │ │ │ │ - int n3; │ │ │ │ - if (stackTraceElement.isNativeMethod()) { │ │ │ │ - n3 = p.b(n2, (long)Math.max(stackTraceElement.getLineNumber(), 0)) + 0; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n3 = p.b(n2, 0L) + 0; │ │ │ │ - } │ │ │ │ - int n4 = n3 + p.b(n, k.a(stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName())); │ │ │ │ - if (stackTraceElement.getFileName() != null) { │ │ │ │ - n4 += p.b(3, k.a(stackTraceElement.getFileName())); │ │ │ │ - } │ │ │ │ - int n5; │ │ │ │ - if (!stackTraceElement.isNativeMethod() && stackTraceElement.getLineNumber() > 0) { │ │ │ │ - n5 = n4 + p.b(4, (long)stackTraceElement.getLineNumber()); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n5 = n4; │ │ │ │ - } │ │ │ │ - final int n6 = 5; │ │ │ │ - int n7; │ │ │ │ - if (b) { │ │ │ │ - n7 = n; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n7 = 0; │ │ │ │ - } │ │ │ │ - return p.d(n6, n7) + n5; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int a(final String s, String s2) { │ │ │ │ - final int b = p.b(1, k.a(s)); │ │ │ │ - final int n = 2; │ │ │ │ - if (s2 == null) { │ │ │ │ - s2 = ""; │ │ │ │ - } │ │ │ │ - return b + p.b(n, k.a(s2)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private int a(final Thread thread, final Throwable t, final Map map) { │ │ │ │ - final int n = 1; │ │ │ │ - final int b = this.b(thread, t); │ │ │ │ - final int n2 = b + (com.crashlytics.android.p.a(n) + com.crashlytics.android.p.c(b)) + 0; │ │ │ │ - int n3; │ │ │ │ - if (map != null) { │ │ │ │ - final Iterator> iterator = map.entrySet().iterator(); │ │ │ │ - n3 = n2; │ │ │ │ - while (iterator.hasNext()) { │ │ │ │ - final Map.Entry entry = (Map.Entry)iterator.next(); │ │ │ │ - final int a = a(entry.getKey(), (String)entry.getValue()); │ │ │ │ - n3 += a + (com.crashlytics.android.p.a(2) + com.crashlytics.android.p.c(a)); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n3 = n2; │ │ │ │ - } │ │ │ │ - if (this.s != null) { │ │ │ │ - final int n4 = 3; │ │ │ │ - int n5; │ │ │ │ - if (this.s.importance != 100) { │ │ │ │ - n5 = n; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n5 = 0; │ │ │ │ - } │ │ │ │ - n3 += com.crashlytics.android.p.b(n4, (boolean)(n5 != 0)); │ │ │ │ - } │ │ │ │ - return com.crashlytics.android.p.d(4, Crashlytics.d().getResources().getConfiguration().orientation) + n3; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private int a(final Thread thread, final StackTraceElement[] array, final int n, final boolean b) { │ │ │ │ - int n2 = com.crashlytics.android.p.d(2, n) + (com.crashlytics.android.p.b(1, com.crashlytics.android.k.a(thread.getName())) + 0); │ │ │ │ - for (int length = array.length, i = 0; i < length; ++i) { │ │ │ │ - final int a = a(array[i], b); │ │ │ │ - n2 += a + (com.crashlytics.android.p.a(3) + com.crashlytics.android.p.c(a)); │ │ │ │ - } │ │ │ │ - return n2; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private int a(final Throwable t, final int n) { │ │ │ │ - final int n2 = 1; │ │ │ │ - int n3 = 0; │ │ │ │ - int n4 = com.crashlytics.android.p.b(n2, com.crashlytics.android.k.a(t.getClass().getName())) + 0; │ │ │ │ - final String localizedMessage = t.getLocalizedMessage(); │ │ │ │ - if (localizedMessage != null) { │ │ │ │ - n4 += com.crashlytics.android.p.b(3, com.crashlytics.android.k.a(localizedMessage)); │ │ │ │ - } │ │ │ │ - final StackTraceElement[] stackTrace = t.getStackTrace(); │ │ │ │ - int n5; │ │ │ │ - for (int length = stackTrace.length, i = 0; i < length; ++i, n4 = n5) { │ │ │ │ - final int a = a(stackTrace[i], n2 != 0); │ │ │ │ - n5 = a + (com.crashlytics.android.p.a(4) + com.crashlytics.android.p.c(a)) + n4; │ │ │ │ - } │ │ │ │ - Throwable t2 = t.getCause(); │ │ │ │ - if (t2 != null) { │ │ │ │ - if (n < 8) { │ │ │ │ - final int a2 = this.a(t2, n + 1); │ │ │ │ - n4 += a2 + (com.crashlytics.android.p.a(6) + com.crashlytics.android.p.c(a2)); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - while (t2 != null) { │ │ │ │ - t2 = t2.getCause(); │ │ │ │ - ++n3; │ │ │ │ - } │ │ │ │ - n4 += com.crashlytics.android.p.d(7, n3); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - return n4; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private k a(final QueueFile queueFile) { │ │ │ │ - k a = null; │ │ │ │ - if (queueFile == null) { │ │ │ │ - a = null; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - final int[] array = { 0 }; │ │ │ │ - final byte[] array2 = new byte[queueFile.a()]; │ │ │ │ - try { │ │ │ │ - final H h = new H(this, array2, array); │ │ │ │ - try { │ │ │ │ - queueFile.a((QueueFile$ElementReader)h); │ │ │ │ - a = com.crashlytics.android.k.a(array2, 0, array[0]); │ │ │ │ - } │ │ │ │ - catch (IOException ex) { │ │ │ │ - aB.a("A problem occurred while reading the Crashlytics log file.", (Throwable)ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (IOException ex2) {} │ │ │ │ - } │ │ │ │ - return a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private Object a(final Callable callable) { │ │ │ │ - Object value = null; │ │ │ │ - try { │ │ │ │ - final Future submit = this.r.submit((Callable)callable); │ │ │ │ - try { │ │ │ │ - value = submit.get(); │ │ │ │ - return value; │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex2) { │ │ │ │ - aB.c("Executor is shut down because we're handling a fatal crash."); │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - aB.a("Failed to execute task.", (Throwable)ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex3) {} │ │ │ │ - catch (Exception ex4) {} │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static String a(final File file) { │ │ │ │ - return file.getName().substring(0, 35); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private Future a(final Runnable runnable) { │ │ │ │ - try { │ │ │ │ - final ExecutorService r = this.r; │ │ │ │ - try { │ │ │ │ - final M m = new M(this, runnable); │ │ │ │ - final ExecutorService executorService = r; │ │ │ │ - try { │ │ │ │ - return executorService.submit((Runnable)m); │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex) { │ │ │ │ - aB.c("Executor is shut down because we're handling a fatal crash."); │ │ │ │ - final Future submit = null; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex2) {} │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex3) {} │ │ │ │ - } │ │ │ │ - │ │ │ │ - static void a(final QueueFile queueFile, final int n, final long n2, final String s) { │ │ │ │ - if (queueFile != null) { │ │ │ │ - while (true) { │ │ │ │ - Label_0251: { │ │ │ │ - if (s != null) { │ │ │ │ - break Label_0251; │ │ │ │ - } │ │ │ │ - String string = "null"; │ │ │ │ - try { │ │ │ │ - Label_0087: { │ │ │ │ - if (string.length() <= 16384) { │ │ │ │ - break Label_0087; │ │ │ │ - } │ │ │ │ - final StringBuilder append = new StringBuilder("...").append(string.substring(string.length() - 16384)); │ │ │ │ - try { │ │ │ │ - string = append.toString(); │ │ │ │ - final String replaceAll = string.replaceAll("\r", " ").replaceAll("\n", " "); │ │ │ │ - final String s2 = "%d %s%n"; │ │ │ │ - final Object[] array = { n2, replaceAll }; │ │ │ │ - final String s3 = s2; │ │ │ │ - try { │ │ │ │ - queueFile.a(String.format(s3, array).getBytes("UTF-8")); │ │ │ │ - while (!queueFile.b() && queueFile.a() > 65536) { │ │ │ │ - queueFile.c(); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (IOException ex) { │ │ │ │ - aB.a("There was a problem writing to the Crashlytics log.", (Throwable)ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (IOException ex2) {} │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (IOException ex3) {} │ │ │ │ - } │ │ │ │ - String string = s; │ │ │ │ - continue; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static void a(final n n) { │ │ │ │ - if (n == null) { │ │ │ │ - return; │ │ │ │ - } │ │ │ │ - try { │ │ │ │ - n.a(); │ │ │ │ - } │ │ │ │ - catch (IOException ex) { │ │ │ │ - aB.a("Error closing session file stream in the presence of an exception", (Throwable)ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p4, final int n, final StackTraceElement stackTraceElement, final boolean b) { │ │ │ │ - int n2 = 4; │ │ │ │ - final int n3 = 2; │ │ │ │ - final int n4 = 1; │ │ │ │ - p4.g(n, n3); │ │ │ │ - p4.b(a(stackTraceElement, b)); │ │ │ │ - if (stackTraceElement.isNativeMethod()) { │ │ │ │ - p4.a(n4, (long)Math.max(stackTraceElement.getLineNumber(), 0)); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - p4.a(n4, 0L); │ │ │ │ - } │ │ │ │ - p4.a(n3, com.crashlytics.android.k.a(stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName())); │ │ │ │ - if (stackTraceElement.getFileName() != null) { │ │ │ │ - p4.a(3, com.crashlytics.android.k.a(stackTraceElement.getFileName())); │ │ │ │ - } │ │ │ │ - if (!stackTraceElement.isNativeMethod() && stackTraceElement.getLineNumber() > 0) { │ │ │ │ - p4.a(n2, (long)stackTraceElement.getLineNumber()); │ │ │ │ - } │ │ │ │ - final int n5 = 5; │ │ │ │ - if (!b) { │ │ │ │ - n2 = 0; │ │ │ │ - } │ │ │ │ - p4.a(n5, n2); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static void a(final p p0, final File p1) { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: istore_2 │ │ │ │ - // 2: aload_1 │ │ │ │ - // 3: invokevirtual java/io/File.exists:()Z │ │ │ │ - // 6: istore_3 │ │ │ │ - // 7: iload_3 │ │ │ │ - // 8: ifeq 113 │ │ │ │ - // 11: aload_1 │ │ │ │ - // 12: invokevirtual java/io/File.length:()J │ │ │ │ - // 15: lstore 4 │ │ │ │ - // 17: lload 4 │ │ │ │ - // 19: l2i │ │ │ │ - // 20: istore_3 │ │ │ │ - // 21: iload_3 │ │ │ │ - // 22: newarray B │ │ │ │ - // 24: astore 6 │ │ │ │ - // 26: new Ljava/io/FileInputStream; │ │ │ │ - // 29: astore 7 │ │ │ │ - // 31: aload 7 │ │ │ │ - // 33: aload_1 │ │ │ │ - // 34: invokespecial java/io/FileInputStream.:(Ljava/io/File;)V │ │ │ │ - // 37: iconst_0 │ │ │ │ - // 38: istore_3 │ │ │ │ - // 39: aconst_null │ │ │ │ - // 40: astore 8 │ │ │ │ - // 42: aload 6 │ │ │ │ - // 44: arraylength │ │ │ │ - // 45: istore_2 │ │ │ │ - // 46: iload_3 │ │ │ │ - // 47: iload_2 │ │ │ │ - // 48: if_icmpge 78 │ │ │ │ - // 51: aload 6 │ │ │ │ - // 53: arraylength │ │ │ │ - // 54: iload_3 │ │ │ │ - // 55: isub │ │ │ │ - // 56: istore_2 │ │ │ │ - // 57: aload 7 │ │ │ │ - // 59: aload 6 │ │ │ │ - // 61: iload_3 │ │ │ │ - // 62: iload_2 │ │ │ │ - // 63: invokevirtual java/io/FileInputStream.read:([BII)I │ │ │ │ - // 66: istore_2 │ │ │ │ - // 67: iload_2 │ │ │ │ - // 68: iflt 78 │ │ │ │ - // 71: iload_3 │ │ │ │ - // 72: iload_2 │ │ │ │ - // 73: iadd │ │ │ │ - // 74: istore_3 │ │ │ │ - // 75: goto 42 │ │ │ │ - // 78: ldc_w "Failed to close file input stream." │ │ │ │ - // 81: astore 8 │ │ │ │ - // 83: aload 7 │ │ │ │ - // 85: aload 8 │ │ │ │ - // 87: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 90: aload_0 │ │ │ │ - // 91: aload 6 │ │ │ │ - // 93: invokevirtual com/crashlytics/android/p.a:([B)V │ │ │ │ - // 96: return │ │ │ │ - // 97: astore 8 │ │ │ │ - // 99: aconst_null │ │ │ │ - // 100: astore 7 │ │ │ │ - // 102: aload 7 │ │ │ │ - // 104: ldc_w "Failed to close file input stream." │ │ │ │ - // 107: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 110: aload 8 │ │ │ │ - // 112: athrow │ │ │ │ - // 113: new Ljava/lang/StringBuilder; │ │ │ │ - // 116: astore 8 │ │ │ │ - // 118: aload 8 │ │ │ │ - // 120: ldc_w "Tried to include a file that doesn't exist: " │ │ │ │ - // 123: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 126: aload_1 │ │ │ │ - // 127: invokevirtual java/io/File.getName:()Ljava/lang/String; │ │ │ │ - // 130: astore 7 │ │ │ │ - // 132: aload 8 │ │ │ │ - // 134: aload 7 │ │ │ │ - // 136: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 139: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 142: astore 8 │ │ │ │ - // 144: aload 8 │ │ │ │ - // 146: aconst_null │ │ │ │ - // 147: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 150: goto 96 │ │ │ │ - // 153: astore 8 │ │ │ │ - // 155: goto 102 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- ---- │ │ │ │ - // 26 29 97 102 Any │ │ │ │ - // 33 37 97 102 Any │ │ │ │ - // 42 45 153 158 Any │ │ │ │ - // 51 54 153 158 Any │ │ │ │ - // 62 66 153 158 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IllegalStateException: Expression is linked from several locations: Label_0042: │ │ │ │ - // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p2, final String s) { │ │ │ │ - final String[] array = { "SessionUser", "SessionApp", "SessionOS", "SessionDevice" }; │ │ │ │ - for (int length = array.length, i = 0; i < length; ++i) { │ │ │ │ - final String s2 = array[i]; │ │ │ │ - final File[] a = this.a((FilenameFilter)new X(s + s2)); │ │ │ │ - if (a.length == 0) { │ │ │ │ - aB.a("Can't find " + s2 + " data for session ID " + s, (Throwable)null); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - aB.c("Collecting " + s2 + " data for session ID " + s); │ │ │ │ - a(p2, a[0]); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p3, final Thread thread, final Throwable t) { │ │ │ │ - p3.g(1, 2); │ │ │ │ - p3.b(this.b(thread, t)); │ │ │ │ - this.a(p3, thread, this.x, 4, true); │ │ │ │ - for (int length = this.v.length, i = 0; i < length; ++i) { │ │ │ │ - this.a(p3, this.v[i], (StackTraceElement[])this.w.get(i), 0, false); │ │ │ │ - } │ │ │ │ - this.a(p3, t, 1, 2); │ │ │ │ - p3.g(3, 2); │ │ │ │ - p3.b(p()); │ │ │ │ - p3.a(1, E.f); │ │ │ │ - p3.a(2, E.f); │ │ │ │ - p3.a(3, 0L); │ │ │ │ - p3.g(4, 2); │ │ │ │ - p3.b(this.o()); │ │ │ │ - p3.a(1, 0L); │ │ │ │ - p3.a(2, 0L); │ │ │ │ - p3.a(3, this.p); │ │ │ │ - if (this.q != null) { │ │ │ │ - p3.a(4, this.q); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p5, final Thread thread, final Throwable t, final String s, final boolean b) { │ │ │ │ - final long n = new Date().getTime() / 1000L; │ │ │ │ - final float b2 = aB.b((Context)Crashlytics.d()); │ │ │ │ - final int a = aB.a(this.u); │ │ │ │ - final boolean c = aB.c((Context)Crashlytics.d()); │ │ │ │ - final int orientation = Crashlytics.d().getResources().getConfiguration().orientation; │ │ │ │ - final long a2 = aB.a((Context)Crashlytics.d()); │ │ │ │ - final long b3 = aB.b(Environment.getDataDirectory().getPath()); │ │ │ │ - this.s = aB.a(Crashlytics.e(), (Context)Crashlytics.d()); │ │ │ │ - this.w = new LinkedList(); │ │ │ │ - this.x = t.getStackTrace(); │ │ │ │ - if (b) { │ │ │ │ - final Map allStackTraces = Thread.getAllStackTraces(); │ │ │ │ - this.v = new Thread[allStackTraces.size()]; │ │ │ │ - final Iterator> iterator = allStackTraces.entrySet().iterator(); │ │ │ │ - int n2 = 0; │ │ │ │ - while (iterator.hasNext()) { │ │ │ │ - final Map.Entry entry = (Map.Entry)iterator.next(); │ │ │ │ - this.v[n2] = entry.getKey(); │ │ │ │ - this.w.add(entry.getValue()); │ │ │ │ - ++n2; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - this.v = new Thread[0]; │ │ │ │ - } │ │ │ │ - final k a3 = this.a(this.t); │ │ │ │ - if (a3 == null) { │ │ │ │ - aB.c("No log data to include with this event."); │ │ │ │ - } │ │ │ │ - aB.a((Closeable)this.t, "There was a problem closing the Crashlytics log file."); │ │ │ │ - this.t = null; │ │ │ │ - Map map; │ │ │ │ - if (!aB.a((Context)Crashlytics.d(), "com.crashlytics.CollectCustomKeys", true)) { │ │ │ │ - map = new TreeMap(); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - final Map a4 = Crashlytics.getInstance().a(); │ │ │ │ - final int n3; │ │ │ │ - if (a4 != null && a4.size() > (n3 = 1)) { │ │ │ │ - map = new TreeMap(a4); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - map = (Map)a4; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - p5.g(10, 2); │ │ │ │ - final int n4 = com.crashlytics.android.p.b(1, n) + 0 + com.crashlytics.android.p.b(2, com.crashlytics.android.k.a(s)); │ │ │ │ - final int a5 = this.a(thread, t, map); │ │ │ │ - final int n5 = n4 + (a5 + (com.crashlytics.android.p.a(3) + com.crashlytics.android.p.c(a5))); │ │ │ │ - final int a6 = a(b2, a, c, orientation, a2, b3); │ │ │ │ - int n6 = n5 + (a6 + (com.crashlytics.android.p.a(5) + com.crashlytics.android.p.c(a6))); │ │ │ │ - if (a3 != null) { │ │ │ │ - final int b4 = com.crashlytics.android.p.b(1, a3); │ │ │ │ - n6 += b4 + (com.crashlytics.android.p.a(6) + com.crashlytics.android.p.c(b4)); │ │ │ │ - } │ │ │ │ - p5.b(n6); │ │ │ │ - p5.a(1, n); │ │ │ │ - p5.a(2, com.crashlytics.android.k.a(s)); │ │ │ │ - p5.g(3, 2); │ │ │ │ - p5.b(this.a(thread, t, (Map)map)); │ │ │ │ - this.a(p5, thread, t); │ │ │ │ - if (map != null && !map.isEmpty()) { │ │ │ │ - this.a(p5, map); │ │ │ │ - } │ │ │ │ - if (this.s != null) { │ │ │ │ - p5.a(3, this.s.importance != 100); │ │ │ │ - } │ │ │ │ - p5.a(4, Crashlytics.d().getResources().getConfiguration().orientation); │ │ │ │ - p5.g(5, 2); │ │ │ │ - p5.b(a(b2, a, c, orientation, a2, b3)); │ │ │ │ - p5.a(1, b2); │ │ │ │ - p5.c(2, a); │ │ │ │ - p5.a(3, c); │ │ │ │ - p5.a(4, orientation); │ │ │ │ - p5.a(5, a2); │ │ │ │ - p5.a(6, b3); │ │ │ │ - if (a3 != null) { │ │ │ │ - p5.g(6, 2); │ │ │ │ - p5.b(com.crashlytics.android.p.b(1, a3)); │ │ │ │ - p5.a(1, a3); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p5, final Thread thread, final StackTraceElement[] array, final int n, final boolean b) { │ │ │ │ - final int n2 = 2; │ │ │ │ - final int n3 = 1; │ │ │ │ - p5.g(n3, n2); │ │ │ │ - p5.b(this.a(thread, array, n, b)); │ │ │ │ - p5.a(n3, com.crashlytics.android.k.a(thread.getName())); │ │ │ │ - p5.a(n2, n); │ │ │ │ - for (int length = array.length, i = 0; i < length; ++i) { │ │ │ │ - this.a(p5, 3, array[i], b); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p4, final Throwable t, final int n, final int n2) { │ │ │ │ - int n3 = 0; │ │ │ │ - final int n4 = 1; │ │ │ │ - p4.g(n2, 2); │ │ │ │ - p4.b(this.a(t, n4)); │ │ │ │ - p4.a(n4, com.crashlytics.android.k.a(t.getClass().getName())); │ │ │ │ - final String localizedMessage = t.getLocalizedMessage(); │ │ │ │ - if (localizedMessage != null) { │ │ │ │ - p4.a(3, com.crashlytics.android.k.a(localizedMessage)); │ │ │ │ - } │ │ │ │ - final StackTraceElement[] stackTrace = t.getStackTrace(); │ │ │ │ - for (int length = stackTrace.length, i = 0; i < length; ++i) { │ │ │ │ - this.a(p4, 4, stackTrace[i], n4 != 0); │ │ │ │ - } │ │ │ │ - Throwable t2 = t.getCause(); │ │ │ │ - if (t2 != null) { │ │ │ │ - if (n < 8) { │ │ │ │ - this.a(p4, t2, n + 1, 6); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - while (t2 != null) { │ │ │ │ - t2 = t2.getCause(); │ │ │ │ - ++n3; │ │ │ │ - } │ │ │ │ - p4.a(7, n3); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p2, final Map map) { │ │ │ │ - final int n = 2; │ │ │ │ - for (final Map.Entry entry : map.entrySet()) { │ │ │ │ - p2.g(n, n); │ │ │ │ - p2.b(a((String)entry.getKey(), (String)entry.getValue())); │ │ │ │ - p2.a(1, com.crashlytics.android.k.a((String)entry.getKey())); │ │ │ │ - String s = (String)entry.getValue(); │ │ │ │ - if (s == null) { │ │ │ │ - s = ""; │ │ │ │ - } │ │ │ │ - p2.a(n, com.crashlytics.android.k.a(s)); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final p p3, final File[] array, final String s) { │ │ │ │ - Arrays.sort(array, aB.a); │ │ │ │ - final int length = array.length; │ │ │ │ - int i = 0; │ │ │ │ - while (i < length) { │ │ │ │ - final File file = array[i]; │ │ │ │ - final String s2 = "Found Non Fatal for session ID %s in %s "; │ │ │ │ - final int n = 2; │ │ │ │ - try { │ │ │ │ - final Object[] array2 = new Object[n]; │ │ │ │ - array2[0] = s; │ │ │ │ - array2[1] = file.getName(); │ │ │ │ - final String s3 = s2; │ │ │ │ - try { │ │ │ │ - final String format = String.format(s3, array2); │ │ │ │ - try { │ │ │ │ - aB.c(format); │ │ │ │ - try { │ │ │ │ - a(p3, file); │ │ │ │ - ++i; │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - aB.a("Error writting non-fatal to session.", (Throwable)ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex2) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex3) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex4) {} │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final String s) { │ │ │ │ - final File[] a = this.a((FilenameFilter)new Y(s)); │ │ │ │ - for (int length = a.length, i = 0; i < length; ++i) { │ │ │ │ - a[i].delete(); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final String s, final int n) { │ │ │ │ - aB.a(this.k, (FilenameFilter)new X(s + "SessionEvent"), n, E.c); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(final Throwable p0, final OutputStream p1) { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: ifnull 35 │ │ │ │ - // 4: aconst_null │ │ │ │ - // 5: astore_3 │ │ │ │ - // 6: new Ljava/io/PrintWriter; │ │ │ │ - // 9: astore 4 │ │ │ │ - // 11: aload 4 │ │ │ │ - // 13: aload_2 │ │ │ │ - // 14: invokespecial java/io/PrintWriter.:(Ljava/io/OutputStream;)V │ │ │ │ - // 17: aload_1 │ │ │ │ - // 18: aload 4 │ │ │ │ - // 20: invokestatic com/crashlytics/android/E.a:(Ljava/lang/Throwable;Ljava/io/Writer;)V │ │ │ │ - // 23: ldc_w "Failed to close stack trace writer." │ │ │ │ - // 26: astore 5 │ │ │ │ - // 28: aload 4 │ │ │ │ - // 30: aload 5 │ │ │ │ - // 32: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 35: return │ │ │ │ - // 36: astore 5 │ │ │ │ - // 38: aconst_null │ │ │ │ - // 39: astore 4 │ │ │ │ - // 41: ldc_w "Failed to create PrintWriter" │ │ │ │ - // 44: astore_3 │ │ │ │ - // 45: aload_3 │ │ │ │ - // 46: aload 5 │ │ │ │ - // 48: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 51: ldc_w "Failed to close stack trace writer." │ │ │ │ - // 54: astore 5 │ │ │ │ - // 56: aload 4 │ │ │ │ - // 58: aload 5 │ │ │ │ - // 60: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 63: goto 35 │ │ │ │ - // 66: astore 5 │ │ │ │ - // 68: aconst_null │ │ │ │ - // 69: astore 4 │ │ │ │ - // 71: aload 4 │ │ │ │ - // 73: ldc_w "Failed to close stack trace writer." │ │ │ │ - // 76: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 79: aload 5 │ │ │ │ - // 81: athrow │ │ │ │ - // 82: astore 5 │ │ │ │ - // 84: goto 71 │ │ │ │ - // 87: astore 5 │ │ │ │ - // 89: goto 41 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 6 9 36 41 Ljava/lang/Exception; │ │ │ │ - // 6 9 66 71 Any │ │ │ │ - // 13 17 36 41 Ljava/lang/Exception; │ │ │ │ - // 13 17 66 71 Any │ │ │ │ - // 18 23 87 92 Ljava/lang/Exception; │ │ │ │ - // 18 23 82 87 Any │ │ │ │ - // 46 51 82 87 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IllegalStateException: Expression is linked from several locations: Label_0035: │ │ │ │ - // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static void a(Throwable cause, final Writer writer) { │ │ │ │ - int n = 1; │ │ │ │ - String localizedMessage; │ │ │ │ - String replaceAll = null; │ │ │ │ - StringBuilder sb; │ │ │ │ - String s; │ │ │ │ - StringBuilder append; │ │ │ │ - Class class1; │ │ │ │ - String s2; │ │ │ │ - StringBuilder append2; │ │ │ │ - StackTraceElement[] stackTrace; │ │ │ │ - int length; │ │ │ │ - int n2; │ │ │ │ - StackTraceElement stackTraceElement; │ │ │ │ - StringBuilder append3; │ │ │ │ - Label_0046_Outer:Label_0268_Outer: │ │ │ │ - while (cause != null) { │ │ │ │ - try { │ │ │ │ - localizedMessage = cause.getLocalizedMessage(); │ │ │ │ - while (true) { │ │ │ │ - Label_0256_Outer: │ │ │ │ - while (true) { │ │ │ │ - Label_0036: { │ │ │ │ - while (true) { │ │ │ │ - Label_0027: { │ │ │ │ - if (localizedMessage == null) { │ │ │ │ - replaceAll = null; │ │ │ │ - break Label_0027; │ │ │ │ - } │ │ │ │ - Label_0232: { │ │ │ │ - break Label_0232; │ │ │ │ - while (true) { │ │ │ │ - try { │ │ │ │ - sb = new StringBuilder(); │ │ │ │ - try { │ │ │ │ - append = sb.append(s); │ │ │ │ - try { │ │ │ │ - class1 = cause.getClass(); │ │ │ │ - try { │ │ │ │ - append2 = append.append(class1.getName()).append(": ").append(s2).append("\n"); │ │ │ │ - try { │ │ │ │ - writer.write(append2.toString()); │ │ │ │ - stackTrace = cause.getStackTrace(); │ │ │ │ - try { │ │ │ │ - length = stackTrace.length; │ │ │ │ - n2 = 0; │ │ │ │ - while (true) { │ │ │ │ - Label_0276: { │ │ │ │ - if (n2 >= length) { │ │ │ │ - break Label_0276; │ │ │ │ - } │ │ │ │ - stackTraceElement = stackTrace[n2]; │ │ │ │ - try { │ │ │ │ - append3 = new StringBuilder("\tat ").append(stackTraceElement.toString()).append("\n"); │ │ │ │ - try { │ │ │ │ - writer.write(append3.toString()); │ │ │ │ - ++n2; │ │ │ │ - continue Label_0046_Outer; │ │ │ │ - replaceAll = localizedMessage.replaceAll("(\r\n|\n|\f)", " "); │ │ │ │ - break Label_0027; │ │ │ │ - s2 = ""; │ │ │ │ - break Label_0036; │ │ │ │ - cause = cause.getCause(); │ │ │ │ - n = 0; │ │ │ │ - continue Label_0046_Outer; │ │ │ │ - s = "Caused by: "; │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - aB.a("Could not write stack trace", (Throwable)ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex2) {} │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex3) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex4) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex5) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex6) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex7) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex8) {} │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - if (replaceAll == null) { │ │ │ │ - continue Label_0268_Outer; │ │ │ │ - } │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - s2 = replaceAll; │ │ │ │ - } │ │ │ │ - if (n != 0) { │ │ │ │ - s = ""; │ │ │ │ - continue Label_0256_Outer; │ │ │ │ - } │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - continue; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex9) {} │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private File[] a(final FilenameFilter filenameFilter) { │ │ │ │ - File[] listFiles = this.k.listFiles(filenameFilter); │ │ │ │ - if (listFiles == null) { │ │ │ │ - listFiles = new File[0]; │ │ │ │ - } │ │ │ │ - return listFiles; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private int b(final Thread thread, final Throwable t) { │ │ │ │ - final int n = 3; │ │ │ │ - final int n2 = 1; │ │ │ │ - final int a = this.a(thread, this.x, 4, n2 != 0); │ │ │ │ - final int n3 = a + (com.crashlytics.android.p.a(n2) + com.crashlytics.android.p.c(a)) + 0; │ │ │ │ - final int length = this.v.length; │ │ │ │ - int i = 0; │ │ │ │ - int n4 = n3; │ │ │ │ - while (i < length) { │ │ │ │ - final int a2 = this.a(this.v[i], this.w.get(i), 0, false); │ │ │ │ - n4 += a2 + (com.crashlytics.android.p.a(n2) + com.crashlytics.android.p.c(a2)); │ │ │ │ - ++i; │ │ │ │ - } │ │ │ │ - final int a3 = this.a(t, n2); │ │ │ │ - final int n5 = a3 + (com.crashlytics.android.p.a(2) + com.crashlytics.android.p.c(a3)) + n4; │ │ │ │ - final int p2 = p(); │ │ │ │ - final int n6 = n5 + (p2 + (com.crashlytics.android.p.a(n) + com.crashlytics.android.p.c(p2))); │ │ │ │ - final int o = this.o(); │ │ │ │ - return n6 + (o + (com.crashlytics.android.p.a(n) + com.crashlytics.android.p.c(o))); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static k b(final String s) { │ │ │ │ - k a; │ │ │ │ - if (s == null) { │ │ │ │ - a = null; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - a = k.a(s); │ │ │ │ - } │ │ │ │ - return a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private Future b(final Callable callable) { │ │ │ │ - try { │ │ │ │ - final ExecutorService r = this.r; │ │ │ │ - try { │ │ │ │ - final N n = new N(this, callable); │ │ │ │ - final ExecutorService executorService = r; │ │ │ │ - try { │ │ │ │ - return executorService.submit((Callable)n); │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex) { │ │ │ │ - aB.c("Executor is shut down because we're handling a fatal crash."); │ │ │ │ - final Future submit = null; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex2) {} │ │ │ │ - } │ │ │ │ - catch (RejectedExecutionException ex3) {} │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void c(final String p0) { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: istore_2 │ │ │ │ - // 2: aconst_null │ │ │ │ - // 3: astore_3 │ │ │ │ - // 4: iconst_0 │ │ │ │ - // 5: istore 4 │ │ │ │ - // 7: aconst_null │ │ │ │ - // 8: astore 5 │ │ │ │ - // 10: new Lcom/crashlytics/android/n; │ │ │ │ - // 13: astore 6 │ │ │ │ - // 15: invokestatic com/crashlytics/android/Crashlytics.j:()Ljava/io/File; │ │ │ │ - // 18: astore 7 │ │ │ │ - // 20: new Ljava/lang/StringBuilder; │ │ │ │ - // 23: astore 8 │ │ │ │ - // 25: aload 8 │ │ │ │ - // 27: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 30: aload_1 │ │ │ │ - // 31: astore 9 │ │ │ │ - // 33: aload 8 │ │ │ │ - // 35: aload_1 │ │ │ │ - // 36: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 39: astore 8 │ │ │ │ - // 41: ldc_w "SessionDevice" │ │ │ │ - // 44: astore 10 │ │ │ │ - // 46: aload 8 │ │ │ │ - // 48: aload 10 │ │ │ │ - // 50: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 53: astore 8 │ │ │ │ - // 55: aload 8 │ │ │ │ - // 57: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 60: astore 8 │ │ │ │ - // 62: aload 6 │ │ │ │ - // 64: astore 9 │ │ │ │ - // 66: aload 6 │ │ │ │ - // 68: aload 7 │ │ │ │ - // 70: aload 8 │ │ │ │ - // 72: invokespecial com/crashlytics/android/n.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 75: aload 6 │ │ │ │ - // 77: invokestatic com/crashlytics/android/p.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ │ │ │ - // 80: astore 11 │ │ │ │ - // 82: new Landroid/os/StatFs; │ │ │ │ - // 85: astore 7 │ │ │ │ - // 87: invokestatic android/os/Environment.getDataDirectory:()Ljava/io/File; │ │ │ │ - // 90: astore 5 │ │ │ │ - // 92: aload 5 │ │ │ │ - // 94: invokevirtual java/io/File.getPath:()Ljava/lang/String; │ │ │ │ - // 97: astore 5 │ │ │ │ - // 99: aload 7 │ │ │ │ - // 101: aload 5 │ │ │ │ - // 103: invokespecial android/os/StatFs.:(Ljava/lang/String;)V │ │ │ │ - // 106: invokestatic com/crashlytics/android/aB.b:()Ljava/lang/String; │ │ │ │ - // 109: astore 5 │ │ │ │ - // 111: aload 5 │ │ │ │ - // 113: invokevirtual java/lang/String.toUpperCase:()Ljava/lang/String; │ │ │ │ - // 116: astore 5 │ │ │ │ - // 118: ldc_w "ARMV7" │ │ │ │ - // 121: astore_3 │ │ │ │ - // 122: aload 5 │ │ │ │ - // 124: aload_3 │ │ │ │ - // 125: invokevirtual java/lang/String.startsWith:(Ljava/lang/String;)Z │ │ │ │ - // 128: istore_2 │ │ │ │ - // 129: iload_2 │ │ │ │ - // 130: ifeq 636 │ │ │ │ - // 133: bipush 6 │ │ │ │ - // 135: istore 4 │ │ │ │ - // 137: getstatic android/os/Build.MODEL:Ljava/lang/String; │ │ │ │ - // 140: astore_3 │ │ │ │ - // 141: aload_3 │ │ │ │ - // 142: invokestatic com/crashlytics/android/E.b:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 145: astore 8 │ │ │ │ - // 147: getstatic android/os/Build.MANUFACTURER:Ljava/lang/String; │ │ │ │ - // 150: astore_3 │ │ │ │ - // 151: aload_3 │ │ │ │ - // 152: invokestatic com/crashlytics/android/E.b:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 155: astore 12 │ │ │ │ - // 157: getstatic android/os/Build.PRODUCT:Ljava/lang/String; │ │ │ │ - // 160: astore_3 │ │ │ │ - // 161: aload_3 │ │ │ │ - // 162: invokestatic com/crashlytics/android/E.b:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 165: astore 13 │ │ │ │ - // 167: invokestatic java/lang/Runtime.getRuntime:()Ljava/lang/Runtime; │ │ │ │ - // 170: astore_3 │ │ │ │ - // 171: aload_3 │ │ │ │ - // 172: invokevirtual java/lang/Runtime.availableProcessors:()I │ │ │ │ - // 175: istore 14 │ │ │ │ - // 177: invokestatic com/crashlytics/android/aB.c:()J │ │ │ │ - // 180: lstore 15 │ │ │ │ - // 182: aload 7 │ │ │ │ - // 184: invokevirtual android/os/StatFs.getBlockCount:()I │ │ │ │ - // 187: istore_2 │ │ │ │ - // 188: iload_2 │ │ │ │ - // 189: i2l │ │ │ │ - // 190: lstore 17 │ │ │ │ - // 192: aload 7 │ │ │ │ - // 194: invokevirtual android/os/StatFs.getBlockSize:()I │ │ │ │ - // 197: istore 19 │ │ │ │ - // 199: iload 19 │ │ │ │ - // 201: i2l │ │ │ │ - // 202: lstore 20 │ │ │ │ - // 204: lload 17 │ │ │ │ - // 206: lload 20 │ │ │ │ - // 208: lmul │ │ │ │ - // 209: lstore 17 │ │ │ │ - // 211: invokestatic com/crashlytics/android/aB.d:()Z │ │ │ │ - // 214: istore 22 │ │ │ │ - // 216: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ - // 219: astore 7 │ │ │ │ - // 221: aload 7 │ │ │ │ - // 223: invokevirtual com/crashlytics/android/Crashlytics.c:()Lcom/crashlytics/android/IdManager; │ │ │ │ - // 226: astore 7 │ │ │ │ - // 228: aload 7 │ │ │ │ - // 230: invokevirtual com/crashlytics/android/IdManager.e:()Ljava/lang/String; │ │ │ │ - // 233: astore_3 │ │ │ │ - // 234: aload_3 │ │ │ │ - // 235: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 238: astore_3 │ │ │ │ - // 239: aload 7 │ │ │ │ - // 241: invokevirtual com/crashlytics/android/IdManager.f:()Ljava/util/Map; │ │ │ │ - // 244: astore 23 │ │ │ │ - // 246: invokestatic com/crashlytics/android/aB.f:()I │ │ │ │ - // 249: istore 24 │ │ │ │ - // 251: bipush 9 │ │ │ │ - // 253: istore 19 │ │ │ │ - // 255: iconst_2 │ │ │ │ - // 256: istore 25 │ │ │ │ - // 258: aload 11 │ │ │ │ - // 260: iload 19 │ │ │ │ - // 262: iload 25 │ │ │ │ - // 264: invokevirtual com/crashlytics/android/p.g:(II)V │ │ │ │ - // 267: aload_0 │ │ │ │ - // 268: astore 7 │ │ │ │ - // 270: aload_0 │ │ │ │ - // 271: iload 4 │ │ │ │ - // 273: aload_3 │ │ │ │ - // 274: aload 8 │ │ │ │ - // 276: iload 14 │ │ │ │ - // 278: lload 15 │ │ │ │ - // 280: lload 17 │ │ │ │ - // 282: iload 22 │ │ │ │ - // 284: aload 23 │ │ │ │ - // 286: iload 24 │ │ │ │ - // 288: aload 12 │ │ │ │ - // 290: aload 13 │ │ │ │ - // 292: invokespecial com/crashlytics/android/E.a:(ILcom/crashlytics/android/k;Lcom/crashlytics/android/k;IJJZLjava/util/Map;ILcom/crashlytics/android/k;Lcom/crashlytics/android/k;)I │ │ │ │ - // 295: istore 19 │ │ │ │ - // 297: aload 11 │ │ │ │ - // 299: iload 19 │ │ │ │ - // 301: invokevirtual com/crashlytics/android/p.b:(I)V │ │ │ │ - // 304: iconst_1 │ │ │ │ - // 305: istore 19 │ │ │ │ - // 307: aload 11 │ │ │ │ - // 309: iload 19 │ │ │ │ - // 311: aload_3 │ │ │ │ - // 312: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 315: iconst_3 │ │ │ │ - // 316: istore 19 │ │ │ │ - // 318: aload 11 │ │ │ │ - // 320: iload 19 │ │ │ │ - // 322: iload 4 │ │ │ │ - // 324: invokevirtual com/crashlytics/android/p.b:(II)V │ │ │ │ - // 327: iconst_4 │ │ │ │ - // 328: istore 19 │ │ │ │ - // 330: aload 11 │ │ │ │ - // 332: iload 19 │ │ │ │ - // 334: aload 8 │ │ │ │ - // 336: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 339: iconst_5 │ │ │ │ - // 340: istore 19 │ │ │ │ - // 342: aload 11 │ │ │ │ - // 344: iload 19 │ │ │ │ - // 346: iload 14 │ │ │ │ - // 348: invokevirtual com/crashlytics/android/p.a:(II)V │ │ │ │ - // 351: bipush 6 │ │ │ │ - // 353: istore 19 │ │ │ │ - // 355: aload 11 │ │ │ │ - // 357: iload 19 │ │ │ │ - // 359: lload 15 │ │ │ │ - // 361: invokevirtual com/crashlytics/android/p.a:(IJ)V │ │ │ │ - // 364: bipush 7 │ │ │ │ - // 366: istore 19 │ │ │ │ - // 368: aload 11 │ │ │ │ - // 370: iload 19 │ │ │ │ - // 372: lload 17 │ │ │ │ - // 374: invokevirtual com/crashlytics/android/p.a:(IJ)V │ │ │ │ - // 377: bipush 10 │ │ │ │ - // 379: istore 19 │ │ │ │ - // 381: aload 11 │ │ │ │ - // 383: iload 19 │ │ │ │ - // 385: iload 22 │ │ │ │ - // 387: invokevirtual com/crashlytics/android/p.a:(IZ)V │ │ │ │ - // 390: aload 23 │ │ │ │ - // 392: invokeinterface java/util/Map.entrySet:()Ljava/util/Set; │ │ │ │ - // 397: astore 7 │ │ │ │ - // 399: aload 7 │ │ │ │ - // 401: invokeinterface java/util/Set.iterator:()Ljava/util/Iterator; │ │ │ │ - // 406: astore 8 │ │ │ │ - // 408: aload 8 │ │ │ │ - // 410: invokeinterface java/util/Iterator.hasNext:()Z │ │ │ │ - // 415: istore 19 │ │ │ │ - // 417: iload 19 │ │ │ │ - // 419: ifeq 721 │ │ │ │ - // 422: aload 8 │ │ │ │ - // 424: invokeinterface java/util/Iterator.next:()Ljava/lang/Object; │ │ │ │ - // 429: astore 7 │ │ │ │ - // 431: aload 7 │ │ │ │ - // 433: astore 9 │ │ │ │ - // 435: aload 7 │ │ │ │ - // 437: checkcast Ljava/util/Map$Entry; │ │ │ │ - // 440: astore 9 │ │ │ │ - // 442: aload 9 │ │ │ │ - // 444: astore_3 │ │ │ │ - // 445: bipush 11 │ │ │ │ - // 447: istore 19 │ │ │ │ - // 449: iconst_2 │ │ │ │ - // 450: istore 4 │ │ │ │ - // 452: aload 11 │ │ │ │ - // 454: iload 19 │ │ │ │ - // 456: iload 4 │ │ │ │ - // 458: invokevirtual com/crashlytics/android/p.g:(II)V │ │ │ │ - // 461: aload 9 │ │ │ │ - // 463: invokeinterface java/util/Map$Entry.getKey:()Ljava/lang/Object; │ │ │ │ - // 468: astore 7 │ │ │ │ - // 470: aload 7 │ │ │ │ - // 472: checkcast Lcom/crashlytics/android/IdManager$DeviceIdentifierType; │ │ │ │ - // 475: astore 7 │ │ │ │ - // 477: aload 9 │ │ │ │ - // 479: invokeinterface java/util/Map$Entry.getValue:()Ljava/lang/Object; │ │ │ │ - // 484: astore 5 │ │ │ │ - // 486: aload 5 │ │ │ │ - // 488: checkcast Ljava/lang/String; │ │ │ │ - // 491: astore 5 │ │ │ │ - // 493: aload 7 │ │ │ │ - // 495: aload 5 │ │ │ │ - // 497: invokestatic com/crashlytics/android/E.a:(Lcom/crashlytics/android/IdManager$DeviceIdentifierType;Ljava/lang/String;)I │ │ │ │ - // 500: istore 19 │ │ │ │ - // 502: aload 11 │ │ │ │ - // 504: iload 19 │ │ │ │ - // 506: invokevirtual com/crashlytics/android/p.b:(I)V │ │ │ │ - // 509: iconst_1 │ │ │ │ - // 510: istore 4 │ │ │ │ - // 512: aload 9 │ │ │ │ - // 514: invokeinterface java/util/Map$Entry.getKey:()Ljava/lang/Object; │ │ │ │ - // 519: astore 7 │ │ │ │ - // 521: aload 7 │ │ │ │ - // 523: checkcast Lcom/crashlytics/android/IdManager$DeviceIdentifierType; │ │ │ │ - // 526: astore 7 │ │ │ │ - // 528: aload 7 │ │ │ │ - // 530: getfield com/crashlytics/android/IdManager$DeviceIdentifierType.protobufIndex:I │ │ │ │ - // 533: istore 19 │ │ │ │ - // 535: aload 11 │ │ │ │ - // 537: iload 4 │ │ │ │ - // 539: iload 19 │ │ │ │ - // 541: invokevirtual com/crashlytics/android/p.b:(II)V │ │ │ │ - // 544: iconst_2 │ │ │ │ - // 545: istore 4 │ │ │ │ - // 547: aload 9 │ │ │ │ - // 549: invokeinterface java/util/Map$Entry.getValue:()Ljava/lang/Object; │ │ │ │ - // 554: astore 7 │ │ │ │ - // 556: aload 7 │ │ │ │ - // 558: checkcast Ljava/lang/String; │ │ │ │ - // 561: astore 7 │ │ │ │ - // 563: aload 7 │ │ │ │ - // 565: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 568: astore 7 │ │ │ │ - // 570: aload 11 │ │ │ │ - // 572: iload 4 │ │ │ │ - // 574: aload 7 │ │ │ │ - // 576: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 579: goto 408 │ │ │ │ - // 582: astore 7 │ │ │ │ - // 584: aload 11 │ │ │ │ - // 586: astore 5 │ │ │ │ - // 588: aload 6 │ │ │ │ - // 590: astore_3 │ │ │ │ - // 591: aload_0 │ │ │ │ - // 592: astore 9 │ │ │ │ - // 594: aload_0 │ │ │ │ - // 595: aload 7 │ │ │ │ - // 597: aload_3 │ │ │ │ - // 598: invokespecial com/crashlytics/android/E.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ - // 601: aload 7 │ │ │ │ - // 603: athrow │ │ │ │ - // 604: astore 7 │ │ │ │ - // 606: aload 5 │ │ │ │ - // 608: astore 11 │ │ │ │ - // 610: aload_3 │ │ │ │ - // 611: astore 6 │ │ │ │ - // 613: aload 11 │ │ │ │ - // 615: ldc_w "Failed to flush session device info." │ │ │ │ - // 618: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 621: aload 6 │ │ │ │ - // 623: astore 9 │ │ │ │ - // 625: aload 6 │ │ │ │ - // 627: ldc_w "Failed to close session device file." │ │ │ │ - // 630: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 633: aload 7 │ │ │ │ - // 635: athrow │ │ │ │ - // 636: ldc_w "ARMV6" │ │ │ │ - // 639: astore_3 │ │ │ │ - // 640: aload 5 │ │ │ │ - // 642: aload_3 │ │ │ │ - // 643: invokevirtual java/lang/String.startsWith:(Ljava/lang/String;)Z │ │ │ │ - // 646: istore_2 │ │ │ │ - // 647: iload_2 │ │ │ │ - // 648: ifeq 657 │ │ │ │ - // 651: iconst_5 │ │ │ │ - // 652: istore 4 │ │ │ │ - // 654: goto 137 │ │ │ │ - // 657: ldc_w "ARMV" │ │ │ │ - // 660: astore_3 │ │ │ │ - // 661: aload 5 │ │ │ │ - // 663: aload_3 │ │ │ │ - // 664: invokevirtual java/lang/String.startsWith:(Ljava/lang/String;)Z │ │ │ │ - // 667: istore_2 │ │ │ │ - // 668: iload_2 │ │ │ │ - // 669: ifeq 679 │ │ │ │ - // 672: bipush 7 │ │ │ │ - // 674: istore 4 │ │ │ │ - // 676: goto 137 │ │ │ │ - // 679: new Ljava/lang/StringBuilder; │ │ │ │ - // 682: astore_3 │ │ │ │ - // 683: ldc_w "Unexpected non-ARM architecture type: " │ │ │ │ - // 686: astore 8 │ │ │ │ - // 688: aload_3 │ │ │ │ - // 689: aload 8 │ │ │ │ - // 691: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 694: aload_3 │ │ │ │ - // 695: aload 5 │ │ │ │ - // 697: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 700: astore 5 │ │ │ │ - // 702: aload 5 │ │ │ │ - // 704: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 707: astore 5 │ │ │ │ - // 709: aload 5 │ │ │ │ - // 711: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 714: bipush 7 │ │ │ │ - // 716: istore 4 │ │ │ │ - // 718: goto 137 │ │ │ │ - // 721: bipush 12 │ │ │ │ - // 723: istore 19 │ │ │ │ - // 725: aload 11 │ │ │ │ - // 727: iload 19 │ │ │ │ - // 729: iload 24 │ │ │ │ - // 731: invokevirtual com/crashlytics/android/p.a:(II)V │ │ │ │ - // 734: aload 12 │ │ │ │ - // 736: ifnull 752 │ │ │ │ - // 739: bipush 13 │ │ │ │ - // 741: istore 19 │ │ │ │ - // 743: aload 11 │ │ │ │ - // 745: iload 19 │ │ │ │ - // 747: aload 12 │ │ │ │ - // 749: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 752: aload 13 │ │ │ │ - // 754: ifnull 770 │ │ │ │ - // 757: bipush 14 │ │ │ │ - // 759: istore 19 │ │ │ │ - // 761: aload 11 │ │ │ │ - // 763: iload 19 │ │ │ │ - // 765: aload 13 │ │ │ │ - // 767: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 770: aload 11 │ │ │ │ - // 772: ldc_w "Failed to flush session device info." │ │ │ │ - // 775: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 778: aload 6 │ │ │ │ - // 780: astore 9 │ │ │ │ - // 782: aload 6 │ │ │ │ - // 784: ldc_w "Failed to close session device file." │ │ │ │ - // 787: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 790: return │ │ │ │ - // 791: astore 7 │ │ │ │ - // 793: aconst_null │ │ │ │ - // 794: astore 11 │ │ │ │ - // 796: aconst_null │ │ │ │ - // 797: astore 6 │ │ │ │ - // 799: goto 613 │ │ │ │ - // 802: astore 7 │ │ │ │ - // 804: aconst_null │ │ │ │ - // 805: astore 11 │ │ │ │ - // 807: goto 613 │ │ │ │ - // 810: astore 7 │ │ │ │ - // 812: goto 613 │ │ │ │ - // 815: astore 7 │ │ │ │ - // 817: goto 591 │ │ │ │ - // 820: astore 7 │ │ │ │ - // 822: aload 6 │ │ │ │ - // 824: astore_3 │ │ │ │ - // 825: goto 591 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 10 13 815 820 Ljava/lang/Exception; │ │ │ │ - // 10 13 791 802 Any │ │ │ │ - // 15 18 815 820 Ljava/lang/Exception; │ │ │ │ - // 15 18 791 802 Any │ │ │ │ - // 20 23 815 820 Ljava/lang/Exception; │ │ │ │ - // 20 23 791 802 Any │ │ │ │ - // 25 30 815 820 Ljava/lang/Exception; │ │ │ │ - // 25 30 791 802 Any │ │ │ │ - // 35 39 815 820 Ljava/lang/Exception; │ │ │ │ - // 35 39 791 802 Any │ │ │ │ - // 48 53 815 820 Ljava/lang/Exception; │ │ │ │ - // 48 53 791 802 Any │ │ │ │ - // 55 60 815 820 Ljava/lang/Exception; │ │ │ │ - // 55 60 791 802 Any │ │ │ │ - // 70 75 815 820 Ljava/lang/Exception; │ │ │ │ - // 70 75 791 802 Any │ │ │ │ - // 75 80 820 828 Ljava/lang/Exception; │ │ │ │ - // 75 80 802 810 Any │ │ │ │ - // 82 85 582 591 Ljava/lang/Exception; │ │ │ │ - // 82 85 810 815 Any │ │ │ │ - // 87 90 582 591 Ljava/lang/Exception; │ │ │ │ - // 87 90 810 815 Any │ │ │ │ - // 92 97 582 591 Ljava/lang/Exception; │ │ │ │ - // 92 97 810 815 Any │ │ │ │ - // 101 106 582 591 Ljava/lang/Exception; │ │ │ │ - // 101 106 810 815 Any │ │ │ │ - // 106 109 582 591 Ljava/lang/Exception; │ │ │ │ - // 106 109 810 815 Any │ │ │ │ - // 111 116 582 591 Ljava/lang/Exception; │ │ │ │ - // 111 116 810 815 Any │ │ │ │ - // 124 128 582 591 Ljava/lang/Exception; │ │ │ │ - // 124 128 810 815 Any │ │ │ │ - // 137 140 582 591 Ljava/lang/Exception; │ │ │ │ - // 137 140 810 815 Any │ │ │ │ - // 141 145 582 591 Ljava/lang/Exception; │ │ │ │ - // 141 145 810 815 Any │ │ │ │ - // 147 150 582 591 Ljava/lang/Exception; │ │ │ │ - // 147 150 810 815 Any │ │ │ │ - // 151 155 582 591 Ljava/lang/Exception; │ │ │ │ - // 151 155 810 815 Any │ │ │ │ - // 157 160 582 591 Ljava/lang/Exception; │ │ │ │ - // 157 160 810 815 Any │ │ │ │ - // 161 165 582 591 Ljava/lang/Exception; │ │ │ │ - // 161 165 810 815 Any │ │ │ │ - // 167 170 582 591 Ljava/lang/Exception; │ │ │ │ - // 167 170 810 815 Any │ │ │ │ - // 171 175 582 591 Ljava/lang/Exception; │ │ │ │ - // 171 175 810 815 Any │ │ │ │ - // 177 180 582 591 Ljava/lang/Exception; │ │ │ │ - // 177 180 810 815 Any │ │ │ │ - // 182 187 582 591 Ljava/lang/Exception; │ │ │ │ - // 182 187 810 815 Any │ │ │ │ - // 192 197 582 591 Ljava/lang/Exception; │ │ │ │ - // 192 197 810 815 Any │ │ │ │ - // 211 214 582 591 Ljava/lang/Exception; │ │ │ │ - // 211 214 810 815 Any │ │ │ │ - // 216 219 582 591 Ljava/lang/Exception; │ │ │ │ - // 216 219 810 815 Any │ │ │ │ - // 221 226 582 591 Ljava/lang/Exception; │ │ │ │ - // 221 226 810 815 Any │ │ │ │ - // 228 233 582 591 Ljava/lang/Exception; │ │ │ │ - // 228 233 810 815 Any │ │ │ │ - // 234 238 582 591 Ljava/lang/Exception; │ │ │ │ - // 234 238 810 815 Any │ │ │ │ - // 239 244 582 591 Ljava/lang/Exception; │ │ │ │ - // 239 244 810 815 Any │ │ │ │ - // 246 249 582 591 Ljava/lang/Exception; │ │ │ │ - // 246 249 810 815 Any │ │ │ │ - // 262 267 582 591 Ljava/lang/Exception; │ │ │ │ - // 262 267 810 815 Any │ │ │ │ - // 290 295 582 591 Ljava/lang/Exception; │ │ │ │ - // 290 295 810 815 Any │ │ │ │ - // 299 304 582 591 Ljava/lang/Exception; │ │ │ │ - // 299 304 810 815 Any │ │ │ │ - // 311 315 582 591 Ljava/lang/Exception; │ │ │ │ - // 311 315 810 815 Any │ │ │ │ - // 322 327 582 591 Ljava/lang/Exception; │ │ │ │ - // 322 327 810 815 Any │ │ │ │ - // 334 339 582 591 Ljava/lang/Exception; │ │ │ │ - // 334 339 810 815 Any │ │ │ │ - // 346 351 582 591 Ljava/lang/Exception; │ │ │ │ - // 346 351 810 815 Any │ │ │ │ - // 359 364 582 591 Ljava/lang/Exception; │ │ │ │ - // 359 364 810 815 Any │ │ │ │ - // 372 377 582 591 Ljava/lang/Exception; │ │ │ │ - // 372 377 810 815 Any │ │ │ │ - // 385 390 582 591 Ljava/lang/Exception; │ │ │ │ - // 385 390 810 815 Any │ │ │ │ - // 390 397 582 591 Ljava/lang/Exception; │ │ │ │ - // 390 397 810 815 Any │ │ │ │ - // 399 406 582 591 Ljava/lang/Exception; │ │ │ │ - // 399 406 810 815 Any │ │ │ │ - // 408 415 582 591 Ljava/lang/Exception; │ │ │ │ - // 408 415 810 815 Any │ │ │ │ - // 422 429 582 591 Ljava/lang/Exception; │ │ │ │ - // 422 429 810 815 Any │ │ │ │ - // 435 440 582 591 Ljava/lang/Exception; │ │ │ │ - // 435 440 810 815 Any │ │ │ │ - // 456 461 582 591 Ljava/lang/Exception; │ │ │ │ - // 456 461 810 815 Any │ │ │ │ - // 461 468 582 591 Ljava/lang/Exception; │ │ │ │ - // 461 468 810 815 Any │ │ │ │ - // 470 475 582 591 Ljava/lang/Exception; │ │ │ │ - // 470 475 810 815 Any │ │ │ │ - // 477 484 582 591 Ljava/lang/Exception; │ │ │ │ - // 477 484 810 815 Any │ │ │ │ - // 486 491 582 591 Ljava/lang/Exception; │ │ │ │ - // 486 491 810 815 Any │ │ │ │ - // 495 500 582 591 Ljava/lang/Exception; │ │ │ │ - // 495 500 810 815 Any │ │ │ │ - // 504 509 582 591 Ljava/lang/Exception; │ │ │ │ - // 504 509 810 815 Any │ │ │ │ - // 512 519 582 591 Ljava/lang/Exception; │ │ │ │ - // 512 519 810 815 Any │ │ │ │ - // 521 526 582 591 Ljava/lang/Exception; │ │ │ │ - // 521 526 810 815 Any │ │ │ │ - // 528 533 582 591 Ljava/lang/Exception; │ │ │ │ - // 528 533 810 815 Any │ │ │ │ - // 539 544 582 591 Ljava/lang/Exception; │ │ │ │ - // 539 544 810 815 Any │ │ │ │ - // 547 554 582 591 Ljava/lang/Exception; │ │ │ │ - // 547 554 810 815 Any │ │ │ │ - // 556 561 582 591 Ljava/lang/Exception; │ │ │ │ - // 556 561 810 815 Any │ │ │ │ - // 563 568 582 591 Ljava/lang/Exception; │ │ │ │ - // 563 568 810 815 Any │ │ │ │ - // 574 579 582 591 Ljava/lang/Exception; │ │ │ │ - // 574 579 810 815 Any │ │ │ │ - // 597 601 604 613 Any │ │ │ │ - // 601 604 604 613 Any │ │ │ │ - // 642 646 582 591 Ljava/lang/Exception; │ │ │ │ - // 642 646 810 815 Any │ │ │ │ - // 663 667 582 591 Ljava/lang/Exception; │ │ │ │ - // 663 667 810 815 Any │ │ │ │ - // 679 682 582 591 Ljava/lang/Exception; │ │ │ │ - // 679 682 810 815 Any │ │ │ │ - // 689 694 582 591 Ljava/lang/Exception; │ │ │ │ - // 689 694 810 815 Any │ │ │ │ - // 695 700 582 591 Ljava/lang/Exception; │ │ │ │ - // 695 700 810 815 Any │ │ │ │ - // 702 707 582 591 Ljava/lang/Exception; │ │ │ │ - // 702 707 810 815 Any │ │ │ │ - // 709 714 582 591 Ljava/lang/Exception; │ │ │ │ - // 709 714 810 815 Any │ │ │ │ - // 729 734 582 591 Ljava/lang/Exception; │ │ │ │ - // 729 734 810 815 Any │ │ │ │ - // 747 752 582 591 Ljava/lang/Exception; │ │ │ │ - // 747 752 810 815 Any │ │ │ │ - // 765 770 582 591 Ljava/lang/Exception; │ │ │ │ - // 765 770 810 815 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IndexOutOfBoundsException: Index: 387, Size: 387 │ │ │ │ - // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ - // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private boolean g() { │ │ │ │ - final boolean b = true; │ │ │ │ - boolean b2 = false; │ │ │ │ - if (!aB.a((Context)Crashlytics.d(), "com.crashlytics.CollectCustomLogs", b)) { │ │ │ │ - aB.c("Preferences requested not to collect custom logs. Aborting log file creation."); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - Object o = this.t; │ │ │ │ - aB.a((Closeable)o, "Could not close log file: " + this.t); │ │ │ │ - try { │ │ │ │ - o = new StringBuilder("crashlytics-userlog-"); │ │ │ │ - final UUID randomUUID = UUID.randomUUID(); │ │ │ │ - try { │ │ │ │ - o = ((StringBuilder)o).append(randomUUID.toString()); │ │ │ │ - o = ((StringBuilder)o).append(".temp"); │ │ │ │ - try { │ │ │ │ - final String string = ((StringBuilder)o).toString(); │ │ │ │ - try { │ │ │ │ - o = new(java.io.File.class); │ │ │ │ - try { │ │ │ │ - final ContextWrapper d = Crashlytics.d(); │ │ │ │ - try { │ │ │ │ - new File(d.getFilesDir(), string); │ │ │ │ - final QueueFile queueFile = new(com.crashlytics.android.QueueFile.class); │ │ │ │ - final QueueFile queueFile3; │ │ │ │ - final QueueFile queueFile2 = queueFile3 = queueFile; │ │ │ │ - final StringBuilder sb = (StringBuilder)o; │ │ │ │ - new QueueFile((File)sb); │ │ │ │ - final E e = this; │ │ │ │ - final QueueFile queueFile4 = queueFile2; │ │ │ │ - e.t = queueFile4; │ │ │ │ - final StringBuilder sb2 = (StringBuilder)o; │ │ │ │ - ((File)sb2).delete(); │ │ │ │ - final boolean b3 = b2 = b; │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - o = null; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex2) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex3) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex4) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex5) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex6) {} │ │ │ │ - try { │ │ │ │ - final QueueFile queueFile = new(com.crashlytics.android.QueueFile.class); │ │ │ │ - final QueueFile queueFile3; │ │ │ │ - final QueueFile queueFile2 = queueFile3 = queueFile; │ │ │ │ - final StringBuilder sb = (StringBuilder)o; │ │ │ │ - new QueueFile((File)sb); │ │ │ │ - final E e = this; │ │ │ │ - try { │ │ │ │ - final QueueFile queueFile4 = queueFile2; │ │ │ │ - e.t = queueFile4; │ │ │ │ - final StringBuilder sb2 = (StringBuilder)o; │ │ │ │ - ((File)sb2).delete(); │ │ │ │ - b2 = b; │ │ │ │ - return b2; │ │ │ │ - o = "Could not create log file: " + o; │ │ │ │ - final Exception ex; │ │ │ │ - aB.a((String)o, (Throwable)ex); │ │ │ │ - } │ │ │ │ - catch (Exception ex) {} │ │ │ │ - } │ │ │ │ - catch (Exception ex7) {} │ │ │ │ - } │ │ │ │ - return b2; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void h() { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 3: astore_1 │ │ │ │ - // 4: aload_1 │ │ │ │ - // 5: invokespecial java/util/Date.:()V │ │ │ │ - // 8: new Lcom/crashlytics/android/l; │ │ │ │ - // 11: astore_2 │ │ │ │ - // 12: aload_2 │ │ │ │ - // 13: invokespecial com/crashlytics/android/l.:()V │ │ │ │ - // 16: aload_2 │ │ │ │ - // 17: invokevirtual com/crashlytics/android/l.toString:()Ljava/lang/String; │ │ │ │ - // 20: astore_3 │ │ │ │ - // 21: new Ljava/lang/StringBuilder; │ │ │ │ - // 24: astore_2 │ │ │ │ - // 25: ldc_w "Opening an new session with ID " │ │ │ │ - // 28: astore 4 │ │ │ │ - // 30: aload_2 │ │ │ │ - // 31: aload 4 │ │ │ │ - // 33: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 36: aload_2 │ │ │ │ - // 37: aload_3 │ │ │ │ - // 38: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 41: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 44: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 47: iconst_0 │ │ │ │ - // 48: istore 5 │ │ │ │ - // 50: aconst_null │ │ │ │ - // 51: astore 6 │ │ │ │ - // 53: aconst_null │ │ │ │ - // 54: astore_2 │ │ │ │ - // 55: new Lcom/crashlytics/android/n; │ │ │ │ - // 58: astore 4 │ │ │ │ - // 60: invokestatic com/crashlytics/android/Crashlytics.j:()Ljava/io/File; │ │ │ │ - // 63: astore 7 │ │ │ │ - // 65: new Ljava/lang/StringBuilder; │ │ │ │ - // 68: astore 8 │ │ │ │ - // 70: aload 8 │ │ │ │ - // 72: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 75: aload 8 │ │ │ │ - // 77: aload_3 │ │ │ │ - // 78: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 81: astore 8 │ │ │ │ - // 83: ldc_w "BeginSession" │ │ │ │ - // 86: astore 9 │ │ │ │ - // 88: aload 8 │ │ │ │ - // 90: aload 9 │ │ │ │ - // 92: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 95: astore 8 │ │ │ │ - // 97: aload 8 │ │ │ │ - // 99: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 102: astore 8 │ │ │ │ - // 104: aload 4 │ │ │ │ - // 106: aload 7 │ │ │ │ - // 108: aload 8 │ │ │ │ - // 110: invokespecial com/crashlytics/android/n.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 113: aload 4 │ │ │ │ - // 115: invokestatic com/crashlytics/android/p.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ │ │ │ - // 118: astore_2 │ │ │ │ - // 119: iconst_1 │ │ │ │ - // 120: istore 5 │ │ │ │ - // 122: aload_0 │ │ │ │ - // 123: getfield com/crashlytics/android/E.m:Ljava/lang/String; │ │ │ │ - // 126: astore 7 │ │ │ │ - // 128: aload 7 │ │ │ │ - // 130: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 133: astore 7 │ │ │ │ - // 135: aload_2 │ │ │ │ - // 136: iload 5 │ │ │ │ - // 138: aload 7 │ │ │ │ - // 140: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 143: iconst_2 │ │ │ │ - // 144: istore 5 │ │ │ │ - // 146: aload_3 │ │ │ │ - // 147: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 150: astore 7 │ │ │ │ - // 152: aload_2 │ │ │ │ - // 153: iload 5 │ │ │ │ - // 155: aload 7 │ │ │ │ - // 157: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 160: iconst_3 │ │ │ │ - // 161: istore 5 │ │ │ │ - // 163: aload_1 │ │ │ │ - // 164: invokevirtual java/util/Date.getTime:()J │ │ │ │ - // 167: lstore 10 │ │ │ │ - // 169: ldc2_w 1000 │ │ │ │ - // 172: lstore 12 │ │ │ │ - // 174: lload 10 │ │ │ │ - // 176: lload 12 │ │ │ │ - // 178: ldiv │ │ │ │ - // 179: lstore 10 │ │ │ │ - // 181: aload_2 │ │ │ │ - // 182: iload 5 │ │ │ │ - // 184: lload 10 │ │ │ │ - // 186: invokevirtual com/crashlytics/android/p.a:(IJ)V │ │ │ │ - // 189: aload_2 │ │ │ │ - // 190: ldc_w "Failed to flush to session begin file." │ │ │ │ - // 193: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 196: ldc_w "Failed to close begin session file." │ │ │ │ - // 199: astore_1 │ │ │ │ - // 200: aload 4 │ │ │ │ - // 202: aload_1 │ │ │ │ - // 203: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 206: iconst_0 │ │ │ │ - // 207: istore 5 │ │ │ │ - // 209: aconst_null │ │ │ │ - // 210: astore 6 │ │ │ │ - // 212: aconst_null │ │ │ │ - // 213: astore_2 │ │ │ │ - // 214: new Lcom/crashlytics/android/n; │ │ │ │ - // 217: astore 4 │ │ │ │ - // 219: invokestatic com/crashlytics/android/Crashlytics.j:()Ljava/io/File; │ │ │ │ - // 222: astore_1 │ │ │ │ - // 223: new Ljava/lang/StringBuilder; │ │ │ │ - // 226: astore 7 │ │ │ │ - // 228: aload 7 │ │ │ │ - // 230: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 233: aload 7 │ │ │ │ - // 235: aload_3 │ │ │ │ - // 236: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 239: astore 7 │ │ │ │ - // 241: ldc_w "SessionApp" │ │ │ │ - // 244: astore 8 │ │ │ │ - // 246: aload 7 │ │ │ │ - // 248: aload 8 │ │ │ │ - // 250: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 253: astore 7 │ │ │ │ - // 255: aload 7 │ │ │ │ - // 257: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 260: astore 7 │ │ │ │ - // 262: aload 4 │ │ │ │ - // 264: aload_1 │ │ │ │ - // 265: aload 7 │ │ │ │ - // 267: invokespecial com/crashlytics/android/n.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 270: aload 4 │ │ │ │ - // 272: invokestatic com/crashlytics/android/p.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ │ │ │ - // 275: astore_2 │ │ │ │ - // 276: invokestatic com/crashlytics/android/Crashlytics.e:()Ljava/lang/String; │ │ │ │ - // 279: astore_1 │ │ │ │ - // 280: aload_1 │ │ │ │ - // 281: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 284: astore_1 │ │ │ │ - // 285: invokestatic com/crashlytics/android/Crashlytics.h:()Ljava/lang/String; │ │ │ │ - // 288: astore 6 │ │ │ │ - // 290: aload 6 │ │ │ │ - // 292: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 295: astore 6 │ │ │ │ - // 297: invokestatic com/crashlytics/android/Crashlytics.g:()Ljava/lang/String; │ │ │ │ - // 300: astore 7 │ │ │ │ - // 302: aload 7 │ │ │ │ - // 304: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 307: astore 7 │ │ │ │ - // 309: invokestatic com/crashlytics/android/Crashlytics.k:()Ljava/lang/String; │ │ │ │ - // 312: astore 8 │ │ │ │ - // 314: aload 8 │ │ │ │ - // 316: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 319: astore 8 │ │ │ │ - // 321: invokestatic com/crashlytics/android/Crashlytics.d:()Landroid/content/ContextWrapper; │ │ │ │ - // 324: astore 9 │ │ │ │ - // 326: aload 9 │ │ │ │ - // 328: invokevirtual android/content/ContextWrapper.getPackageCodePath:()Ljava/lang/String; │ │ │ │ - // 331: astore 9 │ │ │ │ - // 333: aload 9 │ │ │ │ - // 335: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 338: astore 9 │ │ │ │ - // 340: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ - // 343: astore 14 │ │ │ │ - // 345: aload 14 │ │ │ │ - // 347: invokevirtual com/crashlytics/android/Crashlytics.c:()Lcom/crashlytics/android/IdManager; │ │ │ │ - // 350: astore 14 │ │ │ │ - // 352: aload 14 │ │ │ │ - // 354: invokevirtual com/crashlytics/android/IdManager.b:()Ljava/lang/String; │ │ │ │ - // 357: astore 14 │ │ │ │ - // 359: aload 14 │ │ │ │ - // 361: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 364: astore 14 │ │ │ │ - // 366: invokestatic com/crashlytics/android/Crashlytics.f:()Ljava/lang/String; │ │ │ │ - // 369: astore 15 │ │ │ │ - // 371: aload 15 │ │ │ │ - // 373: invokestatic com/crashlytics/android/B.a:(Ljava/lang/String;)Lcom/crashlytics/android/B; │ │ │ │ - // 376: astore 15 │ │ │ │ - // 378: aload 15 │ │ │ │ - // 380: invokevirtual com/crashlytics/android/B.a:()I │ │ │ │ - // 383: istore 16 │ │ │ │ - // 385: bipush 7 │ │ │ │ - // 387: istore 17 │ │ │ │ - // 389: iconst_2 │ │ │ │ - // 390: istore 18 │ │ │ │ - // 392: aload_2 │ │ │ │ - // 393: iload 17 │ │ │ │ - // 395: iload 18 │ │ │ │ - // 397: invokevirtual com/crashlytics/android/p.g:(II)V │ │ │ │ - // 400: iconst_1 │ │ │ │ - // 401: istore 17 │ │ │ │ - // 403: iload 17 │ │ │ │ - // 405: aload_1 │ │ │ │ - // 406: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 409: iconst_0 │ │ │ │ - // 410: iadd │ │ │ │ - // 411: istore 17 │ │ │ │ - // 413: iconst_2 │ │ │ │ - // 414: istore 18 │ │ │ │ - // 416: iload 18 │ │ │ │ - // 418: aload 6 │ │ │ │ - // 420: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 423: istore 18 │ │ │ │ - // 425: iload 17 │ │ │ │ - // 427: iload 18 │ │ │ │ - // 429: iadd │ │ │ │ - // 430: istore 17 │ │ │ │ - // 432: iconst_3 │ │ │ │ - // 433: istore 18 │ │ │ │ - // 435: iload 18 │ │ │ │ - // 437: aload 7 │ │ │ │ - // 439: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 442: istore 18 │ │ │ │ - // 444: iload 17 │ │ │ │ - // 446: iload 18 │ │ │ │ - // 448: iadd │ │ │ │ - // 449: istore 17 │ │ │ │ - // 451: invokestatic com/crashlytics/android/E.m:()I │ │ │ │ - // 454: istore 18 │ │ │ │ - // 456: iconst_4 │ │ │ │ - // 457: istore 19 │ │ │ │ - // 459: iload 19 │ │ │ │ - // 461: invokestatic com/crashlytics/android/p.a:(I)I │ │ │ │ - // 464: istore 19 │ │ │ │ - // 466: iload 18 │ │ │ │ - // 468: invokestatic com/crashlytics/android/p.c:(I)I │ │ │ │ - // 471: istore 20 │ │ │ │ - // 473: iload 19 │ │ │ │ - // 475: iload 20 │ │ │ │ - // 477: iadd │ │ │ │ - // 478: istore 19 │ │ │ │ - // 480: iload 18 │ │ │ │ - // 482: iload 19 │ │ │ │ - // 484: iadd │ │ │ │ - // 485: istore 18 │ │ │ │ - // 487: iload 17 │ │ │ │ - // 489: iload 18 │ │ │ │ - // 491: iadd │ │ │ │ - // 492: istore 17 │ │ │ │ - // 494: invokestatic com/crashlytics/android/E.n:()I │ │ │ │ - // 497: istore 18 │ │ │ │ - // 499: iconst_5 │ │ │ │ - // 500: istore 19 │ │ │ │ - // 502: iload 19 │ │ │ │ - // 504: invokestatic com/crashlytics/android/p.a:(I)I │ │ │ │ - // 507: istore 19 │ │ │ │ - // 509: iload 18 │ │ │ │ - // 511: invokestatic com/crashlytics/android/p.c:(I)I │ │ │ │ - // 514: istore 20 │ │ │ │ - // 516: iload 19 │ │ │ │ - // 518: iload 20 │ │ │ │ - // 520: iadd │ │ │ │ - // 521: istore 19 │ │ │ │ - // 523: iload 18 │ │ │ │ - // 525: iload 19 │ │ │ │ - // 527: iadd │ │ │ │ - // 528: istore 18 │ │ │ │ - // 530: iload 17 │ │ │ │ - // 532: iload 18 │ │ │ │ - // 534: iadd │ │ │ │ - // 535: istore 17 │ │ │ │ - // 537: bipush 6 │ │ │ │ - // 539: istore 18 │ │ │ │ - // 541: iload 18 │ │ │ │ - // 543: aload 14 │ │ │ │ - // 545: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 548: istore 18 │ │ │ │ - // 550: iload 17 │ │ │ │ - // 552: iload 18 │ │ │ │ - // 554: iadd │ │ │ │ - // 555: istore 17 │ │ │ │ - // 557: bipush 10 │ │ │ │ - // 559: istore 18 │ │ │ │ - // 561: iload 18 │ │ │ │ - // 563: iload 16 │ │ │ │ - // 565: invokestatic com/crashlytics/android/p.e:(II)I │ │ │ │ - // 568: istore 18 │ │ │ │ - // 570: iload 17 │ │ │ │ - // 572: iload 18 │ │ │ │ - // 574: iadd │ │ │ │ - // 575: istore 17 │ │ │ │ - // 577: aload_2 │ │ │ │ - // 578: iload 17 │ │ │ │ - // 580: invokevirtual com/crashlytics/android/p.b:(I)V │ │ │ │ - // 583: iconst_1 │ │ │ │ - // 584: istore 17 │ │ │ │ - // 586: aload_2 │ │ │ │ - // 587: iload 17 │ │ │ │ - // 589: aload_1 │ │ │ │ - // 590: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 593: iconst_2 │ │ │ │ - // 594: istore 21 │ │ │ │ - // 596: aload_2 │ │ │ │ - // 597: iload 21 │ │ │ │ - // 599: aload 6 │ │ │ │ - // 601: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 604: iconst_3 │ │ │ │ - // 605: istore 21 │ │ │ │ - // 607: aload_2 │ │ │ │ - // 608: iload 21 │ │ │ │ - // 610: aload 7 │ │ │ │ - // 612: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 615: iconst_4 │ │ │ │ - // 616: istore 21 │ │ │ │ - // 618: iconst_2 │ │ │ │ - // 619: istore 5 │ │ │ │ - // 621: aload_2 │ │ │ │ - // 622: iload 21 │ │ │ │ - // 624: iload 5 │ │ │ │ - // 626: invokevirtual com/crashlytics/android/p.g:(II)V │ │ │ │ - // 629: invokestatic com/crashlytics/android/E.m:()I │ │ │ │ - // 632: istore 21 │ │ │ │ - // 634: aload_2 │ │ │ │ - // 635: iload 21 │ │ │ │ - // 637: invokevirtual com/crashlytics/android/p.b:(I)V │ │ │ │ - // 640: iconst_1 │ │ │ │ - // 641: istore 21 │ │ │ │ - // 643: aload_2 │ │ │ │ - // 644: iload 21 │ │ │ │ - // 646: aload 8 │ │ │ │ - // 648: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 651: invokestatic android/os/Process.myPid:()I │ │ │ │ - // 654: istore 21 │ │ │ │ - // 656: iconst_2 │ │ │ │ - // 657: istore 5 │ │ │ │ - // 659: aload_2 │ │ │ │ - // 660: iload 5 │ │ │ │ - // 662: iload 21 │ │ │ │ - // 664: invokevirtual com/crashlytics/android/p.a:(II)V │ │ │ │ - // 667: iconst_3 │ │ │ │ - // 668: istore 5 │ │ │ │ - // 670: aload_2 │ │ │ │ - // 671: iload 5 │ │ │ │ - // 673: aload 9 │ │ │ │ - // 675: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 678: iload 21 │ │ │ │ - // 680: invokestatic com/crashlytics/android/aB.a:(I)[Ljava/lang/Object; │ │ │ │ - // 683: astore 6 │ │ │ │ - // 685: aload 6 │ │ │ │ - // 687: ifnull 766 │ │ │ │ - // 690: aload 6 │ │ │ │ - // 692: arraylength │ │ │ │ - // 693: istore 21 │ │ │ │ - // 695: iconst_1 │ │ │ │ - // 696: istore 22 │ │ │ │ - // 698: iload 21 │ │ │ │ - // 700: iload 22 │ │ │ │ - // 702: if_icmple 766 │ │ │ │ - // 705: iconst_4 │ │ │ │ - // 706: istore 22 │ │ │ │ - // 708: iconst_1 │ │ │ │ - // 709: istore 21 │ │ │ │ - // 711: aload 6 │ │ │ │ - // 713: iload 21 │ │ │ │ - // 715: aaload │ │ │ │ - // 716: astore_1 │ │ │ │ - // 717: aload_1 │ │ │ │ - // 718: checkcast Ljava/lang/String; │ │ │ │ - // 721: astore_1 │ │ │ │ - // 722: aload_1 │ │ │ │ - // 723: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 726: astore_1 │ │ │ │ - // 727: aload_2 │ │ │ │ - // 728: iload 22 │ │ │ │ - // 730: aload_1 │ │ │ │ - // 731: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 734: iconst_5 │ │ │ │ - // 735: istore 22 │ │ │ │ - // 737: iconst_0 │ │ │ │ - // 738: istore 21 │ │ │ │ - // 740: aconst_null │ │ │ │ - // 741: astore_1 │ │ │ │ - // 742: aload 6 │ │ │ │ - // 744: iconst_0 │ │ │ │ - // 745: aaload │ │ │ │ - // 746: astore_1 │ │ │ │ - // 747: aload_1 │ │ │ │ - // 748: checkcast Ljava/lang/Integer; │ │ │ │ - // 751: astore_1 │ │ │ │ - // 752: aload_1 │ │ │ │ - // 753: invokevirtual java/lang/Integer.intValue:()I │ │ │ │ - // 756: istore 21 │ │ │ │ - // 758: aload_2 │ │ │ │ - // 759: iload 22 │ │ │ │ - // 761: iload 21 │ │ │ │ - // 763: invokevirtual com/crashlytics/android/p.a:(II)V │ │ │ │ - // 766: iconst_5 │ │ │ │ - // 767: istore 21 │ │ │ │ - // 769: iconst_2 │ │ │ │ - // 770: istore 5 │ │ │ │ - // 772: aload_2 │ │ │ │ - // 773: iload 21 │ │ │ │ - // 775: iload 5 │ │ │ │ - // 777: invokevirtual com/crashlytics/android/p.g:(II)V │ │ │ │ - // 780: invokestatic com/crashlytics/android/E.n:()I │ │ │ │ - // 783: istore 21 │ │ │ │ - // 785: aload_2 │ │ │ │ - // 786: iload 21 │ │ │ │ - // 788: invokevirtual com/crashlytics/android/p.b:(I)V │ │ │ │ - // 791: iconst_1 │ │ │ │ - // 792: istore 21 │ │ │ │ - // 794: invokestatic com/crashlytics/android/Crashlytics.i:()Ljava/lang/String; │ │ │ │ - // 797: astore 6 │ │ │ │ - // 799: aload_2 │ │ │ │ - // 800: iload 21 │ │ │ │ - // 802: aload 6 │ │ │ │ - // 804: invokevirtual com/crashlytics/android/p.a:(ILjava/lang/String;)V │ │ │ │ - // 807: bipush 6 │ │ │ │ - // 809: istore 21 │ │ │ │ - // 811: aload_2 │ │ │ │ - // 812: iload 21 │ │ │ │ - // 814: aload 14 │ │ │ │ - // 816: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 819: bipush 10 │ │ │ │ - // 821: istore 21 │ │ │ │ - // 823: aload_2 │ │ │ │ - // 824: iload 21 │ │ │ │ - // 826: iload 16 │ │ │ │ - // 828: invokevirtual com/crashlytics/android/p.b:(II)V │ │ │ │ - // 831: aload_2 │ │ │ │ - // 832: ldc_w "Failed to flush to session app file." │ │ │ │ - // 835: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 838: ldc_w "Failed to close session app file." │ │ │ │ - // 841: astore_1 │ │ │ │ - // 842: aload 4 │ │ │ │ - // 844: aload_1 │ │ │ │ - // 845: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 848: iconst_0 │ │ │ │ - // 849: istore 5 │ │ │ │ - // 851: aconst_null │ │ │ │ - // 852: astore 6 │ │ │ │ - // 854: aconst_null │ │ │ │ - // 855: astore_2 │ │ │ │ - // 856: new Lcom/crashlytics/android/n; │ │ │ │ - // 859: astore 4 │ │ │ │ - // 861: invokestatic com/crashlytics/android/Crashlytics.j:()Ljava/io/File; │ │ │ │ - // 864: astore_1 │ │ │ │ - // 865: new Ljava/lang/StringBuilder; │ │ │ │ - // 868: astore 7 │ │ │ │ - // 870: aload 7 │ │ │ │ - // 872: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 875: aload 7 │ │ │ │ - // 877: aload_3 │ │ │ │ - // 878: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 881: astore 7 │ │ │ │ - // 883: ldc_w "SessionOS" │ │ │ │ - // 886: astore 8 │ │ │ │ - // 888: aload 7 │ │ │ │ - // 890: aload 8 │ │ │ │ - // 892: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 895: astore 7 │ │ │ │ - // 897: aload 7 │ │ │ │ - // 899: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 902: astore 7 │ │ │ │ - // 904: aload 4 │ │ │ │ - // 906: aload_1 │ │ │ │ - // 907: aload 7 │ │ │ │ - // 909: invokespecial com/crashlytics/android/n.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 912: aload 4 │ │ │ │ - // 914: invokestatic com/crashlytics/android/p.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ │ │ │ - // 917: astore_2 │ │ │ │ - // 918: getstatic android/os/Build$VERSION.RELEASE:Ljava/lang/String; │ │ │ │ - // 921: astore_1 │ │ │ │ - // 922: aload_1 │ │ │ │ - // 923: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 926: astore_1 │ │ │ │ - // 927: getstatic android/os/Build$VERSION.CODENAME:Ljava/lang/String; │ │ │ │ - // 930: astore 6 │ │ │ │ - // 932: aload 6 │ │ │ │ - // 934: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 937: astore 6 │ │ │ │ - // 939: invokestatic com/crashlytics/android/aB.e:()Z │ │ │ │ - // 942: istore 22 │ │ │ │ - // 944: bipush 8 │ │ │ │ - // 946: istore 23 │ │ │ │ - // 948: iconst_2 │ │ │ │ - // 949: istore 24 │ │ │ │ - // 951: aload_2 │ │ │ │ - // 952: iload 23 │ │ │ │ - // 954: iload 24 │ │ │ │ - // 956: invokevirtual com/crashlytics/android/p.g:(II)V │ │ │ │ - // 959: iconst_1 │ │ │ │ - // 960: istore 23 │ │ │ │ - // 962: iconst_3 │ │ │ │ - // 963: istore 24 │ │ │ │ - // 965: iload 23 │ │ │ │ - // 967: iload 24 │ │ │ │ - // 969: invokestatic com/crashlytics/android/p.e:(II)I │ │ │ │ - // 972: iconst_0 │ │ │ │ - // 973: iadd │ │ │ │ - // 974: istore 23 │ │ │ │ - // 976: iconst_2 │ │ │ │ - // 977: istore 24 │ │ │ │ - // 979: iload 24 │ │ │ │ - // 981: aload_1 │ │ │ │ - // 982: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 985: istore 24 │ │ │ │ - // 987: iload 23 │ │ │ │ - // 989: iload 24 │ │ │ │ - // 991: iadd │ │ │ │ - // 992: istore 23 │ │ │ │ - // 994: iconst_3 │ │ │ │ - // 995: istore 24 │ │ │ │ - // 997: iload 24 │ │ │ │ - // 999: aload 6 │ │ │ │ - // 1001: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 1004: istore 24 │ │ │ │ - // 1006: iload 23 │ │ │ │ - // 1008: iload 24 │ │ │ │ - // 1010: iadd │ │ │ │ - // 1011: istore 23 │ │ │ │ - // 1013: iconst_4 │ │ │ │ - // 1014: istore 24 │ │ │ │ - // 1016: iload 24 │ │ │ │ - // 1018: iload 22 │ │ │ │ - // 1020: invokestatic com/crashlytics/android/p.b:(IZ)I │ │ │ │ - // 1023: istore 24 │ │ │ │ - // 1025: iload 23 │ │ │ │ - // 1027: iload 24 │ │ │ │ - // 1029: iadd │ │ │ │ - // 1030: istore 23 │ │ │ │ - // 1032: aload_2 │ │ │ │ - // 1033: iload 23 │ │ │ │ - // 1035: invokevirtual com/crashlytics/android/p.b:(I)V │ │ │ │ - // 1038: iconst_1 │ │ │ │ - // 1039: istore 23 │ │ │ │ - // 1041: iconst_3 │ │ │ │ - // 1042: istore 24 │ │ │ │ - // 1044: aload_2 │ │ │ │ - // 1045: iload 23 │ │ │ │ - // 1047: iload 24 │ │ │ │ - // 1049: invokevirtual com/crashlytics/android/p.b:(II)V │ │ │ │ - // 1052: iconst_2 │ │ │ │ - // 1053: istore 23 │ │ │ │ - // 1055: aload_2 │ │ │ │ - // 1056: iload 23 │ │ │ │ - // 1058: aload_1 │ │ │ │ - // 1059: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 1062: iconst_3 │ │ │ │ - // 1063: istore 21 │ │ │ │ - // 1065: aload_2 │ │ │ │ - // 1066: iload 21 │ │ │ │ - // 1068: aload 6 │ │ │ │ - // 1070: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 1073: iconst_4 │ │ │ │ - // 1074: istore 21 │ │ │ │ - // 1076: aload_2 │ │ │ │ - // 1077: iload 21 │ │ │ │ - // 1079: iload 22 │ │ │ │ - // 1081: invokevirtual com/crashlytics/android/p.a:(IZ)V │ │ │ │ - // 1084: aload_2 │ │ │ │ - // 1085: ldc_w "Failed to flush to session OS file." │ │ │ │ - // 1088: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1091: aload 4 │ │ │ │ - // 1093: ldc_w "Failed to close session OS file." │ │ │ │ - // 1096: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1099: aload_0 │ │ │ │ - // 1100: aload_3 │ │ │ │ - // 1101: invokespecial com/crashlytics/android/E.c:(Ljava/lang/String;)V │ │ │ │ - // 1104: return │ │ │ │ - // 1105: astore_1 │ │ │ │ - // 1106: aconst_null │ │ │ │ - // 1107: astore 4 │ │ │ │ - // 1109: aload_0 │ │ │ │ - // 1110: aload_1 │ │ │ │ - // 1111: aload 4 │ │ │ │ - // 1113: invokespecial com/crashlytics/android/E.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ - // 1116: aload_1 │ │ │ │ - // 1117: athrow │ │ │ │ - // 1118: astore_1 │ │ │ │ - // 1119: aload_2 │ │ │ │ - // 1120: ldc_w "Failed to flush to session begin file." │ │ │ │ - // 1123: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1126: aload 4 │ │ │ │ - // 1128: ldc_w "Failed to close begin session file." │ │ │ │ - // 1131: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1134: aload_1 │ │ │ │ - // 1135: athrow │ │ │ │ - // 1136: astore_1 │ │ │ │ - // 1137: aconst_null │ │ │ │ - // 1138: astore 4 │ │ │ │ - // 1140: aload_0 │ │ │ │ - // 1141: aload_1 │ │ │ │ - // 1142: aload 4 │ │ │ │ - // 1144: invokespecial com/crashlytics/android/E.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ - // 1147: aload_1 │ │ │ │ - // 1148: athrow │ │ │ │ - // 1149: astore_1 │ │ │ │ - // 1150: aload_2 │ │ │ │ - // 1151: ldc_w "Failed to flush to session app file." │ │ │ │ - // 1154: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1157: aload 4 │ │ │ │ - // 1159: ldc_w "Failed to close session app file." │ │ │ │ - // 1162: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1165: aload_1 │ │ │ │ - // 1166: athrow │ │ │ │ - // 1167: astore_1 │ │ │ │ - // 1168: aconst_null │ │ │ │ - // 1169: astore 4 │ │ │ │ - // 1171: aload_0 │ │ │ │ - // 1172: aload_1 │ │ │ │ - // 1173: aload 4 │ │ │ │ - // 1175: invokespecial com/crashlytics/android/E.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ - // 1178: aload_1 │ │ │ │ - // 1179: athrow │ │ │ │ - // 1180: astore_1 │ │ │ │ - // 1181: aload_2 │ │ │ │ - // 1182: ldc_w "Failed to flush to session OS file." │ │ │ │ - // 1185: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1188: aload 4 │ │ │ │ - // 1190: ldc_w "Failed to close session OS file." │ │ │ │ - // 1193: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1196: aload_1 │ │ │ │ - // 1197: athrow │ │ │ │ - // 1198: astore_1 │ │ │ │ - // 1199: aconst_null │ │ │ │ - // 1200: astore 4 │ │ │ │ - // 1202: goto 1181 │ │ │ │ - // 1205: astore_1 │ │ │ │ - // 1206: goto 1171 │ │ │ │ - // 1209: astore_1 │ │ │ │ - // 1210: aconst_null │ │ │ │ - // 1211: astore 4 │ │ │ │ - // 1213: goto 1150 │ │ │ │ - // 1216: astore_1 │ │ │ │ - // 1217: goto 1140 │ │ │ │ - // 1220: astore_1 │ │ │ │ - // 1221: aconst_null │ │ │ │ - // 1222: astore 4 │ │ │ │ - // 1224: goto 1119 │ │ │ │ - // 1227: astore_1 │ │ │ │ - // 1228: goto 1109 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 55 58 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 55 58 1220 1227 Any │ │ │ │ - // 60 63 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 60 63 1220 1227 Any │ │ │ │ - // 65 68 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 65 68 1220 1227 Any │ │ │ │ - // 70 75 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 70 75 1220 1227 Any │ │ │ │ - // 77 81 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 77 81 1220 1227 Any │ │ │ │ - // 90 95 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 90 95 1220 1227 Any │ │ │ │ - // 97 102 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 97 102 1220 1227 Any │ │ │ │ - // 108 113 1105 1109 Ljava/lang/Exception; │ │ │ │ - // 108 113 1220 1227 Any │ │ │ │ - // 113 118 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 113 118 1118 1119 Any │ │ │ │ - // 122 126 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 122 126 1118 1119 Any │ │ │ │ - // 128 133 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 128 133 1118 1119 Any │ │ │ │ - // 138 143 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 138 143 1118 1119 Any │ │ │ │ - // 146 150 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 146 150 1118 1119 Any │ │ │ │ - // 155 160 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 155 160 1118 1119 Any │ │ │ │ - // 163 167 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 163 167 1118 1119 Any │ │ │ │ - // 176 179 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 176 179 1118 1119 Any │ │ │ │ - // 184 189 1227 1231 Ljava/lang/Exception; │ │ │ │ - // 184 189 1118 1119 Any │ │ │ │ - // 214 217 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 214 217 1209 1216 Any │ │ │ │ - // 219 222 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 219 222 1209 1216 Any │ │ │ │ - // 223 226 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 223 226 1209 1216 Any │ │ │ │ - // 228 233 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 228 233 1209 1216 Any │ │ │ │ - // 235 239 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 235 239 1209 1216 Any │ │ │ │ - // 248 253 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 248 253 1209 1216 Any │ │ │ │ - // 255 260 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 255 260 1209 1216 Any │ │ │ │ - // 265 270 1136 1140 Ljava/lang/Exception; │ │ │ │ - // 265 270 1209 1216 Any │ │ │ │ - // 270 275 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 270 275 1149 1150 Any │ │ │ │ - // 276 279 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 276 279 1149 1150 Any │ │ │ │ - // 280 284 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 280 284 1149 1150 Any │ │ │ │ - // 285 288 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 285 288 1149 1150 Any │ │ │ │ - // 290 295 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 290 295 1149 1150 Any │ │ │ │ - // 297 300 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 297 300 1149 1150 Any │ │ │ │ - // 302 307 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 302 307 1149 1150 Any │ │ │ │ - // 309 312 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 309 312 1149 1150 Any │ │ │ │ - // 314 319 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 314 319 1149 1150 Any │ │ │ │ - // 321 324 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 321 324 1149 1150 Any │ │ │ │ - // 326 331 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 326 331 1149 1150 Any │ │ │ │ - // 333 338 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 333 338 1149 1150 Any │ │ │ │ - // 340 343 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 340 343 1149 1150 Any │ │ │ │ - // 345 350 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 345 350 1149 1150 Any │ │ │ │ - // 352 357 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 352 357 1149 1150 Any │ │ │ │ - // 359 364 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 359 364 1149 1150 Any │ │ │ │ - // 366 369 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 366 369 1149 1150 Any │ │ │ │ - // 371 376 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 371 376 1149 1150 Any │ │ │ │ - // 378 383 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 378 383 1149 1150 Any │ │ │ │ - // 395 400 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 395 400 1149 1150 Any │ │ │ │ - // 405 409 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 405 409 1149 1150 Any │ │ │ │ - // 418 423 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 418 423 1149 1150 Any │ │ │ │ - // 437 442 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 437 442 1149 1150 Any │ │ │ │ - // 451 454 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 451 454 1149 1150 Any │ │ │ │ - // 459 464 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 459 464 1149 1150 Any │ │ │ │ - // 466 471 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 466 471 1149 1150 Any │ │ │ │ - // 494 497 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 494 497 1149 1150 Any │ │ │ │ - // 502 507 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 502 507 1149 1150 Any │ │ │ │ - // 509 514 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 509 514 1149 1150 Any │ │ │ │ - // 543 548 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 543 548 1149 1150 Any │ │ │ │ - // 563 568 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 563 568 1149 1150 Any │ │ │ │ - // 578 583 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 578 583 1149 1150 Any │ │ │ │ - // 589 593 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 589 593 1149 1150 Any │ │ │ │ - // 599 604 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 599 604 1149 1150 Any │ │ │ │ - // 610 615 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 610 615 1149 1150 Any │ │ │ │ - // 624 629 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 624 629 1149 1150 Any │ │ │ │ - // 629 632 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 629 632 1149 1150 Any │ │ │ │ - // 635 640 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 635 640 1149 1150 Any │ │ │ │ - // 646 651 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 646 651 1149 1150 Any │ │ │ │ - // 651 654 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 651 654 1149 1150 Any │ │ │ │ - // 662 667 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 662 667 1149 1150 Any │ │ │ │ - // 673 678 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 673 678 1149 1150 Any │ │ │ │ - // 678 683 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 678 683 1149 1150 Any │ │ │ │ - // 690 693 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 690 693 1149 1150 Any │ │ │ │ - // 713 716 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 713 716 1149 1150 Any │ │ │ │ - // 717 721 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 717 721 1149 1150 Any │ │ │ │ - // 722 726 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 722 726 1149 1150 Any │ │ │ │ - // 730 734 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 730 734 1149 1150 Any │ │ │ │ - // 744 746 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 744 746 1149 1150 Any │ │ │ │ - // 747 751 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 747 751 1149 1150 Any │ │ │ │ - // 752 756 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 752 756 1149 1150 Any │ │ │ │ - // 761 766 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 761 766 1149 1150 Any │ │ │ │ - // 775 780 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 775 780 1149 1150 Any │ │ │ │ - // 780 783 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 780 783 1149 1150 Any │ │ │ │ - // 786 791 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 786 791 1149 1150 Any │ │ │ │ - // 794 797 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 794 797 1149 1150 Any │ │ │ │ - // 802 807 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 802 807 1149 1150 Any │ │ │ │ - // 814 819 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 814 819 1149 1150 Any │ │ │ │ - // 826 831 1216 1220 Ljava/lang/Exception; │ │ │ │ - // 826 831 1149 1150 Any │ │ │ │ - // 856 859 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 856 859 1198 1205 Any │ │ │ │ - // 861 864 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 861 864 1198 1205 Any │ │ │ │ - // 865 868 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 865 868 1198 1205 Any │ │ │ │ - // 870 875 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 870 875 1198 1205 Any │ │ │ │ - // 877 881 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 877 881 1198 1205 Any │ │ │ │ - // 890 895 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 890 895 1198 1205 Any │ │ │ │ - // 897 902 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 897 902 1198 1205 Any │ │ │ │ - // 907 912 1167 1171 Ljava/lang/Exception; │ │ │ │ - // 907 912 1198 1205 Any │ │ │ │ - // 912 917 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 912 917 1180 1181 Any │ │ │ │ - // 918 921 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 918 921 1180 1181 Any │ │ │ │ - // 922 926 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 922 926 1180 1181 Any │ │ │ │ - // 927 930 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 927 930 1180 1181 Any │ │ │ │ - // 932 937 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 932 937 1180 1181 Any │ │ │ │ - // 939 942 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 939 942 1180 1181 Any │ │ │ │ - // 954 959 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 954 959 1180 1181 Any │ │ │ │ - // 967 972 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 967 972 1180 1181 Any │ │ │ │ - // 981 985 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 981 985 1180 1181 Any │ │ │ │ - // 999 1004 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 999 1004 1180 1181 Any │ │ │ │ - // 1018 1023 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 1018 1023 1180 1181 Any │ │ │ │ - // 1033 1038 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 1033 1038 1180 1181 Any │ │ │ │ - // 1047 1052 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 1047 1052 1180 1181 Any │ │ │ │ - // 1058 1062 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 1058 1062 1180 1181 Any │ │ │ │ - // 1068 1073 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 1068 1073 1180 1181 Any │ │ │ │ - // 1079 1084 1205 1209 Ljava/lang/Exception; │ │ │ │ - // 1079 1084 1180 1181 Any │ │ │ │ - // 1111 1116 1118 1119 Any │ │ │ │ - // 1116 1118 1118 1119 Any │ │ │ │ - // 1142 1147 1149 1150 Any │ │ │ │ - // 1147 1149 1149 1150 Any │ │ │ │ - // 1173 1178 1180 1181 Any │ │ │ │ - // 1178 1180 1180 1181 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IndexOutOfBoundsException: Index: 633, Size: 633 │ │ │ │ - // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ - // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void i() { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 3: astore_1 │ │ │ │ - // 4: aload_1 │ │ │ │ - // 5: invokespecial java/util/HashSet.:()V │ │ │ │ - // 8: aload_0 │ │ │ │ - // 9: invokespecial com/crashlytics/android/E.k:()[Ljava/io/File; │ │ │ │ - // 12: astore_2 │ │ │ │ - // 13: getstatic com/crashlytics/android/E.b:Ljava/util/Comparator; │ │ │ │ - // 16: astore_3 │ │ │ │ - // 17: aload_2 │ │ │ │ - // 18: aload_3 │ │ │ │ - // 19: invokestatic java/util/Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V │ │ │ │ - // 22: aload_2 │ │ │ │ - // 23: arraylength │ │ │ │ - // 24: istore 4 │ │ │ │ - // 26: bipush 8 │ │ │ │ - // 28: iload 4 │ │ │ │ - // 30: invokestatic java/lang/Math.min:(II)I │ │ │ │ - // 33: istore 4 │ │ │ │ - // 35: iconst_0 │ │ │ │ - // 36: istore 5 │ │ │ │ - // 38: aconst_null │ │ │ │ - // 39: astore_3 │ │ │ │ - // 40: iload 5 │ │ │ │ - // 42: iload 4 │ │ │ │ - // 44: if_icmpge 74 │ │ │ │ - // 47: aload_2 │ │ │ │ - // 48: iload 5 │ │ │ │ - // 50: aaload │ │ │ │ - // 51: invokestatic com/crashlytics/android/E.a:(Ljava/io/File;)Ljava/lang/String; │ │ │ │ - // 54: astore 6 │ │ │ │ - // 56: aload_1 │ │ │ │ - // 57: aload 6 │ │ │ │ - // 59: invokeinterface java/util/Set.add:(Ljava/lang/Object;)Z │ │ │ │ - // 64: pop │ │ │ │ - // 65: iload 5 │ │ │ │ - // 67: iconst_1 │ │ │ │ - // 68: iadd │ │ │ │ - // 69: istore 5 │ │ │ │ - // 71: goto 40 │ │ │ │ - // 74: new Lcom/crashlytics/android/W; │ │ │ │ - // 77: astore_3 │ │ │ │ - // 78: aload_3 │ │ │ │ - // 79: invokespecial com/crashlytics/android/W.:()V │ │ │ │ - // 82: aload_0 │ │ │ │ - // 83: aload_3 │ │ │ │ - // 84: invokespecial com/crashlytics/android/E.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ - // 87: astore_2 │ │ │ │ - // 88: aload_2 │ │ │ │ - // 89: arraylength │ │ │ │ - // 90: istore 4 │ │ │ │ - // 92: iconst_0 │ │ │ │ - // 93: istore 5 │ │ │ │ - // 95: aconst_null │ │ │ │ - // 96: astore_3 │ │ │ │ - // 97: iload 5 │ │ │ │ - // 99: iload 4 │ │ │ │ - // 101: if_icmpge 209 │ │ │ │ - // 104: aload_2 │ │ │ │ - // 105: iload 5 │ │ │ │ - // 107: aaload │ │ │ │ - // 108: astore 6 │ │ │ │ - // 110: aload 6 │ │ │ │ - // 112: invokevirtual java/io/File.getName:()Ljava/lang/String; │ │ │ │ - // 115: astore 7 │ │ │ │ - // 117: getstatic com/crashlytics/android/E.d:Ljava/util/regex/Pattern; │ │ │ │ - // 120: aload 7 │ │ │ │ - // 122: invokevirtual java/util/regex/Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ │ │ │ - // 125: astore 8 │ │ │ │ - // 127: aload 8 │ │ │ │ - // 129: invokevirtual java/util/regex/Matcher.matches:()Z │ │ │ │ - // 132: pop │ │ │ │ - // 133: iconst_1 │ │ │ │ - // 134: istore 9 │ │ │ │ - // 136: aload 8 │ │ │ │ - // 138: iload 9 │ │ │ │ - // 140: invokevirtual java/util/regex/Matcher.group:(I)Ljava/lang/String; │ │ │ │ - // 143: astore 8 │ │ │ │ - // 145: aload_1 │ │ │ │ - // 146: aload 8 │ │ │ │ - // 148: invokeinterface java/util/Set.contains:(Ljava/lang/Object;)Z │ │ │ │ - // 153: istore 10 │ │ │ │ - // 155: iload 10 │ │ │ │ - // 157: ifne 200 │ │ │ │ - // 160: new Ljava/lang/StringBuilder; │ │ │ │ - // 163: astore 8 │ │ │ │ - // 165: ldc_w "Trimming open session file: " │ │ │ │ - // 168: astore 11 │ │ │ │ - // 170: aload 8 │ │ │ │ - // 172: aload 11 │ │ │ │ - // 174: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 177: aload 8 │ │ │ │ - // 179: aload 7 │ │ │ │ - // 181: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 184: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 187: astore 7 │ │ │ │ - // 189: aload 7 │ │ │ │ - // 191: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 194: aload 6 │ │ │ │ - // 196: invokevirtual java/io/File.delete:()Z │ │ │ │ - // 199: pop │ │ │ │ - // 200: iload 5 │ │ │ │ - // 202: iconst_1 │ │ │ │ - // 203: iadd │ │ │ │ - // 204: istore 5 │ │ │ │ - // 206: goto 97 │ │ │ │ - // 209: aload_0 │ │ │ │ - // 210: invokespecial com/crashlytics/android/E.j:()Ljava/lang/String; │ │ │ │ - // 213: astore_3 │ │ │ │ - // 214: aload_3 │ │ │ │ - // 215: ifnull 1493 │ │ │ │ - // 218: iconst_0 │ │ │ │ - // 219: istore 4 │ │ │ │ - // 221: aconst_null │ │ │ │ - // 222: astore 12 │ │ │ │ - // 224: iconst_0 │ │ │ │ - // 225: istore 13 │ │ │ │ - // 227: aconst_null │ │ │ │ - // 228: astore_1 │ │ │ │ - // 229: new Lcom/crashlytics/android/n; │ │ │ │ - // 232: astore_2 │ │ │ │ - // 233: aload_0 │ │ │ │ - // 234: getfield com/crashlytics/android/E.k:Ljava/io/File; │ │ │ │ - // 237: astore 6 │ │ │ │ - // 239: new Ljava/lang/StringBuilder; │ │ │ │ - // 242: astore 7 │ │ │ │ - // 244: aload 7 │ │ │ │ - // 246: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 249: aload 7 │ │ │ │ - // 251: aload_3 │ │ │ │ - // 252: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 255: astore_3 │ │ │ │ - // 256: ldc_w "SessionUser" │ │ │ │ - // 259: astore 7 │ │ │ │ - // 261: aload_3 │ │ │ │ - // 262: aload 7 │ │ │ │ - // 264: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 267: astore_3 │ │ │ │ - // 268: aload_3 │ │ │ │ - // 269: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 272: astore_3 │ │ │ │ - // 273: aload_2 │ │ │ │ - // 274: aload 6 │ │ │ │ - // 276: aload_3 │ │ │ │ - // 277: invokespecial com/crashlytics/android/n.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 280: aload_2 │ │ │ │ - // 281: invokestatic com/crashlytics/android/p.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ │ │ │ - // 284: astore_1 │ │ │ │ - // 285: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ - // 288: astore_3 │ │ │ │ - // 289: aload_3 │ │ │ │ - // 290: invokevirtual com/crashlytics/android/Crashlytics.p:()Ljava/lang/String; │ │ │ │ - // 293: astore_3 │ │ │ │ - // 294: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ - // 297: astore 12 │ │ │ │ - // 299: aload 12 │ │ │ │ - // 301: invokevirtual com/crashlytics/android/Crashlytics.r:()Ljava/lang/String; │ │ │ │ - // 304: astore 12 │ │ │ │ - // 306: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ - // 309: astore 6 │ │ │ │ - // 311: aload 6 │ │ │ │ - // 313: invokevirtual com/crashlytics/android/Crashlytics.q:()Ljava/lang/String; │ │ │ │ - // 316: astore 7 │ │ │ │ - // 318: aload_3 │ │ │ │ - // 319: ifnonnull 1091 │ │ │ │ - // 322: aload 12 │ │ │ │ - // 324: ifnonnull 1091 │ │ │ │ - // 327: aload 7 │ │ │ │ - // 329: ifnonnull 1091 │ │ │ │ - // 332: aload_1 │ │ │ │ - // 333: ldc_w "Failed to flush session user file." │ │ │ │ - // 336: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 339: ldc_w "Failed to close session user file." │ │ │ │ - // 342: astore_3 │ │ │ │ - // 343: aload_2 │ │ │ │ - // 344: aload_3 │ │ │ │ - // 345: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 348: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ - // 351: invokevirtual com/crashlytics/android/Crashlytics.t:()Lcom/crashlytics/android/ax; │ │ │ │ - // 354: astore_3 │ │ │ │ - // 355: aload_3 │ │ │ │ - // 356: ifnull 1484 │ │ │ │ - // 359: aload_3 │ │ │ │ - // 360: invokevirtual com/crashlytics/android/ax.c:()I │ │ │ │ - // 363: istore 9 │ │ │ │ - // 365: ldc_w "Closing all open sessions." │ │ │ │ - // 368: astore_3 │ │ │ │ - // 369: aload_3 │ │ │ │ - // 370: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 373: aload_0 │ │ │ │ - // 374: invokespecial com/crashlytics/android/E.k:()[Ljava/io/File; │ │ │ │ - // 377: astore 14 │ │ │ │ - // 379: aload 14 │ │ │ │ - // 381: ifnull 1492 │ │ │ │ - // 384: aload 14 │ │ │ │ - // 386: arraylength │ │ │ │ - // 387: istore 5 │ │ │ │ - // 389: iload 5 │ │ │ │ - // 391: ifle 1492 │ │ │ │ - // 394: aload 14 │ │ │ │ - // 396: arraylength │ │ │ │ - // 397: istore 15 │ │ │ │ - // 399: iconst_0 │ │ │ │ - // 400: istore 5 │ │ │ │ - // 402: aconst_null │ │ │ │ - // 403: astore_3 │ │ │ │ - // 404: iconst_0 │ │ │ │ - // 405: istore 16 │ │ │ │ - // 407: aconst_null │ │ │ │ - // 408: astore 7 │ │ │ │ - // 410: iload 16 │ │ │ │ - // 412: iload 15 │ │ │ │ - // 414: if_icmpge 1492 │ │ │ │ - // 417: aload 14 │ │ │ │ - // 419: iload 16 │ │ │ │ - // 421: aaload │ │ │ │ - // 422: astore 17 │ │ │ │ - // 424: aload 17 │ │ │ │ - // 426: invokestatic com/crashlytics/android/E.a:(Ljava/io/File;)Ljava/lang/String; │ │ │ │ - // 429: astore 18 │ │ │ │ - // 431: new Ljava/lang/StringBuilder; │ │ │ │ - // 434: astore_3 │ │ │ │ - // 435: aload_3 │ │ │ │ - // 436: ldc_w "Closing session: " │ │ │ │ - // 439: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 442: aload_3 │ │ │ │ - // 443: aload 18 │ │ │ │ - // 445: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 448: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 451: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 454: new Ljava/lang/StringBuilder; │ │ │ │ - // 457: astore_3 │ │ │ │ - // 458: aload_3 │ │ │ │ - // 459: ldc_w "Collecting session parts for ID " │ │ │ │ - // 462: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 465: aload_3 │ │ │ │ - // 466: aload 18 │ │ │ │ - // 468: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 471: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 474: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 477: new Lcom/crashlytics/android/X; │ │ │ │ - // 480: astore_3 │ │ │ │ - // 481: new Ljava/lang/StringBuilder; │ │ │ │ - // 484: astore_1 │ │ │ │ - // 485: aload_1 │ │ │ │ - // 486: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 489: aload_1 │ │ │ │ - // 490: aload 18 │ │ │ │ - // 492: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 495: astore_1 │ │ │ │ - // 496: ldc_w "SessionCrash" │ │ │ │ - // 499: astore_2 │ │ │ │ - // 500: aload_1 │ │ │ │ - // 501: aload_2 │ │ │ │ - // 502: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 505: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 508: astore_1 │ │ │ │ - // 509: aload_3 │ │ │ │ - // 510: aload_1 │ │ │ │ - // 511: invokespecial com/crashlytics/android/X.:(Ljava/lang/String;)V │ │ │ │ - // 514: aload_0 │ │ │ │ - // 515: aload_3 │ │ │ │ - // 516: invokespecial com/crashlytics/android/E.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ - // 519: astore 19 │ │ │ │ - // 521: aload 19 │ │ │ │ - // 523: ifnull 1337 │ │ │ │ - // 526: aload 19 │ │ │ │ - // 528: arraylength │ │ │ │ - // 529: istore 5 │ │ │ │ - // 531: iload 5 │ │ │ │ - // 533: ifle 1337 │ │ │ │ - // 536: iconst_1 │ │ │ │ - // 537: istore 5 │ │ │ │ - // 539: iload 5 │ │ │ │ - // 541: istore 13 │ │ │ │ - // 543: iconst_2 │ │ │ │ - // 544: istore 20 │ │ │ │ - // 546: iload 20 │ │ │ │ - // 548: anewarray Ljava/lang/Object; │ │ │ │ - // 551: astore_2 │ │ │ │ - // 552: aload_2 │ │ │ │ - // 553: iconst_0 │ │ │ │ - // 554: aload 18 │ │ │ │ - // 556: aastore │ │ │ │ - // 557: iconst_1 │ │ │ │ - // 558: istore 4 │ │ │ │ - // 560: iload 13 │ │ │ │ - // 562: invokestatic java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; │ │ │ │ - // 565: astore 6 │ │ │ │ - // 567: aload_2 │ │ │ │ - // 568: iload 4 │ │ │ │ - // 570: aload 6 │ │ │ │ - // 572: aastore │ │ │ │ - // 573: ldc_w "Session %s has fatal exception: %s" │ │ │ │ - // 576: aload_2 │ │ │ │ - // 577: invokestatic java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ │ │ - // 580: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 583: new Lcom/crashlytics/android/X; │ │ │ │ - // 586: astore_3 │ │ │ │ - // 587: new Ljava/lang/StringBuilder; │ │ │ │ - // 590: astore_2 │ │ │ │ - // 591: aload_2 │ │ │ │ - // 592: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 595: aload_2 │ │ │ │ - // 596: aload 18 │ │ │ │ - // 598: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 601: astore_2 │ │ │ │ - // 602: ldc_w "SessionEvent" │ │ │ │ - // 605: astore 12 │ │ │ │ - // 607: aload_2 │ │ │ │ - // 608: aload 12 │ │ │ │ - // 610: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 613: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 616: astore_2 │ │ │ │ - // 617: aload_3 │ │ │ │ - // 618: aload_2 │ │ │ │ - // 619: invokespecial com/crashlytics/android/X.:(Ljava/lang/String;)V │ │ │ │ - // 622: aload_0 │ │ │ │ - // 623: aload_3 │ │ │ │ - // 624: invokespecial com/crashlytics/android/E.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ - // 627: astore 8 │ │ │ │ - // 629: aload 8 │ │ │ │ - // 631: ifnull 1350 │ │ │ │ - // 634: aload 8 │ │ │ │ - // 636: arraylength │ │ │ │ - // 637: istore 5 │ │ │ │ - // 639: iload 5 │ │ │ │ - // 641: ifle 1350 │ │ │ │ - // 644: iconst_1 │ │ │ │ - // 645: istore 5 │ │ │ │ - // 647: iconst_2 │ │ │ │ - // 648: istore 4 │ │ │ │ - // 650: iload 4 │ │ │ │ - // 652: anewarray Ljava/lang/Object; │ │ │ │ - // 655: astore 12 │ │ │ │ - // 657: aconst_null │ │ │ │ - // 658: astore 6 │ │ │ │ - // 660: aload 12 │ │ │ │ - // 662: iconst_0 │ │ │ │ - // 663: aload 18 │ │ │ │ - // 665: aastore │ │ │ │ - // 666: iconst_1 │ │ │ │ - // 667: istore 21 │ │ │ │ - // 669: iload 5 │ │ │ │ - // 671: invokestatic java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; │ │ │ │ - // 674: astore 22 │ │ │ │ - // 676: aload 12 │ │ │ │ - // 678: iload 21 │ │ │ │ - // 680: aload 22 │ │ │ │ - // 682: aastore │ │ │ │ - // 683: ldc_w "Session %s has non-fatal exceptions: %s" │ │ │ │ - // 686: aload 12 │ │ │ │ - // 688: invokestatic java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ │ │ - // 691: astore_2 │ │ │ │ - // 692: aload_2 │ │ │ │ - // 693: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 696: iload 13 │ │ │ │ - // 698: ifne 706 │ │ │ │ - // 701: iload 5 │ │ │ │ - // 703: ifeq 1454 │ │ │ │ - // 706: iconst_0 │ │ │ │ - // 707: istore 21 │ │ │ │ - // 709: aconst_null │ │ │ │ - // 710: astore 6 │ │ │ │ - // 712: iconst_0 │ │ │ │ - // 713: istore 20 │ │ │ │ - // 715: aconst_null │ │ │ │ - // 716: astore_2 │ │ │ │ - // 717: new Lcom/crashlytics/android/n; │ │ │ │ - // 720: astore 12 │ │ │ │ - // 722: aload_0 │ │ │ │ - // 723: getfield com/crashlytics/android/E.k:Ljava/io/File; │ │ │ │ - // 726: astore 22 │ │ │ │ - // 728: aload 12 │ │ │ │ - // 730: aload 22 │ │ │ │ - // 732: aload 18 │ │ │ │ - // 734: invokespecial com/crashlytics/android/n.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 737: aload 12 │ │ │ │ - // 739: invokestatic com/crashlytics/android/p.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ │ │ │ - // 742: astore_2 │ │ │ │ - // 743: new Ljava/lang/StringBuilder; │ │ │ │ - // 746: astore 6 │ │ │ │ - // 748: ldc_w "Collecting SessionStart data for session ID " │ │ │ │ - // 751: astore 22 │ │ │ │ - // 753: aload 6 │ │ │ │ - // 755: aload 22 │ │ │ │ - // 757: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 760: aload 6 │ │ │ │ - // 762: aload 18 │ │ │ │ - // 764: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 767: astore 6 │ │ │ │ - // 769: aload 6 │ │ │ │ - // 771: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 774: astore 6 │ │ │ │ - // 776: aload 6 │ │ │ │ - // 778: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 781: aload_2 │ │ │ │ - // 782: aload 17 │ │ │ │ - // 784: invokestatic com/crashlytics/android/E.a:(Lcom/crashlytics/android/p;Ljava/io/File;)V │ │ │ │ - // 787: iconst_4 │ │ │ │ - // 788: istore 21 │ │ │ │ - // 790: new Ljava/util/Date; │ │ │ │ - // 793: astore 17 │ │ │ │ - // 795: aload 17 │ │ │ │ - // 797: invokespecial java/util/Date.:()V │ │ │ │ - // 800: aload 17 │ │ │ │ - // 802: invokevirtual java/util/Date.getTime:()J │ │ │ │ - // 805: lstore 23 │ │ │ │ - // 807: ldc2_w 1000 │ │ │ │ - // 810: lstore 25 │ │ │ │ - // 812: lload 23 │ │ │ │ - // 814: lload 25 │ │ │ │ - // 816: ldiv │ │ │ │ - // 817: lstore 23 │ │ │ │ - // 819: aload_2 │ │ │ │ - // 820: iload 21 │ │ │ │ - // 822: lload 23 │ │ │ │ - // 824: invokevirtual com/crashlytics/android/p.a:(IJ)V │ │ │ │ - // 827: iconst_5 │ │ │ │ - // 828: istore 21 │ │ │ │ - // 830: aload_2 │ │ │ │ - // 831: iload 21 │ │ │ │ - // 833: iload 13 │ │ │ │ - // 835: invokevirtual com/crashlytics/android/p.a:(IZ)V │ │ │ │ - // 838: aload_0 │ │ │ │ - // 839: aload_2 │ │ │ │ - // 840: aload 18 │ │ │ │ - // 842: invokespecial com/crashlytics/android/E.a:(Lcom/crashlytics/android/p;Ljava/lang/String;)V │ │ │ │ - // 845: iload 5 │ │ │ │ - // 847: ifeq 978 │ │ │ │ - // 850: aload 8 │ │ │ │ - // 852: arraylength │ │ │ │ - // 853: istore 5 │ │ │ │ - // 855: iload 5 │ │ │ │ - // 857: iload 9 │ │ │ │ - // 859: if_icmple 1551 │ │ │ │ - // 862: ldc_w "Trimming down to %d logged exceptions." │ │ │ │ - // 865: astore_3 │ │ │ │ - // 866: iconst_1 │ │ │ │ - // 867: istore 21 │ │ │ │ - // 869: iload 21 │ │ │ │ - // 871: anewarray Ljava/lang/Object; │ │ │ │ - // 874: astore 6 │ │ │ │ - // 876: iconst_0 │ │ │ │ - // 877: istore 10 │ │ │ │ - // 879: aconst_null │ │ │ │ - // 880: astore 8 │ │ │ │ - // 882: iload 9 │ │ │ │ - // 884: invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer; │ │ │ │ - // 887: astore 17 │ │ │ │ - // 889: aload 6 │ │ │ │ - // 891: iconst_0 │ │ │ │ - // 892: aload 17 │ │ │ │ - // 894: aastore │ │ │ │ - // 895: aload_3 │ │ │ │ - // 896: aload 6 │ │ │ │ - // 898: invokestatic java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ │ │ - // 901: astore_3 │ │ │ │ - // 902: aload_3 │ │ │ │ - // 903: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 906: aload_0 │ │ │ │ - // 907: aload 18 │ │ │ │ - // 909: iload 9 │ │ │ │ - // 911: invokespecial com/crashlytics/android/E.a:(Ljava/lang/String;I)V │ │ │ │ - // 914: new Lcom/crashlytics/android/X; │ │ │ │ - // 917: astore_3 │ │ │ │ - // 918: new Ljava/lang/StringBuilder; │ │ │ │ - // 921: astore 6 │ │ │ │ - // 923: aload 6 │ │ │ │ - // 925: invokespecial java/lang/StringBuilder.:()V │ │ │ │ - // 928: aload 6 │ │ │ │ - // 930: aload 18 │ │ │ │ - // 932: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 935: astore 6 │ │ │ │ - // 937: ldc_w "SessionEvent" │ │ │ │ - // 940: astore 8 │ │ │ │ - // 942: aload 6 │ │ │ │ - // 944: aload 8 │ │ │ │ - // 946: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 949: astore 6 │ │ │ │ - // 951: aload 6 │ │ │ │ - // 953: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 956: astore 6 │ │ │ │ - // 958: aload_3 │ │ │ │ - // 959: aload 6 │ │ │ │ - // 961: invokespecial com/crashlytics/android/X.:(Ljava/lang/String;)V │ │ │ │ - // 964: aload_0 │ │ │ │ - // 965: aload_3 │ │ │ │ - // 966: invokespecial com/crashlytics/android/E.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ - // 969: astore_3 │ │ │ │ - // 970: aload_0 │ │ │ │ - // 971: aload_2 │ │ │ │ - // 972: aload_3 │ │ │ │ - // 973: aload 18 │ │ │ │ - // 975: invokespecial com/crashlytics/android/E.a:(Lcom/crashlytics/android/p;[Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 978: iload 13 │ │ │ │ - // 980: ifeq 998 │ │ │ │ - // 983: iconst_0 │ │ │ │ - // 984: istore 5 │ │ │ │ - // 986: aconst_null │ │ │ │ - // 987: astore_3 │ │ │ │ - // 988: aload 19 │ │ │ │ - // 990: iconst_0 │ │ │ │ - // 991: aaload │ │ │ │ - // 992: astore_3 │ │ │ │ - // 993: aload_2 │ │ │ │ - // 994: aload_3 │ │ │ │ - // 995: invokestatic com/crashlytics/android/E.a:(Lcom/crashlytics/android/p;Ljava/io/File;)V │ │ │ │ - // 998: bipush 11 │ │ │ │ - // 1000: istore 5 │ │ │ │ - // 1002: iconst_1 │ │ │ │ - // 1003: istore 13 │ │ │ │ - // 1005: aload_2 │ │ │ │ - // 1006: iload 5 │ │ │ │ - // 1008: iload 13 │ │ │ │ - // 1010: invokevirtual com/crashlytics/android/p.a:(II)V │ │ │ │ - // 1013: bipush 12 │ │ │ │ - // 1015: istore 5 │ │ │ │ - // 1017: iconst_3 │ │ │ │ - // 1018: istore 13 │ │ │ │ - // 1020: aload_2 │ │ │ │ - // 1021: iload 5 │ │ │ │ - // 1023: iload 13 │ │ │ │ - // 1025: invokevirtual com/crashlytics/android/p.b:(II)V │ │ │ │ - // 1028: aload_2 │ │ │ │ - // 1029: ldc_w "Error flushing session file stream" │ │ │ │ - // 1032: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1035: ldc_w "Failed to close CLS file" │ │ │ │ - // 1038: astore_3 │ │ │ │ - // 1039: aload 12 │ │ │ │ - // 1041: aload_3 │ │ │ │ - // 1042: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1045: new Ljava/lang/StringBuilder; │ │ │ │ - // 1048: astore_3 │ │ │ │ - // 1049: ldc_w "Removing session part files for ID " │ │ │ │ - // 1052: astore_1 │ │ │ │ - // 1053: aload_3 │ │ │ │ - // 1054: aload_1 │ │ │ │ - // 1055: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 1058: aload_3 │ │ │ │ - // 1059: aload 18 │ │ │ │ - // 1061: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 1064: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 1067: astore_3 │ │ │ │ - // 1068: aload_3 │ │ │ │ - // 1069: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 1072: aload_0 │ │ │ │ - // 1073: aload 18 │ │ │ │ - // 1075: invokespecial com/crashlytics/android/E.a:(Ljava/lang/String;)V │ │ │ │ - // 1078: iload 16 │ │ │ │ - // 1080: iconst_1 │ │ │ │ - // 1081: iadd │ │ │ │ - // 1082: istore 5 │ │ │ │ - // 1084: iload 5 │ │ │ │ - // 1086: istore 16 │ │ │ │ - // 1088: goto 410 │ │ │ │ - // 1091: aload_3 │ │ │ │ - // 1092: ifnonnull 1099 │ │ │ │ - // 1095: ldc_w "" │ │ │ │ - // 1098: astore_3 │ │ │ │ - // 1099: aload_3 │ │ │ │ - // 1100: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 1103: astore 8 │ │ │ │ - // 1105: aload 12 │ │ │ │ - // 1107: ifnonnull 1282 │ │ │ │ - // 1110: iconst_0 │ │ │ │ - // 1111: istore 5 │ │ │ │ - // 1113: aconst_null │ │ │ │ - // 1114: astore_3 │ │ │ │ - // 1115: iconst_0 │ │ │ │ - // 1116: istore 21 │ │ │ │ - // 1118: aconst_null │ │ │ │ - // 1119: astore 6 │ │ │ │ - // 1121: aload 7 │ │ │ │ - // 1123: ifnonnull 1294 │ │ │ │ - // 1126: iconst_0 │ │ │ │ - // 1127: istore 5 │ │ │ │ - // 1129: aconst_null │ │ │ │ - // 1130: astore_3 │ │ │ │ - // 1131: iconst_0 │ │ │ │ - // 1132: istore 4 │ │ │ │ - // 1134: aconst_null │ │ │ │ - // 1135: astore 12 │ │ │ │ - // 1137: iconst_1 │ │ │ │ - // 1138: istore 5 │ │ │ │ - // 1140: iload 5 │ │ │ │ - // 1142: aload 8 │ │ │ │ - // 1144: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 1147: iconst_0 │ │ │ │ - // 1148: iadd │ │ │ │ - // 1149: istore 5 │ │ │ │ - // 1151: aload 6 │ │ │ │ - // 1153: ifnull 1175 │ │ │ │ - // 1156: iconst_2 │ │ │ │ - // 1157: istore 16 │ │ │ │ - // 1159: iload 16 │ │ │ │ - // 1161: aload 6 │ │ │ │ - // 1163: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 1166: istore 16 │ │ │ │ - // 1168: iload 5 │ │ │ │ - // 1170: iload 16 │ │ │ │ - // 1172: iadd │ │ │ │ - // 1173: istore 5 │ │ │ │ - // 1175: aload 12 │ │ │ │ - // 1177: ifnull 1199 │ │ │ │ - // 1180: iconst_3 │ │ │ │ - // 1181: istore 16 │ │ │ │ - // 1183: iload 16 │ │ │ │ - // 1185: aload 12 │ │ │ │ - // 1187: invokestatic com/crashlytics/android/p.b:(ILcom/crashlytics/android/k;)I │ │ │ │ - // 1190: istore 16 │ │ │ │ - // 1192: iload 5 │ │ │ │ - // 1194: iload 16 │ │ │ │ - // 1196: iadd │ │ │ │ - // 1197: istore 5 │ │ │ │ - // 1199: bipush 6 │ │ │ │ - // 1201: istore 16 │ │ │ │ - // 1203: iconst_2 │ │ │ │ - // 1204: istore 9 │ │ │ │ - // 1206: aload_1 │ │ │ │ - // 1207: iload 16 │ │ │ │ - // 1209: iload 9 │ │ │ │ - // 1211: invokevirtual com/crashlytics/android/p.g:(II)V │ │ │ │ - // 1214: aload_1 │ │ │ │ - // 1215: iload 5 │ │ │ │ - // 1217: invokevirtual com/crashlytics/android/p.b:(I)V │ │ │ │ - // 1220: iconst_1 │ │ │ │ - // 1221: istore 5 │ │ │ │ - // 1223: aload_1 │ │ │ │ - // 1224: iload 5 │ │ │ │ - // 1226: aload 8 │ │ │ │ - // 1228: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 1231: aload 6 │ │ │ │ - // 1233: ifnull 1247 │ │ │ │ - // 1236: iconst_2 │ │ │ │ - // 1237: istore 5 │ │ │ │ - // 1239: aload_1 │ │ │ │ - // 1240: iload 5 │ │ │ │ - // 1242: aload 6 │ │ │ │ - // 1244: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 1247: aload 12 │ │ │ │ - // 1249: ifnull 1263 │ │ │ │ - // 1252: iconst_3 │ │ │ │ - // 1253: istore 5 │ │ │ │ - // 1255: aload_1 │ │ │ │ - // 1256: iload 5 │ │ │ │ - // 1258: aload 12 │ │ │ │ - // 1260: invokevirtual com/crashlytics/android/p.a:(ILcom/crashlytics/android/k;)V │ │ │ │ - // 1263: aload_1 │ │ │ │ - // 1264: ldc_w "Failed to flush session user file." │ │ │ │ - // 1267: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1270: ldc_w "Failed to close session user file." │ │ │ │ - // 1273: astore_3 │ │ │ │ - // 1274: aload_2 │ │ │ │ - // 1275: aload_3 │ │ │ │ - // 1276: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1279: goto 348 │ │ │ │ - // 1282: aload 12 │ │ │ │ - // 1284: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 1287: astore_3 │ │ │ │ - // 1288: aload_3 │ │ │ │ - // 1289: astore 6 │ │ │ │ - // 1291: goto 1121 │ │ │ │ - // 1294: aload 7 │ │ │ │ - // 1296: invokestatic com/crashlytics/android/k.a:(Ljava/lang/String;)Lcom/crashlytics/android/k; │ │ │ │ - // 1299: astore_3 │ │ │ │ - // 1300: aload_3 │ │ │ │ - // 1301: astore 12 │ │ │ │ - // 1303: goto 1137 │ │ │ │ - // 1306: astore_3 │ │ │ │ - // 1307: iconst_0 │ │ │ │ - // 1308: istore 20 │ │ │ │ - // 1310: aconst_null │ │ │ │ - // 1311: astore_2 │ │ │ │ - // 1312: aload_0 │ │ │ │ - // 1313: aload_3 │ │ │ │ - // 1314: aload_2 │ │ │ │ - // 1315: invokespecial com/crashlytics/android/E.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ - // 1318: aload_3 │ │ │ │ - // 1319: athrow │ │ │ │ - // 1320: astore_3 │ │ │ │ - // 1321: aload_1 │ │ │ │ - // 1322: ldc_w "Failed to flush session user file." │ │ │ │ - // 1325: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1328: aload_2 │ │ │ │ - // 1329: ldc_w "Failed to close session user file." │ │ │ │ - // 1332: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1335: aload_3 │ │ │ │ - // 1336: athrow │ │ │ │ - // 1337: iconst_0 │ │ │ │ - // 1338: istore 5 │ │ │ │ - // 1340: aconst_null │ │ │ │ - // 1341: astore_3 │ │ │ │ - // 1342: iconst_0 │ │ │ │ - // 1343: istore 13 │ │ │ │ - // 1345: aconst_null │ │ │ │ - // 1346: astore_1 │ │ │ │ - // 1347: goto 543 │ │ │ │ - // 1350: iconst_0 │ │ │ │ - // 1351: istore 5 │ │ │ │ - // 1353: aconst_null │ │ │ │ - // 1354: astore_3 │ │ │ │ - // 1355: goto 647 │ │ │ │ - // 1358: astore_3 │ │ │ │ - // 1359: iconst_0 │ │ │ │ - // 1360: istore 13 │ │ │ │ - // 1362: aconst_null │ │ │ │ - // 1363: astore_1 │ │ │ │ - // 1364: iconst_0 │ │ │ │ - // 1365: istore 20 │ │ │ │ - // 1367: aconst_null │ │ │ │ - // 1368: astore_2 │ │ │ │ - // 1369: new Ljava/lang/StringBuilder; │ │ │ │ - // 1372: astore 12 │ │ │ │ - // 1374: ldc_w "Failed to write session file for session ID: " │ │ │ │ - // 1377: astore 6 │ │ │ │ - // 1379: aload 12 │ │ │ │ - // 1381: aload 6 │ │ │ │ - // 1383: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 1386: aload 12 │ │ │ │ - // 1388: aload 18 │ │ │ │ - // 1390: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 1393: astore 12 │ │ │ │ - // 1395: aload 12 │ │ │ │ - // 1397: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 1400: astore 12 │ │ │ │ - // 1402: aload 12 │ │ │ │ - // 1404: aload_3 │ │ │ │ - // 1405: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 1408: aload_0 │ │ │ │ - // 1409: aload_3 │ │ │ │ - // 1410: aload_2 │ │ │ │ - // 1411: invokespecial com/crashlytics/android/E.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ - // 1414: ldc_w "Error flushing session file stream" │ │ │ │ - // 1417: astore_3 │ │ │ │ - // 1418: aload_1 │ │ │ │ - // 1419: aload_3 │ │ │ │ - // 1420: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1423: aload_2 │ │ │ │ - // 1424: invokestatic com/crashlytics/android/E.a:(Lcom/crashlytics/android/n;)V │ │ │ │ - // 1427: goto 1045 │ │ │ │ - // 1430: astore_3 │ │ │ │ - // 1431: iconst_0 │ │ │ │ - // 1432: istore 4 │ │ │ │ - // 1434: aconst_null │ │ │ │ - // 1435: astore 12 │ │ │ │ - // 1437: aload_2 │ │ │ │ - // 1438: ldc_w "Error flushing session file stream" │ │ │ │ - // 1441: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ - // 1444: aload 12 │ │ │ │ - // 1446: ldc_w "Failed to close CLS file" │ │ │ │ - // 1449: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 1452: aload_3 │ │ │ │ - // 1453: athrow │ │ │ │ - // 1454: new Ljava/lang/StringBuilder; │ │ │ │ - // 1457: astore_3 │ │ │ │ - // 1458: ldc_w "No events present for session ID " │ │ │ │ - // 1461: astore_1 │ │ │ │ - // 1462: aload_3 │ │ │ │ - // 1463: aload_1 │ │ │ │ - // 1464: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 1467: aload_3 │ │ │ │ - // 1468: aload 18 │ │ │ │ - // 1470: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 1473: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 1476: astore_3 │ │ │ │ - // 1477: aload_3 │ │ │ │ - // 1478: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 1481: goto 1045 │ │ │ │ - // 1484: ldc_w "No session begin files found." │ │ │ │ - // 1487: astore_3 │ │ │ │ - // 1488: aload_3 │ │ │ │ - // 1489: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 1492: return │ │ │ │ - // 1493: ldc_w "Unable to close session. Settings are not loaded." │ │ │ │ - // 1496: astore_3 │ │ │ │ - // 1497: aload_3 │ │ │ │ - // 1498: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 1501: goto 1492 │ │ │ │ - // 1504: astore_3 │ │ │ │ - // 1505: goto 1437 │ │ │ │ - // 1508: astore_3 │ │ │ │ - // 1509: aload_2 │ │ │ │ - // 1510: astore 12 │ │ │ │ - // 1512: aload_1 │ │ │ │ - // 1513: astore_2 │ │ │ │ - // 1514: goto 1437 │ │ │ │ - // 1517: astore_3 │ │ │ │ - // 1518: iconst_0 │ │ │ │ - // 1519: istore 13 │ │ │ │ - // 1521: aconst_null │ │ │ │ - // 1522: astore_1 │ │ │ │ - // 1523: aload 12 │ │ │ │ - // 1525: astore_2 │ │ │ │ - // 1526: goto 1369 │ │ │ │ - // 1529: astore_3 │ │ │ │ - // 1530: aload_2 │ │ │ │ - // 1531: astore_1 │ │ │ │ - // 1532: aload 12 │ │ │ │ - // 1534: astore_2 │ │ │ │ - // 1535: goto 1369 │ │ │ │ - // 1538: astore_3 │ │ │ │ - // 1539: iconst_0 │ │ │ │ - // 1540: istore 20 │ │ │ │ - // 1542: aconst_null │ │ │ │ - // 1543: astore_2 │ │ │ │ - // 1544: goto 1321 │ │ │ │ - // 1547: astore_3 │ │ │ │ - // 1548: goto 1312 │ │ │ │ - // 1551: aload 8 │ │ │ │ - // 1553: astore_3 │ │ │ │ - // 1554: goto 970 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 229 232 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 229 232 1538 1547 Any │ │ │ │ - // 233 237 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 233 237 1538 1547 Any │ │ │ │ - // 239 242 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 239 242 1538 1547 Any │ │ │ │ - // 244 249 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 244 249 1538 1547 Any │ │ │ │ - // 251 255 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 251 255 1538 1547 Any │ │ │ │ - // 262 267 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 262 267 1538 1547 Any │ │ │ │ - // 268 272 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 268 272 1538 1547 Any │ │ │ │ - // 276 280 1306 1312 Ljava/lang/Exception; │ │ │ │ - // 276 280 1538 1547 Any │ │ │ │ - // 280 284 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 280 284 1320 1321 Any │ │ │ │ - // 285 288 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 285 288 1320 1321 Any │ │ │ │ - // 289 293 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 289 293 1320 1321 Any │ │ │ │ - // 294 297 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 294 297 1320 1321 Any │ │ │ │ - // 299 304 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 299 304 1320 1321 Any │ │ │ │ - // 306 309 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 306 309 1320 1321 Any │ │ │ │ - // 311 316 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 311 316 1320 1321 Any │ │ │ │ - // 717 720 1358 1369 Ljava/lang/Exception; │ │ │ │ - // 717 720 1430 1437 Any │ │ │ │ - // 722 726 1358 1369 Ljava/lang/Exception; │ │ │ │ - // 722 726 1430 1437 Any │ │ │ │ - // 732 737 1358 1369 Ljava/lang/Exception; │ │ │ │ - // 732 737 1430 1437 Any │ │ │ │ - // 737 742 1517 1529 Ljava/lang/Exception; │ │ │ │ - // 737 742 1504 1508 Any │ │ │ │ - // 743 746 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 743 746 1504 1508 Any │ │ │ │ - // 755 760 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 755 760 1504 1508 Any │ │ │ │ - // 762 767 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 762 767 1504 1508 Any │ │ │ │ - // 769 774 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 769 774 1504 1508 Any │ │ │ │ - // 776 781 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 776 781 1504 1508 Any │ │ │ │ - // 782 787 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 782 787 1504 1508 Any │ │ │ │ - // 790 793 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 790 793 1504 1508 Any │ │ │ │ - // 795 800 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 795 800 1504 1508 Any │ │ │ │ - // 800 805 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 800 805 1504 1508 Any │ │ │ │ - // 814 817 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 814 817 1504 1508 Any │ │ │ │ - // 822 827 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 822 827 1504 1508 Any │ │ │ │ - // 833 838 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 833 838 1504 1508 Any │ │ │ │ - // 840 845 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 840 845 1504 1508 Any │ │ │ │ - // 850 853 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 850 853 1504 1508 Any │ │ │ │ - // 869 874 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 869 874 1504 1508 Any │ │ │ │ - // 882 887 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 882 887 1504 1508 Any │ │ │ │ - // 892 895 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 892 895 1504 1508 Any │ │ │ │ - // 896 901 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 896 901 1504 1508 Any │ │ │ │ - // 902 906 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 902 906 1504 1508 Any │ │ │ │ - // 909 914 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 909 914 1504 1508 Any │ │ │ │ - // 914 917 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 914 917 1504 1508 Any │ │ │ │ - // 918 921 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 918 921 1504 1508 Any │ │ │ │ - // 923 928 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 923 928 1504 1508 Any │ │ │ │ - // 930 935 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 930 935 1504 1508 Any │ │ │ │ - // 944 949 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 944 949 1504 1508 Any │ │ │ │ - // 951 956 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 951 956 1504 1508 Any │ │ │ │ - // 959 964 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 959 964 1504 1508 Any │ │ │ │ - // 965 969 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 965 969 1504 1508 Any │ │ │ │ - // 973 978 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 973 978 1504 1508 Any │ │ │ │ - // 990 992 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 990 992 1504 1508 Any │ │ │ │ - // 994 998 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 994 998 1504 1508 Any │ │ │ │ - // 1008 1013 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 1008 1013 1504 1508 Any │ │ │ │ - // 1023 1028 1529 1538 Ljava/lang/Exception; │ │ │ │ - // 1023 1028 1504 1508 Any │ │ │ │ - // 1099 1103 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1099 1103 1320 1321 Any │ │ │ │ - // 1142 1147 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1142 1147 1320 1321 Any │ │ │ │ - // 1161 1166 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1161 1166 1320 1321 Any │ │ │ │ - // 1185 1190 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1185 1190 1320 1321 Any │ │ │ │ - // 1209 1214 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1209 1214 1320 1321 Any │ │ │ │ - // 1215 1220 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1215 1220 1320 1321 Any │ │ │ │ - // 1226 1231 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1226 1231 1320 1321 Any │ │ │ │ - // 1242 1247 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1242 1247 1320 1321 Any │ │ │ │ - // 1258 1263 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1258 1263 1320 1321 Any │ │ │ │ - // 1282 1287 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1282 1287 1320 1321 Any │ │ │ │ - // 1294 1299 1547 1551 Ljava/lang/Exception; │ │ │ │ - // 1294 1299 1320 1321 Any │ │ │ │ - // 1314 1318 1320 1321 Any │ │ │ │ - // 1318 1320 1320 1321 Any │ │ │ │ - // 1369 1372 1508 1517 Any │ │ │ │ - // 1381 1386 1508 1517 Any │ │ │ │ - // 1388 1393 1508 1517 Any │ │ │ │ - // 1395 1400 1508 1517 Any │ │ │ │ - // 1404 1408 1508 1517 Any │ │ │ │ - // 1410 1414 1508 1517 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IndexOutOfBoundsException: Index: 812, Size: 812 │ │ │ │ - // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ - // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private String j() { │ │ │ │ - final File[] a = this.a((FilenameFilter)new X("BeginSession")); │ │ │ │ - Arrays.sort(a, E.b); │ │ │ │ - String a2; │ │ │ │ - if (a.length > 0) { │ │ │ │ - a2 = a(a[0]); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - a2 = null; │ │ │ │ - } │ │ │ │ - return a2; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private File[] k() { │ │ │ │ - return this.a((FilenameFilter)new X("BeginSession")); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void l() { │ │ │ │ - final File[] a = this.a(E.a); │ │ │ │ - for (int length = a.length, i = 0; i < length; ++i) { │ │ │ │ - final File file = a[i]; │ │ │ │ - aB.c("Attempting to send crash report at time of crash..."); │ │ │ │ - new Thread((Runnable)new J(this, file), "Crashlytics Report Uploader").start(); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int m() { │ │ │ │ - final int n = 1; │ │ │ │ - final int n2 = p.b(n, k.a(Crashlytics.k())) + 0; │ │ │ │ - final int myPid = Process.myPid(); │ │ │ │ - final int n3 = p.b(3, k.a(Crashlytics.d().getPackageCodePath())) + (n2 + p.d(2, myPid)); │ │ │ │ - final Object[] a = aB.a(myPid); │ │ │ │ - int n4; │ │ │ │ - if (a != null && a.length > n) { │ │ │ │ - n4 = p.d(5, (int)(Integer)a[0]) + (n3 + p.b(4, k.a((String)a[n]))); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n4 = n3; │ │ │ │ - } │ │ │ │ - return n4; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int n() { │ │ │ │ - return p.b(1, k.a(Crashlytics.i())) + 0; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private int o() { │ │ │ │ - final long n = 0L; │ │ │ │ - int n2 = com.crashlytics.android.p.b(1, n) + 0 + com.crashlytics.android.p.b(2, n) + com.crashlytics.android.p.b(3, this.p); │ │ │ │ - if (this.q != null) { │ │ │ │ - n2 += com.crashlytics.android.p.b(4, this.q); │ │ │ │ - } │ │ │ │ - return n2; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int p() { │ │ │ │ - return p.b(1, E.f) + 0 + p.b(2, E.f) + p.b(3, 0L); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final void a(final long n, final String s) { │ │ │ │ - this.b((Callable)new G(this, n, s)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final void a(final Thread thread, final Throwable t) { │ │ │ │ - this.a((Runnable)new V(this, new Date(), thread, t)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final void a(final File[] array) { │ │ │ │ - final File file = new File(Crashlytics.j(), "invalidClsFiles"); │ │ │ │ - if (file.exists()) { │ │ │ │ - if (file.isDirectory()) { │ │ │ │ - final File[] listFiles = file.listFiles(); │ │ │ │ - for (int length = listFiles.length, i = 0; i < length; ++i) { │ │ │ │ - listFiles[i].delete(); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - file.delete(); │ │ │ │ - } │ │ │ │ - for (int length2 = array.length, j = 0; j < length2; ++j) { │ │ │ │ - final File file2 = array[j]; │ │ │ │ - aB.c("Found invalid session part file: " + file2); │ │ │ │ - final String a = a(file2); │ │ │ │ - final L l = new L(this, a); │ │ │ │ - aB.c("Deleting all part files for invalid session: " + a); │ │ │ │ - final File[] a2 = this.a((FilenameFilter)l); │ │ │ │ - for (int length3 = a2.length, k = 0; k < length3; ++k) { │ │ │ │ - final File file3 = a2[k]; │ │ │ │ - aB.c("Deleting session file: " + file3); │ │ │ │ - file3.delete(); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - final boolean a() { │ │ │ │ - return this.l.get(); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final void b() { │ │ │ │ - this.a((Callable)new U(this)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - final boolean c() { │ │ │ │ - return this.k().length > 0; │ │ │ │ - } │ │ │ │ + private /* synthetic */ v a; │ │ │ │ │ │ │ │ - final void d() { │ │ │ │ - this.a((Runnable)new K(this)); │ │ │ │ + E(final v a) { │ │ │ │ + this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void uncaughtException(final Thread p0, final Throwable p1) { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: monitorenter │ │ │ │ - // 2: aload_0 │ │ │ │ - // 3: getfield com/crashlytics/android/E.l:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ - // 6: astore_3 │ │ │ │ - // 7: iconst_1 │ │ │ │ - // 8: istore 4 │ │ │ │ - // 10: aload_3 │ │ │ │ - // 11: iload 4 │ │ │ │ - // 13: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ - // 16: new Ljava/lang/StringBuilder; │ │ │ │ - // 19: astore_3 │ │ │ │ - // 20: ldc_w "Crashlytics is handling uncaught exception \"" │ │ │ │ - // 23: astore 5 │ │ │ │ - // 25: aload_3 │ │ │ │ - // 26: aload 5 │ │ │ │ - // 28: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 31: aload_3 │ │ │ │ - // 32: aload_2 │ │ │ │ - // 33: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ │ │ - // 36: astore_3 │ │ │ │ - // 37: ldc_w "\" from thread " │ │ │ │ - // 40: astore 5 │ │ │ │ - // 42: aload_3 │ │ │ │ - // 43: aload 5 │ │ │ │ - // 45: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 48: astore_3 │ │ │ │ - // 49: aload_1 │ │ │ │ - // 50: invokevirtual java/lang/Thread.getName:()Ljava/lang/String; │ │ │ │ - // 53: astore 5 │ │ │ │ - // 55: aload_3 │ │ │ │ - // 56: aload 5 │ │ │ │ - // 58: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 61: astore_3 │ │ │ │ - // 62: aload_3 │ │ │ │ - // 63: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 66: astore_3 │ │ │ │ - // 67: aload_3 │ │ │ │ - // 68: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 71: aload_0 │ │ │ │ - // 72: getfield com/crashlytics/android/E.h:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ - // 75: astore_3 │ │ │ │ - // 76: iconst_1 │ │ │ │ - // 77: istore 4 │ │ │ │ - // 79: aload_3 │ │ │ │ - // 80: iload 4 │ │ │ │ - // 82: invokevirtual java/util/concurrent/atomic/AtomicBoolean.getAndSet:(Z)Z │ │ │ │ - // 85: istore 6 │ │ │ │ - // 87: iload 6 │ │ │ │ - // 89: ifne 132 │ │ │ │ - // 92: ldc_w "Unregistering power receivers." │ │ │ │ - // 95: astore_3 │ │ │ │ - // 96: aload_3 │ │ │ │ - // 97: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 100: invokestatic com/crashlytics/android/Crashlytics.d:()Landroid/content/ContextWrapper; │ │ │ │ - // 103: astore_3 │ │ │ │ - // 104: aload_0 │ │ │ │ - // 105: getfield com/crashlytics/android/E.o:Landroid/content/BroadcastReceiver; │ │ │ │ - // 108: astore 5 │ │ │ │ - // 110: aload_3 │ │ │ │ - // 111: aload 5 │ │ │ │ - // 113: invokevirtual android/content/ContextWrapper.unregisterReceiver:(Landroid/content/BroadcastReceiver;)V │ │ │ │ - // 116: invokestatic com/crashlytics/android/Crashlytics.d:()Landroid/content/ContextWrapper; │ │ │ │ - // 119: astore_3 │ │ │ │ - // 120: aload_0 │ │ │ │ - // 121: getfield com/crashlytics/android/E.n:Landroid/content/BroadcastReceiver; │ │ │ │ - // 124: astore 5 │ │ │ │ - // 126: aload_3 │ │ │ │ - // 127: aload 5 │ │ │ │ - // 129: invokevirtual android/content/ContextWrapper.unregisterReceiver:(Landroid/content/BroadcastReceiver;)V │ │ │ │ - // 132: new Ljava/util/Date; │ │ │ │ - // 135: astore_3 │ │ │ │ - // 136: aload_3 │ │ │ │ - // 137: invokespecial java/util/Date.:()V │ │ │ │ - // 140: new Lcom/crashlytics/android/T; │ │ │ │ - // 143: astore 5 │ │ │ │ - // 145: aload 5 │ │ │ │ - // 147: aload_0 │ │ │ │ - // 148: aload_3 │ │ │ │ - // 149: aload_1 │ │ │ │ - // 150: aload_2 │ │ │ │ - // 151: invokespecial com/crashlytics/android/T.:(Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ - // 154: aload_0 │ │ │ │ - // 155: aload 5 │ │ │ │ - // 157: invokespecial com/crashlytics/android/E.a:(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ │ │ │ - // 160: pop │ │ │ │ - // 161: ldc_w "Crashlytics completed exception processing. Invoking default exception handler." │ │ │ │ - // 164: astore_3 │ │ │ │ - // 165: aload_3 │ │ │ │ - // 166: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 169: aload_0 │ │ │ │ - // 170: getfield com/crashlytics/android/E.j:Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ - // 173: astore_3 │ │ │ │ - // 174: aload_3 │ │ │ │ - // 175: aload_1 │ │ │ │ - // 176: aload_2 │ │ │ │ - // 177: invokeinterface java/lang/Thread$UncaughtExceptionHandler.uncaughtException:(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ - // 182: aload_0 │ │ │ │ - // 183: getfield com/crashlytics/android/E.l:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ - // 186: astore_3 │ │ │ │ - // 187: iconst_0 │ │ │ │ - // 188: istore 4 │ │ │ │ - // 190: aconst_null │ │ │ │ - // 191: astore 5 │ │ │ │ - // 193: aload_3 │ │ │ │ - // 194: iconst_0 │ │ │ │ - // 195: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ - // 198: aload_0 │ │ │ │ - // 199: monitorexit │ │ │ │ - // 200: return │ │ │ │ - // 201: astore_3 │ │ │ │ - // 202: ldc_w "An error occurred in the uncaught exception handler" │ │ │ │ - // 205: astore 5 │ │ │ │ - // 207: aload 5 │ │ │ │ - // 209: aload_3 │ │ │ │ - // 210: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 213: ldc_w "Crashlytics completed exception processing. Invoking default exception handler." │ │ │ │ - // 216: astore_3 │ │ │ │ - // 217: aload_3 │ │ │ │ - // 218: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 221: aload_0 │ │ │ │ - // 222: getfield com/crashlytics/android/E.j:Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ - // 225: astore_3 │ │ │ │ - // 226: aload_3 │ │ │ │ - // 227: aload_1 │ │ │ │ - // 228: aload_2 │ │ │ │ - // 229: invokeinterface java/lang/Thread$UncaughtExceptionHandler.uncaughtException:(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ - // 234: aload_0 │ │ │ │ - // 235: getfield com/crashlytics/android/E.l:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ - // 238: astore_3 │ │ │ │ - // 239: iconst_0 │ │ │ │ - // 240: istore 4 │ │ │ │ - // 242: aconst_null │ │ │ │ - // 243: astore 5 │ │ │ │ - // 245: aload_3 │ │ │ │ - // 246: iconst_0 │ │ │ │ - // 247: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ - // 250: goto 198 │ │ │ │ - // 253: astore_3 │ │ │ │ - // 254: aload_0 │ │ │ │ - // 255: monitorexit │ │ │ │ - // 256: aload_3 │ │ │ │ - // 257: athrow │ │ │ │ - // 258: astore_3 │ │ │ │ - // 259: ldc_w "Crashlytics completed exception processing. Invoking default exception handler." │ │ │ │ - // 262: astore 5 │ │ │ │ - // 264: aload 5 │ │ │ │ - // 266: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 269: aload_0 │ │ │ │ - // 270: getfield com/crashlytics/android/E.j:Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ - // 273: astore 5 │ │ │ │ - // 275: aload 5 │ │ │ │ - // 277: aload_1 │ │ │ │ - // 278: aload_2 │ │ │ │ - // 279: invokeinterface java/lang/Thread$UncaughtExceptionHandler.uncaughtException:(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ - // 284: aload_0 │ │ │ │ - // 285: getfield com/crashlytics/android/E.l:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ - // 288: astore 5 │ │ │ │ - // 290: aload 5 │ │ │ │ - // 292: iconst_0 │ │ │ │ - // 293: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ - // 296: aload_3 │ │ │ │ - // 297: athrow │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 2 6 253 258 Any │ │ │ │ - // 11 16 253 258 Any │ │ │ │ - // 16 19 201 253 Ljava/lang/Exception; │ │ │ │ - // 16 19 258 298 Any │ │ │ │ - // 26 31 201 253 Ljava/lang/Exception; │ │ │ │ - // 26 31 258 298 Any │ │ │ │ - // 32 36 201 253 Ljava/lang/Exception; │ │ │ │ - // 32 36 258 298 Any │ │ │ │ - // 43 48 201 253 Ljava/lang/Exception; │ │ │ │ - // 43 48 258 298 Any │ │ │ │ - // 49 53 201 253 Ljava/lang/Exception; │ │ │ │ - // 49 53 258 298 Any │ │ │ │ - // 56 61 201 253 Ljava/lang/Exception; │ │ │ │ - // 56 61 258 298 Any │ │ │ │ - // 62 66 201 253 Ljava/lang/Exception; │ │ │ │ - // 62 66 258 298 Any │ │ │ │ - // 67 71 201 253 Ljava/lang/Exception; │ │ │ │ - // 67 71 258 298 Any │ │ │ │ - // 71 75 201 253 Ljava/lang/Exception; │ │ │ │ - // 71 75 258 298 Any │ │ │ │ - // 80 85 201 253 Ljava/lang/Exception; │ │ │ │ - // 80 85 258 298 Any │ │ │ │ - // 96 100 201 253 Ljava/lang/Exception; │ │ │ │ - // 96 100 258 298 Any │ │ │ │ - // 100 103 201 253 Ljava/lang/Exception; │ │ │ │ - // 100 103 258 298 Any │ │ │ │ - // 104 108 201 253 Ljava/lang/Exception; │ │ │ │ - // 104 108 258 298 Any │ │ │ │ - // 111 116 201 253 Ljava/lang/Exception; │ │ │ │ - // 111 116 258 298 Any │ │ │ │ - // 116 119 201 253 Ljava/lang/Exception; │ │ │ │ - // 116 119 258 298 Any │ │ │ │ - // 120 124 201 253 Ljava/lang/Exception; │ │ │ │ - // 120 124 258 298 Any │ │ │ │ - // 127 132 201 253 Ljava/lang/Exception; │ │ │ │ - // 127 132 258 298 Any │ │ │ │ - // 132 135 201 253 Ljava/lang/Exception; │ │ │ │ - // 132 135 258 298 Any │ │ │ │ - // 136 140 201 253 Ljava/lang/Exception; │ │ │ │ - // 136 140 258 298 Any │ │ │ │ - // 140 143 201 253 Ljava/lang/Exception; │ │ │ │ - // 140 143 258 298 Any │ │ │ │ - // 150 154 201 253 Ljava/lang/Exception; │ │ │ │ - // 150 154 258 298 Any │ │ │ │ - // 155 161 201 253 Ljava/lang/Exception; │ │ │ │ - // 155 161 258 298 Any │ │ │ │ - // 165 169 253 258 Any │ │ │ │ - // 169 173 253 258 Any │ │ │ │ - // 176 182 253 258 Any │ │ │ │ - // 182 186 253 258 Any │ │ │ │ - // 194 198 253 258 Any │ │ │ │ - // 209 213 258 298 Any │ │ │ │ - // 217 221 253 258 Any │ │ │ │ - // 221 225 253 258 Any │ │ │ │ - // 228 234 253 258 Any │ │ │ │ - // 234 238 253 258 Any │ │ │ │ - // 246 250 253 258 Any │ │ │ │ - // 264 269 253 258 Any │ │ │ │ - // 269 273 253 258 Any │ │ │ │ - // 278 284 253 258 Any │ │ │ │ - // 284 288 253 258 Any │ │ │ │ - // 292 296 253 258 Any │ │ │ │ - // 296 298 253 258 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IllegalStateException: Expression is linked from several locations: Label_0198: │ │ │ │ - // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + public final void run() { │ │ │ │ + this.a.a(v.a(this.a, f.a)); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/F.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -2,11 +2,17 @@ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ import java.io.File; │ │ │ │ import java.io.FilenameFilter; │ │ │ │ │ │ │ │ final class F implements FilenameFilter │ │ │ │ { │ │ │ │ + private /* synthetic */ String a; │ │ │ │ + │ │ │ │ + F(final v v, final String a) { │ │ │ │ + this.a = a; │ │ │ │ + } │ │ │ │ + │ │ │ │ public final boolean accept(final File file, final String s) { │ │ │ │ - return s.length() == 39 && s.endsWith(".cls"); │ │ │ │ + return s.startsWith(this.a); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/G.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,17 +1,24 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.concurrent.Callable; │ │ │ │ - │ │ │ │ -final class G implements Callable │ │ │ │ +final class G implements Runnable │ │ │ │ { │ │ │ │ - private /* synthetic */ long a; │ │ │ │ - private /* synthetic */ String b; │ │ │ │ - private /* synthetic */ E c; │ │ │ │ + private /* synthetic */ Runnable a; │ │ │ │ │ │ │ │ - G(final E c, final long a, final String b) { │ │ │ │ - this.c = c; │ │ │ │ + G(final v v, final Runnable a) { │ │ │ │ this.a = a; │ │ │ │ - this.b = b; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void run() { │ │ │ │ + try { │ │ │ │ + final Runnable a = this.a; │ │ │ │ + try { │ │ │ │ + a.run(); │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Failed to execute task.", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex2) {} │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/H.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,26 +1,9 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.InputStream; │ │ │ │ +import java.io.File; │ │ │ │ +import java.util.Comparator; │ │ │ │ │ │ │ │ -final class H implements QueueFile$ElementReader │ │ │ │ +final class H implements Comparator │ │ │ │ { │ │ │ │ - private /* synthetic */ byte[] a; │ │ │ │ - private /* synthetic */ int[] b; │ │ │ │ - │ │ │ │ - H(final E e, final byte[] a, final int[] b) { │ │ │ │ - this.a = a; │ │ │ │ - this.b = b; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void read(final InputStream inputStream, final int n) { │ │ │ │ - try { │ │ │ │ - inputStream.read(this.a, this.b[0], n); │ │ │ │ - final int[] b = this.b; │ │ │ │ - b[0] += n; │ │ │ │ - } │ │ │ │ - finally { │ │ │ │ - inputStream.close(); │ │ │ │ - } │ │ │ │ - } │ │ │ │ } │ │ ├── com/crashlytics/android/I.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,13 +1,27 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ import java.util.concurrent.Callable; │ │ │ │ │ │ │ │ final class I implements Callable │ │ │ │ { │ │ │ │ - private /* synthetic */ E a; │ │ │ │ + private /* synthetic */ Callable a; │ │ │ │ │ │ │ │ - I(final E a) { │ │ │ │ + I(final v v, final Callable a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ + │ │ │ │ + public final Object call() { │ │ │ │ + try { │ │ │ │ + final Callable a = this.a; │ │ │ │ + try { │ │ │ │ + return a.call(); │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Failed to execute task.", (Throwable)ex); │ │ │ │ + final Object call = null; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex2) {} │ │ │ │ + } │ │ │ │ } │ │ ├── com/crashlytics/android/J.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,20 +1,9 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ import java.io.File; │ │ │ │ +import java.util.Comparator; │ │ │ │ │ │ │ │ -final class J implements Runnable │ │ │ │ +final class J implements Comparator │ │ │ │ { │ │ │ │ - private /* synthetic */ File a; │ │ │ │ - │ │ │ │ - J(final E e, final File a) { │ │ │ │ - this.a = a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void run() { │ │ │ │ - final ab s = Crashlytics.getInstance().s(); │ │ │ │ - if (s != null) { │ │ │ │ - new ar(s).a(new aq(this.a, E.f())); │ │ │ │ - } │ │ │ │ - } │ │ │ │ } │ │ ├── com/crashlytics/android/K.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,15 +1,12 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class K implements Runnable │ │ │ │ +import java.io.File; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ + │ │ │ │ +final class K implements FilenameFilter │ │ │ │ { │ │ │ │ - private /* synthetic */ E a; │ │ │ │ - │ │ │ │ - K(final E a) { │ │ │ │ - this.a = a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void run() { │ │ │ │ - this.a.a(E.a(this.a, n.a)); │ │ │ │ + public final boolean accept(final File file, final String s) { │ │ │ │ + return v.i().matcher(s).matches(); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/L.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,18 +1,19 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.File; │ │ │ │ -import java.io.FilenameFilter; │ │ │ │ +import android.content.Intent; │ │ │ │ +import android.content.Context; │ │ │ │ +import android.content.BroadcastReceiver; │ │ │ │ │ │ │ │ -final class L implements FilenameFilter │ │ │ │ +final class L extends BroadcastReceiver │ │ │ │ { │ │ │ │ - private /* synthetic */ String a; │ │ │ │ + private /* synthetic */ v a; │ │ │ │ │ │ │ │ - L(final E e, final String a) { │ │ │ │ + L(final v a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public final boolean accept(final File file, final String s) { │ │ │ │ - return s.startsWith(this.a); │ │ │ │ + public final void onReceive(final Context context, final Intent intent) { │ │ │ │ + v.a(this.a, true); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/M.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,24 +1,19 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class M implements Runnable │ │ │ │ +import android.content.Intent; │ │ │ │ +import android.content.Context; │ │ │ │ +import android.content.BroadcastReceiver; │ │ │ │ + │ │ │ │ +final class M extends BroadcastReceiver │ │ │ │ { │ │ │ │ - private /* synthetic */ Runnable a; │ │ │ │ + private /* synthetic */ v a; │ │ │ │ │ │ │ │ - M(final E e, final Runnable a) { │ │ │ │ + M(final v a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void run() { │ │ │ │ - try { │ │ │ │ - final Runnable a = this.a; │ │ │ │ - try { │ │ │ │ - a.run(); │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - aB.a("Failed to execute task.", (Throwable)ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex2) {} │ │ │ │ + public final void onReceive(final Context context, final Intent intent) { │ │ │ │ + v.a(this.a, false); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/N.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,27 +1,20 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ +import java.util.Date; │ │ │ │ import java.util.concurrent.Callable; │ │ │ │ │ │ │ │ final class N implements Callable │ │ │ │ { │ │ │ │ - private /* synthetic */ Callable a; │ │ │ │ + private /* synthetic */ Date a; │ │ │ │ + private /* synthetic */ Thread b; │ │ │ │ + private /* synthetic */ Throwable c; │ │ │ │ + private /* synthetic */ v d; │ │ │ │ │ │ │ │ - N(final E e, final Callable a) { │ │ │ │ + N(final v d, final Date a, final Thread b, final Throwable c) { │ │ │ │ + this.d = d; │ │ │ │ this.a = a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final Object call() { │ │ │ │ - try { │ │ │ │ - final Callable a = this.a; │ │ │ │ - try { │ │ │ │ - return a.call(); │ │ │ │ - } │ │ │ │ - catch (Exception ex) { │ │ │ │ - aB.a("Failed to execute task.", (Throwable)ex); │ │ │ │ - final Object call = null; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - catch (Exception ex2) {} │ │ │ │ + this.b = b; │ │ │ │ + this.c = c; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/O.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,9 +1,13 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.File; │ │ │ │ -import java.util.Comparator; │ │ │ │ +import java.util.concurrent.Callable; │ │ │ │ │ │ │ │ -final class O implements Comparator │ │ │ │ +final class O implements Callable │ │ │ │ { │ │ │ │ + private /* synthetic */ v a; │ │ │ │ + │ │ │ │ + O(final v a) { │ │ │ │ + this.a = a; │ │ │ │ + } │ │ │ │ } │ │ ├── com/crashlytics/android/P.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,9 +1,25 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.File; │ │ │ │ -import java.util.Comparator; │ │ │ │ +import java.util.Date; │ │ │ │ │ │ │ │ -final class P implements Comparator │ │ │ │ +final class P implements Runnable │ │ │ │ { │ │ │ │ + private /* synthetic */ Date a; │ │ │ │ + private /* synthetic */ Thread b; │ │ │ │ + private /* synthetic */ Throwable c; │ │ │ │ + private /* synthetic */ v d; │ │ │ │ + │ │ │ │ + P(final v d, final Date a, final Thread b, final Throwable c) { │ │ │ │ + this.d = d; │ │ │ │ + this.a = a; │ │ │ │ + this.b = b; │ │ │ │ + this.c = c; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void run() { │ │ │ │ + if (!v.a(this.d).get()) { │ │ │ │ + v.b(this.d, this.a, this.b, this.c); │ │ │ │ + } │ │ │ │ + } │ │ │ │ } │ │ ├── com/crashlytics/android/Q.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -3,10 +3,10 @@ │ │ │ │ │ │ │ │ import java.io.File; │ │ │ │ import java.io.FilenameFilter; │ │ │ │ │ │ │ │ final class Q implements FilenameFilter │ │ │ │ { │ │ │ │ public final boolean accept(final File file, final String s) { │ │ │ │ - return E.e().matcher(s).matches(); │ │ │ │ + return !v.a.accept(file, s) && v.i().matcher(s).matches(); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/R.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,19 +1,18 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.content.Intent; │ │ │ │ -import android.content.Context; │ │ │ │ -import android.content.BroadcastReceiver; │ │ │ │ +import java.io.File; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ │ │ │ │ -final class R extends BroadcastReceiver │ │ │ │ +final class R implements FilenameFilter │ │ │ │ { │ │ │ │ - private /* synthetic */ E a; │ │ │ │ + private final String a; │ │ │ │ │ │ │ │ - R(final E a) { │ │ │ │ + public R(final String a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void onReceive(final Context context, final Intent intent) { │ │ │ │ - E.a(this.a, true); │ │ │ │ + public final boolean accept(final File file, final String s) { │ │ │ │ + return s.contains(this.a) && !s.endsWith(".cls_temp"); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/S.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,19 +1,22 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.content.Intent; │ │ │ │ -import android.content.Context; │ │ │ │ -import android.content.BroadcastReceiver; │ │ │ │ +import java.io.File; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ │ │ │ │ -final class S extends BroadcastReceiver │ │ │ │ +final class S implements FilenameFilter │ │ │ │ { │ │ │ │ - private /* synthetic */ E a; │ │ │ │ + private final String a; │ │ │ │ │ │ │ │ - S(final E a) { │ │ │ │ + public S(final String a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void onReceive(final Context context, final Intent intent) { │ │ │ │ - E.a(this.a, false); │ │ │ │ + public final boolean accept(final File file, final String s) { │ │ │ │ + boolean b = false; │ │ │ │ + if (!s.equals(this.a + ".cls") && s.contains(this.a) && !s.endsWith(".cls_temp")) { │ │ │ │ + b = true; │ │ │ │ + } │ │ │ │ + return b; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/T.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,20 +1,12 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.Date; │ │ │ │ -import java.util.concurrent.Callable; │ │ │ │ +import com.crashlytics.android.internal.ax; │ │ │ │ +import com.crashlytics.android.internal.av; │ │ │ │ │ │ │ │ -final class T implements Callable │ │ │ │ +final class T extends a │ │ │ │ { │ │ │ │ - private /* synthetic */ Date a; │ │ │ │ - private /* synthetic */ Thread b; │ │ │ │ - private /* synthetic */ Throwable c; │ │ │ │ - private /* synthetic */ E d; │ │ │ │ - │ │ │ │ - T(final E d, final Date a, final Thread b, final Throwable c) { │ │ │ │ - this.d = d; │ │ │ │ - this.a = a; │ │ │ │ - this.b = b; │ │ │ │ - this.c = c; │ │ │ │ + public T(final String s, final String s2, final av av) { │ │ │ │ + super(s, s2, av, ax.b); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/U.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.concurrent.Callable; │ │ │ │ - │ │ │ │ -final class U implements Callable │ │ │ │ +final class U │ │ │ │ { │ │ │ │ - private /* synthetic */ E a; │ │ │ │ + public final String a; │ │ │ │ + public final Z b; │ │ │ │ │ │ │ │ - U(final E a) { │ │ │ │ + public U(final String a, final Z b) { │ │ │ │ this.a = a; │ │ │ │ + this.b = b; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/V.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,25 +1,7 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.Date; │ │ │ │ - │ │ │ │ -final class V implements Runnable │ │ │ │ +interface V │ │ │ │ { │ │ │ │ - private /* synthetic */ Date a; │ │ │ │ - private /* synthetic */ Thread b; │ │ │ │ - private /* synthetic */ Throwable c; │ │ │ │ - private /* synthetic */ E d; │ │ │ │ - │ │ │ │ - V(final E d, final Date a, final Thread b, final Throwable c) { │ │ │ │ - this.d = d; │ │ │ │ - this.a = a; │ │ │ │ - this.b = b; │ │ │ │ - this.c = c; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void run() { │ │ │ │ - if (!E.a(this.d).get()) { │ │ │ │ - E.b(this.d, this.a, this.b, this.c); │ │ │ │ - } │ │ │ │ - } │ │ │ │ + boolean a(final U p0); │ │ │ │ } │ │ ├── com/crashlytics/android/W.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,12 +1,34 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.File; │ │ │ │ -import java.io.FilenameFilter; │ │ │ │ +import java.util.Iterator; │ │ │ │ +import com.crashlytics.android.internal.ay; │ │ │ │ +import com.crashlytics.android.internal.r; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ +import java.util.Map; │ │ │ │ +import com.crashlytics.android.internal.ax; │ │ │ │ +import com.crashlytics.android.internal.av; │ │ │ │ +import com.crashlytics.android.internal.Z; │ │ │ │ │ │ │ │ -final class W implements FilenameFilter │ │ │ │ +final class W extends Z implements V │ │ │ │ { │ │ │ │ - public final boolean accept(final File file, final String s) { │ │ │ │ - return !E.a.accept(file, s) && E.e().matcher(s).matches(); │ │ │ │ + public W(final String s, final String s2, final av av) { │ │ │ │ + super(s, s2, av, ax.b); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final boolean a(final U u) { │ │ │ │ + final ay a = this.b().a("X-CRASHLYTICS-API-KEY", u.a).a("X-CRASHLYTICS-API-CLIENT-TYPE", "android").a("X-CRASHLYTICS-API-CLIENT-VERSION", Crashlytics.getInstance().getVersion()); │ │ │ │ + final Iterator iterator = u.b.e().entrySet().iterator(); │ │ │ │ + ay a2 = a; │ │ │ │ + while (iterator.hasNext()) { │ │ │ │ + a2 = a2.a((Map.Entry)(Map.Entry)iterator.next()); │ │ │ │ + } │ │ │ │ + final com.crashlytics.android.Z b = u.b; │ │ │ │ + final ay b2 = a2.a("report[file]", b.b(), "application/octet-stream", b.d()).b("report[identifier]", b.c()); │ │ │ │ + v.a().b().a("Crashlytics", "Sending report to: " + this.a()); │ │ │ │ + final int b3 = b2.b(); │ │ │ │ + v.a().b().a("Crashlytics", "Create report request ID: " + b2.a("X-REQUEST-ID")); │ │ │ │ + v.a().b().a("Crashlytics", "Result was: " + b3); │ │ │ │ + return r.a(b3) == 0; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/X.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,18 +1,52 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.File; │ │ │ │ -import java.io.FilenameFilter; │ │ │ │ +import com.crashlytics.android.internal.ab; │ │ │ │ +import com.crashlytics.android.internal.aQ; │ │ │ │ +import android.content.Context; │ │ │ │ │ │ │ │ -final class X implements FilenameFilter │ │ │ │ +final class X │ │ │ │ { │ │ │ │ - private String a; │ │ │ │ + private final Context a; │ │ │ │ + private final aQ b; │ │ │ │ │ │ │ │ - public X(final String a) { │ │ │ │ + public X(final Context a, final aQ b) { │ │ │ │ this.a = a; │ │ │ │ + this.b = b; │ │ │ │ } │ │ │ │ │ │ │ │ - public final boolean accept(final File file, final String s) { │ │ │ │ - return s.contains(this.a) && !s.endsWith(".cls_temp"); │ │ │ │ + private String a(final String s, String s2) { │ │ │ │ + final String a = ab.a(this.a, s); │ │ │ │ + int n; │ │ │ │ + if (a == null || a.length() == 0) { │ │ │ │ + n = 1; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n = 0; │ │ │ │ + } │ │ │ │ + if (n == 0) { │ │ │ │ + s2 = a; │ │ │ │ + } │ │ │ │ + return s2; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final String a() { │ │ │ │ + return this.a("com.crashlytics.CrashSubmissionPromptTitle", this.b.a); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final String b() { │ │ │ │ + return this.a("com.crashlytics.CrashSubmissionPromptMessage", this.b.b); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final String c() { │ │ │ │ + return this.a("com.crashlytics.CrashSubmissionSendTitle", this.b.c); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final String d() { │ │ │ │ + return this.a("com.crashlytics.CrashSubmissionAlwaysSendTitle", this.b.g); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final String e() { │ │ │ │ + return this.a("com.crashlytics.CrashSubmissionCancelTitle", this.b.e); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/Y.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,22 +1,69 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.File; │ │ │ │ -import java.io.FilenameFilter; │ │ │ │ +import com.crashlytics.android.internal.q; │ │ │ │ +import android.graphics.BitmapFactory; │ │ │ │ +import android.graphics.BitmapFactory$Options; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ +import com.crashlytics.android.internal.ab; │ │ │ │ +import android.content.Context; │ │ │ │ │ │ │ │ -final class Y implements FilenameFilter │ │ │ │ +final class Y │ │ │ │ { │ │ │ │ - private String a; │ │ │ │ + public final String a; │ │ │ │ + public final int b; │ │ │ │ + public final int c; │ │ │ │ + public final int d; │ │ │ │ │ │ │ │ - public Y(final String a) { │ │ │ │ + private Y(final String a, final int b, final int c, final int d) { │ │ │ │ this.a = a; │ │ │ │ + this.b = b; │ │ │ │ + this.c = c; │ │ │ │ + this.d = d; │ │ │ │ } │ │ │ │ │ │ │ │ - public final boolean accept(final File file, final String s) { │ │ │ │ - boolean b = false; │ │ │ │ - if (!s.equals(this.a + ".cls") && s.contains(this.a) && !s.endsWith(".cls_temp")) { │ │ │ │ - b = true; │ │ │ │ + public static Y a(final Context context, final String s) { │ │ │ │ + if (s == null) { │ │ │ │ + return null; │ │ │ │ } │ │ │ │ - return b; │ │ │ │ + try { │ │ │ │ + final int h = ab.h(context); │ │ │ │ + try { │ │ │ │ + final v a = v.a(); │ │ │ │ + try { │ │ │ │ + final q b = a.b(); │ │ │ │ + final String s2 = "Crashlytics"; │ │ │ │ + final StringBuilder sb = new StringBuilder("App icon resource ID is "); │ │ │ │ + try { │ │ │ │ + final StringBuilder append = sb.append(h); │ │ │ │ + try { │ │ │ │ + b.a(s2, append.toString()); │ │ │ │ + try { │ │ │ │ + final BitmapFactory$Options bitmapFactory$Options = new BitmapFactory$Options(); │ │ │ │ + bitmapFactory$Options.inJustDecodeBounds = true; │ │ │ │ + BitmapFactory.decodeResource(context.getResources(), h, bitmapFactory$Options); │ │ │ │ + try { │ │ │ │ + final int outWidth = bitmapFactory$Options.outWidth; │ │ │ │ + try { │ │ │ │ + return new Y(s, h, outWidth, bitmapFactory$Options.outHeight); │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + v.a().b().a("Crashlytics", "Failed to load icon", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex2) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex3) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex4) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex5) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex6) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex7) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex8) {} │ │ │ │ + return null; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/b.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,55 +1,50 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.Collections; │ │ │ │ -import javax.net.ssl.HttpsURLConnection; │ │ │ │ -import java.util.Map; │ │ │ │ -import java.util.regex.Pattern; │ │ │ │ +import java.util.Arrays; │ │ │ │ +import java.util.Comparator; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ +import java.io.File; │ │ │ │ │ │ │ │ -abstract class b │ │ │ │ +class b │ │ │ │ { │ │ │ │ - private static String a; │ │ │ │ - private static final Pattern b; │ │ │ │ - private final String c; │ │ │ │ - private final aj d; │ │ │ │ - private final String e; │ │ │ │ + public final String a; │ │ │ │ + public final String b; │ │ │ │ + public final String c; │ │ │ │ + public final String d; │ │ │ │ + public final String e; │ │ │ │ + public final String f; │ │ │ │ + public final int g; │ │ │ │ + public final String h; │ │ │ │ + public final String i; │ │ │ │ + public final Y j; │ │ │ │ │ │ │ │ - static { │ │ │ │ - com.crashlytics.android.b.a = "Crashlytics Android SDK/" + Crashlytics.getCrashlyticsVersion(); │ │ │ │ - b = Pattern.compile("http(s?)://[^\\/]+", 2); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public b(final String e, String replaceFirst, final aj d) { │ │ │ │ - if (replaceFirst == null) { │ │ │ │ - throw new IllegalArgumentException("url must not be null."); │ │ │ │ - } │ │ │ │ - if (d == null) { │ │ │ │ - throw new IllegalArgumentException("requestBuilder must not be null."); │ │ │ │ - } │ │ │ │ - this.e = e; │ │ │ │ - if (!aB.d(this.e)) { │ │ │ │ - replaceFirst = com.crashlytics.android.b.b.matcher(replaceFirst).replaceFirst(this.e); │ │ │ │ - } │ │ │ │ - this.c = replaceFirst; │ │ │ │ + public b(final String a, final String b, final String c, final String d, final String e, final String f, final int g, final String h, final String i, final Y j) { │ │ │ │ + this.a = a; │ │ │ │ + this.b = b; │ │ │ │ + this.c = c; │ │ │ │ this.d = d; │ │ │ │ + this.e = e; │ │ │ │ + this.f = f; │ │ │ │ + this.g = g; │ │ │ │ + this.h = h; │ │ │ │ + this.i = i; │ │ │ │ + this.j = j; │ │ │ │ } │ │ │ │ │ │ │ │ - protected final HttpRequest a(final Map map) { │ │ │ │ - final HttpRequest a = this.d.a(this.c, map); │ │ │ │ - if (this.c.toLowerCase().startsWith("https")) { │ │ │ │ - final PinningInfoProvider pinningInfoProvider = Crashlytics.getPinningInfoProvider(); │ │ │ │ - if (pinningInfoProvider != null) { │ │ │ │ - ((HttpsURLConnection)a.a()).setSSLSocketFactory(aB.a(pinningInfoProvider)); │ │ │ │ + public static void a(final File file, final FilenameFilter filenameFilter, final int n, final Comparator comparator) { │ │ │ │ + final File[] listFiles = file.listFiles(filenameFilter); │ │ │ │ + if (listFiles != null && listFiles.length > n) { │ │ │ │ + Arrays.sort(listFiles, comparator); │ │ │ │ + int length = listFiles.length; │ │ │ │ + for (int length2 = listFiles.length, i = 0; i < length2; ++i) { │ │ │ │ + final File file2 = listFiles[i]; │ │ │ │ + if (length <= n) { │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + file2.delete(); │ │ │ │ + --length; │ │ │ │ } │ │ │ │ } │ │ │ │ - return a.a(false).a(10000).a("User-Agent", com.crashlytics.android.b.a).a("X-CRASHLYTICS-DEVELOPER-TOKEN", "bca6990fc3c15a8105800c0673517a4b579634a1"); │ │ │ │ - } │ │ │ │ - │ │ │ │ - protected final String a() { │ │ │ │ - return this.c; │ │ │ │ - } │ │ │ │ - │ │ │ │ - protected final HttpRequest b() { │ │ │ │ - return this.a(Collections.emptyMap()); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/a.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,36 +1,330 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.InputStream; │ │ │ │ -import java.io.ByteArrayInputStream; │ │ │ │ +import com.crashlytics.android.internal.r; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ +import com.crashlytics.android.internal.ay; │ │ │ │ +import com.crashlytics.android.internal.ax; │ │ │ │ +import com.crashlytics.android.internal.av; │ │ │ │ +import com.crashlytics.android.internal.Z; │ │ │ │ │ │ │ │ -abstract class a extends b │ │ │ │ +abstract class a extends Z │ │ │ │ { │ │ │ │ - public a(final String s, final String s2, final aj aj) { │ │ │ │ - super(s, s2, aj); │ │ │ │ + public a(final String s, final String s2, final av av, final ax ax) { │ │ │ │ + super(s, s2, av, ax); │ │ │ │ } │ │ │ │ │ │ │ │ - public final boolean a(final h h) { │ │ │ │ - final HttpRequest a = this.b().a("X-CRASHLYTICS-API-KEY", h.a).a("X-CRASHLYTICS-CLIENT-TYPE", "android").a("X-CRASHLYTICS-API-CLIENT-VERSION", Crashlytics.getCrashlyticsVersion()); │ │ │ │ - final ak j = h.j; │ │ │ │ - final HttpRequest b = a.b("app[identifier]", h.b).b("app[name]", h.f).b("app[display_version]", h.c).b("app[build_version]", h.d).a("app[source]", (Number)h.g).b("app[minimum_sdk_version]", h.h).b("app[built_sdk_version]", h.i); │ │ │ │ - if (!aB.d(h.e)) { │ │ │ │ - b.b("app[instance_identifier]", h.e); │ │ │ │ - } │ │ │ │ - if (j != null) { │ │ │ │ - b.b("app[icon][hash]", j.a()).a("app[icon][data]", "icon.png", "application/octet-stream", (InputStream)new ByteArrayInputStream(j.b())).a("app[icon][width]", (Number)j.c()).a("app[icon][height]", (Number)j.d()); │ │ │ │ + private static ay a(final ay p0, final b p1) { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: getfield com/crashlytics/android/b.b:Ljava/lang/String; │ │ │ │ + // 4: astore_2 │ │ │ │ + // 5: aload_0 │ │ │ │ + // 6: ldc "app[identifier]" │ │ │ │ + // 8: aload_2 │ │ │ │ + // 9: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 12: astore_3 │ │ │ │ + // 13: aload_1 │ │ │ │ + // 14: getfield com/crashlytics/android/b.f:Ljava/lang/String; │ │ │ │ + // 17: astore 4 │ │ │ │ + // 19: aload_3 │ │ │ │ + // 20: ldc "app[name]" │ │ │ │ + // 22: aload 4 │ │ │ │ + // 24: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 27: astore_3 │ │ │ │ + // 28: aload_1 │ │ │ │ + // 29: getfield com/crashlytics/android/b.c:Ljava/lang/String; │ │ │ │ + // 32: astore 4 │ │ │ │ + // 34: aload_3 │ │ │ │ + // 35: ldc "app[display_version]" │ │ │ │ + // 37: aload 4 │ │ │ │ + // 39: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 42: astore_3 │ │ │ │ + // 43: aload_1 │ │ │ │ + // 44: getfield com/crashlytics/android/b.d:Ljava/lang/String; │ │ │ │ + // 47: astore 4 │ │ │ │ + // 49: aload_3 │ │ │ │ + // 50: ldc "app[build_version]" │ │ │ │ + // 52: aload 4 │ │ │ │ + // 54: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 57: astore_3 │ │ │ │ + // 58: aload_1 │ │ │ │ + // 59: getfield com/crashlytics/android/b.g:I │ │ │ │ + // 62: istore 5 │ │ │ │ + // 64: iload 5 │ │ │ │ + // 66: invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer; │ │ │ │ + // 69: astore 4 │ │ │ │ + // 71: aload_3 │ │ │ │ + // 72: ldc "app[source]" │ │ │ │ + // 74: aload 4 │ │ │ │ + // 76: invokevirtual com/crashlytics/android/internal/ay.a:(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 79: astore_3 │ │ │ │ + // 80: aload_1 │ │ │ │ + // 81: getfield com/crashlytics/android/b.h:Ljava/lang/String; │ │ │ │ + // 84: astore 4 │ │ │ │ + // 86: aload_3 │ │ │ │ + // 87: ldc "app[minimum_sdk_version]" │ │ │ │ + // 89: aload 4 │ │ │ │ + // 91: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 94: astore_3 │ │ │ │ + // 95: ldc "app[built_sdk_version]" │ │ │ │ + // 97: astore_2 │ │ │ │ + // 98: aload_1 │ │ │ │ + // 99: getfield com/crashlytics/android/b.i:Ljava/lang/String; │ │ │ │ + // 102: astore 4 │ │ │ │ + // 104: aload_3 │ │ │ │ + // 105: aload_2 │ │ │ │ + // 106: aload 4 │ │ │ │ + // 108: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 111: astore 4 │ │ │ │ + // 113: aload_1 │ │ │ │ + // 114: getfield com/crashlytics/android/b.e:Ljava/lang/String; │ │ │ │ + // 117: astore_3 │ │ │ │ + // 118: aload_3 │ │ │ │ + // 119: invokestatic com/crashlytics/android/internal/ab.e:(Ljava/lang/String;)Z │ │ │ │ + // 122: istore 6 │ │ │ │ + // 124: iload 6 │ │ │ │ + // 126: ifne 145 │ │ │ │ + // 129: ldc "app[instance_identifier]" │ │ │ │ + // 131: astore_3 │ │ │ │ + // 132: aload_1 │ │ │ │ + // 133: getfield com/crashlytics/android/b.e:Ljava/lang/String; │ │ │ │ + // 136: astore_2 │ │ │ │ + // 137: aload 4 │ │ │ │ + // 139: aload_3 │ │ │ │ + // 140: aload_2 │ │ │ │ + // 141: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 144: pop │ │ │ │ + // 145: aload_1 │ │ │ │ + // 146: getfield com/crashlytics/android/b.j:Lcom/crashlytics/android/Y; │ │ │ │ + // 149: astore_3 │ │ │ │ + // 150: aload_3 │ │ │ │ + // 151: ifnull 313 │ │ │ │ + // 154: aconst_null │ │ │ │ + // 155: astore_2 │ │ │ │ + // 156: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 159: astore_3 │ │ │ │ + // 160: aload_3 │ │ │ │ + // 161: invokevirtual com/crashlytics/android/internal/v.getContext:()Landroid/content/Context; │ │ │ │ + // 164: astore_3 │ │ │ │ + // 165: aload_3 │ │ │ │ + // 166: invokevirtual android/content/Context.getResources:()Landroid/content/res/Resources; │ │ │ │ + // 169: astore_3 │ │ │ │ + // 170: aload_1 │ │ │ │ + // 171: getfield com/crashlytics/android/b.j:Lcom/crashlytics/android/Y; │ │ │ │ + // 174: astore 7 │ │ │ │ + // 176: aload 7 │ │ │ │ + // 178: getfield com/crashlytics/android/Y.b:I │ │ │ │ + // 181: istore 8 │ │ │ │ + // 183: aload_3 │ │ │ │ + // 184: iload 8 │ │ │ │ + // 186: invokevirtual android/content/res/Resources.openRawResource:(I)Ljava/io/InputStream; │ │ │ │ + // 189: astore_2 │ │ │ │ + // 190: ldc "app[icon][hash]" │ │ │ │ + // 192: astore_3 │ │ │ │ + // 193: aload_1 │ │ │ │ + // 194: getfield com/crashlytics/android/b.j:Lcom/crashlytics/android/Y; │ │ │ │ + // 197: astore 7 │ │ │ │ + // 199: aload 7 │ │ │ │ + // 201: getfield com/crashlytics/android/Y.a:Ljava/lang/String; │ │ │ │ + // 204: astore 7 │ │ │ │ + // 206: aload 4 │ │ │ │ + // 208: aload_3 │ │ │ │ + // 209: aload 7 │ │ │ │ + // 211: invokevirtual com/crashlytics/android/internal/ay.b:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 214: astore_3 │ │ │ │ + // 215: ldc "app[icon][data]" │ │ │ │ + // 217: astore 7 │ │ │ │ + // 219: ldc "icon.png" │ │ │ │ + // 221: astore 9 │ │ │ │ + // 223: ldc "application/octet-stream" │ │ │ │ + // 225: astore 10 │ │ │ │ + // 227: aload_3 │ │ │ │ + // 228: aload 7 │ │ │ │ + // 230: aload 9 │ │ │ │ + // 232: aload 10 │ │ │ │ + // 234: aload_2 │ │ │ │ + // 235: invokevirtual com/crashlytics/android/internal/ay.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 238: astore_3 │ │ │ │ + // 239: ldc "app[icon][width]" │ │ │ │ + // 241: astore 7 │ │ │ │ + // 243: aload_1 │ │ │ │ + // 244: getfield com/crashlytics/android/b.j:Lcom/crashlytics/android/Y; │ │ │ │ + // 247: astore 9 │ │ │ │ + // 249: aload 9 │ │ │ │ + // 251: getfield com/crashlytics/android/Y.c:I │ │ │ │ + // 254: istore 11 │ │ │ │ + // 256: iload 11 │ │ │ │ + // 258: invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer; │ │ │ │ + // 261: astore 9 │ │ │ │ + // 263: aload_3 │ │ │ │ + // 264: aload 7 │ │ │ │ + // 266: aload 9 │ │ │ │ + // 268: invokevirtual com/crashlytics/android/internal/ay.a:(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 271: astore_3 │ │ │ │ + // 272: ldc "app[icon][height]" │ │ │ │ + // 274: astore 7 │ │ │ │ + // 276: aload_1 │ │ │ │ + // 277: getfield com/crashlytics/android/b.j:Lcom/crashlytics/android/Y; │ │ │ │ + // 280: astore 9 │ │ │ │ + // 282: aload 9 │ │ │ │ + // 284: getfield com/crashlytics/android/Y.d:I │ │ │ │ + // 287: istore 11 │ │ │ │ + // 289: iload 11 │ │ │ │ + // 291: invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer; │ │ │ │ + // 294: astore 9 │ │ │ │ + // 296: aload_3 │ │ │ │ + // 297: aload 7 │ │ │ │ + // 299: aload 9 │ │ │ │ + // 301: invokevirtual com/crashlytics/android/internal/ay.a:(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/internal/ay; │ │ │ │ + // 304: pop │ │ │ │ + // 305: ldc "Failed to close app icon InputStream." │ │ │ │ + // 307: astore_3 │ │ │ │ + // 308: aload_2 │ │ │ │ + // 309: aload_3 │ │ │ │ + // 310: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 313: aload 4 │ │ │ │ + // 315: areturn │ │ │ │ + // 316: astore_3 │ │ │ │ + // 317: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 320: astore 7 │ │ │ │ + // 322: aload 7 │ │ │ │ + // 324: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 327: astore 7 │ │ │ │ + // 329: ldc "Crashlytics" │ │ │ │ + // 331: astore 9 │ │ │ │ + // 333: new Ljava/lang/StringBuilder; │ │ │ │ + // 336: astore 10 │ │ │ │ + // 338: ldc "Failed to find app icon with resource ID: " │ │ │ │ + // 340: astore 12 │ │ │ │ + // 342: aload 10 │ │ │ │ + // 344: aload 12 │ │ │ │ + // 346: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 349: aload_1 │ │ │ │ + // 350: getfield com/crashlytics/android/b.j:Lcom/crashlytics/android/Y; │ │ │ │ + // 353: astore 12 │ │ │ │ + // 355: aload 12 │ │ │ │ + // 357: getfield com/crashlytics/android/Y.b:I │ │ │ │ + // 360: istore 13 │ │ │ │ + // 362: aload 10 │ │ │ │ + // 364: iload 13 │ │ │ │ + // 366: invokevirtual java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder; │ │ │ │ + // 369: astore 10 │ │ │ │ + // 371: aload 10 │ │ │ │ + // 373: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 376: astore 10 │ │ │ │ + // 378: aload 7 │ │ │ │ + // 380: aload 9 │ │ │ │ + // 382: aload 10 │ │ │ │ + // 384: aload_3 │ │ │ │ + // 385: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 390: ldc "Failed to close app icon InputStream." │ │ │ │ + // 392: astore_3 │ │ │ │ + // 393: aload_2 │ │ │ │ + // 394: aload_3 │ │ │ │ + // 395: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 398: goto 313 │ │ │ │ + // 401: astore_3 │ │ │ │ + // 402: aload_2 │ │ │ │ + // 403: ldc "Failed to close app icon InputStream." │ │ │ │ + // 405: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 408: aload_3 │ │ │ │ + // 409: athrow │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- ------------------------------------------------- │ │ │ │ + // 156 159 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 156 159 401 410 Any │ │ │ │ + // 160 164 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 160 164 401 410 Any │ │ │ │ + // 165 169 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 165 169 401 410 Any │ │ │ │ + // 170 174 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 170 174 401 410 Any │ │ │ │ + // 176 181 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 176 181 401 410 Any │ │ │ │ + // 184 189 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 184 189 401 410 Any │ │ │ │ + // 193 197 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 193 197 401 410 Any │ │ │ │ + // 199 204 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 199 204 401 410 Any │ │ │ │ + // 209 214 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 209 214 401 410 Any │ │ │ │ + // 234 238 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 234 238 401 410 Any │ │ │ │ + // 243 247 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 243 247 401 410 Any │ │ │ │ + // 249 254 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 249 254 401 410 Any │ │ │ │ + // 256 261 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 256 261 401 410 Any │ │ │ │ + // 266 271 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 266 271 401 410 Any │ │ │ │ + // 276 280 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 276 280 401 410 Any │ │ │ │ + // 282 287 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 282 287 401 410 Any │ │ │ │ + // 289 294 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 289 294 401 410 Any │ │ │ │ + // 299 305 316 401 Landroid/content/res/Resources$NotFoundException; │ │ │ │ + // 299 305 401 410 Any │ │ │ │ + // 317 320 401 410 Any │ │ │ │ + // 322 327 401 410 Any │ │ │ │ + // 333 336 401 410 Any │ │ │ │ + // 344 349 401 410 Any │ │ │ │ + // 349 353 401 410 Any │ │ │ │ + // 355 360 401 410 Any │ │ │ │ + // 364 369 401 410 Any │ │ │ │ + // 371 376 401 410 Any │ │ │ │ + // 384 390 401 410 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 214, Size: 214 │ │ │ │ + // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ + // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final boolean a(final b b) { │ │ │ │ + final ay a = a(this.b().a("X-CRASHLYTICS-API-KEY", b.a).a("X-CRASHLYTICS-API-CLIENT-TYPE", "android").a("X-CRASHLYTICS-API-CLIENT-VERSION", v.a().getVersion()), b); │ │ │ │ + v.a().b().a("Crashlytics", "Sending app info to " + this.a()); │ │ │ │ + if (b.j != null) { │ │ │ │ + v.a().b().a("Crashlytics", "App icon hash is " + b.j.a); │ │ │ │ + v.a().b().a("Crashlytics", "App icon size is " + b.j.c + "x" + b.j.d); │ │ │ │ } │ │ │ │ - aB.c("Sending app info to " + this.a()); │ │ │ │ - final int b2 = b.b(); │ │ │ │ + final int b2 = a.b(); │ │ │ │ String s; │ │ │ │ - if ("POST".equals(b.d())) { │ │ │ │ + if ("POST".equals(a.d())) { │ │ │ │ s = "Create"; │ │ │ │ } │ │ │ │ else { │ │ │ │ s = "Update"; │ │ │ │ } │ │ │ │ - aB.c(s + " app request ID: " + b.a("X-REQUEST-ID")); │ │ │ │ - aB.c("Result was " + b2); │ │ │ │ - return c.a(b2) == 0; │ │ │ │ + v.a().b().a("Crashlytics", s + " app request ID: " + a.a("X-REQUEST-ID")); │ │ │ │ + v.a().b().a("Crashlytics", "Result was " + b2); │ │ │ │ + return r.a(b2) == 0; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/Z.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,9 +1,48 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class Z extends a │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ +import java.util.HashMap; │ │ │ │ +import java.util.Collections; │ │ │ │ +import java.util.Map; │ │ │ │ +import java.io.File; │ │ │ │ + │ │ │ │ +class Z │ │ │ │ { │ │ │ │ - public Z(final String s, final String s2) { │ │ │ │ - super(s, s2, (aj)d.b); │ │ │ │ + private final File a; │ │ │ │ + private final Map b; │ │ │ │ + │ │ │ │ + public Z(final File file) { │ │ │ │ + this(file, Collections.emptyMap()); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public Z(final File a, final Map map) { │ │ │ │ + this.a = a; │ │ │ │ + this.b = new HashMap(map); │ │ │ │ + if (this.a.length() == 0L) { │ │ │ │ + this.b.putAll(aa.a); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + public boolean a() { │ │ │ │ + v.a().b().a("Crashlytics", "Removing report at " + this.a.getPath()); │ │ │ │ + return this.a.delete(); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public String b() { │ │ │ │ + return this.d().getName(); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public String c() { │ │ │ │ + final String b = this.b(); │ │ │ │ + return b.substring(0, b.lastIndexOf(46)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public File d() { │ │ │ │ + return this.a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public Map e() { │ │ │ │ + return Collections.unmodifiableMap((Map)this.b); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/aa.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,21 +1,269 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ +import java.io.File; │ │ │ │ +import java.util.LinkedList; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ +import java.util.List; │ │ │ │ +import java.util.Collections; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ +import java.util.Map; │ │ │ │ + │ │ │ │ final class aa │ │ │ │ { │ │ │ │ - private final String a; │ │ │ │ - private final aq b; │ │ │ │ + static final Map a; │ │ │ │ + private static final FilenameFilter b; │ │ │ │ + private static final short[] c; │ │ │ │ + private final Object d; │ │ │ │ + private final V e; │ │ │ │ + private Thread f; │ │ │ │ + │ │ │ │ + static { │ │ │ │ + b = (FilenameFilter)new ab(); │ │ │ │ + a = Collections.singletonMap("X-CRASHLYTICS-INVALID-SESSION", "1"); │ │ │ │ + final short[] array; │ │ │ │ + final short[] c2 = array = new short[6]; │ │ │ │ + array[0] = 10; │ │ │ │ + array[1] = 20; │ │ │ │ + array[2] = 30; │ │ │ │ + array[3] = 60; │ │ │ │ + array[4] = 120; │ │ │ │ + array[5] = 300; │ │ │ │ + c = c2; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public aa(final V e) { │ │ │ │ + this.d = new Object(); │ │ │ │ + if (e == null) { │ │ │ │ + throw new IllegalArgumentException("createReportCall must not be null."); │ │ │ │ + } │ │ │ │ + this.e = e; │ │ │ │ + } │ │ │ │ │ │ │ │ - public aa(final String a, final aq b) { │ │ │ │ - this.a = a; │ │ │ │ - this.b = b; │ │ │ │ + final List a() { │ │ │ │ + v.a().b().a("Crashlytics", "Checking for crash reports..."); │ │ │ │ + Object d = this.d; │ │ │ │ + synchronized (d) { │ │ │ │ + final File[] listFiles = v.a().h().listFiles(aa.b); │ │ │ │ + // monitorexit(d) │ │ │ │ + d = new LinkedList(); │ │ │ │ + for (int length = listFiles.length, i = 0; i < length; ++i) { │ │ │ │ + final File file = listFiles[i]; │ │ │ │ + v.a().b().a("Crashlytics", "Found crash report " + file.getPath()); │ │ │ │ + ((List)d).add(new Z(file)); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + if (((List)d).size() == 0) { │ │ │ │ + v.a().b().a("Crashlytics", "No reports found."); │ │ │ │ + } │ │ │ │ + return (List)d; │ │ │ │ } │ │ │ │ │ │ │ │ - public final String a() { │ │ │ │ - return this.a; │ │ │ │ + public final void a(final float n) { │ │ │ │ + synchronized (this) { │ │ │ │ + if (this.f == null) { │ │ │ │ + (this.f = new Thread((Runnable)new ac(this, n), "Crashlytics Report Uploader")).start(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ } │ │ │ │ │ │ │ │ - public final aq b() { │ │ │ │ - return this.b; │ │ │ │ + final boolean a(final Z p0) { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: istore_2 │ │ │ │ + // 2: aconst_null │ │ │ │ + // 3: astore_3 │ │ │ │ + // 4: aload_0 │ │ │ │ + // 5: getfield com/crashlytics/android/aa.d:Ljava/lang/Object; │ │ │ │ + // 8: astore 4 │ │ │ │ + // 10: aload 4 │ │ │ │ + // 12: monitorenter │ │ │ │ + // 13: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 16: astore 5 │ │ │ │ + // 18: aload 5 │ │ │ │ + // 20: invokevirtual com/crashlytics/android/internal/v.getContext:()Landroid/content/Context; │ │ │ │ + // 23: astore 5 │ │ │ │ + // 25: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 28: astore 6 │ │ │ │ + // 30: aload 6 │ │ │ │ + // 32: invokevirtual com/crashlytics/android/internal/v.f:()Z │ │ │ │ + // 35: istore 7 │ │ │ │ + // 37: new Lcom/crashlytics/android/U; │ │ │ │ + // 40: astore 8 │ │ │ │ + // 42: aload 5 │ │ │ │ + // 44: iload 7 │ │ │ │ + // 46: invokestatic com/crashlytics/android/internal/r.a:(Landroid/content/Context;Z)Ljava/lang/String; │ │ │ │ + // 49: astore 5 │ │ │ │ + // 51: aload 8 │ │ │ │ + // 53: aload 5 │ │ │ │ + // 55: aload_1 │ │ │ │ + // 56: invokespecial com/crashlytics/android/U.:(Ljava/lang/String;Lcom/crashlytics/android/Z;)V │ │ │ │ + // 59: aload_0 │ │ │ │ + // 60: getfield com/crashlytics/android/aa.e:Lcom/crashlytics/android/V; │ │ │ │ + // 63: astore 5 │ │ │ │ + // 65: aload 5 │ │ │ │ + // 67: aload 8 │ │ │ │ + // 69: invokeinterface com/crashlytics/android/V.a:(Lcom/crashlytics/android/U;)Z │ │ │ │ + // 74: istore 7 │ │ │ │ + // 76: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 79: astore 5 │ │ │ │ + // 81: aload 5 │ │ │ │ + // 83: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 86: astore 8 │ │ │ │ + // 88: ldc "Crashlytics" │ │ │ │ + // 90: astore 9 │ │ │ │ + // 92: new Ljava/lang/StringBuilder; │ │ │ │ + // 95: astore 10 │ │ │ │ + // 97: ldc "Crashlytics report upload " │ │ │ │ + // 99: astore 5 │ │ │ │ + // 101: aload 10 │ │ │ │ + // 103: aload 5 │ │ │ │ + // 105: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 108: iload 7 │ │ │ │ + // 110: ifeq 176 │ │ │ │ + // 113: ldc "complete: " │ │ │ │ + // 115: astore 5 │ │ │ │ + // 117: aload 10 │ │ │ │ + // 119: aload 5 │ │ │ │ + // 121: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 124: astore 5 │ │ │ │ + // 126: aload_1 │ │ │ │ + // 127: invokevirtual com/crashlytics/android/Z.b:()Ljava/lang/String; │ │ │ │ + // 130: astore 10 │ │ │ │ + // 132: aload 5 │ │ │ │ + // 134: aload 10 │ │ │ │ + // 136: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 139: astore 5 │ │ │ │ + // 141: aload 5 │ │ │ │ + // 143: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 146: astore 5 │ │ │ │ + // 148: aload 8 │ │ │ │ + // 150: aload 9 │ │ │ │ + // 152: aload 5 │ │ │ │ + // 154: invokeinterface com/crashlytics/android/internal/q.b:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 159: iload 7 │ │ │ │ + // 161: ifeq 171 │ │ │ │ + // 164: aload_1 │ │ │ │ + // 165: invokevirtual com/crashlytics/android/Z.a:()Z │ │ │ │ + // 168: pop │ │ │ │ + // 169: iconst_1 │ │ │ │ + // 170: istore_2 │ │ │ │ + // 171: aload 4 │ │ │ │ + // 173: monitorexit │ │ │ │ + // 174: iload_2 │ │ │ │ + // 175: ireturn │ │ │ │ + // 176: ldc "FAILED: " │ │ │ │ + // 178: astore 5 │ │ │ │ + // 180: goto 117 │ │ │ │ + // 183: astore 5 │ │ │ │ + // 185: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 188: astore 6 │ │ │ │ + // 190: aload 6 │ │ │ │ + // 192: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 195: astore 6 │ │ │ │ + // 197: ldc "Crashlytics" │ │ │ │ + // 199: astore 8 │ │ │ │ + // 201: new Ljava/lang/StringBuilder; │ │ │ │ + // 204: astore 9 │ │ │ │ + // 206: ldc "Error occurred sending report " │ │ │ │ + // 208: astore 10 │ │ │ │ + // 210: aload 9 │ │ │ │ + // 212: aload 10 │ │ │ │ + // 214: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 217: aload 9 │ │ │ │ + // 219: aload_1 │ │ │ │ + // 220: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ │ │ + // 223: astore 9 │ │ │ │ + // 225: aload 9 │ │ │ │ + // 227: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 230: astore 9 │ │ │ │ + // 232: aload 6 │ │ │ │ + // 234: aload 8 │ │ │ │ + // 236: aload 9 │ │ │ │ + // 238: aload 5 │ │ │ │ + // 240: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 245: goto 171 │ │ │ │ + // 248: astore_3 │ │ │ │ + // 249: aload 4 │ │ │ │ + // 251: monitorexit │ │ │ │ + // 252: aload_3 │ │ │ │ + // 253: athrow │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 13 16 183 248 Ljava/lang/Exception; │ │ │ │ + // 13 16 248 254 Any │ │ │ │ + // 18 23 183 248 Ljava/lang/Exception; │ │ │ │ + // 18 23 248 254 Any │ │ │ │ + // 25 28 183 248 Ljava/lang/Exception; │ │ │ │ + // 25 28 248 254 Any │ │ │ │ + // 30 35 183 248 Ljava/lang/Exception; │ │ │ │ + // 30 35 248 254 Any │ │ │ │ + // 37 40 183 248 Ljava/lang/Exception; │ │ │ │ + // 37 40 248 254 Any │ │ │ │ + // 44 49 183 248 Ljava/lang/Exception; │ │ │ │ + // 44 49 248 254 Any │ │ │ │ + // 55 59 183 248 Ljava/lang/Exception; │ │ │ │ + // 55 59 248 254 Any │ │ │ │ + // 59 63 183 248 Ljava/lang/Exception; │ │ │ │ + // 59 63 248 254 Any │ │ │ │ + // 67 74 183 248 Ljava/lang/Exception; │ │ │ │ + // 67 74 248 254 Any │ │ │ │ + // 76 79 183 248 Ljava/lang/Exception; │ │ │ │ + // 76 79 248 254 Any │ │ │ │ + // 81 86 183 248 Ljava/lang/Exception; │ │ │ │ + // 81 86 248 254 Any │ │ │ │ + // 92 95 183 248 Ljava/lang/Exception; │ │ │ │ + // 92 95 248 254 Any │ │ │ │ + // 103 108 183 248 Ljava/lang/Exception; │ │ │ │ + // 103 108 248 254 Any │ │ │ │ + // 119 124 183 248 Ljava/lang/Exception; │ │ │ │ + // 119 124 248 254 Any │ │ │ │ + // 126 130 183 248 Ljava/lang/Exception; │ │ │ │ + // 126 130 248 254 Any │ │ │ │ + // 134 139 183 248 Ljava/lang/Exception; │ │ │ │ + // 134 139 248 254 Any │ │ │ │ + // 141 146 183 248 Ljava/lang/Exception; │ │ │ │ + // 141 146 248 254 Any │ │ │ │ + // 152 159 183 248 Ljava/lang/Exception; │ │ │ │ + // 152 159 248 254 Any │ │ │ │ + // 164 169 183 248 Ljava/lang/Exception; │ │ │ │ + // 164 169 248 254 Any │ │ │ │ + // 171 174 248 254 Any │ │ │ │ + // 185 188 248 254 Any │ │ │ │ + // 190 195 248 254 Any │ │ │ │ + // 201 204 248 254 Any │ │ │ │ + // 212 217 248 254 Any │ │ │ │ + // 219 223 248 254 Any │ │ │ │ + // 225 230 248 254 Any │ │ │ │ + // 238 245 248 254 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 119, Size: 119 │ │ │ │ + // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ + // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/ab.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,7 +1,12 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -interface ab │ │ │ │ +import java.io.File; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ + │ │ │ │ +final class ab implements FilenameFilter │ │ │ │ { │ │ │ │ - boolean a(final aa p0); │ │ │ │ + public final boolean accept(final File file, final String s) { │ │ │ │ + return s.endsWith(".cls") && !s.contains("Session"); │ │ │ │ + } │ │ │ │ } │ │ ├── com/crashlytics/android/ac.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,9 +1,453 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -class ac │ │ │ │ +import com.crashlytics.android.internal.aa; │ │ │ │ + │ │ │ │ +final class ac extends aa │ │ │ │ { │ │ │ │ - public long a() { │ │ │ │ - return System.currentTimeMillis(); │ │ │ │ + private final float a; │ │ │ │ + private /* synthetic */ com.crashlytics.android.aa b; │ │ │ │ + │ │ │ │ + ac(final com.crashlytics.android.aa b, final float a) { │ │ │ │ + this.b = b; │ │ │ │ + this.a = a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a() { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 3: astore_1 │ │ │ │ + // 4: aload_1 │ │ │ │ + // 5: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 8: astore_1 │ │ │ │ + // 9: ldc "Crashlytics" │ │ │ │ + // 11: astore_2 │ │ │ │ + // 12: new Ljava/lang/StringBuilder; │ │ │ │ + // 15: astore_3 │ │ │ │ + // 16: ldc "Starting report processing in " │ │ │ │ + // 18: astore 4 │ │ │ │ + // 20: aload_3 │ │ │ │ + // 21: aload 4 │ │ │ │ + // 23: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 26: aload_0 │ │ │ │ + // 27: getfield com/crashlytics/android/ac.a:F │ │ │ │ + // 30: fstore 5 │ │ │ │ + // 32: aload_3 │ │ │ │ + // 33: fload 5 │ │ │ │ + // 35: invokevirtual java/lang/StringBuilder.append:(F)Ljava/lang/StringBuilder; │ │ │ │ + // 38: astore_3 │ │ │ │ + // 39: ldc " second(s)..." │ │ │ │ + // 41: astore 4 │ │ │ │ + // 43: aload_3 │ │ │ │ + // 44: aload 4 │ │ │ │ + // 46: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 49: astore_3 │ │ │ │ + // 50: aload_3 │ │ │ │ + // 51: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 54: astore_3 │ │ │ │ + // 55: aload_1 │ │ │ │ + // 56: aload_2 │ │ │ │ + // 57: aload_3 │ │ │ │ + // 58: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 63: aload_0 │ │ │ │ + // 64: getfield com/crashlytics/android/ac.a:F │ │ │ │ + // 67: fstore 6 │ │ │ │ + // 69: iconst_0 │ │ │ │ + // 70: istore 7 │ │ │ │ + // 72: fconst_0 │ │ │ │ + // 73: fstore 8 │ │ │ │ + // 75: aconst_null │ │ │ │ + // 76: astore_2 │ │ │ │ + // 77: fload 6 │ │ │ │ + // 79: fconst_0 │ │ │ │ + // 80: fcmpl │ │ │ │ + // 81: istore 9 │ │ │ │ + // 83: iload 9 │ │ │ │ + // 85: ifle 119 │ │ │ │ + // 88: aload_0 │ │ │ │ + // 89: getfield com/crashlytics/android/ac.a:F │ │ │ │ + // 92: fstore 6 │ │ │ │ + // 94: ldc 1148846080 │ │ │ │ + // 96: istore 7 │ │ │ │ + // 98: ldc 1000.0 │ │ │ │ + // 100: fstore 8 │ │ │ │ + // 102: fload 6 │ │ │ │ + // 104: fload 8 │ │ │ │ + // 106: fmul │ │ │ │ + // 107: fstore 6 │ │ │ │ + // 109: fload 6 │ │ │ │ + // 111: f2l │ │ │ │ + // 112: lstore 10 │ │ │ │ + // 114: lload 10 │ │ │ │ + // 116: invokestatic java/lang/Thread.sleep:(J)V │ │ │ │ + // 119: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 122: astore_2 │ │ │ │ + // 123: aload_2 │ │ │ │ + // 124: invokevirtual com/crashlytics/android/Crashlytics.l:()Lcom/crashlytics/android/v; │ │ │ │ + // 127: astore_3 │ │ │ │ + // 128: aload_0 │ │ │ │ + // 129: getfield com/crashlytics/android/ac.b:Lcom/crashlytics/android/aa; │ │ │ │ + // 132: astore_1 │ │ │ │ + // 133: aload_1 │ │ │ │ + // 134: invokevirtual com/crashlytics/android/aa.a:()Ljava/util/List; │ │ │ │ + // 137: astore_1 │ │ │ │ + // 138: aload_3 │ │ │ │ + // 139: invokevirtual com/crashlytics/android/v.a:()Z │ │ │ │ + // 142: istore 12 │ │ │ │ + // 144: iload 12 │ │ │ │ + // 146: ifne 312 │ │ │ │ + // 149: aload_1 │ │ │ │ + // 150: invokeinterface java/util/List.isEmpty:()Z │ │ │ │ + // 155: istore 12 │ │ │ │ + // 157: iload 12 │ │ │ │ + // 159: ifne 334 │ │ │ │ + // 162: aload_2 │ │ │ │ + // 163: invokevirtual com/crashlytics/android/Crashlytics.p:()Z │ │ │ │ + // 166: istore 7 │ │ │ │ + // 168: iload 7 │ │ │ │ + // 170: ifne 334 │ │ │ │ + // 173: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 176: astore_2 │ │ │ │ + // 177: aload_2 │ │ │ │ + // 178: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 181: astore_2 │ │ │ │ + // 182: ldc "Crashlytics" │ │ │ │ + // 184: astore_3 │ │ │ │ + // 185: new Ljava/lang/StringBuilder; │ │ │ │ + // 188: astore 4 │ │ │ │ + // 190: ldc "User declined to send. Removing " │ │ │ │ + // 192: astore 13 │ │ │ │ + // 194: aload 4 │ │ │ │ + // 196: aload 13 │ │ │ │ + // 198: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 201: aload_1 │ │ │ │ + // 202: invokeinterface java/util/List.size:()I │ │ │ │ + // 207: istore 14 │ │ │ │ + // 209: aload 4 │ │ │ │ + // 211: iload 14 │ │ │ │ + // 213: invokevirtual java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder; │ │ │ │ + // 216: astore 4 │ │ │ │ + // 218: ldc " Report(s)." │ │ │ │ + // 220: astore 13 │ │ │ │ + // 222: aload 4 │ │ │ │ + // 224: aload 13 │ │ │ │ + // 226: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 229: astore 4 │ │ │ │ + // 231: aload 4 │ │ │ │ + // 233: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 236: astore 4 │ │ │ │ + // 238: aload_2 │ │ │ │ + // 239: aload_3 │ │ │ │ + // 240: aload 4 │ │ │ │ + // 242: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 247: aload_1 │ │ │ │ + // 248: invokeinterface java/util/List.iterator:()Ljava/util/Iterator; │ │ │ │ + // 253: astore_2 │ │ │ │ + // 254: aload_2 │ │ │ │ + // 255: invokeinterface java/util/Iterator.hasNext:()Z │ │ │ │ + // 260: istore 9 │ │ │ │ + // 262: iload 9 │ │ │ │ + // 264: ifeq 312 │ │ │ │ + // 267: aload_2 │ │ │ │ + // 268: invokeinterface java/util/Iterator.next:()Ljava/lang/Object; │ │ │ │ + // 273: astore_1 │ │ │ │ + // 274: aload_1 │ │ │ │ + // 275: checkcast Lcom/crashlytics/android/Z; │ │ │ │ + // 278: astore_1 │ │ │ │ + // 279: aload_1 │ │ │ │ + // 280: invokevirtual com/crashlytics/android/Z.a:()Z │ │ │ │ + // 283: pop │ │ │ │ + // 284: goto 254 │ │ │ │ + // 287: astore_1 │ │ │ │ + // 288: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 291: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 294: astore_2 │ │ │ │ + // 295: ldc "Crashlytics" │ │ │ │ + // 297: astore_3 │ │ │ │ + // 298: ldc "An unexpected error occurred while attempting to upload crash reports." │ │ │ │ + // 300: astore 4 │ │ │ │ + // 302: aload_2 │ │ │ │ + // 303: aload_3 │ │ │ │ + // 304: aload 4 │ │ │ │ + // 306: aload_1 │ │ │ │ + // 307: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 312: aload_0 │ │ │ │ + // 313: getfield com/crashlytics/android/ac.b:Lcom/crashlytics/android/aa; │ │ │ │ + // 316: aconst_null │ │ │ │ + // 317: invokestatic com/crashlytics/android/aa.a:(Lcom/crashlytics/android/aa;Ljava/lang/Thread;)Ljava/lang/Thread; │ │ │ │ + // 320: pop │ │ │ │ + // 321: return │ │ │ │ + // 322: astore_1 │ │ │ │ + // 323: invokestatic java/lang/Thread.currentThread:()Ljava/lang/Thread; │ │ │ │ + // 326: astore_1 │ │ │ │ + // 327: aload_1 │ │ │ │ + // 328: invokevirtual java/lang/Thread.interrupt:()V │ │ │ │ + // 331: goto 312 │ │ │ │ + // 334: iconst_0 │ │ │ │ + // 335: istore 7 │ │ │ │ + // 337: fconst_0 │ │ │ │ + // 338: fstore 8 │ │ │ │ + // 340: aconst_null │ │ │ │ + // 341: astore_2 │ │ │ │ + // 342: aload_1 │ │ │ │ + // 343: invokeinterface java/util/List.isEmpty:()Z │ │ │ │ + // 348: istore 12 │ │ │ │ + // 350: iload 12 │ │ │ │ + // 352: ifne 312 │ │ │ │ + // 355: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 358: astore_3 │ │ │ │ + // 359: aload_3 │ │ │ │ + // 360: invokevirtual com/crashlytics/android/Crashlytics.l:()Lcom/crashlytics/android/v; │ │ │ │ + // 363: astore_3 │ │ │ │ + // 364: aload_3 │ │ │ │ + // 365: invokevirtual com/crashlytics/android/v.a:()Z │ │ │ │ + // 368: istore 12 │ │ │ │ + // 370: iload 12 │ │ │ │ + // 372: ifne 312 │ │ │ │ + // 375: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 378: astore_3 │ │ │ │ + // 379: aload_3 │ │ │ │ + // 380: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 383: astore_3 │ │ │ │ + // 384: ldc "Crashlytics" │ │ │ │ + // 386: astore 4 │ │ │ │ + // 388: new Ljava/lang/StringBuilder; │ │ │ │ + // 391: astore 13 │ │ │ │ + // 393: ldc "Attempting to send " │ │ │ │ + // 395: astore 15 │ │ │ │ + // 397: aload 13 │ │ │ │ + // 399: aload 15 │ │ │ │ + // 401: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 404: aload_1 │ │ │ │ + // 405: invokeinterface java/util/List.size:()I │ │ │ │ + // 410: istore 16 │ │ │ │ + // 412: aload 13 │ │ │ │ + // 414: iload 16 │ │ │ │ + // 416: invokevirtual java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder; │ │ │ │ + // 419: astore 13 │ │ │ │ + // 421: ldc " report(s)" │ │ │ │ + // 423: astore 15 │ │ │ │ + // 425: aload 13 │ │ │ │ + // 427: aload 15 │ │ │ │ + // 429: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 432: astore 13 │ │ │ │ + // 434: aload 13 │ │ │ │ + // 436: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 439: astore 13 │ │ │ │ + // 441: aload_3 │ │ │ │ + // 442: aload 4 │ │ │ │ + // 444: aload 13 │ │ │ │ + // 446: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 451: aload_1 │ │ │ │ + // 452: invokeinterface java/util/List.iterator:()Ljava/util/Iterator; │ │ │ │ + // 457: astore_3 │ │ │ │ + // 458: aload_3 │ │ │ │ + // 459: invokeinterface java/util/Iterator.hasNext:()Z │ │ │ │ + // 464: istore 9 │ │ │ │ + // 466: iload 9 │ │ │ │ + // 468: ifeq 499 │ │ │ │ + // 471: aload_3 │ │ │ │ + // 472: invokeinterface java/util/Iterator.next:()Ljava/lang/Object; │ │ │ │ + // 477: astore_1 │ │ │ │ + // 478: aload_1 │ │ │ │ + // 479: checkcast Lcom/crashlytics/android/Z; │ │ │ │ + // 482: astore_1 │ │ │ │ + // 483: aload_0 │ │ │ │ + // 484: getfield com/crashlytics/android/ac.b:Lcom/crashlytics/android/aa; │ │ │ │ + // 487: astore 4 │ │ │ │ + // 489: aload 4 │ │ │ │ + // 491: aload_1 │ │ │ │ + // 492: invokevirtual com/crashlytics/android/aa.a:(Lcom/crashlytics/android/Z;)Z │ │ │ │ + // 495: pop │ │ │ │ + // 496: goto 458 │ │ │ │ + // 499: aload_0 │ │ │ │ + // 500: getfield com/crashlytics/android/ac.b:Lcom/crashlytics/android/aa; │ │ │ │ + // 503: astore_1 │ │ │ │ + // 504: aload_1 │ │ │ │ + // 505: invokevirtual com/crashlytics/android/aa.a:()Ljava/util/List; │ │ │ │ + // 508: astore_1 │ │ │ │ + // 509: aload_1 │ │ │ │ + // 510: invokeinterface java/util/List.isEmpty:()Z │ │ │ │ + // 515: istore 12 │ │ │ │ + // 517: iload 12 │ │ │ │ + // 519: ifne 342 │ │ │ │ + // 522: invokestatic com/crashlytics/android/aa.b:()[S │ │ │ │ + // 525: astore 4 │ │ │ │ + // 527: iload 7 │ │ │ │ + // 529: iconst_1 │ │ │ │ + // 530: iadd │ │ │ │ + // 531: istore 12 │ │ │ │ + // 533: invokestatic com/crashlytics/android/aa.b:()[S │ │ │ │ + // 536: astore 13 │ │ │ │ + // 538: aload 13 │ │ │ │ + // 540: arraylength │ │ │ │ + // 541: iconst_m1 │ │ │ │ + // 542: iadd │ │ │ │ + // 543: istore 14 │ │ │ │ + // 545: iload 7 │ │ │ │ + // 547: iload 14 │ │ │ │ + // 549: invokestatic java/lang/Math.min:(II)I │ │ │ │ + // 552: istore 7 │ │ │ │ + // 554: aload 4 │ │ │ │ + // 556: iload 7 │ │ │ │ + // 558: saload │ │ │ │ + // 559: istore 7 │ │ │ │ + // 561: iload 7 │ │ │ │ + // 563: i2l │ │ │ │ + // 564: lstore 17 │ │ │ │ + // 566: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 569: astore_2 │ │ │ │ + // 570: aload_2 │ │ │ │ + // 571: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 574: astore_2 │ │ │ │ + // 575: ldc "Crashlytics" │ │ │ │ + // 577: astore 15 │ │ │ │ + // 579: new Ljava/lang/StringBuilder; │ │ │ │ + // 582: astore 19 │ │ │ │ + // 584: ldc "Report submisson: scheduling delayed retry in " │ │ │ │ + // 586: astore 20 │ │ │ │ + // 588: aload 19 │ │ │ │ + // 590: aload 20 │ │ │ │ + // 592: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 595: aload 19 │ │ │ │ + // 597: lload 17 │ │ │ │ + // 599: invokevirtual java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder; │ │ │ │ + // 602: astore 19 │ │ │ │ + // 604: ldc " seconds" │ │ │ │ + // 606: astore 20 │ │ │ │ + // 608: aload 19 │ │ │ │ + // 610: aload 20 │ │ │ │ + // 612: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 615: astore 19 │ │ │ │ + // 617: aload 19 │ │ │ │ + // 619: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 622: astore 19 │ │ │ │ + // 624: aload_2 │ │ │ │ + // 625: aload 15 │ │ │ │ + // 627: aload 19 │ │ │ │ + // 629: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 634: ldc2_w 1000 │ │ │ │ + // 637: lstore 21 │ │ │ │ + // 639: lload 17 │ │ │ │ + // 641: lload 21 │ │ │ │ + // 643: lmul │ │ │ │ + // 644: lstore 17 │ │ │ │ + // 646: lload 17 │ │ │ │ + // 648: invokestatic java/lang/Thread.sleep:(J)V │ │ │ │ + // 651: iload 12 │ │ │ │ + // 653: istore 7 │ │ │ │ + // 655: goto 342 │ │ │ │ + // 658: astore_1 │ │ │ │ + // 659: invokestatic java/lang/Thread.currentThread:()Ljava/lang/Thread; │ │ │ │ + // 662: astore_1 │ │ │ │ + // 663: aload_1 │ │ │ │ + // 664: invokevirtual java/lang/Thread.interrupt:()V │ │ │ │ + // 667: goto 312 │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- -------------------------------- │ │ │ │ + // 0 3 287 312 Ljava/lang/Exception; │ │ │ │ + // 4 8 287 312 Ljava/lang/Exception; │ │ │ │ + // 12 15 287 312 Ljava/lang/Exception; │ │ │ │ + // 21 26 287 312 Ljava/lang/Exception; │ │ │ │ + // 26 30 287 312 Ljava/lang/Exception; │ │ │ │ + // 33 38 287 312 Ljava/lang/Exception; │ │ │ │ + // 44 49 287 312 Ljava/lang/Exception; │ │ │ │ + // 50 54 287 312 Ljava/lang/Exception; │ │ │ │ + // 57 63 287 312 Ljava/lang/Exception; │ │ │ │ + // 63 67 287 312 Ljava/lang/Exception; │ │ │ │ + // 88 92 322 334 Ljava/lang/InterruptedException; │ │ │ │ + // 88 92 287 312 Ljava/lang/Exception; │ │ │ │ + // 114 119 322 334 Ljava/lang/InterruptedException; │ │ │ │ + // 114 119 287 312 Ljava/lang/Exception; │ │ │ │ + // 119 122 287 312 Ljava/lang/Exception; │ │ │ │ + // 123 127 287 312 Ljava/lang/Exception; │ │ │ │ + // 128 132 287 312 Ljava/lang/Exception; │ │ │ │ + // 133 137 287 312 Ljava/lang/Exception; │ │ │ │ + // 138 142 287 312 Ljava/lang/Exception; │ │ │ │ + // 149 155 287 312 Ljava/lang/Exception; │ │ │ │ + // 162 166 287 312 Ljava/lang/Exception; │ │ │ │ + // 173 176 287 312 Ljava/lang/Exception; │ │ │ │ + // 177 181 287 312 Ljava/lang/Exception; │ │ │ │ + // 185 188 287 312 Ljava/lang/Exception; │ │ │ │ + // 196 201 287 312 Ljava/lang/Exception; │ │ │ │ + // 201 207 287 312 Ljava/lang/Exception; │ │ │ │ + // 211 216 287 312 Ljava/lang/Exception; │ │ │ │ + // 224 229 287 312 Ljava/lang/Exception; │ │ │ │ + // 231 236 287 312 Ljava/lang/Exception; │ │ │ │ + // 240 247 287 312 Ljava/lang/Exception; │ │ │ │ + // 247 253 287 312 Ljava/lang/Exception; │ │ │ │ + // 254 260 287 312 Ljava/lang/Exception; │ │ │ │ + // 267 273 287 312 Ljava/lang/Exception; │ │ │ │ + // 274 278 287 312 Ljava/lang/Exception; │ │ │ │ + // 279 284 287 312 Ljava/lang/Exception; │ │ │ │ + // 323 326 287 312 Ljava/lang/Exception; │ │ │ │ + // 327 331 287 312 Ljava/lang/Exception; │ │ │ │ + // 342 348 287 312 Ljava/lang/Exception; │ │ │ │ + // 355 358 287 312 Ljava/lang/Exception; │ │ │ │ + // 359 363 287 312 Ljava/lang/Exception; │ │ │ │ + // 364 368 287 312 Ljava/lang/Exception; │ │ │ │ + // 375 378 287 312 Ljava/lang/Exception; │ │ │ │ + // 379 383 287 312 Ljava/lang/Exception; │ │ │ │ + // 388 391 287 312 Ljava/lang/Exception; │ │ │ │ + // 399 404 287 312 Ljava/lang/Exception; │ │ │ │ + // 404 410 287 312 Ljava/lang/Exception; │ │ │ │ + // 414 419 287 312 Ljava/lang/Exception; │ │ │ │ + // 427 432 287 312 Ljava/lang/Exception; │ │ │ │ + // 434 439 287 312 Ljava/lang/Exception; │ │ │ │ + // 444 451 287 312 Ljava/lang/Exception; │ │ │ │ + // 451 457 287 312 Ljava/lang/Exception; │ │ │ │ + // 458 464 287 312 Ljava/lang/Exception; │ │ │ │ + // 471 477 287 312 Ljava/lang/Exception; │ │ │ │ + // 478 482 287 312 Ljava/lang/Exception; │ │ │ │ + // 483 487 287 312 Ljava/lang/Exception; │ │ │ │ + // 491 496 287 312 Ljava/lang/Exception; │ │ │ │ + // 499 503 287 312 Ljava/lang/Exception; │ │ │ │ + // 504 508 287 312 Ljava/lang/Exception; │ │ │ │ + // 509 515 287 312 Ljava/lang/Exception; │ │ │ │ + // 522 525 287 312 Ljava/lang/Exception; │ │ │ │ + // 533 536 287 312 Ljava/lang/Exception; │ │ │ │ + // 538 541 287 312 Ljava/lang/Exception; │ │ │ │ + // 547 552 287 312 Ljava/lang/Exception; │ │ │ │ + // 556 559 287 312 Ljava/lang/Exception; │ │ │ │ + // 566 569 287 312 Ljava/lang/Exception; │ │ │ │ + // 570 574 287 312 Ljava/lang/Exception; │ │ │ │ + // 579 582 287 312 Ljava/lang/Exception; │ │ │ │ + // 590 595 287 312 Ljava/lang/Exception; │ │ │ │ + // 597 602 287 312 Ljava/lang/Exception; │ │ │ │ + // 610 615 287 312 Ljava/lang/Exception; │ │ │ │ + // 617 622 287 312 Ljava/lang/Exception; │ │ │ │ + // 627 634 287 312 Ljava/lang/Exception; │ │ │ │ + // 646 651 658 670 Ljava/lang/InterruptedException; │ │ │ │ + // 646 651 287 312 Ljava/lang/Exception; │ │ │ │ + // 659 662 287 312 Ljava/lang/Exception; │ │ │ │ + // 663 667 287 312 Ljava/lang/Exception; │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 328, Size: 328 │ │ │ │ + // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ + // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/ad.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,28 +1,12 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.Iterator; │ │ │ │ -import java.util.Map; │ │ │ │ +import com.crashlytics.android.internal.ax; │ │ │ │ +import com.crashlytics.android.internal.av; │ │ │ │ │ │ │ │ -final class ad extends b implements ab │ │ │ │ +final class ad extends a │ │ │ │ { │ │ │ │ - public ad(final String s, final String s2) { │ │ │ │ - super(s, s2, (aj)d.b); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final boolean a(final aa aa) { │ │ │ │ - final HttpRequest a = this.b().a("X-CRASHLYTICS-API-KEY", aa.a()).a("X-CRASHLYTICS-CLIENT-TYPE", "android").a("X-CRASHLYTICS-API-CLIENT-VERSION", Crashlytics.getCrashlyticsVersion()); │ │ │ │ - final Iterator iterator = aa.b().e().entrySet().iterator(); │ │ │ │ - HttpRequest a2 = a; │ │ │ │ - while (iterator.hasNext()) { │ │ │ │ - a2 = a2.a((Map.Entry)(Map.Entry)iterator.next()); │ │ │ │ - } │ │ │ │ - final aq b = aa.b(); │ │ │ │ - final HttpRequest b2 = a2.a("report[file]", b.b(), "application/octet-stream", b.d()).b("report[identifier]", b.c()); │ │ │ │ - aB.c("Sending report to: " + this.a()); │ │ │ │ - final int b3 = b2.b(); │ │ │ │ - aB.c("Create report request ID: " + b2.a("X-REQUEST-ID")); │ │ │ │ - aB.c("Result was: " + b3); │ │ │ │ - return c.a(b3) == 0; │ │ │ │ + public ad(final String s, final String s2, final av av) { │ │ │ │ + super(s, s2, av, ax.c); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/ae.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,381 +1,9 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import org.json.JSONObject; │ │ │ │ - │ │ │ │ -final class ae extends b implements ay │ │ │ │ +final class ae │ │ │ │ { │ │ │ │ - public ae(final String s, final String s2) { │ │ │ │ - super(s, s2, (aj)d.a); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final JSONObject a(final aw p0) { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: astore_2 │ │ │ │ - // 2: new Ljava/util/HashMap; │ │ │ │ - // 5: astore_3 │ │ │ │ - // 6: aload_3 │ │ │ │ - // 7: invokespecial java/util/HashMap.:()V │ │ │ │ - // 10: ldc "build_version" │ │ │ │ - // 12: astore 4 │ │ │ │ - // 14: aload_1 │ │ │ │ - // 15: getfield com/crashlytics/android/aw.e:Ljava/lang/String; │ │ │ │ - // 18: astore 5 │ │ │ │ - // 20: aload_3 │ │ │ │ - // 21: aload 4 │ │ │ │ - // 23: aload 5 │ │ │ │ - // 25: invokeinterface java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ │ │ - // 30: pop │ │ │ │ - // 31: ldc "display_version" │ │ │ │ - // 33: astore 4 │ │ │ │ - // 35: aload_1 │ │ │ │ - // 36: getfield com/crashlytics/android/aw.d:Ljava/lang/String; │ │ │ │ - // 39: astore 5 │ │ │ │ - // 41: aload_3 │ │ │ │ - // 42: aload 4 │ │ │ │ - // 44: aload 5 │ │ │ │ - // 46: invokeinterface java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ │ │ - // 51: pop │ │ │ │ - // 52: ldc "source" │ │ │ │ - // 54: astore 4 │ │ │ │ - // 56: aload_1 │ │ │ │ - // 57: getfield com/crashlytics/android/aw.f:I │ │ │ │ - // 60: istore 6 │ │ │ │ - // 62: iload 6 │ │ │ │ - // 64: invokestatic java/lang/Integer.toString:(I)Ljava/lang/String; │ │ │ │ - // 67: astore 5 │ │ │ │ - // 69: aload_3 │ │ │ │ - // 70: aload 4 │ │ │ │ - // 72: aload 5 │ │ │ │ - // 74: invokeinterface java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ │ │ - // 79: pop │ │ │ │ - // 80: ldc "icon_hash" │ │ │ │ - // 82: astore 4 │ │ │ │ - // 84: aload_1 │ │ │ │ - // 85: getfield com/crashlytics/android/aw.g:Ljava/lang/String; │ │ │ │ - // 88: astore 5 │ │ │ │ - // 90: aload_3 │ │ │ │ - // 91: aload 4 │ │ │ │ - // 93: aload 5 │ │ │ │ - // 95: invokeinterface java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ │ │ - // 100: pop │ │ │ │ - // 101: aload_1 │ │ │ │ - // 102: getfield com/crashlytics/android/aw.c:Ljava/lang/String; │ │ │ │ - // 105: astore 4 │ │ │ │ - // 107: aload 4 │ │ │ │ - // 109: invokestatic com/crashlytics/android/aB.d:(Ljava/lang/String;)Z │ │ │ │ - // 112: istore 6 │ │ │ │ - // 114: iload 6 │ │ │ │ - // 116: ifne 134 │ │ │ │ - // 119: ldc "instance" │ │ │ │ - // 121: astore 5 │ │ │ │ - // 123: aload_3 │ │ │ │ - // 124: aload 5 │ │ │ │ - // 126: aload 4 │ │ │ │ - // 128: invokeinterface java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ │ │ - // 133: pop │ │ │ │ - // 134: aload_0 │ │ │ │ - // 135: aload_3 │ │ │ │ - // 136: invokevirtual com/crashlytics/android/ae.a:(Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ │ │ │ - // 139: astore 4 │ │ │ │ - // 141: ldc "X-CRASHLYTICS-API-KEY" │ │ │ │ - // 143: astore 5 │ │ │ │ - // 145: aload_1 │ │ │ │ - // 146: getfield com/crashlytics/android/aw.a:Ljava/lang/String; │ │ │ │ - // 149: astore 7 │ │ │ │ - // 151: aload 4 │ │ │ │ - // 153: aload 5 │ │ │ │ - // 155: aload 7 │ │ │ │ - // 157: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ │ │ │ - // 160: astore 5 │ │ │ │ - // 162: ldc "X-CRASHLYTICS-CLIENT-TYPE" │ │ │ │ - // 164: astore 7 │ │ │ │ - // 166: ldc "android" │ │ │ │ - // 168: astore 8 │ │ │ │ - // 170: aload 5 │ │ │ │ - // 172: aload 7 │ │ │ │ - // 174: aload 8 │ │ │ │ - // 176: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ │ │ │ - // 179: astore 5 │ │ │ │ - // 181: ldc "X-CRASHLYTICS-D" │ │ │ │ - // 183: astore 7 │ │ │ │ - // 185: aload_1 │ │ │ │ - // 186: getfield com/crashlytics/android/aw.b:Ljava/lang/String; │ │ │ │ - // 189: astore 8 │ │ │ │ - // 191: aload 5 │ │ │ │ - // 193: aload 7 │ │ │ │ - // 195: aload 8 │ │ │ │ - // 197: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ │ │ │ - // 200: astore 5 │ │ │ │ - // 202: ldc "X-CRASHLYTICS-API-CLIENT-VERSION" │ │ │ │ - // 204: astore 7 │ │ │ │ - // 206: invokestatic com/crashlytics/android/Crashlytics.getCrashlyticsVersion:()Ljava/lang/String; │ │ │ │ - // 209: astore 8 │ │ │ │ - // 211: aload 5 │ │ │ │ - // 213: aload 7 │ │ │ │ - // 215: aload 8 │ │ │ │ - // 217: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ │ │ │ - // 220: astore 5 │ │ │ │ - // 222: ldc "Accept" │ │ │ │ - // 224: astore 7 │ │ │ │ - // 226: ldc "application/json" │ │ │ │ - // 228: astore 8 │ │ │ │ - // 230: aload 5 │ │ │ │ - // 232: aload 7 │ │ │ │ - // 234: aload 8 │ │ │ │ - // 236: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ │ │ │ - // 239: astore 4 │ │ │ │ - // 241: new Ljava/lang/StringBuilder; │ │ │ │ - // 244: astore 5 │ │ │ │ - // 246: ldc "Requesting settings from " │ │ │ │ - // 248: astore 7 │ │ │ │ - // 250: aload 5 │ │ │ │ - // 252: aload 7 │ │ │ │ - // 254: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 257: aload_0 │ │ │ │ - // 258: invokevirtual com/crashlytics/android/ae.a:()Ljava/lang/String; │ │ │ │ - // 261: astore 7 │ │ │ │ - // 263: aload 5 │ │ │ │ - // 265: aload 7 │ │ │ │ - // 267: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 270: astore 5 │ │ │ │ - // 272: aload 5 │ │ │ │ - // 274: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 277: astore 5 │ │ │ │ - // 279: aload 5 │ │ │ │ - // 281: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 284: new Ljava/lang/StringBuilder; │ │ │ │ - // 287: astore 5 │ │ │ │ - // 289: ldc "Settings query params were: " │ │ │ │ - // 291: astore 7 │ │ │ │ - // 293: aload 5 │ │ │ │ - // 295: aload 7 │ │ │ │ - // 297: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 300: aload 5 │ │ │ │ - // 302: aload_3 │ │ │ │ - // 303: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ │ │ - // 306: astore_3 │ │ │ │ - // 307: aload_3 │ │ │ │ - // 308: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 311: astore_3 │ │ │ │ - // 312: aload_3 │ │ │ │ - // 313: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 316: new Lorg/json/JSONObject; │ │ │ │ - // 319: astore_3 │ │ │ │ - // 320: aload 4 │ │ │ │ - // 322: invokevirtual com/crashlytics/android/HttpRequest.c:()Ljava/lang/String; │ │ │ │ - // 325: astore 5 │ │ │ │ - // 327: aload_3 │ │ │ │ - // 328: aload 5 │ │ │ │ - // 330: invokespecial org/json/JSONObject.:(Ljava/lang/String;)V │ │ │ │ - // 333: aload 4 │ │ │ │ - // 335: ifnull 375 │ │ │ │ - // 338: new Ljava/lang/StringBuilder; │ │ │ │ - // 341: astore_2 │ │ │ │ - // 342: aload_2 │ │ │ │ - // 343: ldc "Settings request ID: " │ │ │ │ - // 345: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 348: ldc "X-REQUEST-ID" │ │ │ │ - // 350: astore 5 │ │ │ │ - // 352: aload 4 │ │ │ │ - // 354: aload 5 │ │ │ │ - // 356: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;)Ljava/lang/String; │ │ │ │ - // 359: astore 4 │ │ │ │ - // 361: aload_2 │ │ │ │ - // 362: aload 4 │ │ │ │ - // 364: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 367: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 370: astore_2 │ │ │ │ - // 371: aload_2 │ │ │ │ - // 372: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 375: aload_3 │ │ │ │ - // 376: areturn │ │ │ │ - // 377: astore_3 │ │ │ │ - // 378: aconst_null │ │ │ │ - // 379: astore 4 │ │ │ │ - // 381: new Ljava/lang/StringBuilder; │ │ │ │ - // 384: astore 5 │ │ │ │ - // 386: ldc "Failed to retrieve settings from " │ │ │ │ - // 388: astore 7 │ │ │ │ - // 390: aload 5 │ │ │ │ - // 392: aload 7 │ │ │ │ - // 394: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 397: aload_0 │ │ │ │ - // 398: invokevirtual com/crashlytics/android/ae.a:()Ljava/lang/String; │ │ │ │ - // 401: astore 7 │ │ │ │ - // 403: aload 5 │ │ │ │ - // 405: aload 7 │ │ │ │ - // 407: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 410: astore 5 │ │ │ │ - // 412: aload 5 │ │ │ │ - // 414: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 417: astore 5 │ │ │ │ - // 419: aload 5 │ │ │ │ - // 421: aload_3 │ │ │ │ - // 422: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 425: aload 4 │ │ │ │ - // 427: ifnull 526 │ │ │ │ - // 430: new Ljava/lang/StringBuilder; │ │ │ │ - // 433: astore_3 │ │ │ │ - // 434: aload_3 │ │ │ │ - // 435: ldc "Settings request ID: " │ │ │ │ - // 437: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 440: ldc "X-REQUEST-ID" │ │ │ │ - // 442: astore 5 │ │ │ │ - // 444: aload 4 │ │ │ │ - // 446: aload 5 │ │ │ │ - // 448: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;)Ljava/lang/String; │ │ │ │ - // 451: astore 4 │ │ │ │ - // 453: aload_3 │ │ │ │ - // 454: aload 4 │ │ │ │ - // 456: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 459: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 462: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 465: aconst_null │ │ │ │ - // 466: astore_3 │ │ │ │ - // 467: goto 375 │ │ │ │ - // 470: astore_3 │ │ │ │ - // 471: aconst_null │ │ │ │ - // 472: astore 4 │ │ │ │ - // 474: aload 4 │ │ │ │ - // 476: ifnull 516 │ │ │ │ - // 479: new Ljava/lang/StringBuilder; │ │ │ │ - // 482: astore_2 │ │ │ │ - // 483: aload_2 │ │ │ │ - // 484: ldc "Settings request ID: " │ │ │ │ - // 486: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ - // 489: ldc "X-REQUEST-ID" │ │ │ │ - // 491: astore 5 │ │ │ │ - // 493: aload 4 │ │ │ │ - // 495: aload 5 │ │ │ │ - // 497: invokevirtual com/crashlytics/android/HttpRequest.a:(Ljava/lang/String;)Ljava/lang/String; │ │ │ │ - // 500: astore 4 │ │ │ │ - // 502: aload_2 │ │ │ │ - // 503: aload 4 │ │ │ │ - // 505: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ - // 508: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ - // 511: astore_2 │ │ │ │ - // 512: aload_2 │ │ │ │ - // 513: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 516: aload_3 │ │ │ │ - // 517: athrow │ │ │ │ - // 518: astore_3 │ │ │ │ - // 519: goto 474 │ │ │ │ - // 522: astore_3 │ │ │ │ - // 523: goto 381 │ │ │ │ - // 526: aconst_null │ │ │ │ - // 527: astore_3 │ │ │ │ - // 528: goto 375 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 2 5 377 381 Ljava/lang/Exception; │ │ │ │ - // 2 5 470 474 Any │ │ │ │ - // 6 10 377 381 Ljava/lang/Exception; │ │ │ │ - // 6 10 470 474 Any │ │ │ │ - // 14 18 377 381 Ljava/lang/Exception; │ │ │ │ - // 14 18 470 474 Any │ │ │ │ - // 23 31 377 381 Ljava/lang/Exception; │ │ │ │ - // 23 31 470 474 Any │ │ │ │ - // 35 39 377 381 Ljava/lang/Exception; │ │ │ │ - // 35 39 470 474 Any │ │ │ │ - // 44 52 377 381 Ljava/lang/Exception; │ │ │ │ - // 44 52 470 474 Any │ │ │ │ - // 56 60 377 381 Ljava/lang/Exception; │ │ │ │ - // 56 60 470 474 Any │ │ │ │ - // 62 67 377 381 Ljava/lang/Exception; │ │ │ │ - // 62 67 470 474 Any │ │ │ │ - // 72 80 377 381 Ljava/lang/Exception; │ │ │ │ - // 72 80 470 474 Any │ │ │ │ - // 84 88 377 381 Ljava/lang/Exception; │ │ │ │ - // 84 88 470 474 Any │ │ │ │ - // 93 101 377 381 Ljava/lang/Exception; │ │ │ │ - // 93 101 470 474 Any │ │ │ │ - // 101 105 377 381 Ljava/lang/Exception; │ │ │ │ - // 101 105 470 474 Any │ │ │ │ - // 107 112 377 381 Ljava/lang/Exception; │ │ │ │ - // 107 112 470 474 Any │ │ │ │ - // 126 134 377 381 Ljava/lang/Exception; │ │ │ │ - // 126 134 470 474 Any │ │ │ │ - // 135 139 377 381 Ljava/lang/Exception; │ │ │ │ - // 135 139 470 474 Any │ │ │ │ - // 145 149 522 526 Ljava/lang/Exception; │ │ │ │ - // 145 149 518 522 Any │ │ │ │ - // 155 160 522 526 Ljava/lang/Exception; │ │ │ │ - // 155 160 518 522 Any │ │ │ │ - // 174 179 522 526 Ljava/lang/Exception; │ │ │ │ - // 174 179 518 522 Any │ │ │ │ - // 185 189 522 526 Ljava/lang/Exception; │ │ │ │ - // 185 189 518 522 Any │ │ │ │ - // 195 200 522 526 Ljava/lang/Exception; │ │ │ │ - // 195 200 518 522 Any │ │ │ │ - // 206 209 522 526 Ljava/lang/Exception; │ │ │ │ - // 206 209 518 522 Any │ │ │ │ - // 215 220 522 526 Ljava/lang/Exception; │ │ │ │ - // 215 220 518 522 Any │ │ │ │ - // 234 239 522 526 Ljava/lang/Exception; │ │ │ │ - // 234 239 518 522 Any │ │ │ │ - // 241 244 522 526 Ljava/lang/Exception; │ │ │ │ - // 241 244 518 522 Any │ │ │ │ - // 252 257 522 526 Ljava/lang/Exception; │ │ │ │ - // 252 257 518 522 Any │ │ │ │ - // 257 261 522 526 Ljava/lang/Exception; │ │ │ │ - // 257 261 518 522 Any │ │ │ │ - // 265 270 522 526 Ljava/lang/Exception; │ │ │ │ - // 265 270 518 522 Any │ │ │ │ - // 272 277 522 526 Ljava/lang/Exception; │ │ │ │ - // 272 277 518 522 Any │ │ │ │ - // 279 284 522 526 Ljava/lang/Exception; │ │ │ │ - // 279 284 518 522 Any │ │ │ │ - // 284 287 522 526 Ljava/lang/Exception; │ │ │ │ - // 284 287 518 522 Any │ │ │ │ - // 295 300 522 526 Ljava/lang/Exception; │ │ │ │ - // 295 300 518 522 Any │ │ │ │ - // 302 306 522 526 Ljava/lang/Exception; │ │ │ │ - // 302 306 518 522 Any │ │ │ │ - // 307 311 522 526 Ljava/lang/Exception; │ │ │ │ - // 307 311 518 522 Any │ │ │ │ - // 312 316 522 526 Ljava/lang/Exception; │ │ │ │ - // 312 316 518 522 Any │ │ │ │ - // 316 319 522 526 Ljava/lang/Exception; │ │ │ │ - // 316 319 518 522 Any │ │ │ │ - // 320 325 522 526 Ljava/lang/Exception; │ │ │ │ - // 320 325 518 522 Any │ │ │ │ - // 328 333 522 526 Ljava/lang/Exception; │ │ │ │ - // 328 333 518 522 Any │ │ │ │ - // 381 384 518 522 Any │ │ │ │ - // 392 397 518 522 Any │ │ │ │ - // 397 401 518 522 Any │ │ │ │ - // 405 410 518 522 Any │ │ │ │ - // 412 417 518 522 Any │ │ │ │ - // 421 425 518 522 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IndexOutOfBoundsException: Index: 256, Size: 256 │ │ │ │ - // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ - // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + static int a(final int n, final int n2) { │ │ │ │ + return n << 3 | n2; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/c.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,79 +1,46 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.security.cert.CertificateException; │ │ │ │ -import java.util.LinkedList; │ │ │ │ -import java.security.GeneralSecurityException; │ │ │ │ -import java.security.cert.X509Certificate; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ +import android.util.Log; │ │ │ │ +import com.crashlytics.android.internal.ab; │ │ │ │ │ │ │ │ -class c │ │ │ │ +final class c │ │ │ │ { │ │ │ │ - public c(final String s, final int n, final int n2) { │ │ │ │ - } │ │ │ │ + private String a; │ │ │ │ + private boolean b; │ │ │ │ │ │ │ │ - public static int a(final int n) { │ │ │ │ - int n2 = 0; │ │ │ │ - final boolean b = true; │ │ │ │ - if (n < 200 || n > 299) { │ │ │ │ - if (n >= 300 && n <= 399) { │ │ │ │ - n2 = (b ? 1 : 0); │ │ │ │ - } │ │ │ │ - else if (n < 400 || n > 499) { │ │ │ │ - if (n >= 500) { │ │ │ │ - n2 = (b ? 1 : 0); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n2 = (b ? 1 : 0); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - return n2; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static boolean a(final X509Certificate x509Certificate, final X509Certificate x509Certificate2) { │ │ │ │ - boolean b = false; │ │ │ │ - if (x509Certificate.getSubjectX500Principal().equals(x509Certificate2.getIssuerX500Principal())) { │ │ │ │ - try { │ │ │ │ - x509Certificate2.verify(x509Certificate.getPublicKey()); │ │ │ │ - b = true; │ │ │ │ - } │ │ │ │ - catch (GeneralSecurityException ex) {} │ │ │ │ - } │ │ │ │ - return b; │ │ │ │ + public c(final String a, final boolean b) { │ │ │ │ + this.a = a; │ │ │ │ + this.b = b; │ │ │ │ } │ │ │ │ │ │ │ │ - public static X509Certificate[] a(final X509Certificate[] array, final az az) { │ │ │ │ - int n = 1; │ │ │ │ - final LinkedList list = new LinkedList(); │ │ │ │ - int n2; │ │ │ │ - if (az.a(array[0])) { │ │ │ │ - n2 = n; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n2 = 0; │ │ │ │ - } │ │ │ │ - list.add(array[0]); │ │ │ │ - int n3 = n2; │ │ │ │ - int i; │ │ │ │ - for (i = n; i < array.length; ++i) { │ │ │ │ - if (az.a(array[i])) { │ │ │ │ - n3 = n; │ │ │ │ - } │ │ │ │ - if (!a(array[i], array[i - 1])) { │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - list.add(array[i]); │ │ │ │ - } │ │ │ │ - final X509Certificate b = az.b(array[i - 1]); │ │ │ │ - if (b != null) { │ │ │ │ - list.add(b); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n = n3; │ │ │ │ + public final void a(final String s, final String s2) { │ │ │ │ + if (ab.e(this.a) && this.b) { │ │ │ │ + Log.e("Crashlytics", "."); │ │ │ │ + Log.e("Crashlytics", ". | | "); │ │ │ │ + Log.e("Crashlytics", ". | |"); │ │ │ │ + Log.e("Crashlytics", ". | |"); │ │ │ │ + Log.e("Crashlytics", ". \\ | | /"); │ │ │ │ + Log.e("Crashlytics", ". \\ /"); │ │ │ │ + Log.e("Crashlytics", ". \\ /"); │ │ │ │ + Log.e("Crashlytics", ". \\/"); │ │ │ │ + Log.e("Crashlytics", "."); │ │ │ │ + Log.e("Crashlytics", "This app relies on Crashlytics. Configure your build environment here: "); │ │ │ │ + Log.e("Crashlytics", String.format("https://crashlytics.com/register/%s/android/%s", s, s2)); │ │ │ │ + Log.e("Crashlytics", "."); │ │ │ │ + Log.e("Crashlytics", ". /\\"); │ │ │ │ + Log.e("Crashlytics", ". / \\"); │ │ │ │ + Log.e("Crashlytics", ". / \\"); │ │ │ │ + Log.e("Crashlytics", ". / | | \\"); │ │ │ │ + Log.e("Crashlytics", ". | |"); │ │ │ │ + Log.e("Crashlytics", ". | |"); │ │ │ │ + Log.e("Crashlytics", ". | |"); │ │ │ │ + Log.e("Crashlytics", "."); │ │ │ │ + throw new CrashlyticsMissingDependencyException(s, s2); │ │ │ │ } │ │ │ │ - if (n != 0) { │ │ │ │ - return list.toArray(new X509Certificate[list.size()]); │ │ │ │ + if (!this.b) { │ │ │ │ + v.a().b().a("Crashlytics", "Configured not to require a build ID."); │ │ │ │ } │ │ │ │ - throw new CertificateException("Didn't find a trust anchor in chain cleanup!"); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/d.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,21 +1,95 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -enum d implements aj │ │ │ │ +import java.io.ByteArrayInputStream; │ │ │ │ +import java.io.InputStream; │ │ │ │ +import java.io.UnsupportedEncodingException; │ │ │ │ + │ │ │ │ +final class d │ │ │ │ { │ │ │ │ - a("GET", 0), │ │ │ │ - b("POST", n2), │ │ │ │ - c("PUT", n); │ │ │ │ + private final byte[] a; │ │ │ │ + private volatile int b; │ │ │ │ │ │ │ │ static { │ │ │ │ - final int n = 2; │ │ │ │ - final int n2 = 1; │ │ │ │ - final d[] d2 = { com.crashlytics.android.d.a, null, null }; │ │ │ │ - d2[n2] = com.crashlytics.android.d.b; │ │ │ │ - d2[n] = com.crashlytics.android.d.c; │ │ │ │ - d = d2; │ │ │ │ + new d(new byte[0]); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private d(final byte[] a) { │ │ │ │ + this.b = 0; │ │ │ │ + this.a = a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static d a(final String s) { │ │ │ │ + try { │ │ │ │ + return new d(s.getBytes("UTF-8")); │ │ │ │ + } │ │ │ │ + catch (UnsupportedEncodingException ex) { │ │ │ │ + throw new RuntimeException("UTF-8 not supported.", ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static d a(final byte[] array, final int n, final int n2) { │ │ │ │ + final byte[] array2 = new byte[n2]; │ │ │ │ + System.arraycopy(array, 0, array2, 0, n2); │ │ │ │ + return new d(array2); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final int a() { │ │ │ │ + return this.a.length; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final byte[] array, final int n, final int n2, final int n3) { │ │ │ │ + System.arraycopy(this.a, n, array, n2, n3); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final InputStream b() { │ │ │ │ + return new ByteArrayInputStream(this.a); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final boolean equals(final Object o) { │ │ │ │ + boolean b = true; │ │ │ │ + if (o != this) { │ │ │ │ + if (!(o instanceof d)) { │ │ │ │ + b = false; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + final d d = (d)o; │ │ │ │ + final int length = this.a.length; │ │ │ │ + if (length != d.a.length) { │ │ │ │ + b = false; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + final byte[] a = this.a; │ │ │ │ + final byte[] a2 = d.a; │ │ │ │ + for (int i = 0; i < length; ++i) { │ │ │ │ + if (a[i] != a2[i]) { │ │ │ │ + b = false; │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + return b; │ │ │ │ } │ │ │ │ │ │ │ │ - private d(final String s, final int n) { │ │ │ │ + public final int hashCode() { │ │ │ │ + int b = this.b; │ │ │ │ + if (b == 0) { │ │ │ │ + final byte[] a = this.a; │ │ │ │ + final int length = this.a.length; │ │ │ │ + int i = 0; │ │ │ │ + b = length; │ │ │ │ + while (i < length) { │ │ │ │ + final int n = a[i] + b * 31; │ │ │ │ + ++i; │ │ │ │ + b = n; │ │ │ │ + } │ │ │ │ + if (b == 0) { │ │ │ │ + b = 1; │ │ │ │ + } │ │ │ │ + this.b = b; │ │ │ │ + } │ │ │ │ + return b; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/e.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,14 +1,71 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.Map; │ │ │ │ +import java.util.Locale; │ │ │ │ +import com.crashlytics.android.internal.ab; │ │ │ │ +import android.os.Process; │ │ │ │ +import java.nio.ByteOrder; │ │ │ │ +import java.nio.ByteBuffer; │ │ │ │ +import java.util.Date; │ │ │ │ +import com.crashlytics.android.internal.ao; │ │ │ │ +import java.util.concurrent.atomic.AtomicLong; │ │ │ │ │ │ │ │ -enum e │ │ │ │ +final class e │ │ │ │ { │ │ │ │ - e(final String s, final int n) { │ │ │ │ + private static final AtomicLong a; │ │ │ │ + private static String b; │ │ │ │ + │ │ │ │ + static { │ │ │ │ + a = new AtomicLong(0L); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public e(final ao ao) { │ │ │ │ + final int n = 4; │ │ │ │ + final int n2 = 3; │ │ │ │ + final int n3 = 2; │ │ │ │ + final int n4 = 1; │ │ │ │ + final byte[] array = new byte[10]; │ │ │ │ + final long time = new Date().getTime(); │ │ │ │ + final long n5 = time / 1000L; │ │ │ │ + final long n6 = time % 1000L; │ │ │ │ + final ByteBuffer allocate = ByteBuffer.allocate(n); │ │ │ │ + allocate.putInt((int)n5); │ │ │ │ + allocate.order(ByteOrder.BIG_ENDIAN); │ │ │ │ + allocate.position(0); │ │ │ │ + final byte[] array2 = allocate.array(); │ │ │ │ + array[0] = array2[0]; │ │ │ │ + array[n4] = array2[n4]; │ │ │ │ + array[n3] = array2[n3]; │ │ │ │ + array[n2] = array2[n2]; │ │ │ │ + final byte[] a = a(n6); │ │ │ │ + array[n] = a[0]; │ │ │ │ + array[5] = a[n4]; │ │ │ │ + final byte[] a2 = a(e.a.incrementAndGet()); │ │ │ │ + array[6] = a2[0]; │ │ │ │ + array[7] = a2[n4]; │ │ │ │ + final byte[] a3 = a((long)(Object)Integer.valueOf(Process.myPid())); │ │ │ │ + array[8] = a3[0]; │ │ │ │ + array[9] = a3[n4]; │ │ │ │ + final String a4 = ab.a(ao.b()); │ │ │ │ + final String a5 = ab.a(array); │ │ │ │ + final Locale us = Locale.US; │ │ │ │ + final Object[] array3 = new Object[n]; │ │ │ │ + array3[0] = a5.substring(0, 12); │ │ │ │ + array3[n4] = a5.substring(12, 16); │ │ │ │ + array3[n3] = a5.subSequence(16, 20); │ │ │ │ + array3[n2] = a4.substring(0, 12); │ │ │ │ + e.b = String.format(us, "%s-%s-%s-%s", array3).toUpperCase(Locale.US); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static byte[] a(final long n) { │ │ │ │ + final ByteBuffer allocate = ByteBuffer.allocate(2); │ │ │ │ + allocate.putShort((short)(int)n); │ │ │ │ + allocate.order(ByteOrder.BIG_ENDIAN); │ │ │ │ + allocate.position(0); │ │ │ │ + return allocate.array(); │ │ │ │ } │ │ │ │ │ │ │ │ - public final HttpRequest a(final String s, final Map map) { │ │ │ │ - return HttpRequest.a((CharSequence)s, map, true); │ │ │ │ + public final String toString() { │ │ │ │ + return e.b; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/f.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,14 +1,61 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.Map; │ │ │ │ +import java.io.IOException; │ │ │ │ +import java.io.File; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ +import java.io.FileOutputStream; │ │ │ │ │ │ │ │ -enum f │ │ │ │ +final class f extends FileOutputStream │ │ │ │ { │ │ │ │ - f(final String s, final int n) { │ │ │ │ + public static final FilenameFilter a; │ │ │ │ + private final String b; │ │ │ │ + private File c; │ │ │ │ + private boolean d; │ │ │ │ + │ │ │ │ + static { │ │ │ │ + a = (FilenameFilter)new g(); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public f(final File file, final String s) { │ │ │ │ + super(new File(file, s + ".cls_temp")); │ │ │ │ + this.d = false; │ │ │ │ + this.b = file + File.separator + s; │ │ │ │ + this.c = new File(this.b + ".cls_temp"); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a() { │ │ │ │ + if (!this.d) { │ │ │ │ + this.d = true; │ │ │ │ + super.flush(); │ │ │ │ + super.close(); │ │ │ │ + } │ │ │ │ } │ │ │ │ │ │ │ │ - public final HttpRequest a(final String s, final Map map) { │ │ │ │ - return HttpRequest.a((CharSequence)s); │ │ │ │ + public final void close() { │ │ │ │ + final File file; │ │ │ │ + Label_0107: { │ │ │ │ + synchronized (this) { │ │ │ │ + if (!this.d) { │ │ │ │ + this.d = true; │ │ │ │ + super.flush(); │ │ │ │ + super.close(); │ │ │ │ + file = new File(this.b + ".cls"); │ │ │ │ + if (!this.c.renameTo(file)) { │ │ │ │ + break Label_0107; │ │ │ │ + } │ │ │ │ + this.c = null; │ │ │ │ + } │ │ │ │ + return; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + String s = ""; │ │ │ │ + if (file.exists()) { │ │ │ │ + s = " (target already exists)"; │ │ │ │ + } │ │ │ │ + else if (!this.c.exists()) { │ │ │ │ + s = " (source does not exist)"; │ │ │ │ + } │ │ │ │ + throw new IOException("Could not rename temp file: " + this.c + " -> " + file + s); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/g.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,14 +1,12 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.util.Map; │ │ │ │ +import java.io.File; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ │ │ │ │ -enum g │ │ │ │ +final class g implements FilenameFilter │ │ │ │ { │ │ │ │ - g(final String s, final int n) { │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final HttpRequest a(final String s, final Map map) { │ │ │ │ - return HttpRequest.b((CharSequence)s); │ │ │ │ + public final boolean accept(final File file, final String s) { │ │ │ │ + return s.endsWith(".cls_temp"); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/h.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,29 +1,274 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class h │ │ │ │ +import java.io.InputStream; │ │ │ │ +import java.io.OutputStream; │ │ │ │ +import java.io.Flushable; │ │ │ │ + │ │ │ │ +final class h implements Flushable │ │ │ │ { │ │ │ │ - public final String a; │ │ │ │ - public final String b; │ │ │ │ - public final String c; │ │ │ │ - public final String d; │ │ │ │ - public final String e; │ │ │ │ - public final String f; │ │ │ │ - public final int g; │ │ │ │ - public final String h; │ │ │ │ - public final String i; │ │ │ │ - public final ak j; │ │ │ │ + private final byte[] a; │ │ │ │ + private final int b; │ │ │ │ + private int c; │ │ │ │ + private final OutputStream d; │ │ │ │ │ │ │ │ - public h(final String a, final String b, final String c, final String d, final String e, final String f, final int g, final String h, final String i, final ak j) { │ │ │ │ - this.a = a; │ │ │ │ - this.b = b; │ │ │ │ - this.c = c; │ │ │ │ + private h(final OutputStream d, final byte[] a) { │ │ │ │ this.d = d; │ │ │ │ - this.e = e; │ │ │ │ - this.f = f; │ │ │ │ - this.g = g; │ │ │ │ - this.h = h; │ │ │ │ - this.i = i; │ │ │ │ - this.j = j; │ │ │ │ + this.a = a; │ │ │ │ + this.c = 0; │ │ │ │ + this.b = a.length; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int a(final int n) { │ │ │ │ + return c(ae.a(n, 0)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static h a(final OutputStream outputStream) { │ │ │ │ + return new h(outputStream, new byte[4096]); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a() { │ │ │ │ + if (this.d == null) { │ │ │ │ + throw new i(); │ │ │ │ + } │ │ │ │ + this.d.write(this.a, 0, this.c); │ │ │ │ + this.c = 0; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(long n) { │ │ │ │ + while ((0xFFFFFF80 & n) != 0x0L) { │ │ │ │ + this.d(((int)n & 0x7F) | 0x80); │ │ │ │ + n >>>= 7; │ │ │ │ + } │ │ │ │ + this.d((int)n); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int b(final int n, final float n2) { │ │ │ │ + return a(1) + 4; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int b(final int n, final long n2) { │ │ │ │ + final long n3 = 0L; │ │ │ │ + final int a = a(n); │ │ │ │ + int n4; │ │ │ │ + if ((0xFFFFFF80 & n2) == n3) { │ │ │ │ + n4 = 1; │ │ │ │ + } │ │ │ │ + else if ((0xFFFFFFFFFFFFC000L & n2) == n3) { │ │ │ │ + n4 = 2; │ │ │ │ + } │ │ │ │ + else if ((0xFFE00000L & n2) == n3) { │ │ │ │ + n4 = 3; │ │ │ │ + } │ │ │ │ + else if ((0xF0000000L & n2) == n3) { │ │ │ │ + n4 = 4; │ │ │ │ + } │ │ │ │ + else if ((0xFFFFFFF800000000L & n2) == n3) { │ │ │ │ + n4 = 5; │ │ │ │ + } │ │ │ │ + else if ((0xFFFFFC0000000000L & n2) == n3) { │ │ │ │ + n4 = 6; │ │ │ │ + } │ │ │ │ + else if ((0xFFFE000000000000L & n2) == n3) { │ │ │ │ + n4 = 7; │ │ │ │ + } │ │ │ │ + else if ((0xFF00000000000000L & n2) == n3) { │ │ │ │ + n4 = 8; │ │ │ │ + } │ │ │ │ + else if ((Long.MIN_VALUE & n2) == n3) { │ │ │ │ + n4 = 9; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n4 = 10; │ │ │ │ + } │ │ │ │ + return n4 + a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int b(final int n, final d d) { │ │ │ │ + return a(n) + (c(d.a()) + d.a()); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int b(final int n, final boolean b) { │ │ │ │ + return a(n) + 1; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int c(final int n) { │ │ │ │ + int n2; │ │ │ │ + if ((n & 0xFFFFFF80) == 0x0) { │ │ │ │ + n2 = 1; │ │ │ │ + } │ │ │ │ + else if ((n & 0xFFFFC000) == 0x0) { │ │ │ │ + n2 = 2; │ │ │ │ + } │ │ │ │ + else if ((0xFFE00000 & n) == 0x0) { │ │ │ │ + n2 = 3; │ │ │ │ + } │ │ │ │ + else if ((0xF0000000 & n) == 0x0) { │ │ │ │ + n2 = 4; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n2 = 5; │ │ │ │ + } │ │ │ │ + return n2; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int d(final int n, final int n2) { │ │ │ │ + return a(n) + c(n2); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void d(final int n) { │ │ │ │ + final byte b = (byte)n; │ │ │ │ + if (this.c == this.b) { │ │ │ │ + this.a(); │ │ │ │ + } │ │ │ │ + this.a[this.c++] = b; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static int e(final int n) { │ │ │ │ + return n << 1 ^ n >> 31; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int e(final int n, final int n2) { │ │ │ │ + final int a = a(n); │ │ │ │ + int c; │ │ │ │ + if (n2 >= 0) { │ │ │ │ + c = c(n2); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + c = 10; │ │ │ │ + } │ │ │ │ + return c + a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public static int f(final int n, final int n2) { │ │ │ │ + return a(2) + c(e(n2)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final int n, final float n2) { │ │ │ │ + this.g(1, 5); │ │ │ │ + final int floatToRawIntBits = Float.floatToRawIntBits(n2); │ │ │ │ + this.d(floatToRawIntBits & 0xFF); │ │ │ │ + this.d(floatToRawIntBits >> 8 & 0xFF); │ │ │ │ + this.d(floatToRawIntBits >> 16 & 0xFF); │ │ │ │ + this.d(floatToRawIntBits >>> 24); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final int n, final int n2) { │ │ │ │ + this.g(n, 0); │ │ │ │ + this.b(n2); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final int n, final long n2) { │ │ │ │ + this.g(n, 0); │ │ │ │ + this.a(n2); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final int n, final d d) { │ │ │ │ + this.g(n, 2); │ │ │ │ + this.b(d.a()); │ │ │ │ + final int a = d.a(); │ │ │ │ + if (this.b - this.c >= a) { │ │ │ │ + d.a(this.a, 0, this.c, a); │ │ │ │ + this.c += a; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + final int n2 = this.b - this.c; │ │ │ │ + d.a(this.a, 0, this.c, n2); │ │ │ │ + final int n3 = n2 + 0; │ │ │ │ + int i = a - n2; │ │ │ │ + this.c = this.b; │ │ │ │ + this.a(); │ │ │ │ + if (i <= this.b) { │ │ │ │ + d.a(this.a, n3, 0, i); │ │ │ │ + this.c = i; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + final InputStream b = d.b(); │ │ │ │ + if (n3 != b.skip(n3)) { │ │ │ │ + throw new IllegalStateException("Skip failed."); │ │ │ │ + } │ │ │ │ + while (i > 0) { │ │ │ │ + final int min = Math.min(i, this.b); │ │ │ │ + final int read = b.read(this.a, 0, min); │ │ │ │ + if (read != min) { │ │ │ │ + throw new IllegalStateException("Read failed."); │ │ │ │ + } │ │ │ │ + this.d.write(this.a, 0, read); │ │ │ │ + i -= read; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final int n, final String s) { │ │ │ │ + this.g(1, 2); │ │ │ │ + final byte[] bytes = s.getBytes("UTF-8"); │ │ │ │ + this.b(bytes.length); │ │ │ │ + this.a(bytes); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final int n, final boolean b) { │ │ │ │ + int n2 = 0; │ │ │ │ + this.g(n, 0); │ │ │ │ + if (b) { │ │ │ │ + n2 = 1; │ │ │ │ + } │ │ │ │ + this.d(n2); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a(final byte[] array) { │ │ │ │ + final int length = array.length; │ │ │ │ + if (this.b - this.c >= length) { │ │ │ │ + System.arraycopy(array, 0, this.a, this.c, length); │ │ │ │ + this.c += length; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + final int n = this.b - this.c; │ │ │ │ + System.arraycopy(array, 0, this.a, this.c, n); │ │ │ │ + final int n2 = n + 0; │ │ │ │ + final int c = length - n; │ │ │ │ + this.c = this.b; │ │ │ │ + this.a(); │ │ │ │ + if (c <= this.b) { │ │ │ │ + System.arraycopy(array, n2, this.a, 0, c); │ │ │ │ + this.c = c; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + this.d.write(array, n2, c); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void b(int n) { │ │ │ │ + while ((n & 0xFFFFFF80) != 0x0) { │ │ │ │ + this.d((n & 0x7F) | 0x80); │ │ │ │ + n >>>= 7; │ │ │ │ + } │ │ │ │ + this.d(n); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void b(final int n, final int n2) { │ │ │ │ + this.g(n, 0); │ │ │ │ + if (n2 >= 0) { │ │ │ │ + this.b(n2); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + this.a((long)n2); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void c(final int n, final int n2) { │ │ │ │ + this.g(2, 0); │ │ │ │ + this.b(e(n2)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void flush() { │ │ │ │ + if (this.d != null) { │ │ │ │ + this.a(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void g(final int n, final int n2) { │ │ │ │ + this.b(ae.a(n, n2)); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/i.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,37 +1,13 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class i │ │ │ │ +import java.io.IOException; │ │ │ │ + │ │ │ │ +final class i extends IOException │ │ │ │ { │ │ │ │ - private final String a; │ │ │ │ - private final String b; │ │ │ │ - private final String c; │ │ │ │ - private final boolean d; │ │ │ │ - │ │ │ │ - public i(final String s, final String a, final String b, final String c, final boolean d, final c c2) { │ │ │ │ - this.a = a; │ │ │ │ - this.b = b; │ │ │ │ - this.c = c; │ │ │ │ - this.d = d; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final String a() { │ │ │ │ - return this.b; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final String b() { │ │ │ │ - return this.c; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final boolean c() { │ │ │ │ - return this.d; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final boolean d() { │ │ │ │ - return "new".equals(this.a); │ │ │ │ - } │ │ │ │ + private static final long serialVersionUID = -6947486886997889499L; │ │ │ │ │ │ │ │ - public final boolean e() { │ │ │ │ - return "configured".equals(this.a); │ │ │ │ + i() { │ │ │ │ + super("CodedOutputStream was writing to a flat byte array and ran out of space."); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/j.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,44 +1,28 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.util.Log; │ │ │ │ +import android.os.AsyncTask; │ │ │ │ │ │ │ │ -final class j │ │ │ │ +final class j extends AsyncTask │ │ │ │ { │ │ │ │ - private String a; │ │ │ │ - private boolean b; │ │ │ │ + private /* synthetic */ long a; │ │ │ │ + private /* synthetic */ CrashTest b; │ │ │ │ │ │ │ │ - public j(final String a, final boolean b) { │ │ │ │ - this.a = a; │ │ │ │ + j(final CrashTest b, final long a) { │ │ │ │ this.b = b; │ │ │ │ + this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void a(final String s, final String s2) { │ │ │ │ - if (aB.d(this.a) && this.b) { │ │ │ │ - Log.e("Crashlytics", "."); │ │ │ │ - Log.e("Crashlytics", ". | | "); │ │ │ │ - Log.e("Crashlytics", ". | |"); │ │ │ │ - Log.e("Crashlytics", ". | |"); │ │ │ │ - Log.e("Crashlytics", ". \\ | | /"); │ │ │ │ - Log.e("Crashlytics", ". \\ /"); │ │ │ │ - Log.e("Crashlytics", ". \\ /"); │ │ │ │ - Log.e("Crashlytics", ". \\/"); │ │ │ │ - Log.e("Crashlytics", "."); │ │ │ │ - Log.e("Crashlytics", "Something is missing! Find it here: "); │ │ │ │ - Log.e("Crashlytics", String.format("http://www.crashlytics.com/api/v1/%s/android/confirm/%s", s, s2)); │ │ │ │ - Log.e("Crashlytics", "."); │ │ │ │ - Log.e("Crashlytics", ". /\\"); │ │ │ │ - Log.e("Crashlytics", ". / \\"); │ │ │ │ - Log.e("Crashlytics", ". / \\"); │ │ │ │ - Log.e("Crashlytics", ". / | | \\"); │ │ │ │ - Log.e("Crashlytics", ". | |"); │ │ │ │ - Log.e("Crashlytics", ". | |"); │ │ │ │ - Log.e("Crashlytics", ". | |"); │ │ │ │ - Log.e("Crashlytics", "."); │ │ │ │ - throw new CrashlyticsMissingDependencyException(s, s2); │ │ │ │ - } │ │ │ │ - if (!this.b) { │ │ │ │ - aB.c("Configured not to require a build ID."); │ │ │ │ + private Void a() { │ │ │ │ + try { │ │ │ │ + final long a = this.a; │ │ │ │ + try { │ │ │ │ + Thread.sleep(a); │ │ │ │ + this.b.throwRuntimeException("Background thread crash"); │ │ │ │ + return null; │ │ │ │ + } │ │ │ │ + catch (InterruptedException ex) {} │ │ │ │ } │ │ │ │ + catch (InterruptedException ex2) {} │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/k.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,95 +1,26 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.ByteArrayInputStream; │ │ │ │ import java.io.InputStream; │ │ │ │ -import java.io.UnsupportedEncodingException; │ │ │ │ +import com.crashlytics.android.internal.aG; │ │ │ │ │ │ │ │ -final class k │ │ │ │ +final class k implements aG │ │ │ │ { │ │ │ │ - private final byte[] a; │ │ │ │ - private volatile int b; │ │ │ │ + private /* synthetic */ PinningInfoProvider a; │ │ │ │ │ │ │ │ - static { │ │ │ │ - new k(new byte[0]); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private k(final byte[] a) { │ │ │ │ - this.b = 0; │ │ │ │ + k(final PinningInfoProvider a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - public static k a(final String s) { │ │ │ │ - try { │ │ │ │ - return new k(s.getBytes("UTF-8")); │ │ │ │ - } │ │ │ │ - catch (UnsupportedEncodingException ex) { │ │ │ │ - throw new RuntimeException("UTF-8 not supported.", ex); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static k a(final byte[] array, final int n, final int n2) { │ │ │ │ - final byte[] array2 = new byte[n2]; │ │ │ │ - System.arraycopy(array, 0, array2, 0, n2); │ │ │ │ - return new k(array2); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final int a() { │ │ │ │ - return this.a.length; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final byte[] array, final int n, final int n2, final int n3) { │ │ │ │ - System.arraycopy(this.a, n, array, n2, n3); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final InputStream b() { │ │ │ │ - return new ByteArrayInputStream(this.a); │ │ │ │ + public final InputStream a() { │ │ │ │ + return this.a.getKeyStoreStream(); │ │ │ │ } │ │ │ │ │ │ │ │ - public final boolean equals(final Object o) { │ │ │ │ - boolean b = true; │ │ │ │ - if (o != this) { │ │ │ │ - if (!(o instanceof k)) { │ │ │ │ - b = false; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - final k k = (k)o; │ │ │ │ - final int length = this.a.length; │ │ │ │ - if (length != k.a.length) { │ │ │ │ - b = false; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - final byte[] a = this.a; │ │ │ │ - final byte[] a2 = k.a; │ │ │ │ - for (int i = 0; i < length; ++i) { │ │ │ │ - if (a[i] != a2[i]) { │ │ │ │ - b = false; │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - return b; │ │ │ │ + public final String b() { │ │ │ │ + return this.a.getKeyStorePassword(); │ │ │ │ } │ │ │ │ │ │ │ │ - public final int hashCode() { │ │ │ │ - int b = this.b; │ │ │ │ - if (b == 0) { │ │ │ │ - final byte[] a = this.a; │ │ │ │ - final int length = this.a.length; │ │ │ │ - int i = 0; │ │ │ │ - b = length; │ │ │ │ - while (i < length) { │ │ │ │ - final int n = a[i] + b * 31; │ │ │ │ - ++i; │ │ │ │ - b = n; │ │ │ │ - } │ │ │ │ - if (b == 0) { │ │ │ │ - b = 1; │ │ │ │ - } │ │ │ │ - this.b = b; │ │ │ │ - } │ │ │ │ - return b; │ │ │ │ + public final String[] c() { │ │ │ │ + return this.a.getPins(); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/l.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,67 +1,14 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.os.Process; │ │ │ │ -import java.nio.ByteOrder; │ │ │ │ -import java.nio.ByteBuffer; │ │ │ │ -import java.util.Date; │ │ │ │ -import java.util.concurrent.atomic.AtomicLong; │ │ │ │ +import com.crashlytics.android.internal.aX; │ │ │ │ +import com.crashlytics.android.internal.aU; │ │ │ │ │ │ │ │ -final class l │ │ │ │ +final class l implements aU │ │ │ │ { │ │ │ │ - private static final AtomicLong a; │ │ │ │ - private static String b; │ │ │ │ + private /* synthetic */ Crashlytics a; │ │ │ │ │ │ │ │ - static { │ │ │ │ - a = new AtomicLong(0L); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public l() { │ │ │ │ - final int n = 4; │ │ │ │ - final int n2 = 3; │ │ │ │ - final int n3 = 2; │ │ │ │ - final int n4 = 1; │ │ │ │ - final byte[] array = new byte[10]; │ │ │ │ - final long time = new Date().getTime(); │ │ │ │ - final long n5 = time / 1000L; │ │ │ │ - final long n6 = time % 1000L; │ │ │ │ - final ByteBuffer allocate = ByteBuffer.allocate(n); │ │ │ │ - allocate.putInt((int)n5); │ │ │ │ - allocate.order(ByteOrder.BIG_ENDIAN); │ │ │ │ - allocate.position(0); │ │ │ │ - final byte[] array2 = allocate.array(); │ │ │ │ - array[0] = array2[0]; │ │ │ │ - array[n4] = array2[n4]; │ │ │ │ - array[n3] = array2[n3]; │ │ │ │ - array[n2] = array2[n2]; │ │ │ │ - final byte[] a = a(n6); │ │ │ │ - array[n] = a[0]; │ │ │ │ - array[5] = a[n4]; │ │ │ │ - final byte[] a2 = a(l.a.incrementAndGet()); │ │ │ │ - array[6] = a2[0]; │ │ │ │ - array[7] = a2[n4]; │ │ │ │ - final byte[] a3 = a((long)(Object)new Integer(Process.myPid())); │ │ │ │ - array[8] = a3[0]; │ │ │ │ - array[9] = a3[n4]; │ │ │ │ - final String a4 = aB.a(Crashlytics.getInstance().c().b()); │ │ │ │ - final String b = aB.b(array); │ │ │ │ - final Object[] array3 = new Object[n]; │ │ │ │ - array3[0] = b.substring(0, 12); │ │ │ │ - array3[n4] = b.substring(12, 16); │ │ │ │ - array3[n3] = b.subSequence(16, 20); │ │ │ │ - array3[n2] = a4.substring(0, 12); │ │ │ │ - l.b = String.format("%s-%s-%s-%s", array3).toUpperCase(); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static byte[] a(final long n) { │ │ │ │ - final ByteBuffer allocate = ByteBuffer.allocate(2); │ │ │ │ - allocate.putShort((short)(int)n); │ │ │ │ - allocate.order(ByteOrder.BIG_ENDIAN); │ │ │ │ - allocate.position(0); │ │ │ │ - return allocate.array(); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final String toString() { │ │ │ │ - return l.b; │ │ │ │ + l(final Crashlytics a) { │ │ │ │ + this.a = a; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/m.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,263 +1,16 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import org.json.JSONObject; │ │ │ │ +import android.app.Activity; │ │ │ │ +import com.crashlytics.android.internal.v; │ │ │ │ +import com.crashlytics.android.internal.aX; │ │ │ │ +import com.crashlytics.android.internal.aU; │ │ │ │ │ │ │ │ -class m │ │ │ │ +final class m implements aU │ │ │ │ { │ │ │ │ - public JSONObject a() { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 1: astore_1 │ │ │ │ - // 2: ldc "Reading cached settings..." │ │ │ │ - // 4: astore_2 │ │ │ │ - // 5: aload_2 │ │ │ │ - // 6: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 9: new Ljava/io/File; │ │ │ │ - // 12: astore_2 │ │ │ │ - // 13: invokestatic com/crashlytics/android/Crashlytics.j:()Ljava/io/File; │ │ │ │ - // 16: astore_3 │ │ │ │ - // 17: ldc "com.crashlytics.settings.json" │ │ │ │ - // 19: astore 4 │ │ │ │ - // 21: aload_2 │ │ │ │ - // 22: aload_3 │ │ │ │ - // 23: aload 4 │ │ │ │ - // 25: invokespecial java/io/File.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 28: aload_2 │ │ │ │ - // 29: invokevirtual java/io/File.exists:()Z │ │ │ │ - // 32: istore 5 │ │ │ │ - // 34: iload 5 │ │ │ │ - // 36: ifeq 76 │ │ │ │ - // 39: new Ljava/io/FileInputStream; │ │ │ │ - // 42: astore_3 │ │ │ │ - // 43: aload_3 │ │ │ │ - // 44: aload_2 │ │ │ │ - // 45: invokespecial java/io/FileInputStream.:(Ljava/io/File;)V │ │ │ │ - // 48: aload_3 │ │ │ │ - // 49: invokestatic com/crashlytics/android/aB.a:(Ljava/io/InputStream;)Ljava/lang/String; │ │ │ │ - // 52: astore 4 │ │ │ │ - // 54: new Lorg/json/JSONObject; │ │ │ │ - // 57: astore_2 │ │ │ │ - // 58: aload_2 │ │ │ │ - // 59: aload 4 │ │ │ │ - // 61: invokespecial org/json/JSONObject.:(Ljava/lang/String;)V │ │ │ │ - // 64: aload_3 │ │ │ │ - // 65: astore_1 │ │ │ │ - // 66: ldc "Error while closing settings cache file." │ │ │ │ - // 68: astore_3 │ │ │ │ - // 69: aload_1 │ │ │ │ - // 70: aload_3 │ │ │ │ - // 71: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 74: aload_2 │ │ │ │ - // 75: areturn │ │ │ │ - // 76: ldc "No cached settings found." │ │ │ │ - // 78: astore_2 │ │ │ │ - // 79: aload_2 │ │ │ │ - // 80: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 83: aconst_null │ │ │ │ - // 84: astore_2 │ │ │ │ - // 85: goto 66 │ │ │ │ - // 88: astore_2 │ │ │ │ - // 89: iconst_0 │ │ │ │ - // 90: istore 5 │ │ │ │ - // 92: aconst_null │ │ │ │ - // 93: astore_3 │ │ │ │ - // 94: ldc "Failed to fetch cached settings" │ │ │ │ - // 96: astore 4 │ │ │ │ - // 98: aload 4 │ │ │ │ - // 100: aload_2 │ │ │ │ - // 101: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 104: aload_3 │ │ │ │ - // 105: ldc "Error while closing settings cache file." │ │ │ │ - // 107: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 110: aconst_null │ │ │ │ - // 111: astore_2 │ │ │ │ - // 112: goto 74 │ │ │ │ - // 115: astore_2 │ │ │ │ - // 116: aload_1 │ │ │ │ - // 117: ldc "Error while closing settings cache file." │ │ │ │ - // 119: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 122: aload_2 │ │ │ │ - // 123: athrow │ │ │ │ - // 124: astore_2 │ │ │ │ - // 125: aload_3 │ │ │ │ - // 126: astore_1 │ │ │ │ - // 127: goto 116 │ │ │ │ - // 130: astore_2 │ │ │ │ - // 131: goto 94 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 9 12 88 94 Ljava/lang/Exception; │ │ │ │ - // 9 12 115 116 Any │ │ │ │ - // 13 16 88 94 Ljava/lang/Exception; │ │ │ │ - // 13 16 115 116 Any │ │ │ │ - // 23 28 88 94 Ljava/lang/Exception; │ │ │ │ - // 23 28 115 116 Any │ │ │ │ - // 28 32 88 94 Ljava/lang/Exception; │ │ │ │ - // 28 32 115 116 Any │ │ │ │ - // 39 42 88 94 Ljava/lang/Exception; │ │ │ │ - // 39 42 115 116 Any │ │ │ │ - // 44 48 88 94 Ljava/lang/Exception; │ │ │ │ - // 44 48 115 116 Any │ │ │ │ - // 48 52 130 134 Ljava/lang/Exception; │ │ │ │ - // 48 52 124 130 Any │ │ │ │ - // 54 57 130 134 Ljava/lang/Exception; │ │ │ │ - // 54 57 124 130 Any │ │ │ │ - // 59 64 130 134 Ljava/lang/Exception; │ │ │ │ - // 59 64 124 130 Any │ │ │ │ - // 79 83 88 94 Ljava/lang/Exception; │ │ │ │ - // 79 83 115 116 Any │ │ │ │ - // 100 104 124 130 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IndexOutOfBoundsException: Index: 78, Size: 78 │ │ │ │ - // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ - // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ - // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ - } │ │ │ │ + private /* synthetic */ Crashlytics a; │ │ │ │ │ │ │ │ - public void a(final long p0, final JSONObject p1) { │ │ │ │ - // │ │ │ │ - // This method could not be decompiled. │ │ │ │ - // │ │ │ │ - // Original Bytecode: │ │ │ │ - // │ │ │ │ - // 2: astore 4 │ │ │ │ - // 4: aload 4 │ │ │ │ - // 6: invokestatic com/crashlytics/android/aB.c:(Ljava/lang/String;)V │ │ │ │ - // 9: aload_3 │ │ │ │ - // 10: ifnull 92 │ │ │ │ - // 13: aconst_null │ │ │ │ - // 14: astore 5 │ │ │ │ - // 16: ldc "expires_at" │ │ │ │ - // 18: astore 4 │ │ │ │ - // 20: aload_3 │ │ │ │ - // 21: aload 4 │ │ │ │ - // 23: lload_1 │ │ │ │ - // 24: invokevirtual org/json/JSONObject.put:(Ljava/lang/String;J)Lorg/json/JSONObject; │ │ │ │ - // 27: pop │ │ │ │ - // 28: new Ljava/io/FileWriter; │ │ │ │ - // 31: astore 6 │ │ │ │ - // 33: new Ljava/io/File; │ │ │ │ - // 36: astore 4 │ │ │ │ - // 38: invokestatic com/crashlytics/android/Crashlytics.j:()Ljava/io/File; │ │ │ │ - // 41: astore 7 │ │ │ │ - // 43: ldc "com.crashlytics.settings.json" │ │ │ │ - // 45: astore 8 │ │ │ │ - // 47: aload 4 │ │ │ │ - // 49: aload 7 │ │ │ │ - // 51: aload 8 │ │ │ │ - // 53: invokespecial java/io/File.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ - // 56: aload 6 │ │ │ │ - // 58: aload 4 │ │ │ │ - // 60: invokespecial java/io/FileWriter.:(Ljava/io/File;)V │ │ │ │ - // 63: aload_3 │ │ │ │ - // 64: invokevirtual org/json/JSONObject.toString:()Ljava/lang/String; │ │ │ │ - // 67: astore 4 │ │ │ │ - // 69: aload 6 │ │ │ │ - // 71: aload 4 │ │ │ │ - // 73: invokevirtual java/io/FileWriter.write:(Ljava/lang/String;)V │ │ │ │ - // 76: aload 6 │ │ │ │ - // 78: invokevirtual java/io/FileWriter.flush:()V │ │ │ │ - // 81: ldc "Failed to close settings writer." │ │ │ │ - // 83: astore 4 │ │ │ │ - // 85: aload 6 │ │ │ │ - // 87: aload 4 │ │ │ │ - // 89: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 92: return │ │ │ │ - // 93: astore 4 │ │ │ │ - // 95: aconst_null │ │ │ │ - // 96: astore 6 │ │ │ │ - // 98: ldc "Failed to cache settings" │ │ │ │ - // 100: astore 5 │ │ │ │ - // 102: aload 5 │ │ │ │ - // 104: aload 4 │ │ │ │ - // 106: invokestatic com/crashlytics/android/aB.a:(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ - // 109: ldc "Failed to close settings writer." │ │ │ │ - // 111: astore 4 │ │ │ │ - // 113: aload 6 │ │ │ │ - // 115: aload 4 │ │ │ │ - // 117: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 120: goto 92 │ │ │ │ - // 123: astore 4 │ │ │ │ - // 125: aload 5 │ │ │ │ - // 127: ldc "Failed to close settings writer." │ │ │ │ - // 129: invokestatic com/crashlytics/android/aB.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ - // 132: aload 4 │ │ │ │ - // 134: athrow │ │ │ │ - // 135: astore 4 │ │ │ │ - // 137: aload 6 │ │ │ │ - // 139: astore 5 │ │ │ │ - // 141: goto 125 │ │ │ │ - // 144: astore 4 │ │ │ │ - // 146: goto 98 │ │ │ │ - // Exceptions: │ │ │ │ - // Try Handler │ │ │ │ - // Start End Start End Type │ │ │ │ - // ----- ----- ----- ----- --------------------- │ │ │ │ - // 23 28 93 98 Ljava/lang/Exception; │ │ │ │ - // 23 28 123 125 Any │ │ │ │ - // 28 31 93 98 Ljava/lang/Exception; │ │ │ │ - // 28 31 123 125 Any │ │ │ │ - // 33 36 93 98 Ljava/lang/Exception; │ │ │ │ - // 33 36 123 125 Any │ │ │ │ - // 38 41 93 98 Ljava/lang/Exception; │ │ │ │ - // 38 41 123 125 Any │ │ │ │ - // 51 56 93 98 Ljava/lang/Exception; │ │ │ │ - // 51 56 123 125 Any │ │ │ │ - // 58 63 93 98 Ljava/lang/Exception; │ │ │ │ - // 58 63 123 125 Any │ │ │ │ - // 63 67 144 149 Ljava/lang/Exception; │ │ │ │ - // 63 67 135 144 Any │ │ │ │ - // 71 76 144 149 Ljava/lang/Exception; │ │ │ │ - // 71 76 135 144 Any │ │ │ │ - // 76 81 144 149 Ljava/lang/Exception; │ │ │ │ - // 76 81 135 144 Any │ │ │ │ - // 104 109 135 144 Any │ │ │ │ - // │ │ │ │ - // The error that occurred was: │ │ │ │ - // │ │ │ │ - // java.lang.IllegalStateException: Expression is linked from several locations: Label_0092: │ │ │ │ - // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ - // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ - // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ - // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ - // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ - // │ │ │ │ - throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + m(final Crashlytics a) { │ │ │ │ + this.a = a; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/n.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,61 +1,11 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.IOException; │ │ │ │ -import java.io.File; │ │ │ │ -import java.io.FilenameFilter; │ │ │ │ -import java.io.FileOutputStream; │ │ │ │ +import com.crashlytics.android.internal.aX; │ │ │ │ +import com.crashlytics.android.internal.aU; │ │ │ │ │ │ │ │ -final class n extends FileOutputStream │ │ │ │ +final class n implements aU │ │ │ │ { │ │ │ │ - public static final FilenameFilter a; │ │ │ │ - private final String b; │ │ │ │ - private File c; │ │ │ │ - private boolean d; │ │ │ │ - │ │ │ │ - static { │ │ │ │ - a = (FilenameFilter)new o(); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public n(final File file, final String s) { │ │ │ │ - super(new File(file, s + ".cls_temp")); │ │ │ │ - this.d = false; │ │ │ │ - this.b = file + File.separator + s; │ │ │ │ - this.c = new File(this.b + ".cls_temp"); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a() { │ │ │ │ - if (!this.d) { │ │ │ │ - this.d = true; │ │ │ │ - super.flush(); │ │ │ │ - super.close(); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void close() { │ │ │ │ - final File file; │ │ │ │ - Label_0107: { │ │ │ │ - synchronized (this) { │ │ │ │ - if (!this.d) { │ │ │ │ - this.d = true; │ │ │ │ - super.flush(); │ │ │ │ - super.close(); │ │ │ │ - file = new File(this.b + ".cls"); │ │ │ │ - if (!this.c.renameTo(file)) { │ │ │ │ - break Label_0107; │ │ │ │ - } │ │ │ │ - this.c = null; │ │ │ │ - } │ │ │ │ - return; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - String s = ""; │ │ │ │ - if (file.exists()) { │ │ │ │ - s = " (target already exists)"; │ │ │ │ - } │ │ │ │ - else if (!this.c.exists()) { │ │ │ │ - s = " (source does not exist)"; │ │ │ │ - } │ │ │ │ - throw new IOException("Could not rename temp file: " + this.c + " -> " + file + s); │ │ │ │ + n(final Crashlytics crashlytics) { │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/o.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,12 +1,11 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.File; │ │ │ │ -import java.io.FilenameFilter; │ │ │ │ +import com.crashlytics.android.internal.aX; │ │ │ │ +import com.crashlytics.android.internal.aU; │ │ │ │ │ │ │ │ -final class o implements FilenameFilter │ │ │ │ +final class o implements aU │ │ │ │ { │ │ │ │ - public final boolean accept(final File file, final String s) { │ │ │ │ - return s.endsWith(".cls_temp"); │ │ │ │ + o(final Crashlytics crashlytics) { │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/p.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,274 +1,52 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.InputStream; │ │ │ │ -import java.io.OutputStream; │ │ │ │ -import java.io.Flushable; │ │ │ │ +import android.content.DialogInterface$OnClickListener; │ │ │ │ +import android.view.View; │ │ │ │ +import android.widget.ScrollView; │ │ │ │ +import android.widget.TextView; │ │ │ │ +import android.content.Context; │ │ │ │ +import android.app.AlertDialog$Builder; │ │ │ │ +import com.crashlytics.android.internal.aQ; │ │ │ │ +import android.app.Activity; │ │ │ │ │ │ │ │ -final class p implements Flushable │ │ │ │ +final class p implements Runnable │ │ │ │ { │ │ │ │ - private final byte[] a; │ │ │ │ - private final int b; │ │ │ │ - private int c; │ │ │ │ - private final OutputStream d; │ │ │ │ - │ │ │ │ - private p(final OutputStream d, final byte[] a) { │ │ │ │ - this.d = d; │ │ │ │ + final /* synthetic */ u a; │ │ │ │ + final /* synthetic */ Crashlytics b; │ │ │ │ + private /* synthetic */ Activity c; │ │ │ │ + private /* synthetic */ X d; │ │ │ │ + private /* synthetic */ aQ e; │ │ │ │ + │ │ │ │ + p(final Crashlytics b, final Activity c, final u a, final X d, final aQ e) { │ │ │ │ + this.b = b; │ │ │ │ + this.c = c; │ │ │ │ this.a = a; │ │ │ │ - this.c = 0; │ │ │ │ - this.b = a.length; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int a(final int n) { │ │ │ │ - return c(aD.a(n, 0)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static p a(final OutputStream outputStream) { │ │ │ │ - return new p(outputStream, new byte[4096]); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a() { │ │ │ │ - if (this.d == null) { │ │ │ │ - throw new q(); │ │ │ │ - } │ │ │ │ - this.d.write(this.a, 0, this.c); │ │ │ │ - this.c = 0; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void a(long n) { │ │ │ │ - while ((0xFFFFFF80 & n) != 0x0L) { │ │ │ │ - this.d(((int)n & 0x7F) | 0x80); │ │ │ │ - n >>>= 7; │ │ │ │ - } │ │ │ │ - this.d((int)n); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int b(final int n, final float n2) { │ │ │ │ - return a(1) + 4; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int b(final int n, final long n2) { │ │ │ │ - final long n3 = 0L; │ │ │ │ - final int a = a(n); │ │ │ │ - int n4; │ │ │ │ - if ((0xFFFFFF80 & n2) == n3) { │ │ │ │ - n4 = 1; │ │ │ │ - } │ │ │ │ - else if ((0xFFFFFFFFFFFFC000L & n2) == n3) { │ │ │ │ - n4 = 2; │ │ │ │ - } │ │ │ │ - else if ((0xFFE00000L & n2) == n3) { │ │ │ │ - n4 = 3; │ │ │ │ - } │ │ │ │ - else if ((0xF0000000L & n2) == n3) { │ │ │ │ - n4 = 4; │ │ │ │ - } │ │ │ │ - else if ((0xFFFFFFF800000000L & n2) == n3) { │ │ │ │ - n4 = 5; │ │ │ │ - } │ │ │ │ - else if ((0xFFFFFC0000000000L & n2) == n3) { │ │ │ │ - n4 = 6; │ │ │ │ - } │ │ │ │ - else if ((0xFFFE000000000000L & n2) == n3) { │ │ │ │ - n4 = 7; │ │ │ │ - } │ │ │ │ - else if ((0xFF00000000000000L & n2) == n3) { │ │ │ │ - n4 = 8; │ │ │ │ - } │ │ │ │ - else if ((Long.MIN_VALUE & n2) == n3) { │ │ │ │ - n4 = 9; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n4 = 10; │ │ │ │ - } │ │ │ │ - return n4 + a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int b(final int n, final k k) { │ │ │ │ - return a(n) + (c(k.a()) + k.a()); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int b(final int n, final boolean b) { │ │ │ │ - return a(n) + 1; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int c(final int n) { │ │ │ │ - int n2; │ │ │ │ - if ((n & 0xFFFFFF80) == 0x0) { │ │ │ │ - n2 = 1; │ │ │ │ - } │ │ │ │ - else if ((n & 0xFFFFC000) == 0x0) { │ │ │ │ - n2 = 2; │ │ │ │ - } │ │ │ │ - else if ((0xFFE00000 & n) == 0x0) { │ │ │ │ - n2 = 3; │ │ │ │ - } │ │ │ │ - else if ((0xF0000000 & n) == 0x0) { │ │ │ │ - n2 = 4; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - n2 = 5; │ │ │ │ - } │ │ │ │ - return n2; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int d(final int n, final int n2) { │ │ │ │ - return a(n) + c(n2); │ │ │ │ - } │ │ │ │ - │ │ │ │ - private void d(final int n) { │ │ │ │ - final byte b = (byte)n; │ │ │ │ - if (this.c == this.b) { │ │ │ │ - this.a(); │ │ │ │ - } │ │ │ │ - this.a[this.c++] = b; │ │ │ │ - } │ │ │ │ - │ │ │ │ - private static int e(final int n) { │ │ │ │ - return n << 1 ^ n >> 31; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int e(final int n, final int n2) { │ │ │ │ - final int a = a(n); │ │ │ │ - int c; │ │ │ │ - if (n2 >= 0) { │ │ │ │ - c = c(n2); │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - c = 10; │ │ │ │ - } │ │ │ │ - return c + a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public static int f(final int n, final int n2) { │ │ │ │ - return a(2) + c(e(n2)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final int n, final float n2) { │ │ │ │ - this.g(1, 5); │ │ │ │ - final int floatToRawIntBits = Float.floatToRawIntBits(n2); │ │ │ │ - this.d(floatToRawIntBits & 0xFF); │ │ │ │ - this.d(floatToRawIntBits >> 8 & 0xFF); │ │ │ │ - this.d(floatToRawIntBits >> 16 & 0xFF); │ │ │ │ - this.d(floatToRawIntBits >>> 24); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final int n, final int n2) { │ │ │ │ - this.g(n, 0); │ │ │ │ - this.b(n2); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final int n, final long n2) { │ │ │ │ - this.g(n, 0); │ │ │ │ - this.a(n2); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final int n, final k k) { │ │ │ │ - this.g(n, 2); │ │ │ │ - this.b(k.a()); │ │ │ │ - final int a = k.a(); │ │ │ │ - if (this.b - this.c >= a) { │ │ │ │ - k.a(this.a, 0, this.c, a); │ │ │ │ - this.c += a; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - final int n2 = this.b - this.c; │ │ │ │ - k.a(this.a, 0, this.c, n2); │ │ │ │ - final int n3 = n2 + 0; │ │ │ │ - int i = a - n2; │ │ │ │ - this.c = this.b; │ │ │ │ - this.a(); │ │ │ │ - if (i <= this.b) { │ │ │ │ - k.a(this.a, n3, 0, i); │ │ │ │ - this.c = i; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - final InputStream b = k.b(); │ │ │ │ - if (n3 != b.skip(n3)) { │ │ │ │ - throw new IllegalStateException("Skip failed."); │ │ │ │ - } │ │ │ │ - while (i > 0) { │ │ │ │ - final int min = Math.min(i, this.b); │ │ │ │ - final int read = b.read(this.a, 0, min); │ │ │ │ - if (read != min) { │ │ │ │ - throw new IllegalStateException("Read failed."); │ │ │ │ - } │ │ │ │ - this.d.write(this.a, 0, read); │ │ │ │ - i -= read; │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final int n, final String s) { │ │ │ │ - this.g(1, 2); │ │ │ │ - final byte[] bytes = s.getBytes("UTF-8"); │ │ │ │ - this.b(bytes.length); │ │ │ │ - this.a(bytes); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final int n, final boolean b) { │ │ │ │ - int n2 = 0; │ │ │ │ - this.g(n, 0); │ │ │ │ - if (b) { │ │ │ │ - n2 = 1; │ │ │ │ - } │ │ │ │ - this.d(n2); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void a(final byte[] array) { │ │ │ │ - final int length = array.length; │ │ │ │ - if (this.b - this.c >= length) { │ │ │ │ - System.arraycopy(array, 0, this.a, this.c, length); │ │ │ │ - this.c += length; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - final int n = this.b - this.c; │ │ │ │ - System.arraycopy(array, 0, this.a, this.c, n); │ │ │ │ - final int n2 = n + 0; │ │ │ │ - final int c = length - n; │ │ │ │ - this.c = this.b; │ │ │ │ - this.a(); │ │ │ │ - if (c <= this.b) { │ │ │ │ - System.arraycopy(array, n2, this.a, 0, c); │ │ │ │ - this.c = c; │ │ │ │ - } │ │ │ │ - else { │ │ │ │ - this.d.write(array, n2, c); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void b(int n) { │ │ │ │ - while ((n & 0xFFFFFF80) != 0x0) { │ │ │ │ - this.d((n & 0x7F) | 0x80); │ │ │ │ - n >>>= 7; │ │ │ │ - } │ │ │ │ - this.d(n); │ │ │ │ + this.d = d; │ │ │ │ + this.e = e; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void b(final int n, final int n2) { │ │ │ │ - this.g(n, 0); │ │ │ │ - if (n2 >= 0) { │ │ │ │ - this.b(n2); │ │ │ │ + public final void run() { │ │ │ │ + final AlertDialog$Builder alertDialog$Builder = new AlertDialog$Builder((Context)this.c); │ │ │ │ + final q q = new q(this); │ │ │ │ + final float density = this.c.getResources().getDisplayMetrics().density; │ │ │ │ + final int a = Crashlytics.a(this.b, density, 5); │ │ │ │ + final TextView textView = new TextView((Context)this.c); │ │ │ │ + textView.setAutoLinkMask(15); │ │ │ │ + textView.setText((CharSequence)this.d.b()); │ │ │ │ + textView.setTextAppearance((Context)this.c, 16973892); │ │ │ │ + textView.setPadding(a, a, a, a); │ │ │ │ + textView.setFocusable(false); │ │ │ │ + final ScrollView view = new ScrollView((Context)this.c); │ │ │ │ + view.setPadding(Crashlytics.a(this.b, density, 14), Crashlytics.a(this.b, density, 2), Crashlytics.a(this.b, density, 10), Crashlytics.a(this.b, density, 12)); │ │ │ │ + view.addView((View)textView); │ │ │ │ + alertDialog$Builder.setView((View)view).setTitle((CharSequence)this.d.a()).setCancelable(false).setNeutralButton((CharSequence)this.d.c(), (DialogInterface$OnClickListener)q); │ │ │ │ + if (this.e.d) { │ │ │ │ + alertDialog$Builder.setNegativeButton((CharSequence)this.d.e(), (DialogInterface$OnClickListener)new r(this)); │ │ │ │ } │ │ │ │ - else { │ │ │ │ - this.a((long)n2); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void c(final int n, final int n2) { │ │ │ │ - this.g(2, 0); │ │ │ │ - this.b(e(n2)); │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void flush() { │ │ │ │ - if (this.d != null) { │ │ │ │ - this.a(); │ │ │ │ + if (this.e.f) { │ │ │ │ + alertDialog$Builder.setPositiveButton((CharSequence)this.d.d(), (DialogInterface$OnClickListener)new s(this)); │ │ │ │ } │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void g(final int n, final int n2) { │ │ │ │ - this.b(aD.a(n, n2)); │ │ │ │ + alertDialog$Builder.show(); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/q.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,13 +1,19 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import java.io.IOException; │ │ │ │ +import android.content.DialogInterface; │ │ │ │ +import android.content.DialogInterface$OnClickListener; │ │ │ │ │ │ │ │ -final class q extends IOException │ │ │ │ +final class q implements DialogInterface$OnClickListener │ │ │ │ { │ │ │ │ - private static final long serialVersionUID = -6947486886997889499L; │ │ │ │ + private /* synthetic */ p a; │ │ │ │ │ │ │ │ - q() { │ │ │ │ - super("CodedOutputStream was writing to a flat byte array and ran out of space."); │ │ │ │ + q(final p a) { │ │ │ │ + this.a = a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void onClick(final DialogInterface dialogInterface, final int n) { │ │ │ │ + this.a.a.a(true); │ │ │ │ + dialogInterface.dismiss(); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/r.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,28 +1,19 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.os.AsyncTask; │ │ │ │ +import android.content.DialogInterface; │ │ │ │ +import android.content.DialogInterface$OnClickListener; │ │ │ │ │ │ │ │ -final class r extends AsyncTask │ │ │ │ +final class r implements DialogInterface$OnClickListener │ │ │ │ { │ │ │ │ - private /* synthetic */ long a; │ │ │ │ - private /* synthetic */ CrashTest b; │ │ │ │ + private /* synthetic */ p a; │ │ │ │ │ │ │ │ - r(final CrashTest b, final long a) { │ │ │ │ - this.b = b; │ │ │ │ + r(final p a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ │ │ │ │ - private Void a() { │ │ │ │ - try { │ │ │ │ - final long a = this.a; │ │ │ │ - try { │ │ │ │ - Thread.sleep(a); │ │ │ │ - this.b.throwRuntimeException("Background thread crash"); │ │ │ │ - return null; │ │ │ │ - } │ │ │ │ - catch (InterruptedException ex) {} │ │ │ │ - } │ │ │ │ - catch (InterruptedException ex2) {} │ │ │ │ + public final void onClick(final DialogInterface dialogInterface, final int n) { │ │ │ │ + this.a.a.a(false); │ │ │ │ + dialogInterface.dismiss(); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/s.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,11 +1,22 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class s implements D │ │ │ │ +import android.content.DialogInterface; │ │ │ │ +import android.content.DialogInterface$OnClickListener; │ │ │ │ + │ │ │ │ +final class s implements DialogInterface$OnClickListener │ │ │ │ { │ │ │ │ - private /* synthetic */ Crashlytics a; │ │ │ │ + private /* synthetic */ p a; │ │ │ │ │ │ │ │ - s(final Crashlytics a) { │ │ │ │ + s(final p a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ + │ │ │ │ + public final void onClick(final DialogInterface dialogInterface, final int n) { │ │ │ │ + final boolean b = true; │ │ │ │ + final Crashlytics b2 = this.a.b; │ │ │ │ + Crashlytics.a(b); │ │ │ │ + this.a.a.a(b); │ │ │ │ + dialogInterface.dismiss(); │ │ │ │ + } │ │ │ │ } │ │ ├── com/crashlytics/android/t.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,16 +1,130 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.app.Activity; │ │ │ │ +import java.util.concurrent.CountDownLatch; │ │ │ │ import android.content.Context; │ │ │ │ +import com.crashlytics.android.internal.aa; │ │ │ │ │ │ │ │ -final class t implements D │ │ │ │ +final class t extends aa │ │ │ │ { │ │ │ │ private /* synthetic */ Context a; │ │ │ │ - private /* synthetic */ Crashlytics b; │ │ │ │ + private /* synthetic */ float b; │ │ │ │ + private /* synthetic */ CountDownLatch c; │ │ │ │ + private /* synthetic */ Crashlytics d; │ │ │ │ │ │ │ │ - t(final Crashlytics b, final Context a) { │ │ │ │ - this.b = b; │ │ │ │ + t(final Crashlytics d, final Context a, final float b, final CountDownLatch c) { │ │ │ │ + this.d = d; │ │ │ │ this.a = a; │ │ │ │ + this.b = b; │ │ │ │ + this.c = c; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void a() { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: getfield com/crashlytics/android/t.d:Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 4: astore_1 │ │ │ │ + // 5: aload_0 │ │ │ │ + // 6: getfield com/crashlytics/android/t.a:Landroid/content/Context; │ │ │ │ + // 9: astore_2 │ │ │ │ + // 10: aload_0 │ │ │ │ + // 11: getfield com/crashlytics/android/t.b:F │ │ │ │ + // 14: fstore_3 │ │ │ │ + // 15: aload_1 │ │ │ │ + // 16: aload_2 │ │ │ │ + // 17: fload_3 │ │ │ │ + // 18: invokestatic com/crashlytics/android/Crashlytics.a:(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;F)Z │ │ │ │ + // 21: istore 4 │ │ │ │ + // 23: iload 4 │ │ │ │ + // 25: ifeq 42 │ │ │ │ + // 28: aload_0 │ │ │ │ + // 29: getfield com/crashlytics/android/t.d:Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 32: astore_1 │ │ │ │ + // 33: aload_1 │ │ │ │ + // 34: invokestatic com/crashlytics/android/Crashlytics.a:(Lcom/crashlytics/android/Crashlytics;)Lcom/crashlytics/android/v; │ │ │ │ + // 37: astore_1 │ │ │ │ + // 38: aload_1 │ │ │ │ + // 39: invokevirtual com/crashlytics/android/v.e:()V │ │ │ │ + // 42: aload_0 │ │ │ │ + // 43: getfield com/crashlytics/android/t.c:Ljava/util/concurrent/CountDownLatch; │ │ │ │ + // 46: astore_1 │ │ │ │ + // 47: aload_1 │ │ │ │ + // 48: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ + // 51: return │ │ │ │ + // 52: astore_1 │ │ │ │ + // 53: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 56: astore_2 │ │ │ │ + // 57: aload_2 │ │ │ │ + // 58: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 61: astore_2 │ │ │ │ + // 62: ldc "Crashlytics" │ │ │ │ + // 64: astore 5 │ │ │ │ + // 66: ldc "Problem encountered during Crashlytics initialization." │ │ │ │ + // 68: astore 6 │ │ │ │ + // 70: aload_2 │ │ │ │ + // 71: aload 5 │ │ │ │ + // 73: aload 6 │ │ │ │ + // 75: aload_1 │ │ │ │ + // 76: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 81: aload_0 │ │ │ │ + // 82: getfield com/crashlytics/android/t.c:Ljava/util/concurrent/CountDownLatch; │ │ │ │ + // 85: astore_1 │ │ │ │ + // 86: aload_1 │ │ │ │ + // 87: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ + // 90: goto 51 │ │ │ │ + // 93: astore_1 │ │ │ │ + // 94: aload_0 │ │ │ │ + // 95: getfield com/crashlytics/android/t.c:Ljava/util/concurrent/CountDownLatch; │ │ │ │ + // 98: invokevirtual java/util/concurrent/CountDownLatch.countDown:()V │ │ │ │ + // 101: aload_1 │ │ │ │ + // 102: athrow │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 0 4 52 93 Ljava/lang/Exception; │ │ │ │ + // 0 4 93 103 Any │ │ │ │ + // 5 9 52 93 Ljava/lang/Exception; │ │ │ │ + // 5 9 93 103 Any │ │ │ │ + // 10 14 52 93 Ljava/lang/Exception; │ │ │ │ + // 10 14 93 103 Any │ │ │ │ + // 17 21 52 93 Ljava/lang/Exception; │ │ │ │ + // 17 21 93 103 Any │ │ │ │ + // 28 32 52 93 Ljava/lang/Exception; │ │ │ │ + // 28 32 93 103 Any │ │ │ │ + // 33 37 52 93 Ljava/lang/Exception; │ │ │ │ + // 33 37 93 103 Any │ │ │ │ + // 38 42 52 93 Ljava/lang/Exception; │ │ │ │ + // 38 42 93 103 Any │ │ │ │ + // 53 56 93 103 Any │ │ │ │ + // 57 61 93 103 Any │ │ │ │ + // 75 81 93 103 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 57, Size: 57 │ │ │ │ + // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ + // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/u.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,8 +1,35 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class u implements D │ │ │ │ +import java.util.concurrent.CountDownLatch; │ │ │ │ + │ │ │ │ +final class u │ │ │ │ { │ │ │ │ - u(final Crashlytics crashlytics) { │ │ │ │ + private boolean a; │ │ │ │ + private final CountDownLatch b; │ │ │ │ + │ │ │ │ + private u(final Crashlytics crashlytics) { │ │ │ │ + this.a = false; │ │ │ │ + this.b = new CountDownLatch(1); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void a(final boolean a) { │ │ │ │ + this.a = a; │ │ │ │ + this.b.countDown(); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final boolean a() { │ │ │ │ + return this.a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void b() { │ │ │ │ + try { │ │ │ │ + final CountDownLatch b = this.b; │ │ │ │ + try { │ │ │ │ + b.await(); │ │ │ │ + } │ │ │ │ + catch (InterruptedException ex) {} │ │ │ │ + } │ │ │ │ + catch (InterruptedException ex2) {} │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/v.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,8 +1,3996 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -final class v implements D │ │ │ │ +import com.crashlytics.android.internal.r; │ │ │ │ +import com.crashlytics.android.internal.q; │ │ │ │ +import java.util.UUID; │ │ │ │ +import java.util.TreeMap; │ │ │ │ +import java.io.Closeable; │ │ │ │ +import java.util.LinkedList; │ │ │ │ +import android.os.Environment; │ │ │ │ +import java.io.Writer; │ │ │ │ +import java.io.OutputStream; │ │ │ │ +import java.util.Date; │ │ │ │ +import java.util.Arrays; │ │ │ │ +import com.crashlytics.android.internal.ab; │ │ │ │ +import java.util.concurrent.Future; │ │ │ │ +import java.util.concurrent.RejectedExecutionException; │ │ │ │ +import java.util.concurrent.Callable; │ │ │ │ +import java.io.IOException; │ │ │ │ +import com.crashlytics.android.internal.au; │ │ │ │ +import java.util.Iterator; │ │ │ │ +import com.crashlytics.android.internal.ap; │ │ │ │ +import android.content.IntentFilter; │ │ │ │ +import java.util.Locale; │ │ │ │ +import com.crashlytics.android.internal.ah; │ │ │ │ +import java.util.Collections; │ │ │ │ +import java.util.List; │ │ │ │ +import com.crashlytics.android.internal.aq; │ │ │ │ +import android.app.ActivityManager$RunningAppProcessInfo; │ │ │ │ +import java.util.concurrent.ExecutorService; │ │ │ │ +import android.content.BroadcastReceiver; │ │ │ │ +import java.io.File; │ │ │ │ +import java.util.concurrent.atomic.AtomicBoolean; │ │ │ │ +import java.util.concurrent.atomic.AtomicInteger; │ │ │ │ +import java.util.Map; │ │ │ │ +import java.util.regex.Pattern; │ │ │ │ +import java.util.Comparator; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ + │ │ │ │ +final class v implements UncaughtExceptionHandler │ │ │ │ { │ │ │ │ - v(final Crashlytics crashlytics) { │ │ │ │ + static final FilenameFilter a; │ │ │ │ + private static Comparator b; │ │ │ │ + private static Comparator c; │ │ │ │ + private static final Pattern d; │ │ │ │ + private static final Map e; │ │ │ │ + private static final d f; │ │ │ │ + private final AtomicInteger g; │ │ │ │ + private final AtomicBoolean h; │ │ │ │ + private final int i; │ │ │ │ + private final UncaughtExceptionHandler j; │ │ │ │ + private final File k; │ │ │ │ + private final File l; │ │ │ │ + private final AtomicBoolean m; │ │ │ │ + private final String n; │ │ │ │ + private final BroadcastReceiver o; │ │ │ │ + private final BroadcastReceiver p; │ │ │ │ + private final d q; │ │ │ │ + private final d r; │ │ │ │ + private final ExecutorService s; │ │ │ │ + private ActivityManager$RunningAppProcessInfo t; │ │ │ │ + private aq u; │ │ │ │ + private boolean v; │ │ │ │ + private Thread[] w; │ │ │ │ + private List x; │ │ │ │ + private StackTraceElement[] y; │ │ │ │ + │ │ │ │ + static { │ │ │ │ + a = (FilenameFilter)new w(); │ │ │ │ + v.b = (Comparator)new H(); │ │ │ │ + v.c = (Comparator)new J(); │ │ │ │ + new K(); │ │ │ │ + d = Pattern.compile("([\\d|A-Z|a-z]{12}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{12}).+"); │ │ │ │ + e = Collections.singletonMap("X-CRASHLYTICS-SEND-FLAGS", "1"); │ │ │ │ + f = com.crashlytics.android.d.a("0"); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public v(final UncaughtExceptionHandler uncaughtExceptionHandler, final CrashlyticsListener crashlyticsListener, final String s) { │ │ │ │ + this(uncaughtExceptionHandler, crashlyticsListener, ah.a("Crashlytics Exception Handler"), s); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private v(final UncaughtExceptionHandler j, final CrashlyticsListener crashlyticsListener, final ExecutorService s, final String s2) { │ │ │ │ + final int n = 1; │ │ │ │ + this.g = new AtomicInteger(0); │ │ │ │ + this.h = new AtomicBoolean(false); │ │ │ │ + this.j = j; │ │ │ │ + this.s = s; │ │ │ │ + this.m = new AtomicBoolean(false); │ │ │ │ + this.k = com.crashlytics.android.internal.v.a().h(); │ │ │ │ + this.l = new File(this.k, "initialization_marker"); │ │ │ │ + final Locale us = Locale.US; │ │ │ │ + final Object[] array = new Object[n]; │ │ │ │ + array[0] = Crashlytics.getInstance().getVersion(); │ │ │ │ + this.n = String.format(us, "Crashlytics Android SDK/%s", array); │ │ │ │ + this.i = 8; │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Checking for previous crash marker."); │ │ │ │ + final File file = new File(com.crashlytics.android.internal.v.a().h(), "crash_marker"); │ │ │ │ + Label_0230: │ │ │ │ + while (true) { │ │ │ │ + if (!file.exists()) { │ │ │ │ + break Label_0230; │ │ │ │ + } │ │ │ │ + file.delete(); │ │ │ │ + if (crashlyticsListener == null) { │ │ │ │ + break Label_0230; │ │ │ │ + } │ │ │ │ + while (true) { │ │ │ │ + while (true) { │ │ │ │ + try { │ │ │ │ + crashlyticsListener.crashlyticsDidDetectCrashDuringPreviousExecution(); │ │ │ │ + this.q = com.crashlytics.android.d.a(Crashlytics.d()); │ │ │ │ + if (s2 == null) { │ │ │ │ + final d a = null; │ │ │ │ + this.r = a; │ │ │ │ + this.p = (BroadcastReceiver)new L(this); │ │ │ │ + final IntentFilter intentFilter = new IntentFilter("android.intent.action.ACTION_POWER_CONNECTED"); │ │ │ │ + this.o = (BroadcastReceiver)new M(this); │ │ │ │ + final IntentFilter intentFilter2 = new IntentFilter("android.intent.action.ACTION_POWER_DISCONNECTED"); │ │ │ │ + Crashlytics.getInstance().getContext().registerReceiver(this.p, intentFilter); │ │ │ │ + Crashlytics.getInstance().getContext().registerReceiver(this.o, intentFilter2); │ │ │ │ + this.h.set(n != 0); │ │ │ │ + return; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Exception thrown by CrashlyticsListener while notifying of previous crash.", (Throwable)ex); │ │ │ │ + continue Label_0230; │ │ │ │ + } │ │ │ │ + final d a = com.crashlytics.android.d.a(s2.replace((CharSequence)"-", (CharSequence)"")); │ │ │ │ + continue; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static int a(final float n, final int n2, final boolean b, final int n3, final long n4, final long n5) { │ │ │ │ + return h.b(1, n) + 0 + h.f(2, n2) + h.b(3, b) + h.d(4, n3) + h.b(5, n4) + h.b(6, n5); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private int a(final int n, final d d, final d d2, final int n2, final long n3, final long n4, final boolean b, final Map map, final int n5, final d d3, final d d4) { │ │ │ │ + final int n6 = com.crashlytics.android.h.e(3, n) + (com.crashlytics.android.h.b(1, d) + 0); │ │ │ │ + int b2; │ │ │ │ + if (d2 == null) { │ │ │ │ + b2 = 0; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + b2 = com.crashlytics.android.h.b(4, d2); │ │ │ │ + } │ │ │ │ + final int n7 = b2 + n6 + com.crashlytics.android.h.d(5, n2) + com.crashlytics.android.h.b(6, n3) + com.crashlytics.android.h.b(7, n4) + com.crashlytics.android.h.b(10, b); │ │ │ │ + int n8; │ │ │ │ + if (map != null) { │ │ │ │ + final Iterator> iterator = map.entrySet().iterator(); │ │ │ │ + n8 = n7; │ │ │ │ + while (iterator.hasNext()) { │ │ │ │ + final Map.Entry entry = (Map.Entry)iterator.next(); │ │ │ │ + final int a = a(entry.getKey(), (String)entry.getValue()); │ │ │ │ + n8 += a + (com.crashlytics.android.h.a(11) + com.crashlytics.android.h.c(a)); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n8 = n7; │ │ │ │ + } │ │ │ │ + final int n9 = n8 + com.crashlytics.android.h.d(12, n5); │ │ │ │ + int b3; │ │ │ │ + if (d3 == null) { │ │ │ │ + b3 = 0; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + b3 = com.crashlytics.android.h.b(13, d3); │ │ │ │ + } │ │ │ │ + final int n10 = n9 + b3; │ │ │ │ + int b4; │ │ │ │ + if (d4 == null) { │ │ │ │ + b4 = 0; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + b4 = com.crashlytics.android.h.b(14, d4); │ │ │ │ + } │ │ │ │ + return b4 + n10; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static int a(final ap ap, final String s) { │ │ │ │ + return h.e(1, ap.f) + h.b(2, com.crashlytics.android.d.a(s)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static int a(final StackTraceElement stackTraceElement, final boolean b) { │ │ │ │ + final int n = 2; │ │ │ │ + final int n2 = 1; │ │ │ │ + int n3; │ │ │ │ + if (stackTraceElement.isNativeMethod()) { │ │ │ │ + n3 = h.b(n2, (long)Math.max(stackTraceElement.getLineNumber(), 0)) + 0; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n3 = h.b(n2, 0L) + 0; │ │ │ │ + } │ │ │ │ + int n4 = n3 + h.b(n, com.crashlytics.android.d.a(stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName())); │ │ │ │ + if (stackTraceElement.getFileName() != null) { │ │ │ │ + n4 += h.b(3, com.crashlytics.android.d.a(stackTraceElement.getFileName())); │ │ │ │ + } │ │ │ │ + int n5; │ │ │ │ + if (!stackTraceElement.isNativeMethod() && stackTraceElement.getLineNumber() > 0) { │ │ │ │ + n5 = n4 + h.b(4, (long)stackTraceElement.getLineNumber()); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n5 = n4; │ │ │ │ + } │ │ │ │ + final int n6 = 5; │ │ │ │ + int n7; │ │ │ │ + if (b) { │ │ │ │ + n7 = n; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n7 = 0; │ │ │ │ + } │ │ │ │ + return h.d(n6, n7) + n5; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static int a(final String s, String s2) { │ │ │ │ + final int b = h.b(1, com.crashlytics.android.d.a(s)); │ │ │ │ + final int n = 2; │ │ │ │ + if (s2 == null) { │ │ │ │ + s2 = ""; │ │ │ │ + } │ │ │ │ + return b + h.b(n, com.crashlytics.android.d.a(s2)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private int a(final Thread thread, final Throwable t, final Map map) { │ │ │ │ + final int n = 1; │ │ │ │ + final int b = this.b(thread, t); │ │ │ │ + final int n2 = b + (com.crashlytics.android.h.a(n) + com.crashlytics.android.h.c(b)) + 0; │ │ │ │ + int n3; │ │ │ │ + if (map != null) { │ │ │ │ + final Iterator> iterator = map.entrySet().iterator(); │ │ │ │ + n3 = n2; │ │ │ │ + while (iterator.hasNext()) { │ │ │ │ + final Map.Entry entry = (Map.Entry)iterator.next(); │ │ │ │ + final int a = a(entry.getKey(), (String)entry.getValue()); │ │ │ │ + n3 += a + (com.crashlytics.android.h.a(2) + com.crashlytics.android.h.c(a)); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n3 = n2; │ │ │ │ + } │ │ │ │ + if (this.t != null) { │ │ │ │ + final int n4 = 3; │ │ │ │ + int n5; │ │ │ │ + if (this.t.importance != 100) { │ │ │ │ + n5 = n; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + n5 = 0; │ │ │ │ + } │ │ │ │ + n3 += com.crashlytics.android.h.b(n4, (boolean)(n5 != 0)); │ │ │ │ + } │ │ │ │ + return com.crashlytics.android.h.d(4, Crashlytics.getInstance().getContext().getResources().getConfiguration().orientation) + n3; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private int a(final Thread thread, final StackTraceElement[] array, final int n, final boolean b) { │ │ │ │ + int n2 = com.crashlytics.android.h.d(2, n) + com.crashlytics.android.h.b(1, com.crashlytics.android.d.a(thread.getName())); │ │ │ │ + for (int length = array.length, i = 0; i < length; ++i) { │ │ │ │ + final int a = a(array[i], b); │ │ │ │ + n2 += a + (com.crashlytics.android.h.a(3) + com.crashlytics.android.h.c(a)); │ │ │ │ + } │ │ │ │ + return n2; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private int a(final Throwable t, final int n) { │ │ │ │ + final int n2 = 1; │ │ │ │ + int n3 = 0; │ │ │ │ + int n4 = com.crashlytics.android.h.b(n2, com.crashlytics.android.d.a(t.getClass().getName())) + 0; │ │ │ │ + final String localizedMessage = t.getLocalizedMessage(); │ │ │ │ + if (localizedMessage != null) { │ │ │ │ + n4 += com.crashlytics.android.h.b(3, com.crashlytics.android.d.a(localizedMessage)); │ │ │ │ + } │ │ │ │ + final StackTraceElement[] stackTrace = t.getStackTrace(); │ │ │ │ + int n5; │ │ │ │ + for (int length = stackTrace.length, i = 0; i < length; ++i, n4 = n5) { │ │ │ │ + final int a = a(stackTrace[i], n2 != 0); │ │ │ │ + n5 = a + (com.crashlytics.android.h.a(4) + com.crashlytics.android.h.c(a)) + n4; │ │ │ │ + } │ │ │ │ + Throwable t2 = t.getCause(); │ │ │ │ + if (t2 != null) { │ │ │ │ + if (n < 8) { │ │ │ │ + final int a2 = this.a(t2, n + 1); │ │ │ │ + n4 += a2 + (com.crashlytics.android.h.a(6) + com.crashlytics.android.h.c(a2)); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + while (t2 != null) { │ │ │ │ + t2 = t2.getCause(); │ │ │ │ + ++n3; │ │ │ │ + } │ │ │ │ + n4 += com.crashlytics.android.h.d(7, n3); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + return n4; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private d a(final aq aq) { │ │ │ │ + d a = null; │ │ │ │ + if (aq == null) { │ │ │ │ + a = null; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + final int[] array = { 0 }; │ │ │ │ + final byte[] array2 = new byte[aq.a()]; │ │ │ │ + try { │ │ │ │ + final y y = new y(this, array2, array); │ │ │ │ + try { │ │ │ │ + aq.a((au)y); │ │ │ │ + a = com.crashlytics.android.d.a(array2, 0, array[0]); │ │ │ │ + } │ │ │ │ + catch (IOException ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "A problem occurred while reading the Crashlytics log file.", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (IOException ex2) {} │ │ │ │ + } │ │ │ │ + return a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private Object a(final Callable callable) { │ │ │ │ + Object value = null; │ │ │ │ + try { │ │ │ │ + final Future submit = this.s.submit((Callable)callable); │ │ │ │ + try { │ │ │ │ + value = submit.get(); │ │ │ │ + return value; │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex2) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Executor is shut down because we're handling a fatal crash."); │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Failed to execute task.", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex3) {} │ │ │ │ + catch (Exception ex4) {} │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static String a(final File file) { │ │ │ │ + return file.getName().substring(0, 35); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private Future a(final Runnable runnable) { │ │ │ │ + try { │ │ │ │ + final ExecutorService s = this.s; │ │ │ │ + try { │ │ │ │ + final G g = new G(this, runnable); │ │ │ │ + final ExecutorService executorService = s; │ │ │ │ + try { │ │ │ │ + return executorService.submit((Runnable)g); │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Executor is shut down because we're handling a fatal crash."); │ │ │ │ + final Future submit = null; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex2) {} │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex3) {} │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static void a(final f f) { │ │ │ │ + if (f == null) { │ │ │ │ + return; │ │ │ │ + } │ │ │ │ + try { │ │ │ │ + f.a(); │ │ │ │ + } │ │ │ │ + catch (IOException ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Error closing session file stream in the presence of an exception", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final h h, final int n, final StackTraceElement stackTraceElement, final boolean b) { │ │ │ │ + int n2 = 4; │ │ │ │ + final int n3 = 2; │ │ │ │ + final int n4 = 1; │ │ │ │ + h.g(n, n3); │ │ │ │ + h.b(a(stackTraceElement, b)); │ │ │ │ + if (stackTraceElement.isNativeMethod()) { │ │ │ │ + h.a(n4, (long)Math.max(stackTraceElement.getLineNumber(), 0)); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + h.a(n4, 0L); │ │ │ │ + } │ │ │ │ + h.a(n3, com.crashlytics.android.d.a(stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName())); │ │ │ │ + if (stackTraceElement.getFileName() != null) { │ │ │ │ + h.a(3, com.crashlytics.android.d.a(stackTraceElement.getFileName())); │ │ │ │ + } │ │ │ │ + if (!stackTraceElement.isNativeMethod() && stackTraceElement.getLineNumber() > 0) { │ │ │ │ + h.a(n2, (long)stackTraceElement.getLineNumber()); │ │ │ │ + } │ │ │ │ + final int n5 = 5; │ │ │ │ + if (!b) { │ │ │ │ + n2 = 0; │ │ │ │ + } │ │ │ │ + h.a(n5, n2); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static void a(final h p0, final File p1) { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: istore_2 │ │ │ │ + // 2: aload_1 │ │ │ │ + // 3: invokevirtual java/io/File.exists:()Z │ │ │ │ + // 6: istore_3 │ │ │ │ + // 7: iload_3 │ │ │ │ + // 8: ifeq 113 │ │ │ │ + // 11: aload_1 │ │ │ │ + // 12: invokevirtual java/io/File.length:()J │ │ │ │ + // 15: lstore 4 │ │ │ │ + // 17: lload 4 │ │ │ │ + // 19: l2i │ │ │ │ + // 20: istore_3 │ │ │ │ + // 21: iload_3 │ │ │ │ + // 22: newarray B │ │ │ │ + // 24: astore 6 │ │ │ │ + // 26: new Ljava/io/FileInputStream; │ │ │ │ + // 29: astore 7 │ │ │ │ + // 31: aload 7 │ │ │ │ + // 33: aload_1 │ │ │ │ + // 34: invokespecial java/io/FileInputStream.:(Ljava/io/File;)V │ │ │ │ + // 37: iconst_0 │ │ │ │ + // 38: istore_3 │ │ │ │ + // 39: aconst_null │ │ │ │ + // 40: astore 8 │ │ │ │ + // 42: aload 6 │ │ │ │ + // 44: arraylength │ │ │ │ + // 45: istore_2 │ │ │ │ + // 46: iload_3 │ │ │ │ + // 47: iload_2 │ │ │ │ + // 48: if_icmpge 78 │ │ │ │ + // 51: aload 6 │ │ │ │ + // 53: arraylength │ │ │ │ + // 54: iload_3 │ │ │ │ + // 55: isub │ │ │ │ + // 56: istore_2 │ │ │ │ + // 57: aload 7 │ │ │ │ + // 59: aload 6 │ │ │ │ + // 61: iload_3 │ │ │ │ + // 62: iload_2 │ │ │ │ + // 63: invokevirtual java/io/FileInputStream.read:([BII)I │ │ │ │ + // 66: istore_2 │ │ │ │ + // 67: iload_2 │ │ │ │ + // 68: iflt 78 │ │ │ │ + // 71: iload_3 │ │ │ │ + // 72: iload_2 │ │ │ │ + // 73: iadd │ │ │ │ + // 74: istore_3 │ │ │ │ + // 75: goto 42 │ │ │ │ + // 78: ldc_w "Failed to close file input stream." │ │ │ │ + // 81: astore 8 │ │ │ │ + // 83: aload 7 │ │ │ │ + // 85: aload 8 │ │ │ │ + // 87: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 90: aload_0 │ │ │ │ + // 91: aload 6 │ │ │ │ + // 93: invokevirtual com/crashlytics/android/h.a:([B)V │ │ │ │ + // 96: return │ │ │ │ + // 97: astore 8 │ │ │ │ + // 99: aconst_null │ │ │ │ + // 100: astore 7 │ │ │ │ + // 102: aload 7 │ │ │ │ + // 104: ldc_w "Failed to close file input stream." │ │ │ │ + // 107: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 110: aload 8 │ │ │ │ + // 112: athrow │ │ │ │ + // 113: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 116: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 119: astore 8 │ │ │ │ + // 121: ldc "Crashlytics" │ │ │ │ + // 123: astore 7 │ │ │ │ + // 125: new Ljava/lang/StringBuilder; │ │ │ │ + // 128: astore 6 │ │ │ │ + // 130: aload 6 │ │ │ │ + // 132: ldc_w "Tried to include a file that doesn't exist: " │ │ │ │ + // 135: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 138: aload_1 │ │ │ │ + // 139: invokevirtual java/io/File.getName:()Ljava/lang/String; │ │ │ │ + // 142: astore 9 │ │ │ │ + // 144: aload 6 │ │ │ │ + // 146: aload 9 │ │ │ │ + // 148: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 151: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 154: astore 6 │ │ │ │ + // 156: aload 8 │ │ │ │ + // 158: aload 7 │ │ │ │ + // 160: aload 6 │ │ │ │ + // 162: aconst_null │ │ │ │ + // 163: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 168: goto 96 │ │ │ │ + // 171: astore 8 │ │ │ │ + // 173: goto 102 │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- ---- │ │ │ │ + // 26 29 97 102 Any │ │ │ │ + // 33 37 97 102 Any │ │ │ │ + // 42 45 171 176 Any │ │ │ │ + // 51 54 171 176 Any │ │ │ │ + // 62 66 171 176 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IllegalStateException: Expression is linked from several locations: Label_0042: │ │ │ │ + // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final h h, final String s) { │ │ │ │ + final String[] array = { "SessionUser", "SessionApp", "SessionOS", "SessionDevice" }; │ │ │ │ + for (int length = array.length, i = 0; i < length; ++i) { │ │ │ │ + final String s2 = array[i]; │ │ │ │ + final File[] a = this.a((FilenameFilter)new R(s + s2)); │ │ │ │ + if (a.length == 0) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Can't find " + s2 + " data for session ID " + s, (Throwable)null); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Collecting " + s2 + " data for session ID " + s); │ │ │ │ + a(h, a[0]); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final h h, final Thread thread, final Throwable t) { │ │ │ │ + h.g(1, 2); │ │ │ │ + h.b(this.b(thread, t)); │ │ │ │ + this.a(h, thread, this.y, 4, true); │ │ │ │ + for (int length = this.w.length, i = 0; i < length; ++i) { │ │ │ │ + this.a(h, this.w[i], (StackTraceElement[])this.x.get(i), 0, false); │ │ │ │ + } │ │ │ │ + this.a(h, t, 1, 2); │ │ │ │ + h.g(3, 2); │ │ │ │ + h.b(s()); │ │ │ │ + h.a(1, com.crashlytics.android.v.f); │ │ │ │ + h.a(2, com.crashlytics.android.v.f); │ │ │ │ + h.a(3, 0L); │ │ │ │ + h.g(4, 2); │ │ │ │ + h.b(this.r()); │ │ │ │ + h.a(1, 0L); │ │ │ │ + h.a(2, 0L); │ │ │ │ + h.a(3, this.q); │ │ │ │ + if (this.r != null) { │ │ │ │ + h.a(4, this.r); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final h h, final Thread thread, final StackTraceElement[] array, final int n, final boolean b) { │ │ │ │ + final int n2 = 2; │ │ │ │ + final int n3 = 1; │ │ │ │ + h.g(n3, n2); │ │ │ │ + h.b(this.a(thread, array, n, b)); │ │ │ │ + h.a(n3, com.crashlytics.android.d.a(thread.getName())); │ │ │ │ + h.a(n2, n); │ │ │ │ + for (int length = array.length, i = 0; i < length; ++i) { │ │ │ │ + this.a(h, 3, array[i], b); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final h h, final Throwable t, final int n, final int n2) { │ │ │ │ + int n3 = 0; │ │ │ │ + final int n4 = 1; │ │ │ │ + h.g(n2, 2); │ │ │ │ + h.b(this.a(t, n4)); │ │ │ │ + h.a(n4, com.crashlytics.android.d.a(t.getClass().getName())); │ │ │ │ + final String localizedMessage = t.getLocalizedMessage(); │ │ │ │ + if (localizedMessage != null) { │ │ │ │ + h.a(3, com.crashlytics.android.d.a(localizedMessage)); │ │ │ │ + } │ │ │ │ + final StackTraceElement[] stackTrace = t.getStackTrace(); │ │ │ │ + for (int length = stackTrace.length, i = 0; i < length; ++i) { │ │ │ │ + this.a(h, 4, stackTrace[i], n4 != 0); │ │ │ │ + } │ │ │ │ + Throwable t2 = t.getCause(); │ │ │ │ + if (t2 != null) { │ │ │ │ + if (n < 8) { │ │ │ │ + this.a(h, t2, n + 1, 6); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + while (t2 != null) { │ │ │ │ + t2 = t2.getCause(); │ │ │ │ + ++n3; │ │ │ │ + } │ │ │ │ + h.a(7, n3); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final h h, final Map map) { │ │ │ │ + final int n = 2; │ │ │ │ + for (final Map.Entry entry : map.entrySet()) { │ │ │ │ + h.g(n, n); │ │ │ │ + h.b(a((String)entry.getKey(), (String)entry.getValue())); │ │ │ │ + h.a(1, com.crashlytics.android.d.a((String)entry.getKey())); │ │ │ │ + String s = (String)entry.getValue(); │ │ │ │ + if (s == null) { │ │ │ │ + s = ""; │ │ │ │ + } │ │ │ │ + h.a(n, com.crashlytics.android.d.a(s)); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final h h, final File[] array, final String s) { │ │ │ │ + Arrays.sort(array, ab.a); │ │ │ │ + final int length = array.length; │ │ │ │ + int i = 0; │ │ │ │ + while (i < length) { │ │ │ │ + final File file = array[i]; │ │ │ │ + try { │ │ │ │ + final com.crashlytics.android.internal.v a = com.crashlytics.android.internal.v.a(); │ │ │ │ + try { │ │ │ │ + a.b().a("Crashlytics", String.format(Locale.US, "Found Non Fatal for session ID %s in %s ", s, file.getName())); │ │ │ │ + try { │ │ │ │ + a(h, file); │ │ │ │ + ++i; │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Error writting non-fatal to session.", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex2) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex3) {} │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + static void a(final aq aq, final int n, final long n2, final String s) { │ │ │ │ + if (aq != null) { │ │ │ │ + while (true) { │ │ │ │ + Label_0276: { │ │ │ │ + if (s != null) { │ │ │ │ + break Label_0276; │ │ │ │ + } │ │ │ │ + String string = "null"; │ │ │ │ + try { │ │ │ │ + Label_0087: { │ │ │ │ + if (string.length() <= 16384) { │ │ │ │ + break Label_0087; │ │ │ │ + } │ │ │ │ + final StringBuilder append = new StringBuilder("...").append(string.substring(string.length() - 16384)); │ │ │ │ + try { │ │ │ │ + string = append.toString(); │ │ │ │ + final String replaceAll = string.replaceAll("\r", " ").replaceAll("\n", " "); │ │ │ │ + try { │ │ │ │ + aq.a(String.format(Locale.US, "%d %s%n", n2, replaceAll).getBytes("UTF-8")); │ │ │ │ + while (!aq.b() && aq.a() > 65536) { │ │ │ │ + aq.c(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (IOException ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "There was a problem writing to the Crashlytics log.", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (IOException ex2) {} │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (IOException ex3) {} │ │ │ │ + } │ │ │ │ + String string = s; │ │ │ │ + continue; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final String s) { │ │ │ │ + final File[] a = this.a((FilenameFilter)new S(s)); │ │ │ │ + for (int length = a.length, i = 0; i < length; ++i) { │ │ │ │ + a[i].delete(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final String s, final int n) { │ │ │ │ + com.crashlytics.android.b.a(this.k, (FilenameFilter)new R(s + "SessionEvent"), n, com.crashlytics.android.v.c); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final Throwable p0, final OutputStream p1) { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: ifnull 35 │ │ │ │ + // 4: aconst_null │ │ │ │ + // 5: astore_3 │ │ │ │ + // 6: new Ljava/io/PrintWriter; │ │ │ │ + // 9: astore 4 │ │ │ │ + // 11: aload 4 │ │ │ │ + // 13: aload_2 │ │ │ │ + // 14: invokespecial java/io/PrintWriter.:(Ljava/io/OutputStream;)V │ │ │ │ + // 17: aload_1 │ │ │ │ + // 18: aload 4 │ │ │ │ + // 20: invokestatic com/crashlytics/android/v.a:(Ljava/lang/Throwable;Ljava/io/Writer;)V │ │ │ │ + // 23: ldc_w "Failed to close stack trace writer." │ │ │ │ + // 26: astore 5 │ │ │ │ + // 28: aload 4 │ │ │ │ + // 30: aload 5 │ │ │ │ + // 32: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 35: return │ │ │ │ + // 36: astore 5 │ │ │ │ + // 38: aconst_null │ │ │ │ + // 39: astore 4 │ │ │ │ + // 41: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 44: astore_3 │ │ │ │ + // 45: aload_3 │ │ │ │ + // 46: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 49: astore_3 │ │ │ │ + // 50: ldc "Crashlytics" │ │ │ │ + // 52: astore 6 │ │ │ │ + // 54: ldc_w "Failed to create PrintWriter" │ │ │ │ + // 57: astore 7 │ │ │ │ + // 59: aload_3 │ │ │ │ + // 60: aload 6 │ │ │ │ + // 62: aload 7 │ │ │ │ + // 64: aload 5 │ │ │ │ + // 66: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 71: ldc_w "Failed to close stack trace writer." │ │ │ │ + // 74: astore 5 │ │ │ │ + // 76: aload 4 │ │ │ │ + // 78: aload 5 │ │ │ │ + // 80: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 83: goto 35 │ │ │ │ + // 86: astore 5 │ │ │ │ + // 88: aconst_null │ │ │ │ + // 89: astore 4 │ │ │ │ + // 91: aload 4 │ │ │ │ + // 93: ldc_w "Failed to close stack trace writer." │ │ │ │ + // 96: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 99: aload 5 │ │ │ │ + // 101: athrow │ │ │ │ + // 102: astore 5 │ │ │ │ + // 104: goto 91 │ │ │ │ + // 107: astore 5 │ │ │ │ + // 109: goto 41 │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 6 9 36 41 Ljava/lang/Exception; │ │ │ │ + // 6 9 86 91 Any │ │ │ │ + // 13 17 36 41 Ljava/lang/Exception; │ │ │ │ + // 13 17 86 91 Any │ │ │ │ + // 18 23 107 112 Ljava/lang/Exception; │ │ │ │ + // 18 23 102 107 Any │ │ │ │ + // 41 44 102 107 Any │ │ │ │ + // 45 49 102 107 Any │ │ │ │ + // 64 71 102 107 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IllegalStateException: Expression is linked from several locations: Label_0035: │ │ │ │ + // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static void a(Throwable cause, final Writer writer) { │ │ │ │ + int n = 1; │ │ │ │ + String localizedMessage; │ │ │ │ + String replaceAll = null; │ │ │ │ + StringBuilder sb; │ │ │ │ + String s; │ │ │ │ + StringBuilder append; │ │ │ │ + Class class1; │ │ │ │ + String s2; │ │ │ │ + StringBuilder append2; │ │ │ │ + StackTraceElement[] stackTrace; │ │ │ │ + int length; │ │ │ │ + int n2; │ │ │ │ + StackTraceElement stackTraceElement; │ │ │ │ + StringBuilder append3; │ │ │ │ + Label_0046_Outer:Label_0268_Outer: │ │ │ │ + while (cause != null) { │ │ │ │ + try { │ │ │ │ + localizedMessage = cause.getLocalizedMessage(); │ │ │ │ + while (true) { │ │ │ │ + while (true) { │ │ │ │ + while (true) { │ │ │ │ + Label_0027: { │ │ │ │ + if (localizedMessage == null) { │ │ │ │ + replaceAll = null; │ │ │ │ + break Label_0027; │ │ │ │ + } │ │ │ │ + Label_0232: { │ │ │ │ + break Label_0232; │ │ │ │ + while (true) { │ │ │ │ + try { │ │ │ │ + sb = new StringBuilder(); │ │ │ │ + try { │ │ │ │ + append = sb.append(s); │ │ │ │ + try { │ │ │ │ + class1 = cause.getClass(); │ │ │ │ + try { │ │ │ │ + append2 = append.append(class1.getName()).append(": ").append(s2).append("\n"); │ │ │ │ + try { │ │ │ │ + writer.write(append2.toString()); │ │ │ │ + stackTrace = cause.getStackTrace(); │ │ │ │ + try { │ │ │ │ + length = stackTrace.length; │ │ │ │ + n2 = 0; │ │ │ │ + while (true) { │ │ │ │ + Label_0276: { │ │ │ │ + if (n2 >= length) { │ │ │ │ + break Label_0276; │ │ │ │ + } │ │ │ │ + stackTraceElement = stackTrace[n2]; │ │ │ │ + try { │ │ │ │ + append3 = new StringBuilder("\tat ").append(stackTraceElement.toString()).append("\n"); │ │ │ │ + try { │ │ │ │ + writer.write(append3.toString()); │ │ │ │ + ++n2; │ │ │ │ + continue Label_0046_Outer; │ │ │ │ + s = "Caused by: "; │ │ │ │ + continue Label_0046; │ │ │ │ + cause = cause.getCause(); │ │ │ │ + n = 0; │ │ │ │ + continue Label_0046_Outer; │ │ │ │ + replaceAll = localizedMessage.replaceAll("(\r\n|\n|\f)", " "); │ │ │ │ + break Label_0027; │ │ │ │ + s2 = ""; │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Could not write stack trace", (Throwable)ex); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex2) {} │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex3) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex4) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex5) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex6) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex7) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex8) {} │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + if (replaceAll == null) { │ │ │ │ + continue; │ │ │ │ + } │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + s2 = replaceAll; │ │ │ │ + if (n != 0) { │ │ │ │ + s = ""; │ │ │ │ + continue Label_0268_Outer; │ │ │ │ + } │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + continue; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex9) {} │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void a(final Date date, final h h, final Thread thread, final Throwable t, final String s, final boolean b) { │ │ │ │ + final long n = date.getTime() / 1000L; │ │ │ │ + final float b2 = ab.b(Crashlytics.getInstance().getContext()); │ │ │ │ + final int a = ab.a(this.v); │ │ │ │ + final boolean c = ab.c(Crashlytics.getInstance().getContext()); │ │ │ │ + final int orientation = Crashlytics.getInstance().getContext().getResources().getConfiguration().orientation; │ │ │ │ + final long n2 = ab.c() - ab.a(Crashlytics.getInstance().getContext()); │ │ │ │ + final long b3 = ab.b(Environment.getDataDirectory().getPath()); │ │ │ │ + this.t = ab.a(Crashlytics.d(), Crashlytics.getInstance().getContext()); │ │ │ │ + this.x = new LinkedList(); │ │ │ │ + this.y = t.getStackTrace(); │ │ │ │ + if (b) { │ │ │ │ + final Map allStackTraces = Thread.getAllStackTraces(); │ │ │ │ + this.w = new Thread[allStackTraces.size()]; │ │ │ │ + final Iterator> iterator = allStackTraces.entrySet().iterator(); │ │ │ │ + int n3 = 0; │ │ │ │ + while (iterator.hasNext()) { │ │ │ │ + final Map.Entry entry = (Map.Entry)iterator.next(); │ │ │ │ + this.w[n3] = entry.getKey(); │ │ │ │ + this.x.add(entry.getValue()); │ │ │ │ + ++n3; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + this.w = new Thread[0]; │ │ │ │ + } │ │ │ │ + final d a2 = this.a(this.u); │ │ │ │ + if (a2 == null) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "No log data to include with this event."); │ │ │ │ + } │ │ │ │ + ab.a((Closeable)this.u, "There was a problem closing the Crashlytics log file."); │ │ │ │ + this.u = null; │ │ │ │ + Map map; │ │ │ │ + if (!ab.a(Crashlytics.getInstance().getContext(), "com.crashlytics.CollectCustomKeys", true)) { │ │ │ │ + map = new TreeMap(); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + final Map a3 = Crashlytics.getInstance().a(); │ │ │ │ + final int n4; │ │ │ │ + if (a3 != null && a3.size() > (n4 = 1)) { │ │ │ │ + map = new TreeMap(a3); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + map = (Map)a3; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + h.g(10, 2); │ │ │ │ + final int n5 = h.b(1, n) + 0 + h.b(2, com.crashlytics.android.d.a(s)); │ │ │ │ + final int a4 = this.a(thread, t, map); │ │ │ │ + final int n6 = n5 + (a4 + (h.a(3) + h.c(a4))); │ │ │ │ + final int a5 = a(b2, a, c, orientation, n2, b3); │ │ │ │ + int n7 = n6 + (a5 + (h.a(5) + h.c(a5))); │ │ │ │ + if (a2 != null) { │ │ │ │ + final int b4 = h.b(1, a2); │ │ │ │ + n7 += b4 + (h.a(6) + h.c(b4)); │ │ │ │ + } │ │ │ │ + h.b(n7); │ │ │ │ + h.a(1, n); │ │ │ │ + h.a(2, com.crashlytics.android.d.a(s)); │ │ │ │ + h.g(3, 2); │ │ │ │ + h.b(this.a(thread, t, (Map)map)); │ │ │ │ + this.a(h, thread, t); │ │ │ │ + if (map != null && !map.isEmpty()) { │ │ │ │ + this.a(h, map); │ │ │ │ + } │ │ │ │ + if (this.t != null) { │ │ │ │ + h.a(3, this.t.importance != 100); │ │ │ │ + } │ │ │ │ + h.a(4, Crashlytics.getInstance().getContext().getResources().getConfiguration().orientation); │ │ │ │ + h.g(5, 2); │ │ │ │ + h.b(a(b2, a, c, orientation, n2, b3)); │ │ │ │ + h.a(1, b2); │ │ │ │ + h.c(2, a); │ │ │ │ + h.a(3, c); │ │ │ │ + h.a(4, orientation); │ │ │ │ + h.a(5, n2); │ │ │ │ + h.a(6, b3); │ │ │ │ + if (a2 != null) { │ │ │ │ + h.g(6, 2); │ │ │ │ + h.b(h.b(1, a2)); │ │ │ │ + h.a(1, a2); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private File[] a(final FilenameFilter filenameFilter) { │ │ │ │ + File[] listFiles = this.k.listFiles(filenameFilter); │ │ │ │ + if (listFiles == null) { │ │ │ │ + listFiles = new File[0]; │ │ │ │ + } │ │ │ │ + return listFiles; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private int b(final Thread thread, final Throwable t) { │ │ │ │ + final int n = 3; │ │ │ │ + final int n2 = 1; │ │ │ │ + final int a = this.a(thread, this.y, 4, n2 != 0); │ │ │ │ + final int n3 = a + (com.crashlytics.android.h.a(n2) + com.crashlytics.android.h.c(a)) + 0; │ │ │ │ + final int length = this.w.length; │ │ │ │ + int i = 0; │ │ │ │ + int n4 = n3; │ │ │ │ + while (i < length) { │ │ │ │ + final int a2 = this.a(this.w[i], this.x.get(i), 0, false); │ │ │ │ + n4 += a2 + (com.crashlytics.android.h.a(n2) + com.crashlytics.android.h.c(a2)); │ │ │ │ + ++i; │ │ │ │ + } │ │ │ │ + final int a3 = this.a(t, n2); │ │ │ │ + final int n5 = a3 + (com.crashlytics.android.h.a(2) + com.crashlytics.android.h.c(a3)) + n4; │ │ │ │ + final int s = s(); │ │ │ │ + final int n6 = n5 + (s + (com.crashlytics.android.h.a(n) + com.crashlytics.android.h.c(s))); │ │ │ │ + final int r = this.r(); │ │ │ │ + return n6 + (r + (com.crashlytics.android.h.a(n) + com.crashlytics.android.h.c(r))); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static d b(final String s) { │ │ │ │ + d a; │ │ │ │ + if (s == null) { │ │ │ │ + a = null; │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + a = com.crashlytics.android.d.a(s); │ │ │ │ + } │ │ │ │ + return a; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private Future b(final Callable callable) { │ │ │ │ + try { │ │ │ │ + final ExecutorService s = this.s; │ │ │ │ + try { │ │ │ │ + final I i = new I(this, callable); │ │ │ │ + final ExecutorService executorService = s; │ │ │ │ + try { │ │ │ │ + return executorService.submit((Callable)i); │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Executor is shut down because we're handling a fatal crash."); │ │ │ │ + final Future submit = null; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex2) {} │ │ │ │ + } │ │ │ │ + catch (RejectedExecutionException ex3) {} │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void c(final String p0) { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: istore_2 │ │ │ │ + // 2: aconst_null │ │ │ │ + // 3: astore_3 │ │ │ │ + // 4: iconst_0 │ │ │ │ + // 5: istore 4 │ │ │ │ + // 7: aconst_null │ │ │ │ + // 8: astore 5 │ │ │ │ + // 10: new Lcom/crashlytics/android/f; │ │ │ │ + // 13: astore 6 │ │ │ │ + // 15: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 18: astore 7 │ │ │ │ + // 20: aload 7 │ │ │ │ + // 22: invokevirtual com/crashlytics/android/internal/v.h:()Ljava/io/File; │ │ │ │ + // 25: astore 7 │ │ │ │ + // 27: new Ljava/lang/StringBuilder; │ │ │ │ + // 30: astore 8 │ │ │ │ + // 32: aload 8 │ │ │ │ + // 34: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 37: aload_1 │ │ │ │ + // 38: astore 9 │ │ │ │ + // 40: aload 8 │ │ │ │ + // 42: aload_1 │ │ │ │ + // 43: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 46: astore 8 │ │ │ │ + // 48: ldc_w "SessionDevice" │ │ │ │ + // 51: astore 10 │ │ │ │ + // 53: aload 8 │ │ │ │ + // 55: aload 10 │ │ │ │ + // 57: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 60: astore 8 │ │ │ │ + // 62: aload 8 │ │ │ │ + // 64: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 67: astore 8 │ │ │ │ + // 69: aload 6 │ │ │ │ + // 71: astore 9 │ │ │ │ + // 73: aload 6 │ │ │ │ + // 75: aload 7 │ │ │ │ + // 77: aload 8 │ │ │ │ + // 79: invokespecial com/crashlytics/android/f.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ + // 82: aload 6 │ │ │ │ + // 84: invokestatic com/crashlytics/android/h.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ │ │ │ + // 87: astore 11 │ │ │ │ + // 89: new Landroid/os/StatFs; │ │ │ │ + // 92: astore 7 │ │ │ │ + // 94: invokestatic android/os/Environment.getDataDirectory:()Ljava/io/File; │ │ │ │ + // 97: astore 5 │ │ │ │ + // 99: aload 5 │ │ │ │ + // 101: invokevirtual java/io/File.getPath:()Ljava/lang/String; │ │ │ │ + // 104: astore 5 │ │ │ │ + // 106: aload 7 │ │ │ │ + // 108: aload 5 │ │ │ │ + // 110: invokespecial android/os/StatFs.:(Ljava/lang/String;)V │ │ │ │ + // 113: invokestatic com/crashlytics/android/internal/ab.b:()I │ │ │ │ + // 116: istore 4 │ │ │ │ + // 118: getstatic android/os/Build.MODEL:Ljava/lang/String; │ │ │ │ + // 121: astore_3 │ │ │ │ + // 122: aload_3 │ │ │ │ + // 123: invokestatic com/crashlytics/android/v.b:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 126: astore 8 │ │ │ │ + // 128: getstatic android/os/Build.MANUFACTURER:Ljava/lang/String; │ │ │ │ + // 131: astore_3 │ │ │ │ + // 132: aload_3 │ │ │ │ + // 133: invokestatic com/crashlytics/android/v.b:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 136: astore 12 │ │ │ │ + // 138: getstatic android/os/Build.PRODUCT:Ljava/lang/String; │ │ │ │ + // 141: astore_3 │ │ │ │ + // 142: aload_3 │ │ │ │ + // 143: invokestatic com/crashlytics/android/v.b:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 146: astore 13 │ │ │ │ + // 148: invokestatic java/lang/Runtime.getRuntime:()Ljava/lang/Runtime; │ │ │ │ + // 151: astore_3 │ │ │ │ + // 152: aload_3 │ │ │ │ + // 153: invokevirtual java/lang/Runtime.availableProcessors:()I │ │ │ │ + // 156: istore 14 │ │ │ │ + // 158: invokestatic com/crashlytics/android/internal/ab.c:()J │ │ │ │ + // 161: lstore 15 │ │ │ │ + // 163: aload 7 │ │ │ │ + // 165: invokevirtual android/os/StatFs.getBlockCount:()I │ │ │ │ + // 168: istore_2 │ │ │ │ + // 169: iload_2 │ │ │ │ + // 170: i2l │ │ │ │ + // 171: lstore 17 │ │ │ │ + // 173: aload 7 │ │ │ │ + // 175: invokevirtual android/os/StatFs.getBlockSize:()I │ │ │ │ + // 178: istore 19 │ │ │ │ + // 180: iload 19 │ │ │ │ + // 182: i2l │ │ │ │ + // 183: lstore 20 │ │ │ │ + // 185: lload 17 │ │ │ │ + // 187: lload 20 │ │ │ │ + // 189: lmul │ │ │ │ + // 190: lstore 17 │ │ │ │ + // 192: invokestatic com/crashlytics/android/internal/ab.d:()Z │ │ │ │ + // 195: istore 22 │ │ │ │ + // 197: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 200: astore 7 │ │ │ │ + // 202: aload 7 │ │ │ │ + // 204: invokevirtual com/crashlytics/android/Crashlytics.b:()Lcom/crashlytics/android/internal/ao; │ │ │ │ + // 207: astore 7 │ │ │ │ + // 209: aload 7 │ │ │ │ + // 211: invokevirtual com/crashlytics/android/internal/ao.e:()Ljava/lang/String; │ │ │ │ + // 214: astore_3 │ │ │ │ + // 215: aload_3 │ │ │ │ + // 216: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 219: astore_3 │ │ │ │ + // 220: aload 7 │ │ │ │ + // 222: invokevirtual com/crashlytics/android/internal/ao.f:()Ljava/util/Map; │ │ │ │ + // 225: astore 23 │ │ │ │ + // 227: invokestatic com/crashlytics/android/internal/ab.f:()I │ │ │ │ + // 230: istore 24 │ │ │ │ + // 232: bipush 9 │ │ │ │ + // 234: istore 19 │ │ │ │ + // 236: iconst_2 │ │ │ │ + // 237: istore 25 │ │ │ │ + // 239: aload 11 │ │ │ │ + // 241: iload 19 │ │ │ │ + // 243: iload 25 │ │ │ │ + // 245: invokevirtual com/crashlytics/android/h.g:(II)V │ │ │ │ + // 248: aload_0 │ │ │ │ + // 249: astore 7 │ │ │ │ + // 251: aload_0 │ │ │ │ + // 252: iload 4 │ │ │ │ + // 254: aload_3 │ │ │ │ + // 255: aload 8 │ │ │ │ + // 257: iload 14 │ │ │ │ + // 259: lload 15 │ │ │ │ + // 261: lload 17 │ │ │ │ + // 263: iload 22 │ │ │ │ + // 265: aload 23 │ │ │ │ + // 267: iload 24 │ │ │ │ + // 269: aload 12 │ │ │ │ + // 271: aload 13 │ │ │ │ + // 273: invokespecial com/crashlytics/android/v.a:(ILcom/crashlytics/android/d;Lcom/crashlytics/android/d;IJJZLjava/util/Map;ILcom/crashlytics/android/d;Lcom/crashlytics/android/d;)I │ │ │ │ + // 276: istore 19 │ │ │ │ + // 278: aload 11 │ │ │ │ + // 280: iload 19 │ │ │ │ + // 282: invokevirtual com/crashlytics/android/h.b:(I)V │ │ │ │ + // 285: iconst_1 │ │ │ │ + // 286: istore 19 │ │ │ │ + // 288: aload 11 │ │ │ │ + // 290: iload 19 │ │ │ │ + // 292: aload_3 │ │ │ │ + // 293: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 296: iconst_3 │ │ │ │ + // 297: istore 19 │ │ │ │ + // 299: aload 11 │ │ │ │ + // 301: iload 19 │ │ │ │ + // 303: iload 4 │ │ │ │ + // 305: invokevirtual com/crashlytics/android/h.b:(II)V │ │ │ │ + // 308: iconst_4 │ │ │ │ + // 309: istore 19 │ │ │ │ + // 311: aload 11 │ │ │ │ + // 313: iload 19 │ │ │ │ + // 315: aload 8 │ │ │ │ + // 317: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 320: iconst_5 │ │ │ │ + // 321: istore 19 │ │ │ │ + // 323: aload 11 │ │ │ │ + // 325: iload 19 │ │ │ │ + // 327: iload 14 │ │ │ │ + // 329: invokevirtual com/crashlytics/android/h.a:(II)V │ │ │ │ + // 332: bipush 6 │ │ │ │ + // 334: istore 19 │ │ │ │ + // 336: aload 11 │ │ │ │ + // 338: iload 19 │ │ │ │ + // 340: lload 15 │ │ │ │ + // 342: invokevirtual com/crashlytics/android/h.a:(IJ)V │ │ │ │ + // 345: bipush 7 │ │ │ │ + // 347: istore 19 │ │ │ │ + // 349: aload 11 │ │ │ │ + // 351: iload 19 │ │ │ │ + // 353: lload 17 │ │ │ │ + // 355: invokevirtual com/crashlytics/android/h.a:(IJ)V │ │ │ │ + // 358: bipush 10 │ │ │ │ + // 360: istore 19 │ │ │ │ + // 362: aload 11 │ │ │ │ + // 364: iload 19 │ │ │ │ + // 366: iload 22 │ │ │ │ + // 368: invokevirtual com/crashlytics/android/h.a:(IZ)V │ │ │ │ + // 371: aload 23 │ │ │ │ + // 373: invokeinterface java/util/Map.entrySet:()Ljava/util/Set; │ │ │ │ + // 378: astore 7 │ │ │ │ + // 380: aload 7 │ │ │ │ + // 382: invokeinterface java/util/Set.iterator:()Ljava/util/Iterator; │ │ │ │ + // 387: astore 8 │ │ │ │ + // 389: aload 8 │ │ │ │ + // 391: invokeinterface java/util/Iterator.hasNext:()Z │ │ │ │ + // 396: istore 19 │ │ │ │ + // 398: iload 19 │ │ │ │ + // 400: ifeq 617 │ │ │ │ + // 403: aload 8 │ │ │ │ + // 405: invokeinterface java/util/Iterator.next:()Ljava/lang/Object; │ │ │ │ + // 410: astore 7 │ │ │ │ + // 412: aload 7 │ │ │ │ + // 414: astore 9 │ │ │ │ + // 416: aload 7 │ │ │ │ + // 418: checkcast Ljava/util/Map$Entry; │ │ │ │ + // 421: astore 9 │ │ │ │ + // 423: aload 9 │ │ │ │ + // 425: astore_3 │ │ │ │ + // 426: bipush 11 │ │ │ │ + // 428: istore 19 │ │ │ │ + // 430: iconst_2 │ │ │ │ + // 431: istore 4 │ │ │ │ + // 433: aload 11 │ │ │ │ + // 435: iload 19 │ │ │ │ + // 437: iload 4 │ │ │ │ + // 439: invokevirtual com/crashlytics/android/h.g:(II)V │ │ │ │ + // 442: aload 9 │ │ │ │ + // 444: invokeinterface java/util/Map$Entry.getKey:()Ljava/lang/Object; │ │ │ │ + // 449: astore 7 │ │ │ │ + // 451: aload 7 │ │ │ │ + // 453: checkcast Lcom/crashlytics/android/internal/ap; │ │ │ │ + // 456: astore 7 │ │ │ │ + // 458: aload 9 │ │ │ │ + // 460: invokeinterface java/util/Map$Entry.getValue:()Ljava/lang/Object; │ │ │ │ + // 465: astore 5 │ │ │ │ + // 467: aload 5 │ │ │ │ + // 469: checkcast Ljava/lang/String; │ │ │ │ + // 472: astore 5 │ │ │ │ + // 474: aload 7 │ │ │ │ + // 476: aload 5 │ │ │ │ + // 478: invokestatic com/crashlytics/android/v.a:(Lcom/crashlytics/android/internal/ap;Ljava/lang/String;)I │ │ │ │ + // 481: istore 19 │ │ │ │ + // 483: aload 11 │ │ │ │ + // 485: iload 19 │ │ │ │ + // 487: invokevirtual com/crashlytics/android/h.b:(I)V │ │ │ │ + // 490: iconst_1 │ │ │ │ + // 491: istore 4 │ │ │ │ + // 493: aload 9 │ │ │ │ + // 495: invokeinterface java/util/Map$Entry.getKey:()Ljava/lang/Object; │ │ │ │ + // 500: astore 7 │ │ │ │ + // 502: aload 7 │ │ │ │ + // 504: checkcast Lcom/crashlytics/android/internal/ap; │ │ │ │ + // 507: astore 7 │ │ │ │ + // 509: aload 7 │ │ │ │ + // 511: getfield com/crashlytics/android/internal/ap.f:I │ │ │ │ + // 514: istore 19 │ │ │ │ + // 516: aload 11 │ │ │ │ + // 518: iload 4 │ │ │ │ + // 520: iload 19 │ │ │ │ + // 522: invokevirtual com/crashlytics/android/h.b:(II)V │ │ │ │ + // 525: iconst_2 │ │ │ │ + // 526: istore 4 │ │ │ │ + // 528: aload 9 │ │ │ │ + // 530: invokeinterface java/util/Map$Entry.getValue:()Ljava/lang/Object; │ │ │ │ + // 535: astore 7 │ │ │ │ + // 537: aload 7 │ │ │ │ + // 539: checkcast Ljava/lang/String; │ │ │ │ + // 542: astore 7 │ │ │ │ + // 544: aload 7 │ │ │ │ + // 546: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 549: astore 7 │ │ │ │ + // 551: aload 11 │ │ │ │ + // 553: iload 4 │ │ │ │ + // 555: aload 7 │ │ │ │ + // 557: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 560: goto 389 │ │ │ │ + // 563: astore 7 │ │ │ │ + // 565: aload 11 │ │ │ │ + // 567: astore 5 │ │ │ │ + // 569: aload 6 │ │ │ │ + // 571: astore_3 │ │ │ │ + // 572: aload_0 │ │ │ │ + // 573: astore 9 │ │ │ │ + // 575: aload_0 │ │ │ │ + // 576: aload 7 │ │ │ │ + // 578: aload_3 │ │ │ │ + // 579: invokespecial com/crashlytics/android/v.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ + // 582: aload 7 │ │ │ │ + // 584: athrow │ │ │ │ + // 585: astore 7 │ │ │ │ + // 587: aload 5 │ │ │ │ + // 589: astore 11 │ │ │ │ + // 591: aload_3 │ │ │ │ + // 592: astore 6 │ │ │ │ + // 594: aload 11 │ │ │ │ + // 596: ldc_w "Failed to flush session device info." │ │ │ │ + // 599: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 602: aload 6 │ │ │ │ + // 604: astore 9 │ │ │ │ + // 606: aload 6 │ │ │ │ + // 608: ldc_w "Failed to close session device file." │ │ │ │ + // 611: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 614: aload 7 │ │ │ │ + // 616: athrow │ │ │ │ + // 617: bipush 12 │ │ │ │ + // 619: istore 19 │ │ │ │ + // 621: aload 11 │ │ │ │ + // 623: iload 19 │ │ │ │ + // 625: iload 24 │ │ │ │ + // 627: invokevirtual com/crashlytics/android/h.a:(II)V │ │ │ │ + // 630: aload 12 │ │ │ │ + // 632: ifnull 648 │ │ │ │ + // 635: bipush 13 │ │ │ │ + // 637: istore 19 │ │ │ │ + // 639: aload 11 │ │ │ │ + // 641: iload 19 │ │ │ │ + // 643: aload 12 │ │ │ │ + // 645: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 648: aload 13 │ │ │ │ + // 650: ifnull 666 │ │ │ │ + // 653: bipush 14 │ │ │ │ + // 655: istore 19 │ │ │ │ + // 657: aload 11 │ │ │ │ + // 659: iload 19 │ │ │ │ + // 661: aload 13 │ │ │ │ + // 663: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 666: aload 11 │ │ │ │ + // 668: ldc_w "Failed to flush session device info." │ │ │ │ + // 671: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 674: aload 6 │ │ │ │ + // 676: astore 9 │ │ │ │ + // 678: aload 6 │ │ │ │ + // 680: ldc_w "Failed to close session device file." │ │ │ │ + // 683: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 686: return │ │ │ │ + // 687: astore 7 │ │ │ │ + // 689: aconst_null │ │ │ │ + // 690: astore 11 │ │ │ │ + // 692: aconst_null │ │ │ │ + // 693: astore 6 │ │ │ │ + // 695: goto 594 │ │ │ │ + // 698: astore 7 │ │ │ │ + // 700: aconst_null │ │ │ │ + // 701: astore 11 │ │ │ │ + // 703: goto 594 │ │ │ │ + // 706: astore 7 │ │ │ │ + // 708: goto 594 │ │ │ │ + // 711: astore 7 │ │ │ │ + // 713: goto 572 │ │ │ │ + // 716: astore 7 │ │ │ │ + // 718: aload 6 │ │ │ │ + // 720: astore_3 │ │ │ │ + // 721: goto 572 │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 10 13 711 716 Ljava/lang/Exception; │ │ │ │ + // 10 13 687 698 Any │ │ │ │ + // 15 18 711 716 Ljava/lang/Exception; │ │ │ │ + // 15 18 687 698 Any │ │ │ │ + // 20 25 711 716 Ljava/lang/Exception; │ │ │ │ + // 20 25 687 698 Any │ │ │ │ + // 27 30 711 716 Ljava/lang/Exception; │ │ │ │ + // 27 30 687 698 Any │ │ │ │ + // 32 37 711 716 Ljava/lang/Exception; │ │ │ │ + // 32 37 687 698 Any │ │ │ │ + // 42 46 711 716 Ljava/lang/Exception; │ │ │ │ + // 42 46 687 698 Any │ │ │ │ + // 55 60 711 716 Ljava/lang/Exception; │ │ │ │ + // 55 60 687 698 Any │ │ │ │ + // 62 67 711 716 Ljava/lang/Exception; │ │ │ │ + // 62 67 687 698 Any │ │ │ │ + // 77 82 711 716 Ljava/lang/Exception; │ │ │ │ + // 77 82 687 698 Any │ │ │ │ + // 82 87 716 724 Ljava/lang/Exception; │ │ │ │ + // 82 87 698 706 Any │ │ │ │ + // 89 92 563 572 Ljava/lang/Exception; │ │ │ │ + // 89 92 706 711 Any │ │ │ │ + // 94 97 563 572 Ljava/lang/Exception; │ │ │ │ + // 94 97 706 711 Any │ │ │ │ + // 99 104 563 572 Ljava/lang/Exception; │ │ │ │ + // 99 104 706 711 Any │ │ │ │ + // 108 113 563 572 Ljava/lang/Exception; │ │ │ │ + // 108 113 706 711 Any │ │ │ │ + // 113 116 563 572 Ljava/lang/Exception; │ │ │ │ + // 113 116 706 711 Any │ │ │ │ + // 118 121 563 572 Ljava/lang/Exception; │ │ │ │ + // 118 121 706 711 Any │ │ │ │ + // 122 126 563 572 Ljava/lang/Exception; │ │ │ │ + // 122 126 706 711 Any │ │ │ │ + // 128 131 563 572 Ljava/lang/Exception; │ │ │ │ + // 128 131 706 711 Any │ │ │ │ + // 132 136 563 572 Ljava/lang/Exception; │ │ │ │ + // 132 136 706 711 Any │ │ │ │ + // 138 141 563 572 Ljava/lang/Exception; │ │ │ │ + // 138 141 706 711 Any │ │ │ │ + // 142 146 563 572 Ljava/lang/Exception; │ │ │ │ + // 142 146 706 711 Any │ │ │ │ + // 148 151 563 572 Ljava/lang/Exception; │ │ │ │ + // 148 151 706 711 Any │ │ │ │ + // 152 156 563 572 Ljava/lang/Exception; │ │ │ │ + // 152 156 706 711 Any │ │ │ │ + // 158 161 563 572 Ljava/lang/Exception; │ │ │ │ + // 158 161 706 711 Any │ │ │ │ + // 163 168 563 572 Ljava/lang/Exception; │ │ │ │ + // 163 168 706 711 Any │ │ │ │ + // 173 178 563 572 Ljava/lang/Exception; │ │ │ │ + // 173 178 706 711 Any │ │ │ │ + // 192 195 563 572 Ljava/lang/Exception; │ │ │ │ + // 192 195 706 711 Any │ │ │ │ + // 197 200 563 572 Ljava/lang/Exception; │ │ │ │ + // 197 200 706 711 Any │ │ │ │ + // 202 207 563 572 Ljava/lang/Exception; │ │ │ │ + // 202 207 706 711 Any │ │ │ │ + // 209 214 563 572 Ljava/lang/Exception; │ │ │ │ + // 209 214 706 711 Any │ │ │ │ + // 215 219 563 572 Ljava/lang/Exception; │ │ │ │ + // 215 219 706 711 Any │ │ │ │ + // 220 225 563 572 Ljava/lang/Exception; │ │ │ │ + // 220 225 706 711 Any │ │ │ │ + // 227 230 563 572 Ljava/lang/Exception; │ │ │ │ + // 227 230 706 711 Any │ │ │ │ + // 243 248 563 572 Ljava/lang/Exception; │ │ │ │ + // 243 248 706 711 Any │ │ │ │ + // 271 276 563 572 Ljava/lang/Exception; │ │ │ │ + // 271 276 706 711 Any │ │ │ │ + // 280 285 563 572 Ljava/lang/Exception; │ │ │ │ + // 280 285 706 711 Any │ │ │ │ + // 292 296 563 572 Ljava/lang/Exception; │ │ │ │ + // 292 296 706 711 Any │ │ │ │ + // 303 308 563 572 Ljava/lang/Exception; │ │ │ │ + // 303 308 706 711 Any │ │ │ │ + // 315 320 563 572 Ljava/lang/Exception; │ │ │ │ + // 315 320 706 711 Any │ │ │ │ + // 327 332 563 572 Ljava/lang/Exception; │ │ │ │ + // 327 332 706 711 Any │ │ │ │ + // 340 345 563 572 Ljava/lang/Exception; │ │ │ │ + // 340 345 706 711 Any │ │ │ │ + // 353 358 563 572 Ljava/lang/Exception; │ │ │ │ + // 353 358 706 711 Any │ │ │ │ + // 366 371 563 572 Ljava/lang/Exception; │ │ │ │ + // 366 371 706 711 Any │ │ │ │ + // 371 378 563 572 Ljava/lang/Exception; │ │ │ │ + // 371 378 706 711 Any │ │ │ │ + // 380 387 563 572 Ljava/lang/Exception; │ │ │ │ + // 380 387 706 711 Any │ │ │ │ + // 389 396 563 572 Ljava/lang/Exception; │ │ │ │ + // 389 396 706 711 Any │ │ │ │ + // 403 410 563 572 Ljava/lang/Exception; │ │ │ │ + // 403 410 706 711 Any │ │ │ │ + // 416 421 563 572 Ljava/lang/Exception; │ │ │ │ + // 416 421 706 711 Any │ │ │ │ + // 437 442 563 572 Ljava/lang/Exception; │ │ │ │ + // 437 442 706 711 Any │ │ │ │ + // 442 449 563 572 Ljava/lang/Exception; │ │ │ │ + // 442 449 706 711 Any │ │ │ │ + // 451 456 563 572 Ljava/lang/Exception; │ │ │ │ + // 451 456 706 711 Any │ │ │ │ + // 458 465 563 572 Ljava/lang/Exception; │ │ │ │ + // 458 465 706 711 Any │ │ │ │ + // 467 472 563 572 Ljava/lang/Exception; │ │ │ │ + // 467 472 706 711 Any │ │ │ │ + // 476 481 563 572 Ljava/lang/Exception; │ │ │ │ + // 476 481 706 711 Any │ │ │ │ + // 485 490 563 572 Ljava/lang/Exception; │ │ │ │ + // 485 490 706 711 Any │ │ │ │ + // 493 500 563 572 Ljava/lang/Exception; │ │ │ │ + // 493 500 706 711 Any │ │ │ │ + // 502 507 563 572 Ljava/lang/Exception; │ │ │ │ + // 502 507 706 711 Any │ │ │ │ + // 509 514 563 572 Ljava/lang/Exception; │ │ │ │ + // 509 514 706 711 Any │ │ │ │ + // 520 525 563 572 Ljava/lang/Exception; │ │ │ │ + // 520 525 706 711 Any │ │ │ │ + // 528 535 563 572 Ljava/lang/Exception; │ │ │ │ + // 528 535 706 711 Any │ │ │ │ + // 537 542 563 572 Ljava/lang/Exception; │ │ │ │ + // 537 542 706 711 Any │ │ │ │ + // 544 549 563 572 Ljava/lang/Exception; │ │ │ │ + // 544 549 706 711 Any │ │ │ │ + // 555 560 563 572 Ljava/lang/Exception; │ │ │ │ + // 555 560 706 711 Any │ │ │ │ + // 578 582 585 594 Any │ │ │ │ + // 582 585 585 594 Any │ │ │ │ + // 625 630 563 572 Ljava/lang/Exception; │ │ │ │ + // 625 630 706 711 Any │ │ │ │ + // 643 648 563 572 Ljava/lang/Exception; │ │ │ │ + // 643 648 706 711 Any │ │ │ │ + // 661 666 563 572 Ljava/lang/Exception; │ │ │ │ + // 661 666 706 711 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 336, Size: 336 │ │ │ │ + // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ + // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private boolean k() { │ │ │ │ + final boolean b = true; │ │ │ │ + boolean b2 = false; │ │ │ │ + if (!ab.a(Crashlytics.getInstance().getContext(), "com.crashlytics.CollectCustomLogs", b)) { │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Preferences requested not to collect custom logs. Aborting log file creation."); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + Object o = this.u; │ │ │ │ + ab.a((Closeable)o, "Could not close log file: " + this.u); │ │ │ │ + try { │ │ │ │ + o = new StringBuilder("crashlytics-userlog-"); │ │ │ │ + final UUID randomUUID = UUID.randomUUID(); │ │ │ │ + try { │ │ │ │ + o = ((StringBuilder)o).append(randomUUID.toString()); │ │ │ │ + o = ((StringBuilder)o).append(".temp"); │ │ │ │ + try { │ │ │ │ + final String string = ((StringBuilder)o).toString(); │ │ │ │ + try { │ │ │ │ + o = new(java.io.File.class); │ │ │ │ + try { │ │ │ │ + final com.crashlytics.android.internal.v a = com.crashlytics.android.internal.v.a(); │ │ │ │ + try { │ │ │ │ + new File(a.h(), string); │ │ │ │ + final aq aq = new(com.crashlytics.android.internal.aq.class); │ │ │ │ + final aq aq3; │ │ │ │ + final aq aq2 = aq3 = aq; │ │ │ │ + final StringBuilder sb = (StringBuilder)o; │ │ │ │ + new aq((File)sb); │ │ │ │ + final v v = this; │ │ │ │ + final aq aq4 = aq2; │ │ │ │ + v.u = aq4; │ │ │ │ + final StringBuilder sb2 = (StringBuilder)o; │ │ │ │ + ((File)sb2).delete(); │ │ │ │ + final boolean b3 = b2 = b; │ │ │ │ + } │ │ │ │ + catch (Exception ex) { │ │ │ │ + o = null; │ │ │ │ + } │ │ │ │ + } │ │ │ │ + catch (Exception ex2) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex3) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex4) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex5) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex6) {} │ │ │ │ + try { │ │ │ │ + final aq aq = new(com.crashlytics.android.internal.aq.class); │ │ │ │ + final aq aq3; │ │ │ │ + final aq aq2 = aq3 = aq; │ │ │ │ + final StringBuilder sb = (StringBuilder)o; │ │ │ │ + new aq((File)sb); │ │ │ │ + final v v = this; │ │ │ │ + try { │ │ │ │ + final aq aq4 = aq2; │ │ │ │ + v.u = aq4; │ │ │ │ + final StringBuilder sb2 = (StringBuilder)o; │ │ │ │ + ((File)sb2).delete(); │ │ │ │ + b2 = b; │ │ │ │ + return b2; │ │ │ │ + final q b4 = com.crashlytics.android.internal.v.a().b(); │ │ │ │ + final String s = "Crashlytics"; │ │ │ │ + o = "Could not create log file: " + o; │ │ │ │ + final Exception ex; │ │ │ │ + b4.a(s, (String)o, (Throwable)ex); │ │ │ │ + } │ │ │ │ + catch (Exception ex) {} │ │ │ │ + } │ │ │ │ + catch (Exception ex7) {} │ │ │ │ + } │ │ │ │ + return b2; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void l() { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: astore_1 │ │ │ │ + // 2: new Ljava/util/Date; │ │ │ │ + // 5: astore_2 │ │ │ │ + // 6: aload_2 │ │ │ │ + // 7: invokespecial java/util/Date.:()V │ │ │ │ + // 10: new Lcom/crashlytics/android/e; │ │ │ │ + // 13: astore_3 │ │ │ │ + // 14: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 17: invokevirtual com/crashlytics/android/Crashlytics.b:()Lcom/crashlytics/android/internal/ao; │ │ │ │ + // 20: astore 4 │ │ │ │ + // 22: aload_3 │ │ │ │ + // 23: aload 4 │ │ │ │ + // 25: invokespecial com/crashlytics/android/e.:(Lcom/crashlytics/android/internal/ao;)V │ │ │ │ + // 28: aload_3 │ │ │ │ + // 29: invokevirtual com/crashlytics/android/e.toString:()Ljava/lang/String; │ │ │ │ + // 32: astore 5 │ │ │ │ + // 34: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 37: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 40: astore_3 │ │ │ │ + // 41: ldc "Crashlytics" │ │ │ │ + // 43: astore 4 │ │ │ │ + // 45: new Ljava/lang/StringBuilder; │ │ │ │ + // 48: astore 6 │ │ │ │ + // 50: ldc_w "Opening an new session with ID " │ │ │ │ + // 53: astore 7 │ │ │ │ + // 55: aload 6 │ │ │ │ + // 57: aload 7 │ │ │ │ + // 59: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 62: aload 6 │ │ │ │ + // 64: aload 5 │ │ │ │ + // 66: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 69: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 72: astore 6 │ │ │ │ + // 74: aload_3 │ │ │ │ + // 75: aload 4 │ │ │ │ + // 77: aload 6 │ │ │ │ + // 79: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 84: new Lcom/crashlytics/android/f; │ │ │ │ + // 87: astore 4 │ │ │ │ + // 89: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 92: astore_3 │ │ │ │ + // 93: aload_3 │ │ │ │ + // 94: invokevirtual com/crashlytics/android/internal/v.h:()Ljava/io/File; │ │ │ │ + // 97: astore_3 │ │ │ │ + // 98: new Ljava/lang/StringBuilder; │ │ │ │ + // 101: astore 6 │ │ │ │ + // 103: aload 6 │ │ │ │ + // 105: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 108: aload 6 │ │ │ │ + // 110: aload 5 │ │ │ │ + // 112: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 115: astore 6 │ │ │ │ + // 117: ldc_w "BeginSession" │ │ │ │ + // 120: astore 7 │ │ │ │ + // 122: aload 6 │ │ │ │ + // 124: aload 7 │ │ │ │ + // 126: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 129: astore 6 │ │ │ │ + // 131: aload 6 │ │ │ │ + // 133: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 136: astore 6 │ │ │ │ + // 138: aload 4 │ │ │ │ + // 140: aload_3 │ │ │ │ + // 141: aload 6 │ │ │ │ + // 143: invokespecial com/crashlytics/android/f.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ + // 146: aload 4 │ │ │ │ + // 148: invokestatic com/crashlytics/android/h.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ │ │ │ + // 151: astore_3 │ │ │ │ + // 152: iconst_1 │ │ │ │ + // 153: istore 8 │ │ │ │ + // 155: aload_0 │ │ │ │ + // 156: getfield com/crashlytics/android/v.n:Ljava/lang/String; │ │ │ │ + // 159: astore 7 │ │ │ │ + // 161: aload 7 │ │ │ │ + // 163: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 166: astore 7 │ │ │ │ + // 168: aload_3 │ │ │ │ + // 169: iload 8 │ │ │ │ + // 171: aload 7 │ │ │ │ + // 173: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 176: iconst_2 │ │ │ │ + // 177: istore 8 │ │ │ │ + // 179: aload 5 │ │ │ │ + // 181: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 184: astore 7 │ │ │ │ + // 186: aload_3 │ │ │ │ + // 187: iload 8 │ │ │ │ + // 189: aload 7 │ │ │ │ + // 191: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 194: iconst_3 │ │ │ │ + // 195: istore 8 │ │ │ │ + // 197: aload_2 │ │ │ │ + // 198: invokevirtual java/util/Date.getTime:()J │ │ │ │ + // 201: lstore 9 │ │ │ │ + // 203: ldc2_w 1000 │ │ │ │ + // 206: lstore 11 │ │ │ │ + // 208: lload 9 │ │ │ │ + // 210: lload 11 │ │ │ │ + // 212: ldiv │ │ │ │ + // 213: lstore 9 │ │ │ │ + // 215: aload_3 │ │ │ │ + // 216: iload 8 │ │ │ │ + // 218: lload 9 │ │ │ │ + // 220: invokevirtual com/crashlytics/android/h.a:(IJ)V │ │ │ │ + // 223: aload_3 │ │ │ │ + // 224: ldc_w "Failed to flush to session begin file." │ │ │ │ + // 227: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 230: ldc_w "Failed to close begin session file." │ │ │ │ + // 233: astore_2 │ │ │ │ + // 234: aload 4 │ │ │ │ + // 236: aload_2 │ │ │ │ + // 237: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 240: new Lcom/crashlytics/android/f; │ │ │ │ + // 243: astore 4 │ │ │ │ + // 245: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 248: astore_2 │ │ │ │ + // 249: aload_2 │ │ │ │ + // 250: invokevirtual com/crashlytics/android/internal/v.h:()Ljava/io/File; │ │ │ │ + // 253: astore_2 │ │ │ │ + // 254: new Ljava/lang/StringBuilder; │ │ │ │ + // 257: astore_3 │ │ │ │ + // 258: aload_3 │ │ │ │ + // 259: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 262: aload_3 │ │ │ │ + // 263: aload 5 │ │ │ │ + // 265: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 268: astore_3 │ │ │ │ + // 269: ldc_w "SessionApp" │ │ │ │ + // 272: astore 6 │ │ │ │ + // 274: aload_3 │ │ │ │ + // 275: aload 6 │ │ │ │ + // 277: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 280: astore_3 │ │ │ │ + // 281: aload_3 │ │ │ │ + // 282: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 285: astore_3 │ │ │ │ + // 286: aload 4 │ │ │ │ + // 288: aload_2 │ │ │ │ + // 289: aload_3 │ │ │ │ + // 290: invokespecial com/crashlytics/android/f.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ + // 293: aload 4 │ │ │ │ + // 295: invokestatic com/crashlytics/android/h.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ │ │ │ + // 298: astore_3 │ │ │ │ + // 299: invokestatic com/crashlytics/android/Crashlytics.d:()Ljava/lang/String; │ │ │ │ + // 302: astore_2 │ │ │ │ + // 303: aload_2 │ │ │ │ + // 304: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 307: astore_2 │ │ │ │ + // 308: invokestatic com/crashlytics/android/Crashlytics.g:()Ljava/lang/String; │ │ │ │ + // 311: astore 6 │ │ │ │ + // 313: aload 6 │ │ │ │ + // 315: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 318: astore 6 │ │ │ │ + // 320: invokestatic com/crashlytics/android/Crashlytics.f:()Ljava/lang/String; │ │ │ │ + // 323: astore 7 │ │ │ │ + // 325: aload 7 │ │ │ │ + // 327: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 330: astore 7 │ │ │ │ + // 332: invokestatic com/crashlytics/android/Crashlytics.h:()Ljava/lang/String; │ │ │ │ + // 335: astore 13 │ │ │ │ + // 337: aload 13 │ │ │ │ + // 339: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 342: pop │ │ │ │ + // 343: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 346: astore 13 │ │ │ │ + // 348: aload 13 │ │ │ │ + // 350: invokevirtual com/crashlytics/android/Crashlytics.getContext:()Landroid/content/Context; │ │ │ │ + // 353: astore 13 │ │ │ │ + // 355: aload 13 │ │ │ │ + // 357: invokevirtual android/content/Context.getPackageCodePath:()Ljava/lang/String; │ │ │ │ + // 360: astore 13 │ │ │ │ + // 362: aload 13 │ │ │ │ + // 364: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 367: pop │ │ │ │ + // 368: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 371: astore 13 │ │ │ │ + // 373: aload 13 │ │ │ │ + // 375: invokevirtual com/crashlytics/android/Crashlytics.b:()Lcom/crashlytics/android/internal/ao; │ │ │ │ + // 378: astore 13 │ │ │ │ + // 380: aload 13 │ │ │ │ + // 382: invokevirtual com/crashlytics/android/internal/ao.b:()Ljava/lang/String; │ │ │ │ + // 385: astore 13 │ │ │ │ + // 387: aload 13 │ │ │ │ + // 389: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 392: astore 13 │ │ │ │ + // 394: invokestatic com/crashlytics/android/Crashlytics.e:()Ljava/lang/String; │ │ │ │ + // 397: astore 14 │ │ │ │ + // 399: aload 14 │ │ │ │ + // 401: invokestatic com/crashlytics/android/internal/ai.a:(Ljava/lang/String;)Lcom/crashlytics/android/internal/ai; │ │ │ │ + // 404: astore 14 │ │ │ │ + // 406: aload 14 │ │ │ │ + // 408: invokevirtual com/crashlytics/android/internal/ai.a:()I │ │ │ │ + // 411: istore 15 │ │ │ │ + // 413: bipush 7 │ │ │ │ + // 415: istore 16 │ │ │ │ + // 417: iconst_2 │ │ │ │ + // 418: istore 17 │ │ │ │ + // 420: aload_3 │ │ │ │ + // 421: iload 16 │ │ │ │ + // 423: iload 17 │ │ │ │ + // 425: invokevirtual com/crashlytics/android/h.g:(II)V │ │ │ │ + // 428: iconst_1 │ │ │ │ + // 429: istore 16 │ │ │ │ + // 431: iload 16 │ │ │ │ + // 433: aload_2 │ │ │ │ + // 434: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 437: iconst_0 │ │ │ │ + // 438: iadd │ │ │ │ + // 439: istore 16 │ │ │ │ + // 441: iconst_2 │ │ │ │ + // 442: istore 17 │ │ │ │ + // 444: iload 17 │ │ │ │ + // 446: aload 6 │ │ │ │ + // 448: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 451: istore 17 │ │ │ │ + // 453: iload 16 │ │ │ │ + // 455: iload 17 │ │ │ │ + // 457: iadd │ │ │ │ + // 458: istore 16 │ │ │ │ + // 460: iconst_3 │ │ │ │ + // 461: istore 17 │ │ │ │ + // 463: iload 17 │ │ │ │ + // 465: aload 7 │ │ │ │ + // 467: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 470: istore 17 │ │ │ │ + // 472: iload 16 │ │ │ │ + // 474: iload 17 │ │ │ │ + // 476: iadd │ │ │ │ + // 477: istore 16 │ │ │ │ + // 479: invokestatic com/crashlytics/android/v.q:()I │ │ │ │ + // 482: istore 17 │ │ │ │ + // 484: iconst_5 │ │ │ │ + // 485: istore 18 │ │ │ │ + // 487: iload 18 │ │ │ │ + // 489: invokestatic com/crashlytics/android/h.a:(I)I │ │ │ │ + // 492: istore 18 │ │ │ │ + // 494: iload 17 │ │ │ │ + // 496: invokestatic com/crashlytics/android/h.c:(I)I │ │ │ │ + // 499: istore 19 │ │ │ │ + // 501: iload 18 │ │ │ │ + // 503: iload 19 │ │ │ │ + // 505: iadd │ │ │ │ + // 506: istore 18 │ │ │ │ + // 508: iload 17 │ │ │ │ + // 510: iload 18 │ │ │ │ + // 512: iadd │ │ │ │ + // 513: istore 17 │ │ │ │ + // 515: iload 16 │ │ │ │ + // 517: iload 17 │ │ │ │ + // 519: iadd │ │ │ │ + // 520: istore 16 │ │ │ │ + // 522: bipush 6 │ │ │ │ + // 524: istore 17 │ │ │ │ + // 526: iload 17 │ │ │ │ + // 528: aload 13 │ │ │ │ + // 530: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 533: istore 17 │ │ │ │ + // 535: iload 16 │ │ │ │ + // 537: iload 17 │ │ │ │ + // 539: iadd │ │ │ │ + // 540: istore 16 │ │ │ │ + // 542: bipush 10 │ │ │ │ + // 544: istore 17 │ │ │ │ + // 546: iload 17 │ │ │ │ + // 548: iload 15 │ │ │ │ + // 550: invokestatic com/crashlytics/android/h.e:(II)I │ │ │ │ + // 553: istore 17 │ │ │ │ + // 555: iload 16 │ │ │ │ + // 557: iload 17 │ │ │ │ + // 559: iadd │ │ │ │ + // 560: istore 16 │ │ │ │ + // 562: aload_3 │ │ │ │ + // 563: iload 16 │ │ │ │ + // 565: invokevirtual com/crashlytics/android/h.b:(I)V │ │ │ │ + // 568: iconst_1 │ │ │ │ + // 569: istore 16 │ │ │ │ + // 571: aload_3 │ │ │ │ + // 572: iload 16 │ │ │ │ + // 574: aload_2 │ │ │ │ + // 575: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 578: iconst_2 │ │ │ │ + // 579: istore 20 │ │ │ │ + // 581: aload_3 │ │ │ │ + // 582: iload 20 │ │ │ │ + // 584: aload 6 │ │ │ │ + // 586: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 589: iconst_3 │ │ │ │ + // 590: istore 20 │ │ │ │ + // 592: aload_3 │ │ │ │ + // 593: iload 20 │ │ │ │ + // 595: aload 7 │ │ │ │ + // 597: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 600: iconst_5 │ │ │ │ + // 601: istore 20 │ │ │ │ + // 603: iconst_2 │ │ │ │ + // 604: istore 8 │ │ │ │ + // 606: aload_3 │ │ │ │ + // 607: iload 20 │ │ │ │ + // 609: iload 8 │ │ │ │ + // 611: invokevirtual com/crashlytics/android/h.g:(II)V │ │ │ │ + // 614: invokestatic com/crashlytics/android/v.q:()I │ │ │ │ + // 617: istore 20 │ │ │ │ + // 619: aload_3 │ │ │ │ + // 620: iload 20 │ │ │ │ + // 622: invokevirtual com/crashlytics/android/h.b:(I)V │ │ │ │ + // 625: iconst_1 │ │ │ │ + // 626: istore 20 │ │ │ │ + // 628: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 631: astore 6 │ │ │ │ + // 633: aload 6 │ │ │ │ + // 635: invokevirtual com/crashlytics/android/Crashlytics.getContext:()Landroid/content/Context; │ │ │ │ + // 638: astore 6 │ │ │ │ + // 640: iconst_0 │ │ │ │ + // 641: istore 21 │ │ │ │ + // 643: aconst_null │ │ │ │ + // 644: astore 7 │ │ │ │ + // 646: aload 6 │ │ │ │ + // 648: iconst_0 │ │ │ │ + // 649: invokestatic com/crashlytics/android/internal/r.a:(Landroid/content/Context;Z)Ljava/lang/String; │ │ │ │ + // 652: astore 6 │ │ │ │ + // 654: aload_3 │ │ │ │ + // 655: iload 20 │ │ │ │ + // 657: aload 6 │ │ │ │ + // 659: invokevirtual com/crashlytics/android/h.a:(ILjava/lang/String;)V │ │ │ │ + // 662: bipush 6 │ │ │ │ + // 664: istore 20 │ │ │ │ + // 666: aload_3 │ │ │ │ + // 667: iload 20 │ │ │ │ + // 669: aload 13 │ │ │ │ + // 671: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 674: bipush 10 │ │ │ │ + // 676: istore 20 │ │ │ │ + // 678: aload_3 │ │ │ │ + // 679: iload 20 │ │ │ │ + // 681: iload 15 │ │ │ │ + // 683: invokevirtual com/crashlytics/android/h.b:(II)V │ │ │ │ + // 686: aload_3 │ │ │ │ + // 687: ldc_w "Failed to flush to session app file." │ │ │ │ + // 690: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 693: ldc_w "Failed to close session app file." │ │ │ │ + // 696: astore_2 │ │ │ │ + // 697: aload 4 │ │ │ │ + // 699: aload_2 │ │ │ │ + // 700: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 703: new Lcom/crashlytics/android/f; │ │ │ │ + // 706: astore_3 │ │ │ │ + // 707: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 710: astore_2 │ │ │ │ + // 711: aload_2 │ │ │ │ + // 712: invokevirtual com/crashlytics/android/internal/v.h:()Ljava/io/File; │ │ │ │ + // 715: astore_2 │ │ │ │ + // 716: new Ljava/lang/StringBuilder; │ │ │ │ + // 719: astore 4 │ │ │ │ + // 721: aload 4 │ │ │ │ + // 723: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 726: aload 4 │ │ │ │ + // 728: aload 5 │ │ │ │ + // 730: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 733: astore 4 │ │ │ │ + // 735: ldc_w "SessionOS" │ │ │ │ + // 738: astore 6 │ │ │ │ + // 740: aload 4 │ │ │ │ + // 742: aload 6 │ │ │ │ + // 744: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 747: astore 4 │ │ │ │ + // 749: aload 4 │ │ │ │ + // 751: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 754: astore 4 │ │ │ │ + // 756: aload_3 │ │ │ │ + // 757: aload_2 │ │ │ │ + // 758: aload 4 │ │ │ │ + // 760: invokespecial com/crashlytics/android/f.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ + // 763: aload_3 │ │ │ │ + // 764: invokestatic com/crashlytics/android/h.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ │ │ │ + // 767: astore_1 │ │ │ │ + // 768: getstatic android/os/Build$VERSION.RELEASE:Ljava/lang/String; │ │ │ │ + // 771: astore_2 │ │ │ │ + // 772: aload_2 │ │ │ │ + // 773: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 776: astore_2 │ │ │ │ + // 777: getstatic android/os/Build$VERSION.CODENAME:Ljava/lang/String; │ │ │ │ + // 780: astore 4 │ │ │ │ + // 782: aload 4 │ │ │ │ + // 784: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 787: astore 4 │ │ │ │ + // 789: invokestatic com/crashlytics/android/internal/ab.e:()Z │ │ │ │ + // 792: istore 8 │ │ │ │ + // 794: bipush 8 │ │ │ │ + // 796: istore 21 │ │ │ │ + // 798: iconst_2 │ │ │ │ + // 799: istore 22 │ │ │ │ + // 801: aload_1 │ │ │ │ + // 802: iload 21 │ │ │ │ + // 804: iload 22 │ │ │ │ + // 806: invokevirtual com/crashlytics/android/h.g:(II)V │ │ │ │ + // 809: iconst_1 │ │ │ │ + // 810: istore 21 │ │ │ │ + // 812: iconst_3 │ │ │ │ + // 813: istore 22 │ │ │ │ + // 815: iload 21 │ │ │ │ + // 817: iload 22 │ │ │ │ + // 819: invokestatic com/crashlytics/android/h.e:(II)I │ │ │ │ + // 822: iconst_0 │ │ │ │ + // 823: iadd │ │ │ │ + // 824: istore 21 │ │ │ │ + // 826: iconst_2 │ │ │ │ + // 827: istore 22 │ │ │ │ + // 829: iload 22 │ │ │ │ + // 831: aload_2 │ │ │ │ + // 832: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 835: istore 22 │ │ │ │ + // 837: iload 21 │ │ │ │ + // 839: iload 22 │ │ │ │ + // 841: iadd │ │ │ │ + // 842: istore 21 │ │ │ │ + // 844: iconst_3 │ │ │ │ + // 845: istore 22 │ │ │ │ + // 847: iload 22 │ │ │ │ + // 849: aload 4 │ │ │ │ + // 851: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 854: istore 22 │ │ │ │ + // 856: iload 21 │ │ │ │ + // 858: iload 22 │ │ │ │ + // 860: iadd │ │ │ │ + // 861: istore 21 │ │ │ │ + // 863: iconst_4 │ │ │ │ + // 864: istore 22 │ │ │ │ + // 866: iload 22 │ │ │ │ + // 868: iload 8 │ │ │ │ + // 870: invokestatic com/crashlytics/android/h.b:(IZ)I │ │ │ │ + // 873: istore 22 │ │ │ │ + // 875: iload 21 │ │ │ │ + // 877: iload 22 │ │ │ │ + // 879: iadd │ │ │ │ + // 880: istore 21 │ │ │ │ + // 882: aload_1 │ │ │ │ + // 883: iload 21 │ │ │ │ + // 885: invokevirtual com/crashlytics/android/h.b:(I)V │ │ │ │ + // 888: iconst_1 │ │ │ │ + // 889: istore 21 │ │ │ │ + // 891: iconst_3 │ │ │ │ + // 892: istore 22 │ │ │ │ + // 894: aload_1 │ │ │ │ + // 895: iload 21 │ │ │ │ + // 897: iload 22 │ │ │ │ + // 899: invokevirtual com/crashlytics/android/h.b:(II)V │ │ │ │ + // 902: iconst_2 │ │ │ │ + // 903: istore 21 │ │ │ │ + // 905: aload_1 │ │ │ │ + // 906: iload 21 │ │ │ │ + // 908: aload_2 │ │ │ │ + // 909: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 912: iconst_3 │ │ │ │ + // 913: istore 20 │ │ │ │ + // 915: aload_1 │ │ │ │ + // 916: iload 20 │ │ │ │ + // 918: aload 4 │ │ │ │ + // 920: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 923: iconst_4 │ │ │ │ + // 924: istore 20 │ │ │ │ + // 926: aload_1 │ │ │ │ + // 927: iload 20 │ │ │ │ + // 929: iload 8 │ │ │ │ + // 931: invokevirtual com/crashlytics/android/h.a:(IZ)V │ │ │ │ + // 934: aload_1 │ │ │ │ + // 935: ldc_w "Failed to flush to session OS file." │ │ │ │ + // 938: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 941: aload_3 │ │ │ │ + // 942: ldc_w "Failed to close session OS file." │ │ │ │ + // 945: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 948: aload_0 │ │ │ │ + // 949: aload 5 │ │ │ │ + // 951: invokespecial com/crashlytics/android/v.c:(Ljava/lang/String;)V │ │ │ │ + // 954: return │ │ │ │ + // 955: astore_2 │ │ │ │ + // 956: aconst_null │ │ │ │ + // 957: astore_3 │ │ │ │ + // 958: aload_0 │ │ │ │ + // 959: aload_2 │ │ │ │ + // 960: aload_1 │ │ │ │ + // 961: invokespecial com/crashlytics/android/v.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ + // 964: aload_2 │ │ │ │ + // 965: athrow │ │ │ │ + // 966: astore_2 │ │ │ │ + // 967: aload_1 │ │ │ │ + // 968: astore 4 │ │ │ │ + // 970: aload_3 │ │ │ │ + // 971: astore_1 │ │ │ │ + // 972: aload_1 │ │ │ │ + // 973: ldc_w "Failed to flush to session begin file." │ │ │ │ + // 976: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 979: aload 4 │ │ │ │ + // 981: ldc_w "Failed to close begin session file." │ │ │ │ + // 984: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 987: aload_2 │ │ │ │ + // 988: athrow │ │ │ │ + // 989: astore_2 │ │ │ │ + // 990: aconst_null │ │ │ │ + // 991: astore_3 │ │ │ │ + // 992: aload_0 │ │ │ │ + // 993: aload_2 │ │ │ │ + // 994: aload_3 │ │ │ │ + // 995: invokespecial com/crashlytics/android/v.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ + // 998: aload_2 │ │ │ │ + // 999: athrow │ │ │ │ + // 1000: astore_2 │ │ │ │ + // 1001: aload_3 │ │ │ │ + // 1002: astore 4 │ │ │ │ + // 1004: aload_1 │ │ │ │ + // 1005: astore_3 │ │ │ │ + // 1006: aload_3 │ │ │ │ + // 1007: ldc_w "Failed to flush to session app file." │ │ │ │ + // 1010: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 1013: aload 4 │ │ │ │ + // 1015: ldc_w "Failed to close session app file." │ │ │ │ + // 1018: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 1021: aload_2 │ │ │ │ + // 1022: athrow │ │ │ │ + // 1023: astore_2 │ │ │ │ + // 1024: aconst_null │ │ │ │ + // 1025: astore_3 │ │ │ │ + // 1026: aload_0 │ │ │ │ + // 1027: aload_2 │ │ │ │ + // 1028: aload_3 │ │ │ │ + // 1029: invokespecial com/crashlytics/android/v.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ + // 1032: aload_2 │ │ │ │ + // 1033: athrow │ │ │ │ + // 1034: astore_2 │ │ │ │ + // 1035: aload_1 │ │ │ │ + // 1036: ldc_w "Failed to flush to session OS file." │ │ │ │ + // 1039: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 1042: aload_3 │ │ │ │ + // 1043: ldc_w "Failed to close session OS file." │ │ │ │ + // 1046: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 1049: aload_2 │ │ │ │ + // 1050: athrow │ │ │ │ + // 1051: astore_2 │ │ │ │ + // 1052: aconst_null │ │ │ │ + // 1053: astore_3 │ │ │ │ + // 1054: goto 1035 │ │ │ │ + // 1057: astore_2 │ │ │ │ + // 1058: goto 1026 │ │ │ │ + // 1061: astore_2 │ │ │ │ + // 1062: aconst_null │ │ │ │ + // 1063: astore_3 │ │ │ │ + // 1064: aconst_null │ │ │ │ + // 1065: astore 4 │ │ │ │ + // 1067: goto 1006 │ │ │ │ + // 1070: astore_2 │ │ │ │ + // 1071: aconst_null │ │ │ │ + // 1072: astore_3 │ │ │ │ + // 1073: goto 1006 │ │ │ │ + // 1076: astore_2 │ │ │ │ + // 1077: goto 1006 │ │ │ │ + // 1080: astore_2 │ │ │ │ + // 1081: aload 4 │ │ │ │ + // 1083: astore_3 │ │ │ │ + // 1084: goto 992 │ │ │ │ + // 1087: astore_2 │ │ │ │ + // 1088: aload_3 │ │ │ │ + // 1089: astore_1 │ │ │ │ + // 1090: aload 4 │ │ │ │ + // 1092: astore_3 │ │ │ │ + // 1093: goto 992 │ │ │ │ + // 1096: astore_2 │ │ │ │ + // 1097: aconst_null │ │ │ │ + // 1098: astore 4 │ │ │ │ + // 1100: goto 972 │ │ │ │ + // 1103: astore_2 │ │ │ │ + // 1104: goto 972 │ │ │ │ + // 1107: astore_2 │ │ │ │ + // 1108: aload_3 │ │ │ │ + // 1109: astore_1 │ │ │ │ + // 1110: goto 972 │ │ │ │ + // 1113: astore_2 │ │ │ │ + // 1114: aconst_null │ │ │ │ + // 1115: astore_3 │ │ │ │ + // 1116: aload 4 │ │ │ │ + // 1118: astore_1 │ │ │ │ + // 1119: goto 958 │ │ │ │ + // 1122: astore_2 │ │ │ │ + // 1123: aload 4 │ │ │ │ + // 1125: astore_1 │ │ │ │ + // 1126: goto 958 │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 84 87 955 958 Ljava/lang/Exception; │ │ │ │ + // 84 87 1096 1103 Any │ │ │ │ + // 89 92 955 958 Ljava/lang/Exception; │ │ │ │ + // 89 92 1096 1103 Any │ │ │ │ + // 93 97 955 958 Ljava/lang/Exception; │ │ │ │ + // 93 97 1096 1103 Any │ │ │ │ + // 98 101 955 958 Ljava/lang/Exception; │ │ │ │ + // 98 101 1096 1103 Any │ │ │ │ + // 103 108 955 958 Ljava/lang/Exception; │ │ │ │ + // 103 108 1096 1103 Any │ │ │ │ + // 110 115 955 958 Ljava/lang/Exception; │ │ │ │ + // 110 115 1096 1103 Any │ │ │ │ + // 124 129 955 958 Ljava/lang/Exception; │ │ │ │ + // 124 129 1096 1103 Any │ │ │ │ + // 131 136 955 958 Ljava/lang/Exception; │ │ │ │ + // 131 136 1096 1103 Any │ │ │ │ + // 141 146 955 958 Ljava/lang/Exception; │ │ │ │ + // 141 146 1096 1103 Any │ │ │ │ + // 146 151 1113 1122 Ljava/lang/Exception; │ │ │ │ + // 146 151 1103 1107 Any │ │ │ │ + // 155 159 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 155 159 1107 1113 Any │ │ │ │ + // 161 166 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 161 166 1107 1113 Any │ │ │ │ + // 171 176 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 171 176 1107 1113 Any │ │ │ │ + // 179 184 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 179 184 1107 1113 Any │ │ │ │ + // 189 194 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 189 194 1107 1113 Any │ │ │ │ + // 197 201 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 197 201 1107 1113 Any │ │ │ │ + // 210 213 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 210 213 1107 1113 Any │ │ │ │ + // 218 223 1122 1129 Ljava/lang/Exception; │ │ │ │ + // 218 223 1107 1113 Any │ │ │ │ + // 240 243 989 992 Ljava/lang/Exception; │ │ │ │ + // 240 243 1061 1070 Any │ │ │ │ + // 245 248 989 992 Ljava/lang/Exception; │ │ │ │ + // 245 248 1061 1070 Any │ │ │ │ + // 249 253 989 992 Ljava/lang/Exception; │ │ │ │ + // 249 253 1061 1070 Any │ │ │ │ + // 254 257 989 992 Ljava/lang/Exception; │ │ │ │ + // 254 257 1061 1070 Any │ │ │ │ + // 258 262 989 992 Ljava/lang/Exception; │ │ │ │ + // 258 262 1061 1070 Any │ │ │ │ + // 263 268 989 992 Ljava/lang/Exception; │ │ │ │ + // 263 268 1061 1070 Any │ │ │ │ + // 275 280 989 992 Ljava/lang/Exception; │ │ │ │ + // 275 280 1061 1070 Any │ │ │ │ + // 281 285 989 992 Ljava/lang/Exception; │ │ │ │ + // 281 285 1061 1070 Any │ │ │ │ + // 289 293 989 992 Ljava/lang/Exception; │ │ │ │ + // 289 293 1061 1070 Any │ │ │ │ + // 293 298 1080 1087 Ljava/lang/Exception; │ │ │ │ + // 293 298 1070 1076 Any │ │ │ │ + // 299 302 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 299 302 1076 1080 Any │ │ │ │ + // 303 307 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 303 307 1076 1080 Any │ │ │ │ + // 308 311 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 308 311 1076 1080 Any │ │ │ │ + // 313 318 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 313 318 1076 1080 Any │ │ │ │ + // 320 323 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 320 323 1076 1080 Any │ │ │ │ + // 325 330 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 325 330 1076 1080 Any │ │ │ │ + // 332 335 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 332 335 1076 1080 Any │ │ │ │ + // 337 343 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 337 343 1076 1080 Any │ │ │ │ + // 343 346 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 343 346 1076 1080 Any │ │ │ │ + // 348 353 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 348 353 1076 1080 Any │ │ │ │ + // 355 360 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 355 360 1076 1080 Any │ │ │ │ + // 362 368 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 362 368 1076 1080 Any │ │ │ │ + // 368 371 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 368 371 1076 1080 Any │ │ │ │ + // 373 378 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 373 378 1076 1080 Any │ │ │ │ + // 380 385 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 380 385 1076 1080 Any │ │ │ │ + // 387 392 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 387 392 1076 1080 Any │ │ │ │ + // 394 397 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 394 397 1076 1080 Any │ │ │ │ + // 399 404 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 399 404 1076 1080 Any │ │ │ │ + // 406 411 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 406 411 1076 1080 Any │ │ │ │ + // 423 428 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 423 428 1076 1080 Any │ │ │ │ + // 433 437 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 433 437 1076 1080 Any │ │ │ │ + // 446 451 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 446 451 1076 1080 Any │ │ │ │ + // 465 470 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 465 470 1076 1080 Any │ │ │ │ + // 479 482 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 479 482 1076 1080 Any │ │ │ │ + // 487 492 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 487 492 1076 1080 Any │ │ │ │ + // 494 499 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 494 499 1076 1080 Any │ │ │ │ + // 528 533 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 528 533 1076 1080 Any │ │ │ │ + // 548 553 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 548 553 1076 1080 Any │ │ │ │ + // 563 568 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 563 568 1076 1080 Any │ │ │ │ + // 574 578 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 574 578 1076 1080 Any │ │ │ │ + // 584 589 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 584 589 1076 1080 Any │ │ │ │ + // 595 600 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 595 600 1076 1080 Any │ │ │ │ + // 609 614 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 609 614 1076 1080 Any │ │ │ │ + // 614 617 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 614 617 1076 1080 Any │ │ │ │ + // 620 625 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 620 625 1076 1080 Any │ │ │ │ + // 628 631 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 628 631 1076 1080 Any │ │ │ │ + // 633 638 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 633 638 1076 1080 Any │ │ │ │ + // 648 652 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 648 652 1076 1080 Any │ │ │ │ + // 657 662 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 657 662 1076 1080 Any │ │ │ │ + // 669 674 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 669 674 1076 1080 Any │ │ │ │ + // 681 686 1087 1096 Ljava/lang/Exception; │ │ │ │ + // 681 686 1076 1080 Any │ │ │ │ + // 703 706 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 703 706 1051 1057 Any │ │ │ │ + // 707 710 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 707 710 1051 1057 Any │ │ │ │ + // 711 715 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 711 715 1051 1057 Any │ │ │ │ + // 716 719 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 716 719 1051 1057 Any │ │ │ │ + // 721 726 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 721 726 1051 1057 Any │ │ │ │ + // 728 733 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 728 733 1051 1057 Any │ │ │ │ + // 742 747 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 742 747 1051 1057 Any │ │ │ │ + // 749 754 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 749 754 1051 1057 Any │ │ │ │ + // 758 763 1023 1026 Ljava/lang/Exception; │ │ │ │ + // 758 763 1051 1057 Any │ │ │ │ + // 763 767 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 763 767 1034 1035 Any │ │ │ │ + // 768 771 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 768 771 1034 1035 Any │ │ │ │ + // 772 776 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 772 776 1034 1035 Any │ │ │ │ + // 777 780 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 777 780 1034 1035 Any │ │ │ │ + // 782 787 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 782 787 1034 1035 Any │ │ │ │ + // 789 792 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 789 792 1034 1035 Any │ │ │ │ + // 804 809 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 804 809 1034 1035 Any │ │ │ │ + // 817 822 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 817 822 1034 1035 Any │ │ │ │ + // 831 835 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 831 835 1034 1035 Any │ │ │ │ + // 849 854 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 849 854 1034 1035 Any │ │ │ │ + // 868 873 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 868 873 1034 1035 Any │ │ │ │ + // 883 888 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 883 888 1034 1035 Any │ │ │ │ + // 897 902 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 897 902 1034 1035 Any │ │ │ │ + // 908 912 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 908 912 1034 1035 Any │ │ │ │ + // 918 923 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 918 923 1034 1035 Any │ │ │ │ + // 929 934 1057 1061 Ljava/lang/Exception; │ │ │ │ + // 929 934 1034 1035 Any │ │ │ │ + // 960 964 966 972 Any │ │ │ │ + // 964 966 966 972 Any │ │ │ │ + // 994 998 1000 1006 Any │ │ │ │ + // 998 1000 1000 1006 Any │ │ │ │ + // 1028 1032 1034 1035 Any │ │ │ │ + // 1032 1034 1034 1035 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IndexOutOfBoundsException: Index: 585, Size: 585 │ │ │ │ + // at java.util.ArrayList.rangeCheck(ArrayList.java:659) │ │ │ │ + // at java.util.ArrayList.get(ArrayList.java:435) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void m() { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 3: astore_1 │ │ │ │ + // 4: aload_1 │ │ │ │ + // 5: invokespecial java/util/HashSet.:()V │ │ │ │ + // 8: aload_0 │ │ │ │ + // 9: invokespecial com/crashlytics/android/v.o:()[Ljava/io/File; │ │ │ │ + // 12: astore_2 │ │ │ │ + // 13: getstatic com/crashlytics/android/v.b:Ljava/util/Comparator; │ │ │ │ + // 16: astore_3 │ │ │ │ + // 17: aload_2 │ │ │ │ + // 18: aload_3 │ │ │ │ + // 19: invokestatic java/util/Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V │ │ │ │ + // 22: aload_2 │ │ │ │ + // 23: arraylength │ │ │ │ + // 24: istore 4 │ │ │ │ + // 26: bipush 8 │ │ │ │ + // 28: iload 4 │ │ │ │ + // 30: invokestatic java/lang/Math.min:(II)I │ │ │ │ + // 33: istore 4 │ │ │ │ + // 35: iconst_0 │ │ │ │ + // 36: istore 5 │ │ │ │ + // 38: aconst_null │ │ │ │ + // 39: astore_3 │ │ │ │ + // 40: iload 5 │ │ │ │ + // 42: iload 4 │ │ │ │ + // 44: if_icmpge 74 │ │ │ │ + // 47: aload_2 │ │ │ │ + // 48: iload 5 │ │ │ │ + // 50: aaload │ │ │ │ + // 51: invokestatic com/crashlytics/android/v.a:(Ljava/io/File;)Ljava/lang/String; │ │ │ │ + // 54: astore 6 │ │ │ │ + // 56: aload_1 │ │ │ │ + // 57: aload 6 │ │ │ │ + // 59: invokeinterface java/util/Set.add:(Ljava/lang/Object;)Z │ │ │ │ + // 64: pop │ │ │ │ + // 65: iload 5 │ │ │ │ + // 67: iconst_1 │ │ │ │ + // 68: iadd │ │ │ │ + // 69: istore 5 │ │ │ │ + // 71: goto 40 │ │ │ │ + // 74: new Lcom/crashlytics/android/Q; │ │ │ │ + // 77: astore_3 │ │ │ │ + // 78: aload_3 │ │ │ │ + // 79: iconst_0 │ │ │ │ + // 80: invokespecial com/crashlytics/android/Q.:(B)V │ │ │ │ + // 83: aload_0 │ │ │ │ + // 84: aload_3 │ │ │ │ + // 85: invokespecial com/crashlytics/android/v.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ + // 88: astore_2 │ │ │ │ + // 89: aload_2 │ │ │ │ + // 90: arraylength │ │ │ │ + // 91: istore 4 │ │ │ │ + // 93: iconst_0 │ │ │ │ + // 94: istore 5 │ │ │ │ + // 96: aconst_null │ │ │ │ + // 97: astore_3 │ │ │ │ + // 98: iload 5 │ │ │ │ + // 100: iload 4 │ │ │ │ + // 102: if_icmpge 228 │ │ │ │ + // 105: aload_2 │ │ │ │ + // 106: iload 5 │ │ │ │ + // 108: aaload │ │ │ │ + // 109: astore 6 │ │ │ │ + // 111: aload 6 │ │ │ │ + // 113: invokevirtual java/io/File.getName:()Ljava/lang/String; │ │ │ │ + // 116: astore 7 │ │ │ │ + // 118: getstatic com/crashlytics/android/v.d:Ljava/util/regex/Pattern; │ │ │ │ + // 121: aload 7 │ │ │ │ + // 123: invokevirtual java/util/regex/Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ │ │ │ + // 126: astore 8 │ │ │ │ + // 128: aload 8 │ │ │ │ + // 130: invokevirtual java/util/regex/Matcher.matches:()Z │ │ │ │ + // 133: pop │ │ │ │ + // 134: iconst_1 │ │ │ │ + // 135: istore 9 │ │ │ │ + // 137: aload 8 │ │ │ │ + // 139: iload 9 │ │ │ │ + // 141: invokevirtual java/util/regex/Matcher.group:(I)Ljava/lang/String; │ │ │ │ + // 144: astore 8 │ │ │ │ + // 146: aload_1 │ │ │ │ + // 147: aload 8 │ │ │ │ + // 149: invokeinterface java/util/Set.contains:(Ljava/lang/Object;)Z │ │ │ │ + // 154: istore 10 │ │ │ │ + // 156: iload 10 │ │ │ │ + // 158: ifne 219 │ │ │ │ + // 161: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 164: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 167: astore 8 │ │ │ │ + // 169: ldc "Crashlytics" │ │ │ │ + // 171: astore 11 │ │ │ │ + // 173: new Ljava/lang/StringBuilder; │ │ │ │ + // 176: astore 12 │ │ │ │ + // 178: ldc_w "Trimming open session file: " │ │ │ │ + // 181: astore 13 │ │ │ │ + // 183: aload 12 │ │ │ │ + // 185: aload 13 │ │ │ │ + // 187: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 190: aload 12 │ │ │ │ + // 192: aload 7 │ │ │ │ + // 194: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 197: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 200: astore 7 │ │ │ │ + // 202: aload 8 │ │ │ │ + // 204: aload 11 │ │ │ │ + // 206: aload 7 │ │ │ │ + // 208: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 213: aload 6 │ │ │ │ + // 215: invokevirtual java/io/File.delete:()Z │ │ │ │ + // 218: pop │ │ │ │ + // 219: iload 5 │ │ │ │ + // 221: iconst_1 │ │ │ │ + // 222: iadd │ │ │ │ + // 223: istore 5 │ │ │ │ + // 225: goto 98 │ │ │ │ + // 228: aload_0 │ │ │ │ + // 229: invokespecial com/crashlytics/android/v.n:()Ljava/lang/String; │ │ │ │ + // 232: astore_3 │ │ │ │ + // 233: aload_3 │ │ │ │ + // 234: ifnull 1731 │ │ │ │ + // 237: iconst_0 │ │ │ │ + // 238: istore 4 │ │ │ │ + // 240: aconst_null │ │ │ │ + // 241: astore 14 │ │ │ │ + // 243: iconst_0 │ │ │ │ + // 244: istore 15 │ │ │ │ + // 246: aconst_null │ │ │ │ + // 247: astore_1 │ │ │ │ + // 248: new Lcom/crashlytics/android/f; │ │ │ │ + // 251: astore_2 │ │ │ │ + // 252: aload_0 │ │ │ │ + // 253: getfield com/crashlytics/android/v.k:Ljava/io/File; │ │ │ │ + // 256: astore 6 │ │ │ │ + // 258: new Ljava/lang/StringBuilder; │ │ │ │ + // 261: astore 7 │ │ │ │ + // 263: aload 7 │ │ │ │ + // 265: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 268: aload 7 │ │ │ │ + // 270: aload_3 │ │ │ │ + // 271: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 274: astore_3 │ │ │ │ + // 275: ldc_w "SessionUser" │ │ │ │ + // 278: astore 7 │ │ │ │ + // 280: aload_3 │ │ │ │ + // 281: aload 7 │ │ │ │ + // 283: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 286: astore_3 │ │ │ │ + // 287: aload_3 │ │ │ │ + // 288: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 291: astore_3 │ │ │ │ + // 292: aload_2 │ │ │ │ + // 293: aload 6 │ │ │ │ + // 295: aload_3 │ │ │ │ + // 296: invokespecial com/crashlytics/android/f.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ + // 299: aload_2 │ │ │ │ + // 300: invokestatic com/crashlytics/android/h.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ │ │ │ + // 303: astore_1 │ │ │ │ + // 304: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 307: astore_3 │ │ │ │ + // 308: aload_3 │ │ │ │ + // 309: invokevirtual com/crashlytics/android/Crashlytics.m:()Ljava/lang/String; │ │ │ │ + // 312: astore_3 │ │ │ │ + // 313: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 316: astore 14 │ │ │ │ + // 318: aload 14 │ │ │ │ + // 320: invokevirtual com/crashlytics/android/Crashlytics.o:()Ljava/lang/String; │ │ │ │ + // 323: astore 14 │ │ │ │ + // 325: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 328: astore 6 │ │ │ │ + // 330: aload 6 │ │ │ │ + // 332: invokevirtual com/crashlytics/android/Crashlytics.n:()Ljava/lang/String; │ │ │ │ + // 335: astore 7 │ │ │ │ + // 337: aload_3 │ │ │ │ + // 338: ifnonnull 1283 │ │ │ │ + // 341: aload 14 │ │ │ │ + // 343: ifnonnull 1283 │ │ │ │ + // 346: aload 7 │ │ │ │ + // 348: ifnonnull 1283 │ │ │ │ + // 351: aload_1 │ │ │ │ + // 352: ldc_w "Failed to flush session user file." │ │ │ │ + // 355: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 358: ldc_w "Failed to close session user file." │ │ │ │ + // 361: astore_3 │ │ │ │ + // 362: aload_2 │ │ │ │ + // 363: aload_3 │ │ │ │ + // 364: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 367: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 370: invokevirtual com/crashlytics/android/Crashlytics.r:()Lcom/crashlytics/android/internal/aR; │ │ │ │ + // 373: astore_3 │ │ │ │ + // 374: aload_3 │ │ │ │ + // 375: ifnull 1708 │ │ │ │ + // 378: aload_3 │ │ │ │ + // 379: getfield com/crashlytics/android/internal/aR.a:I │ │ │ │ + // 382: istore 9 │ │ │ │ + // 384: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 387: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 390: astore_3 │ │ │ │ + // 391: ldc "Crashlytics" │ │ │ │ + // 393: astore_1 │ │ │ │ + // 394: ldc_w "Closing all open sessions." │ │ │ │ + // 397: astore_2 │ │ │ │ + // 398: aload_3 │ │ │ │ + // 399: aload_1 │ │ │ │ + // 400: aload_2 │ │ │ │ + // 401: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 406: aload_0 │ │ │ │ + // 407: invokespecial com/crashlytics/android/v.o:()[Ljava/io/File; │ │ │ │ + // 410: astore 12 │ │ │ │ + // 412: aload 12 │ │ │ │ + // 414: ifnull 1730 │ │ │ │ + // 417: aload 12 │ │ │ │ + // 419: arraylength │ │ │ │ + // 420: istore 5 │ │ │ │ + // 422: iload 5 │ │ │ │ + // 424: ifle 1730 │ │ │ │ + // 427: aload 12 │ │ │ │ + // 429: arraylength │ │ │ │ + // 430: istore 16 │ │ │ │ + // 432: iconst_0 │ │ │ │ + // 433: istore 5 │ │ │ │ + // 435: aconst_null │ │ │ │ + // 436: astore_3 │ │ │ │ + // 437: iconst_0 │ │ │ │ + // 438: istore 17 │ │ │ │ + // 440: aconst_null │ │ │ │ + // 441: astore 7 │ │ │ │ + // 443: iload 17 │ │ │ │ + // 445: iload 16 │ │ │ │ + // 447: if_icmpge 1730 │ │ │ │ + // 450: aload 12 │ │ │ │ + // 452: iload 17 │ │ │ │ + // 454: aaload │ │ │ │ + // 455: astore 18 │ │ │ │ + // 457: aload 18 │ │ │ │ + // 459: invokestatic com/crashlytics/android/v.a:(Ljava/io/File;)Ljava/lang/String; │ │ │ │ + // 462: astore 19 │ │ │ │ + // 464: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 467: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 470: astore_3 │ │ │ │ + // 471: new Ljava/lang/StringBuilder; │ │ │ │ + // 474: astore_2 │ │ │ │ + // 475: aload_2 │ │ │ │ + // 476: ldc_w "Closing session: " │ │ │ │ + // 479: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 482: aload_2 │ │ │ │ + // 483: aload 19 │ │ │ │ + // 485: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 488: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 491: astore_2 │ │ │ │ + // 492: aload_3 │ │ │ │ + // 493: ldc "Crashlytics" │ │ │ │ + // 495: aload_2 │ │ │ │ + // 496: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 501: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 504: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 507: astore_3 │ │ │ │ + // 508: new Ljava/lang/StringBuilder; │ │ │ │ + // 511: astore_2 │ │ │ │ + // 512: ldc_w "Collecting session parts for ID " │ │ │ │ + // 515: astore 14 │ │ │ │ + // 517: aload_2 │ │ │ │ + // 518: aload 14 │ │ │ │ + // 520: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 523: aload_2 │ │ │ │ + // 524: aload 19 │ │ │ │ + // 526: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 529: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 532: astore_2 │ │ │ │ + // 533: aload_3 │ │ │ │ + // 534: ldc "Crashlytics" │ │ │ │ + // 536: aload_2 │ │ │ │ + // 537: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 542: new Lcom/crashlytics/android/R; │ │ │ │ + // 545: astore_3 │ │ │ │ + // 546: new Ljava/lang/StringBuilder; │ │ │ │ + // 549: astore_1 │ │ │ │ + // 550: aload_1 │ │ │ │ + // 551: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 554: aload_1 │ │ │ │ + // 555: aload 19 │ │ │ │ + // 557: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 560: astore_1 │ │ │ │ + // 561: ldc_w "SessionCrash" │ │ │ │ + // 564: astore_2 │ │ │ │ + // 565: aload_1 │ │ │ │ + // 566: aload_2 │ │ │ │ + // 567: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 570: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 573: astore_1 │ │ │ │ + // 574: aload_3 │ │ │ │ + // 575: aload_1 │ │ │ │ + // 576: invokespecial com/crashlytics/android/R.:(Ljava/lang/String;)V │ │ │ │ + // 579: aload_0 │ │ │ │ + // 580: aload_3 │ │ │ │ + // 581: invokespecial com/crashlytics/android/v.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ + // 584: astore 20 │ │ │ │ + // 586: aload 20 │ │ │ │ + // 588: ifnull 1526 │ │ │ │ + // 591: aload 20 │ │ │ │ + // 593: arraylength │ │ │ │ + // 594: istore 5 │ │ │ │ + // 596: iload 5 │ │ │ │ + // 598: ifle 1526 │ │ │ │ + // 601: iconst_1 │ │ │ │ + // 602: istore 5 │ │ │ │ + // 604: iload 5 │ │ │ │ + // 606: istore 15 │ │ │ │ + // 608: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 611: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 614: astore_3 │ │ │ │ + // 615: getstatic java/util/Locale.US:Ljava/util/Locale; │ │ │ │ + // 618: astore 14 │ │ │ │ + // 620: ldc_w "Session %s has fatal exception: %s" │ │ │ │ + // 623: astore 6 │ │ │ │ + // 625: iconst_2 │ │ │ │ + // 626: istore 10 │ │ │ │ + // 628: iload 10 │ │ │ │ + // 630: anewarray Ljava/lang/Object; │ │ │ │ + // 633: astore 8 │ │ │ │ + // 635: aconst_null │ │ │ │ + // 636: astore 21 │ │ │ │ + // 638: aload 8 │ │ │ │ + // 640: iconst_0 │ │ │ │ + // 641: aload 19 │ │ │ │ + // 643: aastore │ │ │ │ + // 644: iconst_1 │ │ │ │ + // 645: istore 22 │ │ │ │ + // 647: iload 15 │ │ │ │ + // 649: invokestatic java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; │ │ │ │ + // 652: astore 23 │ │ │ │ + // 654: aload 8 │ │ │ │ + // 656: iload 22 │ │ │ │ + // 658: aload 23 │ │ │ │ + // 660: aastore │ │ │ │ + // 661: aload 14 │ │ │ │ + // 663: aload 6 │ │ │ │ + // 665: aload 8 │ │ │ │ + // 667: invokestatic java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ │ │ + // 670: astore 14 │ │ │ │ + // 672: aload_3 │ │ │ │ + // 673: ldc "Crashlytics" │ │ │ │ + // 675: aload 14 │ │ │ │ + // 677: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 682: new Lcom/crashlytics/android/R; │ │ │ │ + // 685: astore_3 │ │ │ │ + // 686: new Ljava/lang/StringBuilder; │ │ │ │ + // 689: astore_2 │ │ │ │ + // 690: aload_2 │ │ │ │ + // 691: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 694: aload_2 │ │ │ │ + // 695: aload 19 │ │ │ │ + // 697: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 700: astore_2 │ │ │ │ + // 701: ldc_w "SessionEvent" │ │ │ │ + // 704: astore 14 │ │ │ │ + // 706: aload_2 │ │ │ │ + // 707: aload 14 │ │ │ │ + // 709: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 712: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 715: astore_2 │ │ │ │ + // 716: aload_3 │ │ │ │ + // 717: aload_2 │ │ │ │ + // 718: invokespecial com/crashlytics/android/R.:(Ljava/lang/String;)V │ │ │ │ + // 721: aload_0 │ │ │ │ + // 722: aload_3 │ │ │ │ + // 723: invokespecial com/crashlytics/android/v.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ + // 726: astore 8 │ │ │ │ + // 728: aload 8 │ │ │ │ + // 730: ifnull 1539 │ │ │ │ + // 733: aload 8 │ │ │ │ + // 735: arraylength │ │ │ │ + // 736: istore 5 │ │ │ │ + // 738: iload 5 │ │ │ │ + // 740: ifle 1539 │ │ │ │ + // 743: iconst_1 │ │ │ │ + // 744: istore 5 │ │ │ │ + // 746: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 749: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 752: astore_2 │ │ │ │ + // 753: ldc "Crashlytics" │ │ │ │ + // 755: astore 14 │ │ │ │ + // 757: getstatic java/util/Locale.US:Ljava/util/Locale; │ │ │ │ + // 760: astore 6 │ │ │ │ + // 762: ldc_w "Session %s has non-fatal exceptions: %s" │ │ │ │ + // 765: astore 21 │ │ │ │ + // 767: iconst_2 │ │ │ │ + // 768: istore 24 │ │ │ │ + // 770: iload 24 │ │ │ │ + // 772: anewarray Ljava/lang/Object; │ │ │ │ + // 775: astore 23 │ │ │ │ + // 777: aconst_null │ │ │ │ + // 778: astore 25 │ │ │ │ + // 780: aload 23 │ │ │ │ + // 782: iconst_0 │ │ │ │ + // 783: aload 19 │ │ │ │ + // 785: aastore │ │ │ │ + // 786: iconst_1 │ │ │ │ + // 787: istore 26 │ │ │ │ + // 789: iload 5 │ │ │ │ + // 791: invokestatic java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; │ │ │ │ + // 794: astore 27 │ │ │ │ + // 796: aload 23 │ │ │ │ + // 798: iload 26 │ │ │ │ + // 800: aload 27 │ │ │ │ + // 802: aastore │ │ │ │ + // 803: aload 6 │ │ │ │ + // 805: aload 21 │ │ │ │ + // 807: aload 23 │ │ │ │ + // 809: invokestatic java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ │ │ + // 812: astore 6 │ │ │ │ + // 814: aload_2 │ │ │ │ + // 815: aload 14 │ │ │ │ + // 817: aload 6 │ │ │ │ + // 819: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 824: iload 15 │ │ │ │ + // 826: ifne 834 │ │ │ │ + // 829: iload 5 │ │ │ │ + // 831: ifeq 1662 │ │ │ │ + // 834: iconst_0 │ │ │ │ + // 835: istore 28 │ │ │ │ + // 837: aconst_null │ │ │ │ + // 838: astore 6 │ │ │ │ + // 840: aconst_null │ │ │ │ + // 841: astore_2 │ │ │ │ + // 842: new Lcom/crashlytics/android/f; │ │ │ │ + // 845: astore 14 │ │ │ │ + // 847: aload_0 │ │ │ │ + // 848: getfield com/crashlytics/android/v.k:Ljava/io/File; │ │ │ │ + // 851: astore 21 │ │ │ │ + // 853: aload 14 │ │ │ │ + // 855: aload 21 │ │ │ │ + // 857: aload 19 │ │ │ │ + // 859: invokespecial com/crashlytics/android/f.:(Ljava/io/File;Ljava/lang/String;)V │ │ │ │ + // 862: aload 14 │ │ │ │ + // 864: invokestatic com/crashlytics/android/h.a:(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ │ │ │ + // 867: astore_2 │ │ │ │ + // 868: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 871: astore 6 │ │ │ │ + // 873: aload 6 │ │ │ │ + // 875: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 878: astore 6 │ │ │ │ + // 880: ldc "Crashlytics" │ │ │ │ + // 882: astore 21 │ │ │ │ + // 884: new Ljava/lang/StringBuilder; │ │ │ │ + // 887: astore 23 │ │ │ │ + // 889: ldc_w "Collecting SessionStart data for session ID " │ │ │ │ + // 892: astore 25 │ │ │ │ + // 894: aload 23 │ │ │ │ + // 896: aload 25 │ │ │ │ + // 898: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 901: aload 23 │ │ │ │ + // 903: aload 19 │ │ │ │ + // 905: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 908: astore 23 │ │ │ │ + // 910: aload 23 │ │ │ │ + // 912: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 915: astore 23 │ │ │ │ + // 917: aload 6 │ │ │ │ + // 919: aload 21 │ │ │ │ + // 921: aload 23 │ │ │ │ + // 923: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 928: aload_2 │ │ │ │ + // 929: aload 18 │ │ │ │ + // 931: invokestatic com/crashlytics/android/v.a:(Lcom/crashlytics/android/h;Ljava/io/File;)V │ │ │ │ + // 934: iconst_4 │ │ │ │ + // 935: istore 28 │ │ │ │ + // 937: new Ljava/util/Date; │ │ │ │ + // 940: astore 18 │ │ │ │ + // 942: aload 18 │ │ │ │ + // 944: invokespecial java/util/Date.:()V │ │ │ │ + // 947: aload 18 │ │ │ │ + // 949: invokevirtual java/util/Date.getTime:()J │ │ │ │ + // 952: lstore 29 │ │ │ │ + // 954: ldc2_w 1000 │ │ │ │ + // 957: lstore 31 │ │ │ │ + // 959: lload 29 │ │ │ │ + // 961: lload 31 │ │ │ │ + // 963: ldiv │ │ │ │ + // 964: lstore 29 │ │ │ │ + // 966: aload_2 │ │ │ │ + // 967: iload 28 │ │ │ │ + // 969: lload 29 │ │ │ │ + // 971: invokevirtual com/crashlytics/android/h.a:(IJ)V │ │ │ │ + // 974: iconst_5 │ │ │ │ + // 975: istore 28 │ │ │ │ + // 977: aload_2 │ │ │ │ + // 978: iload 28 │ │ │ │ + // 980: iload 15 │ │ │ │ + // 982: invokevirtual com/crashlytics/android/h.a:(IZ)V │ │ │ │ + // 985: aload_0 │ │ │ │ + // 986: aload_2 │ │ │ │ + // 987: aload 19 │ │ │ │ + // 989: invokespecial com/crashlytics/android/v.a:(Lcom/crashlytics/android/h;Ljava/lang/String;)V │ │ │ │ + // 992: iload 5 │ │ │ │ + // 994: ifeq 1154 │ │ │ │ + // 997: aload 8 │ │ │ │ + // 999: arraylength │ │ │ │ + // 1000: istore 5 │ │ │ │ + // 1002: iload 5 │ │ │ │ + // 1004: iload 9 │ │ │ │ + // 1006: if_icmple 1800 │ │ │ │ + // 1009: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 1012: astore_3 │ │ │ │ + // 1013: aload_3 │ │ │ │ + // 1014: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 1017: astore_3 │ │ │ │ + // 1018: ldc "Crashlytics" │ │ │ │ + // 1020: astore 6 │ │ │ │ + // 1022: getstatic java/util/Locale.US:Ljava/util/Locale; │ │ │ │ + // 1025: astore 8 │ │ │ │ + // 1027: ldc_w "Trimming down to %d logged exceptions." │ │ │ │ + // 1030: astore 18 │ │ │ │ + // 1032: iconst_1 │ │ │ │ + // 1033: istore 22 │ │ │ │ + // 1035: iload 22 │ │ │ │ + // 1037: anewarray Ljava/lang/Object; │ │ │ │ + // 1040: astore 21 │ │ │ │ + // 1042: iconst_0 │ │ │ │ + // 1043: istore 24 │ │ │ │ + // 1045: aconst_null │ │ │ │ + // 1046: astore 23 │ │ │ │ + // 1048: iload 9 │ │ │ │ + // 1050: invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer; │ │ │ │ + // 1053: astore 25 │ │ │ │ + // 1055: aload 21 │ │ │ │ + // 1057: iconst_0 │ │ │ │ + // 1058: aload 25 │ │ │ │ + // 1060: aastore │ │ │ │ + // 1061: aload 8 │ │ │ │ + // 1063: aload 18 │ │ │ │ + // 1065: aload 21 │ │ │ │ + // 1067: invokestatic java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ │ │ + // 1070: astore 8 │ │ │ │ + // 1072: aload_3 │ │ │ │ + // 1073: aload 6 │ │ │ │ + // 1075: aload 8 │ │ │ │ + // 1077: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 1082: aload_0 │ │ │ │ + // 1083: aload 19 │ │ │ │ + // 1085: iload 9 │ │ │ │ + // 1087: invokespecial com/crashlytics/android/v.a:(Ljava/lang/String;I)V │ │ │ │ + // 1090: new Lcom/crashlytics/android/R; │ │ │ │ + // 1093: astore_3 │ │ │ │ + // 1094: new Ljava/lang/StringBuilder; │ │ │ │ + // 1097: astore 6 │ │ │ │ + // 1099: aload 6 │ │ │ │ + // 1101: invokespecial java/lang/StringBuilder.:()V │ │ │ │ + // 1104: aload 6 │ │ │ │ + // 1106: aload 19 │ │ │ │ + // 1108: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 1111: astore 6 │ │ │ │ + // 1113: ldc_w "SessionEvent" │ │ │ │ + // 1116: astore 8 │ │ │ │ + // 1118: aload 6 │ │ │ │ + // 1120: aload 8 │ │ │ │ + // 1122: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 1125: astore 6 │ │ │ │ + // 1127: aload 6 │ │ │ │ + // 1129: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 1132: astore 6 │ │ │ │ + // 1134: aload_3 │ │ │ │ + // 1135: aload 6 │ │ │ │ + // 1137: invokespecial com/crashlytics/android/R.:(Ljava/lang/String;)V │ │ │ │ + // 1140: aload_0 │ │ │ │ + // 1141: aload_3 │ │ │ │ + // 1142: invokespecial com/crashlytics/android/v.a:(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ │ │ + // 1145: astore_3 │ │ │ │ + // 1146: aload_0 │ │ │ │ + // 1147: aload_2 │ │ │ │ + // 1148: aload_3 │ │ │ │ + // 1149: aload 19 │ │ │ │ + // 1151: invokespecial com/crashlytics/android/v.a:(Lcom/crashlytics/android/h;[Ljava/io/File;Ljava/lang/String;)V │ │ │ │ + // 1154: iload 15 │ │ │ │ + // 1156: ifeq 1174 │ │ │ │ + // 1159: iconst_0 │ │ │ │ + // 1160: istore 5 │ │ │ │ + // 1162: aconst_null │ │ │ │ + // 1163: astore_3 │ │ │ │ + // 1164: aload 20 │ │ │ │ + // 1166: iconst_0 │ │ │ │ + // 1167: aaload │ │ │ │ + // 1168: astore_3 │ │ │ │ + // 1169: aload_2 │ │ │ │ + // 1170: aload_3 │ │ │ │ + // 1171: invokestatic com/crashlytics/android/v.a:(Lcom/crashlytics/android/h;Ljava/io/File;)V │ │ │ │ + // 1174: bipush 11 │ │ │ │ + // 1176: istore 5 │ │ │ │ + // 1178: iconst_1 │ │ │ │ + // 1179: istore 15 │ │ │ │ + // 1181: aload_2 │ │ │ │ + // 1182: iload 5 │ │ │ │ + // 1184: iload 15 │ │ │ │ + // 1186: invokevirtual com/crashlytics/android/h.a:(II)V │ │ │ │ + // 1189: bipush 12 │ │ │ │ + // 1191: istore 5 │ │ │ │ + // 1193: iconst_3 │ │ │ │ + // 1194: istore 15 │ │ │ │ + // 1196: aload_2 │ │ │ │ + // 1197: iload 5 │ │ │ │ + // 1199: iload 15 │ │ │ │ + // 1201: invokevirtual com/crashlytics/android/h.b:(II)V │ │ │ │ + // 1204: aload_2 │ │ │ │ + // 1205: ldc_w "Error flushing session file stream" │ │ │ │ + // 1208: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 1211: ldc_w "Failed to close CLS file" │ │ │ │ + // 1214: astore_3 │ │ │ │ + // 1215: aload 14 │ │ │ │ + // 1217: aload_3 │ │ │ │ + // 1218: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 1221: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 1224: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 1227: astore_3 │ │ │ │ + // 1228: ldc "Crashlytics" │ │ │ │ + // 1230: astore_1 │ │ │ │ + // 1231: new Ljava/lang/StringBuilder; │ │ │ │ + // 1234: astore_2 │ │ │ │ + // 1235: ldc_w "Removing session part files for ID " │ │ │ │ + // 1238: astore 14 │ │ │ │ + // 1240: aload_2 │ │ │ │ + // 1241: aload 14 │ │ │ │ + // 1243: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 1246: aload_2 │ │ │ │ + // 1247: aload 19 │ │ │ │ + // 1249: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 1252: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 1255: astore_2 │ │ │ │ + // 1256: aload_3 │ │ │ │ + // 1257: aload_1 │ │ │ │ + // 1258: aload_2 │ │ │ │ + // 1259: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 1264: aload_0 │ │ │ │ + // 1265: aload 19 │ │ │ │ + // 1267: invokespecial com/crashlytics/android/v.a:(Ljava/lang/String;)V │ │ │ │ + // 1270: iload 17 │ │ │ │ + // 1272: iconst_1 │ │ │ │ + // 1273: iadd │ │ │ │ + // 1274: istore 5 │ │ │ │ + // 1276: iload 5 │ │ │ │ + // 1278: istore 17 │ │ │ │ + // 1280: goto 443 │ │ │ │ + // 1283: aload_3 │ │ │ │ + // 1284: ifnonnull 1291 │ │ │ │ + // 1287: ldc_w "" │ │ │ │ + // 1290: astore_3 │ │ │ │ + // 1291: aload_3 │ │ │ │ + // 1292: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 1295: astore 8 │ │ │ │ + // 1297: aload 14 │ │ │ │ + // 1299: ifnonnull 1474 │ │ │ │ + // 1302: iconst_0 │ │ │ │ + // 1303: istore 5 │ │ │ │ + // 1305: aconst_null │ │ │ │ + // 1306: astore_3 │ │ │ │ + // 1307: iconst_0 │ │ │ │ + // 1308: istore 28 │ │ │ │ + // 1310: aconst_null │ │ │ │ + // 1311: astore 6 │ │ │ │ + // 1313: aload 7 │ │ │ │ + // 1315: ifnonnull 1486 │ │ │ │ + // 1318: iconst_0 │ │ │ │ + // 1319: istore 5 │ │ │ │ + // 1321: aconst_null │ │ │ │ + // 1322: astore_3 │ │ │ │ + // 1323: iconst_0 │ │ │ │ + // 1324: istore 4 │ │ │ │ + // 1326: aconst_null │ │ │ │ + // 1327: astore 14 │ │ │ │ + // 1329: iconst_1 │ │ │ │ + // 1330: istore 5 │ │ │ │ + // 1332: iload 5 │ │ │ │ + // 1334: aload 8 │ │ │ │ + // 1336: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 1339: iconst_0 │ │ │ │ + // 1340: iadd │ │ │ │ + // 1341: istore 5 │ │ │ │ + // 1343: aload 6 │ │ │ │ + // 1345: ifnull 1367 │ │ │ │ + // 1348: iconst_2 │ │ │ │ + // 1349: istore 17 │ │ │ │ + // 1351: iload 17 │ │ │ │ + // 1353: aload 6 │ │ │ │ + // 1355: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 1358: istore 17 │ │ │ │ + // 1360: iload 5 │ │ │ │ + // 1362: iload 17 │ │ │ │ + // 1364: iadd │ │ │ │ + // 1365: istore 5 │ │ │ │ + // 1367: aload 14 │ │ │ │ + // 1369: ifnull 1391 │ │ │ │ + // 1372: iconst_3 │ │ │ │ + // 1373: istore 17 │ │ │ │ + // 1375: iload 17 │ │ │ │ + // 1377: aload 14 │ │ │ │ + // 1379: invokestatic com/crashlytics/android/h.b:(ILcom/crashlytics/android/d;)I │ │ │ │ + // 1382: istore 17 │ │ │ │ + // 1384: iload 5 │ │ │ │ + // 1386: iload 17 │ │ │ │ + // 1388: iadd │ │ │ │ + // 1389: istore 5 │ │ │ │ + // 1391: bipush 6 │ │ │ │ + // 1393: istore 17 │ │ │ │ + // 1395: iconst_2 │ │ │ │ + // 1396: istore 9 │ │ │ │ + // 1398: aload_1 │ │ │ │ + // 1399: iload 17 │ │ │ │ + // 1401: iload 9 │ │ │ │ + // 1403: invokevirtual com/crashlytics/android/h.g:(II)V │ │ │ │ + // 1406: aload_1 │ │ │ │ + // 1407: iload 5 │ │ │ │ + // 1409: invokevirtual com/crashlytics/android/h.b:(I)V │ │ │ │ + // 1412: iconst_1 │ │ │ │ + // 1413: istore 5 │ │ │ │ + // 1415: aload_1 │ │ │ │ + // 1416: iload 5 │ │ │ │ + // 1418: aload 8 │ │ │ │ + // 1420: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 1423: aload 6 │ │ │ │ + // 1425: ifnull 1439 │ │ │ │ + // 1428: iconst_2 │ │ │ │ + // 1429: istore 5 │ │ │ │ + // 1431: aload_1 │ │ │ │ + // 1432: iload 5 │ │ │ │ + // 1434: aload 6 │ │ │ │ + // 1436: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 1439: aload 14 │ │ │ │ + // 1441: ifnull 1455 │ │ │ │ + // 1444: iconst_3 │ │ │ │ + // 1445: istore 5 │ │ │ │ + // 1447: aload_1 │ │ │ │ + // 1448: iload 5 │ │ │ │ + // 1450: aload 14 │ │ │ │ + // 1452: invokevirtual com/crashlytics/android/h.a:(ILcom/crashlytics/android/d;)V │ │ │ │ + // 1455: aload_1 │ │ │ │ + // 1456: ldc_w "Failed to flush session user file." │ │ │ │ + // 1459: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 1462: ldc_w "Failed to close session user file." │ │ │ │ + // 1465: astore_3 │ │ │ │ + // 1466: aload_2 │ │ │ │ + // 1467: aload_3 │ │ │ │ + // 1468: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 1471: goto 367 │ │ │ │ + // 1474: aload 14 │ │ │ │ + // 1476: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 1479: astore_3 │ │ │ │ + // 1480: aload_3 │ │ │ │ + // 1481: astore 6 │ │ │ │ + // 1483: goto 1313 │ │ │ │ + // 1486: aload 7 │ │ │ │ + // 1488: invokestatic com/crashlytics/android/d.a:(Ljava/lang/String;)Lcom/crashlytics/android/d; │ │ │ │ + // 1491: astore_3 │ │ │ │ + // 1492: aload_3 │ │ │ │ + // 1493: astore 14 │ │ │ │ + // 1495: goto 1329 │ │ │ │ + // 1498: astore_3 │ │ │ │ + // 1499: aconst_null │ │ │ │ + // 1500: astore_2 │ │ │ │ + // 1501: aload_0 │ │ │ │ + // 1502: aload_3 │ │ │ │ + // 1503: aload_2 │ │ │ │ + // 1504: invokespecial com/crashlytics/android/v.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ + // 1507: aload_3 │ │ │ │ + // 1508: athrow │ │ │ │ + // 1509: astore_3 │ │ │ │ + // 1510: aload_1 │ │ │ │ + // 1511: ldc_w "Failed to flush session user file." │ │ │ │ + // 1514: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 1517: aload_2 │ │ │ │ + // 1518: ldc_w "Failed to close session user file." │ │ │ │ + // 1521: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 1524: aload_3 │ │ │ │ + // 1525: athrow │ │ │ │ + // 1526: iconst_0 │ │ │ │ + // 1527: istore 5 │ │ │ │ + // 1529: aconst_null │ │ │ │ + // 1530: astore_3 │ │ │ │ + // 1531: iconst_0 │ │ │ │ + // 1532: istore 15 │ │ │ │ + // 1534: aconst_null │ │ │ │ + // 1535: astore_1 │ │ │ │ + // 1536: goto 608 │ │ │ │ + // 1539: iconst_0 │ │ │ │ + // 1540: istore 5 │ │ │ │ + // 1542: aconst_null │ │ │ │ + // 1543: astore_3 │ │ │ │ + // 1544: goto 746 │ │ │ │ + // 1547: astore_3 │ │ │ │ + // 1548: iconst_0 │ │ │ │ + // 1549: istore 15 │ │ │ │ + // 1551: aconst_null │ │ │ │ + // 1552: astore_1 │ │ │ │ + // 1553: aconst_null │ │ │ │ + // 1554: astore_2 │ │ │ │ + // 1555: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 1558: astore 14 │ │ │ │ + // 1560: aload 14 │ │ │ │ + // 1562: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 1565: astore 14 │ │ │ │ + // 1567: ldc "Crashlytics" │ │ │ │ + // 1569: astore 6 │ │ │ │ + // 1571: new Ljava/lang/StringBuilder; │ │ │ │ + // 1574: astore 8 │ │ │ │ + // 1576: ldc_w "Failed to write session file for session ID: " │ │ │ │ + // 1579: astore 18 │ │ │ │ + // 1581: aload 8 │ │ │ │ + // 1583: aload 18 │ │ │ │ + // 1585: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 1588: aload 8 │ │ │ │ + // 1590: aload 19 │ │ │ │ + // 1592: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 1595: astore 8 │ │ │ │ + // 1597: aload 8 │ │ │ │ + // 1599: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 1602: astore 8 │ │ │ │ + // 1604: aload 14 │ │ │ │ + // 1606: aload 6 │ │ │ │ + // 1608: aload 8 │ │ │ │ + // 1610: aload_3 │ │ │ │ + // 1611: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 1616: aload_0 │ │ │ │ + // 1617: aload_3 │ │ │ │ + // 1618: aload_2 │ │ │ │ + // 1619: invokespecial com/crashlytics/android/v.a:(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ │ │ │ + // 1622: ldc_w "Error flushing session file stream" │ │ │ │ + // 1625: astore_3 │ │ │ │ + // 1626: aload_1 │ │ │ │ + // 1627: aload_3 │ │ │ │ + // 1628: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 1631: aload_2 │ │ │ │ + // 1632: invokestatic com/crashlytics/android/v.a:(Lcom/crashlytics/android/f;)V │ │ │ │ + // 1635: goto 1221 │ │ │ │ + // 1638: astore_3 │ │ │ │ + // 1639: iconst_0 │ │ │ │ + // 1640: istore 4 │ │ │ │ + // 1642: aconst_null │ │ │ │ + // 1643: astore 14 │ │ │ │ + // 1645: aload_2 │ │ │ │ + // 1646: ldc_w "Error flushing session file stream" │ │ │ │ + // 1649: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Flushable;Ljava/lang/String;)V │ │ │ │ + // 1652: aload 14 │ │ │ │ + // 1654: ldc_w "Failed to close CLS file" │ │ │ │ + // 1657: invokestatic com/crashlytics/android/internal/ab.a:(Ljava/io/Closeable;Ljava/lang/String;)V │ │ │ │ + // 1660: aload_3 │ │ │ │ + // 1661: athrow │ │ │ │ + // 1662: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 1665: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 1668: astore_3 │ │ │ │ + // 1669: ldc "Crashlytics" │ │ │ │ + // 1671: astore_1 │ │ │ │ + // 1672: new Ljava/lang/StringBuilder; │ │ │ │ + // 1675: astore_2 │ │ │ │ + // 1676: ldc_w "No events present for session ID " │ │ │ │ + // 1679: astore 14 │ │ │ │ + // 1681: aload_2 │ │ │ │ + // 1682: aload 14 │ │ │ │ + // 1684: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 1687: aload_2 │ │ │ │ + // 1688: aload 19 │ │ │ │ + // 1690: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 1693: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 1696: astore_2 │ │ │ │ + // 1697: aload_3 │ │ │ │ + // 1698: aload_1 │ │ │ │ + // 1699: aload_2 │ │ │ │ + // 1700: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 1705: goto 1221 │ │ │ │ + // 1708: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 1711: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 1714: astore_3 │ │ │ │ + // 1715: ldc "Crashlytics" │ │ │ │ + // 1717: astore_1 │ │ │ │ + // 1718: ldc_w "No session begin files found." │ │ │ │ + // 1721: astore_2 │ │ │ │ + // 1722: aload_3 │ │ │ │ + // 1723: aload_1 │ │ │ │ + // 1724: aload_2 │ │ │ │ + // 1725: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 1730: return │ │ │ │ + // 1731: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 1734: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 1737: astore_3 │ │ │ │ + // 1738: ldc "Crashlytics" │ │ │ │ + // 1740: astore_1 │ │ │ │ + // 1741: ldc_w "Unable to close session. Settings are not loaded." │ │ │ │ + // 1744: astore_2 │ │ │ │ + // 1745: aload_3 │ │ │ │ + // 1746: aload_1 │ │ │ │ + // 1747: aload_2 │ │ │ │ + // 1748: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 1753: goto 1730 │ │ │ │ + // 1756: astore_3 │ │ │ │ + // 1757: goto 1645 │ │ │ │ + // 1760: astore_3 │ │ │ │ + // 1761: aload_2 │ │ │ │ + // 1762: astore 14 │ │ │ │ + // 1764: aload_1 │ │ │ │ + // 1765: astore_2 │ │ │ │ + // 1766: goto 1645 │ │ │ │ + // 1769: astore_3 │ │ │ │ + // 1770: iconst_0 │ │ │ │ + // 1771: istore 15 │ │ │ │ + // 1773: aconst_null │ │ │ │ + // 1774: astore_1 │ │ │ │ + // 1775: aload 14 │ │ │ │ + // 1777: astore_2 │ │ │ │ + // 1778: goto 1555 │ │ │ │ + // 1781: astore_3 │ │ │ │ + // 1782: aload_2 │ │ │ │ + // 1783: astore_1 │ │ │ │ + // 1784: aload 14 │ │ │ │ + // 1786: astore_2 │ │ │ │ + // 1787: goto 1555 │ │ │ │ + // 1790: astore_3 │ │ │ │ + // 1791: aconst_null │ │ │ │ + // 1792: astore_2 │ │ │ │ + // 1793: goto 1510 │ │ │ │ + // 1796: astore_3 │ │ │ │ + // 1797: goto 1501 │ │ │ │ + // 1800: aload 8 │ │ │ │ + // 1802: astore_3 │ │ │ │ + // 1803: goto 1146 │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 248 251 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 248 251 1790 1796 Any │ │ │ │ + // 252 256 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 252 256 1790 1796 Any │ │ │ │ + // 258 261 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 258 261 1790 1796 Any │ │ │ │ + // 263 268 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 263 268 1790 1796 Any │ │ │ │ + // 270 274 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 270 274 1790 1796 Any │ │ │ │ + // 281 286 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 281 286 1790 1796 Any │ │ │ │ + // 287 291 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 287 291 1790 1796 Any │ │ │ │ + // 295 299 1498 1501 Ljava/lang/Exception; │ │ │ │ + // 295 299 1790 1796 Any │ │ │ │ + // 299 303 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 299 303 1509 1510 Any │ │ │ │ + // 304 307 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 304 307 1509 1510 Any │ │ │ │ + // 308 312 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 308 312 1509 1510 Any │ │ │ │ + // 313 316 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 313 316 1509 1510 Any │ │ │ │ + // 318 323 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 318 323 1509 1510 Any │ │ │ │ + // 325 328 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 325 328 1509 1510 Any │ │ │ │ + // 330 335 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 330 335 1509 1510 Any │ │ │ │ + // 842 845 1547 1555 Ljava/lang/Exception; │ │ │ │ + // 842 845 1638 1645 Any │ │ │ │ + // 847 851 1547 1555 Ljava/lang/Exception; │ │ │ │ + // 847 851 1638 1645 Any │ │ │ │ + // 857 862 1547 1555 Ljava/lang/Exception; │ │ │ │ + // 857 862 1638 1645 Any │ │ │ │ + // 862 867 1769 1781 Ljava/lang/Exception; │ │ │ │ + // 862 867 1756 1760 Any │ │ │ │ + // 868 871 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 868 871 1756 1760 Any │ │ │ │ + // 873 878 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 873 878 1756 1760 Any │ │ │ │ + // 884 887 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 884 887 1756 1760 Any │ │ │ │ + // 896 901 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 896 901 1756 1760 Any │ │ │ │ + // 903 908 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 903 908 1756 1760 Any │ │ │ │ + // 910 915 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 910 915 1756 1760 Any │ │ │ │ + // 921 928 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 921 928 1756 1760 Any │ │ │ │ + // 929 934 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 929 934 1756 1760 Any │ │ │ │ + // 937 940 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 937 940 1756 1760 Any │ │ │ │ + // 942 947 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 942 947 1756 1760 Any │ │ │ │ + // 947 952 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 947 952 1756 1760 Any │ │ │ │ + // 961 964 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 961 964 1756 1760 Any │ │ │ │ + // 969 974 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 969 974 1756 1760 Any │ │ │ │ + // 980 985 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 980 985 1756 1760 Any │ │ │ │ + // 987 992 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 987 992 1756 1760 Any │ │ │ │ + // 997 1000 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 997 1000 1756 1760 Any │ │ │ │ + // 1009 1012 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1009 1012 1756 1760 Any │ │ │ │ + // 1013 1017 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1013 1017 1756 1760 Any │ │ │ │ + // 1022 1025 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1022 1025 1756 1760 Any │ │ │ │ + // 1035 1040 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1035 1040 1756 1760 Any │ │ │ │ + // 1048 1053 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1048 1053 1756 1760 Any │ │ │ │ + // 1058 1061 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1058 1061 1756 1760 Any │ │ │ │ + // 1065 1070 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1065 1070 1756 1760 Any │ │ │ │ + // 1075 1082 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1075 1082 1756 1760 Any │ │ │ │ + // 1085 1090 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1085 1090 1756 1760 Any │ │ │ │ + // 1090 1093 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1090 1093 1756 1760 Any │ │ │ │ + // 1094 1097 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1094 1097 1756 1760 Any │ │ │ │ + // 1099 1104 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1099 1104 1756 1760 Any │ │ │ │ + // 1106 1111 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1106 1111 1756 1760 Any │ │ │ │ + // 1120 1125 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1120 1125 1756 1760 Any │ │ │ │ + // 1127 1132 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1127 1132 1756 1760 Any │ │ │ │ + // 1135 1140 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1135 1140 1756 1760 Any │ │ │ │ + // 1141 1145 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1141 1145 1756 1760 Any │ │ │ │ + // 1149 1154 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1149 1154 1756 1760 Any │ │ │ │ + // 1166 1168 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1166 1168 1756 1760 Any │ │ │ │ + // 1170 1174 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1170 1174 1756 1760 Any │ │ │ │ + // 1184 1189 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1184 1189 1756 1760 Any │ │ │ │ + // 1199 1204 1781 1790 Ljava/lang/Exception; │ │ │ │ + // 1199 1204 1756 1760 Any │ │ │ │ + // 1291 1295 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1291 1295 1509 1510 Any │ │ │ │ + // 1334 1339 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1334 1339 1509 1510 Any │ │ │ │ + // 1353 1358 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1353 1358 1509 1510 Any │ │ │ │ + // 1377 1382 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1377 1382 1509 1510 Any │ │ │ │ + // 1401 1406 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1401 1406 1509 1510 Any │ │ │ │ + // 1407 1412 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1407 1412 1509 1510 Any │ │ │ │ + // 1418 1423 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1418 1423 1509 1510 Any │ │ │ │ + // 1434 1439 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1434 1439 1509 1510 Any │ │ │ │ + // 1450 1455 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1450 1455 1509 1510 Any │ │ │ │ + // 1474 1479 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1474 1479 1509 1510 Any │ │ │ │ + // 1486 1491 1796 1800 Ljava/lang/Exception; │ │ │ │ + // 1486 1491 1509 1510 Any │ │ │ │ + // 1503 1507 1509 1510 Any │ │ │ │ + // 1507 1509 1509 1510 Any │ │ │ │ + // 1555 1558 1760 1769 Any │ │ │ │ + // 1560 1565 1760 1769 Any │ │ │ │ + // 1571 1574 1760 1769 Any │ │ │ │ + // 1583 1588 1760 1769 Any │ │ │ │ + // 1590 1595 1760 1769 Any │ │ │ │ + // 1597 1602 1760 1769 Any │ │ │ │ + // 1610 1616 1760 1769 Any │ │ │ │ + // 1618 1622 1760 1769 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.NullPointerException │ │ │ │ + // at com.strobel.assembler.ir.StackMappingVisitor.push(StackMappingVisitor.java:290) │ │ │ │ + // at com.strobel.assembler.ir.StackMappingVisitor$InstructionAnalyzer.execute(StackMappingVisitor.java:833) │ │ │ │ + // at com.strobel.assembler.ir.StackMappingVisitor$InstructionAnalyzer.visit(StackMappingVisitor.java:398) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.performStackAnalysis(AstBuilder.java:2030) │ │ │ │ + // at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:108) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private String n() { │ │ │ │ + final File[] a = this.a((FilenameFilter)new R("BeginSession")); │ │ │ │ + Arrays.sort(a, com.crashlytics.android.v.b); │ │ │ │ + String a2; │ │ │ │ + if (a.length > 0) { │ │ │ │ + a2 = a(a[0]); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + a2 = null; │ │ │ │ + } │ │ │ │ + return a2; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private File[] o() { │ │ │ │ + return this.a((FilenameFilter)new R("BeginSession")); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void p() { │ │ │ │ + final File[] a = this.a(com.crashlytics.android.v.a); │ │ │ │ + for (int length = a.length, i = 0; i < length; ++i) { │ │ │ │ + final File file = a[i]; │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Attempting to send crash report at time of crash..."); │ │ │ │ + new Thread((Runnable)new D(this, file), "Crashlytics Report Uploader").start(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static int q() { │ │ │ │ + return h.b(1, com.crashlytics.android.d.a(r.a(Crashlytics.getInstance().getContext(), com.crashlytics.android.internal.v.a().f()))) + 0; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private int r() { │ │ │ │ + final long n = 0L; │ │ │ │ + int n2 = com.crashlytics.android.h.b(1, n) + 0 + com.crashlytics.android.h.b(2, n) + com.crashlytics.android.h.b(3, this.q); │ │ │ │ + if (this.r != null) { │ │ │ │ + n2 += com.crashlytics.android.h.b(4, this.r); │ │ │ │ + } │ │ │ │ + return n2; │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static int s() { │ │ │ │ + return h.b(1, v.f) + 0 + h.b(2, v.f) + h.b(3, 0L); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void a(final long n, final String s) { │ │ │ │ + this.b((Callable)new x(this, n, s)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void a(final Thread thread, final Throwable t) { │ │ │ │ + this.a((Runnable)new P(this, new Date(), thread, t)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void a(final File[] array) { │ │ │ │ + final File file = new File(com.crashlytics.android.internal.v.a().h(), "invalidClsFiles"); │ │ │ │ + if (file.exists()) { │ │ │ │ + if (file.isDirectory()) { │ │ │ │ + final File[] listFiles = file.listFiles(); │ │ │ │ + for (int length = listFiles.length, i = 0; i < length; ++i) { │ │ │ │ + listFiles[i].delete(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + file.delete(); │ │ │ │ + } │ │ │ │ + for (int length2 = array.length, j = 0; j < length2; ++j) { │ │ │ │ + final File file2 = array[j]; │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Found invalid session part file: " + file2); │ │ │ │ + final String a = a(file2); │ │ │ │ + final F f = new F(this, a); │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Deleting all part files for invalid session: " + a); │ │ │ │ + final File[] a2 = this.a((FilenameFilter)f); │ │ │ │ + for (int length3 = a2.length, k = 0; k < length3; ++k) { │ │ │ │ + final File file3 = a2[k]; │ │ │ │ + com.crashlytics.android.internal.v.a().b().a("Crashlytics", "Deleting session file: " + file3); │ │ │ │ + file3.delete(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + final boolean a() { │ │ │ │ + return this.m.get(); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final boolean b() { │ │ │ │ + return (boolean)this.a((Callable)new O(this)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void c() { │ │ │ │ + this.b((Callable)new z(this)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void d() { │ │ │ │ + this.b((Callable)new A(this)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void e() { │ │ │ │ + this.b((Callable)new B(this)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final boolean f() { │ │ │ │ + return (boolean)this.a((Callable)new C(this)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + final boolean g() { │ │ │ │ + return this.o().length > 0; │ │ │ │ + } │ │ │ │ + │ │ │ │ + final void h() { │ │ │ │ + this.a((Runnable)new E(this)); │ │ │ │ + } │ │ │ │ + │ │ │ │ + public final void uncaughtException(final Thread p0, final Throwable p1) { │ │ │ │ + // │ │ │ │ + // This method could not be decompiled. │ │ │ │ + // │ │ │ │ + // Original Bytecode: │ │ │ │ + // │ │ │ │ + // 1: monitorenter │ │ │ │ + // 2: aload_0 │ │ │ │ + // 3: getfield com/crashlytics/android/v.m:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ + // 6: astore_3 │ │ │ │ + // 7: iconst_1 │ │ │ │ + // 8: istore 4 │ │ │ │ + // 10: aload_3 │ │ │ │ + // 11: iload 4 │ │ │ │ + // 13: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ + // 16: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 19: astore_3 │ │ │ │ + // 20: aload_3 │ │ │ │ + // 21: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 24: astore_3 │ │ │ │ + // 25: ldc "Crashlytics" │ │ │ │ + // 27: astore 5 │ │ │ │ + // 29: new Ljava/lang/StringBuilder; │ │ │ │ + // 32: astore 6 │ │ │ │ + // 34: ldc_w "Crashlytics is handling uncaught exception \"" │ │ │ │ + // 37: astore 7 │ │ │ │ + // 39: aload 6 │ │ │ │ + // 41: aload 7 │ │ │ │ + // 43: invokespecial java/lang/StringBuilder.:(Ljava/lang/String;)V │ │ │ │ + // 46: aload 6 │ │ │ │ + // 48: aload_2 │ │ │ │ + // 49: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ │ │ + // 52: astore 6 │ │ │ │ + // 54: ldc_w "\" from thread " │ │ │ │ + // 57: astore 7 │ │ │ │ + // 59: aload 6 │ │ │ │ + // 61: aload 7 │ │ │ │ + // 63: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 66: astore 6 │ │ │ │ + // 68: aload_1 │ │ │ │ + // 69: invokevirtual java/lang/Thread.getName:()Ljava/lang/String; │ │ │ │ + // 72: astore 7 │ │ │ │ + // 74: aload 6 │ │ │ │ + // 76: aload 7 │ │ │ │ + // 78: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ │ │ + // 81: astore 6 │ │ │ │ + // 83: aload 6 │ │ │ │ + // 85: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String; │ │ │ │ + // 88: astore 6 │ │ │ │ + // 90: aload_3 │ │ │ │ + // 91: aload 5 │ │ │ │ + // 93: aload 6 │ │ │ │ + // 95: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 100: aload_0 │ │ │ │ + // 101: getfield com/crashlytics/android/v.h:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ + // 104: astore_3 │ │ │ │ + // 105: iconst_1 │ │ │ │ + // 106: istore 4 │ │ │ │ + // 108: aload_3 │ │ │ │ + // 109: iload 4 │ │ │ │ + // 111: invokevirtual java/util/concurrent/atomic/AtomicBoolean.getAndSet:(Z)Z │ │ │ │ + // 114: istore 8 │ │ │ │ + // 116: iload 8 │ │ │ │ + // 118: ifne 191 │ │ │ │ + // 121: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 124: astore_3 │ │ │ │ + // 125: aload_3 │ │ │ │ + // 126: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 129: astore_3 │ │ │ │ + // 130: ldc "Crashlytics" │ │ │ │ + // 132: astore 5 │ │ │ │ + // 134: ldc_w "Unregistering power receivers." │ │ │ │ + // 137: astore 6 │ │ │ │ + // 139: aload_3 │ │ │ │ + // 140: aload 5 │ │ │ │ + // 142: aload 6 │ │ │ │ + // 144: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 149: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 152: astore_3 │ │ │ │ + // 153: aload_3 │ │ │ │ + // 154: invokevirtual com/crashlytics/android/Crashlytics.getContext:()Landroid/content/Context; │ │ │ │ + // 157: astore_3 │ │ │ │ + // 158: aload_0 │ │ │ │ + // 159: getfield com/crashlytics/android/v.p:Landroid/content/BroadcastReceiver; │ │ │ │ + // 162: astore 5 │ │ │ │ + // 164: aload_3 │ │ │ │ + // 165: aload 5 │ │ │ │ + // 167: invokevirtual android/content/Context.unregisterReceiver:(Landroid/content/BroadcastReceiver;)V │ │ │ │ + // 170: invokestatic com/crashlytics/android/Crashlytics.getInstance:()Lcom/crashlytics/android/Crashlytics; │ │ │ │ + // 173: astore_3 │ │ │ │ + // 174: aload_3 │ │ │ │ + // 175: invokevirtual com/crashlytics/android/Crashlytics.getContext:()Landroid/content/Context; │ │ │ │ + // 178: astore_3 │ │ │ │ + // 179: aload_0 │ │ │ │ + // 180: getfield com/crashlytics/android/v.o:Landroid/content/BroadcastReceiver; │ │ │ │ + // 183: astore 5 │ │ │ │ + // 185: aload_3 │ │ │ │ + // 186: aload 5 │ │ │ │ + // 188: invokevirtual android/content/Context.unregisterReceiver:(Landroid/content/BroadcastReceiver;)V │ │ │ │ + // 191: new Ljava/util/Date; │ │ │ │ + // 194: astore_3 │ │ │ │ + // 195: aload_3 │ │ │ │ + // 196: invokespecial java/util/Date.:()V │ │ │ │ + // 199: new Lcom/crashlytics/android/N; │ │ │ │ + // 202: astore 5 │ │ │ │ + // 204: aload 5 │ │ │ │ + // 206: aload_0 │ │ │ │ + // 207: aload_3 │ │ │ │ + // 208: aload_1 │ │ │ │ + // 209: aload_2 │ │ │ │ + // 210: invokespecial com/crashlytics/android/N.:(Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ + // 213: aload_0 │ │ │ │ + // 214: aload 5 │ │ │ │ + // 216: invokespecial com/crashlytics/android/v.a:(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ │ │ │ + // 219: pop │ │ │ │ + // 220: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 223: astore_3 │ │ │ │ + // 224: aload_3 │ │ │ │ + // 225: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 228: astore_3 │ │ │ │ + // 229: ldc "Crashlytics" │ │ │ │ + // 231: astore 5 │ │ │ │ + // 233: ldc_w "Crashlytics completed exception processing. Invoking default exception handler." │ │ │ │ + // 236: astore 6 │ │ │ │ + // 238: aload_3 │ │ │ │ + // 239: aload 5 │ │ │ │ + // 241: aload 6 │ │ │ │ + // 243: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 248: aload_0 │ │ │ │ + // 249: getfield com/crashlytics/android/v.j:Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ + // 252: astore_3 │ │ │ │ + // 253: aload_3 │ │ │ │ + // 254: aload_1 │ │ │ │ + // 255: aload_2 │ │ │ │ + // 256: invokeinterface java/lang/Thread$UncaughtExceptionHandler.uncaughtException:(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ + // 261: aload_0 │ │ │ │ + // 262: getfield com/crashlytics/android/v.m:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ + // 265: astore_3 │ │ │ │ + // 266: iconst_0 │ │ │ │ + // 267: istore 4 │ │ │ │ + // 269: aconst_null │ │ │ │ + // 270: astore 5 │ │ │ │ + // 272: aload_3 │ │ │ │ + // 273: iconst_0 │ │ │ │ + // 274: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ + // 277: aload_0 │ │ │ │ + // 278: monitorexit │ │ │ │ + // 279: return │ │ │ │ + // 280: astore_3 │ │ │ │ + // 281: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 284: astore 5 │ │ │ │ + // 286: aload 5 │ │ │ │ + // 288: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 291: astore 5 │ │ │ │ + // 293: ldc "Crashlytics" │ │ │ │ + // 295: astore 6 │ │ │ │ + // 297: ldc_w "An error occurred in the uncaught exception handler" │ │ │ │ + // 300: astore 7 │ │ │ │ + // 302: aload 5 │ │ │ │ + // 304: aload 6 │ │ │ │ + // 306: aload 7 │ │ │ │ + // 308: aload_3 │ │ │ │ + // 309: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ │ │ + // 314: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 317: astore_3 │ │ │ │ + // 318: aload_3 │ │ │ │ + // 319: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 322: astore_3 │ │ │ │ + // 323: ldc "Crashlytics" │ │ │ │ + // 325: astore 5 │ │ │ │ + // 327: ldc_w "Crashlytics completed exception processing. Invoking default exception handler." │ │ │ │ + // 330: astore 6 │ │ │ │ + // 332: aload_3 │ │ │ │ + // 333: aload 5 │ │ │ │ + // 335: aload 6 │ │ │ │ + // 337: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 342: aload_0 │ │ │ │ + // 343: getfield com/crashlytics/android/v.j:Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ + // 346: astore_3 │ │ │ │ + // 347: aload_3 │ │ │ │ + // 348: aload_1 │ │ │ │ + // 349: aload_2 │ │ │ │ + // 350: invokeinterface java/lang/Thread$UncaughtExceptionHandler.uncaughtException:(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ + // 355: aload_0 │ │ │ │ + // 356: getfield com/crashlytics/android/v.m:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ + // 359: astore_3 │ │ │ │ + // 360: iconst_0 │ │ │ │ + // 361: istore 4 │ │ │ │ + // 363: aconst_null │ │ │ │ + // 364: astore 5 │ │ │ │ + // 366: aload_3 │ │ │ │ + // 367: iconst_0 │ │ │ │ + // 368: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ + // 371: goto 277 │ │ │ │ + // 374: astore_3 │ │ │ │ + // 375: aload_0 │ │ │ │ + // 376: monitorexit │ │ │ │ + // 377: aload_3 │ │ │ │ + // 378: athrow │ │ │ │ + // 379: astore_3 │ │ │ │ + // 380: invokestatic com/crashlytics/android/internal/v.a:()Lcom/crashlytics/android/internal/v; │ │ │ │ + // 383: astore 5 │ │ │ │ + // 385: aload 5 │ │ │ │ + // 387: invokevirtual com/crashlytics/android/internal/v.b:()Lcom/crashlytics/android/internal/q; │ │ │ │ + // 390: astore 5 │ │ │ │ + // 392: ldc "Crashlytics" │ │ │ │ + // 394: astore 6 │ │ │ │ + // 396: ldc_w "Crashlytics completed exception processing. Invoking default exception handler." │ │ │ │ + // 399: astore 7 │ │ │ │ + // 401: aload 5 │ │ │ │ + // 403: aload 6 │ │ │ │ + // 405: aload 7 │ │ │ │ + // 407: invokeinterface com/crashlytics/android/internal/q.a:(Ljava/lang/String;Ljava/lang/String;)V │ │ │ │ + // 412: aload_0 │ │ │ │ + // 413: getfield com/crashlytics/android/v.j:Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ │ + // 416: astore 5 │ │ │ │ + // 418: aload 5 │ │ │ │ + // 420: aload_1 │ │ │ │ + // 421: aload_2 │ │ │ │ + // 422: invokeinterface java/lang/Thread$UncaughtExceptionHandler.uncaughtException:(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ │ │ + // 427: aload_0 │ │ │ │ + // 428: getfield com/crashlytics/android/v.m:Ljava/util/concurrent/atomic/AtomicBoolean; │ │ │ │ + // 431: astore 5 │ │ │ │ + // 433: aconst_null │ │ │ │ + // 434: astore 6 │ │ │ │ + // 436: aload 5 │ │ │ │ + // 438: iconst_0 │ │ │ │ + // 439: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set:(Z)V │ │ │ │ + // 442: aload_3 │ │ │ │ + // 443: athrow │ │ │ │ + // Exceptions: │ │ │ │ + // Try Handler │ │ │ │ + // Start End Start End Type │ │ │ │ + // ----- ----- ----- ----- --------------------- │ │ │ │ + // 2 6 374 379 Any │ │ │ │ + // 11 16 374 379 Any │ │ │ │ + // 16 19 280 374 Ljava/lang/Exception; │ │ │ │ + // 16 19 379 444 Any │ │ │ │ + // 20 24 280 374 Ljava/lang/Exception; │ │ │ │ + // 20 24 379 444 Any │ │ │ │ + // 29 32 280 374 Ljava/lang/Exception; │ │ │ │ + // 29 32 379 444 Any │ │ │ │ + // 41 46 280 374 Ljava/lang/Exception; │ │ │ │ + // 41 46 379 444 Any │ │ │ │ + // 48 52 280 374 Ljava/lang/Exception; │ │ │ │ + // 48 52 379 444 Any │ │ │ │ + // 61 66 280 374 Ljava/lang/Exception; │ │ │ │ + // 61 66 379 444 Any │ │ │ │ + // 68 72 280 374 Ljava/lang/Exception; │ │ │ │ + // 68 72 379 444 Any │ │ │ │ + // 76 81 280 374 Ljava/lang/Exception; │ │ │ │ + // 76 81 379 444 Any │ │ │ │ + // 83 88 280 374 Ljava/lang/Exception; │ │ │ │ + // 83 88 379 444 Any │ │ │ │ + // 93 100 280 374 Ljava/lang/Exception; │ │ │ │ + // 93 100 379 444 Any │ │ │ │ + // 100 104 280 374 Ljava/lang/Exception; │ │ │ │ + // 100 104 379 444 Any │ │ │ │ + // 109 114 280 374 Ljava/lang/Exception; │ │ │ │ + // 109 114 379 444 Any │ │ │ │ + // 121 124 280 374 Ljava/lang/Exception; │ │ │ │ + // 121 124 379 444 Any │ │ │ │ + // 125 129 280 374 Ljava/lang/Exception; │ │ │ │ + // 125 129 379 444 Any │ │ │ │ + // 142 149 280 374 Ljava/lang/Exception; │ │ │ │ + // 142 149 379 444 Any │ │ │ │ + // 149 152 280 374 Ljava/lang/Exception; │ │ │ │ + // 149 152 379 444 Any │ │ │ │ + // 153 157 280 374 Ljava/lang/Exception; │ │ │ │ + // 153 157 379 444 Any │ │ │ │ + // 158 162 280 374 Ljava/lang/Exception; │ │ │ │ + // 158 162 379 444 Any │ │ │ │ + // 165 170 280 374 Ljava/lang/Exception; │ │ │ │ + // 165 170 379 444 Any │ │ │ │ + // 170 173 280 374 Ljava/lang/Exception; │ │ │ │ + // 170 173 379 444 Any │ │ │ │ + // 174 178 280 374 Ljava/lang/Exception; │ │ │ │ + // 174 178 379 444 Any │ │ │ │ + // 179 183 280 374 Ljava/lang/Exception; │ │ │ │ + // 179 183 379 444 Any │ │ │ │ + // 186 191 280 374 Ljava/lang/Exception; │ │ │ │ + // 186 191 379 444 Any │ │ │ │ + // 191 194 280 374 Ljava/lang/Exception; │ │ │ │ + // 191 194 379 444 Any │ │ │ │ + // 195 199 280 374 Ljava/lang/Exception; │ │ │ │ + // 195 199 379 444 Any │ │ │ │ + // 199 202 280 374 Ljava/lang/Exception; │ │ │ │ + // 199 202 379 444 Any │ │ │ │ + // 209 213 280 374 Ljava/lang/Exception; │ │ │ │ + // 209 213 379 444 Any │ │ │ │ + // 214 220 280 374 Ljava/lang/Exception; │ │ │ │ + // 214 220 379 444 Any │ │ │ │ + // 220 223 374 379 Any │ │ │ │ + // 224 228 374 379 Any │ │ │ │ + // 241 248 374 379 Any │ │ │ │ + // 248 252 374 379 Any │ │ │ │ + // 255 261 374 379 Any │ │ │ │ + // 261 265 374 379 Any │ │ │ │ + // 273 277 374 379 Any │ │ │ │ + // 281 284 379 444 Any │ │ │ │ + // 286 291 379 444 Any │ │ │ │ + // 308 314 379 444 Any │ │ │ │ + // 314 317 374 379 Any │ │ │ │ + // 318 322 374 379 Any │ │ │ │ + // 335 342 374 379 Any │ │ │ │ + // 342 346 374 379 Any │ │ │ │ + // 349 355 374 379 Any │ │ │ │ + // 355 359 374 379 Any │ │ │ │ + // 367 371 374 379 Any │ │ │ │ + // 380 383 374 379 Any │ │ │ │ + // 385 390 374 379 Any │ │ │ │ + // 405 412 374 379 Any │ │ │ │ + // 412 416 374 379 Any │ │ │ │ + // 421 427 374 379 Any │ │ │ │ + // 427 431 374 379 Any │ │ │ │ + // 438 442 374 379 Any │ │ │ │ + // 442 444 374 379 Any │ │ │ │ + // │ │ │ │ + // The error that occurred was: │ │ │ │ + // │ │ │ │ + // java.lang.IllegalStateException: Expression is linked from several locations: Label_0277: │ │ │ │ + // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ │ │ + // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130) │ │ │ │ + // at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71) │ │ │ │ + // at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336) │ │ │ │ + // at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144) │ │ │ │ + // │ │ │ │ + throw new IllegalStateException("An error occurred while decompiling this method."); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/w.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,51 +1,12 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.content.DialogInterface$OnClickListener; │ │ │ │ -import android.view.View; │ │ │ │ -import android.widget.ScrollView; │ │ │ │ -import android.widget.TextView; │ │ │ │ -import android.content.Context; │ │ │ │ -import android.app.AlertDialog$Builder; │ │ │ │ -import android.app.Activity; │ │ │ │ +import java.io.File; │ │ │ │ +import java.io.FilenameFilter; │ │ │ │ │ │ │ │ -final class w implements Runnable │ │ │ │ +final class w implements FilenameFilter │ │ │ │ { │ │ │ │ - final /* synthetic */ C a; │ │ │ │ - final /* synthetic */ Crashlytics b; │ │ │ │ - private /* synthetic */ Activity c; │ │ │ │ - private /* synthetic */ af d; │ │ │ │ - private /* synthetic */ am e; │ │ │ │ - │ │ │ │ - w(final Crashlytics b, final Activity c, final C a, final af d, final am e) { │ │ │ │ - this.b = b; │ │ │ │ - this.c = c; │ │ │ │ - this.a = a; │ │ │ │ - this.d = d; │ │ │ │ - this.e = e; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void run() { │ │ │ │ - final AlertDialog$Builder alertDialog$Builder = new AlertDialog$Builder((Context)this.c); │ │ │ │ - final x x = new x(this); │ │ │ │ - final float density = this.c.getResources().getDisplayMetrics().density; │ │ │ │ - final int a = Crashlytics.a(this.b, density, 5); │ │ │ │ - final TextView textView = new TextView((Context)this.c); │ │ │ │ - textView.setAutoLinkMask(15); │ │ │ │ - textView.setText((CharSequence)this.d.b()); │ │ │ │ - textView.setTextAppearance((Context)this.c, 16973892); │ │ │ │ - textView.setPadding(a, a, a, a); │ │ │ │ - textView.setFocusable(false); │ │ │ │ - final ScrollView view = new ScrollView((Context)this.c); │ │ │ │ - view.setPadding(Crashlytics.a(this.b, density, 14), Crashlytics.a(this.b, density, 2), Crashlytics.a(this.b, density, 10), Crashlytics.a(this.b, density, 12)); │ │ │ │ - view.addView((View)textView); │ │ │ │ - alertDialog$Builder.setView((View)view).setTitle((CharSequence)this.d.a()).setCancelable(false).setNeutralButton((CharSequence)this.d.c(), (DialogInterface$OnClickListener)x); │ │ │ │ - if (this.e.e()) { │ │ │ │ - alertDialog$Builder.setNegativeButton((CharSequence)this.d.e(), (DialogInterface$OnClickListener)new y(this)); │ │ │ │ - } │ │ │ │ - if (this.e.g()) { │ │ │ │ - alertDialog$Builder.setPositiveButton((CharSequence)this.d.d(), (DialogInterface$OnClickListener)new z(this)); │ │ │ │ - } │ │ │ │ - alertDialog$Builder.show(); │ │ │ │ + public final boolean accept(final File file, final String s) { │ │ │ │ + return s.length() == 39 && s.endsWith(".cls"); │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/x.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,19 +1,17 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.content.DialogInterface; │ │ │ │ -import android.content.DialogInterface$OnClickListener; │ │ │ │ +import java.util.concurrent.Callable; │ │ │ │ │ │ │ │ -final class x implements DialogInterface$OnClickListener │ │ │ │ +final class x implements Callable │ │ │ │ { │ │ │ │ - private /* synthetic */ w a; │ │ │ │ + private /* synthetic */ long a; │ │ │ │ + private /* synthetic */ String b; │ │ │ │ + private /* synthetic */ v c; │ │ │ │ │ │ │ │ - x(final w a) { │ │ │ │ + x(final v c, final long a, final String b) { │ │ │ │ + this.c = c; │ │ │ │ this.a = a; │ │ │ │ - } │ │ │ │ - │ │ │ │ - public final void onClick(final DialogInterface dialogInterface, final int n) { │ │ │ │ - this.a.a.a(true); │ │ │ │ - dialogInterface.dismiss(); │ │ │ │ + this.b = b; │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/y.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,19 +1,27 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.content.DialogInterface; │ │ │ │ -import android.content.DialogInterface$OnClickListener; │ │ │ │ +import java.io.InputStream; │ │ │ │ +import com.crashlytics.android.internal.au; │ │ │ │ │ │ │ │ -final class y implements DialogInterface$OnClickListener │ │ │ │ +final class y implements au │ │ │ │ { │ │ │ │ - private /* synthetic */ w a; │ │ │ │ + private /* synthetic */ byte[] a; │ │ │ │ + private /* synthetic */ int[] b; │ │ │ │ │ │ │ │ - y(final w a) { │ │ │ │ + y(final v v, final byte[] a, final int[] b) { │ │ │ │ this.a = a; │ │ │ │ + this.b = b; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void onClick(final DialogInterface dialogInterface, final int n) { │ │ │ │ - this.a.a.a(false); │ │ │ │ - dialogInterface.dismiss(); │ │ │ │ + public final void a(final InputStream inputStream, final int n) { │ │ │ │ + try { │ │ │ │ + inputStream.read(this.a, this.b[0], n); │ │ │ │ + final int[] b = this.b; │ │ │ │ + b[0] += n; │ │ │ │ + } │ │ │ │ + finally { │ │ │ │ + inputStream.close(); │ │ │ │ + } │ │ │ │ } │ │ │ │ } │ │ ├── com/crashlytics/android/z.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,22 +1,13 @@ │ │ │ │ │ │ │ │ package com.crashlytics.android; │ │ │ │ │ │ │ │ -import android.content.DialogInterface; │ │ │ │ -import android.content.DialogInterface$OnClickListener; │ │ │ │ +import java.util.concurrent.Callable; │ │ │ │ │ │ │ │ -final class z implements DialogInterface$OnClickListener │ │ │ │ +final class z implements Callable │ │ │ │ { │ │ │ │ - private /* synthetic */ w a; │ │ │ │ + private /* synthetic */ v a; │ │ │ │ │ │ │ │ - z(final w a) { │ │ │ │ + z(final v a) { │ │ │ │ this.a = a; │ │ │ │ } │ │ │ │ - │ │ │ │ - public final void onClick(final DialogInterface dialogInterface, final int n) { │ │ │ │ - final boolean b = true; │ │ │ │ - final Crashlytics b2 = this.a.b; │ │ │ │ - Crashlytics.a(b); │ │ │ │ - this.a.a.a(b); │ │ │ │ - dialogInterface.dismiss(); │ │ │ │ - } │ │ │ │ } │ │ ├── com/f2prateek/dfg/DFGApplication.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -26,11 +26,11 @@ │ │ │ │ public void onCreate() { │ │ │ │ super.onCreate(); │ │ │ │ this.objectGraph = ObjectGraph.create(this.getModules().toArray()); │ │ │ │ this.inject(this); │ │ │ │ Picasso.with((Context)this).setDebugging(false); │ │ │ │ Crashlytics.start((Context)this); │ │ │ │ if (!StorageUtils.isStorageAvailable()) { │ │ │ │ - Toast.makeText((Context)this, 2131034140, 0).show(); │ │ │ │ + Toast.makeText((Context)this, 2130968604, 0).show(); │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ ├── com/f2prateek/dfg/R$dimen.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,7 +1,7 @@ │ │ │ │ │ │ │ │ package com.f2prateek.dfg; │ │ │ │ │ │ │ │ public final class R$dimen │ │ │ │ { │ │ │ │ - public static final int small_padding = 2130968576; │ │ │ │ + public static final int small_padding = 2131034112; │ │ │ │ } │ │ ├── com/f2prateek/dfg/R$string.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,39 +1,39 @@ │ │ │ │ │ │ │ │ package com.f2prateek.dfg; │ │ │ │ │ │ │ │ public final class R$string │ │ │ │ { │ │ │ │ - public static final int about = 2131034112; │ │ │ │ - public static final int app_name = 2131034113; │ │ │ │ - public static final int com_crashlytics_android_build_id = 2131034114; │ │ │ │ - public static final int current_version_number = 2131034115; │ │ │ │ - public static final int description_device_thumbnail = 2131034116; │ │ │ │ - public static final int designer = 2131034117; │ │ │ │ - public static final int developer = 2131034118; │ │ │ │ - public static final int device_chosen = 2131034119; │ │ │ │ - public static final int failed_match_dimensions_text = 2131034120; │ │ │ │ - public static final int failed_match_dimensions_title = 2131034121; │ │ │ │ - public static final int failed_open_screenshot_text = 2131034122; │ │ │ │ - public static final int failed_open_screenshot_title = 2131034123; │ │ │ │ - public static final int glare_disabled = 2131034124; │ │ │ │ - public static final int glare_enabled = 2131034125; │ │ │ │ - public static final int glare_preference = 2131034126; │ │ │ │ - public static final int gplus_profile = 2131034127; │ │ │ │ - public static final int multiple_screenshots_saved = 2131034128; │ │ │ │ - public static final int processing_image = 2131034129; │ │ │ │ - public static final int saved_as_default_message = 2131034130; │ │ │ │ - public static final int screenshot_saved_title = 2131034131; │ │ │ │ - public static final int screenshot_saving_ticker = 2131034132; │ │ │ │ - public static final int screenshot_saving_title = 2131034133; │ │ │ │ - public static final int select_picture = 2131034134; │ │ │ │ - public static final int shadow_disabled = 2131034135; │ │ │ │ - public static final int shadow_enabled = 2131034136; │ │ │ │ - public static final int shadow_preference = 2131034137; │ │ │ │ - public static final int share = 2131034138; │ │ │ │ - public static final int single_screenshot_saved = 2131034139; │ │ │ │ - public static final int storage_unavailable = 2131034140; │ │ │ │ - public static final int taylor_ling = 2131034141; │ │ │ │ - public static final int twitter = 2131034142; │ │ │ │ - public static final int unknown_error_text = 2131034143; │ │ │ │ - public static final int unknown_error_title = 2131034144; │ │ │ │ + public static final int about = 2130968577; │ │ │ │ + public static final int app_name = 2130968578; │ │ │ │ + public static final int com_crashlytics_android_build_id = 2130968576; │ │ │ │ + public static final int current_version_number = 2130968579; │ │ │ │ + public static final int description_device_thumbnail = 2130968580; │ │ │ │ + public static final int designer = 2130968581; │ │ │ │ + public static final int developer = 2130968582; │ │ │ │ + public static final int device_chosen = 2130968583; │ │ │ │ + public static final int failed_match_dimensions_text = 2130968584; │ │ │ │ + public static final int failed_match_dimensions_title = 2130968585; │ │ │ │ + public static final int failed_open_screenshot_text = 2130968586; │ │ │ │ + public static final int failed_open_screenshot_title = 2130968587; │ │ │ │ + public static final int glare_disabled = 2130968588; │ │ │ │ + public static final int glare_enabled = 2130968589; │ │ │ │ + public static final int glare_preference = 2130968590; │ │ │ │ + public static final int gplus_profile = 2130968591; │ │ │ │ + public static final int multiple_screenshots_saved = 2130968592; │ │ │ │ + public static final int processing_image = 2130968593; │ │ │ │ + public static final int saved_as_default_message = 2130968594; │ │ │ │ + public static final int screenshot_saved_title = 2130968595; │ │ │ │ + public static final int screenshot_saving_ticker = 2130968596; │ │ │ │ + public static final int screenshot_saving_title = 2130968597; │ │ │ │ + public static final int select_picture = 2130968598; │ │ │ │ + public static final int shadow_disabled = 2130968599; │ │ │ │ + public static final int shadow_enabled = 2130968600; │ │ │ │ + public static final int shadow_preference = 2130968601; │ │ │ │ + public static final int share = 2130968602; │ │ │ │ + public static final int single_screenshot_saved = 2130968603; │ │ │ │ + public static final int storage_unavailable = 2130968604; │ │ │ │ + public static final int taylor_ling = 2130968605; │ │ │ │ + public static final int twitter = 2130968606; │ │ │ │ + public static final int unknown_error_text = 2130968607; │ │ │ │ + public static final int unknown_error_title = 2130968608; │ │ │ │ } │ │ ├── com/f2prateek/dfg/core/DeviceFrameGenerator.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -574,15 +574,15 @@ │ │ │ │ // 909: aload_2 │ │ │ │ // 910: astore_3 │ │ │ │ // 911: aload_2 │ │ │ │ // 912: invokevirtual android/content/Context.getResources:()Landroid/content/res/Resources; │ │ │ │ // 915: astore 31 │ │ │ │ // 917: aload 31 │ │ │ │ // 919: astore_2 │ │ │ │ - // 920: ldc_w 2131034121 │ │ │ │ + // 920: ldc_w 2130968585 │ │ │ │ // 923: istore 18 │ │ │ │ // 925: aload 31 │ │ │ │ // 927: iload 18 │ │ │ │ // 929: invokevirtual android/content/res/Resources.getString:(I)Ljava/lang/String; │ │ │ │ // 932: astore 32 │ │ │ │ // 934: iconst_4 │ │ │ │ // 935: istore 9 │ │ │ │ @@ -647,24 +647,24 @@ │ │ │ │ // 1048: astore 29 │ │ │ │ // 1050: aload 5 │ │ │ │ // 1052: iconst_3 │ │ │ │ // 1053: aload 29 │ │ │ │ // 1055: aastore │ │ │ │ // 1056: aload 31 │ │ │ │ // 1058: astore_2 │ │ │ │ - // 1059: ldc_w 2131034120 │ │ │ │ + // 1059: ldc_w 2130968584 │ │ │ │ // 1062: istore 18 │ │ │ │ // 1064: aload 31 │ │ │ │ // 1066: iload 18 │ │ │ │ // 1068: aload 5 │ │ │ │ // 1070: invokevirtual android/content/res/Resources.getString:(I[Ljava/lang/Object;)Ljava/lang/String; │ │ │ │ // 1073: astore 35 │ │ │ │ - // 1075: ldc_w 2131034119 │ │ │ │ + // 1075: ldc_w 2130968583 │ │ │ │ // 1078: istore 10 │ │ │ │ - // 1080: ldc_w 1.7678747E38 │ │ │ │ + // 1080: ldc_w 1.7545824E38 │ │ │ │ // 1083: fstore 12 │ │ │ │ // 1085: iconst_1 │ │ │ │ // 1086: istore 13 │ │ │ │ // 1088: ldc 1.4E-45 │ │ │ │ // 1090: fstore 14 │ │ │ │ // 1092: iload 13 │ │ │ │ // 1094: istore 9 │ │ │ │ @@ -808,35 +808,35 @@ │ │ │ │ // 1332: invokevirtual android/content/Context.getResources:()Landroid/content/res/Resources; │ │ │ │ // 1335: astore 31 │ │ │ │ // 1337: aload_0 │ │ │ │ // 1338: astore_2 │ │ │ │ // 1339: aload_0 │ │ │ │ // 1340: getfield com/f2prateek/dfg/core/DeviceFrameGenerator.callback:Lcom/f2prateek/dfg/core/DeviceFrameGenerator$Callback; │ │ │ │ // 1343: astore_3 │ │ │ │ - // 1344: ldc_w 2131034144 │ │ │ │ + // 1344: ldc_w 2130968608 │ │ │ │ // 1347: istore 13 │ │ │ │ - // 1349: ldc_w 1.7678797E38 │ │ │ │ + // 1349: ldc_w 1.7545874E38 │ │ │ │ // 1352: fstore 14 │ │ │ │ // 1354: aload 31 │ │ │ │ // 1356: astore_2 │ │ │ │ // 1357: iload 13 │ │ │ │ // 1359: istore 18 │ │ │ │ // 1361: aload 31 │ │ │ │ // 1363: iload 13 │ │ │ │ // 1365: invokevirtual android/content/res/Resources.getString:(I)Ljava/lang/String; │ │ │ │ // 1368: astore 5 │ │ │ │ - // 1370: ldc_w 2131034143 │ │ │ │ + // 1370: ldc_w 2130968607 │ │ │ │ // 1373: istore 15 │ │ │ │ // 1375: iload 15 │ │ │ │ // 1377: istore 18 │ │ │ │ // 1379: aload 31 │ │ │ │ // 1381: iload 15 │ │ │ │ // 1383: invokevirtual android/content/res/Resources.getString:(I)Ljava/lang/String; │ │ │ │ // 1386: astore 16 │ │ │ │ - // 1388: ldc_w 2131034143 │ │ │ │ + // 1388: ldc_w 2130968607 │ │ │ │ // 1391: istore 34 │ │ │ │ // 1393: iload 34 │ │ │ │ // 1395: istore 18 │ │ │ │ // 1397: aload 31 │ │ │ │ // 1399: iload 34 │ │ │ │ // 1401: invokevirtual android/content/res/Resources.getString:(I)Ljava/lang/String; │ │ │ │ // 1404: astore 29 │ │ │ │ @@ -933,15 +933,15 @@ │ │ │ │ file.mkdirs(); │ │ │ │ deviceFrameGenerator$ImageMetadata.imageFileName = String.format("DFG_%s.png", format); │ │ │ │ deviceFrameGenerator$ImageMetadata.imageFilePath = new File(file, deviceFrameGenerator$ImageMetadata.imageFileName).getAbsolutePath(); │ │ │ │ return deviceFrameGenerator$ImageMetadata; │ │ │ │ } │ │ │ │ │ │ │ │ public void generateFrame(final Uri uri) { │ │ │ │ - final int n = 2131034122; │ │ │ │ + final int n = 2130968586; │ │ │ │ final int n2 = 1; │ │ │ │ final String s = "Generating for %s %s and %s from file %s."; │ │ │ │ final Object[] array = new Object[4]; │ │ │ │ array[0] = this.device.getName(); │ │ │ │ while (true) { │ │ │ │ while (true) { │ │ │ │ String s2 = null; │ │ │ │ @@ -966,15 +966,15 @@ │ │ │ │ s3 = " without shadow "; │ │ │ │ continue; │ │ │ │ s2 = " without glare "; │ │ │ │ } │ │ │ │ catch (IOException ex) { │ │ │ │ final Resources resources = this.context.getResources(); │ │ │ │ final DeviceFrameGenerator$Callback callback = this.callback; │ │ │ │ - final String string = resources.getString(2131034123); │ │ │ │ + final String string = resources.getString(2130968587); │ │ │ │ final Object[] array2 = new Object[n2]; │ │ │ │ array2[0] = uri.toString(); │ │ │ │ final String string2 = resources.getString(n, array2); │ │ │ │ final Object[] array3 = new Object[n2]; │ │ │ │ array3[0] = uri.toString(); │ │ │ │ callback.failedImage(string, string2, resources.getString(n, array3)); │ │ │ │ Crashlytics.logException((Throwable)ex); │ │ ├── com/f2prateek/dfg/core/GenerateFrameService.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -37,22 +37,22 @@ │ │ │ │ new Handler(Looper.getMainLooper()).post((Runnable)new GenerateFrameService$1(this, uri)); │ │ │ │ final Resources resources = this.getResources(); │ │ │ │ final Intent intent = new Intent("android.intent.action.SEND"); │ │ │ │ intent.setType("image/png"); │ │ │ │ intent.putExtra("android.intent.extra.STREAM", (Parcelable)uri); │ │ │ │ final Intent chooser = Intent.createChooser(intent, (CharSequence)null); │ │ │ │ chooser.addFlags(268468224); │ │ │ │ - this.notificationBuilder.addAction(2130837529, (CharSequence)this.getResources().getString(2131034138), PendingIntent.getActivity((Context)this, 0, chooser, flags)); │ │ │ │ + this.notificationBuilder.addAction(2130837529, (CharSequence)this.getResources().getString(2130968602), PendingIntent.getActivity((Context)this, 0, chooser, flags)); │ │ │ │ final Intent intent2 = new Intent("android.intent.action.VIEW"); │ │ │ │ intent2.setDataAndType(uri, "image/png"); │ │ │ │ intent2.setFlags(flags); │ │ │ │ - final NotificationCompat$Builder setContentTitle = this.notificationBuilder.setContentTitle((CharSequence)resources.getString(2131034131)); │ │ │ │ + final NotificationCompat$Builder setContentTitle = this.notificationBuilder.setContentTitle((CharSequence)resources.getString(2130968595)); │ │ │ │ final Object[] array = new Object[autoCancel]; │ │ │ │ array[0] = this.device.getName(); │ │ │ │ - setContentTitle.setContentText((CharSequence)resources.getString(2131034139, array)).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent2, 0)).setWhen(System.currentTimeMillis()).setProgress(0, 0, false).setAutoCancel((boolean)(autoCancel != 0)); │ │ │ │ + setContentTitle.setContentText((CharSequence)resources.getString(2130968603, array)).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent2, 0)).setWhen(System.currentTimeMillis()).setProgress(0, 0, false).setAutoCancel((boolean)(autoCancel != 0)); │ │ │ │ this.notificationManager.notify(789, this.notificationBuilder.build()); │ │ │ │ } │ │ │ │ │ │ │ │ protected void onHandleIntent(final Intent intent) { │ │ │ │ final boolean b = true; │ │ │ │ super.onHandleIntent(intent); │ │ │ │ final SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences((Context)this); │ │ │ │ @@ -81,13 +81,13 @@ │ │ │ │ matrix.postTranslate((float)((n - width) / 2), (float)((n - height) / 2)); │ │ │ │ canvas.drawBitmap(bitmap, matrix, paint); │ │ │ │ canvas.drawColor(1090519039); │ │ │ │ final Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap2, dimensionPixelSize, dimensionPixelSize, true); │ │ │ │ final Intent intent = new Intent((Context)this, (Class)MainActivity.class); │ │ │ │ intent.setFlags(268435456); │ │ │ │ this.notificationManager = (NotificationManager)this.getSystemService("notification"); │ │ │ │ - this.notificationBuilder = new NotificationCompat$Builder((Context)this).setTicker((CharSequence)resources.getString(2131034132)).setContentTitle((CharSequence)resources.getString(2131034133)).setSmallIcon(2130837504).setStyle((NotificationCompat$Style)new NotificationCompat$BigPictureStyle().bigPicture(bitmap2)).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent, 0)).setWhen(System.currentTimeMillis()).setProgress(0, 0, true).setLargeIcon(scaledBitmap); │ │ │ │ + this.notificationBuilder = new NotificationCompat$Builder((Context)this).setTicker((CharSequence)resources.getString(2130968596)).setContentTitle((CharSequence)resources.getString(2130968597)).setSmallIcon(2130837504).setStyle((NotificationCompat$Style)new NotificationCompat$BigPictureStyle().bigPicture(bitmap2)).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent, 0)).setWhen(System.currentTimeMillis()).setProgress(0, 0, true).setLargeIcon(scaledBitmap); │ │ │ │ final Notification build = this.notificationBuilder.build(); │ │ │ │ build.flags |= 0x20; │ │ │ │ this.notificationManager.notify(789, build); │ │ │ │ } │ │ │ │ } │ │ ├── com/f2prateek/dfg/core/GenerateMultipleFramesService.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -26,37 +26,37 @@ │ │ │ │ public GenerateMultipleFramesService() { │ │ │ │ super("GenerateMultipleFramesService"); │ │ │ │ this.processedImageUris = new ArrayList(); │ │ │ │ } │ │ │ │ │ │ │ │ public void doneImage(final Uri uri) { │ │ │ │ this.processedImageUris.add(uri); │ │ │ │ - this.notificationBuilder.setContentText((CharSequence)this.getResources().getString(2131034129, new Object[] { this.processedImageUris.size(), this.imageUris.size() })).setProgress(this.imageUris.size(), this.processedImageUris.size(), false); │ │ │ │ + this.notificationBuilder.setContentText((CharSequence)this.getResources().getString(2130968593, new Object[] { this.processedImageUris.size(), this.imageUris.size() })).setProgress(this.imageUris.size(), this.processedImageUris.size(), false); │ │ │ │ this.notificationManager.notify(789, this.notificationBuilder.build()); │ │ │ │ } │ │ │ │ │ │ │ │ public void notifyFinished() { │ │ │ │ new Handler(Looper.getMainLooper()).post((Runnable)new GenerateMultipleFramesService$1(this)); │ │ │ │ if (this.processedImageUris.size() != 0) { │ │ │ │ final Resources resources = this.getResources(); │ │ │ │ - final String string = resources.getString(2131034128, new Object[] { this.processedImageUris.size(), this.device.getName() }); │ │ │ │ + final String string = resources.getString(2130968592, new Object[] { this.processedImageUris.size(), this.device.getName() }); │ │ │ │ final Intent intent = new Intent("android.intent.action.VIEW"); │ │ │ │ intent.setData((Uri)this.processedImageUris.get(0)); │ │ │ │ intent.setFlags(268435456); │ │ │ │ - this.notificationBuilder.setContentTitle((CharSequence)resources.getString(2131034131)).setContentText((CharSequence)string).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent, 0)).setProgress(0, 0, false); │ │ │ │ + this.notificationBuilder.setContentTitle((CharSequence)resources.getString(2130968595)).setContentText((CharSequence)string).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent, 0)).setProgress(0, 0, false); │ │ │ │ this.notificationManager.notify(789, this.notificationBuilder.build()); │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public void notifyStarting() { │ │ │ │ final Resources resources = this.getResources(); │ │ │ │ final Intent intent = new Intent((Context)this, (Class)MainActivity.class); │ │ │ │ intent.setFlags(268435456); │ │ │ │ this.notificationManager = (NotificationManager)this.getSystemService("notification"); │ │ │ │ - this.notificationBuilder = new NotificationCompat$Builder((Context)this).setTicker((CharSequence)resources.getString(2131034132)).setContentTitle((CharSequence)resources.getString(2131034133)).setSmallIcon(2130837504).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent, 0)).setProgress(0, 0, true).setWhen(System.currentTimeMillis()); │ │ │ │ + this.notificationBuilder = new NotificationCompat$Builder((Context)this).setTicker((CharSequence)resources.getString(2130968596)).setContentTitle((CharSequence)resources.getString(2130968597)).setSmallIcon(2130837504).setContentIntent(PendingIntent.getActivity((Context)this, 0, intent, 0)).setProgress(0, 0, true).setWhen(System.currentTimeMillis()); │ │ │ │ final Notification build = this.notificationBuilder.build(); │ │ │ │ build.flags |= 0x20; │ │ │ │ this.notificationManager.notify(789, build); │ │ │ │ } │ │ │ │ │ │ │ │ protected void onHandleIntent(final Intent intent) { │ │ │ │ final boolean b = true; │ │ ├── com/f2prateek/dfg/ui/AboutFragment.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -24,15 +24,15 @@ │ │ │ │ ((DFGApplication)this.getActivity().getApplication()).inject((Object)this); │ │ │ │ } │ │ │ │ │ │ │ │ public View onCreateView(final LayoutInflater layoutInflater, final ViewGroup viewGroup, final Bundle bundle) { │ │ │ │ final View inflate = layoutInflater.inflate(2130903041, viewGroup, false); │ │ │ │ Views.inject((Object)this, inflate); │ │ │ │ this.tv_version_number.setText((CharSequence)String.valueOf(this.packageInfo.versionName)); │ │ │ │ - this.getDialog().setTitle(2131034112); │ │ │ │ + this.getDialog().setTitle(2130968577); │ │ │ │ return inflate; │ │ │ │ } │ │ │ │ │ │ │ │ public void openUrl(final View view) { │ │ │ │ switch (view.getId()) { │ │ │ │ case 2131230721: { │ │ │ │ this.openUrl("http://f2prateek.com/Device-Frame-Generator/"); │ │ ├── com/f2prateek/dfg/ui/DeviceFragment.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -48,15 +48,15 @@ │ │ │ │ return deviceFragment; │ │ │ │ } │ │ │ │ │ │ │ │ public void getScreenshotImageFromUser() { │ │ │ │ final Intent intent = new Intent(); │ │ │ │ intent.setType("image/*"); │ │ │ │ intent.setAction("android.intent.action.GET_CONTENT"); │ │ │ │ - this.startActivityForResult(Intent.createChooser(intent, (CharSequence)this.getString(2131034134)), 542); │ │ │ │ + this.startActivityForResult(Intent.createChooser(intent, (CharSequence)this.getString(2130968598)), 542); │ │ │ │ } │ │ │ │ │ │ │ │ public void onActivityResult(final int n, final int n2, final Intent intent) { │ │ │ │ if (n == 542 && n2 == -1) { │ │ │ │ final Uri data = intent.getData(); │ │ │ │ final Intent intent2 = new Intent((Context)this.getActivity(), (Class)GenerateFrameService.class); │ │ │ │ intent2.putExtra("KEY_EXTRA_DEVICE", (Parcelable)this.device); │ │ ├── com/f2prateek/dfg/ui/MainActivity.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -35,21 +35,21 @@ │ │ │ │ this.getMenuInflater().inflate(2131165184, menu); │ │ │ │ menu.findItem(2131230731).setChecked(this.sharedPreferences.getBoolean("KEY_PREF_OPTION_GLARE", b)); │ │ │ │ menu.findItem(2131230732).setChecked(this.sharedPreferences.getBoolean("KEY_PREF_OPTION_SHADOW", b)); │ │ │ │ return super.onCreateOptionsMenu(menu); │ │ │ │ } │ │ │ │ │ │ │ │ public void onDefaultDeviceUpdated(final Events$DefaultDeviceUpdated events$DefaultDeviceUpdated) { │ │ │ │ - Crouton.makeText((Activity)this, (CharSequence)this.getString(2131034130, new Object[] { ((Device)DeviceProvider.getDevices().get(events$DefaultDeviceUpdated.newDevice)).getName() }), Style.CONFIRM).show(); │ │ │ │ + Crouton.makeText((Activity)this, (CharSequence)this.getString(2130968594, new Object[] { ((Device)DeviceProvider.getDevices().get(events$DefaultDeviceUpdated.newDevice)).getName() }), Style.CONFIRM).show(); │ │ │ │ this.invalidateOptionsMenu(); │ │ │ │ } │ │ │ │ │ │ │ │ public void onMultipleImagesProcessed(final Events$MultipleImagesProcessed events$MultipleImagesProcessed) { │ │ │ │ if (events$MultipleImagesProcessed.uriList.size() != 0) { │ │ │ │ - Crouton.makeText((Activity)this, (CharSequence)this.getString(2131034128, new Object[] { events$MultipleImagesProcessed.uriList.size(), events$MultipleImagesProcessed.device.getName() }), Style.INFO).setOnClickListener((View$OnClickListener)new MainActivity$2(this, events$MultipleImagesProcessed)).show(); │ │ │ │ + Crouton.makeText((Activity)this, (CharSequence)this.getString(2130968592, new Object[] { events$MultipleImagesProcessed.uriList.size(), events$MultipleImagesProcessed.device.getName() }), Style.INFO).setOnClickListener((View$OnClickListener)new MainActivity$2(this, events$MultipleImagesProcessed)).show(); │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public boolean onOptionsItemSelected(final MenuItem menuItem) { │ │ │ │ boolean b = false; │ │ │ │ boolean onOptionsItemSelected = true; │ │ │ │ switch (menuItem.getItemId()) { │ │ │ │ @@ -76,36 +76,36 @@ │ │ │ │ break; │ │ │ │ } │ │ │ │ } │ │ │ │ return onOptionsItemSelected; │ │ │ │ } │ │ │ │ │ │ │ │ public void onSingleImageProcessed(final Events$SingleImageProcessed events$SingleImageProcessed) { │ │ │ │ - Crouton.makeText((Activity)this, (CharSequence)this.getString(2131034139, new Object[] { events$SingleImageProcessed.device.getName() }), Style.INFO).setOnClickListener((View$OnClickListener)new MainActivity$1(this, events$SingleImageProcessed)).show(); │ │ │ │ + Crouton.makeText((Activity)this, (CharSequence)this.getString(2130968603, new Object[] { events$SingleImageProcessed.device.getName() }), Style.INFO).setOnClickListener((View$OnClickListener)new MainActivity$1(this, events$SingleImageProcessed)).show(); │ │ │ │ } │ │ │ │ │ │ │ │ public void updateGlareSetting(final boolean b) { │ │ │ │ final SharedPreferences$Editor edit = this.sharedPreferences.edit(); │ │ │ │ edit.putBoolean("KEY_PREF_OPTION_GLARE", b); │ │ │ │ edit.commit(); │ │ │ │ if (b) { │ │ │ │ - Crouton.makeText((Activity)this, 2131034125, Style.CONFIRM).show(); │ │ │ │ + Crouton.makeText((Activity)this, 2130968589, Style.CONFIRM).show(); │ │ │ │ } │ │ │ │ else { │ │ │ │ - Crouton.makeText((Activity)this, 2131034124, Style.ALERT).show(); │ │ │ │ + Crouton.makeText((Activity)this, 2130968588, Style.ALERT).show(); │ │ │ │ } │ │ │ │ this.invalidateOptionsMenu(); │ │ │ │ } │ │ │ │ │ │ │ │ public void updateShadowSetting(final boolean b) { │ │ │ │ final SharedPreferences$Editor edit = this.sharedPreferences.edit(); │ │ │ │ edit.putBoolean("KEY_PREF_OPTION_SHADOW", b); │ │ │ │ edit.commit(); │ │ │ │ if (b) { │ │ │ │ - Crouton.makeText((Activity)this, (CharSequence)this.getString(2131034136), Style.CONFIRM).show(); │ │ │ │ + Crouton.makeText((Activity)this, (CharSequence)this.getString(2130968600), Style.CONFIRM).show(); │ │ │ │ } │ │ │ │ else { │ │ │ │ - Crouton.makeText((Activity)this, (CharSequence)this.getString(2131034135), Style.ALERT).show(); │ │ │ │ + Crouton.makeText((Activity)this, (CharSequence)this.getString(2130968599), Style.ALERT).show(); │ │ │ │ } │ │ │ │ this.invalidateOptionsMenu(); │ │ │ │ } │ │ │ │ } │ │ ├── com/f2prateek/dfg/util/Strings.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -160,19 +160,18 @@ │ │ │ │ final String s2 = "MD5"; │ │ │ │ StringBuilder sb = null; │ │ │ │ try { │ │ │ │ final byte[] digest = MessageDigest.getInstance(s2).digest(s.getBytes("UTF-8")); │ │ │ │ try { │ │ │ │ try { │ │ │ │ sb = new StringBuilder(); │ │ │ │ - final byte[] array = digest; │ │ │ │ final int length = digest.length; │ │ │ │ int i = 0; │ │ │ │ while (i < length) { │ │ │ │ - final byte b = array[i]; │ │ │ │ + final byte b = digest[i]; │ │ │ │ try { │ │ │ │ final String hexString = Integer.toHexString(b); │ │ │ │ try { │ │ │ │ if (hexString.length() == 1) { │ │ │ │ sb.append('0'); │ │ │ │ sb.append(hexString.charAt(hexString.length() - 1)); │ │ │ │ } │ │ ├── com/squareup/otto/AnnotatedHandlerFinder.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -4,106 +4,118 @@ │ │ │ │ import java.lang.annotation.Annotation; │ │ │ │ import java.util.Set; │ │ │ │ import java.util.HashSet; │ │ │ │ import java.util.Iterator; │ │ │ │ import java.lang.reflect.Method; │ │ │ │ import java.util.HashMap; │ │ │ │ import java.util.Map; │ │ │ │ +import java.util.concurrent.ConcurrentHashMap; │ │ │ │ +import java.util.concurrent.ConcurrentMap; │ │ │ │ │ │ │ │ final class AnnotatedHandlerFinder │ │ │ │ { │ │ │ │ - private static final Map PRODUCERS_CACHE; │ │ │ │ - private static final Map SUBSCRIBERS_CACHE; │ │ │ │ + private static final ConcurrentMap PRODUCERS_CACHE; │ │ │ │ + private static final ConcurrentMap SUBSCRIBERS_CACHE; │ │ │ │ │ │ │ │ static { │ │ │ │ - PRODUCERS_CACHE = new HashMap(); │ │ │ │ - SUBSCRIBERS_CACHE = new HashMap(); │ │ │ │ + PRODUCERS_CACHE = new ConcurrentHashMap(); │ │ │ │ + SUBSCRIBERS_CACHE = new ConcurrentHashMap(); │ │ │ │ } │ │ │ │ │ │ │ │ static Map findAllProducers(final Object o) { │ │ │ │ final Class class1 = o.getClass(); │ │ │ │ final HashMap hashMap = new HashMap(); │ │ │ │ - if (!AnnotatedHandlerFinder.PRODUCERS_CACHE.containsKey(class1)) { │ │ │ │ - loadAnnotatedMethods(class1); │ │ │ │ + Map map = (Map)AnnotatedHandlerFinder.PRODUCERS_CACHE.get(class1); │ │ │ │ + if (map == null) { │ │ │ │ + map = new HashMap(); │ │ │ │ + loadAnnotatedProducerMethods(class1, map); │ │ │ │ } │ │ │ │ - final Map map = (Map)AnnotatedHandlerFinder.PRODUCERS_CACHE.get(class1); │ │ │ │ if (!map.isEmpty()) { │ │ │ │ for (final Map.Entry entry : map.entrySet()) { │ │ │ │ hashMap.put(entry.getKey(), new EventProducer(o, (Method)entry.getValue())); │ │ │ │ } │ │ │ │ } │ │ │ │ return hashMap; │ │ │ │ } │ │ │ │ │ │ │ │ static Map findAllSubscribers(final Object o) { │ │ │ │ final Class class1 = o.getClass(); │ │ │ │ final HashMap> hashMap = new HashMap>(); │ │ │ │ - if (!AnnotatedHandlerFinder.SUBSCRIBERS_CACHE.containsKey(class1)) { │ │ │ │ - loadAnnotatedMethods(class1); │ │ │ │ + Map map = (Map)AnnotatedHandlerFinder.SUBSCRIBERS_CACHE.get(class1); │ │ │ │ + if (map == null) { │ │ │ │ + map = new HashMap(); │ │ │ │ + loadAnnotatedSubscriberMethods(class1, map); │ │ │ │ } │ │ │ │ - final Map map = (Map)AnnotatedHandlerFinder.SUBSCRIBERS_CACHE.get(class1); │ │ │ │ if (!map.isEmpty()) { │ │ │ │ for (final Map.Entry entry : map.entrySet()) { │ │ │ │ final HashSet set = new HashSet(); │ │ │ │ final Iterator iterator2 = ((Set)entry.getValue()).iterator(); │ │ │ │ while (iterator2.hasNext()) { │ │ │ │ set.add(new EventHandler(o, (Method)iterator2.next())); │ │ │ │ } │ │ │ │ hashMap.put(entry.getKey(), (HashSet)set); │ │ │ │ } │ │ │ │ } │ │ │ │ return hashMap; │ │ │ │ } │ │ │ │ │ │ │ │ - private static void loadAnnotatedMethods(final Class clazz) { │ │ │ │ - final HashMap, Set> hashMap = new HashMap, Set>(); │ │ │ │ - final HashMap hashMap2 = new HashMap(); │ │ │ │ + private static void loadAnnotatedMethods(final Class clazz, final Map map, final Map map2) { │ │ │ │ final Method[] declaredMethods = clazz.getDeclaredMethods(); │ │ │ │ for (int length = declaredMethods.length, i = 0; i < length; ++i) { │ │ │ │ final Method method = declaredMethods[i]; │ │ │ │ - if (method.isAnnotationPresent((Class)Subscribe.class)) { │ │ │ │ - final Class[] parameterTypes = method.getParameterTypes(); │ │ │ │ - if (parameterTypes.length != 1) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + " has @Subscribe annotation but requires " + parameterTypes.length + " arguments. Methods must require a single argument."); │ │ │ │ + if (!method.isBridge()) { │ │ │ │ + if (method.isAnnotationPresent((Class)Subscribe.class)) { │ │ │ │ + final Class[] parameterTypes = method.getParameterTypes(); │ │ │ │ + if (parameterTypes.length != 1) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + " has @Subscribe annotation but requires " + parameterTypes.length + " arguments. Methods must require a single argument."); │ │ │ │ + } │ │ │ │ + final Class clazz2 = parameterTypes[0]; │ │ │ │ + if (clazz2.isInterface()) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + " has @Subscribe annotation on " + clazz2 + " which is an interface. Subscription must be on a concrete class type."); │ │ │ │ + } │ │ │ │ + if ((method.getModifiers() & 0x1) == 0x0) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + " has @Subscribe annotation on " + clazz2 + " but is not 'public'."); │ │ │ │ + } │ │ │ │ + Set set = (Set)map2.get(clazz2); │ │ │ │ + if (set == null) { │ │ │ │ + set = new HashSet(); │ │ │ │ + map2.put(clazz2, set); │ │ │ │ + } │ │ │ │ + set.add(method); │ │ │ │ + } │ │ │ │ + else if (method.isAnnotationPresent((Class)Produce.class)) { │ │ │ │ + final Class[] parameterTypes2 = method.getParameterTypes(); │ │ │ │ + if (parameterTypes2.length != 0) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + "has @Produce annotation but requires " + parameterTypes2.length + " arguments. Methods must require zero arguments."); │ │ │ │ + } │ │ │ │ + if (method.getReturnType() == Void.class) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + " has a return type of void. Must declare a non-void type."); │ │ │ │ + } │ │ │ │ + final Class returnType = method.getReturnType(); │ │ │ │ + if (returnType.isInterface()) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + " has @Produce annotation on " + returnType + " which is an interface. Producers must return a concrete class type."); │ │ │ │ + } │ │ │ │ + if (returnType.equals(Void.TYPE)) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + " has @Produce annotation but has no return type."); │ │ │ │ + } │ │ │ │ + if ((method.getModifiers() & 0x1) == 0x0) { │ │ │ │ + throw new IllegalArgumentException("Method " + method + " has @Produce annotation on " + returnType + " but is not 'public'."); │ │ │ │ + } │ │ │ │ + if (map.containsKey(returnType)) { │ │ │ │ + throw new IllegalArgumentException("Producer for type " + returnType + " has already been registered."); │ │ │ │ + } │ │ │ │ + map.put(returnType, method); │ │ │ │ } │ │ │ │ - final Class clazz2 = parameterTypes[0]; │ │ │ │ - if (clazz2.isInterface()) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + " has @Subscribe annotation on " + clazz2 + " which is an interface. Subscription must be on a concrete class type."); │ │ │ │ - } │ │ │ │ - if ((method.getModifiers() & 0x1) == 0x0) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + " has @Subscribe annotation on " + clazz2 + " but is not 'public'."); │ │ │ │ - } │ │ │ │ - Set set = (Set)hashMap.get(clazz2); │ │ │ │ - if (set == null) { │ │ │ │ - set = new HashSet(); │ │ │ │ - hashMap.put(clazz2, set); │ │ │ │ - } │ │ │ │ - set.add(method); │ │ │ │ - } │ │ │ │ - else if (method.isAnnotationPresent((Class)Produce.class)) { │ │ │ │ - final Class[] parameterTypes2 = method.getParameterTypes(); │ │ │ │ - if (parameterTypes2.length != 0) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + "has @Produce annotation but requires " + parameterTypes2.length + " arguments. Methods must require zero arguments."); │ │ │ │ - } │ │ │ │ - if (method.getReturnType() == Void.class) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + " has a return type of void. Must declare a non-void type."); │ │ │ │ - } │ │ │ │ - final Class returnType = method.getReturnType(); │ │ │ │ - if (returnType.isInterface()) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + " has @Produce annotation on " + returnType + " which is an interface. Producers must return a concrete class type."); │ │ │ │ - } │ │ │ │ - if (returnType.equals(Void.TYPE)) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + " has @Produce annotation but has no return type."); │ │ │ │ - } │ │ │ │ - if ((method.getModifiers() & 0x1) == 0x0) { │ │ │ │ - throw new IllegalArgumentException("Method " + method + " has @Produce annotation on " + returnType + " but is not 'public'."); │ │ │ │ - } │ │ │ │ - if (hashMap2.containsKey(returnType)) { │ │ │ │ - throw new IllegalArgumentException("Producer for type " + returnType + " has already been registered."); │ │ │ │ - } │ │ │ │ - hashMap2.put(returnType, method); │ │ │ │ } │ │ │ │ } │ │ │ │ - AnnotatedHandlerFinder.PRODUCERS_CACHE.put(clazz, hashMap2); │ │ │ │ - AnnotatedHandlerFinder.SUBSCRIBERS_CACHE.put(clazz, hashMap); │ │ │ │ + AnnotatedHandlerFinder.PRODUCERS_CACHE.put(clazz, map); │ │ │ │ + AnnotatedHandlerFinder.SUBSCRIBERS_CACHE.put(clazz, map2); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static void loadAnnotatedProducerMethods(final Class clazz, final Map map) { │ │ │ │ + loadAnnotatedMethods(clazz, map, new HashMap()); │ │ │ │ + } │ │ │ │ + │ │ │ │ + private static void loadAnnotatedSubscriberMethods(final Class clazz, final Map map) { │ │ │ │ + loadAnnotatedMethods(clazz, new HashMap(), map); │ │ │ │ } │ │ │ │ } │ │ ├── com/squareup/otto/Bus.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,29 +1,28 @@ │ │ │ │ │ │ │ │ package com.squareup.otto; │ │ │ │ │ │ │ │ +import java.util.Map; │ │ │ │ import java.util.Collection; │ │ │ │ import java.util.concurrent.CopyOnWriteArraySet; │ │ │ │ import java.util.Iterator; │ │ │ │ import java.util.concurrent.ConcurrentLinkedQueue; │ │ │ │ import java.util.HashSet; │ │ │ │ import java.util.LinkedList; │ │ │ │ import java.util.Set; │ │ │ │ import java.lang.reflect.InvocationTargetException; │ │ │ │ -import java.util.HashMap; │ │ │ │ import java.util.concurrent.ConcurrentHashMap; │ │ │ │ import java.util.concurrent.ConcurrentMap; │ │ │ │ -import java.util.Map; │ │ │ │ │ │ │ │ public class Bus │ │ │ │ { │ │ │ │ public static final String DEFAULT_IDENTIFIER = "default"; │ │ │ │ private final ThreadEnforcer enforcer; │ │ │ │ private final ThreadLocal eventsToDispatch; │ │ │ │ - private final Map flattenHierarchyCache; │ │ │ │ + private final ConcurrentMap flattenHierarchyCache; │ │ │ │ private final HandlerFinder handlerFinder; │ │ │ │ private final ConcurrentMap handlersByType; │ │ │ │ private final String identifier; │ │ │ │ private final ThreadLocal isDispatching; │ │ │ │ private final ConcurrentMap producersByType; │ │ │ │ │ │ │ │ public Bus() { │ │ │ │ @@ -39,15 +38,15 @@ │ │ │ │ } │ │ │ │ │ │ │ │ Bus(final ThreadEnforcer enforcer, final String identifier, final HandlerFinder handlerFinder) { │ │ │ │ this.handlersByType = new ConcurrentHashMap(); │ │ │ │ this.producersByType = new ConcurrentHashMap(); │ │ │ │ this.eventsToDispatch = (ThreadLocal)new Bus$1(this); │ │ │ │ this.isDispatching = (ThreadLocal)new Bus$2(this); │ │ │ │ - this.flattenHierarchyCache = new HashMap(); │ │ │ │ + this.flattenHierarchyCache = new ConcurrentHashMap(); │ │ │ │ this.enforcer = enforcer; │ │ │ │ this.identifier = identifier; │ │ │ │ this.handlerFinder = handlerFinder; │ │ │ │ } │ │ │ │ │ │ │ │ public Bus(final String s) { │ │ │ │ this(ThreadEnforcer.MAIN, s); │ │ │ │ @@ -87,17 +86,17 @@ │ │ │ │ } │ │ │ │ return set; │ │ │ │ } │ │ │ │ │ │ │ │ private static void throwRuntimeException(final String s, final InvocationTargetException ex) { │ │ │ │ final Throwable cause = ex.getCause(); │ │ │ │ if (cause != null) { │ │ │ │ - throw new RuntimeException(s, cause); │ │ │ │ + throw new RuntimeException(s + ": " + cause.getMessage(), cause); │ │ │ │ } │ │ │ │ - throw new RuntimeException(s); │ │ │ │ + throw new RuntimeException(s + ": " + ex.getMessage(), ex); │ │ │ │ } │ │ │ │ │ │ │ │ protected void dispatch(final Object o, final EventHandler eventHandler) { │ │ │ │ try { │ │ │ │ eventHandler.handleEvent(o); │ │ │ │ } │ │ │ │ catch (InvocationTargetException ex) { │ │ │ │ @@ -127,20 +126,23 @@ │ │ │ │ } │ │ │ │ │ │ │ │ protected void enqueueEvent(final Object o, final EventHandler eventHandler) { │ │ │ │ ((ConcurrentLinkedQueue)this.eventsToDispatch.get()).offer(new Bus$EventWithHandler(o, eventHandler)); │ │ │ │ } │ │ │ │ │ │ │ │ Set flattenHierarchy(final Class clazz) { │ │ │ │ - Set classes = (Set)this.flattenHierarchyCache.get(clazz); │ │ │ │ - if (classes == null) { │ │ │ │ - classes = this.getClassesFor(clazz); │ │ │ │ - this.flattenHierarchyCache.put(clazz, classes); │ │ │ │ + Set set = (Set)this.flattenHierarchyCache.get(clazz); │ │ │ │ + if (set == null) { │ │ │ │ + final Set classes = this.getClassesFor(clazz); │ │ │ │ + set = this.flattenHierarchyCache.putIfAbsent(clazz, classes); │ │ │ │ + if (set == null) { │ │ │ │ + set = classes; │ │ │ │ + } │ │ │ │ } │ │ │ │ - return classes; │ │ │ │ + return set; │ │ │ │ } │ │ │ │ │ │ │ │ Set getHandlersForEventType(final Class clazz) { │ │ │ │ return (Set)this.handlersByType.get(clazz); │ │ │ │ } │ │ │ │ │ │ │ │ EventProducer getProducerForEventType(final Class clazz) { │ │ │ │ @@ -198,15 +200,17 @@ │ │ │ │ if (set2 == null) { │ │ │ │ final CopyOnWriteArraySet set3 = new CopyOnWriteArraySet(); │ │ │ │ set2 = this.handlersByType.putIfAbsent(clazz2, set3); │ │ │ │ if (set2 == null) { │ │ │ │ set2 = set3; │ │ │ │ } │ │ │ │ } │ │ │ │ - set2.addAll((Collection)allSubscribers.get(clazz2)); │ │ │ │ + if (!set2.addAll((Collection)allSubscribers.get(clazz2))) { │ │ │ │ + throw new IllegalArgumentException("Object already registered."); │ │ │ │ + } │ │ │ │ } │ │ │ │ for (final Map.Entry entry : allSubscribers.entrySet()) { │ │ │ │ final EventProducer eventProducer3 = (EventProducer)this.producersByType.get(entry.getKey()); │ │ │ │ if (eventProducer3 != null && eventProducer3.isValid()) { │ │ │ │ for (final EventHandler eventHandler : (Set)entry.getValue()) { │ │ │ │ if (!eventProducer3.isValid()) { │ │ │ │ break; │ │ ├── de/keyboardsurfer/android/widget/crouton/Crouton.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,11 +1,12 @@ │ │ │ │ │ │ │ │ package de.keyboardsurfer.android.widget.crouton; │ │ │ │ │ │ │ │ import android.view.animation.AnimationUtils; │ │ │ │ +import android.text.SpannableString; │ │ │ │ import android.view.View$MeasureSpec; │ │ │ │ import android.graphics.Typeface; │ │ │ │ import android.graphics.drawable.Drawable; │ │ │ │ import android.graphics.Shader$TileMode; │ │ │ │ import android.graphics.drawable.BitmapDrawable; │ │ │ │ import android.graphics.BitmapFactory; │ │ │ │ import android.widget.FrameLayout$LayoutParams; │ │ │ │ @@ -22,14 +23,15 @@ │ │ │ │ import android.view.View; │ │ │ │ import android.widget.FrameLayout; │ │ │ │ import android.app.Activity; │ │ │ │ │ │ │ │ public final class Crouton │ │ │ │ { │ │ │ │ private static final int IMAGE_ID = 256; │ │ │ │ + private static final String NULL_PARAMETERS_ARE_NOT_ACCEPTED = "Null parameters are not accepted"; │ │ │ │ private static final int TEXT_ID = 257; │ │ │ │ private Activity activity; │ │ │ │ private Configuration configuration; │ │ │ │ private FrameLayout croutonView; │ │ │ │ private final View customView; │ │ │ │ private Animation inAnimation; │ │ │ │ private LifecycleCallback lifecycleCallback; │ │ │ │ @@ -101,41 +103,49 @@ │ │ │ │ } │ │ │ │ │ │ │ │ public static void clearCroutonsForActivity(final Activity activity) { │ │ │ │ Manager.getInstance().clearCroutonsForActivity(activity); │ │ │ │ } │ │ │ │ │ │ │ │ public static String getLicenseText() { │ │ │ │ - return "This application uses the Crouton library.\n\nCopyright 2012 - 2013 Benjamin Weiss \nCopyright 2012 Neofonie Mobile GmbH\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License."; │ │ │ │ + return "This application uses the Crouton library.\n\nCopyright 2012 - 2013 Benjamin Weiss \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License."; │ │ │ │ } │ │ │ │ │ │ │ │ public static void hide(final Crouton crouton) { │ │ │ │ - Manager.getInstance().removeCrouton(crouton); │ │ │ │ + crouton.hide(); │ │ │ │ } │ │ │ │ │ │ │ │ private RelativeLayout initializeContentView(final Resources resources) { │ │ │ │ final int n = -1; │ │ │ │ - final int n2 = -2; │ │ │ │ final RelativeLayout relativeLayout = new RelativeLayout((Context)this.activity); │ │ │ │ - relativeLayout.setLayoutParams((ViewGroup$LayoutParams)new RelativeLayout$LayoutParams(n, n2)); │ │ │ │ - int n3 = this.style.paddingInPixels; │ │ │ │ + relativeLayout.setLayoutParams((ViewGroup$LayoutParams)new RelativeLayout$LayoutParams(n, n)); │ │ │ │ + int n2 = this.style.paddingInPixels; │ │ │ │ if (this.style.paddingDimensionResId > 0) { │ │ │ │ - n3 = resources.getDimensionPixelSize(this.style.paddingDimensionResId); │ │ │ │ + n2 = resources.getDimensionPixelSize(this.style.paddingDimensionResId); │ │ │ │ } │ │ │ │ - relativeLayout.setPadding(n3, n3, n3, n3); │ │ │ │ + relativeLayout.setPadding(n2, n2, n2, n2); │ │ │ │ ImageView initializeImageView = null; │ │ │ │ if (this.style.imageDrawable != null || this.style.imageResId != 0) { │ │ │ │ initializeImageView = this.initializeImageView(); │ │ │ │ relativeLayout.addView((View)initializeImageView, initializeImageView.getLayoutParams()); │ │ │ │ } │ │ │ │ final TextView initializeTextView = this.initializeTextView(resources); │ │ │ │ - final RelativeLayout$LayoutParams relativeLayout$LayoutParams = new RelativeLayout$LayoutParams(n, n2); │ │ │ │ + final RelativeLayout$LayoutParams relativeLayout$LayoutParams = new RelativeLayout$LayoutParams(n, -2); │ │ │ │ if (initializeImageView != null) { │ │ │ │ relativeLayout$LayoutParams.addRule(1, initializeImageView.getId()); │ │ │ │ } │ │ │ │ + if ((this.style.gravity & 0x11) != 0x0) { │ │ │ │ + relativeLayout$LayoutParams.addRule(13); │ │ │ │ + } │ │ │ │ + else if ((this.style.gravity & 0x10) != 0x0) { │ │ │ │ + relativeLayout$LayoutParams.addRule(15); │ │ │ │ + } │ │ │ │ + else if ((this.style.gravity & 0x1) != 0x0) { │ │ │ │ + relativeLayout$LayoutParams.addRule(14); │ │ │ │ + } │ │ │ │ relativeLayout.addView((View)initializeTextView, (ViewGroup$LayoutParams)relativeLayout$LayoutParams); │ │ │ │ return relativeLayout; │ │ │ │ } │ │ │ │ │ │ │ │ private void initializeCroutonView() { │ │ │ │ final Resources resources = this.activity.getResources(); │ │ │ │ (this.croutonView = this.initializeCroutonViewGroup(resources)).addView((View)this.initializeContentView(resources)); │ │ │ │ @@ -200,18 +210,29 @@ │ │ │ │ imageView.setLayoutParams((ViewGroup$LayoutParams)layoutParams); │ │ │ │ return imageView; │ │ │ │ } │ │ │ │ │ │ │ │ private TextView initializeTextView(final Resources resources) { │ │ │ │ final TextView textView = new TextView((Context)this.activity); │ │ │ │ textView.setId(257); │ │ │ │ - textView.setText(this.text); │ │ │ │ + if (this.style.fontName != null) { │ │ │ │ + this.setTextWithCustomFont(textView, this.style.fontName); │ │ │ │ + } │ │ │ │ + else if (this.style.fontNameResId != 0) { │ │ │ │ + this.setTextWithCustomFont(textView, resources.getString(this.style.fontNameResId)); │ │ │ │ + } │ │ │ │ + else { │ │ │ │ + textView.setText(this.text); │ │ │ │ + } │ │ │ │ textView.setTypeface(Typeface.DEFAULT_BOLD); │ │ │ │ textView.setGravity(this.style.gravity); │ │ │ │ - if (this.style.textColorResourceId != 0) { │ │ │ │ + if (this.style.textColorValue != -1) { │ │ │ │ + textView.setTextColor(this.style.textColorValue); │ │ │ │ + } │ │ │ │ + else if (this.style.textColorResourceId != 0) { │ │ │ │ textView.setTextColor(resources.getColor(this.style.textColorResourceId)); │ │ │ │ } │ │ │ │ if (this.style.textSize != 0) { │ │ │ │ textView.setTextSize(2, (float)this.style.textSize); │ │ │ │ } │ │ │ │ if (this.style.textShadowColorResId != 0) { │ │ │ │ this.initializeTextViewShadow(resources, textView); │ │ │ │ @@ -283,14 +304,22 @@ │ │ │ │ } │ │ │ │ else { │ │ │ │ n2 = View$MeasureSpec.makeMeasureSpec(this.activity.getWindow().getDecorView().getMeasuredWidth(), n); │ │ │ │ } │ │ │ │ view.measure(n2, View$MeasureSpec.makeMeasureSpec(0, 0)); │ │ │ │ } │ │ │ │ │ │ │ │ + private void setTextWithCustomFont(final TextView textView, final String s) { │ │ │ │ + if (this.text != null) { │ │ │ │ + final SpannableString text = new SpannableString(this.text); │ │ │ │ + text.setSpan((Object)new TypefaceSpan(textView.getContext(), s), 0, text.length(), 33); │ │ │ │ + textView.setText((CharSequence)text); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ public static void show(final Activity activity, final View view) { │ │ │ │ make(activity, view).show(); │ │ │ │ } │ │ │ │ │ │ │ │ public static void show(final Activity activity, final View view, final int n) { │ │ │ │ make(activity, view, n).show(); │ │ │ │ } │ │ │ │ @@ -405,14 +434,18 @@ │ │ │ │ return (View)o; │ │ │ │ } │ │ │ │ │ │ │ │ ViewGroup getViewGroup() { │ │ │ │ return this.viewGroup; │ │ │ │ } │ │ │ │ │ │ │ │ + public void hide() { │ │ │ │ + Manager.getInstance().removeCrouton(this); │ │ │ │ + } │ │ │ │ + │ │ │ │ boolean isShowing() { │ │ │ │ return this.activity != null && (this.isCroutonViewNotNull() || this.isCustomViewNotNull()); │ │ │ │ } │ │ │ │ │ │ │ │ public Crouton setConfiguration(final Configuration configuration) { │ │ │ │ this.configuration = configuration; │ │ │ │ return this; │ │ ├── de/keyboardsurfer/android/widget/crouton/Manager$1.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -21,14 +21,16 @@ │ │ │ │ public void onGlobalLayout() { │ │ │ │ if (Build$VERSION.SDK_INT < 16) { │ │ │ │ this.val$croutonView.getViewTreeObserver().removeGlobalOnLayoutListener((ViewTreeObserver$OnGlobalLayoutListener)this); │ │ │ │ } │ │ │ │ else { │ │ │ │ this.val$croutonView.getViewTreeObserver().removeOnGlobalLayoutListener((ViewTreeObserver$OnGlobalLayoutListener)this); │ │ │ │ } │ │ │ │ - this.val$croutonView.startAnimation(this.val$crouton.getInAnimation()); │ │ │ │ - Manager.announceForAccessibilityCompat((Context)this.val$crouton.getActivity(), this.val$crouton.getText()); │ │ │ │ - if (-1 != this.val$crouton.getConfiguration().durationInMilliseconds) { │ │ │ │ - Manager.access$000(this.this$0, this.val$crouton, -1040155167, (long)this.val$crouton.getConfiguration().durationInMilliseconds + this.val$crouton.getInAnimation().getDuration()); │ │ │ │ + if (this.val$crouton.getInAnimation() != null) { │ │ │ │ + this.val$croutonView.startAnimation(this.val$crouton.getInAnimation()); │ │ │ │ + Manager.announceForAccessibilityCompat((Context)this.val$crouton.getActivity(), this.val$crouton.getText()); │ │ │ │ + if (-1 != this.val$crouton.getConfiguration().durationInMilliseconds) { │ │ │ │ + Manager.access$000(this.this$0, this.val$crouton, -1040155167, (long)this.val$crouton.getConfiguration().durationInMilliseconds + this.val$crouton.getInAnimation().getDuration()); │ │ │ │ + } │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ ├── de/keyboardsurfer/android/widget/crouton/Manager.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,68 +1,82 @@ │ │ │ │ │ │ │ │ package de.keyboardsurfer.android.widget.crouton; │ │ │ │ │ │ │ │ import java.util.Iterator; │ │ │ │ -import android.view.ViewGroup; │ │ │ │ +import android.widget.RelativeLayout; │ │ │ │ +import android.widget.AdapterView; │ │ │ │ +import android.widget.FrameLayout; │ │ │ │ +import android.content.res.Resources; │ │ │ │ import android.os.Message; │ │ │ │ import android.view.accessibility.AccessibilityEvent; │ │ │ │ import android.view.accessibility.AccessibilityManager; │ │ │ │ import android.os.Build$VERSION; │ │ │ │ import android.content.Context; │ │ │ │ +import android.view.ViewTreeObserver; │ │ │ │ import android.app.Activity; │ │ │ │ +import android.view.ViewGroup; │ │ │ │ import android.view.View; │ │ │ │ import android.view.ViewTreeObserver$OnGlobalLayoutListener; │ │ │ │ -import android.widget.FrameLayout; │ │ │ │ import android.view.ViewGroup$LayoutParams; │ │ │ │ +import android.view.ViewGroup$MarginLayoutParams; │ │ │ │ import java.util.concurrent.LinkedBlockingQueue; │ │ │ │ import java.util.Queue; │ │ │ │ import android.os.Handler; │ │ │ │ │ │ │ │ final class Manager extends Handler │ │ │ │ { │ │ │ │ private static Manager INSTANCE; │ │ │ │ - private Queue croutonQueue; │ │ │ │ + private final Queue croutonQueue; │ │ │ │ │ │ │ │ private Manager() { │ │ │ │ this.croutonQueue = new LinkedBlockingQueue(); │ │ │ │ } │ │ │ │ │ │ │ │ private void addCroutonToView(final Crouton crouton) { │ │ │ │ if (!crouton.isShowing()) { │ │ │ │ final View view = crouton.getView(); │ │ │ │ if (view.getParent() == null) { │ │ │ │ - ViewGroup$LayoutParams layoutParams = view.getLayoutParams(); │ │ │ │ + Object layoutParams = view.getLayoutParams(); │ │ │ │ if (layoutParams == null) { │ │ │ │ - layoutParams = new ViewGroup$LayoutParams(-1, -2); │ │ │ │ + layoutParams = new ViewGroup$MarginLayoutParams(-1, -2); │ │ │ │ } │ │ │ │ if (crouton.getViewGroup() != null) { │ │ │ │ - if (crouton.getViewGroup() instanceof FrameLayout) { │ │ │ │ - crouton.getViewGroup().addView(view, layoutParams); │ │ │ │ + final ViewGroup viewGroup = crouton.getViewGroup(); │ │ │ │ + if (this.shouldAddViewWithoutPosition(viewGroup)) { │ │ │ │ + viewGroup.addView(view, (ViewGroup$LayoutParams)layoutParams); │ │ │ │ } │ │ │ │ else { │ │ │ │ - crouton.getViewGroup().addView(view, 0, layoutParams); │ │ │ │ + viewGroup.addView(view, 0, (ViewGroup$LayoutParams)layoutParams); │ │ │ │ } │ │ │ │ } │ │ │ │ else { │ │ │ │ final Activity activity = crouton.getActivity(); │ │ │ │ if (activity == null || activity.isFinishing()) { │ │ │ │ return; │ │ │ │ } │ │ │ │ - activity.addContentView(view, layoutParams); │ │ │ │ + this.handleTranslucentActionBar((ViewGroup$MarginLayoutParams)layoutParams, activity); │ │ │ │ + this.handleActionBarOverlay((ViewGroup$MarginLayoutParams)layoutParams, activity); │ │ │ │ + activity.addContentView(view, (ViewGroup$LayoutParams)layoutParams); │ │ │ │ } │ │ │ │ } │ │ │ │ view.requestLayout(); │ │ │ │ - view.getViewTreeObserver().addOnGlobalLayoutListener((ViewTreeObserver$OnGlobalLayoutListener)new Manager$1(this, view, crouton)); │ │ │ │ + final ViewTreeObserver viewTreeObserver = view.getViewTreeObserver(); │ │ │ │ + if (viewTreeObserver != null) { │ │ │ │ + viewTreeObserver.addOnGlobalLayoutListener((ViewTreeObserver$OnGlobalLayoutListener)new Manager$1(this, view, crouton)); │ │ │ │ + } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public static void announceForAccessibilityCompat(final Context context, final CharSequence charSequence) { │ │ │ │ if (Build$VERSION.SDK_INT >= 4) { │ │ │ │ - final AccessibilityManager accessibilityManager = (AccessibilityManager)context.getSystemService("accessibility"); │ │ │ │ - if (accessibilityManager.isEnabled()) { │ │ │ │ + AccessibilityManager accessibilityManager = null; │ │ │ │ + if (context != null) { │ │ │ │ + accessibilityManager = (AccessibilityManager)context.getSystemService("accessibility"); │ │ │ │ + } │ │ │ │ + if (accessibilityManager != null && accessibilityManager.isEnabled()) { │ │ │ │ int n; │ │ │ │ if (Build$VERSION.SDK_INT < 16) { │ │ │ │ n = 8; │ │ │ │ } │ │ │ │ else { │ │ │ │ n = 16384; │ │ │ │ } │ │ │ │ @@ -102,93 +116,121 @@ │ │ │ │ if (Manager.INSTANCE == null) { │ │ │ │ Manager.INSTANCE = new Manager(); │ │ │ │ } │ │ │ │ return Manager.INSTANCE; │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ + private void handleActionBarOverlay(final ViewGroup$MarginLayoutParams viewGroup$MarginLayoutParams, final Activity activity) { │ │ │ │ + if (Build$VERSION.SDK_INT >= 11 && activity.getWindow().hasFeature(9)) { │ │ │ │ + this.setActionBarMargin(viewGroup$MarginLayoutParams, activity); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private void handleTranslucentActionBar(final ViewGroup$MarginLayoutParams viewGroup$MarginLayoutParams, final Activity activity) { │ │ │ │ + final int n = 67108864; │ │ │ │ + if (Build$VERSION.SDK_INT >= 19 && (activity.getWindow().getAttributes().flags & n) == n) { │ │ │ │ + this.setActionBarMargin(viewGroup$MarginLayoutParams, activity); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ private void removeAllMessages() { │ │ │ │ this.removeMessages(-1040157475); │ │ │ │ this.removeMessages(794631); │ │ │ │ this.removeMessages(-1040155167); │ │ │ │ } │ │ │ │ │ │ │ │ private void removeAllMessagesForCrouton(final Crouton crouton) { │ │ │ │ this.removeMessages(-1040157475, (Object)crouton); │ │ │ │ this.removeMessages(794631, (Object)crouton); │ │ │ │ this.removeMessages(-1040155167, (Object)crouton); │ │ │ │ } │ │ │ │ │ │ │ │ + private void removeCroutonFromViewParent(final Crouton crouton) { │ │ │ │ + if (crouton.isShowing()) { │ │ │ │ + final ViewGroup viewGroup = (ViewGroup)crouton.getView().getParent(); │ │ │ │ + if (viewGroup != null) { │ │ │ │ + viewGroup.removeView(crouton.getView()); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ private void sendMessage(final Crouton obj, final int n) { │ │ │ │ final Message obtainMessage = this.obtainMessage(n); │ │ │ │ obtainMessage.obj = obj; │ │ │ │ this.sendMessage(obtainMessage); │ │ │ │ } │ │ │ │ │ │ │ │ private void sendMessageDelayed(final Crouton obj, final int n, final long n2) { │ │ │ │ final Message obtainMessage = this.obtainMessage(n); │ │ │ │ obtainMessage.obj = obj; │ │ │ │ this.sendMessageDelayed(obtainMessage, n2); │ │ │ │ } │ │ │ │ │ │ │ │ + private void setActionBarMargin(final ViewGroup$MarginLayoutParams viewGroup$MarginLayoutParams, final Activity activity) { │ │ │ │ + final View viewById = activity.findViewById(Resources.getSystem().getIdentifier("action_bar_container", "id", "android")); │ │ │ │ + if (viewById != null) { │ │ │ │ + viewGroup$MarginLayoutParams.topMargin = viewById.getBottom(); │ │ │ │ + } │ │ │ │ + } │ │ │ │ + │ │ │ │ + private boolean shouldAddViewWithoutPosition(final ViewGroup viewGroup) { │ │ │ │ + return viewGroup instanceof FrameLayout || viewGroup instanceof AdapterView || viewGroup instanceof RelativeLayout; │ │ │ │ + } │ │ │ │ + │ │ │ │ void add(final Crouton crouton) { │ │ │ │ this.croutonQueue.add(crouton); │ │ │ │ this.displayCrouton(); │ │ │ │ } │ │ │ │ │ │ │ │ void clearCroutonQueue() { │ │ │ │ this.removeAllMessages(); │ │ │ │ - if (this.croutonQueue != null) { │ │ │ │ - for (final Crouton crouton : this.croutonQueue) { │ │ │ │ - if (crouton.isShowing()) { │ │ │ │ - ((ViewGroup)crouton.getView().getParent()).removeView(crouton.getView()); │ │ │ │ - } │ │ │ │ - } │ │ │ │ - this.croutonQueue.clear(); │ │ │ │ + final Iterator iterator = this.croutonQueue.iterator(); │ │ │ │ + while (iterator.hasNext()) { │ │ │ │ + this.removeCroutonFromViewParent(iterator.next()); │ │ │ │ } │ │ │ │ + this.croutonQueue.clear(); │ │ │ │ } │ │ │ │ │ │ │ │ void clearCroutonsForActivity(final Activity activity) { │ │ │ │ - if (this.croutonQueue != null) { │ │ │ │ - final Iterator iterator = this.croutonQueue.iterator(); │ │ │ │ - while (iterator.hasNext()) { │ │ │ │ - final Crouton crouton = (Crouton)iterator.next(); │ │ │ │ - if (crouton.getActivity() != null && crouton.getActivity().equals(activity)) { │ │ │ │ - if (crouton.isShowing()) { │ │ │ │ - ((ViewGroup)crouton.getView().getParent()).removeView(crouton.getView()); │ │ │ │ - } │ │ │ │ - this.removeAllMessagesForCrouton(crouton); │ │ │ │ - iterator.remove(); │ │ │ │ - } │ │ │ │ + final Iterator iterator = this.croutonQueue.iterator(); │ │ │ │ + while (iterator.hasNext()) { │ │ │ │ + final Crouton crouton = (Crouton)iterator.next(); │ │ │ │ + if (crouton.getActivity() != null && crouton.getActivity().equals(activity)) { │ │ │ │ + this.removeCroutonFromViewParent(crouton); │ │ │ │ + this.removeAllMessagesForCrouton(crouton); │ │ │ │ + iterator.remove(); │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public void handleMessage(final Message message) { │ │ │ │ final Crouton crouton = (Crouton)message.obj; │ │ │ │ - switch (message.what) { │ │ │ │ - default: { │ │ │ │ - super.handleMessage(message); │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - case 794631: { │ │ │ │ - this.displayCrouton(); │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - case -1040157475: { │ │ │ │ - this.addCroutonToView(crouton); │ │ │ │ - break; │ │ │ │ - } │ │ │ │ - case -1040155167: { │ │ │ │ - this.removeCrouton(crouton); │ │ │ │ - if (crouton.getLifecycleCallback() != null) { │ │ │ │ - crouton.getLifecycleCallback().onRemoved(); │ │ │ │ + if (crouton != null) { │ │ │ │ + switch (message.what) { │ │ │ │ + default: { │ │ │ │ + super.handleMessage(message); │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + case 794631: { │ │ │ │ + this.displayCrouton(); │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + case -1040157475: { │ │ │ │ + this.addCroutonToView(crouton); │ │ │ │ + break; │ │ │ │ + } │ │ │ │ + case -1040155167: { │ │ │ │ + this.removeCrouton(crouton); │ │ │ │ + if (crouton.getLifecycleCallback() != null) { │ │ │ │ + crouton.getLifecycleCallback().onRemoved(); │ │ │ │ + break; │ │ │ │ + } │ │ │ │ break; │ │ │ │ } │ │ │ │ - break; │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ protected void removeCrouton(final Crouton crouton) { │ │ │ │ final View view = crouton.getView(); │ │ │ │ final ViewGroup viewGroup = (ViewGroup)view.getParent(); │ │ │ │ @@ -209,26 +251,22 @@ │ │ │ │ } │ │ │ │ │ │ │ │ void removeCroutonImmediately(final Crouton crouton) { │ │ │ │ if (crouton.getActivity() != null && crouton.getView() != null && crouton.getView().getParent() != null) { │ │ │ │ ((ViewGroup)crouton.getView().getParent()).removeView(crouton.getView()); │ │ │ │ this.removeAllMessagesForCrouton(crouton); │ │ │ │ } │ │ │ │ - if (this.croutonQueue != null) { │ │ │ │ - final Iterator iterator = this.croutonQueue.iterator(); │ │ │ │ - while (iterator.hasNext()) { │ │ │ │ - final Crouton crouton2 = (Crouton)iterator.next(); │ │ │ │ - if (crouton2.equals(crouton) && crouton2.getActivity() != null) { │ │ │ │ - if (crouton.isShowing()) { │ │ │ │ - ((ViewGroup)crouton2.getView().getParent()).removeView(crouton2.getView()); │ │ │ │ - } │ │ │ │ - this.removeAllMessagesForCrouton(crouton2); │ │ │ │ - iterator.remove(); │ │ │ │ - break; │ │ │ │ - } │ │ │ │ + final Iterator iterator = this.croutonQueue.iterator(); │ │ │ │ + while (iterator.hasNext()) { │ │ │ │ + final Crouton crouton2 = (Crouton)iterator.next(); │ │ │ │ + if (crouton2.equals(crouton) && crouton2.getActivity() != null) { │ │ │ │ + this.removeCroutonFromViewParent(crouton); │ │ │ │ + this.removeAllMessagesForCrouton(crouton2); │ │ │ │ + iterator.remove(); │ │ │ │ + break; │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public String toString() { │ │ │ │ return "Manager{croutonQueue=" + this.croutonQueue + '}'; │ │ │ │ } │ │ ├── de/keyboardsurfer/android/widget/crouton/Style$Builder.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -6,57 +6,64 @@ │ │ │ │ │ │ │ │ public class Style$Builder │ │ │ │ { │ │ │ │ private int backgroundColorResourceId; │ │ │ │ private int backgroundColorValue; │ │ │ │ private int backgroundDrawableResourceId; │ │ │ │ private Configuration configuration; │ │ │ │ + private String fontName; │ │ │ │ + private int fontNameResId; │ │ │ │ private int gravity; │ │ │ │ private int heightDimensionResId; │ │ │ │ private int heightInPixels; │ │ │ │ private Drawable imageDrawable; │ │ │ │ private int imageResId; │ │ │ │ private ImageView$ScaleType imageScaleType; │ │ │ │ private boolean isTileEnabled; │ │ │ │ private int paddingDimensionResId; │ │ │ │ private int paddingInPixels; │ │ │ │ private int textAppearanceResId; │ │ │ │ private int textColorResourceId; │ │ │ │ + private int textColorValue; │ │ │ │ private int textShadowColorResId; │ │ │ │ private float textShadowDx; │ │ │ │ private float textShadowDy; │ │ │ │ private float textShadowRadius; │ │ │ │ private int textSize; │ │ │ │ private int widthDimensionResId; │ │ │ │ private int widthInPixels; │ │ │ │ │ │ │ │ public Style$Builder() { │ │ │ │ - final int n = -1; │ │ │ │ + final int widthInPixels = -1; │ │ │ │ this.configuration = Configuration.DEFAULT; │ │ │ │ this.paddingInPixels = 10; │ │ │ │ this.backgroundColorResourceId = 17170450; │ │ │ │ this.backgroundDrawableResourceId = 0; │ │ │ │ - this.backgroundColorValue = n; │ │ │ │ + this.backgroundColorValue = widthInPixels; │ │ │ │ this.isTileEnabled = false; │ │ │ │ this.textColorResourceId = 17170443; │ │ │ │ + this.textColorValue = widthInPixels; │ │ │ │ this.heightInPixels = -2; │ │ │ │ - this.widthInPixels = n; │ │ │ │ + this.widthInPixels = widthInPixels; │ │ │ │ this.gravity = 17; │ │ │ │ this.imageDrawable = null; │ │ │ │ this.imageResId = 0; │ │ │ │ this.imageScaleType = ImageView$ScaleType.FIT_XY; │ │ │ │ + this.fontName = null; │ │ │ │ + this.fontNameResId = 0; │ │ │ │ } │ │ │ │ │ │ │ │ public Style$Builder(final Style style) { │ │ │ │ this.configuration = style.configuration; │ │ │ │ this.backgroundColorValue = style.backgroundColorValue; │ │ │ │ this.backgroundColorResourceId = style.backgroundColorResourceId; │ │ │ │ this.backgroundDrawableResourceId = style.backgroundDrawableResourceId; │ │ │ │ this.isTileEnabled = style.isTileEnabled; │ │ │ │ this.textColorResourceId = style.textColorResourceId; │ │ │ │ + this.textColorValue = style.textColorValue; │ │ │ │ this.heightInPixels = style.heightInPixels; │ │ │ │ this.heightDimensionResId = style.heightDimensionResId; │ │ │ │ this.widthInPixels = style.widthInPixels; │ │ │ │ this.widthDimensionResId = style.widthDimensionResId; │ │ │ │ this.gravity = style.gravity; │ │ │ │ this.imageDrawable = style.imageDrawable; │ │ │ │ this.textSize = style.textSize; │ │ │ │ @@ -65,14 +72,16 @@ │ │ │ │ this.textShadowDx = style.textShadowDx; │ │ │ │ this.textShadowDy = style.textShadowDy; │ │ │ │ this.textAppearanceResId = style.textAppearanceResId; │ │ │ │ this.imageResId = style.imageResId; │ │ │ │ this.imageScaleType = style.imageScaleType; │ │ │ │ this.paddingInPixels = style.paddingInPixels; │ │ │ │ this.paddingDimensionResId = style.paddingDimensionResId; │ │ │ │ + this.fontName = style.fontName; │ │ │ │ + this.fontNameResId = style.fontNameResId; │ │ │ │ } │ │ │ │ │ │ │ │ public Style build() { │ │ │ │ return new Style(this, (Style$1)null); │ │ │ │ } │ │ │ │ │ │ │ │ public Style$Builder setBackgroundColor(final int backgroundColorResourceId) { │ │ │ │ @@ -91,14 +100,24 @@ │ │ │ │ } │ │ │ │ │ │ │ │ public Style$Builder setConfiguration(final Configuration configuration) { │ │ │ │ this.configuration = configuration; │ │ │ │ return this; │ │ │ │ } │ │ │ │ │ │ │ │ + public Style$Builder setFontName(final String fontName) { │ │ │ │ + this.fontName = fontName; │ │ │ │ + return this; │ │ │ │ + } │ │ │ │ + │ │ │ │ + public Style$Builder setFontNameResId(final int fontNameResId) { │ │ │ │ + this.fontNameResId = fontNameResId; │ │ │ │ + return this; │ │ │ │ + } │ │ │ │ + │ │ │ │ public Style$Builder setGravity(final int gravity) { │ │ │ │ this.gravity = gravity; │ │ │ │ return this; │ │ │ │ } │ │ │ │ │ │ │ │ public Style$Builder setHeight(final int heightInPixels) { │ │ │ │ this.heightInPixels = heightInPixels; │ │ │ │ @@ -141,14 +160,19 @@ │ │ │ │ } │ │ │ │ │ │ │ │ public Style$Builder setTextColor(final int textColorResourceId) { │ │ │ │ this.textColorResourceId = textColorResourceId; │ │ │ │ return this; │ │ │ │ } │ │ │ │ │ │ │ │ + public Style$Builder setTextColorValue(final int textColorValue) { │ │ │ │ + this.textColorValue = textColorValue; │ │ │ │ + return this; │ │ │ │ + } │ │ │ │ + │ │ │ │ public Style$Builder setTextShadowColor(final int textShadowColorResId) { │ │ │ │ this.textShadowColorResId = textShadowColorResId; │ │ │ │ return this; │ │ │ │ } │ │ │ │ │ │ │ │ public Style$Builder setTextShadowDx(final float textShadowDx) { │ │ │ │ this.textShadowDx = textShadowDx; │ │ ├── de/keyboardsurfer/android/widget/crouton/Style.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -5,32 +5,36 @@ │ │ │ │ import android.graphics.drawable.Drawable; │ │ │ │ │ │ │ │ public class Style │ │ │ │ { │ │ │ │ public static final Style ALERT; │ │ │ │ public static final Style CONFIRM; │ │ │ │ public static final Style INFO; │ │ │ │ + public static final int NOT_SET = 255; │ │ │ │ public static final int holoBlueLight = -13388315; │ │ │ │ public static final int holoGreenLight = 10079232; │ │ │ │ public static final int holoRedLight = 16729156; │ │ │ │ final int backgroundColorResourceId; │ │ │ │ final int backgroundColorValue; │ │ │ │ final int backgroundDrawableResourceId; │ │ │ │ final Configuration configuration; │ │ │ │ + final String fontName; │ │ │ │ + final int fontNameResId; │ │ │ │ final int gravity; │ │ │ │ final int heightDimensionResId; │ │ │ │ final int heightInPixels; │ │ │ │ final Drawable imageDrawable; │ │ │ │ final int imageResId; │ │ │ │ final ImageView$ScaleType imageScaleType; │ │ │ │ final boolean isTileEnabled; │ │ │ │ final int paddingDimensionResId; │ │ │ │ final int paddingInPixels; │ │ │ │ final int textAppearanceResId; │ │ │ │ final int textColorResourceId; │ │ │ │ + final int textColorValue; │ │ │ │ final int textShadowColorResId; │ │ │ │ final float textShadowDx; │ │ │ │ final float textShadowDy; │ │ │ │ final float textShadowRadius; │ │ │ │ final int textSize; │ │ │ │ final int widthDimensionResId; │ │ │ │ final int widthInPixels; │ │ │ │ @@ -43,30 +47,33 @@ │ │ │ │ │ │ │ │ private Style(final Style$Builder style$Builder) { │ │ │ │ this.configuration = Style$Builder.access$000(style$Builder); │ │ │ │ this.backgroundColorResourceId = Style$Builder.access$100(style$Builder); │ │ │ │ this.backgroundDrawableResourceId = Style$Builder.access$200(style$Builder); │ │ │ │ this.isTileEnabled = Style$Builder.access$300(style$Builder); │ │ │ │ this.textColorResourceId = Style$Builder.access$400(style$Builder); │ │ │ │ - this.heightInPixels = Style$Builder.access$500(style$Builder); │ │ │ │ - this.heightDimensionResId = Style$Builder.access$600(style$Builder); │ │ │ │ - this.widthInPixels = Style$Builder.access$700(style$Builder); │ │ │ │ - this.widthDimensionResId = Style$Builder.access$800(style$Builder); │ │ │ │ - this.gravity = Style$Builder.access$900(style$Builder); │ │ │ │ - this.imageDrawable = Style$Builder.access$1000(style$Builder); │ │ │ │ - this.textSize = Style$Builder.access$1100(style$Builder); │ │ │ │ - this.textShadowColorResId = Style$Builder.access$1200(style$Builder); │ │ │ │ - this.textShadowRadius = Style$Builder.access$1300(style$Builder); │ │ │ │ - this.textShadowDx = Style$Builder.access$1400(style$Builder); │ │ │ │ - this.textShadowDy = Style$Builder.access$1500(style$Builder); │ │ │ │ - this.textAppearanceResId = Style$Builder.access$1600(style$Builder); │ │ │ │ - this.imageResId = Style$Builder.access$1700(style$Builder); │ │ │ │ - this.imageScaleType = Style$Builder.access$1800(style$Builder); │ │ │ │ - this.paddingInPixels = Style$Builder.access$1900(style$Builder); │ │ │ │ - this.paddingDimensionResId = Style$Builder.access$2000(style$Builder); │ │ │ │ - this.backgroundColorValue = Style$Builder.access$2100(style$Builder); │ │ │ │ + this.textColorValue = Style$Builder.access$500(style$Builder); │ │ │ │ + this.heightInPixels = Style$Builder.access$600(style$Builder); │ │ │ │ + this.heightDimensionResId = Style$Builder.access$700(style$Builder); │ │ │ │ + this.widthInPixels = Style$Builder.access$800(style$Builder); │ │ │ │ + this.widthDimensionResId = Style$Builder.access$900(style$Builder); │ │ │ │ + this.gravity = Style$Builder.access$1000(style$Builder); │ │ │ │ + this.imageDrawable = Style$Builder.access$1100(style$Builder); │ │ │ │ + this.textSize = Style$Builder.access$1200(style$Builder); │ │ │ │ + this.textShadowColorResId = Style$Builder.access$1300(style$Builder); │ │ │ │ + this.textShadowRadius = Style$Builder.access$1400(style$Builder); │ │ │ │ + this.textShadowDx = Style$Builder.access$1500(style$Builder); │ │ │ │ + this.textShadowDy = Style$Builder.access$1600(style$Builder); │ │ │ │ + this.textAppearanceResId = Style$Builder.access$1700(style$Builder); │ │ │ │ + this.imageResId = Style$Builder.access$1800(style$Builder); │ │ │ │ + this.imageScaleType = Style$Builder.access$1900(style$Builder); │ │ │ │ + this.paddingInPixels = Style$Builder.access$2000(style$Builder); │ │ │ │ + this.paddingDimensionResId = Style$Builder.access$2100(style$Builder); │ │ │ │ + this.backgroundColorValue = Style$Builder.access$2200(style$Builder); │ │ │ │ + this.fontName = Style$Builder.access$2300(style$Builder); │ │ │ │ + this.fontNameResId = Style$Builder.access$2400(style$Builder); │ │ │ │ } │ │ │ │ │ │ │ │ public String toString() { │ │ │ │ - return "Style{configuration=" + this.configuration + ", backgroundColorResourceId=" + this.backgroundColorResourceId + ", backgroundDrawableResourceId=" + this.backgroundDrawableResourceId + ", backgroundColorValue=" + this.backgroundColorValue + ", isTileEnabled=" + this.isTileEnabled + ", textColorResourceId=" + this.textColorResourceId + ", heightInPixels=" + this.heightInPixels + ", heightDimensionResId=" + this.heightDimensionResId + ", widthInPixels=" + this.widthInPixels + ", widthDimensionResId=" + this.widthDimensionResId + ", gravity=" + this.gravity + ", imageDrawable=" + this.imageDrawable + ", imageResId=" + this.imageResId + ", imageScaleType=" + this.imageScaleType + ", textSize=" + this.textSize + ", textShadowColorResId=" + this.textShadowColorResId + ", textShadowRadius=" + this.textShadowRadius + ", textShadowDy=" + this.textShadowDy + ", textShadowDx=" + this.textShadowDx + ", textAppearanceResId=" + this.textAppearanceResId + ", paddingInPixels=" + this.paddingInPixels + ", paddingDimensionResId=" + this.paddingDimensionResId + '}'; │ │ │ │ + return "Style{configuration=" + this.configuration + ", backgroundColorResourceId=" + this.backgroundColorResourceId + ", backgroundDrawableResourceId=" + this.backgroundDrawableResourceId + ", backgroundColorValue=" + this.backgroundColorValue + ", isTileEnabled=" + this.isTileEnabled + ", textColorResourceId=" + this.textColorResourceId + ", textColorValue=" + this.textColorValue + ", heightInPixels=" + this.heightInPixels + ", heightDimensionResId=" + this.heightDimensionResId + ", widthInPixels=" + this.widthInPixels + ", widthDimensionResId=" + this.widthDimensionResId + ", gravity=" + this.gravity + ", imageDrawable=" + this.imageDrawable + ", imageResId=" + this.imageResId + ", imageScaleType=" + this.imageScaleType + ", textSize=" + this.textSize + ", textShadowColorResId=" + this.textShadowColorResId + ", textShadowRadius=" + this.textShadowRadius + ", textShadowDy=" + this.textShadowDy + ", textShadowDx=" + this.textShadowDx + ", textAppearanceResId=" + this.textAppearanceResId + ", paddingInPixels=" + this.paddingInPixels + ", paddingDimensionResId=" + this.paddingDimensionResId + ", fontName=" + this.fontName + ", fontNameResId=" + this.fontNameResId + '}'; │ │ │ │ } │ │ │ │ } │ │ │ --- com/crashlytics/android/QueueFile.class │ │ ├── +++ com/crashlytics/android/internal/aq.class │ │ │┄ Files similar despite different names (score: 31, lower is more similar) │ │ │ ├── procyon -ec {} │ │ │ │ @@ -1,36 +1,36 @@ │ │ │ │ │ │ │ │ -package com.crashlytics.android; │ │ │ │ +package com.crashlytics.android.internal; │ │ │ │ │ │ │ │ import java.util.logging.Level; │ │ │ │ import java.util.NoSuchElementException; │ │ │ │ import java.io.InputStream; │ │ │ │ import java.nio.channels.FileChannel; │ │ │ │ import java.nio.channels.WritableByteChannel; │ │ │ │ import java.io.IOException; │ │ │ │ import java.io.File; │ │ │ │ import java.io.RandomAccessFile; │ │ │ │ import java.util.logging.Logger; │ │ │ │ import java.io.Closeable; │ │ │ │ │ │ │ │ -class QueueFile implements Closeable │ │ │ │ +public class aq implements Closeable │ │ │ │ { │ │ │ │ private static final Logger a; │ │ │ │ private final RandomAccessFile b; │ │ │ │ private int c; │ │ │ │ private int d; │ │ │ │ - private ao e; │ │ │ │ - private ao f; │ │ │ │ + private as e; │ │ │ │ + private as f; │ │ │ │ private final byte[] g; │ │ │ │ │ │ │ │ static { │ │ │ │ - a = Logger.getLogger(QueueFile.class.getName()); │ │ │ │ + a = Logger.getLogger(aq.class.getName()); │ │ │ │ } │ │ │ │ │ │ │ │ - public QueueFile(final File file) { │ │ │ │ + public aq(final File file) { │ │ │ │ final long n = 0L; │ │ │ │ final int n2 = 4; │ │ │ │ this.g = new byte[16]; │ │ │ │ if (!file.exists()) { │ │ │ │ final File file2 = new File(file.getPath() + ".tmp"); │ │ │ │ final RandomAccessFile a = a(file2); │ │ │ │ final long length = 4096L; │ │ │ │ @@ -68,22 +68,22 @@ │ │ │ │ this.f = this.a(a3); │ │ │ │ } │ │ │ │ │ │ │ │ private static int a(final byte[] array, final int n) { │ │ │ │ return ((array[n] & 0xFF) << 24) + ((array[n + 1] & 0xFF) << 16) + ((array[n + 2] & 0xFF) << 8) + (array[n + 3] & 0xFF); │ │ │ │ } │ │ │ │ │ │ │ │ - private ao a(final int n) { │ │ │ │ - ao a; │ │ │ │ + private as a(final int n) { │ │ │ │ + as a; │ │ │ │ if (n == 0) { │ │ │ │ - a = ao.a; │ │ │ │ + a = as.a; │ │ │ │ } │ │ │ │ else { │ │ │ │ this.b.seek(n); │ │ │ │ - a = new ao(n, this.b.readInt()); │ │ │ │ + a = new as(n, this.b.readInt()); │ │ │ │ } │ │ │ │ return a; │ │ │ │ } │ │ │ │ │ │ │ │ private static RandomAccessFile a(final File file) { │ │ │ │ return new RandomAccessFile(file, "rwd"); │ │ │ │ } │ │ │ │ @@ -173,15 +173,15 @@ │ │ │ │ int b2; │ │ │ │ if (b) { │ │ │ │ b2 = 16; │ │ │ │ } │ │ │ │ else { │ │ │ │ b2 = this.b(this.f.b + 4 + this.f.c); │ │ │ │ } │ │ │ │ - final ao f = new ao(b2, n2); │ │ │ │ + final as f = new as(b2, n2); │ │ │ │ a(this.g, 0, n2); │ │ │ │ this.a(f.b, this.g, 0, 4); │ │ │ │ this.a(f.b + 4, array, 0, n2); │ │ │ │ int n3; │ │ │ │ if (b) { │ │ │ │ n3 = f.b; │ │ │ │ } │ │ │ │ @@ -220,15 +220,15 @@ │ │ │ │ if (channel.transferTo(16, n4, channel) != n4) { │ │ │ │ throw new AssertionError((Object)"Copied insufficient number of bytes!"); │ │ │ │ } │ │ │ │ } │ │ │ │ if (this.f.b < this.e.b) { │ │ │ │ final int n5 = this.c + this.f.b - 16; │ │ │ │ this.a(c2, this.d, this.e.b, n5); │ │ │ │ - this.f = new ao(n5, this.f.c); │ │ │ │ + this.f = new as(n5, this.f.c); │ │ │ │ } │ │ │ │ else { │ │ │ │ this.a(c2, this.d, this.e.b, this.f.b); │ │ │ │ } │ │ │ │ this.c = c2; │ │ │ │ } │ │ │ │ } │ │ │ │ @@ -238,16 +238,16 @@ │ │ │ │ // monitorenter(this) │ │ │ │ final int n2 = 4096; │ │ │ │ final int n3 = 0; │ │ │ │ final int n4 = 0; │ │ │ │ try { │ │ │ │ this.a(n2, n3, n4, 0); │ │ │ │ this.d = 0; │ │ │ │ - this.e = ao.a; │ │ │ │ - this.f = ao.a; │ │ │ │ + this.e = as.a; │ │ │ │ + this.f = as.a; │ │ │ │ if (this.c > n) { │ │ │ │ this.d(4096); │ │ │ │ } │ │ │ │ this.c = 4096; │ │ │ │ } │ │ │ │ finally { │ │ │ │ } │ │ │ │ @@ -269,31 +269,35 @@ │ │ │ │ } │ │ │ │ else { │ │ │ │ n = this.f.b + 4 + this.f.c + this.c - this.e.b; │ │ │ │ } │ │ │ │ return n; │ │ │ │ } │ │ │ │ │ │ │ │ - public final void a(final QueueFile$ElementReader queueFile$ElementReader) { │ │ │ │ + public final void a(final au au) { │ │ │ │ int i = 0; │ │ │ │ synchronized (this) { │ │ │ │ int n = this.e.b; │ │ │ │ while (i < this.d) { │ │ │ │ - final ao a = this.a(n); │ │ │ │ - queueFile$ElementReader.read((InputStream)new ap(this, a, (byte)0), a.c); │ │ │ │ + final as a = this.a(n); │ │ │ │ + au.a((InputStream)new at(this, a, (byte)0), a.c); │ │ │ │ n = this.b(a.c + (a.b + 4)); │ │ │ │ ++i; │ │ │ │ } │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public final void a(final byte[] array) { │ │ │ │ this.b(array, 0, array.length); │ │ │ │ } │ │ │ │ │ │ │ │ + public final boolean a(final int n, final int n2) { │ │ │ │ + return this.a() + 4 + n <= n2; │ │ │ │ + } │ │ │ │ + │ │ │ │ public final boolean b() { │ │ │ │ synchronized (this) { │ │ │ │ return this.d == 0; │ │ │ │ } │ │ │ │ } │ │ │ │ │ │ │ │ public final void c() { │ │ │ │ @@ -307,15 +311,15 @@ │ │ │ │ } │ │ │ │ else { │ │ │ │ final int b = this.b(this.e.b + 4 + this.e.c); │ │ │ │ this.b(b, this.g, 0, 4); │ │ │ │ final int a = a(this.g, 0); │ │ │ │ this.a(this.c, this.d - 1, b, this.f.b); │ │ │ │ --this.d; │ │ │ │ - this.e = new ao(b, a); │ │ │ │ + this.e = new as(b, a); │ │ │ │ } │ │ │ │ } │ │ │ │ // monitorexit(this) │ │ │ │ │ │ │ │ public void close() { │ │ │ │ synchronized (this) { │ │ │ │ this.b.close(); │ │ │ │ @@ -327,20 +331,20 @@ │ │ │ │ sb.append(this.getClass().getSimpleName()).append('['); │ │ │ │ sb.append("fileLength=").append(this.c); │ │ │ │ sb.append(", size=").append(this.d); │ │ │ │ sb.append(", first=").append(this.e); │ │ │ │ sb.append(", last=").append(this.f); │ │ │ │ sb.append(", element lengths=["); │ │ │ │ try { │ │ │ │ - final an an = new an(this, sb); │ │ │ │ + final ar ar = new ar(this, sb); │ │ │ │ try { │ │ │ │ - this.a((QueueFile$ElementReader)an); │ │ │ │ + this.a((au)ar); │ │ │ │ sb.append("]]"); │ │ │ │ return sb.toString(); │ │ │ │ } │ │ │ │ catch (IOException ex) { │ │ │ │ - QueueFile.a.log(Level.WARNING, "read error", ex); │ │ │ │ + aq.a.log(Level.WARNING, "read error", ex); │ │ │ │ } │ │ │ │ } │ │ │ │ catch (IOException ex2) {} │ │ │ │ } │ │ │ │ } ├── smali/com/f2prateek/dfg/DFGApplication.smali │ @@ -116,15 +116,15 @@ │ invoke-static {}, Lcom/f2prateek/dfg/util/StorageUtils;->isStorageAvailable()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ .line 48 │ - const v0, 0x7f05001c │ + const v0, 0x7f04001c │ │ invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V ├── smali/com/f2prateek/dfg/R$styleable.smali │ @@ -21,15 +21,15 @@ │ │ │ # direct methods │ .method static constructor ()V │ .locals 3 │ │ .prologue │ - .line 211 │ + .line 214 │ const/4 v0, 0x1 │ │ new-array v0, v0, [I │ │ const/4 v1, 0x0 │ │ const v2, 0x1010109 │ @@ -41,12 +41,12 @@ │ return-void │ .end method │ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ - .line 200 │ + .line 203 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/R.smali │ @@ -23,10 +23,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 10 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 200 │ return-void │ .end method ├── smali/com/f2prateek/dfg/R$string.smali │ @@ -11,79 +11,79 @@ │ .annotation system Ldalvik/annotation/InnerClass; │ accessFlags = 0x19 │ name = "string" │ .end annotation │ │ │ # static fields │ -.field public static final about:I = 0x7f050000 │ +.field public static final about:I = 0x7f040001 │ │ -.field public static final app_name:I = 0x7f050001 │ +.field public static final app_name:I = 0x7f040002 │ │ -.field public static final com_crashlytics_android_build_id:I = 0x7f050002 │ +.field public static final com_crashlytics_android_build_id:I = 0x7f040000 │ │ -.field public static final current_version_number:I = 0x7f050003 │ +.field public static final current_version_number:I = 0x7f040003 │ │ -.field public static final description_device_thumbnail:I = 0x7f050004 │ +.field public static final description_device_thumbnail:I = 0x7f040004 │ │ -.field public static final designer:I = 0x7f050005 │ +.field public static final designer:I = 0x7f040005 │ │ -.field public static final developer:I = 0x7f050006 │ +.field public static final developer:I = 0x7f040006 │ │ -.field public static final device_chosen:I = 0x7f050007 │ +.field public static final device_chosen:I = 0x7f040007 │ │ -.field public static final failed_match_dimensions_text:I = 0x7f050008 │ +.field public static final failed_match_dimensions_text:I = 0x7f040008 │ │ -.field public static final failed_match_dimensions_title:I = 0x7f050009 │ +.field public static final failed_match_dimensions_title:I = 0x7f040009 │ │ -.field public static final failed_open_screenshot_text:I = 0x7f05000a │ +.field public static final failed_open_screenshot_text:I = 0x7f04000a │ │ -.field public static final failed_open_screenshot_title:I = 0x7f05000b │ +.field public static final failed_open_screenshot_title:I = 0x7f04000b │ │ -.field public static final glare_disabled:I = 0x7f05000c │ +.field public static final glare_disabled:I = 0x7f04000c │ │ -.field public static final glare_enabled:I = 0x7f05000d │ +.field public static final glare_enabled:I = 0x7f04000d │ │ -.field public static final glare_preference:I = 0x7f05000e │ +.field public static final glare_preference:I = 0x7f04000e │ │ -.field public static final gplus_profile:I = 0x7f05000f │ +.field public static final gplus_profile:I = 0x7f04000f │ │ -.field public static final multiple_screenshots_saved:I = 0x7f050010 │ +.field public static final multiple_screenshots_saved:I = 0x7f040010 │ │ -.field public static final processing_image:I = 0x7f050011 │ +.field public static final processing_image:I = 0x7f040011 │ │ -.field public static final saved_as_default_message:I = 0x7f050012 │ +.field public static final saved_as_default_message:I = 0x7f040012 │ │ -.field public static final screenshot_saved_title:I = 0x7f050013 │ +.field public static final screenshot_saved_title:I = 0x7f040013 │ │ -.field public static final screenshot_saving_ticker:I = 0x7f050014 │ +.field public static final screenshot_saving_ticker:I = 0x7f040014 │ │ -.field public static final screenshot_saving_title:I = 0x7f050015 │ +.field public static final screenshot_saving_title:I = 0x7f040015 │ │ -.field public static final select_picture:I = 0x7f050016 │ +.field public static final select_picture:I = 0x7f040016 │ │ -.field public static final shadow_disabled:I = 0x7f050017 │ +.field public static final shadow_disabled:I = 0x7f040017 │ │ -.field public static final shadow_enabled:I = 0x7f050018 │ +.field public static final shadow_enabled:I = 0x7f040018 │ │ -.field public static final shadow_preference:I = 0x7f050019 │ +.field public static final shadow_preference:I = 0x7f040019 │ │ -.field public static final share:I = 0x7f05001a │ +.field public static final share:I = 0x7f04001a │ │ -.field public static final single_screenshot_saved:I = 0x7f05001b │ +.field public static final single_screenshot_saved:I = 0x7f04001b │ │ -.field public static final storage_unavailable:I = 0x7f05001c │ +.field public static final storage_unavailable:I = 0x7f04001c │ │ -.field public static final taylor_ling:I = 0x7f05001d │ +.field public static final taylor_ling:I = 0x7f04001d │ │ -.field public static final twitter:I = 0x7f05001e │ +.field public static final twitter:I = 0x7f04001e │ │ -.field public static final unknown_error_text:I = 0x7f05001f │ +.field public static final unknown_error_text:I = 0x7f04001f │ │ -.field public static final unknown_error_title:I = 0x7f050020 │ +.field public static final unknown_error_title:I = 0x7f040020 │ │ │ # direct methods │ .method public constructor ()V │ .locals 0 │ │ .prologue ├── smali/com/f2prateek/dfg/R$dimen.smali │ @@ -11,15 +11,15 @@ │ .annotation system Ldalvik/annotation/InnerClass; │ accessFlags = 0x19 │ name = "dimen" │ .end annotation │ │ │ # static fields │ -.field public static final small_padding:I = 0x7f040000 │ +.field public static final small_padding:I = 0x7f050000 │ │ │ # direct methods │ .method public constructor ()V │ .locals 0 │ │ .prologue ├── smali/com/f2prateek/dfg/R$style.smali │ @@ -37,12 +37,12 @@ │ │ │ # direct methods │ .method public constructor ()V │ .locals 0 │ │ .prologue │ - .line 176 │ + .line 179 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/model/Device$1.smali │ @@ -51,15 +51,14 @@ │ invoke-direct {v0, p1}, Lcom/f2prateek/dfg/model/Device;->(Landroid/os/Parcel;)V │ │ return-object v0 │ .end method │ │ .method public bridge synthetic createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; │ .locals 1 │ - .param p1, "x0" # Landroid/os/Parcel; │ │ .prologue │ .line 161 │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/model/Device$1;->createFromParcel(Landroid/os/Parcel;)Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v0 │ │ @@ -75,15 +74,14 @@ │ new-array v0, p1, [Lcom/f2prateek/dfg/model/Device; │ │ return-object v0 │ .end method │ │ .method public bridge synthetic newArray(I)[Ljava/lang/Object; │ .locals 1 │ - .param p1, "x0" # I │ │ .prologue │ .line 161 │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/model/Device$1;->newArray(I)[Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v0 ├── smali/com/f2prateek/dfg/model/DeviceProvider.smali │ @@ -63,78 +63,89 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Nexus S" │ │ + .line 29 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.google.com/phone/detail/nexus-s" │ │ + .line 30 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const/high16 v2, 0x40800000 # 4.0f │ │ + .line 31 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "HDPI" │ │ + .line 32 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_0 │ │ + .line 33 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_1 │ │ + .line 34 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_2 │ │ + .line 35 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_3 │ │ + .line 36 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f02003e │ │ + .line 37 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 38 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 28 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 39 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -142,78 +153,89 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Galaxy Nexus" │ │ + .line 40 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.android.com/devices/detail/galaxy-nexus" │ │ + .line 41 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x4094cccd # 4.65f │ │ + .line 42 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "XHDPI" │ │ + .line 43 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_4 │ │ + .line 44 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_5 │ │ + .line 45 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_6 │ │ + .line 46 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_7 │ │ + .line 47 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020008 │ │ + .line 48 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 49 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 39 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 50 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -221,76 +243,87 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Nexus 4" │ │ + .line 51 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.google.com/nexus/4/" │ │ + .line 52 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 53 │ invoke-virtual {v1, v4}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "XHDPI" │ │ + .line 54 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_8 │ │ + .line 55 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_9 │ │ + .line 56 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_a │ │ + .line 57 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_b │ │ + .line 58 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020029 │ │ + .line 59 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 60 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 50 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 61 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -298,78 +331,89 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Nexus 7 (2013)" │ │ + .line 62 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.google.com/nexus/7/" │ │ + .line 63 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const/high16 v2, 0x41000000 # 8.0f │ │ + .line 64 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "XHDPI" │ │ + .line 65 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_c │ │ + .line 66 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_d │ │ + .line 67 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_e │ │ + .line 68 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_f │ │ + .line 69 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020030 │ │ + .line 70 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 71 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 61 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 72 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -377,76 +421,87 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Nexus 7" │ │ + .line 73 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.android.com/devices/detail/nexus-7" │ │ + .line 74 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 75 │ invoke-virtual {v1, v5}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "213 dpi" │ │ + .line 76 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_10 │ │ + .line 77 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_11 │ │ + .line 78 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_12 │ │ + .line 79 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_13 │ │ + .line 80 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020037 │ │ + .line 81 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 82 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 72 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 83 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -454,76 +509,87 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Nexus 10" │ │ + .line 84 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.google.com/nexus/10/" │ │ + .line 85 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 86 │ invoke-virtual {v1, v6}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "XHDPI" │ │ + .line 87 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_14 │ │ + .line 88 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_15 │ │ + .line 89 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_16 │ │ + .line 90 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_17 │ │ + .line 91 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020022 │ │ + .line 92 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 93 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 83 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 94 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -531,76 +597,87 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "HTC One" │ │ + .line 95 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.htc.com/www/smartphones/htc-one/" │ │ + .line 96 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 97 │ invoke-virtual {v1, v4}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "468 dpi" │ │ + .line 98 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_18 │ │ + .line 99 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_19 │ │ + .line 100 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_1a │ │ + .line 101 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_1b │ │ + .line 102 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f02000f │ │ + .line 103 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 104 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 94 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 105 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -608,76 +685,87 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "HTC One X" │ │ + .line 106 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.htc.com/www/smartphones/htc-one-x/" │ │ + .line 107 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 108 │ invoke-virtual {v1, v4}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "320 dpi" │ │ + .line 109 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_1c │ │ + .line 110 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_1d │ │ + .line 111 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_1e │ │ + .line 112 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_1f │ │ + .line 113 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020016 │ │ + .line 114 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 115 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 105 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 116 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -685,78 +773,89 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Samsung Galaxy Note" │ │ + .line 117 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.samsung.com/global/microsite/galaxynote/note/index.html" │ │ + .line 118 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x40a9999a # 5.3f │ │ + .line 119 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "320 dpi" │ │ + .line 120 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_20 │ │ + .line 121 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_21 │ │ + .line 122 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_22 │ │ + .line 123 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_23 │ │ + .line 124 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020045 │ │ + .line 125 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 126 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 116 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 127 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -764,78 +863,89 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Samsung Galaxy S III" │ │ + .line 128 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.samsung.com/global/galaxys3/" │ │ + .line 129 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x4099999a # 4.8f │ │ + .line 130 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "320 dpi" │ │ + .line 131 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_24 │ │ + .line 132 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_25 │ │ + .line 133 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_26 │ │ + .line 134 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_27 │ │ + .line 135 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f02004c │ │ + .line 136 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 137 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 127 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 138 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -843,76 +953,87 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Samsung Galaxy Tab 2" │ │ + .line 139 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.samsung.com/global/microsite/galaxytab2/7.0/index.html" │ │ + .line 140 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 141 │ invoke-virtual {v1, v5}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "160 dpi" │ │ + .line 142 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_28 │ │ + .line 143 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_29 │ │ + .line 144 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_2a │ │ + .line 145 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_2b │ │ + .line 146 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020053 │ │ + .line 147 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 148 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 138 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 149 │ new-instance v1, Lcom/f2prateek/dfg/model/Device$Builder; │ │ invoke-direct {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->()V │ │ @@ -920,377 +1041,424 @@ │ │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setId(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "Motorola XOOM" │ │ + .line 150 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setName(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "http://www.google.com/phone/detail/motorola-xoom" │ │ + .line 151 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setUrl(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 152 │ invoke-virtual {v1, v6}, Lcom/f2prateek/dfg/model/Device$Builder;->setPhysicalSize(F)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const-string v2, "MDPI" │ │ + .line 153 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setDensity(Ljava/lang/String;)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_2c │ │ + .line 154 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setLandOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_2d │ │ + .line 155 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortOffset([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_2e │ │ + .line 156 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setPortSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ new-array v2, v3, [I │ │ fill-array-data v2, :array_2f │ │ + .line 157 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setRealSize([I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f02005a │ │ + .line 158 │ invoke-virtual {v1, v2}, Lcom/f2prateek/dfg/model/Device$Builder;->setThumbnail(I)Lcom/f2prateek/dfg/model/Device$Builder; │ │ move-result-object v1 │ │ + .line 159 │ invoke-virtual {v1}, Lcom/f2prateek/dfg/model/Device$Builder;->build()Lcom/f2prateek/dfg/model/Device; │ │ move-result-object v1 │ │ + .line 149 │ invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 160 │ return-object v0 │ │ - .line 28 │ + .line 32 │ nop │ │ :array_0 │ .array-data 4 │ 0xf7 │ 0x87 │ .end array-data │ │ + .line 33 │ :array_1 │ .array-data 4 │ 0x86 │ 0xf7 │ .end array-data │ │ + .line 34 │ :array_2 │ .array-data 4 │ 0x1e0 │ 0x320 │ .end array-data │ │ + .line 35 │ :array_3 │ .array-data 4 │ 0x1e0 │ 0x320 │ .end array-data │ │ - .line 39 │ + .line 43 │ :array_4 │ .array-data 4 │ 0x173 │ 0xc7 │ .end array-data │ │ + .line 44 │ :array_5 │ .array-data 4 │ 0xd8 │ 0x161 │ .end array-data │ │ + .line 45 │ :array_6 │ .array-data 4 │ 0x2d0 │ 0x500 │ .end array-data │ │ + .line 46 │ :array_7 │ .array-data 4 │ 0x2d0 │ 0x500 │ .end array-data │ │ - .line 50 │ + .line 54 │ :array_8 │ .array-data 4 │ 0x15d │ 0xd6 │ .end array-data │ │ + .line 55 │ :array_9 │ .array-data 4 │ 0xd5 │ 0x15e │ .end array-data │ │ + .line 56 │ :array_a │ .array-data 4 │ 0x300 │ 0x500 │ .end array-data │ │ + .line 57 │ :array_b │ .array-data 4 │ 0x300 │ 0x500 │ .end array-data │ │ - .line 61 │ + .line 65 │ :array_c │ .array-data 4 │ 0x146 │ 0xf5 │ .end array-data │ │ + .line 66 │ :array_d │ .array-data 4 │ 0xf4 │ 0x146 │ .end array-data │ │ + .line 67 │ :array_e │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ │ + .line 68 │ :array_f │ .array-data 4 │ 0x4b0 │ 0x780 │ .end array-data │ │ - .line 72 │ + .line 76 │ :array_10 │ .array-data 4 │ 0x13b │ 0x10e │ .end array-data │ │ + .line 77 │ :array_11 │ .array-data 4 │ 0x108 │ 0x137 │ .end array-data │ │ + .line 78 │ :array_12 │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ │ + .line 79 │ :array_13 │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ │ - .line 83 │ + .line 87 │ :array_14 │ .array-data 4 │ 0xe3 │ 0xd9 │ .end array-data │ │ + .line 88 │ :array_15 │ .array-data 4 │ 0xd9 │ 0xdf │ .end array-data │ │ + .line 89 │ :array_16 │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ │ + .line 90 │ :array_17 │ .array-data 4 │ 0x640 │ 0xa00 │ .end array-data │ │ - .line 94 │ + .line 98 │ :array_18 │ .array-data 4 │ 0x270 │ 0x144 │ .end array-data │ │ + .line 99 │ :array_19 │ .array-data 4 │ 0x144 │ 0x270 │ .end array-data │ │ + .line 100 │ :array_1a │ .array-data 4 │ 0x438 │ 0x780 │ .end array-data │ │ + .line 101 │ :array_1b │ .array-data 4 │ 0x438 │ 0x780 │ .end array-data │ │ - .line 105 │ + .line 109 │ :array_1c │ .array-data 4 │ 0x15a │ 0xd3 │ .end array-data │ │ + .line 110 │ :array_1d │ .array-data 4 │ 0x12e │ 0x132 │ .end array-data │ │ + .line 111 │ :array_1e │ .array-data 4 │ 0x2d0 │ 0x500 │ .end array-data │ │ + .line 112 │ :array_1f │ .array-data 4 │ 0x2d0 │ 0x500 │ .end array-data │ │ - .line 116 │ + .line 120 │ :array_20 │ .array-data 4 │ 0x161 │ 0xd1 │ .end array-data │ │ + .line 121 │ :array_21 │ .array-data 4 │ 0x121 │ 0x138 │ .end array-data │ │ + .line 122 │ :array_22 │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ │ + .line 123 │ :array_23 │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ │ - .line 127 │ + .line 131 │ :array_24 │ .array-data 4 │ 0x15a │ 0xd3 │ .end array-data │ │ + .line 132 │ :array_25 │ .array-data 4 │ 0x12e │ 0x133 │ .end array-data │ │ + .line 133 │ :array_26 │ .array-data 4 │ 0x2d0 │ 0x500 │ .end array-data │ │ + .line 134 │ :array_27 │ .array-data 4 │ 0x2d0 │ 0x500 │ .end array-data │ │ - .line 138 │ + .line 142 │ :array_28 │ .array-data 4 │ 0xe6 │ 0xcb │ .end array-data │ │ + .line 143 │ :array_29 │ .array-data 4 │ 0x112 │ 0xde │ .end array-data │ │ + .line 144 │ :array_2a │ .array-data 4 │ 0x258 │ 0x400 │ .end array-data │ │ + .line 145 │ :array_2b │ .array-data 4 │ 0x258 │ 0x400 │ .end array-data │ │ - .line 149 │ + .line 153 │ :array_2c │ .array-data 4 │ 0xda │ 0xbf │ .end array-data │ │ + .line 154 │ :array_2d │ .array-data 4 │ 0xc7 │ 0xc8 │ .end array-data │ │ + .line 155 │ :array_2e │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ │ + .line 156 │ :array_2f │ .array-data 4 │ 0x320 │ 0x500 │ .end array-data │ .end method ├── smali/com/f2prateek/dfg/ui/ForegroundImageView.smali │ @@ -57,14 +57,15 @@ │ invoke-direct {v1}, Landroid/graphics/Rect;->()V │ │ iput-object v1, p0, Lcom/f2prateek/dfg/ui/ForegroundImageView;->foregroundBounds:Landroid/graphics/Rect; │ │ .line 44 │ sget-object v1, Lcom/f2prateek/dfg/R$styleable;->ForegroundImageView:[I │ │ + .line 45 │ invoke-virtual {p1, p2, v1, p3, v2}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; │ │ move-result-object v0 │ │ .line 46 │ .local v0, "a":Landroid/content/res/TypedArray; │ invoke-virtual {v0, v2}, Landroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable; ├── smali/com/f2prateek/dfg/ui/AboutFragment.smali │ @@ -97,15 +97,15 @@ │ invoke-virtual {v1, v2}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ │ .line 53 │ invoke-virtual {p0}, Lcom/f2prateek/dfg/ui/AboutFragment;->getDialog()Landroid/app/Dialog; │ │ move-result-object v1 │ │ - const/high16 v2, 0x7f050000 │ + const v2, 0x7f040001 │ │ invoke-virtual {v1, v2}, Landroid/app/Dialog;->setTitle(I)V │ │ .line 54 │ return-object v0 │ .end method ├── smali/com/f2prateek/dfg/ui/MainActivity.smali │ @@ -154,15 +154,15 @@ │ │ move-result-object v0 │ │ check-cast v0, Lcom/f2prateek/dfg/model/Device; │ │ .line 80 │ .local v0, "device":Lcom/f2prateek/dfg/model/Device; │ - const v1, 0x7f050012 │ + const v1, 0x7f040012 │ │ const/4 v2, 0x1 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v3, 0x0 │ │ @@ -178,14 +178,15 @@ │ │ sget-object v2, Lde/keyboardsurfer/android/widget/crouton/Style;->CONFIRM:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ invoke-static {p0, v1, v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v1 │ │ + .line 81 │ invoke-virtual {v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ .line 82 │ invoke-virtual {p0}, Lcom/f2prateek/dfg/ui/MainActivity;->invalidateOptionsMenu()V │ │ .line 83 │ return-void │ @@ -209,15 +210,15 @@ │ │ .line 112 │ :goto_0 │ return-void │ │ .line 103 │ :cond_0 │ - const v0, 0x7f050010 │ + const v0, 0x7f040010 │ │ const/4 v1, 0x2 │ │ new-array v1, v1, [Ljava/lang/Object; │ │ const/4 v2, 0x0 │ │ @@ -233,38 +234,42 @@ │ │ aput-object v3, v1, v2 │ │ const/4 v2, 0x1 │ │ iget-object v3, p1, Lcom/f2prateek/dfg/Events$MultipleImagesProcessed;->device:Lcom/f2prateek/dfg/model/Device; │ │ + .line 104 │ invoke-virtual {v3}, Lcom/f2prateek/dfg/model/Device;->getName()Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ + .line 103 │ invoke-virtual {p0, v0, v1}, Lcom/f2prateek/dfg/ui/MainActivity;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ sget-object v1, Lde/keyboardsurfer/android/widget/crouton/Style;->INFO:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ invoke-static {p0, v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ new-instance v1, Lcom/f2prateek/dfg/ui/MainActivity$2; │ │ invoke-direct {v1, p0, p1}, Lcom/f2prateek/dfg/ui/MainActivity$2;->(Lcom/f2prateek/dfg/ui/MainActivity;Lcom/f2prateek/dfg/Events$MultipleImagesProcessed;)V │ │ + .line 104 │ invoke-virtual {v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->setOnClickListener(Landroid/view/View$OnClickListener;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ + .line 111 │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ goto :goto_0 │ .end method │ │ .method public onOptionsItemSelected(Landroid/view/MenuItem;)Z │ .locals 4 │ @@ -353,15 +358,15 @@ │ .locals 4 │ .param p1, "event" # Lcom/f2prateek/dfg/Events$SingleImageProcessed; │ .annotation runtime Lcom/squareup/otto/Subscribe; │ .end annotation │ │ .prologue │ .line 87 │ - const v0, 0x7f05001b │ + const v0, 0x7f04001b │ │ const/4 v1, 0x1 │ │ new-array v1, v1, [Ljava/lang/Object; │ │ const/4 v2, 0x0 │ │ @@ -383,18 +388,20 @@ │ │ move-result-object v0 │ │ new-instance v1, Lcom/f2prateek/dfg/ui/MainActivity$1; │ │ invoke-direct {v1, p0, p1}, Lcom/f2prateek/dfg/ui/MainActivity$1;->(Lcom/f2prateek/dfg/ui/MainActivity;Lcom/f2prateek/dfg/Events$SingleImageProcessed;)V │ │ + .line 88 │ invoke-virtual {v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->setOnClickListener(Landroid/view/View$OnClickListener;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ + .line 95 │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ .line 96 │ return-void │ .end method │ │ .method public updateGlareSetting(Z)V │ @@ -418,15 +425,15 @@ │ .line 117 │ invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z │ │ .line 118 │ if-eqz p1, :cond_0 │ │ .line 119 │ - const v1, 0x7f05000d │ + const v1, 0x7f04000d │ │ sget-object v2, Lde/keyboardsurfer/android/widget/crouton/Style;->CONFIRM:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ invoke-static {p0, v1, v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;ILde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v1 │ │ @@ -437,15 +444,15 @@ │ invoke-virtual {p0}, Lcom/f2prateek/dfg/ui/MainActivity;->invalidateOptionsMenu()V │ │ .line 124 │ return-void │ │ .line 121 │ :cond_0 │ - const v1, 0x7f05000c │ + const v1, 0x7f04000c │ │ sget-object v2, Lde/keyboardsurfer/android/widget/crouton/Style;->ALERT:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ invoke-static {p0, v1, v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;ILde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v1 │ │ @@ -475,15 +482,15 @@ │ .line 129 │ invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z │ │ .line 130 │ if-eqz p1, :cond_0 │ │ .line 131 │ - const v1, 0x7f050018 │ + const v1, 0x7f040018 │ │ invoke-virtual {p0, v1}, Lcom/f2prateek/dfg/ui/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ sget-object v2, Lde/keyboardsurfer/android/widget/crouton/Style;->CONFIRM:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ @@ -498,15 +505,15 @@ │ invoke-virtual {p0}, Lcom/f2prateek/dfg/ui/MainActivity;->invalidateOptionsMenu()V │ │ .line 136 │ return-void │ │ .line 133 │ :cond_0 │ - const v1, 0x7f050017 │ + const v1, 0x7f040017 │ │ invoke-virtual {p0, v1}, Lcom/f2prateek/dfg/ui/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ sget-object v2, Lde/keyboardsurfer/android/widget/crouton/Style;->ALERT:Lde/keyboardsurfer/android/widget/crouton/Style; ├── smali/com/f2prateek/dfg/ui/BaseFragment$$InjectAdapter.smali │ @@ -164,18 +164,16 @@ │ │ .line 69 │ return-void │ .end method │ │ .method public bridge synthetic injectMembers(Ljava/lang/Object;)V │ .locals 0 │ - .param p1, "x0" # Ljava/lang/Object; │ │ .prologue │ .line 24 │ check-cast p1, Lcom/f2prateek/dfg/ui/BaseFragment; │ │ - .end local p1 # "x0":Ljava/lang/Object; │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/ui/BaseFragment$$InjectAdapter;->injectMembers(Lcom/f2prateek/dfg/ui/BaseFragment;)V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/ui/MainActivity$1.smali │ @@ -22,14 +22,15 @@ │ │ .field final synthetic val$event:Lcom/f2prateek/dfg/Events$SingleImageProcessed; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/ui/MainActivity;Lcom/f2prateek/dfg/Events$SingleImageProcessed;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/ui/MainActivity; │ │ .prologue │ .line 88 │ iput-object p1, p0, Lcom/f2prateek/dfg/ui/MainActivity$1;->this$0:Lcom/f2prateek/dfg/ui/MainActivity; │ │ iput-object p2, p0, Lcom/f2prateek/dfg/ui/MainActivity$1;->val$event:Lcom/f2prateek/dfg/Events$SingleImageProcessed; ├── smali/com/f2prateek/dfg/ui/MainActivity$2.smali │ @@ -22,14 +22,15 @@ │ │ .field final synthetic val$event:Lcom/f2prateek/dfg/Events$MultipleImagesProcessed; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/ui/MainActivity;Lcom/f2prateek/dfg/Events$MultipleImagesProcessed;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/ui/MainActivity; │ │ .prologue │ .line 104 │ iput-object p1, p0, Lcom/f2prateek/dfg/ui/MainActivity$2;->this$0:Lcom/f2prateek/dfg/ui/MainActivity; │ │ iput-object p2, p0, Lcom/f2prateek/dfg/ui/MainActivity$2;->val$event:Lcom/f2prateek/dfg/Events$MultipleImagesProcessed; ├── smali/com/f2prateek/dfg/ui/DeviceFragment$$InjectAdapter.smali │ @@ -210,18 +210,16 @@ │ │ .line 73 │ return-void │ .end method │ │ .method public bridge synthetic injectMembers(Ljava/lang/Object;)V │ .locals 0 │ - .param p1, "x0" # Ljava/lang/Object; │ │ .prologue │ .line 24 │ check-cast p1, Lcom/f2prateek/dfg/ui/DeviceFragment; │ │ - .end local p1 # "x0":Ljava/lang/Object; │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/ui/DeviceFragment$$InjectAdapter;->injectMembers(Lcom/f2prateek/dfg/ui/DeviceFragment;)V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/ui/AboutFragment$$InjectAdapter.smali │ @@ -164,18 +164,16 @@ │ │ .line 69 │ return-void │ .end method │ │ .method public bridge synthetic injectMembers(Ljava/lang/Object;)V │ .locals 0 │ - .param p1, "x0" # Ljava/lang/Object; │ │ .prologue │ .line 24 │ check-cast p1, Lcom/f2prateek/dfg/ui/AboutFragment; │ │ - .end local p1 # "x0":Ljava/lang/Object; │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/ui/AboutFragment$$InjectAdapter;->injectMembers(Lcom/f2prateek/dfg/ui/AboutFragment;)V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/ui/BaseActivity$$InjectAdapter.smali │ @@ -164,18 +164,16 @@ │ │ .line 69 │ return-void │ .end method │ │ .method public bridge synthetic injectMembers(Ljava/lang/Object;)V │ .locals 0 │ - .param p1, "x0" # Ljava/lang/Object; │ │ .prologue │ .line 24 │ check-cast p1, Lcom/f2prateek/dfg/ui/BaseActivity; │ │ - .end local p1 # "x0":Ljava/lang/Object; │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/ui/BaseActivity$$InjectAdapter;->injectMembers(Lcom/f2prateek/dfg/ui/BaseActivity;)V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/ui/DeviceFragment$1.smali │ @@ -20,14 +20,15 @@ │ # instance fields │ .field final synthetic this$0:Lcom/f2prateek/dfg/ui/DeviceFragment; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/ui/DeviceFragment;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/ui/DeviceFragment; │ │ .prologue │ .line 101 │ iput-object p1, p0, Lcom/f2prateek/dfg/ui/DeviceFragment$1;->this$0:Lcom/f2prateek/dfg/ui/DeviceFragment; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ @@ -43,28 +44,30 @@ │ .line 103 │ iget-object v0, p0, Lcom/f2prateek/dfg/ui/DeviceFragment$1;->this$0:Lcom/f2prateek/dfg/ui/DeviceFragment; │ │ iget-object v1, v0, Lcom/f2prateek/dfg/ui/DeviceFragment;->iv_device_default:Landroid/widget/ImageView; │ │ iget-object v0, p0, Lcom/f2prateek/dfg/ui/DeviceFragment$1;->this$0:Lcom/f2prateek/dfg/ui/DeviceFragment; │ │ + .line 104 │ # invokes: Lcom/f2prateek/dfg/ui/DeviceFragment;->isDefault()Z │ invoke-static {v0}, Lcom/f2prateek/dfg/ui/DeviceFragment;->access$000(Lcom/f2prateek/dfg/ui/DeviceFragment;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const v0, 0x7f02001b │ │ + .line 103 │ :goto_0 │ invoke-virtual {v1, v0}, Landroid/widget/ImageView;->setImageResource(I)V │ │ .line 105 │ return-void │ │ - .line 103 │ + .line 104 │ :cond_0 │ const v0, 0x7f02001a │ │ goto :goto_0 │ .end method ├── smali/com/f2prateek/dfg/ui/DeviceFragment.smali │ @@ -155,15 +155,15 @@ │ │ .line 117 │ const-string v1, "android.intent.action.GET_CONTENT" │ │ invoke-virtual {v0, v1}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; │ │ .line 118 │ - const v1, 0x7f050016 │ + const v1, 0x7f040016 │ │ invoke-virtual {p0, v1}, Lcom/f2prateek/dfg/ui/DeviceFragment;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-static {v0, v1}, Landroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent; │ │ @@ -372,22 +372,24 @@ │ iget-object v0, p0, Lcom/f2prateek/dfg/ui/DeviceFragment;->iv_device_default:Landroid/widget/ImageView; │ │ invoke-virtual {v0}, Landroid/widget/ImageView;->bringToFront()V │ │ .line 81 │ iget-object v1, p0, Lcom/f2prateek/dfg/ui/DeviceFragment;->iv_device_default:Landroid/widget/ImageView; │ │ + .line 82 │ invoke-direct {p0}, Lcom/f2prateek/dfg/ui/DeviceFragment;->isDefault()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const v0, 0x7f02001b │ │ + .line 81 │ :goto_0 │ invoke-virtual {v1, v0}, Landroid/widget/ImageView;->setImageResource(I)V │ │ .line 83 │ iget-object v0, p0, Lcom/f2prateek/dfg/ui/DeviceFragment;->tv_device_size:Landroid/widget/TextView; │ │ new-instance v1, Ljava/lang/StringBuilder; │ @@ -483,15 +485,15 @@ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ │ .line 86 │ return-void │ │ - .line 81 │ + .line 82 │ :cond_0 │ const v0, 0x7f02001a │ │ goto :goto_0 │ .end method │ │ .method public openDevicePage()V ├── smali/com/f2prateek/dfg/ui/MainActivity$$InjectAdapter.smali │ @@ -210,18 +210,16 @@ │ │ .line 73 │ return-void │ .end method │ │ .method public bridge synthetic injectMembers(Ljava/lang/Object;)V │ .locals 0 │ - .param p1, "x0" # Ljava/lang/Object; │ │ .prologue │ .line 24 │ check-cast p1, Lcom/f2prateek/dfg/ui/MainActivity; │ │ - .end local p1 # "x0":Ljava/lang/Object; │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/ui/MainActivity$$InjectAdapter;->injectMembers(Lcom/f2prateek/dfg/ui/MainActivity;)V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/core/GenerateMultipleFramesService.smali │ @@ -72,19 +72,20 @@ │ iget-object v0, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->processedImageUris:Ljava/util/ArrayList; │ │ invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 93 │ iget-object v0, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->notificationBuilder:Landroid/support/v4/app/NotificationCompat$Builder; │ │ + .line 94 │ invoke-virtual {p0}, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ - const v2, 0x7f050011 │ + const v2, 0x7f040011 │ │ const/4 v3, 0x2 │ │ new-array v3, v3, [Ljava/lang/Object; │ │ iget-object v4, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->processedImageUris:Ljava/util/ArrayList; │ │ @@ -98,34 +99,38 @@ │ │ aput-object v4, v3, v6 │ │ const/4 v4, 0x1 │ │ iget-object v5, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->imageUris:Ljava/util/ArrayList; │ │ + .line 95 │ invoke-virtual {v5}, Ljava/util/ArrayList;->size()I │ │ move-result v5 │ │ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ + .line 94 │ invoke-virtual {v1, v2, v3}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 93 │ invoke-virtual {v0, v1}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v0 │ │ iget-object v1, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->imageUris:Ljava/util/ArrayList; │ │ + .line 95 │ invoke-virtual {v1}, Ljava/util/ArrayList;->size()I │ │ move-result v1 │ │ iget-object v2, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->processedImageUris:Ljava/util/ArrayList; │ │ invoke-virtual {v2}, Ljava/util/ArrayList;->size()I │ @@ -191,42 +196,45 @@ │ :cond_0 │ invoke-virtual {p0}, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ .line 113 │ .local v1, "resources":Landroid/content/res/Resources; │ - const v4, 0x7f050010 │ + const v4, 0x7f040010 │ │ const/4 v5, 0x2 │ │ new-array v5, v5, [Ljava/lang/Object; │ │ iget-object v6, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->processedImageUris:Ljava/util/ArrayList; │ │ + .line 114 │ invoke-virtual {v6}, Ljava/util/ArrayList;->size()I │ │ move-result v6 │ │ invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v6 │ │ aput-object v6, v5, v8 │ │ const/4 v6, 0x1 │ │ iget-object v7, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->device:Lcom/f2prateek/dfg/model/Device; │ │ + .line 115 │ invoke-virtual {v7}, Lcom/f2prateek/dfg/model/Device;->getName()Ljava/lang/String; │ │ move-result-object v7 │ │ aput-object v7, v5, v6 │ │ + .line 114 │ invoke-virtual {v1, v4, v5}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ .line 117 │ .local v2, "text":Ljava/lang/String; │ new-instance v3, Landroid/content/Intent; │ @@ -251,36 +259,39 @@ │ const/high16 v4, 0x10000000 │ │ invoke-virtual {v3, v4}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent; │ │ .line 121 │ iget-object v4, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->notificationBuilder:Landroid/support/v4/app/NotificationCompat$Builder; │ │ - const v5, 0x7f050013 │ + const v5, 0x7f040013 │ │ invoke-virtual {v1, v5}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ │ invoke-virtual {v4, v5}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v4 │ │ + .line 122 │ invoke-virtual {v4, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v4 │ │ + .line 123 │ invoke-static {p0, v8, v3, v8}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v5 │ │ invoke-virtual {v4, v5}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v4 │ │ + .line 124 │ invoke-virtual {v4, v8, v8, v8}, Landroid/support/v4/app/NotificationCompat$Builder;->setProgress(IIZ)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 125 │ iget-object v4, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->notificationManager:Landroid/app/NotificationManager; │ │ const/16 v5, 0x315 │ │ @@ -332,54 +343,61 @@ │ iput-object v3, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->notificationManager:Landroid/app/NotificationManager; │ │ .line 72 │ new-instance v3, Landroid/support/v4/app/NotificationCompat$Builder; │ │ invoke-direct {v3, p0}, Landroid/support/v4/app/NotificationCompat$Builder;->(Landroid/content/Context;)V │ │ - const v4, 0x7f050014 │ + const v4, 0x7f040014 │ │ + .line 73 │ invoke-virtual {v2, v4}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ + .line 72 │ invoke-virtual {v3, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setTicker(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v3 │ │ - const v4, 0x7f050015 │ + const v4, 0x7f040015 │ │ + .line 74 │ invoke-virtual {v2, v4}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ invoke-virtual {v3, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v3 │ │ const/high16 v4, 0x7f020000 │ │ + .line 75 │ invoke-virtual {v3, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setSmallIcon(I)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v3 │ │ + .line 76 │ invoke-static {p0, v5, v1, v5}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v4 │ │ invoke-virtual {v3, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v3 │ │ const/4 v4, 0x1 │ │ + .line 77 │ invoke-virtual {v3, v5, v5, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setProgress(IIZ)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v3 │ │ + .line 78 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ invoke-virtual {v3, v4, v5}, Landroid/support/v4/app/NotificationCompat$Builder;->setWhen(J)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v3 │ @@ -409,15 +427,15 @@ │ invoke-virtual {v3, v4, v0}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V │ │ .line 83 │ return-void │ .end method │ │ .method protected onHandleIntent(Landroid/content/Intent;)V │ - .locals 9 │ + .locals 8 │ .param p1, "intent" # Landroid/content/Intent; │ │ .prologue │ const/4 v2, 0x1 │ │ .line 49 │ invoke-super {p0, p1}, Lcom/f2prateek/dfg/core/AbstractGenerateFrameService;->onHandleIntent(Landroid/content/Intent;)V │ @@ -430,29 +448,29 @@ │ move-result-object v1 │ │ iput-object v1, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->imageUris:Ljava/util/ArrayList; │ │ .line 54 │ invoke-static {p0}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences; │ │ - move-result-object v7 │ + move-result-object v6 │ │ .line 55 │ - .local v7, "sPrefs":Landroid/content/SharedPreferences; │ + .local v6, "sPrefs":Landroid/content/SharedPreferences; │ const-string v1, "KEY_PREF_OPTION_GLARE" │ │ - invoke-interface {v7, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z │ + invoke-interface {v6, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z │ │ move-result v4 │ │ .line 56 │ .local v4, "withShadow":Z │ const-string v1, "KEY_PREF_OPTION_SHADOW" │ │ - invoke-interface {v7, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z │ + invoke-interface {v6, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z │ │ move-result v5 │ │ .line 58 │ .local v5, "withGlare":Z │ invoke-virtual {p0}, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->notifyStarting()V │ │ @@ -469,38 +487,37 @@ │ │ .line 61 │ .local v0, "deviceFrameGenerator":Lcom/f2prateek/dfg/core/DeviceFrameGenerator; │ iget-object v1, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->imageUris:Ljava/util/ArrayList; │ │ invoke-virtual {v1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; │ │ - move-result-object v6 │ + move-result-object v1 │ │ - .local v6, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v1 │ + move-result v2 │ │ - if-eqz v1, :cond_0 │ + if-eqz v2, :cond_0 │ │ - invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v8 │ + move-result-object v7 │ │ - check-cast v8, Landroid/net/Uri; │ + check-cast v7, Landroid/net/Uri; │ │ .line 62 │ - .local v8, "uri":Landroid/net/Uri; │ - invoke-virtual {v0, v8}, Lcom/f2prateek/dfg/core/DeviceFrameGenerator;->generateFrame(Landroid/net/Uri;)V │ + .local v7, "uri":Landroid/net/Uri; │ + invoke-virtual {v0, v7}, Lcom/f2prateek/dfg/core/DeviceFrameGenerator;->generateFrame(Landroid/net/Uri;)V │ │ goto :goto_0 │ │ .line 64 │ - .end local v8 # "uri":Landroid/net/Uri; │ + .end local v7 # "uri":Landroid/net/Uri; │ :cond_0 │ invoke-virtual {p0}, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;->notifyFinished()V │ │ .line 65 │ return-void │ .end method ├── smali/com/f2prateek/dfg/core/AbstractGenerateFrameService.smali │ @@ -55,76 +55,88 @@ │ │ invoke-direct {v1, p0}, Landroid/support/v4/app/NotificationCompat$Builder;->(Landroid/content/Context;)V │ │ invoke-virtual {v1, p1}, Landroid/support/v4/app/NotificationCompat$Builder;->setTicker(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ + .line 66 │ invoke-virtual {v1, p1}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ + .line 67 │ invoke-virtual {v1, p2}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ new-instance v2, Landroid/support/v4/app/NotificationCompat$BigTextStyle; │ │ invoke-direct {v2}, Landroid/support/v4/app/NotificationCompat$BigTextStyle;->()V │ │ + .line 68 │ invoke-virtual {v2, p2}, Landroid/support/v4/app/NotificationCompat$BigTextStyle;->bigText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$BigTextStyle; │ │ move-result-object v2 │ │ + .line 69 │ invoke-virtual {v2, p1}, Landroid/support/v4/app/NotificationCompat$BigTextStyle;->setBigContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$BigTextStyle; │ │ move-result-object v2 │ │ + .line 70 │ invoke-virtual {v2, p3}, Landroid/support/v4/app/NotificationCompat$BigTextStyle;->setSummaryText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$BigTextStyle; │ │ move-result-object v2 │ │ + .line 68 │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setStyle(Landroid/support/v4/app/NotificationCompat$Style;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f020017 │ │ + .line 71 │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setSmallIcon(I)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ + .line 72 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v2 │ │ invoke-virtual {v1, v2, v3}, Landroid/support/v4/app/NotificationCompat$Builder;->setWhen(J)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ const/4 v2, 0x1 │ │ + .line 73 │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setAutoCancel(Z)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ new-instance v2, Landroid/content/Intent; │ │ const-class v3, Lcom/f2prateek/dfg/ui/MainActivity; │ │ invoke-direct {v2, p0, v3}, Landroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V │ │ + .line 75 │ invoke-static {p0, v4, v2, v4}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v2 │ │ + .line 74 │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ + .line 76 │ invoke-virtual {v1}, Landroid/support/v4/app/NotificationCompat$Builder;->build()Landroid/app/Notification; │ │ move-result-object v0 │ │ .line 77 │ .local v0, "notification":Landroid/app/Notification; │ iget-object v1, p0, Lcom/f2prateek/dfg/core/AbstractGenerateFrameService;->notificationManager:Landroid/app/NotificationManager; ├── smali/com/f2prateek/dfg/core/GenerateMultipleFramesService$1.smali │ @@ -20,14 +20,15 @@ │ # instance fields │ .field final synthetic this$0:Lcom/f2prateek/dfg/core/GenerateMultipleFramesService; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/core/GenerateMultipleFramesService;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/core/GenerateMultipleFramesService; │ │ .prologue │ .line 101 │ iput-object p1, p0, Lcom/f2prateek/dfg/core/GenerateMultipleFramesService$1;->this$0:Lcom/f2prateek/dfg/core/GenerateMultipleFramesService; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V ├── smali/com/f2prateek/dfg/core/DeviceFrameGenerator.smali │ @@ -138,14 +138,15 @@ │ :cond_1 │ const-string v2, "Screenshot height=%d, width=%d. Device height=%d, width=%d. Aspect1=%f, Aspect2=%f" │ │ const/4 v3, 0x6 │ │ new-array v3, v3, [Ljava/lang/Object; │ │ + .line 78 │ invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I │ │ move-result v4 │ │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ @@ -174,14 +175,15 @@ │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ const/4 v4, 0x3 │ │ + .line 79 │ invoke-virtual {p0}, Lcom/f2prateek/dfg/model/Device;->getPortSize()[I │ │ move-result-object v5 │ │ aget v5, v5, v6 │ │ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ @@ -202,14 +204,15 @@ │ │ invoke-static {v1}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ + .line 77 │ invoke-static {v2, v3}, Lcom/f2prateek/dfg/util/Ln;->e(Ljava/lang/Object;[Ljava/lang/Object;)I │ │ .line 80 │ new-instance v2, Lcom/f2prateek/dfg/core/UnmatchedDimensionsException; │ │ invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I │ │ @@ -270,14 +273,15 @@ │ │ move-object/from16 v0, p0 │ │ iget-object v0, v0, Lcom/f2prateek/dfg/core/DeviceFrameGenerator;->device:Lcom/f2prateek/dfg/model/Device; │ │ move-object/from16 v21, v0 │ │ + .line 138 │ move-object/from16 v0, v21 │ │ invoke-virtual {v0, v14}, Lcom/f2prateek/dfg/model/Device;->getBackgroundString(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v21 │ │ invoke-static/range {v20 .. v21}, Lcom/f2prateek/dfg/util/BitmapUtils;->decodeResource(Landroid/content/Context;Ljava/lang/String;)Landroid/graphics/Bitmap; │ @@ -376,14 +380,15 @@ │ .line 152 │ move-object/from16 v0, p0 │ │ iget-object v0, v0, Lcom/f2prateek/dfg/core/DeviceFrameGenerator;->device:Lcom/f2prateek/dfg/model/Device; │ │ move-object/from16 v20, v0 │ │ + .line 153 │ invoke-virtual/range {v20 .. v20}, Lcom/f2prateek/dfg/model/Device;->getPortSize()[I │ │ move-result-object v20 │ │ const/16 v21, 0x0 │ │ aget v20, v20, v21 │ @@ -798,27 +803,27 @@ │ │ invoke-virtual/range {v20 .. v20}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v16 │ │ .line 128 │ .local v16, "r":Landroid/content/res/Resources; │ - const v20, 0x7f050009 │ + const v20, 0x7f040009 │ │ move-object/from16 v0, v16 │ │ move/from16 v1, v20 │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v8 │ │ .line 129 │ .local v8, "failed_title":Ljava/lang/String; │ - const v20, 0x7f050008 │ + const v20, 0x7f040008 │ │ const/16 v21, 0x4 │ │ move/from16 v0, v21 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ @@ -826,14 +831,15 @@ │ │ const/16 v22, 0x0 │ │ iget-object v0, v5, Lcom/f2prateek/dfg/core/UnmatchedDimensionsException;->device:Lcom/f2prateek/dfg/model/Device; │ │ move-object/from16 v23, v0 │ │ + .line 130 │ invoke-virtual/range {v23 .. v23}, Lcom/f2prateek/dfg/model/Device;->getPortSize()[I │ │ move-result-object v23 │ │ const/16 v24, 0x0 │ │ aget v23, v23, v24 │ @@ -846,14 +852,15 @@ │ │ const/16 v22, 0x1 │ │ iget-object v0, v5, Lcom/f2prateek/dfg/core/UnmatchedDimensionsException;->device:Lcom/f2prateek/dfg/model/Device; │ │ move-object/from16 v23, v0 │ │ + .line 131 │ invoke-virtual/range {v23 .. v23}, Lcom/f2prateek/dfg/model/Device;->getPortSize()[I │ │ move-result-object v23 │ │ const/16 v24, 0x1 │ │ aget v23, v23, v24 │ @@ -884,27 +891,28 @@ │ │ invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v23 │ │ aput-object v23, v21, v22 │ │ + .line 130 │ move-object/from16 v0, v16 │ │ move/from16 v1, v20 │ │ move-object/from16 v2, v21 │ │ invoke-virtual {v0, v1, v2}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v7 │ │ .line 132 │ .local v7, "failed_text":Ljava/lang/String; │ - const v20, 0x7f050007 │ + const v20, 0x7f040007 │ │ const/16 v21, 0x1 │ │ move/from16 v0, v21 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ @@ -970,14 +978,15 @@ │ :cond_2 │ move-object/from16 v0, p0 │ │ iget-object v0, v0, Lcom/f2prateek/dfg/core/DeviceFrameGenerator;->device:Lcom/f2prateek/dfg/model/Device; │ │ move-object/from16 v20, v0 │ │ + .line 158 │ invoke-virtual/range {v20 .. v20}, Lcom/f2prateek/dfg/model/Device;->getPortSize()[I │ │ move-result-object v20 │ │ const/16 v21, 0x1 │ │ aget v20, v20, v21 │ @@ -1075,44 +1084,46 @@ │ .restart local v16 # "r":Landroid/content/res/Resources; │ move-object/from16 v0, p0 │ │ iget-object v0, v0, Lcom/f2prateek/dfg/core/DeviceFrameGenerator;->callback:Lcom/f2prateek/dfg/core/DeviceFrameGenerator$Callback; │ │ move-object/from16 v20, v0 │ │ - const v21, 0x7f050020 │ + const v21, 0x7f040020 │ │ move-object/from16 v0, v16 │ │ move/from16 v1, v21 │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v21 │ │ - const v22, 0x7f05001f │ + const v22, 0x7f04001f │ │ + .line 197 │ move-object/from16 v0, v16 │ │ move/from16 v1, v22 │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v22 │ │ - const v23, 0x7f05001f │ + const v23, 0x7f04001f │ │ move-object/from16 v0, v16 │ │ move/from16 v1, v23 │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v23 │ │ + .line 196 │ invoke-interface/range {v20 .. v23}, Lcom/f2prateek/dfg/core/DeviceFrameGenerator$Callback;->failedImage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V │ :try_end_3 │ .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ │ .line 200 │ invoke-virtual/range {p1 .. p1}, Landroid/graphics/Bitmap;->recycle()V │ │ @@ -1198,26 +1209,28 @@ │ │ new-instance v5, Ljava/util/Date; │ │ iget-wide v6, v3, Lcom/f2prateek/dfg/core/DeviceFrameGenerator$ImageMetadata;->imageTime:J │ │ invoke-direct {v5, v6, v7}, Ljava/util/Date;->(J)V │ │ + .line 226 │ invoke-virtual {v4, v5}, Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;)Ljava/lang/String; │ │ move-result-object v1 │ │ .line 227 │ .local v1, "imageDate":Ljava/lang/String; │ sget-object v4, Landroid/os/Environment;->DIRECTORY_PICTURES:Ljava/lang/String; │ │ invoke-static {v4}, Landroid/os/Environment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File; │ │ move-result-object v4 │ │ + .line 228 │ invoke-virtual {v4}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; │ │ move-result-object v2 │ │ .line 229 │ .local v2, "imageDir":Ljava/lang/String; │ new-instance v0, Ljava/io/File; │ @@ -1267,15 +1280,15 @@ │ │ # virtual methods │ .method public generateFrame(Landroid/net/Uri;)V │ .locals 10 │ .param p1, "screenshotUri" # Landroid/net/Uri; │ │ .prologue │ - const v9, 0x7f05000a │ + const v9, 0x7f04000a │ │ const/4 v7, 0x1 │ │ const/4 v8, 0x0 │ │ .line 99 │ const-string v4, "Generating for %s %s and %s from file %s." │ @@ -1364,44 +1377,47 @@ │ │ move-result-object v1 │ │ .line 108 │ .local v1, "r":Landroid/content/res/Resources; │ iget-object v3, p0, Lcom/f2prateek/dfg/core/DeviceFrameGenerator;->callback:Lcom/f2prateek/dfg/core/DeviceFrameGenerator$Callback; │ │ - const v4, 0x7f05000b │ + const v4, 0x7f04000b │ │ invoke-virtual {v1, v4}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ new-array v5, v7, [Ljava/lang/Object; │ │ + .line 109 │ invoke-virtual {p1}, Landroid/net/Uri;->toString()Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v5, v8 │ │ invoke-virtual {v1, v9, v5}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v5 │ │ new-array v6, v7, [Ljava/lang/Object; │ │ + .line 110 │ invoke-virtual {p1}, Landroid/net/Uri;->toString()Ljava/lang/String; │ │ move-result-object v7 │ │ aput-object v7, v6, v8 │ │ invoke-virtual {v1, v9, v6}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v6 │ │ + .line 108 │ invoke-interface {v3, v4, v5, v6}, Lcom/f2prateek/dfg/core/DeviceFrameGenerator$Callback;->failedImage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V │ │ .line 111 │ invoke-static {v0}, Lcom/crashlytics/android/Crashlytics;->logException(Ljava/lang/Throwable;)V │ │ goto :goto_2 │ .end method ├── smali/com/f2prateek/dfg/core/GenerateFrameService.smali │ @@ -85,28 +85,31 @@ │ invoke-virtual {v0, v5}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent; │ │ .line 119 │ iget-object v5, p0, Lcom/f2prateek/dfg/core/GenerateFrameService;->notificationBuilder:Landroid/support/v4/app/NotificationCompat$Builder; │ │ const v6, 0x7f020019 │ │ + .line 120 │ invoke-virtual {p0}, Lcom/f2prateek/dfg/core/GenerateFrameService;->getResources()Landroid/content/res/Resources; │ │ move-result-object v7 │ │ - const v8, 0x7f05001a │ + const v8, 0x7f04001a │ │ invoke-virtual {v7, v8}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v7 │ │ + .line 121 │ invoke-static {p0, v9, v0, v11}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v8 │ │ + .line 119 │ invoke-virtual {v5, v6, v7, v8}, Landroid/support/v4/app/NotificationCompat$Builder;->addAction(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 124 │ new-instance v2, Landroid/content/Intent; │ │ const-string v5, "android.intent.action.VIEW" │ │ @@ -120,64 +123,69 @@ │ │ .line 126 │ invoke-virtual {v2, v11}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent; │ │ .line 128 │ iget-object v5, p0, Lcom/f2prateek/dfg/core/GenerateFrameService;->notificationBuilder:Landroid/support/v4/app/NotificationCompat$Builder; │ │ - const v6, 0x7f050013 │ + const v6, 0x7f040013 │ │ invoke-virtual {v3, v6}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v6 │ │ invoke-virtual {v5, v6}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v5 │ │ - const v6, 0x7f05001b │ + const v6, 0x7f04001b │ │ new-array v7, v10, [Ljava/lang/Object; │ │ iget-object v8, p0, Lcom/f2prateek/dfg/core/GenerateFrameService;->device:Lcom/f2prateek/dfg/model/Device; │ │ + .line 129 │ invoke-virtual {v8}, Lcom/f2prateek/dfg/model/Device;->getName()Ljava/lang/String; │ │ move-result-object v8 │ │ aput-object v8, v7, v9 │ │ invoke-virtual {v3, v6, v7}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v6 │ │ invoke-virtual {v5, v6}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v5 │ │ + .line 130 │ invoke-static {p0, v9, v2, v9}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v6 │ │ invoke-virtual {v5, v6}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v5 │ │ + .line 131 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v6 │ │ invoke-virtual {v5, v6, v7}, Landroid/support/v4/app/NotificationCompat$Builder;->setWhen(J)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v5 │ │ + .line 132 │ invoke-virtual {v5, v9, v9, v9}, Landroid/support/v4/app/NotificationCompat$Builder;->setProgress(IIZ)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v5 │ │ + .line 133 │ invoke-virtual {v5, v10}, Landroid/support/v4/app/NotificationCompat$Builder;->setAutoCancel(Z)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 135 │ iget-object v5, p0, Lcom/f2prateek/dfg/core/GenerateFrameService;->notificationManager:Landroid/app/NotificationManager; │ │ const/16 v6, 0x315 │ │ @@ -440,94 +448,103 @@ │ │ move-object/from16 v0, v16 │ │ move-object/from16 v1, p0 │ │ invoke-direct {v0, v1}, Landroid/support/v4/app/NotificationCompat$Builder;->(Landroid/content/Context;)V │ │ - const v17, 0x7f050014 │ + const v17, 0x7f040014 │ │ + .line 90 │ move/from16 v0, v17 │ │ invoke-virtual {v14, v0}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v17 │ │ + .line 89 │ invoke-virtual/range {v16 .. v17}, Landroid/support/v4/app/NotificationCompat$Builder;->setTicker(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ - const v17, 0x7f050015 │ + const v17, 0x7f040015 │ │ + .line 91 │ move/from16 v0, v17 │ │ invoke-virtual {v14, v0}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ move-result-object v17 │ │ invoke-virtual/range {v16 .. v17}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ const/high16 v17, 0x7f020000 │ │ + .line 92 │ invoke-virtual/range {v16 .. v17}, Landroid/support/v4/app/NotificationCompat$Builder;->setSmallIcon(I)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ new-instance v17, Landroid/support/v4/app/NotificationCompat$BigPictureStyle; │ │ invoke-direct/range {v17 .. v17}, Landroid/support/v4/app/NotificationCompat$BigPictureStyle;->()V │ │ + .line 93 │ move-object/from16 v0, v17 │ │ invoke-virtual {v0, v13}, Landroid/support/v4/app/NotificationCompat$BigPictureStyle;->bigPicture(Landroid/graphics/Bitmap;)Landroid/support/v4/app/NotificationCompat$BigPictureStyle; │ │ move-result-object v17 │ │ invoke-virtual/range {v16 .. v17}, Landroid/support/v4/app/NotificationCompat$Builder;->setStyle(Landroid/support/v4/app/NotificationCompat$Style;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ const/16 v17, 0x0 │ │ const/16 v18, 0x0 │ │ + .line 94 │ move-object/from16 v0, p0 │ │ move/from16 v1, v17 │ │ move/from16 v2, v18 │ │ invoke-static {v0, v1, v11, v2}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v17 │ │ invoke-virtual/range {v16 .. v17}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ + .line 95 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v17 │ │ invoke-virtual/range {v16 .. v18}, Landroid/support/v4/app/NotificationCompat$Builder;->setWhen(J)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ const/16 v17, 0x0 │ │ const/16 v18, 0x0 │ │ const/16 v19, 0x1 │ │ + .line 96 │ invoke-virtual/range {v16 .. v19}, Landroid/support/v4/app/NotificationCompat$Builder;->setProgress(IIZ)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ + .line 97 │ move-object/from16 v0, v16 │ │ invoke-virtual {v0, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setLargeIcon(Landroid/graphics/Bitmap;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v16 │ │ move-object/from16 v0, v16 ├── smali/com/f2prateek/dfg/core/AbstractGenerateFrameService$$InjectAdapter.smali │ @@ -176,18 +176,16 @@ │ │ .line 58 │ return-void │ .end method │ │ .method public bridge synthetic injectMembers(Ljava/lang/Object;)V │ .locals 0 │ - .param p1, "x0" # Ljava/lang/Object; │ │ .prologue │ .line 20 │ check-cast p1, Lcom/f2prateek/dfg/core/AbstractGenerateFrameService; │ │ - .end local p1 # "x0":Ljava/lang/Object; │ invoke-virtual {p0, p1}, Lcom/f2prateek/dfg/core/AbstractGenerateFrameService$$InjectAdapter;->injectMembers(Lcom/f2prateek/dfg/core/AbstractGenerateFrameService;)V │ │ return-void │ .end method ├── smali/com/f2prateek/dfg/core/DeviceFrameGenerator$ImageMetadata.smali │ @@ -23,14 +23,15 @@ │ │ .field final synthetic this$0:Lcom/f2prateek/dfg/core/DeviceFrameGenerator; │ │ │ # direct methods │ .method public constructor (Lcom/f2prateek/dfg/core/DeviceFrameGenerator;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/core/DeviceFrameGenerator; │ │ .prologue │ .line 245 │ iput-object p1, p0, Lcom/f2prateek/dfg/core/DeviceFrameGenerator$ImageMetadata;->this$0:Lcom/f2prateek/dfg/core/DeviceFrameGenerator; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V ├── smali/com/f2prateek/dfg/core/GenerateFrameService$1.smali │ @@ -22,14 +22,15 @@ │ │ .field final synthetic val$imageUri:Landroid/net/Uri; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/core/GenerateFrameService;Landroid/net/Uri;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/core/GenerateFrameService; │ │ .prologue │ .line 107 │ iput-object p1, p0, Lcom/f2prateek/dfg/core/GenerateFrameService$1;->this$0:Lcom/f2prateek/dfg/core/GenerateFrameService; │ │ iput-object p2, p0, Lcom/f2prateek/dfg/core/GenerateFrameService$1;->val$imageUri:Landroid/net/Uri; ├── smali/com/f2prateek/dfg/util/SafeAsyncTask$Task$4.smali │ @@ -32,18 +32,19 @@ │ │ .field final synthetic val$e:Ljava/lang/Throwable; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;Ljava/lang/Throwable;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ .prologue │ .line 253 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.4;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;" │ iput-object p1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iput-object p2, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;->val$e:Ljava/lang/Throwable; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ @@ -57,15 +58,15 @@ │ value = { │ Ljava/lang/Exception; │ } │ .end annotation │ │ .prologue │ .line 255 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.4;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;" │ iget-object v0, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iget-object v0, v0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;->parent:Lcom/f2prateek/dfg/util/SafeAsyncTask; │ │ iget-object v1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$4;->val$e:Ljava/lang/Throwable; │ │ invoke-virtual {v0, v1}, Lcom/f2prateek/dfg/util/SafeAsyncTask;->onThrowable(Ljava/lang/Throwable;)V ├── smali/com/f2prateek/dfg/util/SafeAsyncTask$Task$5.smali │ @@ -30,18 +30,19 @@ │ # instance fields │ .field final synthetic this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ .prologue │ .line 262 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.5;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;" │ iput-object p1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ @@ -53,15 +54,15 @@ │ value = { │ Ljava/lang/Exception; │ } │ .end annotation │ │ .prologue │ .line 264 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.5;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;" │ iget-object v0, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$5;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iget-object v0, v0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;->parent:Lcom/f2prateek/dfg/util/SafeAsyncTask; │ │ invoke-virtual {v0}, Lcom/f2prateek/dfg/util/SafeAsyncTask;->onFinally()V │ │ .line 265 ├── smali/com/f2prateek/dfg/util/Ln.smali │ @@ -126,18 +126,20 @@ │ │ iget v0, v0, Lcom/f2prateek/dfg/util/Ln$BaseConfig;->minimumLogLevel:I │ │ if-gt v0, v2, :cond_0 │ │ sget-object v0, Lcom/f2prateek/dfg/util/Ln;->print:Lcom/f2prateek/dfg/util/Ln$Print; │ │ + .line 110 │ invoke-static {p0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 109 │ invoke-virtual {v0, v2, v1}, Lcom/f2prateek/dfg/util/Ln$Print;->println(ILjava/lang/String;)I │ │ move-result v0 │ │ :goto_0 │ return v0 │ │ @@ -181,14 +183,15 @@ │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ array-length v3, p2 │ │ if-lez v3, :cond_1 │ │ + .line 126 │ invoke-static {v1, p2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ .end local v1 # "s":Ljava/lang/String; │ :cond_1 │ invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -292,18 +295,20 @@ │ │ iget v0, v0, Lcom/f2prateek/dfg/util/Ln$BaseConfig;->minimumLogLevel:I │ │ if-gt v0, v2, :cond_0 │ │ sget-object v0, Lcom/f2prateek/dfg/util/Ln;->print:Lcom/f2prateek/dfg/util/Ln$Print; │ │ + .line 176 │ invoke-static {p0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 175 │ invoke-virtual {v0, v2, v1}, Lcom/f2prateek/dfg/util/Ln$Print;->println(ILjava/lang/String;)I │ │ move-result v0 │ │ :goto_0 │ return v0 │ │ @@ -347,14 +352,15 @@ │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ array-length v3, p2 │ │ if-lez v3, :cond_1 │ │ + .line 192 │ invoke-static {v1, p2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ .end local v1 # "s":Ljava/lang/String; │ :cond_1 │ invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -523,14 +529,15 @@ │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ array-length v3, p2 │ │ if-lez v3, :cond_1 │ │ + .line 148 │ invoke-static {v1, p2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ .end local v1 # "s":Ljava/lang/String; │ :cond_1 │ invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -744,18 +751,20 @@ │ │ iget v0, v0, Lcom/f2prateek/dfg/util/Ln$BaseConfig;->minimumLogLevel:I │ │ if-gt v0, v2, :cond_0 │ │ sget-object v0, Lcom/f2prateek/dfg/util/Ln;->print:Lcom/f2prateek/dfg/util/Ln$Print; │ │ + .line 88 │ invoke-static {p0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 87 │ invoke-virtual {v0, v2, v1}, Lcom/f2prateek/dfg/util/Ln$Print;->println(ILjava/lang/String;)I │ │ move-result v0 │ │ :goto_0 │ return v0 │ │ @@ -799,14 +808,15 @@ │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ array-length v3, p2 │ │ if-lez v3, :cond_1 │ │ + .line 104 │ invoke-static {v1, p2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ .end local v1 # "s":Ljava/lang/String; │ :cond_1 │ invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -965,14 +975,15 @@ │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ array-length v3, p2 │ │ if-lez v3, :cond_1 │ │ + .line 170 │ invoke-static {v1, p2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ .end local v1 # "s":Ljava/lang/String; │ :cond_1 │ invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ├── smali/com/f2prateek/dfg/util/SafeAsyncTask$Task$1.smali │ @@ -30,18 +30,19 @@ │ # instance fields │ .field final synthetic this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ .prologue │ .line 206 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.1;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;" │ iput-object p1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ @@ -53,15 +54,15 @@ │ value = { │ Ljava/lang/Exception; │ } │ .end annotation │ │ .prologue │ .line 208 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.1;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;" │ iget-object v0, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$1;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iget-object v0, v0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;->parent:Lcom/f2prateek/dfg/util/SafeAsyncTask; │ │ invoke-virtual {v0}, Lcom/f2prateek/dfg/util/SafeAsyncTask;->onPreExecute()V │ │ .line 209 ├── smali/com/f2prateek/dfg/util/SafeAsyncTask$Task.smali │ @@ -259,14 +259,15 @@ │ iget-object v1, v1, Lcom/f2prateek/dfg/util/SafeAsyncTask;->launchLocation:[Ljava/lang/StackTraceElement; │ │ if-eqz v1, :cond_0 │ │ .line 229 │ new-instance v0, Ljava/util/ArrayList; │ │ + .line 230 │ invoke-virtual {p1}, Ljava/lang/Exception;->getStackTrace()[Ljava/lang/StackTraceElement; │ │ move-result-object v1 │ │ invoke-static {v1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; │ │ move-result-object v1 │ @@ -400,14 +401,15 @@ │ iget-object v1, v1, Lcom/f2prateek/dfg/util/SafeAsyncTask;->launchLocation:[Ljava/lang/StackTraceElement; │ │ if-eqz v1, :cond_0 │ │ .line 248 │ new-instance v0, Ljava/util/ArrayList; │ │ + .line 249 │ invoke-virtual {p1}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ │ move-result-object v1 │ │ invoke-static {v1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; │ │ move-result-object v1 ├── smali/com/f2prateek/dfg/util/SafeAsyncTask$Task$2.smali │ @@ -32,18 +32,19 @@ │ │ .field final synthetic val$r:Ljava/lang/Object; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;Ljava/lang/Object;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ .prologue │ .line 219 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.2;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;" │ iput-object p1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iput-object p2, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;->val$r:Ljava/lang/Object; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ @@ -57,15 +58,15 @@ │ value = { │ Ljava/lang/Exception; │ } │ .end annotation │ │ .prologue │ .line 221 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.2;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;" │ iget-object v0, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iget-object v0, v0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;->parent:Lcom/f2prateek/dfg/util/SafeAsyncTask; │ │ iget-object v1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$2;->val$r:Ljava/lang/Object; │ │ invoke-virtual {v0, v1}, Lcom/f2prateek/dfg/util/SafeAsyncTask;->onSuccess(Ljava/lang/Object;)V ├── smali/com/f2prateek/dfg/util/Strings.smali │ @@ -71,14 +71,15 @@ │ move-result-object v0 │ │ .end local v0 # "c":Ljava/lang/String; │ :cond_0 │ :goto_0 │ return-object v0 │ │ + .line 164 │ .restart local v0 # "c":Ljava/lang/String; │ :cond_1 │ invoke-virtual {v0}, Ljava/lang/String;->length()I │ │ move-result v1 │ │ if-lt v1, v3, :cond_0 │ @@ -630,151 +631,140 @@ │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ .method public static md5(Ljava/lang/String;)Ljava/lang/String; │ - .locals 10 │ + .locals 9 │ .param p0, "s" # Ljava/lang/String; │ │ .prologue │ .line 141 │ :try_start_0 │ - const-string v8, "MD5" │ + const-string v5, "MD5" │ │ - invoke-static {v8}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; │ + invoke-static {v5}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; │ │ - move-result-object v8 │ + move-result-object v5 │ │ - const-string v9, "UTF-8" │ + const-string v6, "UTF-8" │ │ - invoke-virtual {p0, v9}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ + invoke-virtual {p0, v6}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ │ - move-result-object v9 │ + move-result-object v6 │ │ - invoke-virtual {v8, v9}, Ljava/security/MessageDigest;->digest([B)[B │ + invoke-virtual {v5, v6}, Ljava/security/MessageDigest;->digest([B)[B │ │ - move-result-object v3 │ + move-result-object v2 │ │ .line 142 │ - .local v3, "hash":[B │ - new-instance v4, Ljava/lang/StringBuilder; │ + .local v2, "hash":[B │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - invoke-direct {v4}, Ljava/lang/StringBuilder;->()V │ + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ │ .line 144 │ - .local v4, "hashString":Ljava/lang/StringBuilder; │ - move-object v1, v3 │ - │ - .local v1, "arr$":[B │ - array-length v7, v1 │ + .local v3, "hashString":Ljava/lang/StringBuilder; │ + array-length v6, v2 │ │ - .local v7, "len$":I │ - const/4 v6, 0x0 │ + const/4 v5, 0x0 │ │ - .local v6, "i$":I │ :goto_0 │ - if-ge v6, v7, :cond_1 │ + if-ge v5, v6, :cond_1 │ │ - aget-byte v0, v1, v6 │ + aget-byte v0, v2, v5 │ │ .line 145 │ .local v0, "aHash":B │ invoke-static {v0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String; │ │ - move-result-object v5 │ + move-result-object v4 │ │ .line 147 │ - .local v5, "hex":Ljava/lang/String; │ - invoke-virtual {v5}, Ljava/lang/String;->length()I │ + .local v4, "hex":Ljava/lang/String; │ + invoke-virtual {v4}, Ljava/lang/String;->length()I │ │ - move-result v8 │ + move-result v7 │ │ - const/4 v9, 0x1 │ + const/4 v8, 0x1 │ │ - if-ne v8, v9, :cond_0 │ + if-ne v7, v8, :cond_0 │ │ .line 148 │ - const/16 v8, 0x30 │ + const/16 v7, 0x30 │ │ - invoke-virtual {v4, v8}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; │ + invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; │ │ .line 149 │ - invoke-virtual {v5}, Ljava/lang/String;->length()I │ + invoke-virtual {v4}, Ljava/lang/String;->length()I │ │ - move-result v8 │ + move-result v7 │ │ - add-int/lit8 v8, v8, -0x1 │ + add-int/lit8 v7, v7, -0x1 │ │ - invoke-virtual {v5, v8}, Ljava/lang/String;->charAt(I)C │ + invoke-virtual {v4, v7}, Ljava/lang/String;->charAt(I)C │ │ - move-result v8 │ + move-result v7 │ │ - invoke-virtual {v4, v8}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; │ + invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; │ │ .line 144 │ :goto_1 │ - add-int/lit8 v6, v6, 0x1 │ + add-int/lit8 v5, v5, 0x1 │ │ goto :goto_0 │ │ .line 151 │ :cond_0 │ - invoke-virtual {v5}, Ljava/lang/String;->length()I │ + invoke-virtual {v4}, Ljava/lang/String;->length()I │ │ - move-result v8 │ + move-result v7 │ │ - add-int/lit8 v8, v8, -0x2 │ + add-int/lit8 v7, v7, -0x2 │ │ - invoke-virtual {v5, v8}, Ljava/lang/String;->substring(I)Ljava/lang/String; │ + invoke-virtual {v4, v7}, Ljava/lang/String;->substring(I)Ljava/lang/String; │ │ - move-result-object v8 │ + move-result-object v7 │ │ - invoke-virtual {v4, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ goto :goto_1 │ │ .line 156 │ .end local v0 # "aHash":B │ - .end local v1 # "arr$":[B │ - .end local v3 # "hash":[B │ - .end local v4 # "hashString":Ljava/lang/StringBuilder; │ - .end local v5 # "hex":Ljava/lang/String; │ - .end local v6 # "i$":I │ - .end local v7 # "len$":I │ + .end local v2 # "hash":[B │ + .end local v3 # "hashString":Ljava/lang/StringBuilder; │ + .end local v4 # "hex":Ljava/lang/String; │ :catch_0 │ - move-exception v2 │ + move-exception v1 │ │ .line 157 │ - .local v2, "e":Ljava/lang/Exception; │ - new-instance v8, Ljava/lang/RuntimeException; │ + .local v1, "e":Ljava/lang/Exception; │ + new-instance v5, Ljava/lang/RuntimeException; │ │ - invoke-direct {v8, v2}, Ljava/lang/RuntimeException;->(Ljava/lang/Throwable;)V │ + invoke-direct {v5, v1}, Ljava/lang/RuntimeException;->(Ljava/lang/Throwable;)V │ │ - throw v8 │ + throw v5 │ │ .line 155 │ - .end local v2 # "e":Ljava/lang/Exception; │ - .restart local v1 # "arr$":[B │ - .restart local v3 # "hash":[B │ - .restart local v4 # "hashString":Ljava/lang/StringBuilder; │ - .restart local v6 # "i$":I │ - .restart local v7 # "len$":I │ + .end local v1 # "e":Ljava/lang/Exception; │ + .restart local v2 # "hash":[B │ + .restart local v3 # "hashString":Ljava/lang/StringBuilder; │ :cond_1 │ :try_start_1 │ - invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ :try_end_1 │ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 │ │ - move-result-object v8 │ + move-result-object v5 │ │ - return-object v8 │ + return-object v5 │ .end method │ │ .method public static namedFormat(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String; │ .locals 4 │ .param p0, "str" # Ljava/lang/String; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ @@ -790,68 +780,67 @@ │ .end annotation │ │ .prologue │ .line 189 │ .local p1, "substitutions":Ljava/util/Map;, "Ljava/util/Map;" │ invoke-interface {p1}, Ljava/util/Map;->keySet()Ljava/util/Set; │ │ - move-result-object v2 │ + move-result-object v1 │ │ - invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v0 │ + move-result-object v2 │ │ - .local v0, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v2 │ + move-result v1 │ │ - if-eqz v2, :cond_0 │ + if-eqz v1, :cond_0 │ │ - invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v1 │ + move-result-object v0 │ │ - check-cast v1, Ljava/lang/String; │ + check-cast v0, Ljava/lang/String; │ │ .line 190 │ - .local v1, "key":Ljava/lang/String; │ - new-instance v2, Ljava/lang/StringBuilder; │ + .local v0, "key":Ljava/lang/String; │ + new-instance v1, Ljava/lang/StringBuilder; │ │ - invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ │ const/16 v3, 0x24 │ │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; │ + invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; │ │ - move-result-object v2 │ + move-result-object v1 │ │ - invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v2 │ + move-result-object v1 │ │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ - invoke-interface {p1, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + invoke-interface {p1, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - move-result-object v2 │ + move-result-object v1 │ │ - check-cast v2, Ljava/lang/CharSequence; │ + check-cast v1, Ljava/lang/CharSequence; │ │ - invoke-virtual {p0, v3, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ + invoke-virtual {p0, v3, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ │ move-result-object p0 │ │ goto :goto_0 │ │ .line 192 │ - .end local v1 # "key":Ljava/lang/String; │ + .end local v0 # "key":Ljava/lang/String; │ :cond_0 │ return-object p0 │ .end method │ │ .method public static varargs namedFormat(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ .locals 4 │ .param p0, "str" # Ljava/lang/String; │ @@ -1051,14 +1040,15 @@ │ :cond_1 │ instance-of v0, p0, Ljava/io/Reader; │ │ if-eqz v0, :cond_2 │ │ check-cast p0, Ljava/io/Reader; │ │ + .line 123 │ .end local p0 # "o":Ljava/lang/Object; │ invoke-static {p0}, Lcom/f2prateek/dfg/util/Strings;->toString(Ljava/io/Reader;)Ljava/lang/String; │ │ move-result-object p1 │ │ goto :goto_0 │ │ @@ -1071,14 +1061,15 @@ │ const-string v0, ", " │ │ check-cast p0, [Ljava/lang/Object; │ │ .end local p0 # "o":Ljava/lang/Object; │ check-cast p0, [Ljava/lang/Object; │ │ + .line 124 │ invoke-static {v0, p0}, Lcom/f2prateek/dfg/util/Strings;->join(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object p1 │ │ goto :goto_0 │ │ .restart local p0 # "o":Ljava/lang/Object; │ @@ -1087,14 +1078,15 @@ │ │ if-eqz v0, :cond_4 │ │ const-string v0, ", " │ │ check-cast p0, Ljava/util/Collection; │ │ + .line 125 │ .end local p0 # "o":Ljava/lang/Object; │ invoke-static {v0, p0}, Lcom/f2prateek/dfg/util/Strings;->join(Ljava/lang/String;Ljava/util/Collection;)Ljava/lang/String; │ │ move-result-object p1 │ │ goto :goto_0 ├── smali/com/f2prateek/dfg/util/SafeAsyncTask.smali │ @@ -54,20 +54,22 @@ │ .method static constructor ()V │ .locals 1 │ │ .prologue │ .line 48 │ const/16 v0, 0x19 │ │ + .line 49 │ invoke-static {v0}, Ljava/util/concurrent/Executors;->newFixedThreadPool(I)Ljava/util/concurrent/ExecutorService; │ │ move-result-object v0 │ │ sput-object v0, Lcom/f2prateek/dfg/util/SafeAsyncTask;->DEFAULT_EXECUTOR:Ljava/util/concurrent/Executor; │ │ + .line 48 │ return-void │ .end method │ │ .method public constructor ()V │ .locals 1 │ │ .prologue ├── smali/com/f2prateek/dfg/util/SafeAsyncTask$Task$6.smali │ @@ -26,18 +26,19 @@ │ │ .field final synthetic val$latch:Ljava/util/concurrent/CountDownLatch; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;Ljava/util/concurrent/Callable;[Ljava/lang/Exception;Ljava/util/concurrent/CountDownLatch;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ .prologue │ .line 286 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.6;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;" │ iput-object p1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iput-object p2, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;->val$c:Ljava/util/concurrent/Callable; │ │ iput-object p3, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;->val$exceptions:[Ljava/lang/Exception; │ │ iput-object p4, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;->val$latch:Ljava/util/concurrent/CountDownLatch; │ @@ -50,15 +51,15 @@ │ │ # virtual methods │ .method public run()V │ .locals 3 │ │ .prologue │ .line 289 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.6;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;" │ :try_start_0 │ iget-object v1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$6;->val$c:Ljava/util/concurrent/Callable; │ │ invoke-interface {v1}, Ljava/util/concurrent/Callable;->call()Ljava/lang/Object; │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 ├── smali/com/f2prateek/dfg/util/BitmapUtils.smali │ @@ -112,18 +112,20 @@ │ const/4 v3, 0x1 │ │ iput-boolean v3, v0, Landroid/graphics/BitmapFactory$Options;->inMutable:Z │ │ .line 54 │ const-string v3, "drawable" │ │ + .line 55 │ invoke-virtual {v2, p1, v3, v1}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I │ │ move-result v3 │ │ + .line 54 │ invoke-static {v2, v3, v0}, Landroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; │ │ move-result-object v3 │ │ return-object v3 │ .end method ├── smali/com/f2prateek/dfg/util/SafeAsyncTask$Task$3.smali │ @@ -32,18 +32,19 @@ │ │ .field final synthetic val$e:Ljava/lang/Exception; │ │ │ # direct methods │ .method constructor (Lcom/f2prateek/dfg/util/SafeAsyncTask$Task;Ljava/lang/Exception;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ .prologue │ .line 234 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.3;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;" │ iput-object p1, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;->this$0:Lcom/f2prateek/dfg/util/SafeAsyncTask$Task; │ │ iput-object p2, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;->val$e:Ljava/lang/Exception; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ @@ -57,15 +58,15 @@ │ value = { │ Ljava/lang/Exception; │ } │ .end annotation │ │ .prologue │ .line 236 │ - .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task.3;" │ + .local p0, "this":Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;, "Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;" │ iget-object v0, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;->val$e:Ljava/lang/Exception; │ │ instance-of v0, v0, Ljava/lang/InterruptedException; │ │ if-nez v0, :cond_0 │ │ iget-object v0, p0, Lcom/f2prateek/dfg/util/SafeAsyncTask$Task$3;->val$e:Ljava/lang/Exception; ├── smali/com/squareup/otto/AnnotatedHandlerFinder.smali │ @@ -1,34 +1,34 @@ │ .class final Lcom/squareup/otto/AnnotatedHandlerFinder; │ .super Ljava/lang/Object; │ .source "AnnotatedHandlerFinder.java" │ │ │ # static fields │ -.field private static final PRODUCERS_CACHE:Ljava/util/Map; │ +.field private static final PRODUCERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ - "Ljava/util/Map", │ + "Ljava/util/concurrent/ConcurrentMap", │ "<", │ "Ljava/lang/Class", │ "<*>;", │ "Ljava/util/Map", │ "<", │ "Ljava/lang/Class", │ "<*>;", │ "Ljava/lang/reflect/Method;", │ ">;>;" │ } │ .end annotation │ .end field │ │ -.field private static final SUBSCRIBERS_CACHE:Ljava/util/Map; │ +.field private static final SUBSCRIBERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ - "Ljava/util/Map", │ + "Ljava/util/concurrent/ConcurrentMap", │ "<", │ "Ljava/lang/Class", │ "<*>;", │ "Ljava/util/Map", │ "<", │ "Ljava/lang/Class", │ "<*>;", │ @@ -42,39 +42,39 @@ │ │ │ # direct methods │ .method static constructor ()V │ .locals 1 │ │ .prologue │ - .line 37 │ - new-instance v0, Ljava/util/HashMap; │ + .line 39 │ + new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; │ │ - invoke-direct {v0}, Ljava/util/HashMap;->()V │ + invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V │ │ - sput-object v0, Lcom/squareup/otto/AnnotatedHandlerFinder;->PRODUCERS_CACHE:Ljava/util/Map; │ + sput-object v0, Lcom/squareup/otto/AnnotatedHandlerFinder;->PRODUCERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ │ - .line 41 │ - new-instance v0, Ljava/util/HashMap; │ + .line 43 │ + new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; │ │ - invoke-direct {v0}, Ljava/util/HashMap;->()V │ + invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V │ │ - sput-object v0, Lcom/squareup/otto/AnnotatedHandlerFinder;->SUBSCRIBERS_CACHE:Ljava/util/Map; │ + sput-object v0, Lcom/squareup/otto/AnnotatedHandlerFinder;->SUBSCRIBERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ │ return-void │ .end method │ │ .method private constructor ()V │ .locals 0 │ │ .prologue │ - .line 154 │ + .line 175 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 156 │ + .line 177 │ return-void │ .end method │ │ .method static findAllProducers(Ljava/lang/Object;)Ljava/util/Map; │ .locals 7 │ .param p0, "listener" # Ljava/lang/Object; │ .annotation system Ldalvik/annotation/Signature; │ @@ -88,105 +88,104 @@ │ "<*>;", │ "Lcom/squareup/otto/EventProducer;", │ ">;" │ } │ .end annotation │ │ .prologue │ - .line 115 │ + .line 134 │ invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ - move-result-object v3 │ + move-result-object v2 │ │ - .line 116 │ - .local v3, "listenerClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .line 135 │ + .local v2, "listenerClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ new-instance v1, Ljava/util/HashMap; │ │ invoke-direct {v1}, Ljava/util/HashMap;->()V │ │ - .line 118 │ + .line 137 │ .local v1, "handlersInMethod":Ljava/util/Map;, "Ljava/util/Map;Lcom/squareup/otto/EventProducer;>;" │ - sget-object v6, Lcom/squareup/otto/AnnotatedHandlerFinder;->PRODUCERS_CACHE:Ljava/util/Map; │ + sget-object v5, Lcom/squareup/otto/AnnotatedHandlerFinder;->PRODUCERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ │ - invoke-interface {v6, v3}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z │ + invoke-interface {v5, v2}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - move-result v6 │ - │ - if-nez v6, :cond_0 │ + move-result-object v3 │ │ - .line 119 │ - invoke-static {v3}, Lcom/squareup/otto/AnnotatedHandlerFinder;->loadAnnotatedMethods(Ljava/lang/Class;)V │ + check-cast v3, Ljava/util/Map; │ │ - .line 121 │ - :cond_0 │ - sget-object v6, Lcom/squareup/otto/AnnotatedHandlerFinder;->PRODUCERS_CACHE:Ljava/util/Map; │ + .line 138 │ + .local v3, "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ + if-nez v3, :cond_0 │ │ - invoke-interface {v6, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + .line 139 │ + new-instance v3, Ljava/util/HashMap; │ │ - move-result-object v4 │ + .end local v3 # "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ + invoke-direct {v3}, Ljava/util/HashMap;->()V │ │ - check-cast v4, Ljava/util/Map; │ + .line 140 │ + .restart local v3 # "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ + invoke-static {v2, v3}, Lcom/squareup/otto/AnnotatedHandlerFinder;->loadAnnotatedProducerMethods(Ljava/lang/Class;Ljava/util/Map;)V │ │ - .line 122 │ - .local v4, "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ - invoke-interface {v4}, Ljava/util/Map;->isEmpty()Z │ + .line 142 │ + :cond_0 │ + invoke-interface {v3}, Ljava/util/Map;->isEmpty()Z │ │ - move-result v6 │ + move-result v5 │ │ - if-nez v6, :cond_1 │ + if-nez v5, :cond_1 │ │ - .line 123 │ - invoke-interface {v4}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + .line 143 │ + invoke-interface {v3}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v5}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v2 │ + move-result-object v6 │ │ - .local v2, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v6 │ + move-result v5 │ │ - if-eqz v6, :cond_1 │ + if-eqz v5, :cond_1 │ │ - invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/util/Map$Entry; │ │ - .line 124 │ + .line 144 │ .local v0, "e":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/lang/reflect/Method;>;" │ - new-instance v5, Lcom/squareup/otto/EventProducer; │ + new-instance v4, Lcom/squareup/otto/EventProducer; │ │ invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - check-cast v6, Ljava/lang/reflect/Method; │ + check-cast v5, Ljava/lang/reflect/Method; │ │ - invoke-direct {v5, p0, v6}, Lcom/squareup/otto/EventProducer;->(Ljava/lang/Object;Ljava/lang/reflect/Method;)V │ + invoke-direct {v4, p0, v5}, Lcom/squareup/otto/EventProducer;->(Ljava/lang/Object;Ljava/lang/reflect/Method;)V │ │ - .line 125 │ - .local v5, "producer":Lcom/squareup/otto/EventProducer; │ + .line 145 │ + .local v4, "producer":Lcom/squareup/otto/EventProducer; │ invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - invoke-interface {v1, v6, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + invoke-interface {v1, v5, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ goto :goto_0 │ │ - .line 129 │ + .line 149 │ .end local v0 # "e":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/lang/reflect/Method;>;" │ - .end local v2 # "i$":Ljava/util/Iterator; │ - .end local v5 # "producer":Lcom/squareup/otto/EventProducer; │ + .end local v4 # "producer":Lcom/squareup/otto/EventProducer; │ :cond_1 │ return-object v1 │ .end method │ │ .method static findAllSubscribers(Ljava/lang/Object;)Ljava/util/Map; │ .locals 9 │ .param p0, "listener" # Ljava/lang/Object; │ @@ -203,695 +202,771 @@ │ "<", │ "Lcom/squareup/otto/EventHandler;", │ ">;>;" │ } │ .end annotation │ │ .prologue │ - .line 134 │ + .line 154 │ invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ - move-result-object v5 │ + move-result-object v3 │ │ - .line 135 │ - .local v5, "listenerClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .line 155 │ + .local v3, "listenerClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ new-instance v2, Ljava/util/HashMap; │ │ invoke-direct {v2}, Ljava/util/HashMap;->()V │ │ - .line 137 │ + .line 157 │ .local v2, "handlersInMethod":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ - sget-object v8, Lcom/squareup/otto/AnnotatedHandlerFinder;->SUBSCRIBERS_CACHE:Ljava/util/Map; │ + sget-object v6, Lcom/squareup/otto/AnnotatedHandlerFinder;->SUBSCRIBERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ │ - invoke-interface {v8, v5}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z │ + invoke-interface {v6, v3}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - move-result v8 │ + move-result-object v5 │ │ - if-nez v8, :cond_0 │ + check-cast v5, Ljava/util/Map; │ │ - .line 138 │ - invoke-static {v5}, Lcom/squareup/otto/AnnotatedHandlerFinder;->loadAnnotatedMethods(Ljava/lang/Class;)V │ + .line 158 │ + .local v5, "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + if-nez v5, :cond_0 │ │ - .line 140 │ - :cond_0 │ - sget-object v8, Lcom/squareup/otto/AnnotatedHandlerFinder;->SUBSCRIBERS_CACHE:Ljava/util/Map; │ + .line 159 │ + new-instance v5, Ljava/util/HashMap; │ │ - invoke-interface {v8, v5}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + .end local v5 # "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + invoke-direct {v5}, Ljava/util/HashMap;->()V │ │ - move-result-object v7 │ + .line 160 │ + .restart local v5 # "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + invoke-static {v3, v5}, Lcom/squareup/otto/AnnotatedHandlerFinder;->loadAnnotatedSubscriberMethods(Ljava/lang/Class;Ljava/util/Map;)V │ │ - check-cast v7, Ljava/util/Map; │ + .line 162 │ + :cond_0 │ + invoke-interface {v5}, Ljava/util/Map;->isEmpty()Z │ │ - .line 141 │ - .local v7, "methods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ - invoke-interface {v7}, Ljava/util/Map;->isEmpty()Z │ + move-result v6 │ │ - move-result v8 │ + if-nez v6, :cond_2 │ │ - if-nez v8, :cond_2 │ + .line 163 │ + invoke-interface {v5}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - .line 142 │ - invoke-interface {v7}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v8 │ + move-result-object v6 │ │ - invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v3 │ + move-result-object v7 │ │ :goto_0 │ - invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v8 │ + move-result v6 │ │ - if-eqz v8, :cond_2 │ + if-eqz v6, :cond_2 │ │ - invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/util/Map$Entry; │ │ - .line 143 │ + .line 164 │ .local v0, "e":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ new-instance v1, Ljava/util/HashSet; │ │ invoke-direct {v1}, Ljava/util/HashSet;->()V │ │ - .line 144 │ + .line 165 │ .local v1, "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - check-cast v8, Ljava/util/Set; │ + check-cast v6, Ljava/util/Set; │ │ - invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v4 │ + move-result-object v6 │ │ - .local v4, "i$":Ljava/util/Iterator; │ :goto_1 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v8 │ │ if-eqz v8, :cond_1 │ │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v6 │ + move-result-object v4 │ │ - check-cast v6, Ljava/lang/reflect/Method; │ + check-cast v4, Ljava/lang/reflect/Method; │ │ - .line 145 │ - .local v6, "m":Ljava/lang/reflect/Method; │ + .line 166 │ + .local v4, "m":Ljava/lang/reflect/Method; │ new-instance v8, Lcom/squareup/otto/EventHandler; │ │ - invoke-direct {v8, p0, v6}, Lcom/squareup/otto/EventHandler;->(Ljava/lang/Object;Ljava/lang/reflect/Method;)V │ + invoke-direct {v8, p0, v4}, Lcom/squareup/otto/EventHandler;->(Ljava/lang/Object;Ljava/lang/reflect/Method;)V │ │ invoke-interface {v1, v8}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ │ goto :goto_1 │ │ - .line 147 │ - .end local v6 # "m":Ljava/lang/reflect/Method; │ + .line 168 │ + .end local v4 # "m":Ljava/lang/reflect/Method; │ :cond_1 │ invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - invoke-interface {v2, v8, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + invoke-interface {v2, v6, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ goto :goto_0 │ │ - .line 151 │ + .line 172 │ .end local v0 # "e":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ .end local v1 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v4 # "i$":Ljava/util/Iterator; │ :cond_2 │ return-object v2 │ .end method │ │ -.method private static loadAnnotatedMethods(Ljava/lang/Class;)V │ - .locals 12 │ +.method private static loadAnnotatedMethods(Ljava/lang/Class;Ljava/util/Map;Ljava/util/Map;)V │ + .locals 10 │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "(", │ "Ljava/lang/Class", │ - "<*>;)V" │ + "<*>;", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/Class", │ + "<*>;", │ + "Ljava/lang/reflect/Method;", │ + ">;", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/Class", │ + "<*>;", │ + "Ljava/util/Set", │ + "<", │ + "Ljava/lang/reflect/Method;", │ + ">;>;)V" │ } │ .end annotation │ │ .prologue │ - .line 49 │ .local p0, "listenerClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - new-instance v8, Ljava/util/HashMap; │ - │ - invoke-direct {v8}, Ljava/util/HashMap;->()V │ + .local p1, "producerMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ + .local p2, "subscriberMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + const/4 v5, 0x0 │ │ - .line 50 │ - .local v8, "subscriberMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ - new-instance v7, Ljava/util/HashMap; │ - │ - invoke-direct {v7}, Ljava/util/HashMap;->()V │ - │ - .line 52 │ - .local v7, "producerMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ + .line 64 │ invoke-virtual {p0}, Ljava/lang/Class;->getDeclaredMethods()[Ljava/lang/reflect/Method; │ │ - move-result-object v0 │ + move-result-object v6 │ │ - .local v0, "arr$":[Ljava/lang/reflect/Method; │ - array-length v3, v0 │ + array-length v7, v6 │ │ - .local v3, "len$":I │ - const/4 v2, 0x0 │ + move v4, v5 │ │ - .local v2, "i$":I │ :goto_0 │ - if-ge v2, v3, :cond_c │ + if-ge v4, v7, :cond_d │ │ - aget-object v4, v0, v2 │ + aget-object v1, v6, v4 │ │ - .line 53 │ - .local v4, "method":Ljava/lang/reflect/Method; │ - const-class v9, Lcom/squareup/otto/Subscribe; │ + .line 69 │ + .local v1, "method":Ljava/lang/reflect/Method; │ + invoke-virtual {v1}, Ljava/lang/reflect/Method;->isBridge()Z │ │ - invoke-virtual {v4, v9}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z │ + move-result v8 │ │ - move-result v9 │ + if-eqz v8, :cond_1 │ │ - if-eqz v9, :cond_5 │ + .line 64 │ + :cond_0 │ + :goto_1 │ + add-int/lit8 v4, v4, 0x1 │ │ - .line 54 │ - invoke-virtual {v4}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; │ + goto :goto_0 │ │ - move-result-object v6 │ + .line 72 │ + :cond_1 │ + const-class v8, Lcom/squareup/otto/Subscribe; │ │ - .line 55 │ - .local v6, "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ - array-length v9, v6 │ + invoke-virtual {v1, v8}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z │ │ - const/4 v10, 0x1 │ + move-result v8 │ │ - if-eq v9, v10, :cond_0 │ + if-eqz v8, :cond_6 │ │ - .line 56 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + .line 73 │ + invoke-virtual {v1}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + move-result-object v3 │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + .line 74 │ + .local v3, "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ + array-length v8, v3 │ │ - const-string v11, "Method " │ + const/4 v9, 0x1 │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + if-eq v8, v9, :cond_2 │ │ - move-result-object v10 │ + .line 75 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - const-string v11, " has @Subscribe annotation but requires " │ + const-string v6, "Method " │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - array-length v11, v6 │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " has @Subscribe annotation but requires " │ │ - const-string v11, " arguments. Methods must require a single argument." │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + array-length v6, v3 │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + const-string v6, " arguments. Methods must require a single argument." │ │ - throw v9 │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 60 │ - :cond_0 │ - const/4 v9, 0x0 │ + move-result-object v5 │ │ - aget-object v1, v6, v9 │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - .line 61 │ - .local v1, "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - invoke-virtual {v1}, Ljava/lang/Class;->isInterface()Z │ + move-result-object v5 │ │ - move-result v9 │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - if-eqz v9, :cond_1 │ + throw v4 │ │ - .line 62 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + .line 79 │ + :cond_2 │ + aget-object v0, v3, v5 │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + .line 80 │ + .local v0, "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + invoke-virtual {v0}, Ljava/lang/Class;->isInterface()Z │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + move-result v8 │ │ - const-string v11, "Method " │ + if-eqz v8, :cond_3 │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 81 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - move-result-object v10 │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v10 │ + const-string v6, "Method " │ │ - const-string v11, " has @Subscribe annotation on " │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " has @Subscribe annotation on " │ │ - const-string v11, " which is an interface. Subscription must be on a concrete class type." │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " which is an interface. Subscription must be on a concrete class type." │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - throw v9 │ + move-result-object v5 │ │ - .line 66 │ - :cond_1 │ - invoke-virtual {v4}, Ljava/lang/reflect/Method;->getModifiers()I │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result v9 │ + move-result-object v5 │ │ - and-int/lit8 v9, v9, 0x1 │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - if-nez v9, :cond_2 │ + throw v4 │ │ - .line 67 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + .line 85 │ + :cond_3 │ + invoke-virtual {v1}, Ljava/lang/reflect/Method;->getModifiers()I │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + move-result v8 │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + and-int/lit8 v8, v8, 0x1 │ │ - const-string v11, "Method " │ + if-nez v8, :cond_4 │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 86 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - move-result-object v10 │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v10 │ + const-string v6, "Method " │ │ - const-string v11, " has @Subscribe annotation on " │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " has @Subscribe annotation on " │ │ - const-string v11, " but is not \'public\'." │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " but is not \'public\'." │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - throw v9 │ + move-result-object v5 │ │ - .line 71 │ - :cond_2 │ - invoke-interface {v8, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v5 │ │ - check-cast v5, Ljava/util/Set; │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - .line 72 │ - .local v5, "methods":Ljava/util/Set;, "Ljava/util/Set;" │ - if-nez v5, :cond_3 │ + throw v4 │ │ - .line 73 │ - new-instance v5, Ljava/util/HashSet; │ + .line 90 │ + :cond_4 │ + invoke-interface {p2, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - .end local v5 # "methods":Ljava/util/Set;, "Ljava/util/Set;" │ - invoke-direct {v5}, Ljava/util/HashSet;->()V │ + move-result-object v2 │ │ - .line 74 │ - .restart local v5 # "methods":Ljava/util/Set;, "Ljava/util/Set;" │ - invoke-interface {v8, v1, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + check-cast v2, Ljava/util/Set; │ │ - .line 76 │ - :cond_3 │ - invoke-interface {v5, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ + .line 91 │ + .local v2, "methods":Ljava/util/Set;, "Ljava/util/Set;" │ + if-nez v2, :cond_5 │ │ - .line 52 │ - .end local v1 # "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - .end local v5 # "methods":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v6 # "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ - :cond_4 │ - :goto_1 │ - add-int/lit8 v2, v2, 0x1 │ + .line 92 │ + new-instance v2, Ljava/util/HashSet; │ + │ + .end local v2 # "methods":Ljava/util/Set;, "Ljava/util/Set;" │ + invoke-direct {v2}, Ljava/util/HashSet;->()V │ │ - goto/16 :goto_0 │ + .line 93 │ + .restart local v2 # "methods":Ljava/util/Set;, "Ljava/util/Set;" │ + invoke-interface {p2, v0, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ - .line 77 │ + .line 95 │ :cond_5 │ - const-class v9, Lcom/squareup/otto/Produce; │ + invoke-interface {v2, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ │ - invoke-virtual {v4, v9}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z │ + goto/16 :goto_1 │ │ - move-result v9 │ + .line 96 │ + .end local v0 # "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .end local v2 # "methods":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v3 # "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ + :cond_6 │ + const-class v8, Lcom/squareup/otto/Produce; │ │ - if-eqz v9, :cond_4 │ + invoke-virtual {v1, v8}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z │ │ - .line 78 │ - invoke-virtual {v4}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; │ + move-result v8 │ │ - move-result-object v6 │ + if-eqz v8, :cond_0 │ │ - .line 79 │ - .restart local v6 # "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ - array-length v9, v6 │ + .line 97 │ + invoke-virtual {v1}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; │ │ - if-eqz v9, :cond_6 │ + move-result-object v3 │ │ - .line 80 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + .line 98 │ + .restart local v3 # "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ + array-length v8, v3 │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + if-eqz v8, :cond_7 │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + .line 99 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - const-string v11, "Method " │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v10 │ + const-string v6, "Method " │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - const-string v11, "has @Produce annotation but requires " │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, "has @Produce annotation but requires " │ │ - array-length v11, v6 │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + array-length v6, v3 │ │ - const-string v11, " arguments. Methods must require zero arguments." │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " arguments. Methods must require zero arguments." │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - throw v9 │ + move-result-object v5 │ │ - .line 83 │ - :cond_6 │ - invoke-virtual {v4}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - move-result-object v9 │ + throw v4 │ │ - const-class v10, Ljava/lang/Void; │ + .line 102 │ + :cond_7 │ + invoke-virtual {v1}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; │ │ - if-ne v9, v10, :cond_7 │ + move-result-object v8 │ │ - .line 84 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + const-class v9, Ljava/lang/Void; │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + if-ne v8, v9, :cond_8 │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + .line 103 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - const-string v11, "Method " │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v10 │ + const-string v6, "Method " │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - const-string v11, " has a return type of void. Must declare a non-void type." │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " has a return type of void. Must declare a non-void type." │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - throw v9 │ + move-result-object v5 │ │ - .line 88 │ - :cond_7 │ - invoke-virtual {v4}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - move-result-object v1 │ + throw v4 │ │ - .line 89 │ - .restart local v1 # "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - invoke-virtual {v1}, Ljava/lang/Class;->isInterface()Z │ + .line 107 │ + :cond_8 │ + invoke-virtual {v1}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; │ │ - move-result v9 │ + move-result-object v0 │ │ - if-eqz v9, :cond_8 │ + .line 108 │ + .restart local v0 # "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + invoke-virtual {v0}, Ljava/lang/Class;->isInterface()Z │ │ - .line 90 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + move-result v8 │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + if-eqz v8, :cond_9 │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + .line 109 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - const-string v11, "Method " │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v10 │ + const-string v6, "Method " │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - const-string v11, " has @Produce annotation on " │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " has @Produce annotation on " │ │ - invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - const-string v11, " which is an interface. Producers must return a concrete class type." │ + invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " which is an interface. Producers must return a concrete class type." │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - throw v9 │ + move-result-object v5 │ │ - .line 93 │ - :cond_8 │ - sget-object v9, Ljava/lang/Void;->TYPE:Ljava/lang/Class; │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - invoke-virtual {v1, v9}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z │ + throw v4 │ │ - move-result v9 │ + .line 112 │ + :cond_9 │ + sget-object v8, Ljava/lang/Void;->TYPE:Ljava/lang/Class; │ │ - if-eqz v9, :cond_9 │ + invoke-virtual {v0, v8}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z │ │ - .line 94 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + move-result v8 │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + if-eqz v8, :cond_a │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + .line 113 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - const-string v11, "Method " │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v10 │ + const-string v6, "Method " │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - const-string v11, " has @Produce annotation but has no return type." │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " has @Produce annotation but has no return type." │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - throw v9 │ + move-result-object v5 │ │ - .line 97 │ - :cond_9 │ - invoke-virtual {v4}, Ljava/lang/reflect/Method;->getModifiers()I │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - move-result v9 │ + throw v4 │ │ - and-int/lit8 v9, v9, 0x1 │ + .line 116 │ + :cond_a │ + invoke-virtual {v1}, Ljava/lang/reflect/Method;->getModifiers()I │ │ - if-nez v9, :cond_a │ + move-result v8 │ │ - .line 98 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + and-int/lit8 v8, v8, 0x1 │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + if-nez v8, :cond_b │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + .line 117 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - const-string v11, "Method " │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v10 │ + const-string v6, "Method " │ │ - invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - const-string v11, " has @Produce annotation on " │ + invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v10 │ + const-string v6, " has @Produce annotation on " │ │ - invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ + │ + invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ │ - const-string v11, " but is not \'public\'." │ + const-string v6, " but is not \'public\'." │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - throw v9 │ + throw v4 │ │ - .line 102 │ - :cond_a │ - invoke-interface {v7, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z │ + .line 121 │ + :cond_b │ + invoke-interface {p1, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z │ │ - move-result v9 │ + move-result v8 │ │ - if-eqz v9, :cond_b │ + if-eqz v8, :cond_c │ │ - .line 103 │ - new-instance v9, Ljava/lang/IllegalArgumentException; │ + .line 122 │ + new-instance v4, Ljava/lang/IllegalArgumentException; │ │ - new-instance v10, Ljava/lang/StringBuilder; │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-direct {v10}, Ljava/lang/StringBuilder;->()V │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - const-string v11, "Producer for type " │ + const-string v6, "Producer for type " │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - const-string v11, " has already been registered." │ + const-string v6, " has already been registered." │ │ - invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v10 │ + move-result-object v5 │ │ - invoke-direct {v9, v10}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - throw v9 │ + throw v4 │ │ - .line 105 │ - :cond_b │ - invoke-interface {v7, v1, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + .line 124 │ + :cond_c │ + invoke-interface {p1, v0, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ goto/16 :goto_1 │ │ - .line 109 │ - .end local v1 # "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - .end local v4 # "method":Ljava/lang/reflect/Method; │ - .end local v6 # "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ - :cond_c │ - sget-object v9, Lcom/squareup/otto/AnnotatedHandlerFinder;->PRODUCERS_CACHE:Ljava/util/Map; │ + .line 128 │ + .end local v0 # "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .end local v1 # "method":Ljava/lang/reflect/Method; │ + .end local v3 # "parameterTypes":[Ljava/lang/Class;, "[Ljava/lang/Class<*>;" │ + :cond_d │ + sget-object v4, Lcom/squareup/otto/AnnotatedHandlerFinder;->PRODUCERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ + │ + invoke-interface {v4, p0, p1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + │ + .line 129 │ + sget-object v4, Lcom/squareup/otto/AnnotatedHandlerFinder;->SUBSCRIBERS_CACHE:Ljava/util/concurrent/ConcurrentMap; │ + │ + invoke-interface {v4, p0, p2}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + │ + .line 130 │ + return-void │ +.end method │ + │ +.method private static loadAnnotatedProducerMethods(Ljava/lang/Class;Ljava/util/Map;)V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Ljava/lang/Class", │ + "<*>;", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/Class", │ + "<*>;", │ + "Ljava/lang/reflect/Method;", │ + ">;)V" │ + } │ + .end annotation │ │ - invoke-interface {v9, p0, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + .prologue │ + .line 48 │ + .local p0, "listenerClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .local p1, "producerMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ + new-instance v0, Ljava/util/HashMap; │ │ - .line 110 │ - sget-object v9, Lcom/squareup/otto/AnnotatedHandlerFinder;->SUBSCRIBERS_CACHE:Ljava/util/Map; │ + invoke-direct {v0}, Ljava/util/HashMap;->()V │ │ - invoke-interface {v9, p0, v8}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + .line 49 │ + .local v0, "subscriberMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + invoke-static {p0, p1, v0}, Lcom/squareup/otto/AnnotatedHandlerFinder;->loadAnnotatedMethods(Ljava/lang/Class;Ljava/util/Map;Ljava/util/Map;)V │ + │ + .line 50 │ + return-void │ +.end method │ │ - .line 111 │ +.method private static loadAnnotatedSubscriberMethods(Ljava/lang/Class;Ljava/util/Map;)V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Ljava/lang/Class", │ + "<*>;", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/Class", │ + "<*>;", │ + "Ljava/util/Set", │ + "<", │ + "Ljava/lang/reflect/Method;", │ + ">;>;)V" │ + } │ + .end annotation │ + │ + .prologue │ + .line 54 │ + .local p0, "listenerClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .local p1, "subscriberMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + new-instance v0, Ljava/util/HashMap; │ + │ + invoke-direct {v0}, Ljava/util/HashMap;->()V │ + │ + .line 55 │ + .local v0, "producerMethods":Ljava/util/Map;, "Ljava/util/Map;Ljava/lang/reflect/Method;>;" │ + invoke-static {p0, v0, p1}, Lcom/squareup/otto/AnnotatedHandlerFinder;->loadAnnotatedMethods(Ljava/lang/Class;Ljava/util/Map;Ljava/util/Map;)V │ + │ + .line 56 │ return-void │ .end method ├── smali/com/squareup/otto/Bus.smali │ @@ -27,18 +27,18 @@ │ "<", │ "Lcom/squareup/otto/Bus$EventWithHandler;", │ ">;>;" │ } │ .end annotation │ .end field │ │ -.field private final flattenHierarchyCache:Ljava/util/Map; │ +.field private final flattenHierarchyCache:Ljava/util/concurrent/ConcurrentMap; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ - "Ljava/util/Map", │ + "Ljava/util/concurrent/ConcurrentMap", │ "<", │ "Ljava/lang/Class", │ "<*>;", │ "Ljava/util/Set", │ "<", │ "Ljava/lang/Class", │ "<*>;>;>;" │ @@ -91,157 +91,157 @@ │ │ │ # direct methods │ .method public constructor ()V │ .locals 1 │ │ .prologue │ - .line 125 │ + .line 124 │ const-string v0, "default" │ │ invoke-direct {p0, v0}, Lcom/squareup/otto/Bus;->(Ljava/lang/String;)V │ │ - .line 126 │ + .line 125 │ return-void │ .end method │ │ .method public constructor (Lcom/squareup/otto/ThreadEnforcer;)V │ .locals 1 │ .param p1, "enforcer" # Lcom/squareup/otto/ThreadEnforcer; │ │ .prologue │ - .line 143 │ + .line 142 │ const-string v0, "default" │ │ invoke-direct {p0, p1, v0}, Lcom/squareup/otto/Bus;->(Lcom/squareup/otto/ThreadEnforcer;Ljava/lang/String;)V │ │ - .line 144 │ + .line 143 │ return-void │ .end method │ │ .method public constructor (Lcom/squareup/otto/ThreadEnforcer;Ljava/lang/String;)V │ .locals 1 │ .param p1, "enforcer" # Lcom/squareup/otto/ThreadEnforcer; │ .param p2, "identifier" # Ljava/lang/String; │ │ .prologue │ - .line 153 │ + .line 152 │ sget-object v0, Lcom/squareup/otto/HandlerFinder;->ANNOTATED:Lcom/squareup/otto/HandlerFinder; │ │ invoke-direct {p0, p1, p2, v0}, Lcom/squareup/otto/Bus;->(Lcom/squareup/otto/ThreadEnforcer;Ljava/lang/String;Lcom/squareup/otto/HandlerFinder;)V │ │ - .line 154 │ + .line 153 │ return-void │ .end method │ │ .method constructor (Lcom/squareup/otto/ThreadEnforcer;Ljava/lang/String;Lcom/squareup/otto/HandlerFinder;)V │ .locals 1 │ .param p1, "enforcer" # Lcom/squareup/otto/ThreadEnforcer; │ .param p2, "identifier" # Ljava/lang/String; │ .param p3, "handlerFinder" # Lcom/squareup/otto/HandlerFinder; │ │ .prologue │ - .line 163 │ + .line 162 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 92 │ + .line 91 │ new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; │ │ invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V │ │ iput-object v0, p0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - .line 96 │ + .line 95 │ new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; │ │ invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V │ │ iput-object v0, p0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - .line 109 │ + .line 108 │ new-instance v0, Lcom/squareup/otto/Bus$1; │ │ invoke-direct {v0, p0}, Lcom/squareup/otto/Bus$1;->(Lcom/squareup/otto/Bus;)V │ │ iput-object v0, p0, Lcom/squareup/otto/Bus;->eventsToDispatch:Ljava/lang/ThreadLocal; │ │ - .line 117 │ + .line 116 │ new-instance v0, Lcom/squareup/otto/Bus$2; │ │ invoke-direct {v0, p0}, Lcom/squareup/otto/Bus$2;->(Lcom/squareup/otto/Bus;)V │ │ iput-object v0, p0, Lcom/squareup/otto/Bus;->isDispatching:Ljava/lang/ThreadLocal; │ │ - .line 462 │ - new-instance v0, Ljava/util/HashMap; │ + .line 466 │ + new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; │ │ - invoke-direct {v0}, Ljava/util/HashMap;->()V │ + invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V │ │ - iput-object v0, p0, Lcom/squareup/otto/Bus;->flattenHierarchyCache:Ljava/util/Map; │ + iput-object v0, p0, Lcom/squareup/otto/Bus;->flattenHierarchyCache:Ljava/util/concurrent/ConcurrentMap; │ │ - .line 164 │ + .line 163 │ iput-object p1, p0, Lcom/squareup/otto/Bus;->enforcer:Lcom/squareup/otto/ThreadEnforcer; │ │ - .line 165 │ + .line 164 │ iput-object p2, p0, Lcom/squareup/otto/Bus;->identifier:Ljava/lang/String; │ │ - .line 166 │ + .line 165 │ iput-object p3, p0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ │ - .line 167 │ + .line 166 │ return-void │ .end method │ │ .method public constructor (Ljava/lang/String;)V │ .locals 1 │ .param p1, "identifier" # Ljava/lang/String; │ │ .prologue │ - .line 134 │ + .line 133 │ sget-object v0, Lcom/squareup/otto/ThreadEnforcer;->MAIN:Lcom/squareup/otto/ThreadEnforcer; │ │ invoke-direct {p0, v0, p1}, Lcom/squareup/otto/Bus;->(Lcom/squareup/otto/ThreadEnforcer;Ljava/lang/String;)V │ │ - .line 135 │ + .line 134 │ return-void │ .end method │ │ .method private dispatchProducerResultToHandler(Lcom/squareup/otto/EventHandler;Lcom/squareup/otto/EventProducer;)V │ .locals 4 │ .param p1, "handler" # Lcom/squareup/otto/EventHandler; │ .param p2, "producer" # Lcom/squareup/otto/EventProducer; │ │ .prologue │ - .line 243 │ + .line 244 │ const/4 v1, 0x0 │ │ - .line 245 │ + .line 246 │ .local v1, "event":Ljava/lang/Object; │ :try_start_0 │ invoke-virtual {p2}, Lcom/squareup/otto/EventProducer;->produceEvent()Ljava/lang/Object; │ :try_end_0 │ .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v1 │ │ - .line 249 │ + .line 250 │ .end local v1 # "event":Ljava/lang/Object; │ :goto_0 │ if-nez v1, :cond_0 │ │ - .line 253 │ + .line 254 │ :goto_1 │ return-void │ │ - .line 246 │ + .line 247 │ .restart local v1 # "event":Ljava/lang/Object; │ :catch_0 │ move-exception v0 │ │ - .line 247 │ + .line 248 │ .local v0, "e":Ljava/lang/reflect/InvocationTargetException; │ new-instance v2, Ljava/lang/StringBuilder; │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ const-string v3, "Producer " │ │ @@ -263,15 +263,15 @@ │ │ move-result-object v2 │ │ invoke-static {v2, v0}, Lcom/squareup/otto/Bus;->throwRuntimeException(Ljava/lang/String;Ljava/lang/reflect/InvocationTargetException;)V │ │ goto :goto_0 │ │ - .line 252 │ + .line 253 │ .end local v0 # "e":Ljava/lang/reflect/InvocationTargetException; │ .end local v1 # "event":Ljava/lang/Object; │ :cond_0 │ invoke-virtual {p0, v1, p1}, Lcom/squareup/otto/Bus;->dispatch(Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ │ goto :goto_1 │ .end method │ @@ -287,138 +287,191 @@ │ "<", │ "Ljava/lang/Class", │ "<*>;>;" │ } │ .end annotation │ │ .prologue │ - .line 431 │ + .line 435 │ .local p1, "concreteClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ new-instance v3, Ljava/util/LinkedList; │ │ invoke-direct {v3}, Ljava/util/LinkedList;->()V │ │ - .line 432 │ + .line 436 │ .local v3, "parents":Ljava/util/List;, "Ljava/util/List;>;" │ new-instance v0, Ljava/util/HashSet; │ │ invoke-direct {v0}, Ljava/util/HashSet;->()V │ │ - .line 434 │ + .line 438 │ .local v0, "classes":Ljava/util/Set;, "Ljava/util/Set;>;" │ invoke-interface {v3, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ - .line 436 │ + .line 440 │ :cond_0 │ :goto_0 │ invoke-interface {v3}, Ljava/util/List;->isEmpty()Z │ │ move-result v4 │ │ if-nez v4, :cond_1 │ │ - .line 437 │ + .line 441 │ const/4 v4, 0x0 │ │ invoke-interface {v3, v4}, Ljava/util/List;->remove(I)Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljava/lang/Class; │ │ - .line 438 │ + .line 442 │ .local v1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ │ - .line 440 │ + .line 444 │ invoke-virtual {v1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class; │ │ move-result-object v2 │ │ - .line 441 │ + .line 445 │ .local v2, "parent":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ if-eqz v2, :cond_0 │ │ - .line 442 │ + .line 446 │ invoke-interface {v3, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ goto :goto_0 │ │ - .line 445 │ + .line 449 │ .end local v1 # "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ .end local v2 # "parent":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ :cond_1 │ return-object v0 │ .end method │ │ .method private static throwRuntimeException(Ljava/lang/String;Ljava/lang/reflect/InvocationTargetException;)V │ - .locals 2 │ + .locals 4 │ .param p0, "msg" # Ljava/lang/String; │ .param p1, "e" # Ljava/lang/reflect/InvocationTargetException; │ │ .prologue │ - .line 454 │ + .line 458 │ invoke-virtual {p1}, Ljava/lang/reflect/InvocationTargetException;->getCause()Ljava/lang/Throwable; │ │ move-result-object v0 │ │ - .line 455 │ + .line 459 │ .local v0, "cause":Ljava/lang/Throwable; │ if-eqz v0, :cond_0 │ │ - .line 456 │ + .line 460 │ new-instance v1, Ljava/lang/RuntimeException; │ │ - invoke-direct {v1, p0, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v3, ": " │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v0}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ throw v1 │ │ - .line 458 │ + .line 462 │ :cond_0 │ new-instance v1, Ljava/lang/RuntimeException; │ │ - invoke-direct {v1, p0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v3, ": " │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {p1}, Ljava/lang/reflect/InvocationTargetException;->getMessage()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-direct {v1, v2, p1}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ throw v1 │ .end method │ │ │ # virtual methods │ .method protected dispatch(Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ .locals 3 │ .param p1, "event" # Ljava/lang/Object; │ .param p2, "wrapper" # Lcom/squareup/otto/EventHandler; │ │ .prologue │ - .line 384 │ + .line 385 │ :try_start_0 │ invoke-virtual {p2, p1}, Lcom/squareup/otto/EventHandler;->handleEvent(Ljava/lang/Object;)V │ :try_end_0 │ .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 389 │ + .line 390 │ :goto_0 │ return-void │ │ - .line 385 │ + .line 386 │ :catch_0 │ move-exception v0 │ │ - .line 386 │ + .line 387 │ .local v0, "e":Ljava/lang/reflect/InvocationTargetException; │ new-instance v1, Ljava/lang/StringBuilder; │ │ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ │ const-string v2, "Could not dispatch event: " │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ + .line 388 │ invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ @@ -433,57 +486,58 @@ │ │ move-result-object v1 │ │ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 387 │ invoke-static {v1, v0}, Lcom/squareup/otto/Bus;->throwRuntimeException(Ljava/lang/String;Ljava/lang/reflect/InvocationTargetException;)V │ │ goto :goto_0 │ .end method │ │ .method protected dispatchQueuedEvents()V │ .locals 4 │ │ .prologue │ const/4 v3, 0x0 │ │ - .line 354 │ + .line 355 │ iget-object v1, p0, Lcom/squareup/otto/Bus;->isDispatching:Ljava/lang/ThreadLocal; │ │ invoke-virtual {v1}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljava/lang/Boolean; │ │ invoke-virtual {v1}, Ljava/lang/Boolean;->booleanValue()Z │ │ move-result v1 │ │ if-eqz v1, :cond_0 │ │ - .line 373 │ + .line 374 │ :goto_0 │ return-void │ │ - .line 358 │ + .line 359 │ :cond_0 │ iget-object v1, p0, Lcom/squareup/otto/Bus;->isDispatching:Ljava/lang/ThreadLocal; │ │ const/4 v2, 0x1 │ │ invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V │ │ - .line 361 │ + .line 362 │ :cond_1 │ :goto_1 │ :try_start_0 │ iget-object v1, p0, Lcom/squareup/otto/Bus;->eventsToDispatch:Ljava/lang/ThreadLocal; │ │ invoke-virtual {v1}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object; │ │ @@ -495,52 +549,52 @@ │ │ move-result-object v0 │ │ check-cast v0, Lcom/squareup/otto/Bus$EventWithHandler; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ - .line 362 │ + .line 363 │ .local v0, "eventWithHandler":Lcom/squareup/otto/Bus$EventWithHandler; │ if-nez v0, :cond_2 │ │ - .line 371 │ + .line 372 │ iget-object v1, p0, Lcom/squareup/otto/Bus;->isDispatching:Ljava/lang/ThreadLocal; │ │ invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V │ │ goto :goto_0 │ │ - .line 366 │ + .line 367 │ :cond_2 │ :try_start_1 │ iget-object v1, v0, Lcom/squareup/otto/Bus$EventWithHandler;->handler:Lcom/squareup/otto/EventHandler; │ │ invoke-virtual {v1}, Lcom/squareup/otto/EventHandler;->isValid()Z │ │ move-result v1 │ │ if-eqz v1, :cond_1 │ │ - .line 367 │ + .line 368 │ iget-object v1, v0, Lcom/squareup/otto/Bus$EventWithHandler;->event:Ljava/lang/Object; │ │ iget-object v2, v0, Lcom/squareup/otto/Bus$EventWithHandler;->handler:Lcom/squareup/otto/EventHandler; │ │ invoke-virtual {p0, v1, v2}, Lcom/squareup/otto/Bus;->dispatch(Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ :try_end_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ goto :goto_1 │ │ - .line 371 │ + .line 372 │ .end local v0 # "eventWithHandler":Lcom/squareup/otto/Bus$EventWithHandler; │ :catchall_0 │ move-exception v1 │ │ iget-object v2, p0, Lcom/squareup/otto/Bus;->isDispatching:Ljava/lang/ThreadLocal; │ │ invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ @@ -554,73 +608,87 @@ │ │ .method protected enqueueEvent(Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ .locals 2 │ .param p1, "event" # Ljava/lang/Object; │ .param p2, "handler" # Lcom/squareup/otto/EventHandler; │ │ .prologue │ - .line 344 │ + .line 345 │ iget-object v0, p0, Lcom/squareup/otto/Bus;->eventsToDispatch:Ljava/lang/ThreadLocal; │ │ invoke-virtual {v0}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/util/concurrent/ConcurrentLinkedQueue; │ │ new-instance v1, Lcom/squareup/otto/Bus$EventWithHandler; │ │ invoke-direct {v1, p1, p2}, Lcom/squareup/otto/Bus$EventWithHandler;->(Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ │ invoke-virtual {v0, v1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->offer(Ljava/lang/Object;)Z │ │ - .line 345 │ + .line 346 │ return-void │ .end method │ │ .method flattenHierarchy(Ljava/lang/Class;)Ljava/util/Set; │ - .locals 2 │ + .locals 3 │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "(", │ "Ljava/lang/Class", │ "<*>;)", │ "Ljava/util/Set", │ "<", │ "Ljava/lang/Class", │ "<*>;>;" │ } │ .end annotation │ │ .prologue │ - .line 421 │ + .line 422 │ .local p1, "concreteClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - iget-object v1, p0, Lcom/squareup/otto/Bus;->flattenHierarchyCache:Ljava/util/Map; │ + iget-object v2, p0, Lcom/squareup/otto/Bus;->flattenHierarchyCache:Ljava/util/concurrent/ConcurrentMap; │ │ - invoke-interface {v1, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + invoke-interface {v2, p1}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/util/Set; │ │ - .line 422 │ + .line 423 │ .local v0, "classes":Ljava/util/Set;, "Ljava/util/Set;>;" │ if-nez v0, :cond_0 │ │ - .line 423 │ + .line 424 │ invoke-direct {p0, p1}, Lcom/squareup/otto/Bus;->getClassesFor(Ljava/lang/Class;)Ljava/util/Set; │ │ + move-result-object v1 │ + │ + .line 425 │ + .local v1, "classesCreation":Ljava/util/Set;, "Ljava/util/Set;>;" │ + iget-object v2, p0, Lcom/squareup/otto/Bus;->flattenHierarchyCache:Ljava/util/concurrent/ConcurrentMap; │ + │ + invoke-interface {v2, p1, v1}, Ljava/util/concurrent/ConcurrentMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + │ move-result-object v0 │ │ - .line 424 │ - iget-object v1, p0, Lcom/squareup/otto/Bus;->flattenHierarchyCache:Ljava/util/Map; │ + .end local v0 # "classes":Ljava/util/Set;, "Ljava/util/Set;>;" │ + check-cast v0, Ljava/util/Set; │ │ - invoke-interface {v1, p1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + .line 426 │ + .restart local v0 # "classes":Ljava/util/Set;, "Ljava/util/Set;>;" │ + if-nez v0, :cond_0 │ │ .line 427 │ + move-object v0, v1 │ + │ + .line 431 │ + .end local v1 # "classesCreation":Ljava/util/Set;, "Ljava/util/Set;>;" │ :cond_0 │ return-object v0 │ .end method │ │ .method getHandlersForEventType(Ljava/lang/Class;)Ljava/util/Set; │ .locals 1 │ .annotation system Ldalvik/annotation/Signature; │ @@ -632,15 +700,15 @@ │ "<", │ "Lcom/squareup/otto/EventHandler;", │ ">;" │ } │ .end annotation │ │ .prologue │ - .line 410 │ + .line 411 │ .local p1, "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ iget-object v0, p0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ │ invoke-interface {v0, p1}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ @@ -657,575 +725,550 @@ │ "Ljava/lang/Class", │ "<*>;)", │ "Lcom/squareup/otto/EventProducer;" │ } │ .end annotation │ │ .prologue │ - .line 399 │ + .line 400 │ .local p1, "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ iget-object v0, p0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ │ invoke-interface {v0, p1}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lcom/squareup/otto/EventProducer; │ │ return-object v0 │ .end method │ │ .method public post(Ljava/lang/Object;)V │ - .locals 9 │ + .locals 8 │ .param p1, "event" # Ljava/lang/Object; │ │ .prologue │ - .line 313 │ + .line 314 │ if-nez p1, :cond_0 │ │ - .line 314 │ - new-instance v7, Ljava/lang/NullPointerException; │ + .line 315 │ + new-instance v5, Ljava/lang/NullPointerException; │ │ - const-string v8, "Event to post must not be null." │ + const-string v6, "Event to post must not be null." │ │ - invoke-direct {v7, v8}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V │ + invoke-direct {v5, v6}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V │ │ - throw v7 │ + throw v5 │ │ - .line 316 │ + .line 317 │ :cond_0 │ - iget-object v7, p0, Lcom/squareup/otto/Bus;->enforcer:Lcom/squareup/otto/ThreadEnforcer; │ + iget-object v5, p0, Lcom/squareup/otto/Bus;->enforcer:Lcom/squareup/otto/ThreadEnforcer; │ │ - invoke-interface {v7, p0}, Lcom/squareup/otto/ThreadEnforcer;->enforce(Lcom/squareup/otto/Bus;)V │ + invoke-interface {v5, p0}, Lcom/squareup/otto/ThreadEnforcer;->enforce(Lcom/squareup/otto/Bus;)V │ │ - .line 318 │ + .line 319 │ invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ - move-result-object v7 │ + move-result-object v5 │ │ - invoke-virtual {p0, v7}, Lcom/squareup/otto/Bus;->flattenHierarchy(Ljava/lang/Class;)Ljava/util/Set; │ + invoke-virtual {p0, v5}, Lcom/squareup/otto/Bus;->flattenHierarchy(Ljava/lang/Class;)Ljava/util/Set; │ │ move-result-object v0 │ │ - .line 320 │ + .line 321 │ .local v0, "dispatchTypes":Ljava/util/Set;, "Ljava/util/Set;>;" │ const/4 v1, 0x0 │ │ - .line 321 │ + .line 322 │ .local v1, "dispatched":Z │ invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v3 │ + move-result-object v5 │ │ :cond_1 │ - invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v7 │ + move-result v6 │ │ - if-eqz v7, :cond_2 │ + if-eqz v6, :cond_2 │ │ - invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v2 │ │ check-cast v2, Ljava/lang/Class; │ │ - .line 322 │ + .line 323 │ .local v2, "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ invoke-virtual {p0, v2}, Lcom/squareup/otto/Bus;->getHandlersForEventType(Ljava/lang/Class;)Ljava/util/Set; │ │ - move-result-object v6 │ + move-result-object v4 │ │ - .line 324 │ - .local v6, "wrappers":Ljava/util/Set;, "Ljava/util/Set;" │ - if-eqz v6, :cond_1 │ + .line 325 │ + .local v4, "wrappers":Ljava/util/Set;, "Ljava/util/Set;" │ + if-eqz v4, :cond_1 │ │ - invoke-interface {v6}, Ljava/util/Set;->isEmpty()Z │ + invoke-interface {v4}, Ljava/util/Set;->isEmpty()Z │ │ - move-result v7 │ + move-result v6 │ │ - if-nez v7, :cond_1 │ + if-nez v6, :cond_1 │ │ - .line 325 │ + .line 326 │ const/4 v1, 0x1 │ │ - .line 326 │ - invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + .line 327 │ + invoke-interface {v4}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v4 │ + move-result-object v6 │ │ - .local v4, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v7 │ │ if-eqz v7, :cond_1 │ │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v5 │ + move-result-object v3 │ │ - check-cast v5, Lcom/squareup/otto/EventHandler; │ + check-cast v3, Lcom/squareup/otto/EventHandler; │ │ - .line 327 │ - .local v5, "wrapper":Lcom/squareup/otto/EventHandler; │ - invoke-virtual {p0, p1, v5}, Lcom/squareup/otto/Bus;->enqueueEvent(Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ + .line 328 │ + .local v3, "wrapper":Lcom/squareup/otto/EventHandler; │ + invoke-virtual {p0, p1, v3}, Lcom/squareup/otto/Bus;->enqueueEvent(Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ │ goto :goto_0 │ │ - .line 332 │ + .line 333 │ .end local v2 # "eventType":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - .end local v4 # "i$":Ljava/util/Iterator; │ - .end local v5 # "wrapper":Lcom/squareup/otto/EventHandler; │ - .end local v6 # "wrappers":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v3 # "wrapper":Lcom/squareup/otto/EventHandler; │ + .end local v4 # "wrappers":Ljava/util/Set;, "Ljava/util/Set;" │ :cond_2 │ if-nez v1, :cond_3 │ │ - instance-of v7, p1, Lcom/squareup/otto/DeadEvent; │ + instance-of v5, p1, Lcom/squareup/otto/DeadEvent; │ │ - if-nez v7, :cond_3 │ + if-nez v5, :cond_3 │ │ - .line 333 │ - new-instance v7, Lcom/squareup/otto/DeadEvent; │ + .line 334 │ + new-instance v5, Lcom/squareup/otto/DeadEvent; │ │ - invoke-direct {v7, p0, p1}, Lcom/squareup/otto/DeadEvent;->(Ljava/lang/Object;Ljava/lang/Object;)V │ + invoke-direct {v5, p0, p1}, Lcom/squareup/otto/DeadEvent;->(Ljava/lang/Object;Ljava/lang/Object;)V │ │ - invoke-virtual {p0, v7}, Lcom/squareup/otto/Bus;->post(Ljava/lang/Object;)V │ + invoke-virtual {p0, v5}, Lcom/squareup/otto/Bus;->post(Ljava/lang/Object;)V │ │ - .line 336 │ + .line 337 │ :cond_3 │ invoke-virtual {p0}, Lcom/squareup/otto/Bus;->dispatchQueuedEvents()V │ │ - .line 337 │ + .line 338 │ return-void │ .end method │ │ .method public register(Ljava/lang/Object;)V │ - .locals 17 │ + .locals 14 │ .param p1, "object" # Ljava/lang/Object; │ │ .prologue │ - .line 186 │ + .line 185 │ if-nez p1, :cond_0 │ │ - .line 187 │ - new-instance v14, Ljava/lang/NullPointerException; │ + .line 186 │ + new-instance v11, Ljava/lang/NullPointerException; │ │ - const-string v15, "Object to register must not be null." │ + const-string v12, "Object to register must not be null." │ │ - invoke-direct {v14, v15}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V │ + invoke-direct {v11, v12}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V │ │ - throw v14 │ + throw v11 │ │ - .line 189 │ + .line 188 │ :cond_0 │ - move-object/from16 v0, p0 │ - │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->enforcer:Lcom/squareup/otto/ThreadEnforcer; │ - │ - move-object/from16 v0, p0 │ - │ - invoke-interface {v14, v0}, Lcom/squareup/otto/ThreadEnforcer;->enforce(Lcom/squareup/otto/Bus;)V │ + iget-object v11, p0, Lcom/squareup/otto/Bus;->enforcer:Lcom/squareup/otto/ThreadEnforcer; │ │ - .line 191 │ - move-object/from16 v0, p0 │ - │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ + invoke-interface {v11, p0}, Lcom/squareup/otto/ThreadEnforcer;->enforce(Lcom/squareup/otto/Bus;)V │ │ - move-object/from16 v0, p1 │ + .line 190 │ + iget-object v11, p0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ │ - invoke-interface {v14, v0}, Lcom/squareup/otto/HandlerFinder;->findAllProducers(Ljava/lang/Object;)Ljava/util/Map; │ + invoke-interface {v11, p1}, Lcom/squareup/otto/HandlerFinder;->findAllProducers(Ljava/lang/Object;)Ljava/util/Map; │ │ - move-result-object v5 │ + move-result-object v4 │ │ - .line 192 │ - .local v5, "foundProducers":Ljava/util/Map;, "Ljava/util/Map;Lcom/squareup/otto/EventProducer;>;" │ - invoke-interface {v5}, Ljava/util/Map;->keySet()Ljava/util/Set; │ + .line 191 │ + .local v4, "foundProducers":Ljava/util/Map;, "Ljava/util/Map;Lcom/squareup/otto/EventProducer;>;" │ + invoke-interface {v4}, Ljava/util/Map;->keySet()Ljava/util/Set; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-interface {v14}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v11}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v9 │ + move-result-object v11 │ │ :cond_1 │ - invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v14 │ + move-result v12 │ │ - if-eqz v14, :cond_3 │ + if-eqz v12, :cond_3 │ │ - invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v13 │ + move-result-object v10 │ │ - check-cast v13, Ljava/lang/Class; │ + check-cast v10, Ljava/lang/Class; │ │ - .line 194 │ - .local v13, "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - invoke-interface {v5, v13}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + .line 193 │ + .local v10, "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + invoke-interface {v4, v10}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - move-result-object v12 │ + move-result-object v9 │ │ - check-cast v12, Lcom/squareup/otto/EventProducer; │ + check-cast v9, Lcom/squareup/otto/EventProducer; │ │ - .line 195 │ - .local v12, "producer":Lcom/squareup/otto/EventProducer; │ - move-object/from16 v0, p0 │ + .line 194 │ + .local v9, "producer":Lcom/squareup/otto/EventProducer; │ + iget-object v12, p0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ + invoke-interface {v12, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ - invoke-interface {v14, v13, v12}, Ljava/util/concurrent/ConcurrentMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + move-result-object v8 │ │ - move-result-object v11 │ + check-cast v8, Lcom/squareup/otto/EventProducer; │ │ - check-cast v11, Lcom/squareup/otto/EventProducer; │ + .line 196 │ + .local v8, "previousProducer":Lcom/squareup/otto/EventProducer; │ + if-eqz v8, :cond_2 │ │ .line 197 │ - .local v11, "previousProducer":Lcom/squareup/otto/EventProducer; │ - if-eqz v11, :cond_2 │ - │ - .line 198 │ - new-instance v14, Ljava/lang/IllegalArgumentException; │ - │ - new-instance v15, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v15}, Ljava/lang/StringBuilder;->()V │ + new-instance v11, Ljava/lang/IllegalArgumentException; │ │ - const-string v16, "Producer method for type " │ + new-instance v12, Ljava/lang/StringBuilder; │ │ - invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-direct {v12}, Ljava/lang/StringBuilder;->()V │ │ - move-result-object v15 │ + const-string v13, "Producer method for type " │ │ - invoke-virtual {v15, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v15 │ + move-result-object v12 │ │ - const-string v16, " found on type " │ + invoke-virtual {v12, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v12 │ │ - move-result-object v15 │ + const-string v13, " found on type " │ │ - iget-object v0, v12, Lcom/squareup/otto/EventProducer;->target:Ljava/lang/Object; │ + invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-object/from16 v16, v0 │ + move-result-object v12 │ │ - invoke-virtual/range {v16 .. v16}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + iget-object v13, v9, Lcom/squareup/otto/EventProducer;->target:Ljava/lang/Object; │ │ - move-result-object v16 │ + .line 198 │ + invoke-virtual {v13}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ - invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + move-result-object v13 │ │ - move-result-object v15 │ + invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - const-string v16, ", but already registered by type " │ + move-result-object v12 │ │ - invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + const-string v13, ", but already registered by type " │ │ - move-result-object v15 │ + invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - iget-object v0, v11, Lcom/squareup/otto/EventProducer;->target:Ljava/lang/Object; │ + move-result-object v12 │ │ - move-object/from16 v16, v0 │ + iget-object v13, v8, Lcom/squareup/otto/EventProducer;->target:Ljava/lang/Object; │ │ - invoke-virtual/range {v16 .. v16}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + .line 199 │ + invoke-virtual {v13}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ - move-result-object v16 │ + move-result-object v13 │ │ - invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - move-result-object v15 │ + move-result-object v12 │ │ - const-string v16, "." │ + const-string v13, "." │ │ - invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v15 │ + move-result-object v12 │ │ - invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v15 │ + move-result-object v12 │ │ - invoke-direct {v14, v15}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-direct {v11, v12}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - throw v14 │ + throw v11 │ │ - .line 202 │ + .line 201 │ :cond_2 │ - move-object/from16 v0, p0 │ + iget-object v12, p0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ + invoke-interface {v12, v10}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - invoke-interface {v14, v13}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ - │ - move-result-object v7 │ + move-result-object v6 │ │ - check-cast v7, Ljava/util/Set; │ + check-cast v6, Ljava/util/Set; │ │ - .line 203 │ - .local v7, "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ - if-eqz v7, :cond_1 │ + .line 202 │ + .local v6, "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ + if-eqz v6, :cond_1 │ │ - invoke-interface {v7}, Ljava/util/Set;->isEmpty()Z │ + invoke-interface {v6}, Ljava/util/Set;->isEmpty()Z │ │ - move-result v14 │ + move-result v12 │ │ - if-nez v14, :cond_1 │ + if-nez v12, :cond_1 │ │ - .line 204 │ - invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + .line 203 │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v10 │ + move-result-object v12 │ │ - .local v10, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v14 │ + move-result v13 │ │ - if-eqz v14, :cond_1 │ + if-eqz v13, :cond_1 │ │ - invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v6 │ - │ - check-cast v6, Lcom/squareup/otto/EventHandler; │ + move-result-object v5 │ │ - .line 205 │ - .local v6, "handler":Lcom/squareup/otto/EventHandler; │ - move-object/from16 v0, p0 │ + check-cast v5, Lcom/squareup/otto/EventHandler; │ │ - invoke-direct {v0, v6, v12}, Lcom/squareup/otto/Bus;->dispatchProducerResultToHandler(Lcom/squareup/otto/EventHandler;Lcom/squareup/otto/EventProducer;)V │ + .line 204 │ + .local v5, "handler":Lcom/squareup/otto/EventHandler; │ + invoke-direct {p0, v5, v9}, Lcom/squareup/otto/Bus;->dispatchProducerResultToHandler(Lcom/squareup/otto/EventHandler;Lcom/squareup/otto/EventProducer;)V │ │ goto :goto_0 │ │ - .line 210 │ - .end local v6 # "handler":Lcom/squareup/otto/EventHandler; │ - .end local v7 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v10 # "i$":Ljava/util/Iterator; │ - .end local v11 # "previousProducer":Lcom/squareup/otto/EventProducer; │ - .end local v12 # "producer":Lcom/squareup/otto/EventProducer; │ - .end local v13 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .line 209 │ + .end local v5 # "handler":Lcom/squareup/otto/EventHandler; │ + .end local v6 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v8 # "previousProducer":Lcom/squareup/otto/EventProducer; │ + .end local v9 # "producer":Lcom/squareup/otto/EventProducer; │ + .end local v10 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ :cond_3 │ - move-object/from16 v0, p0 │ + iget-object v11, p0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ + invoke-interface {v11, p1}, Lcom/squareup/otto/HandlerFinder;->findAllSubscribers(Ljava/lang/Object;)Ljava/util/Map; │ │ - move-object/from16 v0, p1 │ + move-result-object v3 │ │ - invoke-interface {v14, v0}, Lcom/squareup/otto/HandlerFinder;->findAllSubscribers(Ljava/lang/Object;)Ljava/util/Map; │ + .line 210 │ + .local v3, "foundHandlersMap":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + invoke-interface {v3}, Ljava/util/Map;->keySet()Ljava/util/Set; │ │ - move-result-object v4 │ + move-result-object v11 │ │ - .line 211 │ - .local v4, "foundHandlersMap":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ - invoke-interface {v4}, Ljava/util/Map;->keySet()Ljava/util/Set; │ + invoke-interface {v11}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-interface {v14}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + :cond_4 │ + invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result-object v9 │ + move-result v12 │ │ - .local v9, "i$":Ljava/util/Iterator; │ - :goto_1 │ - invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v14 │ + if-eqz v12, :cond_6 │ │ - if-eqz v14, :cond_5 │ + invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + move-result-object v10 │ │ - move-result-object v13 │ + check-cast v10, Ljava/lang/Class; │ │ - check-cast v13, Ljava/lang/Class; │ + .line 211 │ + .restart local v10 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + iget-object v12, p0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - .line 212 │ - .restart local v13 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - move-object/from16 v0, p0 │ + invoke-interface {v12, v10}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ + move-result-object v6 │ │ - invoke-interface {v14, v13}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + check-cast v6, Ljava/util/Set; │ │ - move-result-object v7 │ + .line 212 │ + .restart local v6 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ + if-nez v6, :cond_5 │ │ - check-cast v7, Ljava/util/Set; │ + .line 214 │ + new-instance v7, Ljava/util/concurrent/CopyOnWriteArraySet; │ │ - .line 213 │ - .restart local v7 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ - if-nez v7, :cond_4 │ + invoke-direct {v7}, Ljava/util/concurrent/CopyOnWriteArraySet;->()V │ │ .line 215 │ - new-instance v8, Ljava/util/concurrent/CopyOnWriteArraySet; │ + .local v7, "handlersCreation":Ljava/util/Set;, "Ljava/util/Set;" │ + iget-object v12, p0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - invoke-direct {v8}, Ljava/util/concurrent/CopyOnWriteArraySet;->()V │ + invoke-interface {v12, v10, v7}, Ljava/util/concurrent/ConcurrentMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ - .line 216 │ - .local v8, "handlersCreation":Ljava/util/Set;, "Ljava/util/Set;" │ - move-object/from16 v0, p0 │ + move-result-object v6 │ │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->handlersByType:Ljava/util/concurrent/ConcurrentMap; │ + .end local v6 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ + check-cast v6, Ljava/util/Set; │ │ - invoke-interface {v14, v13, v8}, Ljava/util/concurrent/ConcurrentMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + .line 216 │ + .restart local v6 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ + if-nez v6, :cond_5 │ │ - move-result-object v7 │ + .line 217 │ + move-object v6, v7 │ │ - .end local v7 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ - check-cast v7, Ljava/util/Set; │ + .line 220 │ + .end local v7 # "handlersCreation":Ljava/util/Set;, "Ljava/util/Set;" │ + :cond_5 │ + invoke-interface {v3, v10}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - .line 217 │ - .restart local v7 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ - if-nez v7, :cond_4 │ + move-result-object v2 │ │ - .line 218 │ - move-object v7, v8 │ + check-cast v2, Ljava/util/Set; │ │ .line 221 │ - .end local v8 # "handlersCreation":Ljava/util/Set;, "Ljava/util/Set;" │ - :cond_4 │ - invoke-interface {v4, v13}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + .local v2, "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ + invoke-interface {v6, v2}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z │ │ - move-result-object v3 │ + move-result v12 │ │ - check-cast v3, Ljava/util/Set; │ + if-nez v12, :cond_4 │ │ .line 222 │ - .local v3, "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ - invoke-interface {v7, v3}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z │ - │ - goto :goto_1 │ + new-instance v11, Ljava/lang/IllegalArgumentException; │ │ - .line 225 │ - .end local v3 # "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v7 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v13 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - :cond_5 │ - invoke-interface {v4}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v14 │ + const-string v12, "Object already registered." │ │ - invoke-interface {v14}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-direct {v11, v12}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - move-result-object v9 │ + throw v11 │ │ - .end local v9 # "i$":Ljava/util/Iterator; │ + .line 226 │ + .end local v2 # "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v6 # "handlers":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v10 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ :cond_6 │ - invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v3}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - move-result v14 │ + move-result-object v11 │ │ - if-eqz v14, :cond_8 │ + invoke-interface {v11}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + move-result-object v11 │ │ - move-result-object v1 │ + :cond_7 │ + invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z │ │ - check-cast v1, Ljava/util/Map$Entry; │ + move-result v12 │ │ - .line 226 │ - .local v1, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ - invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v13 │ + if-eqz v12, :cond_9 │ │ - check-cast v13, Ljava/lang/Class; │ + invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - .line 227 │ - .restart local v13 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - move-object/from16 v0, p0 │ + move-result-object v0 │ │ - iget-object v14, v0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ + check-cast v0, Ljava/util/Map$Entry; │ │ - invoke-interface {v14, v13}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ + .line 227 │ + .local v0, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ + invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - move-result-object v12 │ + move-result-object v10 │ │ - check-cast v12, Lcom/squareup/otto/EventProducer; │ + check-cast v10, Ljava/lang/Class; │ │ .line 228 │ - .restart local v12 # "producer":Lcom/squareup/otto/EventProducer; │ - if-eqz v12, :cond_6 │ + .restart local v10 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + iget-object v12, p0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - invoke-virtual {v12}, Lcom/squareup/otto/EventProducer;->isValid()Z │ + invoke-interface {v12, v10}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ - move-result v14 │ + move-result-object v9 │ │ - if-eqz v14, :cond_6 │ + check-cast v9, Lcom/squareup/otto/EventProducer; │ │ .line 229 │ - invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + .restart local v9 # "producer":Lcom/squareup/otto/EventProducer; │ + if-eqz v9, :cond_7 │ │ - move-result-object v3 │ + invoke-virtual {v9}, Lcom/squareup/otto/EventProducer;->isValid()Z │ │ - check-cast v3, Ljava/util/Set; │ + move-result v12 │ + │ + if-eqz v12, :cond_7 │ │ .line 230 │ - .restart local v3 # "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ - invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - move-result-object v10 │ + move-result-object v2 │ │ - .restart local v10 # "i$":Ljava/util/Iterator; │ - :cond_7 │ - :goto_2 │ - invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z │ + check-cast v2, Ljava/util/Set; │ │ - move-result v14 │ + .line 231 │ + .restart local v2 # "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ + invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - if-eqz v14, :cond_6 │ + move-result-object v12 │ │ - invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + :cond_8 │ + :goto_1 │ + invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result-object v2 │ + move-result v13 │ │ - check-cast v2, Lcom/squareup/otto/EventHandler; │ + if-eqz v13, :cond_7 │ │ - .line 231 │ - .local v2, "foundHandler":Lcom/squareup/otto/EventHandler; │ - invoke-virtual {v12}, Lcom/squareup/otto/EventProducer;->isValid()Z │ + invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result v14 │ + move-result-object v1 │ │ - if-eqz v14, :cond_6 │ + check-cast v1, Lcom/squareup/otto/EventHandler; │ │ - .line 234 │ - invoke-virtual {v2}, Lcom/squareup/otto/EventHandler;->isValid()Z │ + .line 232 │ + .local v1, "foundHandler":Lcom/squareup/otto/EventHandler; │ + invoke-virtual {v9}, Lcom/squareup/otto/EventProducer;->isValid()Z │ │ - move-result v14 │ + move-result v13 │ │ - if-eqz v14, :cond_7 │ + if-eqz v13, :cond_7 │ │ .line 235 │ - move-object/from16 v0, p0 │ + invoke-virtual {v1}, Lcom/squareup/otto/EventHandler;->isValid()Z │ │ - invoke-direct {v0, v2, v12}, Lcom/squareup/otto/Bus;->dispatchProducerResultToHandler(Lcom/squareup/otto/EventHandler;Lcom/squareup/otto/EventProducer;)V │ + move-result v13 │ │ - goto :goto_2 │ + if-eqz v13, :cond_8 │ │ - .line 240 │ - .end local v1 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ - .end local v2 # "foundHandler":Lcom/squareup/otto/EventHandler; │ - .end local v3 # "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v10 # "i$":Ljava/util/Iterator; │ - .end local v12 # "producer":Lcom/squareup/otto/EventProducer; │ - .end local v13 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - :cond_8 │ + .line 236 │ + invoke-direct {p0, v1, v9}, Lcom/squareup/otto/Bus;->dispatchProducerResultToHandler(Lcom/squareup/otto/EventHandler;Lcom/squareup/otto/EventProducer;)V │ + │ + goto :goto_1 │ + │ + .line 241 │ + .end local v0 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ + .end local v1 # "foundHandler":Lcom/squareup/otto/EventHandler; │ + .end local v2 # "foundHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v9 # "producer":Lcom/squareup/otto/EventProducer; │ + .end local v10 # "type":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + :cond_9 │ return-void │ .end method │ │ .method public toString()Ljava/lang/String; │ .locals 2 │ │ .prologue │ - .line 170 │ + .line 169 │ new-instance v0, Ljava/lang/StringBuilder; │ │ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ │ const-string v1, "[Bus \"" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -1248,311 +1291,291 @@ │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ .method public unregister(Ljava/lang/Object;)V │ - .locals 16 │ + .locals 13 │ .param p1, "object" # Ljava/lang/Object; │ │ .prologue │ - .line 263 │ + .line 264 │ if-nez p1, :cond_0 │ │ - .line 264 │ - new-instance v13, Ljava/lang/NullPointerException; │ + .line 265 │ + new-instance v10, Ljava/lang/NullPointerException; │ │ - const-string v14, "Object to unregister must not be null." │ + const-string v11, "Object to unregister must not be null." │ │ - invoke-direct {v13, v14}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V │ + invoke-direct {v10, v11}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V │ │ - throw v13 │ + throw v10 │ │ - .line 266 │ + .line 267 │ :cond_0 │ - move-object/from16 v0, p0 │ + iget-object v10, p0, Lcom/squareup/otto/Bus;->enforcer:Lcom/squareup/otto/ThreadEnforcer; │ │ - iget-object v13, v0, Lcom/squareup/otto/Bus;->enforcer:Lcom/squareup/otto/ThreadEnforcer; │ + invoke-interface {v10, p0}, Lcom/squareup/otto/ThreadEnforcer;->enforce(Lcom/squareup/otto/Bus;)V │ │ - move-object/from16 v0, p0 │ + .line 269 │ + iget-object v10, p0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ │ - invoke-interface {v13, v0}, Lcom/squareup/otto/ThreadEnforcer;->enforce(Lcom/squareup/otto/Bus;)V │ + invoke-interface {v10, p1}, Lcom/squareup/otto/HandlerFinder;->findAllProducers(Ljava/lang/Object;)Ljava/util/Map; │ │ - .line 268 │ - move-object/from16 v0, p0 │ + move-result-object v8 │ │ - iget-object v13, v0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ + .line 270 │ + .local v8, "producersInListener":Ljava/util/Map;, "Ljava/util/Map;Lcom/squareup/otto/EventProducer;>;" │ + invoke-interface {v8}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - move-object/from16 v0, p1 │ + move-result-object v10 │ │ - invoke-interface {v13, v0}, Lcom/squareup/otto/HandlerFinder;->findAllProducers(Ljava/lang/Object;)Ljava/util/Map; │ + invoke-interface {v10}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ move-result-object v11 │ │ - .line 269 │ - .local v11, "producersInListener":Ljava/util/Map;, "Ljava/util/Map;Lcom/squareup/otto/EventProducer;>;" │ - invoke-interface {v11}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v13 │ - │ - invoke-interface {v13}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v7 │ - │ - .local v7, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v13 │ + invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z │ │ - if-eqz v13, :cond_3 │ + move-result v10 │ │ - invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + if-eqz v10, :cond_3 │ │ - move-result-object v2 │ + invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - check-cast v2, Ljava/util/Map$Entry; │ - │ - .line 270 │ - .local v2, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Lcom/squareup/otto/EventProducer;>;" │ - invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v9 │ + move-result-object v1 │ │ - check-cast v9, Ljava/lang/Class; │ + check-cast v1, Ljava/util/Map$Entry; │ │ .line 271 │ - .local v9, "key":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - move-object/from16 v0, p0 │ + .local v1, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Lcom/squareup/otto/EventProducer;>;" │ + invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - invoke-virtual {v0, v9}, Lcom/squareup/otto/Bus;->getProducerForEventType(Ljava/lang/Class;)Lcom/squareup/otto/EventProducer; │ + move-result-object v6 │ │ - move-result-object v10 │ + check-cast v6, Ljava/lang/Class; │ │ .line 272 │ - .local v10, "producer":Lcom/squareup/otto/EventProducer; │ - invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + .local v6, "key":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + invoke-virtual {p0, v6}, Lcom/squareup/otto/Bus;->getProducerForEventType(Ljava/lang/Class;)Lcom/squareup/otto/EventProducer; │ │ - move-result-object v12 │ + move-result-object v7 │ │ - check-cast v12, Lcom/squareup/otto/EventProducer; │ + .line 273 │ + .local v7, "producer":Lcom/squareup/otto/EventProducer; │ + invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - .line 274 │ - .local v12, "value":Lcom/squareup/otto/EventProducer; │ - if-eqz v12, :cond_1 │ + move-result-object v9 │ │ - invoke-virtual {v12, v10}, Lcom/squareup/otto/EventProducer;->equals(Ljava/lang/Object;)Z │ + check-cast v9, Lcom/squareup/otto/EventProducer; │ │ - move-result v13 │ + .line 275 │ + .local v9, "value":Lcom/squareup/otto/EventProducer; │ + if-eqz v9, :cond_1 │ │ - if-nez v13, :cond_2 │ + invoke-virtual {v9, v7}, Lcom/squareup/otto/EventProducer;->equals(Ljava/lang/Object;)Z │ │ - .line 275 │ + move-result v10 │ + │ + if-nez v10, :cond_2 │ + │ + .line 276 │ :cond_1 │ - new-instance v13, Ljava/lang/IllegalArgumentException; │ + new-instance v10, Ljava/lang/IllegalArgumentException; │ │ - new-instance v14, Ljava/lang/StringBuilder; │ + new-instance v11, Ljava/lang/StringBuilder; │ │ - invoke-direct {v14}, Ljava/lang/StringBuilder;->()V │ + invoke-direct {v11}, Ljava/lang/StringBuilder;->()V │ │ - const-string v15, "Missing event producer for an annotated method. Is " │ + const-string v12, "Missing event producer for an annotated method. Is " │ │ - invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-virtual/range {p1 .. p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + .line 277 │ + invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ - move-result-object v15 │ + move-result-object v12 │ │ - invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - const-string v15, " registered?" │ + const-string v12, " registered?" │ │ - invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-direct {v13, v14}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-direct {v10, v11}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - throw v13 │ + throw v10 │ │ - .line 279 │ + .line 280 │ :cond_2 │ - move-object/from16 v0, p0 │ - │ - iget-object v13, v0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ + iget-object v10, p0, Lcom/squareup/otto/Bus;->producersByType:Ljava/util/concurrent/ConcurrentMap; │ │ - invoke-interface {v13, v9}, Ljava/util/concurrent/ConcurrentMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; │ + invoke-interface {v10, v6}, Ljava/util/concurrent/ConcurrentMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; │ │ - move-result-object v13 │ + move-result-object v10 │ │ - check-cast v13, Lcom/squareup/otto/EventProducer; │ + check-cast v10, Lcom/squareup/otto/EventProducer; │ │ - invoke-virtual {v13}, Lcom/squareup/otto/EventProducer;->invalidate()V │ + invoke-virtual {v10}, Lcom/squareup/otto/EventProducer;->invalidate()V │ │ goto :goto_0 │ │ - .line 282 │ - .end local v2 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Lcom/squareup/otto/EventProducer;>;" │ - .end local v9 # "key":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ - .end local v10 # "producer":Lcom/squareup/otto/EventProducer; │ - .end local v12 # "value":Lcom/squareup/otto/EventProducer; │ + .line 283 │ + .end local v1 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Lcom/squareup/otto/EventProducer;>;" │ + .end local v6 # "key":Ljava/lang/Class;, "Ljava/lang/Class<*>;" │ + .end local v7 # "producer":Lcom/squareup/otto/EventProducer; │ + .end local v9 # "value":Lcom/squareup/otto/EventProducer; │ :cond_3 │ - move-object/from16 v0, p0 │ + iget-object v10, p0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ │ - iget-object v13, v0, Lcom/squareup/otto/Bus;->handlerFinder:Lcom/squareup/otto/HandlerFinder; │ + invoke-interface {v10, p1}, Lcom/squareup/otto/HandlerFinder;->findAllSubscribers(Ljava/lang/Object;)Ljava/util/Map; │ │ - move-object/from16 v0, p1 │ - │ - invoke-interface {v13, v0}, Lcom/squareup/otto/HandlerFinder;->findAllSubscribers(Ljava/lang/Object;)Ljava/util/Map; │ - │ - move-result-object v6 │ + move-result-object v5 │ │ - .line 283 │ - .local v6, "handlersInListener":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ - invoke-interface {v6}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + .line 284 │ + .local v5, "handlersInListener":Ljava/util/Map;, "Ljava/util/Map;Ljava/util/Set;>;" │ + invoke-interface {v5}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - move-result-object v13 │ + move-result-object v10 │ │ - invoke-interface {v13}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v10}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v7 │ + move-result-object v11 │ │ - .end local v7 # "i$":Ljava/util/Iterator; │ :goto_1 │ - invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v13 │ + invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z │ │ - if-eqz v13, :cond_8 │ + move-result v10 │ │ - invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + if-eqz v10, :cond_8 │ │ - move-result-object v3 │ + invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - check-cast v3, Ljava/util/Map$Entry; │ + move-result-object v2 │ │ - .line 284 │ - .local v3, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ - invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + check-cast v2, Ljava/util/Map$Entry; │ │ - move-result-object v13 │ + .line 285 │ + .local v2, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ + invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - check-cast v13, Ljava/lang/Class; │ + move-result-object v10 │ │ - move-object/from16 v0, p0 │ + check-cast v10, Ljava/lang/Class; │ │ - invoke-virtual {v0, v13}, Lcom/squareup/otto/Bus;->getHandlersForEventType(Ljava/lang/Class;)Ljava/util/Set; │ + invoke-virtual {p0, v10}, Lcom/squareup/otto/Bus;->getHandlersForEventType(Ljava/lang/Class;)Ljava/util/Set; │ │ - move-result-object v1 │ + move-result-object v0 │ │ - .line 285 │ - .local v1, "currentHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ - invoke-interface {v3}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + .line 286 │ + .local v0, "currentHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ + invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - move-result-object v4 │ + move-result-object v3 │ │ - check-cast v4, Ljava/util/Collection; │ + check-cast v3, Ljava/util/Collection; │ │ - .line 287 │ - .local v4, "eventMethodsInListener":Ljava/util/Collection;, "Ljava/util/Collection;" │ - if-eqz v1, :cond_4 │ + .line 288 │ + .local v3, "eventMethodsInListener":Ljava/util/Collection;, "Ljava/util/Collection;" │ + if-eqz v0, :cond_4 │ │ - invoke-interface {v1, v4}, Ljava/util/Set;->containsAll(Ljava/util/Collection;)Z │ + invoke-interface {v0, v3}, Ljava/util/Set;->containsAll(Ljava/util/Collection;)Z │ │ - move-result v13 │ + move-result v10 │ │ - if-nez v13, :cond_5 │ + if-nez v10, :cond_5 │ │ - .line 288 │ + .line 289 │ :cond_4 │ - new-instance v13, Ljava/lang/IllegalArgumentException; │ + new-instance v10, Ljava/lang/IllegalArgumentException; │ │ - new-instance v14, Ljava/lang/StringBuilder; │ + new-instance v11, Ljava/lang/StringBuilder; │ │ - invoke-direct {v14}, Ljava/lang/StringBuilder;->()V │ + invoke-direct {v11}, Ljava/lang/StringBuilder;->()V │ │ - const-string v15, "Missing event handler for an annotated method. Is " │ + const-string v12, "Missing event handler for an annotated method. Is " │ │ - invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-virtual/range {p1 .. p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + .line 290 │ + invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ - move-result-object v15 │ + move-result-object v12 │ │ - invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - const-string v15, " registered?" │ + const-string v12, " registered?" │ │ - invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - invoke-direct {v13, v14}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + invoke-direct {v10, v11}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ - throw v13 │ + throw v10 │ │ - .line 293 │ + .line 294 │ :cond_5 │ - invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v8 │ + move-result-object v10 │ │ - .local v8, "i$":Ljava/util/Iterator; │ :cond_6 │ :goto_2 │ - invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v13 │ + move-result v12 │ │ - if-eqz v13, :cond_7 │ + if-eqz v12, :cond_7 │ │ - invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v5 │ + move-result-object v4 │ │ - check-cast v5, Lcom/squareup/otto/EventHandler; │ + check-cast v4, Lcom/squareup/otto/EventHandler; │ │ - .line 294 │ - .local v5, "handler":Lcom/squareup/otto/EventHandler; │ - invoke-interface {v4, v5}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z │ + .line 295 │ + .local v4, "handler":Lcom/squareup/otto/EventHandler; │ + invoke-interface {v3, v4}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z │ │ - move-result v13 │ + move-result v12 │ │ - if-eqz v13, :cond_6 │ + if-eqz v12, :cond_6 │ │ - .line 295 │ - invoke-virtual {v5}, Lcom/squareup/otto/EventHandler;->invalidate()V │ + .line 296 │ + invoke-virtual {v4}, Lcom/squareup/otto/EventHandler;->invalidate()V │ │ goto :goto_2 │ │ - .line 298 │ - .end local v5 # "handler":Lcom/squareup/otto/EventHandler; │ + .line 299 │ + .end local v4 # "handler":Lcom/squareup/otto/EventHandler; │ :cond_7 │ - invoke-interface {v1, v4}, Ljava/util/Set;->removeAll(Ljava/util/Collection;)Z │ + invoke-interface {v0, v3}, Ljava/util/Set;->removeAll(Ljava/util/Collection;)Z │ │ goto :goto_1 │ │ - .line 300 │ - .end local v1 # "currentHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v3 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ - .end local v4 # "eventMethodsInListener":Ljava/util/Collection;, "Ljava/util/Collection;" │ - .end local v8 # "i$":Ljava/util/Iterator; │ + .line 301 │ + .end local v0 # "currentHandlers":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v2 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;Ljava/util/Set;>;" │ + .end local v3 # "eventMethodsInListener":Ljava/util/Collection;, "Ljava/util/Collection;" │ :cond_8 │ return-void │ .end method ├── smali/com/squareup/otto/Bus$1.smali │ @@ -28,31 +28,32 @@ │ # instance fields │ .field final synthetic this$0:Lcom/squareup/otto/Bus; │ │ │ # direct methods │ .method constructor (Lcom/squareup/otto/Bus;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/squareup/otto/Bus; │ │ .prologue │ - .line 110 │ + .line 109 │ iput-object p1, p0, Lcom/squareup/otto/Bus$1;->this$0:Lcom/squareup/otto/Bus; │ │ invoke-direct {p0}, Ljava/lang/ThreadLocal;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ .method protected bridge synthetic initialValue()Ljava/lang/Object; │ .locals 1 │ │ .prologue │ - .line 110 │ + .line 109 │ invoke-virtual {p0}, Lcom/squareup/otto/Bus$1;->initialValue()Ljava/util/concurrent/ConcurrentLinkedQueue; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ @@ -65,14 +66,14 @@ │ "<", │ "Lcom/squareup/otto/Bus$EventWithHandler;", │ ">;" │ } │ .end annotation │ │ .prologue │ - .line 112 │ + .line 111 │ new-instance v0, Ljava/util/concurrent/ConcurrentLinkedQueue; │ │ invoke-direct {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->()V │ │ return-object v0 │ .end method ├── smali/com/squareup/otto/Bus$EventWithHandler.smali │ @@ -23,19 +23,19 @@ │ # direct methods │ .method public constructor (Ljava/lang/Object;Lcom/squareup/otto/EventHandler;)V │ .locals 0 │ .param p1, "event" # Ljava/lang/Object; │ .param p2, "handler" # Lcom/squareup/otto/EventHandler; │ │ .prologue │ - .line 470 │ + .line 474 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 471 │ + .line 475 │ iput-object p1, p0, Lcom/squareup/otto/Bus$EventWithHandler;->event:Ljava/lang/Object; │ │ - .line 472 │ + .line 476 │ iput-object p2, p0, Lcom/squareup/otto/Bus$EventWithHandler;->handler:Lcom/squareup/otto/EventHandler; │ │ - .line 473 │ + .line 477 │ return-void │ .end method ├── smali/com/squareup/otto/Bus$2.smali │ @@ -26,44 +26,45 @@ │ # instance fields │ .field final synthetic this$0:Lcom/squareup/otto/Bus; │ │ │ # direct methods │ .method constructor (Lcom/squareup/otto/Bus;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/squareup/otto/Bus; │ │ .prologue │ - .line 117 │ + .line 116 │ iput-object p1, p0, Lcom/squareup/otto/Bus$2;->this$0:Lcom/squareup/otto/Bus; │ │ invoke-direct {p0}, Ljava/lang/ThreadLocal;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ .method protected initialValue()Ljava/lang/Boolean; │ .locals 1 │ │ .prologue │ - .line 119 │ + .line 118 │ const/4 v0, 0x0 │ │ invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ .method protected bridge synthetic initialValue()Ljava/lang/Object; │ .locals 1 │ │ .prologue │ - .line 117 │ + .line 116 │ invoke-virtual {p0}, Lcom/squareup/otto/Bus$2;->initialValue()Ljava/lang/Boolean; │ │ move-result-object v0 │ │ return-object v0 │ .end method ├── smali/com/crashlytics/android/aa.smali │ @@ -1,50 +1,493 @@ │ .class final Lcom/crashlytics/android/aa; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ │ +# static fields │ +.field static final a:Ljava/util/Map; │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;" │ + } │ + .end annotation │ +.end field │ + │ +.field private static final b:Ljava/io/FilenameFilter; │ + │ +.field private static final c:[S │ + │ + │ # instance fields │ -.field private final a:Ljava/lang/String; │ +.field private final d:Ljava/lang/Object; │ + │ +.field private final e:Lcom/crashlytics/android/V; │ │ -.field private final b:Lcom/crashlytics/android/aq; │ +.field private f:Ljava/lang/Thread; │ │ │ # direct methods │ -.method public constructor (Ljava/lang/String;Lcom/crashlytics/android/aq;)V │ - .locals 0 │ +.method static constructor ()V │ + .locals 2 │ │ .prologue │ - .line 13 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + .line 25 │ + new-instance v0, Lcom/crashlytics/android/ab; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/ab;->()V │ + │ + sput-object v0, Lcom/crashlytics/android/aa;->b:Ljava/io/FilenameFilter; │ + │ + .line 32 │ + const-string v0, "X-CRASHLYTICS-INVALID-SESSION" │ + │ + const-string v1, "1" │ + │ + invoke-static {v0, v1}, Ljava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; │ + │ + move-result-object v0 │ │ - .line 14 │ - iput-object p1, p0, Lcom/crashlytics/android/aa;->a:Ljava/lang/String; │ + sput-object v0, Lcom/crashlytics/android/aa;->a:Ljava/util/Map; │ │ - .line 15 │ - iput-object p2, p0, Lcom/crashlytics/android/aa;->b:Lcom/crashlytics/android/aq; │ + .line 35 │ + const/4 v0, 0x6 │ + │ + new-array v0, v0, [S │ + │ + fill-array-data v0, :array_0 │ + │ + sput-object v0, Lcom/crashlytics/android/aa;->c:[S │ │ - .line 16 │ return-void │ + │ + :array_0 │ + .array-data 2 │ + 0xas │ + 0x14s │ + 0x1es │ + 0x3cs │ + 0x78s │ + 0x12cs │ + .end array-data │ .end method │ │ +.method public constructor (Lcom/crashlytics/android/V;)V │ + .locals 2 │ │ -# virtual methods │ -.method public final a()Ljava/lang/String; │ + .prologue │ + .line 42 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ + │ + .line 38 │ + new-instance v0, Ljava/lang/Object; │ + │ + invoke-direct {v0}, Ljava/lang/Object;->()V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/aa;->d:Ljava/lang/Object; │ + │ + .line 43 │ + if-nez p1, :cond_0 │ + │ + .line 44 │ + new-instance v0, Ljava/lang/IllegalArgumentException; │ + │ + const-string v1, "createReportCall must not be null." │ + │ + invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + │ + throw v0 │ + │ + .line 46 │ + :cond_0 │ + iput-object p1, p0, Lcom/crashlytics/android/aa;->e:Lcom/crashlytics/android/V; │ + │ + .line 47 │ + return-void │ +.end method │ + │ +.method static synthetic a(Lcom/crashlytics/android/aa;Ljava/lang/Thread;)Ljava/lang/Thread; │ .locals 1 │ │ .prologue │ - .line 19 │ - iget-object v0, p0, Lcom/crashlytics/android/aa;->a:Ljava/lang/String; │ + .line 23 │ + const/4 v0, 0x0 │ + │ + iput-object v0, p0, Lcom/crashlytics/android/aa;->f:Ljava/lang/Thread; │ │ return-object v0 │ .end method │ │ -.method public final b()Lcom/crashlytics/android/aq; │ +.method static synthetic b()[S │ .locals 1 │ │ .prologue │ .line 23 │ - iget-object v0, p0, Lcom/crashlytics/android/aa;->b:Lcom/crashlytics/android/aq; │ + sget-object v0, Lcom/crashlytics/android/aa;->c:[S │ │ return-object v0 │ .end method │ + │ + │ +# virtual methods │ +.method final a()Ljava/util/List; │ + .locals 9 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "()", │ + "Ljava/util/List", │ + "<", │ + "Lcom/crashlytics/android/Z;", │ + ">;" │ + } │ + .end annotation │ + │ + .prologue │ + .line 100 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Checking for crash reports..." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 103 │ + iget-object v1, p0, Lcom/crashlytics/android/aa;->d:Ljava/lang/Object; │ + │ + monitor-enter v1 │ + │ + .line 104 │ + :try_start_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v0 │ + │ + sget-object v2, Lcom/crashlytics/android/aa;->b:Ljava/io/FilenameFilter; │ + │ + invoke-virtual {v0, v2}, Ljava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v2 │ + │ + .line 105 │ + monitor-exit v1 │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + .line 107 │ + new-instance v1, Ljava/util/LinkedList; │ + │ + invoke-direct {v1}, Ljava/util/LinkedList;->()V │ + │ + .line 108 │ + array-length v3, v2 │ + │ + const/4 v0, 0x0 │ + │ + :goto_0 │ + if-ge v0, v3, :cond_0 │ + │ + aget-object v4, v2, v0 │ + │ + .line 109 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v5 │ + │ + const-string v6, "Crashlytics" │ + │ + new-instance v7, Ljava/lang/StringBuilder; │ + │ + const-string v8, "Found crash report " │ + │ + invoke-direct {v7, v8}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v4}, Ljava/io/File;->getPath()Ljava/lang/String; │ + │ + move-result-object v8 │ + │ + invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-interface {v5, v6, v7}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 110 │ + new-instance v5, Lcom/crashlytics/android/Z; │ + │ + invoke-direct {v5, v4}, Lcom/crashlytics/android/Z;->(Ljava/io/File;)V │ + │ + invoke-interface {v1, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ + │ + .line 108 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_0 │ + │ + .line 105 │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit v1 │ + │ + throw v0 │ + │ + .line 113 │ + :cond_0 │ + invoke-interface {v1}, Ljava/util/List;->size()I │ + │ + move-result v0 │ + │ + if-nez v0, :cond_1 │ + │ + .line 114 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "No reports found." │ + │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 117 │ + :cond_1 │ + return-object v1 │ +.end method │ + │ +.method public final declared-synchronized a(F)V │ + .locals 3 │ + │ + .prologue │ + .line 54 │ + monitor-enter p0 │ + │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/aa;->f:Ljava/lang/Thread; │ + │ + if-nez v0, :cond_0 │ + │ + .line 55 │ + new-instance v0, Ljava/lang/Thread; │ + │ + new-instance v1, Lcom/crashlytics/android/ac; │ + │ + invoke-direct {v1, p0, p1}, Lcom/crashlytics/android/ac;->(Lcom/crashlytics/android/aa;F)V │ + │ + const-string v2, "Crashlytics Report Uploader" │ + │ + invoke-direct {v0, v1, v2}, Ljava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/aa;->f:Ljava/lang/Thread; │ + │ + .line 56 │ + iget-object v0, p0, Lcom/crashlytics/android/aa;->f:Ljava/lang/Thread; │ + │ + invoke-virtual {v0}, Ljava/lang/Thread;->start()V │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + .line 58 │ + :cond_0 │ + monitor-exit p0 │ + │ + return-void │ + │ + .line 54 │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit p0 │ + │ + throw v0 │ +.end method │ + │ +.method final a(Lcom/crashlytics/android/Z;)Z │ + .locals 7 │ + │ + .prologue │ + .line 74 │ + const/4 v0, 0x0 │ + │ + .line 75 │ + iget-object v2, p0, Lcom/crashlytics/android/aa;->d:Ljava/lang/Object; │ + │ + monitor-enter v2 │ + │ + .line 77 │ + :try_start_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ + │ + move-result-object v1 │ + │ + .line 78 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->f()Z │ + │ + move-result v3 │ + │ + .line 80 │ + new-instance v4, Lcom/crashlytics/android/U; │ + │ + invoke-static {v1, v3}, Lcom/crashlytics/android/internal/r;->a(Landroid/content/Context;Z)Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-direct {v4, v1, p1}, Lcom/crashlytics/android/U;->(Ljava/lang/String;Lcom/crashlytics/android/Z;)V │ + │ + .line 81 │ + iget-object v1, p0, Lcom/crashlytics/android/aa;->e:Lcom/crashlytics/android/V; │ + │ + invoke-interface {v1, v4}, Lcom/crashlytics/android/V;->a(Lcom/crashlytics/android/U;)Z │ + │ + move-result v3 │ + │ + .line 83 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v4 │ + │ + const-string v5, "Crashlytics" │ + │ + new-instance v6, Ljava/lang/StringBuilder; │ + │ + const-string v1, "Crashlytics report upload " │ + │ + invoke-direct {v6, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + if-eqz v3, :cond_1 │ + │ + const-string v1, "complete: " │ + │ + :goto_0 │ + invoke-virtual {v6, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {p1}, Lcom/crashlytics/android/Z;->b()Ljava/lang/String; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-interface {v4, v5, v1}, Lcom/crashlytics/android/internal/q;->b(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 86 │ + if-eqz v3, :cond_0 │ + │ + .line 87 │ + invoke-virtual {p1}, Lcom/crashlytics/android/Z;->a()Z │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + .line 88 │ + const/4 v0, 0x1 │ + │ + .line 95 │ + :cond_0 │ + :goto_1 │ + :try_start_1 │ + monitor-exit v2 │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + │ + .line 96 │ + return v0 │ + │ + .line 83 │ + :cond_1 │ + :try_start_2 │ + const-string v1, "FAILED: " │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + │ + goto :goto_0 │ + │ + .line 90 │ + :catch_0 │ + move-exception v1 │ + │ + .line 93 │ + :try_start_3 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + const-string v6, "Error occurred sending report " │ + │ + invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-interface {v3, v4, v5, v1}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_3 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ + │ + goto :goto_1 │ + │ + .line 95 │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit v2 │ + │ + throw v0 │ +.end method ├── smali/com/crashlytics/android/U.smali │ @@ -1,74 +1,28 @@ │ .class final Lcom/crashlytics/android/U; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ -# interfaces │ -.implements Ljava/util/concurrent/Callable; │ - │ - │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Ljava/util/concurrent/Callable", │ - "<", │ - "Ljava/lang/Void;", │ - ">;" │ - } │ -.end annotation │ - │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/E; │ +.field public final a:Ljava/lang/String; │ + │ +.field public final b:Lcom/crashlytics/android/Z; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;)V │ +.method public constructor (Ljava/lang/String;Lcom/crashlytics/android/Z;)V │ .locals 0 │ │ .prologue │ - .line 336 │ - iput-object p1, p0, Lcom/crashlytics/android/U;->a:Lcom/crashlytics/android/E; │ - │ + .line 13 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - return-void │ -.end method │ - │ - │ -# virtual methods │ -.method public final synthetic call()Ljava/lang/Object; │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 336 │ - iget-object v0, p0, Lcom/crashlytics/android/U;->a:Lcom/crashlytics/android/E; │ + .line 14 │ + iput-object p1, p0, Lcom/crashlytics/android/U;->a:Ljava/lang/String; │ │ - invoke-static {v0}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/E;)Ljava/util/concurrent/atomic/AtomicBoolean; │ + .line 15 │ + iput-object p2, p0, Lcom/crashlytics/android/U;->b:Lcom/crashlytics/android/Z; │ │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_0 │ - │ - iget-object v0, p0, Lcom/crashlytics/android/U;->a:Lcom/crashlytics/android/E; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/E;->b(Lcom/crashlytics/android/E;)V │ - │ - iget-object v0, p0, Lcom/crashlytics/android/U;->a:Lcom/crashlytics/android/E; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/E;->c(Lcom/crashlytics/android/E;)V │ - │ - :cond_0 │ - const/4 v0, 0x0 │ - │ - return-object v0 │ + .line 16 │ + return-void │ .end method ├── smali/com/crashlytics/android/M.smali │ @@ -1,54 +1,38 @@ │ .class final Lcom/crashlytics/android/M; │ -.super Ljava/lang/Object; │ +.super Landroid/content/BroadcastReceiver; │ .source "SourceFile" │ │ -# interfaces │ -.implements Ljava/lang/Runnable; │ - │ │ # instance fields │ -.field private synthetic a:Ljava/lang/Runnable; │ +.field private synthetic a:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;Ljava/lang/Runnable;)V │ +.method constructor (Lcom/crashlytics/android/v;)V │ .locals 0 │ │ .prologue │ - .line 1963 │ - iput-object p2, p0, Lcom/crashlytics/android/M;->a:Ljava/lang/Runnable; │ + .line 273 │ + iput-object p1, p0, Lcom/crashlytics/android/M;->a:Lcom/crashlytics/android/v; │ │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + invoke-direct {p0}, Landroid/content/BroadcastReceiver;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final run()V │ +.method public final onReceive(Landroid/content/Context;Landroid/content/Intent;)V │ .locals 2 │ │ .prologue │ - .line 1967 │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/M;->a:Ljava/lang/Runnable; │ - │ - invoke-interface {v0}, Ljava/lang/Runnable;->run()V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 1971 │ - :goto_0 │ - return-void │ + .line 276 │ + iget-object v0, p0, Lcom/crashlytics/android/M;->a:Lcom/crashlytics/android/v; │ │ - .line 1968 │ - :catch_0 │ - move-exception v0 │ + const/4 v1, 0x0 │ │ - .line 1969 │ - const-string v1, "Failed to execute task." │ + invoke-static {v0, v1}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/v;Z)Z │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ + .line 277 │ + return-void │ .end method ├── smali/com/crashlytics/android/Crashlytics.smali │ @@ -1,2675 +1,2551 @@ │ .class public final Lcom/crashlytics/android/Crashlytics; │ -.super Ljava/lang/Object; │ +.super Lcom/crashlytics/android/internal/u; │ .source "SourceFile" │ │ │ # static fields │ -.field private static b:Lcom/crashlytics/android/Crashlytics; │ +.field public static final TAG:Ljava/lang/String; = "Crashlytics" │ │ -.field private static c:I │ +.field private static j:Landroid/content/ContextWrapper; │ │ -.field private static o:Landroid/content/ContextWrapper; │ +.field private static k:Ljava/lang/String; │ │ -.field private static p:Ljava/lang/String; │ +.field private static l:Ljava/lang/String; │ │ -.field private static q:Ljava/lang/String; │ +.field private static m:Ljava/lang/String; │ │ -.field private static r:Ljava/lang/String; │ +.field private static n:Ljava/lang/String; │ │ -.field private static s:Ljava/lang/String; │ +.field private static o:Ljava/lang/String; │ │ -.field private static t:Ljava/lang/String; │ +.field private static p:Ljava/lang/String; │ │ -.field private static u:Ljava/lang/String; │ +.field private static q:Ljava/lang/String; │ │ -.field private static v:Ljava/lang/String; │ +.field private static r:Z │ │ -.field private static w:Ljava/io/File; │ +.field private static s:Lcom/crashlytics/android/PinningInfoProvider; │ │ -.field private static x:Z │ +.field private static t:Lcom/crashlytics/android/internal/av; │ │ -.field private static y:Lcom/crashlytics/android/PinningInfoProvider; │ +.field private static u:F │ │ +.field private static v:Lcom/crashlytics/android/Crashlytics; │ │ -# instance fields │ -.field a:Ljava/lang/String; │ │ -.field private final d:J │ +# instance fields │ +.field private final a:J │ │ -.field private final e:Ljava/util/concurrent/ConcurrentHashMap; │ +.field private final b:Ljava/util/concurrent/ConcurrentHashMap; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "Ljava/util/concurrent/ConcurrentHashMap", │ "<", │ "Ljava/lang/String;", │ "Ljava/lang/String;", │ ">;" │ } │ .end annotation │ .end field │ │ -.field private final f:Ljava/util/concurrent/atomic/AtomicReference; │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/util/concurrent/atomic/AtomicReference", │ - "<", │ - "Lcom/crashlytics/android/au;", │ - ">;" │ - } │ - .end annotation │ -.end field │ - │ -.field private g:Lcom/crashlytics/android/CrashlyticsListener; │ - │ -.field private h:Lcom/crashlytics/android/E; │ +.field private c:Lcom/crashlytics/android/CrashlyticsListener; │ │ -.field private i:Lcom/crashlytics/android/IdManager; │ +.field private d:Lcom/crashlytics/android/v; │ │ -.field private j:Ljava/lang/String; │ +.field private e:Lcom/crashlytics/android/internal/ao; │ │ -.field private k:Ljava/lang/String; │ +.field private f:Ljava/lang/String; │ │ -.field private l:Ljava/lang/String; │ +.field private g:Ljava/lang/String; │ │ -.field private m:Ljava/lang/String; │ +.field private h:Ljava/lang/String; │ │ -.field private n:Lcom/crashlytics/android/SettingsController; │ +.field private i:Ljava/lang/String; │ │ │ # direct methods │ .method static constructor ()V │ - .locals 2 │ + .locals 1 │ │ .prologue │ - const/4 v1, 0x0 │ - │ - .line 112 │ - sput-object v1, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ - │ - .line 139 │ - const/4 v0, 0x4 │ + .line 99 │ + const/4 v0, 0x0 │ │ - sput v0, Lcom/crashlytics/android/Crashlytics;->c:I │ + sput-boolean v0, Lcom/crashlytics/android/Crashlytics;->r:Z │ │ - .line 174 │ + .line 100 │ const/4 v0, 0x0 │ │ - sput-boolean v0, Lcom/crashlytics/android/Crashlytics;->x:Z │ - │ - .line 175 │ - sput-object v1, Lcom/crashlytics/android/Crashlytics;->y:Lcom/crashlytics/android/PinningInfoProvider; │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->s:Lcom/crashlytics/android/PinningInfoProvider; │ │ return-void │ .end method │ │ -.method private constructor ()V │ +.method public constructor ()V │ .locals 2 │ │ .prologue │ - const/4 v1, 0x0 │ - │ - .line 178 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ - │ - .line 132 │ - new-instance v0, Ljava/util/concurrent/atomic/AtomicReference; │ - │ - invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;->()V │ - │ - iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->f:Ljava/util/concurrent/atomic/AtomicReference; │ + const/4 v0, 0x0 │ │ - .line 154 │ - iput-object v1, p0, Lcom/crashlytics/android/Crashlytics;->i:Lcom/crashlytics/android/IdManager; │ + .line 112 │ + invoke-direct {p0}, Lcom/crashlytics/android/internal/u;->()V │ │ - .line 156 │ - iput-object v1, p0, Lcom/crashlytics/android/Crashlytics;->j:Ljava/lang/String; │ + .line 82 │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Lcom/crashlytics/android/internal/ao; │ │ - .line 157 │ - iput-object v1, p0, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ + .line 84 │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->f:Ljava/lang/String; │ │ - .line 158 │ - iput-object v1, p0, Lcom/crashlytics/android/Crashlytics;->l:Ljava/lang/String; │ + .line 85 │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->g:Ljava/lang/String; │ │ - .line 159 │ - iput-object v1, p0, Lcom/crashlytics/android/Crashlytics;->a:Ljava/lang/String; │ + .line 86 │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->h:Ljava/lang/String; │ │ - .line 179 │ + .line 113 │ new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; │ │ invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V │ │ - iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Ljava/util/concurrent/ConcurrentHashMap; │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->b:Ljava/util/concurrent/ConcurrentHashMap; │ │ - .line 180 │ + .line 114 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v0 │ │ - iput-wide v0, p0, Lcom/crashlytics/android/Crashlytics;->d:J │ + iput-wide v0, p0, Lcom/crashlytics/android/Crashlytics;->a:J │ │ - .line 181 │ + .line 115 │ return-void │ .end method │ │ .method static synthetic a(Lcom/crashlytics/android/Crashlytics;FI)I │ .locals 1 │ │ .prologue │ - .line 50 │ + .line 54 │ int-to-float v0, p2 │ │ mul-float/2addr v0, p1 │ │ float-to-int v0, v0 │ │ return v0 │ .end method │ │ -.method private a(Lcom/crashlytics/android/ak;)Lcom/crashlytics/android/h; │ +.method private a(Lcom/crashlytics/android/Y;)Lcom/crashlytics/android/b; │ .locals 11 │ │ .prologue │ - .line 1102 │ + .line 977 │ const/4 v0, 0x1 │ │ new-array v0, v0, [Ljava/lang/String; │ │ const/4 v1, 0x0 │ │ - iget-object v2, p0, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ + iget-object v2, p0, Lcom/crashlytics/android/Crashlytics;->i:Ljava/lang/String; │ │ aput-object v2, v0, v1 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->a([Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->a([Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v5 │ │ - .line 1103 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->q:Ljava/lang/String; │ + .line 978 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->l:Ljava/lang/String; │ │ - invoke-static {v0}, Lcom/crashlytics/android/B;->a(Ljava/lang/String;)Lcom/crashlytics/android/B; │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ai;->a(Ljava/lang/String;)Lcom/crashlytics/android/internal/ai; │ │ move-result-object v0 │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/B;->a()I │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/ai;->a()I │ │ move-result v7 │ │ - .line 1105 │ - new-instance v0, Lcom/crashlytics/android/h; │ + .line 980 │ + new-instance v0, Lcom/crashlytics/android/b; │ │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->u:Ljava/lang/String; │ + sget-object v1, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ │ - sget-object v2, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + sget-object v2, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ │ - sget-object v3, Lcom/crashlytics/android/Crashlytics;->t:Ljava/lang/String; │ + sget-object v3, Lcom/crashlytics/android/Crashlytics;->o:Ljava/lang/String; │ │ - sget-object v4, Lcom/crashlytics/android/Crashlytics;->s:Ljava/lang/String; │ + sget-object v4, Lcom/crashlytics/android/Crashlytics;->n:Ljava/lang/String; │ │ - sget-object v6, Lcom/crashlytics/android/Crashlytics;->r:Ljava/lang/String; │ + sget-object v6, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ │ - sget-object v8, Lcom/crashlytics/android/Crashlytics;->v:Ljava/lang/String; │ + sget-object v8, Lcom/crashlytics/android/Crashlytics;->q:Ljava/lang/String; │ │ const-string v9, "0" │ │ move-object v10, p1 │ │ - invoke-direct/range {v0 .. v10}, Lcom/crashlytics/android/h;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/ak;)V │ + invoke-direct/range {v0 .. v10}, Lcom/crashlytics/android/b;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/Y;)V │ │ return-object v0 │ .end method │ │ -.method private a(Lcom/crashlytics/android/D;Ljava/lang/Object;)Ljava/lang/Object; │ +.method static synthetic a(Lcom/crashlytics/android/Crashlytics;)Lcom/crashlytics/android/v; │ .locals 1 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Lcom/crashlytics/android/D", │ - ";TT;)TT;" │ - } │ - .end annotation │ │ .prologue │ - .line 767 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->f:Ljava/util/concurrent/atomic/AtomicReference; │ + .line 54 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object; │ + return-object v0 │ +.end method │ + │ +.method private static a(ILjava/lang/String;Ljava/lang/String;)V │ + .locals 5 │ + │ + .prologue │ + .line 228 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ move-result-object v0 │ │ - check-cast v0, Lcom/crashlytics/android/au; │ + .line 229 │ + if-eqz v0, :cond_0 │ │ - .line 768 │ - if-nez v0, :cond_0 │ + iget-object v1, v0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - :goto_0 │ - return-object p2 │ + if-nez v1, :cond_1 │ │ + .line 230 │ :cond_0 │ - invoke-interface {p1, v0}, Lcom/crashlytics/android/D;->a(Lcom/crashlytics/android/au;)Ljava/lang/Object; │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging messages." │ + │ + const/4 v2, 0x0 │ + │ + invoke-interface {v0, p1, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 236 │ + :goto_0 │ + return-void │ + │ + .line 234 │ + :cond_1 │ + invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ + │ + move-result-wide v1 │ + │ + iget-wide v3, v0, Lcom/crashlytics/android/Crashlytics;->a:J │ + │ + sub-long/2addr v1, v3 │ + │ + .line 235 │ + iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-static {p0}, Lcom/crashlytics/android/internal/ab;->b(I)Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, "/" │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ │ - move-result-object p2 │ + invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, " " │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v0, v1, v2, v3}, Lcom/crashlytics/android/v;->a(JLjava/lang/String;)V │ │ goto :goto_0 │ .end method │ │ -.method private static a(Ljava/lang/String;)Ljava/lang/String; │ +.method static a(Ljava/lang/String;)V │ .locals 2 │ │ .prologue │ - const/16 v1, 0x400 │ + .line 195 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - .line 816 │ - if-eqz p0, :cond_0 │ + move-result-object v0 │ │ - .line 817 │ - invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String; │ + const-class v1, Lcom/crashlytics/android/internal/D; │ │ - move-result-object p0 │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/v;->a(Ljava/lang/Class;)Lcom/crashlytics/android/internal/u; │ │ - .line 818 │ - invoke-virtual {p0}, Ljava/lang/String;->length()I │ + move-result-object v0 │ │ - move-result v0 │ + check-cast v0, Lcom/crashlytics/android/internal/D; │ │ - if-le v0, v1, :cond_0 │ + .line 196 │ + if-eqz v0, :cond_0 │ │ - .line 819 │ - const/4 v0, 0x0 │ + .line 197 │ + new-instance v1, Lcom/crashlytics/android/internal/ag; │ │ - invoke-virtual {p0, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/internal/ag;->(Ljava/lang/String;)V │ │ - move-result-object p0 │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/D;->a(Lcom/crashlytics/android/internal/ag;)V │ │ - .line 822 │ + .line 200 │ :cond_0 │ - return-object p0 │ + return-void │ .end method │ │ -.method static synthetic a(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;F)V │ - .locals 12 │ +.method private declared-synchronized a(Ljava/lang/String;Landroid/content/Context;F)V │ + .locals 6 │ │ .prologue │ - .line 50 │ - const-string v0, "https://settings.crashlytics.com/spi/v1/platforms/android/apps/%s/settings" │ + const/4 v1, 0x0 │ │ - const/4 v1, 0x1 │ + .line 765 │ + monitor-enter p0 │ │ - new-array v1, v1, [Ljava/lang/Object; │ + :try_start_0 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - const/4 v2, 0x0 │ + if-eqz v0, :cond_1 │ │ - sget-object v3, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + .line 766 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - aput-object v3, v1, v2 │ + move-result-object v0 │ │ - invoke-static {v0, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v0 │ │ - new-instance v8, Lcom/crashlytics/android/ae; │ + const-string v1, "Crashlytics" │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->l()Ljava/lang/String; │ + const-string v2, "Crashlytics already started, ignoring re-initialization attempt." │ │ - move-result-object v1 │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ - invoke-direct {v8, v1, v0}, Lcom/crashlytics/android/ae;->(Ljava/lang/String;Ljava/lang/String;)V │ + .line 867 │ + :cond_0 │ + :goto_0 │ + monitor-exit p0 │ │ - new-instance v9, Lcom/crashlytics/android/ac; │ + return-void │ │ - invoke-direct {v9}, Lcom/crashlytics/android/ac;->()V │ + .line 770 │ + :cond_1 │ + :try_start_1 │ + sput-object p1, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ │ - new-instance v10, Lcom/crashlytics/android/av; │ + .line 771 │ + new-instance v0, Landroid/content/ContextWrapper; │ │ - invoke-direct {v10}, Lcom/crashlytics/android/av;->()V │ + invoke-virtual {p2}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ │ - new-instance v11, Lcom/crashlytics/android/m; │ + move-result-object v2 │ │ - invoke-direct {v11}, Lcom/crashlytics/android/m;->()V │ + invoke-direct {v0, v2}, Landroid/content/ContextWrapper;->(Landroid/content/Context;)V │ │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->n:Lcom/crashlytics/android/SettingsController; │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - if-nez v0, :cond_0 │ + .line 772 │ + new-instance v0, Lcom/crashlytics/android/internal/av; │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->u:Ljava/lang/String; │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + move-result-object v2 │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v2 │ │ - const/4 v0, 0x1 │ + invoke-direct {v0, v2}, Lcom/crashlytics/android/internal/av;->(Lcom/crashlytics/android/internal/q;)V │ │ - new-array v0, v0, [Ljava/lang/String; │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ │ - const/4 v1, 0x0 │ + .line 774 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - iget-object v3, p0, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ + move-result-object v0 │ │ - aput-object v3, v0, v1 │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->a([Ljava/lang/String;)Ljava/lang/String; │ + move-result-object v0 │ │ - move-result-object v3 │ + const-string v2, "Crashlytics" │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->q:Ljava/lang/String; │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - invoke-static {v0}, Lcom/crashlytics/android/B;->a(Ljava/lang/String;)Lcom/crashlytics/android/B; │ + const-string v4, "Initializing Crashlytics " │ │ - move-result-object v0 │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/B;->a()I │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getCrashlyticsVersion()Ljava/lang/String; │ │ - move-result v6 │ + move-result-object v4 │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->v()Ljava/lang/String; │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v7 │ + move-result-object v3 │ │ - new-instance v0, Lcom/crashlytics/android/aw; │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->u:Ljava/lang/String; │ + move-result-object v3 │ │ - sget-object v4, Lcom/crashlytics/android/Crashlytics;->t:Ljava/lang/String; │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->b(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ - sget-object v5, Lcom/crashlytics/android/Crashlytics;->s:Ljava/lang/String; │ + .line 777 │ + :try_start_2 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - invoke-direct/range {v0 .. v7}, Lcom/crashlytics/android/aw;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V │ + invoke-virtual {v0}, Landroid/content/ContextWrapper;->getPackageName()Ljava/lang/String; │ │ - new-instance v1, Lcom/crashlytics/android/SettingsController; │ + move-result-object v0 │ │ - move-object v2, v0 │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ │ - move-object v3, v9 │ + .line 778 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - move-object v4, v10 │ + invoke-virtual {v0}, Landroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager; │ │ - move-object v5, v11 │ + move-result-object v0 │ │ - move-object v6, v8 │ + .line 780 │ + sget-object v2, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ │ - invoke-direct/range {v1 .. v6}, Lcom/crashlytics/android/SettingsController;->(Lcom/crashlytics/android/aw;Lcom/crashlytics/android/ac;Lcom/crashlytics/android/av;Lcom/crashlytics/android/m;Lcom/crashlytics/android/ay;)V │ + invoke-virtual {v0, v2}, Landroid/content/pm/PackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; │ │ - iput-object v1, p0, Lcom/crashlytics/android/Crashlytics;->n:Lcom/crashlytics/android/SettingsController; │ + move-result-object v2 │ │ - :cond_0 │ - const/4 v1, 0x1 │ + sput-object v2, Lcom/crashlytics/android/Crashlytics;->l:Ljava/lang/String; │ │ - const/4 v4, 0x0 │ + .line 781 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - const/4 v3, 0x0 │ + move-result-object v2 │ │ - const/4 v2, 0x0 │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->n:Lcom/crashlytics/android/SettingsController; │ + move-result-object v2 │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/SettingsController;->a()Lcom/crashlytics/android/au; │ + const-string v3, "Crashlytics" │ │ - move-result-object v2 │ + new-instance v4, Ljava/lang/StringBuilder; │ │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->f:Ljava/util/concurrent/atomic/AtomicReference; │ + const-string v5, "Installer package name is: " │ │ - invoke-virtual {v0, v2}, Ljava/util/concurrent/atomic/AtomicReference;->set(Ljava/lang/Object;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - move-object v5, v2 │ + sget-object v5, Lcom/crashlytics/android/Crashlytics;->l:Ljava/lang/String; │ │ - :goto_0 │ - if-eqz v5, :cond_8 │ + invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - :try_start_1 │ - invoke-virtual {v5}, Lcom/crashlytics/android/au;->b()Lcom/crashlytics/android/i; │ + move-result-object v4 │ │ - move-result-object v2 │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - const/4 v0, 0x1 │ + move-result-object v4 │ │ - invoke-virtual {v2}, Lcom/crashlytics/android/i;->d()Z │ + invoke-interface {v2, v3, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - move-result v6 │ + .line 783 │ + sget-object v2, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ │ - if-eqz v6, :cond_5 │ + const/4 v3, 0x0 │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->w()Lcom/crashlytics/android/ak; │ + invoke-virtual {v0, v2, v3}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; │ │ move-result-object v0 │ │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/ak;)Lcom/crashlytics/android/h; │ + .line 784 │ + iget v2, v0, Landroid/content/pm/PackageInfo;->versionCode:I │ │ - move-result-object v0 │ + invoke-static {v2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; │ │ - new-instance v6, Lcom/crashlytics/android/Z; │ + move-result-object v2 │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->l()Ljava/lang/String; │ + sput-object v2, Lcom/crashlytics/android/Crashlytics;->n:Ljava/lang/String; │ │ - move-result-object v7 │ + .line 785 │ + iget-object v2, v0, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String; │ │ - invoke-virtual {v2}, Lcom/crashlytics/android/i;->a()Ljava/lang/String; │ + if-nez v2, :cond_2 │ │ - move-result-object v2 │ + const-string v0, "0.0" │ │ - invoke-direct {v6, v7, v2}, Lcom/crashlytics/android/Z;->(Ljava/lang/String;Ljava/lang/String;)V │ + :goto_1 │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->o:Ljava/lang/String; │ │ - invoke-virtual {v6, v0}, Lcom/crashlytics/android/Z;->a(Lcom/crashlytics/android/h;)Z │ + .line 786 │ + invoke-virtual {p2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; │ │ - move-result v0 │ + move-result-object v0 │ │ - if-eqz v0, :cond_4 │ + invoke-virtual {p2}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ │ - invoke-direct {p0}, Lcom/crashlytics/android/Crashlytics;->u()Z │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ + move-result-object v2 │ │ - move-result v0 │ + invoke-virtual {v0, v2}, Landroid/content/pm/PackageManager;->getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; │ │ - :cond_1 │ - :goto_1 │ - move v2, v0 │ + move-result-object v0 │ │ - :goto_2 │ - :try_start_2 │ - invoke-virtual {v5}, Lcom/crashlytics/android/au;->c()Lcom/crashlytics/android/ax; │ + invoke-interface {v0}, Ljava/lang/CharSequence;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/ax;->a()Z │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_2 │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ │ - move-result v0 │ + .line 788 │ + invoke-virtual {p2}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ │ - :goto_3 │ - if-eqz v2, :cond_7 │ + move-result-object v0 │ │ - if-eqz v0, :cond_7 │ + iget v0, v0, Landroid/content/pm/ApplicationInfo;->targetSdkVersion:I │ │ - const/4 v0, 0x0 │ + invoke-static {v0}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; │ │ - :try_start_3 │ - iget-object v1, p0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + move-result-object v0 │ │ - invoke-virtual {v1}, Lcom/crashlytics/android/E;->b()V │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->q:Ljava/lang/String; │ │ - invoke-virtual {p0}, Lcom/crashlytics/android/Crashlytics;->s()Lcom/crashlytics/android/ab; │ + .line 791 │ + invoke-static {p2}, Lcom/crashlytics/android/internal/ab;->i(Landroid/content/Context;)Ljava/lang/String; │ │ - move-result-object v1 │ + move-result-object v0 │ │ - if-eqz v1, :cond_2 │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->i:Ljava/lang/String; │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_1 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ │ - new-instance v2, Lcom/crashlytics/android/ar; │ + .line 797 │ + :goto_2 │ + :try_start_3 │ + new-instance v0, Lcom/crashlytics/android/internal/ao; │ │ - invoke-direct {v2, v1}, Lcom/crashlytics/android/ar;->(Lcom/crashlytics/android/ab;)V │ + sget-object v2, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - invoke-virtual {v2, p1, p2}, Lcom/crashlytics/android/ar;->a(Landroid/content/Context;F)V │ - :try_end_3 │ - .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_3 │ + invoke-direct {v0, v2}, Lcom/crashlytics/android/internal/ao;->(Landroid/content/Context;)V │ │ - :cond_2 │ - :goto_4 │ - if-eqz v0, :cond_3 │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Lcom/crashlytics/android/internal/ao; │ │ - const-string v0, "Crash reporting disabled." │ + .line 800 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Lcom/crashlytics/android/internal/ao; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/ao;->h()Ljava/lang/String; │ │ - :cond_3 │ - return-void │ + .line 803 │ + new-instance v0, Lcom/crashlytics/android/c; │ │ - :catch_0 │ - move-exception v0 │ + iget-object v2, p0, Lcom/crashlytics/android/Crashlytics;->i:Ljava/lang/String; │ │ - const-string v5, "Error dealing with settings" │ + sget-object v3, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - invoke-static {v5, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + const-string v4, "com.crashlytics.RequireBuildId" │ │ - move-object v5, v2 │ + const/4 v5, 0x1 │ │ - goto :goto_0 │ + invoke-static {v3, v4, v5}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ │ - :cond_4 │ - :try_start_4 │ - const-string v0, "Failed to create app with Crashlytics service." │ + move-result v3 │ │ - const/4 v2, 0x0 │ + invoke-direct {v0, v2, v3}, Lcom/crashlytics/android/c;->(Ljava/lang/String;Z)V │ │ - invoke-static {v0, v2}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + sget-object v2, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ │ - const/4 v0, 0x0 │ + invoke-virtual {v0, p1, v2}, Lcom/crashlytics/android/c;->a(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_3 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ │ - goto :goto_1 │ + .line 808 │ + :try_start_4 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - :cond_5 │ - invoke-virtual {v2}, Lcom/crashlytics/android/i;->e()Z │ + move-result-object v0 │ │ - move-result v6 │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - if-eqz v6, :cond_6 │ + move-result-object v0 │ │ - invoke-direct {p0}, Lcom/crashlytics/android/Crashlytics;->u()Z │ + const-string v2, "Crashlytics" │ │ - move-result v0 │ + const-string v3, "Installing exception handler..." │ │ - goto :goto_1 │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - :cond_6 │ - invoke-virtual {v2}, Lcom/crashlytics/android/i;->c()Z │ + .line 809 │ + new-instance v0, Lcom/crashlytics/android/v; │ │ - move-result v6 │ + invoke-static {}, Ljava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler; │ │ - if-eqz v6, :cond_1 │ + move-result-object v2 │ │ - const-string v6, "Server says an update is required - forcing a full App update." │ + iget-object v3, p0, Lcom/crashlytics/android/Crashlytics;->c:Lcom/crashlytics/android/CrashlyticsListener; │ │ - invoke-static {v6}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + iget-object v4, p0, Lcom/crashlytics/android/Crashlytics;->i:Ljava/lang/String; │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->w()Lcom/crashlytics/android/ak; │ + invoke-direct {v0, v2, v3, v4}, Lcom/crashlytics/android/v;->(Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/lang/String;)V │ │ - move-result-object v6 │ + iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - invoke-direct {p0, v6}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/ak;)Lcom/crashlytics/android/h; │ + .line 816 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - move-result-object v6 │ + invoke-virtual {v0}, Lcom/crashlytics/android/v;->f()Z │ │ - new-instance v7, Lcom/crashlytics/android/aA; │ + move-result v1 │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->l()Ljava/lang/String; │ + .line 819 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - move-result-object v8 │ + invoke-virtual {v0}, Lcom/crashlytics/android/v;->d()V │ │ - invoke-virtual {v2}, Lcom/crashlytics/android/i;->a()Ljava/lang/String; │ + .line 821 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - move-result-object v2 │ + invoke-virtual {v0}, Lcom/crashlytics/android/v;->c()V │ │ - invoke-direct {v7, v8, v2}, Lcom/crashlytics/android/aA;->(Ljava/lang/String;Ljava/lang/String;)V │ + .line 822 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - invoke-virtual {v7, v6}, Lcom/crashlytics/android/aA;->a(Lcom/crashlytics/android/h;)Z │ - :try_end_4 │ - .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_1 │ + invoke-virtual {v0}, Lcom/crashlytics/android/v;->h()V │ │ - goto :goto_1 │ + .line 823 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - :catch_1 │ - move-exception v0 │ + invoke-static {v0}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V │ │ - const-string v2, "Error performing auto configuration." │ + .line 824 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + move-result-object v0 │ │ - move v2, v4 │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - goto :goto_2 │ + move-result-object v0 │ │ - :catch_2 │ - move-exception v0 │ + const-string v2, "Crashlytics" │ │ - const-string v4, "Error getting collect reports setting." │ + const-string v3, "Successfully installed exception handler." │ │ - invoke-static {v4, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_4 │ + .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_2 │ + .catchall {:try_start_4 .. :try_end_4} :catchall_0 │ │ - move v0, v3 │ + .line 833 │ + :goto_3 │ + :try_start_5 │ + new-instance v0, Ljava/util/concurrent/CountDownLatch; │ │ - goto :goto_3 │ + const/4 v2, 0x1 │ │ - :catch_3 │ - move-exception v1 │ + invoke-direct {v0, v2}, Ljava/util/concurrent/CountDownLatch;->(I)V │ │ - const-string v2, "Error sending crash report" │ + .line 835 │ + new-instance v2, Ljava/lang/Thread; │ │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + new-instance v3, Lcom/crashlytics/android/t; │ │ - goto :goto_4 │ + invoke-direct {v3, p0, p2, p3, v0}, Lcom/crashlytics/android/t;->(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;FLjava/util/concurrent/CountDownLatch;)V │ │ - :cond_7 │ - move v0, v1 │ + const-string v4, "Crashlytics Initializer" │ │ - goto :goto_4 │ + invoke-direct {v2, v3, v4}, Ljava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V │ │ - :cond_8 │ - move v0, v3 │ + invoke-virtual {v2}, Ljava/lang/Thread;->start()V │ │ - move v2, v4 │ + .line 855 │ + if-eqz v1, :cond_0 │ │ - goto :goto_3 │ -.end method │ + .line 856 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ -.method private declared-synchronized a(Ljava/lang/String;Landroid/content/Context;F)V │ - .locals 9 │ + move-result-object v1 │ │ - .prologue │ - .line 832 │ - monitor-enter p0 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - :try_start_0 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + move-result-object v1 │ │ - if-eqz v0, :cond_1 │ + const-string v2, "Crashlytics" │ │ - .line 833 │ - const-string v0, "Crashlytics already started, ignoring re-initialization attempt." │ + const-string v3, "Crashlytics detected incomplete initialization on previous app launch. Will initialize synchronously." │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - :try_end_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_5 │ + .catchall {:try_start_5 .. :try_end_5} :catchall_0 │ │ - .line 957 │ - :cond_0 │ - :goto_0 │ - monitor-exit p0 │ + .line 860 │ + const-wide/16 v1, 0xfa0 │ │ - return-void │ + :try_start_6 │ + sget-object v3, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ │ - .line 837 │ - :cond_1 │ - :try_start_1 │ - sput-object p1, Lcom/crashlytics/android/Crashlytics;->u:Ljava/lang/String; │ + invoke-virtual {v0, v1, v2, v3}, Ljava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z │ │ - .line 838 │ - new-instance v0, Landroid/content/ContextWrapper; │ + move-result v0 │ │ - invoke-virtual {p2}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ + if-nez v0, :cond_0 │ │ - move-result-object v1 │ + .line 861 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-direct {v0, v1}, Landroid/content/ContextWrapper;->(Landroid/content/Context;)V │ + move-result-object v0 │ │ - sput-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 840 │ - const/4 v0, 0x4 │ + move-result-object v0 │ │ const-string v1, "Crashlytics" │ │ - new-instance v2, Ljava/lang/StringBuilder; │ + const-string v2, "Crashlytics initialization was not completed in the allotted time." │ │ - const-string v3, "Initializing Crashlytics " │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->c(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_6 │ + .catch Ljava/lang/InterruptedException; {:try_start_6 .. :try_end_6} :catch_0 │ + .catchall {:try_start_6 .. :try_end_6} :catchall_0 │ │ - invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + goto/16 :goto_0 │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getCrashlyticsVersion()Ljava/lang/String; │ + .line 863 │ + :catch_0 │ + move-exception v0 │ │ - move-result-object v3 │ + .line 864 │ + :try_start_7 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v1 │ │ - move-result-object v2 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + move-result-object v1 │ │ - move-result-object v2 │ + const-string v2, "Crashlytics" │ │ - invoke-static {v0, v1, v2}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ - :try_end_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + const-string v3, "Crashlytics was interrupted during initialization." │ │ - .line 843 │ - :try_start_2 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_7 │ + .catchall {:try_start_7 .. :try_end_7} :catchall_0 │ │ - invoke-virtual {v0}, Landroid/content/ContextWrapper;->getPackageName()Ljava/lang/String; │ + goto/16 :goto_0 │ │ - move-result-object v0 │ + .line 765 │ + :catchall_0 │ + move-exception v0 │ │ - sput-object v0, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + monitor-exit p0 │ │ - .line 844 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + throw v0 │ │ - invoke-virtual {v0}, Landroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager; │ + .line 785 │ + :cond_2 │ + :try_start_8 │ + iget-object v0, v0, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String; │ + :try_end_8 │ + .catch Ljava/lang/Exception; {:try_start_8 .. :try_end_8} :catch_1 │ + .catchall {:try_start_8 .. :try_end_8} :catchall_0 │ │ - move-result-object v0 │ + goto/16 :goto_1 │ │ - .line 846 │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + .line 793 │ + :catch_1 │ + move-exception v0 │ │ - invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; │ + .line 794 │ + :try_start_9 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - move-result-object v1 │ + move-result-object v2 │ │ - sput-object v1, Lcom/crashlytics/android/Crashlytics;->q:Ljava/lang/String; │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 847 │ - new-instance v1, Ljava/lang/StringBuilder; │ + move-result-object v2 │ │ - const-string v2, "Installer package name is: " │ + const-string v3, "Crashlytics" │ │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + const-string v4, "Error setting up app properties" │ │ - sget-object v2, Lcom/crashlytics/android/Crashlytics;->q:Ljava/lang/String; │ + invoke-interface {v2, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + goto/16 :goto_2 │ │ - move-result-object v1 │ + .line 825 │ + :catch_2 │ + move-exception v0 │ │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + .line 826 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - move-result-object v1 │ + move-result-object v2 │ │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 849 │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + move-result-object v2 │ │ - const/4 v2, 0x0 │ + const-string v3, "Crashlytics" │ │ - invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; │ + const-string v4, "There was a problem installing the exception handler." │ │ - move-result-object v0 │ + invoke-interface {v2, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_9 │ + .catchall {:try_start_9 .. :try_end_9} :catchall_0 │ │ - .line 850 │ - iget v1, v0, Landroid/content/pm/PackageInfo;->versionCode:I │ + goto :goto_3 │ +.end method │ │ - invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; │ +.method static a(Z)V │ + .locals 3 │ │ - move-result-object v1 │ + .prologue │ + .line 597 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->a()Landroid/content/SharedPreferences; │ │ - sput-object v1, Lcom/crashlytics/android/Crashlytics;->s:Ljava/lang/String; │ + move-result-object v0 │ │ - .line 851 │ - iget-object v1, v0, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String; │ + invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ │ - if-nez v1, :cond_5 │ + move-result-object v0 │ │ - const-string v0, "0.0" │ + const-string v1, "always_send_reports_opt_in" │ │ - :goto_1 │ - sput-object v0, Lcom/crashlytics/android/Crashlytics;->t:Ljava/lang/String; │ + const/4 v2, 0x1 │ │ - .line 852 │ - invoke-virtual {p2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; │ + invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ - invoke-virtual {p2}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ - │ - move-result-object v1 │ + invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z │ │ - invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; │ + .line 598 │ + return-void │ +.end method │ │ - move-result-object v0 │ +.method private a(Landroid/content/Context;F)Z │ + .locals 10 │ │ - invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String; │ + .prologue │ + const/4 v8, 0x0 │ │ - move-result-object v0 │ + const/4 v7, 0x1 │ │ - sput-object v0, Lcom/crashlytics/android/Crashlytics;->r:Ljava/lang/String; │ + const/4 v6, 0x0 │ │ - .line 854 │ - invoke-virtual {p2}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ + .line 876 │ + .line 881 │ + invoke-virtual {p0}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ - iget v0, v0, Landroid/content/pm/ApplicationInfo;->targetSdkVersion:I │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->g(Landroid/content/Context;)Ljava/lang/String; │ │ - invoke-static {v0}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; │ + move-result-object v9 │ + │ + .line 884 │ + :try_start_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ │ move-result-object v0 │ │ - sput-object v0, Lcom/crashlytics/android/Crashlytics;->v:Ljava/lang/String; │ + sget-object v2, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ │ - .line 857 │ - const/4 v0, 0x0 │ + sget-object v3, Lcom/crashlytics/android/Crashlytics;->n:Ljava/lang/String; │ │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + sget-object v4, Lcom/crashlytics/android/Crashlytics;->o:Ljava/lang/String; │ │ - const-string v2, "com.crashlytics.android.build_id" │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->i()Ljava/lang/String; │ │ - const-string v3, "string" │ + move-result-object v5 │ │ - invoke-static {v1, v2, v3}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ + move-object v1, p1 │ │ - move-result v1 │ + invoke-virtual/range {v0 .. v5}, Lcom/crashlytics/android/internal/aS;->a(Landroid/content/Context;Lcom/crashlytics/android/internal/av;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/aS; │ │ - if-eqz v1, :cond_2 │ + move-result-object v0 │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/aS;->c()Z │ │ - invoke-virtual {v0}, Landroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; │ + .line 888 │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ │ move-result-object v0 │ │ - invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/aS;->b()Lcom/crashlytics/android/internal/aX; │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ - new-instance v1, Ljava/lang/StringBuilder; │ + move-object v2, v0 │ + │ + .line 893 │ + :goto_0 │ + if-eqz v2, :cond_7 │ + │ + .line 895 │ + :try_start_1 │ + iget-object v0, v2, Lcom/crashlytics/android/internal/aX;->a:Lcom/crashlytics/android/internal/aM; │ + │ + const-string v1, "new" │ + │ + iget-object v3, v0, Lcom/crashlytics/android/internal/aM;->a:Ljava/lang/String; │ │ - const-string v2, "Build ID is: " │ + invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ + │ + move-result v1 │ │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + if-eqz v1, :cond_3 │ │ - invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {p0}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ │ move-result-object v1 │ │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-static {v1, v9}, Lcom/crashlytics/android/Y;->a(Landroid/content/Context;Ljava/lang/String;)Lcom/crashlytics/android/Y; │ │ move-result-object v1 │ │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + invoke-direct {p0, v1}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Y;)Lcom/crashlytics/android/b; │ │ - :cond_2 │ - iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ + move-result-object v1 │ │ - .line 859 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + new-instance v3, Lcom/crashlytics/android/T; │ │ - new-instance v1, Ljava/io/File; │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->i()Ljava/lang/String; │ │ - invoke-virtual {v0}, Landroid/content/Context;->getFilesDir()Ljava/io/File; │ + move-result-object v4 │ │ - move-result-object v0 │ + iget-object v0, v0, Lcom/crashlytics/android/internal/aM;->b:Ljava/lang/String; │ │ - const-string v2, "com.crashlytics.sdk.android" │ + sget-object v5, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ │ - invoke-direct {v1, v0, v2}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + invoke-direct {v3, v4, v0, v5}, Lcom/crashlytics/android/T;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ │ - sput-object v1, Lcom/crashlytics/android/Crashlytics;->w:Ljava/io/File; │ + invoke-virtual {v3, v1}, Lcom/crashlytics/android/T;->a(Lcom/crashlytics/android/b;)Z │ │ - invoke-virtual {v1}, Ljava/io/File;->exists()Z │ + move-result v0 │ + │ + if-eqz v0, :cond_2 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/aS;->d()Z │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ │ move-result v0 │ │ - if-nez v0, :cond_3 │ + :goto_1 │ + move v1, v0 │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->w:Ljava/io/File; │ + .line 900 │ + :goto_2 │ + :try_start_2 │ + iget-object v0, v2, Lcom/crashlytics/android/internal/aX;->d:Lcom/crashlytics/android/internal/aP; │ │ - invoke-virtual {v0}, Ljava/io/File;->mkdirs()Z │ + iget-boolean v0, v0, Lcom/crashlytics/android/internal/aP;->b:Z │ :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_1 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_2 │ │ - .line 864 │ - :cond_3 │ - :goto_2 │ - :try_start_3 │ - new-instance v0, Lcom/crashlytics/android/IdManager; │ + .line 907 │ + :goto_3 │ + if-eqz v1, :cond_6 │ │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + if-eqz v0, :cond_6 │ │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/IdManager;->(Landroid/content/Context;)V │ + .line 909 │ + :try_start_3 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->i:Lcom/crashlytics/android/IdManager; │ + invoke-virtual {v0}, Lcom/crashlytics/android/v;->b()Z │ │ - .line 867 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->i:Lcom/crashlytics/android/IdManager; │ + move-result v0 │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/IdManager;->g()Ljava/lang/String; │ + and-int/lit8 v7, v0, 0x1 │ │ - .line 870 │ - new-instance v0, Lcom/crashlytics/android/j; │ + .line 911 │ + invoke-virtual {p0}, Lcom/crashlytics/android/Crashlytics;->q()Lcom/crashlytics/android/V; │ │ - iget-object v1, p0, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ + move-result-object v0 │ │ - sget-object v2, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + .line 912 │ + if-eqz v0, :cond_0 │ │ - const-string v3, "com.crashlytics.RequireBuildId" │ + .line 913 │ + new-instance v1, Lcom/crashlytics/android/aa; │ │ - const/4 v4, 0x1 │ + invoke-direct {v1, v0}, Lcom/crashlytics/android/aa;->(Lcom/crashlytics/android/V;)V │ │ - invoke-static {v2, v3, v4}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ + invoke-virtual {v1, p2}, Lcom/crashlytics/android/aa;->a(F)V │ + :try_end_3 │ + .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_3 │ │ - move-result v2 │ + .line 920 │ + :cond_0 │ + :goto_4 │ + if-eqz v6, :cond_1 │ │ - invoke-direct {v0, v1, v2}, Lcom/crashlytics/android/j;->(Ljava/lang/String;Z)V │ + .line 921 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + move-result-object v0 │ │ - invoke-virtual {v0, p1, v1}, Lcom/crashlytics/android/j;->a(Ljava/lang/String;Ljava/lang/String;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 873 │ - :try_start_4 │ - const-string v0, "Installing exception handler..." │ + move-result-object v0 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + const-string v1, "Crashlytics" │ │ - .line 874 │ - new-instance v0, Lcom/crashlytics/android/E; │ + const-string v2, "Crash reporting disabled." │ │ - invoke-static {}, Ljava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler; │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - move-result-object v1 │ + .line 923 │ + :cond_1 │ + return v7 │ │ - iget-object v2, p0, Lcom/crashlytics/android/Crashlytics;->g:Lcom/crashlytics/android/CrashlyticsListener; │ + .line 889 │ + :catch_0 │ + move-exception v0 │ │ - iget-object v3, p0, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ + .line 890 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-direct {v0, v1, v2, v3}, Lcom/crashlytics/android/E;->(Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/lang/String;)V │ + move-result-object v1 │ │ - iput-object v0, p0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 876 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + move-result-object v1 │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/E;->d()V │ + const-string v2, "Crashlytics" │ │ - .line 877 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + const-string v3, "Error dealing with settings" │ │ - invoke-static {v0}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - .line 878 │ - const-string v0, "Successfully installed exception handler." │ + move-object v2, v8 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - :try_end_4 │ - .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_2 │ - .catchall {:try_start_4 .. :try_end_4} :catchall_0 │ + goto :goto_0 │ │ - .line 885 │ - :goto_3 │ - :try_start_5 │ - new-instance v2, Ljava/io/File; │ + .line 895 │ + :cond_2 │ + :try_start_4 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->w:Ljava/io/File; │ + move-result-object v0 │ │ - const-string v1, "initialization_marker" │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-direct {v2, v0, v1}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + move-result-object v0 │ │ - .line 889 │ - invoke-virtual {v2}, Ljava/io/File;->exists()Z │ + const-string v1, "Crashlytics" │ │ - move-result v7 │ + const-string v3, "Failed to create app with Crashlytics service." │ │ - .line 891 │ - if-eqz v7, :cond_4 │ + const/4 v4, 0x0 │ │ - .line 892 │ - const-string v0, "Crashlytics detected incomplete initialization on previous app launch. Will initialize synchronously." │ + invoke-interface {v0, v1, v3, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + move v0, v6 │ │ - .line 897 │ - :cond_4 │ - new-instance v3, Ljava/util/concurrent/CountDownLatch; │ + goto :goto_1 │ │ - const/4 v0, 0x1 │ + :cond_3 │ + const-string v1, "configured" │ │ - invoke-direct {v3, v0}, Ljava/util/concurrent/CountDownLatch;->(I)V │ + iget-object v3, v0, Lcom/crashlytics/android/internal/aM;->a:Ljava/lang/String; │ │ - .line 903 │ - new-instance v6, Ljava/util/concurrent/CountDownLatch; │ + invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ - const/4 v0, 0x1 │ + move-result v1 │ │ - invoke-direct {v6, v0}, Ljava/util/concurrent/CountDownLatch;->(I)V │ + if-eqz v1, :cond_4 │ │ - .line 905 │ - new-instance v8, Ljava/lang/Thread; │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ │ - new-instance v0, Lcom/crashlytics/android/A; │ + move-result-object v0 │ │ - move-object v1, p0 │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/aS;->d()Z │ │ - move-object v4, p2 │ + move-result v0 │ │ - move v5, p3 │ + goto :goto_1 │ │ - invoke-direct/range {v0 .. v6}, Lcom/crashlytics/android/A;->(Lcom/crashlytics/android/Crashlytics;Ljava/io/File;Ljava/util/concurrent/CountDownLatch;Landroid/content/Context;FLjava/util/concurrent/CountDownLatch;)V │ + :cond_4 │ + iget-boolean v1, v0, Lcom/crashlytics/android/internal/aM;->d:Z │ │ - const-string v1, "Crashlytics Initializer" │ + if-eqz v1, :cond_5 │ │ - invoke-direct {v8, v0, v1}, Ljava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-virtual {v8}, Ljava/lang/Thread;->start()V │ - :try_end_5 │ - .catchall {:try_start_5 .. :try_end_5} :catchall_0 │ + move-result-object v1 │ │ - .line 938 │ - const-wide/16 v0, 0x1f4 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - :try_start_6 │ - sget-object v2, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ + move-result-object v1 │ │ - invoke-virtual {v3, v0, v1, v2}, Ljava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z │ - :try_end_6 │ - .catch Ljava/lang/InterruptedException; {:try_start_6 .. :try_end_6} :catch_3 │ - .catchall {:try_start_6 .. :try_end_6} :catchall_0 │ + const-string v3, "Crashlytics" │ │ - .line 947 │ - :goto_4 │ - if-eqz v7, :cond_0 │ + const-string v4, "Server says an update is required - forcing a full App update." │ │ - .line 951 │ - const-wide/16 v0, 0xdac │ + invoke-interface {v1, v3, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - :try_start_7 │ - sget-object v2, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ + invoke-virtual {p0}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ │ - invoke-virtual {v6, v0, v1, v2}, Ljava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z │ - :try_end_7 │ - .catch Ljava/lang/InterruptedException; {:try_start_7 .. :try_end_7} :catch_0 │ - .catchall {:try_start_7 .. :try_end_7} :catchall_0 │ + move-result-object v1 │ │ - goto/16 :goto_0 │ + invoke-static {v1, v9}, Lcom/crashlytics/android/Y;->a(Landroid/content/Context;Ljava/lang/String;)Lcom/crashlytics/android/Y; │ │ - .line 953 │ - :catch_0 │ - move-exception v0 │ + move-result-object v1 │ │ - const/4 v0, 0x5 │ + invoke-direct {p0, v1}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Y;)Lcom/crashlytics/android/b; │ │ - :try_start_8 │ - const-string v1, "Crashlytics" │ + move-result-object v1 │ │ - const-string v2, "Crashlytics initialization was not completed in the allotted time." │ + new-instance v3, Lcom/crashlytics/android/ad; │ │ - invoke-static {v0, v1, v2}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ - :try_end_8 │ - .catchall {:try_start_8 .. :try_end_8} :catchall_0 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->i()Ljava/lang/String; │ │ - goto/16 :goto_0 │ + move-result-object v4 │ │ - .line 832 │ - :catchall_0 │ - move-exception v0 │ + iget-object v0, v0, Lcom/crashlytics/android/internal/aM;->b:Ljava/lang/String; │ │ - monitor-exit p0 │ + sget-object v5, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ │ - throw v0 │ + invoke-direct {v3, v4, v0, v5}, Lcom/crashlytics/android/ad;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ + │ + invoke-virtual {v3, v1}, Lcom/crashlytics/android/ad;->a(Lcom/crashlytics/android/b;)Z │ + :try_end_4 │ + .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_1 │ │ - .line 851 │ :cond_5 │ - :try_start_9 │ - iget-object v0, v0, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String; │ - :try_end_9 │ - .catch Ljava/lang/Exception; {:try_start_9 .. :try_end_9} :catch_1 │ - .catchall {:try_start_9 .. :try_end_9} :catchall_0 │ + move v0, v7 │ │ goto/16 :goto_1 │ │ - .line 860 │ + .line 896 │ :catch_1 │ move-exception v0 │ │ - .line 861 │ - :try_start_a │ - const-string v1, "Error setting up app properties" │ + .line 897 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v3, "Crashlytics" │ + │ + const-string v4, "Error performing auto configuration." │ + │ + invoke-interface {v1, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + move v1, v6 │ │ goto/16 :goto_2 │ │ - .line 879 │ + .line 901 │ :catch_2 │ move-exception v0 │ │ - .line 880 │ - const-string v1, "There was a problem installing the exception handler." │ + .line 902 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + move-result-object v2 │ │ - goto :goto_3 │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 940 │ - :catch_3 │ - move-exception v0 │ + move-result-object v2 │ │ - const/4 v0, 0x5 │ + const-string v3, "Crashlytics" │ │ - const-string v1, "Crashlytics" │ + const-string v4, "Error getting collect reports setting." │ │ - const-string v2, "Crashlytics initialization marker file was not created in the allotted time." │ + invoke-interface {v2, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - invoke-static {v0, v1, v2}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ - :try_end_a │ - .catchall {:try_start_a .. :try_end_a} :catchall_0 │ + move v0, v6 │ │ - goto :goto_4 │ -.end method │ + goto/16 :goto_3 │ │ -.method static a(Z)V │ - .locals 3 │ + .line 916 │ + :catch_3 │ + move-exception v0 │ │ - .prologue │ - .line 603 │ - invoke-static {}, Lcom/crashlytics/android/aB;->a()Landroid/content/SharedPreferences; │ + .line 917 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - move-result-object v0 │ + move-result-object v1 │ │ - invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - move-result-object v0 │ + move-result-object v1 │ │ - const-string v1, "always_send_reports_opt_in" │ + const-string v2, "Crashlytics" │ │ - const/4 v2, 0x1 │ + const-string v3, "Error sending crash report" │ │ - invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - move-result-object v0 │ + goto/16 :goto_4 │ │ - invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z │ + :cond_6 │ + move v6, v7 │ │ - .line 604 │ - return-void │ + goto/16 :goto_4 │ + │ + :cond_7 │ + move v0, v6 │ + │ + move v1, v6 │ + │ + goto/16 :goto_3 │ .end method │ │ -.method static synthetic a(Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/am;)Z │ +.method static synthetic a(Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/internal/aQ;)Z │ .locals 6 │ │ .prologue │ - .line 50 │ - new-instance v4, Lcom/crashlytics/android/af; │ + .line 54 │ + new-instance v4, Lcom/crashlytics/android/X; │ │ - invoke-direct {v4, p1, p2}, Lcom/crashlytics/android/af;->(Landroid/content/Context;Lcom/crashlytics/android/am;)V │ + invoke-direct {v4, p1, p2}, Lcom/crashlytics/android/X;->(Landroid/content/Context;Lcom/crashlytics/android/internal/aQ;)V │ │ - new-instance v3, Lcom/crashlytics/android/C; │ + new-instance v3, Lcom/crashlytics/android/u; │ │ const/4 v0, 0x0 │ │ - invoke-direct {v3, p0, v0}, Lcom/crashlytics/android/C;->(Lcom/crashlytics/android/Crashlytics;B)V │ + invoke-direct {v3, p0, v0}, Lcom/crashlytics/android/u;->(Lcom/crashlytics/android/Crashlytics;B)V │ │ - new-instance v0, Lcom/crashlytics/android/w; │ + new-instance v0, Lcom/crashlytics/android/p; │ │ move-object v1, p0 │ │ move-object v2, p1 │ │ move-object v5, p2 │ │ - invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/w;->(Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/C;Lcom/crashlytics/android/af;Lcom/crashlytics/android/am;)V │ + invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/p;->(Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/u;Lcom/crashlytics/android/X;Lcom/crashlytics/android/internal/aQ;)V │ │ invoke-virtual {p1, v0}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V │ │ - const-string v0, "Waiting for user opt-in." │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Waiting for user opt-in." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - invoke-virtual {v3}, Lcom/crashlytics/android/C;->b()V │ + invoke-virtual {v3}, Lcom/crashlytics/android/u;->b()V │ │ - invoke-virtual {v3}, Lcom/crashlytics/android/C;->a()Z │ + invoke-virtual {v3}, Lcom/crashlytics/android/u;->a()Z │ │ move-result v0 │ │ return v0 │ .end method │ │ -.method static b()I │ +.method static synthetic a(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;F)Z │ .locals 1 │ │ .prologue │ - .line 519 │ - sget v0, Lcom/crashlytics/android/Crashlytics;->c:I │ + .line 54 │ + invoke-direct {p0, p1, p2}, Lcom/crashlytics/android/Crashlytics;->a(Landroid/content/Context;F)Z │ + │ + move-result v0 │ │ return v0 │ .end method │ │ -.method private static b(Landroid/content/Context;)Ljava/lang/String; │ - .locals 4 │ +.method static b(Ljava/lang/String;)V │ + .locals 2 │ │ .prologue │ - const/4 v1, 0x0 │ - │ - .line 772 │ - .line 775 │ - :try_start_0 │ - invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ - │ - move-result-object v0 │ - │ - .line 776 │ - invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - .line 777 │ - invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; │ - │ - move-result-object v0 │ - │ - const/16 v3, 0x80 │ - │ - invoke-virtual {v0, v2, v3}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; │ + .line 206 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - .line 779 │ - iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->metaData:Landroid/os/Bundle; │ - │ - .line 780 │ - if-eqz v0, :cond_2 │ - │ - .line 781 │ - const-string v2, "com.crashlytics.ApiKey" │ + const-class v1, Lcom/crashlytics/android/internal/D; │ │ - invoke-virtual {v0, v2}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/v;->a(Ljava/lang/Class;)Lcom/crashlytics/android/internal/u; │ │ move-result-object v0 │ │ - .line 789 │ - :goto_0 │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->d(Ljava/lang/String;)Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_0 │ - │ - .line 791 │ - const-string v2, "com.crashlytics.ApiKey" │ + check-cast v0, Lcom/crashlytics/android/internal/D; │ │ - const-string v3, "string" │ - │ - invoke-static {p0, v2, v3}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ - │ - move-result v2 │ - │ - .line 792 │ - if-eqz v2, :cond_0 │ - │ - .line 793 │ - invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + .line 207 │ + if-eqz v0, :cond_0 │ │ - move-result-object v0 │ + .line 208 │ + new-instance v1, Lcom/crashlytics/android/internal/af; │ │ - invoke-virtual {v0, v2}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/internal/af;->(Ljava/lang/String;)V │ │ - move-result-object v0 │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/D;->a(Lcom/crashlytics/android/internal/af;)V │ │ - .line 797 │ + .line 211 │ :cond_0 │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->d(Ljava/lang/String;)Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_4 │ - │ - .line 798 │ - sget-boolean v2, Lcom/crashlytics/android/Crashlytics;->x:Z │ - │ - if-nez v2, :cond_1 │ - │ - invoke-static {p0}, Lcom/crashlytics/android/aB;->d(Landroid/content/Context;)Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_3 │ - │ - .line 799 │ - :cond_1 │ - new-instance v0, Ljava/lang/IllegalArgumentException; │ - │ - const-string v1, "Crashlytics could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element \n\t" │ - │ - invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ - │ - throw v0 │ - │ - .line 783 │ - :catch_0 │ - move-exception v0 │ - │ - .line 786 │ - new-instance v2, Ljava/lang/StringBuilder; │ + return-void │ +.end method │ │ - const-string v3, "Caught non-fatal exception while retrieving apiKey: " │ +.method private static c(Ljava/lang/String;)Ljava/lang/String; │ + .locals 2 │ │ - invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + .prologue │ + const/16 v1, 0x400 │ │ - invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + .line 755 │ + if-eqz p0, :cond_0 │ │ - move-result-object v0 │ + .line 756 │ + invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String; │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + move-result-object p0 │ │ - move-result-object v0 │ + .line 757 │ + invoke-virtual {p0}, Ljava/lang/String;->length()I │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + move-result v0 │ │ - :cond_2 │ - move-object v0, v1 │ + if-le v0, v1, :cond_0 │ │ - goto :goto_0 │ + .line 758 │ + const/4 v0, 0x0 │ │ - .line 801 │ - :cond_3 │ - const-string v2, "Crashlytics could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element \n\t" │ + invoke-virtual {p0, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + move-result-object p0 │ │ - .line 805 │ - :cond_4 │ - return-object v0 │ + .line 761 │ + :cond_0 │ + return-object p0 │ .end method │ │ -.method static d()Landroid/content/ContextWrapper; │ +.method static d()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 527 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + .line 546 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method static e()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 536 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->p:Ljava/lang/String; │ + .line 556 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->l:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method static f()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 546 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->q:Ljava/lang/String; │ + .line 560 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method static g()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 550 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->t:Ljava/lang/String; │ + .line 564 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->n:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method public static getCrashlyticsVersion()Ljava/lang/String; │ .locals 1 │ + .annotation runtime Ljava/lang/Deprecated; │ + .end annotation │ │ .prologue │ - .line 508 │ - const-string v0, "1.0.4.15" │ + .line 507 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->getVersion()Ljava/lang/String; │ + │ + move-result-object v0 │ │ return-object v0 │ .end method │ │ .method public static declared-synchronized getInstance()Lcom/crashlytics/android/Crashlytics; │ - .locals 2 │ + .locals 3 │ │ .prologue │ - .line 225 │ + .line 153 │ const-class v1, Lcom/crashlytics/android/Crashlytics; │ │ monitor-enter v1 │ │ :try_start_0 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - if-nez v0, :cond_0 │ + move-result-object v0 │ │ - .line 226 │ - new-instance v0, Lcom/crashlytics/android/Crashlytics; │ + const-class v2, Lcom/crashlytics/android/Crashlytics; │ │ - invoke-direct {v0}, Lcom/crashlytics/android/Crashlytics;->()V │ + invoke-virtual {v0, v2}, Lcom/crashlytics/android/internal/v;->a(Ljava/lang/Class;)Lcom/crashlytics/android/internal/u; │ │ - sput-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + move-result-object v0 │ │ - .line 229 │ - :cond_0 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + check-cast v0, Lcom/crashlytics/android/Crashlytics; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ + .line 155 │ + if-eqz v0, :cond_0 │ + │ + .line 164 │ + :goto_0 │ monitor-exit v1 │ │ return-object v0 │ │ - .line 225 │ + .line 161 │ + :cond_0 │ + :try_start_1 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->v:Lcom/crashlytics/android/Crashlytics; │ + │ + if-nez v0, :cond_1 │ + │ + .line 162 │ + new-instance v0, Lcom/crashlytics/android/Crashlytics; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/Crashlytics;->()V │ + │ + sput-object v0, Lcom/crashlytics/android/Crashlytics;->v:Lcom/crashlytics/android/Crashlytics; │ + │ + .line 164 │ + :cond_1 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->v:Lcom/crashlytics/android/Crashlytics; │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + │ + goto :goto_0 │ + │ + .line 153 │ :catchall_0 │ move-exception v0 │ │ monitor-exit v1 │ │ throw v0 │ .end method │ │ .method public static getPinningInfoProvider()Lcom/crashlytics/android/PinningInfoProvider; │ .locals 1 │ │ .prologue │ - .line 462 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->y:Lcom/crashlytics/android/PinningInfoProvider; │ + .line 460 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->s:Lcom/crashlytics/android/PinningInfoProvider; │ │ return-object v0 │ .end method │ │ .method static h()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 554 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->s:Ljava/lang/String; │ + .line 568 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->m:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method static i()Ljava/lang/String; │ - .locals 1 │ + .locals 2 │ │ .prologue │ - .line 558 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->u:Ljava/lang/String; │ + .line 572 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - return-object v0 │ -.end method │ + const-string v1, "com.crashlytics.ApiEndpoint" │ │ -.method static j()Ljava/io/File; │ - .locals 1 │ + invoke-static {v0, v1}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ │ - .prologue │ - .line 562 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->w:Ljava/io/File; │ + move-result-object v0 │ │ return-object v0 │ .end method │ │ -.method static k()Ljava/lang/String; │ - .locals 1 │ +.method static k()Z │ + .locals 3 │ │ .prologue │ - .line 566 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->r:Ljava/lang/String; │ - │ - return-object v0 │ -.end method │ + .line 593 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->a()Landroid/content/SharedPreferences; │ │ -.method static l()Ljava/lang/String; │ - .locals 2 │ + move-result-object v0 │ │ - .prologue │ - .line 570 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + const-string v1, "always_send_reports_opt_in" │ │ - const-string v1, "com.crashlytics.ApiEndpoint" │ + const/4 v2, 0x0 │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ + invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z │ │ - move-result-object v0 │ + move-result v0 │ │ - return-object v0 │ + return v0 │ .end method │ │ .method public static log(ILjava/lang/String;Ljava/lang/String;)V │ - .locals 2 │ + .locals 4 │ .param p0, "priority" # I │ .param p1, "tag" # Ljava/lang/String; │ .param p2, "msg" # Ljava/lang/String; │ │ .prologue │ - .line 284 │ - invoke-static {p2}, Lcom/crashlytics/android/Crashlytics;->log(Ljava/lang/String;)V │ - │ - .line 286 │ - new-instance v0, Ljava/lang/StringBuilder; │ + .line 252 │ + invoke-static {p0, p1, p2}, Lcom/crashlytics/android/Crashlytics;->a(ILjava/lang/String;Ljava/lang/String;)V │ │ - invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 255 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v0 │ │ new-instance v1, Ljava/lang/StringBuilder; │ │ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ │ - invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v1 │ │ - invoke-static {p0, v0, v1}, Lcom/crashlytics/android/aB;->b(ILjava/lang/String;Ljava/lang/String;)V │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ - .line 287 │ + invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + const/4 v3, 0x1 │ + │ + invoke-interface {v0, p0, v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(ILjava/lang/String;Ljava/lang/String;Z)V │ + │ + .line 256 │ return-void │ .end method │ │ .method public static log(Ljava/lang/String;)V │ - .locals 4 │ + .locals 2 │ .param p0, "msg" # Ljava/lang/String; │ │ .prologue │ - .line 261 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + .line 224 │ + const/4 v0, 0x3 │ │ - if-eqz v0, :cond_0 │ + const-string v1, "Crashlytics" │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + invoke-static {v0, v1, p0}, Lcom/crashlytics/android/Crashlytics;->a(ILjava/lang/String;Ljava/lang/String;)V │ │ - iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + .line 225 │ + return-void │ +.end method │ │ - if-nez v0, :cond_1 │ +.method public static logException(Ljava/lang/Throwable;)V │ + .locals 4 │ + .param p0, "throwable" # Ljava/lang/Throwable; │ │ - .line 262 │ - :cond_0 │ - const-string v0, "Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging messages." │ + .prologue │ + .line 176 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ - const/4 v1, 0x0 │ + move-result-object v0 │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + .line 177 │ + if-eqz v0, :cond_0 │ │ - .line 268 │ - :goto_0 │ - return-void │ + iget-object v1, v0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ - .line 266 │ - :cond_1 │ - invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ + if-nez v1, :cond_1 │ │ - move-result-wide v0 │ + .line 178 │ + :cond_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - sget-object v2, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + move-result-object v0 │ │ - iget-wide v2, v2, Lcom/crashlytics/android/Crashlytics;->d:J │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - sub-long/2addr v0, v2 │ + move-result-object v0 │ │ - .line 267 │ - sget-object v2, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + const-string v1, "Crashlytics" │ │ - iget-object v2, v2, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + const-string v2, "Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging exceptions." │ │ - invoke-virtual {v2, v0, v1, p0}, Lcom/crashlytics/android/E;->a(JLjava/lang/String;)V │ + const/4 v3, 0x0 │ │ - goto :goto_0 │ -.end method │ + invoke-interface {v0, v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ -.method public static logException(Ljava/lang/Throwable;)V │ - .locals 2 │ - .param p0, "throwable" # Ljava/lang/Throwable; │ + .line 189 │ + :goto_0 │ + return-void │ │ - .prologue │ - .line 241 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + .line 183 │ + :cond_1 │ + if-nez p0, :cond_2 │ │ - if-eqz v0, :cond_0 │ + .line 184 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + move-result-object v0 │ │ - iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - if-nez v0, :cond_1 │ + move-result-object v0 │ │ - .line 242 │ - :cond_0 │ - const-string v0, "Crashlytics must be initialized by calling Crashlytics.start(Context) prior to logging exceptions." │ + const/4 v1, 0x5 │ │ - const/4 v1, 0x0 │ + const-string v2, "Crashlytics" │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + const-string v3, "Crashlytics is ignoring a request to log a null exception." │ │ - .line 248 │ - :goto_0 │ - return-void │ + invoke-interface {v0, v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(ILjava/lang/String;Ljava/lang/String;)V │ │ - .line 247 │ - :cond_1 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + goto :goto_0 │ │ - iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + .line 188 │ + :cond_2 │ + iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread; │ │ move-result-object v1 │ │ - invoke-virtual {v0, v1, p0}, Lcom/crashlytics/android/E;->a(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + invoke-virtual {v0, v1, p0}, Lcom/crashlytics/android/v;->a(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ goto :goto_0 │ .end method │ │ -.method static n()Z │ - .locals 3 │ +.method static synthetic s()Lcom/crashlytics/android/internal/av; │ + .locals 1 │ │ .prologue │ - .line 599 │ - invoke-static {}, Lcom/crashlytics/android/aB;->a()Landroid/content/SharedPreferences; │ - │ - move-result-object v0 │ - │ - const-string v1, "always_send_reports_opt_in" │ + .line 54 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ │ - const/4 v2, 0x0 │ - │ - invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z │ - │ - move-result v0 │ - │ - return v0 │ + return-object v0 │ .end method │ │ .method public static setApplicationInstallationIdentifier(Ljava/lang/String;)V │ .locals 2 │ .param p0, "identifier" # Ljava/lang/String; │ │ .prologue │ - .line 336 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + .line 309 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->c(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ - iput-object v1, v0, Lcom/crashlytics/android/Crashlytics;->a:Ljava/lang/String; │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/v;->a(Ljava/lang/String;)V │ │ - .line 337 │ + .line 310 │ return-void │ .end method │ │ .method public static setBool(Ljava/lang/String;Z)V │ .locals 1 │ .param p0, "key" # Ljava/lang/String; │ .param p1, "value" # Z │ │ .prologue │ - .line 376 │ + .line 349 │ invoke-static {p1}, Ljava/lang/Boolean;->toString(Z)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0}, Lcom/crashlytics/android/Crashlytics;->setString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 377 │ + .line 350 │ return-void │ .end method │ │ .method public static setDouble(Ljava/lang/String;D)V │ .locals 1 │ .param p0, "key" # Ljava/lang/String; │ .param p1, "value" # D │ │ .prologue │ - .line 385 │ + .line 358 │ invoke-static {p1, p2}, Ljava/lang/Double;->toString(D)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0}, Lcom/crashlytics/android/Crashlytics;->setString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 386 │ + .line 359 │ return-void │ .end method │ │ .method public static setFloat(Ljava/lang/String;F)V │ .locals 1 │ .param p0, "key" # Ljava/lang/String; │ .param p1, "value" # F │ │ .prologue │ - .line 394 │ + .line 367 │ invoke-static {p1}, Ljava/lang/Float;->toString(F)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0}, Lcom/crashlytics/android/Crashlytics;->setString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 395 │ + .line 368 │ return-void │ .end method │ │ .method public static setInt(Ljava/lang/String;I)V │ .locals 1 │ .param p0, "key" # Ljava/lang/String; │ .param p1, "value" # I │ │ .prologue │ - .line 403 │ + .line 376 │ invoke-static {p1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0}, Lcom/crashlytics/android/Crashlytics;->setString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 404 │ + .line 377 │ return-void │ .end method │ │ .method public static setLong(Ljava/lang/String;J)V │ .locals 1 │ .param p0, "key" # Ljava/lang/String; │ .param p1, "value" # J │ │ .prologue │ - .line 412 │ + .line 385 │ invoke-static {p1, p2}, Ljava/lang/Long;->toString(J)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0}, Lcom/crashlytics/android/Crashlytics;->setString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 413 │ + .line 386 │ return-void │ .end method │ │ .method public static setPinningInfoProvider(Lcom/crashlytics/android/PinningInfoProvider;)V │ - .locals 1 │ + .locals 2 │ .param p0, "pinningInfo" # Lcom/crashlytics/android/PinningInfoProvider; │ │ .prologue │ - .line 455 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->y:Lcom/crashlytics/android/PinningInfoProvider; │ + .line 425 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->s:Lcom/crashlytics/android/PinningInfoProvider; │ │ if-eq v0, p0, :cond_0 │ │ - .line 456 │ - sput-object p0, Lcom/crashlytics/android/Crashlytics;->y:Lcom/crashlytics/android/PinningInfoProvider; │ + .line 426 │ + sput-object p0, Lcom/crashlytics/android/Crashlytics;->s:Lcom/crashlytics/android/PinningInfoProvider; │ │ - .line 457 │ - invoke-static {}, Lcom/crashlytics/android/aB;->g()V │ + .line 428 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ + │ + if-eqz v0, :cond_0 │ + │ + .line 429 │ + if-nez p0, :cond_1 │ + │ + .line 430 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ + │ + const/4 v1, 0x0 │ + │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/av;->a(Lcom/crashlytics/android/internal/aG;)V │ │ - .line 459 │ + .line 457 │ :cond_0 │ + :goto_0 │ return-void │ + │ + .line 432 │ + :cond_1 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ + │ + new-instance v1, Lcom/crashlytics/android/k; │ + │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/k;->(Lcom/crashlytics/android/PinningInfoProvider;)V │ + │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/av;->a(Lcom/crashlytics/android/internal/aG;)V │ + │ + goto :goto_0 │ .end method │ │ .method public static setString(Ljava/lang/String;Ljava/lang/String;)V │ - .locals 2 │ + .locals 4 │ .param p0, "key" # Ljava/lang/String; │ .param p1, "value" # Ljava/lang/String; │ │ .prologue │ - .line 348 │ + .line 321 │ if-nez p0, :cond_1 │ │ - .line 349 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + .line 322 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ if-eqz v0, :cond_0 │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->j:Landroid/content/ContextWrapper; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->d(Landroid/content/Context;)Z │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->f(Landroid/content/Context;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ - .line 350 │ + .line 323 │ new-instance v0, Ljava/lang/IllegalArgumentException; │ │ const-string v1, "Custom attribute key cannot be null." │ │ invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v0 │ │ - .line 352 │ + .line 325 │ :cond_0 │ - const-string v0, "Attempting to set custom attribute with null key, ignoring." │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - const/4 v1, 0x0 │ + move-result-object v0 │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 368 │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Attempting to set custom attribute with null key, ignoring." │ + │ + const/4 v3, 0x0 │ + │ + invoke-interface {v0, v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 341 │ :goto_0 │ return-void │ │ - .line 356 │ + .line 329 │ :cond_1 │ - invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->c(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object p0 │ │ - .line 357 │ + .line 330 │ invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ move-result-object v0 │ │ - iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->e:Ljava/util/concurrent/ConcurrentHashMap; │ + iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->b:Ljava/util/concurrent/ConcurrentHashMap; │ │ invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentHashMap;->size()I │ │ move-result v0 │ │ const/16 v1, 0x40 │ │ if-lt v0, v1, :cond_2 │ │ invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ move-result-object v0 │ │ - iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->e:Ljava/util/concurrent/ConcurrentHashMap; │ + iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->b:Ljava/util/concurrent/ConcurrentHashMap; │ │ invoke-virtual {v0, p0}, Ljava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_4 │ │ - .line 359 │ + .line 332 │ :cond_2 │ if-nez p1, :cond_3 │ │ - .line 360 │ + .line 333 │ const-string p1, "" │ │ - .line 364 │ + .line 337 │ :goto_1 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->b:Lcom/crashlytics/android/Crashlytics; │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ │ - iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->e:Ljava/util/concurrent/ConcurrentHashMap; │ + iget-object v0, v0, Lcom/crashlytics/android/Crashlytics;->b:Ljava/util/concurrent/ConcurrentHashMap; │ │ invoke-virtual {v0, p0, p1}, Ljava/util/concurrent/ConcurrentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ goto :goto_0 │ │ - .line 362 │ + .line 335 │ :cond_3 │ - invoke-static {p1}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {p1}, Lcom/crashlytics/android/Crashlytics;->c(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object p1 │ │ goto :goto_1 │ │ - .line 366 │ + .line 339 │ :cond_4 │ - const-string v0, "Exceeded maximum number of custom attributes (64)" │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + const-string v2, "Exceeded maximum number of custom attributes (64)" │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ goto :goto_0 │ .end method │ │ .method public static setUserEmail(Ljava/lang/String;)V │ .locals 2 │ .param p0, "email" # Ljava/lang/String; │ │ .prologue │ - .line 329 │ + .line 302 │ invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ move-result-object v0 │ │ - invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->c(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ - iput-object v1, v0, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ + iput-object v1, v0, Lcom/crashlytics/android/Crashlytics;->g:Ljava/lang/String; │ │ - .line 330 │ + .line 303 │ return-void │ .end method │ │ .method public static setUserIdentifier(Ljava/lang/String;)V │ .locals 2 │ .param p0, "identifier" # Ljava/lang/String; │ │ .prologue │ - .line 311 │ + .line 284 │ invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ move-result-object v0 │ │ - invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->c(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ - iput-object v1, v0, Lcom/crashlytics/android/Crashlytics;->j:Ljava/lang/String; │ + iput-object v1, v0, Lcom/crashlytics/android/Crashlytics;->f:Ljava/lang/String; │ │ - .line 312 │ + .line 285 │ return-void │ .end method │ │ .method public static setUserName(Ljava/lang/String;)V │ .locals 2 │ .param p0, "name" # Ljava/lang/String; │ │ .prologue │ - .line 320 │ + .line 293 │ invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ move-result-object v0 │ │ - invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->c(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ - iput-object v1, v0, Lcom/crashlytics/android/Crashlytics;->l:Ljava/lang/String; │ + iput-object v1, v0, Lcom/crashlytics/android/Crashlytics;->h:Ljava/lang/String; │ │ - .line 321 │ + .line 294 │ return-void │ .end method │ │ .method public static start(Landroid/content/Context;)V │ .locals 1 │ .param p0, "context" # Landroid/content/Context; │ │ .prologue │ - .line 190 │ + .line 124 │ const/high16 v0, 0x3f800000 # 1.0f │ │ invoke-static {p0, v0}, Lcom/crashlytics/android/Crashlytics;->start(Landroid/content/Context;F)V │ │ - .line 191 │ + .line 125 │ return-void │ .end method │ │ .method public static start(Landroid/content/Context;F)V │ - .locals 2 │ + .locals 3 │ .param p0, "context" # Landroid/content/Context; │ .param p1, "delay" # F │ │ .prologue │ - .line 201 │ - if-nez p0, :cond_0 │ + .line 135 │ + sput p1, Lcom/crashlytics/android/Crashlytics;->u:F │ │ - .line 202 │ - new-instance v0, Ljava/lang/IllegalArgumentException; │ + .line 138 │ + invoke-static {p0}, Lcom/crashlytics/android/internal/ab;->d(Landroid/content/Context;)Z │ │ - const-string v1, "context cannot be null." │ - │ - invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + move-result v0 │ │ - throw v0 │ + if-nez v0, :cond_0 │ │ - .line 205 │ - :cond_0 │ - invoke-static {p0}, Lcom/crashlytics/android/Crashlytics;->b(Landroid/content/Context;)Ljava/lang/String; │ + .line 139 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - .line 207 │ - if-nez v0, :cond_1 │ - │ - .line 219 │ - :goto_0 │ - return-void │ - │ - .line 212 │ - :cond_1 │ - :try_start_0 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v1 │ - │ - invoke-direct {v1, v0, p0, p1}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;Landroid/content/Context;F)V │ - :try_end_0 │ - .catch Lcom/crashlytics/android/CrashlyticsMissingDependencyException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1 │ + new-instance v1, Lcom/crashlytics/android/internal/A; │ │ - goto :goto_0 │ + invoke-direct {v1}, Lcom/crashlytics/android/internal/A;->()V │ │ - .line 213 │ - :catch_0 │ - move-exception v0 │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/internal/v;->a(Lcom/crashlytics/android/internal/q;)V │ │ - .line 215 │ - throw v0 │ + .line 143 │ + :cond_0 │ + const/4 v0, 0x2 │ │ - .line 216 │ - :catch_1 │ - move-exception v0 │ + new-array v0, v0, [Lcom/crashlytics/android/internal/u; │ │ - .line 217 │ - const-string v1, "Crashlytics was not started due to an exception during initialization" │ + const/4 v1, 0x0 │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ │ - goto :goto_0 │ -.end method │ + move-result-object v2 │ │ -.method private u()Z │ - .locals 3 │ + aput-object v2, v0, v1 │ │ - .prologue │ - .line 1070 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->n:Lcom/crashlytics/android/SettingsController; │ + const/4 v1, 0x1 │ │ - sget-object v1, Lcom/crashlytics/android/SettingsController$CacheBehavior;->SKIP_CACHE_LOOKUP:Lcom/crashlytics/android/SettingsController$CacheBehavior; │ + new-instance v2, Lcom/crashlytics/android/internal/D; │ │ - invoke-virtual {v0, v1}, Lcom/crashlytics/android/SettingsController;->a(Lcom/crashlytics/android/SettingsController$CacheBehavior;)Lcom/crashlytics/android/au; │ + invoke-direct {v2}, Lcom/crashlytics/android/internal/D;->()V │ │ - move-result-object v0 │ + aput-object v2, v0, v1 │ │ - .line 1071 │ - iget-object v1, p0, Lcom/crashlytics/android/Crashlytics;->f:Ljava/util/concurrent/atomic/AtomicReference; │ + invoke-static {p0, v0}, Lcom/crashlytics/android/internal/v;->a(Landroid/content/Context;[Lcom/crashlytics/android/internal/u;)V │ │ - invoke-virtual {v1, v0}, Ljava/util/concurrent/atomic/AtomicReference;->set(Ljava/lang/Object;)V │ + .line 144 │ + return-void │ +.end method │ │ - .line 1073 │ - if-nez v0, :cond_0 │ │ - .line 1074 │ - const-string v1, "Failed to force reload of settings from Crashlytics." │ +# virtual methods │ +.method final a()Ljava/util/Map; │ + .locals 1 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "()", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;" │ + } │ + .end annotation │ │ - const/4 v2, 0x0 │ + .prologue │ + .line 390 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->b:Ljava/util/concurrent/ConcurrentHashMap; │ │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + invoke-static {v0}, Ljava/util/Collections;->unmodifiableMap(Ljava/util/Map;)Ljava/util/Map; │ │ - .line 1077 │ - :cond_0 │ - if-eqz v0, :cond_1 │ + move-result-object v0 │ │ - const/4 v0, 0x1 │ + return-object v0 │ +.end method │ │ - :goto_0 │ - return v0 │ +.method final b()Lcom/crashlytics/android/internal/ao; │ + .locals 1 │ │ - :cond_1 │ - const/4 v0, 0x0 │ + .prologue │ + .line 518 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Lcom/crashlytics/android/internal/ao; │ │ - goto :goto_0 │ + return-object v0 │ .end method │ │ -.method private static v()Ljava/lang/String; │ - .locals 5 │ +.method protected final c()V │ + .locals 4 │ │ .prologue │ - .line 1118 │ - const/4 v1, 0x0 │ - │ - .line 1121 │ - :try_start_0 │ - const-string v0, "SHA-1" │ - │ - invoke-static {v0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; │ + .line 523 │ + invoke-super {p0}, Lcom/crashlytics/android/internal/u;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ - .line 1123 │ - sget-object v2, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ - │ - invoke-virtual {v2}, Landroid/content/ContextWrapper;->getApplicationContext()Landroid/content/Context; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ - │ - move-result-object v2 │ - │ - iget v2, v2, Landroid/content/pm/ApplicationInfo;->icon:I │ - │ - .line 1124 │ - sget-object v3, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ - │ - invoke-virtual {v3}, Landroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; │ - │ - move-result-object v3 │ + .line 524 │ + const/4 v1, 0x0 │ │ - invoke-virtual {v3, v2}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; │ + invoke-static {v0, v1}, Lcom/crashlytics/android/internal/r;->a(Landroid/content/Context;Z)Ljava/lang/String; │ │ move-result-object v1 │ │ - .line 1126 │ - const/16 v2, 0x400 │ - │ - new-array v2, v2, [B │ + .line 526 │ + if-nez v1, :cond_0 │ │ - .line 1130 │ + .line 538 │ :goto_0 │ - invoke-virtual {v1, v2}, Ljava/io/InputStream;->read([B)I │ - │ - move-result v3 │ - │ - const/4 v4, -0x1 │ - │ - if-eq v3, v4, :cond_0 │ + return-void │ │ - .line 1131 │ - const/4 v4, 0x0 │ + .line 531 │ + :cond_0 │ + :try_start_0 │ + sget v2, Lcom/crashlytics/android/Crashlytics;->u:F │ │ - invoke-virtual {v0, v2, v4, v3}, Ljava/security/MessageDigest;->update([BII)V │ + invoke-direct {p0, v1, v0, v2}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;Landroid/content/Context;F)V │ :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + .catch Lcom/crashlytics/android/CrashlyticsMissingDependencyException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1 │ │ goto :goto_0 │ │ - .line 1135 │ + .line 532 │ :catch_0 │ move-exception v0 │ │ - .line 1136 │ - :try_start_1 │ - const-string v2, "Could not calculate hash for app icon." │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ - │ - .line 1138 │ - const-string v0, "Failed to close icon input stream." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 1141 │ - const-string v0, "" │ - │ - :goto_1 │ - return-object v0 │ - │ - .line 1134 │ - :cond_0 │ - :try_start_2 │ - invoke-virtual {v0}, Ljava/security/MessageDigest;->digest()[B │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->b([B)Ljava/lang/String; │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ - │ - move-result-object v0 │ - │ - .line 1138 │ - const-string v2, "Failed to close icon input stream." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - goto :goto_1 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - const-string v2, "Failed to close icon input stream." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ + .line 534 │ throw v0 │ -.end method │ - │ -.method private static w()Lcom/crashlytics/android/ak; │ - .locals 7 │ │ - .prologue │ - const/4 v0, 0x0 │ - │ - .line 1153 │ - :try_start_0 │ - sget-object v1, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ + .line 535 │ + :catch_1 │ + move-exception v0 │ │ - invoke-virtual {v1}, Landroid/content/ContextWrapper;->getApplicationContext()Landroid/content/Context; │ + .line 536 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v1 │ │ - invoke-virtual {v1}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v1 │ │ - iget v1, v1, Landroid/content/pm/ApplicationInfo;->icon:I │ - │ - .line 1154 │ - sget-object v2, Lcom/crashlytics/android/Crashlytics;->o:Landroid/content/ContextWrapper; │ - │ - invoke-virtual {v2}, Landroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2, v1}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; │ - :try_end_0 │ - .catch Landroid/content/res/Resources$NotFoundException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - move-result-object v2 │ - │ - .line 1155 │ - :try_start_1 │ - invoke-static {v2}, Landroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap; │ - │ - move-result-object v3 │ - │ - .line 1157 │ - if-nez v3, :cond_0 │ - │ - .line 1159 │ - const/4 v1, 0x5 │ - │ - const-string v3, "Crashlytics" │ - │ - const-string v4, "Crashlytics could not load the application\'s icon." │ - │ - invoke-static {v1, v3, v4}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ - :try_end_1 │ - .catch Landroid/content/res/Resources$NotFoundException; {:try_start_1 .. :try_end_1} :catch_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - .line 1168 │ - :goto_0 │ - const-string v1, "Failed to close icon input stream." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 1171 │ - :goto_1 │ - return-object v0 │ - │ - .line 1161 │ - :cond_0 │ - :try_start_2 │ - invoke-static {v3}, Lcom/crashlytics/android/aB;->a(Landroid/graphics/Bitmap;)[B │ - │ - move-result-object v4 │ - │ - .line 1162 │ - invoke-static {v4}, Lcom/crashlytics/android/aB;->a([B)Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - .line 1163 │ - new-instance v1, Lcom/crashlytics/android/ak; │ - │ - invoke-virtual {v3}, Landroid/graphics/Bitmap;->getWidth()I │ - │ - move-result v6 │ - │ - invoke-virtual {v3}, Landroid/graphics/Bitmap;->getHeight()I │ + const-string v2, "Crashlytics" │ │ - move-result v3 │ - │ - invoke-direct {v1, v5, v4, v6, v3}, Lcom/crashlytics/android/ak;->(Ljava/lang/String;[BII)V │ - :try_end_2 │ - .catch Landroid/content/res/Resources$NotFoundException; {:try_start_2 .. :try_end_2} :catch_1 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ + const-string v3, "Crashlytics was not started due to an exception during initialization" │ │ - move-object v0, v1 │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ goto :goto_0 │ - │ - .line 1165 │ - :catch_0 │ - move-exception v1 │ - │ - move-object v2, v0 │ - │ - .line 1166 │ - :goto_2 │ - :try_start_3 │ - const-string v3, "Failed to load icon" │ - │ - invoke-static {v3, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ - │ - .line 1168 │ - const-string v1, "Failed to close icon input stream." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - goto :goto_1 │ - │ - :catchall_0 │ - move-exception v1 │ - │ - move-object v2, v0 │ - │ - move-object v0, v1 │ - │ - :goto_3 │ - const-string v1, "Failed to close icon input stream." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - :catchall_1 │ - move-exception v0 │ - │ - goto :goto_3 │ - │ - .line 1165 │ - :catch_1 │ - move-exception v1 │ - │ - goto :goto_2 │ .end method │ │ - │ -# virtual methods │ -.method final a()Ljava/util/Map; │ +.method public final crash()V │ .locals 1 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "()", │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;" │ - } │ - .end annotation │ │ .prologue │ - .line 417 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Ljava/util/concurrent/ConcurrentHashMap; │ + .line 514 │ + new-instance v0, Lcom/crashlytics/android/CrashTest; │ │ - invoke-static {v0}, Ljava/util/Collections;->unmodifiableMap(Ljava/util/Map;)Ljava/util/Map; │ + invoke-direct {v0}, Lcom/crashlytics/android/CrashTest;->()V │ │ - move-result-object v0 │ + invoke-virtual {v0}, Lcom/crashlytics/android/CrashTest;->indexOutOfBounds()V │ │ - return-object v0 │ + .line 515 │ + return-void │ .end method │ │ -.method final a(Landroid/content/Context;)Z │ - .locals 2 │ +.method public final getDebugMode()Z │ + .locals 1 │ │ .prologue │ - .line 632 │ - new-instance v0, Lcom/crashlytics/android/t; │ - │ - invoke-direct {v0, p0, p1}, Lcom/crashlytics/android/t;->(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;)V │ - │ - const/4 v1, 0x1 │ - │ - invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ - │ - move-result-object v1 │ - │ - invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/D;Ljava/lang/Object;)Ljava/lang/Object; │ + .line 417 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - check-cast v0, Ljava/lang/Boolean; │ - │ - invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->f()Z │ │ move-result v0 │ │ return v0 │ .end method │ │ -.method final c()Lcom/crashlytics/android/IdManager; │ +.method public final getVersion()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 523 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->i:Lcom/crashlytics/android/IdManager; │ - │ - return-object v0 │ -.end method │ + .line 542 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ -.method public final crash()V │ - .locals 1 │ - │ - .prologue │ - .line 515 │ - new-instance v0, Lcom/crashlytics/android/CrashTest; │ + move-result-object v0 │ │ - invoke-direct {v0}, Lcom/crashlytics/android/CrashTest;->()V │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getVersion()Ljava/lang/String; │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/CrashTest;->indexOutOfBounds()V │ + move-result-object v0 │ │ - .line 516 │ - return-void │ + return-object v0 │ .end method │ │ -.method public final getDebugMode()Z │ - .locals 1 │ +.method final j()Z │ + .locals 3 │ │ .prologue │ - .line 447 │ - sget-boolean v0, Lcom/crashlytics/android/Crashlytics;->x:Z │ + .line 580 │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ │ - return v0 │ -.end method │ - │ -.method final m()Z │ - .locals 2 │ + move-result-object v0 │ │ - .prologue │ - .line 586 │ - new-instance v0, Lcom/crashlytics/android/s; │ + new-instance v1, Lcom/crashlytics/android/l; │ │ - invoke-direct {v0, p0}, Lcom/crashlytics/android/s;->(Lcom/crashlytics/android/Crashlytics;)V │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/l;->(Lcom/crashlytics/android/Crashlytics;)V │ │ - const/4 v1, 0x0 │ + const/4 v2, 0x0 │ │ - invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ + invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ - move-result-object v1 │ + move-result-object v2 │ │ - invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/D;Ljava/lang/Object;)Ljava/lang/Object; │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/aS;->a(Lcom/crashlytics/android/internal/aU;Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/Boolean; │ │ invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z │ │ move-result v0 │ │ return v0 │ .end method │ │ -.method final o()Lcom/crashlytics/android/E; │ +.method final l()Lcom/crashlytics/android/v; │ .locals 1 │ │ .prologue │ - .line 607 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->h:Lcom/crashlytics/android/E; │ + .line 601 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->d:Lcom/crashlytics/android/v; │ │ return-object v0 │ .end method │ │ -.method final p()Ljava/lang/String; │ +.method final m()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 611 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->i:Lcom/crashlytics/android/IdManager; │ + .line 605 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Lcom/crashlytics/android/internal/ao; │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/IdManager;->a()Z │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/ao;->a()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->j:Ljava/lang/String; │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->f:Ljava/lang/String; │ │ :goto_0 │ return-object v0 │ │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ -.method final q()Ljava/lang/String; │ +.method final n()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 615 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->i:Lcom/crashlytics/android/IdManager; │ + .line 609 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Lcom/crashlytics/android/internal/ao; │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/IdManager;->a()Z │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/ao;->a()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->k:Ljava/lang/String; │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->g:Ljava/lang/String; │ │ :goto_0 │ return-object v0 │ │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ -.method final r()Ljava/lang/String; │ +.method final o()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 619 │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->i:Lcom/crashlytics/android/IdManager; │ + .line 613 │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->e:Lcom/crashlytics/android/internal/ao; │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/IdManager;->a()Z │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/ao;->a()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ - iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->l:Ljava/lang/String; │ + iget-object v0, p0, Lcom/crashlytics/android/Crashlytics;->h:Ljava/lang/String; │ │ :goto_0 │ return-object v0 │ │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ -.method final s()Lcom/crashlytics/android/ab; │ - .locals 2 │ +.method final p()Z │ + .locals 3 │ │ .prologue │ - .line 650 │ - new-instance v0, Lcom/crashlytics/android/u; │ + .line 617 │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ │ - invoke-direct {v0, p0}, Lcom/crashlytics/android/u;->(Lcom/crashlytics/android/Crashlytics;)V │ + move-result-object v0 │ │ - const/4 v1, 0x0 │ + new-instance v1, Lcom/crashlytics/android/m; │ + │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/m;->(Lcom/crashlytics/android/Crashlytics;)V │ │ - invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/D;Ljava/lang/Object;)Ljava/lang/Object; │ + const/4 v2, 0x1 │ + │ + invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/aS;->a(Lcom/crashlytics/android/internal/aU;Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ - check-cast v0, Lcom/crashlytics/android/ab; │ + check-cast v0, Ljava/lang/Boolean; │ │ - return-object v0 │ + invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z │ + │ + move-result v0 │ + │ + return v0 │ .end method │ │ -.method public final setDebugMode(Z)V │ - .locals 1 │ - .param p1, "debug" # Z │ +.method final q()Lcom/crashlytics/android/V; │ + .locals 3 │ │ .prologue │ - .line 435 │ - sput-boolean p1, Lcom/crashlytics/android/Crashlytics;->x:Z │ + .line 637 │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ + │ + move-result-object v0 │ │ - .line 438 │ - if-eqz p1, :cond_0 │ + new-instance v1, Lcom/crashlytics/android/n; │ │ - const/4 v0, 0x3 │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/n;->(Lcom/crashlytics/android/Crashlytics;)V │ │ - :goto_0 │ - sput v0, Lcom/crashlytics/android/Crashlytics;->c:I │ + const/4 v2, 0x0 │ │ - .line 439 │ - return-void │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/aS;->a(Lcom/crashlytics/android/internal/aU;Ljava/lang/Object;)Ljava/lang/Object; │ │ - .line 438 │ - :cond_0 │ - const/4 v0, 0x4 │ + move-result-object v0 │ │ - goto :goto_0 │ + check-cast v0, Lcom/crashlytics/android/V; │ + │ + return-object v0 │ .end method │ │ -.method public final setListener(Lcom/crashlytics/android/CrashlyticsListener;)V │ - .locals 0 │ - .param p1, "listener" # Lcom/crashlytics/android/CrashlyticsListener; │ +.method final r()Lcom/crashlytics/android/internal/aR; │ + .locals 3 │ │ .prologue │ - .line 426 │ - iput-object p1, p0, Lcom/crashlytics/android/Crashlytics;->g:Lcom/crashlytics/android/CrashlyticsListener; │ + .line 650 │ + invoke-static {}, Lcom/crashlytics/android/internal/aS;->a()Lcom/crashlytics/android/internal/aS; │ │ - .line 427 │ - return-void │ + move-result-object v0 │ + │ + new-instance v1, Lcom/crashlytics/android/o; │ + │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/o;->(Lcom/crashlytics/android/Crashlytics;)V │ + │ + const/4 v2, 0x0 │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/aS;->a(Lcom/crashlytics/android/internal/aU;Ljava/lang/Object;)Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Lcom/crashlytics/android/internal/aR; │ + │ + return-object v0 │ .end method │ │ -.method final t()Lcom/crashlytics/android/ax; │ - .locals 2 │ +.method public final setDebugMode(Z)V │ + .locals 1 │ + .param p1, "debug" # Z │ │ .prologue │ - .line 663 │ - new-instance v0, Lcom/crashlytics/android/v; │ + .line 408 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-direct {v0, p0}, Lcom/crashlytics/android/v;->(Lcom/crashlytics/android/Crashlytics;)V │ + move-result-object v0 │ │ - const/4 v1, 0x0 │ + invoke-virtual {v0, p1}, Lcom/crashlytics/android/internal/v;->a(Z)V │ │ - invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/D;Ljava/lang/Object;)Ljava/lang/Object; │ + .line 409 │ + return-void │ +.end method │ │ - move-result-object v0 │ +.method public final setListener(Lcom/crashlytics/android/CrashlyticsListener;)V │ + .locals 0 │ + .param p1, "listener" # Lcom/crashlytics/android/CrashlyticsListener; │ │ - check-cast v0, Lcom/crashlytics/android/ax; │ + .prologue │ + .line 399 │ + iput-object p1, p0, Lcom/crashlytics/android/Crashlytics;->c:Lcom/crashlytics/android/CrashlyticsListener; │ │ - return-object v0 │ + .line 400 │ + return-void │ .end method │ │ .method public final verifyPinning(Ljava/net/URL;)Z │ - .locals 4 │ + .locals 5 │ .param p1, "url" # Ljava/net/URL; │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 475 │ + .line 473 │ :try_start_0 │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->y:Lcom/crashlytics/android/PinningInfoProvider; │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getPinningInfoProvider()Lcom/crashlytics/android/PinningInfoProvider; │ │ - if-eqz v0, :cond_0 │ + move-result-object v0 │ │ - invoke-static {p1}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/net/URL;)Lcom/crashlytics/android/HttpRequest; │ + if-eqz v0, :cond_0 │ │ - move-result-object v2 │ + sget-object v0, Lcom/crashlytics/android/Crashlytics;->t:Lcom/crashlytics/android/internal/av; │ │ - sget-object v0, Lcom/crashlytics/android/Crashlytics;->y:Lcom/crashlytics/android/PinningInfoProvider; │ + sget-object v2, Lcom/crashlytics/android/internal/ax;->a:Lcom/crashlytics/android/internal/ax; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->a(Lcom/crashlytics/android/PinningInfoProvider;)Ljavax/net/ssl/SSLSocketFactory; │ + invoke-virtual {p1}, Ljava/net/URL;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ - invoke-virtual {v2}, Lcom/crashlytics/android/HttpRequest;->a()Ljava/net/HttpURLConnection; │ + invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/internal/av;->a(Lcom/crashlytics/android/internal/ax;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/ay;->a()Ljava/net/HttpURLConnection; │ │ move-result-object v0 │ │ check-cast v0, Ljavax/net/ssl/HttpsURLConnection; │ │ - invoke-virtual {v0, v3}, Ljavax/net/ssl/HttpsURLConnection;->setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V │ - │ const/4 v3, 0x0 │ │ invoke-virtual {v0, v3}, Ljavax/net/ssl/HttpsURLConnection;->setInstanceFollowRedirects(Z)V │ │ - invoke-virtual {v2}, Lcom/crashlytics/android/HttpRequest;->b()I │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/ay;->b()I │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ const/4 v0, 0x1 │ │ - .line 478 │ + .line 476 │ :goto_0 │ return v0 │ │ :cond_0 │ move v0, v1 │ │ - .line 475 │ + .line 473 │ goto :goto_0 │ │ - .line 476 │ + .line 474 │ :catch_0 │ move-exception v0 │ │ - .line 477 │ - const-string v2, "Could not verify SSL pinning" │ + .line 475 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v2 │ + │ + const-string v3, "Crashlytics" │ + │ + const-string v4, "Could not verify SSL pinning" │ + │ + invoke-interface {v2, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ move v0, v1 │ │ - .line 478 │ + .line 476 │ goto :goto_0 │ .end method ├── smali/com/crashlytics/android/h.smali │ @@ -1,68 +1,1047 @@ │ .class final Lcom/crashlytics/android/h; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Ljava/io/Flushable; │ + │ │ # instance fields │ -.field public final a:Ljava/lang/String; │ +.field private final a:[B │ │ -.field public final b:Ljava/lang/String; │ +.field private final b:I │ │ -.field public final c:Ljava/lang/String; │ +.field private c:I │ │ -.field public final d:Ljava/lang/String; │ +.field private final d:Ljava/io/OutputStream; │ │ -.field public final e:Ljava/lang/String; │ │ -.field public final f:Ljava/lang/String; │ +# direct methods │ +.method private constructor (Ljava/io/OutputStream;[B)V │ + .locals 1 │ │ -.field public final g:I │ + .prologue │ + .line 86 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ -.field public final h:Ljava/lang/String; │ + .line 87 │ + iput-object p1, p0, Lcom/crashlytics/android/h;->d:Ljava/io/OutputStream; │ │ -.field public final i:Ljava/lang/String; │ + .line 88 │ + iput-object p2, p0, Lcom/crashlytics/android/h;->a:[B │ │ -.field public final j:Lcom/crashlytics/android/ak; │ + .line 89 │ + const/4 v0, 0x0 │ │ + iput v0, p0, Lcom/crashlytics/android/h;->c:I │ │ -# direct methods │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/ak;)V │ - .locals 0 │ + .line 90 │ + array-length v0, p2 │ + │ + iput v0, p0, Lcom/crashlytics/android/h;->b:I │ + │ + .line 91 │ + return-void │ +.end method │ + │ +.method public static a(I)I │ + .locals 1 │ │ .prologue │ - .line 25 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + .line 833 │ + const/4 v0, 0x0 │ + │ + invoke-static {p0, v0}, Lcom/crashlytics/android/ae;->a(II)I │ + │ + move-result v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v0 │ + │ + return v0 │ +.end method │ + │ +.method public static a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + .locals 2 │ + │ + .prologue │ + .line 98 │ + new-instance v0, Lcom/crashlytics/android/h; │ + │ + const/16 v1, 0x1000 │ + │ + new-array v1, v1, [B │ + │ + invoke-direct {v0, p0, v1}, Lcom/crashlytics/android/h;->(Ljava/io/OutputStream;[B)V │ + │ + return-object v0 │ +.end method │ + │ +.method private a()V │ + .locals 4 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v3, 0x0 │ + │ + .line 660 │ + iget-object v0, p0, Lcom/crashlytics/android/h;->d:Ljava/io/OutputStream; │ + │ + if-nez v0, :cond_0 │ + │ + .line 662 │ + new-instance v0, Lcom/crashlytics/android/i; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/i;->()V │ + │ + throw v0 │ + │ + .line 667 │ + :cond_0 │ + iget-object v0, p0, Lcom/crashlytics/android/h;->d:Ljava/io/OutputStream; │ + │ + iget-object v1, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + invoke-virtual {v0, v1, v3, v2}, Ljava/io/OutputStream;->write([BII)V │ + │ + .line 668 │ + iput v3, p0, Lcom/crashlytics/android/h;->c:I │ + │ + .line 669 │ + return-void │ +.end method │ + │ +.method private a(J)V │ + .locals 4 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 868 │ + :goto_0 │ + const-wide/16 v0, -0x80 │ + │ + and-long/2addr v0, p1 │ + │ + const-wide/16 v2, 0x0 │ + │ + cmp-long v0, v0, v2 │ + │ + if-nez v0, :cond_0 │ + │ + .line 869 │ + long-to-int v0, p1 │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/h;->d(I)V │ + │ + .line 870 │ + return-void │ + │ + .line 872 │ + :cond_0 │ + long-to-int v0, p1 │ + │ + and-int/lit8 v0, v0, 0x7f │ + │ + or-int/lit16 v0, v0, 0x80 │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/h;->d(I)V │ + │ + .line 873 │ + const/4 v0, 0x7 │ + │ + ushr-long/2addr p1, v0 │ + │ + goto :goto_0 │ +.end method │ + │ +.method public static b(IF)I │ + .locals 1 │ + │ + .prologue │ + .line 376 │ + const/4 v0, 0x1 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x4 │ + │ + return v0 │ +.end method │ + │ +.method public static b(IJ)I │ + .locals 6 │ + │ + .prologue │ + const-wide/16 v4, 0x0 │ + │ + .line 384 │ + invoke-static {p0}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v1 │ + │ + const-wide/16 v2, -0x80 │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + :goto_0 │ + add-int/2addr v0, v1 │ + │ + return v0 │ + │ + :cond_0 │ + const-wide/16 v2, -0x4000 │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_1 │ + │ + const/4 v0, 0x2 │ + │ + goto :goto_0 │ + │ + :cond_1 │ + const-wide/32 v2, -0x200000 │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_2 │ + │ + const/4 v0, 0x3 │ + │ + goto :goto_0 │ + │ + :cond_2 │ + const-wide/32 v2, -0x10000000 │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_3 │ + │ + const/4 v0, 0x4 │ + │ + goto :goto_0 │ + │ + :cond_3 │ + const-wide v2, -0x800000000L │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_4 │ + │ + const/4 v0, 0x5 │ + │ + goto :goto_0 │ + │ + :cond_4 │ + const-wide v2, -0x40000000000L │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_5 │ + │ + const/4 v0, 0x6 │ │ - .line 26 │ - iput-object p1, p0, Lcom/crashlytics/android/h;->a:Ljava/lang/String; │ + goto :goto_0 │ │ - .line 27 │ - iput-object p2, p0, Lcom/crashlytics/android/h;->b:Ljava/lang/String; │ + :cond_5 │ + const-wide/high16 v2, -0x2000000000000L │ │ - .line 28 │ - iput-object p3, p0, Lcom/crashlytics/android/h;->c:Ljava/lang/String; │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_6 │ + │ + const/4 v0, 0x7 │ + │ + goto :goto_0 │ + │ + :cond_6 │ + const-wide/high16 v2, -0x100000000000000L │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_7 │ + │ + const/16 v0, 0x8 │ + │ + goto :goto_0 │ + │ + :cond_7 │ + const-wide/high16 v2, -0x8000000000000000L │ + │ + and-long/2addr v2, p1 │ + │ + cmp-long v0, v2, v4 │ + │ + if-nez v0, :cond_8 │ + │ + const/16 v0, 0x9 │ + │ + goto :goto_0 │ + │ + :cond_8 │ + const/16 v0, 0xa │ + │ + goto :goto_0 │ +.end method │ + │ +.method public static b(ILcom/crashlytics/android/d;)I │ + .locals 3 │ + │ + .prologue │ + .line 445 │ + invoke-static {p0}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v0 │ + │ + invoke-virtual {p1}, Lcom/crashlytics/android/d;->a()I │ + │ + move-result v1 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v1 │ + │ + invoke-virtual {p1}, Lcom/crashlytics/android/d;->a()I │ + │ + move-result v2 │ + │ + add-int/2addr v1, v2 │ + │ + add-int/2addr v0, v1 │ + │ + return v0 │ +.end method │ + │ +.method public static b(IZ)I │ + .locals 1 │ + │ + .prologue │ + .line 427 │ + invoke-static {p0}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x1 │ + │ + return v0 │ +.end method │ + │ +.method public static c(I)I │ + .locals 1 │ + │ + .prologue │ + .line 858 │ + and-int/lit8 v0, p0, -0x80 │ + │ + if-nez v0, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + .line 862 │ + :goto_0 │ + return v0 │ + │ + .line 859 │ + :cond_0 │ + and-int/lit16 v0, p0, -0x4000 │ + │ + if-nez v0, :cond_1 │ + │ + const/4 v0, 0x2 │ + │ + goto :goto_0 │ + │ + .line 860 │ + :cond_1 │ + const/high16 v0, -0x200000 │ + │ + and-int/2addr v0, p0 │ + │ + if-nez v0, :cond_2 │ + │ + const/4 v0, 0x3 │ + │ + goto :goto_0 │ + │ + .line 861 │ + :cond_2 │ + const/high16 v0, -0x10000000 │ + │ + and-int/2addr v0, p0 │ + │ + if-nez v0, :cond_3 │ + │ + const/4 v0, 0x4 │ + │ + goto :goto_0 │ + │ + .line 862 │ + :cond_3 │ + const/4 v0, 0x5 │ + │ + goto :goto_0 │ +.end method │ + │ +.method public static d(II)I │ + .locals 2 │ + │ + .prologue │ + .line 453 │ + invoke-static {p0}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v0 │ + │ + invoke-static {p1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + return v0 │ +.end method │ + │ +.method private d(I)V │ + .locals 4 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 734 │ + int-to-byte v0, p1 │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->c:I │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->b:I │ + │ + if-ne v1, v2, :cond_0 │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/h;->a()V │ + │ + :cond_0 │ + iget-object v1, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + add-int/lit8 v3, v2, 0x1 │ + │ + iput v3, p0, Lcom/crashlytics/android/h;->c:I │ + │ + aput-byte v0, v1, v2 │ + │ + .line 735 │ + return-void │ +.end method │ + │ +.method private static e(I)I │ + .locals 2 │ + │ + .prologue │ + .line 928 │ + shl-int/lit8 v0, p0, 0x1 │ + │ + shr-int/lit8 v1, p0, 0x1f │ + │ + xor-int/2addr v0, v1 │ + │ + return v0 │ +.end method │ + │ +.method public static e(II)I │ + .locals 2 │ + │ + .prologue │ + .line 462 │ + invoke-static {p0}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v1 │ + │ + if-ltz p1, :cond_0 │ + │ + invoke-static {p1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v0 │ + │ + :goto_0 │ + add-int/2addr v0, v1 │ + │ + return v0 │ + │ + :cond_0 │ + const/16 v0, 0xa │ + │ + goto :goto_0 │ +.end method │ + │ +.method public static f(II)I │ + .locals 2 │ + │ + .prologue │ + .line 488 │ + const/4 v0, 0x2 │ │ - .line 29 │ - iput-object p4, p0, Lcom/crashlytics/android/h;->d:Ljava/lang/String; │ + invoke-static {v0}, Lcom/crashlytics/android/h;->a(I)I │ │ - .line 31 │ - iput-object p5, p0, Lcom/crashlytics/android/h;->e:Ljava/lang/String; │ + move-result v0 │ │ - .line 32 │ - iput-object p6, p0, Lcom/crashlytics/android/h;->f:Ljava/lang/String; │ + invoke-static {p1}, Lcom/crashlytics/android/h;->e(I)I │ │ - .line 33 │ - iput p7, p0, Lcom/crashlytics/android/h;->g:I │ + move-result v1 │ │ - .line 34 │ - iput-object p8, p0, Lcom/crashlytics/android/h;->h:Ljava/lang/String; │ + invoke-static {v1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + return v0 │ +.end method │ + │ + │ +# virtual methods │ +.method public final a(IF)V │ + .locals 2 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 146 │ + const/4 v0, 0x1 │ + │ + const/4 v1, 0x5 │ + │ + invoke-virtual {p0, v0, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 147 │ + invoke-static {p2}, Ljava/lang/Float;->floatToRawIntBits(F)I │ + │ + move-result v0 │ + │ + and-int/lit16 v1, v0, 0xff │ + │ + invoke-direct {p0, v1}, Lcom/crashlytics/android/h;->d(I)V │ + │ + shr-int/lit8 v1, v0, 0x8 │ + │ + and-int/lit16 v1, v1, 0xff │ + │ + invoke-direct {p0, v1}, Lcom/crashlytics/android/h;->d(I)V │ + │ + shr-int/lit8 v1, v0, 0x10 │ + │ + and-int/lit16 v1, v1, 0xff │ + │ + invoke-direct {p0, v1}, Lcom/crashlytics/android/h;->d(I)V │ + │ + ushr-int/lit8 v0, v0, 0x18 │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/h;->d(I)V │ + │ + .line 148 │ + return-void │ +.end method │ + │ +.method public final a(II)V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 209 │ + const/4 v0, 0x0 │ + │ + invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 210 │ + invoke-virtual {p0, p2}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 211 │ + return-void │ +.end method │ + │ +.method public final a(IJ)V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 153 │ + const/4 v0, 0x0 │ + │ + invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 154 │ + invoke-direct {p0, p2, p3}, Lcom/crashlytics/android/h;->a(J)V │ + │ + .line 155 │ + return-void │ +.end method │ + │ +.method public final a(ILcom/crashlytics/android/d;)V │ + .locals 8 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v7, 0x0 │ + │ + .line 202 │ + const/4 v0, 0x2 │ + │ + invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 203 │ + invoke-virtual {p2}, Lcom/crashlytics/android/d;->a()I │ + │ + move-result v0 │ + │ + invoke-virtual {p0, v0}, Lcom/crashlytics/android/h;->b(I)V │ + │ + invoke-virtual {p2}, Lcom/crashlytics/android/d;->a()I │ + │ + move-result v0 │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + sub-int/2addr v1, v2 │ + │ + if-lt v1, v0, :cond_1 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + invoke-virtual {p2, v1, v7, v2, v0}, Lcom/crashlytics/android/d;->a([BIII)V │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->c:I │ + │ + add-int/2addr v0, v1 │ + │ + iput v0, p0, Lcom/crashlytics/android/h;->c:I │ + │ + .line 204 │ + :cond_0 │ + :goto_0 │ + return-void │ + │ + .line 203 │ + :cond_1 │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + sub-int/2addr v1, v2 │ + │ + iget-object v2, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + iget v3, p0, Lcom/crashlytics/android/h;->c:I │ + │ + invoke-virtual {p2, v2, v7, v3, v1}, Lcom/crashlytics/android/d;->a([BIII)V │ + │ + add-int/lit8 v2, v1, 0x0 │ + │ + sub-int/2addr v0, v1 │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + iput v1, p0, Lcom/crashlytics/android/h;->c:I │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/h;->a()V │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + if-gt v0, v1, :cond_2 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + invoke-virtual {p2, v1, v2, v7, v0}, Lcom/crashlytics/android/d;->a([BIII)V │ + │ + iput v0, p0, Lcom/crashlytics/android/h;->c:I │ + │ + goto :goto_0 │ + │ + :cond_2 │ + invoke-virtual {p2}, Lcom/crashlytics/android/d;->b()Ljava/io/InputStream; │ + │ + move-result-object v1 │ + │ + int-to-long v3, v2 │ + │ + int-to-long v5, v2 │ + │ + invoke-virtual {v1, v5, v6}, Ljava/io/InputStream;->skip(J)J │ + │ + move-result-wide v5 │ + │ + cmp-long v2, v3, v5 │ + │ + if-eqz v2, :cond_4 │ + │ + new-instance v0, Ljava/lang/IllegalStateException; │ + │ + const-string v1, "Skip failed." │ + │ + invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V │ + │ + throw v0 │ + │ + :cond_3 │ + iget-object v2, p0, Lcom/crashlytics/android/h;->d:Ljava/io/OutputStream; │ + │ + iget-object v4, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + invoke-virtual {v2, v4, v7, v3}, Ljava/io/OutputStream;->write([BII)V │ + │ + sub-int/2addr v0, v3 │ + │ + :cond_4 │ + if-lez v0, :cond_0 │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->b:I │ + │ + invoke-static {v0, v2}, Ljava/lang/Math;->min(II)I │ + │ + move-result v2 │ + │ + iget-object v3, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + invoke-virtual {v1, v3, v7, v2}, Ljava/io/InputStream;->read([BII)I │ + │ + move-result v3 │ + │ + if-eq v3, v2, :cond_3 │ + │ + new-instance v0, Ljava/lang/IllegalStateException; │ + │ + const-string v1, "Read failed." │ + │ + invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V │ + │ + throw v0 │ +.end method │ + │ +.method public final a(ILjava/lang/String;)V │ + .locals 2 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 195 │ + const/4 v0, 0x1 │ + │ + const/4 v1, 0x2 │ + │ + invoke-virtual {p0, v0, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 196 │ + const-string v0, "UTF-8" │ + │ + invoke-virtual {p2, v0}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ + │ + move-result-object v0 │ + │ + array-length v1, v0 │ + │ + invoke-virtual {p0, v1}, Lcom/crashlytics/android/h;->b(I)V │ + │ + invoke-virtual {p0, v0}, Lcom/crashlytics/android/h;->a([B)V │ + │ + .line 197 │ + return-void │ +.end method │ + │ +.method public final a(IZ)V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v0, 0x0 │ + │ + .line 188 │ + invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 189 │ + if-eqz p2, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + :cond_0 │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/h;->d(I)V │ + │ + .line 190 │ + return-void │ +.end method │ + │ +.method public final a([B)V │ + .locals 5 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v4, 0x0 │ + │ + .line 744 │ + array-length v0, p1 │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + sub-int/2addr v1, v2 │ + │ + if-lt v1, v0, :cond_0 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + invoke-static {p1, v4, v1, v2, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->c:I │ + │ + add-int/2addr v0, v1 │ + │ + iput v0, p0, Lcom/crashlytics/android/h;->c:I │ + │ + .line 745 │ + :goto_0 │ + return-void │ + │ + .line 744 │ + :cond_0 │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + iget v2, p0, Lcom/crashlytics/android/h;->c:I │ + │ + sub-int/2addr v1, v2 │ + │ + iget-object v2, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + iget v3, p0, Lcom/crashlytics/android/h;->c:I │ + │ + invoke-static {p1, v4, v2, v3, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ + │ + add-int/lit8 v2, v1, 0x0 │ + │ + sub-int/2addr v0, v1 │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + iput v1, p0, Lcom/crashlytics/android/h;->c:I │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/h;->a()V │ + │ + iget v1, p0, Lcom/crashlytics/android/h;->b:I │ + │ + if-gt v0, v1, :cond_1 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/h;->a:[B │ + │ + invoke-static {p1, v2, v1, v4, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ + │ + iput v0, p0, Lcom/crashlytics/android/h;->c:I │ + │ + goto :goto_0 │ + │ + :cond_1 │ + iget-object v1, p0, Lcom/crashlytics/android/h;->d:Ljava/io/OutputStream; │ + │ + invoke-virtual {v1, p1, v2, v0}, Ljava/io/OutputStream;->write([BII)V │ + │ + goto :goto_0 │ +.end method │ + │ +.method public final b(I)V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 842 │ + :goto_0 │ + and-int/lit8 v0, p1, -0x80 │ + │ + if-nez v0, :cond_0 │ + │ + .line 843 │ + invoke-direct {p0, p1}, Lcom/crashlytics/android/h;->d(I)V │ + │ + .line 844 │ + return-void │ + │ + .line 846 │ + :cond_0 │ + and-int/lit8 v0, p1, 0x7f │ + │ + or-int/lit16 v0, v0, 0x80 │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/h;->d(I)V │ + │ + .line 847 │ + ushr-int/lit8 p1, p1, 0x7 │ + │ + goto :goto_0 │ +.end method │ + │ +.method public final b(II)V │ + .locals 2 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 219 │ + const/4 v0, 0x0 │ + │ + invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 220 │ + if-ltz p2, :cond_0 │ + │ + invoke-virtual {p0, p2}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 221 │ + :goto_0 │ + return-void │ + │ + .line 220 │ + :cond_0 │ + int-to-long v0, p2 │ + │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/h;->a(J)V │ + │ + goto :goto_0 │ +.end method │ + │ +.method public final c(II)V │ + .locals 2 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 240 │ + const/4 v0, 0x2 │ + │ + const/4 v1, 0x0 │ + │ + invoke-virtual {p0, v0, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 241 │ + invoke-static {p2}, Lcom/crashlytics/android/h;->e(I)I │ + │ + move-result v0 │ + │ + invoke-virtual {p0, v0}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 242 │ + return-void │ +.end method │ + │ +.method public final flush()V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 676 │ + iget-object v0, p0, Lcom/crashlytics/android/h;->d:Ljava/io/OutputStream; │ + │ + if-eqz v0, :cond_0 │ + │ + .line 677 │ + invoke-direct {p0}, Lcom/crashlytics/android/h;->a()V │ + │ + .line 679 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method public final g(II)V │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 828 │ + invoke-static {p1, p2}, Lcom/crashlytics/android/ae;->a(II)I │ │ - .line 35 │ - iput-object p9, p0, Lcom/crashlytics/android/h;->i:Ljava/lang/String; │ + move-result v0 │ │ - .line 36 │ - iput-object p10, p0, Lcom/crashlytics/android/h;->j:Lcom/crashlytics/android/ak; │ + invoke-virtual {p0, v0}, Lcom/crashlytics/android/h;->b(I)V │ │ - .line 37 │ + .line 829 │ return-void │ .end method ├── smali/com/crashlytics/android/B.smali │ @@ -1,213 +1,143 @@ │ -.class final enum Lcom/crashlytics/android/B; │ -.super Ljava/lang/Enum; │ +.class final Lcom/crashlytics/android/B; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Ljava/util/concurrent/Callable; │ + │ │ # annotations │ .annotation system Ldalvik/annotation/Signature; │ value = { │ - "Ljava/lang/Enum", │ + "Ljava/lang/Object;", │ + "Ljava/util/concurrent/Callable", │ "<", │ - "Lcom/crashlytics/android/B;", │ + "Ljava/lang/Boolean;", │ ">;" │ } │ .end annotation │ │ │ -# static fields │ -.field private static enum a:Lcom/crashlytics/android/B; │ - │ -.field private static enum b:Lcom/crashlytics/android/B; │ - │ -.field private static enum c:Lcom/crashlytics/android/B; │ - │ -.field private static enum d:Lcom/crashlytics/android/B; │ - │ -.field private static final synthetic f:[Lcom/crashlytics/android/B; │ - │ - │ # instance fields │ -.field private final e:I │ +.field private synthetic a:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method static constructor ()V │ - .locals 7 │ +.method constructor (Lcom/crashlytics/android/v;)V │ + .locals 0 │ │ .prologue │ - const/4 v6, 0x4 │ - │ - const/4 v5, 0x0 │ - │ - const/4 v4, 0x3 │ - │ - const/4 v3, 0x2 │ - │ - const/4 v2, 0x1 │ - │ - .line 57 │ - new-instance v0, Lcom/crashlytics/android/B; │ - │ - const-string v1, "DEVELOPER" │ - │ - invoke-direct {v0, v1, v5, v2}, Lcom/crashlytics/android/B;->(Ljava/lang/String;II)V │ - │ - sput-object v0, Lcom/crashlytics/android/B;->a:Lcom/crashlytics/android/B; │ - │ - new-instance v0, Lcom/crashlytics/android/B; │ - │ - const-string v1, "USER_SIDELOAD" │ + .line 464 │ + iput-object p1, p0, Lcom/crashlytics/android/B;->a:Lcom/crashlytics/android/v; │ │ - invoke-direct {v0, v1, v2, v3}, Lcom/crashlytics/android/B;->(Ljava/lang/String;II)V │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - sput-object v0, Lcom/crashlytics/android/B;->b:Lcom/crashlytics/android/B; │ - │ - new-instance v0, Lcom/crashlytics/android/B; │ - │ - const-string v1, "TEST_DISTRIBUTION" │ + return-void │ +.end method │ │ - invoke-direct {v0, v1, v3, v4}, Lcom/crashlytics/android/B;->(Ljava/lang/String;II)V │ +.method private a()Ljava/lang/Boolean; │ + .locals 5 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ │ - sput-object v0, Lcom/crashlytics/android/B;->c:Lcom/crashlytics/android/B; │ + .prologue │ + .line 468 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/B;->a:Lcom/crashlytics/android/v; │ │ - new-instance v0, Lcom/crashlytics/android/B; │ + invoke-static {v0}, Lcom/crashlytics/android/v;->f(Lcom/crashlytics/android/v;)Ljava/io/File; │ │ - const-string v1, "APP_STORE" │ + move-result-object v0 │ │ - invoke-direct {v0, v1, v4, v6}, Lcom/crashlytics/android/B;->(Ljava/lang/String;II)V │ + invoke-virtual {v0}, Ljava/io/File;->delete()Z │ │ - sput-object v0, Lcom/crashlytics/android/B;->d:Lcom/crashlytics/android/B; │ + move-result v0 │ │ - .line 56 │ - new-array v0, v6, [Lcom/crashlytics/android/B; │ + .line 469 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - sget-object v1, Lcom/crashlytics/android/B;->a:Lcom/crashlytics/android/B; │ + move-result-object v1 │ │ - aput-object v1, v0, v5 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - sget-object v1, Lcom/crashlytics/android/B;->b:Lcom/crashlytics/android/B; │ + move-result-object v1 │ │ - aput-object v1, v0, v2 │ + const-string v2, "Crashlytics" │ │ - sget-object v1, Lcom/crashlytics/android/B;->c:Lcom/crashlytics/android/B; │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - aput-object v1, v0, v3 │ + const-string v4, "Initialization marker file removed: " │ │ - sget-object v1, Lcom/crashlytics/android/B;->d:Lcom/crashlytics/android/B; │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - aput-object v1, v0, v4 │ + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; │ │ - sput-object v0, Lcom/crashlytics/android/B;->f:[Lcom/crashlytics/android/B; │ + move-result-object v3 │ │ - return-void │ -.end method │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ -.method private constructor (Ljava/lang/String;II)V │ - .locals 0 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(I)V" │ - } │ - .end annotation │ + move-result-object v3 │ │ - .prologue │ - .line 61 │ - invoke-direct {p0, p1, p2}, Ljava/lang/Enum;->(Ljava/lang/String;I)V │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 62 │ - iput p3, p0, Lcom/crashlytics/android/B;->e:I │ + .line 470 │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 63 │ - return-void │ -.end method │ - │ -.method public static a(Ljava/lang/String;)Lcom/crashlytics/android/B; │ - .locals 1 │ - │ - .prologue │ - .line 81 │ - if-eqz p0, :cond_0 │ - │ - const/4 v0, 0x1 │ + move-result-object v0 │ │ + .line 473 │ :goto_0 │ - if-eqz v0, :cond_1 │ - │ - .line 82 │ - sget-object v0, Lcom/crashlytics/android/B;->d:Lcom/crashlytics/android/B; │ - │ - .line 84 │ - :goto_1 │ return-object v0 │ │ - .line 81 │ - :cond_0 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ + .line 471 │ + :catch_0 │ + move-exception v0 │ │ - .line 84 │ - :cond_1 │ - sget-object v0, Lcom/crashlytics/android/B;->a:Lcom/crashlytics/android/B; │ + .line 472 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - goto :goto_1 │ -.end method │ + move-result-object v1 │ │ -.method public static valueOf(Ljava/lang/String;)Lcom/crashlytics/android/B; │ - .locals 1 │ - .param p0, "name" # Ljava/lang/String; │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .prologue │ - .line 56 │ - const-class v0, Lcom/crashlytics/android/B; │ + move-result-object v1 │ │ - invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; │ + const-string v2, "Crashlytics" │ │ - move-result-object v0 │ - │ - check-cast v0, Lcom/crashlytics/android/B; │ + const-string v3, "Problem encountered deleting Crashlytics initialization marker." │ │ - return-object v0 │ -.end method │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ -.method public static values()[Lcom/crashlytics/android/B; │ - .locals 1 │ - │ - .prologue │ - .line 56 │ - sget-object v0, Lcom/crashlytics/android/B;->f:[Lcom/crashlytics/android/B; │ + .line 473 │ + const/4 v0, 0x0 │ │ - invoke-virtual {v0}, [Lcom/crashlytics/android/B;->clone()Ljava/lang/Object; │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v0 │ │ - check-cast v0, [Lcom/crashlytics/android/B; │ - │ - return-object v0 │ + goto :goto_0 │ .end method │ │ │ # virtual methods │ -.method public final a()I │ - .locals 1 │ - │ - .prologue │ - .line 66 │ - iget v0, p0, Lcom/crashlytics/android/B;->e:I │ - │ - return v0 │ -.end method │ - │ -.method public final toString()Ljava/lang/String; │ +.method public final synthetic call()Ljava/lang/Object; │ .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ │ .prologue │ - .line 71 │ - iget v0, p0, Lcom/crashlytics/android/B;->e:I │ - │ - invoke-static {v0}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; │ + .line 464 │ + invoke-direct {p0}, Lcom/crashlytics/android/B;->a()Ljava/lang/Boolean; │ │ move-result-object v0 │ │ return-object v0 │ .end method ├── smali/com/crashlytics/android/CrashlyticsMissingDependencyException.smali │ @@ -5,76 +5,120 @@ │ │ # static fields │ .field private static final serialVersionUID:J = -0xffb143a38fa305bL │ │ │ # direct methods │ .method constructor (Ljava/lang/String;Ljava/lang/String;)V │ - .locals 6 │ + .locals 1 │ .param p1, "apiKey" # Ljava/lang/String; │ .param p2, "packageName" # Ljava/lang/String; │ │ .prologue │ - .line 12 │ - new-instance v0, Ljava/lang/StringBuilder; │ + .line 18 │ + invoke-static {p1, p2}, Lcom/crashlytics/android/CrashlyticsMissingDependencyException;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ - invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ + move-result-object v0 │ + │ + invoke-direct {p0, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V │ │ - const-string v1, "\nSomething is missing! Find it here: \n" │ + .line 19 │ + return-void │ +.end method │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ +.method private static a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + .locals 6 │ │ + .prologue │ + .line 22 │ new-instance v1, Ljava/lang/StringBuilder; │ │ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ │ - const-string v2, "http://www.crashlytics.com/api/v1/%s/android/confirm/%s" │ + .line 25 │ + :try_start_0 │ + const-string v0, "\nThis app relies on Crashlytics. Configure your build environment here: \n" │ + │ + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + .line 26 │ + new-instance v0, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ + │ + const-string v2, "https://crashlytics.com/register/%s/android/%s" │ │ const/4 v3, 0x2 │ │ new-array v3, v3, [Ljava/lang/Object; │ │ const/4 v4, 0x0 │ │ - invoke-static {p1}, Ljava/net/URLEncoder;->encode(Ljava/lang/String;)Ljava/lang/String; │ + const-string v5, "UTF-8" │ + │ + invoke-static {p0, v5}, Ljava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ const/4 v4, 0x1 │ │ - invoke-static {p2}, Ljava/net/URLEncoder;->encode(Ljava/lang/String;)Ljava/lang/String; │ + const-string v5, "UTF-8" │ + │ + invoke-static {p1, v5}, Ljava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v1 │ + move-result-object v0 │ │ const-string v2, "\n" │ │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v1 │ + move-result-object v0 │ │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v1 │ + move-result-object v0 │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + :try_end_0 │ + .catch Ljava/io/UnsupportedEncodingException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + .line 31 │ + :goto_0 │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ - invoke-direct {p0, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V │ + return-object v0 │ │ - .line 13 │ - return-void │ + .line 27 │ + :catch_0 │ + move-exception v0 │ + │ + .line 28 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v2 │ + │ + const-string v3, "Crashlytics" │ + │ + const-string v4, "Could not find UTF-8 encoding." │ + │ + invoke-interface {v2, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/w.smali │ @@ -1,243 +1,53 @@ │ .class final Lcom/crashlytics/android/w; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/lang/Runnable; │ - │ - │ -# instance fields │ -.field final synthetic a:Lcom/crashlytics/android/C; │ - │ -.field final synthetic b:Lcom/crashlytics/android/Crashlytics; │ - │ -.field private synthetic c:Landroid/app/Activity; │ - │ -.field private synthetic d:Lcom/crashlytics/android/af; │ - │ -.field private synthetic e:Lcom/crashlytics/android/am; │ +.implements Ljava/io/FilenameFilter; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/C;Lcom/crashlytics/android/af;Lcom/crashlytics/android/am;)V │ +.method constructor ()V │ .locals 0 │ │ .prologue │ - .line 687 │ - iput-object p1, p0, Lcom/crashlytics/android/w;->b:Lcom/crashlytics/android/Crashlytics; │ - │ - iput-object p2, p0, Lcom/crashlytics/android/w;->c:Landroid/app/Activity; │ - │ - iput-object p3, p0, Lcom/crashlytics/android/w;->a:Lcom/crashlytics/android/C; │ - │ - iput-object p4, p0, Lcom/crashlytics/android/w;->d:Lcom/crashlytics/android/af; │ - │ - iput-object p5, p0, Lcom/crashlytics/android/w;->e:Lcom/crashlytics/android/am; │ - │ + .line 124 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final run()V │ - .locals 11 │ +.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ + .locals 2 │ + .param p2, "filename" # Ljava/lang/String; │ │ .prologue │ - const/4 v10, 0x0 │ - │ - .line 690 │ - new-instance v0, Landroid/app/AlertDialog$Builder; │ - │ - iget-object v1, p0, Lcom/crashlytics/android/w;->c:Landroid/app/Activity; │ - │ - invoke-direct {v0, v1}, Landroid/app/AlertDialog$Builder;->(Landroid/content/Context;)V │ - │ - .line 692 │ - new-instance v1, Lcom/crashlytics/android/x; │ - │ - invoke-direct {v1, p0}, Lcom/crashlytics/android/x;->(Lcom/crashlytics/android/w;)V │ - │ - .line 700 │ - iget-object v2, p0, Lcom/crashlytics/android/w;->c:Landroid/app/Activity; │ - │ - invoke-virtual {v2}, Landroid/app/Activity;->getResources()Landroid/content/res/Resources; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; │ - │ - move-result-object v2 │ - │ - iget v2, v2, Landroid/util/DisplayMetrics;->density:F │ - │ - .line 704 │ - iget-object v3, p0, Lcom/crashlytics/android/w;->b:Lcom/crashlytics/android/Crashlytics; │ - │ - const/4 v4, 0x5 │ - │ - invoke-static {v3, v2, v4}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ - │ - move-result v3 │ - │ - .line 706 │ - new-instance v4, Landroid/widget/TextView; │ - │ - iget-object v5, p0, Lcom/crashlytics/android/w;->c:Landroid/app/Activity; │ - │ - invoke-direct {v4, v5}, Landroid/widget/TextView;->(Landroid/content/Context;)V │ - │ - .line 707 │ - const/16 v5, 0xf │ - │ - invoke-virtual {v4, v5}, Landroid/widget/TextView;->setAutoLinkMask(I)V │ - │ - .line 708 │ - iget-object v5, p0, Lcom/crashlytics/android/w;->d:Lcom/crashlytics/android/af; │ - │ - invoke-virtual {v5}, Lcom/crashlytics/android/af;->b()Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v4, v5}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ - │ - .line 709 │ - iget-object v5, p0, Lcom/crashlytics/android/w;->c:Landroid/app/Activity; │ - │ - const v6, 0x1030044 │ - │ - invoke-virtual {v4, v5, v6}, Landroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V │ - │ - .line 710 │ - invoke-virtual {v4, v3, v3, v3, v3}, Landroid/widget/TextView;->setPadding(IIII)V │ - │ - .line 711 │ - invoke-virtual {v4, v10}, Landroid/widget/TextView;->setFocusable(Z)V │ - │ - .line 713 │ - new-instance v3, Landroid/widget/ScrollView; │ - │ - iget-object v5, p0, Lcom/crashlytics/android/w;->c:Landroid/app/Activity; │ - │ - invoke-direct {v3, v5}, Landroid/widget/ScrollView;->(Landroid/content/Context;)V │ + .line 127 │ + invoke-virtual {p2}, Ljava/lang/String;->length()I │ │ - .line 714 │ - iget-object v5, p0, Lcom/crashlytics/android/w;->b:Lcom/crashlytics/android/Crashlytics; │ + move-result v0 │ │ - const/16 v6, 0xe │ + const/16 v1, 0x27 │ │ - invoke-static {v5, v2, v6}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ + if-ne v0, v1, :cond_0 │ │ - move-result v5 │ + const-string v0, ".cls" │ │ - iget-object v6, p0, Lcom/crashlytics/android/w;->b:Lcom/crashlytics/android/Crashlytics; │ + invoke-virtual {p2, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ │ - const/4 v7, 0x2 │ + move-result v0 │ │ - invoke-static {v6, v2, v7}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ + if-eqz v0, :cond_0 │ │ - move-result v6 │ + const/4 v0, 0x1 │ │ - iget-object v7, p0, Lcom/crashlytics/android/w;->b:Lcom/crashlytics/android/Crashlytics; │ + :goto_0 │ + return v0 │ │ - const/16 v8, 0xa │ - │ - invoke-static {v7, v2, v8}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ - │ - move-result v7 │ - │ - iget-object v8, p0, Lcom/crashlytics/android/w;->b:Lcom/crashlytics/android/Crashlytics; │ - │ - const/16 v9, 0xc │ - │ - invoke-static {v8, v2, v9}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ - │ - move-result v2 │ - │ - invoke-virtual {v3, v5, v6, v7, v2}, Landroid/widget/ScrollView;->setPadding(IIII)V │ - │ - .line 716 │ - invoke-virtual {v3, v4}, Landroid/widget/ScrollView;->addView(Landroid/view/View;)V │ - │ - .line 720 │ - invoke-virtual {v0, v3}, Landroid/app/AlertDialog$Builder;->setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder; │ - │ - move-result-object v2 │ - │ - iget-object v3, p0, Lcom/crashlytics/android/w;->d:Lcom/crashlytics/android/af; │ - │ - invoke-virtual {v3}, Lcom/crashlytics/android/af;->a()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v2, v3}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2, v10}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder; │ - │ - move-result-object v2 │ - │ - iget-object v3, p0, Lcom/crashlytics/android/w;->d:Lcom/crashlytics/android/af; │ - │ - invoke-virtual {v3}, Lcom/crashlytics/android/af;->c()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v2, v3, v1}, Landroid/app/AlertDialog$Builder;->setNeutralButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ - │ - .line 723 │ - iget-object v1, p0, Lcom/crashlytics/android/w;->e:Lcom/crashlytics/android/am; │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/am;->e()Z │ - │ - move-result v1 │ - │ - if-eqz v1, :cond_0 │ - │ - .line 724 │ - new-instance v1, Lcom/crashlytics/android/y; │ - │ - invoke-direct {v1, p0}, Lcom/crashlytics/android/y;->(Lcom/crashlytics/android/w;)V │ - │ - .line 731 │ - iget-object v2, p0, Lcom/crashlytics/android/w;->d:Lcom/crashlytics/android/af; │ - │ - invoke-virtual {v2}, Lcom/crashlytics/android/af;->e()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v0, v2, v1}, Landroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ - │ - .line 734 │ :cond_0 │ - iget-object v1, p0, Lcom/crashlytics/android/w;->e:Lcom/crashlytics/android/am; │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/am;->g()Z │ + const/4 v0, 0x0 │ │ - move-result v1 │ - │ - if-eqz v1, :cond_1 │ - │ - .line 735 │ - new-instance v1, Lcom/crashlytics/android/z; │ - │ - invoke-direct {v1, p0}, Lcom/crashlytics/android/z;->(Lcom/crashlytics/android/w;)V │ - │ - .line 743 │ - iget-object v2, p0, Lcom/crashlytics/android/w;->d:Lcom/crashlytics/android/af; │ - │ - invoke-virtual {v2}, Lcom/crashlytics/android/af;->d()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v0, v2, v1}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ - │ - .line 746 │ - :cond_1 │ - invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog; │ - │ - .line 747 │ - return-void │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/P.smali │ @@ -1,60 +1,71 @@ │ .class final Lcom/crashlytics/android/P; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/util/Comparator; │ +.implements Ljava/lang/Runnable; │ │ │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Ljava/util/Comparator", │ - "<", │ - "Ljava/io/File;", │ - ">;" │ - } │ -.end annotation │ +# instance fields │ +.field private synthetic a:Ljava/util/Date; │ + │ +.field private synthetic b:Ljava/lang/Thread; │ + │ +.field private synthetic c:Ljava/lang/Throwable; │ + │ +.field private synthetic d:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method constructor ()V │ +.method constructor (Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ .locals 0 │ │ .prologue │ - .line 135 │ + .line 359 │ + iput-object p1, p0, Lcom/crashlytics/android/P;->d:Lcom/crashlytics/android/v; │ + │ + iput-object p2, p0, Lcom/crashlytics/android/P;->a:Ljava/util/Date; │ + │ + iput-object p3, p0, Lcom/crashlytics/android/P;->b:Ljava/lang/Thread; │ + │ + iput-object p4, p0, Lcom/crashlytics/android/P;->c:Ljava/lang/Throwable; │ + │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final synthetic compare(Ljava/lang/Object;Ljava/lang/Object;)I │ - .locals 2 │ - .param p1, "x0" # Ljava/lang/Object; │ - .param p2, "x1" # Ljava/lang/Object; │ +.method public final run()V │ + .locals 4 │ │ .prologue │ - .line 135 │ - check-cast p1, Ljava/io/File; │ - │ - .end local p1 # "x0":Ljava/lang/Object; │ - check-cast p2, Ljava/io/File; │ + .line 362 │ + iget-object v0, p0, Lcom/crashlytics/android/P;->d:Lcom/crashlytics/android/v; │ │ - .end local p2 # "x1":Ljava/lang/Object; │ - invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String; │ + invoke-static {v0}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/v;)Ljava/util/concurrent/atomic/AtomicBoolean; │ │ move-result-object v0 │ │ - invoke-virtual {p2}, Ljava/io/File;->getName()Ljava/lang/String; │ + invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ │ - move-result-object v1 │ + move-result v0 │ │ - invoke-virtual {v0, v1}, Ljava/lang/String;->compareTo(Ljava/lang/String;)I │ + if-nez v0, :cond_0 │ │ - move-result v0 │ + .line 363 │ + iget-object v0, p0, Lcom/crashlytics/android/P;->d:Lcom/crashlytics/android/v; │ + │ + iget-object v1, p0, Lcom/crashlytics/android/P;->a:Ljava/util/Date; │ + │ + iget-object v2, p0, Lcom/crashlytics/android/P;->b:Ljava/lang/Thread; │ │ - return v0 │ + iget-object v3, p0, Lcom/crashlytics/android/P;->c:Ljava/lang/Throwable; │ + │ + invoke-static {v0, v1, v2, v3}, Lcom/crashlytics/android/v;->b(Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + │ + .line 365 │ + :cond_0 │ + return-void │ .end method ├── smali/com/crashlytics/android/D.smali │ @@ -1,26 +1,61 @@ │ -.class interface abstract Lcom/crashlytics/android/D; │ -.super Ljava/lang/Object; │ +.class final Lcom/crashlytics/android/D; │ +.super Lcom/crashlytics/android/internal/aa; │ .source "SourceFile" │ │ │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "", │ - "Ljava/lang/Object;" │ - } │ -.end annotation │ +# instance fields │ +.field private synthetic a:Ljava/io/File; │ + │ + │ +# direct methods │ +.method constructor (Lcom/crashlytics/android/v;Ljava/io/File;)V │ + .locals 0 │ + │ + .prologue │ + .line 1007 │ + iput-object p2, p0, Lcom/crashlytics/android/D;->a:Ljava/io/File; │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/internal/aa;->()V │ + │ + return-void │ +.end method │ │ │ # virtual methods │ -.method public abstract a(Lcom/crashlytics/android/au;)Ljava/lang/Object; │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Lcom/crashlytics/android/au;", │ - ")TT;" │ - } │ - .end annotation │ +.method public final a()V │ + .locals 4 │ + │ + .prologue │ + .line 1009 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->q()Lcom/crashlytics/android/V; │ + │ + move-result-object v0 │ + │ + .line 1013 │ + if-eqz v0, :cond_0 │ + │ + .line 1014 │ + new-instance v1, Lcom/crashlytics/android/aa; │ + │ + invoke-direct {v1, v0}, Lcom/crashlytics/android/aa;->(Lcom/crashlytics/android/V;)V │ + │ + new-instance v0, Lcom/crashlytics/android/Z; │ + │ + iget-object v2, p0, Lcom/crashlytics/android/D;->a:Ljava/io/File; │ + │ + invoke-static {}, Lcom/crashlytics/android/v;->j()Ljava/util/Map; │ + │ + move-result-object v3 │ + │ + invoke-direct {v0, v2, v3}, Lcom/crashlytics/android/Z;->(Ljava/io/File;Ljava/util/Map;)V │ + │ + invoke-virtual {v1, v0}, Lcom/crashlytics/android/aa;->a(Lcom/crashlytics/android/Z;)Z │ + │ + .line 1016 │ + :cond_0 │ + return-void │ .end method ├── smali/com/crashlytics/android/f.smali │ @@ -1,45 +1,322 @@ │ -.class final enum Lcom/crashlytics/android/f; │ -.super Lcom/crashlytics/android/d; │ +.class final Lcom/crashlytics/android/f; │ +.super Ljava/io/FileOutputStream; │ .source "SourceFile" │ │ │ +# static fields │ +.field public static final a:Ljava/io/FilenameFilter; │ + │ + │ +# instance fields │ +.field private final b:Ljava/lang/String; │ + │ +.field private c:Ljava/io/File; │ + │ +.field private d:Z │ + │ + │ # direct methods │ -.method constructor (Ljava/lang/String;I)V │ - .locals 2 │ +.method static constructor ()V │ + .locals 1 │ │ .prologue │ - .line 62 │ - const/4 v0, 0x1 │ + .line 99 │ + new-instance v0, Lcom/crashlytics/android/g; │ │ - const/4 v1, 0x0 │ + invoke-direct {v0}, Lcom/crashlytics/android/g;->()V │ │ - invoke-direct {p0, p1, v0, v1}, Lcom/crashlytics/android/d;->(Ljava/lang/String;IB)V │ + sput-object v0, Lcom/crashlytics/android/f;->a:Ljava/io/FilenameFilter; │ │ return-void │ .end method │ │ +.method public constructor (Ljava/io/File;Ljava/lang/String;)V │ + .locals 3 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/FileNotFoundException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 40 │ + new-instance v0, Ljava/io/File; │ + │ + new-instance v1, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + const-string v2, ".cls_temp" │ + │ + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-direct {v0, p1, v1}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + │ + invoke-direct {p0, v0}, Ljava/io/FileOutputStream;->(Ljava/io/File;)V │ + │ + .line 33 │ + const/4 v0, 0x0 │ + │ + iput-boolean v0, p0, Lcom/crashlytics/android/f;->d:Z │ + │ + .line 41 │ + new-instance v0, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + sget-object v1, Ljava/io/File;->separator:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + iput-object v0, p0, Lcom/crashlytics/android/f;->b:Ljava/lang/String; │ + │ + .line 42 │ + new-instance v0, Ljava/io/File; │ + │ + new-instance v1, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ + │ + iget-object v2, p0, Lcom/crashlytics/android/f;->b:Ljava/lang/String; │ + │ + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + const-string v2, ".cls_temp" │ + │ + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/f;->c:Ljava/io/File; │ + │ + .line 43 │ + return-void │ +.end method │ + │ │ # virtual methods │ -.method public final a(Ljava/lang/String;Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ +.method public final a()V │ .locals 1 │ - .annotation system Ldalvik/annotation/Signature; │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + .line 78 │ + iget-boolean v0, p0, Lcom/crashlytics/android/f;->d:Z │ + │ + if-eqz v0, :cond_0 │ + │ + .line 84 │ + :goto_0 │ + return-void │ + │ + .line 81 │ + :cond_0 │ + const/4 v0, 0x1 │ + │ + iput-boolean v0, p0, Lcom/crashlytics/android/f;->d:Z │ + │ + .line 82 │ + invoke-super {p0}, Ljava/io/FileOutputStream;->flush()V │ + │ + .line 83 │ + invoke-super {p0}, Ljava/io/FileOutputStream;->close()V │ + │ + goto :goto_0 │ +.end method │ + │ +.method public final declared-synchronized close()V │ + .locals 5 │ + .annotation system Ldalvik/annotation/Throws; │ value = { │ - "(", │ - "Ljava/lang/String;", │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;)", │ - "Lcom/crashlytics/android/HttpRequest;" │ + Ljava/io/IOException; │ } │ .end annotation │ │ .prologue │ - .line 65 │ - invoke-static {p1}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/CharSequence;)Lcom/crashlytics/android/HttpRequest; │ + .line 47 │ + monitor-enter p0 │ + │ + :try_start_0 │ + iget-boolean v0, p0, Lcom/crashlytics/android/f;->d:Z │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + if-eqz v0, :cond_0 │ + │ + .line 58 │ + :goto_0 │ + monitor-exit p0 │ + │ + return-void │ + │ + .line 50 │ + :cond_0 │ + const/4 v0, 0x1 │ + │ + :try_start_1 │ + iput-boolean v0, p0, Lcom/crashlytics/android/f;->d:Z │ + │ + .line 51 │ + invoke-super {p0}, Ljava/io/FileOutputStream;->flush()V │ + │ + .line 52 │ + invoke-super {p0}, Ljava/io/FileOutputStream;->close()V │ + │ + .line 54 │ + new-instance v1, Ljava/io/File; │ + │ + new-instance v0, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ + │ + iget-object v2, p0, Lcom/crashlytics/android/f;->b:Ljava/lang/String; │ + │ + invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + const-string v2, ".cls" │ + │ + invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ - return-object v0 │ + invoke-direct {v1, v0}, Ljava/io/File;->(Ljava/lang/String;)V │ + │ + .line 56 │ + iget-object v0, p0, Lcom/crashlytics/android/f;->c:Ljava/io/File; │ + │ + invoke-virtual {v0, v1}, Ljava/io/File;->renameTo(Ljava/io/File;)Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + .line 57 │ + const/4 v0, 0x0 │ + │ + iput-object v0, p0, Lcom/crashlytics/android/f;->c:Ljava/io/File; │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + │ + goto :goto_0 │ + │ + .line 47 │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit p0 │ + │ + throw v0 │ + │ + .line 60 │ + :cond_1 │ + :try_start_2 │ + const-string v0, "" │ + │ + .line 61 │ + invoke-virtual {v1}, Ljava/io/File;->exists()Z │ + │ + move-result v2 │ + │ + if-eqz v2, :cond_3 │ + │ + .line 62 │ + const-string v0, " (target already exists)" │ + │ + .line 66 │ + :cond_2 │ + :goto_1 │ + new-instance v2, Ljava/io/IOException; │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Could not rename temp file: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + iget-object v4, p0, Lcom/crashlytics/android/f;->c:Ljava/io/File; │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, " -> " │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-direct {v2, v0}, Ljava/io/IOException;->(Ljava/lang/String;)V │ + │ + throw v2 │ + │ + .line 63 │ + :cond_3 │ + iget-object v2, p0, Lcom/crashlytics/android/f;->c:Ljava/io/File; │ + │ + invoke-virtual {v2}, Ljava/io/File;->exists()Z │ + │ + move-result v2 │ + │ + if-nez v2, :cond_2 │ + │ + .line 64 │ + const-string v0, " (source does not exist)" │ + :try_end_2 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + │ + goto :goto_1 │ .end method ├── smali/com/crashlytics/android/d.smali │ @@ -1,147 +1,285 @@ │ -.class abstract enum Lcom/crashlytics/android/d; │ -.super Ljava/lang/Enum; │ +.class final Lcom/crashlytics/android/d; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ -# interfaces │ -.implements Lcom/crashlytics/android/aj; │ │ +# instance fields │ +.field private final a:[B │ │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Enum", │ - "<", │ - "Lcom/crashlytics/android/d;", │ - ">;", │ - "Lcom/crashlytics/android/aj;" │ - } │ -.end annotation │ +.field private volatile b:I │ │ │ -# static fields │ -.field public static final enum a:Lcom/crashlytics/android/d; │ +# direct methods │ +.method static constructor ()V │ + .locals 2 │ │ -.field public static final enum b:Lcom/crashlytics/android/d; │ + .prologue │ + .line 84 │ + new-instance v0, Lcom/crashlytics/android/d; │ │ -.field public static final enum c:Lcom/crashlytics/android/d; │ + const/4 v1, 0x0 │ │ -.field private static final synthetic d:[Lcom/crashlytics/android/d; │ + new-array v1, v1, [B │ │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/d;->([B)V │ │ -# direct methods │ -.method static constructor ()V │ - .locals 5 │ + return-void │ +.end method │ + │ +.method private constructor ([B)V │ + .locals 1 │ │ .prologue │ - const/4 v4, 0x2 │ + .line 51 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - const/4 v3, 0x1 │ + .line 278 │ + const/4 v0, 0x0 │ │ - const/4 v2, 0x0 │ + iput v0, p0, Lcom/crashlytics/android/d;->b:I │ │ - .line 56 │ - new-instance v0, Lcom/crashlytics/android/e; │ + .line 52 │ + iput-object p1, p0, Lcom/crashlytics/android/d;->a:[B │ │ - const-string v1, "GET" │ + .line 53 │ + return-void │ +.end method │ │ - invoke-direct {v0, v1, v2}, Lcom/crashlytics/android/e;->(Ljava/lang/String;I)V │ +.method public static a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + .locals 3 │ │ - sput-object v0, Lcom/crashlytics/android/d;->a:Lcom/crashlytics/android/d; │ + .prologue │ + .line 136 │ + :try_start_0 │ + new-instance v0, Lcom/crashlytics/android/d; │ │ - .line 62 │ - new-instance v0, Lcom/crashlytics/android/f; │ + const-string v1, "UTF-8" │ │ - const-string v1, "POST" │ + invoke-virtual {p0, v1}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ │ - invoke-direct {v0, v1, v3}, Lcom/crashlytics/android/f;->(Ljava/lang/String;I)V │ + move-result-object v1 │ │ - sput-object v0, Lcom/crashlytics/android/d;->b:Lcom/crashlytics/android/d; │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/d;->([B)V │ + :try_end_0 │ + .catch Ljava/io/UnsupportedEncodingException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 68 │ - new-instance v0, Lcom/crashlytics/android/g; │ + return-object v0 │ │ - const-string v1, "PUT" │ + .line 137 │ + :catch_0 │ + move-exception v0 │ │ - invoke-direct {v0, v1, v4}, Lcom/crashlytics/android/g;->(Ljava/lang/String;I)V │ + .line 138 │ + new-instance v1, Ljava/lang/RuntimeException; │ │ - sput-object v0, Lcom/crashlytics/android/d;->c:Lcom/crashlytics/android/d; │ + const-string v2, "UTF-8 not supported." │ │ - .line 55 │ - const/4 v0, 0x3 │ + invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - new-array v0, v0, [Lcom/crashlytics/android/d; │ + throw v1 │ +.end method │ │ - sget-object v1, Lcom/crashlytics/android/d;->a:Lcom/crashlytics/android/d; │ +.method public static a([BII)Lcom/crashlytics/android/d; │ + .locals 2 │ │ - aput-object v1, v0, v2 │ + .prologue │ + const/4 v1, 0x0 │ │ - sget-object v1, Lcom/crashlytics/android/d;->b:Lcom/crashlytics/android/d; │ + .line 91 │ + new-array v0, p2, [B │ │ - aput-object v1, v0, v3 │ + .line 92 │ + invoke-static {p0, v1, v0, v1, p2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ │ - sget-object v1, Lcom/crashlytics/android/d;->c:Lcom/crashlytics/android/d; │ + .line 93 │ + new-instance v1, Lcom/crashlytics/android/d; │ │ - aput-object v1, v0, v4 │ + invoke-direct {v1, v0}, Lcom/crashlytics/android/d;->([B)V │ │ - sput-object v0, Lcom/crashlytics/android/d;->d:[Lcom/crashlytics/android/d; │ + return-object v1 │ +.end method │ │ - return-void │ + │ +# virtual methods │ +.method public final a()I │ + .locals 1 │ + │ + .prologue │ + .line 68 │ + iget-object v0, p0, Lcom/crashlytics/android/d;->a:[B │ + │ + array-length v0, v0 │ + │ + return v0 │ .end method │ │ -.method private constructor (Ljava/lang/String;I)V │ - .locals 0 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "()V" │ - } │ - .end annotation │ +.method public final a([BIII)V │ + .locals 1 │ │ .prologue │ - .line 55 │ - invoke-direct {p0, p1, p2}, Ljava/lang/Enum;->(Ljava/lang/String;I)V │ + .line 194 │ + iget-object v0, p0, Lcom/crashlytics/android/d;->a:[B │ + │ + invoke-static {v0, p2, p1, p3, p4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ │ + .line 195 │ return-void │ .end method │ │ -.method synthetic constructor (Ljava/lang/String;IB)V │ - .locals 0 │ +.method public final b()Ljava/io/InputStream; │ + .locals 2 │ │ .prologue │ - .line 55 │ - invoke-direct {p0, p1, p2}, Lcom/crashlytics/android/d;->(Ljava/lang/String;I)V │ + .line 309 │ + new-instance v0, Ljava/io/ByteArrayInputStream; │ │ - return-void │ + iget-object v1, p0, Lcom/crashlytics/android/d;->a:[B │ + │ + invoke-direct {v0, v1}, Ljava/io/ByteArrayInputStream;->([B)V │ + │ + return-object v0 │ .end method │ │ -.method public static valueOf(Ljava/lang/String;)Lcom/crashlytics/android/d; │ - .locals 1 │ - .param p0, "name" # Ljava/lang/String; │ +.method public final equals(Ljava/lang/Object;)Z │ + .locals 8 │ + .param p1, "o" # Ljava/lang/Object; │ │ .prologue │ - .line 55 │ - const-class v0, Lcom/crashlytics/android/d; │ + const/4 v0, 0x1 │ │ - invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; │ + const/4 v1, 0x0 │ │ - move-result-object v0 │ + .line 253 │ + if-ne p1, p0, :cond_1 │ │ - check-cast v0, Lcom/crashlytics/android/d; │ + .line 275 │ + .end local p1 # "o":Ljava/lang/Object; │ + :cond_0 │ + :goto_0 │ + return v0 │ │ - return-object v0 │ + .line 257 │ + .restart local p1 # "o":Ljava/lang/Object; │ + :cond_1 │ + instance-of v2, p1, Lcom/crashlytics/android/d; │ + │ + if-nez v2, :cond_2 │ + │ + move v0, v1 │ + │ + .line 258 │ + goto :goto_0 │ + │ + .line 261 │ + :cond_2 │ + check-cast p1, Lcom/crashlytics/android/d; │ + │ + .line 262 │ + .end local p1 # "o":Ljava/lang/Object; │ + iget-object v2, p0, Lcom/crashlytics/android/d;->a:[B │ + │ + array-length v3, v2 │ + │ + .line 263 │ + iget-object v2, p1, Lcom/crashlytics/android/d;->a:[B │ + │ + array-length v2, v2 │ + │ + if-eq v3, v2, :cond_3 │ + │ + move v0, v1 │ + │ + .line 264 │ + goto :goto_0 │ + │ + .line 267 │ + :cond_3 │ + iget-object v4, p0, Lcom/crashlytics/android/d;->a:[B │ + │ + .line 268 │ + iget-object v5, p1, Lcom/crashlytics/android/d;->a:[B │ + │ + move v2, v1 │ + │ + .line 269 │ + :goto_1 │ + if-ge v2, v3, :cond_0 │ + │ + .line 270 │ + aget-byte v6, v4, v2 │ + │ + aget-byte v7, v5, v2 │ + │ + if-eq v6, v7, :cond_4 │ + │ + move v0, v1 │ + │ + .line 271 │ + goto :goto_0 │ + │ + .line 269 │ + :cond_4 │ + add-int/lit8 v2, v2, 0x1 │ + │ + goto :goto_1 │ .end method │ │ -.method public static values()[Lcom/crashlytics/android/d; │ - .locals 1 │ +.method public final hashCode()I │ + .locals 5 │ │ .prologue │ - .line 55 │ - sget-object v0, Lcom/crashlytics/android/d;->d:[Lcom/crashlytics/android/d; │ + .line 282 │ + iget v0, p0, Lcom/crashlytics/android/d;->b:I │ │ - invoke-virtual {v0}, [Lcom/crashlytics/android/d;->clone()Ljava/lang/Object; │ + .line 284 │ + if-nez v0, :cond_2 │ │ - move-result-object v0 │ + .line 285 │ + iget-object v4, p0, Lcom/crashlytics/android/d;->a:[B │ │ - check-cast v0, [Lcom/crashlytics/android/d; │ + .line 286 │ + iget-object v0, p0, Lcom/crashlytics/android/d;->a:[B │ │ - return-object v0 │ + array-length v2, v0 │ + │ + .line 289 │ + const/4 v0, 0x0 │ + │ + move v1, v0 │ + │ + move v0, v2 │ + │ + :goto_0 │ + if-ge v1, v2, :cond_0 │ + │ + .line 290 │ + mul-int/lit8 v0, v0, 0x1f │ + │ + aget-byte v3, v4, v1 │ + │ + add-int/2addr v3, v0 │ + │ + .line 289 │ + add-int/lit8 v0, v1, 0x1 │ + │ + move v1, v0 │ + │ + move v0, v3 │ + │ + goto :goto_0 │ + │ + .line 292 │ + :cond_0 │ + if-nez v0, :cond_1 │ + │ + .line 293 │ + const/4 v0, 0x1 │ + │ + .line 296 │ + :cond_1 │ + iput v0, p0, Lcom/crashlytics/android/d;->b:I │ + │ + .line 299 │ + :cond_2 │ + return v0 │ .end method ├── smali/com/crashlytics/android/i.smali │ @@ -1,102 +1,22 @@ │ .class final Lcom/crashlytics/android/i; │ -.super Ljava/lang/Object; │ +.super Ljava/io/IOException; │ .source "SourceFile" │ │ │ -# instance fields │ -.field private final a:Ljava/lang/String; │ - │ -.field private final b:Ljava/lang/String; │ - │ -.field private final c:Ljava/lang/String; │ - │ -.field private final d:Z │ +# static fields │ +.field private static final serialVersionUID:J = -0x606a6e83ad3191dbL │ │ │ # direct methods │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLcom/crashlytics/android/c;)V │ - .locals 0 │ - │ - .prologue │ - .line 21 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ - │ - .line 22 │ - iput-object p2, p0, Lcom/crashlytics/android/i;->a:Ljava/lang/String; │ - │ - .line 24 │ - iput-object p3, p0, Lcom/crashlytics/android/i;->b:Ljava/lang/String; │ - │ - .line 25 │ - iput-object p4, p0, Lcom/crashlytics/android/i;->c:Ljava/lang/String; │ - │ - .line 26 │ - iput-boolean p5, p0, Lcom/crashlytics/android/i;->d:Z │ - │ - .line 27 │ - return-void │ -.end method │ - │ - │ -# virtual methods │ -.method public final a()Ljava/lang/String; │ - .locals 1 │ - │ - .prologue │ - .line 39 │ - iget-object v0, p0, Lcom/crashlytics/android/i;->b:Ljava/lang/String; │ - │ - return-object v0 │ -.end method │ - │ -.method public final b()Ljava/lang/String; │ - .locals 1 │ - │ - .prologue │ - .line 43 │ - iget-object v0, p0, Lcom/crashlytics/android/i;->c:Ljava/lang/String; │ - │ - return-object v0 │ -.end method │ - │ -.method public final c()Z │ +.method constructor ()V │ .locals 1 │ │ .prologue │ - .line 47 │ - iget-boolean v0, p0, Lcom/crashlytics/android/i;->d:Z │ - │ - return v0 │ -.end method │ - │ -.method public final d()Z │ - .locals 2 │ - │ - .prologue │ - .line 55 │ - const-string v0, "new" │ - │ - iget-object v1, p0, Lcom/crashlytics/android/i;->a:Ljava/lang/String; │ + .line 718 │ + const-string v0, "CodedOutputStream was writing to a flat byte array and ran out of space." │ │ - invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ + invoke-direct {p0, v0}, Ljava/io/IOException;->(Ljava/lang/String;)V │ │ - move-result v0 │ - │ - return v0 │ -.end method │ - │ -.method public final e()Z │ - .locals 2 │ - │ - .prologue │ - .line 59 │ - const-string v0, "configured" │ - │ - iget-object v1, p0, Lcom/crashlytics/android/i;->a:Ljava/lang/String; │ - │ - invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ - │ - move-result v0 │ - │ - return v0 │ + .line 720 │ + return-void │ .end method ├── smali/com/crashlytics/android/A.smali │ @@ -1,149 +1,75 @@ │ .class final Lcom/crashlytics/android/A; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/lang/Runnable; │ +.implements Ljava/util/concurrent/Callable; │ │ │ -# instance fields │ -.field private synthetic a:Ljava/io/File; │ - │ -.field private synthetic b:Ljava/util/concurrent/CountDownLatch; │ - │ -.field private synthetic c:Landroid/content/Context; │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Ljava/util/concurrent/Callable", │ + "<", │ + "Ljava/lang/Void;", │ + ">;" │ + } │ +.end annotation │ │ -.field private synthetic d:F │ │ -.field private synthetic e:Ljava/util/concurrent/CountDownLatch; │ - │ -.field private synthetic f:Lcom/crashlytics/android/Crashlytics; │ +# instance fields │ +.field private synthetic a:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/Crashlytics;Ljava/io/File;Ljava/util/concurrent/CountDownLatch;Landroid/content/Context;FLjava/util/concurrent/CountDownLatch;)V │ +.method constructor (Lcom/crashlytics/android/v;)V │ .locals 0 │ │ .prologue │ - .line 905 │ - iput-object p1, p0, Lcom/crashlytics/android/A;->f:Lcom/crashlytics/android/Crashlytics; │ - │ - iput-object p2, p0, Lcom/crashlytics/android/A;->a:Ljava/io/File; │ - │ - iput-object p3, p0, Lcom/crashlytics/android/A;->b:Ljava/util/concurrent/CountDownLatch; │ - │ - iput-object p4, p0, Lcom/crashlytics/android/A;->c:Landroid/content/Context; │ - │ - iput p5, p0, Lcom/crashlytics/android/A;->d:F │ - │ - iput-object p6, p0, Lcom/crashlytics/android/A;->e:Ljava/util/concurrent/CountDownLatch; │ + .line 448 │ + iput-object p1, p0, Lcom/crashlytics/android/A;->a:Lcom/crashlytics/android/v; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final run()V │ +.method public final synthetic call()Ljava/lang/Object; │ .locals 3 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ │ .prologue │ - .line 912 │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/A;->a:Ljava/io/File; │ - │ - invoke-virtual {v0}, Ljava/io/File;->createNewFile()Z │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - .line 917 │ - iget-object v0, p0, Lcom/crashlytics/android/A;->b:Ljava/util/concurrent/CountDownLatch; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ - │ - .line 921 │ - :goto_0 │ - :try_start_1 │ - iget-object v0, p0, Lcom/crashlytics/android/A;->f:Lcom/crashlytics/android/Crashlytics; │ - │ - iget-object v1, p0, Lcom/crashlytics/android/A;->c:Landroid/content/Context; │ - │ - iget v2, p0, Lcom/crashlytics/android/A;->d:F │ + .line 448 │ + iget-object v0, p0, Lcom/crashlytics/android/A;->a:Lcom/crashlytics/android/v; │ │ - invoke-static {v0, v1, v2}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;F)V │ + invoke-static {v0}, Lcom/crashlytics/android/v;->f(Lcom/crashlytics/android/v;)Ljava/io/File; │ │ - .line 924 │ - iget-object v0, p0, Lcom/crashlytics/android/A;->a:Ljava/io/File; │ + move-result-object v0 │ │ - invoke-virtual {v0}, Ljava/io/File;->delete()Z │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - .line 928 │ - iget-object v0, p0, Lcom/crashlytics/android/A;->e:Ljava/util/concurrent/CountDownLatch; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ - │ - .line 929 │ - :goto_1 │ - return-void │ - │ - .line 913 │ - :catch_0 │ - move-exception v0 │ - │ - .line 914 │ - :try_start_2 │ - const-string v1, "Problem encountered creating Crashlytics initialization marker." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_2 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ - │ - .line 917 │ - iget-object v0, p0, Lcom/crashlytics/android/A;->b:Ljava/util/concurrent/CountDownLatch; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ - │ - goto :goto_0 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - iget-object v1, p0, Lcom/crashlytics/android/A;->b:Ljava/util/concurrent/CountDownLatch; │ - │ - invoke-virtual {v1}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ - │ - throw v0 │ - │ - .line 925 │ - :catch_1 │ - move-exception v0 │ + invoke-virtual {v0}, Ljava/io/File;->createNewFile()Z │ │ - .line 926 │ - :try_start_3 │ - const-string v1, "Problem encountered during Crashlytics initialization." │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ + move-result-object v0 │ │ - .line 928 │ - iget-object v0, p0, Lcom/crashlytics/android/A;->e:Ljava/util/concurrent/CountDownLatch; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ + move-result-object v0 │ │ - goto :goto_1 │ + const-string v1, "Crashlytics" │ │ - :catchall_1 │ - move-exception v0 │ + const-string v2, "Initialization marker file created." │ │ - iget-object v1, p0, Lcom/crashlytics/android/A;->e:Ljava/util/concurrent/CountDownLatch; │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - invoke-virtual {v1}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ + const/4 v0, 0x0 │ │ - throw v0 │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/I.smali │ @@ -7,60 +7,84 @@ │ │ │ # annotations │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "Ljava/lang/Object;", │ "Ljava/util/concurrent/Callable", │ - "<", │ - "Ljava/lang/Void;", │ - ">;" │ + ";" │ } │ .end annotation │ │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/E; │ +.field private synthetic a:Ljava/util/concurrent/Callable; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;)V │ +.method constructor (Lcom/crashlytics/android/v;Ljava/util/concurrent/Callable;)V │ .locals 0 │ │ .prologue │ - .line 433 │ - iput-object p1, p0, Lcom/crashlytics/android/I;->a:Lcom/crashlytics/android/E; │ + .line 1986 │ + iput-object p2, p0, Lcom/crashlytics/android/I;->a:Ljava/util/concurrent/Callable; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final synthetic call()Ljava/lang/Object; │ - .locals 1 │ +.method public final call()Ljava/lang/Object; │ + .locals 4 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "()TT;" │ + } │ + .end annotation │ + │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Ljava/lang/Exception; │ } │ .end annotation │ │ .prologue │ - .line 433 │ - iget-object v0, p0, Lcom/crashlytics/android/I;->a:Lcom/crashlytics/android/E; │ + .line 1990 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/I;->a:Ljava/util/concurrent/Callable; │ + │ + invoke-interface {v0}, Ljava/util/concurrent/Callable;->call()Ljava/lang/Object; │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + move-result-object v0 │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/E;->c()Z │ + .line 1993 │ + :goto_0 │ + return-object v0 │ │ - move-result v0 │ + .line 1991 │ + :catch_0 │ + move-exception v0 │ │ - if-nez v0, :cond_0 │ + .line 1992 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - iget-object v0, p0, Lcom/crashlytics/android/I;->a:Lcom/crashlytics/android/E; │ + move-result-object v1 │ │ - invoke-static {v0}, Lcom/crashlytics/android/E;->c(Lcom/crashlytics/android/E;)V │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - :cond_0 │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Failed to execute task." │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 1993 │ const/4 v0, 0x0 │ │ - return-object v0 │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/K.smali │ @@ -1,47 +1,41 @@ │ .class final Lcom/crashlytics/android/K; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/lang/Runnable; │ - │ - │ -# instance fields │ -.field private synthetic a:Lcom/crashlytics/android/E; │ +.implements Ljava/io/FilenameFilter; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;)V │ +.method constructor ()V │ .locals 0 │ │ .prologue │ - .line 1865 │ - iput-object p1, p0, Lcom/crashlytics/android/K;->a:Lcom/crashlytics/android/E; │ - │ + .line 149 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final run()V │ - .locals 3 │ +.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ + .locals 1 │ + .param p2, "filename" # Ljava/lang/String; │ │ .prologue │ - .line 1868 │ - iget-object v0, p0, Lcom/crashlytics/android/K;->a:Lcom/crashlytics/android/E; │ + .line 152 │ + invoke-static {}, Lcom/crashlytics/android/v;->i()Ljava/util/regex/Pattern; │ │ - iget-object v1, p0, Lcom/crashlytics/android/K;->a:Lcom/crashlytics/android/E; │ + move-result-object v0 │ │ - sget-object v2, Lcom/crashlytics/android/n;->a:Ljava/io/FilenameFilter; │ + invoke-virtual {v0, p2}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ │ - invoke-static {v1, v2}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/E;Ljava/io/FilenameFilter;)[Ljava/io/File; │ + move-result-object v0 │ │ - move-result-object v1 │ + invoke-virtual {v0}, Ljava/util/regex/Matcher;->matches()Z │ │ - invoke-virtual {v0, v1}, Lcom/crashlytics/android/E;->a([Ljava/io/File;)V │ + move-result v0 │ │ - .line 1869 │ - return-void │ + return v0 │ .end method ├── smali/com/crashlytics/android/R.smali │ @@ -1,38 +1,61 @@ │ .class final Lcom/crashlytics/android/R; │ -.super Landroid/content/BroadcastReceiver; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Ljava/io/FilenameFilter; │ + │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/E; │ +.field private final a:Ljava/lang/String; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;)V │ +.method public constructor (Ljava/lang/String;)V │ .locals 0 │ │ .prologue │ - .line 266 │ - iput-object p1, p0, Lcom/crashlytics/android/R;->a:Lcom/crashlytics/android/E; │ + .line 75 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - invoke-direct {p0}, Landroid/content/BroadcastReceiver;->()V │ + .line 76 │ + iput-object p1, p0, Lcom/crashlytics/android/R;->a:Ljava/lang/String; │ │ + .line 77 │ return-void │ .end method │ │ │ # virtual methods │ -.method public final onReceive(Landroid/content/Context;Landroid/content/Intent;)V │ - .locals 2 │ +.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ + .locals 1 │ + .param p2, "filename" # Ljava/lang/String; │ │ .prologue │ - .line 269 │ - iget-object v0, p0, Lcom/crashlytics/android/R;->a:Lcom/crashlytics/android/E; │ + .line 81 │ + iget-object v0, p0, Lcom/crashlytics/android/R;->a:Ljava/lang/String; │ │ - const/4 v1, 0x1 │ + invoke-virtual {p2, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/E;Z)Z │ + move-result v0 │ │ - .line 270 │ - return-void │ + if-eqz v0, :cond_0 │ + │ + const-string v0, ".cls_temp" │ + │ + invoke-virtual {p2, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + :goto_0 │ + return v0 │ + │ + :cond_0 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/H.smali │ @@ -1,81 +1,60 @@ │ .class final Lcom/crashlytics/android/H; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Lcom/crashlytics/android/QueueFile$ElementReader; │ +.implements Ljava/util/Comparator; │ │ │ -# instance fields │ -.field private synthetic a:[B │ - │ -.field private synthetic b:[I │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Ljava/util/Comparator", │ + "<", │ + "Ljava/io/File;", │ + ">;" │ + } │ +.end annotation │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;[B[I)V │ +.method constructor ()V │ .locals 0 │ │ .prologue │ - .line 411 │ - iput-object p2, p0, Lcom/crashlytics/android/H;->a:[B │ - │ - iput-object p3, p0, Lcom/crashlytics/android/H;->b:[I │ - │ + .line 132 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final read(Ljava/io/InputStream;I)V │ - .locals 3 │ - .param p1, "in" # Ljava/io/InputStream; │ - .param p2, "length" # I │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ +.method public final synthetic compare(Ljava/lang/Object;Ljava/lang/Object;)I │ + .locals 2 │ + .param p1, "x0" # Ljava/lang/Object; │ + .param p2, "x1" # Ljava/lang/Object; │ │ .prologue │ - .line 415 │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/H;->a:[B │ - │ - iget-object v1, p0, Lcom/crashlytics/android/H;->b:[I │ - │ - const/4 v2, 0x0 │ + .line 132 │ + check-cast p1, Ljava/io/File; │ │ - aget v1, v1, v2 │ + .end local p1 # "x0":Ljava/lang/Object; │ + check-cast p2, Ljava/io/File; │ │ - invoke-virtual {p1, v0, v1, p2}, Ljava/io/InputStream;->read([BII)I │ + .end local p2 # "x1":Ljava/lang/Object; │ + invoke-virtual {p2}, Ljava/io/File;->getName()Ljava/lang/String; │ │ - .line 416 │ - iget-object v0, p0, Lcom/crashlytics/android/H;->b:[I │ + move-result-object v0 │ │ - const/4 v1, 0x0 │ + invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String; │ │ - aget v2, v0, v1 │ - │ - add-int/2addr v2, p2 │ - │ - aput v2, v0, v1 │ - :try_end_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - .line 418 │ - invoke-virtual {p1}, Ljava/io/InputStream;->close()V │ - │ - .line 419 │ - return-void │ + move-result-object v1 │ │ - .line 418 │ - :catchall_0 │ - move-exception v0 │ + invoke-virtual {v0, v1}, Ljava/lang/String;->compareTo(Ljava/lang/String;)I │ │ - invoke-virtual {p1}, Ljava/io/InputStream;->close()V │ + move-result v0 │ │ - throw v0 │ + return v0 │ .end method ├── smali/com/crashlytics/android/r.smali │ @@ -1,83 +1,47 @@ │ .class final Lcom/crashlytics/android/r; │ -.super Landroid/os/AsyncTask; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ - │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Landroid/os/AsyncTask", │ - "<", │ - "Ljava/lang/Void;", │ - "Ljava/lang/Void;", │ - "Ljava/lang/Void;", │ - ">;" │ - } │ -.end annotation │ +# interfaces │ +.implements Landroid/content/DialogInterface$OnClickListener; │ │ │ # instance fields │ -.field private synthetic a:J │ - │ -.field private synthetic b:Lcom/crashlytics/android/CrashTest; │ +.field private synthetic a:Lcom/crashlytics/android/p; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/CrashTest;J)V │ +.method constructor (Lcom/crashlytics/android/p;)V │ .locals 0 │ │ .prologue │ - .line 40 │ - iput-object p1, p0, Lcom/crashlytics/android/r;->b:Lcom/crashlytics/android/CrashTest; │ - │ - iput-wide p2, p0, Lcom/crashlytics/android/r;->a:J │ + .line 706 │ + iput-object p1, p0, Lcom/crashlytics/android/r;->a:Lcom/crashlytics/android/p; │ │ - invoke-direct {p0}, Landroid/os/AsyncTask;->()V │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ -.method private varargs a()Ljava/lang/Void; │ + │ +# virtual methods │ +.method public final onClick(Landroid/content/DialogInterface;I)V │ .locals 2 │ + .param p1, "dialog" # Landroid/content/DialogInterface; │ │ .prologue │ - .line 44 │ - :try_start_0 │ - iget-wide v0, p0, Lcom/crashlytics/android/r;->a:J │ + .line 709 │ + iget-object v0, p0, Lcom/crashlytics/android/r;->a:Lcom/crashlytics/android/p; │ │ - invoke-static {v0, v1}, Ljava/lang/Thread;->sleep(J)V │ - :try_end_0 │ - .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0 │ + iget-object v0, v0, Lcom/crashlytics/android/p;->a:Lcom/crashlytics/android/u; │ │ - .line 48 │ - :goto_0 │ - iget-object v0, p0, Lcom/crashlytics/android/r;->b:Lcom/crashlytics/android/CrashTest; │ + const/4 v1, 0x0 │ │ - const-string v1, "Background thread crash" │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/u;->a(Z)V │ │ - invoke-virtual {v0, v1}, Lcom/crashlytics/android/CrashTest;->throwRuntimeException(Ljava/lang/String;)V │ + .line 710 │ + invoke-interface {p1}, Landroid/content/DialogInterface;->dismiss()V │ │ - .line 49 │ - const/4 v0, 0x0 │ - │ - return-object v0 │ - │ - :catch_0 │ - move-exception v0 │ - │ - goto :goto_0 │ -.end method │ - │ - │ -# virtual methods │ -.method protected final synthetic doInBackground([Ljava/lang/Object;)Ljava/lang/Object; │ - .locals 1 │ - │ - .prologue │ - .line 40 │ - invoke-direct {p0}, Lcom/crashlytics/android/r;->a()Ljava/lang/Void; │ - │ - move-result-object v0 │ - │ - return-object v0 │ + .line 711 │ + return-void │ .end method ├── smali/com/crashlytics/android/g.smali │ @@ -1,45 +1,35 @@ │ -.class final enum Lcom/crashlytics/android/g; │ -.super Lcom/crashlytics/android/d; │ +.class final Lcom/crashlytics/android/g; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Ljava/io/FilenameFilter; │ + │ │ # direct methods │ -.method constructor (Ljava/lang/String;I)V │ - .locals 2 │ +.method constructor ()V │ + .locals 0 │ │ .prologue │ - .line 68 │ - const/4 v0, 0x2 │ - │ - const/4 v1, 0x0 │ - │ - invoke-direct {p0, p1, v0, v1}, Lcom/crashlytics/android/d;->(Ljava/lang/String;IB)V │ + .line 99 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final a(Ljava/lang/String;Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ +.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ .locals 1 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Ljava/lang/String;", │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;)", │ - "Lcom/crashlytics/android/HttpRequest;" │ - } │ - .end annotation │ + .param p2, "filename" # Ljava/lang/String; │ │ .prologue │ - .line 71 │ - invoke-static {p1}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/CharSequence;)Lcom/crashlytics/android/HttpRequest; │ + .line 102 │ + const-string v0, ".cls_temp" │ + │ + invoke-virtual {p2, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ │ - move-result-object v0 │ + move-result v0 │ │ - return-object v0 │ + return v0 │ .end method ├── smali/com/crashlytics/android/u.smali │ @@ -1,56 +1,95 @@ │ .class final Lcom/crashlytics/android/u; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ -# interfaces │ -.implements Lcom/crashlytics/android/D; │ │ +# instance fields │ +.field private a:Z │ │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Lcom/crashlytics/android/D", │ - "<", │ - "Lcom/crashlytics/android/ab;", │ - ">;" │ - } │ -.end annotation │ +.field private final b:Ljava/util/concurrent/CountDownLatch; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/Crashlytics;)V │ - .locals 0 │ +.method private constructor (Lcom/crashlytics/android/Crashlytics;)V │ + .locals 2 │ │ .prologue │ - .line 650 │ + .line 985 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ + .line 986 │ + const/4 v0, 0x0 │ + │ + iput-boolean v0, p0, Lcom/crashlytics/android/u;->a:Z │ + │ + .line 987 │ + new-instance v0, Ljava/util/concurrent/CountDownLatch; │ + │ + const/4 v1, 0x1 │ + │ + invoke-direct {v0, v1}, Ljava/util/concurrent/CountDownLatch;->(I)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/u;->b:Ljava/util/concurrent/CountDownLatch; │ + │ + return-void │ +.end method │ + │ +.method synthetic constructor (Lcom/crashlytics/android/Crashlytics;B)V │ + .locals 0 │ + │ + .prologue │ + .line 985 │ + invoke-direct {p0, p1}, Lcom/crashlytics/android/u;->(Lcom/crashlytics/android/Crashlytics;)V │ + │ return-void │ .end method │ │ │ # virtual methods │ -.method public final synthetic a(Lcom/crashlytics/android/au;)Ljava/lang/Object; │ - .locals 3 │ +.method final a(Z)V │ + .locals 1 │ │ .prologue │ - .line 650 │ - new-instance v0, Lcom/crashlytics/android/ad; │ + .line 990 │ + iput-boolean p1, p0, Lcom/crashlytics/android/u;->a:Z │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->l()Ljava/lang/String; │ + .line 991 │ + iget-object v0, p0, Lcom/crashlytics/android/u;->b:Ljava/util/concurrent/CountDownLatch; │ │ - move-result-object v1 │ + invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ │ - invoke-virtual {p1}, Lcom/crashlytics/android/au;->b()Lcom/crashlytics/android/i; │ + .line 992 │ + return-void │ +.end method │ │ - move-result-object v2 │ +.method final a()Z │ + .locals 1 │ │ - invoke-virtual {v2}, Lcom/crashlytics/android/i;->b()Ljava/lang/String; │ + .prologue │ + .line 995 │ + iget-boolean v0, p0, Lcom/crashlytics/android/u;->a:Z │ │ - move-result-object v2 │ + return v0 │ +.end method │ + │ +.method final b()V │ + .locals 1 │ + │ + .prologue │ + .line 1000 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/u;->b:Ljava/util/concurrent/CountDownLatch; │ + │ + invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->await()V │ + :try_end_0 │ + .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 1004 │ + :goto_0 │ + return-void │ │ - invoke-direct {v0, v1, v2}, Lcom/crashlytics/android/ad;->(Ljava/lang/String;Ljava/lang/String;)V │ + :catch_0 │ + move-exception v0 │ │ - return-object v0 │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/k.smali │ @@ -1,285 +1,68 @@ │ .class final Lcom/crashlytics/android/k; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Lcom/crashlytics/android/internal/aG; │ │ -# instance fields │ -.field private final a:[B │ │ -.field private volatile b:I │ +# instance fields │ +.field private synthetic a:Lcom/crashlytics/android/PinningInfoProvider; │ │ │ # direct methods │ -.method static constructor ()V │ - .locals 2 │ +.method constructor (Lcom/crashlytics/android/PinningInfoProvider;)V │ + .locals 0 │ │ .prologue │ - .line 84 │ - new-instance v0, Lcom/crashlytics/android/k; │ - │ - const/4 v1, 0x0 │ - │ - new-array v1, v1, [B │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/k;->([B)V │ - │ - return-void │ -.end method │ - │ -.method private constructor ([B)V │ - .locals 1 │ + .line 433 │ + iput-object p1, p0, Lcom/crashlytics/android/k;->a:Lcom/crashlytics/android/PinningInfoProvider; │ │ - .prologue │ - .line 51 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 278 │ - const/4 v0, 0x0 │ - │ - iput v0, p0, Lcom/crashlytics/android/k;->b:I │ - │ - .line 52 │ - iput-object p1, p0, Lcom/crashlytics/android/k;->a:[B │ - │ - .line 53 │ return-void │ .end method │ │ -.method public static a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - .locals 3 │ - │ - .prologue │ - .line 136 │ - :try_start_0 │ - new-instance v0, Lcom/crashlytics/android/k; │ - │ - const-string v1, "UTF-8" │ - │ - invoke-virtual {p0, v1}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ - │ - move-result-object v1 │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/k;->([B)V │ - :try_end_0 │ - .catch Ljava/io/UnsupportedEncodingException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - return-object v0 │ - │ - .line 137 │ - :catch_0 │ - move-exception v0 │ - │ - .line 138 │ - new-instance v1, Ljava/lang/RuntimeException; │ - │ - const-string v2, "UTF-8 not supported." │ - │ - invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - throw v1 │ -.end method │ - │ -.method public static a([BII)Lcom/crashlytics/android/k; │ - .locals 2 │ - │ - .prologue │ - const/4 v1, 0x0 │ - │ - .line 91 │ - new-array v0, p2, [B │ - │ - .line 92 │ - invoke-static {p0, v1, v0, v1, p2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ - │ - .line 93 │ - new-instance v1, Lcom/crashlytics/android/k; │ - │ - invoke-direct {v1, v0}, Lcom/crashlytics/android/k;->([B)V │ - │ - return-object v1 │ -.end method │ - │ │ # virtual methods │ -.method public final a()I │ - .locals 1 │ - │ - .prologue │ - .line 68 │ - iget-object v0, p0, Lcom/crashlytics/android/k;->a:[B │ - │ - array-length v0, v0 │ - │ - return v0 │ -.end method │ - │ -.method public final a([BIII)V │ +.method public final a()Ljava/io/InputStream; │ .locals 1 │ │ .prologue │ - .line 194 │ - iget-object v0, p0, Lcom/crashlytics/android/k;->a:[B │ + .line 436 │ + iget-object v0, p0, Lcom/crashlytics/android/k;->a:Lcom/crashlytics/android/PinningInfoProvider; │ │ - invoke-static {v0, p2, p1, p3, p4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ - │ - .line 195 │ - return-void │ -.end method │ + invoke-interface {v0}, Lcom/crashlytics/android/PinningInfoProvider;->getKeyStoreStream()Ljava/io/InputStream; │ │ -.method public final b()Ljava/io/InputStream; │ - .locals 2 │ - │ - .prologue │ - .line 309 │ - new-instance v0, Ljava/io/ByteArrayInputStream; │ - │ - iget-object v1, p0, Lcom/crashlytics/android/k;->a:[B │ - │ - invoke-direct {v0, v1}, Ljava/io/ByteArrayInputStream;->([B)V │ + move-result-object v0 │ │ return-object v0 │ .end method │ │ -.method public final equals(Ljava/lang/Object;)Z │ - .locals 8 │ - .param p1, "o" # Ljava/lang/Object; │ +.method public final b()Ljava/lang/String; │ + .locals 1 │ │ .prologue │ - const/4 v0, 0x1 │ - │ - const/4 v1, 0x0 │ - │ - .line 253 │ - if-ne p1, p0, :cond_1 │ - │ - .line 275 │ - .end local p1 # "o":Ljava/lang/Object; │ - :cond_0 │ - :goto_0 │ - return v0 │ - │ - .line 257 │ - .restart local p1 # "o":Ljava/lang/Object; │ - :cond_1 │ - instance-of v2, p1, Lcom/crashlytics/android/k; │ - │ - if-nez v2, :cond_2 │ - │ - move v0, v1 │ - │ - .line 258 │ - goto :goto_0 │ - │ - .line 261 │ - :cond_2 │ - check-cast p1, Lcom/crashlytics/android/k; │ - │ - .line 262 │ - .end local p1 # "o":Ljava/lang/Object; │ - iget-object v2, p0, Lcom/crashlytics/android/k;->a:[B │ - │ - array-length v3, v2 │ - │ - .line 263 │ - iget-object v2, p1, Lcom/crashlytics/android/k;->a:[B │ - │ - array-length v2, v2 │ - │ - if-eq v3, v2, :cond_3 │ - │ - move v0, v1 │ - │ - .line 264 │ - goto :goto_0 │ - │ - .line 267 │ - :cond_3 │ - iget-object v4, p0, Lcom/crashlytics/android/k;->a:[B │ - │ - .line 268 │ - iget-object v5, p1, Lcom/crashlytics/android/k;->a:[B │ - │ - move v2, v1 │ - │ - .line 269 │ - :goto_1 │ - if-ge v2, v3, :cond_0 │ + .line 441 │ + iget-object v0, p0, Lcom/crashlytics/android/k;->a:Lcom/crashlytics/android/PinningInfoProvider; │ │ - .line 270 │ - aget-byte v6, v4, v2 │ + invoke-interface {v0}, Lcom/crashlytics/android/PinningInfoProvider;->getKeyStorePassword()Ljava/lang/String; │ │ - aget-byte v7, v5, v2 │ + move-result-object v0 │ │ - if-eq v6, v7, :cond_4 │ - │ - move v0, v1 │ - │ - .line 271 │ - goto :goto_0 │ - │ - .line 269 │ - :cond_4 │ - add-int/lit8 v2, v2, 0x1 │ - │ - goto :goto_1 │ + return-object v0 │ .end method │ │ -.method public final hashCode()I │ - .locals 5 │ +.method public final c()[Ljava/lang/String; │ + .locals 1 │ │ .prologue │ - .line 282 │ - iget v0, p0, Lcom/crashlytics/android/k;->b:I │ - │ - .line 284 │ - if-nez v0, :cond_2 │ - │ - .line 285 │ - iget-object v4, p0, Lcom/crashlytics/android/k;->a:[B │ - │ - .line 286 │ - iget-object v0, p0, Lcom/crashlytics/android/k;->a:[B │ - │ - array-length v2, v0 │ - │ - .line 289 │ - const/4 v0, 0x0 │ - │ - move v1, v0 │ + .line 446 │ + iget-object v0, p0, Lcom/crashlytics/android/k;->a:Lcom/crashlytics/android/PinningInfoProvider; │ │ - move v0, v2 │ + invoke-interface {v0}, Lcom/crashlytics/android/PinningInfoProvider;->getPins()[Ljava/lang/String; │ │ - :goto_0 │ - if-ge v1, v2, :cond_0 │ + move-result-object v0 │ │ - .line 290 │ - mul-int/lit8 v0, v0, 0x1f │ - │ - aget-byte v3, v4, v1 │ - │ - add-int/2addr v3, v0 │ - │ - .line 289 │ - add-int/lit8 v0, v1, 0x1 │ - │ - move v1, v0 │ - │ - move v0, v3 │ - │ - goto :goto_0 │ - │ - .line 292 │ - :cond_0 │ - if-nez v0, :cond_1 │ - │ - .line 293 │ - const/4 v0, 0x1 │ - │ - .line 296 │ - :cond_1 │ - iput v0, p0, Lcom/crashlytics/android/k;->b:I │ - │ - .line 299 │ - :cond_2 │ - return v0 │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/CrashTest.smali │ @@ -4,178 +4,188 @@ │ │ │ # direct methods │ .method public constructor ()V │ .locals 0 │ │ .prologue │ - .line 16 │ + .line 18 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ .method public crashAsyncTask(J)V │ .locals 4 │ .param p1, "delayMs" # J │ │ .prologue │ - .line 40 │ - new-instance v0, Lcom/crashlytics/android/r; │ + .line 42 │ + new-instance v0, Lcom/crashlytics/android/j; │ │ - invoke-direct {v0, p0, p1, p2}, Lcom/crashlytics/android/r;->(Lcom/crashlytics/android/CrashTest;J)V │ + invoke-direct {v0, p0, p1, p2}, Lcom/crashlytics/android/j;->(Lcom/crashlytics/android/CrashTest;J)V │ │ - .line 52 │ + .line 54 │ const/4 v1, 0x1 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ const/4 v2, 0x0 │ │ const/4 v3, 0x0 │ │ aput-object v3, v1, v2 │ │ invoke-virtual {v0, v1}, Landroid/os/AsyncTask;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ - .line 53 │ + .line 55 │ return-void │ .end method │ │ .method public indexOutOfBounds()V │ - .locals 3 │ + .locals 5 │ │ .prologue │ - .line 27 │ + .line 29 │ const/4 v0, 0x2 │ │ new-array v0, v0, [I │ │ - .line 28 │ + .line 30 │ const/16 v1, 0xa │ │ aget v0, v0, v1 │ │ - .line 32 │ - new-instance v1, Ljava/lang/StringBuilder; │ + .line 34 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ │ - const-string v2, "Out of bounds value: " │ + const-string v2, "Crashlytics" │ │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + const-string v4, "Out of bounds value: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + invoke-interface {v1, v2, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 33 │ + .line 35 │ return-void │ .end method │ │ .method public stackOverflow()V │ .locals 0 │ │ .prologue │ - .line 23 │ + .line 25 │ invoke-virtual {p0}, Lcom/crashlytics/android/CrashTest;->stackOverflow()V │ │ - .line 24 │ + .line 26 │ return-void │ .end method │ │ .method public throwFiveChainedExceptions()V │ .locals 3 │ │ .prologue │ - .line 60 │ + .line 62 │ :try_start_0 │ const-string v0, "1" │ │ new-instance v1, Ljava/lang/RuntimeException; │ │ invoke-direct {v1, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V │ │ throw v1 │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 63 │ + .line 65 │ :catch_0 │ move-exception v0 │ │ - .line 62 │ + .line 64 │ :try_start_1 │ new-instance v1, Ljava/lang/RuntimeException; │ │ const-string v2, "2" │ │ invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ throw v1 │ :try_end_1 │ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ │ - .line 66 │ + .line 68 │ :catch_1 │ move-exception v0 │ │ - .line 65 │ + .line 67 │ :try_start_2 │ new-instance v1, Ljava/lang/RuntimeException; │ │ const-string v2, "3" │ │ invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ throw v1 │ :try_end_2 │ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_2 │ │ - .line 69 │ + .line 71 │ :catch_2 │ move-exception v0 │ │ - .line 68 │ + .line 70 │ :try_start_3 │ new-instance v1, Ljava/lang/RuntimeException; │ │ const-string v2, "4" │ │ invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ throw v1 │ :try_end_3 │ .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_3 │ │ - .line 72 │ + .line 74 │ :catch_3 │ move-exception v0 │ │ - .line 71 │ + .line 73 │ new-instance v1, Ljava/lang/RuntimeException; │ │ const-string v2, "5" │ │ invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;Ljava/lang/Throwable;)V │ │ throw v1 │ .end method │ │ .method public throwRuntimeException(Ljava/lang/String;)V │ .locals 1 │ .param p1, "message" # Ljava/lang/String; │ │ .prologue │ - .line 19 │ + .line 21 │ new-instance v0, Ljava/lang/RuntimeException; │ │ invoke-direct {v0, p1}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V │ │ throw v0 │ .end method ├── smali/com/crashlytics/android/T.smali │ @@ -1,75 +1,18 @@ │ .class final Lcom/crashlytics/android/T; │ -.super Ljava/lang/Object; │ +.super Lcom/crashlytics/android/a; │ .source "SourceFile" │ │ -# interfaces │ -.implements Ljava/util/concurrent/Callable; │ - │ - │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Ljava/util/concurrent/Callable", │ - "<", │ - "Ljava/lang/Void;", │ - ">;" │ - } │ -.end annotation │ - │ - │ -# instance fields │ -.field private synthetic a:Ljava/util/Date; │ - │ -.field private synthetic b:Ljava/lang/Thread; │ - │ -.field private synthetic c:Ljava/lang/Throwable; │ - │ -.field private synthetic d:Lcom/crashlytics/android/E; │ - │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - .locals 0 │ +.method public constructor (Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ + .locals 1 │ │ .prologue │ - .line 309 │ - iput-object p1, p0, Lcom/crashlytics/android/T;->d:Lcom/crashlytics/android/E; │ - │ - iput-object p2, p0, Lcom/crashlytics/android/T;->a:Ljava/util/Date; │ - │ - iput-object p3, p0, Lcom/crashlytics/android/T;->b:Ljava/lang/Thread; │ - │ - iput-object p4, p0, Lcom/crashlytics/android/T;->c:Ljava/lang/Throwable; │ + .line 14 │ + sget-object v0, Lcom/crashlytics/android/internal/ax;->b:Lcom/crashlytics/android/internal/ax; │ │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + invoke-direct {p0, p1, p2, p3, v0}, Lcom/crashlytics/android/a;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;Lcom/crashlytics/android/internal/ax;)V │ │ + .line 15 │ return-void │ .end method │ - │ - │ -# virtual methods │ -.method public final synthetic call()Ljava/lang/Object; │ - .locals 4 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 309 │ - iget-object v0, p0, Lcom/crashlytics/android/T;->d:Lcom/crashlytics/android/E; │ - │ - iget-object v1, p0, Lcom/crashlytics/android/T;->a:Ljava/util/Date; │ - │ - iget-object v2, p0, Lcom/crashlytics/android/T;->b:Ljava/lang/Thread; │ - │ - iget-object v3, p0, Lcom/crashlytics/android/T;->c:Ljava/lang/Throwable; │ - │ - invoke-static {v0, v1, v2, v3}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - const/4 v0, 0x0 │ - │ - return-object v0 │ -.end method ├── smali/com/crashlytics/android/ae.smali │ @@ -1,324 +1,17 @@ │ .class final Lcom/crashlytics/android/ae; │ -.super Lcom/crashlytics/android/b; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ -# interfaces │ -.implements Lcom/crashlytics/android/ay; │ - │ │ # direct methods │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;)V │ +.method static a(II)I │ .locals 1 │ │ .prologue │ - .line 32 │ - sget-object v0, Lcom/crashlytics/android/d;->a:Lcom/crashlytics/android/d; │ - │ - invoke-direct {p0, p1, p2, v0}, Lcom/crashlytics/android/b;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/aj;)V │ - │ - .line 33 │ - return-void │ -.end method │ - │ - │ -# virtual methods │ -.method public final a(Lcom/crashlytics/android/aw;)Lorg/json/JSONObject; │ - .locals 6 │ - │ - .prologue │ - const/4 v1, 0x0 │ - │ - .line 48 │ - .line 52 │ - :try_start_0 │ - new-instance v0, Ljava/util/HashMap; │ - │ - invoke-direct {v0}, Ljava/util/HashMap;->()V │ - │ - const-string v2, "build_version" │ - │ - iget-object v3, p1, Lcom/crashlytics/android/aw;->e:Ljava/lang/String; │ - │ - invoke-interface {v0, v2, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ - │ - const-string v2, "display_version" │ - │ - iget-object v3, p1, Lcom/crashlytics/android/aw;->d:Ljava/lang/String; │ - │ - invoke-interface {v0, v2, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ - │ - const-string v2, "source" │ - │ - iget v3, p1, Lcom/crashlytics/android/aw;->f:I │ - │ - invoke-static {v3}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-interface {v0, v2, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ - │ - const-string v2, "icon_hash" │ - │ - iget-object v3, p1, Lcom/crashlytics/android/aw;->g:Ljava/lang/String; │ - │ - invoke-interface {v0, v2, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ - │ - iget-object v2, p1, Lcom/crashlytics/android/aw;->c:Ljava/lang/String; │ - │ - invoke-static {v2}, Lcom/crashlytics/android/aB;->d(Ljava/lang/String;)Z │ - │ - move-result v3 │ - │ - if-nez v3, :cond_0 │ - │ - const-string v3, "instance" │ - │ - invoke-interface {v0, v3, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ - │ - .line 53 │ - :cond_0 │ - invoke-virtual {p0, v0}, Lcom/crashlytics/android/ae;->a(Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - move-result-object v2 │ - │ - .line 54 │ - :try_start_1 │ - const-string v3, "X-CRASHLYTICS-API-KEY" │ - │ - iget-object v4, p1, Lcom/crashlytics/android/aw;->a:Ljava/lang/String; │ - │ - invoke-virtual {v2, v3, v4}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v3 │ - │ - const-string v4, "X-CRASHLYTICS-CLIENT-TYPE" │ - │ - const-string v5, "android" │ - │ - invoke-virtual {v3, v4, v5}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v3 │ - │ - const-string v4, "X-CRASHLYTICS-D" │ - │ - iget-object v5, p1, Lcom/crashlytics/android/aw;->b:Ljava/lang/String; │ - │ - invoke-virtual {v3, v4, v5}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v3 │ - │ - const-string v4, "X-CRASHLYTICS-API-CLIENT-VERSION" │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getCrashlyticsVersion()Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v3, v4, v5}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v3 │ - │ - const-string v4, "Accept" │ - │ - const-string v5, "application/json" │ - │ - invoke-virtual {v3, v4, v5}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v2 │ - │ - .line 56 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Requesting settings from " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {p0}, Lcom/crashlytics/android/ae;->a()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 57 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Settings query params were: " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 59 │ - new-instance v0, Lorg/json/JSONObject; │ - │ - invoke-virtual {v2}, Lcom/crashlytics/android/HttpRequest;->c()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-direct {v0, v3}, Lorg/json/JSONObject;->(Ljava/lang/String;)V │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - .line 63 │ - if-eqz v2, :cond_1 │ - │ - .line 64 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v3, "Settings request ID: " │ - │ - invoke-direct {v1, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - const-string v3, "X-REQUEST-ID" │ - │ - invoke-virtual {v2, v3}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 68 │ - :cond_1 │ - :goto_0 │ - return-object v0 │ - │ - .line 60 │ - :catch_0 │ - move-exception v0 │ - │ - move-object v2, v1 │ - │ - .line 61 │ - :goto_1 │ - :try_start_2 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Failed to retrieve settings from " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {p0}, Lcom/crashlytics/android/ae;->a()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_2 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ - │ - .line 63 │ - if-eqz v2, :cond_3 │ - │ - .line 64 │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - const-string v3, "Settings request ID: " │ - │ - invoke-direct {v0, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - const-string v3, "X-REQUEST-ID" │ - │ - invoke-virtual {v2, v3}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - move-object v0, v1 │ - │ - goto :goto_0 │ - │ - .line 63 │ - :catchall_0 │ - move-exception v0 │ - │ - move-object v2, v1 │ - │ - :goto_2 │ - if-eqz v2, :cond_2 │ - │ - .line 64 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v3, "Settings request ID: " │ - │ - invoke-direct {v1, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - const-string v3, "X-REQUEST-ID" │ - │ - invoke-virtual {v2, v3}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - :cond_2 │ - throw v0 │ - │ - .line 63 │ - :catchall_1 │ - move-exception v0 │ - │ - goto :goto_2 │ - │ - .line 60 │ - :catch_1 │ - move-exception v0 │ - │ - goto :goto_1 │ + .line 71 │ + shl-int/lit8 v0, p0, 0x3 │ │ - :cond_3 │ - move-object v0, v1 │ + or-int/2addr v0, p1 │ │ - goto :goto_0 │ + return v0 │ .end method ├── smali/com/crashlytics/android/t.smali │ @@ -1,85 +1,114 @@ │ .class final Lcom/crashlytics/android/t; │ -.super Ljava/lang/Object; │ +.super Lcom/crashlytics/android/internal/aa; │ .source "SourceFile" │ │ -# interfaces │ -.implements Lcom/crashlytics/android/D; │ - │ - │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Lcom/crashlytics/android/D", │ - "<", │ - "Ljava/lang/Boolean;", │ - ">;" │ - } │ -.end annotation │ - │ │ # instance fields │ .field private synthetic a:Landroid/content/Context; │ │ -.field private synthetic b:Lcom/crashlytics/android/Crashlytics; │ +.field private synthetic b:F │ + │ +.field private synthetic c:Ljava/util/concurrent/CountDownLatch; │ + │ +.field private synthetic d:Lcom/crashlytics/android/Crashlytics; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;)V │ +.method constructor (Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;FLjava/util/concurrent/CountDownLatch;)V │ .locals 0 │ │ .prologue │ - .line 632 │ - iput-object p1, p0, Lcom/crashlytics/android/t;->b:Lcom/crashlytics/android/Crashlytics; │ + .line 835 │ + iput-object p1, p0, Lcom/crashlytics/android/t;->d:Lcom/crashlytics/android/Crashlytics; │ │ iput-object p2, p0, Lcom/crashlytics/android/t;->a:Landroid/content/Context; │ │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + iput p3, p0, Lcom/crashlytics/android/t;->b:F │ + │ + iput-object p4, p0, Lcom/crashlytics/android/t;->c:Ljava/util/concurrent/CountDownLatch; │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/internal/aa;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final synthetic a(Lcom/crashlytics/android/au;)Ljava/lang/Object; │ - .locals 3 │ +.method public final a()V │ + .locals 4 │ │ .prologue │ - .line 632 │ - const/4 v0, 0x1 │ + .line 839 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/t;->d:Lcom/crashlytics/android/Crashlytics; │ │ iget-object v1, p0, Lcom/crashlytics/android/t;->a:Landroid/content/Context; │ │ - instance-of v1, v1, Landroid/app/Activity; │ + iget v2, p0, Lcom/crashlytics/android/t;->b:F │ │ - if-eqz v1, :cond_0 │ + invoke-static {v0, v1, v2}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;Landroid/content/Context;F)Z │ │ - iget-object v1, p0, Lcom/crashlytics/android/t;->b:Lcom/crashlytics/android/Crashlytics; │ + move-result v0 │ │ - invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->m()Z │ + if-eqz v0, :cond_0 │ │ - move-result v1 │ + .line 842 │ + iget-object v0, p0, Lcom/crashlytics/android/t;->d:Lcom/crashlytics/android/Crashlytics; │ │ - if-eqz v1, :cond_0 │ + invoke-static {v0}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;)Lcom/crashlytics/android/v; │ │ - iget-object v1, p0, Lcom/crashlytics/android/t;->b:Lcom/crashlytics/android/Crashlytics; │ + move-result-object v0 │ │ - iget-object v0, p0, Lcom/crashlytics/android/t;->a:Landroid/content/Context; │ + invoke-virtual {v0}, Lcom/crashlytics/android/v;->e()V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ - check-cast v0, Landroid/app/Activity; │ + .line 847 │ + :cond_0 │ + iget-object v0, p0, Lcom/crashlytics/android/t;->c:Ljava/util/concurrent/CountDownLatch; │ │ - invoke-virtual {p1}, Lcom/crashlytics/android/au;->d()Lcom/crashlytics/android/am; │ + invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ │ - move-result-object v2 │ + .line 848 │ + :goto_0 │ + return-void │ │ - invoke-static {v1, v0, v2}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/am;)Z │ + .line 844 │ + :catch_0 │ + move-exception v0 │ │ - move-result v0 │ + .line 845 │ + :try_start_1 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - :cond_0 │ - invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ + move-result-object v1 │ │ - move-result-object v0 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Problem encountered during Crashlytics initialization." │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + │ + .line 847 │ + iget-object v0, p0, Lcom/crashlytics/android/t;->c:Ljava/util/concurrent/CountDownLatch; │ + │ + invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ + │ + goto :goto_0 │ + │ + :catchall_0 │ + move-exception v0 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/t;->c:Ljava/util/concurrent/CountDownLatch; │ + │ + invoke-virtual {v1}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ │ - return-object v0 │ + throw v0 │ .end method ├── smali/com/crashlytics/android/m.smali │ @@ -1,254 +1,85 @@ │ -.class Lcom/crashlytics/android/m; │ +.class final Lcom/crashlytics/android/m; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Lcom/crashlytics/android/internal/aU; │ + │ + │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Lcom/crashlytics/android/internal/aU", │ + "<", │ + "Ljava/lang/Boolean;", │ + ">;" │ + } │ +.end annotation │ + │ + │ +# instance fields │ +.field private synthetic a:Lcom/crashlytics/android/Crashlytics; │ + │ │ # direct methods │ -.method constructor ()V │ +.method constructor (Lcom/crashlytics/android/Crashlytics;)V │ .locals 0 │ │ .prologue │ - .line 15 │ + .line 617 │ + iput-object p1, p0, Lcom/crashlytics/android/m;->a:Lcom/crashlytics/android/Crashlytics; │ + │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public a()Lorg/json/JSONObject; │ - .locals 4 │ +.method public final synthetic a(Lcom/crashlytics/android/internal/aX;)Ljava/lang/Object; │ + .locals 3 │ │ .prologue │ - const/4 v1, 0x0 │ - │ - .line 21 │ - const-string v0, "Reading cached settings..." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + .line 617 │ + const/4 v0, 0x1 │ │ - .line 27 │ - :try_start_0 │ - new-instance v0, Ljava/io/File; │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ + move-result-object v1 │ │ - move-result-object v2 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->e()Landroid/app/Activity; │ │ - const-string v3, "com.crashlytics.settings.json" │ + move-result-object v1 │ │ - invoke-direct {v0, v2, v3}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + if-eqz v1, :cond_0 │ │ - .line 29 │ - invoke-virtual {v0}, Ljava/io/File;->exists()Z │ + invoke-virtual {v1}, Landroid/app/Activity;->isFinishing()Z │ │ move-result v2 │ │ - if-eqz v2, :cond_0 │ - │ - .line 30 │ - new-instance v2, Ljava/io/FileInputStream; │ + if-nez v2, :cond_0 │ │ - invoke-direct {v2, v0}, Ljava/io/FileInputStream;->(Ljava/io/File;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + iget-object v2, p0, Lcom/crashlytics/android/m;->a:Lcom/crashlytics/android/Crashlytics; │ │ - .line 31 │ - :try_start_1 │ - invoke-static {v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/InputStream;)Ljava/lang/String; │ + invoke-virtual {v2}, Lcom/crashlytics/android/Crashlytics;->j()Z │ │ - move-result-object v3 │ + move-result v2 │ │ - .line 33 │ - new-instance v0, Lorg/json/JSONObject; │ + if-eqz v2, :cond_0 │ │ - invoke-direct {v0, v3}, Lorg/json/JSONObject;->(Ljava/lang/String;)V │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ + iget-object v0, p0, Lcom/crashlytics/android/m;->a:Lcom/crashlytics/android/Crashlytics; │ │ - move-object v1, v2 │ + iget-object v2, p1, Lcom/crashlytics/android/internal/aX;->c:Lcom/crashlytics/android/internal/aQ; │ │ - .line 40 │ - :goto_0 │ - const-string v2, "Error while closing settings cache file." │ + invoke-static {v0, v1, v2}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/internal/aQ;)Z │ │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + move-result v0 │ │ - .line 43 │ - :goto_1 │ - return-object v0 │ - │ - .line 35 │ :cond_0 │ - :try_start_2 │ - const-string v0, "No cached settings found." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ - │ - move-object v0, v1 │ - │ - goto :goto_0 │ - │ - .line 37 │ - :catch_0 │ - move-exception v0 │ - │ - move-object v2, v1 │ - │ - .line 38 │ - :goto_2 │ - :try_start_3 │ - const-string v3, "Failed to fetch cached settings" │ - │ - invoke-static {v3, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ - │ - .line 40 │ - const-string v0, "Error while closing settings cache file." │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - move-object v0, v1 │ - │ - .line 41 │ - goto :goto_1 │ - │ - .line 40 │ - :catchall_0 │ - move-exception v0 │ - │ - :goto_3 │ - const-string v2, "Error while closing settings cache file." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - :catchall_1 │ - move-exception v0 │ - │ - move-object v1, v2 │ - │ - goto :goto_3 │ - │ - .line 37 │ - :catch_1 │ - move-exception v0 │ - │ - goto :goto_2 │ -.end method │ - │ -.method public a(JLorg/json/JSONObject;)V │ - .locals 5 │ - │ - .prologue │ - .line 48 │ - const-string v0, "Writing settings to cache file..." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 50 │ - if-eqz p3, :cond_0 │ - │ - .line 51 │ - const/4 v2, 0x0 │ - │ - .line 54 │ - :try_start_0 │ - const-string v0, "expires_at" │ - │ - invoke-virtual {p3, v0, p1, p2}, Lorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject; │ - │ - .line 56 │ - new-instance v1, Ljava/io/FileWriter; │ - │ - new-instance v0, Ljava/io/File; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v3 │ - │ - const-string v4, "com.crashlytics.settings.json" │ - │ - invoke-direct {v0, v3, v4}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ - │ - invoke-direct {v1, v0}, Ljava/io/FileWriter;->(Ljava/io/File;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - .line 57 │ - :try_start_1 │ - invoke-virtual {p3}, Lorg/json/JSONObject;->toString()Ljava/lang/String; │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v0 │ │ - invoke-virtual {v1, v0}, Ljava/io/FileWriter;->write(Ljava/lang/String;)V │ - │ - .line 58 │ - invoke-virtual {v1}, Ljava/io/FileWriter;->flush()V │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - .line 62 │ - const-string v0, "Failed to close settings writer." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 65 │ - :cond_0 │ - :goto_0 │ - return-void │ - │ - .line 59 │ - :catch_0 │ - move-exception v0 │ - │ - move-object v1, v2 │ - │ - .line 60 │ - :goto_1 │ - :try_start_2 │ - const-string v2, "Failed to cache settings" │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_2 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ - │ - .line 62 │ - const-string v0, "Failed to close settings writer." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - goto :goto_0 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - :goto_2 │ - const-string v1, "Failed to close settings writer." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - :catchall_1 │ - move-exception v0 │ - │ - move-object v2, v1 │ - │ - goto :goto_2 │ - │ - .line 59 │ - :catch_1 │ - move-exception v0 │ - │ - goto :goto_1 │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/Q.smali │ @@ -3,39 +3,68 @@ │ .source "SourceFile" │ │ # interfaces │ .implements Ljava/io/FilenameFilter; │ │ │ # direct methods │ -.method constructor ()V │ +.method private constructor ()V │ .locals 0 │ │ .prologue │ - .line 145 │ + .line 114 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ +.method synthetic constructor (B)V │ + .locals 0 │ + │ + .prologue │ + .line 114 │ + invoke-direct {p0}, Lcom/crashlytics/android/Q;->()V │ + │ + return-void │ +.end method │ + │ │ # virtual methods │ .method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ .locals 1 │ - .param p2, "filename" # Ljava/lang/String; │ + .param p1, "file" # Ljava/io/File; │ + .param p2, "fileName" # Ljava/lang/String; │ │ .prologue │ - .line 148 │ - invoke-static {}, Lcom/crashlytics/android/E;->e()Ljava/util/regex/Pattern; │ + .line 117 │ + sget-object v0, Lcom/crashlytics/android/v;->a:Ljava/io/FilenameFilter; │ + │ + invoke-interface {v0, p1, p2}, Ljava/io/FilenameFilter;->accept(Ljava/io/File;Ljava/lang/String;)Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + invoke-static {}, Lcom/crashlytics/android/v;->i()Ljava/util/regex/Pattern; │ │ move-result-object v0 │ │ invoke-virtual {v0, p2}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/util/regex/Matcher;->matches()Z │ │ move-result v0 │ │ + if-eqz v0, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + :goto_0 │ return v0 │ + │ + :cond_0 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/J.smali │ @@ -1,64 +1,60 @@ │ .class final Lcom/crashlytics/android/J; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/lang/Runnable; │ +.implements Ljava/util/Comparator; │ │ │ -# instance fields │ -.field private synthetic a:Ljava/io/File; │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Ljava/util/Comparator", │ + "<", │ + "Ljava/io/File;", │ + ">;" │ + } │ +.end annotation │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;Ljava/io/File;)V │ +.method constructor ()V │ .locals 0 │ │ .prologue │ - .line 956 │ - iput-object p2, p0, Lcom/crashlytics/android/J;->a:Ljava/io/File; │ - │ + .line 139 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final run()V │ - .locals 4 │ +.method public final synthetic compare(Ljava/lang/Object;Ljava/lang/Object;)I │ + .locals 2 │ + .param p1, "x0" # Ljava/lang/Object; │ + .param p2, "x1" # Ljava/lang/Object; │ │ .prologue │ - .line 958 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + .line 139 │ + check-cast p1, Ljava/io/File; │ │ - move-result-object v0 │ + .end local p1 # "x0":Ljava/lang/Object; │ + check-cast p2, Ljava/io/File; │ │ - invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->s()Lcom/crashlytics/android/ab; │ + .end local p2 # "x1":Ljava/lang/Object; │ + invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String; │ │ move-result-object v0 │ │ - .line 962 │ - if-eqz v0, :cond_0 │ - │ - .line 963 │ - new-instance v1, Lcom/crashlytics/android/ar; │ - │ - invoke-direct {v1, v0}, Lcom/crashlytics/android/ar;->(Lcom/crashlytics/android/ab;)V │ + invoke-virtual {p2}, Ljava/io/File;->getName()Ljava/lang/String; │ │ - new-instance v0, Lcom/crashlytics/android/aq; │ + move-result-object v1 │ │ - iget-object v2, p0, Lcom/crashlytics/android/J;->a:Ljava/io/File; │ + invoke-virtual {v0, v1}, Ljava/lang/String;->compareTo(Ljava/lang/String;)I │ │ - invoke-static {}, Lcom/crashlytics/android/E;->f()Ljava/util/Map; │ + move-result v0 │ │ - move-result-object v3 │ - │ - invoke-direct {v0, v2, v3}, Lcom/crashlytics/android/aq;->(Ljava/io/File;Ljava/util/Map;)V │ - │ - invoke-virtual {v1, v0}, Lcom/crashlytics/android/ar;->a(Lcom/crashlytics/android/aq;)Z │ - │ - .line 965 │ - :cond_0 │ - return-void │ + return v0 │ .end method ├── smali/com/crashlytics/android/b.smali │ @@ -1,247 +1,132 @@ │ -.class abstract Lcom/crashlytics/android/b; │ +.class Lcom/crashlytics/android/b; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ │ -# static fields │ -.field private static a:Ljava/lang/String; │ - │ -.field private static final b:Ljava/util/regex/Pattern; │ - │ - │ # instance fields │ -.field private final c:Ljava/lang/String; │ - │ -.field private final d:Lcom/crashlytics/android/aj; │ - │ -.field private final e:Ljava/lang/String; │ +.field public final a:Ljava/lang/String; │ │ +.field public final b:Ljava/lang/String; │ │ -# direct methods │ -.method static constructor ()V │ - .locals 2 │ - │ - .prologue │ - .line 28 │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - const-string v1, "Crashlytics Android SDK/" │ +.field public final c:Ljava/lang/String; │ │ - invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ +.field public final d:Ljava/lang/String; │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getCrashlyticsVersion()Ljava/lang/String; │ +.field public final e:Ljava/lang/String; │ │ - move-result-object v1 │ +.field public final f:Ljava/lang/String; │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ +.field public final g:I │ │ - move-result-object v0 │ +.field public final h:Ljava/lang/String; │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ +.field public final i:Ljava/lang/String; │ │ - move-result-object v0 │ +.field public final j:Lcom/crashlytics/android/Y; │ │ - sput-object v0, Lcom/crashlytics/android/b;->a:Ljava/lang/String; │ │ - .line 77 │ - const-string v0, "http(s?)://[^\\/]+" │ - │ - const/4 v1, 0x2 │ - │ - invoke-static {v0, v1}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;I)Ljava/util/regex/Pattern; │ - │ - move-result-object v0 │ - │ - sput-object v0, Lcom/crashlytics/android/b;->b:Ljava/util/regex/Pattern; │ - │ - return-void │ -.end method │ - │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/aj;)V │ - .locals 2 │ +# direct methods │ +.method public constructor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/Y;)V │ + .locals 0 │ │ .prologue │ - .line 103 │ + .line 25 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 104 │ - if-nez p2, :cond_0 │ + .line 26 │ + iput-object p1, p0, Lcom/crashlytics/android/b;->a:Ljava/lang/String; │ │ - .line 105 │ - new-instance v0, Ljava/lang/IllegalArgumentException; │ + .line 27 │ + iput-object p2, p0, Lcom/crashlytics/android/b;->b:Ljava/lang/String; │ │ - const-string v1, "url must not be null." │ - │ - invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ - │ - throw v0 │ - │ - .line 107 │ - :cond_0 │ - if-nez p3, :cond_1 │ - │ - .line 108 │ - new-instance v0, Ljava/lang/IllegalArgumentException; │ - │ - const-string v1, "requestBuilder must not be null." │ - │ - invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ - │ - throw v0 │ - │ - .line 110 │ - :cond_1 │ - iput-object p1, p0, Lcom/crashlytics/android/b;->e:Ljava/lang/String; │ - │ - .line 111 │ - iget-object v0, p0, Lcom/crashlytics/android/b;->e:Ljava/lang/String; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->d(Ljava/lang/String;)Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_2 │ - │ - sget-object v0, Lcom/crashlytics/android/b;->b:Ljava/util/regex/Pattern; │ + .line 28 │ + iput-object p3, p0, Lcom/crashlytics/android/b;->c:Ljava/lang/String; │ │ - invoke-virtual {v0, p2}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ + .line 29 │ + iput-object p4, p0, Lcom/crashlytics/android/b;->d:Ljava/lang/String; │ │ - move-result-object v0 │ + .line 31 │ + iput-object p5, p0, Lcom/crashlytics/android/b;->e:Ljava/lang/String; │ │ - iget-object v1, p0, Lcom/crashlytics/android/b;->e:Ljava/lang/String; │ + .line 32 │ + iput-object p6, p0, Lcom/crashlytics/android/b;->f:Ljava/lang/String; │ │ - invoke-virtual {v0, v1}, Ljava/util/regex/Matcher;->replaceFirst(Ljava/lang/String;)Ljava/lang/String; │ + .line 33 │ + iput p7, p0, Lcom/crashlytics/android/b;->g:I │ │ - move-result-object p2 │ + .line 34 │ + iput-object p8, p0, Lcom/crashlytics/android/b;->h:Ljava/lang/String; │ │ - :cond_2 │ - iput-object p2, p0, Lcom/crashlytics/android/b;->c:Ljava/lang/String; │ + .line 35 │ + iput-object p9, p0, Lcom/crashlytics/android/b;->i:Ljava/lang/String; │ │ - .line 112 │ - iput-object p3, p0, Lcom/crashlytics/android/b;->d:Lcom/crashlytics/android/aj; │ + .line 36 │ + iput-object p10, p0, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ │ - .line 113 │ + .line 37 │ return-void │ .end method │ │ - │ -# virtual methods │ -.method protected final a(Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ - .locals 3 │ +.method public static a(Ljava/io/File;Ljava/io/FilenameFilter;ILjava/util/Comparator;)V │ + .locals 5 │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "(", │ - "Ljava/util/Map", │ + "Ljava/io/File;", │ + "Ljava/io/FilenameFilter;", │ + "I", │ + "Ljava/util/Comparator", │ "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;)", │ - "Lcom/crashlytics/android/HttpRequest;" │ + "Ljava/io/File;", │ + ">;)V" │ } │ .end annotation │ │ .prologue │ - .line 153 │ - iget-object v0, p0, Lcom/crashlytics/android/b;->d:Lcom/crashlytics/android/aj; │ - │ - iget-object v1, p0, Lcom/crashlytics/android/b;->c:Ljava/lang/String; │ - │ - invoke-interface {v0, v1, p1}, Lcom/crashlytics/android/aj;->a(Ljava/lang/String;Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v1 │ - │ - .line 155 │ - iget-object v0, p0, Lcom/crashlytics/android/b;->c:Ljava/lang/String; │ - │ - invoke-virtual {v0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - const-string v2, "https" │ - │ - invoke-virtual {v0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_0 │ - │ - .line 157 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getPinningInfoProvider()Lcom/crashlytics/android/PinningInfoProvider; │ - │ - move-result-object v0 │ - │ - .line 159 │ - if-eqz v0, :cond_0 │ - │ - .line 160 │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->a(Lcom/crashlytics/android/PinningInfoProvider;)Ljavax/net/ssl/SSLSocketFactory; │ + .line 18 │ + invoke-virtual {p0, p1}, Ljava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ move-result-object v2 │ │ - .line 161 │ - invoke-virtual {v1}, Lcom/crashlytics/android/HttpRequest;->a()Ljava/net/HttpURLConnection; │ - │ - move-result-object v0 │ - │ - check-cast v0, Ljavax/net/ssl/HttpsURLConnection; │ - │ - invoke-virtual {v0, v2}, Ljavax/net/ssl/HttpsURLConnection;->setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V │ - │ - .line 165 │ - :cond_0 │ - const/4 v0, 0x0 │ + .line 19 │ + if-eqz v2, :cond_0 │ │ - invoke-virtual {v1, v0}, Lcom/crashlytics/android/HttpRequest;->a(Z)Lcom/crashlytics/android/HttpRequest; │ + array-length v0, v2 │ │ - move-result-object v0 │ + if-le v0, p2, :cond_0 │ │ - const/16 v1, 0x2710 │ + .line 21 │ + invoke-static {v2, p3}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ │ - invoke-virtual {v0, v1}, Lcom/crashlytics/android/HttpRequest;->a(I)Lcom/crashlytics/android/HttpRequest; │ + .line 22 │ + array-length v1, v2 │ │ - move-result-object v0 │ + .line 23 │ + array-length v3, v2 │ │ - const-string v1, "User-Agent" │ - │ - sget-object v2, Lcom/crashlytics/android/b;->a:Ljava/lang/String; │ - │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - const-string v1, "X-CRASHLYTICS-DEVELOPER-TOKEN" │ - │ - const-string v2, "bca6990fc3c15a8105800c0673517a4b579634a1" │ - │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - return-object v0 │ -.end method │ + const/4 v0, 0x0 │ │ -.method protected final a()Ljava/lang/String; │ - .locals 1 │ + :goto_0 │ + if-ge v0, v3, :cond_0 │ │ - .prologue │ - .line 116 │ - iget-object v0, p0, Lcom/crashlytics/android/b;->c:Ljava/lang/String; │ + aget-object v4, v2, v0 │ │ - return-object v0 │ -.end method │ + .line 25 │ + if-gt v1, p2, :cond_1 │ │ -.method protected final b()Lcom/crashlytics/android/HttpRequest; │ - .locals 1 │ - │ - .prologue │ - .line 133 │ - invoke-static {}, Ljava/util/Collections;->emptyMap()Ljava/util/Map; │ + .line 32 │ + :cond_0 │ + return-void │ │ - move-result-object v0 │ + .line 28 │ + :cond_1 │ + invoke-virtual {v4}, Ljava/io/File;->delete()Z │ │ - invoke-virtual {p0, v0}, Lcom/crashlytics/android/b;->a(Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ + .line 29 │ + add-int/lit8 v1, v1, -0x1 │ │ - move-result-object v0 │ + .line 23 │ + add-int/lit8 v0, v0, 0x1 │ │ - return-object v0 │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/ad.smali │ @@ -1,216 +1,18 @@ │ .class final Lcom/crashlytics/android/ad; │ -.super Lcom/crashlytics/android/b; │ +.super Lcom/crashlytics/android/a; │ .source "SourceFile" │ │ -# interfaces │ -.implements Lcom/crashlytics/android/ab; │ - │ │ # direct methods │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;)V │ +.method public constructor (Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ .locals 1 │ │ .prologue │ - .line 26 │ - sget-object v0, Lcom/crashlytics/android/d;->b:Lcom/crashlytics/android/d; │ + .line 13 │ + sget-object v0, Lcom/crashlytics/android/internal/ax;->c:Lcom/crashlytics/android/internal/ax; │ │ - invoke-direct {p0, p1, p2, v0}, Lcom/crashlytics/android/b;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/aj;)V │ + invoke-direct {p0, p1, p2, p3, v0}, Lcom/crashlytics/android/a;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;Lcom/crashlytics/android/internal/ax;)V │ │ - .line 27 │ + .line 14 │ return-void │ .end method │ - │ - │ -# virtual methods │ -.method public final a(Lcom/crashlytics/android/aa;)Z │ - .locals 6 │ - │ - .prologue │ - .line 42 │ - invoke-virtual {p0}, Lcom/crashlytics/android/ad;->b()Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - .line 43 │ - const-string v1, "X-CRASHLYTICS-API-KEY" │ - │ - invoke-virtual {p1}, Lcom/crashlytics/android/aa;->a()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - const-string v1, "X-CRASHLYTICS-CLIENT-TYPE" │ - │ - const-string v2, "android" │ - │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - const-string v1, "X-CRASHLYTICS-API-CLIENT-VERSION" │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getCrashlyticsVersion()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1}, Lcom/crashlytics/android/aa;->b()Lcom/crashlytics/android/aq; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/aq;->e()Ljava/util/Map; │ - │ - move-result-object v1 │ - │ - invoke-interface {v1}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v1 │ - │ - invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v2 │ - │ - move-object v1, v0 │ - │ - :goto_0 │ - invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_0 │ - │ - invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - check-cast v0, Ljava/util/Map$Entry; │ - │ - invoke-virtual {v1, v0}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/util/Map$Entry;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - move-object v1, v0 │ - │ - goto :goto_0 │ - │ - .line 44 │ - :cond_0 │ - invoke-virtual {p1}, Lcom/crashlytics/android/aa;->b()Lcom/crashlytics/android/aq; │ - │ - move-result-object v0 │ - │ - const-string v2, "report[file]" │ - │ - invoke-virtual {v0}, Lcom/crashlytics/android/aq;->b()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - const-string v4, "application/octet-stream" │ - │ - invoke-virtual {v0}, Lcom/crashlytics/android/aq;->d()Ljava/io/File; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v1, v2, v3, v4, v5}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v1 │ - │ - const-string v2, "report[identifier]" │ - │ - invoke-virtual {v0}, Lcom/crashlytics/android/aq;->c()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v1, v2, v0}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ - │ - move-result-object v0 │ - │ - .line 46 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Sending report to: " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {p0}, Lcom/crashlytics/android/ad;->a()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 48 │ - invoke-virtual {v0}, Lcom/crashlytics/android/HttpRequest;->b()I │ - │ - move-result v1 │ - │ - .line 50 │ - new-instance v2, Ljava/lang/StringBuilder; │ - │ - const-string v3, "Create report request ID: " │ - │ - invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - const-string v3, "X-REQUEST-ID" │ - │ - invoke-virtual {v0, v3}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 51 │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Result was: " │ - │ - invoke-direct {v0, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 53 │ - invoke-static {v1}, Lcom/crashlytics/android/c;->a(I)I │ - │ - move-result v0 │ - │ - if-nez v0, :cond_1 │ - │ - const/4 v0, 0x1 │ - │ - :goto_1 │ - return v0 │ - │ - :cond_1 │ - const/4 v0, 0x0 │ - │ - goto :goto_1 │ -.end method ├── smali/com/crashlytics/android/q.smali │ @@ -1,22 +1,47 @@ │ .class final Lcom/crashlytics/android/q; │ -.super Ljava/io/IOException; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Landroid/content/DialogInterface$OnClickListener; │ │ -# static fields │ -.field private static final serialVersionUID:J = -0x606a6e83ad3191dbL │ + │ +# instance fields │ +.field private synthetic a:Lcom/crashlytics/android/p; │ │ │ # direct methods │ -.method constructor ()V │ - .locals 1 │ +.method constructor (Lcom/crashlytics/android/p;)V │ + .locals 0 │ + │ + .prologue │ + .line 674 │ + iput-object p1, p0, Lcom/crashlytics/android/q;->a:Lcom/crashlytics/android/p; │ + │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ + │ + return-void │ +.end method │ + │ + │ +# virtual methods │ +.method public final onClick(Landroid/content/DialogInterface;I)V │ + .locals 2 │ + .param p1, "dialog" # Landroid/content/DialogInterface; │ │ .prologue │ - .line 718 │ - const-string v0, "CodedOutputStream was writing to a flat byte array and ran out of space." │ + .line 677 │ + iget-object v0, p0, Lcom/crashlytics/android/q;->a:Lcom/crashlytics/android/p; │ + │ + iget-object v0, v0, Lcom/crashlytics/android/p;->a:Lcom/crashlytics/android/u; │ + │ + const/4 v1, 0x1 │ + │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/u;->a(Z)V │ │ - invoke-direct {p0, v0}, Ljava/io/IOException;->(Ljava/lang/String;)V │ + .line 678 │ + invoke-interface {p1}, Landroid/content/DialogInterface;->dismiss()V │ │ - .line 720 │ + .line 679 │ return-void │ .end method ├── smali/com/crashlytics/android/Y.smali │ @@ -1,89 +1,138 @@ │ .class final Lcom/crashlytics/android/Y; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ -# interfaces │ -.implements Ljava/io/FilenameFilter; │ - │ │ # instance fields │ -.field private a:Ljava/lang/String; │ +.field public final a:Ljava/lang/String; │ + │ +.field public final b:I │ + │ +.field public final c:I │ + │ +.field public final d:I │ │ │ # direct methods │ -.method public constructor (Ljava/lang/String;)V │ +.method private constructor (Ljava/lang/String;III)V │ .locals 0 │ │ .prologue │ - .line 90 │ + .line 20 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 91 │ + .line 21 │ iput-object p1, p0, Lcom/crashlytics/android/Y;->a:Ljava/lang/String; │ │ - .line 92 │ + .line 22 │ + iput p2, p0, Lcom/crashlytics/android/Y;->b:I │ + │ + .line 23 │ + iput p3, p0, Lcom/crashlytics/android/Y;->c:I │ + │ + .line 24 │ + iput p4, p0, Lcom/crashlytics/android/Y;->d:I │ + │ + .line 25 │ return-void │ .end method │ │ - │ -# virtual methods │ -.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ - .locals 3 │ - .param p2, "fileName" # Ljava/lang/String; │ +.method public static a(Landroid/content/Context;Ljava/lang/String;)Lcom/crashlytics/android/Y; │ + .locals 6 │ │ .prologue │ - const/4 v0, 0x0 │ + .line 33 │ + const/4 v1, 0x0 │ │ - .line 96 │ - new-instance v1, Ljava/lang/StringBuilder; │ + .line 37 │ + if-eqz p1, :cond_0 │ │ - invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ + .line 39 │ + :try_start_0 │ + invoke-static {p0}, Lcom/crashlytics/android/internal/ab;->h(Landroid/content/Context;)I │ │ - iget-object v2, p0, Lcom/crashlytics/android/Y;->a:Ljava/lang/String; │ + move-result v2 │ │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 40 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - move-result-object v1 │ + move-result-object v0 │ │ - const-string v2, ".cls" │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v0 │ │ - move-result-object v1 │ + const-string v3, "Crashlytics" │ │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + new-instance v4, Ljava/lang/StringBuilder; │ │ - move-result-object v1 │ + const-string v5, "App icon resource ID is " │ │ - invoke-virtual {p2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ + invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - move-result v1 │ + invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - if-eqz v1, :cond_1 │ + move-result-object v4 │ │ - .line 99 │ - :cond_0 │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-interface {v0, v3, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 45 │ + new-instance v3, Landroid/graphics/BitmapFactory$Options; │ + │ + invoke-direct {v3}, Landroid/graphics/BitmapFactory$Options;->()V │ + │ + .line 46 │ + const/4 v0, 0x1 │ + │ + iput-boolean v0, v3, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z │ + │ + .line 48 │ + invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + │ + move-result-object v0 │ + │ + invoke-static {v0, v2, v3}, Landroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; │ + │ + .line 50 │ + new-instance v0, Lcom/crashlytics/android/Y; │ + │ + iget v4, v3, Landroid/graphics/BitmapFactory$Options;->outWidth:I │ + │ + iget v3, v3, Landroid/graphics/BitmapFactory$Options;->outHeight:I │ + │ + invoke-direct {v0, p1, v2, v4, v3}, Lcom/crashlytics/android/Y;->(Ljava/lang/String;III)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 56 │ :goto_0 │ - return v0 │ + return-object v0 │ │ - :cond_1 │ - iget-object v1, p0, Lcom/crashlytics/android/Y;->a:Ljava/lang/String; │ + .line 51 │ + :catch_0 │ + move-exception v0 │ │ - invoke-virtual {p2, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ + .line 52 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - move-result v1 │ + move-result-object v2 │ │ - if-eqz v1, :cond_0 │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - const-string v1, ".cls_temp" │ + move-result-object v2 │ │ - invoke-virtual {p2, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + const-string v3, "Crashlytics" │ │ - move-result v1 │ + const-string v4, "Failed to load icon" │ │ - if-nez v1, :cond_0 │ + invoke-interface {v2, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - const/4 v0, 0x1 │ + :cond_0 │ + move-object v0, v1 │ │ goto :goto_0 │ .end method ├── smali/com/crashlytics/android/x.smali │ @@ -1,47 +1,103 @@ │ .class final Lcom/crashlytics/android/x; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Landroid/content/DialogInterface$OnClickListener; │ +.implements Ljava/util/concurrent/Callable; │ + │ + │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Ljava/util/concurrent/Callable", │ + "<", │ + "Ljava/lang/Void;", │ + ">;" │ + } │ +.end annotation │ │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/w; │ +.field private synthetic a:J │ + │ +.field private synthetic b:Ljava/lang/String; │ + │ +.field private synthetic c:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/w;)V │ +.method constructor (Lcom/crashlytics/android/v;JLjava/lang/String;)V │ .locals 0 │ │ .prologue │ - .line 692 │ - iput-object p1, p0, Lcom/crashlytics/android/x;->a:Lcom/crashlytics/android/w; │ + .line 373 │ + iput-object p1, p0, Lcom/crashlytics/android/x;->c:Lcom/crashlytics/android/v; │ + │ + iput-wide p2, p0, Lcom/crashlytics/android/x;->a:J │ + │ + iput-object p4, p0, Lcom/crashlytics/android/x;->b:Ljava/lang/String; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final onClick(Landroid/content/DialogInterface;I)V │ - .locals 2 │ - .param p1, "dialog" # Landroid/content/DialogInterface; │ +.method public final synthetic call()Ljava/lang/Object; │ + .locals 5 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ │ .prologue │ - .line 695 │ - iget-object v0, p0, Lcom/crashlytics/android/x;->a:Lcom/crashlytics/android/w; │ + .line 373 │ + iget-object v0, p0, Lcom/crashlytics/android/x;->c:Lcom/crashlytics/android/v; │ │ - iget-object v0, v0, Lcom/crashlytics/android/w;->a:Lcom/crashlytics/android/C; │ + invoke-static {v0}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/v;)Ljava/util/concurrent/atomic/AtomicBoolean; │ │ - const/4 v1, 0x1 │ + move-result-object v0 │ │ - invoke-virtual {v0, v1}, Lcom/crashlytics/android/C;->a(Z)V │ + invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ │ - .line 696 │ - invoke-interface {p1}, Landroid/content/DialogInterface;->dismiss()V │ + move-result v0 │ │ - .line 697 │ - return-void │ + if-nez v0, :cond_1 │ + │ + iget-object v0, p0, Lcom/crashlytics/android/x;->c:Lcom/crashlytics/android/v; │ + │ + invoke-static {v0}, Lcom/crashlytics/android/v;->d(Lcom/crashlytics/android/v;)Lcom/crashlytics/android/internal/aq; │ + │ + move-result-object v0 │ + │ + if-nez v0, :cond_0 │ + │ + iget-object v0, p0, Lcom/crashlytics/android/x;->c:Lcom/crashlytics/android/v; │ + │ + invoke-static {v0}, Lcom/crashlytics/android/v;->e(Lcom/crashlytics/android/v;)Z │ + │ + :cond_0 │ + iget-object v0, p0, Lcom/crashlytics/android/x;->c:Lcom/crashlytics/android/v; │ + │ + iget-object v0, p0, Lcom/crashlytics/android/x;->c:Lcom/crashlytics/android/v; │ + │ + invoke-static {v0}, Lcom/crashlytics/android/v;->d(Lcom/crashlytics/android/v;)Lcom/crashlytics/android/internal/aq; │ + │ + move-result-object v0 │ + │ + const/high16 v1, 0x10000 │ + │ + iget-wide v2, p0, Lcom/crashlytics/android/x;->a:J │ + │ + iget-object v4, p0, Lcom/crashlytics/android/x;->b:Ljava/lang/String; │ + │ + invoke-static {v0, v1, v2, v3, v4}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/internal/aq;IJLjava/lang/String;)V │ + │ + :cond_1 │ + const/4 v0, 0x0 │ + │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/ac.smali │ @@ -1,29 +1,412 @@ │ -.class Lcom/crashlytics/android/ac; │ -.super Ljava/lang/Object; │ +.class final Lcom/crashlytics/android/ac; │ +.super Lcom/crashlytics/android/internal/aa; │ .source "SourceFile" │ │ │ +# instance fields │ +.field private final a:F │ + │ +.field private synthetic b:Lcom/crashlytics/android/aa; │ + │ + │ # direct methods │ -.method constructor ()V │ +.method constructor (Lcom/crashlytics/android/aa;F)V │ .locals 0 │ │ .prologue │ - .line 8 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + .line 123 │ + iput-object p1, p0, Lcom/crashlytics/android/ac;->b:Lcom/crashlytics/android/aa; │ │ + invoke-direct {p0}, Lcom/crashlytics/android/internal/aa;->()V │ + │ + .line 124 │ + iput p2, p0, Lcom/crashlytics/android/ac;->a:F │ + │ + .line 125 │ return-void │ .end method │ │ │ # virtual methods │ -.method public a()J │ - .locals 2 │ +.method public final a()V │ + .locals 8 │ │ .prologue │ - .line 12 │ - invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ + .line 130 │ + :try_start_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + const-string v3, "Starting report processing in " │ + │ + invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + iget v3, p0, Lcom/crashlytics/android/ac;->a:F │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v3, " second(s)..." │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + iget v0, p0, Lcom/crashlytics/android/ac;->a:F │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + const/4 v1, 0x0 │ + │ + cmpl-float v0, v0, v1 │ + │ + if-lez v0, :cond_0 │ + │ + :try_start_1 │ + iget v0, p0, Lcom/crashlytics/android/ac;->a:F │ + │ + const/high16 v1, 0x447a0000 # 1000.0f │ + │ + mul-float/2addr v0, v1 │ + │ + float-to-long v0, v0 │ + │ + invoke-static {v0, v1}, Ljava/lang/Thread;->sleep(J)V │ + :try_end_1 │ + .catch Ljava/lang/InterruptedException; {:try_start_1 .. :try_end_1} :catch_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 │ + │ + :cond_0 │ + :try_start_2 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->l()Lcom/crashlytics/android/v; │ + │ + move-result-object v2 │ + │ + iget-object v0, p0, Lcom/crashlytics/android/ac;->b:Lcom/crashlytics/android/aa; │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/aa;->a()Ljava/util/List; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/v;->a()Z │ + │ + move-result v2 │ + │ + if-nez v2, :cond_1 │ + │ + invoke-interface {v0}, Ljava/util/List;->isEmpty()Z │ + │ + move-result v2 │ + │ + if-nez v2, :cond_2 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->p()Z │ + │ + move-result v1 │ + │ + if-nez v1, :cond_2 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "User declined to send. Removing " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-interface {v0}, Ljava/util/List;->size()I │ + │ + move-result v4 │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, " Report(s)." │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v1 │ + │ + :goto_0 │ + invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Lcom/crashlytics/android/Z; │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Z;->a()Z │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ + │ + goto :goto_0 │ + │ + .line 131 │ + :catch_0 │ + move-exception v0 │ + │ + .line 132 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "An unexpected error occurred while attempting to upload crash reports." │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 134 │ + :cond_1 │ + :goto_1 │ + iget-object v0, p0, Lcom/crashlytics/android/ac;->b:Lcom/crashlytics/android/aa; │ + │ + const/4 v1, 0x0 │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/aa;->a(Lcom/crashlytics/android/aa;Ljava/lang/Thread;)Ljava/lang/Thread; │ + │ + .line 135 │ + return-void │ + │ + .line 130 │ + :catch_1 │ + move-exception v0 │ + │ + :try_start_3 │ + invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V │ + │ + goto :goto_1 │ + │ + :cond_2 │ + const/4 v1, 0x0 │ + │ + :cond_3 │ + :goto_2 │ + invoke-interface {v0}, Ljava/util/List;->isEmpty()Z │ + │ + move-result v2 │ + │ + if-nez v2, :cond_1 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/Crashlytics;->l()Lcom/crashlytics/android/v; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/v;->a()Z │ + │ + move-result v2 │ + │ + if-nez v2, :cond_1 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v2 │ + │ + const-string v3, "Crashlytics" │ + │ + new-instance v4, Ljava/lang/StringBuilder; │ + │ + const-string v5, "Attempting to send " │ + │ + invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-interface {v0}, Ljava/util/List;->size()I │ + │ + move-result v5 │ + │ + invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + const-string v5, " report(s)" │ + │ + invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-interface {v2, v3, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v2 │ + │ + :goto_3 │ + invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_4 │ + │ + invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Lcom/crashlytics/android/Z; │ + │ + iget-object v3, p0, Lcom/crashlytics/android/ac;->b:Lcom/crashlytics/android/aa; │ + │ + invoke-virtual {v3, v0}, Lcom/crashlytics/android/aa;->a(Lcom/crashlytics/android/Z;)Z │ + │ + goto :goto_3 │ + │ + :cond_4 │ + iget-object v0, p0, Lcom/crashlytics/android/ac;->b:Lcom/crashlytics/android/aa; │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/aa;->a()Ljava/util/List; │ + │ + move-result-object v0 │ + │ + invoke-interface {v0}, Ljava/util/List;->isEmpty()Z │ + │ + move-result v2 │ + │ + if-nez v2, :cond_3 │ + │ + invoke-static {}, Lcom/crashlytics/android/aa;->b()[S │ + │ + move-result-object v3 │ + │ + add-int/lit8 v2, v1, 0x1 │ + │ + invoke-static {}, Lcom/crashlytics/android/aa;->b()[S │ + │ + move-result-object v4 │ + │ + array-length v4, v4 │ + │ + add-int/lit8 v4, v4, -0x1 │ + │ + invoke-static {v1, v4}, Ljava/lang/Math;->min(II)I │ + │ + move-result v1 │ + │ + aget-short v1, v3, v1 │ + │ + int-to-long v3, v1 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v5, "Crashlytics" │ + │ + new-instance v6, Ljava/lang/StringBuilder; │ + │ + const-string v7, "Report submisson: scheduling delayed retry in " │ + │ + invoke-direct {v6, v7}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v6, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ + │ + const-string v7, " seconds" │ + │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v6 │ + │ + invoke-interface {v1, v5, v6}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_3 │ + .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_0 │ + │ + const-wide/16 v5, 0x3e8 │ + │ + mul-long/2addr v3, v5 │ + │ + :try_start_4 │ + invoke-static {v3, v4}, Ljava/lang/Thread;->sleep(J)V │ + :try_end_4 │ + .catch Ljava/lang/InterruptedException; {:try_start_4 .. :try_end_4} :catch_2 │ + .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_0 │ + │ + move v1, v2 │ + │ + goto/16 :goto_2 │ + │ + :catch_2 │ + move-exception v0 │ + │ + :try_start_5 │ + invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread; │ + │ + move-result-object v0 │ │ - move-result-wide v0 │ + invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V │ + :try_end_5 │ + .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_0 │ │ - return-wide v0 │ + goto/16 :goto_1 │ .end method ├── smali/com/crashlytics/android/L.smali │ @@ -1,41 +1,38 @@ │ .class final Lcom/crashlytics/android/L; │ -.super Ljava/lang/Object; │ +.super Landroid/content/BroadcastReceiver; │ .source "SourceFile" │ │ -# interfaces │ -.implements Ljava/io/FilenameFilter; │ - │ │ # instance fields │ -.field private synthetic a:Ljava/lang/String; │ +.field private synthetic a:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;Ljava/lang/String;)V │ +.method constructor (Lcom/crashlytics/android/v;)V │ .locals 0 │ │ .prologue │ - .line 1888 │ - iput-object p2, p0, Lcom/crashlytics/android/L;->a:Ljava/lang/String; │ + .line 264 │ + iput-object p1, p0, Lcom/crashlytics/android/L;->a:Lcom/crashlytics/android/v; │ │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + invoke-direct {p0}, Landroid/content/BroadcastReceiver;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ - .locals 1 │ - .param p2, "name" # Ljava/lang/String; │ +.method public final onReceive(Landroid/content/Context;Landroid/content/Intent;)V │ + .locals 2 │ │ .prologue │ - .line 1891 │ - iget-object v0, p0, Lcom/crashlytics/android/L;->a:Ljava/lang/String; │ + .line 267 │ + iget-object v0, p0, Lcom/crashlytics/android/L;->a:Lcom/crashlytics/android/v; │ │ - invoke-virtual {p2, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ + const/4 v1, 0x1 │ │ - move-result v0 │ + invoke-static {v0, v1}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/v;Z)Z │ │ - return v0 │ + .line 268 │ + return-void │ .end method ├── smali/com/crashlytics/android/z.smali │ @@ -1,54 +1,66 @@ │ .class final Lcom/crashlytics/android/z; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Landroid/content/DialogInterface$OnClickListener; │ +.implements Ljava/util/concurrent/Callable; │ + │ + │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Ljava/util/concurrent/Callable", │ + "<", │ + "Ljava/lang/Void;", │ + ">;" │ + } │ +.end annotation │ │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/w; │ +.field private synthetic a:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/w;)V │ +.method constructor (Lcom/crashlytics/android/v;)V │ .locals 0 │ │ .prologue │ - .line 735 │ - iput-object p1, p0, Lcom/crashlytics/android/z;->a:Lcom/crashlytics/android/w; │ + .line 436 │ + iput-object p1, p0, Lcom/crashlytics/android/z;->a:Lcom/crashlytics/android/v; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final onClick(Landroid/content/DialogInterface;I)V │ - .locals 2 │ - .param p1, "dialog" # Landroid/content/DialogInterface; │ +.method public final synthetic call()Ljava/lang/Object; │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ │ .prologue │ - const/4 v1, 0x1 │ + .line 436 │ + iget-object v0, p0, Lcom/crashlytics/android/z;->a:Lcom/crashlytics/android/v; │ │ - .line 738 │ - iget-object v0, p0, Lcom/crashlytics/android/z;->a:Lcom/crashlytics/android/w; │ + invoke-virtual {v0}, Lcom/crashlytics/android/v;->g()Z │ │ - iget-object v0, v0, Lcom/crashlytics/android/w;->b:Lcom/crashlytics/android/Crashlytics; │ + move-result v0 │ │ - invoke-static {v1}, Lcom/crashlytics/android/Crashlytics;->a(Z)V │ + if-nez v0, :cond_0 │ │ - .line 739 │ - iget-object v0, p0, Lcom/crashlytics/android/z;->a:Lcom/crashlytics/android/w; │ + iget-object v0, p0, Lcom/crashlytics/android/z;->a:Lcom/crashlytics/android/v; │ │ - iget-object v0, v0, Lcom/crashlytics/android/w;->a:Lcom/crashlytics/android/C; │ + invoke-static {v0}, Lcom/crashlytics/android/v;->c(Lcom/crashlytics/android/v;)V │ │ - invoke-virtual {v0, v1}, Lcom/crashlytics/android/C;->a(Z)V │ + :cond_0 │ + const/4 v0, 0x0 │ │ - .line 740 │ - invoke-interface {p1}, Landroid/content/DialogInterface;->dismiss()V │ - │ - .line 741 │ - return-void │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/o.smali │ @@ -1,35 +1,42 @@ │ .class final Lcom/crashlytics/android/o; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/io/FilenameFilter; │ +.implements Lcom/crashlytics/android/internal/aU; │ + │ + │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Lcom/crashlytics/android/internal/aU", │ + "<", │ + "Lcom/crashlytics/android/internal/aR;", │ + ">;" │ + } │ +.end annotation │ │ │ # direct methods │ -.method constructor ()V │ +.method constructor (Lcom/crashlytics/android/Crashlytics;)V │ .locals 0 │ │ .prologue │ - .line 99 │ + .line 650 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ +.method public final bridge synthetic a(Lcom/crashlytics/android/internal/aX;)Ljava/lang/Object; │ .locals 1 │ - .param p2, "filename" # Ljava/lang/String; │ │ .prologue │ - .line 102 │ - const-string v0, ".cls_temp" │ - │ - invoke-virtual {p2, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ - │ - move-result v0 │ + .line 650 │ + iget-object v0, p1, Lcom/crashlytics/android/internal/aX;->b:Lcom/crashlytics/android/internal/aR; │ │ - return v0 │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/G.smali │ @@ -1,103 +1,64 @@ │ .class final Lcom/crashlytics/android/G; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/util/concurrent/Callable; │ - │ - │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Ljava/util/concurrent/Callable", │ - "<", │ - "Ljava/lang/Void;", │ - ">;" │ - } │ -.end annotation │ +.implements Ljava/lang/Runnable; │ │ │ # instance fields │ -.field private synthetic a:J │ - │ -.field private synthetic b:Ljava/lang/String; │ - │ -.field private synthetic c:Lcom/crashlytics/android/E; │ +.field private synthetic a:Ljava/lang/Runnable; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;JLjava/lang/String;)V │ +.method constructor (Lcom/crashlytics/android/v;Ljava/lang/Runnable;)V │ .locals 0 │ │ .prologue │ - .line 370 │ - iput-object p1, p0, Lcom/crashlytics/android/G;->c:Lcom/crashlytics/android/E; │ - │ - iput-wide p2, p0, Lcom/crashlytics/android/G;->a:J │ - │ - iput-object p4, p0, Lcom/crashlytics/android/G;->b:Ljava/lang/String; │ + .line 1958 │ + iput-object p2, p0, Lcom/crashlytics/android/G;->a:Ljava/lang/Runnable; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final synthetic call()Ljava/lang/Object; │ - .locals 5 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ +.method public final run()V │ + .locals 4 │ │ .prologue │ - .line 370 │ - iget-object v0, p0, Lcom/crashlytics/android/G;->c:Lcom/crashlytics/android/E; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/E;)Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ + .line 1962 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/G;->a:Ljava/lang/Runnable; │ + │ + invoke-interface {v0}, Ljava/lang/Runnable;->run()V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ - move-result v0 │ - │ - if-nez v0, :cond_1 │ - │ - iget-object v0, p0, Lcom/crashlytics/android/G;->c:Lcom/crashlytics/android/E; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/E;->d(Lcom/crashlytics/android/E;)Lcom/crashlytics/android/QueueFile; │ - │ - move-result-object v0 │ - │ - if-nez v0, :cond_0 │ - │ - iget-object v0, p0, Lcom/crashlytics/android/G;->c:Lcom/crashlytics/android/E; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/E;->e(Lcom/crashlytics/android/E;)Z │ - │ - :cond_0 │ - iget-object v0, p0, Lcom/crashlytics/android/G;->c:Lcom/crashlytics/android/E; │ + .line 1966 │ + :goto_0 │ + return-void │ │ - iget-object v0, p0, Lcom/crashlytics/android/G;->c:Lcom/crashlytics/android/E; │ + .line 1963 │ + :catch_0 │ + move-exception v0 │ │ - invoke-static {v0}, Lcom/crashlytics/android/E;->d(Lcom/crashlytics/android/E;)Lcom/crashlytics/android/QueueFile; │ + .line 1964 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - move-result-object v0 │ + move-result-object v1 │ │ - const/high16 v1, 0x10000 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - iget-wide v2, p0, Lcom/crashlytics/android/G;->a:J │ + move-result-object v1 │ │ - iget-object v4, p0, Lcom/crashlytics/android/G;->b:Ljava/lang/String; │ + const-string v2, "Crashlytics" │ │ - invoke-static {v0, v1, v2, v3, v4}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/QueueFile;IJLjava/lang/String;)V │ + const-string v3, "Failed to execute task." │ │ - :cond_1 │ - const/4 v0, 0x0 │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - return-object v0 │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/O.smali │ @@ -1,60 +1,87 @@ │ .class final Lcom/crashlytics/android/O; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/util/Comparator; │ +.implements Ljava/util/concurrent/Callable; │ │ │ # annotations │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "Ljava/lang/Object;", │ - "Ljava/util/Comparator", │ + "Ljava/util/concurrent/Callable", │ "<", │ - "Ljava/io/File;", │ + "Ljava/lang/Boolean;", │ ">;" │ } │ .end annotation │ │ │ +# instance fields │ +.field private synthetic a:Lcom/crashlytics/android/v; │ + │ + │ # direct methods │ -.method constructor ()V │ +.method constructor (Lcom/crashlytics/android/v;)V │ .locals 0 │ │ .prologue │ - .line 128 │ + .line 338 │ + iput-object p1, p0, Lcom/crashlytics/android/O;->a:Lcom/crashlytics/android/v; │ + │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final synthetic compare(Ljava/lang/Object;Ljava/lang/Object;)I │ - .locals 2 │ - .param p1, "x0" # Ljava/lang/Object; │ - .param p2, "x1" # Ljava/lang/Object; │ +.method public final synthetic call()Ljava/lang/Object; │ + .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ │ .prologue │ - .line 128 │ - check-cast p1, Ljava/io/File; │ + .line 338 │ + iget-object v0, p0, Lcom/crashlytics/android/O;->a:Lcom/crashlytics/android/v; │ + │ + invoke-static {v0}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/v;)Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + iget-object v0, p0, Lcom/crashlytics/android/O;->a:Lcom/crashlytics/android/v; │ + │ + invoke-static {v0}, Lcom/crashlytics/android/v;->b(Lcom/crashlytics/android/v;)V │ │ - .end local p1 # "x0":Ljava/lang/Object; │ - check-cast p2, Ljava/io/File; │ + iget-object v0, p0, Lcom/crashlytics/android/O;->a:Lcom/crashlytics/android/v; │ │ - .end local p2 # "x1":Ljava/lang/Object; │ - invoke-virtual {p2}, Ljava/io/File;->getName()Ljava/lang/String; │ + invoke-static {v0}, Lcom/crashlytics/android/v;->c(Lcom/crashlytics/android/v;)V │ + │ + const/4 v0, 0x1 │ + │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v0 │ │ - invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String; │ + :goto_0 │ + return-object v0 │ │ - move-result-object v1 │ + :cond_0 │ + const/4 v0, 0x0 │ │ - invoke-virtual {v0, v1}, Ljava/lang/String;->compareTo(Ljava/lang/String;)I │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ - move-result v0 │ + move-result-object v0 │ │ - return v0 │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/W.smali │ @@ -1,60 +1,244 @@ │ .class final Lcom/crashlytics/android/W; │ -.super Ljava/lang/Object; │ +.super Lcom/crashlytics/android/internal/Z; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/io/FilenameFilter; │ +.implements Lcom/crashlytics/android/V; │ │ │ # direct methods │ -.method constructor ()V │ - .locals 0 │ +.method public constructor (Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ + .locals 1 │ │ .prologue │ - .line 110 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + .line 34 │ + sget-object v0, Lcom/crashlytics/android/internal/ax;->b:Lcom/crashlytics/android/internal/ax; │ + │ + invoke-direct {p0, p1, p2, p3, v0}, Lcom/crashlytics/android/internal/Z;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;Lcom/crashlytics/android/internal/ax;)V │ │ + .line 35 │ return-void │ .end method │ │ │ # virtual methods │ -.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ - .locals 1 │ - .param p1, "file" # Ljava/io/File; │ - .param p2, "fileName" # Ljava/lang/String; │ +.method public final a(Lcom/crashlytics/android/U;)Z │ + .locals 6 │ │ .prologue │ - .line 113 │ - sget-object v0, Lcom/crashlytics/android/E;->a:Ljava/io/FilenameFilter; │ + .line 53 │ + invoke-virtual {p0}, Lcom/crashlytics/android/W;->b()Lcom/crashlytics/android/internal/ay; │ │ - invoke-interface {v0, p1, p2}, Ljava/io/FilenameFilter;->accept(Ljava/io/File;Ljava/lang/String;)Z │ + move-result-object v0 │ │ - move-result v0 │ + .line 54 │ + const-string v1, "X-CRASHLYTICS-API-KEY" │ + │ + iget-object v2, p1, Lcom/crashlytics/android/U;->a:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ - if-nez v0, :cond_0 │ + move-result-object v0 │ + │ + const-string v1, "X-CRASHLYTICS-API-CLIENT-TYPE" │ │ - invoke-static {}, Lcom/crashlytics/android/E;->e()Ljava/util/regex/Pattern; │ + const-string v2, "android" │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - invoke-virtual {v0, p2}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ + const-string v1, "X-CRASHLYTICS-API-CLIENT-VERSION" │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/Crashlytics;->getVersion()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - invoke-virtual {v0}, Ljava/util/regex/Matcher;->matches()Z │ + iget-object v1, p1, Lcom/crashlytics/android/U;->b:Lcom/crashlytics/android/Z; │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/Z;->e()Ljava/util/Map; │ + │ + move-result-object v1 │ + │ + invoke-interface {v1}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + │ + move-result-object v1 │ + │ + invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v2 │ + │ + move-object v1, v0 │ + │ + :goto_0 │ + invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Ljava/util/Map$Entry; │ + │ + invoke-virtual {v1, v0}, Lcom/crashlytics/android/internal/ay;->a(Ljava/util/Map$Entry;)Lcom/crashlytics/android/internal/ay; │ + │ + move-result-object v0 │ + │ + move-object v1, v0 │ + │ + goto :goto_0 │ + │ + .line 55 │ + :cond_0 │ + iget-object v0, p1, Lcom/crashlytics/android/U;->b:Lcom/crashlytics/android/Z; │ + │ + const-string v2, "report[file]" │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Z;->b()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + const-string v4, "application/octet-stream" │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Z;->d()Ljava/io/File; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v1, v2, v3, v4, v5}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Lcom/crashlytics/android/internal/ay; │ + │ + move-result-object v1 │ + │ + const-string v2, "report[identifier]" │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Z;->c()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v1, v2, v0}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ + │ + move-result-object v0 │ + │ + .line 57 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Sending report to: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {p0}, Lcom/crashlytics/android/W;->a()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 59 │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/ay;->b()I │ + │ + move-result v1 │ + │ + .line 61 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v2 │ + │ + const-string v3, "Crashlytics" │ + │ + new-instance v4, Ljava/lang/StringBuilder; │ + │ + const-string v5, "Create report request ID: " │ + │ + invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + const-string v5, "X-REQUEST-ID" │ + │ + invoke-virtual {v0, v5}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-interface {v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 62 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Result was: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 64 │ + invoke-static {v1}, Lcom/crashlytics/android/internal/r;->a(I)I │ + │ + move-result v0 │ + │ + if-nez v0, :cond_1 │ + │ const/4 v0, 0x1 │ │ - :goto_0 │ + :goto_1 │ return v0 │ │ - :cond_0 │ + :cond_1 │ const/4 v0, 0x0 │ │ - goto :goto_0 │ + goto :goto_1 │ .end method ├── smali/com/crashlytics/android/X.smali │ @@ -1,61 +1,159 @@ │ .class final Lcom/crashlytics/android/X; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ -# interfaces │ -.implements Ljava/io/FilenameFilter; │ - │ │ # instance fields │ -.field private a:Ljava/lang/String; │ +.field private final a:Landroid/content/Context; │ + │ +.field private final b:Lcom/crashlytics/android/internal/aQ; │ │ │ # direct methods │ -.method public constructor (Ljava/lang/String;)V │ +.method public constructor (Landroid/content/Context;Lcom/crashlytics/android/internal/aQ;)V │ .locals 0 │ │ .prologue │ - .line 71 │ + .line 39 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 72 │ - iput-object p1, p0, Lcom/crashlytics/android/X;->a:Ljava/lang/String; │ + .line 40 │ + iput-object p1, p0, Lcom/crashlytics/android/X;->a:Landroid/content/Context; │ + │ + .line 41 │ + iput-object p2, p0, Lcom/crashlytics/android/X;->b:Lcom/crashlytics/android/internal/aQ; │ │ - .line 73 │ + .line 42 │ return-void │ .end method │ │ - │ -# virtual methods │ -.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ - .locals 1 │ - .param p2, "filename" # Ljava/lang/String; │ +.method private a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + .locals 2 │ │ .prologue │ - .line 77 │ - iget-object v0, p0, Lcom/crashlytics/android/X;->a:Ljava/lang/String; │ + .line 92 │ + iget-object v0, p0, Lcom/crashlytics/android/X;->a:Landroid/content/Context; │ │ - invoke-virtual {p2, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ + invoke-static {v0, p1}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ │ - move-result v0 │ + move-result-object v0 │ │ if-eqz v0, :cond_0 │ │ - const-string v0, ".cls_temp" │ + invoke-virtual {v0}, Ljava/lang/String;->length()I │ │ - invoke-virtual {p2, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + move-result v1 │ │ - move-result v0 │ + if-nez v1, :cond_1 │ │ - if-nez v0, :cond_0 │ - │ - const/4 v0, 0x1 │ + :cond_0 │ + const/4 v1, 0x1 │ │ :goto_0 │ - return v0 │ + if-eqz v1, :cond_2 │ │ - :cond_0 │ - const/4 v0, 0x0 │ + :goto_1 │ + return-object p2 │ + │ + :cond_1 │ + const/4 v1, 0x0 │ │ goto :goto_0 │ + │ + :cond_2 │ + move-object p2, v0 │ + │ + goto :goto_1 │ +.end method │ + │ + │ +# virtual methods │ +.method public final a()Ljava/lang/String; │ + .locals 2 │ + │ + .prologue │ + .line 48 │ + const-string v0, "com.crashlytics.CrashSubmissionPromptTitle" │ + │ + iget-object v1, p0, Lcom/crashlytics/android/X;->b:Lcom/crashlytics/android/internal/aQ; │ + │ + iget-object v1, v1, Lcom/crashlytics/android/internal/aQ;->a:Ljava/lang/String; │ + │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/X;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method public final b()Ljava/lang/String; │ + .locals 2 │ + │ + .prologue │ + .line 55 │ + const-string v0, "com.crashlytics.CrashSubmissionPromptMessage" │ + │ + iget-object v1, p0, Lcom/crashlytics/android/X;->b:Lcom/crashlytics/android/internal/aQ; │ + │ + iget-object v1, v1, Lcom/crashlytics/android/internal/aQ;->b:Ljava/lang/String; │ + │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/X;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method public final c()Ljava/lang/String; │ + .locals 2 │ + │ + .prologue │ + .line 63 │ + const-string v0, "com.crashlytics.CrashSubmissionSendTitle" │ + │ + iget-object v1, p0, Lcom/crashlytics/android/X;->b:Lcom/crashlytics/android/internal/aQ; │ + │ + iget-object v1, v1, Lcom/crashlytics/android/internal/aQ;->c:Ljava/lang/String; │ + │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/X;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method public final d()Ljava/lang/String; │ + .locals 2 │ + │ + .prologue │ + .line 71 │ + const-string v0, "com.crashlytics.CrashSubmissionAlwaysSendTitle" │ + │ + iget-object v1, p0, Lcom/crashlytics/android/X;->b:Lcom/crashlytics/android/internal/aQ; │ + │ + iget-object v1, v1, Lcom/crashlytics/android/internal/aQ;->g:Ljava/lang/String; │ + │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/X;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method public final e()Ljava/lang/String; │ + .locals 2 │ + │ + .prologue │ + .line 79 │ + const-string v0, "com.crashlytics.CrashSubmissionCancelTitle" │ + │ + iget-object v1, p0, Lcom/crashlytics/android/X;->b:Lcom/crashlytics/android/internal/aQ; │ + │ + iget-object v1, v1, Lcom/crashlytics/android/internal/aQ;->e:Ljava/lang/String; │ + │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/X;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/s.smali │ @@ -1,81 +1,54 @@ │ .class final Lcom/crashlytics/android/s; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Lcom/crashlytics/android/D; │ - │ - │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Lcom/crashlytics/android/D", │ - "<", │ - "Ljava/lang/Boolean;", │ - ">;" │ - } │ -.end annotation │ +.implements Landroid/content/DialogInterface$OnClickListener; │ │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/Crashlytics; │ +.field private synthetic a:Lcom/crashlytics/android/p; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/Crashlytics;)V │ +.method constructor (Lcom/crashlytics/android/p;)V │ .locals 0 │ │ .prologue │ - .line 586 │ - iput-object p1, p0, Lcom/crashlytics/android/s;->a:Lcom/crashlytics/android/Crashlytics; │ + .line 717 │ + iput-object p1, p0, Lcom/crashlytics/android/s;->a:Lcom/crashlytics/android/p; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final synthetic a(Lcom/crashlytics/android/au;)Ljava/lang/Object; │ +.method public final onClick(Landroid/content/DialogInterface;I)V │ .locals 2 │ + .param p1, "dialog" # Landroid/content/DialogInterface; │ │ .prologue │ - const/4 v0, 0x0 │ - │ - .line 586 │ - invoke-virtual {p1}, Lcom/crashlytics/android/au;->d()Lcom/crashlytics/android/am; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/am;->a()Z │ - │ - move-result v1 │ + const/4 v1, 0x1 │ │ - if-eqz v1, :cond_1 │ + .line 720 │ + iget-object v0, p0, Lcom/crashlytics/android/s;->a:Lcom/crashlytics/android/p; │ │ - iget-object v1, p0, Lcom/crashlytics/android/s;->a:Lcom/crashlytics/android/Crashlytics; │ + iget-object v0, v0, Lcom/crashlytics/android/p;->b:Lcom/crashlytics/android/Crashlytics; │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->n()Z │ + invoke-static {v1}, Lcom/crashlytics/android/Crashlytics;->a(Z)V │ │ - move-result v1 │ + .line 721 │ + iget-object v0, p0, Lcom/crashlytics/android/s;->a:Lcom/crashlytics/android/p; │ │ - if-nez v1, :cond_0 │ + iget-object v0, v0, Lcom/crashlytics/android/p;->a:Lcom/crashlytics/android/u; │ │ - const/4 v0, 0x1 │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/u;->a(Z)V │ │ - :cond_0 │ - invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ + .line 722 │ + invoke-interface {p1}, Landroid/content/DialogInterface;->dismiss()V │ │ - move-result-object v0 │ - │ - :goto_0 │ - return-object v0 │ - │ - :cond_1 │ - invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ - │ - move-result-object v0 │ - │ - goto :goto_0 │ + .line 723 │ + return-void │ .end method ├── smali/com/crashlytics/android/e.smali │ @@ -1,45 +1,289 @@ │ -.class final enum Lcom/crashlytics/android/e; │ -.super Lcom/crashlytics/android/d; │ +.class final Lcom/crashlytics/android/e; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ │ +# static fields │ +.field private static final a:Ljava/util/concurrent/atomic/AtomicLong; │ + │ +.field private static b:Ljava/lang/String; │ + │ + │ # direct methods │ -.method constructor (Ljava/lang/String;I)V │ - .locals 1 │ +.method static constructor ()V │ + .locals 3 │ │ .prologue │ - const/4 v0, 0x0 │ + .line 27 │ + new-instance v0, Ljava/util/concurrent/atomic/AtomicLong; │ + │ + const-wide/16 v1, 0x0 │ │ - .line 56 │ - invoke-direct {p0, p1, v0, v0}, Lcom/crashlytics/android/d;->(Ljava/lang/String;IB)V │ + invoke-direct {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicLong;->(J)V │ + │ + sput-object v0, Lcom/crashlytics/android/e;->a:Ljava/util/concurrent/atomic/AtomicLong; │ │ return-void │ .end method │ │ +.method public constructor (Lcom/crashlytics/android/internal/ao;)V │ + .locals 12 │ │ -# virtual methods │ -.method public final a(Ljava/lang/String;Ljava/util/Map;)Lcom/crashlytics/android/HttpRequest; │ - .locals 1 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Ljava/lang/String;", │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;)", │ - "Lcom/crashlytics/android/HttpRequest;" │ - } │ - .end annotation │ + .prologue │ + const/4 v11, 0x4 │ + │ + const/4 v10, 0x3 │ + │ + const/4 v9, 0x2 │ + │ + const/4 v8, 0x1 │ + │ + const/4 v7, 0x0 │ + │ + .line 31 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ + │ + .line 32 │ + const/16 v0, 0xa │ + │ + new-array v0, v0, [B │ + │ + .line 34 │ + new-instance v1, Ljava/util/Date; │ + │ + invoke-direct {v1}, Ljava/util/Date;->()V │ + │ + invoke-virtual {v1}, Ljava/util/Date;->getTime()J │ + │ + move-result-wide v1 │ + │ + const-wide/16 v3, 0x3e8 │ + │ + div-long v3, v1, v3 │ + │ + const-wide/16 v5, 0x3e8 │ + │ + rem-long/2addr v1, v5 │ + │ + invoke-static {v11}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer; │ + │ + move-result-object v5 │ + │ + long-to-int v3, v3 │ + │ + invoke-virtual {v5, v3}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer; │ + │ + sget-object v3, Ljava/nio/ByteOrder;->BIG_ENDIAN:Ljava/nio/ByteOrder; │ + │ + invoke-virtual {v5, v3}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; │ + │ + invoke-virtual {v5, v7}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer; │ + │ + invoke-virtual {v5}, Ljava/nio/ByteBuffer;->array()[B │ + │ + move-result-object v3 │ + │ + aget-byte v4, v3, v7 │ + │ + aput-byte v4, v0, v7 │ + │ + aget-byte v4, v3, v8 │ + │ + aput-byte v4, v0, v8 │ + │ + aget-byte v4, v3, v9 │ + │ + aput-byte v4, v0, v9 │ + │ + aget-byte v3, v3, v10 │ + │ + aput-byte v3, v0, v10 │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/e;->a(J)[B │ + │ + move-result-object v1 │ + │ + aget-byte v2, v1, v7 │ + │ + aput-byte v2, v0, v11 │ + │ + const/4 v2, 0x5 │ + │ + aget-byte v1, v1, v8 │ + │ + aput-byte v1, v0, v2 │ + │ + .line 35 │ + sget-object v1, Lcom/crashlytics/android/e;->a:Ljava/util/concurrent/atomic/AtomicLong; │ + │ + invoke-virtual {v1}, Ljava/util/concurrent/atomic/AtomicLong;->incrementAndGet()J │ + │ + move-result-wide v1 │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/e;->a(J)[B │ + │ + move-result-object v1 │ + │ + const/4 v2, 0x6 │ + │ + aget-byte v3, v1, v7 │ + │ + aput-byte v3, v0, v2 │ + │ + const/4 v2, 0x7 │ + │ + aget-byte v1, v1, v8 │ + │ + aput-byte v1, v0, v2 │ + │ + .line 36 │ + invoke-static {}, Landroid/os/Process;->myPid()I │ + │ + move-result v1 │ + │ + invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/Integer;->shortValue()S │ + │ + move-result v1 │ + │ + int-to-long v1, v1 │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/e;->a(J)[B │ + │ + move-result-object v1 │ + │ + const/16 v2, 0x8 │ + │ + aget-byte v3, v1, v7 │ + │ + aput-byte v3, v0, v2 │ + │ + const/16 v2, 0x9 │ + │ + aget-byte v1, v1, v8 │ + │ + aput-byte v1, v0, v2 │ + │ + .line 40 │ + invoke-virtual {p1}, Lcom/crashlytics/android/internal/ao;->b()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + .line 41 │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->a([B)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + .line 43 │ + sget-object v2, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v3, "%s-%s-%s-%s" │ + │ + new-array v4, v11, [Ljava/lang/Object; │ + │ + const/16 v5, 0xc │ + │ + invoke-virtual {v0, v7, v5}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + aput-object v5, v4, v7 │ + │ + const/16 v5, 0xc │ + │ + const/16 v6, 0x10 │ + │ + invoke-virtual {v0, v5, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + aput-object v5, v4, v8 │ + │ + const/16 v5, 0x10 │ + │ + const/16 v6, 0x14 │ + │ + invoke-virtual {v0, v5, v6}, Ljava/lang/String;->subSequence(II)Ljava/lang/CharSequence; │ + │ + move-result-object v0 │ + │ + aput-object v0, v4, v9 │ + │ + const/16 v0, 0xc │ + │ + invoke-virtual {v1, v7, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + aput-object v0, v4, v10 │ + │ + invoke-static {v2, v3, v4}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + sget-object v1, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + invoke-virtual {v0, v1}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + sput-object v0, Lcom/crashlytics/android/e;->b:Ljava/lang/String; │ + │ + .line 45 │ + return-void │ +.end method │ + │ +.method private static a(J)[B │ + .locals 2 │ │ .prologue │ - .line 59 │ - const/4 v0, 0x1 │ + .line 86 │ + const/4 v0, 0x2 │ │ - invoke-static {p1, p2, v0}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/CharSequence;Ljava/util/Map;Z)Lcom/crashlytics/android/HttpRequest; │ + invoke-static {v0}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer; │ │ move-result-object v0 │ │ + .line 87 │ + long-to-int v1, p0 │ + │ + int-to-short v1, v1 │ + │ + invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer; │ + │ + .line 88 │ + sget-object v1, Ljava/nio/ByteOrder;->BIG_ENDIAN:Ljava/nio/ByteOrder; │ + │ + invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; │ + │ + .line 89 │ + const/4 v1, 0x0 │ + │ + invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer; │ + │ + .line 91 │ + invoke-virtual {v0}, Ljava/nio/ByteBuffer;->array()[B │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ + │ +# virtual methods │ +.method public final toString()Ljava/lang/String; │ + .locals 1 │ + │ + .prologue │ + .line 95 │ + sget-object v0, Lcom/crashlytics/android/e;->b:Ljava/lang/String; │ + │ return-object v0 │ .end method ├── smali/com/crashlytics/android/l.smali │ @@ -1,293 +1,77 @@ │ .class final Lcom/crashlytics/android/l; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Lcom/crashlytics/android/internal/aU; │ │ -# static fields │ -.field private static final a:Ljava/util/concurrent/atomic/AtomicLong; │ │ -.field private static b:Ljava/lang/String; │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Lcom/crashlytics/android/internal/aU", │ + "<", │ + "Ljava/lang/Boolean;", │ + ">;" │ + } │ +.end annotation │ │ │ -# direct methods │ -.method static constructor ()V │ - .locals 3 │ - │ - .prologue │ - .line 23 │ - new-instance v0, Ljava/util/concurrent/atomic/AtomicLong; │ - │ - const-wide/16 v1, 0x0 │ +# instance fields │ +.field private synthetic a:Lcom/crashlytics/android/Crashlytics; │ │ - invoke-direct {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicLong;->(J)V │ - │ - sput-object v0, Lcom/crashlytics/android/l;->a:Ljava/util/concurrent/atomic/AtomicLong; │ - │ - return-void │ -.end method │ │ -.method public constructor ()V │ - .locals 12 │ +# direct methods │ +.method constructor (Lcom/crashlytics/android/Crashlytics;)V │ + .locals 0 │ │ .prologue │ - const/4 v11, 0x4 │ - │ - const/4 v10, 0x3 │ - │ - const/4 v9, 0x2 │ - │ - const/4 v8, 0x1 │ + .line 580 │ + iput-object p1, p0, Lcom/crashlytics/android/l;->a:Lcom/crashlytics/android/Crashlytics; │ │ - const/4 v7, 0x0 │ - │ - .line 27 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 28 │ - const/16 v0, 0xa │ - │ - new-array v0, v0, [B │ - │ - .line 30 │ - new-instance v1, Ljava/util/Date; │ - │ - invoke-direct {v1}, Ljava/util/Date;->()V │ - │ - invoke-virtual {v1}, Ljava/util/Date;->getTime()J │ - │ - move-result-wide v1 │ - │ - const-wide/16 v3, 0x3e8 │ - │ - div-long v3, v1, v3 │ - │ - const-wide/16 v5, 0x3e8 │ - │ - rem-long/2addr v1, v5 │ - │ - invoke-static {v11}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer; │ - │ - move-result-object v5 │ - │ - long-to-int v3, v3 │ - │ - invoke-virtual {v5, v3}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer; │ - │ - sget-object v3, Ljava/nio/ByteOrder;->BIG_ENDIAN:Ljava/nio/ByteOrder; │ - │ - invoke-virtual {v5, v3}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; │ - │ - invoke-virtual {v5, v7}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer; │ - │ - invoke-virtual {v5}, Ljava/nio/ByteBuffer;->array()[B │ - │ - move-result-object v3 │ - │ - aget-byte v4, v3, v7 │ - │ - aput-byte v4, v0, v7 │ - │ - aget-byte v4, v3, v8 │ - │ - aput-byte v4, v0, v8 │ - │ - aget-byte v4, v3, v9 │ - │ - aput-byte v4, v0, v9 │ - │ - aget-byte v3, v3, v10 │ - │ - aput-byte v3, v0, v10 │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/l;->a(J)[B │ - │ - move-result-object v1 │ - │ - aget-byte v2, v1, v7 │ - │ - aput-byte v2, v0, v11 │ - │ - const/4 v2, 0x5 │ - │ - aget-byte v1, v1, v8 │ - │ - aput-byte v1, v0, v2 │ - │ - .line 31 │ - sget-object v1, Lcom/crashlytics/android/l;->a:Ljava/util/concurrent/atomic/AtomicLong; │ - │ - invoke-virtual {v1}, Ljava/util/concurrent/atomic/AtomicLong;->incrementAndGet()J │ - │ - move-result-wide v1 │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/l;->a(J)[B │ - │ - move-result-object v1 │ - │ - const/4 v2, 0x6 │ - │ - aget-byte v3, v1, v7 │ - │ - aput-byte v3, v0, v2 │ - │ - const/4 v2, 0x7 │ - │ - aget-byte v1, v1, v8 │ - │ - aput-byte v1, v0, v2 │ - │ - .line 32 │ - new-instance v1, Ljava/lang/Integer; │ - │ - invoke-static {}, Landroid/os/Process;->myPid()I │ - │ - move-result v2 │ - │ - invoke-direct {v1, v2}, Ljava/lang/Integer;->(I)V │ - │ - invoke-virtual {v1}, Ljava/lang/Integer;->shortValue()S │ - │ - move-result v1 │ - │ - int-to-long v1, v1 │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/l;->a(J)[B │ - │ - move-result-object v1 │ - │ - const/16 v2, 0x8 │ - │ - aget-byte v3, v1, v7 │ - │ - aput-byte v3, v0, v2 │ - │ - const/16 v2, 0x9 │ - │ - aget-byte v1, v1, v8 │ - │ - aput-byte v1, v0, v2 │ - │ - .line 36 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->c()Lcom/crashlytics/android/IdManager; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/IdManager;->b()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - .line 37 │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->b([B)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - .line 39 │ - const-string v2, "%s-%s-%s-%s" │ - │ - new-array v3, v11, [Ljava/lang/Object; │ - │ - const/16 v4, 0xc │ - │ - invoke-virtual {v0, v7, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - aput-object v4, v3, v7 │ - │ - const/16 v4, 0xc │ - │ - const/16 v5, 0x10 │ - │ - invoke-virtual {v0, v4, v5}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - aput-object v4, v3, v8 │ - │ - const/16 v4, 0x10 │ - │ - const/16 v5, 0x14 │ - │ - invoke-virtual {v0, v4, v5}, Ljava/lang/String;->subSequence(II)Ljava/lang/CharSequence; │ - │ - move-result-object v0 │ - │ - aput-object v0, v3, v9 │ - │ - const/16 v0, 0xc │ - │ - invoke-virtual {v1, v7, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - aput-object v0, v3, v10 │ - │ - invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - sput-object v0, Lcom/crashlytics/android/l;->b:Ljava/lang/String; │ - │ - .line 41 │ return-void │ .end method │ │ -.method private static a(J)[B │ + │ +# virtual methods │ +.method public final synthetic a(Lcom/crashlytics/android/internal/aX;)Ljava/lang/Object; │ .locals 2 │ │ .prologue │ - .line 82 │ - const/4 v0, 0x2 │ + const/4 v0, 0x0 │ │ - invoke-static {v0}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer; │ - │ - move-result-object v0 │ + .line 580 │ + iget-object v1, p1, Lcom/crashlytics/android/internal/aX;->d:Lcom/crashlytics/android/internal/aP; │ │ - .line 83 │ - long-to-int v1, p0 │ + iget-boolean v1, v1, Lcom/crashlytics/android/internal/aP;->a:Z │ │ - int-to-short v1, v1 │ + if-eqz v1, :cond_1 │ │ - invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer; │ + iget-object v1, p0, Lcom/crashlytics/android/l;->a:Lcom/crashlytics/android/Crashlytics; │ │ - .line 84 │ - sget-object v1, Ljava/nio/ByteOrder;->BIG_ENDIAN:Ljava/nio/ByteOrder; │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->k()Z │ │ - invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; │ + move-result v1 │ │ - .line 85 │ - const/4 v1, 0x0 │ + if-nez v1, :cond_0 │ │ - invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer; │ + const/4 v0, 0x1 │ │ - .line 87 │ - invoke-virtual {v0}, Ljava/nio/ByteBuffer;->array()[B │ + :cond_0 │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v0 │ │ + :goto_0 │ return-object v0 │ -.end method │ │ + :cond_1 │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ -# virtual methods │ -.method public final toString()Ljava/lang/String; │ - .locals 1 │ - │ - .prologue │ - .line 91 │ - sget-object v0, Lcom/crashlytics/android/l;->b:Ljava/lang/String; │ + move-result-object v0 │ │ - return-object v0 │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/C.smali │ @@ -1,95 +1,65 @@ │ .class final Lcom/crashlytics/android/C; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Ljava/util/concurrent/Callable; │ │ -# instance fields │ -.field private a:Z │ - │ -.field private final b:Ljava/util/concurrent/CountDownLatch; │ - │ - │ -# direct methods │ -.method private constructor (Lcom/crashlytics/android/Crashlytics;)V │ - .locals 2 │ - │ - .prologue │ - .line 1175 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 1176 │ - const/4 v0, 0x0 │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Ljava/util/concurrent/Callable", │ + "<", │ + "Ljava/lang/Boolean;", │ + ">;" │ + } │ +.end annotation │ │ - iput-boolean v0, p0, Lcom/crashlytics/android/C;->a:Z │ │ - .line 1177 │ - new-instance v0, Ljava/util/concurrent/CountDownLatch; │ - │ - const/4 v1, 0x1 │ - │ - invoke-direct {v0, v1}, Ljava/util/concurrent/CountDownLatch;->(I)V │ +# instance fields │ +.field private synthetic a:Lcom/crashlytics/android/v; │ │ - iput-object v0, p0, Lcom/crashlytics/android/C;->b:Ljava/util/concurrent/CountDownLatch; │ │ - return-void │ -.end method │ - │ -.method synthetic constructor (Lcom/crashlytics/android/Crashlytics;B)V │ +# direct methods │ +.method constructor (Lcom/crashlytics/android/v;)V │ .locals 0 │ │ .prologue │ - .line 1175 │ - invoke-direct {p0, p1}, Lcom/crashlytics/android/C;->(Lcom/crashlytics/android/Crashlytics;)V │ + .line 480 │ + iput-object p1, p0, Lcom/crashlytics/android/C;->a:Lcom/crashlytics/android/v; │ + │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method final a(Z)V │ +.method public final synthetic call()Ljava/lang/Object; │ .locals 1 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ │ .prologue │ - .line 1180 │ - iput-boolean p1, p0, Lcom/crashlytics/android/C;->a:Z │ - │ - .line 1181 │ - iget-object v0, p0, Lcom/crashlytics/android/C;->b:Ljava/util/concurrent/CountDownLatch; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V │ - │ - .line 1182 │ - return-void │ -.end method │ + .line 480 │ + iget-object v0, p0, Lcom/crashlytics/android/C;->a:Lcom/crashlytics/android/v; │ │ -.method final a()Z │ - .locals 1 │ + invoke-static {v0}, Lcom/crashlytics/android/v;->f(Lcom/crashlytics/android/v;)Ljava/io/File; │ │ - .prologue │ - .line 1185 │ - iget-boolean v0, p0, Lcom/crashlytics/android/C;->a:Z │ + move-result-object v0 │ │ - return v0 │ -.end method │ + invoke-virtual {v0}, Ljava/io/File;->exists()Z │ │ -.method final b()V │ - .locals 1 │ + move-result v0 │ │ - .prologue │ - .line 1190 │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/C;->b:Ljava/util/concurrent/CountDownLatch; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->await()V │ - :try_end_0 │ - .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 1194 │ - :goto_0 │ - return-void │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ - :catch_0 │ - move-exception v0 │ + move-result-object v0 │ │ - goto :goto_0 │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/F.smali │ @@ -2,52 +2,40 @@ │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ .implements Ljava/io/FilenameFilter; │ │ │ +# instance fields │ +.field private synthetic a:Ljava/lang/String; │ + │ + │ # direct methods │ -.method constructor ()V │ +.method constructor (Lcom/crashlytics/android/v;Ljava/lang/String;)V │ .locals 0 │ │ .prologue │ - .line 120 │ + .line 1883 │ + iput-object p2, p0, Lcom/crashlytics/android/F;->a:Ljava/lang/String; │ + │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ .method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ - .locals 2 │ - .param p2, "filename" # Ljava/lang/String; │ + .locals 1 │ + .param p2, "name" # Ljava/lang/String; │ │ .prologue │ - .line 123 │ - invoke-virtual {p2}, Ljava/lang/String;->length()I │ - │ - move-result v0 │ - │ - const/16 v1, 0x27 │ + .line 1886 │ + iget-object v0, p0, Lcom/crashlytics/android/F;->a:Ljava/lang/String; │ │ - if-ne v0, v1, :cond_0 │ - │ - const-string v0, ".cls" │ - │ - invoke-virtual {p2, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + invoke-virtual {p2, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ │ move-result v0 │ │ - if-eqz v0, :cond_0 │ - │ - const/4 v0, 0x1 │ - │ - :goto_0 │ return v0 │ - │ - :cond_0 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ .end method ├── smali/com/crashlytics/android/ab.smali │ @@ -1,8 +1,53 @@ │ -.class interface abstract Lcom/crashlytics/android/ab; │ +.class final Lcom/crashlytics/android/ab; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Ljava/io/FilenameFilter; │ + │ + │ +# direct methods │ +.method constructor ()V │ + .locals 0 │ + │ + .prologue │ + .line 25 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ + │ + return-void │ +.end method │ + │ │ # virtual methods │ -.method public abstract a(Lcom/crashlytics/android/aa;)Z │ +.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ + .locals 1 │ + .param p2, "filename" # Ljava/lang/String; │ + │ + .prologue │ + .line 28 │ + const-string v0, ".cls" │ + │ + invoke-virtual {p2, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_0 │ + │ + const-string v0, "Session" │ + │ + invoke-virtual {p2, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + :goto_0 │ + return v0 │ + │ + :cond_0 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/a.smali │ @@ -1,304 +1,517 @@ │ .class abstract Lcom/crashlytics/android/a; │ -.super Lcom/crashlytics/android/b; │ +.super Lcom/crashlytics/android/internal/Z; │ .source "SourceFile" │ │ │ # direct methods │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/aj;)V │ +.method public constructor (Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;Lcom/crashlytics/android/internal/ax;)V │ .locals 0 │ │ .prologue │ - .line 33 │ - invoke-direct {p0, p1, p2, p3}, Lcom/crashlytics/android/b;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/aj;)V │ + .line 43 │ + invoke-direct {p0, p1, p2, p3, p4}, Lcom/crashlytics/android/internal/Z;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;Lcom/crashlytics/android/internal/ax;)V │ │ - .line 34 │ + .line 44 │ return-void │ .end method │ │ - │ -# virtual methods │ -.method public final a(Lcom/crashlytics/android/h;)Z │ +.method private static a(Lcom/crashlytics/android/internal/ay;Lcom/crashlytics/android/b;)Lcom/crashlytics/android/internal/ay; │ .locals 7 │ │ .prologue │ - .line 38 │ - invoke-virtual {p0}, Lcom/crashlytics/android/a;->b()Lcom/crashlytics/android/HttpRequest; │ + .line 81 │ + const-string v0, "app[identifier]" │ + │ + iget-object v1, p1, Lcom/crashlytics/android/b;->b:Ljava/lang/String; │ + │ + invoke-virtual {p0, v0, v1}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - .line 39 │ - const-string v1, "X-CRASHLYTICS-API-KEY" │ + const-string v1, "app[name]" │ │ - iget-object v2, p1, Lcom/crashlytics/android/h;->a:Ljava/lang/String; │ + iget-object v2, p1, Lcom/crashlytics/android/b;->f:Ljava/lang/String; │ │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - const-string v1, "X-CRASHLYTICS-CLIENT-TYPE" │ + const-string v1, "app[display_version]" │ │ - const-string v2, "android" │ + iget-object v2, p1, Lcom/crashlytics/android/b;->c:Ljava/lang/String; │ │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - const-string v1, "X-CRASHLYTICS-API-CLIENT-VERSION" │ + const-string v1, "app[build_version]" │ + │ + iget-object v2, p1, Lcom/crashlytics/android/b;->d:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ + │ + move-result-object v0 │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getCrashlyticsVersion()Ljava/lang/String; │ + const-string v1, "app[source]" │ + │ + iget v2, p1, Lcom/crashlytics/android/b;->g:I │ + │ + invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v2 │ │ - invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - .line 40 │ - iget-object v1, p1, Lcom/crashlytics/android/h;->j:Lcom/crashlytics/android/ak; │ + const-string v1, "app[minimum_sdk_version]" │ + │ + iget-object v2, p1, Lcom/crashlytics/android/b;->h:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ + │ + move-result-object v0 │ + │ + const-string v1, "app[built_sdk_version]" │ + │ + iget-object v2, p1, Lcom/crashlytics/android/b;->i:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ + │ + move-result-object v2 │ + │ + .line 89 │ + iget-object v0, p1, Lcom/crashlytics/android/b;->e:Ljava/lang/String; │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->e(Ljava/lang/String;)Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + .line 90 │ + const-string v0, "app[instance_identifier]" │ + │ + iget-object v1, p1, Lcom/crashlytics/android/b;->e:Ljava/lang/String; │ + │ + invoke-virtual {v2, v0, v1}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ + │ + .line 93 │ + :cond_0 │ + iget-object v0, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ │ - const-string v2, "app[identifier]" │ + if-eqz v0, :cond_1 │ │ - iget-object v3, p1, Lcom/crashlytics/android/h;->b:Ljava/lang/String; │ + .line 94 │ + const/4 v1, 0x0 │ │ - invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + .line 97 │ + :try_start_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - const-string v2, "app[name]" │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + │ + move-result-object v0 │ + │ + iget-object v3, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ + │ + iget v3, v3, Lcom/crashlytics/android/Y;->b:I │ + │ + invoke-virtual {v0, v3}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; │ + │ + move-result-object v1 │ + │ + .line 100 │ + const-string v0, "app[icon][hash]" │ │ - iget-object v3, p1, Lcom/crashlytics/android/h;->f:Ljava/lang/String; │ + iget-object v3, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ │ - invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + iget-object v3, v3, Lcom/crashlytics/android/Y;->a:Ljava/lang/String; │ + │ + invoke-virtual {v2, v0, v3}, Lcom/crashlytics/android/internal/ay;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - const-string v2, "app[display_version]" │ + const-string v3, "app[icon][data]" │ + │ + const-string v4, "icon.png" │ │ - iget-object v3, p1, Lcom/crashlytics/android/h;->c:Ljava/lang/String; │ + const-string v5, "application/octet-stream" │ │ - invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-virtual {v0, v3, v4, v5, v1}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - const-string v2, "app[build_version]" │ + const-string v3, "app[icon][width]" │ + │ + iget-object v4, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ + │ + iget v4, v4, Lcom/crashlytics/android/Y;->c:I │ + │ + invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ - iget-object v3, p1, Lcom/crashlytics/android/h;->d:Ljava/lang/String; │ + move-result-object v4 │ │ - invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-virtual {v0, v3, v4}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - const-string v2, "app[source]" │ + const-string v3, "app[icon][height]" │ + │ + iget-object v4, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ + │ + iget v4, v4, Lcom/crashlytics/android/Y;->d:I │ │ - iget v3, p1, Lcom/crashlytics/android/h;->g:I │ + invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v0, v3, v4}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/internal/ay; │ + :try_end_0 │ + .catch Landroid/content/res/Resources$NotFoundException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + .line 109 │ + const-string v0, "Failed to close app icon InputStream." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 113 │ + :cond_1 │ + :goto_0 │ + return-object v2 │ + │ + .line 104 │ + :catch_0 │ + move-exception v0 │ + │ + .line 105 │ + :try_start_1 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ │ - invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v3 │ │ - invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/HttpRequest; │ + const-string v4, "Crashlytics" │ + │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + const-string v6, "Failed to find app icon with resource ID: " │ + │ + invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + iget-object v6, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ + │ + iget v6, v6, Lcom/crashlytics/android/Y;->b:I │ + │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-interface {v3, v4, v5, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + │ + .line 109 │ + const-string v0, "Failed to close app icon InputStream." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + goto :goto_0 │ + │ + :catchall_0 │ + move-exception v0 │ + │ + const-string v2, "Failed to close app icon InputStream." │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ +.end method │ + │ + │ +# virtual methods │ +.method public final a(Lcom/crashlytics/android/b;)Z │ + .locals 6 │ + │ + .prologue │ + .line 48 │ + invoke-virtual {p0}, Lcom/crashlytics/android/a;->b()Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - const-string v2, "app[minimum_sdk_version]" │ + .line 49 │ + const-string v1, "X-CRASHLYTICS-API-KEY" │ │ - iget-object v3, p1, Lcom/crashlytics/android/h;->h:Ljava/lang/String; │ + iget-object v2, p1, Lcom/crashlytics/android/b;->a:Ljava/lang/String; │ │ - invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ move-result-object v0 │ │ - const-string v2, "app[built_sdk_version]" │ + const-string v1, "X-CRASHLYTICS-API-CLIENT-TYPE" │ + │ + const-string v2, "android" │ + │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ - iget-object v3, p1, Lcom/crashlytics/android/h;->i:Ljava/lang/String; │ + move-result-object v0 │ + │ + const-string v1, "X-CRASHLYTICS-API-CLIENT-VERSION" │ │ - invoke-virtual {v0, v2, v3}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v2 │ │ - iget-object v0, p1, Lcom/crashlytics/android/h;->e:Ljava/lang/String; │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->getVersion()Ljava/lang/String; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->d(Ljava/lang/String;)Z │ + move-result-object v2 │ │ - move-result v0 │ + invoke-virtual {v0, v1, v2}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/internal/ay; │ │ - if-nez v0, :cond_0 │ + move-result-object v0 │ │ - const-string v0, "app[instance_identifier]" │ + .line 50 │ + invoke-static {v0, p1}, Lcom/crashlytics/android/a;->a(Lcom/crashlytics/android/internal/ay;Lcom/crashlytics/android/b;)Lcom/crashlytics/android/internal/ay; │ │ - iget-object v3, p1, Lcom/crashlytics/android/h;->e:Ljava/lang/String; │ + move-result-object v1 │ │ - invoke-virtual {v2, v0, v3}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + .line 52 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - :cond_0 │ - if-eqz v1, :cond_1 │ + move-result-object v0 │ │ - new-instance v0, Ljava/io/ByteArrayInputStream; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v1}, Lcom/crashlytics/android/ak;->b()[B │ + move-result-object v0 │ │ - move-result-object v3 │ + const-string v2, "Crashlytics" │ │ - invoke-direct {v0, v3}, Ljava/io/ByteArrayInputStream;->([B)V │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - const-string v3, "app[icon][hash]" │ + const-string v4, "Sending app info to " │ │ - invoke-virtual {v1}, Lcom/crashlytics/android/ak;->a()Ljava/lang/String; │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {p0}, Lcom/crashlytics/android/a;->a()Ljava/lang/String; │ │ move-result-object v4 │ │ - invoke-virtual {v2, v3, v4}, Lcom/crashlytics/android/HttpRequest;->b(Ljava/lang/String;Ljava/lang/String;)Lcom/crashlytics/android/HttpRequest; │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v3 │ │ - const-string v4, "app[icon][data]" │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - const-string v5, "icon.png" │ + move-result-object v3 │ + │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 53 │ + iget-object v0, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ │ - const-string v6, "application/octet-stream" │ + if-eqz v0, :cond_0 │ │ - invoke-virtual {v3, v4, v5, v6, v0}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/crashlytics/android/HttpRequest; │ + .line 54 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - const-string v3, "app[icon][width]" │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v1}, Lcom/crashlytics/android/ak;->c()I │ + move-result-object v0 │ │ - move-result v4 │ + const-string v2, "Crashlytics" │ │ - invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - move-result-object v4 │ + const-string v4, "App icon hash is " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - invoke-virtual {v0, v3, v4}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/HttpRequest; │ + iget-object v4, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ + │ + iget-object v4, v4, Lcom/crashlytics/android/Y;->a:Ljava/lang/String; │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 56 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - const-string v3, "app[icon][height]" │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v1}, Lcom/crashlytics/android/ak;->d()I │ + move-result-object v0 │ │ - move-result v1 │ + const-string v2, "Crashlytics" │ │ - invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - move-result-object v1 │ + const-string v4, "App icon size is " │ │ - invoke-virtual {v0, v3, v1}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;Ljava/lang/Number;)Lcom/crashlytics/android/HttpRequest; │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - .line 42 │ - :cond_1 │ - new-instance v0, Ljava/lang/StringBuilder; │ + iget-object v4, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ │ - const-string v1, "Sending app info to " │ + iget v4, v4, Lcom/crashlytics/android/Y;->c:I │ │ - invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - invoke-virtual {p0}, Lcom/crashlytics/android/a;->a()Ljava/lang/String; │ + move-result-object v3 │ │ - move-result-object v1 │ + const-string v4, "x" │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v0 │ + move-result-object v3 │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + iget-object v4, p1, Lcom/crashlytics/android/b;->j:Lcom/crashlytics/android/Y; │ │ - move-result-object v0 │ + iget v4, v4, Lcom/crashlytics/android/Y;->d:I │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - .line 44 │ - invoke-virtual {v2}, Lcom/crashlytics/android/HttpRequest;->b()I │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result v1 │ + move-result-object v3 │ │ - .line 45 │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 60 │ + :cond_0 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/ay;->b()I │ + │ + move-result v2 │ + │ + .line 61 │ const-string v0, "POST" │ │ - invoke-virtual {v2}, Lcom/crashlytics/android/HttpRequest;->d()Ljava/lang/String; │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/ay;->d()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ - if-eqz v0, :cond_2 │ + if-eqz v0, :cond_1 │ │ const-string v0, "Create" │ │ - .line 47 │ + .line 63 │ :goto_0 │ - new-instance v3, Ljava/lang/StringBuilder; │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ │ - invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ - const-string v3, " app request ID: " │ + const-string v5, " app request ID: " │ │ - invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ - const-string v3, "X-REQUEST-ID" │ + const-string v5, "X-REQUEST-ID" │ │ - invoke-virtual {v2, v3}, Lcom/crashlytics/android/HttpRequest;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-virtual {v1, v5}, Lcom/crashlytics/android/internal/ay;->a(Ljava/lang/String;)Ljava/lang/String; │ │ - move-result-object v2 │ + move-result-object v1 │ │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 48 │ - new-instance v0, Ljava/lang/StringBuilder; │ + invoke-interface {v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - const-string v2, "Result was " │ + .line 65 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-direct {v0, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + move-result-object v0 │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v0 │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + const-string v1, "Crashlytics" │ │ - move-result-object v0 │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + const-string v4, "Result was " │ │ - .line 50 │ - invoke-static {v1}, Lcom/crashlytics/android/c;->a(I)I │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v0, v1, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 67 │ + invoke-static {v2}, Lcom/crashlytics/android/internal/r;->a(I)I │ │ move-result v0 │ │ - if-nez v0, :cond_3 │ + if-nez v0, :cond_2 │ │ const/4 v0, 0x1 │ │ :goto_1 │ return v0 │ │ - .line 45 │ - :cond_2 │ + .line 61 │ + :cond_1 │ const-string v0, "Update" │ │ goto :goto_0 │ │ - .line 50 │ - :cond_3 │ + .line 67 │ + :cond_2 │ const/4 v0, 0x0 │ │ goto :goto_1 │ .end method ├── smali/com/crashlytics/android/N.smali │ @@ -7,74 +7,69 @@ │ │ │ # annotations │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "Ljava/lang/Object;", │ "Ljava/util/concurrent/Callable", │ - ";" │ + "<", │ + "Ljava/lang/Void;", │ + ">;" │ } │ .end annotation │ │ │ # instance fields │ -.field private synthetic a:Ljava/util/concurrent/Callable; │ +.field private synthetic a:Ljava/util/Date; │ + │ +.field private synthetic b:Ljava/lang/Thread; │ + │ +.field private synthetic c:Ljava/lang/Throwable; │ + │ +.field private synthetic d:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;Ljava/util/concurrent/Callable;)V │ +.method constructor (Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ .locals 0 │ │ .prologue │ - .line 1991 │ - iput-object p2, p0, Lcom/crashlytics/android/N;->a:Ljava/util/concurrent/Callable; │ + .line 307 │ + iput-object p1, p0, Lcom/crashlytics/android/N;->d:Lcom/crashlytics/android/v; │ + │ + iput-object p2, p0, Lcom/crashlytics/android/N;->a:Ljava/util/Date; │ + │ + iput-object p3, p0, Lcom/crashlytics/android/N;->b:Ljava/lang/Thread; │ + │ + iput-object p4, p0, Lcom/crashlytics/android/N;->c:Ljava/lang/Throwable; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final call()Ljava/lang/Object; │ - .locals 2 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "()TT;" │ - } │ - .end annotation │ - │ +.method public final synthetic call()Ljava/lang/Object; │ + .locals 4 │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Ljava/lang/Exception; │ } │ .end annotation │ │ .prologue │ - .line 1995 │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/N;->a:Ljava/util/concurrent/Callable; │ - │ - invoke-interface {v0}, Ljava/util/concurrent/Callable;->call()Ljava/lang/Object; │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .line 307 │ + iget-object v0, p0, Lcom/crashlytics/android/N;->d:Lcom/crashlytics/android/v; │ │ - move-result-object v0 │ + iget-object v1, p0, Lcom/crashlytics/android/N;->a:Ljava/util/Date; │ │ - .line 1998 │ - :goto_0 │ - return-object v0 │ - │ - .line 1996 │ - :catch_0 │ - move-exception v0 │ + iget-object v2, p0, Lcom/crashlytics/android/N;->b:Ljava/lang/Thread; │ │ - .line 1997 │ - const-string v1, "Failed to execute task." │ + iget-object v3, p0, Lcom/crashlytics/android/N;->c:Ljava/lang/Throwable; │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + invoke-static {v0, v1, v2, v3}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ │ - .line 1998 │ const/4 v0, 0x0 │ │ - goto :goto_0 │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/S.smali │ @@ -1,38 +1,89 @@ │ .class final Lcom/crashlytics/android/S; │ -.super Landroid/content/BroadcastReceiver; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Ljava/io/FilenameFilter; │ + │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/E; │ +.field private final a:Ljava/lang/String; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/E;)V │ +.method public constructor (Ljava/lang/String;)V │ .locals 0 │ │ .prologue │ - .line 275 │ - iput-object p1, p0, Lcom/crashlytics/android/S;->a:Lcom/crashlytics/android/E; │ + .line 94 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - invoke-direct {p0}, Landroid/content/BroadcastReceiver;->()V │ + .line 95 │ + iput-object p1, p0, Lcom/crashlytics/android/S;->a:Ljava/lang/String; │ │ + .line 96 │ return-void │ .end method │ │ │ # virtual methods │ -.method public final onReceive(Landroid/content/Context;Landroid/content/Intent;)V │ - .locals 2 │ +.method public final accept(Ljava/io/File;Ljava/lang/String;)Z │ + .locals 3 │ + .param p2, "fileName" # Ljava/lang/String; │ │ .prologue │ - .line 278 │ - iget-object v0, p0, Lcom/crashlytics/android/S;->a:Lcom/crashlytics/android/E; │ + const/4 v0, 0x0 │ │ - const/4 v1, 0x0 │ + .line 100 │ + new-instance v1, Ljava/lang/StringBuilder; │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/E;Z)Z │ + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ │ - .line 279 │ - return-void │ + iget-object v2, p0, Lcom/crashlytics/android/S;->a:Ljava/lang/String; │ + │ + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + const-string v2, ".cls" │ + │ + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-virtual {p2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ + │ + move-result v1 │ + │ + if-eqz v1, :cond_1 │ + │ + .line 103 │ + :cond_0 │ + :goto_0 │ + return v0 │ + │ + :cond_1 │ + iget-object v1, p0, Lcom/crashlytics/android/S;->a:Ljava/lang/String; │ + │ + invoke-virtual {p2, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ + │ + move-result v1 │ + │ + if-eqz v1, :cond_0 │ + │ + const-string v1, ".cls_temp" │ + │ + invoke-virtual {p2, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + │ + move-result v1 │ + │ + if-nez v1, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + goto :goto_0 │ .end method ├── smali/com/crashlytics/android/p.smali │ @@ -1,1047 +1,239 @@ │ .class final Lcom/crashlytics/android/p; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/io/Flushable; │ +.implements Ljava/lang/Runnable; │ │ │ # instance fields │ -.field private final a:[B │ +.field final synthetic a:Lcom/crashlytics/android/u; │ │ -.field private final b:I │ +.field final synthetic b:Lcom/crashlytics/android/Crashlytics; │ │ -.field private c:I │ +.field private synthetic c:Landroid/app/Activity; │ │ -.field private final d:Ljava/io/OutputStream; │ +.field private synthetic d:Lcom/crashlytics/android/X; │ │ +.field private synthetic e:Lcom/crashlytics/android/internal/aQ; │ │ -# direct methods │ -.method private constructor (Ljava/io/OutputStream;[B)V │ - .locals 1 │ - │ - .prologue │ - .line 86 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ - │ - .line 87 │ - iput-object p1, p0, Lcom/crashlytics/android/p;->d:Ljava/io/OutputStream; │ - │ - .line 88 │ - iput-object p2, p0, Lcom/crashlytics/android/p;->a:[B │ - │ - .line 89 │ - const/4 v0, 0x0 │ - │ - iput v0, p0, Lcom/crashlytics/android/p;->c:I │ - │ - .line 90 │ - array-length v0, p2 │ - │ - iput v0, p0, Lcom/crashlytics/android/p;->b:I │ - │ - .line 91 │ - return-void │ -.end method │ - │ -.method public static a(I)I │ - .locals 1 │ - │ - .prologue │ - .line 833 │ - const/4 v0, 0x0 │ - │ - invoke-static {p0, v0}, Lcom/crashlytics/android/aD;->a(II)I │ - │ - move-result v0 │ │ - invoke-static {v0}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v0 │ - │ - return v0 │ -.end method │ - │ -.method public static a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - .locals 2 │ - │ - .prologue │ - .line 98 │ - new-instance v0, Lcom/crashlytics/android/p; │ - │ - const/16 v1, 0x1000 │ - │ - new-array v1, v1, [B │ - │ - invoke-direct {v0, p0, v1}, Lcom/crashlytics/android/p;->(Ljava/io/OutputStream;[B)V │ - │ - return-object v0 │ -.end method │ - │ -.method private a()V │ - .locals 4 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ +# direct methods │ +.method constructor (Lcom/crashlytics/android/Crashlytics;Landroid/app/Activity;Lcom/crashlytics/android/u;Lcom/crashlytics/android/X;Lcom/crashlytics/android/internal/aQ;)V │ + .locals 0 │ │ .prologue │ - const/4 v3, 0x0 │ - │ - .line 660 │ - iget-object v0, p0, Lcom/crashlytics/android/p;->d:Ljava/io/OutputStream; │ - │ - if-nez v0, :cond_0 │ - │ - .line 662 │ - new-instance v0, Lcom/crashlytics/android/q; │ - │ - invoke-direct {v0}, Lcom/crashlytics/android/q;->()V │ - │ - throw v0 │ - │ - .line 667 │ - :cond_0 │ - iget-object v0, p0, Lcom/crashlytics/android/p;->d:Ljava/io/OutputStream; │ - │ - iget-object v1, p0, Lcom/crashlytics/android/p;->a:[B │ - │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ - │ - invoke-virtual {v0, v1, v3, v2}, Ljava/io/OutputStream;->write([BII)V │ - │ - .line 668 │ - iput v3, p0, Lcom/crashlytics/android/p;->c:I │ - │ .line 669 │ - return-void │ -.end method │ - │ -.method private a(J)V │ - .locals 4 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 868 │ - :goto_0 │ - const-wide/16 v0, -0x80 │ - │ - and-long/2addr v0, p1 │ - │ - const-wide/16 v2, 0x0 │ - │ - cmp-long v0, v0, v2 │ - │ - if-nez v0, :cond_0 │ - │ - .line 869 │ - long-to-int v0, p1 │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/p;->d(I)V │ - │ - .line 870 │ - return-void │ - │ - .line 872 │ - :cond_0 │ - long-to-int v0, p1 │ - │ - and-int/lit8 v0, v0, 0x7f │ - │ - or-int/lit16 v0, v0, 0x80 │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/p;->d(I)V │ - │ - .line 873 │ - const/4 v0, 0x7 │ - │ - ushr-long/2addr p1, v0 │ - │ - goto :goto_0 │ -.end method │ - │ -.method public static b(IF)I │ - .locals 1 │ - │ - .prologue │ - .line 376 │ - const/4 v0, 0x1 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x4 │ - │ - return v0 │ -.end method │ - │ -.method public static b(IJ)I │ - .locals 6 │ - │ - .prologue │ - const-wide/16 v4, 0x0 │ - │ - .line 384 │ - invoke-static {p0}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v1 │ - │ - const-wide/16 v2, -0x80 │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_0 │ - │ - const/4 v0, 0x1 │ - │ - :goto_0 │ - add-int/2addr v0, v1 │ - │ - return v0 │ - │ - :cond_0 │ - const-wide/16 v2, -0x4000 │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_1 │ - │ - const/4 v0, 0x2 │ - │ - goto :goto_0 │ - │ - :cond_1 │ - const-wide/32 v2, -0x200000 │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_2 │ - │ - const/4 v0, 0x3 │ - │ - goto :goto_0 │ - │ - :cond_2 │ - const-wide/32 v2, -0x10000000 │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_3 │ - │ - const/4 v0, 0x4 │ - │ - goto :goto_0 │ - │ - :cond_3 │ - const-wide v2, -0x800000000L │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_4 │ - │ - const/4 v0, 0x5 │ - │ - goto :goto_0 │ - │ - :cond_4 │ - const-wide v2, -0x40000000000L │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_5 │ - │ - const/4 v0, 0x6 │ - │ - goto :goto_0 │ - │ - :cond_5 │ - const-wide/high16 v2, -0x2000000000000L │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_6 │ - │ - const/4 v0, 0x7 │ - │ - goto :goto_0 │ - │ - :cond_6 │ - const-wide/high16 v2, -0x100000000000000L │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_7 │ - │ - const/16 v0, 0x8 │ - │ - goto :goto_0 │ - │ - :cond_7 │ - const-wide/high16 v2, -0x8000000000000000L │ - │ - and-long/2addr v2, p1 │ - │ - cmp-long v0, v2, v4 │ - │ - if-nez v0, :cond_8 │ - │ - const/16 v0, 0x9 │ - │ - goto :goto_0 │ - │ - :cond_8 │ - const/16 v0, 0xa │ - │ - goto :goto_0 │ -.end method │ - │ -.method public static b(ILcom/crashlytics/android/k;)I │ - .locals 3 │ - │ - .prologue │ - .line 445 │ - invoke-static {p0}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v0 │ - │ - invoke-virtual {p1}, Lcom/crashlytics/android/k;->a()I │ - │ - move-result v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v1 │ - │ - invoke-virtual {p1}, Lcom/crashlytics/android/k;->a()I │ - │ - move-result v2 │ - │ - add-int/2addr v1, v2 │ - │ - add-int/2addr v0, v1 │ - │ - return v0 │ -.end method │ - │ -.method public static b(IZ)I │ - .locals 1 │ - │ - .prologue │ - .line 427 │ - invoke-static {p0}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x1 │ - │ - return v0 │ -.end method │ - │ -.method public static c(I)I │ - .locals 1 │ - │ - .prologue │ - .line 858 │ - and-int/lit8 v0, p0, -0x80 │ - │ - if-nez v0, :cond_0 │ - │ - const/4 v0, 0x1 │ - │ - .line 862 │ - :goto_0 │ - return v0 │ - │ - .line 859 │ - :cond_0 │ - and-int/lit16 v0, p0, -0x4000 │ - │ - if-nez v0, :cond_1 │ - │ - const/4 v0, 0x2 │ - │ - goto :goto_0 │ - │ - .line 860 │ - :cond_1 │ - const/high16 v0, -0x200000 │ - │ - and-int/2addr v0, p0 │ - │ - if-nez v0, :cond_2 │ - │ - const/4 v0, 0x3 │ - │ - goto :goto_0 │ - │ - .line 861 │ - :cond_2 │ - const/high16 v0, -0x10000000 │ - │ - and-int/2addr v0, p0 │ - │ - if-nez v0, :cond_3 │ - │ - const/4 v0, 0x4 │ - │ - goto :goto_0 │ - │ - .line 862 │ - :cond_3 │ - const/4 v0, 0x5 │ - │ - goto :goto_0 │ -.end method │ - │ -.method public static d(II)I │ - .locals 2 │ + iput-object p1, p0, Lcom/crashlytics/android/p;->b:Lcom/crashlytics/android/Crashlytics; │ │ - .prologue │ - .line 453 │ - invoke-static {p0}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v0 │ - │ - invoke-static {p1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - return v0 │ -.end method │ - │ -.method private d(I)V │ - .locals 4 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 734 │ - int-to-byte v0, p1 │ - │ - iget v1, p0, Lcom/crashlytics/android/p;->c:I │ - │ - iget v2, p0, Lcom/crashlytics/android/p;->b:I │ + iput-object p2, p0, Lcom/crashlytics/android/p;->c:Landroid/app/Activity; │ │ - if-ne v1, v2, :cond_0 │ + iput-object p3, p0, Lcom/crashlytics/android/p;->a:Lcom/crashlytics/android/u; │ │ - invoke-direct {p0}, Lcom/crashlytics/android/p;->a()V │ + iput-object p4, p0, Lcom/crashlytics/android/p;->d:Lcom/crashlytics/android/X; │ │ - :cond_0 │ - iget-object v1, p0, Lcom/crashlytics/android/p;->a:[B │ - │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ - │ - add-int/lit8 v3, v2, 0x1 │ + iput-object p5, p0, Lcom/crashlytics/android/p;->e:Lcom/crashlytics/android/internal/aQ; │ │ - iput v3, p0, Lcom/crashlytics/android/p;->c:I │ - │ - aput-byte v0, v1, v2 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 735 │ return-void │ .end method │ │ -.method private static e(I)I │ - .locals 2 │ - │ - .prologue │ - .line 928 │ - shl-int/lit8 v0, p0, 0x1 │ - │ - shr-int/lit8 v1, p0, 0x1f │ - │ - xor-int/2addr v0, v1 │ - │ - return v0 │ -.end method │ - │ -.method public static e(II)I │ - .locals 2 │ - │ - .prologue │ - .line 462 │ - invoke-static {p0}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v1 │ - │ - if-ltz p1, :cond_0 │ - │ - invoke-static {p1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v0 │ - │ - :goto_0 │ - add-int/2addr v0, v1 │ - │ - return v0 │ - │ - :cond_0 │ - const/16 v0, 0xa │ - │ - goto :goto_0 │ -.end method │ - │ -.method public static f(II)I │ - .locals 2 │ - │ - .prologue │ - .line 488 │ - const/4 v0, 0x2 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v0 │ - │ - invoke-static {p1}, Lcom/crashlytics/android/p;->e(I)I │ - │ - move-result v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - return v0 │ -.end method │ - │ │ # virtual methods │ -.method public final a(IF)V │ - .locals 2 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 146 │ - const/4 v0, 0x1 │ - │ - const/4 v1, 0x5 │ - │ - invoke-virtual {p0, v0, v1}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 147 │ - invoke-static {p2}, Ljava/lang/Float;->floatToRawIntBits(F)I │ - │ - move-result v0 │ - │ - and-int/lit16 v1, v0, 0xff │ - │ - invoke-direct {p0, v1}, Lcom/crashlytics/android/p;->d(I)V │ - │ - shr-int/lit8 v1, v0, 0x8 │ - │ - and-int/lit16 v1, v1, 0xff │ - │ - invoke-direct {p0, v1}, Lcom/crashlytics/android/p;->d(I)V │ - │ - shr-int/lit8 v1, v0, 0x10 │ - │ - and-int/lit16 v1, v1, 0xff │ - │ - invoke-direct {p0, v1}, Lcom/crashlytics/android/p;->d(I)V │ - │ - ushr-int/lit8 v0, v0, 0x18 │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/p;->d(I)V │ - │ - .line 148 │ - return-void │ -.end method │ - │ -.method public final a(II)V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 209 │ - const/4 v0, 0x0 │ - │ - invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 210 │ - invoke-virtual {p0, p2}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 211 │ - return-void │ -.end method │ - │ -.method public final a(IJ)V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ +.method public final run()V │ + .locals 11 │ │ .prologue │ - .line 153 │ - const/4 v0, 0x0 │ - │ - invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 154 │ - invoke-direct {p0, p2, p3}, Lcom/crashlytics/android/p;->a(J)V │ + const/4 v10, 0x0 │ │ - .line 155 │ - return-void │ -.end method │ + .line 672 │ + new-instance v0, Landroid/app/AlertDialog$Builder; │ │ -.method public final a(ILcom/crashlytics/android/k;)V │ - .locals 8 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ + iget-object v1, p0, Lcom/crashlytics/android/p;->c:Landroid/app/Activity; │ │ - .prologue │ - const/4 v7, 0x0 │ + invoke-direct {v0, v1}, Landroid/app/AlertDialog$Builder;->(Landroid/content/Context;)V │ │ - .line 202 │ - const/4 v0, 0x2 │ + .line 674 │ + new-instance v1, Lcom/crashlytics/android/q; │ │ - invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/p;->g(II)V │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/q;->(Lcom/crashlytics/android/p;)V │ │ - .line 203 │ - invoke-virtual {p2}, Lcom/crashlytics/android/k;->a()I │ + .line 682 │ + iget-object v2, p0, Lcom/crashlytics/android/p;->c:Landroid/app/Activity; │ │ - move-result v0 │ + invoke-virtual {v2}, Landroid/app/Activity;->getResources()Landroid/content/res/Resources; │ │ - invoke-virtual {p0, v0}, Lcom/crashlytics/android/p;->b(I)V │ + move-result-object v2 │ │ - invoke-virtual {p2}, Lcom/crashlytics/android/k;->a()I │ + invoke-virtual {v2}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; │ │ - move-result v0 │ + move-result-object v2 │ │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ - │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ - │ - sub-int/2addr v1, v2 │ - │ - if-lt v1, v0, :cond_1 │ - │ - iget-object v1, p0, Lcom/crashlytics/android/p;->a:[B │ - │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ - │ - invoke-virtual {p2, v1, v7, v2, v0}, Lcom/crashlytics/android/k;->a([BIII)V │ - │ - iget v1, p0, Lcom/crashlytics/android/p;->c:I │ - │ - add-int/2addr v0, v1 │ - │ - iput v0, p0, Lcom/crashlytics/android/p;->c:I │ - │ - .line 204 │ - :cond_0 │ - :goto_0 │ - return-void │ + iget v2, v2, Landroid/util/DisplayMetrics;->density:F │ │ - .line 203 │ - :cond_1 │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ + .line 686 │ + iget-object v3, p0, Lcom/crashlytics/android/p;->b:Lcom/crashlytics/android/Crashlytics; │ │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ + const/4 v4, 0x5 │ │ - sub-int/2addr v1, v2 │ + invoke-static {v3, v2, v4}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ │ - iget-object v2, p0, Lcom/crashlytics/android/p;->a:[B │ + move-result v3 │ │ - iget v3, p0, Lcom/crashlytics/android/p;->c:I │ + .line 688 │ + new-instance v4, Landroid/widget/TextView; │ │ - invoke-virtual {p2, v2, v7, v3, v1}, Lcom/crashlytics/android/k;->a([BIII)V │ + iget-object v5, p0, Lcom/crashlytics/android/p;->c:Landroid/app/Activity; │ │ - add-int/lit8 v2, v1, 0x0 │ + invoke-direct {v4, v5}, Landroid/widget/TextView;->(Landroid/content/Context;)V │ │ - sub-int/2addr v0, v1 │ + .line 689 │ + const/16 v5, 0xf │ │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ + invoke-virtual {v4, v5}, Landroid/widget/TextView;->setAutoLinkMask(I)V │ │ - iput v1, p0, Lcom/crashlytics/android/p;->c:I │ + .line 690 │ + iget-object v5, p0, Lcom/crashlytics/android/p;->d:Lcom/crashlytics/android/X; │ │ - invoke-direct {p0}, Lcom/crashlytics/android/p;->a()V │ + invoke-virtual {v5}, Lcom/crashlytics/android/X;->b()Ljava/lang/String; │ │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ + move-result-object v5 │ │ - if-gt v0, v1, :cond_2 │ + invoke-virtual {v4, v5}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ │ - iget-object v1, p0, Lcom/crashlytics/android/p;->a:[B │ + .line 691 │ + iget-object v5, p0, Lcom/crashlytics/android/p;->c:Landroid/app/Activity; │ │ - invoke-virtual {p2, v1, v2, v7, v0}, Lcom/crashlytics/android/k;->a([BIII)V │ + const v6, 0x1030044 │ │ - iput v0, p0, Lcom/crashlytics/android/p;->c:I │ + invoke-virtual {v4, v5, v6}, Landroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V │ │ - goto :goto_0 │ + .line 692 │ + invoke-virtual {v4, v3, v3, v3, v3}, Landroid/widget/TextView;->setPadding(IIII)V │ │ - :cond_2 │ - invoke-virtual {p2}, Lcom/crashlytics/android/k;->b()Ljava/io/InputStream; │ + .line 693 │ + invoke-virtual {v4, v10}, Landroid/widget/TextView;->setFocusable(Z)V │ │ - move-result-object v1 │ + .line 695 │ + new-instance v3, Landroid/widget/ScrollView; │ │ - int-to-long v3, v2 │ + iget-object v5, p0, Lcom/crashlytics/android/p;->c:Landroid/app/Activity; │ │ - int-to-long v5, v2 │ + invoke-direct {v3, v5}, Landroid/widget/ScrollView;->(Landroid/content/Context;)V │ │ - invoke-virtual {v1, v5, v6}, Ljava/io/InputStream;->skip(J)J │ + .line 696 │ + iget-object v5, p0, Lcom/crashlytics/android/p;->b:Lcom/crashlytics/android/Crashlytics; │ │ - move-result-wide v5 │ + const/16 v6, 0xe │ │ - cmp-long v2, v3, v5 │ + invoke-static {v5, v2, v6}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ │ - if-eqz v2, :cond_4 │ + move-result v5 │ │ - new-instance v0, Ljava/lang/IllegalStateException; │ + iget-object v6, p0, Lcom/crashlytics/android/p;->b:Lcom/crashlytics/android/Crashlytics; │ │ - const-string v1, "Skip failed." │ + const/4 v7, 0x2 │ │ - invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V │ + invoke-static {v6, v2, v7}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ │ - throw v0 │ + move-result v6 │ │ - :cond_3 │ - iget-object v2, p0, Lcom/crashlytics/android/p;->d:Ljava/io/OutputStream; │ + iget-object v7, p0, Lcom/crashlytics/android/p;->b:Lcom/crashlytics/android/Crashlytics; │ │ - iget-object v4, p0, Lcom/crashlytics/android/p;->a:[B │ + const/16 v8, 0xa │ │ - invoke-virtual {v2, v4, v7, v3}, Ljava/io/OutputStream;->write([BII)V │ + invoke-static {v7, v2, v8}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ │ - sub-int/2addr v0, v3 │ + move-result v7 │ │ - :cond_4 │ - if-lez v0, :cond_0 │ + iget-object v8, p0, Lcom/crashlytics/android/p;->b:Lcom/crashlytics/android/Crashlytics; │ │ - iget v2, p0, Lcom/crashlytics/android/p;->b:I │ + const/16 v9, 0xc │ │ - invoke-static {v0, v2}, Ljava/lang/Math;->min(II)I │ + invoke-static {v8, v2, v9}, Lcom/crashlytics/android/Crashlytics;->a(Lcom/crashlytics/android/Crashlytics;FI)I │ │ move-result v2 │ │ - iget-object v3, p0, Lcom/crashlytics/android/p;->a:[B │ + invoke-virtual {v3, v5, v6, v7, v2}, Landroid/widget/ScrollView;->setPadding(IIII)V │ │ - invoke-virtual {v1, v3, v7, v2}, Ljava/io/InputStream;->read([BII)I │ + .line 698 │ + invoke-virtual {v3, v4}, Landroid/widget/ScrollView;->addView(Landroid/view/View;)V │ │ - move-result v3 │ + .line 702 │ + invoke-virtual {v0, v3}, Landroid/app/AlertDialog$Builder;->setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder; │ │ - if-eq v3, v2, :cond_3 │ + move-result-object v2 │ │ - new-instance v0, Ljava/lang/IllegalStateException; │ + iget-object v3, p0, Lcom/crashlytics/android/p;->d:Lcom/crashlytics/android/X; │ │ - const-string v1, "Read failed." │ + invoke-virtual {v3}, Lcom/crashlytics/android/X;->a()Ljava/lang/String; │ │ - invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;->(Ljava/lang/String;)V │ + move-result-object v3 │ │ - throw v0 │ -.end method │ + invoke-virtual {v2, v3}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder; │ │ -.method public final a(ILjava/lang/String;)V │ - .locals 2 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ + move-result-object v2 │ │ - .prologue │ - .line 195 │ - const/4 v0, 0x1 │ + invoke-virtual {v2, v10}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder; │ │ - const/4 v1, 0x2 │ + move-result-object v2 │ │ - invoke-virtual {p0, v0, v1}, Lcom/crashlytics/android/p;->g(II)V │ + iget-object v3, p0, Lcom/crashlytics/android/p;->d:Lcom/crashlytics/android/X; │ │ - .line 196 │ - const-string v0, "UTF-8" │ + invoke-virtual {v3}, Lcom/crashlytics/android/X;->c()Ljava/lang/String; │ │ - invoke-virtual {p2, v0}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ + move-result-object v3 │ │ - move-result-object v0 │ + invoke-virtual {v2, v3, v1}, Landroid/app/AlertDialog$Builder;->setNeutralButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ │ - array-length v1, v0 │ + .line 705 │ + iget-object v1, p0, Lcom/crashlytics/android/p;->e:Lcom/crashlytics/android/internal/aQ; │ │ - invoke-virtual {p0, v1}, Lcom/crashlytics/android/p;->b(I)V │ + iget-boolean v1, v1, Lcom/crashlytics/android/internal/aQ;->d:Z │ │ - invoke-virtual {p0, v0}, Lcom/crashlytics/android/p;->a([B)V │ + if-eqz v1, :cond_0 │ │ - .line 197 │ - return-void │ -.end method │ + .line 706 │ + new-instance v1, Lcom/crashlytics/android/r; │ │ -.method public final a(IZ)V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/r;->(Lcom/crashlytics/android/p;)V │ │ - .prologue │ - const/4 v0, 0x0 │ + .line 713 │ + iget-object v2, p0, Lcom/crashlytics/android/p;->d:Lcom/crashlytics/android/X; │ │ - .line 188 │ - invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/p;->g(II)V │ + invoke-virtual {v2}, Lcom/crashlytics/android/X;->e()Ljava/lang/String; │ │ - .line 189 │ - if-eqz p2, :cond_0 │ + move-result-object v2 │ │ - const/4 v0, 0x1 │ + invoke-virtual {v0, v2, v1}, Landroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ │ + .line 716 │ :cond_0 │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/p;->d(I)V │ - │ - .line 190 │ - return-void │ -.end method │ + iget-object v1, p0, Lcom/crashlytics/android/p;->e:Lcom/crashlytics/android/internal/aQ; │ │ -.method public final a([B)V │ - .locals 5 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ + iget-boolean v1, v1, Lcom/crashlytics/android/internal/aQ;->f:Z │ │ - .prologue │ - const/4 v4, 0x0 │ - │ - .line 744 │ - array-length v0, p1 │ - │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ - │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ - │ - sub-int/2addr v1, v2 │ - │ - if-lt v1, v0, :cond_0 │ + if-eqz v1, :cond_1 │ │ - iget-object v1, p0, Lcom/crashlytics/android/p;->a:[B │ + .line 717 │ + new-instance v1, Lcom/crashlytics/android/s; │ │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/s;->(Lcom/crashlytics/android/p;)V │ │ - invoke-static {p1, v4, v1, v2, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ + .line 725 │ + iget-object v2, p0, Lcom/crashlytics/android/p;->d:Lcom/crashlytics/android/X; │ │ - iget v1, p0, Lcom/crashlytics/android/p;->c:I │ - │ - add-int/2addr v0, v1 │ - │ - iput v0, p0, Lcom/crashlytics/android/p;->c:I │ - │ - .line 745 │ - :goto_0 │ - return-void │ - │ - .line 744 │ - :cond_0 │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ + invoke-virtual {v2}, Lcom/crashlytics/android/X;->d()Ljava/lang/String; │ │ - iget v2, p0, Lcom/crashlytics/android/p;->c:I │ + move-result-object v2 │ │ - sub-int/2addr v1, v2 │ - │ - iget-object v2, p0, Lcom/crashlytics/android/p;->a:[B │ - │ - iget v3, p0, Lcom/crashlytics/android/p;->c:I │ - │ - invoke-static {p1, v4, v2, v3, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ - │ - add-int/lit8 v2, v1, 0x0 │ - │ - sub-int/2addr v0, v1 │ - │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ - │ - iput v1, p0, Lcom/crashlytics/android/p;->c:I │ - │ - invoke-direct {p0}, Lcom/crashlytics/android/p;->a()V │ - │ - iget v1, p0, Lcom/crashlytics/android/p;->b:I │ - │ - if-gt v0, v1, :cond_1 │ - │ - iget-object v1, p0, Lcom/crashlytics/android/p;->a:[B │ - │ - invoke-static {p1, v2, v1, v4, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V │ - │ - iput v0, p0, Lcom/crashlytics/android/p;->c:I │ - │ - goto :goto_0 │ + invoke-virtual {v0, v2, v1}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ │ + .line 728 │ :cond_1 │ - iget-object v1, p0, Lcom/crashlytics/android/p;->d:Ljava/io/OutputStream; │ - │ - invoke-virtual {v1, p1, v2, v0}, Ljava/io/OutputStream;->write([BII)V │ - │ - goto :goto_0 │ -.end method │ - │ -.method public final b(I)V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 842 │ - :goto_0 │ - and-int/lit8 v0, p1, -0x80 │ - │ - if-nez v0, :cond_0 │ - │ - .line 843 │ - invoke-direct {p0, p1}, Lcom/crashlytics/android/p;->d(I)V │ - │ - .line 844 │ - return-void │ - │ - .line 846 │ - :cond_0 │ - and-int/lit8 v0, p1, 0x7f │ - │ - or-int/lit16 v0, v0, 0x80 │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/p;->d(I)V │ - │ - .line 847 │ - ushr-int/lit8 p1, p1, 0x7 │ - │ - goto :goto_0 │ -.end method │ - │ -.method public final b(II)V │ - .locals 2 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 219 │ - const/4 v0, 0x0 │ - │ - invoke-virtual {p0, p1, v0}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 220 │ - if-ltz p2, :cond_0 │ - │ - invoke-virtual {p0, p2}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 221 │ - :goto_0 │ - return-void │ - │ - .line 220 │ - :cond_0 │ - int-to-long v0, p2 │ - │ - invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/p;->a(J)V │ - │ - goto :goto_0 │ -.end method │ - │ -.method public final c(II)V │ - .locals 2 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 240 │ - const/4 v0, 0x2 │ - │ - const/4 v1, 0x0 │ - │ - invoke-virtual {p0, v0, v1}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 241 │ - invoke-static {p2}, Lcom/crashlytics/android/p;->e(I)I │ - │ - move-result v0 │ - │ - invoke-virtual {p0, v0}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 242 │ - return-void │ -.end method │ - │ -.method public final flush()V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 676 │ - iget-object v0, p0, Lcom/crashlytics/android/p;->d:Ljava/io/OutputStream; │ - │ - if-eqz v0, :cond_0 │ - │ - .line 677 │ - invoke-direct {p0}, Lcom/crashlytics/android/p;->a()V │ - │ - .line 679 │ - :cond_0 │ - return-void │ -.end method │ - │ -.method public final g(II)V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 828 │ - invoke-static {p1, p2}, Lcom/crashlytics/android/aD;->a(II)I │ - │ - move-result v0 │ - │ - invoke-virtual {p0, v0}, Lcom/crashlytics/android/p;->b(I)V │ + invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog; │ │ - .line 829 │ + .line 729 │ return-void │ .end method ├── smali/com/crashlytics/android/y.smali │ @@ -1,47 +1,79 @@ │ .class final Lcom/crashlytics/android/y; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Landroid/content/DialogInterface$OnClickListener; │ +.implements Lcom/crashlytics/android/internal/au; │ │ │ # instance fields │ -.field private synthetic a:Lcom/crashlytics/android/w; │ +.field private synthetic a:[B │ + │ +.field private synthetic b:[I │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/w;)V │ +.method constructor (Lcom/crashlytics/android/v;[B[I)V │ .locals 0 │ │ .prologue │ - .line 724 │ - iput-object p1, p0, Lcom/crashlytics/android/y;->a:Lcom/crashlytics/android/w; │ + .line 414 │ + iput-object p2, p0, Lcom/crashlytics/android/y;->a:[B │ + │ + iput-object p3, p0, Lcom/crashlytics/android/y;->b:[I │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ -.method public final onClick(Landroid/content/DialogInterface;I)V │ - .locals 2 │ - .param p1, "dialog" # Landroid/content/DialogInterface; │ +.method public final a(Ljava/io/InputStream;I)V │ + .locals 3 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ │ .prologue │ - .line 727 │ - iget-object v0, p0, Lcom/crashlytics/android/y;->a:Lcom/crashlytics/android/w; │ + .line 418 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/y;->a:[B │ + │ + iget-object v1, p0, Lcom/crashlytics/android/y;->b:[I │ + │ + const/4 v2, 0x0 │ + │ + aget v1, v1, v2 │ + │ + invoke-virtual {p1, v0, v1, p2}, Ljava/io/InputStream;->read([BII)I │ │ - iget-object v0, v0, Lcom/crashlytics/android/w;->a:Lcom/crashlytics/android/C; │ + .line 419 │ + iget-object v0, p0, Lcom/crashlytics/android/y;->b:[I │ │ const/4 v1, 0x0 │ │ - invoke-virtual {v0, v1}, Lcom/crashlytics/android/C;->a(Z)V │ + aget v2, v0, v1 │ │ - .line 728 │ - invoke-interface {p1}, Landroid/content/DialogInterface;->dismiss()V │ + add-int/2addr v2, p2 │ │ - .line 729 │ + aput v2, v0, v1 │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + .line 421 │ + invoke-virtual {p1}, Ljava/io/InputStream;->close()V │ + │ + .line 422 │ return-void │ + │ + .line 421 │ + :catchall_0 │ + move-exception v0 │ + │ + invoke-virtual {p1}, Ljava/io/InputStream;->close()V │ + │ + throw v0 │ .end method ├── smali/com/crashlytics/android/j.smali │ @@ -1,226 +1,83 @@ │ .class final Lcom/crashlytics/android/j; │ -.super Ljava/lang/Object; │ +.super Landroid/os/AsyncTask; │ .source "SourceFile" │ │ │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Landroid/os/AsyncTask", │ + "<", │ + "Ljava/lang/Void;", │ + "Ljava/lang/Void;", │ + "Ljava/lang/Void;", │ + ">;" │ + } │ +.end annotation │ + │ + │ # instance fields │ -.field private a:Ljava/lang/String; │ +.field private synthetic a:J │ │ -.field private b:Z │ +.field private synthetic b:Lcom/crashlytics/android/CrashTest; │ │ │ # direct methods │ -.method public constructor (Ljava/lang/String;Z)V │ +.method constructor (Lcom/crashlytics/android/CrashTest;J)V │ .locals 0 │ │ .prologue │ - .line 17 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + .line 42 │ + iput-object p1, p0, Lcom/crashlytics/android/j;->b:Lcom/crashlytics/android/CrashTest; │ │ - .line 18 │ - iput-object p1, p0, Lcom/crashlytics/android/j;->a:Ljava/lang/String; │ + iput-wide p2, p0, Lcom/crashlytics/android/j;->a:J │ │ - .line 19 │ - iput-boolean p2, p0, Lcom/crashlytics/android/j;->b:Z │ + invoke-direct {p0}, Landroid/os/AsyncTask;->()V │ │ - .line 20 │ return-void │ .end method │ │ - │ -# virtual methods │ -.method public final a(Ljava/lang/String;Ljava/lang/String;)V │ - .locals 4 │ +.method private varargs a()Ljava/lang/Void; │ + .locals 2 │ │ .prologue │ - .line 30 │ - iget-object v0, p0, Lcom/crashlytics/android/j;->a:Ljava/lang/String; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->d(Ljava/lang/String;)Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_0 │ - │ - iget-boolean v0, p0, Lcom/crashlytics/android/j;->b:Z │ - │ - if-eqz v0, :cond_0 │ - │ - .line 31 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, "." │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 32 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". | | " │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 33 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". | |" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 34 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". | |" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 35 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". \\ | | /" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 36 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". \\ /" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 37 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". \\ /" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 38 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". \\/" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 39 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, "." │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 40 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, "Something is missing! Find it here: " │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 41 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, "http://www.crashlytics.com/api/v1/%s/android/confirm/%s" │ - │ - const/4 v2, 0x2 │ - │ - new-array v2, v2, [Ljava/lang/Object; │ - │ - const/4 v3, 0x0 │ - │ - aput-object p1, v2, v3 │ - │ - const/4 v3, 0x1 │ - │ - aput-object p2, v2, v3 │ - │ - invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 42 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, "." │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 43 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". /\\" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 44 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". / \\" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 45 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". / \\" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ .line 46 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". / | | \\" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 47 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". | |" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 48 │ - const-string v0, "Crashlytics" │ + :try_start_0 │ + iget-wide v0, p0, Lcom/crashlytics/android/j;->a:J │ │ - const-string v1, ". | |" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ - │ - .line 49 │ - const-string v0, "Crashlytics" │ - │ - const-string v1, ". | |" │ - │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ + invoke-static {v0, v1}, Ljava/lang/Thread;->sleep(J)V │ + :try_end_0 │ + .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 50 │ - const-string v0, "Crashlytics" │ + :goto_0 │ + iget-object v0, p0, Lcom/crashlytics/android/j;->b:Lcom/crashlytics/android/CrashTest; │ + │ + const-string v1, "Background thread crash" │ │ - const-string v1, "." │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/CrashTest;->throwRuntimeException(Ljava/lang/String;)V │ │ - invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ + .line 51 │ + const/4 v0, 0x0 │ │ - .line 52 │ - new-instance v0, Lcom/crashlytics/android/CrashlyticsMissingDependencyException; │ + return-object v0 │ │ - invoke-direct {v0, p1, p2}, Lcom/crashlytics/android/CrashlyticsMissingDependencyException;->(Ljava/lang/String;Ljava/lang/String;)V │ + :catch_0 │ + move-exception v0 │ │ - throw v0 │ + goto :goto_0 │ +.end method │ │ - .line 53 │ - :cond_0 │ - iget-boolean v0, p0, Lcom/crashlytics/android/j;->b:Z │ │ - if-nez v0, :cond_1 │ +# virtual methods │ +.method protected final synthetic doInBackground([Ljava/lang/Object;)Ljava/lang/Object; │ + .locals 1 │ │ - .line 54 │ - const-string v0, "Configured not to require a build ID." │ + .prologue │ + .line 42 │ + invoke-direct {p0}, Lcom/crashlytics/android/j;->a()Ljava/lang/Void; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + move-result-object v0 │ │ - .line 56 │ - :cond_1 │ - return-void │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/Z.smali │ @@ -1,18 +1,213 @@ │ -.class final Lcom/crashlytics/android/Z; │ -.super Lcom/crashlytics/android/a; │ +.class Lcom/crashlytics/android/Z; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ │ +# instance fields │ +.field private final a:Ljava/io/File; │ + │ +.field private final b:Ljava/util/Map; │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;" │ + } │ + .end annotation │ +.end field │ + │ + │ # direct methods │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;)V │ +.method public constructor (Ljava/io/File;)V │ .locals 1 │ │ .prologue │ - .line 10 │ - sget-object v0, Lcom/crashlytics/android/d;->b:Lcom/crashlytics/android/d; │ + .line 26 │ + invoke-static {}, Ljava/util/Collections;->emptyMap()Ljava/util/Map; │ │ - invoke-direct {p0, p1, p2, v0}, Lcom/crashlytics/android/a;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/aj;)V │ + move-result-object v0 │ │ - .line 11 │ + invoke-direct {p0, p1, v0}, Lcom/crashlytics/android/Z;->(Ljava/io/File;Ljava/util/Map;)V │ + │ + .line 27 │ return-void │ .end method │ + │ +.method public constructor (Ljava/io/File;Ljava/util/Map;)V │ + .locals 4 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Ljava/io/File;", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;)V" │ + } │ + .end annotation │ + │ + .prologue │ + .line 32 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ + │ + .line 33 │ + iput-object p1, p0, Lcom/crashlytics/android/Z;->a:Ljava/io/File; │ + │ + .line 34 │ + new-instance v0, Ljava/util/HashMap; │ + │ + invoke-direct {v0, p2}, Ljava/util/HashMap;->(Ljava/util/Map;)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/Z;->b:Ljava/util/Map; │ + │ + .line 35 │ + iget-object v0, p0, Lcom/crashlytics/android/Z;->a:Ljava/io/File; │ + │ + invoke-virtual {v0}, Ljava/io/File;->length()J │ + │ + move-result-wide v0 │ + │ + const-wide/16 v2, 0x0 │ + │ + cmp-long v0, v0, v2 │ + │ + if-nez v0, :cond_0 │ + │ + .line 36 │ + iget-object v0, p0, Lcom/crashlytics/android/Z;->b:Ljava/util/Map; │ + │ + sget-object v1, Lcom/crashlytics/android/aa;->a:Ljava/util/Map; │ + │ + invoke-interface {v0, v1}, Ljava/util/Map;->putAll(Ljava/util/Map;)V │ + │ + .line 38 │ + :cond_0 │ + return-void │ +.end method │ + │ + │ +# virtual methods │ +.method public a()Z │ + .locals 4 │ + │ + .prologue │ + .line 62 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + const-string v3, "Removing report at " │ + │ + invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + iget-object v3, p0, Lcom/crashlytics/android/Z;->a:Ljava/io/File; │ + │ + invoke-virtual {v3}, Ljava/io/File;->getPath()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 63 │ + iget-object v0, p0, Lcom/crashlytics/android/Z;->a:Ljava/io/File; │ + │ + invoke-virtual {v0}, Ljava/io/File;->delete()Z │ + │ + move-result v0 │ + │ + return v0 │ +.end method │ + │ +.method public b()Ljava/lang/String; │ + .locals 1 │ + │ + .prologue │ + .line 46 │ + invoke-virtual {p0}, Lcom/crashlytics/android/Z;->d()Ljava/io/File; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/io/File;->getName()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method public c()Ljava/lang/String; │ + .locals 3 │ + │ + .prologue │ + .line 51 │ + invoke-virtual {p0}, Lcom/crashlytics/android/Z;->b()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + .line 52 │ + const/4 v1, 0x0 │ + │ + const/16 v2, 0x2e │ + │ + invoke-virtual {v0, v2}, Ljava/lang/String;->lastIndexOf(I)I │ + │ + move-result v2 │ + │ + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method public d()Ljava/io/File; │ + .locals 1 │ + │ + .prologue │ + .line 41 │ + iget-object v0, p0, Lcom/crashlytics/android/Z;->a:Ljava/io/File; │ + │ + return-object v0 │ +.end method │ + │ +.method public e()Ljava/util/Map; │ + .locals 1 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "()", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;" │ + } │ + .end annotation │ + │ + .prologue │ + .line 57 │ + iget-object v0, p0, Lcom/crashlytics/android/Z;->b:Ljava/util/Map; │ + │ + invoke-static {v0}, Ljava/util/Collections;->unmodifiableMap(Ljava/util/Map;)Ljava/util/Map; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method ├── smali/com/crashlytics/android/c.smali │ @@ -1,265 +1,236 @@ │ -.class Lcom/crashlytics/android/c; │ +.class final Lcom/crashlytics/android/c; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ │ +# instance fields │ +.field private a:Ljava/lang/String; │ + │ +.field private b:Z │ + │ + │ # direct methods │ -.method public constructor (Ljava/lang/String;II)V │ +.method public constructor (Ljava/lang/String;Z)V │ .locals 0 │ │ .prologue │ - .line 13 │ + .line 19 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 14 │ + .line 20 │ + iput-object p1, p0, Lcom/crashlytics/android/c;->a:Ljava/lang/String; │ + │ + .line 21 │ + iput-boolean p2, p0, Lcom/crashlytics/android/c;->b:Z │ + │ + .line 22 │ return-void │ .end method │ │ -.method public static a(I)I │ - .locals 3 │ - │ - .prologue │ - const/4 v0, 0x0 │ │ - const/4 v1, 0x1 │ +# virtual methods │ +.method public final a(Ljava/lang/String;Ljava/lang/String;)V │ + .locals 4 │ │ - .line 26 │ - const/16 v2, 0xc8 │ + .prologue │ + .line 32 │ + iget-object v0, p0, Lcom/crashlytics/android/c;->a:Ljava/lang/String; │ │ - if-lt p0, v2, :cond_1 │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->e(Ljava/lang/String;)Z │ │ - const/16 v2, 0x12b │ + move-result v0 │ │ - if-gt p0, v2, :cond_1 │ + if-eqz v0, :cond_0 │ │ - .line 36 │ - :cond_0 │ - :goto_0 │ - return v0 │ + iget-boolean v0, p0, Lcom/crashlytics/android/c;->b:Z │ │ - .line 28 │ - :cond_1 │ - const/16 v2, 0x12c │ + if-eqz v0, :cond_0 │ │ - if-lt p0, v2, :cond_2 │ + .line 33 │ + const-string v0, "Crashlytics" │ │ - const/16 v2, 0x18f │ + const-string v1, "." │ │ - if-gt p0, v2, :cond_2 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - move v0, v1 │ + .line 34 │ + const-string v0, "Crashlytics" │ │ - .line 29 │ - goto :goto_0 │ + const-string v1, ". | | " │ │ - .line 30 │ - :cond_2 │ - const/16 v2, 0x190 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - if-lt p0, v2, :cond_3 │ + .line 35 │ + const-string v0, "Crashlytics" │ │ - const/16 v2, 0x1f3 │ + const-string v1, ". | |" │ │ - if-le p0, v2, :cond_0 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - .line 32 │ - :cond_3 │ - const/16 v0, 0x1f4 │ + .line 36 │ + const-string v0, "Crashlytics" │ │ - if-lt p0, v0, :cond_4 │ + const-string v1, ". | |" │ │ - move v0, v1 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - .line 33 │ - goto :goto_0 │ + .line 37 │ + const-string v0, "Crashlytics" │ │ - :cond_4 │ - move v0, v1 │ + const-string v1, ". \\ | | /" │ │ - .line 36 │ - goto :goto_0 │ -.end method │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ -.method private static a(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z │ - .locals 3 │ + .line 38 │ + const-string v0, "Crashlytics" │ │ - .prologue │ - const/4 v0, 0x0 │ + const-string v1, ". \\ /" │ │ - .line 61 │ - invoke-virtual {p0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - move-result-object v1 │ + .line 39 │ + const-string v0, "Crashlytics" │ │ - invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal; │ + const-string v1, ". \\ /" │ │ - move-result-object v2 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - invoke-virtual {v1, v2}, Ljavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z │ + .line 40 │ + const-string v0, "Crashlytics" │ │ - move-result v1 │ + const-string v1, ". \\/" │ │ - if-nez v1, :cond_0 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - .line 71 │ - :goto_0 │ - return v0 │ + .line 41 │ + const-string v0, "Crashlytics" │ │ - .line 66 │ - :cond_0 │ - :try_start_0 │ - invoke-virtual {p0}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey; │ + const-string v1, "." │ │ - move-result-object v1 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - invoke-virtual {p1, v1}, Ljava/security/cert/X509Certificate;->verify(Ljava/security/PublicKey;)V │ - :try_end_0 │ - .catch Ljava/security/GeneralSecurityException; {:try_start_0 .. :try_end_0} :catch_0 │ + .line 42 │ + const-string v0, "Crashlytics" │ │ - .line 71 │ - const/4 v0, 0x1 │ + const-string v1, "This app relies on Crashlytics. Configure your build environment here: " │ │ - goto :goto_0 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - .line 68 │ - :catch_0 │ - move-exception v1 │ + .line 43 │ + const-string v0, "Crashlytics" │ │ - goto :goto_0 │ -.end method │ + const-string v1, "https://crashlytics.com/register/%s/android/%s" │ │ -.method public static a([Ljava/security/cert/X509Certificate;Lcom/crashlytics/android/az;)[Ljava/security/cert/X509Certificate; │ - .locals 6 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/security/cert/CertificateException; │ - } │ - .end annotation │ + const/4 v2, 0x2 │ │ - .prologue │ - const/4 v2, 0x0 │ + new-array v2, v2, [Ljava/lang/Object; │ │ - const/4 v1, 0x1 │ + const/4 v3, 0x0 │ │ - .line 24 │ - new-instance v3, Ljava/util/LinkedList; │ + aput-object p1, v2, v3 │ │ - invoke-direct {v3}, Ljava/util/LinkedList;->()V │ + const/4 v3, 0x1 │ │ - .line 28 │ - aget-object v0, p0, v2 │ + aput-object p2, v2, v3 │ │ - invoke-virtual {p1, v0}, Lcom/crashlytics/android/az;->a(Ljava/security/cert/X509Certificate;)Z │ + invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ - move-result v0 │ + move-result-object v1 │ │ - if-eqz v0, :cond_4 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - move v0, v1 │ + .line 44 │ + const-string v0, "Crashlytics" │ │ - .line 32 │ - :goto_0 │ - aget-object v2, p0, v2 │ + const-string v1, "." │ │ - invoke-virtual {v3, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - move v2, v0 │ + .line 45 │ + const-string v0, "Crashlytics" │ │ - move v0, v1 │ + const-string v1, ". /\\" │ │ - .line 34 │ - :goto_1 │ - array-length v4, p0 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - if-ge v0, v4, :cond_1 │ + .line 46 │ + const-string v0, "Crashlytics" │ │ - .line 35 │ - aget-object v4, p0, v0 │ + const-string v1, ". / \\" │ │ - invoke-virtual {p1, v4}, Lcom/crashlytics/android/az;->a(Ljava/security/cert/X509Certificate;)Z │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - move-result v4 │ + .line 47 │ + const-string v0, "Crashlytics" │ │ - if-eqz v4, :cond_0 │ + const-string v1, ". / \\" │ │ - move v2, v1 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - .line 39 │ - :cond_0 │ - aget-object v4, p0, v0 │ + .line 48 │ + const-string v0, "Crashlytics" │ │ - add-int/lit8 v5, v0, -0x1 │ + const-string v1, ". / | | \\" │ │ - aget-object v5, p0, v5 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - invoke-static {v4, v5}, Lcom/crashlytics/android/c;->a(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z │ + .line 49 │ + const-string v0, "Crashlytics" │ │ - move-result v4 │ + const-string v1, ". | |" │ │ - if-eqz v4, :cond_1 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - .line 40 │ - aget-object v4, p0, v0 │ + .line 50 │ + const-string v0, "Crashlytics" │ │ - invoke-virtual {v3, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z │ + const-string v1, ". | |" │ │ - .line 34 │ - add-int/lit8 v0, v0, 0x1 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - goto :goto_1 │ + .line 51 │ + const-string v0, "Crashlytics" │ │ - .line 46 │ - :cond_1 │ - add-int/lit8 v0, v0, -0x1 │ + const-string v1, ". | |" │ │ - aget-object v0, p0, v0 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ - invoke-virtual {p1, v0}, Lcom/crashlytics/android/az;->b(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; │ + .line 52 │ + const-string v0, "Crashlytics" │ │ - move-result-object v0 │ + const-string v1, "." │ │ - .line 48 │ - if-eqz v0, :cond_3 │ - │ - .line 49 │ - invoke-virtual {v3, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z │ - │ - .line 53 │ - :goto_2 │ - if-eqz v1, :cond_2 │ + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ .line 54 │ - invoke-virtual {v3}, Ljava/util/LinkedList;->size()I │ + new-instance v0, Lcom/crashlytics/android/CrashlyticsMissingDependencyException; │ │ - move-result v0 │ + invoke-direct {v0, p1, p2}, Lcom/crashlytics/android/CrashlyticsMissingDependencyException;->(Ljava/lang/String;Ljava/lang/String;)V │ │ - new-array v0, v0, [Ljava/security/cert/X509Certificate; │ - │ - invoke-virtual {v3, v0}, Ljava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; │ - │ - move-result-object v0 │ + throw v0 │ │ - check-cast v0, [Ljava/security/cert/X509Certificate; │ + .line 55 │ + :cond_0 │ + iget-boolean v0, p0, Lcom/crashlytics/android/c;->b:Z │ │ - return-object v0 │ + if-nez v0, :cond_1 │ │ .line 56 │ - :cond_2 │ - new-instance v0, Ljava/security/cert/CertificateException; │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - const-string v1, "Didn\'t find a trust anchor in chain cleanup!" │ + move-result-object v0 │ │ - invoke-direct {v0, v1}, Ljava/security/cert/CertificateException;->(Ljava/lang/String;)V │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - throw v0 │ + move-result-object v0 │ │ - :cond_3 │ - move v1, v2 │ + const-string v1, "Crashlytics" │ │ - goto :goto_2 │ + const-string v2, "Configured not to require a build ID." │ │ - :cond_4 │ - move v0, v2 │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - goto :goto_0 │ + .line 58 │ + :cond_1 │ + return-void │ .end method ├── smali/com/crashlytics/android/E.smali │ @@ -1,7421 +1,47 @@ │ .class final Lcom/crashlytics/android/E; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Ljava/lang/Thread$UncaughtExceptionHandler; │ - │ - │ -# static fields │ -.field static final a:Ljava/io/FilenameFilter; │ - │ -.field private static b:Ljava/util/Comparator; │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/util/Comparator", │ - "<", │ - "Ljava/io/File;", │ - ">;" │ - } │ - .end annotation │ -.end field │ - │ -.field private static c:Ljava/util/Comparator; │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/util/Comparator", │ - "<", │ - "Ljava/io/File;", │ - ">;" │ - } │ - .end annotation │ -.end field │ - │ -.field private static final d:Ljava/util/regex/Pattern; │ - │ -.field private static final e:Ljava/util/Map; │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;" │ - } │ - .end annotation │ -.end field │ - │ -.field private static final f:Lcom/crashlytics/android/k; │ +.implements Ljava/lang/Runnable; │ │ │ # instance fields │ -.field private final g:Ljava/util/concurrent/atomic/AtomicInteger; │ - │ -.field private final h:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ -.field private final i:I │ - │ -.field private final j:Ljava/lang/Thread$UncaughtExceptionHandler; │ - │ -.field private final k:Ljava/io/File; │ - │ -.field private final l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ -.field private final m:Ljava/lang/String; │ - │ -.field private final n:Landroid/content/BroadcastReceiver; │ - │ -.field private final o:Landroid/content/BroadcastReceiver; │ - │ -.field private final p:Lcom/crashlytics/android/k; │ - │ -.field private final q:Lcom/crashlytics/android/k; │ - │ -.field private final r:Ljava/util/concurrent/ExecutorService; │ - │ -.field private s:Landroid/app/ActivityManager$RunningAppProcessInfo; │ - │ -.field private t:Lcom/crashlytics/android/QueueFile; │ - │ -.field private u:Z │ - │ -.field private v:[Ljava/lang/Thread; │ - │ -.field private w:Ljava/util/List; │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/util/List", │ - "<[", │ - "Ljava/lang/StackTraceElement;", │ - ">;" │ - } │ - .end annotation │ -.end field │ - │ -.field private x:[Ljava/lang/StackTraceElement; │ +.field private synthetic a:Lcom/crashlytics/android/v; │ │ │ # direct methods │ -.method static constructor ()V │ - .locals 2 │ - │ - .prologue │ - .line 120 │ - new-instance v0, Lcom/crashlytics/android/F; │ - │ - invoke-direct {v0}, Lcom/crashlytics/android/F;->()V │ - │ - sput-object v0, Lcom/crashlytics/android/E;->a:Ljava/io/FilenameFilter; │ - │ - .line 128 │ - new-instance v0, Lcom/crashlytics/android/O; │ - │ - invoke-direct {v0}, Lcom/crashlytics/android/O;->()V │ - │ - sput-object v0, Lcom/crashlytics/android/E;->b:Ljava/util/Comparator; │ - │ - .line 135 │ - new-instance v0, Lcom/crashlytics/android/P; │ - │ - invoke-direct {v0}, Lcom/crashlytics/android/P;->()V │ - │ - sput-object v0, Lcom/crashlytics/android/E;->c:Ljava/util/Comparator; │ - │ - .line 145 │ - new-instance v0, Lcom/crashlytics/android/Q; │ - │ - invoke-direct {v0}, Lcom/crashlytics/android/Q;->()V │ - │ - .line 152 │ - const-string v0, "([\\d|A-Z|a-z]{12}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{12}).+" │ - │ - invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern; │ - │ - move-result-object v0 │ - │ - sput-object v0, Lcom/crashlytics/android/E;->d:Ljava/util/regex/Pattern; │ - │ - .line 155 │ - const-string v0, "X-CRASHLYTICS-SEND-FLAGS" │ - │ - const-string v1, "1" │ - │ - invoke-static {v0, v1}, Ljava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; │ - │ - move-result-object v0 │ - │ - sput-object v0, Lcom/crashlytics/android/E;->e:Ljava/util/Map; │ - │ - .line 176 │ - const-string v0, "0" │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - sput-object v0, Lcom/crashlytics/android/E;->f:Lcom/crashlytics/android/k; │ - │ - return-void │ -.end method │ - │ -.method public constructor (Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/lang/String;)V │ - .locals 8 │ - │ - .prologue │ - .line 236 │ - const-string v1, "Crashlytics Exception Handler" │ - │ - new-instance v0, Ljava/util/concurrent/atomic/AtomicLong; │ - │ - const-wide/16 v2, 0x1 │ - │ - invoke-direct {v0, v2, v3}, Ljava/util/concurrent/atomic/AtomicLong;->(J)V │ - │ - new-instance v2, Lcom/crashlytics/android/ag; │ - │ - invoke-direct {v2, v1, v0}, Lcom/crashlytics/android/ag;->(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicLong;)V │ - │ - invoke-static {v2}, Ljava/util/concurrent/Executors;->newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService; │ - │ - move-result-object v2 │ - │ - sget-object v5, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; │ - │ - invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime; │ - │ - move-result-object v6 │ - │ - new-instance v7, Ljava/lang/Thread; │ - │ - new-instance v0, Lcom/crashlytics/android/ah; │ - │ - const-wide/16 v3, 0x2 │ - │ - invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/ah;->(Ljava/lang/String;Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V │ - │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Crashlytics Shutdown Hook for " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-direct {v7, v0, v1}, Ljava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V │ - │ - invoke-virtual {v6, v7}, Ljava/lang/Runtime;->addShutdownHook(Ljava/lang/Thread;)V │ - │ - invoke-direct {p0, p1, p2, v2, p3}, Lcom/crashlytics/android/E;->(Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/util/concurrent/ExecutorService;Ljava/lang/String;)V │ - │ - .line 237 │ - return-void │ -.end method │ - │ -.method private constructor (Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/util/concurrent/ExecutorService;Ljava/lang/String;)V │ - .locals 5 │ - │ - .prologue │ - const/4 v4, 0x1 │ - │ - const/4 v3, 0x0 │ - │ - .line 243 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ - │ - .line 187 │ - new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger; │ - │ - invoke-direct {v0, v3}, Ljava/util/concurrent/atomic/AtomicInteger;->(I)V │ - │ - iput-object v0, p0, Lcom/crashlytics/android/E;->g:Ljava/util/concurrent/atomic/AtomicInteger; │ - │ - .line 188 │ - new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - invoke-direct {v0, v3}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V │ - │ - iput-object v0, p0, Lcom/crashlytics/android/E;->h:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - .line 244 │ - iput-object p1, p0, Lcom/crashlytics/android/E;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ - │ - .line 245 │ - iput-object p3, p0, Lcom/crashlytics/android/E;->r:Ljava/util/concurrent/ExecutorService; │ - │ - .line 246 │ - new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - invoke-direct {v0, v3}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V │ - │ - iput-object v0, p0, Lcom/crashlytics/android/E;->l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - .line 247 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v0 │ - │ - iput-object v0, p0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - .line 248 │ - const-string v0, "Crashlytics Android SDK/%s" │ - │ - new-array v1, v4, [Ljava/lang/Object; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getCrashlyticsVersion()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - aput-object v2, v1, v3 │ - │ - invoke-static {v0, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - iput-object v0, p0, Lcom/crashlytics/android/E;->m:Ljava/lang/String; │ - │ - .line 252 │ - new-instance v0, Lcom/crashlytics/android/I; │ - │ - invoke-direct {v0, p0}, Lcom/crashlytics/android/I;->(Lcom/crashlytics/android/E;)V │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ - │ - .line 259 │ - const/16 v0, 0x8 │ - │ - iput v0, p0, Lcom/crashlytics/android/E;->i:I │ - │ - .line 261 │ - const-string v0, "Checking for previous crash marker." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - new-instance v0, Ljava/io/File; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v1 │ - │ - const-string v2, "crash_marker" │ - │ - invoke-direct {v0, v1, v2}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ - │ - invoke-virtual {v0}, Ljava/io/File;->exists()Z │ - │ - move-result v1 │ - │ - if-eqz v1, :cond_0 │ - │ - invoke-virtual {v0}, Ljava/io/File;->delete()Z │ - │ - if-eqz p2, :cond_0 │ - │ - :try_start_0 │ - invoke-interface {p2}, Lcom/crashlytics/android/CrashlyticsListener;->crashlyticsDidDetectCrashDuringPreviousExecution()V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 263 │ - :cond_0 │ - :goto_0 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->e()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - iput-object v0, p0, Lcom/crashlytics/android/E;->p:Lcom/crashlytics/android/k; │ - │ - .line 264 │ - if-nez p4, :cond_1 │ - │ - const/4 v0, 0x0 │ - │ - :goto_1 │ - iput-object v0, p0, Lcom/crashlytics/android/E;->q:Lcom/crashlytics/android/k; │ - │ - .line 266 │ - new-instance v0, Lcom/crashlytics/android/R; │ - │ - invoke-direct {v0, p0}, Lcom/crashlytics/android/R;->(Lcom/crashlytics/android/E;)V │ - │ - iput-object v0, p0, Lcom/crashlytics/android/E;->o:Landroid/content/BroadcastReceiver; │ - │ - .line 273 │ - new-instance v0, Landroid/content/IntentFilter; │ - │ - const-string v1, "android.intent.action.ACTION_POWER_CONNECTED" │ - │ - invoke-direct {v0, v1}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V │ - │ - .line 275 │ - new-instance v1, Lcom/crashlytics/android/S; │ - │ - invoke-direct {v1, p0}, Lcom/crashlytics/android/S;->(Lcom/crashlytics/android/E;)V │ - │ - iput-object v1, p0, Lcom/crashlytics/android/E;->n:Landroid/content/BroadcastReceiver; │ - │ - .line 282 │ - new-instance v1, Landroid/content/IntentFilter; │ - │ - const-string v2, "android.intent.action.ACTION_POWER_DISCONNECTED" │ - │ - invoke-direct {v1, v2}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V │ - │ - .line 284 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v2 │ - │ - iget-object v3, p0, Lcom/crashlytics/android/E;->o:Landroid/content/BroadcastReceiver; │ - │ - invoke-virtual {v2, v3, v0}, Landroid/content/ContextWrapper;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; │ - │ - .line 285 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v0 │ - │ - iget-object v2, p0, Lcom/crashlytics/android/E;->n:Landroid/content/BroadcastReceiver; │ - │ - invoke-virtual {v0, v2, v1}, Landroid/content/ContextWrapper;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; │ - │ - .line 286 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->h:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - invoke-virtual {v0, v4}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ - │ - .line 287 │ - return-void │ - │ - .line 261 │ - :catch_0 │ - move-exception v0 │ - │ - const-string v1, "Exception thrown by CrashlyticsListener while notifying of previous crash." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ - │ - .line 264 │ - :cond_1 │ - const-string v0, "-" │ - │ - const-string v1, "" │ - │ - invoke-virtual {p4, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - goto :goto_1 │ -.end method │ - │ -.method private static a(FIZIJJ)I │ - .locals 2 │ - │ - .prologue │ - .line 1762 │ - const/4 v0, 0x1 │ - │ - invoke-static {v0, p0}, Lcom/crashlytics/android/p;->b(IF)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1765 │ - const/4 v1, 0x2 │ - │ - invoke-static {v1, p1}, Lcom/crashlytics/android/p;->f(II)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1766 │ - const/4 v1, 0x3 │ - │ - invoke-static {v1, p2}, Lcom/crashlytics/android/p;->b(IZ)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1767 │ - const/4 v1, 0x4 │ - │ - invoke-static {v1, p3}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1768 │ - const/4 v1, 0x5 │ - │ - invoke-static {v1, p4, p5}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1769 │ - const/4 v1, 0x6 │ - │ - invoke-static {v1, p6, p7}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1771 │ - return v0 │ -.end method │ - │ -.method private a(ILcom/crashlytics/android/k;Lcom/crashlytics/android/k;IJJZLjava/util/Map;ILcom/crashlytics/android/k;Lcom/crashlytics/android/k;)I │ - .locals 6 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(I", │ - "Lcom/crashlytics/android/k;", │ - "Lcom/crashlytics/android/k;", │ - "IJJZ", │ - "Ljava/util/Map", │ - "<", │ - "Lcom/crashlytics/android/IdManager$DeviceIdentifierType;", │ - "Ljava/lang/String;", │ - ">;I", │ - "Lcom/crashlytics/android/k;", │ - "Lcom/crashlytics/android/k;", │ - ")I" │ - } │ - .end annotation │ - │ - .prologue │ - .line 1275 │ - const/4 v1, 0x1 │ - │ - invoke-static {v1, p2}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/lit8 v1, v1, 0x0 │ - │ - .line 1278 │ - const/4 v2, 0x3 │ - │ - invoke-static {v2, p1}, Lcom/crashlytics/android/p;->e(II)I │ - │ - move-result v2 │ - │ - add-int/2addr v2, v1 │ - │ - .line 1279 │ - if-nez p3, :cond_0 │ - │ - const/4 v1, 0x0 │ - │ - :goto_0 │ - add-int/2addr v1, v2 │ - │ - .line 1280 │ - const/4 v2, 0x5 │ - │ - invoke-static {v2, p4}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v2 │ - │ - add-int/2addr v1, v2 │ - │ - .line 1281 │ - const/4 v2, 0x6 │ - │ - invoke-static {v2, p5, p6}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v2 │ - │ - add-int/2addr v1, v2 │ - │ - .line 1282 │ - const/4 v2, 0x7 │ - │ - invoke-static {v2, p7, p8}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v2 │ - │ - add-int/2addr v1, v2 │ - │ - .line 1283 │ - const/16 v2, 0xa │ - │ - invoke-static {v2, p9}, Lcom/crashlytics/android/p;->b(IZ)I │ - │ - move-result v2 │ - │ - add-int/2addr v1, v2 │ - │ - .line 1284 │ - if-eqz p10, :cond_1 │ - │ - .line 1285 │ - invoke-interface/range {p10 .. p10}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v2 │ - │ - invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v4 │ - │ - move v3, v1 │ - │ - :goto_1 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v1 │ - │ - if-eqz v1, :cond_2 │ - │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - move-object v2, v1 │ - │ - check-cast v2, Ljava/util/Map$Entry; │ - │ - .line 1286 │ - invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Lcom/crashlytics/android/IdManager$DeviceIdentifierType; │ - │ - invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v2 │ - │ - check-cast v2, Ljava/lang/String; │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/IdManager$DeviceIdentifierType;Ljava/lang/String;)I │ - │ - move-result v1 │ - │ - .line 1287 │ - const/16 v2, 0xb │ - │ - invoke-static {v2}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v2 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v5 │ - │ - add-int/2addr v2, v5 │ - │ - add-int/2addr v1, v2 │ - │ - add-int/2addr v1, v3 │ - │ - move v3, v1 │ - │ - .line 1289 │ - goto :goto_1 │ - │ - .line 1279 │ - :cond_0 │ - const/4 v1, 0x4 │ - │ - invoke-static {v1, p3}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - goto :goto_0 │ - │ - :cond_1 │ - move v3, v1 │ - │ - .line 1291 │ - :cond_2 │ - const/16 v1, 0xc │ - │ - move/from16 v0, p11 │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v1 │ - │ - add-int v2, v3, v1 │ - │ - .line 1292 │ - if-nez p12, :cond_3 │ - │ - const/4 v1, 0x0 │ - │ - :goto_2 │ - add-int/2addr v2, v1 │ - │ - .line 1293 │ - if-nez p13, :cond_4 │ - │ - const/4 v1, 0x0 │ - │ - :goto_3 │ - add-int/2addr v1, v2 │ - │ - .line 1295 │ - return v1 │ - │ - .line 1292 │ - :cond_3 │ - const/16 v1, 0xd │ - │ - move-object/from16 v0, p12 │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - goto :goto_2 │ - │ - .line 1293 │ - :cond_4 │ - const/16 v1, 0xe │ - │ - move-object/from16 v0, p13 │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - goto :goto_3 │ -.end method │ - │ -.method private static a(Lcom/crashlytics/android/IdManager$DeviceIdentifierType;Ljava/lang/String;)I │ - .locals 3 │ - │ - .prologue │ - .line 1266 │ - const/4 v0, 0x1 │ - │ - iget v1, p0, Lcom/crashlytics/android/IdManager$DeviceIdentifierType;->protobufIndex:I │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/p;->e(II)I │ - │ - move-result v0 │ - │ - .line 1267 │ - const/4 v1, 0x2 │ - │ - invoke-static {p1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v2 │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1269 │ - return v0 │ -.end method │ - │ -.method private static a(Ljava/lang/StackTraceElement;Z)I │ - .locals 6 │ - │ - .prologue │ - const/4 v1, 0x2 │ - │ - const/4 v5, 0x1 │ - │ - const/4 v2, 0x0 │ - │ - .line 1595 │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ - │ - .line 1599 │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getLineNumber()I │ - │ - move-result v0 │ - │ - invoke-static {v0, v2}, Ljava/lang/Math;->max(II)I │ - │ - move-result v0 │ - │ - int-to-long v3, v0 │ - │ - invoke-static {v5, v3, v4}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1604 │ - :goto_0 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - const-string v4, "." │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getMethodName()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v3 │ - │ - invoke-static {v1, v3}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v3 │ - │ - add-int/2addr v0, v3 │ - │ - .line 1608 │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - if-eqz v3, :cond_0 │ - │ - .line 1609 │ - const/4 v3, 0x3 │ - │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-static {v4}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v4 │ - │ - invoke-static {v3, v4}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v3 │ - │ - add-int/2addr v0, v3 │ - │ - .line 1612 │ - :cond_0 │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ - │ - move-result v3 │ - │ - if-nez v3, :cond_3 │ - │ - .line 1613 │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getLineNumber()I │ - │ - move-result v3 │ - │ - if-lez v3, :cond_3 │ - │ - .line 1615 │ - const/4 v3, 0x4 │ - │ - invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getLineNumber()I │ - │ - move-result v4 │ - │ - int-to-long v4, v4 │ - │ - invoke-static {v3, v4, v5}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v3 │ - │ - add-int/2addr v0, v3 │ - │ - move v3, v0 │ - │ - .line 1618 │ - :goto_1 │ - const/4 v4, 0x5 │ - │ - if-eqz p1, :cond_2 │ - │ - move v0, v1 │ - │ - :goto_2 │ - invoke-static {v4, v0}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v0 │ - │ - add-int/2addr v0, v3 │ - │ - .line 1620 │ - return v0 │ - │ - .line 1601 │ - :cond_1 │ - const-wide/16 v3, 0x0 │ - │ - invoke-static {v5, v3, v4}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - goto :goto_0 │ - │ - :cond_2 │ - move v0, v2 │ - │ - .line 1618 │ - goto :goto_2 │ - │ - :cond_3 │ - move v3, v0 │ - │ - goto :goto_1 │ -.end method │ - │ -.method private static a(Ljava/lang/String;Ljava/lang/String;)I │ - .locals 3 │ - │ - .prologue │ - .line 1755 │ - const/4 v0, 0x1 │ - │ - invoke-static {p0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v0 │ - │ - .line 1756 │ - const/4 v1, 0x2 │ - │ - if-nez p1, :cond_0 │ - │ - const-string p1, "" │ - │ - :cond_0 │ - invoke-static {p1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v2 │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1757 │ - return v0 │ -.end method │ - │ -.method private a(Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/util/Map;)I │ - .locals 6 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Ljava/lang/Thread;", │ - "Ljava/lang/Throwable;", │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;)I" │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v3, 0x1 │ - │ - .line 1701 │ - invoke-direct {p0, p1, p2}, Lcom/crashlytics/android/E;->b(Ljava/lang/Thread;Ljava/lang/Throwable;)I │ - │ - move-result v0 │ - │ - .line 1704 │ - invoke-static {v3}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v1 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v2 │ - │ - add-int/2addr v1, v2 │ - │ - add-int/2addr v0, v1 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1707 │ - if-eqz p3, :cond_0 │ - │ - .line 1708 │ - invoke-interface {p3}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v1 │ - │ - invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v4 │ - │ - move v2, v0 │ - │ - :goto_0 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ - │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - move-object v1, v0 │ - │ - check-cast v1, Ljava/util/Map$Entry; │ - │ - .line 1709 │ - invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - check-cast v0, Ljava/lang/String; │ - │ - invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Ljava/lang/String; │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/E;->a(Ljava/lang/String;Ljava/lang/String;)I │ - │ - move-result v0 │ - │ - .line 1710 │ - const/4 v1, 0x2 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v1 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v5 │ - │ - add-int/2addr v1, v5 │ - │ - add-int/2addr v0, v1 │ - │ - add-int/2addr v0, v2 │ - │ - move v2, v0 │ - │ - .line 1712 │ - goto :goto_0 │ - │ - :cond_0 │ - move v2, v0 │ - │ - .line 1716 │ - :cond_1 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->s:Landroid/app/ActivityManager$RunningAppProcessInfo; │ - │ - if-eqz v0, :cond_2 │ - │ - .line 1717 │ - const/4 v1, 0x3 │ - │ - iget-object v0, p0, Lcom/crashlytics/android/E;->s:Landroid/app/ActivityManager$RunningAppProcessInfo; │ - │ - iget v0, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I │ - │ - const/16 v4, 0x64 │ - │ - if-eq v0, v4, :cond_3 │ - │ - move v0, v3 │ - │ - :goto_1 │ - invoke-static {v1, v0}, Lcom/crashlytics/android/p;->b(IZ)I │ - │ - move-result v0 │ - │ - add-int/2addr v2, v0 │ - │ - .line 1720 │ - :cond_2 │ - const/4 v0, 0x4 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Landroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; │ - │ - move-result-object v1 │ - │ - iget v1, v1, Landroid/content/res/Configuration;->orientation:I │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v0 │ - │ - add-int/2addr v0, v2 │ - │ - .line 1723 │ - return v0 │ - │ - .line 1717 │ - :cond_3 │ - const/4 v0, 0x0 │ - │ - goto :goto_1 │ -.end method │ - │ -.method private a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ - .locals 6 │ - │ - .prologue │ - .line 1565 │ - const/4 v0, 0x1 │ - │ - invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1568 │ - const/4 v1, 0x2 │ - │ - invoke-static {v1, p3}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v1 │ - │ - add-int/2addr v1, v0 │ - │ - .line 1569 │ - array-length v2, p2 │ - │ - .line 1571 │ - const/4 v0, 0x0 │ - │ - :goto_0 │ - if-ge v0, v2, :cond_0 │ - │ - .line 1572 │ - aget-object v3, p2, v0 │ - │ - invoke-static {v3, p4}, Lcom/crashlytics/android/E;->a(Ljava/lang/StackTraceElement;Z)I │ - │ - move-result v3 │ - │ - .line 1573 │ - const/4 v4, 0x3 │ - │ - invoke-static {v4}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v4 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v5 │ - │ - add-int/2addr v4, v5 │ - │ - add-int/2addr v3, v4 │ - │ - add-int/2addr v1, v3 │ - │ - .line 1571 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_0 │ - │ - .line 1577 │ - :cond_0 │ - return v1 │ -.end method │ - │ -.method private a(Ljava/lang/Throwable;I)I │ - .locals 9 │ - │ - .prologue │ - const/4 v8, 0x1 │ - │ - const/4 v1, 0x0 │ - │ - .line 1780 │ - invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - invoke-static {v8, v0}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1785 │ - invoke-virtual {p1}, Ljava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - .line 1786 │ - if-eqz v2, :cond_0 │ - │ - .line 1787 │ - const/4 v3, 0x3 │ - │ - invoke-static {v2}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v2 │ - │ - invoke-static {v3, v2}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v2 │ - │ - add-int/2addr v0, v2 │ - │ - .line 1790 │ - :cond_0 │ - invoke-virtual {p1}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ - │ - move-result-object v4 │ - │ - array-length v5, v4 │ - │ - move v2, v1 │ - │ - :goto_0 │ - if-ge v2, v5, :cond_1 │ - │ - aget-object v3, v4, v2 │ - │ - .line 1791 │ - invoke-static {v3, v8}, Lcom/crashlytics/android/E;->a(Ljava/lang/StackTraceElement;Z)I │ - │ - move-result v3 │ - │ - .line 1792 │ - const/4 v6, 0x4 │ - │ - invoke-static {v6}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v6 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v7 │ - │ - add-int/2addr v6, v7 │ - │ - add-int/2addr v3, v6 │ - │ - add-int/2addr v3, v0 │ - │ - .line 1790 │ - add-int/lit8 v0, v2, 0x1 │ - │ - move v2, v0 │ - │ - move v0, v3 │ - │ - goto :goto_0 │ - │ - .line 1798 │ - :cond_1 │ - invoke-virtual {p1}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ - │ - move-result-object v2 │ - │ - .line 1799 │ - if-eqz v2, :cond_2 │ - │ - .line 1800 │ - const/16 v3, 0x8 │ - │ - if-ge p2, v3, :cond_3 │ - │ - .line 1801 │ - add-int/lit8 v1, p2, 0x1 │ - │ - invoke-direct {p0, v2, v1}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;I)I │ - │ - move-result v1 │ - │ - .line 1802 │ - const/4 v2, 0x6 │ - │ - invoke-static {v2}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v2 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v3 │ - │ - add-int/2addr v2, v3 │ - │ - add-int/2addr v1, v2 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1817 │ - :cond_2 │ - :goto_1 │ - return v0 │ - │ - .line 1808 │ - :cond_3 │ - :goto_2 │ - if-eqz v2, :cond_4 │ - │ - .line 1809 │ - invoke-virtual {v2}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ - │ - move-result-object v2 │ - │ - .line 1810 │ - add-int/lit8 v1, v1, 0x1 │ - │ - goto :goto_2 │ - │ - .line 1813 │ - :cond_4 │ - const/4 v2, 0x7 │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - goto :goto_1 │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/QueueFile;)Lcom/crashlytics/android/k; │ - .locals 5 │ - │ - .prologue │ - const/4 v4, 0x0 │ - │ - .line 399 │ - if-nez p1, :cond_0 │ - │ - .line 400 │ - const/4 v0, 0x0 │ - │ - .line 426 │ - :goto_0 │ - return-object v0 │ - │ - .line 406 │ - :cond_0 │ - const/4 v0, 0x1 │ - │ - new-array v1, v0, [I │ - │ - aput v4, v1, v4 │ - │ - .line 408 │ - invoke-virtual {p1}, Lcom/crashlytics/android/QueueFile;->a()I │ - │ - move-result v0 │ - │ - new-array v2, v0, [B │ - │ - .line 411 │ - :try_start_0 │ - new-instance v0, Lcom/crashlytics/android/H; │ - │ - invoke-direct {v0, p0, v2, v1}, Lcom/crashlytics/android/H;->(Lcom/crashlytics/android/E;[B[I)V │ - │ - invoke-virtual {p1, v0}, Lcom/crashlytics/android/QueueFile;->a(Lcom/crashlytics/android/QueueFile$ElementReader;)V │ - :try_end_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 426 │ - :goto_1 │ - aget v0, v1, v4 │ - │ - invoke-static {v2, v4, v0}, Lcom/crashlytics/android/k;->a([BII)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - goto :goto_0 │ - │ - .line 422 │ - :catch_0 │ - move-exception v0 │ - │ - .line 423 │ - const-string v3, "A problem occurred while reading the Crashlytics log file." │ - │ - invoke-static {v3, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_1 │ -.end method │ - │ -.method private a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ - .locals 3 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Ljava/util/concurrent/Callable", │ - ";)TT;" │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v0, 0x0 │ - │ - .line 1941 │ - :try_start_0 │ - iget-object v1, p0, Lcom/crashlytics/android/E;->r:Ljava/util/concurrent/ExecutorService; │ - │ - invoke-interface {v1, p1}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ - │ - move-result-object v1 │ - │ - invoke-interface {v1}, Ljava/util/concurrent/Future;->get()Ljava/lang/Object; │ - :try_end_0 │ - .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1 │ - │ - move-result-object v0 │ - │ - .line 1947 │ - :goto_0 │ - return-object v0 │ - │ - .line 1943 │ - :catch_0 │ - move-exception v1 │ - │ - const-string v1, "Executor is shut down because we\'re handling a fatal crash." │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - goto :goto_0 │ - │ - .line 1945 │ - :catch_1 │ - move-exception v1 │ - │ - .line 1946 │ - const-string v2, "Failed to execute task." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ -.end method │ - │ -.method private static a(Ljava/io/File;)Ljava/lang/String; │ - .locals 3 │ - │ - .prologue │ - .line 736 │ - invoke-virtual {p0}, Ljava/io/File;->getName()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - const/4 v1, 0x0 │ - │ - const/16 v2, 0x23 │ - │ - invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - return-object v0 │ -.end method │ - │ -.method private a(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ - .locals 2 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Ljava/lang/Runnable;", │ - ")", │ - "Ljava/util/concurrent/Future", │ - "<*>;" │ - } │ - .end annotation │ - │ - .prologue │ - .line 1963 │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->r:Ljava/util/concurrent/ExecutorService; │ - │ - new-instance v1, Lcom/crashlytics/android/M; │ - │ - invoke-direct {v1, p0, p1}, Lcom/crashlytics/android/M;->(Lcom/crashlytics/android/E;Ljava/lang/Runnable;)V │ - │ - invoke-interface {v0, v1}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ - :try_end_0 │ - .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - move-result-object v0 │ - │ - .line 1975 │ - :goto_0 │ - return-object v0 │ - │ - .line 1974 │ - :catch_0 │ - move-exception v0 │ - │ - const-string v0, "Executor is shut down because we\'re handling a fatal crash." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 1975 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ -.end method │ - │ -.method static synthetic a(Lcom/crashlytics/android/E;)Ljava/util/concurrent/atomic/AtomicBoolean; │ - .locals 1 │ - │ - .prologue │ - .line 62 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - return-object v0 │ -.end method │ - │ -.method static synthetic a(Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - .locals 7 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v1, 0x0 │ - │ - .line 62 │ - :try_start_0 │ - new-instance v0, Ljava/io/File; │ - │ - iget-object v2, p0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - const-string v3, "crash_marker" │ - │ - invoke-direct {v0, v2, v3}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ - │ - invoke-virtual {v0}, Ljava/io/File;->createNewFile()Z │ - │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->j()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - if-eqz v0, :cond_1 │ - │ - new-instance v6, Lcom/crashlytics/android/n; │ - │ - iget-object v2, p0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v3, "SessionCrash" │ - │ - invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-direct {v6, v2, v0}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - :try_start_1 │ - invoke-static {v6}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - │ - move-result-object v1 │ - │ - const-string v4, "crash" │ - │ - const/4 v5, 0x1 │ - │ - move-object v0, p0 │ - │ - move-object v2, p2 │ - │ - move-object v3, p3 │ - │ - invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/lang/String;Z)V │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - move-object v0, v6 │ - │ - :goto_0 │ - const-string v2, "Failed to flush to session begin file." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close fatal exception file output stream." │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - :goto_1 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->i()V │ - │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->h()V │ - │ - iget-object v0, p0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - sget-object v1, Lcom/crashlytics/android/E;->a:Ljava/io/FilenameFilter; │ - │ - const/4 v2, 0x4 │ - │ - sget-object v3, Lcom/crashlytics/android/E;->c:Ljava/util/Comparator; │ - │ - invoke-static {v0, v1, v2, v3}, Lcom/crashlytics/android/aB;->a(Ljava/io/File;Ljava/io/FilenameFilter;ILjava/util/Comparator;)V │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->m()Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_0 │ - │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->l()V │ - │ - :cond_0 │ - return-void │ - │ - :cond_1 │ - :try_start_2 │ - const-string v0, "Tried to write a fatal exception while no session was open." │ - │ - const/4 v2, 0x0 │ - │ - invoke-static {v0, v2}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ - │ - move-object v0, v1 │ - │ - goto :goto_0 │ - │ - :catch_0 │ - move-exception v0 │ - │ - move-object v6, v1 │ - │ - :goto_2 │ - :try_start_3 │ - const-string v2, "An error occurred in the fatal exception logger" │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - invoke-direct {p0, v0, v6}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ - │ - const-string v0, "Failed to flush to session begin file." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v0, "Failed to close fatal exception file output stream." │ - │ - invoke-static {v6, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - goto :goto_1 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - move-object v6, v1 │ - │ - :goto_3 │ - const-string v2, "Failed to flush to session begin file." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close fatal exception file output stream." │ - │ - invoke-static {v6, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - :catchall_1 │ - move-exception v0 │ - │ - goto :goto_3 │ - │ - :catch_1 │ - move-exception v0 │ - │ - goto :goto_2 │ -.end method │ - │ -.method static a(Lcom/crashlytics/android/QueueFile;IJLjava/lang/String;)V │ - .locals 5 │ - │ - .prologue │ - .line 488 │ - if-nez p0, :cond_1 │ - │ - .line 532 │ - :cond_0 │ - :goto_0 │ - return-void │ - │ - .line 491 │ - :cond_1 │ - if-nez p4, :cond_3 │ - │ - .line 492 │ - const-string v0, "null" │ - │ - .line 512 │ - :goto_1 │ - :try_start_0 │ - invoke-virtual {v0}, Ljava/lang/String;->length()I │ - │ - move-result v1 │ - │ - const/16 v2, 0x4000 │ - │ - if-le v1, v2, :cond_2 │ - │ - .line 515 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "..." │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v0}, Ljava/lang/String;->length()I │ - │ - move-result v2 │ - │ - add-int/lit16 v2, v2, -0x4000 │ - │ - invoke-virtual {v0, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - .line 518 │ - :cond_2 │ - const-string v1, "\r" │ - │ - const-string v2, " " │ - │ - invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - .line 519 │ - const-string v1, "\n" │ - │ - const-string v2, " " │ - │ - invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - .line 521 │ - const-string v1, "%d %s%n" │ - │ - const/4 v2, 0x2 │ - │ - new-array v2, v2, [Ljava/lang/Object; │ - │ - const/4 v3, 0x0 │ - │ - invoke-static {p2, p3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ - │ - move-result-object v4 │ - │ - aput-object v4, v2, v3 │ - │ - const/4 v3, 0x1 │ - │ - aput-object v0, v2, v3 │ - │ - invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - const-string v1, "UTF-8" │ - │ - invoke-virtual {v0, v1}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ - │ - move-result-object v0 │ - │ - .line 523 │ - invoke-virtual {p0, v0}, Lcom/crashlytics/android/QueueFile;->a([B)V │ - │ - .line 526 │ - :goto_2 │ - invoke-virtual {p0}, Lcom/crashlytics/android/QueueFile;->b()Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_0 │ - │ - invoke-virtual {p0}, Lcom/crashlytics/android/QueueFile;->a()I │ - │ - move-result v0 │ - │ - const/high16 v1, 0x10000 │ - │ - if-le v0, v1, :cond_0 │ - │ - .line 527 │ - invoke-virtual {p0}, Lcom/crashlytics/android/QueueFile;->c()V │ - :try_end_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - goto :goto_2 │ - │ - .line 529 │ - :catch_0 │ - move-exception v0 │ - │ - .line 530 │ - const-string v1, "There was a problem writing to the Crashlytics log." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ - │ - :cond_3 │ - move-object v0, p4 │ - │ - goto :goto_1 │ -.end method │ - │ -.method private static a(Lcom/crashlytics/android/n;)V │ - .locals 2 │ - │ - .prologue │ - .line 821 │ - if-eqz p0, :cond_0 │ - │ - .line 823 │ - :try_start_0 │ - invoke-virtual {p0}, Lcom/crashlytics/android/n;->a()V │ - :try_end_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 828 │ - :cond_0 │ - :goto_0 │ - return-void │ - │ - .line 824 │ - :catch_0 │ - move-exception v0 │ - │ - .line 825 │ - const-string v1, "Error closing session file stream in the presence of an exception" │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;ILjava/lang/StackTraceElement;Z)V │ - .locals 6 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v0, 0x4 │ - │ - const/4 v5, 0x2 │ - │ - const/4 v4, 0x1 │ - │ - const/4 v1, 0x0 │ - │ - .line 1625 │ - invoke-virtual {p1, p2, v5}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1626 │ - invoke-static {p3, p4}, Lcom/crashlytics/android/E;->a(Ljava/lang/StackTraceElement;Z)I │ - │ - move-result v2 │ - │ - invoke-virtual {p1, v2}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1628 │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_2 │ - │ - .line 1631 │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getLineNumber()I │ - │ - move-result v2 │ - │ - invoke-static {v2, v1}, Ljava/lang/Math;->max(II)I │ - │ - move-result v2 │ - │ - int-to-long v2, v2 │ - │ - invoke-virtual {p1, v4, v2, v3}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1636 │ - :goto_0 │ - new-instance v2, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - const-string v3, "." │ - │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getMethodName()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-static {v2}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v2 │ - │ - invoke-virtual {p1, v5, v2}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1638 │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - if-eqz v2, :cond_0 │ - │ - .line 1639 │ - const/4 v2, 0x3 │ - │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v3 │ - │ - invoke-virtual {p1, v2, v3}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1642 │ - :cond_0 │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ - │ - move-result v2 │ - │ - if-nez v2, :cond_1 │ - │ - .line 1645 │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getLineNumber()I │ - │ - move-result v2 │ - │ - if-lez v2, :cond_1 │ - │ - .line 1646 │ - invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getLineNumber()I │ - │ - move-result v2 │ - │ - int-to-long v2, v2 │ - │ - invoke-virtual {p1, v0, v2, v3}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1653 │ - :cond_1 │ - const/4 v2, 0x5 │ - │ - if-eqz p4, :cond_3 │ - │ - :goto_1 │ - invoke-virtual {p1, v2, v0}, Lcom/crashlytics/android/p;->a(II)V │ - │ - .line 1654 │ - return-void │ - │ - .line 1633 │ - :cond_2 │ - const-wide/16 v2, 0x0 │ - │ - invoke-virtual {p1, v4, v2, v3}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - goto :goto_0 │ - │ - :cond_3 │ - move v0, v1 │ - │ - .line 1653 │ - goto :goto_1 │ -.end method │ - │ -.method private static a(Lcom/crashlytics/android/p;Ljava/io/File;)V │ - .locals 4 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v2, 0x0 │ - │ - .line 1302 │ - invoke-virtual {p1}, Ljava/io/File;->exists()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ - │ - .line 1304 │ - invoke-virtual {p1}, Ljava/io/File;->length()J │ - │ - move-result-wide v0 │ - │ - .line 1305 │ - long-to-int v0, v0 │ - │ - new-array v3, v0, [B │ - │ - .line 1310 │ - :try_start_0 │ - new-instance v1, Ljava/io/FileInputStream; │ - │ - invoke-direct {v1, p1}, Ljava/io/FileInputStream;->(Ljava/io/File;)V │ - :try_end_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - .line 1312 │ - const/4 v0, 0x0 │ - │ - .line 1315 │ - :goto_0 │ - :try_start_1 │ - array-length v2, v3 │ - │ - if-ge v0, v2, :cond_0 │ - │ - array-length v2, v3 │ - │ - sub-int/2addr v2, v0 │ - │ - invoke-virtual {v1, v3, v0, v2}, Ljava/io/FileInputStream;->read([BII)I │ - :try_end_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - move-result v2 │ - │ - if-ltz v2, :cond_0 │ - │ - .line 1316 │ - add-int/2addr v0, v2 │ - │ - goto :goto_0 │ - │ - .line 1319 │ - :cond_0 │ - const-string v0, "Failed to close file input stream." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 1322 │ - invoke-virtual {p0, v3}, Lcom/crashlytics/android/p;->a([B)V │ - │ - .line 1326 │ - :goto_1 │ - return-void │ - │ - .line 1319 │ - :catchall_0 │ - move-exception v0 │ - │ - move-object v1, v2 │ - │ - :goto_2 │ - const-string v2, "Failed to close file input stream." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - .line 1324 │ - :cond_1 │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - const-string v1, "Tried to include a file that doesn\'t exist: " │ - │ - invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0, v2}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_1 │ - │ - .line 1319 │ - :catchall_1 │ - move-exception v0 │ - │ - goto :goto_2 │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;Ljava/lang/String;)V │ - .locals 8 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v1, 0x0 │ - │ - .line 844 │ - const/4 v0, 0x4 │ - │ - new-array v2, v0, [Ljava/lang/String; │ - │ - const-string v0, "SessionUser" │ - │ - aput-object v0, v2, v1 │ - │ - const/4 v0, 0x1 │ - │ - const-string v3, "SessionApp" │ - │ - aput-object v3, v2, v0 │ - │ - const/4 v0, 0x2 │ - │ - const-string v3, "SessionOS" │ - │ - aput-object v3, v2, v0 │ - │ - const/4 v0, 0x3 │ - │ - const-string v3, "SessionDevice" │ - │ - aput-object v3, v2, v0 │ - │ - .line 846 │ - array-length v3, v2 │ - │ - move v0, v1 │ - │ - :goto_0 │ - if-ge v0, v3, :cond_1 │ - │ - aget-object v4, v2, v0 │ - │ - .line 847 │ - new-instance v5, Lcom/crashlytics/android/X; │ - │ - new-instance v6, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v6}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v6 │ - │ - invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v6 │ - │ - invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v6 │ - │ - invoke-direct {v5, v6}, Lcom/crashlytics/android/X;->(Ljava/lang/String;)V │ - │ - invoke-direct {p0, v5}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v5 │ - │ - .line 849 │ - array-length v6, v5 │ - │ - if-nez v6, :cond_0 │ - │ - .line 850 │ - new-instance v5, Ljava/lang/StringBuilder; │ - │ - const-string v6, "Can\'t find " │ - │ - invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - const-string v5, " data for session ID " │ - │ - invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - const/4 v5, 0x0 │ - │ - invoke-static {v4, v5}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - .line 846 │ - :goto_1 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_0 │ - │ - .line 852 │ - :cond_0 │ - new-instance v6, Ljava/lang/StringBuilder; │ - │ - const-string v7, "Collecting " │ - │ - invoke-direct {v6, v7}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - const-string v6, " data for session ID " │ - │ - invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-static {v4}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 853 │ - aget-object v4, v5, v1 │ - │ - invoke-static {p1, v4}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/io/File;)V │ - │ - goto :goto_1 │ - │ - .line 856 │ - :cond_1 │ - return-void │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - .locals 8 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 1474 │ - const/4 v0, 0x1 │ - │ - const/4 v1, 0x2 │ - │ - invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1475 │ - invoke-direct {p0, p2, p3}, Lcom/crashlytics/android/E;->b(Ljava/lang/Thread;Ljava/lang/Throwable;)I │ - │ - move-result v0 │ - │ - invoke-virtual {p1, v0}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1477 │ - iget-object v3, p0, Lcom/crashlytics/android/E;->x:[Ljava/lang/StackTraceElement; │ - │ - const/4 v4, 0x4 │ - │ - const/4 v5, 0x1 │ - │ - move-object v0, p0 │ - │ - move-object v1, p1 │ - │ - move-object v2, p2 │ - │ - invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)V │ - │ - .line 1481 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->v:[Ljava/lang/Thread; │ - │ - array-length v7, v0 │ - │ - .line 1482 │ - const/4 v0, 0x0 │ - │ - move v6, v0 │ - │ - :goto_0 │ - if-ge v6, v7, :cond_0 │ - │ - .line 1483 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->v:[Ljava/lang/Thread; │ - │ - aget-object v2, v0, v6 │ - │ - .line 1484 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->w:Ljava/util/List; │ - │ - invoke-interface {v0, v6}, Ljava/util/List;->get(I)Ljava/lang/Object; │ - │ - move-result-object v3 │ - │ - check-cast v3, [Ljava/lang/StackTraceElement; │ - │ - const/4 v4, 0x0 │ - │ - const/4 v5, 0x0 │ - │ - move-object v0, p0 │ - │ - move-object v1, p1 │ - │ - invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)V │ - │ - .line 1482 │ - add-int/lit8 v0, v6, 0x1 │ - │ - move v6, v0 │ - │ - goto :goto_0 │ - │ - .line 1487 │ - :cond_0 │ - const/4 v0, 0x1 │ - │ - const/4 v1, 0x2 │ - │ - invoke-direct {p0, p1, p3, v0, v1}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/Throwable;II)V │ - │ - .line 1489 │ - const/4 v0, 0x3 │ - │ - const/4 v1, 0x2 │ - │ - invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1490 │ - invoke-static {}, Lcom/crashlytics/android/E;->p()I │ - │ - move-result v0 │ - │ - invoke-virtual {p1, v0}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1491 │ - const/4 v0, 0x1 │ - │ - sget-object v1, Lcom/crashlytics/android/E;->f:Lcom/crashlytics/android/k; │ - │ - invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1492 │ - const/4 v0, 0x2 │ - │ - sget-object v1, Lcom/crashlytics/android/E;->f:Lcom/crashlytics/android/k; │ - │ - invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1493 │ - const/4 v0, 0x3 │ - │ - const-wide/16 v1, 0x0 │ - │ - invoke-virtual {p1, v0, v1, v2}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1495 │ - const/4 v0, 0x4 │ - │ - const/4 v1, 0x2 │ - │ - invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1496 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->o()I │ - │ - move-result v0 │ - │ - invoke-virtual {p1, v0}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1497 │ - const/4 v0, 0x1 │ - │ - const-wide/16 v1, 0x0 │ - │ - invoke-virtual {p1, v0, v1, v2}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1498 │ - const/4 v0, 0x2 │ - │ - const-wide/16 v1, 0x0 │ - │ - invoke-virtual {p1, v0, v1, v2}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1499 │ - const/4 v0, 0x3 │ - │ - iget-object v1, p0, Lcom/crashlytics/android/E;->p:Lcom/crashlytics/android/k; │ - │ - invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1500 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->q:Lcom/crashlytics/android/k; │ - │ - if-eqz v0, :cond_1 │ - │ - .line 1501 │ - const/4 v0, 0x4 │ - │ - iget-object v1, p0, Lcom/crashlytics/android/E;->q:Lcom/crashlytics/android/k; │ - │ - invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1503 │ - :cond_1 │ - return-void │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/lang/String;Z)V │ - .locals 19 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 1389 │ - new-instance v3, Ljava/util/Date; │ - │ - invoke-direct {v3}, Ljava/util/Date;->()V │ - │ - invoke-virtual {v3}, Ljava/util/Date;->getTime()J │ - │ - move-result-wide v3 │ - │ - const-wide/16 v5, 0x3e8 │ - │ - div-long v14, v3, v5 │ - │ - .line 1390 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/aB;->b(Landroid/content/Context;)F │ - │ - move-result v3 │ - │ - .line 1391 │ - move-object/from16 v0, p0 │ - │ - iget-boolean v4, v0, Lcom/crashlytics/android/E;->u:Z │ - │ - invoke-static {v4}, Lcom/crashlytics/android/aB;->a(Z)I │ - │ - move-result v4 │ - │ - .line 1392 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v5 │ - │ - invoke-static {v5}, Lcom/crashlytics/android/aB;->c(Landroid/content/Context;)Z │ - │ - move-result v5 │ - │ - .line 1393 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v6 │ - │ - invoke-virtual {v6}, Landroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; │ - │ - move-result-object v6 │ - │ - invoke-virtual {v6}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; │ - │ - move-result-object v6 │ - │ - iget v6, v6, Landroid/content/res/Configuration;->orientation:I │ - │ - .line 1394 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v7 │ - │ - invoke-static {v7}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;)J │ - │ - move-result-wide v7 │ - │ - .line 1395 │ - invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File; │ - │ - move-result-object v9 │ - │ - invoke-virtual {v9}, Ljava/io/File;->getPath()Ljava/lang/String; │ - │ - move-result-object v9 │ - │ - invoke-static {v9}, Lcom/crashlytics/android/aB;->b(Ljava/lang/String;)J │ - │ - move-result-wide v9 │ - │ - .line 1397 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->e()Ljava/lang/String; │ - │ - move-result-object v11 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v12 │ - │ - invoke-static {v11, v12}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Landroid/content/Context;)Landroid/app/ActivityManager$RunningAppProcessInfo; │ - │ - move-result-object v11 │ - │ - move-object/from16 v0, p0 │ - │ - iput-object v11, v0, Lcom/crashlytics/android/E;->s:Landroid/app/ActivityManager$RunningAppProcessInfo; │ - │ - .line 1398 │ - new-instance v11, Ljava/util/LinkedList; │ - │ - invoke-direct {v11}, Ljava/util/LinkedList;->()V │ - │ - move-object/from16 v0, p0 │ - │ - iput-object v11, v0, Lcom/crashlytics/android/E;->w:Ljava/util/List; │ - │ - .line 1399 │ - invoke-virtual/range {p3 .. p3}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ - │ - move-result-object v11 │ - │ - move-object/from16 v0, p0 │ - │ - iput-object v11, v0, Lcom/crashlytics/android/E;->x:[Ljava/lang/StackTraceElement; │ - │ - .line 1401 │ - if-eqz p5, :cond_0 │ - │ - .line 1402 │ - invoke-static {}, Ljava/lang/Thread;->getAllStackTraces()Ljava/util/Map; │ - │ - move-result-object v12 │ - │ - .line 1403 │ - invoke-interface {v12}, Ljava/util/Map;->size()I │ - │ - move-result v11 │ - │ - new-array v11, v11, [Ljava/lang/Thread; │ - │ - move-object/from16 v0, p0 │ - │ - iput-object v11, v0, Lcom/crashlytics/android/E;->v:[Ljava/lang/Thread; │ - │ - .line 1404 │ - const/4 v11, 0x0 │ - │ - .line 1405 │ - invoke-interface {v12}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v12 │ - │ - invoke-interface {v12}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v16 │ - │ - move v13, v11 │ - │ - :goto_0 │ - invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v11 │ - │ - if-eqz v11, :cond_1 │ - │ - invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ - │ - move-result-object v11 │ - │ - check-cast v11, Ljava/util/Map$Entry; │ - │ - .line 1406 │ - move-object/from16 v0, p0 │ - │ - iget-object v0, v0, Lcom/crashlytics/android/E;->v:[Ljava/lang/Thread; │ - │ - move-object/from16 v17, v0 │ - │ - invoke-interface {v11}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v12 │ - │ - check-cast v12, Ljava/lang/Thread; │ - │ - aput-object v12, v17, v13 │ - │ - .line 1407 │ - move-object/from16 v0, p0 │ - │ - iget-object v12, v0, Lcom/crashlytics/android/E;->w:Ljava/util/List; │ - │ - invoke-interface {v11}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v11 │ - │ - invoke-interface {v12, v11}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ - │ - .line 1408 │ - add-int/lit8 v11, v13, 0x1 │ - │ - move v13, v11 │ - │ - goto :goto_0 │ - │ - .line 1413 │ - :cond_0 │ - const/4 v11, 0x0 │ - │ - new-array v11, v11, [Ljava/lang/Thread; │ - │ - move-object/from16 v0, p0 │ - │ - iput-object v11, v0, Lcom/crashlytics/android/E;->v:[Ljava/lang/Thread; │ - │ - .line 1416 │ - :cond_1 │ - move-object/from16 v0, p0 │ - │ - iget-object v11, v0, Lcom/crashlytics/android/E;->t:Lcom/crashlytics/android/QueueFile; │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v11}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/QueueFile;)Lcom/crashlytics/android/k; │ - │ - move-result-object v13 │ - │ - .line 1418 │ - if-nez v13, :cond_2 │ - │ - .line 1419 │ - const-string v11, "No log data to include with this event." │ - │ - invoke-static {v11}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 1423 │ - :cond_2 │ - move-object/from16 v0, p0 │ - │ - iget-object v11, v0, Lcom/crashlytics/android/E;->t:Lcom/crashlytics/android/QueueFile; │ - │ - const-string v12, "There was a problem closing the Crashlytics log file." │ - │ - invoke-static {v11, v12}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 1424 │ - const/4 v11, 0x0 │ - │ - move-object/from16 v0, p0 │ - │ - iput-object v11, v0, Lcom/crashlytics/android/E;->t:Lcom/crashlytics/android/QueueFile; │ - │ - .line 1426 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v11 │ - │ - const-string v12, "com.crashlytics.CollectCustomKeys" │ - │ - const/16 v16, 0x1 │ - │ - move/from16 v0, v16 │ - │ - invoke-static {v11, v12, v0}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ - │ - move-result v11 │ - │ - if-nez v11, :cond_7 │ - │ - .line 1428 │ - new-instance v11, Ljava/util/TreeMap; │ - │ - invoke-direct {v11}, Ljava/util/TreeMap;->()V │ - │ - .line 1439 │ - :goto_1 │ - const/16 v12, 0xa │ - │ - const/16 v16, 0x2 │ - │ - move-object/from16 v0, p1 │ - │ - move/from16 v1, v16 │ - │ - invoke-virtual {v0, v12, v1}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1440 │ - const/4 v12, 0x1 │ - │ - invoke-static {v12, v14, v15}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v12 │ - │ - add-int/lit8 v12, v12, 0x0 │ - │ - const/16 v16, 0x2 │ - │ - invoke-static/range {p4 .. p4}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v17 │ - │ - invoke-static/range {v16 .. v17}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v16 │ - │ - add-int v12, v12, v16 │ - │ - move-object/from16 v0, p0 │ - │ - move-object/from16 v1, p2 │ - │ - move-object/from16 v2, p3 │ - │ - invoke-direct {v0, v1, v2, v11}, Lcom/crashlytics/android/E;->a(Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/util/Map;)I │ - │ - move-result v16 │ - │ - const/16 v17, 0x3 │ - │ - invoke-static/range {v17 .. v17}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v17 │ - │ - invoke-static/range {v16 .. v16}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v18 │ - │ - add-int v17, v17, v18 │ - │ - add-int v16, v16, v17 │ - │ - add-int v12, v12, v16 │ - │ - invoke-static/range {v3 .. v10}, Lcom/crashlytics/android/E;->a(FIZIJJ)I │ - │ - move-result v16 │ - │ - const/16 v17, 0x5 │ - │ - invoke-static/range {v17 .. v17}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v17 │ - │ - invoke-static/range {v16 .. v16}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v18 │ - │ - add-int v17, v17, v18 │ - │ - add-int v16, v16, v17 │ - │ - add-int v12, v12, v16 │ - │ - if-eqz v13, :cond_3 │ - │ - const/16 v16, 0x1 │ - │ - move/from16 v0, v16 │ - │ - invoke-static {v0, v13}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v16 │ - │ - const/16 v17, 0x6 │ - │ - invoke-static/range {v17 .. v17}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v17 │ - │ - invoke-static/range {v16 .. v16}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v18 │ - │ - add-int v17, v17, v18 │ - │ - add-int v16, v16, v17 │ - │ - add-int v12, v12, v16 │ - │ - :cond_3 │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v12}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1443 │ - const/4 v12, 0x1 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v12, v14, v15}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1444 │ - const/4 v12, 0x2 │ - │ - invoke-static/range {p4 .. p4}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v14 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v12, v14}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1446 │ - const/4 v12, 0x3 │ - │ - const/4 v14, 0x2 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v12, v14}, Lcom/crashlytics/android/p;->g(II)V │ - │ - move-object/from16 v0, p0 │ - │ - move-object/from16 v1, p2 │ - │ - move-object/from16 v2, p3 │ - │ - invoke-direct {v0, v1, v2, v11}, Lcom/crashlytics/android/E;->a(Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/util/Map;)I │ - │ - move-result v12 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v12}, Lcom/crashlytics/android/p;->b(I)V │ - │ - invoke-direct/range {p0 .. p3}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - if-eqz v11, :cond_4 │ - │ - invoke-interface {v11}, Ljava/util/Map;->isEmpty()Z │ - │ - move-result v12 │ - │ - if-nez v12, :cond_4 │ - │ - move-object/from16 v0, p0 │ - │ - move-object/from16 v1, p1 │ - │ - invoke-direct {v0, v1, v11}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/util/Map;)V │ - │ - :cond_4 │ - move-object/from16 v0, p0 │ - │ - iget-object v11, v0, Lcom/crashlytics/android/E;->s:Landroid/app/ActivityManager$RunningAppProcessInfo; │ - │ - if-eqz v11, :cond_5 │ - │ - const/4 v12, 0x3 │ - │ - move-object/from16 v0, p0 │ - │ - iget-object v11, v0, Lcom/crashlytics/android/E;->s:Landroid/app/ActivityManager$RunningAppProcessInfo; │ - │ - iget v11, v11, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I │ - │ - const/16 v14, 0x64 │ - │ - if-eq v11, v14, :cond_8 │ - │ - const/4 v11, 0x1 │ - │ - :goto_2 │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v12, v11}, Lcom/crashlytics/android/p;->a(IZ)V │ - │ - :cond_5 │ - const/4 v11, 0x4 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v12 │ - │ - invoke-virtual {v12}, Landroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; │ - │ - move-result-object v12 │ - │ - invoke-virtual {v12}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; │ - │ - move-result-object v12 │ - │ - iget v12, v12, Landroid/content/res/Configuration;->orientation:I │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v11, v12}, Lcom/crashlytics/android/p;->a(II)V │ - │ - .line 1447 │ - const/4 v11, 0x5 │ - │ - const/4 v12, 0x2 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v11, v12}, Lcom/crashlytics/android/p;->g(II)V │ - │ - invoke-static/range {v3 .. v10}, Lcom/crashlytics/android/E;->a(FIZIJJ)I │ - │ - move-result v11 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v11}, Lcom/crashlytics/android/p;->b(I)V │ - │ - const/4 v11, 0x1 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v11, v3}, Lcom/crashlytics/android/p;->a(IF)V │ - │ - const/4 v3, 0x2 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3, v4}, Lcom/crashlytics/android/p;->c(II)V │ - │ - const/4 v3, 0x3 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3, v5}, Lcom/crashlytics/android/p;->a(IZ)V │ - │ - const/4 v3, 0x4 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3, v6}, Lcom/crashlytics/android/p;->a(II)V │ - │ - const/4 v3, 0x5 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3, v7, v8}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - const/4 v3, 0x6 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3, v9, v10}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1449 │ - if-eqz v13, :cond_6 │ - │ - const/4 v3, 0x6 │ - │ - const/4 v4, 0x2 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3, v4}, Lcom/crashlytics/android/p;->g(II)V │ - │ - const/4 v3, 0x1 │ - │ - invoke-static {v3, v13}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v3 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3}, Lcom/crashlytics/android/p;->b(I)V │ - │ - const/4 v3, 0x1 │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v0, v3, v13}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1450 │ - :cond_6 │ - return-void │ - │ - .line 1430 │ - :cond_7 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v11 │ - │ - invoke-virtual {v11}, Lcom/crashlytics/android/Crashlytics;->a()Ljava/util/Map; │ - │ - move-result-object v12 │ - │ - .line 1431 │ - if-eqz v12, :cond_9 │ - │ - invoke-interface {v12}, Ljava/util/Map;->size()I │ - │ - move-result v11 │ - │ - const/16 v16, 0x1 │ - │ - move/from16 v0, v16 │ - │ - if-le v11, v0, :cond_9 │ - │ - .line 1435 │ - new-instance v11, Ljava/util/TreeMap; │ - │ - invoke-direct {v11, v12}, Ljava/util/TreeMap;->(Ljava/util/Map;)V │ - │ - goto/16 :goto_1 │ - │ - .line 1446 │ - :cond_8 │ - const/4 v11, 0x0 │ - │ - goto/16 :goto_2 │ - │ - :cond_9 │ - move-object v11, v12 │ - │ - goto/16 :goto_1 │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)V │ - .locals 4 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v2, 0x2 │ - │ - const/4 v1, 0x1 │ - │ - .line 1582 │ - invoke-virtual {p1, v1, v2}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1583 │ - invoke-direct {p0, p2, p3, p4, p5}, Lcom/crashlytics/android/E;->a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ - │ - move-result v0 │ - │ - .line 1584 │ - invoke-virtual {p1, v0}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1585 │ - invoke-virtual {p2}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1, v1, v0}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1586 │ - invoke-virtual {p1, v2, p4}, Lcom/crashlytics/android/p;->a(II)V │ - │ - .line 1588 │ - array-length v1, p3 │ - │ - .line 1589 │ - const/4 v0, 0x0 │ - │ - :goto_0 │ - if-ge v0, v1, :cond_0 │ - │ - .line 1590 │ - const/4 v2, 0x3 │ - │ - aget-object v3, p3, v0 │ - │ - invoke-direct {p0, p1, v2, v3, p5}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;ILjava/lang/StackTraceElement;Z)V │ - │ - .line 1589 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_0 │ - │ - .line 1592 │ - :cond_0 │ - return-void │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;Ljava/lang/Throwable;II)V │ - .locals 7 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v0, 0x0 │ - │ - const/4 v6, 0x1 │ - │ - .line 1533 │ - const/4 v1, 0x2 │ - │ - invoke-virtual {p1, p4, v1}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1534 │ - invoke-direct {p0, p2, v6}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;I)I │ - │ - move-result v1 │ - │ - invoke-virtual {p1, v1}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1536 │ - invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/Class;->getName()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - invoke-virtual {p1, v6, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1537 │ - invoke-virtual {p2}, Ljava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - .line 1538 │ - if-eqz v1, :cond_0 │ - │ - .line 1539 │ - const/4 v2, 0x3 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - invoke-virtual {p1, v2, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1542 │ - :cond_0 │ - invoke-virtual {p2}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ - │ - move-result-object v2 │ - │ - array-length v3, v2 │ - │ - move v1, v0 │ - │ - :goto_0 │ - if-ge v1, v3, :cond_1 │ - │ - aget-object v4, v2, v1 │ - │ - .line 1543 │ - const/4 v5, 0x4 │ - │ - invoke-direct {p0, p1, v5, v4, v6}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;ILjava/lang/StackTraceElement;Z)V │ - │ - .line 1542 │ - add-int/lit8 v1, v1, 0x1 │ - │ - goto :goto_0 │ - │ - .line 1546 │ - :cond_1 │ - invoke-virtual {p2}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ - │ - move-result-object v1 │ - │ - .line 1547 │ - if-eqz v1, :cond_2 │ - │ - .line 1548 │ - const/16 v2, 0x8 │ - │ - if-ge p3, v2, :cond_3 │ - │ - .line 1549 │ - add-int/lit8 v0, p3, 0x1 │ - │ - const/4 v2, 0x6 │ - │ - invoke-direct {p0, p1, v1, v0, v2}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/Throwable;II)V │ - │ - .line 1561 │ - :cond_2 │ - :goto_1 │ - return-void │ - │ - .line 1554 │ - :cond_3 │ - :goto_2 │ - if-eqz v1, :cond_4 │ - │ - .line 1555 │ - invoke-virtual {v1}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ - │ - move-result-object v1 │ - │ - .line 1556 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_2 │ - │ - .line 1558 │ - :cond_4 │ - const/4 v1, 0x7 │ - │ - invoke-virtual {p1, v1, v0}, Lcom/crashlytics/android/p;->a(II)V │ - │ - goto :goto_1 │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;Ljava/util/Map;)V │ - .locals 5 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Lcom/crashlytics/android/p;", │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;)V" │ - } │ - .end annotation │ - │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - const/4 v4, 0x2 │ - │ - .line 1508 │ - invoke-interface {p2}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v0 │ - │ - invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v3 │ - │ - :goto_0 │ - invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ - │ - invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - check-cast v0, Ljava/util/Map$Entry; │ - │ - .line 1509 │ - invoke-virtual {p1, v4, v4}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1510 │ - invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Ljava/lang/String; │ - │ - invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v2 │ - │ - check-cast v2, Ljava/lang/String; │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/E;->a(Ljava/lang/String;Ljava/lang/String;)I │ - │ - move-result v1 │ - │ - invoke-virtual {p1, v1}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1512 │ - const/4 v2, 0x1 │ - │ - invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Ljava/lang/String; │ - │ - invoke-static {v1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - invoke-virtual {p1, v2, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1513 │ - invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - check-cast v0, Ljava/lang/String; │ - │ - .line 1514 │ - if-nez v0, :cond_0 │ - │ - const-string v0, "" │ - │ - :cond_0 │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1, v4, v0}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - goto :goto_0 │ - │ - .line 1516 │ - :cond_1 │ - return-void │ -.end method │ - │ -.method private a(Lcom/crashlytics/android/p;[Ljava/io/File;Ljava/lang/String;)V │ - .locals 7 │ - │ - .prologue │ - const/4 v0, 0x0 │ - │ - .line 831 │ - sget-object v1, Lcom/crashlytics/android/aB;->a:Ljava/util/Comparator; │ - │ - invoke-static {p2, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ - │ - .line 833 │ - array-length v2, p2 │ - │ - move v1, v0 │ - │ - :goto_0 │ - if-ge v1, v2, :cond_0 │ - │ - aget-object v0, p2, v1 │ - │ - .line 835 │ - :try_start_0 │ - const-string v3, "Found Non Fatal for session ID %s in %s " │ - │ - const/4 v4, 0x2 │ - │ - new-array v4, v4, [Ljava/lang/Object; │ - │ - const/4 v5, 0x0 │ - │ - aput-object p3, v4, v5 │ - │ - const/4 v5, 0x1 │ - │ - invoke-virtual {v0}, Ljava/io/File;->getName()Ljava/lang/String; │ - │ - move-result-object v6 │ - │ - aput-object v6, v4, v5 │ - │ - invoke-static {v3, v4}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 836 │ - invoke-static {p1, v0}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/io/File;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 833 │ - :goto_1 │ - add-int/lit8 v0, v1, 0x1 │ - │ - move v1, v0 │ - │ - goto :goto_0 │ - │ - .line 837 │ - :catch_0 │ - move-exception v0 │ - │ - .line 838 │ - const-string v3, "Error writting non-fatal to session." │ - │ - invoke-static {v3, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_1 │ - │ - .line 841 │ - :cond_0 │ - return-void │ -.end method │ - │ -.method private a(Ljava/lang/String;)V │ - .locals 4 │ - │ - .prologue │ - .line 862 │ - new-instance v0, Lcom/crashlytics/android/Y; │ - │ - invoke-direct {v0, p1}, Lcom/crashlytics/android/Y;->(Ljava/lang/String;)V │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v1 │ - │ - array-length v2, v1 │ - │ - const/4 v0, 0x0 │ - │ - :goto_0 │ - if-ge v0, v2, :cond_0 │ - │ - aget-object v3, v1, v0 │ - │ - .line 863 │ - invoke-virtual {v3}, Ljava/io/File;->delete()Z │ - │ - .line 862 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_0 │ - │ - .line 865 │ - :cond_0 │ - return-void │ -.end method │ - │ -.method private a(Ljava/lang/String;I)V │ - .locals 4 │ - │ - .prologue │ - .line 1338 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - new-instance v1, Lcom/crashlytics/android/X; │ - │ - new-instance v2, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - const-string v3, "SessionEvent" │ - │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-direct {v1, v2}, Lcom/crashlytics/android/X;->(Ljava/lang/String;)V │ - │ - sget-object v2, Lcom/crashlytics/android/E;->c:Ljava/util/Comparator; │ - │ - invoke-static {v0, v1, p2, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/File;Ljava/io/FilenameFilter;ILjava/util/Comparator;)V │ - │ - .line 1340 │ - return-void │ -.end method │ - │ -.method private a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - .locals 3 │ - │ - .prologue │ - .line 1052 │ - if-eqz p2, :cond_0 │ - │ - .line 1053 │ - const/4 v2, 0x0 │ - │ - :try_start_0 │ - new-instance v1, Ljava/io/PrintWriter; │ - │ - invoke-direct {v1, p2}, Ljava/io/PrintWriter;->(Ljava/io/OutputStream;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - :try_start_1 │ - invoke-static {p1, v1}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/Writer;)V │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - const-string v0, "Failed to close stack trace writer." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 1055 │ - :cond_0 │ - :goto_0 │ - return-void │ - │ - .line 1053 │ - :catch_0 │ - move-exception v0 │ - │ - move-object v1, v2 │ - │ - :goto_1 │ - :try_start_2 │ - const-string v2, "Failed to create PrintWriter" │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_2 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ - │ - const-string v0, "Failed to close stack trace writer." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - goto :goto_0 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - move-object v1, v2 │ - │ - :goto_2 │ - const-string v2, "Failed to close stack trace writer." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - :catchall_1 │ - move-exception v0 │ - │ - goto :goto_2 │ - │ - :catch_1 │ - move-exception v0 │ - │ - goto :goto_1 │ -.end method │ - │ -.method private static a(Ljava/lang/Throwable;Ljava/io/Writer;)V │ - .locals 7 │ - │ - .prologue │ - const/4 v1, 0x0 │ - │ - .line 1085 │ - const/4 v0, 0x1 │ - │ - move v3, v0 │ - │ - .line 1087 │ - :goto_0 │ - if-eqz p0, :cond_4 │ - │ - .line 1088 │ - :try_start_0 │ - invoke-virtual {p0}, Ljava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - if-nez v0, :cond_0 │ - │ - const/4 v0, 0x0 │ - │ - .line 1089 │ - :goto_1 │ - if-eqz v0, :cond_1 │ - │ - move-object v2, v0 │ - │ - .line 1091 │ - :goto_2 │ - if-eqz v3, :cond_2 │ - │ - const-string v0, "" │ - │ - .line 1092 │ - :goto_3 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v3, ": " │ - │ - invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v2, "\n" │ - │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1, v0}, Ljava/io/Writer;->write(Ljava/lang/String;)V │ - │ - .line 1096 │ - invoke-virtual {p0}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ - │ - move-result-object v2 │ - │ - array-length v3, v2 │ - │ - move v0, v1 │ - │ - :goto_4 │ - if-ge v0, v3, :cond_3 │ - │ - aget-object v4, v2, v0 │ - │ - .line 1097 │ - new-instance v5, Ljava/lang/StringBuilder; │ - │ - const-string v6, "\tat " │ - │ - invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v4}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - const-string v5, "\n" │ - │ - invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-virtual {p1, v4}, Ljava/io/Writer;->write(Ljava/lang/String;)V │ - │ - .line 1096 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_4 │ - │ - .line 1088 │ - :cond_0 │ - const-string v2, "(\r\n|\n|\u000c)" │ - │ - const-string v4, " " │ - │ - invoke-virtual {v0, v2, v4}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - goto :goto_1 │ - │ - .line 1089 │ - :cond_1 │ - const-string v0, "" │ - │ - move-object v2, v0 │ - │ - goto :goto_2 │ - │ - .line 1091 │ - :cond_2 │ - const-string v0, "Caused by: " │ - │ - goto :goto_3 │ - │ - .line 1100 │ - :cond_3 │ - invoke-virtual {p0}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - move-result-object p0 │ - │ - move v3, v1 │ - │ - .line 1101 │ - goto :goto_0 │ - │ - .line 1102 │ - :catch_0 │ - move-exception v0 │ - │ - .line 1103 │ - const-string v1, "Could not write stack trace" │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - .line 1105 │ - :cond_4 │ - return-void │ -.end method │ - │ -.method static synthetic a(Lcom/crashlytics/android/E;Z)Z │ - .locals 0 │ - │ - .prologue │ - .line 62 │ - iput-boolean p1, p0, Lcom/crashlytics/android/E;->u:Z │ - │ - return p1 │ -.end method │ - │ -.method static synthetic a(Lcom/crashlytics/android/E;Ljava/io/FilenameFilter;)[Ljava/io/File; │ - .locals 1 │ - │ - .prologue │ - .line 62 │ - invoke-direct {p0, p1}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v0 │ - │ - return-object v0 │ -.end method │ - │ -.method private a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - .locals 1 │ - │ - .prologue │ - .line 890 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - invoke-virtual {v0, p1}, Ljava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v0 │ - │ - if-nez v0, :cond_0 │ - │ - const/4 v0, 0x0 │ - │ - new-array v0, v0, [Ljava/io/File; │ - │ - :cond_0 │ - return-object v0 │ -.end method │ - │ -.method private b(Ljava/lang/Thread;Ljava/lang/Throwable;)I │ - .locals 9 │ - │ - .prologue │ - const/4 v8, 0x3 │ - │ - const/4 v2, 0x0 │ - │ - const/4 v7, 0x1 │ - │ - .line 1727 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->x:[Ljava/lang/StackTraceElement; │ - │ - const/4 v1, 0x4 │ - │ - invoke-direct {p0, p1, v0, v1, v7}, Lcom/crashlytics/android/E;->a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ - │ - move-result v0 │ - │ - .line 1730 │ - invoke-static {v7}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v1 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v3 │ - │ - add-int/2addr v1, v3 │ - │ - add-int/2addr v0, v1 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1732 │ - iget-object v1, p0, Lcom/crashlytics/android/E;->v:[Ljava/lang/Thread; │ - │ - array-length v4, v1 │ - │ - move v1, v2 │ - │ - move v3, v0 │ - │ - .line 1733 │ - :goto_0 │ - if-ge v1, v4, :cond_0 │ - │ - .line 1734 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->v:[Ljava/lang/Thread; │ - │ - aget-object v5, v0, v1 │ - │ - .line 1735 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->w:Ljava/util/List; │ - │ - invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - check-cast v0, [Ljava/lang/StackTraceElement; │ - │ - invoke-direct {p0, v5, v0, v2, v2}, Lcom/crashlytics/android/E;->a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ - │ - move-result v0 │ - │ - .line 1736 │ - invoke-static {v7}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v5 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v6 │ - │ - add-int/2addr v5, v6 │ - │ - add-int/2addr v0, v5 │ - │ - add-int/2addr v3, v0 │ - │ - .line 1733 │ - add-int/lit8 v0, v1, 0x1 │ - │ - move v1, v0 │ - │ - goto :goto_0 │ - │ - .line 1740 │ - :cond_0 │ - invoke-direct {p0, p2, v7}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;I)I │ - │ - move-result v0 │ - │ - .line 1741 │ - const/4 v1, 0x2 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v1 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v2 │ - │ - add-int/2addr v1, v2 │ - │ - add-int/2addr v0, v1 │ - │ - add-int/2addr v0, v3 │ - │ - .line 1744 │ - invoke-static {}, Lcom/crashlytics/android/E;->p()I │ - │ - move-result v1 │ - │ - .line 1745 │ - invoke-static {v8}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v2 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v3 │ - │ - add-int/2addr v2, v3 │ - │ - add-int/2addr v1, v2 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1747 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->o()I │ - │ - move-result v1 │ - │ - .line 1748 │ - invoke-static {v8}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v2 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v3 │ - │ - add-int/2addr v2, v3 │ - │ - add-int/2addr v1, v2 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1751 │ - return v0 │ -.end method │ - │ -.method private static b(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - .locals 1 │ - │ - .prologue │ - .line 1194 │ - if-nez p0, :cond_0 │ - │ - const/4 v0, 0x0 │ - │ - :goto_0 │ - return-object v0 │ - │ - :cond_0 │ - invoke-static {p0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - goto :goto_0 │ -.end method │ - │ -.method private b(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ - .locals 2 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Ljava/util/concurrent/Callable", │ - ";)", │ - "Ljava/util/concurrent/Future", │ - ";" │ - } │ - .end annotation │ - │ - .prologue │ - .line 1991 │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->r:Ljava/util/concurrent/ExecutorService; │ - │ - new-instance v1, Lcom/crashlytics/android/N; │ - │ - invoke-direct {v1, p0, p1}, Lcom/crashlytics/android/N;->(Lcom/crashlytics/android/E;Ljava/util/concurrent/Callable;)V │ - │ - invoke-interface {v0, v1}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ - :try_end_0 │ - .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - move-result-object v0 │ - │ - .line 2004 │ - :goto_0 │ - return-object v0 │ - │ - .line 2003 │ - :catch_0 │ - move-exception v0 │ - │ - const-string v0, "Executor is shut down because we\'re handling a fatal crash." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 2004 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ -.end method │ - │ -.method static synthetic b(Lcom/crashlytics/android/E;)V │ +.method constructor (Lcom/crashlytics/android/v;)V │ .locals 0 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ │ .prologue │ - .line 62 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->i()V │ - │ - return-void │ -.end method │ - │ -.method static synthetic b(Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - .locals 8 │ - │ - .prologue │ - const/4 v1, 0x0 │ - │ - .line 62 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->j()Ljava/lang/String; │ - │ - move-result-object v7 │ - │ - if-eqz v7, :cond_0 │ - │ - :try_start_0 │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Crashlytics is logging non-fatal exception \"" │ - │ - invoke-direct {v0, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v2, "\" from thread " │ - │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p2}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - iget-object v0, p0, Lcom/crashlytics/android/E;->g:Ljava/util/concurrent/atomic/AtomicInteger; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->getAndIncrement()I │ - │ - move-result v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->b(I)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - new-instance v2, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - const-string v3, "SessionEvent" │ - │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - new-instance v6, Lcom/crashlytics/android/n; │ - │ - iget-object v2, p0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - invoke-direct {v6, v2, v0}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - :try_start_1 │ - invoke-static {v6}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - │ - move-result-object v1 │ - │ - const-string v4, "error" │ - │ - const/4 v5, 0x0 │ - │ - move-object v0, p0 │ - │ - move-object v2, p2 │ - │ - move-object v3, p3 │ - │ - invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/lang/String;Z)V │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_2 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - const-string v0, "Failed to flush to non-fatal file." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v0, "Failed to close non-fatal file output stream." │ - │ - invoke-static {v6, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - :goto_0 │ - const/16 v0, 0x40 │ - │ - :try_start_2 │ - invoke-direct {p0, v7, v0}, Lcom/crashlytics/android/E;->a(Ljava/lang/String;I)V │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_1 │ - │ - :goto_1 │ - return-void │ - │ - :catch_0 │ - move-exception v0 │ - │ - move-object v2, v1 │ - │ - :goto_2 │ - :try_start_3 │ - const-string v3, "An error occurred in the non-fatal exception logger" │ - │ - invoke-static {v3, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - invoke-direct {p0, v0, v2}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_2 │ - │ - const-string v0, "Failed to flush to non-fatal file." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v0, "Failed to close non-fatal file output stream." │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - goto :goto_0 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - move-object v6, v1 │ - │ - :goto_3 │ - const-string v2, "Failed to flush to non-fatal file." │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close non-fatal file output stream." │ - │ - invoke-static {v6, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - :catch_1 │ - move-exception v0 │ - │ - const-string v1, "An error occurred when trimming non-fatal files." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_1 │ - │ - :cond_0 │ - const-string v0, "Tried to write a non-fatal exception while no session was open." │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_1 │ - │ - :catchall_1 │ - move-exception v0 │ - │ - goto :goto_3 │ - │ - :catchall_2 │ - move-exception v0 │ - │ - move-object v6, v2 │ - │ - goto :goto_3 │ - │ - :catch_2 │ - move-exception v0 │ - │ - move-object v2, v6 │ - │ - goto :goto_2 │ -.end method │ - │ -.method static synthetic c(Lcom/crashlytics/android/E;)V │ - .locals 0 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 62 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->h()V │ - │ - return-void │ -.end method │ - │ -.method private c(Ljava/lang/String;)V │ - .locals 18 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 1201 │ - const/4 v3, 0x0 │ - │ - .line 1202 │ - const/4 v2, 0x0 │ - │ - .line 1204 │ - :try_start_0 │ - new-instance v16, Lcom/crashlytics/android/n; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v1 │ - │ - new-instance v4, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v4}, Ljava/lang/StringBuilder;->()V │ - │ - move-object/from16 v0, p1 │ - │ - invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - const-string v5, "SessionDevice" │ - │ - invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - move-object/from16 v0, v16 │ - │ - invoke-direct {v0, v1, v4}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_1 │ - │ - .line 1205 │ - :try_start_1 │ - invoke-static/range {v16 .. v16}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_2 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_2 │ - │ - move-result-object v15 │ - │ - .line 1207 │ - :try_start_2 │ - new-instance v1, Landroid/os/StatFs; │ - │ - invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/io/File;->getPath()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-direct {v1, v2}, Landroid/os/StatFs;->(Ljava/lang/String;)V │ - │ - .line 1209 │ - invoke-static {}, Lcom/crashlytics/android/aB;->b()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - const-string v3, "ARMV7" │ - │ - invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ - │ - move-result v3 │ - │ - if-eqz v3, :cond_0 │ - │ - const/4 v2, 0x6 │ - │ - .line 1211 │ - :goto_0 │ - sget-object v3, Landroid/os/Build;->MODEL:Ljava/lang/String; │ - │ - invoke-static {v3}, Lcom/crashlytics/android/E;->b(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v4 │ - │ - .line 1212 │ - sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String; │ - │ - invoke-static {v3}, Lcom/crashlytics/android/E;->b(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v13 │ - │ - .line 1213 │ - sget-object v3, Landroid/os/Build;->PRODUCT:Ljava/lang/String; │ - │ - invoke-static {v3}, Lcom/crashlytics/android/E;->b(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v14 │ - │ - .line 1215 │ - invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Ljava/lang/Runtime;->availableProcessors()I │ - │ - move-result v5 │ - │ - .line 1216 │ - invoke-static {}, Lcom/crashlytics/android/aB;->c()J │ - │ - move-result-wide v6 │ - │ - .line 1217 │ - invoke-virtual {v1}, Landroid/os/StatFs;->getBlockCount()I │ - │ - move-result v3 │ - │ - int-to-long v8, v3 │ - │ - invoke-virtual {v1}, Landroid/os/StatFs;->getBlockSize()I │ - │ - move-result v1 │ - │ - int-to-long v10, v1 │ - │ - mul-long/2addr v8, v10 │ - │ - .line 1218 │ - invoke-static {}, Lcom/crashlytics/android/aB;->d()Z │ - │ - move-result v10 │ - │ - .line 1220 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->c()Lcom/crashlytics/android/IdManager; │ - │ - move-result-object v1 │ - │ - .line 1221 │ - invoke-virtual {v1}, Lcom/crashlytics/android/IdManager;->e()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v3 │ - │ - .line 1223 │ - invoke-virtual {v1}, Lcom/crashlytics/android/IdManager;->f()Ljava/util/Map; │ - │ - move-result-object v11 │ - │ - .line 1225 │ - invoke-static {}, Lcom/crashlytics/android/aB;->f()I │ - │ - move-result v12 │ - │ - .line 1227 │ - const/16 v1, 0x9 │ - │ - const/16 v17, 0x2 │ - │ - move/from16 v0, v17 │ - │ - invoke-virtual {v15, v1, v0}, Lcom/crashlytics/android/p;->g(II)V │ - │ - move-object/from16 v1, p0 │ - │ - .line 1229 │ - invoke-direct/range {v1 .. v14}, Lcom/crashlytics/android/E;->a(ILcom/crashlytics/android/k;Lcom/crashlytics/android/k;IJJZLjava/util/Map;ILcom/crashlytics/android/k;Lcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - invoke-virtual {v15, v1}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1232 │ - const/4 v1, 0x1 │ - │ - invoke-virtual {v15, v1, v3}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1234 │ - const/4 v1, 0x3 │ - │ - invoke-virtual {v15, v1, v2}, Lcom/crashlytics/android/p;->b(II)V │ - │ - .line 1235 │ - const/4 v1, 0x4 │ - │ - invoke-virtual {v15, v1, v4}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1236 │ - const/4 v1, 0x5 │ - │ - invoke-virtual {v15, v1, v5}, Lcom/crashlytics/android/p;->a(II)V │ - │ - .line 1237 │ - const/4 v1, 0x6 │ - │ - invoke-virtual {v15, v1, v6, v7}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1238 │ - const/4 v1, 0x7 │ - │ - invoke-virtual {v15, v1, v8, v9}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - .line 1239 │ - const/16 v1, 0xa │ - │ - invoke-virtual {v15, v1, v10}, Lcom/crashlytics/android/p;->a(IZ)V │ - │ - .line 1241 │ - invoke-interface {v11}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v1 │ - │ - invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v4 │ - │ - :goto_1 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v1 │ - │ - if-eqz v1, :cond_3 │ - │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - move-object v0, v1 │ - │ - check-cast v0, Ljava/util/Map$Entry; │ - │ - move-object v3, v0 │ - │ - .line 1242 │ - const/16 v1, 0xb │ - │ - const/4 v2, 0x2 │ - │ - invoke-virtual {v15, v1, v2}, Lcom/crashlytics/android/p;->g(II)V │ - │ - .line 1243 │ - invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Lcom/crashlytics/android/IdManager$DeviceIdentifierType; │ - │ - invoke-interface {v3}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v2 │ - │ - check-cast v2, Ljava/lang/String; │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/IdManager$DeviceIdentifierType;Ljava/lang/String;)I │ - │ - move-result v1 │ - │ - invoke-virtual {v15, v1}, Lcom/crashlytics/android/p;->b(I)V │ - │ - .line 1245 │ - const/4 v2, 0x1 │ - │ - invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Lcom/crashlytics/android/IdManager$DeviceIdentifierType; │ - │ - iget v1, v1, Lcom/crashlytics/android/IdManager$DeviceIdentifierType;->protobufIndex:I │ - │ - invoke-virtual {v15, v2, v1}, Lcom/crashlytics/android/p;->b(II)V │ - │ - .line 1246 │ - const/4 v2, 0x2 │ - │ - invoke-interface {v3}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Ljava/lang/String; │ - │ - invoke-static {v1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v15, v2, v1}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_3 │ - │ - goto :goto_1 │ - │ - .line 1256 │ - :catch_0 │ - move-exception v1 │ - │ - move-object v2, v15 │ - │ - move-object/from16 v3, v16 │ - │ - .line 1257 │ - :goto_2 │ - :try_start_3 │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v1, v3}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - │ - .line 1258 │ - throw v1 │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ - │ - .line 1260 │ - :catchall_0 │ - move-exception v1 │ - │ - move-object v15, v2 │ - │ - move-object/from16 v16, v3 │ - │ - :goto_3 │ - const-string v2, "Failed to flush session device info." │ - │ - invoke-static {v15, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - .line 1261 │ - const-string v2, "Failed to close session device file." │ - │ - move-object/from16 v0, v16 │ - │ - invoke-static {v0, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v1 │ - │ - .line 1209 │ - :cond_0 │ - :try_start_4 │ - const-string v3, "ARMV6" │ - │ - invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ - │ - move-result v3 │ - │ - if-eqz v3, :cond_1 │ - │ - const/4 v2, 0x5 │ - │ - goto/16 :goto_0 │ - │ - :cond_1 │ - const-string v3, "ARMV" │ - │ - invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ - │ - move-result v3 │ - │ - if-eqz v3, :cond_2 │ - │ - const/4 v2, 0x7 │ - │ - goto/16 :goto_0 │ - │ - :cond_2 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Unexpected non-ARM architecture type: " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-static {v2}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - const/4 v2, 0x7 │ - │ - goto/16 :goto_0 │ - │ - .line 1248 │ - :cond_3 │ - const/16 v1, 0xc │ - │ - invoke-virtual {v15, v1, v12}, Lcom/crashlytics/android/p;->a(II)V │ - │ - .line 1250 │ - if-eqz v13, :cond_4 │ - │ - .line 1251 │ - const/16 v1, 0xd │ - │ - invoke-virtual {v15, v1, v13}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - .line 1253 │ - :cond_4 │ - if-eqz v14, :cond_5 │ - │ - .line 1254 │ - const/16 v1, 0xe │ - │ - invoke-virtual {v15, v1, v14}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - :try_end_4 │ - .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_0 │ - .catchall {:try_start_4 .. :try_end_4} :catchall_3 │ - │ - .line 1260 │ - :cond_5 │ - const-string v1, "Failed to flush session device info." │ - │ - invoke-static {v15, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - .line 1261 │ - const-string v1, "Failed to close session device file." │ - │ - move-object/from16 v0, v16 │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 1262 │ - return-void │ - │ - .line 1260 │ - :catchall_1 │ - move-exception v1 │ - │ - move-object v15, v2 │ - │ - move-object/from16 v16, v3 │ - │ - goto :goto_3 │ - │ - :catchall_2 │ - move-exception v1 │ - │ - move-object v15, v2 │ - │ - goto :goto_3 │ - │ - :catchall_3 │ - move-exception v1 │ - │ - goto :goto_3 │ - │ - .line 1256 │ - :catch_1 │ - move-exception v1 │ - │ - goto :goto_2 │ - │ - :catch_2 │ - move-exception v1 │ - │ - move-object/from16 v3, v16 │ - │ - goto :goto_2 │ -.end method │ - │ -.method static synthetic d(Lcom/crashlytics/android/E;)Lcom/crashlytics/android/QueueFile; │ - .locals 1 │ - │ - .prologue │ - .line 62 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->t:Lcom/crashlytics/android/QueueFile; │ - │ - return-object v0 │ -.end method │ - │ -.method static synthetic e()Ljava/util/regex/Pattern; │ - .locals 1 │ - │ - .prologue │ - .line 62 │ - sget-object v0, Lcom/crashlytics/android/E;->d:Ljava/util/regex/Pattern; │ - │ - return-object v0 │ -.end method │ - │ -.method static synthetic e(Lcom/crashlytics/android/E;)Z │ - .locals 1 │ - │ - .prologue │ - .line 62 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->g()Z │ - │ - move-result v0 │ - │ - return v0 │ -.end method │ - │ -.method static synthetic f()Ljava/util/Map; │ - .locals 1 │ - │ - .prologue │ - .line 62 │ - sget-object v0, Lcom/crashlytics/android/E;->e:Ljava/util/Map; │ - │ - return-object v0 │ -.end method │ - │ -.method private g()Z │ - .locals 6 │ - │ - .prologue │ - const/4 v1, 0x1 │ - │ - const/4 v0, 0x0 │ - │ - .line 559 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v2 │ - │ - const-string v3, "com.crashlytics.CollectCustomLogs" │ - │ - invoke-static {v2, v3, v1}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ - │ - move-result v2 │ - │ - .line 562 │ - if-nez v2, :cond_0 │ - │ - .line 563 │ - const-string v1, "Preferences requested not to collect custom logs. Aborting log file creation." │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 590 │ - :goto_0 │ - return v0 │ - │ - .line 568 │ - :cond_0 │ - iget-object v2, p0, Lcom/crashlytics/android/E;->t:Lcom/crashlytics/android/QueueFile; │ - │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Could not close log file: " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - iget-object v4, p0, Lcom/crashlytics/android/E;->t:Lcom/crashlytics/android/QueueFile; │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v2, v3}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 570 │ - const/4 v3, 0x0 │ - │ - .line 581 │ - :try_start_0 │ - new-instance v2, Ljava/lang/StringBuilder; │ - │ - const-string v4, "crashlytics-userlog-" │ - │ - invoke-direct {v2, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Ljava/util/UUID;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - const-string v4, ".temp" │ - │ - invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - .line 582 │ - new-instance v2, Ljava/io/File; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v5}, Landroid/content/ContextWrapper;->getFilesDir()Ljava/io/File; │ - │ - move-result-object v5 │ - │ - invoke-direct {v2, v5, v4}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 583 │ - :try_start_1 │ - new-instance v3, Lcom/crashlytics/android/QueueFile; │ - │ - invoke-direct {v3, v2}, Lcom/crashlytics/android/QueueFile;->(Ljava/io/File;)V │ - │ - iput-object v3, p0, Lcom/crashlytics/android/E;->t:Lcom/crashlytics/android/QueueFile; │ - │ - .line 584 │ - invoke-virtual {v2}, Ljava/io/File;->delete()Z │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ - │ - move v0, v1 │ - │ - .line 590 │ - goto :goto_0 │ - │ - .line 585 │ - :catch_0 │ - move-exception v1 │ - │ - move-object v2, v3 │ - │ - .line 586 │ - :goto_1 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Could not create log file: " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ - │ - .line 585 │ - :catch_1 │ - move-exception v1 │ - │ - goto :goto_1 │ -.end method │ - │ -.method private h()V │ - .locals 14 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 664 │ - new-instance v0, Ljava/util/Date; │ - │ - invoke-direct {v0}, Ljava/util/Date;->()V │ - │ - .line 665 │ - new-instance v1, Lcom/crashlytics/android/l; │ - │ - invoke-direct {v1}, Lcom/crashlytics/android/l;->()V │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/l;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - .line 667 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Opening an new session with ID " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 669 │ - const/4 v3, 0x0 │ - │ - const/4 v1, 0x0 │ - │ - :try_start_0 │ - new-instance v2, Lcom/crashlytics/android/n; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v5 │ - │ - new-instance v6, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v6}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v6 │ - │ - const-string v7, "BeginSession" │ - │ - invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v6 │ - │ - invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v6 │ - │ - invoke-direct {v2, v5, v6}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_5 │ - │ - :try_start_1 │ - invoke-static {v2}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - │ - move-result-object v1 │ - │ - const/4 v3, 0x1 │ - │ - iget-object v5, p0, Lcom/crashlytics/android/E;->m:Ljava/lang/String; │ - │ - invoke-static {v5}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v1, v3, v5}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v3, 0x2 │ - │ - invoke-static {v4}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v1, v3, v5}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v3, 0x3 │ - │ - invoke-virtual {v0}, Ljava/util/Date;->getTime()J │ - │ - move-result-wide v5 │ - │ - const-wide/16 v7, 0x3e8 │ - │ - div-long/2addr v5, v7 │ - │ - invoke-virtual {v1, v3, v5, v6}, Lcom/crashlytics/android/p;->a(IJ)V │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_5 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ - │ - const-string v0, "Failed to flush to session begin file." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v0, "Failed to close begin session file." │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 670 │ - const/4 v3, 0x0 │ - │ - const/4 v1, 0x0 │ - │ - :try_start_2 │ - new-instance v2, Lcom/crashlytics/android/n; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v0 │ - │ - new-instance v5, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v5 │ - │ - const-string v6, "SessionApp" │ - │ - invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-direct {v2, v0, v5}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_1 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_4 │ - │ - :try_start_3 │ - invoke-static {v2}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - │ - move-result-object v1 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->e()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->h()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v3 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->g()Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-static {v5}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v5 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->k()Ljava/lang/String; │ - │ - move-result-object v6 │ - │ - invoke-static {v6}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v6 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v7 │ - │ - invoke-virtual {v7}, Landroid/content/ContextWrapper;->getPackageCodePath()Ljava/lang/String; │ - │ - move-result-object v7 │ - │ - invoke-static {v7}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v7 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v8 │ - │ - invoke-virtual {v8}, Lcom/crashlytics/android/Crashlytics;->c()Lcom/crashlytics/android/IdManager; │ - │ - move-result-object v8 │ - │ - invoke-virtual {v8}, Lcom/crashlytics/android/IdManager;->b()Ljava/lang/String; │ - │ - move-result-object v8 │ - │ - invoke-static {v8}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v8 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->f()Ljava/lang/String; │ - │ - move-result-object v9 │ - │ - invoke-static {v9}, Lcom/crashlytics/android/B;->a(Ljava/lang/String;)Lcom/crashlytics/android/B; │ - │ - move-result-object v9 │ - │ - invoke-virtual {v9}, Lcom/crashlytics/android/B;->a()I │ - │ - move-result v9 │ - │ - const/4 v10, 0x7 │ - │ - const/4 v11, 0x2 │ - │ - invoke-virtual {v1, v10, v11}, Lcom/crashlytics/android/p;->g(II)V │ - │ - const/4 v10, 0x1 │ - │ - invoke-static {v10, v0}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v10 │ - │ - add-int/lit8 v10, v10, 0x0 │ - │ - const/4 v11, 0x2 │ - │ - invoke-static {v11, v3}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v11 │ - │ - add-int/2addr v10, v11 │ - │ - const/4 v11, 0x3 │ - │ - invoke-static {v11, v5}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v11 │ - │ - add-int/2addr v10, v11 │ - │ - invoke-static {}, Lcom/crashlytics/android/E;->m()I │ - │ - move-result v11 │ - │ - const/4 v12, 0x4 │ - │ - invoke-static {v12}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v12 │ - │ - invoke-static {v11}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v13 │ - │ - add-int/2addr v12, v13 │ - │ - add-int/2addr v11, v12 │ - │ - add-int/2addr v10, v11 │ - │ - invoke-static {}, Lcom/crashlytics/android/E;->n()I │ - │ - move-result v11 │ - │ - const/4 v12, 0x5 │ - │ - invoke-static {v12}, Lcom/crashlytics/android/p;->a(I)I │ - │ - move-result v12 │ - │ - invoke-static {v11}, Lcom/crashlytics/android/p;->c(I)I │ - │ - move-result v13 │ - │ - add-int/2addr v12, v13 │ - │ - add-int/2addr v11, v12 │ - │ - add-int/2addr v10, v11 │ - │ - const/4 v11, 0x6 │ - │ - invoke-static {v11, v8}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v11 │ - │ - add-int/2addr v10, v11 │ - │ - const/16 v11, 0xa │ - │ - invoke-static {v11, v9}, Lcom/crashlytics/android/p;->e(II)I │ - │ - move-result v11 │ - │ - add-int/2addr v10, v11 │ - │ - invoke-virtual {v1, v10}, Lcom/crashlytics/android/p;->b(I)V │ - │ - const/4 v10, 0x1 │ - │ - invoke-virtual {v1, v10, v0}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v0, 0x2 │ - │ - invoke-virtual {v1, v0, v3}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v0, 0x3 │ - │ - invoke-virtual {v1, v0, v5}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v0, 0x4 │ - │ - const/4 v3, 0x2 │ - │ - invoke-virtual {v1, v0, v3}, Lcom/crashlytics/android/p;->g(II)V │ - │ - invoke-static {}, Lcom/crashlytics/android/E;->m()I │ - │ - move-result v0 │ - │ - invoke-virtual {v1, v0}, Lcom/crashlytics/android/p;->b(I)V │ - │ - const/4 v0, 0x1 │ - │ - invoke-virtual {v1, v0, v6}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - invoke-static {}, Landroid/os/Process;->myPid()I │ - │ - move-result v0 │ - │ - const/4 v3, 0x2 │ - │ - invoke-virtual {v1, v3, v0}, Lcom/crashlytics/android/p;->a(II)V │ - │ - const/4 v3, 0x3 │ - │ - invoke-virtual {v1, v3, v7}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->a(I)[Ljava/lang/Object; │ - │ - move-result-object v3 │ - │ - if-eqz v3, :cond_0 │ - │ - array-length v0, v3 │ - │ - const/4 v5, 0x1 │ - │ - if-le v0, v5, :cond_0 │ - │ - const/4 v5, 0x4 │ - │ - const/4 v0, 0x1 │ - │ - aget-object v0, v3, v0 │ - │ - check-cast v0, Ljava/lang/String; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v1, v5, v0}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v5, 0x5 │ - │ - const/4 v0, 0x0 │ - │ - aget-object v0, v3, v0 │ - │ - check-cast v0, Ljava/lang/Integer; │ - │ - invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I │ - │ - move-result v0 │ - │ - invoke-virtual {v1, v5, v0}, Lcom/crashlytics/android/p;->a(II)V │ - │ - :cond_0 │ - const/4 v0, 0x5 │ - │ - const/4 v3, 0x2 │ - │ - invoke-virtual {v1, v0, v3}, Lcom/crashlytics/android/p;->g(II)V │ - │ - invoke-static {}, Lcom/crashlytics/android/E;->n()I │ - │ - move-result v0 │ - │ - invoke-virtual {v1, v0}, Lcom/crashlytics/android/p;->b(I)V │ - │ - const/4 v0, 0x1 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->i()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v1, v0, v3}, Lcom/crashlytics/android/p;->a(ILjava/lang/String;)V │ - │ - const/4 v0, 0x6 │ - │ - invoke-virtual {v1, v0, v8}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/16 v0, 0xa │ - │ - invoke-virtual {v1, v0, v9}, Lcom/crashlytics/android/p;->b(II)V │ - :try_end_3 │ - .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_4 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ - │ - const-string v0, "Failed to flush to session app file." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v0, "Failed to close session app file." │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 671 │ - const/4 v3, 0x0 │ - │ - const/4 v1, 0x0 │ - │ - :try_start_4 │ - new-instance v2, Lcom/crashlytics/android/n; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v0 │ - │ - new-instance v5, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v5 │ - │ - const-string v6, "SessionOS" │ - │ - invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-direct {v2, v0, v5}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_4 │ - .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_2 │ - .catchall {:try_start_4 .. :try_end_4} :catchall_3 │ - │ - :try_start_5 │ - invoke-static {v2}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - │ - move-result-object v1 │ - │ - sget-object v0, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - sget-object v3, Landroid/os/Build$VERSION;->CODENAME:Ljava/lang/String; │ - │ - invoke-static {v3}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v3 │ - │ - invoke-static {}, Lcom/crashlytics/android/aB;->e()Z │ - │ - move-result v5 │ - │ - const/16 v6, 0x8 │ - │ - const/4 v7, 0x2 │ - │ - invoke-virtual {v1, v6, v7}, Lcom/crashlytics/android/p;->g(II)V │ - │ - const/4 v6, 0x1 │ - │ - const/4 v7, 0x3 │ - │ - invoke-static {v6, v7}, Lcom/crashlytics/android/p;->e(II)I │ - │ - move-result v6 │ - │ - add-int/lit8 v6, v6, 0x0 │ - │ - const/4 v7, 0x2 │ - │ - invoke-static {v7, v0}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v7 │ - │ - add-int/2addr v6, v7 │ - │ - const/4 v7, 0x3 │ - │ - invoke-static {v7, v3}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v7 │ - │ - add-int/2addr v6, v7 │ - │ - const/4 v7, 0x4 │ - │ - invoke-static {v7, v5}, Lcom/crashlytics/android/p;->b(IZ)I │ - │ - move-result v7 │ - │ - add-int/2addr v6, v7 │ - │ - invoke-virtual {v1, v6}, Lcom/crashlytics/android/p;->b(I)V │ - │ - const/4 v6, 0x1 │ - │ - const/4 v7, 0x3 │ - │ - invoke-virtual {v1, v6, v7}, Lcom/crashlytics/android/p;->b(II)V │ - │ - const/4 v6, 0x2 │ - │ - invoke-virtual {v1, v6, v0}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v0, 0x3 │ - │ - invoke-virtual {v1, v0, v3}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - const/4 v0, 0x4 │ - │ - invoke-virtual {v1, v0, v5}, Lcom/crashlytics/android/p;->a(IZ)V │ - :try_end_5 │ - .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_3 │ - .catchall {:try_start_5 .. :try_end_5} :catchall_2 │ - │ - const-string v0, "Failed to flush to session OS file." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v0, "Failed to close session OS file." │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 672 │ - invoke-direct {p0, v4}, Lcom/crashlytics/android/E;->c(Ljava/lang/String;)V │ - │ - .line 673 │ - return-void │ - │ - .line 669 │ - :catch_0 │ - move-exception v0 │ - │ - move-object v2, v3 │ - │ - :goto_0 │ - :try_start_6 │ - invoke-direct {p0, v0, v2}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - │ - throw v0 │ - :try_end_6 │ - .catchall {:try_start_6 .. :try_end_6} :catchall_0 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - :goto_1 │ - const-string v3, "Failed to flush to session begin file." │ - │ - invoke-static {v1, v3}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + .line 1861 │ + iput-object p1, p0, Lcom/crashlytics/android/E;->a:Lcom/crashlytics/android/v; │ │ - const-string v1, "Failed to close begin session file." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - .line 670 │ - :catch_1 │ - move-exception v0 │ - │ - move-object v2, v3 │ - │ - :goto_2 │ - :try_start_7 │ - invoke-direct {p0, v0, v2}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - │ - throw v0 │ - :try_end_7 │ - .catchall {:try_start_7 .. :try_end_7} :catchall_1 │ - │ - :catchall_1 │ - move-exception v0 │ - │ - :goto_3 │ - const-string v3, "Failed to flush to session app file." │ - │ - invoke-static {v1, v3}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close session app file." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - .line 671 │ - :catch_2 │ - move-exception v0 │ - │ - move-object v2, v3 │ - │ - :goto_4 │ - :try_start_8 │ - invoke-direct {p0, v0, v2}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - │ - throw v0 │ - :try_end_8 │ - .catchall {:try_start_8 .. :try_end_8} :catchall_2 │ - │ - :catchall_2 │ - move-exception v0 │ - │ - :goto_5 │ - const-string v3, "Failed to flush to session OS file." │ - │ - invoke-static {v1, v3}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close session OS file." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v0 │ - │ - :catchall_3 │ - move-exception v0 │ - │ - move-object v2, v3 │ - │ - goto :goto_5 │ - │ - :catch_3 │ - move-exception v0 │ - │ - goto :goto_4 │ - │ - .line 670 │ - :catchall_4 │ - move-exception v0 │ - │ - move-object v2, v3 │ - │ - goto :goto_3 │ - │ - :catch_4 │ - move-exception v0 │ - │ - goto :goto_2 │ - │ - .line 669 │ - :catchall_5 │ - move-exception v0 │ - │ - move-object v2, v3 │ - │ - goto :goto_1 │ - │ - :catch_5 │ - move-exception v0 │ - │ - goto :goto_0 │ -.end method │ - │ -.method private i()V │ - .locals 18 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 679 │ - new-instance v2, Ljava/util/HashSet; │ - │ - invoke-direct {v2}, Ljava/util/HashSet;->()V │ - │ - invoke-direct/range {p0 .. p0}, Lcom/crashlytics/android/E;->k()[Ljava/io/File; │ - │ - move-result-object v3 │ - │ - sget-object v1, Lcom/crashlytics/android/E;->b:Ljava/util/Comparator; │ - │ - invoke-static {v3, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ - │ - const/16 v1, 0x8 │ - │ - array-length v4, v3 │ - │ - invoke-static {v1, v4}, Ljava/lang/Math;->min(II)I │ - │ - move-result v4 │ - │ - const/4 v1, 0x0 │ - │ - :goto_0 │ - if-ge v1, v4, :cond_0 │ - │ - aget-object v5, v3, v1 │ - │ - invoke-static {v5}, Lcom/crashlytics/android/E;->a(Ljava/io/File;)Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-interface {v2, v5}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ - │ - add-int/lit8 v1, v1, 0x1 │ - │ - goto :goto_0 │ - │ - :cond_0 │ - new-instance v1, Lcom/crashlytics/android/W; │ - │ - invoke-direct {v1}, Lcom/crashlytics/android/W;->()V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v3 │ - │ - array-length v4, v3 │ - │ - const/4 v1, 0x0 │ - │ - :goto_1 │ - if-ge v1, v4, :cond_2 │ - │ - aget-object v5, v3, v1 │ - │ - invoke-virtual {v5}, Ljava/io/File;->getName()Ljava/lang/String; │ - │ - move-result-object v6 │ - │ - sget-object v7, Lcom/crashlytics/android/E;->d:Ljava/util/regex/Pattern; │ - │ - invoke-virtual {v7, v6}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ - │ - move-result-object v7 │ - │ - invoke-virtual {v7}, Ljava/util/regex/Matcher;->matches()Z │ - │ - const/4 v8, 0x1 │ - │ - invoke-virtual {v7, v8}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String; │ - │ - move-result-object v7 │ - │ - invoke-interface {v2, v7}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ - │ - move-result v7 │ - │ - if-nez v7, :cond_1 │ - │ - new-instance v7, Ljava/lang/StringBuilder; │ - │ - const-string v8, "Trimming open session file: " │ - │ - invoke-direct {v7, v8}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v6 │ - │ - invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v6 │ - │ - invoke-static {v6}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - invoke-virtual {v5}, Ljava/io/File;->delete()Z │ - │ - :cond_1 │ - add-int/lit8 v1, v1, 0x1 │ - │ - goto :goto_1 │ - │ - .line 681 │ - :cond_2 │ - invoke-direct/range {p0 .. p0}, Lcom/crashlytics/android/E;->j()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - .line 683 │ - if-eqz v1, :cond_13 │ - │ - .line 686 │ - const/4 v4, 0x0 │ - │ - const/4 v2, 0x0 │ - │ - :try_start_0 │ - new-instance v3, Lcom/crashlytics/android/n; │ - │ - move-object/from16 v0, p0 │ - │ - iget-object v5, v0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - new-instance v6, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v6}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v6, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - const-string v6, "SessionUser" │ - │ - invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-direct {v3, v5, v1}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_4 │ - │ - :try_start_1 │ - invoke-static {v3}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - │ - move-result-object v2 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->p()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Lcom/crashlytics/android/Crashlytics;->r()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v5}, Lcom/crashlytics/android/Crashlytics;->q()Ljava/lang/String; │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_4 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ - │ - move-result-object v6 │ - │ - if-nez v1, :cond_6 │ - │ - if-nez v4, :cond_6 │ - │ - if-nez v6, :cond_6 │ - │ - const-string v1, "Failed to flush session user file." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close session user file." │ - │ - invoke-static {v3, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - .line 688 │ - :goto_2 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->t()Lcom/crashlytics/android/ax; │ - │ - move-result-object v1 │ - │ - .line 690 │ - if-eqz v1, :cond_11 │ - │ - .line 691 │ - invoke-virtual {v1}, Lcom/crashlytics/android/ax;->c()I │ - │ - move-result v8 │ - │ - .line 693 │ - const-string v1, "Closing all open sessions." │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 694 │ - invoke-direct/range {p0 .. p0}, Lcom/crashlytics/android/E;->k()[Ljava/io/File; │ - │ - move-result-object v9 │ - │ - .line 696 │ - if-eqz v9, :cond_12 │ - │ - array-length v1, v9 │ - │ - if-lez v1, :cond_12 │ - │ - .line 697 │ - array-length v10, v9 │ - │ - const/4 v1, 0x0 │ - │ - move v6, v1 │ - │ - :goto_3 │ - if-ge v6, v10, :cond_12 │ - │ - aget-object v11, v9, v6 │ - │ - .line 698 │ - invoke-static {v11}, Lcom/crashlytics/android/E;->a(Ljava/io/File;)Ljava/lang/String; │ - │ - move-result-object v12 │ - │ - .line 699 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Closing session: " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 700 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Collecting session parts for ID " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - new-instance v1, Lcom/crashlytics/android/X; │ - │ - new-instance v2, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v2, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - const-string v3, "SessionCrash" │ - │ - invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - invoke-direct {v1, v2}, Lcom/crashlytics/android/X;->(Ljava/lang/String;)V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v13 │ - │ - if-eqz v13, :cond_e │ - │ - array-length v1, v13 │ - │ - if-lez v1, :cond_e │ - │ - const/4 v1, 0x1 │ - │ - move v2, v1 │ - │ - :goto_4 │ - const-string v1, "Session %s has fatal exception: %s" │ - │ - const/4 v3, 0x2 │ - │ - new-array v3, v3, [Ljava/lang/Object; │ - │ - const/4 v4, 0x0 │ - │ - aput-object v12, v3, v4 │ - │ - const/4 v4, 0x1 │ - │ - invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ - │ - move-result-object v5 │ - │ - aput-object v5, v3, v4 │ - │ - invoke-static {v1, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - new-instance v1, Lcom/crashlytics/android/X; │ - │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v3, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - const-string v4, "SessionEvent" │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-direct {v1, v3}, Lcom/crashlytics/android/X;->(Ljava/lang/String;)V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v7 │ - │ - if-eqz v7, :cond_f │ - │ - array-length v1, v7 │ - │ - if-lez v1, :cond_f │ - │ - const/4 v1, 0x1 │ - │ - :goto_5 │ - const-string v3, "Session %s has non-fatal exceptions: %s" │ - │ - const/4 v4, 0x2 │ - │ - new-array v4, v4, [Ljava/lang/Object; │ - │ - const/4 v5, 0x0 │ - │ - aput-object v12, v4, v5 │ - │ - const/4 v5, 0x1 │ - │ - invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ - │ - move-result-object v14 │ - │ - aput-object v14, v4, v5 │ - │ - invoke-static {v3, v4}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - if-nez v2, :cond_3 │ - │ - if-eqz v1, :cond_10 │ - │ - :cond_3 │ - const/4 v5, 0x0 │ - │ - const/4 v3, 0x0 │ - │ - :try_start_2 │ - new-instance v4, Lcom/crashlytics/android/n; │ - │ - move-object/from16 v0, p0 │ - │ - iget-object v14, v0, Lcom/crashlytics/android/E;->k:Ljava/io/File; │ - │ - invoke-direct {v4, v14, v12}, Lcom/crashlytics/android/n;->(Ljava/io/File;Ljava/lang/String;)V │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_1 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ - │ - :try_start_3 │ - invoke-static {v4}, Lcom/crashlytics/android/p;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/p; │ - :try_end_3 │ - .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_2 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_2 │ - │ - move-result-object v3 │ - │ - :try_start_4 │ - new-instance v5, Ljava/lang/StringBuilder; │ - │ - const-string v14, "Collecting SessionStart data for session ID " │ - │ - invoke-direct {v5, v14}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v5, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-static {v5}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - invoke-static {v3, v11}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/io/File;)V │ - │ - const/4 v5, 0x4 │ - │ - new-instance v11, Ljava/util/Date; │ - │ - invoke-direct {v11}, Ljava/util/Date;->()V │ - │ - invoke-virtual {v11}, Ljava/util/Date;->getTime()J │ - │ - move-result-wide v14 │ - │ - const-wide/16 v16, 0x3e8 │ - │ - div-long v14, v14, v16 │ - │ - invoke-virtual {v3, v5, v14, v15}, Lcom/crashlytics/android/p;->a(IJ)V │ - │ - const/4 v5, 0x5 │ - │ - invoke-virtual {v3, v5, v2}, Lcom/crashlytics/android/p;->a(IZ)V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v3, v12}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/lang/String;)V │ - │ - if-eqz v1, :cond_4 │ - │ - array-length v1, v7 │ - │ - if-le v1, v8, :cond_14 │ - │ - const-string v1, "Trimming down to %d logged exceptions." │ - │ - const/4 v5, 0x1 │ - │ - new-array v5, v5, [Ljava/lang/Object; │ - │ - const/4 v7, 0x0 │ - │ - invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ - │ - move-result-object v11 │ - │ - aput-object v11, v5, v7 │ - │ - invoke-static {v1, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v12, v8}, Lcom/crashlytics/android/E;->a(Ljava/lang/String;I)V │ - │ - new-instance v1, Lcom/crashlytics/android/X; │ - │ - new-instance v5, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v5, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v5 │ - │ - const-string v7, "SessionEvent" │ - │ - invoke-virtual {v5, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v5 │ - │ - invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v5 │ - │ - invoke-direct {v1, v5}, Lcom/crashlytics/android/X;->(Ljava/lang/String;)V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v1 │ - │ - :goto_6 │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v3, v1, v12}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;[Ljava/io/File;Ljava/lang/String;)V │ - │ - :cond_4 │ - if-eqz v2, :cond_5 │ - │ - const/4 v1, 0x0 │ - │ - aget-object v1, v13, v1 │ - │ - invoke-static {v3, v1}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/p;Ljava/io/File;)V │ - │ - :cond_5 │ - const/16 v1, 0xb │ - │ - const/4 v2, 0x1 │ - │ - invoke-virtual {v3, v1, v2}, Lcom/crashlytics/android/p;->a(II)V │ - │ - const/16 v1, 0xc │ - │ - const/4 v2, 0x3 │ - │ - invoke-virtual {v3, v1, v2}, Lcom/crashlytics/android/p;->b(II)V │ - :try_end_4 │ - .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_3 │ - .catchall {:try_start_4 .. :try_end_4} :catchall_2 │ - │ - const-string v1, "Error flushing session file stream" │ - │ - invoke-static {v3, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close CLS file" │ - │ - invoke-static {v4, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - :goto_7 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Removing session part files for ID " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v12}, Lcom/crashlytics/android/E;->a(Ljava/lang/String;)V │ - │ - .line 697 │ - add-int/lit8 v1, v6, 0x1 │ - │ - move v6, v1 │ - │ - goto/16 :goto_3 │ - │ - .line 686 │ - :cond_6 │ - if-nez v1, :cond_7 │ - │ - :try_start_5 │ - const-string v1, "" │ - │ - :cond_7 │ - invoke-static {v1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v7 │ - │ - if-nez v4, :cond_c │ - │ - const/4 v1, 0x0 │ - │ - move-object v5, v1 │ - │ - :goto_8 │ - if-nez v6, :cond_d │ - │ - const/4 v1, 0x0 │ - │ - move-object v4, v1 │ - │ - :goto_9 │ - const/4 v1, 0x1 │ - │ - invoke-static {v1, v7}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/lit8 v1, v1, 0x0 │ - │ - if-eqz v5, :cond_8 │ - │ - const/4 v6, 0x2 │ - │ - invoke-static {v6, v5}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v6 │ - │ - add-int/2addr v1, v6 │ - │ - :cond_8 │ - if-eqz v4, :cond_9 │ - │ - const/4 v6, 0x3 │ - │ - invoke-static {v6, v4}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v6 │ - │ - add-int/2addr v1, v6 │ - │ - :cond_9 │ - const/4 v6, 0x6 │ - │ - const/4 v8, 0x2 │ - │ - invoke-virtual {v2, v6, v8}, Lcom/crashlytics/android/p;->g(II)V │ - │ - invoke-virtual {v2, v1}, Lcom/crashlytics/android/p;->b(I)V │ - │ - const/4 v1, 0x1 │ - │ - invoke-virtual {v2, v1, v7}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - if-eqz v5, :cond_a │ - │ - const/4 v1, 0x2 │ - │ - invoke-virtual {v2, v1, v5}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - │ - :cond_a │ - if-eqz v4, :cond_b │ - │ - const/4 v1, 0x3 │ - │ - invoke-virtual {v2, v1, v4}, Lcom/crashlytics/android/p;->a(ILcom/crashlytics/android/k;)V │ - :try_end_5 │ - .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_4 │ - .catchall {:try_start_5 .. :try_end_5} :catchall_0 │ - │ - :cond_b │ - const-string v1, "Failed to flush session user file." │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v1, "Failed to close session user file." │ - │ - invoke-static {v3, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - goto/16 :goto_2 │ - │ - :cond_c │ - :try_start_6 │ - invoke-static {v4}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - move-object v5, v1 │ - │ - goto :goto_8 │ - │ - :cond_d │ - invoke-static {v6}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - :try_end_6 │ - .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_6} :catch_4 │ - .catchall {:try_start_6 .. :try_end_6} :catchall_0 │ - │ - move-result-object v1 │ - │ - move-object v4, v1 │ - │ - goto :goto_9 │ - │ - :catch_0 │ - move-exception v1 │ - │ - move-object v3, v4 │ - │ - :goto_a │ - :try_start_7 │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v1, v3}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - │ - throw v1 │ - :try_end_7 │ - .catchall {:try_start_7 .. :try_end_7} :catchall_0 │ - │ - :catchall_0 │ - move-exception v1 │ - │ - :goto_b │ - const-string v4, "Failed to flush session user file." │ - │ - invoke-static {v2, v4}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v2, "Failed to close session user file." │ - │ - invoke-static {v3, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v1 │ - │ - .line 700 │ - :cond_e │ - const/4 v1, 0x0 │ - │ - move v2, v1 │ - │ - goto/16 :goto_4 │ - │ - :cond_f │ - const/4 v1, 0x0 │ - │ - goto/16 :goto_5 │ - │ - :catch_1 │ - move-exception v1 │ - │ - move-object v2, v3 │ - │ - move-object v3, v5 │ - │ - :goto_c │ - :try_start_8 │ - new-instance v4, Ljava/lang/StringBuilder; │ - │ - const-string v5, "Failed to write session file for session ID: " │ - │ - invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v4, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-static {v4, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - move-object/from16 v0, p0 │ - │ - invoke-direct {v0, v1, v3}, Lcom/crashlytics/android/E;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ - :try_end_8 │ - .catchall {:try_start_8 .. :try_end_8} :catchall_3 │ - │ - const-string v1, "Error flushing session file stream" │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - invoke-static {v3}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/n;)V │ - │ - goto/16 :goto_7 │ - │ - :catchall_1 │ - move-exception v1 │ - │ - move-object v4, v5 │ - │ - :goto_d │ - const-string v2, "Error flushing session file stream" │ - │ - invoke-static {v3, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ - │ - const-string v2, "Failed to close CLS file" │ - │ - invoke-static {v4, v2}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ - │ - throw v1 │ - │ - :cond_10 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "No events present for session ID " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - goto/16 :goto_7 │ - │ - .line 704 │ - :cond_11 │ - const-string v1, "No session begin files found." │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 709 │ - :cond_12 │ - :goto_e │ - return-void │ - │ - .line 707 │ - :cond_13 │ - const-string v1, "Unable to close session. Settings are not loaded." │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - goto :goto_e │ - │ - .line 700 │ - :catchall_2 │ - move-exception v1 │ - │ - goto :goto_d │ - │ - :catchall_3 │ - move-exception v1 │ - │ - move-object v4, v3 │ - │ - move-object v3, v2 │ - │ - goto :goto_d │ - │ - :catch_2 │ - move-exception v1 │ - │ - move-object v2, v3 │ - │ - move-object v3, v4 │ - │ - goto :goto_c │ - │ - :catch_3 │ - move-exception v1 │ - │ - move-object v2, v3 │ - │ - move-object v3, v4 │ - │ - goto :goto_c │ - │ - .line 686 │ - :catchall_4 │ - move-exception v1 │ - │ - move-object v3, v4 │ - │ - goto :goto_b │ - │ - :catch_4 │ - move-exception v1 │ - │ - goto :goto_a │ - │ - :cond_14 │ - move-object v1, v7 │ - │ - goto/16 :goto_6 │ -.end method │ - │ -.method private j()Ljava/lang/String; │ - .locals 2 │ - │ - .prologue │ - .line 721 │ - new-instance v0, Lcom/crashlytics/android/X; │ - │ - const-string v1, "BeginSession" │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/X;->(Ljava/lang/String;)V │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v0 │ - │ - .line 722 │ - sget-object v1, Lcom/crashlytics/android/E;->b:Ljava/util/Comparator; │ - │ - invoke-static {v0, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ - │ - .line 723 │ - array-length v1, v0 │ - │ - if-lez v1, :cond_0 │ - │ - const/4 v1, 0x0 │ - │ - aget-object v0, v0, v1 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/E;->a(Ljava/io/File;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - :goto_0 │ - return-object v0 │ - │ - :cond_0 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ -.end method │ - │ -.method private k()[Ljava/io/File; │ - .locals 2 │ - │ - .prologue │ - .line 879 │ - new-instance v0, Lcom/crashlytics/android/X; │ - │ - const-string v1, "BeginSession" │ - │ - invoke-direct {v0, v1}, Lcom/crashlytics/android/X;->(Ljava/lang/String;)V │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v0 │ - │ - return-object v0 │ -.end method │ - │ -.method private l()V │ - .locals 6 │ - │ - .prologue │ - .line 952 │ - sget-object v0, Lcom/crashlytics/android/E;->a:Ljava/io/FilenameFilter; │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v1 │ - │ - array-length v2, v1 │ - │ - const/4 v0, 0x0 │ - │ - :goto_0 │ - if-ge v0, v2, :cond_0 │ - │ - aget-object v3, v1, v0 │ - │ - .line 954 │ - const-string v4, "Attempting to send crash report at time of crash..." │ - │ - invoke-static {v4}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 956 │ - new-instance v4, Ljava/lang/Thread; │ - │ - new-instance v5, Lcom/crashlytics/android/J; │ - │ - invoke-direct {v5, p0, v3}, Lcom/crashlytics/android/J;->(Lcom/crashlytics/android/E;Ljava/io/File;)V │ - │ - const-string v3, "Crashlytics Report Uploader" │ - │ - invoke-direct {v4, v5, v3}, Ljava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V │ - │ - invoke-virtual {v4}, Ljava/lang/Thread;->start()V │ - │ - .line 952 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_0 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 968 │ - :cond_0 │ return-void │ .end method │ │ -.method private static m()I │ - .locals 5 │ - │ - .prologue │ - const/4 v4, 0x1 │ - │ - .line 1125 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->k()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - invoke-static {v4, v0}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1128 │ - invoke-static {}, Landroid/os/Process;->myPid()I │ - │ - move-result v2 │ - │ - .line 1129 │ - const/4 v1, 0x2 │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1130 │ - const/4 v1, 0x3 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3}, Landroid/content/ContextWrapper;->getPackageCodePath()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-static {v3}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v3 │ - │ - invoke-static {v1, v3}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/2addr v1, v0 │ - │ - .line 1133 │ - invoke-static {v2}, Lcom/crashlytics/android/aB;->a(I)[Ljava/lang/Object; │ - │ - move-result-object v2 │ - │ - .line 1134 │ - if-eqz v2, :cond_0 │ - │ - array-length v0, v2 │ - │ - if-le v0, v4, :cond_0 │ - │ - .line 1135 │ - aget-object v0, v2, v4 │ - │ - check-cast v0, Ljava/lang/String; │ - │ - .line 1136 │ - const/4 v3, 0x4 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v0 │ - │ - invoke-static {v3, v0}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v0 │ - │ - add-int/2addr v1, v0 │ - │ - .line 1137 │ - const/4 v0, 0x0 │ - │ - aget-object v0, v2, v0 │ - │ - check-cast v0, Ljava/lang/Integer; │ - │ - invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I │ - │ - move-result v0 │ - │ - .line 1138 │ - const/4 v2, 0x5 │ - │ - invoke-static {v2, v0}, Lcom/crashlytics/android/p;->d(II)I │ - │ - move-result v0 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1141 │ - :goto_0 │ - return v0 │ - │ - :cond_0 │ - move v0, v1 │ - │ - goto :goto_0 │ -.end method │ - │ -.method private static n()I │ - .locals 2 │ - │ - .prologue │ - .line 1145 │ - const/4 v0, 0x1 │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->i()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/k;->a(Ljava/lang/String;)Lcom/crashlytics/android/k; │ - │ - move-result-object v1 │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1149 │ - return v0 │ -.end method │ - │ -.method private o()I │ - .locals 4 │ - │ - .prologue │ - const-wide/16 v2, 0x0 │ - │ - .line 1519 │ - const/4 v0, 0x1 │ - │ - invoke-static {v0, v2, v3}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1522 │ - const/4 v1, 0x2 │ - │ - invoke-static {v1, v2, v3}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1523 │ - const/4 v1, 0x3 │ - │ - iget-object v2, p0, Lcom/crashlytics/android/E;->p:Lcom/crashlytics/android/k; │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1524 │ - iget-object v1, p0, Lcom/crashlytics/android/E;->q:Lcom/crashlytics/android/k; │ - │ - if-eqz v1, :cond_0 │ - │ - .line 1525 │ - const/4 v1, 0x4 │ - │ - iget-object v2, p0, Lcom/crashlytics/android/E;->q:Lcom/crashlytics/android/k; │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1528 │ - :cond_0 │ - return v0 │ -.end method │ - │ -.method private static p()I │ - .locals 4 │ - │ - .prologue │ - .line 1821 │ - const/4 v0, 0x1 │ - │ - sget-object v1, Lcom/crashlytics/android/E;->f:Lcom/crashlytics/android/k; │ - │ - invoke-static {v0, v1}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v0 │ - │ - add-int/lit8 v0, v0, 0x0 │ - │ - .line 1824 │ - const/4 v1, 0x2 │ - │ - sget-object v2, Lcom/crashlytics/android/E;->f:Lcom/crashlytics/android/k; │ - │ - invoke-static {v1, v2}, Lcom/crashlytics/android/p;->b(ILcom/crashlytics/android/k;)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1825 │ - const/4 v1, 0x3 │ - │ - const-wide/16 v2, 0x0 │ - │ - invoke-static {v1, v2, v3}, Lcom/crashlytics/android/p;->b(IJ)I │ - │ - move-result v1 │ - │ - add-int/2addr v0, v1 │ - │ - .line 1827 │ - return v0 │ -.end method │ - │ │ # virtual methods │ -.method final a(JLjava/lang/String;)V │ - .locals 1 │ - │ - .prologue │ - .line 370 │ - new-instance v0, Lcom/crashlytics/android/G; │ - │ - invoke-direct {v0, p0, p1, p2, p3}, Lcom/crashlytics/android/G;->(Lcom/crashlytics/android/E;JLjava/lang/String;)V │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->b(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ - │ - .line 382 │ - return-void │ -.end method │ - │ -.method final a(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - .locals 2 │ - │ - .prologue │ - .line 354 │ - new-instance v0, Ljava/util/Date; │ - │ - invoke-direct {v0}, Ljava/util/Date;->()V │ - │ - .line 356 │ - new-instance v1, Lcom/crashlytics/android/V; │ - │ - invoke-direct {v1, p0, v0, p1, p2}, Lcom/crashlytics/android/V;->(Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - invoke-direct {p0, v1}, Lcom/crashlytics/android/E;->a(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ - │ - .line 364 │ - return-void │ -.end method │ - │ -.method final a([Ljava/io/File;)V │ - .locals 9 │ - │ - .prologue │ - const/4 v1, 0x0 │ - │ - .line 1880 │ - new-instance v2, Ljava/io/File; │ - │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ - │ - move-result-object v0 │ - │ - const-string v3, "invalidClsFiles" │ - │ - invoke-direct {v2, v0, v3}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ - │ - invoke-virtual {v2}, Ljava/io/File;->exists()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ - │ - invoke-virtual {v2}, Ljava/io/File;->isDirectory()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_0 │ - │ - invoke-virtual {v2}, Ljava/io/File;->listFiles()[Ljava/io/File; │ - │ - move-result-object v3 │ - │ - array-length v4, v3 │ - │ - move v0, v1 │ - │ - :goto_0 │ - if-ge v0, v4, :cond_0 │ - │ - aget-object v5, v3, v0 │ - │ - invoke-virtual {v5}, Ljava/io/File;->delete()Z │ - │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_0 │ - │ - :cond_0 │ - invoke-virtual {v2}, Ljava/io/File;->delete()Z │ - │ - .line 1885 │ - :cond_1 │ - array-length v3, p1 │ - │ - move v2, v1 │ - │ - :goto_1 │ - if-ge v2, v3, :cond_3 │ - │ - aget-object v0, p1, v2 │ - │ - .line 1886 │ - new-instance v4, Ljava/lang/StringBuilder; │ - │ - const-string v5, "Found invalid session part file: " │ - │ - invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v4 │ - │ - invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v4 │ - │ - invoke-static {v4}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 1887 │ - invoke-static {v0}, Lcom/crashlytics/android/E;->a(Ljava/io/File;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - .line 1888 │ - new-instance v4, Lcom/crashlytics/android/L; │ - │ - invoke-direct {v4, p0, v0}, Lcom/crashlytics/android/L;->(Lcom/crashlytics/android/E;Ljava/lang/String;)V │ - │ - .line 1895 │ - new-instance v5, Ljava/lang/StringBuilder; │ - │ - const-string v6, "Deleting all part files for invalid session: " │ - │ - invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 1896 │ - invoke-direct {p0, v4}, Lcom/crashlytics/android/E;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v4 │ - │ - array-length v5, v4 │ - │ - move v0, v1 │ - │ - :goto_2 │ - if-ge v0, v5, :cond_2 │ - │ - aget-object v6, v4, v0 │ - │ - .line 1897 │ - new-instance v7, Ljava/lang/StringBuilder; │ - │ - const-string v8, "Deleting session file: " │ - │ - invoke-direct {v7, v8}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v7 │ - │ - invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v7 │ - │ - invoke-static {v7}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 1898 │ - invoke-virtual {v6}, Ljava/io/File;->delete()Z │ - │ - .line 1896 │ - add-int/lit8 v0, v0, 0x1 │ - │ - goto :goto_2 │ - │ - .line 1885 │ - :cond_2 │ - add-int/lit8 v0, v2, 0x1 │ - │ - move v2, v0 │ - │ - goto :goto_1 │ - │ - .line 1901 │ - :cond_3 │ - return-void │ -.end method │ - │ -.method final a()Z │ - .locals 1 │ - │ - .prologue │ - .line 290 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ - │ - move-result v0 │ - │ - return v0 │ -.end method │ - │ -.method final b()V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/lang/Exception; │ - } │ - .end annotation │ - │ - .prologue │ - .line 336 │ - new-instance v0, Lcom/crashlytics/android/U; │ - │ - invoke-direct {v0, p0}, Lcom/crashlytics/android/U;->(Lcom/crashlytics/android/E;)V │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ - │ - .line 346 │ - return-void │ -.end method │ - │ -.method final c()Z │ - .locals 1 │ - │ - .prologue │ - .line 536 │ - invoke-direct {p0}, Lcom/crashlytics/android/E;->k()[Ljava/io/File; │ - │ - move-result-object v0 │ - │ - array-length v0, v0 │ - │ - if-lez v0, :cond_0 │ - │ - const/4 v0, 0x1 │ - │ - :goto_0 │ - return v0 │ - │ - :cond_0 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ -.end method │ - │ -.method final d()V │ - .locals 1 │ - │ - .prologue │ - .line 1865 │ - new-instance v0, Lcom/crashlytics/android/K; │ - │ - invoke-direct {v0, p0}, Lcom/crashlytics/android/K;->(Lcom/crashlytics/android/E;)V │ - │ - invoke-direct {p0, v0}, Lcom/crashlytics/android/E;->a(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ - │ - .line 1871 │ - return-void │ -.end method │ - │ -.method public final declared-synchronized uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ +.method public final run()V │ .locals 3 │ - .param p1, "thread" # Ljava/lang/Thread; │ - .param p2, "ex" # Ljava/lang/Throwable; │ │ .prologue │ - .line 295 │ - monitor-enter p0 │ - │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - const/4 v1, 0x1 │ - │ - invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ - :try_end_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + .line 1864 │ + iget-object v0, p0, Lcom/crashlytics/android/E;->a:Lcom/crashlytics/android/v; │ │ - .line 297 │ - :try_start_1 │ - new-instance v0, Ljava/lang/StringBuilder; │ + iget-object v1, p0, Lcom/crashlytics/android/E;->a:Lcom/crashlytics/android/v; │ │ - const-string v1, "Crashlytics is handling uncaught exception \"" │ + sget-object v2, Lcom/crashlytics/android/f;->a:Ljava/io/FilenameFilter; │ │ - invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v1, "\" from thread " │ - │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ + invoke-static {v1, v2}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/v;Ljava/io/FilenameFilter;)[Ljava/io/File; │ │ move-result-object v1 │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 299 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->h:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - const/4 v1, 0x1 │ - │ - invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->getAndSet(Z)Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_0 │ - │ - .line 300 │ - const-string v0, "Unregistering power receivers." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 301 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v0 │ - │ - iget-object v1, p0, Lcom/crashlytics/android/E;->o:Landroid/content/BroadcastReceiver; │ - │ - invoke-virtual {v0, v1}, Landroid/content/ContextWrapper;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V │ - │ - .line 302 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v0 │ - │ - iget-object v1, p0, Lcom/crashlytics/android/E;->n:Landroid/content/BroadcastReceiver; │ - │ - invoke-virtual {v0, v1}, Landroid/content/ContextWrapper;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V │ - │ - .line 307 │ - :cond_0 │ - new-instance v0, Ljava/util/Date; │ - │ - invoke-direct {v0}, Ljava/util/Date;->()V │ - │ - .line 309 │ - new-instance v1, Lcom/crashlytics/android/T; │ - │ - invoke-direct {v1, p0, v0, p1, p2}, Lcom/crashlytics/android/T;->(Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - invoke-direct {p0, v1}, Lcom/crashlytics/android/E;->a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ - │ - .line 319 │ - :try_start_2 │ - const-string v0, "Crashlytics completed exception processing. Invoking default exception handler." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 320 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ - │ - invoke-interface {v0, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - .line 321 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - const/4 v1, 0x0 │ - │ - invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ - :try_end_2 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ - │ - .line 322 │ - :goto_0 │ - monitor-exit p0 │ + invoke-virtual {v0, v1}, Lcom/crashlytics/android/v;->a([Ljava/io/File;)V │ │ + .line 1865 │ return-void │ - │ - .line 316 │ - :catch_0 │ - move-exception v0 │ - │ - .line 317 │ - :try_start_3 │ - const-string v1, "An error occurred in the uncaught exception handler" │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ - │ - .line 319 │ - :try_start_4 │ - const-string v0, "Crashlytics completed exception processing. Invoking default exception handler." │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 320 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ - │ - invoke-interface {v0, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - .line 321 │ - iget-object v0, p0, Lcom/crashlytics/android/E;->l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - const/4 v1, 0x0 │ - │ - invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ - :try_end_4 │ - .catchall {:try_start_4 .. :try_end_4} :catchall_0 │ - │ - goto :goto_0 │ - │ - .line 295 │ - :catchall_0 │ - move-exception v0 │ - │ - monitor-exit p0 │ - │ - throw v0 │ - │ - .line 319 │ - :catchall_1 │ - move-exception v0 │ - │ - :try_start_5 │ - const-string v1, "Crashlytics completed exception processing. Invoking default exception handler." │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ - │ - .line 320 │ - iget-object v1, p0, Lcom/crashlytics/android/E;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ - │ - invoke-interface {v1, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - .line 321 │ - iget-object v1, p0, Lcom/crashlytics/android/E;->l:Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - const/4 v2, 0x0 │ - │ - invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ - │ - throw v0 │ - :try_end_5 │ - .catchall {:try_start_5 .. :try_end_5} :catchall_0 │ .end method ├── smali/com/crashlytics/android/n.smali │ @@ -1,322 +1,56 @@ │ .class final Lcom/crashlytics/android/n; │ -.super Ljava/io/FileOutputStream; │ +.super Ljava/lang/Object; │ .source "SourceFile" │ │ +# interfaces │ +.implements Lcom/crashlytics/android/internal/aU; │ │ -# static fields │ -.field public static final a:Ljava/io/FilenameFilter; │ │ - │ -# instance fields │ -.field private final b:Ljava/lang/String; │ - │ -.field private c:Ljava/io/File; │ - │ -.field private d:Z │ +# annotations │ +.annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/lang/Object;", │ + "Lcom/crashlytics/android/internal/aU", │ + "<", │ + "Lcom/crashlytics/android/V;", │ + ">;" │ + } │ +.end annotation │ │ │ # direct methods │ -.method static constructor ()V │ - .locals 1 │ +.method constructor (Lcom/crashlytics/android/Crashlytics;)V │ + .locals 0 │ │ .prologue │ - .line 99 │ - new-instance v0, Lcom/crashlytics/android/o; │ - │ - invoke-direct {v0}, Lcom/crashlytics/android/o;->()V │ - │ - sput-object v0, Lcom/crashlytics/android/n;->a:Ljava/io/FilenameFilter; │ - │ - return-void │ -.end method │ - │ -.method public constructor (Ljava/io/File;Ljava/lang/String;)V │ - .locals 3 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/FileNotFoundException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 40 │ - new-instance v0, Ljava/io/File; │ - │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - const-string v2, ".cls_temp" │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-direct {v0, p1, v1}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ - │ - invoke-direct {p0, v0}, Ljava/io/FileOutputStream;->(Ljava/io/File;)V │ - │ - .line 33 │ - const/4 v0, 0x0 │ - │ - iput-boolean v0, p0, Lcom/crashlytics/android/n;->d:Z │ - │ - .line 41 │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + .line 637 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - move-result-object v0 │ - │ - sget-object v1, Ljava/io/File;->separator:Ljava/lang/String; │ - │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - iput-object v0, p0, Lcom/crashlytics/android/n;->b:Ljava/lang/String; │ - │ - .line 42 │ - new-instance v0, Ljava/io/File; │ - │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ - │ - iget-object v2, p0, Lcom/crashlytics/android/n;->b:Ljava/lang/String; │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - const-string v2, ".cls_temp" │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V │ - │ - iput-object v0, p0, Lcom/crashlytics/android/n;->c:Ljava/io/File; │ - │ - .line 43 │ return-void │ .end method │ │ │ # virtual methods │ -.method public final a()V │ - .locals 1 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ - │ - .prologue │ - .line 78 │ - iget-boolean v0, p0, Lcom/crashlytics/android/n;->d:Z │ - │ - if-eqz v0, :cond_0 │ - │ - .line 84 │ - :goto_0 │ - return-void │ - │ - .line 81 │ - :cond_0 │ - const/4 v0, 0x1 │ - │ - iput-boolean v0, p0, Lcom/crashlytics/android/n;->d:Z │ - │ - .line 82 │ - invoke-super {p0}, Ljava/io/FileOutputStream;->flush()V │ - │ - .line 83 │ - invoke-super {p0}, Ljava/io/FileOutputStream;->close()V │ - │ - goto :goto_0 │ -.end method │ - │ -.method public final declared-synchronized close()V │ - .locals 5 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/io/IOException; │ - } │ - .end annotation │ +.method public final synthetic a(Lcom/crashlytics/android/internal/aX;)Ljava/lang/Object; │ + .locals 4 │ │ .prologue │ - .line 47 │ - monitor-enter p0 │ - │ - :try_start_0 │ - iget-boolean v0, p0, Lcom/crashlytics/android/n;->d:Z │ - :try_end_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - if-eqz v0, :cond_0 │ - │ - .line 58 │ - :goto_0 │ - monitor-exit p0 │ - │ - return-void │ - │ - .line 50 │ - :cond_0 │ - const/4 v0, 0x1 │ - │ - :try_start_1 │ - iput-boolean v0, p0, Lcom/crashlytics/android/n;->d:Z │ - │ - .line 51 │ - invoke-super {p0}, Ljava/io/FileOutputStream;->flush()V │ - │ - .line 52 │ - invoke-super {p0}, Ljava/io/FileOutputStream;->close()V │ - │ - .line 54 │ - new-instance v1, Ljava/io/File; │ - │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ - │ - iget-object v2, p0, Lcom/crashlytics/android/n;->b:Ljava/lang/String; │ - │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v2, ".cls" │ - │ - invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-direct {v1, v0}, Ljava/io/File;->(Ljava/lang/String;)V │ - │ - .line 56 │ - iget-object v0, p0, Lcom/crashlytics/android/n;->c:Ljava/io/File; │ - │ - invoke-virtual {v0, v1}, Ljava/io/File;->renameTo(Ljava/io/File;)Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ + .line 637 │ + new-instance v0, Lcom/crashlytics/android/W; │ │ - .line 57 │ - const/4 v0, 0x0 │ - │ - iput-object v0, p0, Lcom/crashlytics/android/n;->c:Ljava/io/File; │ - :try_end_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ - │ - goto :goto_0 │ - │ - .line 47 │ - :catchall_0 │ - move-exception v0 │ - │ - monitor-exit p0 │ - │ - throw v0 │ - │ - .line 60 │ - :cond_1 │ - :try_start_2 │ - const-string v0, "" │ - │ - .line 61 │ - invoke-virtual {v1}, Ljava/io/File;->exists()Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_3 │ - │ - .line 62 │ - const-string v0, " (target already exists)" │ - │ - .line 66 │ - :cond_2 │ - :goto_1 │ - new-instance v2, Ljava/io/IOException; │ - │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Could not rename temp file: " │ - │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - iget-object v4, p0, Lcom/crashlytics/android/n;->c:Ljava/io/File; │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - const-string v4, " -> " │ - │ - invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->i()Ljava/lang/String; │ │ move-result-object v1 │ │ - invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + iget-object v2, p1, Lcom/crashlytics/android/internal/aX;->a:Lcom/crashlytics/android/internal/aM; │ │ - move-result-object v0 │ + iget-object v2, v2, Lcom/crashlytics/android/internal/aM;->c:Ljava/lang/String; │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->s()Lcom/crashlytics/android/internal/av; │ │ - move-result-object v0 │ - │ - invoke-direct {v2, v0}, Ljava/io/IOException;->(Ljava/lang/String;)V │ - │ - throw v2 │ - │ - .line 63 │ - :cond_3 │ - iget-object v2, p0, Lcom/crashlytics/android/n;->c:Ljava/io/File; │ - │ - invoke-virtual {v2}, Ljava/io/File;->exists()Z │ - │ - move-result v2 │ - │ - if-nez v2, :cond_2 │ + move-result-object v3 │ │ - .line 64 │ - const-string v0, " (source does not exist)" │ - :try_end_2 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + invoke-direct {v0, v1, v2, v3}, Lcom/crashlytics/android/W;->(Ljava/lang/String;Ljava/lang/String;Lcom/crashlytics/android/internal/av;)V │ │ - goto :goto_1 │ + return-object v0 │ .end method ├── smali/com/crashlytics/android/v.smali │ @@ -1,44 +1,7893 @@ │ .class final Lcom/crashlytics/android/v; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ -.implements Lcom/crashlytics/android/D; │ +.implements Ljava/lang/Thread$UncaughtExceptionHandler; │ │ │ -# annotations │ -.annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/lang/Object;", │ - "Lcom/crashlytics/android/D", │ - "<", │ - "Lcom/crashlytics/android/ax;", │ - ">;" │ - } │ -.end annotation │ +# static fields │ +.field static final a:Ljava/io/FilenameFilter; │ + │ +.field private static b:Ljava/util/Comparator; │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/util/Comparator", │ + "<", │ + "Ljava/io/File;", │ + ">;" │ + } │ + .end annotation │ +.end field │ + │ +.field private static c:Ljava/util/Comparator; │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/util/Comparator", │ + "<", │ + "Ljava/io/File;", │ + ">;" │ + } │ + .end annotation │ +.end field │ + │ +.field private static final d:Ljava/util/regex/Pattern; │ + │ +.field private static final e:Ljava/util/Map; │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;" │ + } │ + .end annotation │ +.end field │ + │ +.field private static final f:Lcom/crashlytics/android/d; │ + │ + │ +# instance fields │ +.field private final g:Ljava/util/concurrent/atomic/AtomicInteger; │ + │ +.field private final h:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ +.field private final i:I │ + │ +.field private final j:Ljava/lang/Thread$UncaughtExceptionHandler; │ + │ +.field private final k:Ljava/io/File; │ + │ +.field private final l:Ljava/io/File; │ + │ +.field private final m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ +.field private final n:Ljava/lang/String; │ + │ +.field private final o:Landroid/content/BroadcastReceiver; │ + │ +.field private final p:Landroid/content/BroadcastReceiver; │ + │ +.field private final q:Lcom/crashlytics/android/d; │ + │ +.field private final r:Lcom/crashlytics/android/d; │ + │ +.field private final s:Ljava/util/concurrent/ExecutorService; │ + │ +.field private t:Landroid/app/ActivityManager$RunningAppProcessInfo; │ + │ +.field private u:Lcom/crashlytics/android/internal/aq; │ + │ +.field private v:Z │ + │ +.field private w:[Ljava/lang/Thread; │ + │ +.field private x:Ljava/util/List; │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "Ljava/util/List", │ + "<[", │ + "Ljava/lang/StackTraceElement;", │ + ">;" │ + } │ + .end annotation │ +.end field │ + │ +.field private y:[Ljava/lang/StackTraceElement; │ │ │ # direct methods │ -.method constructor (Lcom/crashlytics/android/Crashlytics;)V │ - .locals 0 │ +.method static constructor ()V │ + .locals 2 │ + │ + .prologue │ + .line 124 │ + new-instance v0, Lcom/crashlytics/android/w; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/w;->()V │ + │ + sput-object v0, Lcom/crashlytics/android/v;->a:Ljava/io/FilenameFilter; │ + │ + .line 132 │ + new-instance v0, Lcom/crashlytics/android/H; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/H;->()V │ + │ + sput-object v0, Lcom/crashlytics/android/v;->b:Ljava/util/Comparator; │ + │ + .line 139 │ + new-instance v0, Lcom/crashlytics/android/J; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/J;->()V │ + │ + sput-object v0, Lcom/crashlytics/android/v;->c:Ljava/util/Comparator; │ + │ + .line 149 │ + new-instance v0, Lcom/crashlytics/android/K; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/K;->()V │ + │ + .line 156 │ + const-string v0, "([\\d|A-Z|a-z]{12}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{4}\\-[\\d|A-Z|a-z]{12}).+" │ + │ + invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern; │ + │ + move-result-object v0 │ + │ + sput-object v0, Lcom/crashlytics/android/v;->d:Ljava/util/regex/Pattern; │ + │ + .line 159 │ + const-string v0, "X-CRASHLYTICS-SEND-FLAGS" │ + │ + const-string v1, "1" │ + │ + invoke-static {v0, v1}, Ljava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; │ + │ + move-result-object v0 │ + │ + sput-object v0, Lcom/crashlytics/android/v;->e:Ljava/util/Map; │ + │ + .line 181 │ + const-string v0, "0" │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + sput-object v0, Lcom/crashlytics/android/v;->f:Lcom/crashlytics/android/d; │ + │ + return-void │ +.end method │ + │ +.method public constructor (Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/lang/String;)V │ + .locals 1 │ + │ + .prologue │ + .line 236 │ + const-string v0, "Crashlytics Exception Handler" │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ah;->a(Ljava/lang/String;)Ljava/util/concurrent/ExecutorService; │ + │ + move-result-object v0 │ + │ + invoke-direct {p0, p1, p2, v0, p3}, Lcom/crashlytics/android/v;->(Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/util/concurrent/ExecutorService;Ljava/lang/String;)V │ + │ + .line 238 │ + return-void │ +.end method │ + │ +.method private constructor (Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/crashlytics/android/CrashlyticsListener;Ljava/util/concurrent/ExecutorService;Ljava/lang/String;)V │ + .locals 6 │ │ .prologue │ - .line 663 │ + const/4 v5, 0x1 │ + │ + const/4 v4, 0x0 │ + │ + .line 244 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ + .line 192 │ + new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger; │ + │ + invoke-direct {v0, v4}, Ljava/util/concurrent/atomic/AtomicInteger;->(I)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->g:Ljava/util/concurrent/atomic/AtomicInteger; │ + │ + .line 193 │ + new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + invoke-direct {v0, v4}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->h:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + .line 245 │ + iput-object p1, p0, Lcom/crashlytics/android/v;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ + │ + .line 246 │ + iput-object p3, p0, Lcom/crashlytics/android/v;->s:Ljava/util/concurrent/ExecutorService; │ + │ + .line 247 │ + new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + invoke-direct {v0, v4}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + .line 248 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v0 │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + .line 249 │ + new-instance v0, Ljava/io/File; │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + const-string v2, "initialization_marker" │ + │ + invoke-direct {v0, v1, v2}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->l:Ljava/io/File; │ + │ + .line 250 │ + sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v1, "Crashlytics Android SDK/%s" │ + │ + new-array v2, v5, [Ljava/lang/Object; │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/Crashlytics;->getVersion()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + aput-object v3, v2, v4 │ + │ + invoke-static {v0, v1, v2}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->n:Ljava/lang/String; │ + │ + .line 257 │ + const/16 v0, 0x8 │ + │ + iput v0, p0, Lcom/crashlytics/android/v;->i:I │ + │ + .line 259 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Checking for previous crash marker." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + new-instance v0, Ljava/io/File; │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v1 │ + │ + const-string v2, "crash_marker" │ + │ + invoke-direct {v0, v1, v2}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + │ + invoke-virtual {v0}, Ljava/io/File;->exists()Z │ + │ + move-result v1 │ + │ + if-eqz v1, :cond_0 │ + │ + invoke-virtual {v0}, Ljava/io/File;->delete()Z │ + │ + if-eqz p2, :cond_0 │ + │ + :try_start_0 │ + invoke-interface {p2}, Lcom/crashlytics/android/CrashlyticsListener;->crashlyticsDidDetectCrashDuringPreviousExecution()V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 261 │ + :cond_0 │ + :goto_0 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->q:Lcom/crashlytics/android/d; │ + │ + .line 262 │ + if-nez p4, :cond_1 │ + │ + const/4 v0, 0x0 │ + │ + :goto_1 │ + iput-object v0, p0, Lcom/crashlytics/android/v;->r:Lcom/crashlytics/android/d; │ + │ + .line 264 │ + new-instance v0, Lcom/crashlytics/android/L; │ + │ + invoke-direct {v0, p0}, Lcom/crashlytics/android/L;->(Lcom/crashlytics/android/v;)V │ + │ + iput-object v0, p0, Lcom/crashlytics/android/v;->p:Landroid/content/BroadcastReceiver; │ + │ + .line 271 │ + new-instance v0, Landroid/content/IntentFilter; │ + │ + const-string v1, "android.intent.action.ACTION_POWER_CONNECTED" │ + │ + invoke-direct {v0, v1}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V │ + │ + .line 273 │ + new-instance v1, Lcom/crashlytics/android/M; │ + │ + invoke-direct {v1, p0}, Lcom/crashlytics/android/M;->(Lcom/crashlytics/android/v;)V │ + │ + iput-object v1, p0, Lcom/crashlytics/android/v;->o:Landroid/content/BroadcastReceiver; │ + │ + .line 280 │ + new-instance v1, Landroid/content/IntentFilter; │ + │ + const-string v2, "android.intent.action.ACTION_POWER_DISCONNECTED" │ + │ + invoke-direct {v1, v2}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V │ + │ + .line 282 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v2 │ + │ + iget-object v3, p0, Lcom/crashlytics/android/v;->p:Landroid/content/BroadcastReceiver; │ + │ + invoke-virtual {v2, v3, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; │ + │ + .line 283 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + iget-object v2, p0, Lcom/crashlytics/android/v;->o:Landroid/content/BroadcastReceiver; │ + │ + invoke-virtual {v0, v2, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; │ + │ + .line 284 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->h:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + invoke-virtual {v0, v5}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ + │ + .line 285 │ return-void │ + │ + .line 259 │ + :catch_0 │ + move-exception v0 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Exception thrown by CrashlyticsListener while notifying of previous crash." │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_0 │ + │ + .line 262 │ + :cond_1 │ + const-string v0, "-" │ + │ + const-string v1, "" │ + │ + invoke-virtual {p4, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + goto :goto_1 │ .end method │ │ +.method private static a(FIZIJJ)I │ + .locals 2 │ │ -# virtual methods │ -.method public final synthetic a(Lcom/crashlytics/android/au;)Ljava/lang/Object; │ + .prologue │ + .line 1775 │ + const/4 v0, 0x1 │ + │ + invoke-static {v0, p0}, Lcom/crashlytics/android/h;->b(IF)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1778 │ + const/4 v1, 0x2 │ + │ + invoke-static {v1, p1}, Lcom/crashlytics/android/h;->f(II)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1779 │ + const/4 v1, 0x3 │ + │ + invoke-static {v1, p2}, Lcom/crashlytics/android/h;->b(IZ)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1780 │ + const/4 v1, 0x4 │ + │ + invoke-static {v1, p3}, Lcom/crashlytics/android/h;->d(II)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1781 │ + const/4 v1, 0x5 │ + │ + invoke-static {v1, p4, p5}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1782 │ + const/4 v1, 0x6 │ + │ + invoke-static {v1, p6, p7}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1784 │ + return v0 │ +.end method │ + │ +.method private a(ILcom/crashlytics/android/d;Lcom/crashlytics/android/d;IJJZLjava/util/Map;ILcom/crashlytics/android/d;Lcom/crashlytics/android/d;)I │ + .locals 6 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(I", │ + "Lcom/crashlytics/android/d;", │ + "Lcom/crashlytics/android/d;", │ + "IJJZ", │ + "Ljava/util/Map", │ + "<", │ + "Lcom/crashlytics/android/internal/ap;", │ + "Ljava/lang/String;", │ + ">;I", │ + "Lcom/crashlytics/android/d;", │ + "Lcom/crashlytics/android/d;", │ + ")I" │ + } │ + .end annotation │ + │ + .prologue │ + .line 1292 │ + const/4 v1, 0x1 │ + │ + invoke-static {v1, p2}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + add-int/lit8 v1, v1, 0x0 │ + │ + .line 1295 │ + const/4 v2, 0x3 │ + │ + invoke-static {v2, p1}, Lcom/crashlytics/android/h;->e(II)I │ + │ + move-result v2 │ + │ + add-int/2addr v2, v1 │ + │ + .line 1296 │ + if-nez p3, :cond_0 │ + │ + const/4 v1, 0x0 │ + │ + :goto_0 │ + add-int/2addr v1, v2 │ + │ + .line 1297 │ + const/4 v2, 0x5 │ + │ + invoke-static {v2, p4}, Lcom/crashlytics/android/h;->d(II)I │ + │ + move-result v2 │ + │ + add-int/2addr v1, v2 │ + │ + .line 1298 │ + const/4 v2, 0x6 │ + │ + invoke-static {v2, p5, p6}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v2 │ + │ + add-int/2addr v1, v2 │ + │ + .line 1299 │ + const/4 v2, 0x7 │ + │ + invoke-static {v2, p7, p8}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v2 │ + │ + add-int/2addr v1, v2 │ + │ + .line 1300 │ + const/16 v2, 0xa │ + │ + invoke-static {v2, p9}, Lcom/crashlytics/android/h;->b(IZ)I │ + │ + move-result v2 │ + │ + add-int/2addr v1, v2 │ + │ + .line 1301 │ + if-eqz p10, :cond_1 │ + │ + .line 1302 │ + invoke-interface/range {p10 .. p10}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + │ + move-result-object v2 │ + │ + invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v4 │ + │ + move v3, v1 │ + │ + :goto_1 │ + invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + │ + move-result v1 │ + │ + if-eqz v1, :cond_2 │ + │ + invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + move-object v2, v1 │ + │ + check-cast v2, Ljava/util/Map$Entry; │ + │ + .line 1303 │ + invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + check-cast v1, Lcom/crashlytics/android/internal/ap; │ + │ + invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + │ + move-result-object v2 │ + │ + check-cast v2, Ljava/lang/String; │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/internal/ap;Ljava/lang/String;)I │ + │ + move-result v1 │ + │ + .line 1304 │ + const/16 v2, 0xb │ + │ + invoke-static {v2}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v2 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v5 │ + │ + add-int/2addr v2, v5 │ + │ + add-int/2addr v1, v2 │ + │ + add-int/2addr v1, v3 │ + │ + move v3, v1 │ + │ + .line 1306 │ + goto :goto_1 │ + │ + .line 1296 │ + :cond_0 │ + const/4 v1, 0x4 │ + │ + invoke-static {v1, p3}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + goto :goto_0 │ + │ + :cond_1 │ + move v3, v1 │ + │ + .line 1308 │ + :cond_2 │ + const/16 v1, 0xc │ + │ + move/from16 v0, p11 │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/h;->d(II)I │ + │ + move-result v1 │ + │ + add-int v2, v3, v1 │ + │ + .line 1309 │ + if-nez p12, :cond_3 │ + │ + const/4 v1, 0x0 │ + │ + :goto_2 │ + add-int/2addr v2, v1 │ + │ + .line 1310 │ + if-nez p13, :cond_4 │ + │ + const/4 v1, 0x0 │ + │ + :goto_3 │ + add-int/2addr v1, v2 │ + │ + .line 1312 │ + return v1 │ + │ + .line 1309 │ + :cond_3 │ + const/16 v1, 0xd │ + │ + move-object/from16 v0, p12 │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + goto :goto_2 │ + │ + .line 1310 │ + :cond_4 │ + const/16 v1, 0xe │ + │ + move-object/from16 v0, p13 │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + goto :goto_3 │ +.end method │ + │ +.method private static a(Lcom/crashlytics/android/internal/ap;Ljava/lang/String;)I │ + .locals 3 │ + │ + .prologue │ + .line 1283 │ + const/4 v0, 0x1 │ + │ + iget v1, p0, Lcom/crashlytics/android/internal/ap;->f:I │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/h;->e(II)I │ + │ + move-result v0 │ + │ + .line 1284 │ + const/4 v1, 0x2 │ + │ + invoke-static {p1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v2 │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1286 │ + return v0 │ +.end method │ + │ +.method private static a(Ljava/lang/StackTraceElement;Z)I │ + .locals 6 │ + │ + .prologue │ + const/4 v1, 0x2 │ + │ + const/4 v5, 0x1 │ + │ + const/4 v2, 0x0 │ + │ + .line 1608 │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + .line 1612 │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getLineNumber()I │ + │ + move-result v0 │ + │ + invoke-static {v0, v2}, Ljava/lang/Math;->max(II)I │ + │ + move-result v0 │ + │ + int-to-long v3, v0 │ + │ + invoke-static {v5, v3, v4}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1617 │ + :goto_0 │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, "." │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getMethodName()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-static {v3}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v3 │ + │ + invoke-static {v1, v3}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v3 │ + │ + add-int/2addr v0, v3 │ + │ + .line 1621 │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + if-eqz v3, :cond_0 │ + │ + .line 1622 │ + const/4 v3, 0x3 │ + │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-static {v4}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v4 │ + │ + invoke-static {v3, v4}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v3 │ + │ + add-int/2addr v0, v3 │ + │ + .line 1625 │ + :cond_0 │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ + │ + move-result v3 │ + │ + if-nez v3, :cond_3 │ + │ + .line 1626 │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getLineNumber()I │ + │ + move-result v3 │ + │ + if-lez v3, :cond_3 │ + │ + .line 1628 │ + const/4 v3, 0x4 │ + │ + invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getLineNumber()I │ + │ + move-result v4 │ + │ + int-to-long v4, v4 │ + │ + invoke-static {v3, v4, v5}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v3 │ + │ + add-int/2addr v0, v3 │ + │ + move v3, v0 │ + │ + .line 1631 │ + :goto_1 │ + const/4 v4, 0x5 │ + │ + if-eqz p1, :cond_2 │ + │ + move v0, v1 │ + │ + :goto_2 │ + invoke-static {v4, v0}, Lcom/crashlytics/android/h;->d(II)I │ + │ + move-result v0 │ + │ + add-int/2addr v0, v3 │ + │ + .line 1633 │ + return v0 │ + │ + .line 1614 │ + :cond_1 │ + const-wide/16 v3, 0x0 │ + │ + invoke-static {v5, v3, v4}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + goto :goto_0 │ + │ + :cond_2 │ + move v0, v2 │ + │ + .line 1631 │ + goto :goto_2 │ + │ + :cond_3 │ + move v3, v0 │ + │ + goto :goto_1 │ +.end method │ + │ +.method private static a(Ljava/lang/String;Ljava/lang/String;)I │ + .locals 3 │ + │ + .prologue │ + .line 1768 │ + const/4 v0, 0x1 │ + │ + invoke-static {p0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v1 │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v0 │ + │ + .line 1769 │ + const/4 v1, 0x2 │ + │ + if-nez p1, :cond_0 │ + │ + const-string p1, "" │ + │ + :cond_0 │ + invoke-static {p1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v2 │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1770 │ + return v0 │ +.end method │ + │ +.method private a(Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/util/Map;)I │ + .locals 6 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Ljava/lang/Thread;", │ + "Ljava/lang/Throwable;", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;)I" │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v3, 0x1 │ + │ + .line 1714 │ + invoke-direct {p0, p1, p2}, Lcom/crashlytics/android/v;->b(Ljava/lang/Thread;Ljava/lang/Throwable;)I │ + │ + move-result v0 │ + │ + .line 1717 │ + invoke-static {v3}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v1 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v2 │ + │ + add-int/2addr v1, v2 │ + │ + add-int/2addr v0, v1 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1720 │ + if-eqz p3, :cond_0 │ + │ + .line 1721 │ + invoke-interface {p3}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + │ + move-result-object v1 │ + │ + invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v4 │ + │ + move v2, v0 │ + │ + :goto_0 │ + invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + move-object v1, v0 │ + │ + check-cast v1, Ljava/util/Map$Entry; │ + │ + .line 1722 │ + invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Ljava/lang/String; │ + │ + invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + check-cast v1, Ljava/lang/String; │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/lang/String;Ljava/lang/String;)I │ + │ + move-result v0 │ + │ + .line 1723 │ + const/4 v1, 0x2 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v1 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v5 │ + │ + add-int/2addr v1, v5 │ + │ + add-int/2addr v0, v1 │ + │ + add-int/2addr v0, v2 │ + │ + move v2, v0 │ + │ + .line 1725 │ + goto :goto_0 │ + │ + :cond_0 │ + move v2, v0 │ + │ + .line 1729 │ + :cond_1 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->t:Landroid/app/ActivityManager$RunningAppProcessInfo; │ + │ + if-eqz v0, :cond_2 │ + │ + .line 1730 │ + const/4 v1, 0x3 │ + │ + iget-object v0, p0, Lcom/crashlytics/android/v;->t:Landroid/app/ActivityManager$RunningAppProcessInfo; │ + │ + iget v0, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I │ + │ + const/16 v4, 0x64 │ + │ + if-eq v0, v4, :cond_3 │ + │ + move v0, v3 │ + │ + :goto_1 │ + invoke-static {v1, v0}, Lcom/crashlytics/android/h;->b(IZ)I │ + │ + move-result v0 │ + │ + add-int/2addr v2, v0 │ + │ + .line 1733 │ + :cond_2 │ + const/4 v0, 0x4 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; │ + │ + move-result-object v1 │ + │ + iget v1, v1, Landroid/content/res/Configuration;->orientation:I │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/h;->d(II)I │ + │ + move-result v0 │ + │ + add-int/2addr v0, v2 │ + │ + .line 1736 │ + return v0 │ + │ + .line 1730 │ + :cond_3 │ + const/4 v0, 0x0 │ + │ + goto :goto_1 │ +.end method │ + │ +.method private a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ + .locals 6 │ + │ + .prologue │ + .line 1582 │ + const/4 v0, 0x1 │ + │ + invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v1 │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v0 │ + │ + .line 1583 │ + const/4 v1, 0x2 │ + │ + invoke-static {v1, p3}, Lcom/crashlytics/android/h;->d(II)I │ + │ + move-result v1 │ + │ + add-int/2addr v1, v0 │ + │ + .line 1585 │ + array-length v2, p2 │ + │ + const/4 v0, 0x0 │ + │ + :goto_0 │ + if-ge v0, v2, :cond_0 │ + │ + aget-object v3, p2, v0 │ + │ + .line 1586 │ + invoke-static {v3, p4}, Lcom/crashlytics/android/v;->a(Ljava/lang/StackTraceElement;Z)I │ + │ + move-result v3 │ + │ + .line 1587 │ + const/4 v4, 0x3 │ + │ + invoke-static {v4}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v4 │ + │ + invoke-static {v3}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v5 │ + │ + add-int/2addr v4, v5 │ + │ + add-int/2addr v3, v4 │ + │ + add-int/2addr v1, v3 │ + │ + .line 1585 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_0 │ + │ + .line 1591 │ + :cond_0 │ + return v1 │ +.end method │ + │ +.method private a(Ljava/lang/Throwable;I)I │ + .locals 9 │ + │ + .prologue │ + const/4 v8, 0x1 │ + │ + const/4 v1, 0x0 │ + │ + .line 1793 │ + invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + invoke-static {v8, v0}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1798 │ + invoke-virtual {p1}, Ljava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + .line 1799 │ + if-eqz v2, :cond_0 │ + │ + .line 1800 │ + const/4 v3, 0x3 │ + │ + invoke-static {v2}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v2 │ + │ + invoke-static {v3, v2}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v2 │ + │ + add-int/2addr v0, v2 │ + │ + .line 1803 │ + :cond_0 │ + invoke-virtual {p1}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ + │ + move-result-object v4 │ + │ + array-length v5, v4 │ + │ + move v2, v1 │ + │ + :goto_0 │ + if-ge v2, v5, :cond_1 │ + │ + aget-object v3, v4, v2 │ + │ + .line 1804 │ + invoke-static {v3, v8}, Lcom/crashlytics/android/v;->a(Ljava/lang/StackTraceElement;Z)I │ + │ + move-result v3 │ + │ + .line 1805 │ + const/4 v6, 0x4 │ + │ + invoke-static {v6}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v6 │ + │ + invoke-static {v3}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v7 │ + │ + add-int/2addr v6, v7 │ + │ + add-int/2addr v3, v6 │ + │ + add-int/2addr v3, v0 │ + │ + .line 1803 │ + add-int/lit8 v0, v2, 0x1 │ + │ + move v2, v0 │ + │ + move v0, v3 │ + │ + goto :goto_0 │ + │ + .line 1811 │ + :cond_1 │ + invoke-virtual {p1}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ + │ + move-result-object v2 │ + │ + .line 1812 │ + if-eqz v2, :cond_2 │ + │ + .line 1813 │ + const/16 v3, 0x8 │ + │ + if-ge p2, v3, :cond_3 │ + │ + .line 1814 │ + add-int/lit8 v1, p2, 0x1 │ + │ + invoke-direct {p0, v2, v1}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;I)I │ + │ + move-result v1 │ + │ + .line 1815 │ + const/4 v2, 0x6 │ + │ + invoke-static {v2}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v2 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v3 │ + │ + add-int/2addr v2, v3 │ + │ + add-int/2addr v1, v2 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1830 │ + :cond_2 │ + :goto_1 │ + return v0 │ + │ + .line 1821 │ + :cond_3 │ + :goto_2 │ + if-eqz v2, :cond_4 │ + │ + .line 1822 │ + invoke-virtual {v2}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ + │ + move-result-object v2 │ + │ + .line 1823 │ + add-int/lit8 v1, v1, 0x1 │ + │ + goto :goto_2 │ + │ + .line 1826 │ + :cond_4 │ + const/4 v2, 0x7 │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/h;->d(II)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + goto :goto_1 │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/internal/aq;)Lcom/crashlytics/android/d; │ + .locals 7 │ + │ + .prologue │ + const/4 v6, 0x0 │ + │ + .line 402 │ + if-nez p1, :cond_0 │ + │ + .line 403 │ + const/4 v0, 0x0 │ + │ + .line 429 │ + :goto_0 │ + return-object v0 │ + │ + .line 409 │ + :cond_0 │ + const/4 v0, 0x1 │ + │ + new-array v1, v0, [I │ + │ + aput v6, v1, v6 │ + │ + .line 411 │ + invoke-virtual {p1}, Lcom/crashlytics/android/internal/aq;->a()I │ + │ + move-result v0 │ + │ + new-array v2, v0, [B │ + │ + .line 414 │ + :try_start_0 │ + new-instance v0, Lcom/crashlytics/android/y; │ + │ + invoke-direct {v0, p0, v2, v1}, Lcom/crashlytics/android/y;->(Lcom/crashlytics/android/v;[B[I)V │ + │ + invoke-virtual {p1, v0}, Lcom/crashlytics/android/internal/aq;->a(Lcom/crashlytics/android/internal/au;)V │ + :try_end_0 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 429 │ + :goto_1 │ + aget v0, v1, v6 │ + │ + invoke-static {v2, v6, v0}, Lcom/crashlytics/android/d;->a([BII)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + goto :goto_0 │ + │ + .line 425 │ + :catch_0 │ + move-exception v0 │ + │ + .line 426 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + const-string v5, "A problem occurred while reading the Crashlytics log file." │ + │ + invoke-interface {v3, v4, v5, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_1 │ +.end method │ + │ +.method private a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ + .locals 5 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Ljava/util/concurrent/Callable", │ + ";)TT;" │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v0, 0x0 │ + │ + .line 1936 │ + :try_start_0 │ + iget-object v1, p0, Lcom/crashlytics/android/v;->s:Ljava/util/concurrent/ExecutorService; │ + │ + invoke-interface {v1, p1}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ + │ + move-result-object v1 │ + │ + invoke-interface {v1}, Ljava/util/concurrent/Future;->get()Ljava/lang/Object; │ + :try_end_0 │ + .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1 │ + │ + move-result-object v0 │ + │ + .line 1942 │ + :goto_0 │ + return-object v0 │ + │ + .line 1938 │ + :catch_0 │ + move-exception v1 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Executor is shut down because we\'re handling a fatal crash." │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + goto :goto_0 │ + │ + .line 1940 │ + :catch_1 │ + move-exception v1 │ + │ + .line 1941 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v2 │ + │ + const-string v3, "Crashlytics" │ + │ + const-string v4, "Failed to execute task." │ + │ + invoke-interface {v2, v3, v4, v1}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_0 │ +.end method │ + │ +.method private static a(Ljava/io/File;)Ljava/lang/String; │ + .locals 3 │ + │ + .prologue │ + .line 786 │ + invoke-virtual {p0}, Ljava/io/File;->getName()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + const/4 v1, 0x0 │ + │ + const/16 v2, 0x23 │ + │ + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method private a(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ + .locals 3 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Ljava/lang/Runnable;", │ + ")", │ + "Ljava/util/concurrent/Future", │ + "<*>;" │ + } │ + .end annotation │ + │ + .prologue │ + .line 1958 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->s:Ljava/util/concurrent/ExecutorService; │ + │ + new-instance v1, Lcom/crashlytics/android/G; │ + │ + invoke-direct {v1, p0, p1}, Lcom/crashlytics/android/G;->(Lcom/crashlytics/android/v;Ljava/lang/Runnable;)V │ + │ + invoke-interface {v0, v1}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ + :try_end_0 │ + .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + move-result-object v0 │ + │ + .line 1970 │ + :goto_0 │ + return-object v0 │ + │ + .line 1969 │ + :catch_0 │ + move-exception v0 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Executor is shut down because we\'re handling a fatal crash." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 1970 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ +.end method │ + │ +.method static synthetic a(Lcom/crashlytics/android/v;)Ljava/util/concurrent/atomic/AtomicBoolean; │ + .locals 1 │ + │ + .prologue │ + .line 66 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + return-object v0 │ +.end method │ + │ +.method private static a(Lcom/crashlytics/android/f;)V │ + .locals 4 │ + │ + .prologue │ + .line 872 │ + if-eqz p0, :cond_0 │ + │ + .line 874 │ + :try_start_0 │ + invoke-virtual {p0}, Lcom/crashlytics/android/f;->a()V │ + :try_end_0 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 879 │ + :cond_0 │ + :goto_0 │ + return-void │ + │ + .line 875 │ + :catch_0 │ + move-exception v0 │ + │ + .line 876 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Error closing session file stream in the presence of an exception" │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_0 │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/h;ILjava/lang/StackTraceElement;Z)V │ + .locals 6 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v0, 0x4 │ + │ + const/4 v5, 0x2 │ + │ + const/4 v4, 0x1 │ + │ + const/4 v1, 0x0 │ + │ + .line 1638 │ + invoke-virtual {p1, p2, v5}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1639 │ + invoke-static {p3, p4}, Lcom/crashlytics/android/v;->a(Ljava/lang/StackTraceElement;Z)I │ + │ + move-result v2 │ + │ + invoke-virtual {p1, v2}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1641 │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ + │ + move-result v2 │ + │ + if-eqz v2, :cond_2 │ + │ + .line 1644 │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getLineNumber()I │ + │ + move-result v2 │ + │ + invoke-static {v2, v1}, Ljava/lang/Math;->max(II)I │ + │ + move-result v2 │ + │ + int-to-long v2, v2 │ + │ + invoke-virtual {p1, v4, v2, v3}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1649 │ + :goto_0 │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v3, "." │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getMethodName()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-static {v2}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v2 │ + │ + invoke-virtual {p1, v5, v2}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1651 │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + if-eqz v2, :cond_0 │ + │ + .line 1652 │ + const/4 v2, 0x3 │ + │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-static {v3}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v3 │ + │ + invoke-virtual {p1, v2, v3}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1655 │ + :cond_0 │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->isNativeMethod()Z │ + │ + move-result v2 │ + │ + if-nez v2, :cond_1 │ + │ + .line 1658 │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getLineNumber()I │ + │ + move-result v2 │ + │ + if-lez v2, :cond_1 │ + │ + .line 1659 │ + invoke-virtual {p3}, Ljava/lang/StackTraceElement;->getLineNumber()I │ + │ + move-result v2 │ + │ + int-to-long v2, v2 │ + │ + invoke-virtual {p1, v0, v2, v3}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1666 │ + :cond_1 │ + const/4 v2, 0x5 │ + │ + if-eqz p4, :cond_3 │ + │ + :goto_1 │ + invoke-virtual {p1, v2, v0}, Lcom/crashlytics/android/h;->a(II)V │ + │ + .line 1667 │ + return-void │ + │ + .line 1646 │ + :cond_2 │ + const-wide/16 v2, 0x0 │ + │ + invoke-virtual {p1, v4, v2, v3}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + goto :goto_0 │ + │ + :cond_3 │ + move v0, v1 │ + │ + .line 1666 │ + goto :goto_1 │ +.end method │ + │ +.method private static a(Lcom/crashlytics/android/h;Ljava/io/File;)V │ + .locals 5 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v2, 0x0 │ + │ + .line 1319 │ + invoke-virtual {p1}, Ljava/io/File;->exists()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + .line 1321 │ + invoke-virtual {p1}, Ljava/io/File;->length()J │ + │ + move-result-wide v0 │ + │ + .line 1322 │ + long-to-int v0, v0 │ + │ + new-array v3, v0, [B │ + │ + .line 1327 │ + :try_start_0 │ + new-instance v1, Ljava/io/FileInputStream; │ + │ + invoke-direct {v1, p1}, Ljava/io/FileInputStream;->(Ljava/io/File;)V │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + .line 1329 │ + const/4 v0, 0x0 │ + │ + .line 1332 │ + :goto_0 │ + :try_start_1 │ + array-length v2, v3 │ + │ + if-ge v0, v2, :cond_0 │ + │ + array-length v2, v3 │ + │ + sub-int/2addr v2, v0 │ + │ + invoke-virtual {v1, v3, v0, v2}, Ljava/io/FileInputStream;->read([BII)I │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ + │ + move-result v2 │ + │ + if-ltz v2, :cond_0 │ + │ + .line 1333 │ + add-int/2addr v0, v2 │ + │ + goto :goto_0 │ + │ + .line 1336 │ + :cond_0 │ + const-string v0, "Failed to close file input stream." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 1339 │ + invoke-virtual {p0, v3}, Lcom/crashlytics/android/h;->a([B)V │ + │ + .line 1343 │ + :goto_1 │ + return-void │ + │ + .line 1336 │ + :catchall_0 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_2 │ + const-string v2, "Failed to close file input stream." │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + .line 1341 │ + :cond_1 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Tried to include a file that doesn\'t exist: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v0, v1, v3, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_1 │ + │ + .line 1336 │ + :catchall_1 │ + move-exception v0 │ + │ + goto :goto_2 │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/h;Ljava/lang/String;)V │ + .locals 10 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v1, 0x0 │ + │ + .line 895 │ + const/4 v0, 0x4 │ + │ + new-array v2, v0, [Ljava/lang/String; │ + │ + const-string v0, "SessionUser" │ + │ + aput-object v0, v2, v1 │ + │ + const/4 v0, 0x1 │ + │ + const-string v3, "SessionApp" │ + │ + aput-object v3, v2, v0 │ + │ + const/4 v0, 0x2 │ + │ + const-string v3, "SessionOS" │ + │ + aput-object v3, v2, v0 │ + │ + const/4 v0, 0x3 │ + │ + const-string v3, "SessionDevice" │ + │ + aput-object v3, v2, v0 │ + │ + .line 897 │ + array-length v3, v2 │ + │ + move v0, v1 │ + │ + :goto_0 │ + if-ge v0, v3, :cond_1 │ + │ + aget-object v4, v2, v0 │ + │ + .line 898 │ + new-instance v5, Lcom/crashlytics/android/R; │ + │ + new-instance v6, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v6}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v6 │ + │ + invoke-direct {v5, v6}, Lcom/crashlytics/android/R;->(Ljava/lang/String;)V │ + │ + invoke-direct {p0, v5}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v5 │ + │ + .line 900 │ + array-length v6, v5 │ + │ + if-nez v6, :cond_0 │ + │ + .line 901 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v5 │ + │ + const-string v6, "Crashlytics" │ + │ + new-instance v7, Ljava/lang/StringBuilder; │ + │ + const-string v8, "Can\'t find " │ + │ + invoke-direct {v7, v8}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + const-string v7, " data for session ID " │ + │ + invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + const/4 v7, 0x0 │ + │ + invoke-interface {v5, v6, v4, v7}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 897 │ + :goto_1 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_0 │ + │ + .line 903 │ + :cond_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v6}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v6 │ + │ + const-string v7, "Crashlytics" │ + │ + new-instance v8, Ljava/lang/StringBuilder; │ + │ + const-string v9, "Collecting " │ + │ + invoke-direct {v8, v9}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v8, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + const-string v8, " data for session ID " │ + │ + invoke-virtual {v4, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-interface {v6, v7, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 904 │ + aget-object v4, v5, v1 │ + │ + invoke-static {p1, v4}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/io/File;)V │ + │ + goto :goto_1 │ + │ + .line 907 │ + :cond_1 │ + return-void │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/h;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + .locals 8 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + .line 1491 │ + const/4 v0, 0x1 │ + │ + const/4 v1, 0x2 │ + │ + invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1492 │ + invoke-direct {p0, p2, p3}, Lcom/crashlytics/android/v;->b(Ljava/lang/Thread;Ljava/lang/Throwable;)I │ + │ + move-result v0 │ + │ + invoke-virtual {p1, v0}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1494 │ + iget-object v3, p0, Lcom/crashlytics/android/v;->y:[Ljava/lang/StackTraceElement; │ + │ + const/4 v4, 0x4 │ + │ + const/4 v5, 0x1 │ + │ + move-object v0, p0 │ + │ + move-object v1, p1 │ + │ + move-object v2, p2 │ + │ + invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)V │ + │ + .line 1498 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->w:[Ljava/lang/Thread; │ + │ + array-length v7, v0 │ + │ + .line 1499 │ + const/4 v0, 0x0 │ + │ + move v6, v0 │ + │ + :goto_0 │ + if-ge v6, v7, :cond_0 │ + │ + .line 1500 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->w:[Ljava/lang/Thread; │ + │ + aget-object v2, v0, v6 │ + │ + .line 1501 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->x:Ljava/util/List; │ + │ + invoke-interface {v0, v6}, Ljava/util/List;->get(I)Ljava/lang/Object; │ + │ + move-result-object v3 │ + │ + check-cast v3, [Ljava/lang/StackTraceElement; │ + │ + const/4 v4, 0x0 │ + │ + const/4 v5, 0x0 │ + │ + move-object v0, p0 │ + │ + move-object v1, p1 │ + │ + invoke-direct/range {v0 .. v5}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)V │ + │ + .line 1499 │ + add-int/lit8 v0, v6, 0x1 │ + │ + move v6, v0 │ + │ + goto :goto_0 │ + │ + .line 1504 │ + :cond_0 │ + const/4 v0, 0x1 │ + │ + const/4 v1, 0x2 │ + │ + invoke-direct {p0, p1, p3, v0, v1}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/lang/Throwable;II)V │ + │ + .line 1506 │ + const/4 v0, 0x3 │ + │ + const/4 v1, 0x2 │ + │ + invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1507 │ + invoke-static {}, Lcom/crashlytics/android/v;->s()I │ + │ + move-result v0 │ + │ + invoke-virtual {p1, v0}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1508 │ + const/4 v0, 0x1 │ + │ + sget-object v1, Lcom/crashlytics/android/v;->f:Lcom/crashlytics/android/d; │ + │ + invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1509 │ + const/4 v0, 0x2 │ + │ + sget-object v1, Lcom/crashlytics/android/v;->f:Lcom/crashlytics/android/d; │ + │ + invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1510 │ + const/4 v0, 0x3 │ + │ + const-wide/16 v1, 0x0 │ + │ + invoke-virtual {p1, v0, v1, v2}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1512 │ + const/4 v0, 0x4 │ + │ + const/4 v1, 0x2 │ + │ + invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1513 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->r()I │ + │ + move-result v0 │ + │ + invoke-virtual {p1, v0}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1514 │ + const/4 v0, 0x1 │ + │ + const-wide/16 v1, 0x0 │ + │ + invoke-virtual {p1, v0, v1, v2}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1515 │ + const/4 v0, 0x2 │ + │ + const-wide/16 v1, 0x0 │ + │ + invoke-virtual {p1, v0, v1, v2}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1516 │ + const/4 v0, 0x3 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->q:Lcom/crashlytics/android/d; │ + │ + invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1517 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->r:Lcom/crashlytics/android/d; │ + │ + if-eqz v0, :cond_1 │ + │ + .line 1518 │ + const/4 v0, 0x4 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->r:Lcom/crashlytics/android/d; │ + │ + invoke-virtual {p1, v0, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1520 │ + :cond_1 │ + return-void │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/h;Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)V │ + .locals 4 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v2, 0x2 │ + │ + const/4 v1, 0x1 │ + │ + .line 1596 │ + invoke-virtual {p1, v1, v2}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1597 │ + invoke-direct {p0, p2, p3, p4, p5}, Lcom/crashlytics/android/v;->a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ + │ + move-result v0 │ + │ + .line 1598 │ + invoke-virtual {p1, v0}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1599 │ + invoke-virtual {p2}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + invoke-virtual {p1, v1, v0}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1600 │ + invoke-virtual {p1, v2, p4}, Lcom/crashlytics/android/h;->a(II)V │ + │ + .line 1602 │ + array-length v1, p3 │ + │ + const/4 v0, 0x0 │ + │ + :goto_0 │ + if-ge v0, v1, :cond_0 │ + │ + aget-object v2, p3, v0 │ + │ + .line 1603 │ + const/4 v3, 0x3 │ + │ + invoke-direct {p0, p1, v3, v2, p5}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;ILjava/lang/StackTraceElement;Z)V │ + │ + .line 1602 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_0 │ + │ + .line 1605 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/h;Ljava/lang/Throwable;II)V │ + .locals 7 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v0, 0x0 │ + │ + const/4 v6, 0x1 │ + │ + .line 1550 │ + const/4 v1, 0x2 │ + │ + invoke-virtual {p1, p4, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1551 │ + invoke-direct {p0, p2, v6}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;I)I │ + │ + move-result v1 │ + │ + invoke-virtual {p1, v1}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1553 │ + invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/Class;->getName()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v1 │ + │ + invoke-virtual {p1, v6, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1554 │ + invoke-virtual {p2}, Ljava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + .line 1555 │ + if-eqz v1, :cond_0 │ + │ + .line 1556 │ + const/4 v2, 0x3 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v1 │ + │ + invoke-virtual {p1, v2, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1559 │ + :cond_0 │ + invoke-virtual {p2}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ + │ + move-result-object v2 │ + │ + array-length v3, v2 │ + │ + move v1, v0 │ + │ + :goto_0 │ + if-ge v1, v3, :cond_1 │ + │ + aget-object v4, v2, v1 │ + │ + .line 1560 │ + const/4 v5, 0x4 │ + │ + invoke-direct {p0, p1, v5, v4, v6}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;ILjava/lang/StackTraceElement;Z)V │ + │ + .line 1559 │ + add-int/lit8 v1, v1, 0x1 │ + │ + goto :goto_0 │ + │ + .line 1563 │ + :cond_1 │ + invoke-virtual {p2}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ + │ + move-result-object v1 │ + │ + .line 1564 │ + if-eqz v1, :cond_2 │ + │ + .line 1565 │ + const/16 v2, 0x8 │ + │ + if-ge p3, v2, :cond_3 │ + │ + .line 1566 │ + add-int/lit8 v0, p3, 0x1 │ + │ + const/4 v2, 0x6 │ + │ + invoke-direct {p0, p1, v1, v0, v2}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/lang/Throwable;II)V │ + │ + .line 1578 │ + :cond_2 │ + :goto_1 │ + return-void │ + │ + .line 1571 │ + :cond_3 │ + :goto_2 │ + if-eqz v1, :cond_4 │ + │ + .line 1572 │ + invoke-virtual {v1}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ + │ + move-result-object v1 │ + │ + .line 1573 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_2 │ + │ + .line 1575 │ + :cond_4 │ + const/4 v1, 0x7 │ + │ + invoke-virtual {p1, v1, v0}, Lcom/crashlytics/android/h;->a(II)V │ + │ + goto :goto_1 │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/h;Ljava/util/Map;)V │ + .locals 5 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Lcom/crashlytics/android/h;", │ + "Ljava/util/Map", │ + "<", │ + "Ljava/lang/String;", │ + "Ljava/lang/String;", │ + ">;)V" │ + } │ + .end annotation │ + │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v4, 0x2 │ + │ + .line 1525 │ + invoke-interface {p2}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + │ + move-result-object v0 │ + │ + invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v3 │ + │ + :goto_0 │ + invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Ljava/util/Map$Entry; │ + │ + .line 1526 │ + invoke-virtual {p1, v4, v4}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1527 │ + invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + check-cast v1, Ljava/lang/String; │ + │ + invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + │ + move-result-object v2 │ + │ + check-cast v2, Ljava/lang/String; │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/v;->a(Ljava/lang/String;Ljava/lang/String;)I │ + │ + move-result v1 │ + │ + invoke-virtual {p1, v1}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1529 │ + const/4 v2, 0x1 │ + │ + invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + check-cast v1, Ljava/lang/String; │ + │ + invoke-static {v1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v1 │ + │ + invoke-virtual {p1, v2, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1530 │ + invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Ljava/lang/String; │ + │ + .line 1531 │ + if-nez v0, :cond_0 │ + │ + const-string v0, "" │ + │ + :cond_0 │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + invoke-virtual {p1, v4, v0}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + goto :goto_0 │ + │ + .line 1533 │ + :cond_1 │ + return-void │ +.end method │ + │ +.method private a(Lcom/crashlytics/android/h;[Ljava/io/File;Ljava/lang/String;)V │ + .locals 10 │ + │ + .prologue │ + const/4 v0, 0x0 │ + │ + .line 882 │ + sget-object v1, Lcom/crashlytics/android/internal/ab;->a:Ljava/util/Comparator; │ + │ + invoke-static {p2, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ + │ + .line 884 │ + array-length v2, p2 │ + │ + move v1, v0 │ + │ + :goto_0 │ + if-ge v1, v2, :cond_0 │ + │ + aget-object v0, p2, v1 │ + │ + .line 886 │ + :try_start_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + sget-object v5, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v6, "Found Non Fatal for session ID %s in %s " │ + │ + const/4 v7, 0x2 │ + │ + new-array v7, v7, [Ljava/lang/Object; │ + │ + const/4 v8, 0x0 │ + │ + aput-object p3, v7, v8 │ + │ + const/4 v8, 0x1 │ + │ + invoke-virtual {v0}, Ljava/io/File;->getName()Ljava/lang/String; │ + │ + move-result-object v9 │ + │ + aput-object v9, v7, v8 │ + │ + invoke-static {v5, v6, v7}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-interface {v3, v4, v5}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 887 │ + invoke-static {p1, v0}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/io/File;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 884 │ + :goto_1 │ + add-int/lit8 v0, v1, 0x1 │ + │ + move v1, v0 │ + │ + goto :goto_0 │ + │ + .line 888 │ + :catch_0 │ + move-exception v0 │ + │ + .line 889 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + const-string v5, "Error writting non-fatal to session." │ + │ + invoke-interface {v3, v4, v5, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_1 │ + │ + .line 892 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method static a(Lcom/crashlytics/android/internal/aq;IJLjava/lang/String;)V │ + .locals 6 │ + │ + .prologue │ + .line 532 │ + if-nez p0, :cond_1 │ + │ + .line 576 │ + :cond_0 │ + :goto_0 │ + return-void │ + │ + .line 535 │ + :cond_1 │ + if-nez p4, :cond_3 │ + │ + .line 536 │ + const-string v0, "null" │ + │ + .line 556 │ + :goto_1 │ + :try_start_0 │ + invoke-virtual {v0}, Ljava/lang/String;->length()I │ + │ + move-result v1 │ + │ + const/16 v2, 0x4000 │ + │ + if-le v1, v2, :cond_2 │ + │ + .line 559 │ + new-instance v1, Ljava/lang/StringBuilder; │ + │ + const-string v2, "..." │ + │ + invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v0}, Ljava/lang/String;->length()I │ + │ + move-result v2 │ + │ + add-int/lit16 v2, v2, -0x4000 │ + │ + invoke-virtual {v0, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + .line 562 │ + :cond_2 │ + const-string v1, "\r" │ + │ + const-string v2, " " │ + │ + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + .line 563 │ + const-string v1, "\n" │ + │ + const-string v2, " " │ + │ + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + .line 565 │ + sget-object v1, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v2, "%d %s%n" │ + │ + const/4 v3, 0x2 │ + │ + new-array v3, v3, [Ljava/lang/Object; │ + │ + const/4 v4, 0x0 │ + │ + invoke-static {p2, p3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ + │ + move-result-object v5 │ + │ + aput-object v5, v3, v4 │ + │ + const/4 v4, 0x1 │ + │ + aput-object v0, v3, v4 │ + │ + invoke-static {v1, v2, v3}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + const-string v1, "UTF-8" │ + │ + invoke-virtual {v0, v1}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B │ + │ + move-result-object v0 │ + │ + .line 567 │ + invoke-virtual {p0, v0}, Lcom/crashlytics/android/internal/aq;->a([B)V │ + │ + .line 570 │ + :goto_2 │ + invoke-virtual {p0}, Lcom/crashlytics/android/internal/aq;->b()Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + invoke-virtual {p0}, Lcom/crashlytics/android/internal/aq;->a()I │ + │ + move-result v0 │ + │ + const/high16 v1, 0x10000 │ + │ + if-le v0, v1, :cond_0 │ + │ + .line 571 │ + invoke-virtual {p0}, Lcom/crashlytics/android/internal/aq;->c()V │ + :try_end_0 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + goto :goto_2 │ + │ + .line 573 │ + :catch_0 │ + move-exception v0 │ + │ + .line 574 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "There was a problem writing to the Crashlytics log." │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_0 │ + │ + :cond_3 │ + move-object v0, p4 │ + │ + goto :goto_1 │ +.end method │ + │ +.method static synthetic a(Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + .locals 8 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v2, 0x0 │ + │ + .line 66 │ + :try_start_0 │ + new-instance v0, Ljava/io/File; │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + const-string v3, "crash_marker" │ + │ + invoke-direct {v0, v1, v3}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + │ + invoke-virtual {v0}, Ljava/io/File;->createNewFile()Z │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->n()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + if-eqz v0, :cond_1 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/Crashlytics;->b(Ljava/lang/String;)V │ + │ + new-instance v7, Lcom/crashlytics/android/f; │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + const-string v3, "SessionCrash" │ + │ + invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-direct {v7, v1, v0}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + :try_start_1 │ + invoke-static {v7}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + │ + move-result-object v2 │ + │ + const-string v5, "crash" │ + │ + const/4 v6, 0x1 │ + │ + move-object v0, p0 │ + │ + move-object v1, p1 │ + │ + move-object v3, p2 │ + │ + move-object v4, p3 │ + │ + invoke-direct/range {v0 .. v6}, Lcom/crashlytics/android/v;->a(Ljava/util/Date;Lcom/crashlytics/android/h;Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/lang/String;Z)V │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ + │ + move-object v0, v7 │ + │ + :goto_0 │ + const-string v1, "Failed to flush to session begin file." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v1, "Failed to close fatal exception file output stream." │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + :goto_1 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->m()V │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->l()V │ + │ + iget-object v0, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + sget-object v1, Lcom/crashlytics/android/v;->a:Ljava/io/FilenameFilter; │ + │ + const/4 v2, 0x4 │ + │ + sget-object v3, Lcom/crashlytics/android/v;->c:Ljava/util/Comparator; │ + │ + invoke-static {v0, v1, v2, v3}, Lcom/crashlytics/android/b;->a(Ljava/io/File;Ljava/io/FilenameFilter;ILjava/util/Comparator;)V │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->j()Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->p()V │ + │ + :cond_0 │ + return-void │ + │ + :cond_1 │ + :try_start_2 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v3, "Tried to write a fatal exception while no session was open." │ + │ + const/4 v4, 0x0 │ + │ + invoke-interface {v0, v1, v3, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + │ + move-object v0, v2 │ + │ + goto :goto_0 │ + │ + :catch_0 │ + move-exception v0 │ + │ + move-object v7, v2 │ + │ + :goto_2 │ + :try_start_3 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v3, "Crashlytics" │ + │ + const-string v4, "An error occurred in the fatal exception logger" │ + │ + invoke-interface {v1, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + invoke-direct {p0, v0, v7}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + :try_end_3 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ + │ + const-string v0, "Failed to flush to session begin file." │ + │ + invoke-static {v2, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v0, "Failed to close fatal exception file output stream." │ + │ + invoke-static {v7, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + goto :goto_1 │ + │ + :catchall_0 │ + move-exception v0 │ + │ + move-object v7, v2 │ + │ + :goto_3 │ + const-string v1, "Failed to flush to session begin file." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v1, "Failed to close fatal exception file output stream." │ + │ + invoke-static {v7, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + :catchall_1 │ + move-exception v0 │ + │ + goto :goto_3 │ + │ + :catch_1 │ + move-exception v0 │ + │ + goto :goto_2 │ +.end method │ + │ +.method private a(Ljava/lang/String;)V │ + .locals 4 │ + │ + .prologue │ + .line 913 │ + new-instance v0, Lcom/crashlytics/android/S; │ + │ + invoke-direct {v0, p1}, Lcom/crashlytics/android/S;->(Ljava/lang/String;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v1 │ + │ + array-length v2, v1 │ + │ + const/4 v0, 0x0 │ + │ + :goto_0 │ + if-ge v0, v2, :cond_0 │ + │ + aget-object v3, v1, v0 │ + │ + .line 914 │ + invoke-virtual {v3}, Ljava/io/File;->delete()Z │ + │ + .line 913 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_0 │ + │ + .line 916 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method private a(Ljava/lang/String;I)V │ + .locals 4 │ + │ + .prologue │ + .line 1355 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + new-instance v1, Lcom/crashlytics/android/R; │ + │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v3, "SessionEvent" │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-direct {v1, v2}, Lcom/crashlytics/android/R;->(Ljava/lang/String;)V │ + │ + sget-object v2, Lcom/crashlytics/android/v;->c:Ljava/util/Comparator; │ + │ + invoke-static {v0, v1, p2, v2}, Lcom/crashlytics/android/b;->a(Ljava/io/File;Ljava/io/FilenameFilter;ILjava/util/Comparator;)V │ + │ + .line 1357 │ + return-void │ +.end method │ + │ +.method private a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + .locals 5 │ + │ + .prologue │ + .line 1089 │ + if-eqz p2, :cond_0 │ + │ + .line 1090 │ + const/4 v2, 0x0 │ + │ + :try_start_0 │ + new-instance v1, Ljava/io/PrintWriter; │ + │ + invoke-direct {v1, p2}, Ljava/io/PrintWriter;->(Ljava/io/OutputStream;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + :try_start_1 │ + invoke-static {p1, v1}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/Writer;)V │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ + │ + const-string v0, "Failed to close stack trace writer." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 1092 │ + :cond_0 │ + :goto_0 │ + return-void │ + │ + .line 1090 │ + :catch_0 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_1 │ + :try_start_2 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v2 │ + │ + const-string v3, "Crashlytics" │ + │ + const-string v4, "Failed to create PrintWriter" │ + │ + invoke-interface {v2, v3, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_2 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ + │ + const-string v0, "Failed to close stack trace writer." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + goto :goto_0 │ + │ + :catchall_0 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_2 │ + const-string v2, "Failed to close stack trace writer." │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + :catchall_1 │ + move-exception v0 │ + │ + goto :goto_2 │ + │ + :catch_1 │ + move-exception v0 │ + │ + goto :goto_1 │ +.end method │ + │ +.method private static a(Ljava/lang/Throwable;Ljava/io/Writer;)V │ + .locals 7 │ + │ + .prologue │ + const/4 v1, 0x0 │ + │ + .line 1122 │ + const/4 v0, 0x1 │ + │ + move v3, v0 │ + │ + .line 1124 │ + :goto_0 │ + if-eqz p0, :cond_4 │ + │ + .line 1125 │ + :try_start_0 │ + invoke-virtual {p0}, Ljava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + if-nez v0, :cond_0 │ + │ + const/4 v0, 0x0 │ + │ + .line 1126 │ + :goto_1 │ + if-eqz v0, :cond_1 │ + │ + move-object v2, v0 │ + │ + .line 1128 │ + :goto_2 │ + if-eqz v3, :cond_2 │ + │ + const-string v0, "" │ + │ + .line 1129 │ + :goto_3 │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + const-string v3, ": " │ + │ + invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + const-string v2, "\n" │ + │ + invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-virtual {p1, v0}, Ljava/io/Writer;->write(Ljava/lang/String;)V │ + │ + .line 1133 │ + invoke-virtual {p0}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ + │ + move-result-object v2 │ + │ + array-length v3, v2 │ + │ + move v0, v1 │ + │ + :goto_4 │ + if-ge v0, v3, :cond_3 │ + │ + aget-object v4, v2, v0 │ + │ + .line 1134 │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + const-string v6, "\tat " │ + │ + invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v4}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + const-string v5, "\n" │ + │ + invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {p1, v4}, Ljava/io/Writer;->write(Ljava/lang/String;)V │ + │ + .line 1133 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_4 │ + │ + .line 1125 │ + :cond_0 │ + const-string v2, "(\r\n|\n|\u000c)" │ + │ + const-string v4, " " │ + │ + invoke-virtual {v0, v2, v4}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + goto :goto_1 │ + │ + .line 1126 │ + :cond_1 │ + const-string v0, "" │ + │ + move-object v2, v0 │ + │ + goto :goto_2 │ + │ + .line 1128 │ + :cond_2 │ + const-string v0, "Caused by: " │ + │ + goto :goto_3 │ + │ + .line 1137 │ + :cond_3 │ + invoke-virtual {p0}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable; │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + move-result-object p0 │ + │ + move v3, v1 │ + │ + .line 1138 │ + goto :goto_0 │ + │ + .line 1139 │ + :catch_0 │ + move-exception v0 │ + │ + .line 1140 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Could not write stack trace" │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 1142 │ + :cond_4 │ + return-void │ +.end method │ + │ +.method private a(Ljava/util/Date;Lcom/crashlytics/android/h;Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/lang/String;Z)V │ + .locals 20 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + .line 1406 │ + invoke-virtual/range {p1 .. p1}, Ljava/util/Date;->getTime()J │ + │ + move-result-wide v4 │ + │ + const-wide/16 v6, 0x3e8 │ + │ + div-long v15, v4, v6 │ + │ + .line 1407 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v4 │ + │ + invoke-static {v4}, Lcom/crashlytics/android/internal/ab;->b(Landroid/content/Context;)F │ + │ + move-result v4 │ + │ + .line 1408 │ + move-object/from16 v0, p0 │ + │ + iget-boolean v5, v0, Lcom/crashlytics/android/v;->v:Z │ + │ + invoke-static {v5}, Lcom/crashlytics/android/internal/ab;->a(Z)I │ + │ + move-result v5 │ + │ + .line 1409 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v6}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v6 │ + │ + invoke-static {v6}, Lcom/crashlytics/android/internal/ab;->c(Landroid/content/Context;)Z │ + │ + move-result v6 │ + │ + .line 1410 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; │ + │ + move-result-object v7 │ + │ + iget v7, v7, Landroid/content/res/Configuration;->orientation:I │ + │ + .line 1411 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->c()J │ + │ + move-result-wide v8 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v10 │ + │ + invoke-virtual {v10}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v10 │ + │ + invoke-static {v10}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;)J │ + │ + move-result-wide v10 │ + │ + sub-long/2addr v8, v10 │ + │ + .line 1412 │ + invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File; │ + │ + move-result-object v10 │ + │ + invoke-virtual {v10}, Ljava/io/File;->getPath()Ljava/lang/String; │ + │ + move-result-object v10 │ + │ + invoke-static {v10}, Lcom/crashlytics/android/internal/ab;->b(Ljava/lang/String;)J │ + │ + move-result-wide v10 │ + │ + .line 1414 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Ljava/lang/String; │ + │ + move-result-object v12 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v13 │ + │ + invoke-virtual {v13}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v13 │ + │ + invoke-static {v12, v13}, Lcom/crashlytics/android/internal/ab;->a(Ljava/lang/String;Landroid/content/Context;)Landroid/app/ActivityManager$RunningAppProcessInfo; │ + │ + move-result-object v12 │ + │ + move-object/from16 v0, p0 │ + │ + iput-object v12, v0, Lcom/crashlytics/android/v;->t:Landroid/app/ActivityManager$RunningAppProcessInfo; │ + │ + .line 1415 │ + new-instance v12, Ljava/util/LinkedList; │ + │ + invoke-direct {v12}, Ljava/util/LinkedList;->()V │ + │ + move-object/from16 v0, p0 │ + │ + iput-object v12, v0, Lcom/crashlytics/android/v;->x:Ljava/util/List; │ + │ + .line 1416 │ + invoke-virtual/range {p4 .. p4}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; │ + │ + move-result-object v12 │ + │ + move-object/from16 v0, p0 │ + │ + iput-object v12, v0, Lcom/crashlytics/android/v;->y:[Ljava/lang/StackTraceElement; │ + │ + .line 1418 │ + if-eqz p6, :cond_0 │ + │ + .line 1419 │ + invoke-static {}, Ljava/lang/Thread;->getAllStackTraces()Ljava/util/Map; │ + │ + move-result-object v13 │ + │ + .line 1420 │ + invoke-interface {v13}, Ljava/util/Map;->size()I │ + │ + move-result v12 │ + │ + new-array v12, v12, [Ljava/lang/Thread; │ + │ + move-object/from16 v0, p0 │ + │ + iput-object v12, v0, Lcom/crashlytics/android/v;->w:[Ljava/lang/Thread; │ + │ + .line 1421 │ + const/4 v12, 0x0 │ + │ + .line 1422 │ + invoke-interface {v13}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + │ + move-result-object v13 │ + │ + invoke-interface {v13}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v17 │ + │ + move v14, v12 │ + │ + :goto_0 │ + invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->hasNext()Z │ + │ + move-result v12 │ + │ + if-eqz v12, :cond_1 │ + │ + invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v12 │ + │ + check-cast v12, Ljava/util/Map$Entry; │ + │ + .line 1423 │ + move-object/from16 v0, p0 │ + │ + iget-object v0, v0, Lcom/crashlytics/android/v;->w:[Ljava/lang/Thread; │ + │ + move-object/from16 v18, v0 │ + │ + invoke-interface {v12}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + │ + move-result-object v13 │ + │ + check-cast v13, Ljava/lang/Thread; │ + │ + aput-object v13, v18, v14 │ + │ + .line 1424 │ + move-object/from16 v0, p0 │ + │ + iget-object v13, v0, Lcom/crashlytics/android/v;->x:Ljava/util/List; │ + │ + invoke-interface {v12}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + │ + move-result-object v12 │ + │ + invoke-interface {v13, v12}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ + │ + .line 1425 │ + add-int/lit8 v12, v14, 0x1 │ + │ + move v14, v12 │ + │ + .line 1426 │ + goto :goto_0 │ + │ + .line 1430 │ + :cond_0 │ + const/4 v12, 0x0 │ + │ + new-array v12, v12, [Ljava/lang/Thread; │ + │ + move-object/from16 v0, p0 │ + │ + iput-object v12, v0, Lcom/crashlytics/android/v;->w:[Ljava/lang/Thread; │ + │ + .line 1433 │ + :cond_1 │ + move-object/from16 v0, p0 │ + │ + iget-object v12, v0, Lcom/crashlytics/android/v;->u:Lcom/crashlytics/android/internal/aq; │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v12}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/internal/aq;)Lcom/crashlytics/android/d; │ + │ + move-result-object v14 │ + │ + .line 1435 │ + if-nez v14, :cond_2 │ + │ + .line 1436 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v12 │ + │ + invoke-virtual {v12}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v12 │ + │ + const-string v13, "Crashlytics" │ + │ + const-string v17, "No log data to include with this event." │ + │ + move-object/from16 v0, v17 │ + │ + invoke-interface {v12, v13, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 1440 │ + :cond_2 │ + move-object/from16 v0, p0 │ + │ + iget-object v12, v0, Lcom/crashlytics/android/v;->u:Lcom/crashlytics/android/internal/aq; │ + │ + const-string v13, "There was a problem closing the Crashlytics log file." │ + │ + invoke-static {v12, v13}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 1441 │ + const/4 v12, 0x0 │ + │ + move-object/from16 v0, p0 │ + │ + iput-object v12, v0, Lcom/crashlytics/android/v;->u:Lcom/crashlytics/android/internal/aq; │ + │ + .line 1444 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v12 │ + │ + invoke-virtual {v12}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v12 │ + │ + const-string v13, "com.crashlytics.CollectCustomKeys" │ + │ + const/16 v17, 0x1 │ + │ + move/from16 v0, v17 │ + │ + invoke-static {v12, v13, v0}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ + │ + move-result v12 │ + │ + if-nez v12, :cond_7 │ + │ + .line 1445 │ + new-instance v12, Ljava/util/TreeMap; │ + │ + invoke-direct {v12}, Ljava/util/TreeMap;->()V │ + │ + .line 1456 │ + :goto_1 │ + const/16 v13, 0xa │ + │ + const/16 v17, 0x2 │ + │ + move-object/from16 v0, p2 │ + │ + move/from16 v1, v17 │ + │ + invoke-virtual {v0, v13, v1}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1457 │ + const/4 v13, 0x1 │ + │ + move-wide v0, v15 │ + │ + invoke-static {v13, v0, v1}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v13 │ + │ + add-int/lit8 v13, v13, 0x0 │ + │ + const/16 v17, 0x2 │ + │ + invoke-static/range {p5 .. p5}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v18 │ + │ + invoke-static/range {v17 .. v18}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v17 │ + │ + add-int v13, v13, v17 │ + │ + move-object/from16 v0, p0 │ + │ + move-object/from16 v1, p3 │ + │ + move-object/from16 v2, p4 │ + │ + invoke-direct {v0, v1, v2, v12}, Lcom/crashlytics/android/v;->a(Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/util/Map;)I │ + │ + move-result v17 │ + │ + const/16 v18, 0x3 │ + │ + invoke-static/range {v18 .. v18}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v18 │ + │ + invoke-static/range {v17 .. v17}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v19 │ + │ + add-int v18, v18, v19 │ + │ + add-int v17, v17, v18 │ + │ + add-int v13, v13, v17 │ + │ + invoke-static/range {v4 .. v11}, Lcom/crashlytics/android/v;->a(FIZIJJ)I │ + │ + move-result v17 │ + │ + const/16 v18, 0x5 │ + │ + invoke-static/range {v18 .. v18}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v18 │ + │ + invoke-static/range {v17 .. v17}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v19 │ + │ + add-int v18, v18, v19 │ + │ + add-int v17, v17, v18 │ + │ + add-int v13, v13, v17 │ + │ + if-eqz v14, :cond_3 │ + │ + const/16 v17, 0x1 │ + │ + move/from16 v0, v17 │ + │ + invoke-static {v0, v14}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v17 │ + │ + const/16 v18, 0x6 │ + │ + invoke-static/range {v18 .. v18}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v18 │ + │ + invoke-static/range {v17 .. v17}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v19 │ + │ + add-int v18, v18, v19 │ + │ + add-int v17, v17, v18 │ + │ + add-int v13, v13, v17 │ + │ + :cond_3 │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v13}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1460 │ + const/4 v13, 0x1 │ + │ + move-object/from16 v0, p2 │ + │ + move-wide v1, v15 │ + │ + invoke-virtual {v0, v13, v1, v2}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1461 │ + const/4 v13, 0x2 │ + │ + invoke-static/range {p5 .. p5}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v15 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v13, v15}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1463 │ + const/4 v13, 0x3 │ + │ + const/4 v15, 0x2 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v13, v15}, Lcom/crashlytics/android/h;->g(II)V │ + │ + move-object/from16 v0, p0 │ + │ + move-object/from16 v1, p3 │ + │ + move-object/from16 v2, p4 │ + │ + invoke-direct {v0, v1, v2, v12}, Lcom/crashlytics/android/v;->a(Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/util/Map;)I │ + │ + move-result v13 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v13}, Lcom/crashlytics/android/h;->b(I)V │ + │ + move-object/from16 v0, p0 │ + │ + move-object/from16 v1, p2 │ + │ + move-object/from16 v2, p3 │ + │ + move-object/from16 v3, p4 │ + │ + invoke-direct {v0, v1, v2, v3}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + │ + if-eqz v12, :cond_4 │ + │ + invoke-interface {v12}, Ljava/util/Map;->isEmpty()Z │ + │ + move-result v13 │ + │ + if-nez v13, :cond_4 │ + │ + move-object/from16 v0, p0 │ + │ + move-object/from16 v1, p2 │ + │ + invoke-direct {v0, v1, v12}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/util/Map;)V │ + │ + :cond_4 │ + move-object/from16 v0, p0 │ + │ + iget-object v12, v0, Lcom/crashlytics/android/v;->t:Landroid/app/ActivityManager$RunningAppProcessInfo; │ + │ + if-eqz v12, :cond_5 │ + │ + const/4 v13, 0x3 │ + │ + move-object/from16 v0, p0 │ + │ + iget-object v12, v0, Lcom/crashlytics/android/v;->t:Landroid/app/ActivityManager$RunningAppProcessInfo; │ + │ + iget v12, v12, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I │ + │ + const/16 v15, 0x64 │ + │ + if-eq v12, v15, :cond_8 │ + │ + const/4 v12, 0x1 │ + │ + :goto_2 │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v13, v12}, Lcom/crashlytics/android/h;->a(IZ)V │ + │ + :cond_5 │ + const/4 v12, 0x4 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v13 │ + │ + invoke-virtual {v13}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v13 │ + │ + invoke-virtual {v13}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + │ + move-result-object v13 │ + │ + invoke-virtual {v13}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; │ + │ + move-result-object v13 │ + │ + iget v13, v13, Landroid/content/res/Configuration;->orientation:I │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v12, v13}, Lcom/crashlytics/android/h;->a(II)V │ + │ + .line 1464 │ + const/4 v12, 0x5 │ + │ + const/4 v13, 0x2 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v12, v13}, Lcom/crashlytics/android/h;->g(II)V │ + │ + invoke-static/range {v4 .. v11}, Lcom/crashlytics/android/v;->a(FIZIJJ)I │ + │ + move-result v12 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v12}, Lcom/crashlytics/android/h;->b(I)V │ + │ + const/4 v12, 0x1 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v12, v4}, Lcom/crashlytics/android/h;->a(IF)V │ + │ + const/4 v4, 0x2 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4, v5}, Lcom/crashlytics/android/h;->c(II)V │ + │ + const/4 v4, 0x3 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4, v6}, Lcom/crashlytics/android/h;->a(IZ)V │ + │ + const/4 v4, 0x4 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4, v7}, Lcom/crashlytics/android/h;->a(II)V │ + │ + const/4 v4, 0x5 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4, v8, v9}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + const/4 v4, 0x6 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4, v10, v11}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1466 │ + if-eqz v14, :cond_6 │ + │ + const/4 v4, 0x6 │ + │ + const/4 v5, 0x2 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4, v5}, Lcom/crashlytics/android/h;->g(II)V │ + │ + const/4 v4, 0x1 │ + │ + invoke-static {v4, v14}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v4 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4}, Lcom/crashlytics/android/h;->b(I)V │ + │ + const/4 v4, 0x1 │ + │ + move-object/from16 v0, p2 │ + │ + invoke-virtual {v0, v4, v14}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1467 │ + :cond_6 │ + return-void │ + │ + .line 1447 │ + :cond_7 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v12 │ + │ + invoke-virtual {v12}, Lcom/crashlytics/android/Crashlytics;->a()Ljava/util/Map; │ + │ + move-result-object v13 │ + │ + .line 1448 │ + if-eqz v13, :cond_9 │ + │ + invoke-interface {v13}, Ljava/util/Map;->size()I │ + │ + move-result v12 │ + │ + const/16 v17, 0x1 │ + │ + move/from16 v0, v17 │ + │ + if-le v12, v0, :cond_9 │ + │ + .line 1452 │ + new-instance v12, Ljava/util/TreeMap; │ + │ + invoke-direct {v12, v13}, Ljava/util/TreeMap;->(Ljava/util/Map;)V │ + │ + goto/16 :goto_1 │ + │ + .line 1463 │ + :cond_8 │ + const/4 v12, 0x0 │ + │ + goto/16 :goto_2 │ + │ + :cond_9 │ + move-object v12, v13 │ + │ + goto/16 :goto_1 │ +.end method │ + │ +.method static synthetic a(Lcom/crashlytics/android/v;Z)Z │ + .locals 0 │ + │ + .prologue │ + .line 66 │ + iput-boolean p1, p0, Lcom/crashlytics/android/v;->v:Z │ + │ + return p1 │ +.end method │ + │ +.method static synthetic a(Lcom/crashlytics/android/v;Ljava/io/FilenameFilter;)[Ljava/io/File; │ + .locals 1 │ + │ + .prologue │ + .line 66 │ + invoke-direct {p0, p1}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method private a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + .locals 1 │ + │ + .prologue │ + .line 941 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + invoke-virtual {v0, p1}, Ljava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v0 │ + │ + if-nez v0, :cond_0 │ + │ + const/4 v0, 0x0 │ + │ + new-array v0, v0, [Ljava/io/File; │ + │ + :cond_0 │ + return-object v0 │ +.end method │ + │ +.method private b(Ljava/lang/Thread;Ljava/lang/Throwable;)I │ + .locals 9 │ + │ + .prologue │ + const/4 v8, 0x3 │ + │ + const/4 v2, 0x0 │ + │ + const/4 v7, 0x1 │ + │ + .line 1740 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->y:[Ljava/lang/StackTraceElement; │ + │ + const/4 v1, 0x4 │ + │ + invoke-direct {p0, p1, v0, v1, v7}, Lcom/crashlytics/android/v;->a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ + │ + move-result v0 │ + │ + .line 1743 │ + invoke-static {v7}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v1 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v3 │ + │ + add-int/2addr v1, v3 │ + │ + add-int/2addr v0, v1 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1745 │ + iget-object v1, p0, Lcom/crashlytics/android/v;->w:[Ljava/lang/Thread; │ + │ + array-length v4, v1 │ + │ + move v1, v2 │ + │ + move v3, v0 │ + │ + .line 1746 │ + :goto_0 │ + if-ge v1, v4, :cond_0 │ + │ + .line 1747 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->w:[Ljava/lang/Thread; │ + │ + aget-object v5, v0, v1 │ + │ + .line 1748 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->x:Ljava/util/List; │ + │ + invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, [Ljava/lang/StackTraceElement; │ + │ + invoke-direct {p0, v5, v0, v2, v2}, Lcom/crashlytics/android/v;->a(Ljava/lang/Thread;[Ljava/lang/StackTraceElement;IZ)I │ + │ + move-result v0 │ + │ + .line 1749 │ + invoke-static {v7}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v5 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v6 │ + │ + add-int/2addr v5, v6 │ + │ + add-int/2addr v0, v5 │ + │ + add-int/2addr v3, v0 │ + │ + .line 1746 │ + add-int/lit8 v0, v1, 0x1 │ + │ + move v1, v0 │ + │ + goto :goto_0 │ + │ + .line 1753 │ + :cond_0 │ + invoke-direct {p0, p2, v7}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;I)I │ + │ + move-result v0 │ + │ + .line 1754 │ + const/4 v1, 0x2 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v1 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v2 │ + │ + add-int/2addr v1, v2 │ + │ + add-int/2addr v0, v1 │ + │ + add-int/2addr v0, v3 │ + │ + .line 1757 │ + invoke-static {}, Lcom/crashlytics/android/v;->s()I │ + │ + move-result v1 │ + │ + .line 1758 │ + invoke-static {v8}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v2 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v3 │ + │ + add-int/2addr v2, v3 │ + │ + add-int/2addr v1, v2 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1760 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->r()I │ + │ + move-result v1 │ + │ + .line 1761 │ + invoke-static {v8}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v2 │ + │ + invoke-static {v1}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v3 │ + │ + add-int/2addr v2, v3 │ + │ + add-int/2addr v1, v2 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1764 │ + return v0 │ +.end method │ + │ +.method private static b(Ljava/lang/String;)Lcom/crashlytics/android/d; │ .locals 1 │ │ .prologue │ - .line 663 │ - invoke-virtual {p1}, Lcom/crashlytics/android/au;->c()Lcom/crashlytics/android/ax; │ + .line 1210 │ + if-nez p0, :cond_0 │ + │ + const/4 v0, 0x0 │ + │ + :goto_0 │ + return-object v0 │ + │ + :cond_0 │ + invoke-static {p0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + goto :goto_0 │ +.end method │ + │ +.method private b(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ + .locals 3 │ + .annotation system Ldalvik/annotation/Signature; │ + value = { │ + "(", │ + "Ljava/util/concurrent/Callable", │ + ";)", │ + "Ljava/util/concurrent/Future", │ + ";" │ + } │ + .end annotation │ + │ + .prologue │ + .line 1986 │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->s:Ljava/util/concurrent/ExecutorService; │ + │ + new-instance v1, Lcom/crashlytics/android/I; │ + │ + invoke-direct {v1, p0, p1}, Lcom/crashlytics/android/I;->(Lcom/crashlytics/android/v;Ljava/util/concurrent/Callable;)V │ + │ + invoke-interface {v0, v1}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ + :try_end_0 │ + .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + move-result-object v0 │ + │ + .line 1999 │ + :goto_0 │ + return-object v0 │ + │ + .line 1998 │ + :catch_0 │ + move-exception v0 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Executor is shut down because we\'re handling a fatal crash." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 1999 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ +.end method │ + │ +.method static synthetic b(Lcom/crashlytics/android/v;)V │ + .locals 0 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + .line 66 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->m()V │ + │ + return-void │ +.end method │ + │ +.method static synthetic b(Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + .locals 9 │ + │ + .prologue │ + const/4 v2, 0x0 │ + │ + .line 66 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->n()Ljava/lang/String; │ + │ + move-result-object v8 │ + │ + if-eqz v8, :cond_0 │ + │ + invoke-static {v8}, Lcom/crashlytics/android/Crashlytics;->a(Ljava/lang/String;)V │ + │ + :try_start_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Crashlytics is logging non-fatal exception \"" │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, "\" from thread " │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {p2}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v0, v1, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + iget-object v0, p0, Lcom/crashlytics/android/v;->g:Ljava/util/concurrent/atomic/AtomicInteger; │ + │ + invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->getAndIncrement()I │ + │ + move-result v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->a(I)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + new-instance v1, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + const-string v3, "SessionEvent" │ + │ + invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + new-instance v7, Lcom/crashlytics/android/f; │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + invoke-direct {v7, v1, v0}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + :try_start_1 │ + invoke-static {v7}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + │ + move-result-object v2 │ + │ + const-string v5, "error" │ + │ + const/4 v6, 0x0 │ + │ + move-object v0, p0 │ + │ + move-object v1, p1 │ + │ + move-object v3, p2 │ + │ + move-object v4, p3 │ + │ + invoke-direct/range {v0 .. v6}, Lcom/crashlytics/android/v;->a(Ljava/util/Date;Lcom/crashlytics/android/h;Ljava/lang/Thread;Ljava/lang/Throwable;Ljava/lang/String;Z)V │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_2 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ + │ + const-string v0, "Failed to flush to non-fatal file." │ + │ + invoke-static {v2, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v0, "Failed to close non-fatal file output stream." │ + │ + invoke-static {v7, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + :goto_0 │ + const/16 v0, 0x40 │ + │ + :try_start_2 │ + invoke-direct {p0, v8, v0}, Lcom/crashlytics/android/v;->a(Ljava/lang/String;I)V │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_1 │ + │ + :goto_1 │ + return-void │ + │ + :catch_0 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_2 │ + :try_start_3 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + const-string v5, "An error occurred in the non-fatal exception logger" │ + │ + invoke-interface {v3, v4, v5, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + :try_end_3 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_2 │ + │ + const-string v0, "Failed to flush to non-fatal file." │ + │ + invoke-static {v2, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v0, "Failed to close non-fatal file output stream." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + goto :goto_0 │ + │ + :catchall_0 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_3 │ + const-string v3, "Failed to flush to non-fatal file." │ + │ + invoke-static {v2, v3}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v2, "Failed to close non-fatal file output stream." │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + :catch_1 │ + move-exception v0 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "An error occurred when trimming non-fatal files." │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_1 │ + │ + :cond_0 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v0 │ │ + const-string v1, "Crashlytics" │ + │ + const-string v3, "Tried to write a non-fatal exception while no session was open." │ + │ + invoke-interface {v0, v1, v3, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_1 │ + │ + :catchall_1 │ + move-exception v0 │ + │ + move-object v1, v7 │ + │ + goto :goto_3 │ + │ + :catchall_2 │ + move-exception v0 │ + │ + goto :goto_3 │ + │ + :catch_2 │ + move-exception v0 │ + │ + move-object v1, v7 │ + │ + goto :goto_2 │ +.end method │ + │ +.method static synthetic c(Lcom/crashlytics/android/v;)V │ + .locals 0 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + .line 66 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->l()V │ + │ + return-void │ +.end method │ + │ +.method private c(Ljava/lang/String;)V │ + .locals 18 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + .line 1218 │ + const/4 v3, 0x0 │ + │ + .line 1219 │ + const/4 v2, 0x0 │ + │ + .line 1221 │ + :try_start_0 │ + new-instance v16, Lcom/crashlytics/android/f; │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v1 │ + │ + new-instance v4, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v4}, Ljava/lang/StringBuilder;->()V │ + │ + move-object/from16 v0, p1 │ + │ + invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + const-string v5, "SessionDevice" │ + │ + invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + move-object/from16 v0, v16 │ + │ + invoke-direct {v0, v1, v4}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_1 │ + │ + .line 1222 │ + :try_start_1 │ + invoke-static/range {v16 .. v16}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_2 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_2 │ + │ + move-result-object v15 │ + │ + .line 1224 │ + :try_start_2 │ + new-instance v1, Landroid/os/StatFs; │ + │ + invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/io/File;->getPath()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-direct {v1, v2}, Landroid/os/StatFs;->(Ljava/lang/String;)V │ + │ + .line 1226 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->b()I │ + │ + move-result v2 │ + │ + .line 1228 │ + sget-object v3, Landroid/os/Build;->MODEL:Ljava/lang/String; │ + │ + invoke-static {v3}, Lcom/crashlytics/android/v;->b(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v4 │ + │ + .line 1229 │ + sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String; │ + │ + invoke-static {v3}, Lcom/crashlytics/android/v;->b(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v13 │ + │ + .line 1230 │ + sget-object v3, Landroid/os/Build;->PRODUCT:Ljava/lang/String; │ + │ + invoke-static {v3}, Lcom/crashlytics/android/v;->b(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v14 │ + │ + .line 1232 │ + invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/Runtime;->availableProcessors()I │ + │ + move-result v5 │ + │ + .line 1233 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->c()J │ + │ + move-result-wide v6 │ + │ + .line 1234 │ + invoke-virtual {v1}, Landroid/os/StatFs;->getBlockCount()I │ + │ + move-result v3 │ + │ + int-to-long v8, v3 │ + │ + invoke-virtual {v1}, Landroid/os/StatFs;->getBlockSize()I │ + │ + move-result v1 │ + │ + int-to-long v10, v1 │ + │ + mul-long/2addr v8, v10 │ + │ + .line 1235 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->d()Z │ + │ + move-result v10 │ + │ + .line 1237 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->b()Lcom/crashlytics/android/internal/ao; │ + │ + move-result-object v1 │ + │ + .line 1238 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/ao;->e()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-static {v3}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v3 │ + │ + .line 1240 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/ao;->f()Ljava/util/Map; │ + │ + move-result-object v11 │ + │ + .line 1242 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->f()I │ + │ + move-result v12 │ + │ + .line 1244 │ + const/16 v1, 0x9 │ + │ + const/16 v17, 0x2 │ + │ + move/from16 v0, v17 │ + │ + invoke-virtual {v15, v1, v0}, Lcom/crashlytics/android/h;->g(II)V │ + │ + move-object/from16 v1, p0 │ + │ + .line 1246 │ + invoke-direct/range {v1 .. v14}, Lcom/crashlytics/android/v;->a(ILcom/crashlytics/android/d;Lcom/crashlytics/android/d;IJJZLjava/util/Map;ILcom/crashlytics/android/d;Lcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + invoke-virtual {v15, v1}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1249 │ + const/4 v1, 0x1 │ + │ + invoke-virtual {v15, v1, v3}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1251 │ + const/4 v1, 0x3 │ + │ + invoke-virtual {v15, v1, v2}, Lcom/crashlytics/android/h;->b(II)V │ + │ + .line 1252 │ + const/4 v1, 0x4 │ + │ + invoke-virtual {v15, v1, v4}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1253 │ + const/4 v1, 0x5 │ + │ + invoke-virtual {v15, v1, v5}, Lcom/crashlytics/android/h;->a(II)V │ + │ + .line 1254 │ + const/4 v1, 0x6 │ + │ + invoke-virtual {v15, v1, v6, v7}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1255 │ + const/4 v1, 0x7 │ + │ + invoke-virtual {v15, v1, v8, v9}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + .line 1256 │ + const/16 v1, 0xa │ + │ + invoke-virtual {v15, v1, v10}, Lcom/crashlytics/android/h;->a(IZ)V │ + │ + .line 1258 │ + invoke-interface {v11}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + │ + move-result-object v1 │ + │ + invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + │ + move-result-object v4 │ + │ + :goto_0 │ + invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + │ + move-result v1 │ + │ + if-eqz v1, :cond_0 │ + │ + invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + move-object v0, v1 │ + │ + check-cast v0, Ljava/util/Map$Entry; │ + │ + move-object v3, v0 │ + │ + .line 1259 │ + const/16 v1, 0xb │ + │ + const/4 v2, 0x2 │ + │ + invoke-virtual {v15, v1, v2}, Lcom/crashlytics/android/h;->g(II)V │ + │ + .line 1260 │ + invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + check-cast v1, Lcom/crashlytics/android/internal/ap; │ + │ + invoke-interface {v3}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + │ + move-result-object v2 │ + │ + check-cast v2, Ljava/lang/String; │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/internal/ap;Ljava/lang/String;)I │ + │ + move-result v1 │ + │ + invoke-virtual {v15, v1}, Lcom/crashlytics/android/h;->b(I)V │ + │ + .line 1262 │ + const/4 v2, 0x1 │ + │ + invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + check-cast v1, Lcom/crashlytics/android/internal/ap; │ + │ + iget v1, v1, Lcom/crashlytics/android/internal/ap;->f:I │ + │ + invoke-virtual {v15, v2, v1}, Lcom/crashlytics/android/h;->b(II)V │ + │ + .line 1263 │ + const/4 v2, 0x2 │ + │ + invoke-interface {v3}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ + │ + move-result-object v1 │ + │ + check-cast v1, Ljava/lang/String; │ + │ + invoke-static {v1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v15, v2, v1}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_3 │ + │ + goto :goto_0 │ + │ + .line 1273 │ + :catch_0 │ + move-exception v1 │ + │ + move-object v2, v15 │ + │ + move-object/from16 v3, v16 │ + │ + .line 1274 │ + :goto_1 │ + :try_start_3 │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v1, v3}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + │ + .line 1275 │ + throw v1 │ + :try_end_3 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ + │ + .line 1277 │ + :catchall_0 │ + move-exception v1 │ + │ + move-object v15, v2 │ + │ + move-object/from16 v16, v3 │ + │ + :goto_2 │ + const-string v2, "Failed to flush session device info." │ + │ + invoke-static {v15, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + .line 1278 │ + const-string v2, "Failed to close session device file." │ + │ + move-object/from16 v0, v16 │ + │ + invoke-static {v0, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v1 │ + │ + .line 1265 │ + :cond_0 │ + const/16 v1, 0xc │ + │ + :try_start_4 │ + invoke-virtual {v15, v1, v12}, Lcom/crashlytics/android/h;->a(II)V │ + │ + .line 1267 │ + if-eqz v13, :cond_1 │ + │ + .line 1268 │ + const/16 v1, 0xd │ + │ + invoke-virtual {v15, v1, v13}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + .line 1270 │ + :cond_1 │ + if-eqz v14, :cond_2 │ + │ + .line 1271 │ + const/16 v1, 0xe │ + │ + invoke-virtual {v15, v1, v14}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + :try_end_4 │ + .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_0 │ + .catchall {:try_start_4 .. :try_end_4} :catchall_3 │ + │ + .line 1277 │ + :cond_2 │ + const-string v1, "Failed to flush session device info." │ + │ + invoke-static {v15, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + .line 1278 │ + const-string v1, "Failed to close session device file." │ + │ + move-object/from16 v0, v16 │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 1279 │ + return-void │ + │ + .line 1277 │ + :catchall_1 │ + move-exception v1 │ + │ + move-object v15, v2 │ + │ + move-object/from16 v16, v3 │ + │ + goto :goto_2 │ + │ + :catchall_2 │ + move-exception v1 │ + │ + move-object v15, v2 │ + │ + goto :goto_2 │ + │ + :catchall_3 │ + move-exception v1 │ + │ + goto :goto_2 │ + │ + .line 1273 │ + :catch_1 │ + move-exception v1 │ + │ + goto :goto_1 │ + │ + :catch_2 │ + move-exception v1 │ + │ + move-object/from16 v3, v16 │ + │ + goto :goto_1 │ +.end method │ + │ +.method static synthetic d(Lcom/crashlytics/android/v;)Lcom/crashlytics/android/internal/aq; │ + .locals 1 │ + │ + .prologue │ + .line 66 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->u:Lcom/crashlytics/android/internal/aq; │ + │ return-object v0 │ .end method │ + │ +.method static synthetic e(Lcom/crashlytics/android/v;)Z │ + .locals 1 │ + │ + .prologue │ + .line 66 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->k()Z │ + │ + move-result v0 │ + │ + return v0 │ +.end method │ + │ +.method static synthetic f(Lcom/crashlytics/android/v;)Ljava/io/File; │ + .locals 1 │ + │ + .prologue │ + .line 66 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->l:Ljava/io/File; │ + │ + return-object v0 │ +.end method │ + │ +.method static synthetic i()Ljava/util/regex/Pattern; │ + .locals 1 │ + │ + .prologue │ + .line 66 │ + sget-object v0, Lcom/crashlytics/android/v;->d:Ljava/util/regex/Pattern; │ + │ + return-object v0 │ +.end method │ + │ +.method static synthetic j()Ljava/util/Map; │ + .locals 1 │ + │ + .prologue │ + .line 66 │ + sget-object v0, Lcom/crashlytics/android/v;->e:Ljava/util/Map; │ + │ + return-object v0 │ +.end method │ + │ +.method private k()Z │ + .locals 7 │ + │ + .prologue │ + const/4 v1, 0x1 │ + │ + const/4 v0, 0x0 │ + │ + .line 603 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v2 │ + │ + const-string v3, "com.crashlytics.CollectCustomLogs" │ + │ + invoke-static {v2, v3, v1}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ + │ + move-result v2 │ + │ + .line 606 │ + if-nez v2, :cond_0 │ + │ + .line 607 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Preferences requested not to collect custom logs. Aborting log file creation." │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 634 │ + :goto_0 │ + return v0 │ + │ + .line 612 │ + :cond_0 │ + iget-object v2, p0, Lcom/crashlytics/android/v;->u:Lcom/crashlytics/android/internal/aq; │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Could not close log file: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + iget-object v4, p0, Lcom/crashlytics/android/v;->u:Lcom/crashlytics/android/internal/aq; │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-static {v2, v3}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 614 │ + const/4 v3, 0x0 │ + │ + .line 625 │ + :try_start_0 │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + const-string v4, "crashlytics-userlog-" │ + │ + invoke-direct {v2, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Ljava/util/UUID;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v4, ".temp" │ + │ + invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + .line 626 │ + new-instance v2, Ljava/io/File; │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v5 │ + │ + invoke-direct {v2, v5, v4}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 627 │ + :try_start_1 │ + new-instance v3, Lcom/crashlytics/android/internal/aq; │ + │ + invoke-direct {v3, v2}, Lcom/crashlytics/android/internal/aq;->(Ljava/io/File;)V │ + │ + iput-object v3, p0, Lcom/crashlytics/android/v;->u:Lcom/crashlytics/android/internal/aq; │ + │ + .line 628 │ + invoke-virtual {v2}, Ljava/io/File;->delete()Z │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ + │ + move v0, v1 │ + │ + .line 634 │ + goto :goto_0 │ + │ + .line 629 │ + :catch_0 │ + move-exception v1 │ + │ + move-object v2, v3 │ + │ + .line 630 │ + :goto_1 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + const-string v6, "Could not create log file: " │ + │ + invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-interface {v3, v4, v2, v1}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + goto :goto_0 │ + │ + .line 629 │ + :catch_1 │ + move-exception v1 │ + │ + goto :goto_1 │ +.end method │ + │ +.method private l()V │ + .locals 13 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + const/4 v2, 0x0 │ + │ + .line 714 │ + new-instance v0, Ljava/util/Date; │ + │ + invoke-direct {v0}, Ljava/util/Date;->()V │ + │ + .line 715 │ + new-instance v1, Lcom/crashlytics/android/e; │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/Crashlytics;->b()Lcom/crashlytics/android/internal/ao; │ + │ + move-result-object v3 │ + │ + invoke-direct {v1, v3}, Lcom/crashlytics/android/e;->(Lcom/crashlytics/android/internal/ao;)V │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/e;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + .line 717 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v3, "Crashlytics" │ + │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + const-string v6, "Opening an new session with ID " │ + │ + invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-interface {v1, v3, v5}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 719 │ + :try_start_0 │ + new-instance v3, Lcom/crashlytics/android/f; │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v1 │ + │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ + │ + const-string v6, "BeginSession" │ + │ + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-direct {v3, v1, v5}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_7 │ + │ + :try_start_1 │ + invoke-static {v3}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_6 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_8 │ + │ + move-result-object v1 │ + │ + const/4 v5, 0x1 │ + │ + :try_start_2 │ + iget-object v6, p0, Lcom/crashlytics/android/v;->n:Ljava/lang/String; │ + │ + invoke-static {v6}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v1, v5, v6}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/4 v5, 0x2 │ + │ + invoke-static {v4}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v1, v5, v6}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/4 v5, 0x3 │ + │ + invoke-virtual {v0}, Ljava/util/Date;->getTime()J │ + │ + move-result-wide v6 │ + │ + const-wide/16 v8, 0x3e8 │ + │ + div-long/2addr v6, v8 │ + │ + invoke-virtual {v1, v5, v6, v7}, Lcom/crashlytics/android/h;->a(IJ)V │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_7 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_9 │ + │ + const-string v0, "Failed to flush to session begin file." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v0, "Failed to close begin session file." │ + │ + invoke-static {v3, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 720 │ + :try_start_3 │ + new-instance v3, Lcom/crashlytics/android/f; │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v0 │ + │ + new-instance v1, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + const-string v5, "SessionApp" │ + │ + invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-direct {v3, v0, v1}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_3 │ + .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_1 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_4 │ + │ + :try_start_4 │ + invoke-static {v3}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + :try_end_4 │ + .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_4 │ + .catchall {:try_start_4 .. :try_end_4} :catchall_5 │ + │ + move-result-object v1 │ + │ + :try_start_5 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->g()Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-static {v5}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v5 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->f()Ljava/lang/String; │ + │ + move-result-object v6 │ + │ + invoke-static {v6}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v6 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->h()Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-static {v7}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Landroid/content/Context;->getPackageCodePath()Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-static {v7}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Lcom/crashlytics/android/Crashlytics;->b()Lcom/crashlytics/android/internal/ao; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Lcom/crashlytics/android/internal/ao;->b()Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-static {v7}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v7 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->e()Ljava/lang/String; │ + │ + move-result-object v8 │ + │ + invoke-static {v8}, Lcom/crashlytics/android/internal/ai;->a(Ljava/lang/String;)Lcom/crashlytics/android/internal/ai; │ + │ + move-result-object v8 │ + │ + invoke-virtual {v8}, Lcom/crashlytics/android/internal/ai;->a()I │ + │ + move-result v8 │ + │ + const/4 v9, 0x7 │ + │ + const/4 v10, 0x2 │ + │ + invoke-virtual {v1, v9, v10}, Lcom/crashlytics/android/h;->g(II)V │ + │ + const/4 v9, 0x1 │ + │ + invoke-static {v9, v0}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v9 │ + │ + add-int/lit8 v9, v9, 0x0 │ + │ + const/4 v10, 0x2 │ + │ + invoke-static {v10, v5}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v10 │ + │ + add-int/2addr v9, v10 │ + │ + const/4 v10, 0x3 │ + │ + invoke-static {v10, v6}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v10 │ + │ + add-int/2addr v9, v10 │ + │ + invoke-static {}, Lcom/crashlytics/android/v;->q()I │ + │ + move-result v10 │ + │ + const/4 v11, 0x5 │ + │ + invoke-static {v11}, Lcom/crashlytics/android/h;->a(I)I │ + │ + move-result v11 │ + │ + invoke-static {v10}, Lcom/crashlytics/android/h;->c(I)I │ + │ + move-result v12 │ + │ + add-int/2addr v11, v12 │ + │ + add-int/2addr v10, v11 │ + │ + add-int/2addr v9, v10 │ + │ + const/4 v10, 0x6 │ + │ + invoke-static {v10, v7}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v10 │ + │ + add-int/2addr v9, v10 │ + │ + const/16 v10, 0xa │ + │ + invoke-static {v10, v8}, Lcom/crashlytics/android/h;->e(II)I │ + │ + move-result v10 │ + │ + add-int/2addr v9, v10 │ + │ + invoke-virtual {v1, v9}, Lcom/crashlytics/android/h;->b(I)V │ + │ + const/4 v9, 0x1 │ + │ + invoke-virtual {v1, v9, v0}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/4 v0, 0x2 │ + │ + invoke-virtual {v1, v0, v5}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/4 v0, 0x3 │ + │ + invoke-virtual {v1, v0, v6}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/4 v0, 0x5 │ + │ + const/4 v5, 0x2 │ + │ + invoke-virtual {v1, v0, v5}, Lcom/crashlytics/android/h;->g(II)V │ + │ + invoke-static {}, Lcom/crashlytics/android/v;->q()I │ + │ + move-result v0 │ + │ + invoke-virtual {v1, v0}, Lcom/crashlytics/android/h;->b(I)V │ + │ + const/4 v0, 0x1 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v5 │ + │ + const/4 v6, 0x0 │ + │ + invoke-static {v5, v6}, Lcom/crashlytics/android/internal/r;->a(Landroid/content/Context;Z)Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v1, v0, v5}, Lcom/crashlytics/android/h;->a(ILjava/lang/String;)V │ + │ + const/4 v0, 0x6 │ + │ + invoke-virtual {v1, v0, v7}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/16 v0, 0xa │ + │ + invoke-virtual {v1, v0, v8}, Lcom/crashlytics/android/h;->b(II)V │ + :try_end_5 │ + .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_5 │ + .catchall {:try_start_5 .. :try_end_5} :catchall_6 │ + │ + const-string v0, "Failed to flush to session app file." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v0, "Failed to close session app file." │ + │ + invoke-static {v3, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 721 │ + :try_start_6 │ + new-instance v1, Lcom/crashlytics/android/f; │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v0 │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v5, "SessionOS" │ + │ + invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-direct {v1, v0, v3}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_6 │ + .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_6} :catch_2 │ + .catchall {:try_start_6 .. :try_end_6} :catchall_3 │ + │ + :try_start_7 │ + invoke-static {v1}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + │ + move-result-object v2 │ + │ + sget-object v0, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String; │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + sget-object v3, Landroid/os/Build$VERSION;->CODENAME:Ljava/lang/String; │ + │ + invoke-static {v3}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v3 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->e()Z │ + │ + move-result v5 │ + │ + const/16 v6, 0x8 │ + │ + const/4 v7, 0x2 │ + │ + invoke-virtual {v2, v6, v7}, Lcom/crashlytics/android/h;->g(II)V │ + │ + const/4 v6, 0x1 │ + │ + const/4 v7, 0x3 │ + │ + invoke-static {v6, v7}, Lcom/crashlytics/android/h;->e(II)I │ + │ + move-result v6 │ + │ + add-int/lit8 v6, v6, 0x0 │ + │ + const/4 v7, 0x2 │ + │ + invoke-static {v7, v0}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v7 │ + │ + add-int/2addr v6, v7 │ + │ + const/4 v7, 0x3 │ + │ + invoke-static {v7, v3}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v7 │ + │ + add-int/2addr v6, v7 │ + │ + const/4 v7, 0x4 │ + │ + invoke-static {v7, v5}, Lcom/crashlytics/android/h;->b(IZ)I │ + │ + move-result v7 │ + │ + add-int/2addr v6, v7 │ + │ + invoke-virtual {v2, v6}, Lcom/crashlytics/android/h;->b(I)V │ + │ + const/4 v6, 0x1 │ + │ + const/4 v7, 0x3 │ + │ + invoke-virtual {v2, v6, v7}, Lcom/crashlytics/android/h;->b(II)V │ + │ + const/4 v6, 0x2 │ + │ + invoke-virtual {v2, v6, v0}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/4 v0, 0x3 │ + │ + invoke-virtual {v2, v0, v3}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + const/4 v0, 0x4 │ + │ + invoke-virtual {v2, v0, v5}, Lcom/crashlytics/android/h;->a(IZ)V │ + :try_end_7 │ + .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_7} :catch_3 │ + .catchall {:try_start_7 .. :try_end_7} :catchall_2 │ + │ + const-string v0, "Failed to flush to session OS file." │ + │ + invoke-static {v2, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v0, "Failed to close session OS file." │ + │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 722 │ + invoke-direct {p0, v4}, Lcom/crashlytics/android/v;->c(Ljava/lang/String;)V │ + │ + .line 723 │ + return-void │ + │ + .line 719 │ + :catch_0 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_0 │ + :try_start_8 │ + invoke-direct {p0, v0, v2}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + │ + throw v0 │ + :try_end_8 │ + .catchall {:try_start_8 .. :try_end_8} :catchall_0 │ + │ + :catchall_0 │ + move-exception v0 │ + │ + move-object v3, v2 │ + │ + move-object v2, v1 │ + │ + :goto_1 │ + const-string v1, "Failed to flush to session begin file." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v1, "Failed to close begin session file." │ + │ + invoke-static {v3, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + .line 720 │ + :catch_1 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_2 │ + :try_start_9 │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + │ + throw v0 │ + :try_end_9 │ + .catchall {:try_start_9 .. :try_end_9} :catchall_1 │ + │ + :catchall_1 │ + move-exception v0 │ + │ + move-object v3, v1 │ + │ + move-object v1, v2 │ + │ + :goto_3 │ + const-string v2, "Failed to flush to session app file." │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v1, "Failed to close session app file." │ + │ + invoke-static {v3, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + .line 721 │ + :catch_2 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + :goto_4 │ + :try_start_a │ + invoke-direct {p0, v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + │ + throw v0 │ + :try_end_a │ + .catchall {:try_start_a .. :try_end_a} :catchall_2 │ + │ + :catchall_2 │ + move-exception v0 │ + │ + :goto_5 │ + const-string v3, "Failed to flush to session OS file." │ + │ + invoke-static {v2, v3}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v2, "Failed to close session OS file." │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + :catchall_3 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + goto :goto_5 │ + │ + :catch_3 │ + move-exception v0 │ + │ + goto :goto_4 │ + │ + .line 720 │ + :catchall_4 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + move-object v3, v2 │ + │ + goto :goto_3 │ + │ + :catchall_5 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + goto :goto_3 │ + │ + :catchall_6 │ + move-exception v0 │ + │ + goto :goto_3 │ + │ + :catch_4 │ + move-exception v0 │ + │ + move-object v1, v3 │ + │ + goto :goto_2 │ + │ + :catch_5 │ + move-exception v0 │ + │ + move-object v2, v1 │ + │ + move-object v1, v3 │ + │ + goto :goto_2 │ + │ + .line 719 │ + :catchall_7 │ + move-exception v0 │ + │ + move-object v3, v2 │ + │ + goto :goto_1 │ + │ + :catchall_8 │ + move-exception v0 │ + │ + goto :goto_1 │ + │ + :catchall_9 │ + move-exception v0 │ + │ + move-object v2, v1 │ + │ + goto :goto_1 │ + │ + :catch_6 │ + move-exception v0 │ + │ + move-object v1, v2 │ + │ + move-object v2, v3 │ + │ + goto :goto_0 │ + │ + :catch_7 │ + move-exception v0 │ + │ + move-object v2, v3 │ + │ + goto :goto_0 │ +.end method │ + │ +.method private m()V │ + .locals 18 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/lang/Exception; │ + } │ + .end annotation │ + │ + .prologue │ + .line 729 │ + new-instance v2, Ljava/util/HashSet; │ + │ + invoke-direct {v2}, Ljava/util/HashSet;->()V │ + │ + invoke-direct/range {p0 .. p0}, Lcom/crashlytics/android/v;->o()[Ljava/io/File; │ + │ + move-result-object v3 │ + │ + sget-object v1, Lcom/crashlytics/android/v;->b:Ljava/util/Comparator; │ + │ + invoke-static {v3, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ + │ + const/16 v1, 0x8 │ + │ + array-length v4, v3 │ + │ + invoke-static {v1, v4}, Ljava/lang/Math;->min(II)I │ + │ + move-result v4 │ + │ + const/4 v1, 0x0 │ + │ + :goto_0 │ + if-ge v1, v4, :cond_0 │ + │ + aget-object v5, v3, v1 │ + │ + invoke-static {v5}, Lcom/crashlytics/android/v;->a(Ljava/io/File;)Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-interface {v2, v5}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ + │ + add-int/lit8 v1, v1, 0x1 │ + │ + goto :goto_0 │ + │ + :cond_0 │ + new-instance v1, Lcom/crashlytics/android/Q; │ + │ + const/4 v3, 0x0 │ + │ + invoke-direct {v1, v3}, Lcom/crashlytics/android/Q;->(B)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v3 │ + │ + array-length v4, v3 │ + │ + const/4 v1, 0x0 │ + │ + :goto_1 │ + if-ge v1, v4, :cond_2 │ + │ + aget-object v5, v3, v1 │ + │ + invoke-virtual {v5}, Ljava/io/File;->getName()Ljava/lang/String; │ + │ + move-result-object v6 │ + │ + sget-object v7, Lcom/crashlytics/android/v;->d:Ljava/util/regex/Pattern; │ + │ + invoke-virtual {v7, v6}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Ljava/util/regex/Matcher;->matches()Z │ + │ + const/4 v8, 0x1 │ + │ + invoke-virtual {v7, v8}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-interface {v2, v7}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ + │ + move-result v7 │ + │ + if-nez v7, :cond_1 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v7 │ + │ + const-string v8, "Crashlytics" │ + │ + new-instance v9, Ljava/lang/StringBuilder; │ + │ + const-string v10, "Trimming open session file: " │ + │ + invoke-direct {v9, v10}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v6 │ + │ + invoke-interface {v7, v8, v6}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + invoke-virtual {v5}, Ljava/io/File;->delete()Z │ + │ + :cond_1 │ + add-int/lit8 v1, v1, 0x1 │ + │ + goto :goto_1 │ + │ + .line 731 │ + :cond_2 │ + invoke-direct/range {p0 .. p0}, Lcom/crashlytics/android/v;->n()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + .line 733 │ + if-eqz v1, :cond_13 │ + │ + .line 736 │ + const/4 v4, 0x0 │ + │ + const/4 v2, 0x0 │ + │ + :try_start_0 │ + new-instance v3, Lcom/crashlytics/android/f; │ + │ + move-object/from16 v0, p0 │ + │ + iget-object v5, v0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + new-instance v6, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v6}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v6, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + const-string v6, "SessionUser" │ + │ + invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-direct {v3, v5, v1}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_4 │ + │ + :try_start_1 │ + invoke-static {v3}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + │ + move-result-object v2 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->m()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Lcom/crashlytics/android/Crashlytics;->o()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Lcom/crashlytics/android/Crashlytics;->n()Ljava/lang/String; │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_4 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + │ + move-result-object v6 │ + │ + if-nez v1, :cond_6 │ + │ + if-nez v4, :cond_6 │ + │ + if-nez v6, :cond_6 │ + │ + const-string v1, "Failed to flush session user file." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v1, "Failed to close session user file." │ + │ + invoke-static {v3, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 738 │ + :goto_2 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/Crashlytics;->r()Lcom/crashlytics/android/internal/aR; │ + │ + move-result-object v1 │ + │ + .line 740 │ + if-eqz v1, :cond_11 │ + │ + .line 741 │ + iget v8, v1, Lcom/crashlytics/android/internal/aR;->a:I │ + │ + .line 743 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Closing all open sessions." │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 744 │ + invoke-direct/range {p0 .. p0}, Lcom/crashlytics/android/v;->o()[Ljava/io/File; │ + │ + move-result-object v9 │ + │ + .line 746 │ + if-eqz v9, :cond_12 │ + │ + array-length v1, v9 │ + │ + if-lez v1, :cond_12 │ + │ + .line 747 │ + array-length v10, v9 │ + │ + const/4 v1, 0x0 │ + │ + move v6, v1 │ + │ + :goto_3 │ + if-ge v6, v10, :cond_12 │ + │ + aget-object v11, v9, v6 │ + │ + .line 748 │ + invoke-static {v11}, Lcom/crashlytics/android/v;->a(Ljava/io/File;)Ljava/lang/String; │ + │ + move-result-object v12 │ + │ + .line 749 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Closing session: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 750 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Collecting session parts for ID " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + new-instance v1, Lcom/crashlytics/android/R; │ + │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v2, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v3, "SessionCrash" │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-direct {v1, v2}, Lcom/crashlytics/android/R;->(Ljava/lang/String;)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v13 │ + │ + if-eqz v13, :cond_e │ + │ + array-length v1, v13 │ + │ + if-lez v1, :cond_e │ + │ + const/4 v1, 0x1 │ + │ + move v2, v1 │ + │ + :goto_4 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v3, "Crashlytics" │ + │ + sget-object v4, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v5, "Session %s has fatal exception: %s" │ + │ + const/4 v7, 0x2 │ + │ + new-array v7, v7, [Ljava/lang/Object; │ + │ + const/4 v14, 0x0 │ + │ + aput-object v12, v7, v14 │ + │ + const/4 v14, 0x1 │ + │ + invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ + │ + move-result-object v15 │ + │ + aput-object v15, v7, v14 │ + │ + invoke-static {v4, v5, v7}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-interface {v1, v3, v4}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + new-instance v1, Lcom/crashlytics/android/R; │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v3, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, "SessionEvent" │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-direct {v1, v3}, Lcom/crashlytics/android/R;->(Ljava/lang/String;)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v7 │ + │ + if-eqz v7, :cond_f │ + │ + array-length v1, v7 │ + │ + if-lez v1, :cond_f │ + │ + const/4 v1, 0x1 │ + │ + :goto_5 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + sget-object v5, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v14, "Session %s has non-fatal exceptions: %s" │ + │ + const/4 v15, 0x2 │ + │ + new-array v15, v15, [Ljava/lang/Object; │ + │ + const/16 v16, 0x0 │ + │ + aput-object v12, v15, v16 │ + │ + const/16 v16, 0x1 │ + │ + invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ + │ + move-result-object v17 │ + │ + aput-object v17, v15, v16 │ + │ + invoke-static {v5, v14, v15}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-interface {v3, v4, v5}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + if-nez v2, :cond_3 │ + │ + if-eqz v1, :cond_10 │ + │ + :cond_3 │ + const/4 v5, 0x0 │ + │ + const/4 v3, 0x0 │ + │ + :try_start_2 │ + new-instance v4, Lcom/crashlytics/android/f; │ + │ + move-object/from16 v0, p0 │ + │ + iget-object v14, v0, Lcom/crashlytics/android/v;->k:Ljava/io/File; │ + │ + invoke-direct {v4, v14, v12}, Lcom/crashlytics/android/f;->(Ljava/io/File;Ljava/lang/String;)V │ + :try_end_2 │ + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_1 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ + │ + :try_start_3 │ + invoke-static {v4}, Lcom/crashlytics/android/h;->a(Ljava/io/OutputStream;)Lcom/crashlytics/android/h; │ + :try_end_3 │ + .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_2 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_2 │ + │ + move-result-object v3 │ + │ + :try_start_4 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v5 │ + │ + const-string v14, "Crashlytics" │ + │ + new-instance v15, Ljava/lang/StringBuilder; │ + │ + const-string v16, "Collecting SessionStart data for session ID " │ + │ + invoke-direct/range {v15 .. v16}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v15, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v15 │ + │ + invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v15 │ + │ + invoke-interface {v5, v14, v15}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + invoke-static {v3, v11}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/io/File;)V │ + │ + const/4 v5, 0x4 │ + │ + new-instance v11, Ljava/util/Date; │ + │ + invoke-direct {v11}, Ljava/util/Date;->()V │ + │ + invoke-virtual {v11}, Ljava/util/Date;->getTime()J │ + │ + move-result-wide v14 │ + │ + const-wide/16 v16, 0x3e8 │ + │ + div-long v14, v14, v16 │ + │ + invoke-virtual {v3, v5, v14, v15}, Lcom/crashlytics/android/h;->a(IJ)V │ + │ + const/4 v5, 0x5 │ + │ + invoke-virtual {v3, v5, v2}, Lcom/crashlytics/android/h;->a(IZ)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v3, v12}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/lang/String;)V │ + │ + if-eqz v1, :cond_4 │ + │ + array-length v1, v7 │ + │ + if-le v1, v8, :cond_14 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v5, "Crashlytics" │ + │ + sget-object v7, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v11, "Trimming down to %d logged exceptions." │ + │ + const/4 v14, 0x1 │ + │ + new-array v14, v14, [Ljava/lang/Object; │ + │ + const/4 v15, 0x0 │ + │ + invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + │ + move-result-object v16 │ + │ + aput-object v16, v14, v15 │ + │ + invoke-static {v7, v11, v14}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-interface {v1, v5, v7}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v12, v8}, Lcom/crashlytics/android/v;->a(Ljava/lang/String;I)V │ + │ + new-instance v1, Lcom/crashlytics/android/R; │ + │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ + │ + invoke-virtual {v5, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ + │ + const-string v7, "SessionEvent" │ + │ + invoke-virtual {v5, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-direct {v1, v5}, Lcom/crashlytics/android/R;->(Ljava/lang/String;)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v1 │ + │ + :goto_6 │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v3, v1, v12}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;[Ljava/io/File;Ljava/lang/String;)V │ + │ + :cond_4 │ + if-eqz v2, :cond_5 │ + │ + const/4 v1, 0x0 │ + │ + aget-object v1, v13, v1 │ + │ + invoke-static {v3, v1}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/h;Ljava/io/File;)V │ + │ + :cond_5 │ + const/16 v1, 0xb │ + │ + const/4 v2, 0x1 │ + │ + invoke-virtual {v3, v1, v2}, Lcom/crashlytics/android/h;->a(II)V │ + │ + const/16 v1, 0xc │ + │ + const/4 v2, 0x3 │ + │ + invoke-virtual {v3, v1, v2}, Lcom/crashlytics/android/h;->b(II)V │ + :try_end_4 │ + .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_3 │ + .catchall {:try_start_4 .. :try_end_4} :catchall_2 │ + │ + const-string v1, "Error flushing session file stream" │ + │ + invoke-static {v3, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v1, "Failed to close CLS file" │ + │ + invoke-static {v4, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + :goto_7 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Removing session part files for ID " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v12}, Lcom/crashlytics/android/v;->a(Ljava/lang/String;)V │ + │ + .line 747 │ + add-int/lit8 v1, v6, 0x1 │ + │ + move v6, v1 │ + │ + goto/16 :goto_3 │ + │ + .line 736 │ + :cond_6 │ + if-nez v1, :cond_7 │ + │ + :try_start_5 │ + const-string v1, "" │ + │ + :cond_7 │ + invoke-static {v1}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v7 │ + │ + if-nez v4, :cond_c │ + │ + const/4 v1, 0x0 │ + │ + move-object v5, v1 │ + │ + :goto_8 │ + if-nez v6, :cond_d │ + │ + const/4 v1, 0x0 │ + │ + move-object v4, v1 │ + │ + :goto_9 │ + const/4 v1, 0x1 │ + │ + invoke-static {v1, v7}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + add-int/lit8 v1, v1, 0x0 │ + │ + if-eqz v5, :cond_8 │ + │ + const/4 v6, 0x2 │ + │ + invoke-static {v6, v5}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v6 │ + │ + add-int/2addr v1, v6 │ + │ + :cond_8 │ + if-eqz v4, :cond_9 │ + │ + const/4 v6, 0x3 │ + │ + invoke-static {v6, v4}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v6 │ + │ + add-int/2addr v1, v6 │ + │ + :cond_9 │ + const/4 v6, 0x6 │ + │ + const/4 v8, 0x2 │ + │ + invoke-virtual {v2, v6, v8}, Lcom/crashlytics/android/h;->g(II)V │ + │ + invoke-virtual {v2, v1}, Lcom/crashlytics/android/h;->b(I)V │ + │ + const/4 v1, 0x1 │ + │ + invoke-virtual {v2, v1, v7}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + if-eqz v5, :cond_a │ + │ + const/4 v1, 0x2 │ + │ + invoke-virtual {v2, v1, v5}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + │ + :cond_a │ + if-eqz v4, :cond_b │ + │ + const/4 v1, 0x3 │ + │ + invoke-virtual {v2, v1, v4}, Lcom/crashlytics/android/h;->a(ILcom/crashlytics/android/d;)V │ + :try_end_5 │ + .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_4 │ + .catchall {:try_start_5 .. :try_end_5} :catchall_0 │ + │ + :cond_b │ + const-string v1, "Failed to flush session user file." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v1, "Failed to close session user file." │ + │ + invoke-static {v3, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + goto/16 :goto_2 │ + │ + :cond_c │ + :try_start_6 │ + invoke-static {v4}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v1 │ + │ + move-object v5, v1 │ + │ + goto :goto_8 │ + │ + :cond_d │ + invoke-static {v6}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + :try_end_6 │ + .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_6} :catch_4 │ + .catchall {:try_start_6 .. :try_end_6} :catchall_0 │ + │ + move-result-object v1 │ + │ + move-object v4, v1 │ + │ + goto :goto_9 │ + │ + :catch_0 │ + move-exception v1 │ + │ + move-object v3, v4 │ + │ + :goto_a │ + :try_start_7 │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v1, v3}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + │ + throw v1 │ + :try_end_7 │ + .catchall {:try_start_7 .. :try_end_7} :catchall_0 │ + │ + :catchall_0 │ + move-exception v1 │ + │ + :goto_b │ + const-string v4, "Failed to flush session user file." │ + │ + invoke-static {v2, v4}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v2, "Failed to close session user file." │ + │ + invoke-static {v3, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v1 │ + │ + .line 750 │ + :cond_e │ + const/4 v1, 0x0 │ + │ + move v2, v1 │ + │ + goto/16 :goto_4 │ + │ + :cond_f │ + const/4 v1, 0x0 │ + │ + goto/16 :goto_5 │ + │ + :catch_1 │ + move-exception v1 │ + │ + move-object v2, v3 │ + │ + move-object v3, v5 │ + │ + :goto_c │ + :try_start_8 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v4 │ + │ + const-string v5, "Crashlytics" │ + │ + new-instance v7, Ljava/lang/StringBuilder; │ + │ + const-string v11, "Failed to write session file for session ID: " │ + │ + invoke-direct {v7, v11}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v7, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-interface {v4, v5, v7, v1}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + move-object/from16 v0, p0 │ + │ + invoke-direct {v0, v1, v3}, Lcom/crashlytics/android/v;->a(Ljava/lang/Throwable;Ljava/io/OutputStream;)V │ + :try_end_8 │ + .catchall {:try_start_8 .. :try_end_8} :catchall_3 │ + │ + const-string v1, "Error flushing session file stream" │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + invoke-static {v3}, Lcom/crashlytics/android/v;->a(Lcom/crashlytics/android/f;)V │ + │ + goto/16 :goto_7 │ + │ + :catchall_1 │ + move-exception v1 │ + │ + move-object v4, v5 │ + │ + :goto_d │ + const-string v2, "Error flushing session file stream" │ + │ + invoke-static {v3, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Flushable;Ljava/lang/String;)V │ + │ + const-string v2, "Failed to close CLS file" │ + │ + invoke-static {v4, v2}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v1 │ + │ + :cond_10 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "No events present for session ID " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + goto/16 :goto_7 │ + │ + .line 754 │ + :cond_11 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "No session begin files found." │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 759 │ + :cond_12 │ + :goto_e │ + return-void │ + │ + .line 757 │ + :cond_13 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Unable to close session. Settings are not loaded." │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + goto :goto_e │ + │ + .line 750 │ + :catchall_2 │ + move-exception v1 │ + │ + goto :goto_d │ + │ + :catchall_3 │ + move-exception v1 │ + │ + move-object v4, v3 │ + │ + move-object v3, v2 │ + │ + goto :goto_d │ + │ + :catch_2 │ + move-exception v1 │ + │ + move-object v2, v3 │ + │ + move-object v3, v4 │ + │ + goto :goto_c │ + │ + :catch_3 │ + move-exception v1 │ + │ + move-object v2, v3 │ + │ + move-object v3, v4 │ + │ + goto/16 :goto_c │ + │ + .line 736 │ + :catchall_4 │ + move-exception v1 │ + │ + move-object v3, v4 │ + │ + goto/16 :goto_b │ + │ + :catch_4 │ + move-exception v1 │ + │ + goto/16 :goto_a │ + │ + :cond_14 │ + move-object v1, v7 │ + │ + goto/16 :goto_6 │ +.end method │ + │ +.method private n()Ljava/lang/String; │ + .locals 2 │ + │ + .prologue │ + .line 771 │ + new-instance v0, Lcom/crashlytics/android/R; │ + │ + const-string v1, "BeginSession" │ + │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/R;->(Ljava/lang/String;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v0 │ + │ + .line 772 │ + sget-object v1, Lcom/crashlytics/android/v;->b:Ljava/util/Comparator; │ + │ + invoke-static {v0, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ + │ + .line 773 │ + array-length v1, v0 │ + │ + if-lez v1, :cond_0 │ + │ + const/4 v1, 0x0 │ + │ + aget-object v0, v0, v1 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/v;->a(Ljava/io/File;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + :goto_0 │ + return-object v0 │ + │ + :cond_0 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ +.end method │ + │ +.method private o()[Ljava/io/File; │ + .locals 2 │ + │ + .prologue │ + .line 930 │ + new-instance v0, Lcom/crashlytics/android/R; │ + │ + const-string v1, "BeginSession" │ + │ + invoke-direct {v0, v1}, Lcom/crashlytics/android/R;->(Ljava/lang/String;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method private p()V │ + .locals 7 │ + │ + .prologue │ + .line 1003 │ + sget-object v0, Lcom/crashlytics/android/v;->a:Ljava/io/FilenameFilter; │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v1 │ + │ + array-length v2, v1 │ + │ + const/4 v0, 0x0 │ + │ + :goto_0 │ + if-ge v0, v2, :cond_0 │ + │ + aget-object v3, v1, v0 │ + │ + .line 1005 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v4 │ + │ + const-string v5, "Crashlytics" │ + │ + const-string v6, "Attempting to send crash report at time of crash..." │ + │ + invoke-interface {v4, v5, v6}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 1007 │ + new-instance v4, Ljava/lang/Thread; │ + │ + new-instance v5, Lcom/crashlytics/android/D; │ + │ + invoke-direct {v5, p0, v3}, Lcom/crashlytics/android/D;->(Lcom/crashlytics/android/v;Ljava/io/File;)V │ + │ + const-string v3, "Crashlytics Report Uploader" │ + │ + invoke-direct {v4, v5, v3}, Ljava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V │ + │ + invoke-virtual {v4}, Ljava/lang/Thread;->start()V │ + │ + .line 1003 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_0 │ + │ + .line 1019 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method private static q()I │ + .locals 3 │ + │ + .prologue │ + .line 1160 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + .line 1162 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->f()Z │ + │ + move-result v1 │ + │ + .line 1163 │ + const/4 v2, 0x1 │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/internal/r;->a(Landroid/content/Context;Z)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/d;->a(Ljava/lang/String;)Lcom/crashlytics/android/d; │ + │ + move-result-object v0 │ + │ + invoke-static {v2, v0}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1165 │ + return v0 │ +.end method │ + │ +.method private r()I │ + .locals 4 │ + │ + .prologue │ + const-wide/16 v2, 0x0 │ + │ + .line 1536 │ + const/4 v0, 0x1 │ + │ + invoke-static {v0, v2, v3}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1539 │ + const/4 v1, 0x2 │ + │ + invoke-static {v1, v2, v3}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1540 │ + const/4 v1, 0x3 │ + │ + iget-object v2, p0, Lcom/crashlytics/android/v;->q:Lcom/crashlytics/android/d; │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1541 │ + iget-object v1, p0, Lcom/crashlytics/android/v;->r:Lcom/crashlytics/android/d; │ + │ + if-eqz v1, :cond_0 │ + │ + .line 1542 │ + const/4 v1, 0x4 │ + │ + iget-object v2, p0, Lcom/crashlytics/android/v;->r:Lcom/crashlytics/android/d; │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1545 │ + :cond_0 │ + return v0 │ +.end method │ + │ +.method private static s()I │ + .locals 4 │ + │ + .prologue │ + .line 1834 │ + const/4 v0, 0x1 │ + │ + sget-object v1, Lcom/crashlytics/android/v;->f:Lcom/crashlytics/android/d; │ + │ + invoke-static {v0, v1}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v0 │ + │ + add-int/lit8 v0, v0, 0x0 │ + │ + .line 1837 │ + const/4 v1, 0x2 │ + │ + sget-object v2, Lcom/crashlytics/android/v;->f:Lcom/crashlytics/android/d; │ + │ + invoke-static {v1, v2}, Lcom/crashlytics/android/h;->b(ILcom/crashlytics/android/d;)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1838 │ + const/4 v1, 0x3 │ + │ + const-wide/16 v2, 0x0 │ + │ + invoke-static {v1, v2, v3}, Lcom/crashlytics/android/h;->b(IJ)I │ + │ + move-result v1 │ + │ + add-int/2addr v0, v1 │ + │ + .line 1840 │ + return v0 │ +.end method │ + │ + │ +# virtual methods │ +.method final a(JLjava/lang/String;)V │ + .locals 1 │ + │ + .prologue │ + .line 373 │ + new-instance v0, Lcom/crashlytics/android/x; │ + │ + invoke-direct {v0, p0, p1, p2, p3}, Lcom/crashlytics/android/x;->(Lcom/crashlytics/android/v;JLjava/lang/String;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->b(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ + │ + .line 385 │ + return-void │ +.end method │ + │ +.method final a(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + .locals 2 │ + │ + .prologue │ + .line 357 │ + new-instance v0, Ljava/util/Date; │ + │ + invoke-direct {v0}, Ljava/util/Date;->()V │ + │ + .line 359 │ + new-instance v1, Lcom/crashlytics/android/P; │ + │ + invoke-direct {v1, p0, v0, p1, p2}, Lcom/crashlytics/android/P;->(Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + │ + invoke-direct {p0, v1}, Lcom/crashlytics/android/v;->a(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ + │ + .line 367 │ + return-void │ +.end method │ + │ +.method final a([Ljava/io/File;)V │ + .locals 11 │ + │ + .prologue │ + const/4 v1, 0x0 │ + │ + .line 1875 │ + new-instance v2, Ljava/io/File; │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->h()Ljava/io/File; │ + │ + move-result-object v0 │ + │ + const-string v3, "invalidClsFiles" │ + │ + invoke-direct {v2, v0, v3}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ + │ + invoke-virtual {v2}, Ljava/io/File;->exists()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + invoke-virtual {v2}, Ljava/io/File;->isDirectory()Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_0 │ + │ + invoke-virtual {v2}, Ljava/io/File;->listFiles()[Ljava/io/File; │ + │ + move-result-object v3 │ + │ + array-length v4, v3 │ + │ + move v0, v1 │ + │ + :goto_0 │ + if-ge v0, v4, :cond_0 │ + │ + aget-object v5, v3, v0 │ + │ + invoke-virtual {v5}, Ljava/io/File;->delete()Z │ + │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_0 │ + │ + :cond_0 │ + invoke-virtual {v2}, Ljava/io/File;->delete()Z │ + │ + .line 1880 │ + :cond_1 │ + array-length v3, p1 │ + │ + move v2, v1 │ + │ + :goto_1 │ + if-ge v2, v3, :cond_3 │ + │ + aget-object v0, p1, v2 │ + │ + .line 1881 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v4 │ + │ + const-string v5, "Crashlytics" │ + │ + new-instance v6, Ljava/lang/StringBuilder; │ + │ + const-string v7, "Found invalid session part file: " │ + │ + invoke-direct {v6, v7}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ + │ + invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v6 │ + │ + invoke-interface {v4, v5, v6}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 1882 │ + invoke-static {v0}, Lcom/crashlytics/android/v;->a(Ljava/io/File;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + .line 1883 │ + new-instance v4, Lcom/crashlytics/android/F; │ + │ + invoke-direct {v4, p0, v0}, Lcom/crashlytics/android/F;->(Lcom/crashlytics/android/v;Ljava/lang/String;)V │ + │ + .line 1890 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v5 │ + │ + invoke-virtual {v5}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v5 │ + │ + const-string v6, "Crashlytics" │ + │ + new-instance v7, Ljava/lang/StringBuilder; │ + │ + const-string v8, "Deleting all part files for invalid session: " │ + │ + invoke-direct {v7, v8}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-interface {v5, v6, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 1891 │ + invoke-direct {p0, v4}, Lcom/crashlytics/android/v;->a(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + │ + move-result-object v4 │ + │ + array-length v5, v4 │ + │ + move v0, v1 │ + │ + :goto_2 │ + if-ge v0, v5, :cond_2 │ + │ + aget-object v6, v4, v0 │ + │ + .line 1892 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v7}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v7 │ + │ + const-string v8, "Crashlytics" │ + │ + new-instance v9, Ljava/lang/StringBuilder; │ + │ + const-string v10, "Deleting session file: " │ + │ + invoke-direct {v9, v10}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v9 │ + │ + invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v9 │ + │ + invoke-interface {v7, v8, v9}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 1893 │ + invoke-virtual {v6}, Ljava/io/File;->delete()Z │ + │ + .line 1891 │ + add-int/lit8 v0, v0, 0x1 │ + │ + goto :goto_2 │ + │ + .line 1880 │ + :cond_2 │ + add-int/lit8 v0, v2, 0x1 │ + │ + move v2, v0 │ + │ + goto :goto_1 │ + │ + .line 1896 │ + :cond_3 │ + return-void │ +.end method │ + │ +.method final a()Z │ + .locals 1 │ + │ + .prologue │ + .line 288 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ + │ + move-result v0 │ + │ + return v0 │ +.end method │ + │ +.method final b()Z │ + .locals 1 │ + │ + .prologue │ + .line 338 │ + new-instance v0, Lcom/crashlytics/android/O; │ + │ + invoke-direct {v0, p0}, Lcom/crashlytics/android/O;->(Lcom/crashlytics/android/v;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Ljava/lang/Boolean; │ + │ + invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z │ + │ + move-result v0 │ + │ + return v0 │ +.end method │ + │ +.method final c()V │ + .locals 1 │ + │ + .prologue │ + .line 436 │ + new-instance v0, Lcom/crashlytics/android/z; │ + │ + invoke-direct {v0, p0}, Lcom/crashlytics/android/z;->(Lcom/crashlytics/android/v;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->b(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ + │ + .line 445 │ + return-void │ +.end method │ + │ +.method final d()V │ + .locals 1 │ + │ + .prologue │ + .line 448 │ + new-instance v0, Lcom/crashlytics/android/A; │ + │ + invoke-direct {v0, p0}, Lcom/crashlytics/android/A;->(Lcom/crashlytics/android/v;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->b(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ + │ + .line 458 │ + return-void │ +.end method │ + │ +.method final e()V │ + .locals 1 │ + │ + .prologue │ + .line 464 │ + new-instance v0, Lcom/crashlytics/android/B; │ + │ + invoke-direct {v0, p0}, Lcom/crashlytics/android/B;->(Lcom/crashlytics/android/v;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->b(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; │ + │ + .line 477 │ + return-void │ +.end method │ + │ +.method final f()Z │ + .locals 1 │ + │ + .prologue │ + .line 480 │ + new-instance v0, Lcom/crashlytics/android/C; │ + │ + invoke-direct {v0, p0}, Lcom/crashlytics/android/C;->(Lcom/crashlytics/android/v;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ + │ + move-result-object v0 │ + │ + check-cast v0, Ljava/lang/Boolean; │ + │ + invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z │ + │ + move-result v0 │ + │ + return v0 │ +.end method │ + │ +.method final g()Z │ + .locals 1 │ + │ + .prologue │ + .line 580 │ + invoke-direct {p0}, Lcom/crashlytics/android/v;->o()[Ljava/io/File; │ + │ + move-result-object v0 │ + │ + array-length v0, v0 │ + │ + if-lez v0, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + :goto_0 │ + return v0 │ + │ + :cond_0 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ +.end method │ + │ +.method final h()V │ + .locals 1 │ + │ + .prologue │ + .line 1861 │ + new-instance v0, Lcom/crashlytics/android/E; │ + │ + invoke-direct {v0, p0}, Lcom/crashlytics/android/E;->(Lcom/crashlytics/android/v;)V │ + │ + invoke-direct {p0, v0}, Lcom/crashlytics/android/v;->a(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; │ + │ + .line 1867 │ + return-void │ +.end method │ + │ +.method public final declared-synchronized uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + .locals 4 │ + .param p1, "thread" # Ljava/lang/Thread; │ + .param p2, "ex" # Ljava/lang/Throwable; │ + │ + .prologue │ + .line 293 │ + monitor-enter p0 │ + │ + :try_start_0 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + const/4 v1, 0x1 │ + │ + invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + .line 295 │ + :try_start_1 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + new-instance v2, Ljava/lang/StringBuilder; │ + │ + const-string v3, "Crashlytics is handling uncaught exception \"" │ + │ + invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + const-string v3, "\" from thread " │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 297 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->h:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + const/4 v1, 0x1 │ + │ + invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->getAndSet(Z)Z │ + │ + move-result v0 │ + │ + if-nez v0, :cond_0 │ + │ + .line 298 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Unregistering power receivers." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 299 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->p:Landroid/content/BroadcastReceiver; │ + │ + invoke-virtual {v0, v1}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V │ + │ + .line 300 │ + invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + iget-object v1, p0, Lcom/crashlytics/android/v;->o:Landroid/content/BroadcastReceiver; │ + │ + invoke-virtual {v0, v1}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V │ + │ + .line 305 │ + :cond_0 │ + new-instance v0, Ljava/util/Date; │ + │ + invoke-direct {v0}, Ljava/util/Date;->()V │ + │ + .line 307 │ + new-instance v1, Lcom/crashlytics/android/N; │ + │ + invoke-direct {v1, p0, v0, p1, p2}, Lcom/crashlytics/android/N;->(Lcom/crashlytics/android/v;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + │ + invoke-direct {p0, v1}, Lcom/crashlytics/android/v;->a(Ljava/util/concurrent/Callable;)Ljava/lang/Object; │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ + │ + .line 317 │ + :try_start_2 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Crashlytics completed exception processing. Invoking default exception handler." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 318 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ + │ + invoke-interface {v0, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + │ + .line 319 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + const/4 v1, 0x0 │ + │ + invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ + :try_end_2 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + │ + .line 320 │ + :goto_0 │ + monitor-exit p0 │ + │ + return-void │ + │ + .line 314 │ + :catch_0 │ + move-exception v0 │ + │ + .line 315 │ + :try_start_3 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "An error occurred in the uncaught exception handler" │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_3 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_1 │ + │ + .line 317 │ + :try_start_4 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v1, "Crashlytics" │ + │ + const-string v2, "Crashlytics completed exception processing. Invoking default exception handler." │ + │ + invoke-interface {v0, v1, v2}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 318 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ + │ + invoke-interface {v0, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + │ + .line 319 │ + iget-object v0, p0, Lcom/crashlytics/android/v;->m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + const/4 v1, 0x0 │ + │ + invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ + :try_end_4 │ + .catchall {:try_start_4 .. :try_end_4} :catchall_0 │ + │ + goto :goto_0 │ + │ + .line 293 │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit p0 │ + │ + throw v0 │ + │ + .line 317 │ + :catchall_1 │ + move-exception v0 │ + │ + :try_start_5 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Crashlytics completed exception processing. Invoking default exception handler." │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 318 │ + iget-object v1, p0, Lcom/crashlytics/android/v;->j:Ljava/lang/Thread$UncaughtExceptionHandler; │ + │ + invoke-interface {v1, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V │ + │ + .line 319 │ + iget-object v1, p0, Lcom/crashlytics/android/v;->m:Ljava/util/concurrent/atomic/AtomicBoolean; │ + │ + const/4 v2, 0x0 │ + │ + invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V │ + │ + throw v0 │ + :try_end_5 │ + .catchall {:try_start_5 .. :try_end_5} :catchall_0 │ +.end method ├── smali/com/crashlytics/android/V.smali │ @@ -1,71 +1,8 @@ │ -.class final Lcom/crashlytics/android/V; │ +.class interface abstract Lcom/crashlytics/android/V; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ -# interfaces │ -.implements Ljava/lang/Runnable; │ - │ - │ -# instance fields │ -.field private synthetic a:Ljava/util/Date; │ - │ -.field private synthetic b:Ljava/lang/Thread; │ - │ -.field private synthetic c:Ljava/lang/Throwable; │ - │ -.field private synthetic d:Lcom/crashlytics/android/E; │ - │ - │ -# direct methods │ -.method constructor (Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - .locals 0 │ - │ - .prologue │ - .line 356 │ - iput-object p1, p0, Lcom/crashlytics/android/V;->d:Lcom/crashlytics/android/E; │ - │ - iput-object p2, p0, Lcom/crashlytics/android/V;->a:Ljava/util/Date; │ - │ - iput-object p3, p0, Lcom/crashlytics/android/V;->b:Ljava/lang/Thread; │ - │ - iput-object p4, p0, Lcom/crashlytics/android/V;->c:Ljava/lang/Throwable; │ - │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ - │ - return-void │ -.end method │ - │ │ # virtual methods │ -.method public final run()V │ - .locals 4 │ - │ - .prologue │ - .line 359 │ - iget-object v0, p0, Lcom/crashlytics/android/V;->d:Lcom/crashlytics/android/E; │ - │ - invoke-static {v0}, Lcom/crashlytics/android/E;->a(Lcom/crashlytics/android/E;)Ljava/util/concurrent/atomic/AtomicBoolean; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_0 │ - │ - .line 360 │ - iget-object v0, p0, Lcom/crashlytics/android/V;->d:Lcom/crashlytics/android/E; │ - │ - iget-object v1, p0, Lcom/crashlytics/android/V;->a:Ljava/util/Date; │ - │ - iget-object v2, p0, Lcom/crashlytics/android/V;->b:Ljava/lang/Thread; │ - │ - iget-object v3, p0, Lcom/crashlytics/android/V;->c:Ljava/lang/Throwable; │ - │ - invoke-static {v0, v1, v2, v3}, Lcom/crashlytics/android/E;->b(Lcom/crashlytics/android/E;Ljava/util/Date;Ljava/lang/Thread;Ljava/lang/Throwable;)V │ - │ - .line 362 │ - :cond_0 │ - return-void │ +.method public abstract a(Lcom/crashlytics/android/U;)Z │ .end method ├── smali/de/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder.smali │ @@ -16,28 +16,28 @@ │ │ │ # direct methods │ .method private constructor ()V │ .locals 0 │ │ .prologue │ - .line 30 │ + .line 29 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 32 │ + .line 31 │ return-void │ .end method │ │ .method private static areLastMeasuredAnimationHeightAndCurrentEqual(ILandroid/view/View;)Z │ .locals 1 │ .param p0, "lastHeight" # I │ .param p1, "croutonView" # Landroid/view/View; │ │ .prologue │ - .line 79 │ + .line 78 │ invoke-virtual {p1}, Landroid/view/View;->getMeasuredHeight()I │ │ move-result v0 │ │ if-ne p0, v0, :cond_0 │ │ const/4 v0, 0x1 │ @@ -52,30 +52,30 @@ │ .end method │ │ .method private static areLastMeasuredInAnimationHeightAndCurrentEqual(Landroid/view/View;)Z │ .locals 1 │ .param p0, "croutonView" # Landroid/view/View; │ │ .prologue │ - .line 71 │ + .line 70 │ sget v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->lastInAnimationHeight:I │ │ invoke-static {v0, p0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->areLastMeasuredAnimationHeightAndCurrentEqual(ILandroid/view/View;)Z │ │ move-result v0 │ │ return v0 │ .end method │ │ .method private static areLastMeasuredOutAnimationHeightAndCurrentEqual(Landroid/view/View;)Z │ .locals 1 │ .param p0, "croutonView" # Landroid/view/View; │ │ .prologue │ - .line 75 │ + .line 74 │ sget v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->lastOutAnimationHeight:I │ │ invoke-static {v0, p0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->areLastMeasuredAnimationHeightAndCurrentEqual(ILandroid/view/View;)Z │ │ move-result v0 │ │ return v0 │ @@ -84,26 +84,26 @@ │ .method static buildDefaultSlideInDownAnimation(Landroid/view/View;)Landroid/view/animation/Animation; │ .locals 3 │ .param p0, "croutonView" # Landroid/view/View; │ │ .prologue │ const/4 v2, 0x0 │ │ - .line 41 │ + .line 40 │ invoke-static {p0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->areLastMeasuredInAnimationHeightAndCurrentEqual(Landroid/view/View;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideInDownAnimation:Landroid/view/animation/Animation; │ │ if-nez v0, :cond_1 │ │ - .line 42 │ + .line 41 │ :cond_0 │ new-instance v0, Landroid/view/animation/TranslateAnimation; │ │ invoke-virtual {p0}, Landroid/view/View;->getMeasuredHeight()I │ │ move-result v1 │ │ @@ -111,54 +111,54 @@ │ │ int-to-float v1, v1 │ │ invoke-direct {v0, v2, v2, v1, v2}, Landroid/view/animation/TranslateAnimation;->(FFFF)V │ │ sput-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideInDownAnimation:Landroid/view/animation/Animation; │ │ - .line 46 │ + .line 45 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideInDownAnimation:Landroid/view/animation/Animation; │ │ const-wide/16 v1, 0x190 │ │ invoke-virtual {v0, v1, v2}, Landroid/view/animation/Animation;->setDuration(J)V │ │ - .line 47 │ + .line 46 │ invoke-virtual {p0}, Landroid/view/View;->getMeasuredHeight()I │ │ move-result v0 │ │ invoke-static {v0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->setLastInAnimationHeight(I)V │ │ - .line 49 │ + .line 48 │ :cond_1 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideInDownAnimation:Landroid/view/animation/Animation; │ │ return-object v0 │ .end method │ │ .method static buildDefaultSlideOutUpAnimation(Landroid/view/View;)Landroid/view/animation/Animation; │ .locals 3 │ .param p0, "croutonView" # Landroid/view/View; │ │ .prologue │ const/4 v2, 0x0 │ │ - .line 59 │ + .line 58 │ invoke-static {p0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->areLastMeasuredOutAnimationHeightAndCurrentEqual(Landroid/view/View;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideOutUpAnimation:Landroid/view/animation/Animation; │ │ if-nez v0, :cond_1 │ │ - .line 60 │ + .line 59 │ :cond_0 │ new-instance v0, Landroid/view/animation/TranslateAnimation; │ │ invoke-virtual {p0}, Landroid/view/View;->getMeasuredHeight()I │ │ move-result v1 │ │ @@ -166,51 +166,51 @@ │ │ int-to-float v1, v1 │ │ invoke-direct {v0, v2, v2, v2, v1}, Landroid/view/animation/TranslateAnimation;->(FFFF)V │ │ sput-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideOutUpAnimation:Landroid/view/animation/Animation; │ │ - .line 64 │ + .line 63 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideOutUpAnimation:Landroid/view/animation/Animation; │ │ const-wide/16 v1, 0x190 │ │ invoke-virtual {v0, v1, v2}, Landroid/view/animation/Animation;->setDuration(J)V │ │ - .line 65 │ + .line 64 │ invoke-virtual {p0}, Landroid/view/View;->getMeasuredHeight()I │ │ move-result v0 │ │ invoke-static {v0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->setLastOutAnimationHeight(I)V │ │ - .line 67 │ + .line 66 │ :cond_1 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->slideOutUpAnimation:Landroid/view/animation/Animation; │ │ return-object v0 │ .end method │ │ .method private static setLastInAnimationHeight(I)V │ .locals 0 │ .param p0, "lastInAnimationHeight" # I │ │ .prologue │ - .line 83 │ + .line 82 │ sput p0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->lastInAnimationHeight:I │ │ - .line 84 │ + .line 83 │ return-void │ .end method │ │ .method private static setLastOutAnimationHeight(I)V │ .locals 0 │ .param p0, "lastOutAnimationHeight" # I │ │ .prologue │ - .line 87 │ + .line 86 │ sput p0, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->lastOutAnimationHeight:I │ │ - .line 88 │ + .line 87 │ return-void │ .end method ├── smali/de/keyboardsurfer/android/widget/crouton/Manager$1.smali │ @@ -26,15 +26,15 @@ │ │ │ # direct methods │ .method constructor (Lde/keyboardsurfer/android/widget/crouton/Manager;Landroid/view/View;Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ .locals 0 │ │ .prologue │ - .line 209 │ + .line 227 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->this$0:Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ iput-object p2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$croutonView:Landroid/view/View; │ │ iput-object p3, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ @@ -42,73 +42,85 @@ │ return-void │ .end method │ │ │ # virtual methods │ .method public onGlobalLayout()V │ .locals 7 │ + .annotation build Landroid/annotation/TargetApi; │ + value = 0x10 │ + .end annotation │ │ .prologue │ - .line 212 │ + .line 231 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0x10 │ │ if-ge v0, v1, :cond_1 │ │ - .line 213 │ + .line 232 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$croutonView:Landroid/view/View; │ │ invoke-virtual {v0}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; │ │ move-result-object v0 │ │ invoke-virtual {v0, p0}, Landroid/view/ViewTreeObserver;->removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V │ │ - .line 218 │ + .line 237 │ :goto_0 │ + iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ + │ + invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getInAnimation()Landroid/view/animation/Animation; │ + │ + move-result-object v0 │ + │ + if-eqz v0, :cond_0 │ + │ + .line 238 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$croutonView:Landroid/view/View; │ │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-virtual {v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getInAnimation()Landroid/view/animation/Animation; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V │ │ - .line 219 │ + .line 239 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v0 │ │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-virtual {v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getText()Ljava/lang/CharSequence; │ │ move-result-object v1 │ │ invoke-static {v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Manager;->announceForAccessibilityCompat(Landroid/content/Context;Ljava/lang/CharSequence;)V │ │ - .line 220 │ + .line 240 │ const/4 v0, -0x1 │ │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-virtual {v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getConfiguration()Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ move-result-object v1 │ │ iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Configuration;->durationInMilliseconds:I │ │ if-eq v0, v1, :cond_0 │ │ - .line 221 │ + .line 241 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->this$0:Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ const v2, -0x3dff821f │ │ iget-object v3, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$crouton:Lde/keyboardsurfer/android/widget/crouton/Crouton; │ @@ -132,19 +144,19 @@ │ move-result-wide v5 │ │ add-long/2addr v3, v5 │ │ # invokes: Lde/keyboardsurfer/android/widget/crouton/Manager;->sendMessageDelayed(Lde/keyboardsurfer/android/widget/crouton/Crouton;IJ)V │ invoke-static {v0, v1, v2, v3, v4}, Lde/keyboardsurfer/android/widget/crouton/Manager;->access$000(Lde/keyboardsurfer/android/widget/crouton/Manager;Lde/keyboardsurfer/android/widget/crouton/Crouton;IJ)V │ │ - .line 224 │ + .line 245 │ :cond_0 │ return-void │ │ - .line 215 │ + .line 234 │ :cond_1 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->val$croutonView:Landroid/view/View; │ │ invoke-virtual {v0}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; │ │ move-result-object v0 ├── smali/de/keyboardsurfer/android/widget/crouton/Crouton.smali │ @@ -2,14 +2,16 @@ │ .super Ljava/lang/Object; │ .source "Crouton.java" │ │ │ # static fields │ .field private static final IMAGE_ID:I = 0x100 │ │ +.field private static final NULL_PARAMETERS_ARE_NOT_ACCEPTED:Ljava/lang/String; = "Null parameters are not accepted" │ + │ .field private static final TEXT_ID:I = 0x101 │ │ │ # instance fields │ .field private activity:Landroid/app/Activity; │ │ .field private configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ @@ -38,623 +40,669 @@ │ .locals 2 │ .param p1, "activity" # Landroid/app/Activity; │ .param p2, "customView" # Landroid/view/View; │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 125 │ + .line 128 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 57 │ + .line 60 │ iput-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 67 │ + .line 70 │ iput-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->lifecycleCallback:Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ - .line 126 │ + .line 129 │ if-eqz p1, :cond_0 │ │ if-nez p2, :cond_1 │ │ - .line 127 │ + .line 130 │ :cond_0 │ new-instance v0, Ljava/lang/IllegalArgumentException; │ │ const-string v1, "Null parameters are not accepted" │ │ invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v0 │ │ - .line 130 │ + .line 133 │ :cond_1 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ - .line 131 │ + .line 134 │ iput-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ - .line 132 │ + .line 135 │ iput-object p2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ - .line 133 │ + .line 136 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ invoke-direct {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->()V │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->build()Lde/keyboardsurfer/android/widget/crouton/Style; │ │ move-result-object v0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - .line 134 │ + .line 137 │ iput-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ │ - .line 135 │ + .line 138 │ return-void │ .end method │ │ .method private constructor (Landroid/app/Activity;Landroid/view/View;Landroid/view/ViewGroup;)V │ .locals 1 │ .param p1, "activity" # Landroid/app/Activity; │ .param p2, "customView" # Landroid/view/View; │ .param p3, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ - .line 148 │ + .line 151 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/Configuration;->DEFAULT:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ invoke-direct {p0, p1, p2, p3, v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->(Landroid/app/Activity;Landroid/view/View;Landroid/view/ViewGroup;Lde/keyboardsurfer/android/widget/crouton/Configuration;)V │ │ - .line 149 │ + .line 152 │ return-void │ .end method │ │ .method private constructor (Landroid/app/Activity;Landroid/view/View;Landroid/view/ViewGroup;Lde/keyboardsurfer/android/widget/crouton/Configuration;)V │ .locals 2 │ .param p1, "activity" # Landroid/app/Activity; │ .param p2, "customView" # Landroid/view/View; │ .param p3, "viewGroup" # Landroid/view/ViewGroup; │ .param p4, "configuration" # Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 164 │ + .line 167 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 57 │ + .line 60 │ iput-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 67 │ + .line 70 │ iput-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->lifecycleCallback:Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ - .line 165 │ + .line 168 │ if-eqz p1, :cond_0 │ │ if-nez p2, :cond_1 │ │ - .line 166 │ + .line 169 │ :cond_0 │ new-instance v0, Ljava/lang/IllegalArgumentException; │ │ const-string v1, "Null parameters are not accepted" │ │ invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v0 │ │ - .line 169 │ + .line 172 │ :cond_1 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ - .line 170 │ + .line 173 │ iput-object p2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ - .line 171 │ + .line 174 │ iput-object p3, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ - .line 172 │ + .line 175 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ invoke-direct {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->()V │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->build()Lde/keyboardsurfer/android/widget/crouton/Style; │ │ move-result-object v0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - .line 173 │ + .line 176 │ iput-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ │ - .line 174 │ + .line 177 │ iput-object p4, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 175 │ + .line 178 │ return-void │ .end method │ │ .method private constructor (Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)V │ .locals 2 │ .param p1, "activity" # Landroid/app/Activity; │ .param p2, "text" # Ljava/lang/CharSequence; │ .param p3, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .prologue │ const/4 v0, 0x0 │ │ - .line 80 │ + .line 83 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 57 │ + .line 60 │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 67 │ + .line 70 │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->lifecycleCallback:Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ - .line 81 │ + .line 84 │ if-eqz p1, :cond_0 │ │ if-eqz p2, :cond_0 │ │ if-nez p3, :cond_1 │ │ - .line 82 │ + .line 85 │ :cond_0 │ new-instance v0, Ljava/lang/IllegalArgumentException; │ │ const-string v1, "Null parameters are not accepted" │ │ invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v0 │ │ - .line 85 │ + .line 88 │ :cond_1 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ - .line 86 │ + .line 89 │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ - .line 87 │ + .line 90 │ iput-object p2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ │ - .line 88 │ + .line 91 │ iput-object p3, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - .line 89 │ + .line 92 │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ - .line 90 │ + .line 93 │ return-void │ .end method │ │ .method private constructor (Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)V │ .locals 2 │ .param p1, "activity" # Landroid/app/Activity; │ .param p2, "text" # Ljava/lang/CharSequence; │ .param p3, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p4, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ const/4 v0, 0x0 │ │ - .line 104 │ + .line 107 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 57 │ + .line 60 │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 67 │ + .line 70 │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->lifecycleCallback:Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ - .line 105 │ + .line 108 │ if-eqz p1, :cond_0 │ │ if-eqz p2, :cond_0 │ │ if-nez p3, :cond_1 │ │ - .line 106 │ + .line 109 │ :cond_0 │ new-instance v0, Ljava/lang/IllegalArgumentException; │ │ const-string v1, "Null parameters are not accepted" │ │ invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v0 │ │ - .line 109 │ + .line 112 │ :cond_1 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ - .line 110 │ + .line 113 │ iput-object p2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ │ - .line 111 │ + .line 114 │ iput-object p3, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - .line 112 │ + .line 115 │ iput-object p4, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ - .line 113 │ + .line 116 │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ - .line 114 │ + .line 117 │ return-void │ .end method │ │ .method public static cancelAllCroutons()V │ .locals 1 │ │ .prologue │ - .line 543 │ + .line 546 │ invoke-static {}, Lde/keyboardsurfer/android/widget/crouton/Manager;->getInstance()Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->clearCroutonQueue()V │ │ - .line 544 │ + .line 547 │ return-void │ .end method │ │ .method public static clearCroutonsForActivity(Landroid/app/Activity;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ │ .prologue │ - .line 554 │ + .line 557 │ invoke-static {}, Lde/keyboardsurfer/android/widget/crouton/Manager;->getInstance()Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ move-result-object v0 │ │ invoke-virtual {v0, p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->clearCroutonsForActivity(Landroid/app/Activity;)V │ │ - .line 555 │ + .line 558 │ return-void │ .end method │ │ .method public static getLicenseText()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 653 │ - const-string v0, "This application uses the Crouton library.\n\nCopyright 2012 - 2013 Benjamin Weiss \nCopyright 2012 Neofonie Mobile GmbH\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License." │ + .line 667 │ + const-string v0, "This application uses the Crouton library.\n\nCopyright 2012 - 2013 Benjamin Weiss \n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License." │ │ return-object v0 │ .end method │ │ .method public static hide(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ - .locals 1 │ + .locals 0 │ .param p0, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ .prologue │ - .line 535 │ - invoke-static {}, Lde/keyboardsurfer/android/widget/crouton/Manager;->getInstance()Lde/keyboardsurfer/android/widget/crouton/Manager; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0, p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ + .line 538 │ + invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->hide()V │ │ - .line 536 │ + .line 539 │ return-void │ .end method │ │ .method private initializeContentView(Landroid/content/res/Resources;)Landroid/widget/RelativeLayout; │ - .locals 8 │ + .locals 7 │ .param p1, "resources" # Landroid/content/res/Resources; │ │ .prologue │ - const/4 v7, -0x1 │ + const/4 v6, -0x1 │ │ - const/4 v6, -0x2 │ - │ - .line 822 │ + .line 855 │ new-instance v0, Landroid/widget/RelativeLayout; │ │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ invoke-direct {v0, v5}, Landroid/widget/RelativeLayout;->(Landroid/content/Context;)V │ │ - .line 823 │ + .line 856 │ .local v0, "contentView":Landroid/widget/RelativeLayout; │ new-instance v5, Landroid/widget/RelativeLayout$LayoutParams; │ │ - invoke-direct {v5, v7, v6}, Landroid/widget/RelativeLayout$LayoutParams;->(II)V │ + invoke-direct {v5, v6, v6}, Landroid/widget/RelativeLayout$LayoutParams;->(II)V │ │ invoke-virtual {v0, v5}, Landroid/widget/RelativeLayout;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V │ │ - .line 827 │ + .line 860 │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v2, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingInPixels:I │ │ - .line 831 │ + .line 864 │ .local v2, "padding":I │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingDimensionResId:I │ │ if-lez v5, :cond_0 │ │ - .line 832 │ + .line 865 │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingDimensionResId:I │ │ invoke-virtual {p1, v5}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I │ │ move-result v2 │ │ - .line 834 │ + .line 867 │ :cond_0 │ invoke-virtual {v0, v2, v2, v2, v2}, Landroid/widget/RelativeLayout;->setPadding(IIII)V │ │ - .line 837 │ + .line 870 │ const/4 v1, 0x0 │ │ - .line 838 │ + .line 871 │ .local v1, "image":Landroid/widget/ImageView; │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget-object v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ if-nez v5, :cond_1 │ │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->imageResId:I │ │ if-eqz v5, :cond_2 │ │ - .line 839 │ + .line 872 │ :cond_1 │ invoke-direct {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->initializeImageView()Landroid/widget/ImageView; │ │ move-result-object v1 │ │ - .line 840 │ + .line 873 │ invoke-virtual {v1}, Landroid/widget/ImageView;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; │ │ move-result-object v5 │ │ invoke-virtual {v0, v1, v5}, Landroid/widget/RelativeLayout;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V │ │ - .line 843 │ + .line 876 │ :cond_2 │ invoke-direct {p0, p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->initializeTextView(Landroid/content/res/Resources;)Landroid/widget/TextView; │ │ move-result-object v3 │ │ - .line 845 │ + .line 878 │ .local v3, "text":Landroid/widget/TextView; │ new-instance v4, Landroid/widget/RelativeLayout$LayoutParams; │ │ - invoke-direct {v4, v7, v6}, Landroid/widget/RelativeLayout$LayoutParams;->(II)V │ + const/4 v5, -0x2 │ │ - .line 847 │ + invoke-direct {v4, v6, v5}, Landroid/widget/RelativeLayout$LayoutParams;->(II)V │ + │ + .line 880 │ .local v4, "textParams":Landroid/widget/RelativeLayout$LayoutParams; │ if-eqz v1, :cond_3 │ │ - .line 848 │ + .line 881 │ const/4 v5, 0x1 │ │ invoke-virtual {v1}, Landroid/widget/ImageView;->getId()I │ │ move-result v6 │ │ invoke-virtual {v4, v5, v6}, Landroid/widget/RelativeLayout$LayoutParams;->addRule(II)V │ │ - .line 850 │ + .line 884 │ :cond_3 │ + iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->gravity:I │ + │ + and-int/lit8 v5, v5, 0x11 │ + │ + if-eqz v5, :cond_5 │ + │ + .line 885 │ + const/16 v5, 0xd │ + │ + invoke-virtual {v4, v5}, Landroid/widget/RelativeLayout$LayoutParams;->addRule(I)V │ + │ + .line 892 │ + :cond_4 │ + :goto_0 │ invoke-virtual {v0, v3, v4}, Landroid/widget/RelativeLayout;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V │ │ - .line 851 │ + .line 893 │ return-object v0 │ + │ + .line 886 │ + :cond_5 │ + iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->gravity:I │ + │ + and-int/lit8 v5, v5, 0x10 │ + │ + if-eqz v5, :cond_6 │ + │ + .line 887 │ + const/16 v5, 0xf │ + │ + invoke-virtual {v4, v5}, Landroid/widget/RelativeLayout$LayoutParams;->addRule(I)V │ + │ + goto :goto_0 │ + │ + .line 888 │ + :cond_6 │ + iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->gravity:I │ + │ + and-int/lit8 v5, v5, 0x1 │ + │ + if-eqz v5, :cond_4 │ + │ + .line 889 │ + const/16 v5, 0xe │ + │ + invoke-virtual {v4, v5}, Landroid/widget/RelativeLayout$LayoutParams;->addRule(I)V │ + │ + goto :goto_0 │ .end method │ │ .method private initializeCroutonView()V │ .locals 3 │ │ .prologue │ - .line 768 │ + .line 801 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ invoke-virtual {v2}, Landroid/app/Activity;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ - .line 770 │ + .line 803 │ .local v1, "resources":Landroid/content/res/Resources; │ invoke-direct {p0, v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->initializeCroutonViewGroup(Landroid/content/res/Resources;)Landroid/widget/FrameLayout; │ │ move-result-object v2 │ │ iput-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->croutonView:Landroid/widget/FrameLayout; │ │ - .line 773 │ + .line 806 │ invoke-direct {p0, v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->initializeContentView(Landroid/content/res/Resources;)Landroid/widget/RelativeLayout; │ │ move-result-object v0 │ │ - .line 774 │ + .line 807 │ .local v0, "contentView":Landroid/widget/RelativeLayout; │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->croutonView:Landroid/widget/FrameLayout; │ │ invoke-virtual {v2, v0}, Landroid/widget/FrameLayout;->addView(Landroid/view/View;)V │ │ - .line 775 │ + .line 808 │ return-void │ .end method │ │ .method private initializeCroutonViewGroup(Landroid/content/res/Resources;)Landroid/widget/FrameLayout; │ .locals 7 │ .param p1, "resources" # Landroid/content/res/Resources; │ │ .prologue │ const/4 v5, -0x1 │ │ - .line 778 │ + .line 811 │ new-instance v1, Landroid/widget/FrameLayout; │ │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ invoke-direct {v1, v6}, Landroid/widget/FrameLayout;->(Landroid/content/Context;)V │ │ - .line 780 │ + .line 813 │ .local v1, "croutonView":Landroid/widget/FrameLayout; │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->onClickListener:Landroid/view/View$OnClickListener; │ │ if-eqz v6, :cond_0 │ │ - .line 781 │ + .line 814 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->onClickListener:Landroid/view/View$OnClickListener; │ │ invoke-virtual {v1, v6}, Landroid/widget/FrameLayout;->setOnClickListener(Landroid/view/View$OnClickListener;)V │ │ - .line 785 │ + .line 818 │ :cond_0 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v6, v6, Lde/keyboardsurfer/android/widget/crouton/Style;->heightDimensionResId:I │ │ if-lez v6, :cond_3 │ │ - .line 786 │ + .line 819 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v6, v6, Lde/keyboardsurfer/android/widget/crouton/Style;->heightDimensionResId:I │ │ invoke-virtual {p1, v6}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I │ │ move-result v3 │ │ - .line 792 │ + .line 825 │ .local v3, "height":I │ :goto_0 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v6, v6, Lde/keyboardsurfer/android/widget/crouton/Style;->widthDimensionResId:I │ │ if-lez v6, :cond_4 │ │ - .line 793 │ + .line 826 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v6, v6, Lde/keyboardsurfer/android/widget/crouton/Style;->widthDimensionResId:I │ │ invoke-virtual {p1, v6}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I │ │ move-result v4 │ │ - .line 798 │ + .line 831 │ .local v4, "width":I │ :goto_1 │ new-instance v6, Landroid/widget/FrameLayout$LayoutParams; │ │ if-eqz v4, :cond_5 │ │ .end local v4 # "width":I │ :goto_2 │ invoke-direct {v6, v4, v3}, Landroid/widget/FrameLayout$LayoutParams;->(II)V │ │ invoke-virtual {v1, v6}, Landroid/widget/FrameLayout;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V │ │ - .line 802 │ + .line 835 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v6, v6, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundColorValue:I │ │ if-eq v6, v5, :cond_6 │ │ - .line 803 │ + .line 836 │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundColorValue:I │ │ invoke-virtual {v1, v5}, Landroid/widget/FrameLayout;->setBackgroundColor(I)V │ │ - .line 810 │ + .line 843 │ :goto_3 │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundDrawableResourceId:I │ │ if-eqz v5, :cond_2 │ │ - .line 811 │ + .line 844 │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundDrawableResourceId:I │ │ invoke-static {p1, v5}, Landroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap; │ │ move-result-object v0 │ │ - .line 812 │ + .line 845 │ .local v0, "background":Landroid/graphics/Bitmap; │ new-instance v2, Landroid/graphics/drawable/BitmapDrawable; │ │ invoke-direct {v2, p1, v0}, Landroid/graphics/drawable/BitmapDrawable;->(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V │ │ - .line 813 │ + .line 846 │ .local v2, "drawable":Landroid/graphics/drawable/BitmapDrawable; │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget-boolean v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->isTileEnabled:Z │ │ if-eqz v5, :cond_1 │ │ - .line 814 │ + .line 847 │ sget-object v5, Landroid/graphics/Shader$TileMode;->REPEAT:Landroid/graphics/Shader$TileMode; │ │ sget-object v6, Landroid/graphics/Shader$TileMode;->REPEAT:Landroid/graphics/Shader$TileMode; │ │ invoke-virtual {v2, v5, v6}, Landroid/graphics/drawable/BitmapDrawable;->setTileModeXY(Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V │ │ - .line 816 │ + .line 849 │ :cond_1 │ invoke-virtual {v1, v2}, Landroid/widget/FrameLayout;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V │ │ - .line 818 │ + .line 851 │ .end local v0 # "background":Landroid/graphics/Bitmap; │ .end local v2 # "drawable":Landroid/graphics/drawable/BitmapDrawable; │ :cond_2 │ return-object v1 │ │ - .line 788 │ + .line 821 │ .end local v3 # "height":I │ :cond_3 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v3, v6, Lde/keyboardsurfer/android/widget/crouton/Style;->heightInPixels:I │ │ .restart local v3 # "height":I │ goto :goto_0 │ │ - .line 795 │ + .line 828 │ :cond_4 │ iget-object v6, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v4, v6, Lde/keyboardsurfer/android/widget/crouton/Style;->widthInPixels:I │ │ .restart local v4 # "width":I │ goto :goto_1 │ │ :cond_5 │ move v4, v5 │ │ - .line 798 │ + .line 831 │ goto :goto_2 │ │ - .line 805 │ + .line 838 │ .end local v4 # "width":I │ :cond_6 │ iget-object v5, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v5, v5, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundColorResourceId:I │ │ invoke-virtual {p1, v5}, Landroid/content/res/Resources;->getColor(I)I │ @@ -670,243 +718,302 @@ │ .locals 5 │ │ .prologue │ const/4 v4, -0x1 │ │ const/4 v3, -0x2 │ │ - .line 895 │ + .line 954 │ new-instance v0, Landroid/widget/ImageView; │ │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ invoke-direct {v0, v2}, Landroid/widget/ImageView;->(Landroid/content/Context;)V │ │ - .line 896 │ + .line 955 │ .local v0, "image":Landroid/widget/ImageView; │ const/16 v2, 0x100 │ │ invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setId(I)V │ │ - .line 897 │ + .line 956 │ const/4 v2, 0x1 │ │ invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setAdjustViewBounds(Z)V │ │ - .line 898 │ + .line 957 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget-object v2, v2, Lde/keyboardsurfer/android/widget/crouton/Style;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ │ invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V │ │ - .line 901 │ + .line 960 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget-object v2, v2, Lde/keyboardsurfer/android/widget/crouton/Style;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ if-eqz v2, :cond_0 │ │ - .line 902 │ + .line 961 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget-object v2, v2, Lde/keyboardsurfer/android/widget/crouton/Style;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V │ │ - .line 907 │ + .line 966 │ :cond_0 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v2, v2, Lde/keyboardsurfer/android/widget/crouton/Style;->imageResId:I │ │ if-eqz v2, :cond_1 │ │ - .line 908 │ + .line 967 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v2, v2, Lde/keyboardsurfer/android/widget/crouton/Style;->imageResId:I │ │ invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setImageResource(I)V │ │ - .line 911 │ + .line 970 │ :cond_1 │ new-instance v1, Landroid/widget/RelativeLayout$LayoutParams; │ │ invoke-direct {v1, v3, v3}, Landroid/widget/RelativeLayout$LayoutParams;->(II)V │ │ - .line 914 │ + .line 973 │ .local v1, "imageParams":Landroid/widget/RelativeLayout$LayoutParams; │ const/16 v2, 0x9 │ │ invoke-virtual {v1, v2, v4}, Landroid/widget/RelativeLayout$LayoutParams;->addRule(II)V │ │ - .line 915 │ + .line 974 │ const/16 v2, 0xf │ │ invoke-virtual {v1, v2, v4}, Landroid/widget/RelativeLayout$LayoutParams;->addRule(II)V │ │ - .line 917 │ + .line 976 │ invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V │ │ - .line 919 │ + .line 978 │ return-object v0 │ .end method │ │ .method private initializeTextView(Landroid/content/res/Resources;)Landroid/widget/TextView; │ .locals 3 │ .param p1, "resources" # Landroid/content/res/Resources; │ │ .prologue │ - .line 855 │ + .line 897 │ new-instance v0, Landroid/widget/TextView; │ │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ invoke-direct {v0, v1}, Landroid/widget/TextView;->(Landroid/content/Context;)V │ │ - .line 856 │ + .line 898 │ .local v0, "text":Landroid/widget/TextView; │ const/16 v1, 0x101 │ │ invoke-virtual {v0, v1}, Landroid/widget/TextView;->setId(I)V │ │ - .line 857 │ - iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ + .line 899 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ + iget-object v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->fontName:Ljava/lang/String; │ + │ + if-eqz v1, :cond_4 │ + │ + .line 900 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget-object v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->fontName:Ljava/lang/String; │ │ - .line 858 │ + invoke-direct {p0, v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->setTextWithCustomFont(Landroid/widget/TextView;Ljava/lang/String;)V │ + │ + .line 906 │ + :goto_0 │ sget-object v1, Landroid/graphics/Typeface;->DEFAULT_BOLD:Landroid/graphics/Typeface; │ │ invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V │ │ - .line 859 │ + .line 907 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->gravity:I │ │ invoke-virtual {v0, v1}, Landroid/widget/TextView;->setGravity(I)V │ │ - .line 862 │ + .line 910 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorResourceId:I │ + iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorValue:I │ │ - if-eqz v1, :cond_0 │ + const/4 v2, -0x1 │ │ - .line 863 │ - iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ - │ - iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorResourceId:I │ + if-eq v1, v2, :cond_6 │ │ - invoke-virtual {p1, v1}, Landroid/content/res/Resources;->getColor(I)I │ + .line 911 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - move-result v1 │ + iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorValue:I │ │ invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTextColor(I)V │ │ - .line 869 │ + .line 919 │ :cond_0 │ + :goto_1 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textSize:I │ │ if-eqz v1, :cond_1 │ │ - .line 870 │ + .line 920 │ const/4 v1, 0x2 │ │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v2, v2, Lde/keyboardsurfer/android/widget/crouton/Style;->textSize:I │ │ int-to-float v2, v2 │ │ invoke-virtual {v0, v1, v2}, Landroid/widget/TextView;->setTextSize(IF)V │ │ - .line 874 │ + .line 924 │ :cond_1 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowColorResId:I │ │ if-eqz v1, :cond_2 │ │ - .line 875 │ + .line 925 │ invoke-direct {p0, p1, v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->initializeTextViewShadow(Landroid/content/res/Resources;Landroid/widget/TextView;)V │ │ - .line 879 │ + .line 929 │ :cond_2 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textAppearanceResId:I │ │ if-eqz v1, :cond_3 │ │ - .line 880 │ + .line 930 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v2, v2, Lde/keyboardsurfer/android/widget/crouton/Style;->textAppearanceResId:I │ │ invoke-virtual {v0, v1, v2}, Landroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V │ │ - .line 882 │ + .line 932 │ :cond_3 │ return-object v0 │ + │ + .line 901 │ + :cond_4 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->fontNameResId:I │ + │ + if-eqz v1, :cond_5 │ + │ + .line 902 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->fontNameResId:I │ + │ + invoke-virtual {p1, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + invoke-direct {p0, v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->setTextWithCustomFont(Landroid/widget/TextView;Ljava/lang/String;)V │ + │ + goto :goto_0 │ + │ + .line 904 │ + :cond_5 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ + │ + invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ + │ + goto :goto_0 │ + │ + .line 912 │ + :cond_6 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorResourceId:I │ + │ + if-eqz v1, :cond_0 │ + │ + .line 913 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ + │ + iget v1, v1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorResourceId:I │ + │ + invoke-virtual {p1, v1}, Landroid/content/res/Resources;->getColor(I)I │ + │ + move-result v1 │ + │ + invoke-virtual {v0, v1}, Landroid/widget/TextView;->setTextColor(I)V │ + │ + goto :goto_1 │ .end method │ │ .method private initializeTextViewShadow(Landroid/content/res/Resources;Landroid/widget/TextView;)V │ .locals 5 │ .param p1, "resources" # Landroid/content/res/Resources; │ .param p2, "text" # Landroid/widget/TextView; │ │ .prologue │ - .line 886 │ + .line 945 │ iget-object v4, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v4, v4, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowColorResId:I │ │ invoke-virtual {p1, v4}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v0 │ │ - .line 887 │ + .line 946 │ .local v0, "textShadowColor":I │ iget-object v4, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v3, v4, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowRadius:F │ │ - .line 888 │ + .line 947 │ .local v3, "textShadowRadius":F │ iget-object v4, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v1, v4, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowDx:F │ │ - .line 889 │ + .line 948 │ .local v1, "textShadowDx":F │ iget-object v4, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ iget v2, v4, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowDy:F │ │ - .line 890 │ + .line 949 │ .local v2, "textShadowDy":F │ invoke-virtual {p2, v3, v1, v2, v0}, Landroid/widget/TextView;->setShadowLayer(FFFI)V │ │ - .line 891 │ + .line 950 │ return-void │ .end method │ │ .method private isCroutonViewNotNull()Z │ .locals 1 │ │ .prologue │ - .line 684 │ + .line 697 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->croutonView:Landroid/widget/FrameLayout; │ │ if-eqz v0, :cond_0 │ │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->croutonView:Landroid/widget/FrameLayout; │ │ invoke-virtual {v0}, Landroid/widget/FrameLayout;->getParent()Landroid/view/ViewParent; │ @@ -926,15 +1033,15 @@ │ goto :goto_0 │ .end method │ │ .method private isCustomViewNotNull()Z │ .locals 1 │ │ .prologue │ - .line 688 │ + .line 701 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ if-eqz v0, :cond_0 │ │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ invoke-virtual {v0}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ @@ -956,30 +1063,30 @@ │ │ .method public static make(Landroid/app/Activity;Landroid/view/View;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "customView" # Landroid/view/View; │ │ .prologue │ - .line 305 │ + .line 308 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-direct {v0, p0, p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->(Landroid/app/Activity;Landroid/view/View;)V │ │ return-object v0 │ .end method │ │ .method public static make(Landroid/app/Activity;Landroid/view/View;I)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .locals 2 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "customView" # Landroid/view/View; │ .param p2, "viewGroupResId" # I │ │ .prologue │ - .line 339 │ + .line 342 │ new-instance v1, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-virtual {p0, p2}, Landroid/app/Activity;->findViewById(I)Landroid/view/View; │ │ move-result-object v0 │ │ check-cast v0, Landroid/view/ViewGroup; │ @@ -993,15 +1100,15 @@ │ .locals 2 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "customView" # Landroid/view/View; │ .param p2, "viewGroupResId" # I │ .param p3, "configuration" # Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ .prologue │ - .line 359 │ + .line 362 │ new-instance v1, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-virtual {p0, p2}, Landroid/app/Activity;->findViewById(I)Landroid/view/View; │ │ move-result-object v0 │ │ check-cast v0, Landroid/view/ViewGroup; │ @@ -1014,30 +1121,30 @@ │ .method public static make(Landroid/app/Activity;Landroid/view/View;Landroid/view/ViewGroup;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "customView" # Landroid/view/View; │ .param p2, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ - .line 322 │ + .line 325 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-direct {v0, p0, p1, p2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->(Landroid/app/Activity;Landroid/view/View;Landroid/view/ViewGroup;)V │ │ return-object v0 │ .end method │ │ .method public static makeText(Landroid/app/Activity;ILde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "textResourceId" # I │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .prologue │ - .line 249 │ + .line 252 │ invoke-virtual {p0, p1}, Landroid/app/Activity;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0, p2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ @@ -1049,15 +1156,15 @@ │ .locals 2 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "textResourceId" # I │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroupResId" # I │ │ .prologue │ - .line 287 │ + .line 290 │ invoke-virtual {p0, p1}, Landroid/app/Activity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {p0, p3}, Landroid/app/Activity;->findViewById(I)Landroid/view/View; │ │ move-result-object v0 │ @@ -1075,15 +1182,15 @@ │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "textResourceId" # I │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ - .line 268 │ + .line 271 │ invoke-virtual {p0, p1}, Landroid/app/Activity;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0, p2, p3}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ @@ -1094,15 +1201,15 @@ │ .method public static makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "text" # Ljava/lang/CharSequence; │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .prologue │ - .line 192 │ + .line 195 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-direct {v0, p0, p1, p2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)V │ │ return-object v0 │ .end method │ │ @@ -1110,15 +1217,15 @@ │ .locals 2 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "text" # Ljava/lang/CharSequence; │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroupResId" # I │ │ .prologue │ - .line 230 │ + .line 233 │ new-instance v1, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-virtual {p0, p3}, Landroid/app/Activity;->findViewById(I)Landroid/view/View; │ │ move-result-object v0 │ │ check-cast v0, Landroid/view/ViewGroup; │ @@ -1132,15 +1239,15 @@ │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "text" # Ljava/lang/CharSequence; │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ - .line 211 │ + .line 214 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ invoke-direct {v0, p0, p1, p2, p3}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)V │ │ return-object v0 │ .end method │ │ @@ -1148,49 +1255,49 @@ │ .locals 5 │ │ .prologue │ const/4 v4, 0x0 │ │ const/high16 v3, -0x80000000 │ │ - .line 755 │ + .line 788 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ │ move-result-object v0 │ │ - .line 757 │ + .line 790 │ .local v0, "view":Landroid/view/View; │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ if-eqz v2, :cond_0 │ │ - .line 758 │ + .line 791 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ invoke-virtual {v2}, Landroid/view/ViewGroup;->getMeasuredWidth()I │ │ move-result v2 │ │ invoke-static {v2, v3}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I │ │ move-result v1 │ │ - .line 764 │ + .line 797 │ .local v1, "widthSpec":I │ :goto_0 │ invoke-static {v4, v4}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I │ │ move-result v2 │ │ invoke-virtual {v0, v1, v2}, Landroid/view/View;->measure(II)V │ │ - .line 765 │ + .line 798 │ return-void │ │ - .line 760 │ + .line 793 │ .end local v1 # "widthSpec":I │ :cond_0 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ invoke-virtual {v2}, Landroid/app/Activity;->getWindow()Landroid/view/Window; │ │ move-result-object v2 │ @@ -1207,176 +1314,223 @@ │ │ move-result v1 │ │ .restart local v1 # "widthSpec":I │ goto :goto_0 │ .end method │ │ +.method private setTextWithCustomFont(Landroid/widget/TextView;Ljava/lang/String;)V │ + .locals 5 │ + .param p1, "text" # Landroid/widget/TextView; │ + .param p2, "fontName" # Ljava/lang/String; │ + │ + .prologue │ + .line 936 │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ + │ + if-eqz v1, :cond_0 │ + │ + .line 937 │ + new-instance v0, Landroid/text/SpannableString; │ + │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ + │ + invoke-direct {v0, v1}, Landroid/text/SpannableString;->(Ljava/lang/CharSequence;)V │ + │ + .line 938 │ + .local v0, "s":Landroid/text/SpannableString; │ + new-instance v1, Lde/keyboardsurfer/android/widget/crouton/TypefaceSpan; │ + │ + invoke-virtual {p1}, Landroid/widget/TextView;->getContext()Landroid/content/Context; │ + │ + move-result-object v2 │ + │ + invoke-direct {v1, v2, p2}, Lde/keyboardsurfer/android/widget/crouton/TypefaceSpan;->(Landroid/content/Context;Ljava/lang/String;)V │ + │ + const/4 v2, 0x0 │ + │ + invoke-virtual {v0}, Landroid/text/SpannableString;->length()I │ + │ + move-result v3 │ + │ + const/16 v4, 0x21 │ + │ + invoke-virtual {v0, v1, v2, v3, v4}, Landroid/text/SpannableString;->setSpan(Ljava/lang/Object;III)V │ + │ + .line 940 │ + invoke-virtual {p1, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ + │ + .line 942 │ + .end local v0 # "s":Landroid/text/SpannableString; │ + :cond_0 │ + return-void │ +.end method │ + │ .method public static show(Landroid/app/Activity;Landroid/view/View;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "customView" # Landroid/view/View; │ │ .prologue │ - .line 445 │ + .line 448 │ invoke-static {p0, p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->make(Landroid/app/Activity;Landroid/view/View;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ - .line 446 │ + .line 449 │ return-void │ .end method │ │ .method public static show(Landroid/app/Activity;Landroid/view/View;I)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "customView" # Landroid/view/View; │ .param p2, "viewGroupResId" # I │ │ .prologue │ - .line 475 │ + .line 478 │ invoke-static {p0, p1, p2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->make(Landroid/app/Activity;Landroid/view/View;I)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ - .line 476 │ + .line 479 │ return-void │ .end method │ │ .method public static show(Landroid/app/Activity;Landroid/view/View;Landroid/view/ViewGroup;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "customView" # Landroid/view/View; │ .param p2, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ - .line 460 │ + .line 463 │ invoke-static {p0, p1, p2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->make(Landroid/app/Activity;Landroid/view/View;Landroid/view/ViewGroup;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ - .line 461 │ + .line 464 │ return-void │ .end method │ │ .method public static showText(Landroid/app/Activity;ILde/keyboardsurfer/android/widget/crouton/Style;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "textResourceId" # I │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .prologue │ - .line 491 │ + .line 494 │ invoke-virtual {p0, p1}, Landroid/app/Activity;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0, p2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->showText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)V │ │ - .line 492 │ + .line 495 │ return-void │ .end method │ │ .method public static showText(Landroid/app/Activity;ILde/keyboardsurfer/android/widget/crouton/Style;I)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "textResourceId" # I │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroupResId" # I │ │ .prologue │ - .line 525 │ + .line 528 │ invoke-virtual {p0, p1}, Landroid/app/Activity;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0, p2, p3}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->showText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;I)V │ │ - .line 526 │ + .line 529 │ return-void │ .end method │ │ .method public static showText(Landroid/app/Activity;ILde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "textResourceId" # I │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ - .line 508 │ + .line 511 │ invoke-virtual {p0, p1}, Landroid/app/Activity;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0, v0, p2, p3}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->showText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)V │ │ - .line 509 │ + .line 512 │ return-void │ .end method │ │ .method public static showText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "text" # Ljava/lang/CharSequence; │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .prologue │ - .line 375 │ + .line 378 │ invoke-static {p0, p1, p2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ - .line 376 │ + .line 379 │ return-void │ .end method │ │ .method public static showText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;I)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "text" # Ljava/lang/CharSequence; │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroupResId" # I │ │ .prologue │ - .line 409 │ + .line 412 │ invoke-virtual {p0, p3}, Landroid/app/Activity;->findViewById(I)Landroid/view/View; │ │ move-result-object v0 │ │ check-cast v0, Landroid/view/ViewGroup; │ │ invoke-static {p0, p1, p2, v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ - .line 410 │ + .line 413 │ return-void │ .end method │ │ .method public static showText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;ILde/keyboardsurfer/android/widget/crouton/Configuration;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "text" # Ljava/lang/CharSequence; │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroupResId" # I │ .param p4, "configuration" # Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ .prologue │ - .line 429 │ + .line 432 │ invoke-virtual {p0, p3}, Landroid/app/Activity;->findViewById(I)Landroid/view/View; │ │ move-result-object v0 │ │ check-cast v0, Landroid/view/ViewGroup; │ │ invoke-static {p0, p1, p2, v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ @@ -1385,153 +1539,153 @@ │ │ invoke-virtual {v0, p4}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->setConfiguration(Lde/keyboardsurfer/android/widget/crouton/Configuration;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ - .line 431 │ + .line 434 │ return-void │ .end method │ │ .method public static showText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)V │ .locals 1 │ .param p0, "activity" # Landroid/app/Activity; │ .param p1, "text" # Ljava/lang/CharSequence; │ .param p2, "style" # Lde/keyboardsurfer/android/widget/crouton/Style; │ .param p3, "viewGroup" # Landroid/view/ViewGroup; │ │ .prologue │ - .line 392 │ + .line 395 │ invoke-static {p0, p1, p2, p3}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->makeText(Landroid/app/Activity;Ljava/lang/CharSequence;Lde/keyboardsurfer/android/widget/crouton/Style;Landroid/view/ViewGroup;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->show()V │ │ - .line 393 │ + .line 396 │ return-void │ .end method │ │ │ # virtual methods │ .method public cancel()V │ .locals 1 │ │ .prologue │ - .line 559 │ + .line 564 │ invoke-static {}, Lde/keyboardsurfer/android/widget/crouton/Manager;->getInstance()Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ move-result-object v0 │ │ - .line 560 │ + .line 565 │ .local v0, "manager":Lde/keyboardsurfer/android/widget/crouton/Manager; │ invoke-virtual {v0, p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeCroutonImmediately(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 561 │ + .line 566 │ return-void │ .end method │ │ .method detachActivity()V │ .locals 1 │ │ .prologue │ - .line 693 │ + .line 708 │ const/4 v0, 0x0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ - .line 694 │ + .line 709 │ return-void │ .end method │ │ .method detachLifecycleCallback()V │ .locals 1 │ │ .prologue │ - .line 703 │ + .line 722 │ const/4 v0, 0x0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->lifecycleCallback:Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ - .line 704 │ + .line 723 │ return-void │ .end method │ │ .method detachViewGroup()V │ .locals 1 │ │ .prologue │ - .line 698 │ + .line 715 │ const/4 v0, 0x0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ - .line 699 │ + .line 716 │ return-void │ .end method │ │ .method getActivity()Landroid/app/Activity; │ .locals 1 │ │ .prologue │ - .line 726 │ + .line 753 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ return-object v0 │ .end method │ │ .method getConfiguration()Lde/keyboardsurfer/android/widget/crouton/Configuration; │ .locals 1 │ │ .prologue │ - .line 718 │ + .line 743 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ if-nez v0, :cond_0 │ │ - .line 719 │ + .line 744 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getStyle()Lde/keyboardsurfer/android/widget/crouton/Style; │ │ move-result-object v0 │ │ iget-object v0, v0, Lde/keyboardsurfer/android/widget/crouton/Style;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 721 │ + .line 746 │ :cond_0 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ return-object v0 │ .end method │ │ .method public getInAnimation()Landroid/view/animation/Animation; │ .locals 2 │ │ .prologue │ - .line 572 │ + .line 577 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->inAnimation:Landroid/view/animation/Animation; │ │ if-nez v0, :cond_0 │ │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ if-eqz v0, :cond_0 │ │ - .line 573 │ + .line 578 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getConfiguration()Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ move-result-object v0 │ │ iget v0, v0, Lde/keyboardsurfer/android/widget/crouton/Configuration;->inAnimationResId:I │ │ if-lez v0, :cond_1 │ │ - .line 574 │ + .line 579 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v0 │ │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getConfiguration()Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ move-result-object v1 │ @@ -1540,26 +1694,26 @@ │ │ invoke-static {v0, v1}, Landroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation; │ │ move-result-object v0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->inAnimation:Landroid/view/animation/Animation; │ │ - .line 581 │ + .line 586 │ :cond_0 │ :goto_0 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->inAnimation:Landroid/view/animation/Animation; │ │ return-object v0 │ │ - .line 576 │ + .line 581 │ :cond_1 │ invoke-direct {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->measureCroutonView()V │ │ - .line 577 │ + .line 582 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ │ move-result-object v0 │ │ invoke-static {v0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->buildDefaultSlideInDownAnimation(Landroid/view/View;)Landroid/view/animation/Animation; │ │ move-result-object v0 │ @@ -1569,43 +1723,43 @@ │ goto :goto_0 │ .end method │ │ .method getLifecycleCallback()Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ .locals 1 │ │ .prologue │ - .line 708 │ + .line 729 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->lifecycleCallback:Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ return-object v0 │ .end method │ │ .method public getOutAnimation()Landroid/view/animation/Animation; │ .locals 2 │ │ .prologue │ - .line 585 │ + .line 590 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->outAnimation:Landroid/view/animation/Animation; │ │ if-nez v0, :cond_0 │ │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ if-eqz v0, :cond_0 │ │ - .line 586 │ + .line 591 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getConfiguration()Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ move-result-object v0 │ │ iget v0, v0, Lde/keyboardsurfer/android/widget/crouton/Configuration;->outAnimationResId:I │ │ if-lez v0, :cond_1 │ │ - .line 587 │ + .line 592 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v0 │ │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getConfiguration()Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ move-result-object v1 │ @@ -1614,22 +1768,22 @@ │ │ invoke-static {v0, v1}, Landroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation; │ │ move-result-object v0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->outAnimation:Landroid/view/animation/Animation; │ │ - .line 593 │ + .line 598 │ :cond_0 │ :goto_0 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->outAnimation:Landroid/view/animation/Animation; │ │ return-object v0 │ │ - .line 589 │ + .line 594 │ :cond_1 │ invoke-virtual {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ │ move-result-object v0 │ │ invoke-static {v0}, Lde/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder;->buildDefaultSlideOutUpAnimation(Landroid/view/View;)Landroid/view/animation/Animation; │ │ @@ -1640,77 +1794,92 @@ │ goto :goto_0 │ .end method │ │ .method getStyle()Lde/keyboardsurfer/android/widget/crouton/Style; │ .locals 1 │ │ .prologue │ - .line 713 │ + .line 736 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->style:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ return-object v0 │ .end method │ │ .method getText()Ljava/lang/CharSequence; │ .locals 1 │ │ .prologue │ - .line 736 │ + .line 767 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->text:Ljava/lang/CharSequence; │ │ return-object v0 │ .end method │ │ .method getView()Landroid/view/View; │ .locals 1 │ │ .prologue │ - .line 742 │ + .line 775 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ if-eqz v0, :cond_0 │ │ - .line 743 │ + .line 776 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->customView:Landroid/view/View; │ │ - .line 751 │ + .line 784 │ :goto_0 │ return-object v0 │ │ - .line 747 │ + .line 780 │ :cond_0 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->croutonView:Landroid/widget/FrameLayout; │ │ if-nez v0, :cond_1 │ │ - .line 748 │ + .line 781 │ invoke-direct {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->initializeCroutonView()V │ │ - .line 751 │ + .line 784 │ :cond_1 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->croutonView:Landroid/widget/FrameLayout; │ │ goto :goto_0 │ .end method │ │ .method getViewGroup()Landroid/view/ViewGroup; │ .locals 1 │ │ .prologue │ - .line 731 │ + .line 760 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->viewGroup:Landroid/view/ViewGroup; │ │ return-object v0 │ .end method │ │ +.method public hide()V │ + .locals 1 │ + │ + .prologue │ + .line 615 │ + invoke-static {}, Lde/keyboardsurfer/android/widget/crouton/Manager;->getInstance()Lde/keyboardsurfer/android/widget/crouton/Manager; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0, p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ + │ + .line 616 │ + return-void │ +.end method │ + │ .method isShowing()Z │ .locals 1 │ │ .prologue │ - .line 680 │ + .line 693 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->activity:Landroid/app/Activity; │ │ if-eqz v0, :cond_1 │ │ invoke-direct {p0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->isCroutonViewNotNull()Z │ │ move-result v0 │ @@ -1736,65 +1905,65 @@ │ .end method │ │ .method public setConfiguration(Lde/keyboardsurfer/android/widget/crouton/Configuration;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .locals 0 │ .param p1, "configuration" # Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ .prologue │ - .line 626 │ + .line 640 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 627 │ + .line 641 │ return-object p0 │ .end method │ │ .method public setLifecycleCallback(Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback;)V │ .locals 0 │ .param p1, "lifecycleCallback" # Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ .prologue │ - .line 601 │ + .line 606 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->lifecycleCallback:Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ - .line 602 │ + .line 607 │ return-void │ .end method │ │ .method public setOnClickListener(Landroid/view/View$OnClickListener;)Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .locals 0 │ .param p1, "onClickListener" # Landroid/view/View$OnClickListener; │ │ .prologue │ - .line 613 │ + .line 627 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Crouton;->onClickListener:Landroid/view/View$OnClickListener; │ │ - .line 614 │ + .line 628 │ return-object p0 │ .end method │ │ .method public show()V │ .locals 1 │ │ .prologue │ - .line 568 │ + .line 573 │ invoke-static {}, Lde/keyboardsurfer/android/widget/crouton/Manager;->getInstance()Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ move-result-object v0 │ │ invoke-virtual {v0, p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->add(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 569 │ + .line 574 │ return-void │ .end method │ │ .method public toString()Ljava/lang/String; │ .locals 2 │ │ .prologue │ - .line 632 │ + .line 646 │ new-instance v0, Ljava/lang/StringBuilder; │ │ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ │ const-string v1, "Crouton{text=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ├── smali/de/keyboardsurfer/android/widget/crouton/Style.smali │ @@ -15,14 +15,16 @@ │ # static fields │ .field public static final ALERT:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .field public static final CONFIRM:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .field public static final INFO:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ +.field public static final NOT_SET:I = -0x1 │ + │ .field public static final holoBlueLight:I = -0xcc4a1b │ │ .field public static final holoGreenLight:I = -0x663400 │ │ .field public static final holoRedLight:I = -0xbbbc │ │ │ @@ -31,14 +33,18 @@ │ │ .field final backgroundColorValue:I │ │ .field final backgroundDrawableResourceId:I │ │ .field final configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ +.field final fontName:Ljava/lang/String; │ + │ +.field final fontNameResId:I │ + │ .field final gravity:I │ │ .field final heightDimensionResId:I │ │ .field final heightInPixels:I │ │ .field final imageDrawable:Landroid/graphics/drawable/Drawable; │ @@ -53,14 +59,16 @@ │ │ .field final paddingInPixels:I │ │ .field final textAppearanceResId:I │ │ .field final textColorResourceId:I │ │ +.field final textColorValue:I │ + │ .field final textShadowColorResId:I │ │ .field final textShadowDx:F │ │ .field final textShadowDy:F │ │ .field final textShadowRadius:F │ @@ -73,15 +81,15 @@ │ │ │ # direct methods │ .method static constructor ()V │ .locals 2 │ │ .prologue │ - .line 41 │ + .line 42 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ invoke-direct {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->()V │ │ const v1, -0xbbbc │ │ invoke-virtual {v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->setBackgroundColorValue(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ @@ -90,15 +98,15 @@ │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->build()Lde/keyboardsurfer/android/widget/crouton/Style; │ │ move-result-object v0 │ │ sput-object v0, Lde/keyboardsurfer/android/widget/crouton/Style;->ALERT:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - .line 44 │ + .line 45 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ invoke-direct {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->()V │ │ const v1, -0x663400 │ │ invoke-virtual {v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->setBackgroundColorValue(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ @@ -107,15 +115,15 @@ │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->build()Lde/keyboardsurfer/android/widget/crouton/Style; │ │ move-result-object v0 │ │ sput-object v0, Lde/keyboardsurfer/android/widget/crouton/Style;->CONFIRM:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - .line 47 │ + .line 48 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ invoke-direct {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->()V │ │ const v1, -0xcc4a1b │ │ invoke-virtual {v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->setBackgroundColorValue(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ @@ -124,225 +132,249 @@ │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->build()Lde/keyboardsurfer/android/widget/crouton/Style; │ │ move-result-object v0 │ │ sput-object v0, Lde/keyboardsurfer/android/widget/crouton/Style;->INFO:Lde/keyboardsurfer/android/widget/crouton/Style; │ │ - .line 50 │ + .line 51 │ return-void │ .end method │ │ .method private constructor (Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)V │ .locals 1 │ .param p1, "builder" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 141 │ + .line 155 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 142 │ + .line 156 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ move-result-object v0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 143 │ + .line 157 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorResourceId:I │ invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundColorResourceId:I │ │ - .line 144 │ + .line 158 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundDrawableResourceId:I │ invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundDrawableResourceId:I │ │ - .line 145 │ + .line 159 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->isTileEnabled:Z │ invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Z │ │ move-result v0 │ │ iput-boolean v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->isTileEnabled:Z │ │ - .line 146 │ + .line 160 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorResourceId:I │ invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorResourceId:I │ │ - .line 147 │ - # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightInPixels:I │ + .line 161 │ + # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorValue:I │ invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$500(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ + iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorValue:I │ + │ + .line 162 │ + # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightInPixels:I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$600(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + │ + move-result v0 │ + │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->heightInPixels:I │ │ - .line 148 │ + .line 163 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightDimensionResId:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$600(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$700(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->heightDimensionResId:I │ │ - .line 149 │ + .line 164 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthInPixels:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$700(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$800(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->widthInPixels:I │ │ - .line 150 │ + .line 165 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthDimensionResId:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$800(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$900(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->widthDimensionResId:I │ │ - .line 151 │ + .line 166 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->gravity:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$900(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->gravity:I │ │ - .line 152 │ + .line 167 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageDrawable:Landroid/graphics/drawable/Drawable; │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/graphics/drawable/Drawable; │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/graphics/drawable/Drawable; │ │ move-result-object v0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ - .line 153 │ + .line 168 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textSize:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textSize:I │ │ - .line 154 │ + .line 169 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowColorResId:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowColorResId:I │ │ - .line 155 │ + .line 170 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowRadius:F │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowRadius:F │ │ - .line 156 │ + .line 171 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDx:F │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1500(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowDx:F │ │ - .line 157 │ + .line 172 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDy:F │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1500(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1600(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowDy:F │ │ - .line 158 │ + .line 173 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textAppearanceResId:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1600(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1700(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textAppearanceResId:I │ │ - .line 159 │ + .line 174 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageResId:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1700(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1800(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->imageResId:I │ │ - .line 160 │ + .line 175 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1800(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/widget/ImageView$ScaleType; │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1900(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/widget/ImageView$ScaleType; │ │ move-result-object v0 │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ │ - .line 161 │ + .line 176 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingInPixels:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$1900(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$2000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingInPixels:I │ │ - .line 162 │ + .line 177 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingDimensionResId:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$2000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$2100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingDimensionResId:I │ │ - .line 163 │ + .line 178 │ # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorValue:I │ - invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$2100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$2200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ │ move-result v0 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundColorValue:I │ │ - .line 164 │ + .line 179 │ + # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontName:Ljava/lang/String; │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$2300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->fontName:Ljava/lang/String; │ + │ + .line 180 │ + # getter for: Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontNameResId:I │ + invoke-static {p1}, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->access$2400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + │ + move-result v0 │ + │ + iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->fontNameResId:I │ + │ + .line 181 │ return-void │ .end method │ │ .method synthetic constructor (Lde/keyboardsurfer/android/widget/crouton/Style$Builder;Lde/keyboardsurfer/android/widget/crouton/Style$1;)V │ .locals 0 │ .param p1, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .param p2, "x1" # Lde/keyboardsurfer/android/widget/crouton/Style$1; │ │ .prologue │ - .line 27 │ + .line 26 │ invoke-direct {p0, p1}, Lde/keyboardsurfer/android/widget/crouton/Style;->(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)V │ │ return-void │ .end method │ │ │ # virtual methods │ .method public toString()Ljava/lang/String; │ .locals 2 │ │ .prologue │ - .line 485 │ + .line 536 │ new-instance v0, Ljava/lang/StringBuilder; │ │ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ │ const-string v1, "Style{configuration=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -411,14 +443,26 @@ │ │ iget v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorResourceId:I │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ + const-string v1, ", textColorValue=" │ + │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + iget v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorValue:I │ + │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ const-string v1, ", heightInPixels=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ iget v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->heightInPixels:I │ @@ -603,14 +647,38 @@ │ │ iget v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingDimensionResId:I │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ + const-string v1, ", fontName=" │ + │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->fontName:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + const-string v1, ", fontNameResId=" │ + │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ + iget v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style;->fontNameResId:I │ + │ + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + │ + move-result-object v0 │ + │ const/16 v1, 0x7d │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ├── smali/de/keyboardsurfer/android/widget/crouton/Manager$Messages.smali │ @@ -23,12 +23,12 @@ │ │ │ # direct methods │ .method private constructor ()V │ .locals 0 │ │ .prologue │ - .line 41 │ + .line 47 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method ├── smali/de/keyboardsurfer/android/widget/crouton/Style$Builder.smali │ @@ -19,14 +19,18 @@ │ │ .field private backgroundColorValue:I │ │ .field private backgroundDrawableResourceId:I │ │ .field private configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ +.field private fontName:Ljava/lang/String; │ + │ +.field private fontNameResId:I │ + │ .field private gravity:I │ │ .field private heightDimensionResId:I │ │ .field private heightInPixels:I │ │ .field private imageDrawable:Landroid/graphics/drawable/Drawable; │ @@ -41,14 +45,16 @@ │ │ .field private paddingInPixels:I │ │ .field private textAppearanceResId:I │ │ .field private textColorResourceId:I │ │ +.field private textColorValue:I │ + │ .field private textShadowColorResId:I │ │ .field private textShadowDx:F │ │ .field private textShadowDy:F │ │ .field private textShadowRadius:F │ @@ -58,719 +64,812 @@ │ .field private widthDimensionResId:I │ │ .field private widthInPixels:I │ │ │ # direct methods │ .method public constructor ()V │ - .locals 3 │ + .locals 4 │ │ .prologue │ + const/4 v3, 0x0 │ + │ const/4 v2, -0x1 │ │ const/4 v1, 0x0 │ │ - .line 192 │ + .line 212 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 193 │ + .line 213 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/Configuration;->DEFAULT:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 194 │ + .line 214 │ const/16 v0, 0xa │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingInPixels:I │ │ - .line 195 │ + .line 215 │ const v0, 0x1060012 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorResourceId:I │ │ - .line 196 │ + .line 216 │ iput v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundDrawableResourceId:I │ │ - .line 197 │ + .line 217 │ iput v2, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorValue:I │ │ - .line 198 │ + .line 218 │ iput-boolean v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->isTileEnabled:Z │ │ - .line 199 │ + .line 219 │ const v0, 0x106000b │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorResourceId:I │ │ - .line 200 │ + .line 220 │ + iput v2, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorValue:I │ + │ + .line 221 │ const/4 v0, -0x2 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightInPixels:I │ │ - .line 201 │ + .line 222 │ iput v2, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthInPixels:I │ │ - .line 202 │ + .line 223 │ const/16 v0, 0x11 │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->gravity:I │ │ - .line 203 │ - const/4 v0, 0x0 │ - │ - iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageDrawable:Landroid/graphics/drawable/Drawable; │ + .line 224 │ + iput-object v3, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ - .line 204 │ + .line 225 │ iput v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageResId:I │ │ - .line 205 │ + .line 226 │ sget-object v0, Landroid/widget/ImageView$ScaleType;->FIT_XY:Landroid/widget/ImageView$ScaleType; │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ │ - .line 206 │ + .line 227 │ + iput-object v3, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontName:Ljava/lang/String; │ + │ + .line 228 │ + iput v1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontNameResId:I │ + │ + .line 229 │ return-void │ .end method │ │ .method public constructor (Lde/keyboardsurfer/android/widget/crouton/Style;)V │ .locals 1 │ .param p1, "baseStyle" # Lde/keyboardsurfer/android/widget/crouton/Style; │ │ .prologue │ - .line 214 │ + .line 237 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 215 │ + .line 238 │ iget-object v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 216 │ + .line 239 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundColorValue:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorValue:I │ │ - .line 217 │ + .line 240 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundColorResourceId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorResourceId:I │ │ - .line 218 │ + .line 241 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->backgroundDrawableResourceId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundDrawableResourceId:I │ │ - .line 219 │ + .line 242 │ iget-boolean v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->isTileEnabled:Z │ │ iput-boolean v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->isTileEnabled:Z │ │ - .line 220 │ + .line 243 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorResourceId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorResourceId:I │ │ - .line 221 │ + .line 244 │ + iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textColorValue:I │ + │ + iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorValue:I │ + │ + .line 245 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->heightInPixels:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightInPixels:I │ │ - .line 222 │ + .line 246 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->heightDimensionResId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightDimensionResId:I │ │ - .line 223 │ + .line 247 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->widthInPixels:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthInPixels:I │ │ - .line 224 │ + .line 248 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->widthDimensionResId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthDimensionResId:I │ │ - .line 225 │ + .line 249 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->gravity:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->gravity:I │ │ - .line 226 │ + .line 250 │ iget-object v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ - .line 227 │ + .line 251 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textSize:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textSize:I │ │ - .line 228 │ + .line 252 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowColorResId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowColorResId:I │ │ - .line 229 │ + .line 253 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowRadius:F │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowRadius:F │ │ - .line 230 │ + .line 254 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowDx:F │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDx:F │ │ - .line 231 │ + .line 255 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textShadowDy:F │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDy:F │ │ - .line 232 │ + .line 256 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->textAppearanceResId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textAppearanceResId:I │ │ - .line 233 │ + .line 257 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->imageResId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageResId:I │ │ - .line 234 │ + .line 258 │ iget-object v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ │ - .line 235 │ + .line 259 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingInPixels:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingInPixels:I │ │ - .line 236 │ + .line 260 │ iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->paddingDimensionResId:I │ │ iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingDimensionResId:I │ │ - .line 237 │ + .line 261 │ + iget-object v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->fontName:Ljava/lang/String; │ + │ + iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontName:Ljava/lang/String; │ + │ + .line 262 │ + iget v0, p1, Lde/keyboardsurfer/android/widget/crouton/Style;->fontNameResId:I │ + │ + iput v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontNameResId:I │ + │ + .line 263 │ return-void │ .end method │ │ .method static synthetic access$000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Lde/keyboardsurfer/android/widget/crouton/Configuration; │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ return-object v0 │ .end method │ │ .method static synthetic access$100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorResourceId:I │ │ return v0 │ .end method │ │ -.method static synthetic access$1000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/graphics/drawable/Drawable; │ +.method static synthetic access$1000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->gravity:I │ + │ + return v0 │ +.end method │ + │ +.method static synthetic access$1100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/graphics/drawable/Drawable; │ + .locals 1 │ + .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ + │ + .prologue │ + .line 184 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ return-object v0 │ .end method │ │ -.method static synthetic access$1100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$1200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textSize:I │ │ return v0 │ .end method │ │ -.method static synthetic access$1200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$1300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowColorResId:I │ │ return v0 │ .end method │ │ -.method static synthetic access$1300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ +.method static synthetic access$1400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowRadius:F │ │ return v0 │ .end method │ │ -.method static synthetic access$1400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ +.method static synthetic access$1500(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDx:F │ │ return v0 │ .end method │ │ -.method static synthetic access$1500(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ +.method static synthetic access$1600(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)F │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDy:F │ │ return v0 │ .end method │ │ -.method static synthetic access$1600(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$1700(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textAppearanceResId:I │ │ return v0 │ .end method │ │ -.method static synthetic access$1700(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$1800(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageResId:I │ │ return v0 │ .end method │ │ -.method static synthetic access$1800(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/widget/ImageView$ScaleType; │ +.method static synthetic access$1900(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Landroid/widget/ImageView$ScaleType; │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ │ return-object v0 │ .end method │ │ -.method static synthetic access$1900(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ - iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingInPixels:I │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundDrawableResourceId:I │ │ return v0 │ .end method │ │ -.method static synthetic access$200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$2000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ - iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundDrawableResourceId:I │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingInPixels:I │ │ return v0 │ .end method │ │ -.method static synthetic access$2000(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$2100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingDimensionResId:I │ │ return v0 │ .end method │ │ -.method static synthetic access$2100(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ +.method static synthetic access$2200(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorValue:I │ │ return v0 │ .end method │ │ +.method static synthetic access$2300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Ljava/lang/String; │ + .locals 1 │ + .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ + │ + .prologue │ + .line 184 │ + iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontName:Ljava/lang/String; │ + │ + return-object v0 │ +.end method │ + │ +.method static synthetic access$2400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ + .locals 1 │ + .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ + │ + .prologue │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontNameResId:I │ + │ + return v0 │ +.end method │ + │ .method static synthetic access$300(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)Z │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget-boolean v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->isTileEnabled:Z │ │ return v0 │ .end method │ │ .method static synthetic access$400(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ + .line 184 │ iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorResourceId:I │ │ return v0 │ .end method │ │ .method static synthetic access$500(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ - iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightInPixels:I │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorValue:I │ │ return v0 │ .end method │ │ .method static synthetic access$600(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ - iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightDimensionResId:I │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightInPixels:I │ │ return v0 │ .end method │ │ .method static synthetic access$700(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ - iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthInPixels:I │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightDimensionResId:I │ │ return v0 │ .end method │ │ .method static synthetic access$800(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ - iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthDimensionResId:I │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthInPixels:I │ │ return v0 │ .end method │ │ .method static synthetic access$900(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;)I │ .locals 1 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ │ .prologue │ - .line 167 │ - iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->gravity:I │ + .line 184 │ + iget v0, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthDimensionResId:I │ │ return v0 │ .end method │ │ │ # virtual methods │ .method public build()Lde/keyboardsurfer/android/widget/crouton/Style; │ .locals 2 │ │ .prologue │ - .line 479 │ + .line 530 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Style; │ │ const/4 v1, 0x0 │ │ invoke-direct {v0, p0, v1}, Lde/keyboardsurfer/android/widget/crouton/Style;->(Lde/keyboardsurfer/android/widget/crouton/Style$Builder;Lde/keyboardsurfer/android/widget/crouton/Style$1;)V │ │ return-object v0 │ .end method │ │ .method public setBackgroundColor(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "backgroundColorResourceId" # I │ │ .prologue │ - .line 260 │ + .line 286 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorResourceId:I │ │ - .line 262 │ + .line 288 │ return-object p0 │ .end method │ │ .method public setBackgroundColorValue(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "backgroundColorValue" # I │ │ .prologue │ - .line 274 │ + .line 300 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundColorValue:I │ │ - .line 275 │ + .line 301 │ return-object p0 │ .end method │ │ .method public setBackgroundDrawable(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "backgroundDrawableResourceId" # I │ │ .prologue │ - .line 287 │ + .line 313 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->backgroundDrawableResourceId:I │ │ - .line 289 │ + .line 315 │ return-object p0 │ .end method │ │ .method public setConfiguration(Lde/keyboardsurfer/android/widget/crouton/Configuration;)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "configuration" # Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ .prologue │ - .line 247 │ + .line 273 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->configuration:Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ - .line 248 │ + .line 274 │ + return-object p0 │ +.end method │ + │ +.method public setFontName(Ljava/lang/String;)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ + .locals 0 │ + .param p1, "fontName" # Ljava/lang/String; │ + │ + .prologue │ + .line 518 │ + iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontName:Ljava/lang/String; │ + │ + .line 519 │ + return-object p0 │ +.end method │ + │ +.method public setFontNameResId(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ + .locals 0 │ + .param p1, "fontNameResId" # I │ + │ + .prologue │ + .line 524 │ + iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->fontNameResId:I │ + │ + .line 525 │ return-object p0 │ .end method │ │ .method public setGravity(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "gravity" # I │ │ .prologue │ - .line 390 │ + .line 429 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->gravity:I │ │ - .line 392 │ + .line 431 │ return-object p0 │ .end method │ │ .method public setHeight(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "height" # I │ │ .prologue │ - .line 303 │ + .line 329 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightInPixels:I │ │ - .line 305 │ + .line 331 │ return-object p0 │ .end method │ │ .method public setHeightDimensionResId(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "heightDimensionResId" # I │ │ .prologue │ - .line 317 │ + .line 343 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->heightDimensionResId:I │ │ - .line 319 │ + .line 345 │ return-object p0 │ .end method │ │ .method public setImageDrawable(Landroid/graphics/drawable/Drawable;)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "imageDrawable" # Landroid/graphics/drawable/Drawable; │ │ .prologue │ - .line 404 │ + .line 443 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageDrawable:Landroid/graphics/drawable/Drawable; │ │ - .line 406 │ + .line 445 │ return-object p0 │ .end method │ │ .method public setImageResource(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "imageResId" # I │ │ .prologue │ - .line 418 │ + .line 457 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageResId:I │ │ - .line 420 │ + .line 459 │ return-object p0 │ .end method │ │ .method public setImageScaleType(Landroid/widget/ImageView$ScaleType;)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "imageScaleType" # Landroid/widget/ImageView$ScaleType; │ │ .prologue │ - .line 461 │ + .line 500 │ iput-object p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->imageScaleType:Landroid/widget/ImageView$ScaleType; │ │ - .line 462 │ + .line 501 │ return-object p0 │ .end method │ │ .method public setPaddingDimensionResId(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "paddingResId" # I │ │ .prologue │ - .line 473 │ + .line 512 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingDimensionResId:I │ │ - .line 474 │ + .line 513 │ return-object p0 │ .end method │ │ .method public setPaddingInPixels(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "padding" # I │ │ .prologue │ - .line 467 │ + .line 506 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->paddingInPixels:I │ │ - .line 468 │ + .line 507 │ return-object p0 │ .end method │ │ .method public setTextAppearance(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "textAppearanceResId" # I │ │ .prologue │ - .line 455 │ + .line 494 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textAppearanceResId:I │ │ - .line 456 │ + .line 495 │ return-object p0 │ .end method │ │ .method public setTextColor(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "textColor" # I │ │ .prologue │ - .line 376 │ + .line 402 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorResourceId:I │ │ - .line 378 │ + .line 404 │ + return-object p0 │ +.end method │ + │ +.method public setTextColorValue(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ + .locals 0 │ + .param p1, "textColorValue" # I │ + │ + .prologue │ + .line 416 │ + iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textColorValue:I │ + │ + .line 417 │ return-object p0 │ .end method │ │ .method public setTextShadowColor(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "textShadowColorResId" # I │ │ .prologue │ - .line 431 │ + .line 470 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowColorResId:I │ │ - .line 432 │ + .line 471 │ return-object p0 │ .end method │ │ .method public setTextShadowDx(F)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "textShadowDx" # F │ │ .prologue │ - .line 443 │ + .line 482 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDx:F │ │ - .line 444 │ + .line 483 │ return-object p0 │ .end method │ │ .method public setTextShadowDy(F)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "textShadowDy" # F │ │ .prologue │ - .line 449 │ + .line 488 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowDy:F │ │ - .line 450 │ + .line 489 │ return-object p0 │ .end method │ │ .method public setTextShadowRadius(F)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "textShadowRadius" # F │ │ .prologue │ - .line 437 │ + .line 476 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textShadowRadius:F │ │ - .line 438 │ + .line 477 │ return-object p0 │ .end method │ │ .method public setTextSize(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "textSize" # I │ │ .prologue │ - .line 425 │ + .line 464 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->textSize:I │ │ - .line 426 │ + .line 465 │ return-object p0 │ .end method │ │ .method public setTileEnabled(Z)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "isTileEnabled" # Z │ │ .prologue │ - .line 362 │ + .line 388 │ iput-boolean p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->isTileEnabled:Z │ │ - .line 364 │ + .line 390 │ return-object p0 │ .end method │ │ .method public setWidth(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "width" # I │ │ .prologue │ - .line 333 │ + .line 359 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthInPixels:I │ │ - .line 335 │ + .line 361 │ return-object p0 │ .end method │ │ .method public setWidthDimensionResId(I)Lde/keyboardsurfer/android/widget/crouton/Style$Builder; │ .locals 0 │ .param p1, "widthDimensionResId" # I │ │ .prologue │ - .line 347 │ + .line 373 │ iput p1, p0, Lde/keyboardsurfer/android/widget/crouton/Style$Builder;->widthDimensionResId:I │ │ - .line 349 │ + .line 375 │ return-object p0 │ .end method ├── smali/de/keyboardsurfer/android/widget/crouton/Manager.smali │ @@ -12,15 +12,15 @@ │ │ │ # static fields │ .field private static INSTANCE:Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ │ # instance fields │ -.field private croutonQueue:Ljava/util/Queue; │ +.field private final croutonQueue:Ljava/util/Queue; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "Ljava/util/Queue", │ "<", │ "Lde/keyboardsurfer/android/widget/crouton/Crouton;", │ ">;" │ } │ @@ -29,377 +29,407 @@ │ │ │ # direct methods │ .method private constructor ()V │ .locals 1 │ │ .prologue │ - .line 52 │ + .line 58 │ invoke-direct {p0}, Landroid/os/Handler;->()V │ │ - .line 53 │ + .line 59 │ new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue; │ │ invoke-direct {v0}, Ljava/util/concurrent/LinkedBlockingQueue;->()V │ │ iput-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ - .line 54 │ + .line 60 │ return-void │ .end method │ │ .method static synthetic access$000(Lde/keyboardsurfer/android/widget/crouton/Manager;Lde/keyboardsurfer/android/widget/crouton/Crouton;IJ)V │ .locals 0 │ .param p0, "x0" # Lde/keyboardsurfer/android/widget/crouton/Manager; │ .param p1, "x1" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .param p2, "x2" # I │ .param p3, "x3" # J │ │ .prologue │ - .line 39 │ + .line 45 │ invoke-direct {p0, p1, p2, p3, p4}, Lde/keyboardsurfer/android/widget/crouton/Manager;->sendMessageDelayed(Lde/keyboardsurfer/android/widget/crouton/Crouton;IJ)V │ │ return-void │ .end method │ │ .method private addCroutonToView(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ - .locals 5 │ + .locals 7 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ .prologue │ - .line 181 │ + .line 193 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->isShowing()Z │ │ - move-result v3 │ + move-result v5 │ │ - if-eqz v3, :cond_1 │ + if-eqz v5, :cond_1 │ │ - .line 226 │ + .line 248 │ :cond_0 │ :goto_0 │ return-void │ │ - .line 185 │ + .line 197 │ :cond_1 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ │ move-result-object v1 │ │ - .line 186 │ + .line 198 │ .local v1, "croutonView":Landroid/view/View; │ invoke-virtual {v1}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ │ - move-result-object v3 │ + move-result-object v5 │ │ - if-nez v3, :cond_3 │ + if-nez v5, :cond_3 │ │ - .line 187 │ + .line 199 │ invoke-virtual {v1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; │ │ - move-result-object v2 │ + move-result-object v4 │ │ - .line 188 │ - .local v2, "params":Landroid/view/ViewGroup$LayoutParams; │ - if-nez v2, :cond_2 │ + .line 200 │ + .local v4, "params":Landroid/view/ViewGroup$LayoutParams; │ + if-nez v4, :cond_2 │ │ - .line 189 │ - new-instance v2, Landroid/view/ViewGroup$LayoutParams; │ + .line 201 │ + new-instance v4, Landroid/view/ViewGroup$MarginLayoutParams; │ │ - .end local v2 # "params":Landroid/view/ViewGroup$LayoutParams; │ - const/4 v3, -0x1 │ + .end local v4 # "params":Landroid/view/ViewGroup$LayoutParams; │ + const/4 v5, -0x1 │ │ - const/4 v4, -0x2 │ + const/4 v6, -0x2 │ │ - invoke-direct {v2, v3, v4}, Landroid/view/ViewGroup$LayoutParams;->(II)V │ + invoke-direct {v4, v5, v6}, Landroid/view/ViewGroup$MarginLayoutParams;->(II)V │ │ - .line 192 │ - .restart local v2 # "params":Landroid/view/ViewGroup$LayoutParams; │ + .line 205 │ + .restart local v4 # "params":Landroid/view/ViewGroup$LayoutParams; │ :cond_2 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getViewGroup()Landroid/view/ViewGroup; │ │ - move-result-object v3 │ + move-result-object v5 │ │ - if-eqz v3, :cond_5 │ + if-eqz v5, :cond_5 │ │ - .line 194 │ + .line 206 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getViewGroup()Landroid/view/ViewGroup; │ │ - move-result-object v3 │ + move-result-object v2 │ │ - instance-of v3, v3, Landroid/widget/FrameLayout; │ + .line 207 │ + .local v2, "croutonViewGroup":Landroid/view/ViewGroup; │ + invoke-direct {p0, v2}, Lde/keyboardsurfer/android/widget/crouton/Manager;->shouldAddViewWithoutPosition(Landroid/view/ViewGroup;)Z │ │ - if-eqz v3, :cond_4 │ + move-result v5 │ │ - .line 195 │ - invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getViewGroup()Landroid/view/ViewGroup; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v3, v1, v2}, Landroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V │ + if-eqz v5, :cond_4 │ │ .line 208 │ - .end local v2 # "params":Landroid/view/ViewGroup$LayoutParams; │ + invoke-virtual {v2, v1, v4}, Landroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V │ + │ + .line 224 │ + .end local v2 # "croutonViewGroup":Landroid/view/ViewGroup; │ + .end local v4 # "params":Landroid/view/ViewGroup$LayoutParams; │ :cond_3 │ :goto_1 │ invoke-virtual {v1}, Landroid/view/View;->requestLayout()V │ │ - .line 209 │ + .line 225 │ invoke-virtual {v1}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; │ │ move-result-object v3 │ │ - new-instance v4, Lde/keyboardsurfer/android/widget/crouton/Manager$1; │ + .line 226 │ + .local v3, "observer":Landroid/view/ViewTreeObserver; │ + if-eqz v3, :cond_0 │ │ - invoke-direct {v4, p0, v1, p1}, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->(Lde/keyboardsurfer/android/widget/crouton/Manager;Landroid/view/View;Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ + .line 227 │ + new-instance v5, Lde/keyboardsurfer/android/widget/crouton/Manager$1; │ │ - invoke-virtual {v3, v4}, Landroid/view/ViewTreeObserver;->addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V │ + invoke-direct {v5, p0, v1, p1}, Lde/keyboardsurfer/android/widget/crouton/Manager$1;->(Lde/keyboardsurfer/android/widget/crouton/Manager;Landroid/view/View;Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ + │ + invoke-virtual {v3, v5}, Landroid/view/ViewTreeObserver;->addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V │ │ goto :goto_0 │ │ - .line 197 │ - .restart local v2 # "params":Landroid/view/ViewGroup$LayoutParams; │ + .line 210 │ + .end local v3 # "observer":Landroid/view/ViewTreeObserver; │ + .restart local v2 # "croutonViewGroup":Landroid/view/ViewGroup; │ + .restart local v4 # "params":Landroid/view/ViewGroup$LayoutParams; │ :cond_4 │ - invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getViewGroup()Landroid/view/ViewGroup; │ - │ - move-result-object v3 │ - │ - const/4 v4, 0x0 │ + const/4 v5, 0x0 │ │ - invoke-virtual {v3, v1, v4, v2}, Landroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V │ + invoke-virtual {v2, v1, v5, v4}, Landroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V │ │ goto :goto_1 │ │ - .line 200 │ + .line 213 │ + .end local v2 # "croutonViewGroup":Landroid/view/ViewGroup; │ :cond_5 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v0 │ │ - .line 201 │ + .line 214 │ .local v0, "activity":Landroid/app/Activity; │ if-eqz v0, :cond_0 │ │ invoke-virtual {v0}, Landroid/app/Activity;->isFinishing()Z │ │ - move-result v3 │ + move-result v5 │ + │ + if-nez v5, :cond_0 │ + │ + move-object v5, v4 │ │ - if-nez v3, :cond_0 │ + .line 217 │ + check-cast v5, Landroid/view/ViewGroup$MarginLayoutParams; │ │ - .line 204 │ - invoke-virtual {v0, v1, v2}, Landroid/app/Activity;->addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V │ + invoke-direct {p0, v5, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->handleTranslucentActionBar(Landroid/view/ViewGroup$MarginLayoutParams;Landroid/app/Activity;)V │ + │ + move-object v5, v4 │ + │ + .line 218 │ + check-cast v5, Landroid/view/ViewGroup$MarginLayoutParams; │ + │ + invoke-direct {p0, v5, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->handleActionBarOverlay(Landroid/view/ViewGroup$MarginLayoutParams;Landroid/app/Activity;)V │ + │ + .line 220 │ + invoke-virtual {v0, v1, v4}, Landroid/app/Activity;->addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V │ │ goto :goto_1 │ .end method │ │ .method public static announceForAccessibilityCompat(Landroid/content/Context;Ljava/lang/CharSequence;)V │ .locals 5 │ .param p0, "context" # Landroid/content/Context; │ .param p1, "text" # Ljava/lang/CharSequence; │ │ .prologue │ - .line 378 │ + .line 436 │ sget v3, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/4 v4, 0x4 │ │ - if-lt v3, v4, :cond_0 │ + if-lt v3, v4, :cond_1 │ + │ + .line 437 │ + const/4 v0, 0x0 │ │ - .line 379 │ + .line 438 │ + .local v0, "accessibilityManager":Landroid/view/accessibility/AccessibilityManager; │ + if-eqz p0, :cond_0 │ + │ + .line 439 │ const-string v3, "accessibility" │ │ invoke-virtual {p0, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; │ │ move-result-object v0 │ │ + .end local v0 # "accessibilityManager":Landroid/view/accessibility/AccessibilityManager; │ check-cast v0, Landroid/view/accessibility/AccessibilityManager; │ │ - .line 381 │ - .local v0, "accessibilityManager":Landroid/view/accessibility/AccessibilityManager; │ + .line 441 │ + .restart local v0 # "accessibilityManager":Landroid/view/accessibility/AccessibilityManager; │ + :cond_0 │ + if-eqz v0, :cond_1 │ + │ invoke-virtual {v0}, Landroid/view/accessibility/AccessibilityManager;->isEnabled()Z │ │ move-result v3 │ │ - if-nez v3, :cond_1 │ + if-nez v3, :cond_2 │ │ - .line 407 │ + .line 467 │ .end local v0 # "accessibilityManager":Landroid/view/accessibility/AccessibilityManager; │ - :cond_0 │ + :cond_1 │ :goto_0 │ return-void │ │ - .line 389 │ + .line 449 │ .restart local v0 # "accessibilityManager":Landroid/view/accessibility/AccessibilityManager; │ - :cond_1 │ + :cond_2 │ sget v3, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v4, 0x10 │ │ - if-ge v3, v4, :cond_2 │ + if-ge v3, v4, :cond_3 │ │ - .line 390 │ + .line 450 │ const/16 v2, 0x8 │ │ - .line 397 │ + .line 457 │ .local v2, "eventType":I │ :goto_1 │ invoke-static {v2}, Landroid/view/accessibility/AccessibilityEvent;->obtain(I)Landroid/view/accessibility/AccessibilityEvent; │ │ move-result-object v1 │ │ - .line 398 │ + .line 458 │ .local v1, "event":Landroid/view/accessibility/AccessibilityEvent; │ invoke-virtual {v1}, Landroid/view/accessibility/AccessibilityEvent;->getText()Ljava/util/List; │ │ move-result-object v3 │ │ invoke-interface {v3, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ - .line 399 │ + .line 459 │ const-class v3, Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v1, v3}, Landroid/view/accessibility/AccessibilityEvent;->setClassName(Ljava/lang/CharSequence;)V │ │ - .line 400 │ + .line 460 │ invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v1, v3}, Landroid/view/accessibility/AccessibilityEvent;->setPackageName(Ljava/lang/CharSequence;)V │ │ - .line 405 │ + .line 465 │ invoke-virtual {v0, v1}, Landroid/view/accessibility/AccessibilityManager;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V │ │ goto :goto_0 │ │ - .line 392 │ + .line 452 │ .end local v1 # "event":Landroid/view/accessibility/AccessibilityEvent; │ .end local v2 # "eventType":I │ - :cond_2 │ + :cond_3 │ const/16 v2, 0x4000 │ │ .restart local v2 # "eventType":I │ goto :goto_1 │ .end method │ │ .method private calculateCroutonDuration(Lde/keyboardsurfer/android/widget/crouton/Crouton;)J │ .locals 4 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ .prologue │ - .line 102 │ + .line 112 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getConfiguration()Lde/keyboardsurfer/android/widget/crouton/Configuration; │ │ move-result-object v2 │ │ iget v2, v2, Lde/keyboardsurfer/android/widget/crouton/Configuration;->durationInMilliseconds:I │ │ int-to-long v0, v2 │ │ - .line 103 │ + .line 113 │ .local v0, "croutonDuration":J │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getInAnimation()Landroid/view/animation/Animation; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Landroid/view/animation/Animation;->getDuration()J │ │ move-result-wide v2 │ │ add-long/2addr v0, v2 │ │ - .line 104 │ + .line 114 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getOutAnimation()Landroid/view/animation/Animation; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Landroid/view/animation/Animation;->getDuration()J │ │ move-result-wide v2 │ │ add-long/2addr v0, v2 │ │ - .line 105 │ + .line 115 │ return-wide v0 │ .end method │ │ .method private displayCrouton()V │ .locals 4 │ │ .prologue │ - .line 78 │ + .line 88 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v1}, Ljava/util/Queue;->isEmpty()Z │ │ move-result v1 │ │ if-eqz v1, :cond_1 │ │ - .line 99 │ + .line 109 │ :cond_0 │ :goto_0 │ return-void │ │ - .line 83 │ + .line 93 │ :cond_1 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v1}, Ljava/util/Queue;->peek()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ - .line 86 │ + .line 96 │ .local v0, "currentCrouton":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v1 │ │ if-nez v1, :cond_2 │ │ - .line 87 │ + .line 97 │ iget-object v1, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v1}, Ljava/util/Queue;->poll()Ljava/lang/Object; │ │ - .line 90 │ + .line 100 │ :cond_2 │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->isShowing()Z │ │ move-result v1 │ │ if-nez v1, :cond_3 │ │ - .line 92 │ + .line 102 │ const v1, -0x3dff8b23 │ │ invoke-direct {p0, v0, v1}, Lde/keyboardsurfer/android/widget/crouton/Manager;->sendMessage(Lde/keyboardsurfer/android/widget/crouton/Crouton;I)V │ │ - .line 93 │ + .line 103 │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getLifecycleCallback()Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ move-result-object v1 │ │ if-eqz v1, :cond_0 │ │ - .line 94 │ + .line 104 │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getLifecycleCallback()Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ move-result-object v1 │ │ invoke-interface {v1}, Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback;->onDisplayed()V │ │ goto :goto_0 │ │ - .line 97 │ + .line 107 │ :cond_3 │ const v1, 0xc2007 │ │ invoke-direct {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->calculateCroutonDuration(Lde/keyboardsurfer/android/widget/crouton/Crouton;)J │ │ move-result-wide v2 │ │ @@ -408,270 +438,438 @@ │ goto :goto_0 │ .end method │ │ .method static declared-synchronized getInstance()Lde/keyboardsurfer/android/widget/crouton/Manager; │ .locals 2 │ │ .prologue │ - .line 58 │ + .line 66 │ const-class v1, Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ monitor-enter v1 │ │ :try_start_0 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/Manager;->INSTANCE:Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ if-nez v0, :cond_0 │ │ - .line 59 │ + .line 67 │ new-instance v0, Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ invoke-direct {v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->()V │ │ sput-object v0, Lde/keyboardsurfer/android/widget/crouton/Manager;->INSTANCE:Lde/keyboardsurfer/android/widget/crouton/Manager; │ │ - .line 62 │ + .line 70 │ :cond_0 │ sget-object v0, Lde/keyboardsurfer/android/widget/crouton/Manager;->INSTANCE:Lde/keyboardsurfer/android/widget/crouton/Manager; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ monitor-exit v1 │ │ return-object v0 │ │ - .line 58 │ + .line 66 │ :catchall_0 │ move-exception v0 │ │ monitor-exit v1 │ │ throw v0 │ .end method │ │ +.method private handleActionBarOverlay(Landroid/view/ViewGroup$MarginLayoutParams;Landroid/app/Activity;)V │ + .locals 3 │ + .param p1, "params" # Landroid/view/ViewGroup$MarginLayoutParams; │ + .param p2, "activity" # Landroid/app/Activity; │ + .annotation build Landroid/annotation/TargetApi; │ + value = 0xb │ + .end annotation │ + │ + .prologue │ + .line 270 │ + sget v1, Landroid/os/Build$VERSION;->SDK_INT:I │ + │ + const/16 v2, 0xb │ + │ + if-lt v1, v2, :cond_0 │ + │ + .line 271 │ + invoke-virtual {p2}, Landroid/app/Activity;->getWindow()Landroid/view/Window; │ + │ + move-result-object v1 │ + │ + const/16 v2, 0x9 │ + │ + invoke-virtual {v1, v2}, Landroid/view/Window;->hasFeature(I)Z │ + │ + move-result v0 │ + │ + .line 272 │ + .local v0, "flags":Z │ + if-eqz v0, :cond_0 │ + │ + .line 273 │ + invoke-direct {p0, p1, p2}, Lde/keyboardsurfer/android/widget/crouton/Manager;->setActionBarMargin(Landroid/view/ViewGroup$MarginLayoutParams;Landroid/app/Activity;)V │ + │ + .line 276 │ + .end local v0 # "flags":Z │ + :cond_0 │ + return-void │ +.end method │ + │ +.method private handleTranslucentActionBar(Landroid/view/ViewGroup$MarginLayoutParams;Landroid/app/Activity;)V │ + .locals 5 │ + .param p1, "params" # Landroid/view/ViewGroup$MarginLayoutParams; │ + .param p2, "activity" # Landroid/app/Activity; │ + .annotation build Landroid/annotation/TargetApi; │ + value = 0x13 │ + .end annotation │ + │ + .prologue │ + const/high16 v4, 0x4000000 │ + │ + .line 258 │ + sget v2, Landroid/os/Build$VERSION;->SDK_INT:I │ + │ + const/16 v3, 0x13 │ + │ + if-lt v2, v3, :cond_0 │ + │ + .line 259 │ + invoke-virtual {p2}, Landroid/app/Activity;->getWindow()Landroid/view/Window; │ + │ + move-result-object v2 │ + │ + invoke-virtual {v2}, Landroid/view/Window;->getAttributes()Landroid/view/WindowManager$LayoutParams; │ + │ + move-result-object v2 │ + │ + iget v0, v2, Landroid/view/WindowManager$LayoutParams;->flags:I │ + │ + .line 260 │ + .local v0, "flags":I │ + const/high16 v1, 0x4000000 │ + │ + .line 261 │ + .local v1, "translucentStatusFlag":I │ + and-int v2, v0, v4 │ + │ + if-ne v2, v4, :cond_0 │ + │ + .line 262 │ + invoke-direct {p0, p1, p2}, Lde/keyboardsurfer/android/widget/crouton/Manager;->setActionBarMargin(Landroid/view/ViewGroup$MarginLayoutParams;Landroid/app/Activity;)V │ + │ + .line 265 │ + .end local v0 # "flags":I │ + .end local v1 # "translucentStatusFlag":I │ + :cond_0 │ + return-void │ +.end method │ + │ .method private removeAllMessages()V │ .locals 1 │ │ .prologue │ - .line 347 │ + .line 405 │ const v0, -0x3dff8b23 │ │ invoke-virtual {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeMessages(I)V │ │ - .line 348 │ + .line 406 │ const v0, 0xc2007 │ │ invoke-virtual {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeMessages(I)V │ │ - .line 349 │ + .line 407 │ const v0, -0x3dff821f │ │ invoke-virtual {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeMessages(I)V │ │ - .line 350 │ + .line 408 │ return-void │ .end method │ │ .method private removeAllMessagesForCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ .locals 1 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ .prologue │ - .line 353 │ + .line 411 │ const v0, -0x3dff8b23 │ │ invoke-virtual {p0, v0, p1}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeMessages(ILjava/lang/Object;)V │ │ - .line 354 │ + .line 412 │ const v0, 0xc2007 │ │ invoke-virtual {p0, v0, p1}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeMessages(ILjava/lang/Object;)V │ │ - .line 355 │ + .line 413 │ const v0, -0x3dff821f │ │ invoke-virtual {p0, v0, p1}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeMessages(ILjava/lang/Object;)V │ │ - .line 357 │ + .line 415 │ + return-void │ +.end method │ + │ +.method private removeCroutonFromViewParent(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ + .locals 2 │ + .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ + │ + .prologue │ + .line 396 │ + invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->isShowing()Z │ + │ + move-result v1 │ + │ + if-eqz v1, :cond_0 │ + │ + .line 397 │ + invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ + │ + move-result-object v0 │ + │ + check-cast v0, Landroid/view/ViewGroup; │ + │ + .line 398 │ + .local v0, "parent":Landroid/view/ViewGroup; │ + if-eqz v0, :cond_0 │ + │ + .line 399 │ + invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v0, v1}, Landroid/view/ViewGroup;->removeView(Landroid/view/View;)V │ + │ + .line 402 │ + .end local v0 # "parent":Landroid/view/ViewGroup; │ + :cond_0 │ return-void │ .end method │ │ .method private sendMessage(Lde/keyboardsurfer/android/widget/crouton/Crouton;I)V │ .locals 1 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .param p2, "messageId" # I │ │ .prologue │ - .line 117 │ + .line 127 │ invoke-virtual {p0, p2}, Lde/keyboardsurfer/android/widget/crouton/Manager;->obtainMessage(I)Landroid/os/Message; │ │ move-result-object v0 │ │ - .line 118 │ + .line 128 │ .local v0, "message":Landroid/os/Message; │ iput-object p1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; │ │ - .line 119 │ + .line 129 │ invoke-virtual {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->sendMessage(Landroid/os/Message;)Z │ │ - .line 120 │ + .line 130 │ return-void │ .end method │ │ .method private sendMessageDelayed(Lde/keyboardsurfer/android/widget/crouton/Crouton;IJ)V │ .locals 1 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ .param p2, "messageId" # I │ .param p3, "delay" # J │ │ .prologue │ - .line 133 │ + .line 143 │ invoke-virtual {p0, p2}, Lde/keyboardsurfer/android/widget/crouton/Manager;->obtainMessage(I)Landroid/os/Message; │ │ move-result-object v0 │ │ - .line 134 │ + .line 144 │ .local v0, "message":Landroid/os/Message; │ iput-object p1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; │ │ - .line 135 │ + .line 145 │ invoke-virtual {p0, v0, p3, p4}, Lde/keyboardsurfer/android/widget/crouton/Manager;->sendMessageDelayed(Landroid/os/Message;J)Z │ │ - .line 136 │ + .line 146 │ return-void │ .end method │ │ +.method private setActionBarMargin(Landroid/view/ViewGroup$MarginLayoutParams;Landroid/app/Activity;)V │ + .locals 6 │ + .param p1, "params" # Landroid/view/ViewGroup$MarginLayoutParams; │ + .param p2, "activity" # Landroid/app/Activity; │ + │ + .prologue │ + .line 279 │ + invoke-static {}, Landroid/content/res/Resources;->getSystem()Landroid/content/res/Resources; │ + │ + move-result-object v2 │ + │ + const-string v3, "action_bar_container" │ + │ + const-string v4, "id" │ + │ + const-string v5, "android" │ + │ + invoke-virtual {v2, v3, v4, v5}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I │ + │ + move-result v1 │ + │ + .line 280 │ + .local v1, "actionBarContainerId":I │ + invoke-virtual {p2, v1}, Landroid/app/Activity;->findViewById(I)Landroid/view/View; │ + │ + move-result-object v0 │ + │ + .line 282 │ + .local v0, "actionBarContainer":Landroid/view/View; │ + if-eqz v0, :cond_0 │ + │ + .line 283 │ + invoke-virtual {v0}, Landroid/view/View;->getBottom()I │ + │ + move-result v2 │ + │ + iput v2, p1, Landroid/view/ViewGroup$MarginLayoutParams;->topMargin:I │ + │ + .line 285 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method private shouldAddViewWithoutPosition(Landroid/view/ViewGroup;)Z │ + .locals 1 │ + .param p1, "croutonViewGroup" # Landroid/view/ViewGroup; │ + │ + .prologue │ + .line 251 │ + instance-of v0, p1, Landroid/widget/FrameLayout; │ + │ + if-nez v0, :cond_0 │ + │ + instance-of v0, p1, Landroid/widget/AdapterView; │ + │ + if-nez v0, :cond_0 │ + │ + instance-of v0, p1, Landroid/widget/RelativeLayout; │ + │ + if-eqz v0, :cond_1 │ + │ + :cond_0 │ + const/4 v0, 0x1 │ + │ + :goto_0 │ + return v0 │ + │ + :cond_1 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ +.end method │ + │ │ # virtual methods │ .method add(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ .locals 1 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ .prologue │ - .line 72 │ + .line 80 │ iget-object v0, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v0, p1}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z │ │ - .line 73 │ + .line 81 │ invoke-direct {p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->displayCrouton()V │ │ - .line 74 │ + .line 82 │ return-void │ .end method │ │ .method clearCroutonQueue()V │ - .locals 4 │ + .locals 3 │ │ .prologue │ - .line 308 │ + .line 365 │ invoke-direct {p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeAllMessages()V │ │ - .line 310 │ - iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ - │ - if-eqz v2, :cond_2 │ - │ - .line 313 │ + .line 369 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v2}, Ljava/util/Queue;->iterator()Ljava/util/Iterator; │ │ move-result-object v1 │ │ .local v1, "i$":Ljava/util/Iterator; │ - :cond_0 │ :goto_0 │ invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v2 │ │ - if-eqz v2, :cond_1 │ + if-eqz v2, :cond_0 │ │ invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ - .line 314 │ + .line 370 │ .local v0, "crouton":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->isShowing()Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_0 │ - │ - .line 315 │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ - │ - move-result-object v2 │ - │ - check-cast v2, Landroid/view/ViewGroup; │ - │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v2, v3}, Landroid/view/ViewGroup;->removeView(Landroid/view/View;)V │ + invoke-direct {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeCroutonFromViewParent(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ goto :goto_0 │ │ - .line 318 │ + .line 372 │ .end local v0 # "crouton":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ - :cond_1 │ + :cond_0 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v2}, Ljava/util/Queue;->clear()V │ │ - .line 320 │ - .end local v1 # "i$":Ljava/util/Iterator; │ - :cond_2 │ + .line 373 │ return-void │ .end method │ │ .method clearCroutonsForActivity(Landroid/app/Activity;)V │ - .locals 4 │ + .locals 3 │ .param p1, "activity" # Landroid/app/Activity; │ │ .prologue │ - .line 327 │ - iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ - │ - if-eqz v2, :cond_2 │ - │ - .line 328 │ + .line 380 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v2}, Ljava/util/Queue;->iterator()Ljava/util/Iterator; │ │ move-result-object v1 │ │ - .line 329 │ + .line 381 │ .local v1, "croutonIterator":Ljava/util/Iterator;, "Ljava/util/Iterator;" │ :cond_0 │ :goto_0 │ invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v2 │ │ - if-eqz v2, :cond_2 │ + if-eqz v2, :cond_1 │ │ - .line 330 │ + .line 382 │ invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ - .line 331 │ + .line 383 │ .local v0, "crouton":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v2 │ │ if-eqz v2, :cond_0 │ │ @@ -681,214 +879,199 @@ │ │ invoke-virtual {v2, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z │ │ move-result v2 │ │ if-eqz v2, :cond_0 │ │ - .line 333 │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->isShowing()Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_1 │ + .line 385 │ + invoke-direct {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeCroutonFromViewParent(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 334 │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ - │ - move-result-object v2 │ - │ - check-cast v2, Landroid/view/ViewGroup; │ - │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v2, v3}, Landroid/view/ViewGroup;->removeView(Landroid/view/View;)V │ - │ - .line 337 │ - :cond_1 │ + .line 387 │ invoke-direct {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeAllMessagesForCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 340 │ + .line 390 │ invoke-interface {v1}, Ljava/util/Iterator;->remove()V │ │ goto :goto_0 │ │ - .line 344 │ + .line 393 │ .end local v0 # "crouton":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ - .end local v1 # "croutonIterator":Ljava/util/Iterator;, "Ljava/util/Iterator;" │ - :cond_2 │ + :cond_1 │ return-void │ .end method │ │ .method public handleMessage(Landroid/os/Message;)V │ .locals 2 │ .param p1, "message" # Landroid/os/Message; │ │ .prologue │ - .line 145 │ + .line 155 │ iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object; │ │ check-cast v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ - .line 147 │ + .line 156 │ .local v0, "crouton":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ + if-nez v0, :cond_1 │ + │ + .line 183 │ + :cond_0 │ + :goto_0 │ + return-void │ + │ + .line 159 │ + :cond_1 │ iget v1, p1, Landroid/os/Message;->what:I │ │ sparse-switch v1, :sswitch_data_0 │ │ - .line 167 │ + .line 179 │ invoke-super {p0, p1}, Landroid/os/Handler;->handleMessage(Landroid/os/Message;)V │ │ - .line 171 │ - :cond_0 │ - :goto_0 │ - return-void │ + goto :goto_0 │ │ - .line 149 │ + .line 161 │ :sswitch_0 │ invoke-direct {p0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->displayCrouton()V │ │ goto :goto_0 │ │ - .line 154 │ + .line 166 │ :sswitch_1 │ invoke-direct {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->addCroutonToView(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ goto :goto_0 │ │ - .line 159 │ + .line 171 │ :sswitch_2 │ invoke-virtual {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 160 │ + .line 172 │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getLifecycleCallback()Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ move-result-object v1 │ │ if-eqz v1, :cond_0 │ │ - .line 161 │ + .line 173 │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getLifecycleCallback()Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ move-result-object v1 │ │ invoke-interface {v1}, Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback;->onRemoved()V │ │ goto :goto_0 │ │ - .line 147 │ + .line 159 │ + nop │ + │ :sswitch_data_0 │ .sparse-switch │ -0x3dff8b23 -> :sswitch_1 │ -0x3dff821f -> :sswitch_2 │ 0xc2007 -> :sswitch_0 │ .end sparse-switch │ .end method │ │ .method protected removeCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ .locals 6 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ .prologue │ - .line 237 │ + .line 296 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ │ move-result-object v1 │ │ - .line 238 │ + .line 297 │ .local v1, "croutonView":Landroid/view/View; │ invoke-virtual {v1}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ │ move-result-object v0 │ │ check-cast v0, Landroid/view/ViewGroup; │ │ - .line 240 │ + .line 299 │ .local v0, "croutonParentView":Landroid/view/ViewGroup; │ if-eqz v0, :cond_2 │ │ - .line 241 │ + .line 300 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getOutAnimation()Landroid/view/animation/Animation; │ │ move-result-object v3 │ │ invoke-virtual {v1, v3}, Landroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V │ │ - .line 244 │ + .line 303 │ iget-object v3, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ invoke-interface {v3}, Ljava/util/Queue;->poll()Ljava/lang/Object; │ │ move-result-object v2 │ │ check-cast v2, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ - .line 247 │ + .line 306 │ .local v2, "removed":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ invoke-virtual {v0, v1}, Landroid/view/ViewGroup;->removeView(Landroid/view/View;)V │ │ - .line 248 │ + .line 307 │ if-eqz v2, :cond_1 │ │ - .line 249 │ + .line 308 │ invoke-virtual {v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->detachActivity()V │ │ - .line 250 │ + .line 309 │ invoke-virtual {v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->detachViewGroup()V │ │ - .line 251 │ + .line 310 │ invoke-virtual {v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getLifecycleCallback()Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ move-result-object v3 │ │ if-eqz v3, :cond_0 │ │ - .line 252 │ + .line 311 │ invoke-virtual {v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getLifecycleCallback()Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback; │ │ move-result-object v3 │ │ invoke-interface {v3}, Lde/keyboardsurfer/android/widget/crouton/LifecycleCallback;->onRemoved()V │ │ - .line 254 │ + .line 313 │ :cond_0 │ invoke-virtual {v2}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->detachLifecycleCallback()V │ │ - .line 259 │ + .line 318 │ :cond_1 │ const v3, 0xc2007 │ │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getOutAnimation()Landroid/view/animation/Animation; │ │ move-result-object v4 │ │ invoke-virtual {v4}, Landroid/view/animation/Animation;->getDuration()J │ │ move-result-wide v4 │ │ invoke-direct {p0, p1, v3, v4, v5}, Lde/keyboardsurfer/android/widget/crouton/Manager;->sendMessageDelayed(Lde/keyboardsurfer/android/widget/crouton/Crouton;IJ)V │ │ - .line 261 │ + .line 320 │ .end local v2 # "removed":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ :cond_2 │ return-void │ .end method │ │ .method removeCroutonImmediately(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ .locals 4 │ .param p1, "crouton" # Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ .prologue │ - .line 276 │ + .line 335 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v2 │ │ if-eqz v2, :cond_0 │ │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ @@ -903,15 +1086,15 @@ │ │ invoke-virtual {v2}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ │ move-result-object v2 │ │ if-eqz v2, :cond_0 │ │ - .line 277 │ + .line 336 │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ │ move-result-object v2 │ @@ -920,103 +1103,75 @@ │ │ invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ │ move-result-object v3 │ │ invoke-virtual {v2, v3}, Landroid/view/ViewGroup;->removeView(Landroid/view/View;)V │ │ - .line 280 │ + .line 339 │ invoke-direct {p0, p1}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeAllMessagesForCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 283 │ + .line 342 │ :cond_0 │ iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ │ - if-eqz v2, :cond_3 │ - │ - .line 284 │ - iget-object v2, p0, Lde/keyboardsurfer/android/widget/crouton/Manager;->croutonQueue:Ljava/util/Queue; │ - │ invoke-interface {v2}, Ljava/util/Queue;->iterator()Ljava/util/Iterator; │ │ move-result-object v1 │ │ - .line 285 │ + .line 343 │ .local v1, "croutonIterator":Ljava/util/Iterator;, "Ljava/util/Iterator;" │ :cond_1 │ invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v2 │ │ - if-eqz v2, :cond_3 │ + if-eqz v2, :cond_2 │ │ - .line 286 │ + .line 344 │ invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lde/keyboardsurfer/android/widget/crouton/Crouton; │ │ - .line 287 │ + .line 345 │ .local v0, "c":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ invoke-virtual {v0, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z │ │ move-result v2 │ │ if-eqz v2, :cond_1 │ │ invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getActivity()Landroid/app/Activity; │ │ move-result-object v2 │ │ if-eqz v2, :cond_1 │ │ - .line 289 │ - invoke-virtual {p1}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->isShowing()Z │ - │ - move-result v2 │ - │ - if-eqz v2, :cond_2 │ - │ - .line 290 │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2}, Landroid/view/View;->getParent()Landroid/view/ViewParent; │ - │ - move-result-object v2 │ - │ - check-cast v2, Landroid/view/ViewGroup; │ - │ - invoke-virtual {v0}, Lde/keyboardsurfer/android/widget/crouton/Crouton;->getView()Landroid/view/View; │ - │ - move-result-object v3 │ - │ - invoke-virtual {v2, v3}, Landroid/view/ViewGroup;->removeView(Landroid/view/View;)V │ + .line 347 │ + invoke-direct {p0, p1}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeCroutonFromViewParent(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 294 │ - :cond_2 │ + .line 350 │ invoke-direct {p0, v0}, Lde/keyboardsurfer/android/widget/crouton/Manager;->removeAllMessagesForCrouton(Lde/keyboardsurfer/android/widget/crouton/Crouton;)V │ │ - .line 297 │ + .line 353 │ invoke-interface {v1}, Ljava/util/Iterator;->remove()V │ │ - .line 304 │ + .line 359 │ .end local v0 # "c":Lde/keyboardsurfer/android/widget/crouton/Crouton; │ - .end local v1 # "croutonIterator":Ljava/util/Iterator;, "Ljava/util/Iterator;" │ - :cond_3 │ + :cond_2 │ return-void │ .end method │ │ .method public toString()Ljava/lang/String; │ .locals 2 │ │ .prologue │ - .line 411 │ + .line 471 │ new-instance v0, Ljava/lang/StringBuilder; │ │ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ │ const-string v1, "Manager{croutonQueue=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ├── smali/butterknife/internal/TargetClass$ViewId.smali │ @@ -33,23 +33,23 @@ │ │ # direct methods │ .method constructor (I)V │ .locals 1 │ .param p1, "id" # I │ │ .prologue │ - .line 136 │ + .line 145 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 133 │ + .line 142 │ new-instance v0, Ljava/util/LinkedHashSet; │ │ invoke-direct {v0}, Ljava/util/LinkedHashSet;->()V │ │ iput-object v0, p0, Lbutterknife/internal/TargetClass$ViewId;->fields:Ljava/util/Set; │ │ - .line 137 │ + .line 146 │ iput p1, p0, Lbutterknife/internal/TargetClass$ViewId;->id:I │ │ - .line 138 │ + .line 147 │ return-void │ .end method ├── smali/butterknife/internal/TargetClass$MethodInjection.smali │ @@ -26,22 +26,22 @@ │ .method constructor (Ljava/lang/String;Ljava/lang/String;Z)V │ .locals 0 │ .param p1, "name" # Ljava/lang/String; │ .param p2, "type" # Ljava/lang/String; │ .param p3, "required" # Z │ │ .prologue │ - .line 158 │ + .line 167 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 159 │ + .line 168 │ iput-object p1, p0, Lbutterknife/internal/TargetClass$MethodInjection;->name:Ljava/lang/String; │ │ - .line 160 │ + .line 169 │ iput-object p2, p0, Lbutterknife/internal/TargetClass$MethodInjection;->type:Ljava/lang/String; │ │ - .line 161 │ + .line 170 │ iput-boolean p3, p0, Lbutterknife/internal/TargetClass$MethodInjection;->required:Z │ │ - .line 162 │ + .line 171 │ return-void │ .end method ├── smali/butterknife/internal/TargetClass.smali │ @@ -39,677 +39,696 @@ │ .method constructor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V │ .locals 1 │ .param p1, "classPackage" # Ljava/lang/String; │ .param p2, "className" # Ljava/lang/String; │ .param p3, "targetClass" # Ljava/lang/String; │ │ .prologue │ - .line 15 │ + .line 17 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 9 │ + .line 11 │ new-instance v0, Ljava/util/LinkedHashMap; │ │ invoke-direct {v0}, Ljava/util/LinkedHashMap;->()V │ │ iput-object v0, p0, Lbutterknife/internal/TargetClass;->viewIdMap:Ljava/util/Map; │ │ - .line 16 │ + .line 18 │ iput-object p1, p0, Lbutterknife/internal/TargetClass;->classPackage:Ljava/lang/String; │ │ - .line 17 │ + .line 19 │ iput-object p2, p0, Lbutterknife/internal/TargetClass;->className:Ljava/lang/String; │ │ - .line 18 │ + .line 20 │ iput-object p3, p0, Lbutterknife/internal/TargetClass;->targetClass:Ljava/lang/String; │ │ - .line 19 │ + .line 21 │ return-void │ .end method │ │ .method private getTargetView(I)Lbutterknife/internal/TargetClass$ViewId; │ .locals 3 │ .param p1, "id" # I │ │ .prologue │ - .line 39 │ + .line 41 │ iget-object v1, p0, Lbutterknife/internal/TargetClass;->viewIdMap:Ljava/util/Map; │ │ invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v2 │ │ invoke-interface {v1, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lbutterknife/internal/TargetClass$ViewId; │ │ - .line 40 │ + .line 42 │ .local v0, "viewId":Lbutterknife/internal/TargetClass$ViewId; │ if-nez v0, :cond_0 │ │ - .line 41 │ + .line 43 │ new-instance v0, Lbutterknife/internal/TargetClass$ViewId; │ │ .end local v0 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ invoke-direct {v0, p1}, Lbutterknife/internal/TargetClass$ViewId;->(I)V │ │ - .line 42 │ + .line 44 │ .restart local v0 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ iget-object v1, p0, Lbutterknife/internal/TargetClass;->viewIdMap:Ljava/util/Map; │ │ invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v2 │ │ invoke-interface {v1, v2, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ - .line 44 │ + .line 46 │ :cond_0 │ return-object v0 │ .end method │ │ │ # virtual methods │ .method addField(ILjava/lang/String;Ljava/lang/String;Z)V │ .locals 2 │ .param p1, "id" # I │ .param p2, "name" # Ljava/lang/String; │ .param p3, "type" # Ljava/lang/String; │ .param p4, "required" # Z │ │ .prologue │ - .line 22 │ + .line 24 │ invoke-direct {p0, p1}, Lbutterknife/internal/TargetClass;->getTargetView(I)Lbutterknife/internal/TargetClass$ViewId; │ │ move-result-object v0 │ │ iget-object v0, v0, Lbutterknife/internal/TargetClass$ViewId;->fields:Ljava/util/Set; │ │ new-instance v1, Lbutterknife/internal/TargetClass$FieldInjection; │ │ invoke-direct {v1, p2, p3, p4}, Lbutterknife/internal/TargetClass$FieldInjection;->(Ljava/lang/String;Ljava/lang/String;Z)V │ │ invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ │ - .line 23 │ + .line 25 │ return-void │ .end method │ │ .method addMethod(ILjava/lang/String;Ljava/lang/String;Z)Z │ .locals 2 │ .param p1, "id" # I │ .param p2, "name" # Ljava/lang/String; │ .param p3, "parameterType" # Ljava/lang/String; │ .param p4, "required" # Z │ │ .prologue │ - .line 26 │ + .line 28 │ invoke-direct {p0, p1}, Lbutterknife/internal/TargetClass;->getTargetView(I)Lbutterknife/internal/TargetClass$ViewId; │ │ move-result-object v0 │ │ - .line 27 │ + .line 29 │ .local v0, "targetView":Lbutterknife/internal/TargetClass$ViewId; │ iget-object v1, v0, Lbutterknife/internal/TargetClass$ViewId;->method:Lbutterknife/internal/TargetClass$MethodInjection; │ │ if-eqz v1, :cond_0 │ │ - .line 28 │ + .line 30 │ const/4 v1, 0x0 │ │ - .line 31 │ + .line 33 │ :goto_0 │ return v1 │ │ - .line 30 │ + .line 32 │ :cond_0 │ new-instance v1, Lbutterknife/internal/TargetClass$MethodInjection; │ │ invoke-direct {v1, p2, p3, p4}, Lbutterknife/internal/TargetClass$MethodInjection;->(Ljava/lang/String;Ljava/lang/String;Z)V │ │ iput-object v1, v0, Lbutterknife/internal/TargetClass$ViewId;->method:Lbutterknife/internal/TargetClass$MethodInjection; │ │ - .line 31 │ + .line 33 │ const/4 v1, 0x1 │ │ goto :goto_0 │ .end method │ │ .method brewJava()Ljava/lang/String; │ .locals 10 │ │ .prologue │ - .line 52 │ + .line 54 │ new-instance v0, Ljava/lang/StringBuilder; │ │ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ │ - .line 53 │ + .line 55 │ .local v0, "builder":Ljava/lang/StringBuilder; │ - const-string v8, "// Generated code from Butter Knife. Do not modify!\n" │ - │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + const-string v6, "// Generated code from Butter Knife. Do not modify!\n" │ │ - .line 54 │ - const-string v8, "package " │ - │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ - │ - iget-object v9, p0, Lbutterknife/internal/TargetClass;->classPackage:Ljava/lang/String; │ + .line 56 │ + const-string v6, "package " │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, ";\n\n" │ + iget-object v7, p0, Lbutterknife/internal/TargetClass;->classPackage:Ljava/lang/String; │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - .line 55 │ - const-string v8, "import android.view.View;\n" │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v6 │ │ - .line 56 │ - const-string v8, "import butterknife.Views.Finder;\n\n" │ + const-string v7, ";\n\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ .line 57 │ - const-string v8, "public class " │ + const-string v6, "import android.view.View;\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + .line 58 │ + const-string v6, "import butterknife.Views.Finder;\n\n" │ │ - iget-object v9, p0, Lbutterknife/internal/TargetClass;->className:Ljava/lang/String; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 59 │ + const-string v6, "public class " │ │ - move-result-object v8 │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - const-string v9, " {\n" │ + move-result-object v6 │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + iget-object v7, p0, Lbutterknife/internal/TargetClass;->className:Ljava/lang/String; │ │ - .line 58 │ - const-string v8, " public static void inject(Finder finder, final " │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v6 │ │ - move-result-object v8 │ + const-string v7, " {\n" │ │ - iget-object v9, p0, Lbutterknife/internal/TargetClass;->targetClass:Ljava/lang/String; │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 59 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 60 │ + const-string v6, " public static void inject(Finder finder, final " │ │ - move-result-object v8 │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - const-string v9, " target, Object source) {\n" │ + move-result-object v6 │ │ - .line 60 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + iget-object v7, p0, Lbutterknife/internal/TargetClass;->targetClass:Ljava/lang/String; │ │ .line 61 │ - iget-object v8, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ │ - if-eqz v8, :cond_0 │ + const-string v7, " target, Object source) {\n" │ │ .line 62 │ - const-string v8, " " │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 63 │ + iget-object v6, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ │ - move-result-object v8 │ + if-eqz v6, :cond_0 │ │ - iget-object v9, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ + .line 64 │ + const-string v6, " " │ │ - .line 63 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, ".inject(finder, target, source);\n\n" │ + iget-object v7, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ │ - .line 64 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 65 │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v6 │ + │ + const-string v7, ".inject(finder, target, source);\n\n" │ │ .line 66 │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + .line 68 │ :cond_0 │ - const-string v8, " View view;\n" │ + const-string v6, " View view;\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 67 │ - iget-object v8, p0, Lbutterknife/internal/TargetClass;->viewIdMap:Ljava/util/Map; │ + .line 69 │ + iget-object v6, p0, Lbutterknife/internal/TargetClass;->viewIdMap:Ljava/util/Map; │ │ - invoke-interface {v8}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + invoke-interface {v6}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v3 │ + move-result-object v7 │ │ :cond_1 │ :goto_0 │ - invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v8 │ + move-result v6 │ │ - if-eqz v8, :cond_6 │ + if-eqz v6, :cond_7 │ │ - invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljava/util/Map$Entry; │ │ - .line 68 │ + .line 70 │ .local v1, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;" │ invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - check-cast v8, Ljava/lang/Integer; │ + check-cast v6, Ljava/lang/Integer; │ │ - invoke-virtual {v8}, Ljava/lang/Integer;->intValue()I │ + invoke-virtual {v6}, Ljava/lang/Integer;->intValue()I │ │ - move-result v5 │ + move-result v3 │ │ - .line 69 │ - .local v5, "id":I │ - const-string v8, " view = finder.findById(source, " │ + .line 71 │ + .local v3, "id":I │ + const-string v6, " view = finder.findById(source, " │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - invoke-virtual {v8, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, ");\n" │ + const-string v8, ");\n" │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 70 │ + .line 72 │ invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - move-result-object v7 │ + move-result-object v5 │ │ - check-cast v7, Lbutterknife/internal/TargetClass$ViewId; │ + check-cast v5, Lbutterknife/internal/TargetClass$ViewId; │ │ - .line 71 │ - .local v7, "viewId":Lbutterknife/internal/TargetClass$ViewId; │ - iget-object v8, v7, Lbutterknife/internal/TargetClass$ViewId;->fields:Ljava/util/Set; │ + .line 73 │ + .local v5, "viewId":Lbutterknife/internal/TargetClass$ViewId; │ + iget-object v6, v5, Lbutterknife/internal/TargetClass$ViewId;->fields:Ljava/util/Set; │ │ - invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v4 │ + move-result-object v6 │ │ - .local v4, "i$":Ljava/util/Iterator; │ :goto_1 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v8 │ │ - if-eqz v8, :cond_3 │ + if-eqz v8, :cond_4 │ │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v2 │ │ check-cast v2, Lbutterknife/internal/TargetClass$FieldInjection; │ │ - .line 72 │ + .line 74 │ .local v2, "fieldInjection":Lbutterknife/internal/TargetClass$FieldInjection; │ iget-boolean v8, v2, Lbutterknife/internal/TargetClass$FieldInjection;->required:Z │ │ if-eqz v8, :cond_2 │ │ - .line 73 │ + .line 75 │ const-string v8, " if (view == null) {\n" │ │ invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ const-string v9, " throw new IllegalStateException(\"Required view with id \'" │ │ - .line 74 │ + .line 76 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ - .line 75 │ - invoke-virtual {v8, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + .line 77 │ + invoke-virtual {v8, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ const-string v9, "\' for field \'" │ │ - .line 76 │ + .line 78 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ iget-object v9, v2, Lbutterknife/internal/TargetClass$FieldInjection;->name:Ljava/lang/String; │ │ - .line 77 │ + .line 79 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ const-string v9, "\' was not found. If this field binding is optional add \'@Optional\'.\");\n" │ │ - .line 78 │ + .line 80 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ const-string v9, " }\n" │ │ - .line 79 │ + .line 81 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 81 │ + .line 83 │ :cond_2 │ const-string v8, " target." │ │ invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ iget-object v9, v2, Lbutterknife/internal/TargetClass$FieldInjection;->name:Ljava/lang/String; │ │ - .line 82 │ + .line 84 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ - const-string v9, " = (" │ + const-string v9, " = " │ │ - .line 83 │ + .line 85 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ + .line 88 │ + const-string v8, "android.view.View" │ + │ + iget-object v9, v2, Lbutterknife/internal/TargetClass$FieldInjection;->type:Ljava/lang/String; │ + │ + invoke-virtual {v8, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ + │ + move-result v8 │ + │ + if-nez v8, :cond_3 │ + │ + .line 89 │ + const-string v8, "(" │ + │ + invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ move-result-object v8 │ │ iget-object v9, v2, Lbutterknife/internal/TargetClass$FieldInjection;->type:Ljava/lang/String; │ │ - .line 84 │ + .line 90 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ - const-string v9, ") view;\n" │ + const-string v9, ") " │ │ - .line 85 │ + .line 91 │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ + .line 94 │ + :cond_3 │ + const-string v8, "view;\n" │ + │ + invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ goto :goto_1 │ │ - .line 87 │ + .line 96 │ .end local v2 # "fieldInjection":Lbutterknife/internal/TargetClass$FieldInjection; │ - :cond_3 │ - iget-object v6, v7, Lbutterknife/internal/TargetClass$ViewId;->method:Lbutterknife/internal/TargetClass$MethodInjection; │ + :cond_4 │ + iget-object v4, v5, Lbutterknife/internal/TargetClass$ViewId;->method:Lbutterknife/internal/TargetClass$MethodInjection; │ │ - .line 88 │ - .local v6, "method":Lbutterknife/internal/TargetClass$MethodInjection; │ - if-eqz v6, :cond_1 │ + .line 97 │ + .local v4, "method":Lbutterknife/internal/TargetClass$MethodInjection; │ + if-eqz v4, :cond_1 │ │ - .line 89 │ - iget-boolean v8, v6, Lbutterknife/internal/TargetClass$MethodInjection;->required:Z │ + .line 98 │ + iget-boolean v6, v4, Lbutterknife/internal/TargetClass$MethodInjection;->required:Z │ │ - if-eqz v8, :cond_5 │ + if-eqz v6, :cond_6 │ │ - .line 90 │ - const-string v8, " if (view == null) {\n" │ + .line 99 │ + const-string v6, " if (view == null) {\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, " throw new IllegalStateException(\"Required view with id \'" │ + const-string v8, " throw new IllegalStateException(\"Required view with id \'" │ │ - .line 91 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 100 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - .line 92 │ - invoke-virtual {v8, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + .line 101 │ + invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, "\' for method \'" │ + const-string v8, "\' for method \'" │ │ - .line 93 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 102 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - iget-object v9, v6, Lbutterknife/internal/TargetClass$MethodInjection;->name:Ljava/lang/String; │ + iget-object v8, v4, Lbutterknife/internal/TargetClass$MethodInjection;->name:Ljava/lang/String; │ │ - .line 94 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 103 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, "\' was not found. If this method binding is optional add \'@Optional\'.\");\n" │ + const-string v8, "\' was not found. If this method binding is optional add \'@Optional\'.\");\n" │ │ - .line 95 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 104 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, " }\n" │ + const-string v8, " }\n" │ │ - .line 96 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 105 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 100 │ + .line 109 │ :goto_2 │ - const-string v8, " view.setOnClickListener(new View.OnClickListener() {\n" │ + const-string v6, " view.setOnClickListener(new View.OnClickListener() {\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, " @Override public void onClick(View view) {\n" │ + const-string v8, " @Override public void onClick(View view) {\n" │ │ - .line 101 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 110 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, " target." │ + const-string v8, " target." │ │ - .line 102 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 111 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - iget-object v9, v6, Lbutterknife/internal/TargetClass$MethodInjection;->name:Ljava/lang/String; │ + iget-object v8, v4, Lbutterknife/internal/TargetClass$MethodInjection;->name:Ljava/lang/String; │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, "(" │ + const-string v8, "(" │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 103 │ - iget-object v8, v6, Lbutterknife/internal/TargetClass$MethodInjection;->type:Ljava/lang/String; │ + .line 112 │ + iget-object v6, v4, Lbutterknife/internal/TargetClass$MethodInjection;->type:Ljava/lang/String; │ │ - if-eqz v8, :cond_4 │ + if-eqz v6, :cond_5 │ │ - .line 104 │ - const-string v8, "(" │ + .line 113 │ + const-string v6, "(" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - iget-object v9, v6, Lbutterknife/internal/TargetClass$MethodInjection;->type:Ljava/lang/String; │ + iget-object v8, v4, Lbutterknife/internal/TargetClass$MethodInjection;->type:Ljava/lang/String; │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, ") view" │ + const-string v8, ") view" │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 106 │ - :cond_4 │ - const-string v8, ");\n" │ + .line 115 │ + :cond_5 │ + const-string v6, ");\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, " }\n" │ + const-string v8, " }\n" │ │ - .line 107 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 116 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, " });\n" │ + const-string v8, " });\n" │ │ - .line 108 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 117 │ + invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 109 │ - iget-boolean v8, v6, Lbutterknife/internal/TargetClass$MethodInjection;->required:Z │ + .line 118 │ + iget-boolean v6, v4, Lbutterknife/internal/TargetClass$MethodInjection;->required:Z │ │ - if-nez v8, :cond_1 │ + if-nez v6, :cond_1 │ │ - .line 110 │ - const-string v8, " }\n" │ + .line 119 │ + const-string v6, " }\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ goto/16 :goto_0 │ │ - .line 98 │ - :cond_5 │ - const-string v8, " if (view != null) {\n " │ + .line 107 │ + :cond_6 │ + const-string v6, " if (view != null) {\n " │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ goto :goto_2 │ │ - .line 114 │ + .line 123 │ .end local v1 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;" │ - .end local v4 # "i$":Ljava/util/Iterator; │ - .end local v5 # "id":I │ - .end local v6 # "method":Lbutterknife/internal/TargetClass$MethodInjection; │ - .end local v7 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ - :cond_6 │ - const-string v8, " }\n\n" │ + .end local v3 # "id":I │ + .end local v4 # "method":Lbutterknife/internal/TargetClass$MethodInjection; │ + .end local v5 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ + :cond_7 │ + const-string v6, " }\n\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 115 │ - const-string v8, " public static void reset(" │ + .line 124 │ + const-string v6, " public static void reset(" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - iget-object v9, p0, Lbutterknife/internal/TargetClass;->targetClass:Ljava/lang/String; │ + iget-object v7, p0, Lbutterknife/internal/TargetClass;->targetClass:Ljava/lang/String; │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, " target) {\n" │ + const-string v7, " target) {\n" │ │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 116 │ - iget-object v8, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ + .line 125 │ + iget-object v6, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ │ - if-eqz v8, :cond_7 │ + if-eqz v6, :cond_8 │ │ - .line 117 │ - const-string v8, " " │ + .line 126 │ + const-string v6, " " │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - iget-object v9, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ + iget-object v7, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ │ - .line 118 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 127 │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - const-string v9, ".reset(target);\n\n" │ + const-string v7, ".reset(target);\n\n" │ │ - .line 119 │ - invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 128 │ + invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 121 │ - :cond_7 │ - iget-object v8, p0, Lbutterknife/internal/TargetClass;->viewIdMap:Ljava/util/Map; │ + .line 130 │ + :cond_8 │ + iget-object v6, p0, Lbutterknife/internal/TargetClass;->viewIdMap:Ljava/util/Map; │ │ - invoke-interface {v8}, Ljava/util/Map;->values()Ljava/util/Collection; │ + invoke-interface {v6}, Ljava/util/Map;->values()Ljava/util/Collection; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - invoke-interface {v8}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; │ │ - move-result-object v3 │ + move-result-object v6 │ │ - :cond_8 │ - invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z │ + :cond_9 │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v8 │ + move-result v7 │ │ - if-eqz v8, :cond_9 │ + if-eqz v7, :cond_a │ │ - invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v7 │ + move-result-object v5 │ │ - check-cast v7, Lbutterknife/internal/TargetClass$ViewId; │ + check-cast v5, Lbutterknife/internal/TargetClass$ViewId; │ │ - .line 122 │ - .restart local v7 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ - iget-object v8, v7, Lbutterknife/internal/TargetClass$ViewId;->fields:Ljava/util/Set; │ + .line 131 │ + .restart local v5 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ + iget-object v7, v5, Lbutterknife/internal/TargetClass$ViewId;->fields:Ljava/util/Set; │ │ - invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v4 │ + move-result-object v7 │ │ - .restart local v4 # "i$":Ljava/util/Iterator; │ :goto_3 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v8 │ │ - if-eqz v8, :cond_8 │ + if-eqz v8, :cond_9 │ │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v2 │ │ check-cast v2, Lbutterknife/internal/TargetClass$FieldInjection; │ │ - .line 123 │ + .line 132 │ .restart local v2 # "fieldInjection":Lbutterknife/internal/TargetClass$FieldInjection; │ const-string v8, " target." │ │ invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ @@ -721,41 +740,40 @@ │ │ const-string v9, " = null;\n" │ │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ goto :goto_3 │ │ - .line 126 │ + .line 135 │ .end local v2 # "fieldInjection":Lbutterknife/internal/TargetClass$FieldInjection; │ - .end local v4 # "i$":Ljava/util/Iterator; │ - .end local v7 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ - :cond_9 │ - const-string v8, " }\n" │ + .end local v5 # "viewId":Lbutterknife/internal/TargetClass$ViewId; │ + :cond_a │ + const-string v6, " }\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 127 │ - const-string v8, "}\n" │ + .line 136 │ + const-string v6, "}\n" │ │ - invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - .line 128 │ + .line 137 │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - return-object v8 │ + return-object v6 │ .end method │ │ .method getFqcn()Ljava/lang/String; │ .locals 2 │ │ .prologue │ - .line 48 │ + .line 50 │ new-instance v0, Ljava/lang/StringBuilder; │ │ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ │ iget-object v1, p0, Lbutterknife/internal/TargetClass;->classPackage:Ljava/lang/String; │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -782,13 +800,13 @@ │ .end method │ │ .method setParentInjector(Ljava/lang/String;)V │ .locals 0 │ .param p1, "parentInjector" # Ljava/lang/String; │ │ .prologue │ - .line 35 │ + .line 37 │ iput-object p1, p0, Lbutterknife/internal/TargetClass;->parentInjector:Ljava/lang/String; │ │ - .line 36 │ + .line 38 │ return-void │ .end method ├── smali/butterknife/internal/TargetClass$FieldInjection.smali │ @@ -26,22 +26,22 @@ │ .method constructor (Ljava/lang/String;Ljava/lang/String;Z)V │ .locals 0 │ .param p1, "name" # Ljava/lang/String; │ .param p2, "type" # Ljava/lang/String; │ .param p3, "required" # Z │ │ .prologue │ - .line 146 │ + .line 155 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 147 │ + .line 156 │ iput-object p1, p0, Lbutterknife/internal/TargetClass$FieldInjection;->name:Ljava/lang/String; │ │ - .line 148 │ + .line 157 │ iput-object p2, p0, Lbutterknife/internal/TargetClass$FieldInjection;->type:Ljava/lang/String; │ │ - .line 149 │ + .line 158 │ iput-boolean p3, p0, Lbutterknife/internal/TargetClass$FieldInjection;->required:Z │ │ - .line 150 │ + .line 159 │ return-void │ .end method ├── smali/butterknife/internal/InjectViewProcessor.smali │ @@ -11,29 +11,31 @@ │ } │ .end annotation │ │ │ # static fields │ .field public static final SUFFIX:Ljava/lang/String; = "$$ViewInjector" │ │ +.field static final VIEW_TYPE:Ljava/lang/String; = "android.view.View" │ + │ │ # instance fields │ .field private elementUtils:Ljavax/lang/model/util/Elements; │ │ .field private filer:Ljavax/annotation/processing/Filer; │ │ .field private typeUtils:Ljavax/lang/model/util/Types; │ │ │ # direct methods │ .method public constructor ()V │ .locals 0 │ │ .prologue │ - .line 41 │ + .line 43 │ invoke-direct {p0}, Ljavax/annotation/processing/AbstractProcessor;->()V │ │ return-void │ .end method │ │ .method private containsTypeMirror(Ljava/util/Collection;Ljavax/lang/model/type/TypeMirror;)Z │ .locals 3 │ @@ -47,61 +49,60 @@ │ ">;", │ "Ljavax/lang/model/type/TypeMirror;", │ ")Z" │ } │ .end annotation │ │ .prologue │ - .line 296 │ + .line 299 │ .local p1, "mirrors":Ljava/util/Collection;, "Ljava/util/Collection;" │ - iget-object v2, p0, Lbutterknife/internal/InjectViewProcessor;->typeUtils:Ljavax/lang/model/util/Types; │ + iget-object v1, p0, Lbutterknife/internal/InjectViewProcessor;->typeUtils:Ljavax/lang/model/util/Types; │ │ - invoke-interface {v2, p2}, Ljavax/lang/model/util/Types;->erasure(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror; │ + invoke-interface {v1, p2}, Ljavax/lang/model/util/Types;->erasure(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror; │ │ move-result-object p2 │ │ - .line 298 │ + .line 301 │ invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; │ │ - move-result-object v0 │ + move-result-object v1 │ │ - .local v0, "i$":Ljava/util/Iterator; │ :cond_0 │ - invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v2 │ │ if-eqz v2, :cond_1 │ │ - invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ - move-result-object v1 │ + move-result-object v0 │ │ - check-cast v1, Ljavax/lang/model/type/TypeMirror; │ + check-cast v0, Ljavax/lang/model/type/TypeMirror; │ │ - .line 299 │ - .local v1, "mirror":Ljavax/lang/model/type/TypeMirror; │ + .line 302 │ + .local v0, "mirror":Ljavax/lang/model/type/TypeMirror; │ iget-object v2, p0, Lbutterknife/internal/InjectViewProcessor;->typeUtils:Ljavax/lang/model/util/Types; │ │ - invoke-interface {v2, v1, p2}, Ljavax/lang/model/util/Types;->isSameType(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z │ + invoke-interface {v2, v0, p2}, Ljavax/lang/model/util/Types;->isSameType(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z │ │ move-result v2 │ │ if-eqz v2, :cond_0 │ │ - .line 300 │ - const/4 v2, 0x1 │ - │ .line 303 │ - .end local v1 # "mirror":Ljavax/lang/model/type/TypeMirror; │ + const/4 v1, 0x1 │ + │ + .line 306 │ + .end local v0 # "mirror":Ljavax/lang/model/type/TypeMirror; │ :goto_0 │ - return v2 │ + return v1 │ │ :cond_1 │ - const/4 v2, 0x0 │ + const/4 v1, 0x0 │ │ goto :goto_0 │ .end method │ │ .method private findAndParseTargets(Ljavax/annotation/processing/RoundEnvironment;)Ljava/util/Map; │ .locals 12 │ .param p1, "env" # Ljavax/annotation/processing/RoundEnvironment; │ @@ -119,65 +120,64 @@ │ .end annotation │ │ .prologue │ const/4 v11, 0x1 │ │ const/4 v10, 0x0 │ │ - .line 79 │ - new-instance v6, Ljava/util/LinkedHashMap; │ + .line 82 │ + new-instance v5, Ljava/util/LinkedHashMap; │ │ - invoke-direct {v6}, Ljava/util/LinkedHashMap;->()V │ + invoke-direct {v5}, Ljava/util/LinkedHashMap;->()V │ │ - .line 80 │ - .local v6, "targetClassMap":Ljava/util/Map;, "Ljava/util/Map;" │ + .line 83 │ + .local v5, "targetClassMap":Ljava/util/Map;, "Ljava/util/Map;" │ new-instance v3, Ljava/util/LinkedHashSet; │ │ invoke-direct {v3}, Ljava/util/LinkedHashSet;->()V │ │ - .line 83 │ + .line 86 │ .local v3, "erasedTargetTypes":Ljava/util/Set;, "Ljava/util/Set;" │ - const-class v7, Lbutterknife/InjectView; │ + const-class v6, Lbutterknife/InjectView; │ │ - invoke-interface {p1, v7}, Ljavax/annotation/processing/RoundEnvironment;->getElementsAnnotatedWith(Ljava/lang/Class;)Ljava/util/Set; │ + invoke-interface {p1, v6}, Ljavax/annotation/processing/RoundEnvironment;->getElementsAnnotatedWith(Ljava/lang/Class;)Ljava/util/Set; │ │ - move-result-object v7 │ + move-result-object v6 │ │ - invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v4 │ + move-result-object v6 │ │ - .local v4, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v7 │ │ if-eqz v7, :cond_0 │ │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljavax/lang/model/element/Element; │ │ - .line 85 │ + .line 88 │ .local v1, "element":Ljavax/lang/model/element/Element; │ :try_start_0 │ - invoke-direct {p0, v1, v6, v3}, Lbutterknife/internal/InjectViewProcessor;->parseInjectView(Ljavax/lang/model/element/Element;Ljava/util/Map;Ljava/util/Set;)V │ + invoke-direct {p0, v1, v5, v3}, Lbutterknife/internal/InjectViewProcessor;->parseInjectView(Ljavax/lang/model/element/Element;Ljava/util/Map;Ljava/util/Set;)V │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ goto :goto_0 │ │ - .line 86 │ + .line 89 │ :catch_0 │ move-exception v0 │ │ - .line 87 │ + .line 90 │ .local v0, "e":Ljava/lang/Exception; │ const-string v7, "Unable to parse @InjectView: %s" │ │ new-array v8, v11, [Ljava/lang/Object; │ │ invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String; │ │ @@ -185,55 +185,55 @@ │ │ aput-object v9, v8, v10 │ │ invoke-virtual {p0, v1, v7, v8}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto :goto_0 │ │ - .line 92 │ + .line 95 │ .end local v0 # "e":Ljava/lang/Exception; │ .end local v1 # "element":Ljavax/lang/model/element/Element; │ :cond_0 │ - const-class v7, Lbutterknife/OnClick; │ + const-class v6, Lbutterknife/OnClick; │ │ - invoke-interface {p1, v7}, Ljavax/annotation/processing/RoundEnvironment;->getElementsAnnotatedWith(Ljava/lang/Class;)Ljava/util/Set; │ + invoke-interface {p1, v6}, Ljavax/annotation/processing/RoundEnvironment;->getElementsAnnotatedWith(Ljava/lang/Class;)Ljava/util/Set; │ │ - move-result-object v7 │ + move-result-object v6 │ │ - invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v4 │ + move-result-object v6 │ │ :goto_1 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v7 │ │ if-eqz v7, :cond_1 │ │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljavax/lang/model/element/Element; │ │ - .line 94 │ + .line 97 │ .restart local v1 # "element":Ljavax/lang/model/element/Element; │ :try_start_1 │ - invoke-direct {p0, v1, v6, v3}, Lbutterknife/internal/InjectViewProcessor;->parseOnClick(Ljavax/lang/model/element/Element;Ljava/util/Map;Ljava/util/Set;)V │ + invoke-direct {p0, v1, v5, v3}, Lbutterknife/internal/InjectViewProcessor;->parseOnClick(Ljavax/lang/model/element/Element;Ljava/util/Map;Ljava/util/Set;)V │ :try_end_1 │ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ │ goto :goto_1 │ │ - .line 95 │ + .line 98 │ :catch_1 │ move-exception v0 │ │ - .line 96 │ + .line 99 │ .restart local v0 # "e":Ljava/lang/Exception; │ const-string v7, "Unable to parse @OnClick: %s" │ │ new-array v8, v11, [Ljava/lang/Object; │ │ invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String; │ │ @@ -241,90 +241,90 @@ │ │ aput-object v9, v8, v10 │ │ invoke-virtual {p0, v1, v7, v8}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto :goto_1 │ │ - .line 101 │ + .line 104 │ .end local v0 # "e":Ljava/lang/Exception; │ .end local v1 # "element":Ljavax/lang/model/element/Element; │ :cond_1 │ - invoke-interface {v6}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + invoke-interface {v5}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - move-result-object v7 │ + move-result-object v6 │ │ - invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v4 │ + move-result-object v7 │ │ :cond_2 │ :goto_2 │ - invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v7 │ + move-result v6 │ │ - if-eqz v7, :cond_3 │ + if-eqz v6, :cond_3 │ │ - invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v2 │ │ check-cast v2, Ljava/util/Map$Entry; │ │ - .line 102 │ + .line 105 │ .local v2, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;" │ invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - move-result-object v7 │ + move-result-object v6 │ │ - check-cast v7, Ljavax/lang/model/element/TypeElement; │ + check-cast v6, Ljavax/lang/model/element/TypeElement; │ │ - invoke-direct {p0, v7, v3}, Lbutterknife/internal/InjectViewProcessor;->findParentFqcn(Ljavax/lang/model/element/TypeElement;Ljava/util/Set;)Ljava/lang/String; │ + invoke-direct {p0, v6, v3}, Lbutterknife/internal/InjectViewProcessor;->findParentFqcn(Ljavax/lang/model/element/TypeElement;Ljava/util/Set;)Ljava/lang/String; │ │ - move-result-object v5 │ + move-result-object v4 │ │ - .line 103 │ - .local v5, "parentClassFqcn":Ljava/lang/String; │ - if-eqz v5, :cond_2 │ + .line 106 │ + .local v4, "parentClassFqcn":Ljava/lang/String; │ + if-eqz v4, :cond_2 │ │ - .line 104 │ + .line 107 │ invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - move-result-object v7 │ + move-result-object v6 │ │ - check-cast v7, Lbutterknife/internal/TargetClass; │ + check-cast v6, Lbutterknife/internal/TargetClass; │ │ new-instance v8, Ljava/lang/StringBuilder; │ │ invoke-direct {v8}, Ljava/lang/StringBuilder;->()V │ │ - invoke-virtual {v8, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v8, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ const-string v9, "$$ViewInjector" │ │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v8 │ │ - invoke-virtual {v7, v8}, Lbutterknife/internal/TargetClass;->setParentInjector(Ljava/lang/String;)V │ + invoke-virtual {v6, v8}, Lbutterknife/internal/TargetClass;->setParentInjector(Ljava/lang/String;)V │ │ goto :goto_2 │ │ - .line 108 │ + .line 111 │ .end local v2 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;" │ - .end local v5 # "parentClassFqcn":Ljava/lang/String; │ + .end local v4 # "parentClassFqcn":Ljava/lang/String; │ :cond_3 │ - return-object v6 │ + return-object v5 │ .end method │ │ .method private findParentFqcn(Ljavax/lang/model/element/TypeElement;Ljava/util/Set;)Ljava/lang/String; │ .locals 4 │ .param p1, "typeElement" # Ljavax/lang/model/element/TypeElement; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ @@ -335,65 +335,65 @@ │ "Ljavax/lang/model/type/TypeMirror;", │ ">;)", │ "Ljava/lang/String;" │ } │ .end annotation │ │ .prologue │ - .line 282 │ + .line 285 │ .local p2, "parents":Ljava/util/Set;, "Ljava/util/Set;" │ :cond_0 │ invoke-interface {p1}, Ljavax/lang/model/element/TypeElement;->getSuperclass()Ljavax/lang/model/type/TypeMirror; │ │ move-result-object v1 │ │ - .line 283 │ + .line 286 │ .local v1, "type":Ljavax/lang/model/type/TypeMirror; │ invoke-interface {v1}, Ljavax/lang/model/type/TypeMirror;->getKind()Ljavax/lang/model/type/TypeKind; │ │ move-result-object v2 │ │ sget-object v3, Ljavax/lang/model/type/TypeKind;->NONE:Ljavax/lang/model/type/TypeKind; │ │ if-ne v2, v3, :cond_1 │ │ - .line 284 │ + .line 287 │ const/4 v2, 0x0 │ │ - .line 289 │ + .line 292 │ :goto_0 │ return-object v2 │ │ :cond_1 │ move-object v2, v1 │ │ - .line 286 │ + .line 289 │ check-cast v2, Ljavax/lang/model/type/DeclaredType; │ │ invoke-interface {v2}, Ljavax/lang/model/type/DeclaredType;->asElement()Ljavax/lang/model/element/Element; │ │ move-result-object p1 │ │ .end local p1 # "typeElement":Ljavax/lang/model/element/TypeElement; │ check-cast p1, Ljavax/lang/model/element/TypeElement; │ │ - .line 287 │ + .line 290 │ .restart local p1 # "typeElement":Ljavax/lang/model/element/TypeElement; │ invoke-direct {p0, p2, v1}, Lbutterknife/internal/InjectViewProcessor;->containsTypeMirror(Ljava/util/Collection;Ljavax/lang/model/type/TypeMirror;)Z │ │ move-result v2 │ │ if-eqz v2, :cond_0 │ │ - .line 288 │ + .line 291 │ invoke-virtual {p0, p1}, Lbutterknife/internal/InjectViewProcessor;->getPackageName(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String; │ │ move-result-object v0 │ │ - .line 289 │ + .line 292 │ .local v0, "packageName":Ljava/lang/String; │ new-instance v2, Ljava/lang/StringBuilder; │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ @@ -422,22 +422,22 @@ │ │ .method protected static getClassName(Ljavax/lang/model/element/TypeElement;Ljava/lang/String;)Ljava/lang/String; │ .locals 4 │ .param p0, "type" # Ljavax/lang/model/element/TypeElement; │ .param p1, "packageName" # Ljava/lang/String; │ │ .prologue │ - .line 274 │ + .line 277 │ invoke-virtual {p1}, Ljava/lang/String;->length()I │ │ move-result v1 │ │ add-int/lit8 v0, v1, 0x1 │ │ - .line 275 │ + .line 278 │ .local v0, "packageLen":I │ invoke-interface {p0}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Ljava/lang/Object;->toString()Ljava/lang/String; │ │ @@ -472,42 +472,42 @@ │ "Ljavax/lang/model/element/TypeElement;", │ ")", │ "Lbutterknife/internal/TargetClass;" │ } │ .end annotation │ │ .prologue │ - .line 261 │ + .line 264 │ .local p1, "targetClassMap":Ljava/util/Map;, "Ljava/util/Map;" │ invoke-interface {p1, p2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v2 │ │ check-cast v2, Lbutterknife/internal/TargetClass; │ │ - .line 262 │ + .line 265 │ .local v2, "targetClass":Lbutterknife/internal/TargetClass; │ if-nez v2, :cond_0 │ │ - .line 263 │ + .line 266 │ invoke-interface {p2}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ move-result-object v4 │ │ invoke-virtual {v4}, Ljava/lang/Object;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ - .line 264 │ + .line 267 │ .local v3, "targetType":Ljava/lang/String; │ invoke-virtual {p0, p2}, Lbutterknife/internal/InjectViewProcessor;->getPackageName(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String; │ │ move-result-object v1 │ │ - .line 265 │ + .line 268 │ .local v1, "classPackage":Ljava/lang/String; │ new-instance v4, Ljava/lang/StringBuilder; │ │ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V │ │ invoke-static {p2, v1}, Lbutterknife/internal/InjectViewProcessor;->getClassName(Ljavax/lang/model/element/TypeElement;Ljava/lang/String;)Ljava/lang/String; │ │ @@ -523,99 +523,99 @@ │ │ move-result-object v4 │ │ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ - .line 267 │ + .line 270 │ .local v0, "className":Ljava/lang/String; │ new-instance v2, Lbutterknife/internal/TargetClass; │ │ .end local v2 # "targetClass":Lbutterknife/internal/TargetClass; │ invoke-direct {v2, v1, v0, v3}, Lbutterknife/internal/TargetClass;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 268 │ + .line 271 │ .restart local v2 # "targetClass":Lbutterknife/internal/TargetClass; │ invoke-interface {p1, p2, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ - .line 270 │ + .line 273 │ .end local v0 # "className":Ljava/lang/String; │ .end local v1 # "classPackage":Ljava/lang/String; │ .end local v3 # "targetType":Ljava/lang/String; │ :cond_0 │ return-object v2 │ .end method │ │ .method private isSubtypeOfView(Ljavax/lang/model/type/TypeMirror;)Z │ .locals 7 │ .param p1, "typeMirror" # Ljavax/lang/model/type/TypeMirror; │ │ .prologue │ const/4 v4, 0x0 │ │ - .line 242 │ + .line 245 │ instance-of v5, p1, Ljavax/lang/model/type/DeclaredType; │ │ if-nez v5, :cond_1 │ │ - .line 255 │ + .line 258 │ :cond_0 │ :goto_0 │ return v4 │ │ :cond_1 │ move-object v0, p1 │ │ - .line 245 │ + .line 248 │ check-cast v0, Ljavax/lang/model/type/DeclaredType; │ │ - .line 246 │ + .line 249 │ .local v0, "declaredType":Ljavax/lang/model/type/DeclaredType; │ const-string v5, "android.view.View" │ │ invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String; │ │ move-result-object v6 │ │ invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v5 │ │ if-eqz v5, :cond_2 │ │ - .line 247 │ + .line 250 │ const/4 v4, 0x1 │ │ goto :goto_0 │ │ - .line 249 │ + .line 252 │ :cond_2 │ invoke-interface {v0}, Ljavax/lang/model/type/DeclaredType;->asElement()Ljavax/lang/model/element/Element; │ │ move-result-object v1 │ │ - .line 250 │ + .line 253 │ .local v1, "element":Ljavax/lang/model/element/Element; │ instance-of v5, v1, Ljavax/lang/model/element/TypeElement; │ │ if-eqz v5, :cond_0 │ │ move-object v3, v1 │ │ - .line 253 │ + .line 256 │ check-cast v3, Ljavax/lang/model/element/TypeElement; │ │ - .line 254 │ + .line 257 │ .local v3, "typeElement":Ljavax/lang/model/element/TypeElement; │ invoke-interface {v3}, Ljavax/lang/model/element/TypeElement;->getSuperclass()Ljavax/lang/model/type/TypeMirror; │ │ move-result-object v2 │ │ - .line 255 │ + .line 258 │ .local v2, "superType":Ljavax/lang/model/type/TypeMirror; │ invoke-direct {p0, v2}, Lbutterknife/internal/InjectViewProcessor;->isSubtypeOfView(Ljavax/lang/model/type/TypeMirror;)Z │ │ move-result v4 │ │ goto :goto_0 │ .end method │ @@ -638,234 +638,234 @@ │ ">;)V" │ } │ .end annotation │ │ .prologue │ .local p2, "targetClassMap":Ljava/util/Map;, "Ljava/util/Map;" │ .local p3, "erasedTargetTypes":Ljava/util/Set;, "Ljava/util/Set;" │ - const/4 v10, 0x2 │ + const/4 v11, 0x2 │ │ const/4 v5, 0x1 │ │ const/4 v9, 0x0 │ │ - .line 113 │ + .line 116 │ invoke-interface {p1}, Ljavax/lang/model/element/Element;->getEnclosingElement()Ljavax/lang/model/element/Element; │ │ move-result-object v0 │ │ check-cast v0, Ljavax/lang/model/element/TypeElement; │ │ - .line 116 │ + .line 119 │ .local v0, "enclosingElement":Ljavax/lang/model/element/TypeElement; │ invoke-interface {p1}, Ljavax/lang/model/element/Element;->asType()Ljavax/lang/model/type/TypeMirror; │ │ move-result-object v8 │ │ invoke-direct {p0, v8}, Lbutterknife/internal/InjectViewProcessor;->isSubtypeOfView(Ljavax/lang/model/type/TypeMirror;)Z │ │ move-result v8 │ │ if-nez v8, :cond_0 │ │ - .line 117 │ + .line 120 │ const-string v8, "@InjectView fields must extend from View (%s.%s)." │ │ - new-array v10, v10, [Ljava/lang/Object; │ + new-array v10, v11, [Ljava/lang/Object; │ │ - .line 118 │ + .line 121 │ invoke-interface {v0}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ move-result-object v11 │ │ aput-object v11, v10, v9 │ │ aput-object p1, v10, v5 │ │ - .line 117 │ + .line 120 │ invoke-virtual {p0, p1, v8, v10}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ - .line 155 │ + .line 158 │ :goto_0 │ return-void │ │ - .line 123 │ + .line 126 │ :cond_0 │ + invoke-interface {v0}, Ljavax/lang/model/element/TypeElement;->getKind()Ljavax/lang/model/element/ElementKind; │ + │ + move-result-object v8 │ + │ + sget-object v10, Ljavax/lang/model/element/ElementKind;->CLASS:Ljavax/lang/model/element/ElementKind; │ + │ + if-eq v8, v10, :cond_1 │ + │ + .line 127 │ + const-string v8, "@InjectView field annotations may only be specified in classes (%s)." │ + │ + new-array v10, v5, [Ljava/lang/Object; │ + │ + aput-object v0, v10, v9 │ + │ + invoke-virtual {p0, p1, v8, v10}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ + │ + goto :goto_0 │ + │ + .line 133 │ + :cond_1 │ invoke-interface {p1}, Ljavax/lang/model/element/Element;->getModifiers()Ljava/util/Set; │ │ move-result-object v3 │ │ - .line 124 │ + .line 134 │ .local v3, "modifiers":Ljava/util/Set;, "Ljava/util/Set;" │ sget-object v8, Ljavax/lang/model/element/Modifier;->PRIVATE:Ljavax/lang/model/element/Modifier; │ │ invoke-interface {v3, v8}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ move-result v8 │ │ - if-nez v8, :cond_1 │ + if-nez v8, :cond_2 │ │ sget-object v8, Ljavax/lang/model/element/Modifier;->STATIC:Ljavax/lang/model/element/Modifier; │ │ invoke-interface {v3, v8}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ move-result v8 │ │ - if-eqz v8, :cond_2 │ + if-eqz v8, :cond_3 │ │ - .line 125 │ - :cond_1 │ + .line 135 │ + :cond_2 │ const-string v8, "@InjectView fields must not be private or static (%s.%s)." │ │ - new-array v10, v10, [Ljava/lang/Object; │ + new-array v10, v11, [Ljava/lang/Object; │ │ - .line 126 │ + .line 136 │ invoke-interface {v0}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ move-result-object v11 │ │ aput-object v11, v10, v9 │ │ aput-object p1, v10, v5 │ │ - .line 125 │ + .line 135 │ invoke-virtual {p0, p1, v8, v10}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto :goto_0 │ │ - .line 131 │ - :cond_2 │ - invoke-interface {v0}, Ljavax/lang/model/element/TypeElement;->getKind()Ljavax/lang/model/element/ElementKind; │ - │ - move-result-object v8 │ - │ - sget-object v10, Ljavax/lang/model/element/ElementKind;->CLASS:Ljavax/lang/model/element/ElementKind; │ - │ - if-eq v8, v10, :cond_3 │ - │ - .line 132 │ - const-string v8, "@InjectView field annotations may only be specified in classes (%s)." │ - │ - new-array v10, v5, [Ljava/lang/Object; │ - │ - aput-object v0, v10, v9 │ - │ - invoke-virtual {p0, p1, v8, v10}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ - │ - goto :goto_0 │ - │ - .line 138 │ + .line 141 │ :cond_3 │ invoke-interface {v0}, Ljavax/lang/model/element/TypeElement;->getModifiers()Ljava/util/Set; │ │ move-result-object v8 │ │ sget-object v10, Ljavax/lang/model/element/Modifier;->PRIVATE:Ljavax/lang/model/element/Modifier; │ │ invoke-interface {v8, v10}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ move-result v8 │ │ if-eqz v8, :cond_4 │ │ - .line 139 │ + .line 142 │ const-string v8, "@InjectView fields may not be on private classes (%s)." │ │ new-array v10, v5, [Ljava/lang/Object; │ │ aput-object v0, v10, v9 │ │ invoke-virtual {p0, p1, v8, v10}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto :goto_0 │ │ - .line 144 │ + .line 147 │ :cond_4 │ invoke-interface {p1}, Ljavax/lang/model/element/Element;->getSimpleName()Ljavax/lang/model/element/Name; │ │ move-result-object v8 │ │ invoke-virtual {v8}, Ljava/lang/Object;->toString()Ljava/lang/String; │ │ move-result-object v4 │ │ - .line 145 │ + .line 148 │ .local v4, "name":Ljava/lang/String; │ const-class v8, Lbutterknife/InjectView; │ │ invoke-interface {p1, v8}, Ljavax/lang/model/element/Element;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; │ │ move-result-object v8 │ │ check-cast v8, Lbutterknife/InjectView; │ │ invoke-interface {v8}, Lbutterknife/InjectView;->value()I │ │ move-result v2 │ │ - .line 146 │ + .line 149 │ .local v2, "id":I │ invoke-interface {p1}, Ljavax/lang/model/element/Element;->asType()Ljavax/lang/model/type/TypeMirror; │ │ move-result-object v8 │ │ invoke-interface {v8}, Ljavax/lang/model/type/TypeMirror;->toString()Ljava/lang/String; │ │ move-result-object v7 │ │ - .line 147 │ + .line 150 │ .local v7, "type":Ljava/lang/String; │ const-class v8, Lbutterknife/Optional; │ │ invoke-interface {p1, v8}, Ljavax/lang/model/element/Element;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; │ │ move-result-object v8 │ │ if-nez v8, :cond_5 │ │ - .line 149 │ + .line 152 │ .local v5, "required":Z │ :goto_1 │ invoke-direct {p0, p2, v0}, Lbutterknife/internal/InjectViewProcessor;->getOrCreateTargetClass(Ljava/util/Map;Ljavax/lang/model/element/TypeElement;)Lbutterknife/internal/TargetClass; │ │ move-result-object v6 │ │ - .line 150 │ + .line 153 │ .local v6, "targetClass":Lbutterknife/internal/TargetClass; │ invoke-virtual {v6, v2, v4, v7, v5}, Lbutterknife/internal/TargetClass;->addField(ILjava/lang/String;Ljava/lang/String;Z)V │ │ - .line 153 │ + .line 156 │ iget-object v8, p0, Lbutterknife/internal/InjectViewProcessor;->typeUtils:Ljavax/lang/model/util/Types; │ │ invoke-interface {v0}, Ljavax/lang/model/element/TypeElement;->asType()Ljavax/lang/model/type/TypeMirror; │ │ move-result-object v9 │ │ invoke-interface {v8, v9}, Ljavax/lang/model/util/Types;->erasure(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror; │ │ move-result-object v1 │ │ - .line 154 │ + .line 157 │ .local v1, "erasedTargetType":Ljavax/lang/model/type/TypeMirror; │ invoke-interface {p3, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ │ goto/16 :goto_0 │ │ .end local v1 # "erasedTargetType":Ljavax/lang/model/type/TypeMirror; │ .end local v5 # "required":Z │ .end local v6 # "targetClass":Lbutterknife/internal/TargetClass; │ :cond_5 │ move v5, v9 │ │ - .line 147 │ + .line 150 │ goto :goto_1 │ .end method │ │ .method private parseOnClick(Ljavax/lang/model/element/Element;Ljava/util/Map;Ljava/util/Set;)V │ - .locals 24 │ + .locals 21 │ .param p1, "element" # Ljavax/lang/model/element/Element; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "(", │ "Ljavax/lang/model/element/Element;", │ "Ljava/util/Map", │ "<", │ @@ -876,680 +876,669 @@ │ "<", │ "Ljavax/lang/model/type/TypeMirror;", │ ">;)V" │ } │ .end annotation │ │ .prologue │ - .line 159 │ + .line 162 │ .local p2, "targetClassMap":Ljava/util/Map;, "Ljava/util/Map;" │ .local p3, "erasedTargetTypes":Ljava/util/Set;, "Ljava/util/Set;" │ move-object/from16 v0, p1 │ │ instance-of v0, v0, Ljavax/lang/model/element/ExecutableElement; │ │ - move/from16 v20, v0 │ + move/from16 v17, v0 │ │ - if-nez v20, :cond_0 │ + if-nez v17, :cond_0 │ │ - .line 160 │ - const-string v20, "@OnClick annotation must be on a method." │ + .line 163 │ + const-string v17, "@OnClick annotation must be on a method." │ │ - const/16 v21, 0x0 │ + const/16 v18, 0x0 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ - .line 239 │ + .line 242 │ :goto_0 │ return-void │ │ :cond_0 │ - move-object/from16 v7, p1 │ + move-object/from16 v6, p1 │ │ - .line 164 │ - check-cast v7, Ljavax/lang/model/element/ExecutableElement; │ + .line 167 │ + check-cast v6, Ljavax/lang/model/element/ExecutableElement; │ │ - .line 165 │ - .local v7, "executableElement":Ljavax/lang/model/element/ExecutableElement; │ + .line 168 │ + .local v6, "executableElement":Ljavax/lang/model/element/ExecutableElement; │ invoke-interface/range {p1 .. p1}, Ljavax/lang/model/element/Element;->getEnclosingElement()Ljavax/lang/model/element/Element; │ │ - move-result-object v5 │ + move-result-object v4 │ │ - check-cast v5, Ljavax/lang/model/element/TypeElement; │ + check-cast v4, Ljavax/lang/model/element/TypeElement; │ │ - .line 168 │ - .local v5, "enclosingElement":Ljavax/lang/model/element/TypeElement; │ + .line 171 │ + .local v4, "enclosingElement":Ljavax/lang/model/element/TypeElement; │ invoke-interface/range {p1 .. p1}, Ljavax/lang/model/element/Element;->getModifiers()Ljava/util/Set; │ │ - move-result-object v12 │ + move-result-object v9 │ │ - .line 169 │ - .local v12, "modifiers":Ljava/util/Set;, "Ljava/util/Set;" │ - sget-object v20, Ljavax/lang/model/element/Modifier;->PRIVATE:Ljavax/lang/model/element/Modifier; │ + .line 172 │ + .local v9, "modifiers":Ljava/util/Set;, "Ljava/util/Set;" │ + sget-object v17, Ljavax/lang/model/element/Modifier;->PRIVATE:Ljavax/lang/model/element/Modifier; │ │ - move-object/from16 v0, v20 │ + move-object/from16 v0, v17 │ │ - invoke-interface {v12, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ + invoke-interface {v9, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ - move-result v20 │ + move-result v17 │ │ - if-nez v20, :cond_1 │ + if-nez v17, :cond_1 │ │ - sget-object v20, Ljavax/lang/model/element/Modifier;->STATIC:Ljavax/lang/model/element/Modifier; │ + sget-object v17, Ljavax/lang/model/element/Modifier;->STATIC:Ljavax/lang/model/element/Modifier; │ │ - move-object/from16 v0, v20 │ + move-object/from16 v0, v17 │ │ - invoke-interface {v12, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ + invoke-interface {v9, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ - move-result v20 │ + move-result v17 │ │ - if-eqz v20, :cond_2 │ + if-eqz v17, :cond_2 │ │ - .line 170 │ + .line 173 │ :cond_1 │ - const-string v20, "@OnClick methods must not be private or static (%s.%s)." │ + const-string v17, "@OnClick methods must not be private or static (%s.%s)." │ │ - const/16 v21, 0x2 │ + const/16 v18, 0x2 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - .line 171 │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ + .line 174 │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ - move-result-object v23 │ + move-result-object v20 │ │ - aput-object v23, v21, v22 │ + aput-object v20, v18, v19 │ │ - const/16 v22, 0x1 │ + const/16 v19, 0x1 │ │ - aput-object p1, v21, v22 │ + aput-object p1, v18, v19 │ │ - .line 170 │ + .line 173 │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto :goto_0 │ │ - .line 176 │ + .line 179 │ :cond_2 │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->getKind()Ljavax/lang/model/element/ElementKind; │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->getKind()Ljavax/lang/model/element/ElementKind; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - sget-object v21, Ljavax/lang/model/element/ElementKind;->CLASS:Ljavax/lang/model/element/ElementKind; │ + sget-object v18, Ljavax/lang/model/element/ElementKind;->CLASS:Ljavax/lang/model/element/ElementKind; │ │ - move-object/from16 v0, v20 │ + move-object/from16 v0, v17 │ │ - move-object/from16 v1, v21 │ + move-object/from16 v1, v18 │ │ if-eq v0, v1, :cond_3 │ │ - .line 177 │ - const-string v20, "@OnClick method annotations may only be specified in classes (%s)." │ + .line 180 │ + const-string v17, "@OnClick method annotations may only be specified in classes (%s)." │ │ - const/16 v21, 0x1 │ + const/16 v18, 0x1 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - aput-object v5, v21, v22 │ + aput-object v4, v18, v19 │ │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto :goto_0 │ │ - .line 183 │ + .line 186 │ :cond_3 │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->getModifiers()Ljava/util/Set; │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->getModifiers()Ljava/util/Set; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - sget-object v21, Ljavax/lang/model/element/Modifier;->PRIVATE:Ljavax/lang/model/element/Modifier; │ + sget-object v18, Ljavax/lang/model/element/Modifier;->PRIVATE:Ljavax/lang/model/element/Modifier; │ │ - invoke-interface/range {v20 .. v21}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ + invoke-interface/range {v17 .. v18}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ - move-result v20 │ + move-result v17 │ │ - if-eqz v20, :cond_4 │ + if-eqz v17, :cond_4 │ │ - .line 184 │ - const-string v20, "@OnClick methods may not be on private classes (%s)." │ + .line 187 │ + const-string v17, "@OnClick methods may not be on private classes (%s)." │ │ - const/16 v21, 0x1 │ + const/16 v18, 0x1 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - aput-object v5, v21, v22 │ + aput-object v4, v18, v19 │ │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto/16 :goto_0 │ │ - .line 189 │ + .line 192 │ :cond_4 │ - invoke-interface {v7}, Ljavax/lang/model/element/ExecutableElement;->getReturnType()Ljavax/lang/model/type/TypeMirror; │ + invoke-interface {v6}, Ljavax/lang/model/element/ExecutableElement;->getReturnType()Ljavax/lang/model/type/TypeMirror; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - invoke-interface/range {v20 .. v20}, Ljavax/lang/model/type/TypeMirror;->getKind()Ljavax/lang/model/type/TypeKind; │ + invoke-interface/range {v17 .. v17}, Ljavax/lang/model/type/TypeMirror;->getKind()Ljavax/lang/model/type/TypeKind; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - sget-object v21, Ljavax/lang/model/type/TypeKind;->VOID:Ljavax/lang/model/type/TypeKind; │ + sget-object v18, Ljavax/lang/model/type/TypeKind;->VOID:Ljavax/lang/model/type/TypeKind; │ │ - move-object/from16 v0, v20 │ + move-object/from16 v0, v17 │ │ - move-object/from16 v1, v21 │ + move-object/from16 v1, v18 │ │ if-eq v0, v1, :cond_5 │ │ - .line 190 │ - const-string v20, "@OnClick methods must have a \'void\' return type (%s.%s)." │ + .line 193 │ + const-string v17, "@OnClick methods must have a \'void\' return type (%s.%s)." │ │ - const/16 v21, 0x2 │ + const/16 v18, 0x2 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - .line 191 │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ + .line 194 │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ - move-result-object v23 │ + move-result-object v20 │ │ - aput-object v23, v21, v22 │ + aput-object v20, v18, v19 │ │ - const/16 v22, 0x1 │ + const/16 v19, 0x1 │ │ - aput-object p1, v21, v22 │ + aput-object p1, v18, v19 │ │ - .line 190 │ + .line 193 │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto/16 :goto_0 │ │ - .line 195 │ + .line 198 │ :cond_5 │ - const/16 v18, 0x0 │ + const/4 v15, 0x0 │ │ - .line 196 │ - .local v18, "type":Ljava/lang/String; │ - invoke-interface {v7}, Ljavax/lang/model/element/ExecutableElement;->getParameters()Ljava/util/List; │ + .line 199 │ + .local v15, "type":Ljava/lang/String; │ + invoke-interface {v6}, Ljavax/lang/model/element/ExecutableElement;->getParameters()Ljava/util/List; │ │ - move-result-object v14 │ + move-result-object v11 │ │ - .line 197 │ - .local v14, "parameters":Ljava/util/List;, "Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;" │ - invoke-interface {v14}, Ljava/util/List;->isEmpty()Z │ + .line 200 │ + .local v11, "parameters":Ljava/util/List;, "Ljava/util/List<+Ljavax/lang/model/element/VariableElement;>;" │ + invoke-interface {v11}, Ljava/util/List;->isEmpty()Z │ │ - move-result v20 │ + move-result v17 │ │ - if-nez v20, :cond_8 │ + if-nez v17, :cond_8 │ │ - .line 199 │ - invoke-interface {v14}, Ljava/util/List;->size()I │ + .line 202 │ + invoke-interface {v11}, Ljava/util/List;->size()I │ │ - move-result v20 │ + move-result v17 │ │ - const/16 v21, 0x1 │ + const/16 v18, 0x1 │ │ - move/from16 v0, v20 │ + move/from16 v0, v17 │ │ - move/from16 v1, v21 │ + move/from16 v1, v18 │ │ if-eq v0, v1, :cond_6 │ │ - .line 200 │ - const-string v20, "@OnClick methods may only have one parameter which is View (or subclass) (%s.%s)." │ + .line 203 │ + const-string v17, "@OnClick methods may only have one parameter which is View (or subclass) (%s.%s)." │ │ - const/16 v21, 0x2 │ + const/16 v18, 0x2 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - .line 202 │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ + .line 205 │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ - move-result-object v23 │ + move-result-object v20 │ │ - aput-object v23, v21, v22 │ + aput-object v20, v18, v19 │ │ - const/16 v22, 0x1 │ + const/16 v19, 0x1 │ │ - aput-object p1, v21, v22 │ + aput-object p1, v18, v19 │ │ - .line 200 │ + .line 203 │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto/16 :goto_0 │ │ - .line 206 │ + .line 209 │ :cond_6 │ - const/16 v20, 0x0 │ + const/16 v17, 0x0 │ │ - move/from16 v0, v20 │ + move/from16 v0, v17 │ │ - invoke-interface {v14, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; │ + invoke-interface {v11, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ - move-result-object v19 │ + move-result-object v16 │ │ - check-cast v19, Ljavax/lang/model/element/VariableElement; │ + check-cast v16, Ljavax/lang/model/element/VariableElement; │ │ - .line 207 │ - .local v19, "variableElement":Ljavax/lang/model/element/VariableElement; │ - invoke-interface/range {v19 .. v19}, Ljavax/lang/model/element/VariableElement;->asType()Ljavax/lang/model/type/TypeMirror; │ + .line 210 │ + .local v16, "variableElement":Ljavax/lang/model/element/VariableElement; │ + invoke-interface/range {v16 .. v16}, Ljavax/lang/model/element/VariableElement;->asType()Ljavax/lang/model/type/TypeMirror; │ │ - move-result-object v20 │ + move-result-object v17 │ │ move-object/from16 v0, p0 │ │ - move-object/from16 v1, v20 │ + move-object/from16 v1, v17 │ │ invoke-direct {v0, v1}, Lbutterknife/internal/InjectViewProcessor;->isSubtypeOfView(Ljavax/lang/model/type/TypeMirror;)Z │ │ - move-result v20 │ + move-result v17 │ │ - if-nez v20, :cond_7 │ + if-nez v17, :cond_7 │ │ - .line 208 │ - const-string v20, "@OnClick method parameter must extend from View (%s.%s)." │ + .line 211 │ + const-string v17, "@OnClick method parameter must extend from View (%s.%s)." │ │ - const/16 v21, 0x2 │ + const/16 v18, 0x2 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - .line 209 │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ + .line 212 │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ - move-result-object v23 │ + move-result-object v20 │ │ - aput-object v23, v21, v22 │ + aput-object v20, v18, v19 │ │ - const/16 v22, 0x1 │ + const/16 v19, 0x1 │ │ - aput-object p1, v21, v22 │ + aput-object p1, v18, v19 │ │ - .line 208 │ + .line 211 │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto/16 :goto_0 │ │ - .line 213 │ + .line 216 │ :cond_7 │ - invoke-interface/range {v19 .. v19}, Ljavax/lang/model/element/VariableElement;->asType()Ljavax/lang/model/type/TypeMirror; │ + invoke-interface/range {v16 .. v16}, Ljavax/lang/model/element/VariableElement;->asType()Ljavax/lang/model/type/TypeMirror; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - invoke-interface/range {v20 .. v20}, Ljavax/lang/model/type/TypeMirror;->toString()Ljava/lang/String; │ + invoke-interface/range {v17 .. v17}, Ljavax/lang/model/type/TypeMirror;->toString()Ljava/lang/String; │ │ - move-result-object v18 │ + move-result-object v15 │ │ - .line 217 │ - .end local v19 # "variableElement":Ljavax/lang/model/element/VariableElement; │ + .line 220 │ + .end local v16 # "variableElement":Ljavax/lang/model/element/VariableElement; │ :cond_8 │ - invoke-interface {v7}, Ljavax/lang/model/element/ExecutableElement;->getSimpleName()Ljavax/lang/model/element/Name; │ + invoke-interface {v6}, Ljavax/lang/model/element/ExecutableElement;->getSimpleName()Ljavax/lang/model/element/Name; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - invoke-virtual/range {v20 .. v20}, Ljava/lang/Object;->toString()Ljava/lang/String; │ + invoke-virtual/range {v17 .. v17}, Ljava/lang/Object;->toString()Ljava/lang/String; │ │ - move-result-object v13 │ + move-result-object v10 │ │ - .line 218 │ - .local v13, "name":Ljava/lang/String; │ - const-class v20, Lbutterknife/OnClick; │ + .line 221 │ + .local v10, "name":Ljava/lang/String; │ + const-class v17, Lbutterknife/OnClick; │ │ move-object/from16 v0, p1 │ │ - move-object/from16 v1, v20 │ + move-object/from16 v1, v17 │ │ invoke-interface {v0, v1}, Ljavax/lang/model/element/Element;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - check-cast v20, Lbutterknife/OnClick; │ + check-cast v17, Lbutterknife/OnClick; │ │ - invoke-interface/range {v20 .. v20}, Lbutterknife/OnClick;->value()[I │ + invoke-interface/range {v17 .. v17}, Lbutterknife/OnClick;->value()[I │ │ - move-result-object v10 │ + move-result-object v8 │ │ - .line 219 │ - .local v10, "ids":[I │ - const-class v20, Lbutterknife/Optional; │ + .line 222 │ + .local v8, "ids":[I │ + const-class v17, Lbutterknife/Optional; │ │ move-object/from16 v0, p1 │ │ - move-object/from16 v1, v20 │ + move-object/from16 v1, v17 │ │ invoke-interface {v0, v1}, Ljavax/lang/model/element/Element;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; │ │ - move-result-object v20 │ + move-result-object v17 │ │ - if-nez v20, :cond_9 │ + if-nez v17, :cond_9 │ │ - const/4 v15, 0x1 │ + const/4 v12, 0x1 │ │ - .line 221 │ - .local v15, "required":Z │ + .line 224 │ + .local v12, "required":Z │ :goto_1 │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p2 │ │ - invoke-direct {v0, v1, v5}, Lbutterknife/internal/InjectViewProcessor;->getOrCreateTargetClass(Ljava/util/Map;Ljavax/lang/model/element/TypeElement;)Lbutterknife/internal/TargetClass; │ + invoke-direct {v0, v1, v4}, Lbutterknife/internal/InjectViewProcessor;->getOrCreateTargetClass(Ljava/util/Map;Ljavax/lang/model/element/TypeElement;)Lbutterknife/internal/TargetClass; │ │ - move-result-object v17 │ + move-result-object v14 │ │ - .line 223 │ - .local v17, "targetClass":Lbutterknife/internal/TargetClass; │ - new-instance v16, Ljava/util/LinkedHashSet; │ + .line 226 │ + .local v14, "targetClass":Lbutterknife/internal/TargetClass; │ + new-instance v13, Ljava/util/LinkedHashSet; │ │ - invoke-direct/range {v16 .. v16}, Ljava/util/LinkedHashSet;->()V │ + invoke-direct {v13}, Ljava/util/LinkedHashSet;->()V │ │ - .line 224 │ - .local v16, "seenIds":Ljava/util/Set;, "Ljava/util/Set;" │ - move-object v4, v10 │ + .line 227 │ + .local v13, "seenIds":Ljava/util/Set;, "Ljava/util/Set;" │ + array-length v0, v8 │ │ - .local v4, "arr$":[I │ - array-length v11, v4 │ + move/from16 v18, v0 │ │ - .local v11, "len$":I │ - const/4 v8, 0x0 │ + const/16 v17, 0x0 │ │ - .local v8, "i$":I │ :goto_2 │ - if-ge v8, v11, :cond_c │ + move/from16 v0, v17 │ │ - aget v9, v4, v8 │ + move/from16 v1, v18 │ │ - .line 225 │ - .local v9, "id":I │ - invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + if-ge v0, v1, :cond_c │ │ - move-result-object v20 │ + aget v7, v8, v17 │ │ - move-object/from16 v0, v16 │ + .line 228 │ + .local v7, "id":I │ + invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ - move-object/from16 v1, v20 │ + move-result-object v19 │ │ - invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ + move-object/from16 v0, v19 │ │ - move-result v20 │ + invoke-interface {v13, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ │ - if-nez v20, :cond_a │ + move-result v19 │ │ - .line 226 │ - const-string v20, "@OnClick annotation for method %s contains duplicate ID %s." │ + if-nez v19, :cond_a │ + │ + .line 229 │ + const-string v17, "@OnClick annotation for method %s contains duplicate ID %d." │ │ - const/16 v21, 0x2 │ + const/16 v18, 0x2 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - aput-object p1, v21, v22 │ + aput-object p1, v18, v19 │ │ - const/16 v22, 0x1 │ + const/16 v19, 0x1 │ │ - .line 227 │ - invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + .line 230 │ + invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ - move-result-object v23 │ + move-result-object v20 │ │ - aput-object v23, v21, v22 │ + aput-object v20, v18, v19 │ │ - .line 226 │ + .line 229 │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto/16 :goto_0 │ │ - .line 219 │ - .end local v4 # "arr$":[I │ - .end local v8 # "i$":I │ - .end local v9 # "id":I │ - .end local v11 # "len$":I │ - .end local v15 # "required":Z │ - .end local v16 # "seenIds":Ljava/util/Set;, "Ljava/util/Set;" │ - .end local v17 # "targetClass":Lbutterknife/internal/TargetClass; │ + .line 222 │ + .end local v7 # "id":I │ + .end local v12 # "required":Z │ + .end local v13 # "seenIds":Ljava/util/Set;, "Ljava/util/Set;" │ + .end local v14 # "targetClass":Lbutterknife/internal/TargetClass; │ :cond_9 │ - const/4 v15, 0x0 │ + const/4 v12, 0x0 │ │ goto :goto_1 │ │ - .line 229 │ - .restart local v4 # "arr$":[I │ - .restart local v8 # "i$":I │ - .restart local v9 # "id":I │ - .restart local v11 # "len$":I │ - .restart local v15 # "required":Z │ - .restart local v16 # "seenIds":Ljava/util/Set;, "Ljava/util/Set;" │ - .restart local v17 # "targetClass":Lbutterknife/internal/TargetClass; │ + .line 232 │ + .restart local v7 # "id":I │ + .restart local v12 # "required":Z │ + .restart local v13 # "seenIds":Ljava/util/Set;, "Ljava/util/Set;" │ + .restart local v14 # "targetClass":Lbutterknife/internal/TargetClass; │ :cond_a │ - move-object/from16 v0, v17 │ + invoke-virtual {v14, v7, v10, v15, v12}, Lbutterknife/internal/TargetClass;->addMethod(ILjava/lang/String;Ljava/lang/String;Z)Z │ │ - move-object/from16 v1, v18 │ - │ - invoke-virtual {v0, v9, v13, v1, v15}, Lbutterknife/internal/TargetClass;->addMethod(ILjava/lang/String;Ljava/lang/String;Z)Z │ + move-result v19 │ │ - move-result v20 │ + if-nez v19, :cond_b │ │ - if-nez v20, :cond_b │ - │ - .line 230 │ - const-string v20, "Multiple @OnClick methods declared for ID %s in %s." │ + .line 233 │ + const-string v17, "Multiple @OnClick methods declared for ID %s in %s." │ │ - const/16 v21, 0x2 │ + const/16 v18, 0x2 │ │ - move/from16 v0, v21 │ + move/from16 v0, v18 │ │ new-array v0, v0, [Ljava/lang/Object; │ │ - move-object/from16 v21, v0 │ + move-object/from16 v18, v0 │ │ - const/16 v22, 0x0 │ + const/16 v19, 0x0 │ │ - invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ - move-result-object v23 │ + move-result-object v20 │ │ - aput-object v23, v21, v22 │ + aput-object v20, v18, v19 │ │ - const/16 v22, 0x1 │ + const/16 v19, 0x1 │ │ - .line 231 │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ + .line 234 │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ │ - move-result-object v23 │ + move-result-object v20 │ │ - aput-object v23, v21, v22 │ + aput-object v20, v18, v19 │ │ - .line 230 │ + .line 233 │ move-object/from16 v0, p0 │ │ move-object/from16 v1, p1 │ │ - move-object/from16 v2, v20 │ + move-object/from16 v2, v17 │ │ - move-object/from16 v3, v21 │ + move-object/from16 v3, v18 │ │ invoke-virtual {v0, v1, v2, v3}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto/16 :goto_0 │ │ - .line 224 │ + .line 227 │ :cond_b │ - add-int/lit8 v8, v8, 0x1 │ + add-int/lit8 v17, v17, 0x1 │ │ goto :goto_2 │ │ - .line 237 │ - .end local v9 # "id":I │ + .line 240 │ + .end local v7 # "id":I │ :cond_c │ move-object/from16 v0, p0 │ │ iget-object v0, v0, Lbutterknife/internal/InjectViewProcessor;->typeUtils:Ljavax/lang/model/util/Types; │ │ - move-object/from16 v20, v0 │ + move-object/from16 v17, v0 │ │ - invoke-interface {v5}, Ljavax/lang/model/element/TypeElement;->asType()Ljavax/lang/model/type/TypeMirror; │ + invoke-interface {v4}, Ljavax/lang/model/element/TypeElement;->asType()Ljavax/lang/model/type/TypeMirror; │ │ - move-result-object v21 │ + move-result-object v18 │ │ - invoke-interface/range {v20 .. v21}, Ljavax/lang/model/util/Types;->erasure(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror; │ + invoke-interface/range {v17 .. v18}, Ljavax/lang/model/util/Types;->erasure(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - .line 238 │ - .local v6, "erasedTargetType":Ljavax/lang/model/type/TypeMirror; │ + .line 241 │ + .local v5, "erasedTargetType":Ljavax/lang/model/type/TypeMirror; │ move-object/from16 v0, p3 │ │ - invoke-interface {v0, v6}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ + invoke-interface {v0, v5}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ │ goto/16 :goto_0 │ .end method │ │ │ # virtual methods │ .method protected varargs error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ .locals 3 │ .param p1, "element" # Ljavax/lang/model/element/Element; │ .param p2, "message" # Ljava/lang/String; │ .param p3, "args" # [Ljava/lang/Object; │ │ .prologue │ - .line 311 │ + .line 314 │ iget-object v0, p0, Lbutterknife/internal/InjectViewProcessor;->processingEnv:Ljavax/annotation/processing/ProcessingEnvironment; │ │ invoke-interface {v0}, Ljavax/annotation/processing/ProcessingEnvironment;->getMessager()Ljavax/annotation/processing/Messager; │ │ move-result-object v0 │ │ sget-object v1, Ljavax/tools/Diagnostic$Kind;->ERROR:Ljavax/tools/Diagnostic$Kind; │ │ invoke-static {p2, p3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-interface {v0, v1, v2, p1}, Ljavax/annotation/processing/Messager;->printMessage(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;)V │ │ - .line 312 │ + .line 315 │ return-void │ .end method │ │ .method protected getPackageName(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String; │ .locals 1 │ .param p1, "type" # Ljavax/lang/model/element/TypeElement; │ │ .prologue │ - .line 315 │ + .line 318 │ iget-object v0, p0, Lbutterknife/internal/InjectViewProcessor;->elementUtils:Ljavax/lang/model/util/Elements; │ │ invoke-interface {v0, p1}, Ljavax/lang/model/util/Elements;->getPackageOf(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/PackageElement; │ │ move-result-object v0 │ │ invoke-interface {v0}, Ljavax/lang/model/element/PackageElement;->getQualifiedName()Ljavax/lang/model/element/Name; │ @@ -1563,62 +1552,62 @@ │ return-object v0 │ .end method │ │ .method public getSupportedSourceVersion()Ljavax/lang/model/SourceVersion; │ .locals 1 │ │ .prologue │ - .line 307 │ + .line 310 │ invoke-static {}, Ljavax/lang/model/SourceVersion;->latestSupported()Ljavax/lang/model/SourceVersion; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ .method public declared-synchronized init(Ljavax/annotation/processing/ProcessingEnvironment;)V │ .locals 1 │ .param p1, "env" # Ljavax/annotation/processing/ProcessingEnvironment; │ │ .prologue │ - .line 49 │ + .line 52 │ monitor-enter p0 │ │ :try_start_0 │ invoke-super {p0, p1}, Ljavax/annotation/processing/AbstractProcessor;->init(Ljavax/annotation/processing/ProcessingEnvironment;)V │ │ - .line 51 │ + .line 54 │ invoke-interface {p1}, Ljavax/annotation/processing/ProcessingEnvironment;->getElementUtils()Ljavax/lang/model/util/Elements; │ │ move-result-object v0 │ │ iput-object v0, p0, Lbutterknife/internal/InjectViewProcessor;->elementUtils:Ljavax/lang/model/util/Elements; │ │ - .line 52 │ + .line 55 │ invoke-interface {p1}, Ljavax/annotation/processing/ProcessingEnvironment;->getTypeUtils()Ljavax/lang/model/util/Types; │ │ move-result-object v0 │ │ iput-object v0, p0, Lbutterknife/internal/InjectViewProcessor;->typeUtils:Ljavax/lang/model/util/Types; │ │ - .line 53 │ + .line 56 │ invoke-interface {p1}, Ljavax/annotation/processing/ProcessingEnvironment;->getFiler()Ljavax/annotation/processing/Filer; │ │ move-result-object v0 │ │ iput-object v0, p0, Lbutterknife/internal/InjectViewProcessor;->filer:Ljavax/annotation/processing/Filer; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ - .line 54 │ + .line 57 │ monitor-exit p0 │ │ return-void │ │ - .line 49 │ + .line 52 │ :catchall_0 │ move-exception v0 │ │ monitor-exit p0 │ │ throw v0 │ .end method │ @@ -1635,138 +1624,137 @@ │ ">;", │ "Ljavax/annotation/processing/RoundEnvironment;", │ ")Z" │ } │ .end annotation │ │ .prologue │ - .line 57 │ + .line 60 │ .local p1, "elements":Ljava/util/Set;, "Ljava/util/Set<+Ljavax/lang/model/element/TypeElement;>;" │ invoke-direct {p0, p2}, Lbutterknife/internal/InjectViewProcessor;->findAndParseTargets(Ljavax/annotation/processing/RoundEnvironment;)Ljava/util/Map; │ │ - move-result-object v5 │ + move-result-object v4 │ │ - .line 59 │ - .local v5, "targetClassMap":Ljava/util/Map;, "Ljava/util/Map;" │ - invoke-interface {v5}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ + .line 62 │ + .local v4, "targetClassMap":Ljava/util/Map;, "Ljava/util/Map;" │ + invoke-interface {v4}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ │ - move-result-object v8 │ + move-result-object v7 │ │ - invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ + invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ │ - move-result-object v2 │ + move-result-object v7 │ │ - .local v2, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z │ │ move-result v8 │ │ if-eqz v8, :cond_0 │ │ - invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljava/util/Map$Entry; │ │ - .line 60 │ + .line 63 │ .local v1, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;" │ invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - check-cast v6, Ljavax/lang/model/element/TypeElement; │ + check-cast v5, Ljavax/lang/model/element/TypeElement; │ │ - .line 61 │ - .local v6, "typeElement":Ljavax/lang/model/element/TypeElement; │ + .line 64 │ + .local v5, "typeElement":Ljavax/lang/model/element/TypeElement; │ invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ │ - move-result-object v4 │ + move-result-object v3 │ │ - check-cast v4, Lbutterknife/internal/TargetClass; │ + check-cast v3, Lbutterknife/internal/TargetClass; │ │ - .line 65 │ - .local v4, "targetClass":Lbutterknife/internal/TargetClass; │ + .line 68 │ + .local v3, "targetClass":Lbutterknife/internal/TargetClass; │ :try_start_0 │ iget-object v8, p0, Lbutterknife/internal/InjectViewProcessor;->filer:Ljavax/annotation/processing/Filer; │ │ - invoke-virtual {v4}, Lbutterknife/internal/TargetClass;->getFqcn()Ljava/lang/String; │ + invoke-virtual {v3}, Lbutterknife/internal/TargetClass;->getFqcn()Ljava/lang/String; │ │ move-result-object v9 │ │ const/4 v10, 0x1 │ │ new-array v10, v10, [Ljavax/lang/model/element/Element; │ │ const/4 v11, 0x0 │ │ - aput-object v6, v10, v11 │ + aput-object v5, v10, v11 │ │ invoke-interface {v8, v9, v10}, Ljavax/annotation/processing/Filer;->createSourceFile(Ljava/lang/CharSequence;[Ljavax/lang/model/element/Element;)Ljavax/tools/JavaFileObject; │ │ - move-result-object v3 │ + move-result-object v2 │ │ - .line 66 │ - .local v3, "jfo":Ljavax/tools/JavaFileObject; │ - invoke-interface {v3}, Ljavax/tools/JavaFileObject;->openWriter()Ljava/io/Writer; │ + .line 69 │ + .local v2, "jfo":Ljavax/tools/JavaFileObject; │ + invoke-interface {v2}, Ljavax/tools/JavaFileObject;->openWriter()Ljava/io/Writer; │ │ - move-result-object v7 │ + move-result-object v6 │ │ - .line 67 │ - .local v7, "writer":Ljava/io/Writer; │ - invoke-virtual {v4}, Lbutterknife/internal/TargetClass;->brewJava()Ljava/lang/String; │ + .line 70 │ + .local v6, "writer":Ljava/io/Writer; │ + invoke-virtual {v3}, Lbutterknife/internal/TargetClass;->brewJava()Ljava/lang/String; │ │ move-result-object v8 │ │ - invoke-virtual {v7, v8}, Ljava/io/Writer;->write(Ljava/lang/String;)V │ + invoke-virtual {v6, v8}, Ljava/io/Writer;->write(Ljava/lang/String;)V │ │ - .line 68 │ - invoke-virtual {v7}, Ljava/io/Writer;->flush()V │ + .line 71 │ + invoke-virtual {v6}, Ljava/io/Writer;->flush()V │ │ - .line 69 │ - invoke-virtual {v7}, Ljava/io/Writer;->close()V │ + .line 72 │ + invoke-virtual {v6}, Ljava/io/Writer;->close()V │ :try_end_0 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ │ goto :goto_0 │ │ - .line 70 │ - .end local v3 # "jfo":Ljavax/tools/JavaFileObject; │ - .end local v7 # "writer":Ljava/io/Writer; │ + .line 73 │ + .end local v2 # "jfo":Ljavax/tools/JavaFileObject; │ + .end local v6 # "writer":Ljava/io/Writer; │ :catch_0 │ move-exception v0 │ │ - .line 71 │ + .line 74 │ .local v0, "e":Ljava/io/IOException; │ const-string v8, "Unable to write injector for type %s: %s" │ │ const/4 v9, 0x2 │ │ new-array v9, v9, [Ljava/lang/Object; │ │ const/4 v10, 0x0 │ │ - aput-object v6, v9, v10 │ + aput-object v5, v9, v10 │ │ const/4 v10, 0x1 │ │ invoke-virtual {v0}, Ljava/io/IOException;->getMessage()Ljava/lang/String; │ │ move-result-object v11 │ │ aput-object v11, v9, v10 │ │ - invoke-virtual {p0, v6, v8, v9}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ + invoke-virtual {p0, v5, v8, v9}, Lbutterknife/internal/InjectViewProcessor;->error(Ljavax/lang/model/element/Element;Ljava/lang/String;[Ljava/lang/Object;)V │ │ goto :goto_0 │ │ - .line 75 │ + .line 78 │ .end local v0 # "e":Ljava/io/IOException; │ .end local v1 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry;" │ - .end local v4 # "targetClass":Lbutterknife/internal/TargetClass; │ - .end local v6 # "typeElement":Ljavax/lang/model/element/TypeElement; │ + .end local v3 # "targetClass":Lbutterknife/internal/TargetClass; │ + .end local v5 # "typeElement":Ljavax/lang/model/element/TypeElement; │ :cond_0 │ - const/4 v8, 0x1 │ + const/4 v7, 0x1 │ │ - return v8 │ + return v7 │ .end method ├── res/values/strings.xml │ ├── res/values/strings.xml │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ │ + f50c246e-706f-41af-b839-dcf757166323 │ │ About │ │ Device Frame Generator │ │ - a25abdc3-4f49-4416-b61d-a3645fc6bb45 │ │ 1.1.0 │ │ Device Thumbnail │ │ Designer │ │ Developer │ │ %s chosen. │ │ Device is %1$d by %2$d. Screenshot is %3$d by %4$d. │ │ "Dimensions don't match." ├── res/values/public.xml │ ├── res/values/public.xml │ │ @@ -90,48 +90,48 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ - │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ --- smali/com/crashlytics/android/aC.smali ├── +++ smali/com/crashlytics/android/internal/ac.smali │┄ Files similar despite different names (score: 14, lower is more similar) │ @@ -1,8 +1,8 @@ │ -.class final Lcom/crashlytics/android/aC; │ +.class final Lcom/crashlytics/android/internal/ac; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ .implements Ljava/util/Comparator; │ │ │ @@ -19,29 +19,29 @@ │ │ │ # direct methods │ .method constructor ()V │ .locals 0 │ │ .prologue │ - .line 702 │ + .line 682 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ .method public final synthetic compare(Ljava/lang/Object;Ljava/lang/Object;)I │ .locals 4 │ .param p1, "x0" # Ljava/lang/Object; │ .param p2, "x1" # Ljava/lang/Object; │ │ .prologue │ - .line 702 │ + .line 682 │ check-cast p1, Ljava/io/File; │ │ .end local p1 # "x0":Ljava/lang/Object; │ check-cast p2, Ljava/io/File; │ │ .end local p2 # "x1":Ljava/lang/Object; │ invoke-virtual {p1}, Ljava/io/File;->lastModified()J │ --- smali/com/crashlytics/android/aB.smali ├── +++ smali/com/crashlytics/android/internal/ab.smali │┄ Files similar despite different names (score: 30, lower is more similar) │ @@ -1,8 +1,8 @@ │ -.class final Lcom/crashlytics/android/aB; │ +.class public final Lcom/crashlytics/android/internal/ab; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ │ # static fields │ .field public static final a:Ljava/util/Comparator; │ .annotation system Ldalvik/annotation/Signature; │ @@ -13,59 +13,58 @@ │ ">;" │ } │ .end annotation │ .end field │ │ .field private static b:Ljava/lang/Boolean; │ │ -.field private static c:Ljavax/net/ssl/SSLSocketFactory; │ +.field private static final c:[C │ │ -.field private static final d:Ljava/util/concurrent/locks/ReentrantLock; │ +.field private static d:J │ │ -.field private static final e:[C │ +.field private static e:Ljava/lang/Boolean; │ │ │ # direct methods │ .method static constructor ()V │ - .locals 1 │ + .locals 3 │ │ .prologue │ - .line 77 │ - const/4 v0, 0x0 │ - │ - sput-object v0, Lcom/crashlytics/android/aB;->b:Ljava/lang/Boolean; │ - │ - .line 83 │ - new-instance v0, Ljava/util/concurrent/locks/ReentrantLock; │ - │ - invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantLock;->()V │ + const/4 v2, 0x0 │ │ - sput-object v0, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ + .line 77 │ + sput-object v2, Lcom/crashlytics/android/internal/ab;->b:Ljava/lang/Boolean; │ │ - .line 85 │ + .line 86 │ const/16 v0, 0x10 │ │ new-array v0, v0, [C │ │ fill-array-data v0, :array_0 │ │ - sput-object v0, Lcom/crashlytics/android/aB;->e:[C │ + sput-object v0, Lcom/crashlytics/android/internal/ab;->c:[C │ │ - .line 702 │ - new-instance v0, Lcom/crashlytics/android/aC; │ + .line 98 │ + const-wide/16 v0, -0x1 │ │ - invoke-direct {v0}, Lcom/crashlytics/android/aC;->()V │ + sput-wide v0, Lcom/crashlytics/android/internal/ab;->d:J │ │ - sput-object v0, Lcom/crashlytics/android/aB;->a:Ljava/util/Comparator; │ + .line 441 │ + sput-object v2, Lcom/crashlytics/android/internal/ab;->e:Ljava/lang/Boolean; │ │ - return-void │ + .line 682 │ + new-instance v0, Lcom/crashlytics/android/internal/ac; │ + │ + invoke-direct {v0}, Lcom/crashlytics/android/internal/ac;->()V │ │ - .line 85 │ - nop │ + sput-object v0, Lcom/crashlytics/android/internal/ab;->a:Ljava/util/Comparator; │ + │ + return-void │ │ + .line 86 │ :array_0 │ .array-data 2 │ 0x30s │ 0x31s │ 0x32s │ 0x33s │ 0x34s │ @@ -83,20 +82,20 @@ │ .end array-data │ .end method │ │ .method public static a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ .locals 3 │ │ .prologue │ - .line 479 │ + .line 514 │ invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ - .line 480 │ + .line 515 │ invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ │ move-result-object v0 │ @@ -130,121 +129,153 @@ │ │ .method public static a(Z)I │ .locals 5 │ │ .prologue │ const-wide v3, 0x4058c00000000000L # 99.0 │ │ - .line 559 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ + .line 594 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->b(Landroid/content/Context;)F │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->b(Landroid/content/Context;)F │ │ move-result v0 │ │ - .line 561 │ + .line 596 │ if-nez p0, :cond_0 │ │ - .line 562 │ + .line 597 │ const/4 v0, 0x1 │ │ - .line 573 │ + .line 608 │ :goto_0 │ return v0 │ │ - .line 565 │ + .line 600 │ :cond_0 │ if-eqz p0, :cond_1 │ │ float-to-double v1, v0 │ │ cmpl-double v1, v1, v3 │ │ if-ltz v1, :cond_1 │ │ - .line 566 │ + .line 601 │ const/4 v0, 0x3 │ │ goto :goto_0 │ │ - .line 569 │ + .line 604 │ :cond_1 │ if-eqz p0, :cond_2 │ │ float-to-double v0, v0 │ │ cmpg-double v0, v0, v3 │ │ if-gez v0, :cond_2 │ │ - .line 570 │ + .line 605 │ const/4 v0, 0x2 │ │ goto :goto_0 │ │ - .line 573 │ + .line 608 │ :cond_2 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public static a(Landroid/content/Context;)J │ .locals 2 │ │ .prologue │ - .line 330 │ + .line 367 │ new-instance v1, Landroid/app/ActivityManager$MemoryInfo; │ │ invoke-direct {v1}, Landroid/app/ActivityManager$MemoryInfo;->()V │ │ - .line 331 │ + .line 368 │ const-string v0, "activity" │ │ invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/ActivityManager; │ │ invoke-virtual {v0, v1}, Landroid/app/ActivityManager;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V │ │ - .line 332 │ + .line 369 │ iget-wide v0, v1, Landroid/app/ActivityManager$MemoryInfo;->availMem:J │ │ return-wide v0 │ .end method │ │ +.method private static a(Ljava/lang/String;Ljava/lang/String;I)J │ + .locals 4 │ + │ + .prologue │ + .line 227 │ + invoke-virtual {p0, p1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + const/4 v1, 0x0 │ + │ + aget-object v0, v0, v1 │ + │ + invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J │ + │ + move-result-wide v0 │ + │ + int-to-long v2, p2 │ + │ + mul-long/2addr v0, v2 │ + │ + return-wide v0 │ +.end method │ + │ .method public static a(Ljava/lang/String;Landroid/content/Context;)Landroid/app/ActivityManager$RunningAppProcessInfo; │ .locals 4 │ │ .prologue │ - .line 160 │ + .line 232 │ const-string v0, "activity" │ │ invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/ActivityManager; │ │ - .line 161 │ + .line 233 │ invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List; │ │ move-result-object v0 │ │ - .line 162 │ + .line 234 │ const/4 v1, 0x0 │ │ - .line 164 │ + .line 236 │ if-eqz v0, :cond_1 │ │ - .line 165 │ + .line 237 │ invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; │ │ move-result-object v2 │ │ :cond_0 │ invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ │ @@ -254,224 +285,287 @@ │ │ invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/ActivityManager$RunningAppProcessInfo; │ │ - .line 166 │ + .line 238 │ iget-object v3, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->processName:Ljava/lang/String; │ │ invoke-virtual {v3, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v3 │ │ if-eqz v3, :cond_0 │ │ - .line 172 │ + .line 244 │ :goto_0 │ return-object v0 │ │ :cond_1 │ move-object v0, v1 │ │ goto :goto_0 │ .end method │ │ .method public static a()Landroid/content/SharedPreferences; │ .locals 3 │ │ .prologue │ - .line 89 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ + .line 101 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ const-string v1, "com.crashlytics.prefs" │ │ const/4 v2, 0x0 │ │ - invoke-virtual {v0, v1, v2}, Landroid/content/ContextWrapper;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; │ + invoke-virtual {v0, v1, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; │ + │ + move-result-object v0 │ + │ + return-object v0 │ +.end method │ + │ +.method public static a(I)Ljava/lang/String; │ + .locals 5 │ + │ + .prologue │ + .line 748 │ + if-gez p0, :cond_0 │ + │ + .line 749 │ + new-instance v0, Ljava/lang/IllegalArgumentException; │ + │ + const-string v1, "value must be zero or greater" │ + │ + invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + │ + throw v0 │ + │ + .line 753 │ + :cond_0 │ + sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale; │ + │ + const-string v1, "%1$10s" │ + │ + const/4 v2, 0x1 │ + │ + new-array v2, v2, [Ljava/lang/Object; │ + │ + const/4 v3, 0x0 │ + │ + invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + │ + move-result-object v4 │ + │ + aput-object v4, v2, v3 │ + │ + invoke-static {v0, v1, v2}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + const/16 v1, 0x20 │ + │ + const/16 v2, 0x30 │ + │ + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(CC)Ljava/lang/String; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ .method public static a(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 720 │ + .line 700 │ const-string v0, "string" │ │ - invoke-static {p0, p1, v0}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ + invoke-static {p0, p1, v0}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ │ move-result v0 │ │ - .line 722 │ + .line 702 │ if-lez v0, :cond_0 │ │ - .line 723 │ + .line 703 │ invoke-virtual {p0, v0}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ - .line 726 │ + .line 706 │ :goto_0 │ return-object v0 │ │ :cond_0 │ const-string v0, "" │ │ goto :goto_0 │ .end method │ │ .method private static a(Ljava/io/File;Ljava/lang/String;)Ljava/lang/String; │ - .locals 6 │ + .locals 7 │ │ .prologue │ const/4 v0, 0x0 │ │ const/4 v5, 0x1 │ │ - .line 98 │ - .line 99 │ + .line 110 │ + .line 111 │ invoke-virtual {p0}, Ljava/io/File;->exists()Z │ │ move-result v1 │ │ if-eqz v1, :cond_2 │ │ - .line 103 │ + .line 115 │ :try_start_0 │ new-instance v2, Ljava/io/BufferedReader; │ │ new-instance v1, Ljava/io/FileReader; │ │ invoke-direct {v1, p0}, Ljava/io/FileReader;->(Ljava/io/File;)V │ │ const/16 v3, 0x400 │ │ invoke-direct {v2, v1, v3}, Ljava/io/BufferedReader;->(Ljava/io/Reader;I)V │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ - .line 105 │ + .line 117 │ :cond_0 │ :try_start_1 │ invoke-virtual {v2}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; │ │ move-result-object v1 │ │ if-eqz v1, :cond_1 │ │ - .line 106 │ + .line 118 │ const-string v3, "\\s*:\\s*" │ │ invoke-static {v3}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern; │ │ move-result-object v3 │ │ - .line 107 │ + .line 119 │ const/4 v4, 0x2 │ │ invoke-virtual {v3, v1, v4}, Ljava/util/regex/Pattern;->split(Ljava/lang/CharSequence;I)[Ljava/lang/String; │ │ move-result-object v1 │ │ - .line 108 │ + .line 120 │ array-length v3, v1 │ │ if-le v3, v5, :cond_0 │ │ const/4 v3, 0x0 │ │ aget-object v3, v1, v3 │ │ invoke-virtual {v3, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v3 │ │ if-eqz v3, :cond_0 │ │ - .line 109 │ + .line 121 │ const/4 v3, 0x1 │ │ aget-object v0, v1, v3 │ :try_end_1 │ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ │ - .line 117 │ + .line 129 │ :cond_1 │ const-string v1, "Failed to close system file reader." │ │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ │ - .line 120 │ + .line 132 │ :cond_2 │ :goto_0 │ return-object v0 │ │ - .line 114 │ + .line 126 │ :catch_0 │ move-exception v1 │ │ move-object v2, v0 │ │ - .line 115 │ + .line 127 │ :goto_1 │ :try_start_2 │ - new-instance v3, Ljava/lang/StringBuilder; │ - │ - const-string v4, "Error parsing " │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + move-result-object v3 │ │ - invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v3 │ │ - invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + const-string v4, "Crashlytics" │ │ - move-result-object v3 │ + new-instance v5, Ljava/lang/StringBuilder; │ + │ + const-string v6, "Error parsing " │ + │ + invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v5, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + │ + move-result-object v5 │ │ - invoke-static {v3, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + invoke-interface {v3, v4, v5, v1}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ :try_end_2 │ .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ │ - .line 117 │ + .line 129 │ const-string v1, "Failed to close system file reader." │ │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ │ goto :goto_0 │ │ :catchall_0 │ move-exception v1 │ │ move-object v2, v0 │ │ move-object v0, v1 │ │ :goto_2 │ const-string v1, "Failed to close system file reader." │ │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ │ throw v0 │ │ :catchall_1 │ move-exception v0 │ │ goto :goto_2 │ │ - .line 114 │ + .line 126 │ :catch_1 │ move-exception v1 │ │ goto :goto_1 │ .end method │ │ .method public static a(Ljava/io/InputStream;)Ljava/lang/String; │ @@ -479,26 +573,26 @@ │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Ljava/io/IOException; │ } │ .end annotation │ │ .prologue │ - .line 210 │ + .line 251 │ new-instance v0, Ljava/util/Scanner; │ │ invoke-direct {v0, p0}, Ljava/util/Scanner;->(Ljava/io/InputStream;)V │ │ const-string v1, "\\A" │ │ invoke-virtual {v0, v1}, Ljava/util/Scanner;->useDelimiter(Ljava/lang/String;)Ljava/util/Scanner; │ │ move-result-object v0 │ │ - .line 211 │ + .line 252 │ invoke-virtual {v0}, Ljava/util/Scanner;->hasNext()Z │ │ move-result v1 │ │ if-eqz v1, :cond_0 │ │ invoke-virtual {v0}, Ljava/util/Scanner;->next()Ljava/lang/String; │ @@ -514,451 +608,200 @@ │ goto :goto_0 │ .end method │ │ .method public static a(Ljava/lang/String;)Ljava/lang/String; │ .locals 2 │ │ .prologue │ - .line 257 │ + .line 270 │ const-string v0, "SHA-1" │ │ invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v1 │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a([BLjava/lang/String;)Ljava/lang/String; │ + invoke-static {v1, v0}, Lcom/crashlytics/android/internal/ab;->a([BLjava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ -.method public static a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ - .locals 8 │ +.method public static a([B)Ljava/lang/String; │ + .locals 6 │ │ .prologue │ - .line 792 │ - :try_start_0 │ - new-instance v0, Ljava/lang/StringBuffer; │ - │ - new-instance v1, Ljava/lang/String; │ - │ - const/4 v2, 0x3 │ - │ - new-array v2, v2, [C │ - │ - fill-array-data v2, :array_0 │ - │ - invoke-direct {v1, v2}, Ljava/lang/String;->([C)V │ - │ - invoke-direct {v0, v1}, Ljava/lang/StringBuffer;->(Ljava/lang/String;)V │ - │ - .line 797 │ - const-string v1, "\\." │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuffer;->reverse()Ljava/lang/StringBuffer; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1, v1, v0}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - .line 798 │ - const/4 v1, 0x1 │ - │ - new-instance v2, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v2 │ - │ - invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;)Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;)Ljavax/crypto/Cipher; │ - :try_end_0 │ - .catch Ljava/security/GeneralSecurityException; {:try_start_0 .. :try_end_0} :catch_1 │ - │ - move-result-object v2 │ - │ - .line 804 │ - new-instance v3, Lorg/json/JSONObject; │ - │ - invoke-direct {v3}, Lorg/json/JSONObject;->()V │ - │ - .line 806 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->c()Lcom/crashlytics/android/IdManager; │ - │ - move-result-object v4 │ - │ - .line 808 │ - :try_start_1 │ - const-string v0, "APPLICATION_INSTALLATION_UUID" │ - │ - invoke-virtual {v0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; │ - │ - move-result-object v0 │ + .line 643 │ + array-length v0, p0 │ │ - invoke-virtual {v4}, Lcom/crashlytics/android/IdManager;->b()Ljava/lang/String; │ + shl-int/lit8 v0, v0, 0x1 │ │ - move-result-object v1 │ + new-array v1, v0, [C │ │ - invoke-virtual {v3, v0, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ - :try_end_1 │ - .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_2 │ + .line 645 │ + const/4 v0, 0x0 │ │ - .line 814 │ :goto_0 │ - invoke-virtual {v4}, Lcom/crashlytics/android/IdManager;->f()Ljava/util/Map; │ - │ - move-result-object v0 │ - │ - invoke-interface {v0}, Ljava/util/Map;->entrySet()Ljava/util/Set; │ - │ - move-result-object v0 │ - │ - invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ - │ - move-result-object v5 │ - │ - :goto_1 │ - invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ - │ - invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - check-cast v0, Ljava/util/Map$Entry; │ - │ - .line 816 │ - :try_start_2 │ - invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v1 │ - │ - check-cast v1, Lcom/crashlytics/android/IdManager$DeviceIdentifierType; │ - │ - invoke-virtual {v1}, Lcom/crashlytics/android/IdManager$DeviceIdentifierType;->name()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; │ - │ - move-result-object v6 │ - │ - invoke-virtual {v3, v1, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ - │ - goto :goto_1 │ - │ - .line 817 │ - :catch_0 │ - move-exception v1 │ - │ - .line 818 │ - new-instance v6, Ljava/lang/StringBuilder; │ - │ - const-string v7, "Could not write value to JSON: " │ - │ - invoke-direct {v6, v7}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; │ - │ - move-result-object v0 │ - │ - check-cast v0, Lcom/crashlytics/android/IdManager$DeviceIdentifierType; │ - │ - invoke-virtual {v0}, Lcom/crashlytics/android/IdManager$DeviceIdentifierType;->name()Ljava/lang/String; │ + array-length v2, p0 │ │ - move-result-object v0 │ + if-ge v0, v2, :cond_0 │ │ - invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + .line 646 │ + aget-byte v2, p0, v0 │ │ - move-result-object v0 │ + and-int/lit16 v2, v2, 0xff │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + .line 647 │ + shl-int/lit8 v3, v0, 0x1 │ │ - move-result-object v0 │ + sget-object v4, Lcom/crashlytics/android/internal/ab;->c:[C │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + ushr-int/lit8 v5, v2, 0x4 │ │ - goto :goto_1 │ + aget-char v4, v4, v5 │ │ - .line 799 │ - :catch_1 │ - move-exception v0 │ + aput-char v4, v1, v3 │ │ - .line 801 │ - const-string v1, "Could not create cipher to encrypt headers." │ + .line 648 │ + shl-int/lit8 v3, v0, 0x1 │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + add-int/lit8 v3, v3, 0x1 │ │ - .line 802 │ - const-string v0, "" │ + sget-object v4, Lcom/crashlytics/android/internal/ab;->c:[C │ │ - .line 845 │ - :cond_0 │ - :goto_2 │ - return-object v0 │ + and-int/lit8 v2, v2, 0xf │ │ - .line 809 │ - :catch_2 │ - move-exception v0 │ + aget-char v2, v4, v2 │ │ - .line 810 │ - const-string v1, "Could not write application id to JSON" │ + aput-char v2, v1, v3 │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + .line 645 │ + add-int/lit8 v0, v0, 0x1 │ │ goto :goto_0 │ │ - .line 824 │ - :cond_1 │ - :try_start_3 │ - const-string v0, "os_version" │ - │ - invoke-virtual {v4}, Lcom/crashlytics/android/IdManager;->c()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v3, v0, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ - :try_end_3 │ - .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_3 │ - │ - .line 831 │ - :goto_3 │ - :try_start_4 │ - const-string v0, "model" │ - │ - invoke-virtual {v4}, Lcom/crashlytics/android/IdManager;->d()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v3, v0, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ - :try_end_4 │ - .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_4 │ - │ - .line 837 │ - :goto_4 │ - const-string v0, "" │ - │ - .line 838 │ - invoke-virtual {v3}, Lorg/json/JSONObject;->length()I │ - │ - move-result v1 │ - │ - if-lez v1, :cond_0 │ - │ - .line 840 │ - :try_start_5 │ - invoke-virtual {v3}, Lorg/json/JSONObject;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/String;->getBytes()[B │ - │ - move-result-object v1 │ - │ - invoke-virtual {v2, v1}, Ljavax/crypto/Cipher;->doFinal([B)[B │ - │ - move-result-object v1 │ - │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->b([B)Ljava/lang/String; │ - :try_end_5 │ - .catch Ljava/security/GeneralSecurityException; {:try_start_5 .. :try_end_5} :catch_5 │ - │ - move-result-object v0 │ - │ - goto :goto_2 │ - │ - .line 825 │ - :catch_3 │ - move-exception v0 │ - │ - .line 826 │ - const-string v1, "Could not write OS version to JSON" │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_3 │ - │ - .line 832 │ - :catch_4 │ - move-exception v0 │ - │ - .line 833 │ - const-string v1, "Could not write model to JSON" │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_4 │ - │ - .line 841 │ - :catch_5 │ - move-exception v1 │ - │ - .line 842 │ - const-string v2, "Could not encrypt IDs" │ - │ - invoke-static {v2, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_2 │ - │ - .line 792 │ - :array_0 │ - .array-data 2 │ - 0x73s │ - 0x6cs │ - 0x63s │ - .end array-data │ -.end method │ - │ -.method public static a([B)Ljava/lang/String; │ - .locals 1 │ - │ - .prologue │ - .line 253 │ - const-string v0, "MD5" │ - │ - invoke-static {p0, v0}, Lcom/crashlytics/android/aB;->a([BLjava/lang/String;)Ljava/lang/String; │ + .line 650 │ + :cond_0 │ + new-instance v0, Ljava/lang/String; │ │ - move-result-object v0 │ + invoke-direct {v0, v1}, Ljava/lang/String;->([C)V │ │ return-object v0 │ .end method │ │ .method private static a([BLjava/lang/String;)Ljava/lang/String; │ - .locals 3 │ + .locals 5 │ │ .prologue │ - .line 265 │ + .line 302 │ :try_start_0 │ invoke-static {p1}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ - .line 277 │ + .line 314 │ invoke-virtual {v0, p0}, Ljava/security/MessageDigest;->update([B)V │ │ - .line 279 │ + .line 316 │ invoke-virtual {v0}, Ljava/security/MessageDigest;->digest()[B │ │ move-result-object v0 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->b([B)Ljava/lang/String; │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->a([B)Ljava/lang/String; │ │ move-result-object v0 │ │ :goto_0 │ return-object v0 │ │ - .line 269 │ + .line 306 │ :catch_0 │ move-exception v0 │ │ - .line 270 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "Could not create hashing algorithm: " │ + .line 307 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + move-result-object v1 │ │ - invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v1 │ │ - const-string v2, ", returning empty string." │ + const-string v2, "Crashlytics" │ │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + new-instance v3, Ljava/lang/StringBuilder; │ │ - move-result-object v1 │ + const-string v4, "Could not create hashing algorithm: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v1 │ + move-result-object v3 │ + │ + const-string v4, ", returning empty string." │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - .line 271 │ + .line 308 │ const-string v0, "" │ │ goto :goto_0 │ .end method │ │ .method public static varargs a([Ljava/lang/String;)Ljava/lang/String; │ .locals 7 │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 292 │ + .line 329 │ if-eqz p0, :cond_0 │ │ array-length v0, p0 │ │ if-nez v0, :cond_1 │ │ :cond_0 │ move-object v0, v1 │ │ - .line 320 │ + .line 357 │ :goto_0 │ return-object v0 │ │ - .line 297 │ + .line 334 │ :cond_1 │ new-instance v2, Ljava/util/ArrayList; │ │ invoke-direct {v2}, Ljava/util/ArrayList;->()V │ │ - .line 299 │ + .line 336 │ array-length v3, p0 │ │ const/4 v0, 0x0 │ │ :goto_1 │ if-ge v0, v3, :cond_3 │ │ aget-object v4, p0, v0 │ │ - .line 301 │ + .line 338 │ if-eqz v4, :cond_2 │ │ - .line 303 │ + .line 340 │ const-string v5, "-" │ │ const-string v6, "" │ │ invoke-virtual {v4, v5, v6}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ │ move-result-object v4 │ @@ -967,30 +810,30 @@ │ │ invoke-virtual {v4, v5}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String; │ │ move-result-object v4 │ │ invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ - .line 299 │ + .line 336 │ :cond_2 │ add-int/lit8 v0, v0, 0x1 │ │ goto :goto_1 │ │ - .line 308 │ + .line 345 │ :cond_3 │ invoke-static {v2}, Ljava/util/Collections;->sort(Ljava/util/List;)V │ │ - .line 311 │ + .line 348 │ new-instance v3, Ljava/lang/StringBuilder; │ │ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ │ - .line 312 │ + .line 349 │ invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator; │ │ move-result-object v2 │ │ :goto_2 │ invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ │ @@ -1000,1225 +843,933 @@ │ │ invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/String; │ │ - .line 313 │ + .line 350 │ invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ goto :goto_2 │ │ - .line 316 │ + .line 353 │ :cond_4 │ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ - .line 320 │ + .line 357 │ invoke-virtual {v0}, Ljava/lang/String;->length()I │ │ move-result v2 │ │ if-lez v2, :cond_5 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;)Ljava/lang/String; │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->a(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ goto :goto_0 │ │ :cond_5 │ move-object v0, v1 │ │ goto :goto_0 │ .end method │ │ -.method private static a(ILjava/lang/String;)Ljavax/crypto/Cipher; │ - .locals 5 │ - .annotation system Ldalvik/annotation/Throws; │ - value = { │ - Ljava/security/InvalidKeyException; │ - } │ - .end annotation │ +.method public static a(ILjava/lang/String;)V │ + .locals 3 │ │ .prologue │ - const/16 v4, 0x20 │ - │ - .line 589 │ - invoke-virtual {p1}, Ljava/lang/String;->length()I │ - │ - move-result v0 │ - │ - if-ge v0, v4, :cond_0 │ - │ - .line 590 │ - new-instance v0, Ljava/security/InvalidKeyException; │ - │ - const-string v1, "Key must be at least 32 bytes." │ - │ - invoke-direct {v0, v1}, Ljava/security/InvalidKeyException;->(Ljava/lang/String;)V │ - │ - throw v0 │ - │ - .line 592 │ - :cond_0 │ - new-instance v0, Ljavax/crypto/spec/SecretKeySpec; │ + .line 435 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B │ - │ - move-result-object v1 │ - │ - const/4 v2, 0x0 │ - │ - const-string v3, "AES/ECB/PKCS7Padding" │ - │ - invoke-direct {v0, v1, v2, v4, v3}, Ljavax/crypto/spec/SecretKeySpec;->([BIILjava/lang/String;)V │ - │ - .line 593 │ - :try_start_0 │ - const-string v1, "AES/ECB/PKCS7Padding" │ - │ - invoke-static {v1}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher; │ - :try_end_0 │ - .catch Ljava/security/GeneralSecurityException; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - move-result-object v1 │ - │ - .line 602 │ - const/4 v2, 0x1 │ - │ - invoke-virtual {v1, v2, v0}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V │ - │ - .line 603 │ - return-object v1 │ - │ - .line 596 │ - :catch_0 │ - move-exception v0 │ - │ - .line 597 │ - const-string v1, "Could not create Cipher for AES/ECB/PKCS7Padding - should never happen." │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - .line 600 │ - new-instance v1, Ljava/lang/RuntimeException; │ - │ - invoke-direct {v1, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/Throwable;)V │ - │ - throw v1 │ -.end method │ - │ -.method public static a(Lcom/crashlytics/android/PinningInfoProvider;)Ljavax/net/ssl/SSLSocketFactory; │ - .locals 5 │ + move-result-object v0 │ │ - .prologue │ - .line 641 │ - sget-object v0, Lcom/crashlytics/android/aB;->c:Ljavax/net/ssl/SSLSocketFactory; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ │ - if-nez v0, :cond_1 │ - │ - .line 642 │ - sget-object v0, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ + move-result-object v0 │ │ - invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->e(Landroid/content/Context;)Z │ │ - .line 643 │ - sget-object v0, Lcom/crashlytics/android/aB;->c:Ljavax/net/ssl/SSLSocketFactory; │ + move-result v0 │ │ if-eqz v0, :cond_0 │ │ - .line 644 │ - sget-object v0, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ - │ - .line 645 │ - sget-object v0, Lcom/crashlytics/android/aB;->c:Ljavax/net/ssl/SSLSocketFactory; │ - │ - .line 663 │ - :goto_0 │ - return-object v0 │ - │ - .line 649 │ - :cond_0 │ - :try_start_0 │ - const-string v0, "TLS" │ - │ - invoke-static {v0}, Ljavax/net/ssl/SSLContext;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext; │ + .line 436 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - .line 650 │ - new-instance v1, Lcom/crashlytics/android/az; │ - │ - invoke-interface {p0}, Lcom/crashlytics/android/PinningInfoProvider;->getKeyStoreStream()Ljava/io/InputStream; │ - │ - move-result-object v2 │ - │ - invoke-interface {p0}, Lcom/crashlytics/android/PinningInfoProvider;->getKeyStorePassword()Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-direct {v1, v2, v3}, Lcom/crashlytics/android/az;->(Ljava/io/InputStream;Ljava/lang/String;)V │ - │ - .line 652 │ - new-instance v2, Lcom/crashlytics/android/al; │ - │ - invoke-interface {p0}, Lcom/crashlytics/android/PinningInfoProvider;->getPins()[Ljava/lang/String; │ - │ - move-result-object v3 │ - │ - invoke-direct {v2, v1, v3}, Lcom/crashlytics/android/al;->(Lcom/crashlytics/android/az;[Ljava/lang/String;)V │ - │ - .line 653 │ - const/4 v1, 0x0 │ - │ - const/4 v3, 0x1 │ - │ - new-array v3, v3, [Ljavax/net/ssl/TrustManager; │ - │ - const/4 v4, 0x0 │ - │ - aput-object v2, v3, v4 │ - │ - const/4 v2, 0x0 │ - │ - invoke-virtual {v0, v1, v3, v2}, Ljavax/net/ssl/SSLContext;->init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V │ - │ - .line 654 │ - invoke-virtual {v0}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v0 │ │ - sput-object v0, Lcom/crashlytics/android/aB;->c:Ljavax/net/ssl/SSLSocketFactory; │ - │ - .line 656 │ - const-string v0, "Custom SSL pinning enabled" │ - │ - const/4 v1, 0x3 │ + const/4 v1, 0x4 │ │ const-string v2, "Crashlytics" │ │ - invoke-static {v1, v2, v0}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ - │ - .line 660 │ - sget-object v0, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ - │ - .line 663 │ - :cond_1 │ - :goto_1 │ - sget-object v0, Lcom/crashlytics/android/aB;->c:Ljavax/net/ssl/SSLSocketFactory; │ - │ - goto :goto_0 │ - │ - .line 657 │ - :catch_0 │ - move-exception v0 │ - │ - .line 658 │ - :try_start_1 │ - const-string v1, "Exception while validating pinned certs" │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + invoke-interface {v0, v1, v2, p1}, Lcom/crashlytics/android/internal/q;->a(ILjava/lang/String;Ljava/lang/String;)V │ │ - .line 660 │ - sget-object v0, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ - │ - invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ - │ - goto :goto_1 │ - │ - :catchall_0 │ - move-exception v0 │ - │ - sget-object v1, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ - │ - invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ - │ - throw v0 │ -.end method │ - │ -.method public static a(ILjava/lang/String;Ljava/lang/String;)V │ - .locals 1 │ - │ - .prologue │ - .line 385 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->e(Landroid/content/Context;)Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_0 │ - │ - invoke-static {p0}, Lcom/crashlytics/android/aB;->d(I)Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_0 │ - │ - .line 386 │ - invoke-static {p0, p1, p2}, Landroid/util/Log;->println(ILjava/lang/String;Ljava/lang/String;)I │ - │ - .line 388 │ + .line 438 │ :cond_0 │ return-void │ .end method │ │ .method public static a(Ljava/io/Closeable;Ljava/lang/String;)V │ - .locals 1 │ + .locals 3 │ │ .prologue │ - .line 736 │ + .line 716 │ if-eqz p0, :cond_0 │ │ - .line 738 │ + .line 718 │ :try_start_0 │ invoke-interface {p0}, Ljava/io/Closeable;->close()V │ :try_end_0 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 743 │ + .line 723 │ :cond_0 │ :goto_0 │ return-void │ │ - .line 739 │ + .line 719 │ :catch_0 │ move-exception v0 │ │ - .line 740 │ - invoke-static {p1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ -.end method │ - │ -.method public static a(Ljava/io/File;Ljava/io/FilenameFilter;ILjava/util/Comparator;)V │ - .locals 5 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "(", │ - "Ljava/io/File;", │ - "Ljava/io/FilenameFilter;", │ - "I", │ - "Ljava/util/Comparator", │ - "<", │ - "Ljava/io/File;", │ - ">;)V" │ - } │ - .end annotation │ - │ - .prologue │ - .line 682 │ - invoke-virtual {p0, p1}, Ljava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; │ - │ - move-result-object v2 │ - │ - .line 683 │ - if-eqz v2, :cond_0 │ - │ - array-length v0, v2 │ - │ - if-le v0, p2, :cond_0 │ - │ - .line 685 │ - invoke-static {v2, p3}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V │ - │ - .line 686 │ - array-length v1, v2 │ - │ - .line 687 │ - array-length v3, v2 │ - │ - const/4 v0, 0x0 │ - │ - :goto_0 │ - if-ge v0, v3, :cond_0 │ - │ - aget-object v4, v2, v0 │ + .line 720 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - .line 689 │ - if-gt v1, p2, :cond_1 │ + move-result-object v1 │ │ - .line 696 │ - :cond_0 │ - return-void │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - .line 692 │ - :cond_1 │ - invoke-virtual {v4}, Ljava/io/File;->delete()Z │ + move-result-object v1 │ │ - .line 693 │ - add-int/lit8 v1, v1, -0x1 │ + const-string v2, "Crashlytics" │ │ - .line 687 │ - add-int/lit8 v0, v0, 0x1 │ + invoke-interface {v1, v2, p1, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ goto :goto_0 │ .end method │ │ .method public static a(Ljava/io/Flushable;Ljava/lang/String;)V │ - .locals 1 │ + .locals 3 │ │ .prologue │ - .line 746 │ + .line 726 │ if-eqz p0, :cond_0 │ │ - .line 748 │ + .line 728 │ :try_start_0 │ invoke-interface {p0}, Ljava/io/Flushable;->flush()V │ :try_end_0 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 753 │ + .line 733 │ :cond_0 │ :goto_0 │ return-void │ │ - .line 749 │ + .line 729 │ :catch_0 │ move-exception v0 │ │ - .line 750 │ - invoke-static {p1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - goto :goto_0 │ -.end method │ - │ -.method public static a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - .locals 2 │ - │ - .prologue │ - .line 402 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ - │ - move-result-object v0 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->e(Landroid/content/Context;)Z │ - │ - move-result v0 │ - │ - if-nez v0, :cond_0 │ - │ - const/4 v0, 0x6 │ - │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->d(I)Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_0 │ - │ - .line 403 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->getInstance()Lcom/crashlytics/android/Crashlytics; │ - │ - move-result-object v0 │ - │ - invoke-virtual {v0}, Lcom/crashlytics/android/Crashlytics;->getDebugMode()Z │ - │ - move-result v0 │ - │ - if-eqz v0, :cond_1 │ - │ - .line 404 │ - const-string v0, "Crashlytics" │ - │ - invoke-static {v0, p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ - │ - .line 412 │ - :cond_0 │ - :goto_0 │ - return-void │ - │ - .line 406 │ - :cond_1 │ - if-eqz p1, :cond_2 │ - │ - .line 407 │ - new-instance v0, Ljava/lang/StringBuilder; │ - │ - invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ - │ - invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v1, "; [" │ - │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ + .line 730 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v1 │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v1, ": " │ - │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - invoke-virtual {p1}, Ljava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v1 │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + const-string v2, "Crashlytics" │ │ - move-result-object v0 │ + invoke-interface {v1, v2, p1, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ │ - const-string v1, "]" │ + goto :goto_0 │ +.end method │ │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ +.method public static a(Ljava/io/InputStream;Ljava/io/OutputStream;[B)V │ + .locals 2 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/io/IOException; │ + } │ + .end annotation │ │ - move-result-object v0 │ + .prologue │ + .line 795 │ + :goto_0 │ + invoke-virtual {p0, p2}, Ljava/io/InputStream;->read([B)I │ │ - invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + move-result v0 │ │ - move-result-object p0 │ + const/4 v1, -0x1 │ │ - .line 409 │ - :cond_2 │ - const-string v0, "Crashlytics" │ + if-eq v0, v1, :cond_0 │ │ + .line 796 │ const/4 v1, 0x0 │ │ - invoke-static {v0, p0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + invoke-virtual {p1, p2, v1, v0}, Ljava/io/OutputStream;->write([BII)V │ │ goto :goto_0 │ + │ + .line 798 │ + :cond_0 │ + return-void │ .end method │ │ .method public static a(Landroid/content/Context;Ljava/lang/String;Z)Z │ .locals 2 │ │ .prologue │ - .line 457 │ + .line 492 │ if-eqz p0, :cond_0 │ │ - .line 458 │ + .line 493 │ invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ - .line 460 │ + .line 495 │ if-eqz v0, :cond_0 │ │ - .line 461 │ + .line 496 │ const-string v1, "bool" │ │ - invoke-static {p0, p1, v1}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ + invoke-static {p0, p1, v1}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ │ move-result v1 │ │ - .line 463 │ + .line 498 │ if-lez v1, :cond_1 │ │ - .line 464 │ + .line 499 │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getBoolean(I)Z │ │ move-result p2 │ │ - .line 475 │ + .line 510 │ :cond_0 │ :goto_0 │ return p2 │ │ - .line 467 │ + .line 502 │ :cond_1 │ const-string v0, "string" │ │ - invoke-static {p0, p1, v0}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ + invoke-static {p0, p1, v0}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ │ move-result v0 │ │ - .line 469 │ + .line 504 │ if-lez v0, :cond_0 │ │ - .line 470 │ + .line 505 │ invoke-virtual {p0, v0}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {v0}, Ljava/lang/Boolean;->parseBoolean(Ljava/lang/String;)Z │ │ move-result p2 │ │ goto :goto_0 │ .end method │ │ -.method public static a(Landroid/graphics/Bitmap;)[B │ - .locals 3 │ - │ - .prologue │ - .line 577 │ - new-instance v0, Ljava/io/ByteArrayOutputStream; │ - │ - invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;->()V │ - │ - .line 578 │ - sget-object v1, Landroid/graphics/Bitmap$CompressFormat;->PNG:Landroid/graphics/Bitmap$CompressFormat; │ - │ - const/16 v2, 0x64 │ - │ - invoke-virtual {p0, v1, v2, v0}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z │ - │ - .line 580 │ - invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B │ - │ - move-result-object v0 │ - │ - return-object v0 │ -.end method │ - │ -.method public static a(I)[Ljava/lang/Object; │ - .locals 4 │ - │ - .prologue │ - .line 226 │ - :try_start_0 │ - invoke-static {p0}, Lcom/crashlytics/android/aB;->c(I)[Ljava/lang/String; │ - │ - move-result-object v0 │ - │ - .line 227 │ - if-eqz v0, :cond_0 │ - │ - .line 228 │ - const/4 v1, 0x2 │ - │ - aget-object v0, v0, v1 │ - │ - invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I │ - │ - move-result v1 │ - │ - .line 230 │ - invoke-static {v1}, Lcom/crashlytics/android/aB;->c(I)[Ljava/lang/String; │ - │ - move-result-object v2 │ - │ - .line 233 │ - const/4 v0, 0x2 │ - │ - new-array v0, v0, [Ljava/lang/Object; │ - │ - const/4 v3, 0x0 │ - │ - invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ - │ - move-result-object v1 │ - │ - aput-object v1, v0, v3 │ - │ - const/4 v1, 0x1 │ - │ - array-length v3, v2 │ - │ - add-int/lit8 v3, v3, -0x1 │ - │ - aget-object v2, v2, v3 │ - │ - aput-object v2, v0, v1 │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - │ - .line 239 │ - :goto_0 │ - return-object v0 │ - │ - .line 235 │ - :catch_0 │ - move-exception v0 │ - │ - .line 237 │ - const-string v1, "createProcBuilder() error getting parent process info" │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - │ - .line 239 │ - :cond_0 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ -.end method │ - │ .method public static b(Landroid/content/Context;)F │ .locals 4 │ │ .prologue │ const/4 v3, -0x1 │ │ - .line 351 │ + .line 389 │ new-instance v0, Landroid/content/IntentFilter; │ │ const-string v1, "android.intent.action.BATTERY_CHANGED" │ │ invoke-direct {v0, v1}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V │ │ - .line 352 │ + .line 390 │ const/4 v1, 0x0 │ │ invoke-virtual {p0, v1, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; │ │ move-result-object v0 │ │ - .line 354 │ + .line 392 │ const-string v1, "level" │ │ invoke-virtual {v0, v1, v3}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I │ │ move-result v1 │ │ - .line 355 │ + .line 393 │ const-string v2, "scale" │ │ invoke-virtual {v0, v2, v3}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I │ │ move-result v0 │ │ - .line 357 │ + .line 395 │ int-to-float v1, v1 │ │ int-to-float v0, v0 │ │ div-float v0, v1, v0 │ │ return v0 │ .end method │ │ +.method public static b()I │ + .locals 1 │ + │ + .prologue │ + .line 140 │ + invoke-static {}, Lcom/crashlytics/android/internal/ad;->a()Lcom/crashlytics/android/internal/ad; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/ad;->ordinal()I │ + │ + move-result v0 │ + │ + return v0 │ +.end method │ + │ .method public static b(Ljava/lang/String;)J │ .locals 7 │ │ .prologue │ - .line 342 │ + .line 380 │ new-instance v0, Landroid/os/StatFs; │ │ invoke-direct {v0, p0}, Landroid/os/StatFs;->(Ljava/lang/String;)V │ │ - .line 343 │ + .line 381 │ invoke-virtual {v0}, Landroid/os/StatFs;->getBlockSize()I │ │ move-result v1 │ │ int-to-long v1, v1 │ │ - .line 344 │ + .line 382 │ invoke-virtual {v0}, Landroid/os/StatFs;->getBlockCount()I │ │ move-result v3 │ │ int-to-long v3, v3 │ │ mul-long/2addr v3, v1 │ │ - .line 345 │ + .line 383 │ invoke-virtual {v0}, Landroid/os/StatFs;->getAvailableBlocks()I │ │ move-result v0 │ │ int-to-long v5, v0 │ │ mul-long v0, v1, v5 │ │ - .line 346 │ + .line 384 │ sub-long v0, v3, v0 │ │ return-wide v0 │ .end method │ │ -.method public static b()Ljava/lang/String; │ - .locals 2 │ +.method public static b(I)Ljava/lang/String; │ + .locals 1 │ │ .prologue │ - .line 130 │ - new-instance v0, Ljava/io/File; │ + .line 801 │ + packed-switch p0, :pswitch_data_0 │ │ - const-string v1, "/proc/cpuinfo" │ + .line 815 │ + const-string v0, "?" │ │ - invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V │ + :goto_0 │ + return-object v0 │ │ - const-string v1, "Processor" │ + .line 803 │ + :pswitch_0 │ + const-string v0, "A" │ │ - invoke-static {v0, v1}, Lcom/crashlytics/android/aB;->a(Ljava/io/File;Ljava/lang/String;)Ljava/lang/String; │ + goto :goto_0 │ │ - move-result-object v0 │ + .line 805 │ + :pswitch_1 │ + const-string v0, "D" │ │ - .line 131 │ - if-eqz v0, :cond_0 │ + goto :goto_0 │ │ - invoke-virtual {v0}, Ljava/lang/String;->length()I │ + .line 807 │ + :pswitch_2 │ + const-string v0, "E" │ │ - move-result v1 │ + goto :goto_0 │ │ - if-nez v1, :cond_1 │ + .line 809 │ + :pswitch_3 │ + const-string v0, "I" │ │ - :cond_0 │ - const-string v0, "unknown" │ + goto :goto_0 │ │ - :cond_1 │ - return-object v0 │ + .line 811 │ + :pswitch_4 │ + const-string v0, "V" │ + │ + goto :goto_0 │ + │ + .line 813 │ + :pswitch_5 │ + const-string v0, "W" │ + │ + goto :goto_0 │ + │ + .line 801 │ + :pswitch_data_0 │ + .packed-switch 0x2 │ + :pswitch_4 │ + :pswitch_1 │ + :pswitch_3 │ + :pswitch_5 │ + :pswitch_2 │ + :pswitch_0 │ + .end packed-switch │ .end method │ │ -.method public static b(I)Ljava/lang/String; │ +.method private static b(Ljava/io/InputStream;)Ljava/lang/String; │ .locals 4 │ │ .prologue │ - .line 767 │ - if-gez p0, :cond_0 │ + .line 283 │ + :try_start_0 │ + const-string v0, "SHA-1" │ │ - .line 768 │ - new-instance v0, Ljava/lang/IllegalArgumentException; │ + invoke-static {v0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; │ │ - const-string v1, "value must be zero or greater" │ + move-result-object v0 │ │ - invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + .line 285 │ + const/16 v1, 0x400 │ │ - throw v0 │ + new-array v1, v1, [B │ │ - .line 772 │ - :cond_0 │ - const-string v0, "%1$10s" │ + .line 289 │ + :goto_0 │ + invoke-virtual {p0, v1}, Ljava/io/InputStream;->read([B)I │ │ - const/4 v1, 0x1 │ + move-result v2 │ │ - new-array v1, v1, [Ljava/lang/Object; │ + const/4 v3, -0x1 │ │ - const/4 v2, 0x0 │ + if-eq v2, v3, :cond_0 │ │ - invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ + .line 290 │ + const/4 v3, 0x0 │ │ - move-result-object v3 │ + invoke-virtual {v0, v1, v3, v2}, Ljava/security/MessageDigest;->update([BII)V │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ - aput-object v3, v1, v2 │ + goto :goto_0 │ │ - invoke-static {v0, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ + .line 294 │ + :catch_0 │ + move-exception v0 │ │ - move-result-object v0 │ + .line 295 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - const/16 v1, 0x20 │ + move-result-object v1 │ │ - const/16 v2, 0x30 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(CC)Ljava/lang/String; │ + move-result-object v1 │ │ - move-result-object v0 │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Could not calculate hash for app icon." │ │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 298 │ + const-string v0, "" │ + │ + :goto_1 │ return-object v0 │ + │ + .line 293 │ + :cond_0 │ + :try_start_1 │ + invoke-virtual {v0}, Ljava/security/MessageDigest;->digest()[B │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->a([B)Ljava/lang/String; │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 │ + │ + move-result-object v0 │ + │ + goto :goto_1 │ .end method │ │ -.method public static b([B)Ljava/lang/String; │ - .locals 6 │ +.method public static b(ILjava/lang/String;)Ljavax/crypto/Cipher; │ + .locals 5 │ + .annotation system Ldalvik/annotation/Throws; │ + value = { │ + Ljava/security/InvalidKeyException; │ + } │ + .end annotation │ │ .prologue │ - .line 608 │ - array-length v0, p0 │ + const/16 v4, 0x20 │ │ - shl-int/lit8 v0, v0, 0x1 │ + .line 624 │ + invoke-virtual {p1}, Ljava/lang/String;->length()I │ │ - new-array v1, v0, [C │ + move-result v0 │ │ - .line 610 │ - const/4 v0, 0x0 │ + if-ge v0, v4, :cond_0 │ │ - :goto_0 │ - array-length v2, p0 │ + .line 625 │ + new-instance v0, Ljava/security/InvalidKeyException; │ │ - if-ge v0, v2, :cond_0 │ + const-string v1, "Key must be at least 32 bytes." │ │ - .line 611 │ - aget-byte v2, p0, v0 │ + invoke-direct {v0, v1}, Ljava/security/InvalidKeyException;->(Ljava/lang/String;)V │ │ - and-int/lit16 v2, v2, 0xff │ + throw v0 │ │ - .line 612 │ - shl-int/lit8 v3, v0, 0x1 │ + .line 627 │ + :cond_0 │ + new-instance v0, Ljavax/crypto/spec/SecretKeySpec; │ │ - sget-object v4, Lcom/crashlytics/android/aB;->e:[C │ + invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B │ │ - ushr-int/lit8 v5, v2, 0x4 │ + move-result-object v1 │ │ - aget-char v4, v4, v5 │ + const/4 v2, 0x0 │ │ - aput-char v4, v1, v3 │ + const-string v3, "AES/ECB/PKCS7Padding" │ │ - .line 613 │ - shl-int/lit8 v3, v0, 0x1 │ + invoke-direct {v0, v1, v2, v4, v3}, Ljavax/crypto/spec/SecretKeySpec;->([BIILjava/lang/String;)V │ │ - add-int/lit8 v3, v3, 0x1 │ + .line 628 │ + :try_start_0 │ + const-string v1, "AES/ECB/PKCS7Padding" │ │ - sget-object v4, Lcom/crashlytics/android/aB;->e:[C │ + invoke-static {v1}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher; │ + :try_end_0 │ + .catch Ljava/security/GeneralSecurityException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - and-int/lit8 v2, v2, 0xf │ + move-result-object v1 │ │ - aget-char v2, v4, v2 │ + .line 637 │ + const/4 v2, 0x1 │ │ - aput-char v2, v1, v3 │ + invoke-virtual {v1, v2, v0}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V │ │ - .line 610 │ - add-int/lit8 v0, v0, 0x1 │ + .line 638 │ + return-object v1 │ │ - goto :goto_0 │ + .line 631 │ + :catch_0 │ + move-exception v0 │ │ - .line 615 │ - :cond_0 │ - new-instance v0, Ljava/lang/String; │ + .line 632 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-direct {v0, v1}, Ljava/lang/String;->([C)V │ + move-result-object v1 │ │ - return-object v0 │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + const-string v3, "Could not create Cipher for AES/ECB/PKCS7Padding - should never happen." │ + │ + invoke-interface {v1, v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 635 │ + new-instance v1, Ljava/lang/RuntimeException; │ + │ + invoke-direct {v1, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/Throwable;)V │ + │ + throw v1 │ .end method │ │ -.method public static b(ILjava/lang/String;Ljava/lang/String;)V │ - .locals 1 │ +.method public static declared-synchronized c()J │ + .locals 9 │ │ .prologue │ - .line 395 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ + .line 192 │ + const-class v3, Lcom/crashlytics/android/internal/ab; │ │ - move-result-object v0 │ + monitor-enter v3 │ + │ + :try_start_0 │ + sget-wide v0, Lcom/crashlytics/android/internal/ab;->d:J │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->e(Landroid/content/Context;)Z │ + const-wide/16 v4, -0x1 │ │ - move-result v0 │ + cmp-long v0, v0, v4 │ │ if-nez v0, :cond_0 │ │ - .line 396 │ - invoke-static {p0, p1, p2}, Landroid/util/Log;->println(ILjava/lang/String;Ljava/lang/String;)I │ + .line 193 │ + const-wide/16 v1, 0x0 │ │ - .line 398 │ - :cond_0 │ - return-void │ -.end method │ + .line 194 │ + new-instance v0, Ljava/io/File; │ │ -.method public static c()J │ - .locals 6 │ + const-string v4, "/proc/meminfo" │ │ - .prologue │ - const-wide/16 v0, 0x0 │ + invoke-direct {v0, v4}, Ljava/io/File;->(Ljava/lang/String;)V │ │ - const/16 v5, 0xa │ + const-string v4, "MemTotal" │ │ - const/4 v4, 0x0 │ + invoke-static {v0, v4}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/File;Ljava/lang/String;)Ljava/lang/String; │ │ - .line 139 │ - new-instance v2, Ljava/io/File; │ + move-result-object v0 │ │ - const-string v3, "/proc/meminfo" │ + .line 196 │ + invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ - invoke-direct {v2, v3}, Ljava/io/File;->(Ljava/lang/String;)V │ + move-result v4 │ │ - const-string v3, "MemTotal" │ + if-nez v4, :cond_4 │ │ - invoke-static {v2, v3}, Lcom/crashlytics/android/aB;->a(Ljava/io/File;Ljava/lang/String;)Ljava/lang/String; │ + .line 197 │ + sget-object v4, Ljava/util/Locale;->US:Ljava/util/Locale; │ │ - move-result-object v2 │ + invoke-virtual {v0, v4}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String; │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ - .line 140 │ - if-eqz v2, :cond_0 │ + move-result-object v4 │ │ - invoke-virtual {v2}, Ljava/lang/String;->length()I │ + .line 200 │ + :try_start_1 │ + const-string v0, "KB" │ │ - move-result v3 │ + invoke-virtual {v4, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ │ - if-nez v3, :cond_1 │ + move-result v0 │ │ - .line 155 │ - :cond_0 │ + if-eqz v0, :cond_1 │ + │ + .line 201 │ + const-string v0, "KB" │ + │ + const/16 v5, 0x400 │ + │ + invoke-static {v4, v0, v5}, Lcom/crashlytics/android/internal/ab;->a(Ljava/lang/String;Ljava/lang/String;I)J │ + :try_end_1 │ + .catch Ljava/lang/NumberFormatException; {:try_start_1 .. :try_end_1} :catch_0 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + │ + move-result-wide v0 │ + │ + .line 217 │ :goto_0 │ + :try_start_2 │ + sput-wide v0, Lcom/crashlytics/android/internal/ab;->d:J │ + │ + .line 219 │ + :cond_0 │ + sget-wide v0, Lcom/crashlytics/android/internal/ab;->d:J │ + :try_end_2 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + │ + monitor-exit v3 │ + │ return-wide v0 │ │ - .line 143 │ + .line 202 │ :cond_1 │ - invoke-virtual {v2}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; │ + :try_start_3 │ + const-string v0, "MB" │ │ - move-result-object v2 │ + invoke-virtual {v4, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ │ - .line 145 │ - const-string v3, "KB" │ + move-result v0 │ │ - invoke-virtual {v2, v3}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + if-eqz v0, :cond_2 │ │ - move-result v3 │ + .line 205 │ + const-string v0, "MB" │ │ - if-eqz v3, :cond_2 │ + const/high16 v5, 0x100000 │ │ - .line 146 │ - const-string v0, "KB" │ + invoke-static {v4, v0, v5}, Lcom/crashlytics/android/internal/ab;->a(Ljava/lang/String;Ljava/lang/String;I)J │ │ - invoke-virtual {v2, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; │ + move-result-wide v0 │ │ - move-result-object v0 │ + goto :goto_0 │ │ - aget-object v0, v0, v4 │ + .line 206 │ + :cond_2 │ + const-string v0, "GB" │ │ - invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String; │ + invoke-virtual {v4, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ │ - move-result-object v0 │ + move-result v0 │ │ - invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J │ + if-eqz v0, :cond_3 │ │ - move-result-wide v0 │ + .line 209 │ + const-string v0, "GB" │ │ - .line 155 │ - :goto_1 │ - shl-long/2addr v0, v5 │ + const/high16 v5, 0x40000000 # 2.0f │ │ - goto :goto_0 │ + invoke-static {v4, v0, v5}, Lcom/crashlytics/android/internal/ab;->a(Ljava/lang/String;Ljava/lang/String;I)J │ │ - .line 147 │ - :cond_2 │ - const-string v3, "GB" │ + move-result-wide v0 │ │ - invoke-virtual {v2, v3}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z │ + goto :goto_0 │ │ - move-result v3 │ + .line 211 │ + :cond_3 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - if-eqz v3, :cond_3 │ + move-result-object v0 │ │ - .line 149 │ - invoke-virtual {v2}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v0 │ │ - const-string v1, "GB" │ + const-string v5, "Crashlytics" │ │ - invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; │ + new-instance v6, Ljava/lang/StringBuilder; │ │ - move-result-object v0 │ + const-string v7, "Unexpected meminfo format while computing RAM: " │ │ - aget-object v0, v0, v4 │ + invoke-direct {v6, v7}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String; │ + invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v0 │ + move-result-object v6 │ │ - invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J │ + invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-wide v0 │ + move-result-object v6 │ │ - shl-long/2addr v0, v5 │ + invoke-interface {v0, v5, v6}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + :try_end_3 │ + .catch Ljava/lang/NumberFormatException; {:try_start_3 .. :try_end_3} :catch_0 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ │ - goto :goto_1 │ + move-wide v0, v1 │ │ - .line 151 │ - :cond_3 │ - new-instance v3, Ljava/lang/StringBuilder; │ + .line 215 │ + goto :goto_0 │ │ - const-string v4, "Unexpected meminfo format while computing RAM: " │ + .line 213 │ + :catch_0 │ + move-exception v0 │ │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + .line 214 │ + :try_start_4 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + move-result-object v5 │ │ - move-result-object v2 │ + invoke-virtual {v5}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + move-result-object v5 │ │ - move-result-object v2 │ + const-string v6, "Crashlytics" │ │ - const/4 v3, 0x3 │ + new-instance v7, Ljava/lang/StringBuilder; │ │ - const-string v4, "Crashlytics" │ + const-string v8, "Unexpected meminfo format while computing RAM: " │ │ - invoke-static {v3, v4, v2}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ + invoke-direct {v7, v8}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - goto :goto_1 │ + invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v4 │ + │ + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v4 │ + │ + invoke-interface {v5, v6, v4, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_4 │ + .catchall {:try_start_4 .. :try_end_4} :catchall_0 │ + │ + :cond_4 │ + move-wide v0, v1 │ + │ + goto :goto_0 │ + │ + .line 192 │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit v3 │ + │ + throw v0 │ .end method │ │ .method public static c(Ljava/lang/String;)V │ .locals 2 │ │ .prologue │ - .line 377 │ - const/4 v0, 0x3 │ + .line 415 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->e(Landroid/content/Context;)Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_0 │ + │ + .line 416 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ │ const-string v1, "Crashlytics" │ │ - invoke-static {v0, v1, p0}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ + invoke-interface {v0, v1, p0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 378 │ + .line 418 │ + :cond_0 │ return-void │ .end method │ │ .method public static c(Landroid/content/Context;)Z │ .locals 3 │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 361 │ - invoke-static {}, Lcom/crashlytics/android/aB;->d()Z │ + .line 399 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->d()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ move v0, v1 │ │ - .line 368 │ + .line 406 │ :goto_0 │ return v0 │ │ - .line 366 │ + .line 404 │ :cond_0 │ const-string v0, "sensor" │ │ invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Landroid/hardware/SensorManager; │ │ - .line 367 │ + .line 405 │ const/16 v2, 0x8 │ │ invoke-virtual {v0, v2}, Landroid/hardware/SensorManager;->getDefaultSensor(I)Landroid/hardware/Sensor; │ │ move-result-object v0 │ │ - .line 368 │ + .line 406 │ if-eqz v0, :cond_1 │ │ const/4 v0, 0x1 │ │ goto :goto_0 │ │ :cond_1 │ move v0, v1 │ │ goto :goto_0 │ .end method │ │ -.method private static c(I)[Ljava/lang/String; │ - .locals 3 │ +.method public static d(Ljava/lang/String;)V │ + .locals 2 │ │ .prologue │ - .line 194 │ - :try_start_0 │ - invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime; │ + .line 425 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "ps -p " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v0, v1}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ - .line 195 │ - new-instance v1, Ljava/io/BufferedReader; │ - │ - new-instance v2, Ljava/io/InputStreamReader; │ - │ - invoke-virtual {v0}, Ljava/lang/Process;->getInputStream()Ljava/io/InputStream; │ - │ - move-result-object v0 │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->e(Landroid/content/Context;)Z │ │ - invoke-direct {v2, v0}, Ljava/io/InputStreamReader;->(Ljava/io/InputStream;)V │ - │ - const/16 v0, 0x400 │ - │ - invoke-direct {v1, v2, v0}, Ljava/io/BufferedReader;->(Ljava/io/Reader;I)V │ + move-result v0 │ │ - .line 196 │ - invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; │ + if-eqz v0, :cond_0 │ │ - .line 197 │ - invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; │ + .line 426 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - .line 199 │ - const-string v1, "\\s\\s*" │ - │ - invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ move-result-object v0 │ │ - .line 203 │ - :goto_0 │ - return-object v0 │ - │ - .line 200 │ - :catch_0 │ - move-exception v0 │ - │ - .line 201 │ - new-instance v1, Ljava/lang/StringBuilder; │ - │ - const-string v2, "getPsResult failed for pid " │ - │ - invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ - │ - invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ - │ - move-result-object v1 │ - │ - invoke-static {v1, v0}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ + const-string v1, "Crashlytics" │ │ - .line 203 │ - const/4 v0, 0x0 │ + invoke-interface {v0, v1, p0}, Lcom/crashlytics/android/internal/q;->d(Ljava/lang/String;Ljava/lang/String;)V │ │ - goto :goto_0 │ + .line 428 │ + :cond_0 │ + return-void │ .end method │ │ .method public static d()Z │ .locals 3 │ │ .prologue │ - .line 489 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->d()Landroid/content/ContextWrapper; │ + .line 524 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ │ move-result-object v0 │ │ - invoke-virtual {v0}, Landroid/content/ContextWrapper;->getContentResolver()Landroid/content/ContentResolver; │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->getContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; │ │ move-result-object v0 │ │ const-string v1, "android_id" │ │ invoke-static {v0, v1}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ - .line 490 │ + .line 525 │ const-string v1, "sdk" │ │ sget-object v2, Landroid/os/Build;->PRODUCT:Ljava/lang/String; │ │ invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v1 │ @@ -2245,221 +1796,213 @@ │ │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ -.method private static d(I)Z │ - .locals 1 │ +.method public static d(Landroid/content/Context;)Z │ + .locals 2 │ │ .prologue │ - .line 420 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->b()I │ - │ - move-result v0 │ - │ - if-gt v0, p0, :cond_0 │ - │ - const/4 v0, 0x1 │ - │ - :goto_0 │ - return v0 │ - │ - :cond_0 │ const/4 v0, 0x0 │ │ - goto :goto_0 │ -.end method │ - │ -.method public static d(Landroid/content/Context;)Z │ - .locals 1 │ + .line 453 │ + sget-object v1, Lcom/crashlytics/android/internal/ab;->e:Ljava/lang/Boolean; │ │ - .prologue │ - .line 673 │ - invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ + if-nez v1, :cond_1 │ │ - move-result-object v0 │ + .line 455 │ + const-string v1, "com.crashlytics.SilenceCrashlyticsLogCat" │ │ - iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I │ + invoke-static {p0, v1, v0}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ │ - and-int/lit8 v0, v0, 0x2 │ + move-result v1 │ │ - if-eqz v0, :cond_0 │ + if-nez v1, :cond_0 │ │ const/4 v0, 0x1 │ │ - :goto_0 │ - return v0 │ - │ :cond_0 │ - const/4 v0, 0x0 │ + invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ - goto :goto_0 │ -.end method │ + move-result-object v0 │ │ -.method public static d(Ljava/lang/String;)Z │ - .locals 1 │ + sput-object v0, Lcom/crashlytics/android/internal/ab;->e:Ljava/lang/Boolean; │ │ - .prologue │ - .line 756 │ - if-eqz p0, :cond_0 │ + .line 458 │ + :cond_1 │ + sget-object v0, Lcom/crashlytics/android/internal/ab;->e:Ljava/lang/Boolean; │ │ - invoke-virtual {p0}, Ljava/lang/String;->length()I │ + invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z │ │ move-result v0 │ │ - if-nez v0, :cond_1 │ - │ - :cond_0 │ - const/4 v0, 0x1 │ - │ - :goto_0 │ return v0 │ - │ - :cond_1 │ - const/4 v0, 0x0 │ - │ - goto :goto_0 │ .end method │ │ .method public static e()Z │ .locals 4 │ │ .prologue │ const/4 v0, 0x1 │ │ - .line 499 │ - invoke-static {}, Lcom/crashlytics/android/aB;->d()Z │ + .line 534 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->d()Z │ │ move-result v1 │ │ - .line 500 │ + .line 535 │ sget-object v2, Landroid/os/Build;->TAGS:Ljava/lang/String; │ │ - .line 501 │ + .line 536 │ if-nez v1, :cond_1 │ │ if-eqz v2, :cond_1 │ │ const-string v3, "test-keys" │ │ invoke-virtual {v2, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ │ move-result v2 │ │ if-eqz v2, :cond_1 │ │ - .line 519 │ + .line 554 │ :cond_0 │ :goto_0 │ return v0 │ │ - .line 506 │ + .line 541 │ :cond_1 │ new-instance v2, Ljava/io/File; │ │ const-string v3, "/system/app/Superuser.apk" │ │ invoke-direct {v2, v3}, Ljava/io/File;->(Ljava/lang/String;)V │ │ - .line 507 │ + .line 542 │ invoke-virtual {v2}, Ljava/io/File;->exists()Z │ │ move-result v2 │ │ if-nez v2, :cond_0 │ │ - .line 515 │ + .line 550 │ new-instance v2, Ljava/io/File; │ │ const-string v3, "/system/xbin/su" │ │ invoke-direct {v2, v3}, Ljava/io/File;->(Ljava/lang/String;)V │ │ - .line 516 │ + .line 551 │ if-nez v1, :cond_2 │ │ invoke-virtual {v2}, Ljava/io/File;->exists()Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ - .line 519 │ + .line 554 │ :cond_2 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ -.method private static e(Landroid/content/Context;)Z │ +.method public static e(Landroid/content/Context;)Z │ .locals 2 │ │ .prologue │ - .line 430 │ - sget-object v0, Lcom/crashlytics/android/aB;->b:Ljava/lang/Boolean; │ + .line 465 │ + sget-object v0, Lcom/crashlytics/android/internal/ab;->b:Ljava/lang/Boolean; │ │ if-nez v0, :cond_0 │ │ - .line 431 │ - const-string v0, "com.crashlytics.SilenceCrashlyticsLogCat" │ + .line 466 │ + const-string v0, "com.crashlytics.Trace" │ │ const/4 v1, 0x0 │ │ - invoke-static {p0, v0, v1}, Lcom/crashlytics/android/aB;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ + invoke-static {p0, v0, v1}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Z)Z │ │ move-result v0 │ │ invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v0 │ │ - sput-object v0, Lcom/crashlytics/android/aB;->b:Ljava/lang/Boolean; │ + sput-object v0, Lcom/crashlytics/android/internal/ab;->b:Ljava/lang/Boolean; │ │ - .line 434 │ + .line 469 │ :cond_0 │ - sget-object v0, Lcom/crashlytics/android/aB;->b:Ljava/lang/Boolean; │ + sget-object v0, Lcom/crashlytics/android/internal/ab;->b:Ljava/lang/Boolean; │ │ invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z │ │ move-result v0 │ │ return v0 │ .end method │ │ +.method public static e(Ljava/lang/String;)Z │ + .locals 1 │ + │ + .prologue │ + .line 737 │ + if-eqz p0, :cond_0 │ + │ + invoke-virtual {p0}, Ljava/lang/String;->length()I │ + │ + move-result v0 │ + │ + if-nez v0, :cond_1 │ + │ + :cond_0 │ + const/4 v0, 0x1 │ + │ + :goto_0 │ + return v0 │ + │ + :cond_1 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ +.end method │ + │ .method public static f()I │ .locals 4 │ │ .prologue │ const/4 v1, 0x1 │ │ const/4 v2, 0x0 │ │ - .line 536 │ - invoke-static {}, Lcom/crashlytics/android/aB;->d()Z │ + .line 571 │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->d()Z │ │ move-result v0 │ │ if-eqz v0, :cond_4 │ │ move v0, v1 │ │ - .line 540 │ + .line 575 │ :goto_0 │ - invoke-static {}, Lcom/crashlytics/android/aB;->e()Z │ + invoke-static {}, Lcom/crashlytics/android/internal/ab;->e()Z │ │ move-result v3 │ │ if-eqz v3, :cond_0 │ │ - .line 541 │ + .line 576 │ or-int/lit8 v0, v0, 0x2 │ │ - .line 544 │ + .line 579 │ :cond_0 │ invoke-static {}, Landroid/os/Debug;->isDebuggerConnected()Z │ │ move-result v3 │ │ if-nez v3, :cond_1 │ │ @@ -2471,42 +2014,237 @@ │ │ :cond_1 │ move v2, v1 │ │ :cond_2 │ if-eqz v2, :cond_3 │ │ - .line 545 │ + .line 580 │ or-int/lit8 v0, v0, 0x4 │ │ - .line 548 │ + .line 583 │ :cond_3 │ return v0 │ │ :cond_4 │ move v0, v2 │ │ goto :goto_0 │ .end method │ │ -.method static g()V │ +.method public static f(Landroid/content/Context;)Z │ .locals 1 │ │ .prologue │ - .line 634 │ - sget-object v0, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ + .line 675 │ + invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ │ - invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V │ + move-result-object v0 │ │ - .line 635 │ + iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I │ + │ + and-int/lit8 v0, v0, 0x2 │ + │ + if-eqz v0, :cond_0 │ + │ + const/4 v0, 0x1 │ + │ + :goto_0 │ + return v0 │ + │ + :cond_0 │ const/4 v0, 0x0 │ │ - sput-object v0, Lcom/crashlytics/android/aB;->c:Ljavax/net/ssl/SSLSocketFactory; │ + goto :goto_0 │ +.end method │ │ - .line 636 │ - sget-object v0, Lcom/crashlytics/android/aB;->d:Ljava/util/concurrent/locks/ReentrantLock; │ +.method public static g(Landroid/content/Context;)Ljava/lang/String; │ + .locals 6 │ │ - invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ + .prologue │ + const/4 v0, 0x0 │ │ - .line 637 │ - return-void │ + .line 824 │ + .line 827 │ + :try_start_0 │ + invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + │ + move-result-object v1 │ + │ + invoke-static {p0}, Lcom/crashlytics/android/internal/ab;->h(Landroid/content/Context;)I │ + │ + move-result v2 │ + │ + invoke-virtual {v1, v2}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; │ + :try_end_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + │ + move-result-object v2 │ + │ + .line 828 │ + :try_start_1 │ + invoke-static {v2}, Lcom/crashlytics/android/internal/ab;->b(Ljava/io/InputStream;)Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + .line 829 │ + invoke-static {v1}, Lcom/crashlytics/android/internal/ab;->e(Ljava/lang/String;)Z │ + :try_end_1 │ + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ + │ + move-result v3 │ + │ + if-eqz v3, :cond_0 │ + │ + .line 833 │ + :goto_0 │ + const-string v1, "Failed to close icon input stream." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + .line 836 │ + :goto_1 │ + return-object v0 │ + │ + :cond_0 │ + move-object v0, v1 │ + │ + .line 829 │ + goto :goto_0 │ + │ + .line 830 │ + :catch_0 │ + move-exception v1 │ + │ + move-object v2, v0 │ + │ + .line 831 │ + :goto_2 │ + :try_start_2 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v3 │ + │ + const-string v4, "Crashlytics" │ + │ + const-string v5, "Could not calculate hash for app icon." │ + │ + invoke-interface {v3, v4, v5, v1}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + :try_end_2 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ + │ + .line 833 │ + const-string v1, "Failed to close icon input stream." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + goto :goto_1 │ + │ + :catchall_0 │ + move-exception v1 │ + │ + move-object v2, v0 │ + │ + move-object v0, v1 │ + │ + :goto_3 │ + const-string v1, "Failed to close icon input stream." │ + │ + invoke-static {v2, v1}, Lcom/crashlytics/android/internal/ab;->a(Ljava/io/Closeable;Ljava/lang/String;)V │ + │ + throw v0 │ + │ + :catchall_1 │ + move-exception v0 │ + │ + goto :goto_3 │ + │ + .line 830 │ + :catch_1 │ + move-exception v1 │ + │ + goto :goto_2 │ +.end method │ + │ +.method public static h(Landroid/content/Context;)I │ + .locals 1 │ + │ + .prologue │ + .line 840 │ + invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; │ + │ + move-result-object v0 │ + │ + iget v0, v0, Landroid/content/pm/ApplicationInfo;->icon:I │ + │ + return v0 │ +.end method │ + │ +.method public static i(Landroid/content/Context;)Ljava/lang/String; │ + .locals 5 │ + │ + .prologue │ + .line 847 │ + const/4 v0, 0x0 │ + │ + .line 849 │ + const-string v1, "com.crashlytics.android.build_id" │ + │ + const-string v2, "string" │ + │ + invoke-static {p0, v1, v2}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ + │ + move-result v1 │ + │ + .line 851 │ + if-eqz v1, :cond_0 │ + │ + .line 852 │ + invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ + │ + move-result-object v0 │ + │ + .line 853 │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v1 │ + │ + invoke-virtual {v1}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v1 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Build ID is: " │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v1, v2, v3}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 856 │ + :cond_0 │ + return-object v0 │ .end method │ --- smali/com/crashlytics/android/al.smali ├── +++ smali/com/crashlytics/android/internal/aH.smali │┄ Files similar despite different names (score: 51, lower is more similar) │ @@ -1,139 +1,150 @@ │ -.class final Lcom/crashlytics/android/al; │ +.class final Lcom/crashlytics/android/internal/aH; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ .implements Ljavax/net/ssl/X509TrustManager; │ │ │ # instance fields │ .field private final a:[Ljavax/net/ssl/TrustManager; │ │ -.field private final b:Lcom/crashlytics/android/az; │ +.field private final b:Lcom/crashlytics/android/internal/aI; │ │ -.field private final c:Ljava/util/List; │ +.field private final c:J │ + │ +.field private final d:Ljava/util/List; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "Ljava/util/List", │ "<[B>;" │ } │ .end annotation │ .end field │ │ -.field private final d:Ljava/util/Set; │ +.field private final e:Ljava/util/Set; │ .annotation system Ldalvik/annotation/Signature; │ value = { │ "Ljava/util/Set", │ "<", │ "Ljava/security/cert/X509Certificate;", │ ">;" │ } │ .end annotation │ .end field │ │ │ # direct methods │ -.method public constructor (Lcom/crashlytics/android/az;[Ljava/lang/String;)V │ - .locals 4 │ +.method public constructor (Lcom/crashlytics/android/internal/aI;Lcom/crashlytics/android/internal/aG;)V │ + .locals 5 │ │ .prologue │ - .line 66 │ + .line 73 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 53 │ + .line 59 │ new-instance v0, Ljava/util/LinkedList; │ │ invoke-direct {v0}, Ljava/util/LinkedList;->()V │ │ - iput-object v0, p0, Lcom/crashlytics/android/al;->c:Ljava/util/List; │ + iput-object v0, p0, Lcom/crashlytics/android/internal/aH;->d:Ljava/util/List; │ │ - .line 54 │ + .line 60 │ new-instance v0, Ljava/util/HashSet; │ │ invoke-direct {v0}, Ljava/util/HashSet;->()V │ │ invoke-static {v0}, Ljava/util/Collections;->synchronizedSet(Ljava/util/Set;)Ljava/util/Set; │ │ move-result-object v0 │ │ - iput-object v0, p0, Lcom/crashlytics/android/al;->d:Ljava/util/Set; │ + iput-object v0, p0, Lcom/crashlytics/android/internal/aH;->e:Ljava/util/Set; │ │ - .line 67 │ - invoke-static {p1}, Lcom/crashlytics/android/al;->a(Lcom/crashlytics/android/az;)[Ljavax/net/ssl/TrustManager; │ + .line 74 │ + invoke-static {p1}, Lcom/crashlytics/android/internal/aH;->a(Lcom/crashlytics/android/internal/aI;)[Ljavax/net/ssl/TrustManager; │ │ move-result-object v0 │ │ - iput-object v0, p0, Lcom/crashlytics/android/al;->a:[Ljavax/net/ssl/TrustManager; │ + iput-object v0, p0, Lcom/crashlytics/android/internal/aH;->a:[Ljavax/net/ssl/TrustManager; │ │ - .line 68 │ - iput-object p1, p0, Lcom/crashlytics/android/al;->b:Lcom/crashlytics/android/az; │ + .line 75 │ + iput-object p1, p0, Lcom/crashlytics/android/internal/aH;->b:Lcom/crashlytics/android/internal/aI; │ │ - .line 70 │ - array-length v1, p2 │ + .line 76 │ + const-wide/16 v0, -0x1 │ + │ + iput-wide v0, p0, Lcom/crashlytics/android/internal/aH;->c:J │ + │ + .line 78 │ + invoke-interface {p2}, Lcom/crashlytics/android/internal/aG;->c()[Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + array-length v2, v1 │ │ const/4 v0, 0x0 │ │ :goto_0 │ - if-ge v0, v1, :cond_0 │ + if-ge v0, v2, :cond_0 │ │ - aget-object v2, p2, v0 │ + aget-object v3, v1, v0 │ │ - .line 71 │ - iget-object v3, p0, Lcom/crashlytics/android/al;->c:Ljava/util/List; │ + .line 79 │ + iget-object v4, p0, Lcom/crashlytics/android/internal/aH;->d:Ljava/util/List; │ │ - invoke-static {v2}, Lcom/crashlytics/android/al;->a(Ljava/lang/String;)[B │ + invoke-static {v3}, Lcom/crashlytics/android/internal/aH;->a(Ljava/lang/String;)[B │ │ - move-result-object v2 │ + move-result-object v3 │ │ - invoke-interface {v3, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ + invoke-interface {v4, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ - .line 70 │ + .line 78 │ add-int/lit8 v0, v0, 0x1 │ │ goto :goto_0 │ │ - .line 73 │ + .line 81 │ :cond_0 │ return-void │ .end method │ │ .method private a(Ljava/security/cert/X509Certificate;)Z │ .locals 3 │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Ljava/security/cert/CertificateException; │ } │ .end annotation │ │ .prologue │ - .line 90 │ + .line 98 │ :try_start_0 │ const-string v0, "SHA1" │ │ invoke-static {v0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; │ │ move-result-object v0 │ │ - .line 91 │ + .line 99 │ invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey; │ │ move-result-object v1 │ │ invoke-interface {v1}, Ljava/security/PublicKey;->getEncoded()[B │ │ move-result-object v1 │ │ - .line 92 │ + .line 100 │ invoke-virtual {v0, v1}, Ljava/security/MessageDigest;->digest([B)[B │ │ move-result-object v1 │ │ - .line 94 │ - iget-object v0, p0, Lcom/crashlytics/android/al;->c:Ljava/util/List; │ + .line 102 │ + iget-object v0, p0, Lcom/crashlytics/android/internal/aH;->d:Ljava/util/List; │ │ invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; │ │ move-result-object v2 │ │ :cond_0 │ invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z │ @@ -144,70 +155,70 @@ │ │ invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, [B │ │ - .line 95 │ + .line 103 │ invoke-static {v0, v1}, Ljava/util/Arrays;->equals([B[B)Z │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ - .line 96 │ + .line 104 │ const/4 v0, 0x1 │ │ - .line 100 │ + .line 108 │ :goto_0 │ return v0 │ │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ │ - .line 101 │ + .line 109 │ :catch_0 │ move-exception v0 │ │ - .line 102 │ + .line 110 │ new-instance v1, Ljava/security/cert/CertificateException; │ │ invoke-direct {v1, v0}, Ljava/security/cert/CertificateException;->(Ljava/lang/Throwable;)V │ │ throw v1 │ .end method │ │ .method private static a(Ljava/lang/String;)[B │ .locals 7 │ │ .prologue │ const/16 v6, 0x10 │ │ - .line 152 │ + .line 170 │ invoke-virtual {p0}, Ljava/lang/String;->length()I │ │ move-result v1 │ │ - .line 153 │ + .line 171 │ div-int/lit8 v0, v1, 0x2 │ │ new-array v2, v0, [B │ │ - .line 155 │ + .line 173 │ const/4 v0, 0x0 │ │ :goto_0 │ if-ge v0, v1, :cond_0 │ │ - .line 156 │ + .line 174 │ div-int/lit8 v3, v0, 0x2 │ │ invoke-virtual {p0, v0}, Ljava/lang/String;->charAt(I)C │ │ move-result v4 │ │ invoke-static {v4, v6}, Ljava/lang/Character;->digit(CI)I │ @@ -228,67 +239,67 @@ │ │ add-int/2addr v4, v5 │ │ int-to-byte v4, v4 │ │ aput-byte v4, v2, v3 │ │ - .line 155 │ + .line 173 │ add-int/lit8 v0, v0, 0x2 │ │ goto :goto_0 │ │ - .line 160 │ + .line 178 │ :cond_0 │ return-object v2 │ .end method │ │ -.method private static a(Lcom/crashlytics/android/az;)[Ljavax/net/ssl/TrustManager; │ +.method private static a(Lcom/crashlytics/android/internal/aI;)[Ljavax/net/ssl/TrustManager; │ .locals 2 │ │ .prologue │ - .line 77 │ + .line 85 │ :try_start_0 │ const-string v0, "X509" │ │ invoke-static {v0}, Ljavax/net/ssl/TrustManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory; │ │ move-result-object v0 │ │ - .line 78 │ - iget-object v1, p0, Lcom/crashlytics/android/az;->a:Ljava/security/KeyStore; │ + .line 86 │ + iget-object v1, p0, Lcom/crashlytics/android/internal/aI;->a:Ljava/security/KeyStore; │ │ invoke-virtual {v0, v1}, Ljavax/net/ssl/TrustManagerFactory;->init(Ljava/security/KeyStore;)V │ │ - .line 80 │ + .line 88 │ invoke-virtual {v0}, Ljavax/net/ssl/TrustManagerFactory;->getTrustManagers()[Ljavax/net/ssl/TrustManager; │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Ljava/security/KeyStoreException; {:try_start_0 .. :try_end_0} :catch_1 │ │ move-result-object v0 │ │ return-object v0 │ │ - .line 81 │ + .line 89 │ :catch_0 │ move-exception v0 │ │ - .line 82 │ + .line 90 │ new-instance v1, Ljava/lang/AssertionError; │ │ invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ │ throw v1 │ │ - .line 83 │ + .line 91 │ :catch_1 │ move-exception v0 │ │ - .line 84 │ + .line 92 │ new-instance v1, Ljava/lang/AssertionError; │ │ invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ │ throw v1 │ .end method │ │ @@ -299,55 +310,55 @@ │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Ljava/security/cert/CertificateException; │ } │ .end annotation │ │ .prologue │ - .line 130 │ + .line 148 │ new-instance v0, Ljava/security/cert/CertificateException; │ │ const-string v1, "Client certificates not supported!" │ │ invoke-direct {v0, v1}, Ljava/security/cert/CertificateException;->(Ljava/lang/String;)V │ │ throw v0 │ .end method │ │ .method public final checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V │ - .locals 5 │ + .locals 8 │ .param p1, "chain" # [Ljava/security/cert/X509Certificate; │ .param p2, "authType" # Ljava/lang/String; │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Ljava/security/cert/CertificateException; │ } │ .end annotation │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 135 │ - iget-object v0, p0, Lcom/crashlytics/android/al;->d:Ljava/util/Set; │ + .line 153 │ + iget-object v0, p0, Lcom/crashlytics/android/internal/aH;->e:Ljava/util/Set; │ │ aget-object v2, p1, v1 │ │ invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ - .line 145 │ + .line 163 │ :goto_0 │ return-void │ │ - .line 142 │ + .line 160 │ :cond_0 │ - iget-object v3, p0, Lcom/crashlytics/android/al;->a:[Ljavax/net/ssl/TrustManager; │ + iget-object v3, p0, Lcom/crashlytics/android/internal/aH;->a:[Ljavax/net/ssl/TrustManager; │ │ array-length v4, v3 │ │ move v2, v1 │ │ :goto_1 │ if-ge v2, v4, :cond_1 │ @@ -360,63 +371,133 @@ │ │ add-int/lit8 v0, v2, 0x1 │ │ move v2, v0 │ │ goto :goto_1 │ │ - .line 143 │ + .line 161 │ :cond_1 │ - iget-object v0, p0, Lcom/crashlytics/android/al;->b:Lcom/crashlytics/android/az; │ + iget-wide v2, p0, Lcom/crashlytics/android/internal/aH;->c:J │ + │ + const-wide/16 v4, -0x1 │ │ - invoke-static {p1, v0}, Lcom/crashlytics/android/c;->a([Ljava/security/cert/X509Certificate;Lcom/crashlytics/android/az;)[Ljava/security/cert/X509Certificate; │ + cmp-long v0, v2, v4 │ + │ + if-eqz v0, :cond_3 │ + │ + invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ + │ + move-result-wide v2 │ + │ + iget-wide v4, p0, Lcom/crashlytics/android/internal/aH;->c:J │ + │ + sub-long/2addr v2, v4 │ + │ + const-wide v4, 0x39ef8b000L │ + │ + cmp-long v0, v2, v4 │ + │ + if-lez v0, :cond_3 │ + │ + invoke-static {}, Lcom/crashlytics/android/internal/v;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ + │ + move-result-object v0 │ + │ + const-string v2, "Crashlytics" │ + │ + new-instance v3, Ljava/lang/StringBuilder; │ + │ + const-string v4, "Certificate pins are stale, (" │ + │ + invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + │ + invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ + │ + move-result-wide v4 │ + │ + iget-wide v6, p0, Lcom/crashlytics/android/internal/aH;->c:J │ + │ + sub-long/2addr v4, v6 │ + │ + invoke-virtual {v3, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, " millis vs 15552000000" │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + const-string v4, " millis) falling back to system trust." │ + │ + invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + │ + move-result-object v3 │ + │ + invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + │ + move-result-object v3 │ + │ + invoke-interface {v0, v2, v3}, Lcom/crashlytics/android/internal/q;->c(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 162 │ + :cond_2 │ + iget-object v0, p0, Lcom/crashlytics/android/internal/aH;->e:Ljava/util/Set; │ + │ + aget-object v1, p1, v1 │ + │ + invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ + │ + goto :goto_0 │ + │ + .line 161 │ + :cond_3 │ + iget-object v0, p0, Lcom/crashlytics/android/internal/aH;->b:Lcom/crashlytics/android/internal/aI; │ + │ + invoke-static {p1, v0}, Lcom/crashlytics/android/internal/av;->a([Ljava/security/cert/X509Certificate;Lcom/crashlytics/android/internal/aI;)[Ljava/security/cert/X509Certificate; │ │ move-result-object v2 │ │ array-length v3, v2 │ │ move v0, v1 │ │ :goto_2 │ - if-ge v0, v3, :cond_2 │ + if-ge v0, v3, :cond_4 │ │ aget-object v4, v2, v0 │ │ - invoke-direct {p0, v4}, Lcom/crashlytics/android/al;->a(Ljava/security/cert/X509Certificate;)Z │ + invoke-direct {p0, v4}, Lcom/crashlytics/android/internal/aH;->a(Ljava/security/cert/X509Certificate;)Z │ │ move-result v4 │ │ - if-nez v4, :cond_3 │ + if-nez v4, :cond_2 │ │ add-int/lit8 v0, v0, 0x1 │ │ goto :goto_2 │ │ - :cond_2 │ + :cond_4 │ new-instance v0, Ljava/security/cert/CertificateException; │ │ const-string v1, "No valid pins found in chain!" │ │ invoke-direct {v0, v1}, Ljava/security/cert/CertificateException;->(Ljava/lang/String;)V │ │ throw v0 │ - │ - .line 144 │ - :cond_3 │ - iget-object v0, p0, Lcom/crashlytics/android/al;->d:Ljava/util/Set; │ - │ - aget-object v1, p1, v1 │ - │ - invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ - │ - goto :goto_0 │ .end method │ │ .method public final getAcceptedIssuers()[Ljava/security/cert/X509Certificate; │ .locals 1 │ │ .prologue │ - .line 148 │ + .line 166 │ const/4 v0, 0x0 │ │ return-object v0 │ .end method │ --- smali/com/crashlytics/android/ao.smali ├── +++ smali/com/crashlytics/android/internal/as.smali │┄ Files similar despite different names (score: 45, lower is more similar) │ @@ -1,14 +1,14 @@ │ -.class final Lcom/crashlytics/android/ao; │ +.class final Lcom/crashlytics/android/internal/as; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ │ # static fields │ -.field static final a:Lcom/crashlytics/android/ao; │ +.field static final a:Lcom/crashlytics/android/internal/as; │ │ │ # instance fields │ .field final b:I │ │ .field final c:I │ │ @@ -16,48 +16,48 @@ │ # direct methods │ .method static constructor ()V │ .locals 2 │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 564 │ - new-instance v0, Lcom/crashlytics/android/ao; │ + .line 572 │ + new-instance v0, Lcom/crashlytics/android/internal/as; │ │ - invoke-direct {v0, v1, v1}, Lcom/crashlytics/android/ao;->(II)V │ + invoke-direct {v0, v1, v1}, Lcom/crashlytics/android/internal/as;->(II)V │ │ - sput-object v0, Lcom/crashlytics/android/ao;->a:Lcom/crashlytics/android/ao; │ + sput-object v0, Lcom/crashlytics/android/internal/as;->a:Lcom/crashlytics/android/internal/as; │ │ return-void │ .end method │ │ .method constructor (II)V │ .locals 0 │ │ .prologue │ - .line 578 │ + .line 586 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 579 │ - iput p1, p0, Lcom/crashlytics/android/ao;->b:I │ + .line 587 │ + iput p1, p0, Lcom/crashlytics/android/internal/as;->b:I │ │ - .line 580 │ - iput p2, p0, Lcom/crashlytics/android/ao;->c:I │ + .line 588 │ + iput p2, p0, Lcom/crashlytics/android/internal/as;->c:I │ │ - .line 581 │ + .line 589 │ return-void │ .end method │ │ │ # virtual methods │ .method public final toString()Ljava/lang/String; │ .locals 2 │ │ .prologue │ - .line 585 │ + .line 593 │ new-instance v0, Ljava/lang/StringBuilder; │ │ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V │ │ invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v1 │ @@ -72,27 +72,27 @@ │ │ const-string v1, "[position = " │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ - iget v1, p0, Lcom/crashlytics/android/ao;->b:I │ + iget v1, p0, Lcom/crashlytics/android/internal/as;->b:I │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v1, ", length = " │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ - iget v1, p0, Lcom/crashlytics/android/ao;->c:I │ + iget v1, p0, Lcom/crashlytics/android/internal/as;->c:I │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v1, "]" │ --- smali/com/crashlytics/android/az.smali ├── +++ smali/com/crashlytics/android/internal/aI.smali │┄ Files similar despite different names (score: 26, lower is more similar) │ @@ -1,8 +1,8 @@ │ -.class final Lcom/crashlytics/android/az; │ +.class final Lcom/crashlytics/android/internal/aI; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ │ # instance fields │ .field final a:Ljava/security/KeyStore; │ │ @@ -20,139 +20,126 @@ │ │ │ # direct methods │ .method public constructor (Ljava/io/InputStream;Ljava/lang/String;)V │ .locals 2 │ │ .prologue │ - .line 31 │ + .line 27 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 32 │ - invoke-static {p1, p2}, Lcom/crashlytics/android/az;->a(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/KeyStore; │ + .line 28 │ + invoke-static {p1, p2}, Lcom/crashlytics/android/internal/aI;->a(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/KeyStore; │ │ move-result-object v0 │ │ - .line 33 │ - invoke-static {v0}, Lcom/crashlytics/android/az;->a(Ljava/security/KeyStore;)Ljava/util/HashMap; │ + .line 29 │ + invoke-static {v0}, Lcom/crashlytics/android/internal/aI;->a(Ljava/security/KeyStore;)Ljava/util/HashMap; │ │ move-result-object v1 │ │ - iput-object v1, p0, Lcom/crashlytics/android/az;->b:Ljava/util/HashMap; │ + iput-object v1, p0, Lcom/crashlytics/android/internal/aI;->b:Ljava/util/HashMap; │ │ - .line 34 │ - iput-object v0, p0, Lcom/crashlytics/android/az;->a:Ljava/security/KeyStore; │ + .line 30 │ + iput-object v0, p0, Lcom/crashlytics/android/internal/aI;->a:Ljava/security/KeyStore; │ │ - .line 35 │ + .line 31 │ return-void │ .end method │ │ .method private static a(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/KeyStore; │ .locals 3 │ │ .prologue │ - .line 85 │ + .line 81 │ :try_start_0 │ const-string v0, "BKS" │ │ invoke-static {v0}, Ljava/security/KeyStore;->getInstance(Ljava/lang/String;)Ljava/security/KeyStore; │ │ move-result-object v0 │ │ - .line 86 │ + .line 82 │ new-instance v1, Ljava/io/BufferedInputStream; │ │ invoke-direct {v1, p0}, Ljava/io/BufferedInputStream;->(Ljava/io/InputStream;)V │ :try_end_0 │ .catch Ljava/security/KeyStoreException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ .catch Ljava/security/cert/CertificateException; {:try_start_0 .. :try_end_0} :catch_2 │ - .catch Landroid/content/res/Resources$NotFoundException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_4 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_3 │ │ - .line 90 │ + .line 85 │ :try_start_1 │ invoke-virtual {p1}, Ljava/lang/String;->toCharArray()[C │ │ move-result-object v2 │ │ invoke-virtual {v0, v1, v2}, Ljava/security/KeyStore;->load(Ljava/io/InputStream;[C)V │ :try_end_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ - .line 92 │ + .line 87 │ :try_start_2 │ invoke-virtual {v1}, Ljava/io/BufferedInputStream;->close()V │ │ - .line 95 │ + .line 90 │ return-object v0 │ │ - .line 92 │ + .line 87 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v1}, Ljava/io/BufferedInputStream;->close()V │ │ throw v0 │ :try_end_2 │ .catch Ljava/security/KeyStoreException; {:try_start_2 .. :try_end_2} :catch_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_2 .. :try_end_2} :catch_1 │ .catch Ljava/security/cert/CertificateException; {:try_start_2 .. :try_end_2} :catch_2 │ - .catch Landroid/content/res/Resources$NotFoundException; {:try_start_2 .. :try_end_2} :catch_3 │ - .catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_4 │ + .catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_3 │ │ - .line 96 │ + .line 91 │ :catch_0 │ move-exception v0 │ │ - .line 97 │ + .line 92 │ new-instance v1, Ljava/lang/AssertionError; │ │ invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ │ throw v1 │ │ - .line 98 │ + .line 93 │ :catch_1 │ move-exception v0 │ │ - .line 99 │ + .line 94 │ new-instance v1, Ljava/lang/AssertionError; │ │ invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ │ throw v1 │ │ - .line 100 │ + .line 95 │ :catch_2 │ move-exception v0 │ │ - .line 101 │ + .line 96 │ new-instance v1, Ljava/lang/AssertionError; │ │ invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ │ throw v1 │ │ - .line 102 │ + .line 97 │ :catch_3 │ move-exception v0 │ │ - .line 103 │ - new-instance v1, Ljava/lang/AssertionError; │ - │ - invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ - │ - throw v1 │ - │ - .line 104 │ - :catch_4 │ - move-exception v0 │ - │ - .line 105 │ + .line 98 │ new-instance v1, Ljava/lang/AssertionError; │ │ invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ │ throw v1 │ .end method │ │ @@ -168,98 +155,98 @@ │ "Ljava/security/Principal;", │ "Ljava/security/cert/X509Certificate;", │ ">;" │ } │ .end annotation │ │ .prologue │ - .line 64 │ + .line 60 │ :try_start_0 │ new-instance v1, Ljava/util/HashMap; │ │ invoke-direct {v1}, Ljava/util/HashMap;->()V │ │ - .line 67 │ + .line 63 │ invoke-virtual {p0}, Ljava/security/KeyStore;->aliases()Ljava/util/Enumeration; │ │ move-result-object v2 │ │ - .line 68 │ + .line 64 │ :cond_0 │ :goto_0 │ invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ - .line 69 │ + .line 65 │ invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/String; │ │ - .line 70 │ + .line 66 │ invoke-virtual {p0, v0}, Ljava/security/KeyStore;->getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate; │ │ move-result-object v0 │ │ check-cast v0, Ljava/security/cert/X509Certificate; │ │ - .line 72 │ + .line 68 │ if-eqz v0, :cond_0 │ │ - .line 73 │ + .line 69 │ invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; │ │ move-result-object v3 │ │ invoke-virtual {v1, v3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ :try_end_0 │ .catch Ljava/security/KeyStoreException; {:try_start_0 .. :try_end_0} :catch_0 │ │ goto :goto_0 │ │ - .line 78 │ + .line 74 │ :catch_0 │ move-exception v0 │ │ - .line 79 │ + .line 75 │ new-instance v1, Ljava/lang/AssertionError; │ │ invoke-direct {v1, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V │ │ throw v1 │ │ - .line 77 │ + .line 73 │ :cond_1 │ return-object v1 │ .end method │ │ │ # virtual methods │ .method public final a(Ljava/security/cert/X509Certificate;)Z │ .locals 2 │ │ .prologue │ - .line 38 │ - iget-object v0, p0, Lcom/crashlytics/android/az;->b:Ljava/util/HashMap; │ + .line 34 │ + iget-object v0, p0, Lcom/crashlytics/android/internal/aI;->b:Ljava/util/HashMap; │ │ invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/security/cert/X509Certificate; │ │ - .line 39 │ + .line 35 │ if-eqz v0, :cond_0 │ │ invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey; │ │ move-result-object v0 │ │ invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey; │ @@ -285,37 +272,37 @@ │ │ .method public final b(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; │ .locals 4 │ │ .prologue │ const/4 v1, 0x0 │ │ - .line 43 │ - iget-object v0, p0, Lcom/crashlytics/android/az;->b:Ljava/util/HashMap; │ + .line 39 │ + iget-object v0, p0, Lcom/crashlytics/android/internal/aI;->b:Ljava/util/HashMap; │ │ invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal; │ │ move-result-object v2 │ │ invoke-virtual {v0, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/security/cert/X509Certificate; │ │ - .line 45 │ + .line 41 │ if-nez v0, :cond_0 │ │ move-object v0, v1 │ │ - .line 59 │ + .line 55 │ :goto_0 │ return-object v0 │ │ - .line 49 │ + .line 45 │ :cond_0 │ invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; │ │ move-result-object v2 │ │ invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; │ │ @@ -325,31 +312,31 @@ │ │ move-result v2 │ │ if-eqz v2, :cond_1 │ │ move-object v0, v1 │ │ - .line 50 │ + .line 46 │ goto :goto_0 │ │ - .line 54 │ + .line 50 │ :cond_1 │ :try_start_0 │ invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey; │ │ move-result-object v2 │ │ invoke-virtual {p1, v2}, Ljava/security/cert/X509Certificate;->verify(Ljava/security/PublicKey;)V │ :try_end_0 │ .catch Ljava/security/GeneralSecurityException; {:try_start_0 .. :try_end_0} :catch_0 │ │ goto :goto_0 │ │ - .line 56 │ + .line 52 │ :catch_0 │ move-exception v0 │ │ move-object v0, v1 │ │ goto :goto_0 │ .end method │ --- smali/com/crashlytics/android/aw.smali ├── +++ smali/com/crashlytics/android/internal/aQ.smali │┄ Files similar despite different names (score: 34, lower is more similar) │ @@ -1,53 +1,53 @@ │ -.class final Lcom/crashlytics/android/aw; │ +.class public final Lcom/crashlytics/android/internal/aQ; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ │ # instance fields │ .field public final a:Ljava/lang/String; │ │ .field public final b:Ljava/lang/String; │ │ .field public final c:Ljava/lang/String; │ │ -.field public final d:Ljava/lang/String; │ +.field public final d:Z │ │ .field public final e:Ljava/lang/String; │ │ -.field public final f:I │ +.field public final f:Z │ │ .field public final g:Ljava/lang/String; │ │ │ # direct methods │ -.method public constructor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V │ +.method public constructor (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;ZLjava/lang/String;)V │ .locals 0 │ │ .prologue │ .line 18 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ .line 19 │ - iput-object p1, p0, Lcom/crashlytics/android/aw;->a:Ljava/lang/String; │ + iput-object p1, p0, Lcom/crashlytics/android/internal/aQ;->a:Ljava/lang/String; │ │ .line 20 │ - iput-object p2, p0, Lcom/crashlytics/android/aw;->b:Ljava/lang/String; │ + iput-object p2, p0, Lcom/crashlytics/android/internal/aQ;->b:Ljava/lang/String; │ │ .line 21 │ - iput-object p3, p0, Lcom/crashlytics/android/aw;->c:Ljava/lang/String; │ + iput-object p3, p0, Lcom/crashlytics/android/internal/aQ;->c:Ljava/lang/String; │ │ .line 22 │ - iput-object p4, p0, Lcom/crashlytics/android/aw;->d:Ljava/lang/String; │ + iput-boolean p4, p0, Lcom/crashlytics/android/internal/aQ;->d:Z │ │ .line 23 │ - iput-object p5, p0, Lcom/crashlytics/android/aw;->e:Ljava/lang/String; │ + iput-object p5, p0, Lcom/crashlytics/android/internal/aQ;->e:Ljava/lang/String; │ │ .line 24 │ - iput p6, p0, Lcom/crashlytics/android/aw;->f:I │ + iput-boolean p6, p0, Lcom/crashlytics/android/internal/aQ;->f:Z │ │ .line 25 │ - iput-object p7, p0, Lcom/crashlytics/android/aw;->g:Ljava/lang/String; │ + iput-object p7, p0, Lcom/crashlytics/android/internal/aQ;->g:Ljava/lang/String; │ │ .line 26 │ return-void │ .end method │ --- smali/com/crashlytics/android/ar.smali ├── +++ smali/com/crashlytics/android/internal/r.smali │┄ Files similar despite different names (score: 58, lower is more similar) │ @@ -1,428 +1,488 @@ │ -.class final Lcom/crashlytics/android/ar; │ +.class public Lcom/crashlytics/android/internal/r; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ - │ -# static fields │ -.field static final a:Ljava/util/Map; │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "Ljava/util/Map", │ - "<", │ - "Ljava/lang/String;", │ - "Ljava/lang/String;", │ - ">;" │ - } │ - .end annotation │ -.end field │ - │ -.field private static final b:Ljava/io/FilenameFilter; │ - │ -.field private static final c:[S │ - │ - │ -# instance fields │ -.field private final d:Ljava/lang/Object; │ - │ -.field private final e:Lcom/crashlytics/android/ab; │ - │ -.field private f:Ljava/lang/Thread; │ +# interfaces │ +.implements Lcom/crashlytics/android/internal/q; │ │ │ # direct methods │ -.method static constructor ()V │ - .locals 2 │ +.method public constructor ()V │ + .locals 0 │ │ .prologue │ - .line 24 │ - new-instance v0, Lcom/crashlytics/android/as; │ + .line 5 │ + invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - invoke-direct {v0}, Lcom/crashlytics/android/as;->()V │ + return-void │ +.end method │ │ - sput-object v0, Lcom/crashlytics/android/ar;->b:Ljava/io/FilenameFilter; │ +.method public static a(I)I │ + .locals 3 │ │ - .line 31 │ - const-string v0, "X-CRASHLYTICS-INVALID-SESSION" │ + .prologue │ + const/4 v0, 0x0 │ │ - const-string v1, "1" │ + const/4 v1, 0x1 │ │ - invoke-static {v0, v1}, Ljava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; │ + .line 26 │ + const/16 v2, 0xc8 │ │ - move-result-object v0 │ + if-lt p0, v2, :cond_1 │ │ - sput-object v0, Lcom/crashlytics/android/ar;->a:Ljava/util/Map; │ + const/16 v2, 0x12b │ │ - .line 34 │ - const/4 v0, 0x6 │ + if-gt p0, v2, :cond_1 │ │ - new-array v0, v0, [S │ + .line 36 │ + :cond_0 │ + :goto_0 │ + return v0 │ │ - fill-array-data v0, :array_0 │ + .line 28 │ + :cond_1 │ + const/16 v2, 0x12c │ │ - sput-object v0, Lcom/crashlytics/android/ar;->c:[S │ + if-lt p0, v2, :cond_2 │ │ - return-void │ + const/16 v2, 0x18f │ │ - :array_0 │ - .array-data 2 │ - 0xas │ - 0x14s │ - 0x1es │ - 0x3cs │ - 0x78s │ - 0x12cs │ - .end array-data │ -.end method │ + if-gt p0, v2, :cond_2 │ │ -.method public constructor (Lcom/crashlytics/android/ab;)V │ - .locals 2 │ + move v0, v1 │ │ - .prologue │ - .line 41 │ - invoke-direct {p0}, Ljava/lang/Object;->()V │ + .line 29 │ + goto :goto_0 │ │ - .line 37 │ - new-instance v0, Ljava/lang/Object; │ + .line 30 │ + :cond_2 │ + const/16 v2, 0x190 │ │ - invoke-direct {v0}, Ljava/lang/Object;->()V │ + if-lt p0, v2, :cond_3 │ │ - iput-object v0, p0, Lcom/crashlytics/android/ar;->d:Ljava/lang/Object; │ + const/16 v2, 0x1f3 │ │ - .line 42 │ - if-nez p1, :cond_0 │ + if-le p0, v2, :cond_0 │ │ - .line 43 │ - new-instance v0, Ljava/lang/IllegalArgumentException; │ + .line 32 │ + :cond_3 │ + const/16 v0, 0x1f4 │ │ - const-string v1, "createReportCall must not be null." │ + if-lt p0, v0, :cond_4 │ │ - invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ + move v0, v1 │ │ - throw v0 │ + .line 33 │ + goto :goto_0 │ │ - .line 45 │ - :cond_0 │ - iput-object p1, p0, Lcom/crashlytics/android/ar;->e:Lcom/crashlytics/android/ab; │ + :cond_4 │ + move v0, v1 │ │ - .line 46 │ - return-void │ + .line 36 │ + goto :goto_0 │ .end method │ │ -.method static synthetic a(Lcom/crashlytics/android/ar;Ljava/lang/Thread;)Ljava/lang/Thread; │ +.method static synthetic a(Landroid/content/Context;)Landroid/app/Activity; │ .locals 1 │ │ .prologue │ - .line 22 │ - const/4 v0, 0x0 │ + .line 276 │ + instance-of v0, p0, Landroid/app/Activity; │ │ - iput-object v0, p0, Lcom/crashlytics/android/ar;->f:Ljava/lang/Thread; │ + if-eqz v0, :cond_0 │ │ - return-object v0 │ + check-cast p0, Landroid/app/Activity; │ + │ + :goto_0 │ + return-object p0 │ + │ + :cond_0 │ + const/4 p0, 0x0 │ + │ + goto :goto_0 │ .end method │ │ -.method static synthetic b()[S │ - .locals 1 │ +.method public static a(Landroid/content/Context;Z)Ljava/lang/String; │ + .locals 6 │ │ .prologue │ + const/4 v1, 0x0 │ + │ + .line 19 │ .line 22 │ - sget-object v0, Lcom/crashlytics/android/ar;->c:[S │ + :try_start_0 │ + invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ │ - return-object v0 │ -.end method │ + move-result-object v0 │ │ + .line 23 │ + invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; │ │ -# virtual methods │ -.method final a()Ljava/util/List; │ - .locals 7 │ - .annotation system Ldalvik/annotation/Signature; │ - value = { │ - "()", │ - "Ljava/util/List", │ - "<", │ - "Lcom/crashlytics/android/aq;", │ - ">;" │ - } │ - .end annotation │ - │ - .prologue │ - .line 108 │ - const-string v0, "Checking for crash reports..." │ + move-result-object v2 │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + .line 24 │ + invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; │ │ - .line 111 │ - iget-object v1, p0, Lcom/crashlytics/android/ar;->d:Ljava/lang/Object; │ + move-result-object v0 │ │ - monitor-enter v1 │ + const/16 v3, 0x80 │ │ - .line 112 │ - :try_start_0 │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->j()Ljava/io/File; │ + invoke-virtual {v0, v2, v3}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; │ │ move-result-object v0 │ │ - sget-object v2, Lcom/crashlytics/android/ar;->b:Ljava/io/FilenameFilter; │ + .line 26 │ + iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->metaData:Landroid/os/Bundle; │ │ - invoke-virtual {v0, v2}, Ljava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; │ + .line 27 │ + if-eqz v0, :cond_2 │ │ - move-result-object v2 │ + .line 28 │ + const-string v2, "com.crashlytics.ApiKey" │ │ - .line 113 │ - monitor-exit v1 │ + invoke-virtual {v0, v2}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; │ :try_end_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 115 │ - new-instance v1, Ljava/util/LinkedList; │ + move-result-object v0 │ │ - invoke-direct {v1}, Ljava/util/LinkedList;->()V │ + .line 36 │ + :goto_0 │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->e(Ljava/lang/String;)Z │ │ - .line 116 │ - array-length v3, v2 │ + move-result v2 │ │ - const/4 v0, 0x0 │ + if-eqz v2, :cond_0 │ │ - :goto_0 │ - if-ge v0, v3, :cond_0 │ + .line 38 │ + const-string v2, "com.crashlytics.ApiKey" │ │ - aget-object v4, v2, v0 │ + const-string v3, "string" │ │ - .line 117 │ - new-instance v5, Ljava/lang/StringBuilder; │ + invoke-static {p0, v2, v3}, Lcom/crashlytics/android/internal/ab;->a(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I │ │ - const-string v6, "Found crash report " │ + move-result v2 │ │ - invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + .line 39 │ + if-eqz v2, :cond_0 │ │ - invoke-virtual {v4}, Ljava/io/File;->getPath()Ljava/lang/String; │ + .line 40 │ + invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ - move-result-object v6 │ + move-result-object v0 │ │ - invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v0, v2}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String; │ │ - move-result-object v5 │ + move-result-object v0 │ │ - invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + .line 44 │ + :cond_0 │ + invoke-static {v0}, Lcom/crashlytics/android/internal/ab;->e(Ljava/lang/String;)Z │ │ - move-result-object v5 │ + move-result v2 │ │ - invoke-static {v5}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + if-eqz v2, :cond_4 │ │ - .line 118 │ - new-instance v5, Lcom/crashlytics/android/aq; │ + .line 45 │ + if-nez p1, :cond_1 │ │ - invoke-direct {v5, v4}, Lcom/crashlytics/android/aq;->(Ljava/io/File;)V │ + invoke-static {p0}, Lcom/crashlytics/android/internal/ab;->f(Landroid/content/Context;)Z │ │ - invoke-interface {v1, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ + move-result v2 │ │ - .line 116 │ - add-int/lit8 v0, v0, 0x1 │ + if-eqz v2, :cond_3 │ │ - goto :goto_0 │ + .line 46 │ + :cond_1 │ + new-instance v0, Ljava/lang/IllegalArgumentException; │ │ - .line 113 │ - :catchall_0 │ - move-exception v0 │ + const-string v1, "Crashlytics could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element \n\t" │ │ - monitor-exit v1 │ + invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v0 │ │ - .line 121 │ - :cond_0 │ - invoke-interface {v1}, Ljava/util/List;->size()I │ + .line 30 │ + :catch_0 │ + move-exception v0 │ │ - move-result v0 │ + .line 33 │ + invoke-static {}, Lcom/crashlytics/android/internal/y;->a()Lcom/crashlytics/android/internal/v; │ │ - if-nez v0, :cond_1 │ + move-result-object v2 │ │ - .line 122 │ - const-string v0, "No reports found." │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - invoke-static {v0}, Lcom/crashlytics/android/aB;->c(Ljava/lang/String;)V │ + move-result-object v2 │ │ - .line 125 │ - :cond_1 │ - return-object v1 │ -.end method │ + const-string v3, "Crashlytics" │ │ -.method public final declared-synchronized a(Landroid/content/Context;F)V │ - .locals 3 │ + new-instance v4, Ljava/lang/StringBuilder; │ │ - .prologue │ - .line 53 │ - monitor-enter p0 │ + const-string v5, "Caught non-fatal exception while retrieving apiKey: " │ │ - :try_start_0 │ - iget-object v0, p0, Lcom/crashlytics/android/ar;->f:Ljava/lang/Thread; │ + invoke-direct {v4, v5}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ │ - if-nez v0, :cond_0 │ + invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ │ - .line 54 │ - new-instance v0, Ljava/lang/Thread; │ + move-result-object v0 │ │ - new-instance v1, Lcom/crashlytics/android/at; │ + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - invoke-direct {v1, p0, p1, p2}, Lcom/crashlytics/android/at;->(Lcom/crashlytics/android/ar;Landroid/content/Context;F)V │ + move-result-object v0 │ │ - const-string v2, "Crashlytics Report Uploader" │ + invoke-interface {v2, v3, v0}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;)V │ │ - invoke-direct {v0, v1, v2}, Ljava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V │ + :cond_2 │ + move-object v0, v1 │ │ - iput-object v0, p0, Lcom/crashlytics/android/ar;->f:Ljava/lang/Thread; │ + goto :goto_0 │ │ - .line 55 │ - iget-object v0, p0, Lcom/crashlytics/android/ar;->f:Ljava/lang/Thread; │ + .line 48 │ + :cond_3 │ + invoke-static {}, Lcom/crashlytics/android/internal/y;->a()Lcom/crashlytics/android/internal/v; │ │ - invoke-virtual {v0}, Ljava/lang/Thread;->start()V │ - :try_end_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + move-result-object v2 │ │ - .line 57 │ - :cond_0 │ - monitor-exit p0 │ + invoke-virtual {v2}, Lcom/crashlytics/android/internal/v;->b()Lcom/crashlytics/android/internal/q; │ │ - return-void │ + move-result-object v2 │ │ - .line 53 │ - :catchall_0 │ - move-exception v0 │ + const-string v3, "Crashlytics" │ │ - monitor-exit p0 │ + const-string v4, "Crashlytics could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element \n\t" │ │ - throw v0 │ + invoke-interface {v2, v3, v4, v1}, Lcom/crashlytics/android/internal/q;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 52 │ + :cond_4 │ + return-object v0 │ .end method │ │ -.method final a(Lcom/crashlytics/android/aq;)Z │ - .locals 7 │ +.method static synthetic b(Landroid/content/Context;)Landroid/app/Application; │ + .locals 1 │ │ .prologue │ - .line 73 │ - const/4 v0, 0x0 │ + .line 276 │ + instance-of v0, p0, Landroid/app/Application; │ │ - .line 74 │ - iget-object v2, p0, Lcom/crashlytics/android/ar;->d:Ljava/lang/Object; │ + if-eqz v0, :cond_0 │ │ - monitor-enter v2 │ + check-cast p0, Landroid/app/Application; │ │ - .line 80 │ - :try_start_0 │ - invoke-static {}, Lcom/crashlytics/android/aB;->d()Z │ + :goto_0 │ + return-object p0 │ │ - .line 88 │ - new-instance v1, Lcom/crashlytics/android/aa; │ + :cond_0 │ + instance-of v0, p0, Landroid/app/Activity; │ │ - invoke-static {}, Lcom/crashlytics/android/Crashlytics;->i()Ljava/lang/String; │ + if-eqz v0, :cond_1 │ │ - move-result-object v3 │ + check-cast p0, Landroid/app/Activity; │ │ - invoke-direct {v1, v3, p1}, Lcom/crashlytics/android/aa;->(Ljava/lang/String;Lcom/crashlytics/android/aq;)V │ + invoke-virtual {p0}, Landroid/app/Activity;->getApplication()Landroid/app/Application; │ │ - .line 89 │ - iget-object v3, p0, Lcom/crashlytics/android/ar;->e:Lcom/crashlytics/android/ab; │ + move-result-object p0 │ │ - invoke-interface {v3, v1}, Lcom/crashlytics/android/ab;->a(Lcom/crashlytics/android/aa;)Z │ + goto :goto_0 │ │ - move-result v3 │ + :cond_1 │ + instance-of v0, p0, Landroid/app/Service; │ │ - .line 91 │ - const/4 v4, 0x4 │ + if-eqz v0, :cond_2 │ │ - const-string v5, "Crashlytics" │ + check-cast p0, Landroid/app/Service; │ │ - new-instance v6, Ljava/lang/StringBuilder; │ + invoke-virtual {p0}, Landroid/app/Service;->getApplication()Landroid/app/Application; │ │ - const-string v1, "Crashlytics report upload " │ + move-result-object p0 │ │ - invoke-direct {v6, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + goto :goto_0 │ │ - if-eqz v3, :cond_1 │ + :cond_2 │ + invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ │ - const-string v1, "complete: " │ + move-result-object v0 │ │ - :goto_0 │ - invoke-virtual {v6, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + instance-of v0, v0, Landroid/app/Application; │ │ - move-result-object v1 │ + if-eqz v0, :cond_3 │ │ - invoke-virtual {p1}, Lcom/crashlytics/android/aq;->b()Ljava/lang/String; │ + invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context; │ │ - move-result-object v6 │ + move-result-object v0 │ │ - invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + check-cast v0, Landroid/app/Application; │ │ - move-result-object v1 │ + move-object p0, v0 │ │ - invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + goto :goto_0 │ │ - move-result-object v1 │ + :cond_3 │ + const/4 p0, 0x0 │ │ - invoke-static {v4, v5, v1}, Lcom/crashlytics/android/aB;->a(ILjava/lang/String;Ljava/lang/String;)V │ + goto :goto_0 │ +.end method │ │ - .line 94 │ - if-eqz v3, :cond_0 │ +.method private static b(I)Z │ + .locals 1 │ │ - .line 95 │ - invoke-virtual {p1}, Lcom/crashlytics/android/aq;->a()Z │ - :try_end_0 │ - .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ - .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ + .prologue │ + .line 9 │ + invoke-static {}, Lcom/crashlytics/android/internal/y;->a()Lcom/crashlytics/android/internal/v; │ + │ + move-result-object v0 │ + │ + invoke-virtual {v0}, Lcom/crashlytics/android/internal/v;->g()I │ + │ + move-result v0 │ + │ + if-gt v0, p0, :cond_0 │ │ - .line 96 │ const/4 v0, 0x1 │ │ - .line 103 │ + :goto_0 │ + return v0 │ + │ :cond_0 │ - :goto_1 │ - :try_start_1 │ - monitor-exit v2 │ - :try_end_1 │ - .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ + const/4 v0, 0x0 │ + │ + goto :goto_0 │ +.end method │ │ - .line 104 │ - return v0 │ │ - .line 91 │ +# virtual methods │ +.method public final a(ILjava/lang/String;Ljava/lang/String;)V │ + .locals 1 │ + │ + .prologue │ + .line 74 │ + const/4 v0, 0x0 │ + │ + invoke-virtual {p0, p1, p2, p3, v0}, Lcom/crashlytics/android/internal/r;->a(ILjava/lang/String;Ljava/lang/String;Z)V │ + │ + .line 75 │ + return-void │ +.end method │ + │ +.method public final a(ILjava/lang/String;Ljava/lang/String;Z)V │ + .locals 1 │ + │ + .prologue │ + .line 79 │ + if-nez p4, :cond_0 │ + │ + invoke-static {p1}, Lcom/crashlytics/android/internal/r;->b(I)Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_1 │ + │ + .line 80 │ + :cond_0 │ + invoke-static {p1, p2, p3}, Landroid/util/Log;->println(ILjava/lang/String;Ljava/lang/String;)I │ + │ + .line 82 │ :cond_1 │ - :try_start_2 │ - const-string v1, "FAILED: " │ - :try_end_2 │ - .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 │ - .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ + return-void │ +.end method │ │ - goto :goto_0 │ +.method public final a(Ljava/lang/String;Ljava/lang/String;)V │ + .locals 1 │ │ - .line 98 │ - :catch_0 │ - move-exception v1 │ + .prologue │ + .line 49 │ + const/4 v0, 0x3 │ │ - .line 101 │ - :try_start_3 │ - new-instance v3, Ljava/lang/StringBuilder; │ + invoke-static {v0}, Lcom/crashlytics/android/internal/r;->b(I)Z │ │ - const-string v4, "Error occurred sending report " │ + move-result v0 │ │ - invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V │ + if-eqz v0, :cond_0 │ │ - invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; │ + const/4 v0, 0x0 │ │ - move-result-object v3 │ + invoke-static {p1, p2, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ - invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + .line 50 │ + :cond_0 │ + return-void │ +.end method │ │ - move-result-object v3 │ +.method public final a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + .locals 1 │ │ - invoke-static {v3, v1}, Lcom/crashlytics/android/aB;->a(Ljava/lang/String;Ljava/lang/Throwable;)V │ - :try_end_3 │ - .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ + .prologue │ + .line 42 │ + const/4 v0, 0x6 │ │ - goto :goto_1 │ + invoke-static {v0}, Lcom/crashlytics/android/internal/r;->b(I)Z │ │ - .line 103 │ - :catchall_0 │ - move-exception v0 │ + move-result v0 │ │ - monitor-exit v2 │ + if-eqz v0, :cond_0 │ │ - throw v0 │ + .line 43 │ + invoke-static {p1, p2, p3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + │ + .line 45 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method public final b(Ljava/lang/String;Ljava/lang/String;)V │ + .locals 1 │ + │ + .prologue │ + .line 59 │ + const/4 v0, 0x4 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/r;->b(I)Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_0 │ + │ + const/4 v0, 0x0 │ + │ + invoke-static {p1, p2, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + │ + .line 60 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method public final c(Ljava/lang/String;Ljava/lang/String;)V │ + .locals 1 │ + │ + .prologue │ + .line 64 │ + const/4 v0, 0x5 │ + │ + invoke-static {v0}, Lcom/crashlytics/android/internal/r;->b(I)Z │ + │ + move-result v0 │ + │ + if-eqz v0, :cond_0 │ + │ + const/4 v0, 0x0 │ + │ + invoke-static {p1, p2, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + │ + .line 65 │ + :cond_0 │ + return-void │ +.end method │ + │ +.method public final d(Ljava/lang/String;Ljava/lang/String;)V │ + .locals 1 │ + │ + .prologue │ + .line 69 │ + const/4 v0, 0x0 │ + │ + invoke-virtual {p0, p1, p2, v0}, Lcom/crashlytics/android/internal/r;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V │ + │ + .line 70 │ + return-void │ .end method │ --- smali/com/crashlytics/android/HttpRequest$Operation.smali ├── +++ smali/com/crashlytics/android/internal/aE.smali │┄ Files similar despite different names (score: 59, lower is more similar) │ @@ -1,8 +1,8 @@ │ -.class public abstract Lcom/crashlytics/android/HttpRequest$Operation; │ +.class public abstract Lcom/crashlytics/android/internal/aE; │ .super Ljava/lang/Object; │ .source "SourceFile" │ │ # interfaces │ .implements Ljava/util/concurrent/Callable; │ │ │ @@ -20,15 +20,15 @@ │ │ │ # direct methods │ .method protected constructor ()V │ .locals 0 │ │ .prologue │ - .line 578 │ + .line 605 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ return-void │ .end method │ │ │ # virtual methods │ @@ -37,15 +37,15 @@ │ value = { │ "()TV;" │ } │ .end annotation │ │ .annotation system Ldalvik/annotation/Throws; │ value = { │ - Lcom/crashlytics/android/HttpRequest$HttpRequestException;, │ + Lcom/crashlytics/android/internal/aD;, │ Ljava/io/IOException; │ } │ .end annotation │ .end method │ │ .method protected abstract b()V │ .annotation system Ldalvik/annotation/Throws; │ @@ -61,108 +61,108 @@ │ value = { │ "()TV;" │ } │ .end annotation │ │ .annotation system Ldalvik/annotation/Throws; │ value = { │ - Lcom/crashlytics/android/HttpRequest$HttpRequestException; │ + Lcom/crashlytics/android/internal/aD; │ } │ .end annotation │ │ .prologue │ const/4 v1, 0x1 │ │ - .line 597 │ + .line 624 │ const/4 v2, 0x0 │ │ - .line 599 │ + .line 626 │ :try_start_0 │ - invoke-virtual {p0}, Lcom/crashlytics/android/HttpRequest$Operation;->a()Ljava/lang/Object; │ + invoke-virtual {p0}, Lcom/crashlytics/android/internal/aE;->a()Ljava/lang/Object; │ :try_end_0 │ - .catch Lcom/crashlytics/android/HttpRequest$HttpRequestException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Lcom/crashlytics/android/internal/aD; {:try_start_0 .. :try_end_0} :catch_1 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_2 │ .catchall {:try_start_0 .. :try_end_0} :catchall_1 │ │ move-result-object v0 │ │ - .line 608 │ + .line 635 │ :try_start_1 │ - invoke-virtual {p0}, Lcom/crashlytics/android/HttpRequest$Operation;->b()V │ + invoke-virtual {p0}, Lcom/crashlytics/android/internal/aE;->b()V │ :try_end_1 │ .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_0 │ │ - .line 612 │ + .line 639 │ return-object v0 │ │ - .line 609 │ + .line 636 │ :catch_0 │ move-exception v0 │ │ - .line 610 │ - new-instance v1, Lcom/crashlytics/android/HttpRequest$HttpRequestException; │ + .line 637 │ + new-instance v1, Lcom/crashlytics/android/internal/aD; │ │ - invoke-direct {v1, v0}, Lcom/crashlytics/android/HttpRequest$HttpRequestException;->(Ljava/io/IOException;)V │ + invoke-direct {v1, v0}, Lcom/crashlytics/android/internal/aD;->(Ljava/io/IOException;)V │ │ throw v1 │ │ - .line 600 │ + .line 627 │ :catch_1 │ move-exception v0 │ │ - .line 602 │ + .line 629 │ :try_start_2 │ throw v0 │ :try_end_2 │ .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ │ - .line 607 │ + .line 634 │ :catchall_0 │ move-exception v0 │ │ - .line 608 │ + .line 635 │ :goto_0 │ :try_start_3 │ - invoke-virtual {p0}, Lcom/crashlytics/android/HttpRequest$Operation;->b()V │ + invoke-virtual {p0}, Lcom/crashlytics/android/internal/aE;->b()V │ :try_end_3 │ .catch Ljava/io/IOException; {:try_start_3 .. :try_end_3} :catch_3 │ │ - .line 612 │ + .line 639 │ :cond_0 │ throw v0 │ │ - .line 603 │ + .line 630 │ :catch_2 │ move-exception v0 │ │ - .line 605 │ + .line 632 │ :try_start_4 │ - new-instance v2, Lcom/crashlytics/android/HttpRequest$HttpRequestException; │ + new-instance v2, Lcom/crashlytics/android/internal/aD; │ │ - invoke-direct {v2, v0}, Lcom/crashlytics/android/HttpRequest$HttpRequestException;->(Ljava/io/IOException;)V │ + invoke-direct {v2, v0}, Lcom/crashlytics/android/internal/aD;->(Ljava/io/IOException;)V │ │ throw v2 │ :try_end_4 │ .catchall {:try_start_4 .. :try_end_4} :catchall_0 │ │ - .line 609 │ + .line 636 │ :catch_3 │ move-exception v2 │ │ - .line 610 │ + .line 637 │ if-nez v1, :cond_0 │ │ - .line 611 │ - new-instance v0, Lcom/crashlytics/android/HttpRequest$HttpRequestException; │ + .line 638 │ + new-instance v0, Lcom/crashlytics/android/internal/aD; │ │ - invoke-direct {v0, v2}, Lcom/crashlytics/android/HttpRequest$HttpRequestException;->(Ljava/io/IOException;)V │ + invoke-direct {v0, v2}, Lcom/crashlytics/android/internal/aD;->(Ljava/io/IOException;)V │ │ throw v0 │ │ - .line 607 │ + .line 634 │ :catchall_1 │ move-exception v0 │ │ move v1, v2 │ │ goto :goto_0 │ .end method