From 808196f139e93395f1f331f6c7e92ddd66c05979 Mon Sep 17 00:00:00 2001 From: Jun Mukai Date: Wed, 28 Oct 2015 16:46:44 -0700 Subject: [PATCH] Introduce animated pointer icon for STYLE_WAIT. Change-Id: I893f8276e09351db6187c553f349008794b95690 --- core/java/android/view/PointerIcon.java | 38 +++++++++++- core/jni/android_view_PointerIcon.cpp | 22 +++++++ core/jni/android_view_PointerIcon.h | 6 ++ core/res/res/drawable-mdpi/pointer_wait_0.png | Bin 0 -> 606 bytes core/res/res/drawable-mdpi/pointer_wait_1.png | Bin 0 -> 603 bytes .../res/res/drawable-mdpi/pointer_wait_10.png | Bin 0 -> 619 bytes .../res/res/drawable-mdpi/pointer_wait_11.png | Bin 0 -> 605 bytes .../res/res/drawable-mdpi/pointer_wait_12.png | Bin 0 -> 617 bytes .../res/res/drawable-mdpi/pointer_wait_13.png | Bin 0 -> 626 bytes .../res/res/drawable-mdpi/pointer_wait_14.png | Bin 0 -> 629 bytes .../res/res/drawable-mdpi/pointer_wait_15.png | Bin 0 -> 623 bytes .../res/res/drawable-mdpi/pointer_wait_16.png | Bin 0 -> 610 bytes .../res/res/drawable-mdpi/pointer_wait_17.png | Bin 0 -> 594 bytes .../res/res/drawable-mdpi/pointer_wait_18.png | Bin 0 -> 652 bytes .../res/res/drawable-mdpi/pointer_wait_19.png | Bin 0 -> 616 bytes core/res/res/drawable-mdpi/pointer_wait_2.png | Bin 0 -> 635 bytes .../res/res/drawable-mdpi/pointer_wait_20.png | Bin 0 -> 623 bytes .../res/res/drawable-mdpi/pointer_wait_21.png | Bin 0 -> 675 bytes .../res/res/drawable-mdpi/pointer_wait_22.png | Bin 0 -> 699 bytes .../res/res/drawable-mdpi/pointer_wait_23.png | Bin 0 -> 708 bytes .../res/res/drawable-mdpi/pointer_wait_24.png | Bin 0 -> 687 bytes .../res/res/drawable-mdpi/pointer_wait_25.png | Bin 0 -> 697 bytes .../res/res/drawable-mdpi/pointer_wait_26.png | Bin 0 -> 668 bytes .../res/res/drawable-mdpi/pointer_wait_27.png | Bin 0 -> 678 bytes .../res/res/drawable-mdpi/pointer_wait_28.png | Bin 0 -> 668 bytes .../res/res/drawable-mdpi/pointer_wait_29.png | Bin 0 -> 650 bytes core/res/res/drawable-mdpi/pointer_wait_3.png | Bin 0 -> 657 bytes .../res/res/drawable-mdpi/pointer_wait_30.png | Bin 0 -> 674 bytes .../res/res/drawable-mdpi/pointer_wait_31.png | Bin 0 -> 653 bytes .../res/res/drawable-mdpi/pointer_wait_32.png | Bin 0 -> 654 bytes .../res/res/drawable-mdpi/pointer_wait_33.png | Bin 0 -> 629 bytes .../res/res/drawable-mdpi/pointer_wait_34.png | Bin 0 -> 638 bytes .../res/res/drawable-mdpi/pointer_wait_35.png | Bin 0 -> 608 bytes core/res/res/drawable-mdpi/pointer_wait_4.png | Bin 0 -> 670 bytes core/res/res/drawable-mdpi/pointer_wait_5.png | Bin 0 -> 639 bytes core/res/res/drawable-mdpi/pointer_wait_6.png | Bin 0 -> 603 bytes core/res/res/drawable-mdpi/pointer_wait_7.png | Bin 0 -> 623 bytes core/res/res/drawable-mdpi/pointer_wait_8.png | Bin 0 -> 609 bytes core/res/res/drawable-mdpi/pointer_wait_9.png | Bin 0 -> 634 bytes .../res/res/drawable-xhdpi/pointer_wait_0.png | Bin 0 -> 975 bytes .../res/res/drawable-xhdpi/pointer_wait_1.png | Bin 0 -> 1017 bytes .../res/drawable-xhdpi/pointer_wait_10.png | Bin 0 -> 954 bytes .../res/drawable-xhdpi/pointer_wait_11.png | Bin 0 -> 989 bytes .../res/drawable-xhdpi/pointer_wait_12.png | Bin 0 -> 964 bytes .../res/drawable-xhdpi/pointer_wait_13.png | Bin 0 -> 1012 bytes .../res/drawable-xhdpi/pointer_wait_14.png | Bin 0 -> 977 bytes .../res/drawable-xhdpi/pointer_wait_15.png | Bin 0 -> 984 bytes .../res/drawable-xhdpi/pointer_wait_16.png | Bin 0 -> 945 bytes .../res/drawable-xhdpi/pointer_wait_17.png | Bin 0 -> 956 bytes .../res/drawable-xhdpi/pointer_wait_18.png | Bin 0 -> 1010 bytes .../res/drawable-xhdpi/pointer_wait_19.png | Bin 0 -> 1031 bytes .../res/res/drawable-xhdpi/pointer_wait_2.png | Bin 0 -> 1037 bytes .../res/drawable-xhdpi/pointer_wait_20.png | Bin 0 -> 1049 bytes .../res/drawable-xhdpi/pointer_wait_21.png | Bin 0 -> 1055 bytes .../res/drawable-xhdpi/pointer_wait_22.png | Bin 0 -> 1102 bytes .../res/drawable-xhdpi/pointer_wait_23.png | Bin 0 -> 1051 bytes .../res/drawable-xhdpi/pointer_wait_24.png | Bin 0 -> 1053 bytes .../res/drawable-xhdpi/pointer_wait_25.png | Bin 0 -> 1092 bytes .../res/drawable-xhdpi/pointer_wait_26.png | Bin 0 -> 1033 bytes .../res/drawable-xhdpi/pointer_wait_27.png | Bin 0 -> 1064 bytes .../res/drawable-xhdpi/pointer_wait_28.png | Bin 0 -> 1026 bytes .../res/drawable-xhdpi/pointer_wait_29.png | Bin 0 -> 1081 bytes .../res/res/drawable-xhdpi/pointer_wait_3.png | Bin 0 -> 1006 bytes .../res/drawable-xhdpi/pointer_wait_30.png | Bin 0 -> 1015 bytes .../res/drawable-xhdpi/pointer_wait_31.png | Bin 0 -> 1055 bytes .../res/drawable-xhdpi/pointer_wait_32.png | Bin 0 -> 1038 bytes .../res/drawable-xhdpi/pointer_wait_33.png | Bin 0 -> 1005 bytes .../res/drawable-xhdpi/pointer_wait_34.png | Bin 0 -> 974 bytes .../res/drawable-xhdpi/pointer_wait_35.png | Bin 0 -> 965 bytes .../res/res/drawable-xhdpi/pointer_wait_4.png | Bin 0 -> 1015 bytes .../res/res/drawable-xhdpi/pointer_wait_5.png | Bin 0 -> 1009 bytes .../res/res/drawable-xhdpi/pointer_wait_6.png | Bin 0 -> 1002 bytes .../res/res/drawable-xhdpi/pointer_wait_7.png | Bin 0 -> 986 bytes .../res/res/drawable-xhdpi/pointer_wait_8.png | Bin 0 -> 953 bytes .../res/res/drawable-xhdpi/pointer_wait_9.png | Bin 0 -> 937 bytes core/res/res/drawable/pointer_wait.xml | 38 ++++++++++++ core/res/res/drawable/pointer_wait_icon.xml | 5 ++ core/res/res/values/attrs.xml | 2 + core/res/res/values/styles.xml | 1 + libs/input/PointerController.cpp | 54 ++++++++++++++++-- libs/input/PointerController.h | 21 +++++-- ...droid_server_input_InputManagerService.cpp | 45 +++++++++++---- 82 files changed, 208 insertions(+), 24 deletions(-) create mode 100644 core/res/res/drawable-mdpi/pointer_wait_0.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_1.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_10.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_11.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_12.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_13.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_14.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_15.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_16.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_17.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_18.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_19.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_2.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_20.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_21.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_22.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_23.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_24.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_25.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_26.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_27.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_28.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_29.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_3.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_30.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_31.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_32.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_33.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_34.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_35.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_4.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_5.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_6.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_7.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_8.png create mode 100644 core/res/res/drawable-mdpi/pointer_wait_9.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_0.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_1.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_10.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_11.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_12.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_13.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_14.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_15.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_16.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_17.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_18.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_19.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_2.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_20.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_21.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_22.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_23.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_24.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_25.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_26.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_27.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_28.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_29.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_3.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_30.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_31.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_32.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_33.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_34.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_35.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_4.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_5.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_6.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_7.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_8.png create mode 100644 core/res/res/drawable-xhdpi/pointer_wait_9.png create mode 100644 core/res/res/drawable/pointer_wait.xml create mode 100644 core/res/res/drawable/pointer_wait_icon.xml diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java index 88e9a952f778c..b61706ef44243 100644 --- a/core/java/android/view/PointerIcon.java +++ b/core/java/android/view/PointerIcon.java @@ -24,6 +24,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.graphics.Bitmap; +import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Parcel; @@ -142,6 +143,10 @@ public final class PointerIcon implements Parcelable { private Bitmap mBitmap; private float mHotSpotX; private float mHotSpotY; + // The bitmaps for the additional frame of animated pointer icon. Note that the first frame + // will be stored in mBitmap. + private Bitmap mBitmapFrames[]; + private int mDurationPerFrame; private PointerIcon(int style) { mStyle = style; @@ -472,6 +477,36 @@ public final class PointerIcon implements Parcelable { } else { drawable = context.getDrawable(bitmapRes); } + if (drawable instanceof AnimationDrawable) { + // Extract animation frame bitmaps. + final AnimationDrawable animationDrawable = (AnimationDrawable) drawable; + final int frames = animationDrawable.getNumberOfFrames(); + drawable = animationDrawable.getFrame(0); + if (frames == 1) { + Log.w(TAG, "Animation icon with single frame -- simply treating the first " + + "frame as a normal bitmap icon."); + } else { + // Assumes they have the exact duration. + mDurationPerFrame = animationDrawable.getDuration(0); + mBitmapFrames = new Bitmap[frames - 1]; + final int width = drawable.getIntrinsicWidth(); + final int height = drawable.getIntrinsicHeight(); + for (int i = 1; i < frames; ++i) { + Drawable drawableFrame = animationDrawable.getFrame(i); + if (!(drawableFrame instanceof BitmapDrawable)) { + throw new IllegalArgumentException("Frame of an animated pointer icon " + + "must refer to a bitmap drawable."); + } + if (drawableFrame.getIntrinsicWidth() != width || + drawableFrame.getIntrinsicHeight() != height) { + throw new IllegalArgumentException("The bitmap size of " + i + "-th frame " + + "is different. All frames should have the exact same size and " + + "share the same hotspot."); + } + mBitmapFrames[i - 1] = ((BitmapDrawable)drawableFrame).getBitmap(); + } + } + } if (!(drawable instanceof BitmapDrawable)) { throw new IllegalArgumentException(" bitmap attribute must " + "refer to a bitmap drawable."); @@ -509,8 +544,7 @@ public final class PointerIcon implements Parcelable { case STYLE_HELP: return com.android.internal.R.styleable.Pointer_pointerIconHelp; case STYLE_WAIT: - // falls back to the default icon because no animation support. - return com.android.internal.R.styleable.Pointer_pointerIconArrow; + return com.android.internal.R.styleable.Pointer_pointerIconWait; case STYLE_CELL: return com.android.internal.R.styleable.Pointer_pointerIconCell; case STYLE_CROSSHAIR: diff --git a/core/jni/android_view_PointerIcon.cpp b/core/jni/android_view_PointerIcon.cpp index d04adbfc742b4..d7e2c028a23ff 100644 --- a/core/jni/android_view_PointerIcon.cpp +++ b/core/jni/android_view_PointerIcon.cpp @@ -24,6 +24,7 @@ #include #include #include +#include "ScopedLocalRef.h" #include "core_jni_helpers.h" @@ -35,6 +36,8 @@ static struct { jfieldID mBitmap; jfieldID mHotSpotX; jfieldID mHotSpotY; + jfieldID mBitmapFrames; + jfieldID mDurationPerFrame; jmethodID getSystemIcon; jmethodID load; } gPointerIconClassInfo; @@ -84,6 +87,19 @@ status_t android_view_PointerIcon_load(JNIEnv* env, jobject pointerIconObj, jobj env->DeleteLocalRef(bitmapObj); } + ScopedLocalRef bitmapFramesObj(env, reinterpret_cast( + env->GetObjectField(loadedPointerIconObj, gPointerIconClassInfo.mBitmapFrames))); + if (bitmapFramesObj.get()) { + outPointerIcon->durationPerFrame = env->GetIntField( + loadedPointerIconObj, gPointerIconClassInfo.mDurationPerFrame); + jsize size = env->GetArrayLength(bitmapFramesObj.get()); + outPointerIcon->bitmapFrames.resize(size); + for (jsize i = 0; i < size; ++i) { + ScopedLocalRef bitmapObj(env, env->GetObjectArrayElement(bitmapFramesObj.get(), i)); + GraphicsJNI::getSkBitmap(env, bitmapObj.get(), &(outPointerIcon->bitmapFrames[i])); + } + } + env->DeleteLocalRef(loadedPointerIconObj); return OK; } @@ -121,6 +137,12 @@ int register_android_view_PointerIcon(JNIEnv* env) { gPointerIconClassInfo.mHotSpotY = GetFieldIDOrDie(env, gPointerIconClassInfo.clazz, "mHotSpotY", "F"); + gPointerIconClassInfo.mBitmapFrames = GetFieldIDOrDie(env, gPointerIconClassInfo.clazz, + "mBitmapFrames", "[Landroid/graphics/Bitmap;"); + + gPointerIconClassInfo.mDurationPerFrame = GetFieldIDOrDie(env, gPointerIconClassInfo.clazz, + "mDurationPerFrame", "I"); + gPointerIconClassInfo.getSystemIcon = GetStaticMethodIDOrDie(env, gPointerIconClassInfo.clazz, "getSystemIcon", "(Landroid/content/Context;I)Landroid/view/PointerIcon;"); diff --git a/core/jni/android_view_PointerIcon.h b/core/jni/android_view_PointerIcon.h index 86f288d0d7114..ca080850df940 100644 --- a/core/jni/android_view_PointerIcon.h +++ b/core/jni/android_view_PointerIcon.h @@ -19,6 +19,8 @@ #include "jni.h" +#include + #include #include @@ -69,6 +71,8 @@ struct PointerIcon { SkBitmap bitmap; float hotSpotX; float hotSpotY; + std::vector bitmapFrames; + int32_t durationPerFrame; inline bool isNullIcon() { return style == POINTER_ICON_STYLE_NULL; @@ -79,6 +83,8 @@ struct PointerIcon { bitmap.reset(); hotSpotX = 0; hotSpotY = 0; + bitmapFrames.clear(); + durationPerFrame = 0; } }; diff --git a/core/res/res/drawable-mdpi/pointer_wait_0.png b/core/res/res/drawable-mdpi/pointer_wait_0.png new file mode 100644 index 0000000000000000000000000000000000000000..adb78064f03cc4c79783e45d77312e0d01ac762d GIT binary patch literal 606 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$aUd z6XI%=IMXtJy>rt!Q(l^+&IgKMBFDO8W|_;(GMD;JeGNo*75ji{JbLZ|*{*F@ zEOJ(P_TB@sfy#`N=YYhgyaEbB6hlk{vQ5(#0L38;pUE#wQs%jL-UNzxbln090!7?9 zt^rMOYrp#c|NqGC|2=??)GP_|1Nj;V_>cWL)2puXt;luJ)$MF%H+ng*{?Ri2)4TV> z=UoyLzWvk{66G@zJq%RInB?v5V&rhi=LC?$S>O>_45UG(c`&%0%(epwmK8XrGcYhY z0NDZz$FFaZ1u`-{T^vIsE+;22Fq@U}`RV1cu{^kV<Po0GxiVIx1dR17+t;4{m zv*XpPE<RdP`(kYX@0Ff`FMFx53O w4>2^bGBB_*HPbaP2Qtp6X?UY($jwj5OsmALVQ=+>??4Rzopr0Q9%kvH$=8 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_1.png b/core/res/res/drawable-mdpi/pointer_wait_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6b42fbb856464099f4dccffd1ccadf05bdcec6 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l;{oc z32`+_oM~OS**JNQ@6^{$^(V};mIFo5kZIZikb)_%fC_*NkFHxl#cmzf%(GT_^xSc( zKWUsi*S+f|P|z%M8IS~O2a*s5gbg8`8_zh_9e3}%VPACsq+rS`w~p(Mb;p3ZT$<1S z|Nmc*>CASZ!&FOx{6Ibhf(eH!Bsl*}4m`7$Q}@y|o|C%jf2JL{(fjSE`U2;oS{dWL5MT3# zl&I6YZmJ0$cXc_huEe64q;e^8j>0k#h0_}o7@o!zuIPWpoPOHT`sb3(VRg6Se;-KL zquyD6X3`l(ksn_f7F=WFtzOK(8fckniEBhjN@7W>RdP`(kYX@0Ff`FMFx53O4>2^b sGBB_*HPbaP2Qtp6X?UY($jwj5OsmALVQ=+>??4Rzopr04B%L3;+NC literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_10.png b/core/res/res/drawable-mdpi/pointer_wait_10.png new file mode 100644 index 0000000000000000000000000000000000000000..02968b524ff175b46e316f3365601baf5939670c GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$amj z6XI%=IMa9PYp42?ZXMT*ljrzMe&JAa7$^uq#!0h53Z}e*D1(y_S!B{YYXyW0G!2N% zGL}FXj&;W%3^-|Bw8g#ihFRt^ps_$3jgn>oZFgxt57cgvv&y6E7Eq-}_id+!Q~&?} z-~VdDHlS10N`m}Aeg^@zkUw({Usa#Rsl_~Pg|68d#q%@I@8#_M)*@YT^85t3hBVg) zKvj%M-tI0YD>uIU3*>O-ySWtu=>lEbxc~33`CB+sSM@kYHJXV>$x^ zlLL?~z;OKf7Fi%8&eO#)MB;LCf&@>4Z14GlCtI}+tUcCz==sx-=g!YQ7iVX1F=RR_ zCJG9~hxmBU?H4>DaQ)iFsS~D5xpdil!n8yt&y!L>ASo?<^5kiQ%?+m78d{Q4TB}!V z+O!cEF_QXhw*uWaHvw%@Epd$~Nl7e8wMs5Z1yT$~28JfO2Bx}3<{^d#Rt5%Ere?YZ l=0L_7H4SeR4Y~O#nQ4`{HSDdP@Exdu!PC{xWt~$(69Dry)qVf~ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_11.png b/core/res/res/drawable-mdpi/pointer_wait_11.png new file mode 100644 index 0000000000000000000000000000000000000000..24f866bf1d41e9d858d65b6180a98d1b4165e28b GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$aLa z6XI%=IMa9PYo~@&ZXMT+ljk_qp9G2^Bkze%k-0#{K(2k&0ia?a1IPt3EOJ&s*g&pp z+hvG>KoSi()EqI(T;@CFm1X{Vpf2~$8$MHB0@b*8-UMnl&syQpeH-YK|Ns9R)J=N> zbfHQ~kRQm)K+yiyL;X*eYX#?Ft)It?b!TolKl1?R%xSv4dtZGxW3d1K(<4Adj7i?^ zE`~R6%N7ASocV5U#Xx!k5Hm0wc(8Ogkm4-xhy)3GfU(=jY&(!(S%G6Z0|S!-kS)M) z{Q4GIAS2q-#W6(Ua&m%%P($xr=GOBkmmcC>Qc>|!p~kK*)Ra*{b%mY^&!g@S*%@6% zOp-}ax2zrs3H{ksHEU9kkHXYTw{G3~#l|-4mQm0d9fhqrn~FYhb$Jz?>RF@1!@%%` zEyM5D%C$giR7+eVN>UO_QmvAUQh^kMk%6I!u7Rnpk$H%rft7)Qm8qGofjN+IMoq&T eMMG|WN@iLmZVh{@CwvELVDNPHb6Mw<&;$T6ebl7@ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_12.png b/core/res/res/drawable-mdpi/pointer_wait_12.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a31bc5bce438ce3a731f1addad70165bab33f8 GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$aCX z6XI%=IMa9PYscE7ZtYi%l4cnv&v9xv1r)?Ywq?6aQszO#U7F7U86I7?jFV;q89);p zYL1v^Er-Ygxj+Pza_hJbVFS&CFd(E^#uC%Cg+T2$nC~?Amta z|NsA+4_BuG-Kky@oUOP^V~>kJ#)dH(h@S}I)!_RieCi^d!n}v@(dGw5N(wJ?hus|`18G-6Xp?G*YeY#(Vo9o1a#1RfVlXl=G|@FM)ip8?F*L9; rFt9Q;(={*$GR~-Jc%x{@%}>cptHiBgZ}o)lKn)C@u6{1-oD!M45bDP46hOx7_4S6Fo+k-*%fF5lvott z6XI%=IMXb1nQhrFw~lMZ$#Z%z@GQ(l^7E`>`08Rl6l z+&ZoUbwLC@`yM#epES>23E={b0wSQSTl-azu??pnB4{K~F-T;}E1*i3=5y|yH-WYQ zjRmR)I_dxa|7`gNbAhhaE(!7jc^?G)Yyy9(=>9pt$+`5N`m|#PDhJYb9hH?x5p&U`nwVjz71h#448h^%@Dq&N#aB0+*4 zVC;4>+YTgHR^XV{+aCr6M z7YwQ&!7wuO8EmAFUjVMV;EJ?LWE=mPb3`PcqCb|Zu zx<=+9h6Yv!23DqKx(4Pz#u+sYZxju=`6-!cmAEzRt)B25sDZ)L)z4*}Q$iB}0Ta~X literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_14.png b/core/res/res/drawable-mdpi/pointer_wait_14.png new file mode 100644 index 0000000000000000000000000000000000000000..721e86d168a000cc68cbf2863668bfaae5da5ab5 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lvo2eneq}S=+=G}s2zwL>y87pL)Z`!s2D0c<&}HaO`t}g;cgw* zJ$mjsH=c27IQ9Sk|G(#LRsbEWT@vI63IQQ&seck&Hafnz!Y1Cs-gEx>U6`W9IrBi7T!F+}2Wa)N|PL-Ssd2rPvgRgOu`;6ft~*0*KZsN zi4Tu#m0Z*58tNMx9_}36J+*f(BZF-Ndqi_o;BBBqswJ)wB`Jv|saDBFsX&Us$iUD< z*T7WQ$UMZ*z{45bDP46hOx7_4S6Fo+k-*%fF5l$amj z6XI%=IMXz3p+n7KUHb5=G1V?t>gOt|Nrx?m+=Cfs#y}`2l6`@By5y^+j8~rWG&r4Z0%>%)zf&Gx9^>K zU^3g}WRH!`q{Yb;**_k}oMKsZYP~KACw?iL1-X%Bs!H z?U45bDP46hOx7_4S6Fo+k-*%fF5l$aLa z6XI%=IMY0PrDNSO$GYQ|`Rk37=Kw|E$fM^jknKD5H8Sbmc>~0q@(QTYJZptV*Dd4Z zxj+%8#?wF%AOnJcMgdgn9|0aOe$1Q|J0AM%;}+-LF&&)$1Z^(TQ+Ky%!?ZaOub z`v3p`GAHv7Ko@G11o?ry3AQKoEYGU_R0V&P`k4T^(g9jM9oy@ia z36>Q&rZX@wIRM!L49Bl;kp(hhJY5_^BrYc>EZ|N^e(oUp;L3v}7r_VDo+LU6KDhcQ z*-h}lbuj@KL4ivbMa3Ki1+QKe6?PY!FyYG8tCJ^9o0d4ewd=%5?ia6KNlU!Y+~D9E zAv$$RXi4bRD~{I~8KT74(vN?S>IK@PTH+c}l9E`GYL#4+3Zxi}3=B45bDP46hOx7_4S6Fo+k-*%fF5l;{fZ z32`+_oM~Tmz_sm)W8HC+lzGOk1wFcN1J(Th|9|n! zJFkGQQY{Jc19=k!aw=|b|2E<9v_D$9m-uI%H{(2fer5|l=gb`4X}2$_7tNcb2vo$F zR@8(tv6a$4C14DiH{)ZsJ0*^?bAcF@OyPeFo0|}NDIHof&FgXC( z0u0BmZ;=HuqCH(4LnJOICoEu12!HAz`XJ45bDP46hOx7_4S6Fo+k-*%fF5lvo$w z6XI%=IMXC$p6`@brfCb@I<7m_pKz=@Zk#mRGH)GF3WAK2=K>Ls?LFz4_k<@vhVRtZ zxJdWT8$c@;3J$IZN&;0-Y|C)HY0?_69B|(0mpnw1#tq;%nC;ySSecbT$yd$T4qTca!Zyvx;QUqTJ)&BbK=q7C-tI1z*BPcd06CobZf?au zF$Ex-fuZ{24j&-JS>O=~6lCxKW4Dvpb|AsB0>^X)1||m}TY%yC^)0eMM!KhqV~E7% zkm}sHh@(T=d&5Ewk69j` zi#bl5n04yp;tq`&Gqto7xiwbLm^Ev~s+GzvCMLeVzGro}2q?X|m1MPSSCvcxA47x` z2Xn(@mq|b?RZCnWN>UO_QmvAUQh^kMk%6I!u7Rnpk$H%rft7)Qm8qGofjN+IMoq&T eMMG|WN@iLmZVh{@CwvELVDNPHb6Mw<&;$T}XyP~k literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_19.png b/core/res/res/drawable-mdpi/pointer_wait_19.png new file mode 100644 index 0000000000000000000000000000000000000000..9d51f79208d512dba1689178ae3a89ab43a5582f GIT binary patch literal 616 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$aLa z6XI%=IMcEAs7v#C-zl%mGMBk`-f*ltZk#;Fcj{}?w1q%fAc8P}B0x5fgfrk=w~p%& z?dDm_fhGX81ErkmPXf6>29OI>U|qb`so@kvJH!N_ML-2WWuCqFd?vpD3Ig?dbl?8} z|Nn=*JgPt!YLo=|fxHX_(i6J0R!sY&e&g`B2?x{Kd7c7#dg^ r7+9H_=^B^=8E4cqyiqjd=BH$)RpQpLw|c^Npaup{S3j3^P645bDP46hOx7_4S6Fo+k-*%fF5l$amj z6XI%=IMX<3w(r!}PK~Es+b)}=%ma$Rk$Kh%2-~UQlyUML`|3kLm2Mr^&9hg!cijZ( zsy_kL;ydM)Mb0W97l?rBAtWXPE(>H>7j3b~UE^4H%xl79AlIYo7SLF;%w<5MfbMbc zyx~xN=>Px!rVpiner3=s3GxH^9SCfCb)U@StUJJFaB?#LnLoP5lMmeZcHp-9pJ{A| z4I1Z!Y+>WC*!pn=P$grMx4VnU%8f7o0y&)dZf?auS^Xt)?KJ6K!D|fqQ|rq4H}leBt7r_ z&s(=<*240?Vs{z-XY69sc@`aE#+vT7XIF@gyy1iuErR#n<*5BjIMg0oQ*dGW845bDP46hOx7_4S6Fo+k-*%fF5l$aLa z6XI%=IMX6`ja|h)kFHzB$#ZDF=0vF?~d%@Lo;FMtY=5kv&241$1C5C%{S zknL1|0%Stg3LtXtykVR)8z=%a5Xf-rxDJ$Zsy_)Nfn1lC3lR0@S<8VUp1t>gCi_l# z1=RKb|NqXkV|qXrs+R=$fxHX@Y^%T7OfJ$o!)b71Z?CTIpTlgE4;vh4=bZMbF1s;(=K?V;nb~~AE2NEnRa7<@l zU~&Mm1sINB-y#cSWO=$chDcmaPEg?4QCaabfaS+kQx=JdKbmGmIUVvj!L_B-Wk%!# z7MHC@B5qFTeQ;GY-Q93cptHiBgZ}o)lKn)C@u6{1-oD!M<0yxq+ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_21.png b/core/res/res/drawable-mdpi/pointer_wait_21.png new file mode 100644 index 0000000000000000000000000000000000000000..331820bccce87ed3abf92149a2f876107bdb2dee GIT binary patch literal 675 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-M5N z6XI%=IMXz3flcWSkM7$hDf5hz=lD*2ZJxElz4NA1{Yl5V<7OF4JbUjMC(U+izY0{0 zhFsgO07ZaWfC$3CB!N;u(}3cRwMT&_n`JHq+6A--DB{#`3c_~pya80^Sa-}QX_iCH zVYqc5E!iu9Qb5N5o#8Y2h3}MC|NsAIs4X`IdcmM1$PW}I$bh+Jy9C>=gs$`a2AtD$ zZyftJZGx`KAI_QQ6*&*zVC&r_`s5ohbb#TOm$8 zkR@g9lN|vpM|93k4PcoPdgf?opv#ptXRn%0U^Ur#=Iqv;6J1M6&VH>3F!}gu^T&gh z41F$~{uaKIKLhPoEpd$~Nl7e8wMs5Z1yT$~28JfO2Bx}3<{^d#Rt5%Ere?YZ=0L_7 hH4SeR4Y~O#nQ4`{HSDdP@Exdu!PC{xWt~$(6986G=zstK literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_22.png b/core/res/res/drawable-mdpi/pointer_wait_22.png new file mode 100644 index 0000000000000000000000000000000000000000..2678d3204424353132d75b99df3a973213d0d1cf GIT binary patch literal 699 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsFdP z6XI%=IMcd#tM{a5mU(O4yKb6iEjLb{<2&`WMeb_%&Kr((#~tgAxwc;Pp76w`WSd#$ zGN5{7WL2;M!u6f<3aAUn29lTzh&VC{G#tovsy_+TXqLIuJZpt}=S`>j6F|MjNwZzs zt^gT8aUdJ$2B4FGB4G6=fGz||dGy@%nfwCiY@qi4|NpPc1h8o(D>o^C1PeSOfr1PkVC;4>+YTgHR^XVNt@OL;{YeRZXCWkm#I*`;k$vL#!- zo=IO>_-R zb&bqJ3=OOd46IDebPddbj5BH)-Y6P!^HVa@DsgMrTRq`BPy>UftDnm{r-UW|ZA0wn literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_23.png b/core/res/res/drawable-mdpi/pointer_wait_23.png new file mode 100644 index 0000000000000000000000000000000000000000..d54d9eb77b8d6c9f8e3247239f05686d71f8c2dc GIT binary patch literal 708 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsFUM z6XI%=IMXb1nM2KC->I)%+pd_VFY@TRWs$SWz3ZlN@*LkOugtTSyLaAjtUK;lcg!?x zp>fh|`|3k><$Hh{F_CNAWuPF?C?G;+z}Y|pk)_~lhyu5c>p+H6{Yi+uK(15$37{IF zy+8+mtgbrXGx<5toj`H(tQ8(TcY!KBd+!6){Qv*oIl|Er=r8kRNveOqQ<8d00|238;@T$=lt0@Ej$Y@d+i@?oj&+BK;uGaoP&O*8w%bw+26!M;V4)^6gGwm!rn zXdPm*4?&Ngpt`g9jJl9)78&qol`;+0IwkK7ytkO literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_24.png b/core/res/res/drawable-mdpi/pointer_wait_24.png new file mode 100644 index 0000000000000000000000000000000000000000..442ace7c9af2bc7ffa2fc4edc5721f442bf80eeb GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-L{K z6XI%=IMcdli*w@{->I+NJ8wGF95zi`;L&r(JbR@__if|kIlfa~nP)9`@4VqycigGr zlx^8A=caQesq=vvF_BmQBZwf-G-L!6#N@&Sf%ZDq9tA2eOe+kGXYz~x|NlGpNu&ThVpJ032MQT5Qjmk!jznB?v5V&|E{@EFM9%y)Au28uO+%}RQ^ zauGC9FQ%uCyRe`*gpOLQ?X=W+jC+*$dl~G@AD{E@bFpXl_^_ zz^uu@&~k=zKgX)Tzd$#rmbgZgq$HN4S|t~y0x1R~149#C15;fi^AJM=D+2>7Q!`xy lb0Fi4nua%uhTQy=%(P0}8unIC_zu*-;OXk;vd$@?2>?@s?kfNQ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_25.png b/core/res/res/drawable-mdpi/pointer_wait_25.png new file mode 100644 index 0000000000000000000000000000000000000000..27ce60da8e4aace770530df551f04f5913444772 GIT binary patch literal 697 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsFmS z6XI%=IMbo}kVp4z->I)Xx^6i&oN}r^X`Z#hz3ZlV_DYkKc@{aV+&Zp1)*W;2yx}$B zu}SKDr}`7tg`0sIu_B+zFCgMT1K|iL0%0Rd!3E(`Kn73{=l}@AEOV)2-Eq&}dqA#n z(rkyC!#-198YRtgZM_I|573dmQ(gfb1GMq~|Nn8je*6G>%D5!R4-`u1KxM*>Z;fm% zKhHC-J2P{dZtqD0-9P8~CmSE=Jv{A+=;Xj#=Id4f^)M!RySq3ET(|uKC`iN=?z#S^MOPsL0F(OkUT_PHCOdS(EcdVBe})Yj?4+ ztKVT@^R=$lRnudc?|8*=_Dt!{^9pIp4j*n%da&Yfx01rE72R43(wCiYS4v38IMT0l zKtVy{h=U{p!?zcli$$KF-UM`jYKdz^NlIc#s#S7PDv)9@GB7mJH89mRG7m8{ure^P pGBwjRFb6WusA+hkXvob^$xN%ntzmEVgzrEN44$rjF6*2UngH+O_NV{= literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_26.png b/core/res/res/drawable-mdpi/pointer_wait_26.png new file mode 100644 index 0000000000000000000000000000000000000000..8143634e9256f459c2ecbacad1143b628ab4f522 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-M5N z6XI%=IMcRlm(P@!zEfYjbzF05IOX1X!?t|4N6#Iz%w_JKH;t3$`c8S}Sa;k!d!>E# zA(PbkKrNWaqx&{Q5NHk@0YxBeWGNuqXYzBn2#^8P3seSVn5HeTuQ~v<6lfz*#G&S} zanfv;=5r3!hfLEJI@O=>=(+1N`NjYL|7V@6cn^ z^KfS4C3We~$9N|Hx%zE_L7kB6+r&>m<%~(*?k+aVvl7n(Ih^@!ZpA>c1z>Yh9oI|& z2^M%n0tFd7z}W3%wjD^YtiUmyfq}^Z$QEEYetnB9kdg1{;us=vIXQuW$x$&;&^FMJ zO+w)MWpe`)qiG2(1*%KG`1CAIO-Xq=LxJhjvNW!)GdgS5mP7PWnftTg5x|_ z%FzIz)v6_~5hW>!C8<`)MX5lF!N|bSMAyJn*T_7?(7?*Tz{=E2*T5XeIHRWFjiMnp bKP5A*61RrE)f2u0H86O(`njxgN@xNAEt2cw literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_27.png b/core/res/res/drawable-mdpi/pointer_wait_27.png new file mode 100644 index 0000000000000000000000000000000000000000..496ab9a0509f483aa9697171629e12d7f9dea2d5 GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-L#E z6XI%=IMX>9zA!R8_#(5Jupt5pso(pMV+|lf2zsY%k;nMglpU`EG8-K(P&AlhUTI z;|B>ActipP89cz)?PRtcNU*HHF`a>d$pOd~U^sq#i!6{);_2cTB5^r6fq}_UF;S2? zG0>5XLqJ&E(8S2h&~(~_mJdtMobg?fnzF<<^{Ip-)1x%8Ph37{bacAB*5o+s+tjgh z50^E&N0;y#hpR!pbLaLlGMcP0*|}rl51y!Nw`@+-u*pit#)&Z6)~eZwFtXJ#vdv;< zuw&*Fo`2=#YM}k9C9V-ADTyViR>?)FK#IZ0z|ch3z*N`BJjBqz%D}+N)J)gF9LPAM hrs0jEAvZrIGp!Q0hP~Ajz5_Kdc)I$ztaD0e0sv8=<~0BS literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_28.png b/core/res/res/drawable-mdpi/pointer_wait_28.png new file mode 100644 index 0000000000000000000000000000000000000000..a2aab2bf6262e7bed28536356f464af5d16633a6 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-LsB z6XI%=IMa9PYmcs5PK~FX8cvy{&iClPZIQFeJZrg2^LhK~LmoYMOj73gPI=|tdBd)J zk5SSrvy3G`U04xN7sNoInGobqa|C35_ieZckb$fQ!UmGAZC8M#Y5F3^y5m4gfyz94 z?-?i0v9CJlGx>#E`&FRfPW31L|No!Gwio1a{gNO*P=KHTxe1qUXmM75Yu|Nd&dl>d zW?C!iF7Z$Pqjh+D4zpr)kyQy$J!6u$yNk6Y-cDhpnb@bU9-lKhUZ=Er*6{Eo{c2m4mGeeH zlh032VP)RRg(uG*ZeUOfi`paOQNxz2ENhoy*StgTe~DWM4f<-_7( literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_29.png b/core/res/res/drawable-mdpi/pointer_wait_29.png new file mode 100644 index 0000000000000000000000000000000000000000..646d15366f5a66669712e82683fdc9932be039e9 GIT binary patch literal 650 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lvo|$ z6XI%=IMX<3w(r!}9$mMb8cw;kU9ren6wp8*0xE`>4B-Mvpy5E1fefF?FMuRau|v%f2*WgOA&~9fdBc0+ zQ=o`P_ie}8qee-yfGS;@&;9@ZzwMvzDxkAQ&rZX@wIRM!L49Bl;kp(icJY5_^BrYc>FfchPCJM#|8Wyr~Oc0oS z<+8bfiILgFNo=1}eSFWPJbjYV+tc$zvXRMY*|SYtK4)}vy1d*@t#SA}>6e$*nH+_! ztFm6babT^Ink6$w;PQ?gl@bzLwv<-45bDP46hOx7_4S6Fo+k-*%fF5lvo$w z6XI%=IMX<3wo%e7->I*i8c(}--ZW00W0twhz4L}s{RyBf968n<11bY@-8!zjbzCz| zU*yq!+p+d2P(6?V)NY=&97qBcKuEYo2m>w%R|8?#mG6NtfVKk}zEfTSt#+(C?o@vg zXduvSK*LQ^=X-SB`v3p`!4p0cfG*c93GxF41r*HbWj?T%P40Xb=Xn*aKfQ-Z+92V>kLyJfE>VL0mv3$IDUPLERd1s>Eak7aXC5R0Pl{Hos|JB6<@#n z{4tT0h2`tlRtZT7fm1E6U%t9Fnh3|Z_{79BU5)W%)(m0Hbe0TZj8ryZv`h}s{lwL# z(Wa#}Q$j=eV`zx)*()<9vRpZ45bDP46hOx7_4S6Fo+k-*%fF5l-L#E z6XI%=IMa9PYxmBZP7SAwl4g1I+%eBu;ZS|Zqx-gT@*J0z3!c6A%`%r7C(pGh*=CY5 z52zk1GRs&35eJ$EK~D82jFV?f5j0I-`LE zc17mNY}=2`Jg}X)<&v(}`9{${oSY|Da~`{`!V}B?LGqR{P!D60x4Vn&h1|eMAcr&G z&8-+H_5f^HmgKS@Ai)BUNT48t2N=7Z%(epwmK8XrGcYhY0NDZz$FFaZ1u}9yT^vIs zE+;22FflqRCJHJB8nST+h?|-jni`v%Z=NuLKd7c7#dg^7+9H_=^B^= j8E4cqyiqjd=BH$)RpQpLw|c^Npaup{S3j3^P645bDP46hOx7_4S6Fo+k-*%fF5lvo$w z6XI%=IMa9PYqySTP7SAwlV-bj-89cyZke~%d*V~qwkyWTbIh|>S`}^rD#L|<>LG>z z%>g2(`V&BNAR<81T-z=K*|z1oA+i=ZtAK()wqxBfpy3`}w|u9(0-E46`f_ zn!`XrpUE$PYCL-GIMy8png&z@bj<(%|3zk}0v*nvR}$n03JL^JZ#nbr(gZEGKa;ob zoq2K#Tc(y-ul?KYoSbL=C~Ez5HSoLsJ>fl2Ib)KyyNl&@hN%uf4rjibTQN}V1K6C* z^GlLJf(0ItKtTo%Fm^kcZ3hx8D{xF_U|@0pvIQ89U*94NWMq1}IEF}EPEKH8inFU@ zv~^TWWaAJJ6uN3|U}9uuC@ReO`RG}nv#KhpOM7~Im!>u_ZAudhD(dk$bLNwSBC8l1 zo2zQ7XqefAs8G}7QeK6#=MJ7^HS`TW9Wk4c^~DRLMO+32pAC3~7#O^#am?tj)qD-K zRJFu4q9i4;B-JXpC>2OC7#SFv=o*;n8kvU}8dw<^SecsX8khqaXVf&jQ8eV{r(~v8 W;?}UYdct?01_n=8KbLh*2~7Yn{Me=d literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_32.png b/core/res/res/drawable-mdpi/pointer_wait_32.png new file mode 100644 index 0000000000000000000000000000000000000000..9f072ef2fe356de60010855c138c2353256d7a50 GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lvo$w z6XI%=IMa9PYxl03P7SA=8c!Q1&GzWNZIQFeEMtjD>U_J3y+8%HkVDN8^Q`4S?QrB+ zcN}N}#7v-|N6%d#>DqS1q52TeOwYatK(15$3FG9s9zAz_r@R6R0!4u8U0W|f7-pHv zfQA6w0Oa~idFj!03uvHY-7%oz|NsA+mhM;xbh&;>kRK>0U_gDs`JZRnwb*+9OgK4n z&eiQ~jpvPx?@dqPUVop)>i1_T3RlDE5y<#mRs4nPiPzMESy0|OJp z9N(?WpMwMoJR*UD3?5+Yb~4)zBv@A9m=09w0Avd=9KXIr7Rbo-ba4!kxSX88z?3H! zS8G?t=*Y$)Aau>#z{JSRP*hNqiTlHhnbO^z-X2oY(H@@7EGayxPbFr~hV3 zsN~g?^F|>m@@PaT@0w2LtXaF-HmWgmUD$NNP4vRWtInbc51u4RNH8!wo4^q%>0#6l zv{bdkHKHUXu_VKd7c7#dg^7+9H_=^B^=8E4cqyiqjd=BH$) XRpQpLw|c^Npaup{S3j3^P645bDP46hOx7_4S6Fo+k-*%fF5l$aCX z6XI%=IMa9PYqyT;P7SAwl4hBvEwnA$WuCR%Bz3-1{RyBfCNj%h3K0Zq1R{r;BgRRy zfg-N07a>N0$o8w|St~rcZ#&iz4PVXFx&Q z^4&mjpe~?${{R1f@z6hipgT27g8V=phXT0?XFhbPWVW-dJ1}z>vviu4?)eFv=XJHF z9k}sabaJ2@w{`+hC1aAeyNj{;)tWdUhcn;Jt(bv<2^5wL41UQ=Ye0ep9+5yn1`jZH zJDF_<5-cllOb4oT0I~%bj$hv*3uI(?x;TbNTux44VA9Kzi;I)9t7Fp;xNzmtwToA; zUKAE-;^25K-O$ZqOw$C=8Tz3Q+aq&A`d97$$6vT<#+FZLnEW4hLn`X zLJk8B=@kpOK1i-y#I<5&_5v=0f&!xpz_@(0h&`fmU-ng?ovJ0S5hW>!C8<`)MX5lF z!N|bSMAyJn*T_7?(7?*Tz{=E2*T5XeIHRWFjiMnpKP5A*61RrE)f2u0H86O(`njxg HN@xNAad6M8 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_34.png b/core/res/res/drawable-mdpi/pointer_wait_34.png new file mode 100644 index 0000000000000000000000000000000000000000..94961e3a4b82a0baff0adc714156c20024f59976 GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lvo9^JQ{8c#bloH9YR{3M+D`Ibxc&5F+K=bk29`YdCVO zJ7$zL%f0KSYwJaeoK+w*>rWad&-LiK1yp06wH!zSHA2(_8IH9_AtI(}3xI5hGVh5` zfhPD)dF9@D!?Eu8|NsAav-6dK4%R6N@&knc1W0t9d3&;5deNU==H%z+=gd60j?;J= z&lxSPKhqB1p78UV%HGmE#-L?D#f(Yb?k;BT`#UZIIh^@!Zp91?ObTFAyd)Qa1q(bP zfr1PkVC;4>+YZR!EGuwK2dZ=cvIQ89U*94NWTbk!IEF}EPEKH8^3%(cm5Z~hW0MfL zaP_jefr*faP#afAM^~q}hm?ebx2LnK#LO9y5vfObcv5akOlX+1r?HV~6GQW&NsUHb z49#5|wN^FE>a<$LFnuN4s)l9L%vLclTeCCkGBEUZvs<6go(gi3YKdz^NlIc#s#S7P zDv)9@GB7mJH89mRG7m8{ure^PGBwjRFb6WusA+hkXvob^$xN%ntzmEVgzrEN44$rj JF6*2UngDD8)v^Ep literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_35.png b/core/res/res/drawable-mdpi/pointer_wait_35.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa65d72b863be5a92dcdcdab9d4579fb87bb3e1 GIT binary patch literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$a3U z6XI%=IMXz3fn(h`=2^=jA`Uf&eW$(#BA^!I&t&GJt|k^(RbH=6Uqo@tyL@EOQw|C6EN_g^;eT7a}J!S=!+OTz2dTp8V?BDUji)^QE z-T#My{cggUEjbpJm-!2yty4e5f5^b;NV<;OBvI9y+My30eLbeLpG`zHOl3iwl+?9b z|5)E=e5qOR@n@fjL-he(vw0KQoTVpEJ`A)>wZt`|BqgyV)hf9t6-Y4{85o-A8kp)D xnTHq}SQ!{tnVRVum;)JS)HJ+NH00)|WTsW(*08sF!grts22WQ%mvv4FO#t{%)yMz< literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_4.png b/core/res/res/drawable-mdpi/pointer_wait_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3d652fa2313680c8423dce19679d936b422341 GIT binary patch literal 670 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-M5N z6XI%=IMX<3w(r!}MoF`r>QB0N-ZW00<5YhFC=N%~#an@bK(1T+RhO0vK*d0nKoO6w zTfS3XnPn~mX-}MqNumkD4Fsx0R%}{rU+|@plpa1{=U(LA-qfbjAQKeH$AyubWOCedQ`_S~s=AjN7 z!!Di);5-w=Hd(9dnHZOkfMuFOSm@?00oM~8GcIh|bnQ|?sxwE%>la2FHyZ+-VZmYf zd&UxXpyjG1t`Q|Ei6yC4$wjF^iowXh&_vh3RM*Hn#L&RXz`)AXOxM61$T*{>;f45bDP46hOx7_4S6Fo+k-*%fF5lvokq z6XI%=IMX}1%EOQx< z1agr{1b50SWN{!H&V?|5Rsb2+g`0s^0~tUw9qW!c)*Uy`S^;#AN7pT&Q9vu)J8uGA z_5c6>PgiqTfNs_*3GxF40vH6gaPs__c34XtNZjcCHsR-C-L5l#bdOEmwTo@$OiqKn z6Yek{mIW$hO!9VjF*n$;!yU-s%y)Au2GRjwGp;S!X9*H4@Q4HndVsOp$!t52U|E4< zIs*ff1CTAiaQylfkXfmoE{-7*my;6|I137j7Jk@Sxurrf(B;RL(jS2=EG(rh0lb3O z#2iHhu8KN~3S6J;AUffS`&Ff*i?w^tJfCDZVXE`Ckb4(A8aWS!nwS}e2Bo!eub468 z<%(4sHymQUVrugA#tlhHhNxxi(uO}?Hv=tHEpd$~Nl7e8wMs5Z1yT$~28JfO2Bx}3 x<{^d#Rt5%Ere?YZ=0L_7H4SeR4Y~O#nQ4`{HSDdP@Exdu!PC{xWt~$(695t2;X(ia literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_6.png b/core/res/res/drawable-mdpi/pointer_wait_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ae6559074c89ae2d7219c1f6c83597bb341e6bc4 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$a3U z6XI%=IMa9PYscE7ZXMT*lV%$w%>s%*5Kz#jWE)7qlvie%%Ye!tis1_2A`k{d9LRRs+W8E>3fm2?2bln0fGs{@wP;&&R`2YX^drm*R26UTJ zNsu4Nvp~Sv75hg;z3cFe$=`Yp|LHxW(xuqGYcCsf&f7DJtyVJJKqZVx-tI2?%2yNw zLF)6}+=_v80uVDWT)MY&3XtL~@Q4HndVsOp$!t52U|E445bDP46hOx7_4S6Fo+k-*%fF5lvott z6XI%=IMa8^E62KHE-e>~l4ki%eeKk6$~b8@P#lgNY7T>xO??d^;S9JSrZ`XpO%S5X zd*V|d1BfhgR(bY4aBaH+v>K?=t>c<`)(Yd~x$a#z&9hem-QeDN6R7O}|NqrTBz1tU z)hG$_19=||%vwb6P2PT^_vg30S9K@zocyC}&}%&N*lOliGugU+zShs?0fyt( zx5xq+v7RoDArhC@o-k!gTe~DWM4f-I3j8 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_8.png b/core/res/res/drawable-mdpi/pointer_wait_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0b81a9aeab25e3aeb3abf18944901a859ca1c498 GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l$aUd z6XI%=IMa9PYp41XE-e>~ljk_p90rQOk!|TthytJ*2m>Mo;UbGb#33SZ#U`oqfouo@ z8g5^G$g%F2YugpG%w@h)UKuCPb?>|h)MB2s!lUPoTgP>$hEpD0w}9&Z|Nn0$#(EOy zNad0sKaj71fHPUT?pW`)KihAs|C!8lOiTCDfthDka|*TOU#*bPU1OCCRKu9$?e1da zaLMNcNJGAxTQQJs0AdD)BeNEX0V&P`k4TW92N=7Z%(epwmK8XrGcYhY0NDZz$FFaZ z1u|kiT^vIsE+;1}uuMpP?jZUg9a_R|qt)im3bW3T;($pCTY9ez*ZEI_poh{wc#5%YtS)H9(T~*z}*w`4{L)Z*5 z4+ZZ6TBKUy8c~vxSdwa$T$Bo=7>o=IO>_-Rb&bqJ3=OOd46IDebPddbj5BH)-Y6P! b^HVa@DsgMrTRq`BPy>UftDnm{r-UW|5;)6W literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/pointer_wait_9.png b/core/res/res/drawable-mdpi/pointer_wait_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c13a90c19482ce51ecb66bbff98eb1dc4cd6dcc4 GIT binary patch literal 634 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lvokq z6XI%=IMa8^E2sJszEfYjwp}q!n(Z_BgG93o|sIv>I|Ods`2Q# z_qsxCo=+&k9m$tJ>|NK^@ z(tG~ZmOAx=Y^$w-Y8jKf-CfKLcI~=ES z4kTDs;F!+9z~lgA3osnNzC{+ui1&1H43W5;oFKt);9%#e=a-(ji9Wda&{g!o<)`is zxj9~ODt>Nt{o;C5L8oxTo|eXi0?Hk#nyCu9%F3(P=BucmXAuerFflVUH8u_nN=r** z%?=C!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D`R zA+AP=Gc9u0_)dLoSH8!4!V{B}c@{aVtc$j|v|R9>^voo6zGK~Svy3G^lV3R1pD<3I z!xwi zY@iDrY7To(eCjj#xoO%$pv!@>K!*Vx33MUQwLq0H{5 z`(6_s`%Zb~(RB-Gmt);AtAY(iNwX|+R|C}mgTkrd6v#1?p93A>)OZ@G*DP}>Ft~t$ z1GM-5|Nn7pi!K6#JG>;wFBnK;fSf0P&YbM^V7B})Q=;f|3#U!a^Ct%U#v!XeJQ14k z^CX*1i{h)#(l(PPeB%-N5H)9J$T1au#gI8Og`%Rq@l3ud%9EUVkiF|I&|JnOZ+Dm6 z-E0hNfgH{PkH}&m?E%JaC$sH9f@KAc>A5t8Ni*1NU}*SKTB0e$MM^SxbL-UJxy_eZazdAA>b);2oISHS zBqHKb(7^*4tlN%CEoWkrlb*m7ZGA`UjjV%~Ordr{0h4CIvBd{eIaeGI?PuCvvVf`B zhU<=T0~gOn%@ZmM4k&jwh|Y^-k$E|lH{?NY^gVa6Cm!*4xc(e!y!VCwz~dH~1P4~5 zhhYn3rp#C&cBcFIM8$=P2YqTPL_TmE7;Y?h7g9jJl9)78&qol`;+0F+;DtpET3 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_1.png b/core/res/res/drawable-xhdpi/pointer_wait_1.png new file mode 100644 index 0000000000000000000000000000000000000000..25edbf5730113d71edb1e5602f6b5b374a9d182b GIT binary patch literal 1017 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DTBcVxwhrI-8*lZWiEBBJ7$r)+Ntrh&y<%AHHUpBKX>oC zX_Pd}G<}hA(rlnck`PcA(0rhFpgBMW5Se8xfiOVq%%xC4AY;lah(%r#9@|$R0+K)n zn5HcRItC~Obd^KR5uhO^sq=wafNp@0a0Y%ZM440l37|5^y5kVVK%;;bxp&@htUYQ~ zumKn#KnDP&fMEjkKG1ED5CFMk@^j~=bHLyNI^HB@o>}HHV2F87dIofodDaS`^Zx(; z|EhWeFqj#_N`m}?fiyZ0syp1}!FlrA92L2rEzF-4qrN@i$vpN%rT5QC%O`azKcy{u z+dp%Pe)e88A?g+XPxYvii)QkCh-&B2{WE9sgqF|Da%`*o&&~!K%b4Wt?ox1rA*Te$ z;mmh)D+baEK+M2!w{7zeAjMhW5eX9X0Ash4*>)hovI56+U^;35vK1JzR<29{8pYx1 z;uvCaIyu3C`H<40q(?$LI~r3Y1Ux)XKbSO~m%G2Cr>k$`MQ=O~ zd@zA8m#qk6=zB_$9f!}#jA08Fvk*U$q z`NLEpV!*MgTe~DWM4fsyc`O literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_10.png b/core/res/res/drawable-xhdpi/pointer_wait_10.png new file mode 100644 index 0000000000000000000000000000000000000000..96d93a9049ce8a9ec7e6f01c83ee4cdf593cd4c0 GIT binary patch literal 954 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DrZE4iu znNjVZh0Oj;P#KQ9NG&g5;SI47?;=l`NR zy1y&kW5xXWV#>xLaknoA2f9nDtzEtRg{0WK=gadC9O4o*{L<6G)Az~5$js2x*wAGA zhc7&gr=p__H#u&NaCiCrv-Ma@rBh?Q&V?FpX}2=I6-?3A_68l@{GJ{>o?d>8o8GRK zu-y5eujoS27iY%4D7KzCcR0d7f3UJVt+?droVgN`KX**{d-UM3_m5sJd;jkF^St#> z9v(Vz;yl|%c?Jt<x4a|XzGin;%C>nC}Q!>*kackIHJ>ff01B0ilpUXO@geCyhwQ?2! literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_11.png b/core/res/res/drawable-xhdpi/pointer_wait_11.png new file mode 100644 index 0000000000000000000000000000000000000000..cd78675c34ba812c06a49b48b7c0a3327dafa41f GIT binary patch literal 989 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DjiXRR>HSmN1x z&!hXcY5F4HDX$#sju|J<0cyvJEOOTXjRk6i$O74D%77whf^aTe3aj}*S)d~!YJj9? z?|nGid%_bqn;-+|9-#S7ji-GkzW{p5q2>rsi%IHyi=0(J-&q%J0s7se>lVo4nM=JV zJp=m1B6l^=3YX?{&W&e)VP#jb&#GX9Y1%?y5IHxU`~Uy{nlHWkfFT}S666;Qq%i^K zoNwoC+TV&Af95y-GdbkR8C{j1DjzJ(p0_NWf0d2-_Rk^@X@f;i44%KzRlIRtj_pq` z=Z9(herImqJ2@eQ=j@*e^MPhECV9KNE`EG8-K(Pd{WhE;&DS!kEJR*UD z3?5+Yb~4)zBv@A9m<~)n4M4U6L)OZb2|&hIPZ!4!i_^&o60D0G{2W4jVw{BLGp&5^ zAR#mG&L^WsiVG7TZu-H~(a|$ya=Yg73E=@fT-`k(Ni4-vLYqRb20XnQ>cEzfVbnNx zwWy4Y>e^nN^^2utWQ8SH9zVeoCMzQ?E;)a}dcNy<3nb=9h)ZT>967}GNP4!4tDBqJ z@)@sY&x|&R(2CY%V|QQf<`$K0w8^pL#tpY7ho~e25tU`kXSZ)oPkG*;@t~xDW%UV< z(`Qcco$EZy>g8@_X!>#^Cx5&rpOw$@3-CAK!El9H?}6aOAP zc9nO2Eg!`|u%-+>w!JYD@<);T3K F0RX(hf#(1K literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_12.png b/core/res/res/drawable-xhdpi/pointer_wait_12.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2c7b218e4a919f65bbcd62009cbff850e04fb5 GIT binary patch literal 964 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D=nN#Cw>*8&|Pyz;#P06FvrzAi)BUNT48t z2N=7Z%(epwmK8Xr0~1OEkgdRwwQ^+wknzdW#WBR*9nH42+J7i5%W8AwDv} zafj~Tj}PKHGKpwzsb~He|Mxn&rUy&@f8rmO-X$tmXe3Gd>j9){2D*+&>_&L`m<|i5o|* zoH=vl&W#iI?X~o5?p$c<^bo->3MqL z_kvGfKJl4<`S>+CDJkh;`we~uW>GWS=Lzm0Xkxq!^403{7+m zOm&USLktb93=FJH&2$aSfs8Y18r~=xa`RI%(<*Um*jqi}J5U3Ir>mdKI;Vst0P0M7 AO#lD@ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_13.png b/core/res/res/drawable-xhdpi/pointer_wait_13.png new file mode 100644 index 0000000000000000000000000000000000000000..3b00f101a5b4b7f26e4b8830806877e326992375 GIT binary patch literal 1012 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DR9COkIFSYn>F!h6CK)AU8|T{k^@?-?b{ zvadSmGv%dY-7(|jIY7O*kVVcapcGKAN$PwwHEtc(fz}}lI@OoK27cG!PgXF3snBCO`M+xdZej zNXwL0rfCa+!Q#<<8)&j=+CpI90F4E@**trtSN|iR!+_p2Ntx$Ra~SAypUE$ro6cDm zZv_UCb>U{$){FoD|1Z)yzW^8+Q6)is!9W@V@GSj&$*lLe(1B@_|CmXvK0in0=PNDg zC)2u~8$7(tcJ)sef6LF+DzCmR3OD8qT=zs#_qndz$s2Oa)jxYV=Y0OA!tZzH@U)Of z-z%*^qZyOD-CfGvQhr_sayawd+=_u>3&3`!IOE}<)?0Z&c0Hkf5Q->_0(?cAloclC0=mzSSm0!uMZ zuY*=lukQmrQ&Z!9FK>U34GB#jbk{m)85yn3&3XG~>023@wTl;R+9WJAXUr%xb@GsUV;zD2OC7#SFv=o*;n8kvU}8dw<^SecsX8khqaXVf&j eQ8eV{r(~v8;?}UYdct?01_n=8KbLh*2~7ak(~YbE literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_14.png b/core/res/res/drawable-xhdpi/pointer_wait_14.png new file mode 100644 index 0000000000000000000000000000000000000000..eca5c3f50c6e9fda0ef3b1ca005e38617de82e42 GIT binary patch literal 977 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D`R zA+AP=GmVmFnPo0D%UI$&^|eLr8q@Sep1t>sljoSGE%4~MW1KYGzH-0MI=9fGV9DPFWXk18Ou$oexAnhC|I^xL(J);}$uq;9MXBXs^$d zmu8vEPz2K!0J%VoK$DThA#9+-+`Dc9r9f!PE3XNUA#BgS2T(zX6kZZ&6wvQL7Xp3i z+IkVF(Y9%fPVk~ z|G!SH(R^TVhm{2R1p{dmpeV|=Zcds<*UYHTLPDQgCj2pz`}suOSfb^XndQ||=97OW z^SA%`qoVla^NK(o<`5gXdp9^GE~&7U{^{bBnDcG29Dn$ zV^|C1aOS(Y6$8Z%fbGlOy7(MOu)re{D9GRe#%?FG?LdNM1&-;!0+>o>=iBgVTmfC3(@}#Y>kI zYEPKRs?{;=aB_={M`M#x9;??W1yQY48Hci76)a=(a9p!YY}1x)ei1YDdKNF|4-!mI z$Y3d-zR@!xV$Vv+p8PzA5rt8-%P z_SJD@YW`;s6Vp>msW1HefsKu|y@hEl-&bC)l*EUR+h4FVr1D#H{ylX*73gWz64!{5 zl*E!$tK_0oAjM#0U}&OiV5)0m9%5)9nO2Eg!`|u% R-+>w!JYD@<);T3K0RX7yZH@o{ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_15.png b/core/res/res/drawable-xhdpi/pointer_wait_15.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc2085ac6fd8a631b69a7b1d1552fd167702020 GIT binary patch literal 984 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DI*yi?^DlFY@TQW1Kw4q2`G1lvj4;dw_~D zk!9Xmh@gGtejvkV@(UmdGyy_d7i|GDoEy&ok#+Gl?@7;0Qs)~d&jl(28VixK$XNws zm}M;Sner0IKtqmo#~`Mmi9@&^J$He!7P+gvCq4x-d?r8lp6~?7ARYnDG0$FUTfW=2 zY!^_MXYYNWQ6Am5fsXN-@E8~fmig-)YmWlmY?`*fq56XleOl@5Z_KaM&xg#PAN4_q=Ue;ypJs|b zpUCyTa%H>PCDC|byQRvj4++LXEB<_z)_oo>cS)DC{ZEeK%x`lz1E;M!^D~4;dB0yF z&{)PKZ+DmcP>#e#Acr&G&8-+H_5f^OmgKS@Ai)BUNT48t2N=7Z%(epwmK8Xr0~1jL zkgdRwwQ^+wknzgX#WBRtWbJ-XMYHi@Spx=h=C<)-*LL`5d`$;>HmX&(@ii9mG-MV$^(q3JI zA8+3Xa!JU_IBG4LH0kgH1yxhsyPPLE#L~q#boHEB^JdPRH*4)d88L_HK6( zt`8qlo;#Fjs8651o!{x!@$21l=kgxazGJhe?jK{L<3TycMn=VjZ{F;w5#VIFe9CJ5 ztA#38fxcEPag8WRNi0dVN-jzTQVd20h9g9jJl9)78&qol`;+0D^~oLI3~& literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_16.png b/core/res/res/drawable-xhdpi/pointer_wait_16.png new file mode 100644 index 0000000000000000000000000000000000000000..db13cf61e018ec4ae6b7ca6e6f26581cb475b7d2 GIT binary patch literal 945 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D5DwNZuw4qZIQFeq2{p9`-$AEOi2C7mxw8 z+IPw;pi6*kAabZa1Thf8g^(UScYqA%kPSqhz4sst{3K92(7%qgM}gjS zsy_i#>^0#r&|aWX?p-&%Cp@vpT@CcIQ^P5I$i#a5gr*4J1pc_g&qnD3QqbV;=&~AVfZLaL6$W{;c!cI zqmDdKk3=f{v|qa1~vl;KbW+e#Mc?#H3LB!X>tq7cL%M>%_lA z!RtQ5awccx30)D%!oe|GXU-hddZePGvzBGeTAkb$odDgGjjXFX{5^Qu7_CJ`MAv-d z6HI7VQC;4$WSPqHR#nSIQHP#Ac_Y-w6La@QU}!!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D0}s5xwwxy&SWzIoOP;f2GDAs zDKCK}kPVcAn*-!RkbBonxS;ohCqOpP9IpwFfeaw>p7adDz(oQL0a|U6GS9wpKhPOK zWmW|nfFAMazU@8nDagN5Ub=VQ1R7|OvkK?{=O&wQXt|w+}C;xOQK3^1W z%*Lty(}5|a0mxQh$XdBF0myji>Eak-aXL9cg7pYf z9pj%*O-=_7DOEgiZEkjUI{HCFfRB&6Um*R+S_dT~B_*dxoZFdJYAj&NOuNICvZ#?O z<>L$mapn+(^G(OQA{H>QhTY*3dF;@4WU&KhN~@7{9&6G^2Ue|BJ49EkWEOSFc);o9 zJAp|z_YPM{iKEt+FNLcO7&JRfO%AO*aD!!u(!nb|^3%DBxi@sVD0*vWOGjsCo0hP? zDf^ZXJ;|x*;DLjJv8?TrjXhjlDvG?4vZ9g}akr`Jtjl{R$noG{=fbA$+m}yEuXC8m zetF@WGkZ4K?W_AID9BjX=vc$S$*?TVeCF~GDJ(!wtCqM%l%yn)Pxubhz~JfX=d#Wzp$P!) Ccx~+f literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_18.png b/core/res/res/drawable-xhdpi/pointer_wait_18.png new file mode 100644 index 0000000000000000000000000000000000000000..c56ff6c1a6f259e55fae9c3416777dc45b751149 GIT binary patch literal 1010 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dgik%ux87I#Lx(Dby_s*N%6QBA_c?q-&XtG7_8ppch-jklWv|IrC z0vM9O0Q~>|ziCEW05IsIN`m}?fix!Ibk!BQF@L5R&o{rQ&-`<2Yb-=pFy?v$q#u6E)*G^bNwv&|>yiVP zMS*sJH@nt_BX3#QbSE%{+Hh@g4AUrn#JPfJ0h6oj9WIrUMlPW*1=GTqIvV08W=oX{an^LB{Ts5gFbtA literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_19.png b/core/res/res/drawable-xhdpi/pointer_wait_19.png new file mode 100644 index 0000000000000000000000000000000000000000..22b7c9099e4b52c195a42b5f3cc187b9ac23fbcc GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DAKW}9U$ zHOpM)-gVPFYq?Rb6=f(LnY-2%!2%?BcgG6(}M0_UPB16mCfacVdP zaR$UmCMolP44?}^QjMoA^VR|xK!*Wc0&*4DB@Q)*;dTLC3l#L4@E9lpA%P70%KbnR zD*`IE$X#t!uo38A*S0G_H9&8gWh?=j4|Iuf@*JS;*2P<$>QA_L-t?aM6lgv$(7Y!+ z0lEa}Dq#2k{R=c77-Ikb|9|c@Q4kmh(Ir8C!9W@tu=Hlzeuk$pU-4(%%s&R4-+IHp zNladPEb5i6=*cJv{%^f={@APhe6H2<+@9^^pI&v9C#9n5e^gE~H~#dK{`^*mKXBTX z8J?B7K(iT>yxm<&?&q!maX9nc+=>|(m=eI2x;n1d3lc2why)5Uc!06n$!t52U|E4< zIxt~10NDx*Su0m20F7exba4!^IDPf}OLL|`3APW3I)ZLDQ$2&udfeP3d@4vIXj^ur zwy4za|Mh*<$JL+TN#9q!-)?{Lyyu}){uePfZ~J(`AbFmkw85zxZ|_Q+JHGcjzl$)h zz>kQD8JF&Nd|K(S(nlm@wgAUQccr@-d5#IYf>gOyuPr#_)7zocXU4I}U*^oV$NGEE z%bc;yJ;2TG#?E$e(~1{I65<*-?ydOY;(B9Q(!z6%`#KzRI+>%6IYbI3l=3!z zzM+FVA@9AzhS>s-Om}YYKXP!P>b)82Q>QhpQ}&+mUjB`Rs^~4xwl%;1{F>JP_T0RA ze}#rZbag8WRNi0dV zN-jzTQVd20h9g9jJl9 M)78&qol`;+0QwlAZ2$lO literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_2.png b/core/res/res/drawable-xhdpi/pointer_wait_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdbe3fadfc77f46d6eda736d691d0fbcdced283 GIT binary patch literal 1037 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D+E*R)nex&sbE!-7Ig8vi7CEbYr@r=?{Mlnm{}Pngdkq*?S*oKG1L=2}I^u%OMP);Sh#<*G-^G z?}<&pKz!-;yvk^NyFz2pi}N2m@$7 z#3=LZl|WgbxM$x3pa{@9$GT%cH@LQ42C4xD7cfk``X6~uc;Ykpg>&N>>*8&|@NsTB z2XrdXdB6Y!hLuOxt^fc3&pKiS3~h#(k|4ieAdLkWFstAD&?~*=XEodH^KxAewW@zU zS6O<}=52-9=g-nkliNRV@_&n(KPT$sE1^G8#}-Zd9Nx}p-1S86Ox<}l(VtJG^Ka-% zt2;S71ttq%w0gU{l&;8{@f*nD%y)Au2GR~d%)oH9XwM=b#aZAH2@>=GW4Dvpb|AsB z0>^Y<;%Wf06&SKsu1o+L#qR0i7-Dg{_rgnarT_uf57TwdN3}R@3KrV*KJZ&?OU20v zZzBKyf9yN|?!&sd_brRlr~Fbq8>f2odQ#NwKTH|sYQ>^2UbHOGuJ$$GzVn?NOV#@m zYW4T8_aAYXz-rqPAb31shlX5xK)+CW%8a9zIiiB1%%oBc&G`H^=WB?~JaT`6o1LY&V)u?Kx1Ngqi@3kQw%4m`x94AN`x9AqYZqM+d<+a5)e_f;l9a@f zRIB8oR3OD*WMF8bYhbEtWFBH@U}a!nWoo8tU=C!QQPc27(U6;;l9^VCTf^S!3EzPl O7(8A5T-G@yGywqDKB0{O literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_20.png b/core/res/res/drawable-xhdpi/pointer_wait_20.png new file mode 100644 index 0000000000000000000000000000000000000000..6d042fb318f80c915ce8f2c7868bc6a375bc75e3 GIT binary patch literal 1049 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D_eWtuLN}2^U1P`*vT?3Q_S^-f5WI)((23!^{0#|@61z`hS z0%SPW9d~X#V_mexXYvb^lzBkMdrx`>bTClLss04e@j!-I=2D>ZfUX6yAyOXQw;?72 zy$NJE)*c0EobUuNQTD3-r5t=S`qEP%$tNye2#bdf%hxjzje!U~mC# z0a^-l1~9m+3O51W=H7J^WCbi3|NsAgtZn%bU}Pke1o;I6X>5Q;{n&FG=_j|@E^#&< zQ2hByaq=Hy{?F}xpM@sOIT`gz{m=Z6Z~UAe+9&@sQ~CKsuKl?&=lMVF(p|dG*U4S| z!^YO~lUZfjhd_SjV!bumKnoa?yxm>O-BNyD2XZ*`-Q0>97?>KsHV3nAwg(9octipP z89cz)?PRtcNU*HHF&&u98h~sChOCt<6M#l>db&7neMssiEs%-Tk{&b9By@?VCLF$fkd zzIumEvzz4p&S0wIj<|RI{}-Mc%%@xrEU05_t64SS$-e{HQW9bBl$hMUNDJ^(cHL|# zP~+}dCG@M!gU?~hmY${?yP1!j`e}aDUPfS*L4!ZzRGA~6f)1)j2r>pTb9f)!u`tQW z&CjoJ!i+M8G>Z*stY^*^Z`h!blsU6ol=0?)FK#IZ0z|ch3z*N`BJjBqz%D}+N)J)gF9LPAMrs0jE dAvZrIGp!Q0hP~Ajz5_Kdc)I$ztaD0e0svY+s_p;) literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_21.png b/core/res/res/drawable-xhdpi/pointer_wait_21.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ab63fbe62773ea8a31173d2384ade2d9b718cb GIT binary patch literal 1055 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DXGS9j3 zjCIi#v&>~?nM;k6=h#;r@aVbY(RItQ_Ne#7r$D1{A zq@bejaOT_O_fw_nYnjzbBx4Vya2*J#WM%zW&h8Wb$@FwP^BXO`G&|lE&lKK0nekNg z%AM(&Guc(nbo^vs=f2O^p7Q!`xyb0Fi4 hnua%uhTQy=%(P0}8unIC_zu*-;OXk;vd$@?2>@wCtWf{} literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_22.png b/core/res/res/drawable-xhdpi/pointer_wait_22.png new file mode 100644 index 0000000000000000000000000000000000000000..b25f6b7dba47b16d198c4a0fa73c14c7a0beee24 GIT binary patch literal 1102 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D$vVS<)wMn3hxO|%rcfZH=c2Ay=0oU5M(l5WLL2l zq5x*8%dPr0;Q05TvR0eaA9@^h#9lR$BxH-SEa zc*L>xDA3~`J$HfT0~ruoAZ`G95Eu@wZI^)_cc?i6R1Xw4O<&~EeH$7AnM;8I2n5g^x z+>Wpr=I1!s*jnfN2^Gb2$Hl}6{+xWaa)D^_b(bq*K8DZkmF?O2bdNI2O1BH0<=tJC&SgMqcV|i;wGc zQ;4=n`qCS3F>A7R)5dbP$CXLz)a)c$KBXqqXFZsB@QHY{=60S%HLSDz7}6f`q;aPh zEcbSMmMRdJ;LvRp;4P)I{zO8lZ+Gc@9W#?3_jo!IvZK3y^zBKyelf{^U)sZejLh{D z_Z%v&cp@`jM7<)*Q?ud2^ZMm$?yOo7@_&{*+g8_KkEQc1fWf9(;u=wsl30>zm0Xkx zq!^403{7+mOm&USLktb93=FJH&2$aSfs8Y18r~=xa`RI%(<*Um*jqi}J5U3Ir>mdK II;Vst0BqaBzyJUM literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_23.png b/core/res/res/drawable-xhdpi/pointer_wait_23.png new file mode 100644 index 0000000000000000000000000000000000000000..49faba90956109bceff678821762c97146021a6b GIT binary patch literal 1051 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DSr=|LNuBRC;ju;T8t;iu&9hcmxdDe21lzGNUvn_H~nPo2Xp76w}@w8RpCZJLH5zttO0+3yG$Kh-s7lMEyKn8@w zDu}EASs9QGK|tpL8BPtSK)xv62J{ZlBR~Z7nsehBpm)qNmjeCk*?Zri<_N?J_pY08 z+kxQ#^oV`+A=9*lPW2~zCO-#C0e$LFbJ%CfOQ2q$V)N{kz%cRXxno~-0O)a`6+nxC zf#cqJ6KJwW*RB8m|HuBmrwI)D$dVwxU?7bh@c7jQN>Bbgfvx4|AC;4Tcnn^3eOnrM zNwngL%`4qGmfxmD2~AslEJ}<2&zYH`Lf^XP|FKcI-EPBn(pdfZ9DYBuZ`R8v15IX3 z@^*JAT+bf!2*}~gcXKOdU|@OxwlezTo>Y)vfkz}zkii3t-A-oPfdtD69MgfRsR77V zV8~jzG686mil>WXh{frxliZz|9C=#Pc{P&Qb+QkOzEll^f9B)}OSWTVo6f5{O z{}*d-nq3!D)?;&Ez^RtFMwFx^mZVxG7o`Fz1|tJQ6I}yST_f`lLjx-V11nQAT?2C< jgTe~DWM4fJ|3Sg literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_24.png b/core/res/res/drawable-xhdpi/pointer_wait_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e91c340e3333f0d94d6afb3f120f8bb13fd97adb GIT binary patch literal 1053 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D`%ZmrTeiz0ceVG#r}k9`Tw5<%7j5yK^2)L9xM}(#tAY()6CRsoF7=u6 z(jsS-L(LJN$G0R+LoIKaQ`jBVueY1=u9zA#MD)w0wZUP!hB(lt34^#;> z8KNHO5+FimLqy=>Sh;ZZKnAh`AR8_P^byd(KxAFK&3n=_Zo#besE_{T3e|q?Q+b zi@iU6=Je?rUzdB7n_RnmdpXO|-|PXWrM_%wZ__>UdUnjd0_#VWHjNQ`cB`+wXtdql ztZ!-i@%ZW_p&GsVQ^y`nE?YiVl0l>Vt^b41+!x>6vDy7#eF1O8f$K~c9|`TA%Gl3P zxcbQF>5~IOV;@%@7Ohc^ie;`}TkiN;+V$Li&QiyP2SxS?=Pq?lT>0q5arHp9SE}(x z_w8UEg?Ui zO^N-Ny3DBtt4jwqDn31_$(+8nP4M}jTjIHF3;ur6;*@1`C}nEd<!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D$v7S^|fQ&G1s=sCMolLCO>y+xnN&?$f|IYY5F4Lq}jexUOCnt zHA$WCHQ}*E&MLEvB|cMLTI8;Fs5#;@`Gs@i8SCP0W|_;Z3pYD8obu?oW1KwKz3Zl3 z#a_$2b=E~&Ow$&C>>>pLZ3n6cx(cET$UtL5L@-H+F1UJR23!gk1L%05dZ1r`B+y@Q zy~fFNtO_Q4Yw0)xn*<}ff!fFWa^wHz2qz;N@P z_!JmEKr?}%0SpB9&YQqs{Qv*IF?)v@Fm94cg8YJkG(o`WJ>ksN50~ngr6+$YWo!Al zSFu;?$rgUOSD#nc`N^>{|LGEHe`2OM^QR?Gd&sx>$D-8#1kQ}Q^zCH6lVXTOqlYXz z&7auvC%=USQ{qZBrR<=i3XU^d9^F4n?>DjDbrd4%`^JeoW zT2*ele~3vn_)NEV$4}N)*Q2V>gqiob_W!G@VyW<^DB2 zFmXEfEX6mPEgJ$iu3upx(Es4D)lLCRp+kjxV;Y1ve#vZh%CNECe?YC3;cUk`v8fE_ zu9^LK{*&#;RQEbA4#Oy5xT%)7MwFx^mZVxG7o`Fz1|tJQ6I}yST_f`lLjx-V11nQA nT?2C<gTe~DWM4frem|? literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_26.png b/core/res/res/drawable-xhdpi/pointer_wait_26.png new file mode 100644 index 0000000000000000000000000000000000000000..ea902f80fde44d16e451e1988d11ed303b0ebd76 GIT binary patch literal 1033 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DQ4Xz$D!u1S;i9c?3F;T0ljRTJjbKw4ltlh(-%3`9Wzdz3k)$}AUHLg z`v3p`q}N-%0|PyzB*-rqNaF--9$m-I{5*fsNqX|P#+Gl2-+YTgHR^XTpOhOGnwgN-e%9RN~qhvi@978Nlznys9 z>5zkft9p;BgzAlGAD56ffjmjfNBj2bH1*u5{{7$mID7IHoqr9_3(w!ZtI43}Ha)Y{ z-NpaP8&>&WzmgB7KA3LC7WusIbL(WKxzj#5ALF-|5q@T_F|nuH*P$6pXh8;c>m^vCw2#(edfL> z_R5I=nznyJG^aQ7H)-~=Sxe=VSou<-pEOGFcTQUSso|{erFDB)HrQ?3vHT>nTD_qE z_LI!N*-Ks|?6zU}CAfa05ATA~gymeRoCoadKk+5qw+Z|i%XR}8VyY#s5hW>!C8<`) zMX5lF!N|bSMAyJn*T_7?(7?*Tz{=E2*T5XeIHRWFjiMnpKP5A*61RrE)e}I;hQZU- K&t;ucLK6UJZk$&D literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_27.png b/core/res/res/drawable-xhdpi/pointer_wait_27.png new file mode 100644 index 0000000000000000000000000000000000000000..7d628c3886d3ce8e49d37c16cf310b50d3cda976 GIT binary patch literal 1064 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DZK2QP=PoT5tP3|=sQ+s}H$%-T)a(Is#e;(dE%~ z3&;Sv3J-#)L{@;N1;T|WgR_C^k=a21!c73FOqyj?u)(qJxLe0HkM7$bsVT33jsg1G zG;M)X!zrMbfkEL^e-h-=s)Io7?p-&5LFd)~$ZNu5OSqJ&;4{$!przwU4yXU}$ZJ)p^qN#5=*A>{W0AwpLWUXA805nS8 z)5S5w;`G~zH+gH1GS|*mwfB!&W1P$H zH*;9TXYPx+Z{ILI{Q8vR3zVP#5x8Z($IQk^N^bL^i7zZJvWRfnOCG*$y{O_)lmD8P znGH#TGaP@<%P8YJ5E-;;%E~TpZT1x>;u7p^gwE-o#=ffx{5kuD-!^FRx0HSV#$VEIbHHTZ++*=JpDSkXk^6T3{%6LY1`gJT5B9YI z!%VfrHKHUXu_VKd7c7#dg^7+9H_=^B^=8E4cqyiqjd=BH$) XRpQpLw|c^Npaup{S3j3^P6!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dd$nt;Wf7jgn?r7jJWEKJPR6g?aW$-zl#gYmb_w&UbCQ z;x*y1Meb_bvR&R2o|t7WGfi7ynYY$^;#0@EV}&brZ;S>$nC{2^29-o?}(85$H9bltndK?%IKu0=MA989u4GbkAp~e9W0JSKOP&&cpg54jneXOS%)r3h0JiLF(T;AA zV1Y*@P>{g`jNMLV+kphj3LMjc$)^FxR$$0lxiSH0l$587V~EA+xBZ#+Oo1Zp?_?=Q@;CC0ma_GzxS8c`y}gJX8-Vc&#vz_|Etg0_DJ?r)&666bYsVP z=@k2!Gk6v{W@P=EJ&*Ie(!6P>rW!B$++DO%iqrjU-MRjX%24IzTVK!aIjMi-!?rs2 z_>3#!_V5&hgtTh#H_1h~_Ws_=w&lmcU7~eN#PIUR=?4t$Fm9`@&Ph_fKDJv$pp;sJqs2 ziIczn@42}(YNy_H$Z?cptHiBgZ}o)lKn)C@u6{1-oD!M!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DPAp*yqxG-e>X)kDfa|Q(ijO9yLjs zXOcSKIC+lugeMj`t1NO?d-UA(n(){(eUV%HRgbP)=2^>qr@V5iKVekW!^fF?37nPLF44P)yEj1 z-Sq6e4-^M_)2Z<^P^DSsQm6Wp-jkjIL(j49I51coY7PT~3m8@o)rWvC0frkee9W^} z0D}t{s=$B(dIT7@!0`G1|NpBnyWPO(i7yHA3kK5o08dEo$=he<@T*Mw@Oc7f%eSA6 zY;u>b>OOz2CH>^{(lmQ%MUSEt-!A>^;ureE`P|I%s^Sy5U1zi=8#{^qnH;s9^Zy!C zPoVjXN#5=*waYdNoCI<>^WEHv85o!sfGz%XZ|`1^V1Y*@P>{g`jNMLV+kphj3LMjc z>8=6DR$$0lxiSH0l!T{?V~EA+*3Zr#~uEMMGIl*?bnPTPVrT9(C(g#wDv= zRUbccc6y%FT)9#+^JS;xFSfQ5pWKdp{5Ui6=E{NzlV@ipwM;NK?LL26-@}!$)%BT} zL8bTVACH6<%-GtycJAKh#gjL4M|iH(4!L*1V&57Y)2nCiHVbmu+}-P-b!x977tbSY zt>EC=8cE5SGa@5y-mtXTx#Mq51J|F*1D_awg*tp@ek)n|^GD(|t`DrN%iCIvxSA{y zKf1158TYWq>ClOPLV`?Ds$5AcGegCfE!$<>wQ*rv&kmNwOGG*Z1>+~rdL^W(d!~Uo z!tLpjWp2iw3?HxRdP`(kYX@0Ff`FMFx53O4>2^bGBB_*HPbaP2Qtp6X?UY( c$jwj5OsmALVQ=+>??4Rzopr0D;x83;+NC literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_3.png b/core/res/res/drawable-xhdpi/pointer_wait_3.png new file mode 100644 index 0000000000000000000000000000000000000000..de4d79c80d353f8c0f0271f7d8d4ddef0c573886 GIT binary patch literal 1006 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D`R zA+AP=Gi}Rv+gBa5D%fb2vBY=kYoEz4oElI2OnGUVzR0oms7KFTS zz4{;h|NsA!r|UFeaEF%!`2_=MEI^S>=*-WSndjy9J~zmGC0%{V`$LQ3lRt9CKc}^S z;}rTFvS?b!N%iO7fb{3^E>7<`DsSanUv=4EefUbnc>bk|924a%U<5KSCV9KN=GW4Dvpb|AsB0>^Y<`e^{N6&SKsu1o+L z#p>ze7-DgH?gjT?r$8Ro2kD(1veF%~8^zzqz7{^ZZo$RpTNCyF*XJ7LStcIaZF~RD z#xsJ%kOtDxt^(uk@a1sz_~yplQl~A zO#3xtWrGdv7+r6s1RWK*x1=WO;29mU;?G)QJ;l0O5k?0-ZEg@{UbBxQ!r0+WsKY6y ze5OfZt^rGuY&DFYw1wqJDd)VLa9iTdhBY%kCGI=jD5K@8asT%7@<^j##!t=8|0Zzu zX@pqVr~Nx)UH&M%jk`Jc-=sfp=B#pX{uA9_;ds@QA*FuK>C_e5_}&Wa^@;x(a=&4{ zh~lDS2IuxJdlqmy{=Yt#hxG@Wvd9O(kWnphjVMV;EJ?LWE=mPb3`PcqCb|Zux<=+9 vh6Yv!23DqKx(4Pz#u+sYZxju=`6-!cmAEzRt)B25sDZ)L)z4*}Q$iB}fy<7D literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_30.png b/core/res/res/drawable-xhdpi/pointer_wait_30.png new file mode 100644 index 0000000000000000000000000000000000000000..ba04b5e8acb26c090a5039799095920c0f5c235f GIT binary patch literal 1015 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D_7jJWEx!^P9rDN?;)3gPSb;pg9W_wL| zY@WT+s$io{=??FSPfgPonPn_-s5xv^u)$~Y3)8fP4mC$C^VYexUa~IS?Adz{XgJvj zXdOf^$a&Zh&~{{Tpv#fD$g&A@6D~b5 z@P3sbr}(zT&%@)J+0S;TjZT3#%=Q=F2Aa&6D~w(^(O zrsp8R0*^?bAcF@OyPeFo0|}NDIHm)WQUj2!z>u|aWdhJBW=|K#5R22v2@VXEtgcHv zQbj{eE7^1$Vx5hJ_@->xa&bv%$<)S2ffo%o7JlUH^bDMMs>xA#2c9fGiL5=Rb4!FYwudg2+uy*D?GBzC+_Uo zVNuQQ?xwM!h-vkS;m`bM_)dgqQ#oj9>`X6w|(-nq?_Po9;1BgDUf^^~N;=exF& zJ9ktjOxyIas$_SWHt~oO7HH zOB{7L^MT`gf}306mj$BJ6H=Zev2Rq_*}ymb5Km2}pJXP7cbK0<_a6-jRue{s?i{;W z+uC9l0K-MK#5JNMC9x#cD!C{XNHG{07@FuBnCcpthZq`I85mfZn&}#t0~u%3G`vwX c!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DPAp*yqxG-e>X)r}~p7Df1lbj(Jaf zYLUCzqvwu!_Da*Vg=U${JbLcBciu3|SmIQF!mIz0ZP_l@w#)9FH*L#z15KtBCC!4E z0CXW91hgIE3%DAfFOWsdGM9p+rn~}@9^JQ%fW{`xf^dN%-V>hKSMK+k@YrYabD&0G zPyhuTYL0-kfDzCr%e-|!@4K~M_2{|<3=p6=Fc5&j0t_+Zf>=PIv$t_w64lJh89@$J=tY5cu^&i{F3`MlIX?#X9q^{a;! z%_g_6G*59Dy>ySWuJFfcy=Tm83f`$dpofkz}z zkii3t-A-oPfdtD69Mgfxt^vqaV8~jzG6Bf=@9E+gVsSb-!GXcDlGSyoORB4As41Jz zf^`dLa|;p4!_sq@~wJbL29ku!%*9XogMbCOv*6EHU$=#)GLWw{%+F8Jjz{^ynPckYH6|WcVZOd_?LCFDRp`mbgZg zq$HN4S|t~y0x1R~149#C15;fi^AJM=D+2>7Q!`xyb0Fi4nua%uhTQy=%(P0}8unIC R_zu*-;OXk;vd$@?2>^CwsDl6i literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_32.png b/core/res/res/drawable-xhdpi/pointer_wait_32.png new file mode 100644 index 0000000000000000000000000000000000000000..3297a7d15e5fe076ec5e3a7e5409cd48ebb31783 GIT binary patch literal 1038 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dh*3a?VItG?MQ}m$tmQT(+u&Rv z11M`%un{3LlK|7o9g_`q#Tv$u`RPJV3aPkt&|&TRk2 zBl!@XnPBKn`cVn_Dq3{XlHhOPzEVBv{}P2^3`T z0Ash4*>)hovI56+pvndyTY({K<;nygTVwvxAmXp>_fXvnI#!#R^O!n z7`V93K4S1FSb>Slq=rkv<>-tfl5Ph*m>9ew9Cj+rWCDf>gKCLuL`h0wNvc(HQ7VvP zFfuSS(KRsDH8Kw|G_W!-urf8%H82M<&Zud4qiD#@PsvQH#I0d(^@Q(04Gf;HelF{r G5}E+ENr(af literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_33.png b/core/res/res/drawable-xhdpi/pointer_wait_33.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ac3b9655ed2da7b9825cfcb6265757bd2d681c GIT binary patch literal 1005 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dkf< zGD(@|SbNkoZJ|-pET73QtO_>)O`s3~9e@h~T>>=RzUm-W1?E{RfU;(pOMRxi1S;_8 zzHOW|8|YMrnj>Bl9s>nU(-#3f0%SNfoN}l+>@)c}(ESjjfEuj}Hv`!~?GO>5ERX>d zH%^`dlya&+;of-@Xbw=&d%_c^`jb`#8-WHoHJ%2l1O^2#5bUcD0SyO+4=@~D+pa*u z@c;k+F{?Nffk7W#666;Qq_F_bz{$s+JfG$*H|KMsbluNVzwM&cx=tVFhiC~I$FBbK zT&48k?M8mluAk@G+NGcTlrx^$@|lzWL-_m&fhV6ce?AlY%~jfu&7+_mXf|V#x4TQ> zdiIz{Kn`cVn_Dq3l_-EM)jT=Z8D!CKhJKR>tS2m*>pAfy-S*xuW9d57q>k zGDr3F30&ggY%vXod2_n0{aAUN;fDWK z9atSJL|EDxL|YyO9uP>IBq7)6-&l|`g;&{*m1oYK9;FIV1CGv3#yw4r%nYZqY!`X# z^qC9vziNqVL`h0wNvc(HQ7VvPFfuSS(KRsDH8Kw|G_W!-urf8%H82M<&Zud4qiD#@ aPsvQH#I0d(^@Q(04Gf;HelF{r5}E+Gmvs67 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_34.png b/core/res/res/drawable-xhdpi/pointer_wait_34.png new file mode 100644 index 0000000000000000000000000000000000000000..0eaa3862328061a08a9e4f014b013b87762bcc21 GIT binary patch literal 974 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D zA+AP=GkvGNHp^V*JLQ#i(H6Ik>z=*$T$;~YBl9s>n|x`0*yec@Dp5-8|1`Gra9e257U?ItPnfDQnP05t-Y0U1DXpomq$ zM#sA2Km$E`?g9mYX1aIX1O^4roj^mpCp`mt9B8;h&0+6}PeFD~e(uzG+PZKvFwp-0 z|DPk#84V2Okdh$3U?7bSIK3yFx%%*ANW!-dGv$n1)c?HF3OR6NMTjw*LHN=?PgE3V z{yf8G_OM;$$xk`6Y3<+mg+52knICxmE&sPalN;I6GMhEO%?29EnB?v5lBJq7l@G|_ z%y)Au2BriDux*OAGd6+*3p^r$f(#yD>~=ES4kTDs;Fu0n*#KlKFl4PE17-;x$f&iyypk^YQjzg3h3t!69Cx%Z%ot&HwA5vCYyl7GKp=9S&k&C_) z`8vD%o0?mWs2G|!Pnohfz@cVSm)0sS(^6hv-CS9>Sle3W4U;&Wl|@*6&h!{0!C8<`)MX5lF!N|bSMAyJn*T_7?(7?*Tz{=E2*T5XeIHRWFjiMnpKP5A*61RrE T)f2u0H86O(`njxgN@xNA9c^yd literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_35.png b/core/res/res/drawable-xhdpi/pointer_wait_35.png new file mode 100644 index 0000000000000000000000000000000000000000..73894d8981c9cd07838748132cb8bff3560a9e64 GIT binary patch literal 965 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DTA>VMHV@$Oj73?C(p4i-s;?R&S&xq$J(Q2naeD4SKE|q z^XR$bJ@F|}7a7Pbb1BdY>drv-Q0?S@t**; zNp0fXc939!M(}5}*fNTYZtd%PhfQ(O`E{-7ID zgf10fHkpRG$FJ}#Idq3`J*bvRwtnAS!EXR88 zq64d5g@}eav*?aTfeMn0Aq%?P8>6`xSzk?bV0~91Qn7?dv;rtIhb`nmt9xU)RX`)Z z94pVhx_AF{eu#W%yu@b5%JYY*$%kh#0}q4ZQ8TsYK2~RdzE>@AjVMV;EJ?LWE=mPb z3`PcqCb|Zux<=+9h6Yv!23DqKx(4Pz#u+sYZxju=`6-!cmAEzRt)B25sDZ)L)z4*} HQ$iB}DkNj% literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_4.png b/core/res/res/drawable-xhdpi/pointer_wait_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ea44e85ded9201101d3a21c316c3d56f55930b03 GIT binary patch literal 1015 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D`R zA+AP=GtDxVm}f2bo%-5m@(ZViQ@&GPnPo0@s6OQ0b<-$mmiNS`=2HnbFD3~WgfJiqfNV4_Tq80AnGLZ5C;~x1?LZ&dS04hp(6#j< z(1Sp6?+H&JE_7-YHT#WBR< z^wCT1(M*N{Y!9w(To54`Te@}y$Bm82jxigGCPxcWy z{&T(HE3WeI83$aC+_PhC$!~zeNdj`x}y(d)Nl-+uIyBDM>WgS@( zv&byX!A7xrWu|i4l(2N(8NmnsC^xgRR`~NMae3GoM}!=>#NC|Ax@M12MCgI2pZ(73 z!X=hGsY$*pQ{>I2x35t6cGA3imCw7q8gDqU{XGBXSE8@R-*{LI>EVfoPsy&`ad$)Uv4blbd6W$`JC!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Ds`TFb!xZW0JSK zOMWOvVk3~lneXOS45SwTF$2S4v*ijvinG8Y5+vvW#%?FG?LdNM1&-;!B-8+8D==iO zT$ungiq+G_F~s8Z*-JN-oe~9(J@iS5FP>nbQvFS*RVn-C^iH*#Q}6z-&$QF4HO{l% zzW@20?>Tb*mh!r5tMWf5?_NCj{qZ-h?#p>(_M8da=grpmPDYTmI_2VPqXl-7Az!2g zq$appq#RlBNx_+oM?2w3*TEG`bC{Y9-^Ruo7nl|tPKcR(;-9ggVS*Fm9;t@Wp4#yiZ|~pN>5f zdvsd+Vwp_Mw0+GT`S0ajc4w|w_w%-K$Nbj${CnBAZfmUlV`Se|J)vn=)oorjK1=uh zOANfd-_&jFEN!jXGqV2O{m;fR&0=c)vjA>j$f%aMMwFx^mZVxG7o`Fz1|tJQ6I}yS zT_f`lLjx-V11nQAT?2C<gTe~DWM4f7ln>h literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_6.png b/core/res/res/drawable-xhdpi/pointer_wait_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9aff69813d30e0412a751c28673c8c3f339aa5 GIT binary patch literal 1002 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DR zD>6x)4-vO1-2r3(RRYxm86I7?fX3Qa9|D>WR0FgKCsOn&a%bk4eHi&^F}plh8Q z&zPjl^Pcp~q2>rM5P+Tn29DQ+$5sU!fgxj>w!pFO7|_42trv}wW&yovTe|cA|NoDE zUD*u`^uUrJzhEGZ4A_iCRi6Jz*!WZK%(S|1oI;<&7flN}ss8+1$oy&iAHv%?4Sp&< z`J?Flwnd`%65G00%+m~#&&y5z8Thb5H2L<8)sy}FrZJlVO=L{+c6Z4SjKXlrR}^?n$rAS);)rl#B--8jc4z;OnX zoU(``*OU($0evi50S6a5m~yRf;O%GHnX!PWw1z8*LnEM9HKEl_htWN&Y0ZU0y6e|6 z7cJ4tW36f|bTEJQc#63}k3Yk$10CM?PFNTi>YO<;g|mIn%*uqIqKFx+%En=t-m4EB zm~v%!X`ZAns+ZlPopr|m}>bxz#&fAACkDfSjxce;gJ-dB%{}_9EdTMe6 zelzlJH9O^bP0l+XkKdq#sO literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_7.png b/core/res/res/drawable-xhdpi/pointer_wait_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a54edc06e45fc7f3b5f4caaacc02c5b952126d7c GIT binary patch literal 986 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D zA+AP=GkvGN_L=;`so|8*l$U0iOC4&Ccy!-3PM+gE@u_M0BJT-L%(GT_^xQGaSmHb7 zl|#*8;KtZhHK$U2Uk+~2pXlmf*ATyBJK=ob| z9s@<-2q)dqCx_Fye<}#C%c_yjzog2>p!vq){aOS(Y6$9x9K+M2!CU30|km4-xhy)3GfU(=j zY&(!(S%G6ZFugPY*$NCzB*RiVGzj=!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DOip(wU#5+CTG~ z{po%FQ!eCNqfpmLX1~U8W1c69&(+mc6x-PreVgw$;l^a1)hovI56+VB%;1vK1JzR<29{GCq5{ zIEGl9e%l`%?U*Rg>Z>ZKX{pkF%SpX+QNYUulX{%Ft>2vc^Z)*ZXG+%ozl(3TmRi35 zeP)fJ#Im34k%eolVwv83Gx$8q;X~2VsAzGHeZPbsh;uZuH7szrk>Mv$qub%1b83|W zXUl~LN2V=s`VlFr^vh|=?E~NX^zPrCY<IkRRD z)5C>m^6pRh_ve-7-)Wb!SO1;3 zOKG#~?gz70OQ==^FK~VRK5M&jP5FFvqnpQeMR)NBacX$>A2qr-skYMMFWbHSCVhuF z!&U;luUg_7QIe8al4_M)lnSI6j0_A-bPY^(jm$#~4Xg|dtW3>x4a|XzGin;%C>nC} aQ!>*kackIHJ>ff01B0ilpUXO@geCxg_I+Uh literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/pointer_wait_9.png b/core/res/res/drawable-xhdpi/pointer_wait_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f39c7a753959a065352ca7765d48f831deff5c47 GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DyLa6*PMYmC;jwAj02-vHUq% z?z6Pn^A@d>Y|QIc8}qDqBH{5+_hBQa=!a?EXUuO5-&L-O&wKlHYR*2>reD<$YFGTz z*?CExUpnObO~L060)&|NSIei)6_B65Luq5h@ucR?PnjRrxLq@PEbP0l+XkK;z4?} literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/pointer_wait.xml b/core/res/res/drawable/pointer_wait.xml new file mode 100644 index 0000000000000..8955ce8dd4184 --- /dev/null +++ b/core/res/res/drawable/pointer_wait.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/drawable/pointer_wait_icon.xml b/core/res/res/drawable/pointer_wait_icon.xml new file mode 100644 index 0000000000000..d9b03b096093e --- /dev/null +++ b/core/res/res/drawable/pointer_wait_icon.xml @@ -0,0 +1,5 @@ + + diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 90fc22b8b3b81..0f817f3302848 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -7631,6 +7631,8 @@ i + + diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index b831df827a8c8..eb99077beff6b 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -1339,6 +1339,7 @@ please see styles_device_defaults.xml. @drawable/pointer_hand_icon @drawable/pointer_context_menu_icon @drawable/pointer_help_icon + @drawable/pointer_wait_icon @drawable/pointer_cell_icon @drawable/pointer_crosshair_icon @drawable/pointer_text_icon diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index c9586e4ca81d3..bd6af788bcf74 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -86,6 +86,9 @@ PointerController::PointerController(const sp& mLocked.pointerIconChanged = false; mLocked.requestedPointerShape = mPolicy->getDefaultPointerIconId(); + mLocked.animationFrameIndex = 0; + mLocked.lastFrameUpdatedTime = 0; + mLocked.buttonState = 0; loadResources(); @@ -239,7 +242,8 @@ void PointerController::setPresentation(Presentation presentation) { AutoMutex _l(mLock); if (presentation == PRESENTATION_POINTER && mLocked.additionalMouseResources.empty()) { - mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources); + mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources, + &mLocked.animationResources); } if (mLocked.presentation != presentation) { @@ -402,7 +406,7 @@ void PointerController::setDisplayViewport(int32_t width, int32_t height, int32_ updatePointerLocked(); } -void PointerController::updatePointerShape(int iconId) { +void PointerController::updatePointerShape(int32_t iconId) { AutoMutex _l(mLock); if (mLocked.requestedPointerShape != iconId) { mLocked.requestedPointerShape = iconId; @@ -462,8 +466,17 @@ int PointerController::handleEvent(int /* fd */, int events, void* /* data */) { void PointerController::doAnimate(nsecs_t timestamp) { AutoMutex _l(mLock); - bool keepAnimating = false; mLocked.animationPending = false; + + bool keepFading = doFadingAnimationLocked(timestamp); + bool keepBitmapFlipping = doBitmapAnimationLocked(timestamp); + if (keepFading || keepBitmapFlipping) { + startAnimationLocked(); + } +} + +bool PointerController::doFadingAnimationLocked(nsecs_t timestamp) { + bool keepAnimating = false; nsecs_t frameDelay = timestamp - mLocked.animationTime; // Animate pointer fade. @@ -501,10 +514,32 @@ void PointerController::doAnimate(nsecs_t timestamp) { } } } + return keepAnimating; +} - if (keepAnimating) { - startAnimationLocked(); +bool PointerController::doBitmapAnimationLocked(nsecs_t timestamp) { + std::map::const_iterator iter = mLocked.animationResources.find( + mLocked.requestedPointerShape); + if (iter == mLocked.animationResources.end()) { + return false; } + + if (timestamp - mLocked.lastFrameUpdatedTime > iter->second.durationPerFrame) { + mSpriteController->openTransaction(); + + int incr = (timestamp - mLocked.lastFrameUpdatedTime) / iter->second.durationPerFrame; + mLocked.animationFrameIndex += incr; + mLocked.lastFrameUpdatedTime += iter->second.durationPerFrame * incr; + while (mLocked.animationFrameIndex >= iter->second.animationFrames.size()) { + mLocked.animationFrameIndex -= iter->second.animationFrames.size(); + } + mLocked.pointerSprite->setIcon(iter->second.animationFrames[mLocked.animationFrameIndex]); + + mSpriteController->closeTransaction(); + } + + // Keep animating. + return true; } void PointerController::doInactivityTimeout() { @@ -549,9 +584,16 @@ void PointerController::updatePointerLocked() { if (mLocked.requestedPointerShape == mPolicy->getDefaultPointerIconId()) { mLocked.pointerSprite->setIcon(mLocked.pointerIcon); } else { - std::map::const_iterator iter = + std::map::const_iterator iter = mLocked.additionalMouseResources.find(mLocked.requestedPointerShape); if (iter != mLocked.additionalMouseResources.end()) { + std::map::const_iterator anim_iter = + mLocked.animationResources.find(mLocked.requestedPointerShape); + if (anim_iter != mLocked.animationResources.end()) { + mLocked.animationFrameIndex = 0; + mLocked.lastFrameUpdatedTime = systemTime(SYSTEM_TIME_MONOTONIC); + startAnimationLocked(); + } mLocked.pointerSprite->setIcon(iter->second); } else { ALOGW("Can't find the resource for icon id %d", mLocked.requestedPointerShape); diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h index 6d840db0ec5c9..b6c01d2903a9d 100644 --- a/libs/input/PointerController.h +++ b/libs/input/PointerController.h @@ -20,6 +20,7 @@ #include "SpriteController.h" #include +#include #include #include @@ -30,8 +31,6 @@ #include #include -#include - namespace android { /* @@ -43,6 +42,11 @@ struct PointerResources { SpriteIcon spotAnchor; }; +struct PointerAnimation { + std::vector animationFrames; + nsecs_t durationPerFrame; +}; + /* * Pointer controller policy interface. * @@ -59,7 +63,8 @@ protected: public: virtual void loadPointerResources(PointerResources* outResources) = 0; - virtual void loadAdditionalMouseResources(std::map* outResources) = 0; + virtual void loadAdditionalMouseResources(std::map* outResources, + std::map* outAnimationResources) = 0; virtual int32_t getDefaultPointerIconId() = 0; }; @@ -98,7 +103,7 @@ public: const uint32_t* spotIdToIndex, BitSet32 spotIdBits); virtual void clearSpots(); - void updatePointerShape(int iconId); + void updatePointerShape(int32_t iconId); void setDisplayViewport(int32_t width, int32_t height, int32_t orientation); void setPointerIcon(const SpriteIcon& icon); void setInactivityTimeout(InactivityTimeout inactivityTimeout); @@ -145,6 +150,9 @@ private: bool animationPending; nsecs_t animationTime; + size_t animationFrameIndex; + nsecs_t lastFrameUpdatedTime; + int32_t displayWidth; int32_t displayHeight; int32_t displayOrientation; @@ -162,7 +170,8 @@ private: SpriteIcon pointerIcon; bool pointerIconChanged; - std::map additionalMouseResources; + std::map additionalMouseResources; + std::map animationResources; int32_t requestedPointerShape; @@ -178,6 +187,8 @@ private: void handleMessage(const Message& message); int handleEvent(int fd, int events, void* data); void doAnimate(nsecs_t timestamp); + bool doFadingAnimationLocked(nsecs_t timestamp); + bool doBitmapAnimationLocked(nsecs_t timestamp); void doInactivityTimeout(); void startAnimationLocked(); diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp index be190cbef47d4..b5654eebd34f9 100644 --- a/services/core/jni/com_android_server_input_InputManagerService.cpp +++ b/services/core/jni/com_android_server_input_InputManagerService.cpp @@ -152,18 +152,23 @@ static jobject getInputWindowHandleObjLocalRef(JNIEnv* env, getInputWindowHandleObjLocalRef(env); } -static void loadSystemIconAsSprite(JNIEnv* env, jobject contextObj, int32_t style, - SpriteIcon* outSpriteIcon) { - PointerIcon pointerIcon; +static void loadSystemIconAsSpriteWithPointerIcon(JNIEnv* env, jobject contextObj, int32_t style, + PointerIcon* outPointerIcon, SpriteIcon* outSpriteIcon) { status_t status = android_view_PointerIcon_loadSystemIcon(env, - contextObj, style, &pointerIcon); + contextObj, style, outPointerIcon); if (!status) { - pointerIcon.bitmap.copyTo(&outSpriteIcon->bitmap, kN32_SkColorType); - outSpriteIcon->hotSpotX = pointerIcon.hotSpotX; - outSpriteIcon->hotSpotY = pointerIcon.hotSpotY; + outPointerIcon->bitmap.copyTo(&outSpriteIcon->bitmap, kN32_SkColorType); + outSpriteIcon->hotSpotX = outPointerIcon->hotSpotX; + outSpriteIcon->hotSpotY = outPointerIcon->hotSpotY; } } +static void loadSystemIconAsSprite(JNIEnv* env, jobject contextObj, int32_t style, + SpriteIcon* outSpriteIcon) { + PointerIcon pointerIcon; + loadSystemIconAsSpriteWithPointerIcon(env, contextObj, style, &pointerIcon, outSpriteIcon); +} + enum { WM_ACTION_PASS_TO_USER = 1, }; @@ -238,7 +243,8 @@ public: /* --- PointerControllerPolicyInterface implementation --- */ virtual void loadPointerResources(PointerResources* outResources); - virtual void loadAdditionalMouseResources(std::map* outResources); + virtual void loadAdditionalMouseResources(std::map* outResources, + std::map* outAnimationResources); virtual int32_t getDefaultPointerIconId(); private: @@ -1041,14 +1047,31 @@ void NativeInputManager::loadPointerResources(PointerResources* outResources) { &outResources->spotAnchor); } -void NativeInputManager::loadAdditionalMouseResources(std::map* outResources) { +void NativeInputManager::loadAdditionalMouseResources(std::map* outResources, + std::map* outAnimationResources) { JNIEnv* env = jniEnv(); for (int iconId = POINTER_ICON_STYLE_CONTEXT_MENU; iconId <= POINTER_ICON_STYLE_GRABBING; ++iconId) { - loadSystemIconAsSprite(env, mContextObj, iconId, &((*outResources)[iconId])); + PointerIcon pointerIcon; + loadSystemIconAsSpriteWithPointerIcon( + env, mContextObj, iconId, &pointerIcon, &((*outResources)[iconId])); + if (!pointerIcon.bitmapFrames.empty()) { + PointerAnimation& animationData = (*outAnimationResources)[iconId]; + size_t numFrames = pointerIcon.bitmapFrames.size() + 1; + animationData.durationPerFrame = + milliseconds_to_nanoseconds(pointerIcon.durationPerFrame); + animationData.animationFrames.reserve(numFrames); + animationData.animationFrames.push_back(SpriteIcon( + pointerIcon.bitmap, pointerIcon.hotSpotX, pointerIcon.hotSpotY)); + for (size_t i = 0; i < numFrames - 1; ++i) { + animationData.animationFrames.push_back(SpriteIcon( + pointerIcon.bitmapFrames[i], pointerIcon.hotSpotX, pointerIcon.hotSpotY)); + } + } } - loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_NULL, &((*outResources)[POINTER_ICON_STYLE_NULL])); + loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_NULL, + &((*outResources)[POINTER_ICON_STYLE_NULL])); } int32_t NativeInputManager::getDefaultPointerIconId() {