ADD week 5

This commit is contained in:
2025-03-31 16:33:42 +02:00
parent 86f265f22d
commit bf645048e6
4927 changed files with 544053 additions and 0 deletions

View File

@ -0,0 +1,486 @@
package androidx.core.text;
import android.text.SpannableStringBuilder;
import java.util.Locale;
import kotlin.text.Typography;
/* loaded from: classes.dex */
public final class BidiFormatter {
private static final int DEFAULT_FLAGS = 2;
static final BidiFormatter DEFAULT_LTR_INSTANCE;
static final BidiFormatter DEFAULT_RTL_INSTANCE;
static final TextDirectionHeuristicCompat DEFAULT_TEXT_DIRECTION_HEURISTIC;
private static final int DIR_LTR = -1;
private static final int DIR_RTL = 1;
private static final int DIR_UNKNOWN = 0;
private static final String EMPTY_STRING = "";
private static final int FLAG_STEREO_RESET = 2;
private static final char LRE = 8234;
private static final char LRM = 8206;
private static final String LRM_STRING;
private static final char PDF = 8236;
private static final char RLE = 8235;
private static final char RLM = 8207;
private static final String RLM_STRING;
private final TextDirectionHeuristicCompat mDefaultTextDirectionHeuristicCompat;
private final int mFlags;
private final boolean mIsRtlContext;
public boolean getStereoReset() {
return (this.mFlags & 2) != 0;
}
public boolean isRtlContext() {
return this.mIsRtlContext;
}
static {
TextDirectionHeuristicCompat textDirectionHeuristicCompat = TextDirectionHeuristicsCompat.FIRSTSTRONG_LTR;
DEFAULT_TEXT_DIRECTION_HEURISTIC = textDirectionHeuristicCompat;
LRM_STRING = Character.toString(LRM);
RLM_STRING = Character.toString(RLM);
DEFAULT_LTR_INSTANCE = new BidiFormatter(false, 2, textDirectionHeuristicCompat);
DEFAULT_RTL_INSTANCE = new BidiFormatter(true, 2, textDirectionHeuristicCompat);
}
public static final class Builder {
private int mFlags;
private boolean mIsRtlContext;
private TextDirectionHeuristicCompat mTextDirectionHeuristicCompat;
public Builder setTextDirectionHeuristic(TextDirectionHeuristicCompat textDirectionHeuristicCompat) {
this.mTextDirectionHeuristicCompat = textDirectionHeuristicCompat;
return this;
}
public Builder stereoReset(boolean z) {
if (z) {
this.mFlags |= 2;
} else {
this.mFlags &= -3;
}
return this;
}
public Builder() {
initialize(BidiFormatter.isRtlLocale(Locale.getDefault()));
}
public Builder(boolean z) {
initialize(z);
}
public Builder(Locale locale) {
initialize(BidiFormatter.isRtlLocale(locale));
}
private void initialize(boolean z) {
this.mIsRtlContext = z;
this.mTextDirectionHeuristicCompat = BidiFormatter.DEFAULT_TEXT_DIRECTION_HEURISTIC;
this.mFlags = 2;
}
private static BidiFormatter getDefaultInstanceFromContext(boolean z) {
return z ? BidiFormatter.DEFAULT_RTL_INSTANCE : BidiFormatter.DEFAULT_LTR_INSTANCE;
}
public BidiFormatter build() {
if (this.mFlags == 2 && this.mTextDirectionHeuristicCompat == BidiFormatter.DEFAULT_TEXT_DIRECTION_HEURISTIC) {
return getDefaultInstanceFromContext(this.mIsRtlContext);
}
return new BidiFormatter(this.mIsRtlContext, this.mFlags, this.mTextDirectionHeuristicCompat);
}
}
public static BidiFormatter getInstance() {
return new Builder().build();
}
public static BidiFormatter getInstance(boolean z) {
return new Builder(z).build();
}
public static BidiFormatter getInstance(Locale locale) {
return new Builder(locale).build();
}
BidiFormatter(boolean z, int i, TextDirectionHeuristicCompat textDirectionHeuristicCompat) {
this.mIsRtlContext = z;
this.mFlags = i;
this.mDefaultTextDirectionHeuristicCompat = textDirectionHeuristicCompat;
}
private String markAfter(CharSequence charSequence, TextDirectionHeuristicCompat textDirectionHeuristicCompat) {
boolean isRtl = textDirectionHeuristicCompat.isRtl(charSequence, 0, charSequence.length());
return (this.mIsRtlContext || !(isRtl || getExitDir(charSequence) == 1)) ? this.mIsRtlContext ? (!isRtl || getExitDir(charSequence) == -1) ? RLM_STRING : EMPTY_STRING : EMPTY_STRING : LRM_STRING;
}
private String markBefore(CharSequence charSequence, TextDirectionHeuristicCompat textDirectionHeuristicCompat) {
boolean isRtl = textDirectionHeuristicCompat.isRtl(charSequence, 0, charSequence.length());
return (this.mIsRtlContext || !(isRtl || getEntryDir(charSequence) == 1)) ? this.mIsRtlContext ? (!isRtl || getEntryDir(charSequence) == -1) ? RLM_STRING : EMPTY_STRING : EMPTY_STRING : LRM_STRING;
}
public boolean isRtl(String str) {
return isRtl((CharSequence) str);
}
public boolean isRtl(CharSequence charSequence) {
return this.mDefaultTextDirectionHeuristicCompat.isRtl(charSequence, 0, charSequence.length());
}
public String unicodeWrap(String str, TextDirectionHeuristicCompat textDirectionHeuristicCompat, boolean z) {
if (str == null) {
return null;
}
return unicodeWrap((CharSequence) str, textDirectionHeuristicCompat, z).toString();
}
public CharSequence unicodeWrap(CharSequence charSequence, TextDirectionHeuristicCompat textDirectionHeuristicCompat, boolean z) {
if (charSequence == null) {
return null;
}
boolean isRtl = textDirectionHeuristicCompat.isRtl(charSequence, 0, charSequence.length());
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
if (getStereoReset() && z) {
spannableStringBuilder.append((CharSequence) markBefore(charSequence, isRtl ? TextDirectionHeuristicsCompat.RTL : TextDirectionHeuristicsCompat.LTR));
}
if (isRtl != this.mIsRtlContext) {
spannableStringBuilder.append(isRtl ? RLE : LRE);
spannableStringBuilder.append(charSequence);
spannableStringBuilder.append(PDF);
} else {
spannableStringBuilder.append(charSequence);
}
if (z) {
spannableStringBuilder.append((CharSequence) markAfter(charSequence, isRtl ? TextDirectionHeuristicsCompat.RTL : TextDirectionHeuristicsCompat.LTR));
}
return spannableStringBuilder;
}
public String unicodeWrap(String str, TextDirectionHeuristicCompat textDirectionHeuristicCompat) {
return unicodeWrap(str, textDirectionHeuristicCompat, true);
}
public CharSequence unicodeWrap(CharSequence charSequence, TextDirectionHeuristicCompat textDirectionHeuristicCompat) {
return unicodeWrap(charSequence, textDirectionHeuristicCompat, true);
}
public String unicodeWrap(String str, boolean z) {
return unicodeWrap(str, this.mDefaultTextDirectionHeuristicCompat, z);
}
public CharSequence unicodeWrap(CharSequence charSequence, boolean z) {
return unicodeWrap(charSequence, this.mDefaultTextDirectionHeuristicCompat, z);
}
public String unicodeWrap(String str) {
return unicodeWrap(str, this.mDefaultTextDirectionHeuristicCompat, true);
}
public CharSequence unicodeWrap(CharSequence charSequence) {
return unicodeWrap(charSequence, this.mDefaultTextDirectionHeuristicCompat, true);
}
static boolean isRtlLocale(Locale locale) {
return TextUtilsCompat.getLayoutDirectionFromLocale(locale) == 1;
}
private static int getExitDir(CharSequence charSequence) {
return new DirectionalityEstimator(charSequence, false).getExitDir();
}
private static int getEntryDir(CharSequence charSequence) {
return new DirectionalityEstimator(charSequence, false).getEntryDir();
}
private static class DirectionalityEstimator {
private int charIndex;
private final boolean isHtml;
private char lastChar;
private final int length;
private final CharSequence text;
private static final int DIR_TYPE_CACHE_SIZE = 1792;
private static final byte[] DIR_TYPE_CACHE = new byte[DIR_TYPE_CACHE_SIZE];
static {
for (int i = 0; i < DIR_TYPE_CACHE_SIZE; i++) {
DIR_TYPE_CACHE[i] = Character.getDirectionality(i);
}
}
DirectionalityEstimator(CharSequence charSequence, boolean z) {
this.text = charSequence;
this.isHtml = z;
this.length = charSequence.length();
}
int getEntryDir() {
this.charIndex = 0;
int i = 0;
int i2 = 0;
int i3 = 0;
while (this.charIndex < this.length && i == 0) {
byte dirTypeForward = dirTypeForward();
if (dirTypeForward != 0) {
if (dirTypeForward == 1 || dirTypeForward == 2) {
if (i3 == 0) {
return 1;
}
} else if (dirTypeForward != 9) {
switch (dirTypeForward) {
case 14:
case 15:
i3++;
i2 = -1;
continue;
case 16:
case 17:
i3++;
i2 = 1;
continue;
case 18:
i3--;
i2 = 0;
continue;
}
}
} else if (i3 == 0) {
return -1;
}
i = i3;
}
if (i == 0) {
return 0;
}
if (i2 != 0) {
return i2;
}
while (this.charIndex > 0) {
switch (dirTypeBackward()) {
case 14:
case 15:
if (i == i3) {
return -1;
}
break;
case 16:
case 17:
if (i == i3) {
return 1;
}
break;
case 18:
i3++;
continue;
}
i3--;
}
return 0;
}
int getExitDir() {
this.charIndex = this.length;
int i = 0;
int i2 = 0;
while (this.charIndex > 0) {
byte dirTypeBackward = dirTypeBackward();
if (dirTypeBackward != 0) {
if (dirTypeBackward == 1 || dirTypeBackward == 2) {
if (i == 0) {
return 1;
}
if (i2 == 0) {
i2 = i;
}
} else if (dirTypeBackward != 9) {
switch (dirTypeBackward) {
case 14:
case 15:
if (i2 == i) {
return -1;
}
i--;
break;
case 16:
case 17:
if (i2 == i) {
return 1;
}
i--;
break;
case 18:
i++;
break;
default:
if (i2 != 0) {
break;
} else {
i2 = i;
break;
}
}
} else {
continue;
}
} else {
if (i == 0) {
return -1;
}
if (i2 == 0) {
i2 = i;
}
}
}
return 0;
}
private static byte getCachedDirectionality(char c) {
return c < DIR_TYPE_CACHE_SIZE ? DIR_TYPE_CACHE[c] : Character.getDirectionality(c);
}
byte dirTypeForward() {
char charAt = this.text.charAt(this.charIndex);
this.lastChar = charAt;
if (Character.isHighSurrogate(charAt)) {
int codePointAt = Character.codePointAt(this.text, this.charIndex);
this.charIndex += Character.charCount(codePointAt);
return Character.getDirectionality(codePointAt);
}
this.charIndex++;
byte cachedDirectionality = getCachedDirectionality(this.lastChar);
if (!this.isHtml) {
return cachedDirectionality;
}
char c = this.lastChar;
if (c == '<') {
return skipTagForward();
}
return c == '&' ? skipEntityForward() : cachedDirectionality;
}
byte dirTypeBackward() {
char charAt = this.text.charAt(this.charIndex - 1);
this.lastChar = charAt;
if (Character.isLowSurrogate(charAt)) {
int codePointBefore = Character.codePointBefore(this.text, this.charIndex);
this.charIndex -= Character.charCount(codePointBefore);
return Character.getDirectionality(codePointBefore);
}
this.charIndex--;
byte cachedDirectionality = getCachedDirectionality(this.lastChar);
if (!this.isHtml) {
return cachedDirectionality;
}
char c = this.lastChar;
if (c == '>') {
return skipTagBackward();
}
return c == ';' ? skipEntityBackward() : cachedDirectionality;
}
private byte skipTagForward() {
char charAt;
int i = this.charIndex;
while (true) {
int i2 = this.charIndex;
if (i2 >= this.length) {
this.charIndex = i;
this.lastChar = Typography.less;
return (byte) 13;
}
CharSequence charSequence = this.text;
this.charIndex = i2 + 1;
char charAt2 = charSequence.charAt(i2);
this.lastChar = charAt2;
if (charAt2 == '>') {
return (byte) 12;
}
if (charAt2 == '\"' || charAt2 == '\'') {
do {
int i3 = this.charIndex;
if (i3 < this.length) {
CharSequence charSequence2 = this.text;
this.charIndex = i3 + 1;
charAt = charSequence2.charAt(i3);
this.lastChar = charAt;
}
} while (charAt != charAt2);
}
}
}
private byte skipTagBackward() {
char charAt;
int i = this.charIndex;
while (true) {
int i2 = this.charIndex;
if (i2 <= 0) {
break;
}
CharSequence charSequence = this.text;
int i3 = i2 - 1;
this.charIndex = i3;
char charAt2 = charSequence.charAt(i3);
this.lastChar = charAt2;
if (charAt2 == '<') {
return (byte) 12;
}
if (charAt2 == '>') {
break;
}
if (charAt2 == '\"' || charAt2 == '\'') {
do {
int i4 = this.charIndex;
if (i4 > 0) {
CharSequence charSequence2 = this.text;
int i5 = i4 - 1;
this.charIndex = i5;
charAt = charSequence2.charAt(i5);
this.lastChar = charAt;
}
} while (charAt != charAt2);
}
}
this.charIndex = i;
this.lastChar = Typography.greater;
return (byte) 13;
}
private byte skipEntityForward() {
char charAt;
do {
int i = this.charIndex;
if (i >= this.length) {
return (byte) 12;
}
CharSequence charSequence = this.text;
this.charIndex = i + 1;
charAt = charSequence.charAt(i);
this.lastChar = charAt;
} while (charAt != ';');
return (byte) 12;
}
private byte skipEntityBackward() {
char charAt;
int i = this.charIndex;
do {
int i2 = this.charIndex;
if (i2 <= 0) {
break;
}
CharSequence charSequence = this.text;
int i3 = i2 - 1;
this.charIndex = i3;
charAt = charSequence.charAt(i3);
this.lastChar = charAt;
if (charAt == '&') {
return (byte) 12;
}
} while (charAt != ';');
this.charIndex = i;
this.lastChar = ';';
return (byte) 13;
}
}
}

View File

@ -0,0 +1,20 @@
package androidx.core.text;
import android.text.TextUtils;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: CharSequence.kt */
@Metadata(d1 = {"\u0000\u0012\n\u0000\n\u0002\u0010\u000b\n\u0002\u0010\r\n\u0000\n\u0002\u0010\b\n\u0000\u001a\r\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u0086\b\u001a\r\u0010\u0003\u001a\u00020\u0004*\u00020\u0002H\u0086\\u0006\u0005"}, d2 = {"isDigitsOnly", "", "", "trimmedLength", "", "core-ktx_release"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes.dex */
public final class CharSequenceKt {
public static final boolean isDigitsOnly(CharSequence charSequence) {
Intrinsics.checkNotNullParameter(charSequence, "<this>");
return TextUtils.isDigitsOnly(charSequence);
}
public static final int trimmedLength(CharSequence charSequence) {
Intrinsics.checkNotNullParameter(charSequence, "<this>");
return TextUtils.getTrimmedLength(charSequence);
}
}

View File

@ -0,0 +1,61 @@
package androidx.core.text;
import android.os.Build;
import android.text.Html;
import android.text.Spanned;
/* loaded from: classes.dex */
public final class HtmlCompat {
public static final int FROM_HTML_MODE_COMPACT = 63;
public static final int FROM_HTML_MODE_LEGACY = 0;
public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1;
public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0;
public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1;
public static Spanned fromHtml(String str, int i) {
if (Build.VERSION.SDK_INT >= 24) {
return Api24Impl.fromHtml(str, i);
}
return Html.fromHtml(str);
}
public static Spanned fromHtml(String str, int i, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) {
if (Build.VERSION.SDK_INT >= 24) {
return Api24Impl.fromHtml(str, i, imageGetter, tagHandler);
}
return Html.fromHtml(str, imageGetter, tagHandler);
}
public static String toHtml(Spanned spanned, int i) {
if (Build.VERSION.SDK_INT >= 24) {
return Api24Impl.toHtml(spanned, i);
}
return Html.toHtml(spanned);
}
private HtmlCompat() {
}
static class Api24Impl {
private Api24Impl() {
}
static Spanned fromHtml(String str, int i) {
return Html.fromHtml(str, i);
}
static Spanned fromHtml(String str, int i, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) {
return Html.fromHtml(str, i, imageGetter, tagHandler);
}
static String toHtml(Spanned spanned, int i) {
return Html.toHtml(spanned, i);
}
}
}

View File

@ -0,0 +1,51 @@
package androidx.core.text;
import android.text.Html;
import android.text.Spanned;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: Html.kt */
@Metadata(d1 = {"\u0000 \n\u0000\n\u0002\u0018\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\u001a/\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\b\b\u0002\u0010\u0003\u001a\u00020\u00042\n\b\u0002\u0010\u0005\u001a\u0004\u0018\u00010\u00062\n\b\u0002\u0010\u0007\u001a\u0004\u0018\u00010\bH\u0086\b\u001a\u0017\u0010\t\u001a\u00020\u0002*\u00020\u00012\b\b\u0002\u0010\n\u001a\u00020\u0004H\u0086\\u0006\u000b"}, d2 = {"parseAsHtml", "Landroid/text/Spanned;", "", "flags", "", "imageGetter", "Landroid/text/Html$ImageGetter;", "tagHandler", "Landroid/text/Html$TagHandler;", "toHtml", "option", "core-ktx_release"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes.dex */
public final class HtmlKt {
public static /* synthetic */ Spanned parseAsHtml$default(String str, int i, Html.ImageGetter imageGetter, Html.TagHandler tagHandler, int i2, Object obj) {
if ((i2 & 1) != 0) {
i = 0;
}
if ((i2 & 2) != 0) {
imageGetter = null;
}
if ((i2 & 4) != 0) {
tagHandler = null;
}
Intrinsics.checkNotNullParameter(str, "<this>");
Spanned fromHtml = HtmlCompat.fromHtml(str, i, imageGetter, tagHandler);
Intrinsics.checkNotNullExpressionValue(fromHtml, "fromHtml(this, flags, imageGetter, tagHandler)");
return fromHtml;
}
public static final Spanned parseAsHtml(String str, int i, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) {
Intrinsics.checkNotNullParameter(str, "<this>");
Spanned fromHtml = HtmlCompat.fromHtml(str, i, imageGetter, tagHandler);
Intrinsics.checkNotNullExpressionValue(fromHtml, "fromHtml(this, flags, imageGetter, tagHandler)");
return fromHtml;
}
public static /* synthetic */ String toHtml$default(Spanned spanned, int i, int i2, Object obj) {
if ((i2 & 1) != 0) {
i = 0;
}
Intrinsics.checkNotNullParameter(spanned, "<this>");
String html = HtmlCompat.toHtml(spanned, i);
Intrinsics.checkNotNullExpressionValue(html, "toHtml(this, option)");
return html;
}
public static final String toHtml(Spanned spanned, int i) {
Intrinsics.checkNotNullParameter(spanned, "<this>");
String html = HtmlCompat.toHtml(spanned, i);
Intrinsics.checkNotNullExpressionValue(html, "toHtml(this, option)");
return html;
}
}

View File

@ -0,0 +1,98 @@
package androidx.core.text;
import android.icu.util.ULocale;
import android.os.Build;
import android.util.Log;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Locale;
/* loaded from: classes.dex */
public final class ICUCompat {
private static final String TAG = "ICUCompat";
private static Method sAddLikelySubtagsMethod;
private static Method sGetScriptMethod;
static {
if (Build.VERSION.SDK_INT < 24) {
try {
sAddLikelySubtagsMethod = Class.forName("libcore.icu.ICU").getMethod("addLikelySubtags", Locale.class);
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
}
public static String maximizeAndGetScript(Locale locale) {
if (Build.VERSION.SDK_INT >= 24) {
return Api24Impl.getScript(Api24Impl.addLikelySubtags(Api24Impl.forLocale(locale)));
}
try {
return Api21Impl.getScript((Locale) sAddLikelySubtagsMethod.invoke(null, locale));
} catch (IllegalAccessException e) {
Log.w(TAG, e);
return Api21Impl.getScript(locale);
} catch (InvocationTargetException e2) {
Log.w(TAG, e2);
return Api21Impl.getScript(locale);
}
}
private static String getScriptBelowApi21(String str) {
try {
Method method = sGetScriptMethod;
if (method != null) {
return (String) method.invoke(null, str);
}
} catch (IllegalAccessException e) {
Log.w(TAG, e);
} catch (InvocationTargetException e2) {
Log.w(TAG, e2);
}
return null;
}
private static String addLikelySubtagsBelowApi21(Locale locale) {
String locale2 = locale.toString();
try {
Method method = sAddLikelySubtagsMethod;
if (method != null) {
return (String) method.invoke(null, locale2);
}
} catch (IllegalAccessException e) {
Log.w(TAG, e);
} catch (InvocationTargetException e2) {
Log.w(TAG, e2);
}
return locale2;
}
private ICUCompat() {
}
static class Api24Impl {
private Api24Impl() {
}
static ULocale forLocale(Locale locale) {
return ULocale.forLocale(locale);
}
static ULocale addLikelySubtags(Object obj) {
return ULocale.addLikelySubtags((ULocale) obj);
}
static String getScript(Object obj) {
return ((ULocale) obj).getScript();
}
}
static class Api21Impl {
private Api21Impl() {
}
static String getScript(Locale locale) {
return locale.getScript();
}
}
}

View File

@ -0,0 +1,16 @@
package androidx.core.text;
import android.text.TextUtils;
import java.util.Locale;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: Locale.kt */
@Metadata(d1 = {"\u0000\u000e\n\u0000\n\u0002\u0010\b\n\u0002\u0018\u0002\n\u0002\b\u0003\"\u0016\u0010\u0000\u001a\u00020\u0001*\u00020\u00028Ç\u0002¢\u0006\u0006\u001a\u0004\b\u0003\u0010\u0004¨\u0006\u0005"}, d2 = {"layoutDirection", "", "Ljava/util/Locale;", "getLayoutDirection", "(Ljava/util/Locale;)I", "core-ktx_release"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes.dex */
public final class LocaleKt {
public static final int getLayoutDirection(Locale locale) {
Intrinsics.checkNotNullParameter(locale, "<this>");
return TextUtils.getLayoutDirectionFromLocale(locale);
}
}

View File

@ -0,0 +1,413 @@
package androidx.core.text;
import android.os.Build;
import android.os.LocaleList;
import android.text.Layout;
import android.text.PrecomputedText;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.StaticLayout;
import android.text.TextDirectionHeuristic;
import android.text.TextDirectionHeuristics;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.style.MetricAffectingSpan;
import androidx.core.graphics.ColorKt$$ExternalSyntheticApiModelOutline0;
import androidx.core.os.TraceCompat;
import androidx.core.util.ObjectsCompat;
import androidx.core.util.Preconditions;
import java.util.ArrayList;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
/* loaded from: classes.dex */
public class PrecomputedTextCompat implements Spannable {
private static final char LINE_FEED = '\n';
private static Executor sExecutor;
private static final Object sLock = new Object();
private final int[] mParagraphEnds;
private final Params mParams;
private final Spannable mText;
private final PrecomputedText mWrapped;
public Params getParams() {
return this.mParams;
}
public static final class Params {
private final int mBreakStrategy;
private final int mHyphenationFrequency;
private final TextPaint mPaint;
private final TextDirectionHeuristic mTextDir;
final PrecomputedText.Params mWrapped;
public int getBreakStrategy() {
return this.mBreakStrategy;
}
public int getHyphenationFrequency() {
return this.mHyphenationFrequency;
}
public TextDirectionHeuristic getTextDirection() {
return this.mTextDir;
}
public TextPaint getTextPaint() {
return this.mPaint;
}
public static class Builder {
private int mBreakStrategy;
private int mHyphenationFrequency;
private final TextPaint mPaint;
private TextDirectionHeuristic mTextDir;
public Builder setBreakStrategy(int i) {
this.mBreakStrategy = i;
return this;
}
public Builder setHyphenationFrequency(int i) {
this.mHyphenationFrequency = i;
return this;
}
public Builder setTextDirection(TextDirectionHeuristic textDirectionHeuristic) {
this.mTextDir = textDirectionHeuristic;
return this;
}
public Builder(TextPaint textPaint) {
this.mPaint = textPaint;
if (Build.VERSION.SDK_INT >= 23) {
this.mBreakStrategy = 1;
this.mHyphenationFrequency = 1;
} else {
this.mHyphenationFrequency = 0;
this.mBreakStrategy = 0;
}
this.mTextDir = TextDirectionHeuristics.FIRSTSTRONG_LTR;
}
public Params build() {
return new Params(this.mPaint, this.mTextDir, this.mBreakStrategy, this.mHyphenationFrequency);
}
}
Params(TextPaint textPaint, TextDirectionHeuristic textDirectionHeuristic, int i, int i2) {
PrecomputedText.Params.Builder breakStrategy;
PrecomputedText.Params.Builder hyphenationFrequency;
PrecomputedText.Params.Builder textDirection;
PrecomputedText.Params build;
if (Build.VERSION.SDK_INT >= 29) {
breakStrategy = ColorKt$$ExternalSyntheticApiModelOutline0.m93m(textPaint).setBreakStrategy(i);
hyphenationFrequency = breakStrategy.setHyphenationFrequency(i2);
textDirection = hyphenationFrequency.setTextDirection(textDirectionHeuristic);
build = textDirection.build();
this.mWrapped = build;
} else {
this.mWrapped = null;
}
this.mPaint = textPaint;
this.mTextDir = textDirectionHeuristic;
this.mBreakStrategy = i;
this.mHyphenationFrequency = i2;
}
public Params(PrecomputedText.Params params) {
TextPaint textPaint;
TextDirectionHeuristic textDirection;
int breakStrategy;
int hyphenationFrequency;
textPaint = params.getTextPaint();
this.mPaint = textPaint;
textDirection = params.getTextDirection();
this.mTextDir = textDirection;
breakStrategy = params.getBreakStrategy();
this.mBreakStrategy = breakStrategy;
hyphenationFrequency = params.getHyphenationFrequency();
this.mHyphenationFrequency = hyphenationFrequency;
this.mWrapped = Build.VERSION.SDK_INT < 29 ? null : params;
}
public boolean equalsWithoutTextDirection(Params params) {
LocaleList textLocales;
LocaleList textLocales2;
boolean equals;
if ((Build.VERSION.SDK_INT >= 23 && (this.mBreakStrategy != params.getBreakStrategy() || this.mHyphenationFrequency != params.getHyphenationFrequency())) || this.mPaint.getTextSize() != params.getTextPaint().getTextSize() || this.mPaint.getTextScaleX() != params.getTextPaint().getTextScaleX() || this.mPaint.getTextSkewX() != params.getTextPaint().getTextSkewX() || this.mPaint.getLetterSpacing() != params.getTextPaint().getLetterSpacing() || !TextUtils.equals(this.mPaint.getFontFeatureSettings(), params.getTextPaint().getFontFeatureSettings()) || this.mPaint.getFlags() != params.getTextPaint().getFlags()) {
return false;
}
if (Build.VERSION.SDK_INT >= 24) {
textLocales = this.mPaint.getTextLocales();
textLocales2 = params.getTextPaint().getTextLocales();
equals = textLocales.equals(textLocales2);
if (!equals) {
return false;
}
} else if (!this.mPaint.getTextLocale().equals(params.getTextPaint().getTextLocale())) {
return false;
}
return this.mPaint.getTypeface() == null ? params.getTextPaint().getTypeface() == null : this.mPaint.getTypeface().equals(params.getTextPaint().getTypeface());
}
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Params)) {
return false;
}
Params params = (Params) obj;
return equalsWithoutTextDirection(params) && this.mTextDir == params.getTextDirection();
}
public int hashCode() {
LocaleList textLocales;
if (Build.VERSION.SDK_INT >= 24) {
textLocales = this.mPaint.getTextLocales();
return ObjectsCompat.hash(Float.valueOf(this.mPaint.getTextSize()), Float.valueOf(this.mPaint.getTextScaleX()), Float.valueOf(this.mPaint.getTextSkewX()), Float.valueOf(this.mPaint.getLetterSpacing()), Integer.valueOf(this.mPaint.getFlags()), textLocales, this.mPaint.getTypeface(), Boolean.valueOf(this.mPaint.isElegantTextHeight()), this.mTextDir, Integer.valueOf(this.mBreakStrategy), Integer.valueOf(this.mHyphenationFrequency));
}
return ObjectsCompat.hash(Float.valueOf(this.mPaint.getTextSize()), Float.valueOf(this.mPaint.getTextScaleX()), Float.valueOf(this.mPaint.getTextSkewX()), Float.valueOf(this.mPaint.getLetterSpacing()), Integer.valueOf(this.mPaint.getFlags()), this.mPaint.getTextLocale(), this.mPaint.getTypeface(), Boolean.valueOf(this.mPaint.isElegantTextHeight()), this.mTextDir, Integer.valueOf(this.mBreakStrategy), Integer.valueOf(this.mHyphenationFrequency));
}
public String toString() {
String fontVariationSettings;
LocaleList textLocales;
StringBuilder sb = new StringBuilder("{");
sb.append("textSize=" + this.mPaint.getTextSize());
sb.append(", textScaleX=" + this.mPaint.getTextScaleX());
sb.append(", textSkewX=" + this.mPaint.getTextSkewX());
sb.append(", letterSpacing=" + this.mPaint.getLetterSpacing());
sb.append(", elegantTextHeight=" + this.mPaint.isElegantTextHeight());
if (Build.VERSION.SDK_INT >= 24) {
StringBuilder sb2 = new StringBuilder(", textLocale=");
textLocales = this.mPaint.getTextLocales();
sb2.append(textLocales);
sb.append(sb2.toString());
} else {
sb.append(", textLocale=" + this.mPaint.getTextLocale());
}
sb.append(", typeface=" + this.mPaint.getTypeface());
if (Build.VERSION.SDK_INT >= 26) {
StringBuilder sb3 = new StringBuilder(", variationSettings=");
fontVariationSettings = this.mPaint.getFontVariationSettings();
sb3.append(fontVariationSettings);
sb.append(sb3.toString());
}
sb.append(", textDir=" + this.mTextDir);
sb.append(", breakStrategy=" + this.mBreakStrategy);
sb.append(", hyphenationFrequency=" + this.mHyphenationFrequency);
sb.append("}");
return sb.toString();
}
}
public static PrecomputedTextCompat create(CharSequence charSequence, Params params) {
StaticLayout.Builder obtain;
StaticLayout.Builder breakStrategy;
StaticLayout.Builder hyphenationFrequency;
StaticLayout.Builder textDirection;
PrecomputedText create;
Preconditions.checkNotNull(charSequence);
Preconditions.checkNotNull(params);
try {
TraceCompat.beginSection("PrecomputedText");
if (Build.VERSION.SDK_INT >= 29 && params.mWrapped != null) {
create = PrecomputedText.create(charSequence, params.mWrapped);
return new PrecomputedTextCompat(create, params);
}
ArrayList arrayList = new ArrayList();
int length = charSequence.length();
int i = 0;
while (i < length) {
int indexOf = TextUtils.indexOf(charSequence, LINE_FEED, i, length);
i = indexOf < 0 ? length : indexOf + 1;
arrayList.add(Integer.valueOf(i));
}
int[] iArr = new int[arrayList.size()];
for (int i2 = 0; i2 < arrayList.size(); i2++) {
iArr[i2] = ((Integer) arrayList.get(i2)).intValue();
}
if (Build.VERSION.SDK_INT >= 23) {
obtain = StaticLayout.Builder.obtain(charSequence, 0, charSequence.length(), params.getTextPaint(), Integer.MAX_VALUE);
breakStrategy = obtain.setBreakStrategy(params.getBreakStrategy());
hyphenationFrequency = breakStrategy.setHyphenationFrequency(params.getHyphenationFrequency());
textDirection = hyphenationFrequency.setTextDirection(params.getTextDirection());
textDirection.build();
} else {
new StaticLayout(charSequence, params.getTextPaint(), Integer.MAX_VALUE, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
}
return new PrecomputedTextCompat(charSequence, params, iArr);
} finally {
TraceCompat.endSection();
}
}
private PrecomputedTextCompat(CharSequence charSequence, Params params, int[] iArr) {
this.mText = new SpannableString(charSequence);
this.mParams = params;
this.mParagraphEnds = iArr;
this.mWrapped = null;
}
private PrecomputedTextCompat(PrecomputedText precomputedText, Params params) {
this.mText = precomputedText;
this.mParams = params;
this.mParagraphEnds = null;
this.mWrapped = Build.VERSION.SDK_INT < 29 ? null : precomputedText;
}
public PrecomputedText getPrecomputedText() {
if (ColorKt$$ExternalSyntheticApiModelOutline0.m109m((Object) this.mText)) {
return ColorKt$$ExternalSyntheticApiModelOutline0.m94m((Object) this.mText);
}
return null;
}
public int getParagraphCount() {
int paragraphCount;
if (Build.VERSION.SDK_INT >= 29) {
paragraphCount = this.mWrapped.getParagraphCount();
return paragraphCount;
}
return this.mParagraphEnds.length;
}
public int getParagraphStart(int i) {
int paragraphStart;
Preconditions.checkArgumentInRange(i, 0, getParagraphCount(), "paraIndex");
if (Build.VERSION.SDK_INT >= 29) {
paragraphStart = this.mWrapped.getParagraphStart(i);
return paragraphStart;
}
if (i == 0) {
return 0;
}
return this.mParagraphEnds[i - 1];
}
public int getParagraphEnd(int i) {
int paragraphEnd;
Preconditions.checkArgumentInRange(i, 0, getParagraphCount(), "paraIndex");
if (Build.VERSION.SDK_INT >= 29) {
paragraphEnd = this.mWrapped.getParagraphEnd(i);
return paragraphEnd;
}
return this.mParagraphEnds[i];
}
private static class PrecomputedTextFutureTask extends FutureTask<PrecomputedTextCompat> {
private static class PrecomputedTextCallback implements Callable<PrecomputedTextCompat> {
private Params mParams;
private CharSequence mText;
PrecomputedTextCallback(Params params, CharSequence charSequence) {
this.mParams = params;
this.mText = charSequence;
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // java.util.concurrent.Callable
public PrecomputedTextCompat call() throws Exception {
return PrecomputedTextCompat.create(this.mText, this.mParams);
}
}
PrecomputedTextFutureTask(Params params, CharSequence charSequence) {
super(new PrecomputedTextCallback(params, charSequence));
}
}
public static Future<PrecomputedTextCompat> getTextFuture(CharSequence charSequence, Params params, Executor executor) {
PrecomputedTextFutureTask precomputedTextFutureTask = new PrecomputedTextFutureTask(params, charSequence);
if (executor == null) {
synchronized (sLock) {
if (sExecutor == null) {
sExecutor = Executors.newFixedThreadPool(1);
}
executor = sExecutor;
}
}
executor.execute(precomputedTextFutureTask);
return precomputedTextFutureTask;
}
@Override // android.text.Spannable
public void setSpan(Object obj, int i, int i2, int i3) {
if (obj instanceof MetricAffectingSpan) {
throw new IllegalArgumentException("MetricAffectingSpan can not be set to PrecomputedText.");
}
if (Build.VERSION.SDK_INT >= 29) {
this.mWrapped.setSpan(obj, i, i2, i3);
} else {
this.mText.setSpan(obj, i, i2, i3);
}
}
@Override // android.text.Spannable
public void removeSpan(Object obj) {
if (obj instanceof MetricAffectingSpan) {
throw new IllegalArgumentException("MetricAffectingSpan can not be removed from PrecomputedText.");
}
if (Build.VERSION.SDK_INT >= 29) {
this.mWrapped.removeSpan(obj);
} else {
this.mText.removeSpan(obj);
}
}
@Override // android.text.Spanned
public <T> T[] getSpans(int i, int i2, Class<T> cls) {
Object[] spans;
if (Build.VERSION.SDK_INT >= 29) {
spans = this.mWrapped.getSpans(i, i2, cls);
return (T[]) spans;
}
return (T[]) this.mText.getSpans(i, i2, cls);
}
@Override // android.text.Spanned
public int getSpanStart(Object obj) {
return this.mText.getSpanStart(obj);
}
@Override // android.text.Spanned
public int getSpanEnd(Object obj) {
return this.mText.getSpanEnd(obj);
}
@Override // android.text.Spanned
public int getSpanFlags(Object obj) {
return this.mText.getSpanFlags(obj);
}
@Override // android.text.Spanned
public int nextSpanTransition(int i, int i2, Class cls) {
return this.mText.nextSpanTransition(i, i2, cls);
}
@Override // java.lang.CharSequence
public int length() {
return this.mText.length();
}
@Override // java.lang.CharSequence
public char charAt(int i) {
return this.mText.charAt(i);
}
@Override // java.lang.CharSequence
public CharSequence subSequence(int i, int i2) {
return this.mText.subSequence(i, i2);
}
@Override // java.lang.CharSequence
public String toString() {
return this.mText.toString();
}
}

View File

@ -0,0 +1,141 @@
package androidx.core.text;
import android.text.SpannableStringBuilder;
import android.text.SpannedString;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.SubscriptSpan;
import android.text.style.SuperscriptSpan;
import android.text.style.UnderlineSpan;
import androidx.constraintlayout.core.motion.utils.TypedValues;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: SpannableStringBuilder.kt */
@Metadata(d1 = {"\u0000:\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0003\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u0011\n\u0002\b\u0004\n\u0002\u0010\u0007\n\u0002\b\u0005\u001a%\u0010\u0000\u001a\u00020\u00012\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a3\u0010\u0007\u001a\u00020\u0004*\u00020\u00042\b\b\u0001\u0010\b\u001a\u00020\t2\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a)\u0010\n\u001a\u00020\u0004*\u00020\u00042\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a3\u0010\b\u001a\u00020\u0004*\u00020\u00042\b\b\u0001\u0010\b\u001a\u00020\t2\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a1\u0010\u000b\u001a\u00020\u0004*\u00020\u00042\u0006\u0010\f\u001a\u00020\r2\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001aB\u0010\u000b\u001a\u00020\u0004*\u00020\u00042\u0012\u0010\u000e\u001a\n\u0012\u0006\b\u0001\u0012\u00020\r0\u000f\"\u00020\r2\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000¢\u0006\u0002\u0010\u0010\u001a)\u0010\u0011\u001a\u00020\u0004*\u00020\u00042\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a1\u0010\u0012\u001a\u00020\u0004*\u00020\u00042\u0006\u0010\u0013\u001a\u00020\u00142\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a)\u0010\u0015\u001a\u00020\u0004*\u00020\u00042\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a)\u0010\u0016\u001a\u00020\u0004*\u00020\u00042\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a)\u0010\u0017\u001a\u00020\u0004*\u00020\u00042\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u001a)\u0010\u0018\u001a\u00020\u0004*\u00020\u00042\u0017\u0010\u0002\u001a\u0013\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u00050\u0003¢\u0006\u0002\b\u0006H\u0086\\u0001\u0000\u0082\u0002\u0007\n\u0005\b\u009920\u0001¨\u0006\u0019"}, d2 = {"buildSpannedString", "Landroid/text/SpannedString;", "builderAction", "Lkotlin/Function1;", "Landroid/text/SpannableStringBuilder;", "", "Lkotlin/ExtensionFunctionType;", "backgroundColor", TypedValues.Custom.S_COLOR, "", "bold", "inSpans", "span", "", "spans", "", "(Landroid/text/SpannableStringBuilder;[Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Landroid/text/SpannableStringBuilder;", "italic", "scale", "proportion", "", "strikeThrough", "subscript", "superscript", "underline", "core-ktx_release"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes.dex */
public final class SpannableStringBuilderKt {
public static final SpannedString buildSpannedString(Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
builderAction.invoke(spannableStringBuilder);
return new SpannedString(spannableStringBuilder);
}
public static final SpannableStringBuilder inSpans(SpannableStringBuilder spannableStringBuilder, Object[] spans, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(spans, "spans");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
for (Object obj : spans) {
spannableStringBuilder.setSpan(obj, length, spannableStringBuilder.length(), 17);
}
return spannableStringBuilder;
}
public static final SpannableStringBuilder inSpans(SpannableStringBuilder spannableStringBuilder, Object span, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(span, "span");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(span, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder bold(SpannableStringBuilder spannableStringBuilder, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
StyleSpan styleSpan = new StyleSpan(1);
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(styleSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder italic(SpannableStringBuilder spannableStringBuilder, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
StyleSpan styleSpan = new StyleSpan(2);
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(styleSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder underline(SpannableStringBuilder spannableStringBuilder, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
UnderlineSpan underlineSpan = new UnderlineSpan();
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(underlineSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder color(SpannableStringBuilder spannableStringBuilder, int i, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(i);
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(foregroundColorSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder backgroundColor(SpannableStringBuilder spannableStringBuilder, int i, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(i);
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(backgroundColorSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder strikeThrough(SpannableStringBuilder spannableStringBuilder, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(strikethroughSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder scale(SpannableStringBuilder spannableStringBuilder, float f, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(f);
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(relativeSizeSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder superscript(SpannableStringBuilder spannableStringBuilder, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
SuperscriptSpan superscriptSpan = new SuperscriptSpan();
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(superscriptSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
public static final SpannableStringBuilder subscript(SpannableStringBuilder spannableStringBuilder, Function1<? super SpannableStringBuilder, Unit> builderAction) {
Intrinsics.checkNotNullParameter(spannableStringBuilder, "<this>");
Intrinsics.checkNotNullParameter(builderAction, "builderAction");
SubscriptSpan subscriptSpan = new SubscriptSpan();
int length = spannableStringBuilder.length();
builderAction.invoke(spannableStringBuilder);
spannableStringBuilder.setSpan(subscriptSpan, length, spannableStringBuilder.length(), 17);
return spannableStringBuilder;
}
}

View File

@ -0,0 +1,42 @@
package androidx.core.text;
import android.text.Spannable;
import android.text.SpannableString;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import kotlin.ranges.IntRange;
/* compiled from: SpannableString.kt */
@Metadata(d1 = {"\u0000(\n\u0000\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\r\n\u0000\u001a\r\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u0087\b\u001a%\u0010\u0003\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0004\u001a\u00020\u00052\u0006\u0010\u0006\u001a\u00020\u00052\u0006\u0010\u0007\u001a\u00020\bH\u0086\n\u001a\u001d\u0010\u0003\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\t\u001a\u00020\n2\u0006\u0010\u0007\u001a\u00020\bH\u0086\n\u001a\r\u0010\u000b\u001a\u00020\u0002*\u00020\fH\u0086\\u0006\r"}, d2 = {"clearSpans", "", "Landroid/text/Spannable;", "set", "start", "", "end", "span", "", "range", "Lkotlin/ranges/IntRange;", "toSpannable", "", "core-ktx_release"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes.dex */
public final class SpannableStringKt {
public static final Spannable toSpannable(CharSequence charSequence) {
Intrinsics.checkNotNullParameter(charSequence, "<this>");
SpannableString valueOf = SpannableString.valueOf(charSequence);
Intrinsics.checkNotNullExpressionValue(valueOf, "valueOf(this)");
return valueOf;
}
public static final void clearSpans(Spannable spannable) {
Intrinsics.checkNotNullParameter(spannable, "<this>");
Spannable spannable2 = spannable;
Object[] spans = spannable2.getSpans(0, spannable2.length(), Object.class);
Intrinsics.checkNotNullExpressionValue(spans, "getSpans(start, end, T::class.java)");
for (Object obj : spans) {
spannable.removeSpan(obj);
}
}
public static final void set(Spannable spannable, int i, int i2, Object span) {
Intrinsics.checkNotNullParameter(spannable, "<this>");
Intrinsics.checkNotNullParameter(span, "span");
spannable.setSpan(span, i, i2, 17);
}
public static final void set(Spannable spannable, IntRange range, Object span) {
Intrinsics.checkNotNullParameter(spannable, "<this>");
Intrinsics.checkNotNullParameter(range, "range");
Intrinsics.checkNotNullParameter(span, "span");
spannable.setSpan(span, range.getStart().intValue(), range.getEndInclusive().intValue(), 17);
}
}

View File

@ -0,0 +1,40 @@
package androidx.core.text;
import android.text.Spanned;
import android.text.SpannedString;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: SpannedString.kt */
@Metadata(d1 = {"\u0000 \n\u0000\n\u0002\u0010\u0011\n\u0000\n\u0002\u0010\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u0003\n\u0002\u0010\r\n\u0000\u001a:\u0010\u0000\u001a\n\u0012\u0006\b\u0001\u0012\u0002H\u00020\u0001\"\n\b\u0000\u0010\u0002\u0018\u0001*\u00020\u0003*\u00020\u00042\b\b\u0002\u0010\u0005\u001a\u00020\u00062\b\b\u0002\u0010\u0007\u001a\u00020\u0006H\u0086\\u0006\u0002\u0010\b\u001a\r\u0010\t\u001a\u00020\u0004*\u00020\nH\u0086\\u0006\u000b"}, d2 = {"getSpans", "", "T", "", "Landroid/text/Spanned;", "start", "", "end", "(Landroid/text/Spanned;II)[Ljava/lang/Object;", "toSpanned", "", "core-ktx_release"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes.dex */
public final class SpannedStringKt {
public static final Spanned toSpanned(CharSequence charSequence) {
Intrinsics.checkNotNullParameter(charSequence, "<this>");
SpannedString valueOf = SpannedString.valueOf(charSequence);
Intrinsics.checkNotNullExpressionValue(valueOf, "valueOf(this)");
return valueOf;
}
public static /* synthetic */ Object[] getSpans$default(Spanned spanned, int i, int i2, int i3, Object obj) {
if ((i3 & 1) != 0) {
i = 0;
}
if ((i3 & 2) != 0) {
i2 = spanned.length();
}
Intrinsics.checkNotNullParameter(spanned, "<this>");
Intrinsics.reifiedOperationMarker(4, "T");
Object[] spans = spanned.getSpans(i, i2, Object.class);
Intrinsics.checkNotNullExpressionValue(spans, "getSpans(start, end, T::class.java)");
return spans;
}
public static final /* synthetic */ <T> T[] getSpans(Spanned spanned, int i, int i2) {
Intrinsics.checkNotNullParameter(spanned, "<this>");
Intrinsics.reifiedOperationMarker(4, "T");
Object[] spans = spanned.getSpans(i, i2, Object.class);
Intrinsics.checkNotNullExpressionValue(spans, "getSpans(start, end, T::class.java)");
return (T[]) spans;
}
}

View File

@ -0,0 +1,17 @@
package androidx.core.text;
import android.text.TextUtils;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: String.kt */
@Metadata(d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u000e\n\u0000\u001a\r\u0010\u0000\u001a\u00020\u0001*\u00020\u0001H\u0086\\u0006\u0002"}, d2 = {"htmlEncode", "", "core-ktx_release"}, k = 2, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes.dex */
public final class StringKt {
public static final String htmlEncode(String str) {
Intrinsics.checkNotNullParameter(str, "<this>");
String htmlEncode = TextUtils.htmlEncode(str);
Intrinsics.checkNotNullExpressionValue(htmlEncode, "htmlEncode(this)");
return htmlEncode;
}
}

View File

@ -0,0 +1,8 @@
package androidx.core.text;
/* loaded from: classes.dex */
public interface TextDirectionHeuristicCompat {
boolean isRtl(CharSequence charSequence, int i, int i2);
boolean isRtl(char[] cArr, int i, int i2);
}

View File

@ -0,0 +1,166 @@
package androidx.core.text;
import java.nio.CharBuffer;
import java.util.Locale;
/* loaded from: classes.dex */
public final class TextDirectionHeuristicsCompat {
private static final int STATE_FALSE = 1;
private static final int STATE_TRUE = 0;
private static final int STATE_UNKNOWN = 2;
public static final TextDirectionHeuristicCompat LTR = new TextDirectionHeuristicInternal(null, false);
public static final TextDirectionHeuristicCompat RTL = new TextDirectionHeuristicInternal(null, true);
public static final TextDirectionHeuristicCompat FIRSTSTRONG_LTR = new TextDirectionHeuristicInternal(FirstStrong.INSTANCE, false);
public static final TextDirectionHeuristicCompat FIRSTSTRONG_RTL = new TextDirectionHeuristicInternal(FirstStrong.INSTANCE, true);
public static final TextDirectionHeuristicCompat ANYRTL_LTR = new TextDirectionHeuristicInternal(AnyStrong.INSTANCE_RTL, false);
public static final TextDirectionHeuristicCompat LOCALE = TextDirectionHeuristicLocale.INSTANCE;
private interface TextDirectionAlgorithm {
int checkRtl(CharSequence charSequence, int i, int i2);
}
static int isRtlText(int i) {
if (i != 0) {
return (i == 1 || i == 2) ? 0 : 2;
}
return 1;
}
static int isRtlTextOrFormat(int i) {
if (i != 0) {
if (i == 1 || i == 2) {
return 0;
}
switch (i) {
case 14:
case 15:
break;
case 16:
case 17:
return 0;
default:
return 2;
}
}
return 1;
}
private static abstract class TextDirectionHeuristicImpl implements TextDirectionHeuristicCompat {
private final TextDirectionAlgorithm mAlgorithm;
protected abstract boolean defaultIsRtl();
TextDirectionHeuristicImpl(TextDirectionAlgorithm textDirectionAlgorithm) {
this.mAlgorithm = textDirectionAlgorithm;
}
@Override // androidx.core.text.TextDirectionHeuristicCompat
public boolean isRtl(char[] cArr, int i, int i2) {
return isRtl(CharBuffer.wrap(cArr), i, i2);
}
@Override // androidx.core.text.TextDirectionHeuristicCompat
public boolean isRtl(CharSequence charSequence, int i, int i2) {
if (charSequence == null || i < 0 || i2 < 0 || charSequence.length() - i2 < i) {
throw new IllegalArgumentException();
}
if (this.mAlgorithm == null) {
return defaultIsRtl();
}
return doCheck(charSequence, i, i2);
}
private boolean doCheck(CharSequence charSequence, int i, int i2) {
int checkRtl = this.mAlgorithm.checkRtl(charSequence, i, i2);
if (checkRtl == 0) {
return true;
}
if (checkRtl != 1) {
return defaultIsRtl();
}
return false;
}
}
private static class TextDirectionHeuristicInternal extends TextDirectionHeuristicImpl {
private final boolean mDefaultIsRtl;
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionHeuristicImpl
protected boolean defaultIsRtl() {
return this.mDefaultIsRtl;
}
TextDirectionHeuristicInternal(TextDirectionAlgorithm textDirectionAlgorithm, boolean z) {
super(textDirectionAlgorithm);
this.mDefaultIsRtl = z;
}
}
private static class FirstStrong implements TextDirectionAlgorithm {
static final FirstStrong INSTANCE = new FirstStrong();
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionAlgorithm
public int checkRtl(CharSequence charSequence, int i, int i2) {
int i3 = i2 + i;
int i4 = 2;
while (i < i3 && i4 == 2) {
i4 = TextDirectionHeuristicsCompat.isRtlTextOrFormat(Character.getDirectionality(charSequence.charAt(i)));
i++;
}
return i4;
}
private FirstStrong() {
}
}
private static class AnyStrong implements TextDirectionAlgorithm {
static final AnyStrong INSTANCE_RTL = new AnyStrong(true);
private final boolean mLookForRtl;
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionAlgorithm
public int checkRtl(CharSequence charSequence, int i, int i2) {
int i3 = i2 + i;
boolean z = false;
while (i < i3) {
int isRtlText = TextDirectionHeuristicsCompat.isRtlText(Character.getDirectionality(charSequence.charAt(i)));
if (isRtlText != 0) {
if (isRtlText != 1) {
continue;
i++;
} else if (!this.mLookForRtl) {
return 1;
}
} else if (this.mLookForRtl) {
return 0;
}
z = true;
i++;
}
if (z) {
return this.mLookForRtl ? 1 : 0;
}
return 2;
}
private AnyStrong(boolean z) {
this.mLookForRtl = z;
}
}
private static class TextDirectionHeuristicLocale extends TextDirectionHeuristicImpl {
static final TextDirectionHeuristicLocale INSTANCE = new TextDirectionHeuristicLocale();
TextDirectionHeuristicLocale() {
super(null);
}
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionHeuristicImpl
protected boolean defaultIsRtl() {
return TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == 1;
}
}
private TextDirectionHeuristicsCompat() {
}
}

View File

@ -0,0 +1,36 @@
package androidx.core.text;
import android.text.TextUtils;
import java.util.Locale;
/* loaded from: classes.dex */
public final class TextUtilsCompat {
private static final String ARAB_SCRIPT_SUBTAG = "Arab";
private static final String HEBR_SCRIPT_SUBTAG = "Hebr";
private static final Locale ROOT = new Locale("", "");
public static String htmlEncode(String str) {
return TextUtils.htmlEncode(str);
}
public static int getLayoutDirectionFromLocale(Locale locale) {
return Api17Impl.getLayoutDirectionFromLocale(locale);
}
private static int getLayoutDirectionFromFirstChar(Locale locale) {
byte directionality = Character.getDirectionality(locale.getDisplayName(locale).charAt(0));
return (directionality == 1 || directionality == 2) ? 1 : 0;
}
private TextUtilsCompat() {
}
static class Api17Impl {
private Api17Impl() {
}
static int getLayoutDirectionFromLocale(Locale locale) {
return TextUtils.getLayoutDirectionFromLocale(locale);
}
}
}

View File

@ -0,0 +1,292 @@
package androidx.core.text.util;
import java.util.Locale;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* loaded from: classes.dex */
class FindAddress {
private static final String HOUSE_COMPONENT = "(?:one|[0-9]+([a-z](?=[^a-z]|$)|st|nd|rd|th)?)";
private static final String HOUSE_END = "(?=[,\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)";
private static final String HOUSE_POST_DELIM = ",\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final String HOUSE_PRE_DELIM = ":,\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final int MAX_ADDRESS_LINES = 5;
private static final int MAX_ADDRESS_WORDS = 14;
private static final int MAX_LOCATION_NAME_DISTANCE = 5;
private static final int MIN_ADDRESS_WORDS = 4;
private static final String NL = "\n\u000b\f\r\u0085\u2028\u2029";
private static final String SP = "\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000";
private static final String WORD_DELIM = ",*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final String WORD_END = "(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)";
private static final String WS = "\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final int kMaxAddressNameWordLength = 25;
private static final ZipRange[] sStateZipCodeRanges = {new ZipRange(99, 99, -1, -1), new ZipRange(35, 36, -1, -1), new ZipRange(71, 72, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(85, 86, -1, -1), new ZipRange(90, 96, -1, -1), new ZipRange(80, 81, -1, -1), new ZipRange(6, 6, -1, -1), new ZipRange(20, 20, -1, -1), new ZipRange(19, 19, -1, -1), new ZipRange(32, 34, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(30, 31, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(50, 52, -1, -1), new ZipRange(83, 83, -1, -1), new ZipRange(60, 62, -1, -1), new ZipRange(46, 47, -1, -1), new ZipRange(66, 67, 73, -1), new ZipRange(40, 42, -1, -1), new ZipRange(70, 71, -1, -1), new ZipRange(1, 2, -1, -1), new ZipRange(20, 21, -1, -1), new ZipRange(3, 4, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(48, 49, -1, -1), new ZipRange(55, 56, -1, -1), new ZipRange(63, 65, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(38, 39, -1, -1), new ZipRange(55, 56, -1, -1), new ZipRange(27, 28, -1, -1), new ZipRange(58, 58, -1, -1), new ZipRange(68, 69, -1, -1), new ZipRange(3, 4, -1, -1), new ZipRange(7, 8, -1, -1), new ZipRange(87, 88, 86, -1), new ZipRange(88, 89, 96, -1), new ZipRange(10, 14, 0, 6), new ZipRange(43, 45, -1, -1), new ZipRange(73, 74, -1, -1), new ZipRange(97, 97, -1, -1), new ZipRange(15, 19, -1, -1), new ZipRange(6, 6, 0, 9), new ZipRange(96, 96, -1, -1), new ZipRange(2, 2, -1, -1), new ZipRange(29, 29, -1, -1), new ZipRange(57, 57, -1, -1), new ZipRange(37, 38, -1, -1), new ZipRange(75, 79, 87, 88), new ZipRange(84, 84, -1, -1), new ZipRange(22, 24, 20, -1), new ZipRange(6, 9, -1, -1), new ZipRange(5, 5, -1, -1), new ZipRange(98, 99, -1, -1), new ZipRange(53, 54, -1, -1), new ZipRange(24, 26, -1, -1), new ZipRange(82, 83, -1, -1)};
private static final Pattern sWordRe = Pattern.compile("[^,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]+(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sHouseNumberRe = Pattern.compile("(?:one|[0-9]+([a-z](?=[^a-z]|$)|st|nd|rd|th)?)(?:-(?:one|[0-9]+([a-z](?=[^a-z]|$)|st|nd|rd|th)?))*(?=[,\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sStateRe = Pattern.compile("(?:(ak|alaska)|(al|alabama)|(ar|arkansas)|(as|american[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+samoa)|(az|arizona)|(ca|california)|(co|colorado)|(ct|connecticut)|(dc|district[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+of[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+columbia)|(de|delaware)|(fl|florida)|(fm|federated[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+states[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+of[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+micronesia)|(ga|georgia)|(gu|guam)|(hi|hawaii)|(ia|iowa)|(id|idaho)|(il|illinois)|(in|indiana)|(ks|kansas)|(ky|kentucky)|(la|louisiana)|(ma|massachusetts)|(md|maryland)|(me|maine)|(mh|marshall[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+islands)|(mi|michigan)|(mn|minnesota)|(mo|missouri)|(mp|northern[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+mariana[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+islands)|(ms|mississippi)|(mt|montana)|(nc|north[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+carolina)|(nd|north[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+dakota)|(ne|nebraska)|(nh|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+hampshire)|(nj|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+jersey)|(nm|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+mexico)|(nv|nevada)|(ny|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+york)|(oh|ohio)|(ok|oklahoma)|(or|oregon)|(pa|pennsylvania)|(pr|puerto[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+rico)|(pw|palau)|(ri|rhode[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+island)|(sc|south[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+carolina)|(sd|south[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+dakota)|(tn|tennessee)|(tx|texas)|(ut|utah)|(va|virginia)|(vi|virgin[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+islands)|(vt|vermont)|(wa|washington)|(wi|wisconsin)|(wv|west[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+virginia)|(wy|wyoming))(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sLocationNameRe = Pattern.compile("(?:alley|annex|arcade|ave[.]?|avenue|alameda|bayou|beach|bend|bluffs?|bottom|boulevard|branch|bridge|brooks?|burgs?|bypass|broadway|camino|camp|canyon|cape|causeway|centers?|circles?|cliffs?|club|common|corners?|course|courts?|coves?|creek|crescent|crest|crossing|crossroad|curve|circulo|dale|dam|divide|drives?|estates?|expressway|extensions?|falls?|ferry|fields?|flats?|fords?|forest|forges?|forks?|fort|freeway|gardens?|gateway|glens?|greens?|groves?|harbors?|haven|heights|highway|hills?|hollow|inlet|islands?|isle|junctions?|keys?|knolls?|lakes?|land|landing|lane|lights?|loaf|locks?|lodge|loop|mall|manors?|meadows?|mews|mills?|mission|motorway|mount|mountains?|neck|orchard|oval|overpass|parks?|parkways?|pass|passage|path|pike|pines?|plains?|plaza|points?|ports?|prairie|privada|radial|ramp|ranch|rapids?|rd[.]?|rest|ridges?|river|roads?|route|row|rue|run|shoals?|shores?|skyway|springs?|spurs?|squares?|station|stravenue|stream|st[.]?|streets?|summit|speedway|terrace|throughway|trace|track|trafficway|trail|tunnel|turnpike|underpass|unions?|valleys?|viaduct|views?|villages?|ville|vista|walks?|wall|ways?|wells?|xing|xrd)(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sSuffixedNumberRe = Pattern.compile("([0-9]+)(st|nd|rd|th)", 2);
private static final Pattern sZipCodeRe = Pattern.compile("(?:[0-9]{5}(?:-[0-9]{4})?)(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static class ZipRange {
int mException1;
int mException2;
int mHigh;
int mLow;
ZipRange(int i, int i2, int i3, int i4) {
this.mLow = i;
this.mHigh = i2;
this.mException1 = i3;
this.mException2 = i4;
}
boolean matches(String str) {
int parseInt = Integer.parseInt(str.substring(0, 2));
return (this.mLow <= parseInt && parseInt <= this.mHigh) || parseInt == this.mException1 || parseInt == this.mException2;
}
}
private static boolean checkHouseNumber(String str) {
int i = 0;
for (int i2 = 0; i2 < str.length(); i2++) {
if (Character.isDigit(str.charAt(i2))) {
i++;
}
}
if (i > 5) {
return false;
}
Matcher matcher = sSuffixedNumberRe.matcher(str);
if (!matcher.find()) {
return true;
}
int parseInt = Integer.parseInt(matcher.group(1));
if (parseInt == 0) {
return false;
}
String lowerCase = matcher.group(2).toLowerCase(Locale.getDefault());
int i3 = parseInt % 10;
if (i3 == 1) {
return lowerCase.equals(parseInt % 100 != 11 ? "st" : "th");
}
if (i3 == 2) {
return lowerCase.equals(parseInt % 100 != 12 ? "nd" : "th");
}
if (i3 != 3) {
return lowerCase.equals("th");
}
return lowerCase.equals(parseInt % 100 != 13 ? "rd" : "th");
}
public static MatchResult matchHouseNumber(String str, int i) {
if (i > 0 && HOUSE_PRE_DELIM.indexOf(str.charAt(i - 1)) == -1) {
return null;
}
Matcher region = sHouseNumberRe.matcher(str).region(i, str.length());
if (region.lookingAt()) {
MatchResult matchResult = region.toMatchResult();
if (checkHouseNumber(matchResult.group(0))) {
return matchResult;
}
}
return null;
}
public static MatchResult matchState(String str, int i) {
if (i > 0 && WORD_DELIM.indexOf(str.charAt(i - 1)) == -1) {
return null;
}
Matcher region = sStateRe.matcher(str).region(i, str.length());
if (region.lookingAt()) {
return region.toMatchResult();
}
return null;
}
private static boolean isValidZipCode(String str, MatchResult matchResult) {
if (matchResult == null) {
return false;
}
int groupCount = matchResult.groupCount();
while (true) {
if (groupCount <= 0) {
break;
}
int i = groupCount - 1;
if (matchResult.group(groupCount) != null) {
groupCount = i;
break;
}
groupCount = i;
}
return sZipCodeRe.matcher(str).matches() && sStateZipCodeRanges[groupCount].matches(str);
}
public static boolean isValidZipCode(String str, String str2) {
return isValidZipCode(str, matchState(str2, 0));
}
public static boolean isValidZipCode(String str) {
return sZipCodeRe.matcher(str).matches();
}
public static boolean isValidLocationName(String str) {
return sLocationNameRe.matcher(str).matches();
}
/* JADX WARN: Code restructure failed: missing block: B:74:0x0026, code lost:
return -r13;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private static int attemptMatch(java.lang.String r13, java.util.regex.MatchResult r14) {
/*
int r14 = r14.end()
java.util.regex.Pattern r0 = androidx.core.text.util.FindAddress.sWordRe
java.util.regex.Matcher r0 = r0.matcher(r13)
r1 = -1
r2 = 1
r3 = 0
java.lang.String r4 = ""
r5 = 1
r6 = 1
r7 = 1
r8 = 0
r9 = -1
r10 = -1
L15:
int r11 = r13.length()
if (r14 >= r11) goto Ld5
boolean r11 = r0.find(r14)
if (r11 != 0) goto L27
int r13 = r13.length()
L25:
int r13 = -r13
return r13
L27:
int r11 = r0.end()
int r12 = r0.start()
int r11 = r11 - r12
r12 = 25
if (r11 <= r12) goto L39
int r13 = r0.end()
goto L25
L39:
int r11 = r0.start()
if (r14 >= r11) goto L51
int r11 = r14 + 1
char r14 = r13.charAt(r14)
java.lang.String r12 = "\n\u000b\f\r\u0085\u2028\u2029"
int r14 = r12.indexOf(r14)
if (r14 == r1) goto L4f
int r5 = r5 + 1
L4f:
r14 = r11
goto L39
L51:
r11 = 5
if (r5 <= r11) goto L56
goto Ld5
L56:
int r6 = r6 + r2
r12 = 14
if (r6 <= r12) goto L5d
goto Ld5
L5d:
java.util.regex.MatchResult r12 = matchHouseNumber(r13, r14)
if (r12 == 0) goto L6d
if (r7 == 0) goto L69
if (r5 <= r2) goto L69
int r13 = -r14
return r13
L69:
if (r9 != r1) goto Lcb
r9 = r14
goto Lcb
L6d:
java.lang.String r7 = r0.group(r3)
boolean r7 = isValidLocationName(r7)
if (r7 == 0) goto L7a
r7 = 0
r8 = 1
goto Lcb
L7a:
if (r6 != r11) goto L83
if (r8 != 0) goto L83
int r14 = r0.end()
goto Ld5
L83:
if (r8 == 0) goto Lca
r7 = 4
if (r6 <= r7) goto Lca
java.util.regex.MatchResult r14 = matchState(r13, r14)
if (r14 == 0) goto Lca
java.lang.String r7 = "et"
boolean r4 = r4.equals(r7)
if (r4 == 0) goto La7
java.lang.String r4 = r14.group(r3)
java.lang.String r7 = "al"
boolean r4 = r4.equals(r7)
if (r4 == 0) goto La7
int r14 = r14.end()
goto Ld5
La7:
java.util.regex.Pattern r4 = androidx.core.text.util.FindAddress.sWordRe
java.util.regex.Matcher r4 = r4.matcher(r13)
int r7 = r14.end()
boolean r7 = r4.find(r7)
if (r7 == 0) goto Lc6
java.lang.String r7 = r4.group(r3)
boolean r14 = isValidZipCode(r7, r14)
if (r14 == 0) goto Lca
int r13 = r4.end()
return r13
Lc6:
int r10 = r14.end()
Lca:
r7 = 0
Lcb:
java.lang.String r4 = r0.group(r3)
int r14 = r0.end()
goto L15
Ld5:
if (r10 <= 0) goto Ld8
return r10
Ld8:
if (r9 <= 0) goto Ldb
goto Ldc
Ldb:
r9 = r14
Ldc:
int r13 = -r9
return r13
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.core.text.util.FindAddress.attemptMatch(java.lang.String, java.util.regex.MatchResult):int");
}
static String findAddress(String str) {
Matcher matcher = sHouseNumberRe.matcher(str);
int i = 0;
while (matcher.find(i)) {
if (checkHouseNumber(matcher.group(0))) {
int start = matcher.start();
int attemptMatch = attemptMatch(str, matcher);
if (attemptMatch > 0) {
return str.substring(start, attemptMatch);
}
i = -attemptMatch;
} else {
i = matcher.end();
}
}
return null;
}
private FindAddress() {
}
}

View File

@ -0,0 +1,344 @@
package androidx.core.text.util;
import android.os.Build;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan;
import android.text.util.Linkify;
import android.webkit.WebView;
import android.widget.TextView;
import androidx.core.net.MailTo;
import androidx.core.text.util.LinkifyCompat;
import androidx.core.util.PatternsCompat;
import java.io.UnsupportedEncodingException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* loaded from: classes.dex */
public final class LinkifyCompat {
private static final String[] EMPTY_STRING = new String[0];
private static final Comparator<LinkSpec> COMPARATOR = new Comparator() { // from class: androidx.core.text.util.LinkifyCompat$$ExternalSyntheticLambda0
@Override // java.util.Comparator
public final int compare(Object obj, Object obj2) {
return LinkifyCompat.lambda$static$0((LinkifyCompat.LinkSpec) obj, (LinkifyCompat.LinkSpec) obj2);
}
};
@Retention(RetentionPolicy.SOURCE)
public @interface LinkifyMask {
}
private static boolean shouldAddLinksFallbackToFramework() {
return Build.VERSION.SDK_INT >= 28;
}
static /* synthetic */ int lambda$static$0(LinkSpec linkSpec, LinkSpec linkSpec2) {
if (linkSpec.start < linkSpec2.start) {
return -1;
}
if (linkSpec.start > linkSpec2.start) {
return 1;
}
return Integer.compare(linkSpec2.end, linkSpec.end);
}
public static boolean addLinks(Spannable spannable, int i) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(spannable, i);
}
if (i == 0) {
return false;
}
URLSpan[] uRLSpanArr = (URLSpan[]) spannable.getSpans(0, spannable.length(), URLSpan.class);
for (int length = uRLSpanArr.length - 1; length >= 0; length--) {
spannable.removeSpan(uRLSpanArr[length]);
}
if ((i & 4) != 0) {
Linkify.addLinks(spannable, 4);
}
ArrayList arrayList = new ArrayList();
if ((i & 1) != 0) {
gatherLinks(arrayList, spannable, PatternsCompat.AUTOLINK_WEB_URL, new String[]{"http://", "https://", "rtsp://"}, Linkify.sUrlMatchFilter, null);
}
if ((i & 2) != 0) {
gatherLinks(arrayList, spannable, PatternsCompat.AUTOLINK_EMAIL_ADDRESS, new String[]{MailTo.MAILTO_SCHEME}, null, null);
}
if ((i & 8) != 0) {
gatherMapLinks(arrayList, spannable);
}
pruneOverlaps(arrayList, spannable);
if (arrayList.size() == 0) {
return false;
}
Iterator it = arrayList.iterator();
while (it.hasNext()) {
LinkSpec linkSpec = (LinkSpec) it.next();
if (linkSpec.frameworkAddedSpan == null) {
applyLink(linkSpec.url, linkSpec.start, linkSpec.end, spannable);
}
}
return true;
}
public static boolean addLinks(TextView textView, int i) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(textView, i);
}
if (i == 0) {
return false;
}
CharSequence text = textView.getText();
if (text instanceof Spannable) {
if (addLinks((Spannable) text, i)) {
addLinkMovementMethod(textView);
return true;
}
} else {
SpannableString valueOf = SpannableString.valueOf(text);
if (addLinks(valueOf, i)) {
addLinkMovementMethod(textView);
textView.setText(valueOf);
return true;
}
}
return false;
}
public static void addLinks(TextView textView, Pattern pattern, String str) {
if (shouldAddLinksFallbackToFramework()) {
Linkify.addLinks(textView, pattern, str);
} else {
addLinks(textView, pattern, str, (String[]) null, (Linkify.MatchFilter) null, (Linkify.TransformFilter) null);
}
}
public static void addLinks(TextView textView, Pattern pattern, String str, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
Linkify.addLinks(textView, pattern, str, matchFilter, transformFilter);
} else {
addLinks(textView, pattern, str, (String[]) null, matchFilter, transformFilter);
}
}
public static void addLinks(TextView textView, Pattern pattern, String str, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
Api24Impl.addLinks(textView, pattern, str, strArr, matchFilter, transformFilter);
return;
}
SpannableString valueOf = SpannableString.valueOf(textView.getText());
if (addLinks(valueOf, pattern, str, strArr, matchFilter, transformFilter)) {
textView.setText(valueOf);
addLinkMovementMethod(textView);
}
}
public static boolean addLinks(Spannable spannable, Pattern pattern, String str) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(spannable, pattern, str);
}
return addLinks(spannable, pattern, str, (String[]) null, (Linkify.MatchFilter) null, (Linkify.TransformFilter) null);
}
public static boolean addLinks(Spannable spannable, Pattern pattern, String str, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(spannable, pattern, str, matchFilter, transformFilter);
}
return addLinks(spannable, pattern, str, (String[]) null, matchFilter, transformFilter);
}
public static boolean addLinks(Spannable spannable, Pattern pattern, String str, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
return Api24Impl.addLinks(spannable, pattern, str, strArr, matchFilter, transformFilter);
}
if (str == null) {
str = "";
}
if (strArr == null || strArr.length < 1) {
strArr = EMPTY_STRING;
}
String[] strArr2 = new String[strArr.length + 1];
strArr2[0] = str.toLowerCase(Locale.ROOT);
int i = 0;
while (i < strArr.length) {
String str2 = strArr[i];
i++;
strArr2[i] = str2 == null ? "" : str2.toLowerCase(Locale.ROOT);
}
Matcher matcher = pattern.matcher(spannable);
boolean z = false;
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
String group = matcher.group(0);
if (matchFilter == null || matchFilter.acceptMatch(spannable, start, end)) {
if (group != null) {
applyLink(makeUrl(group, strArr2, matcher, transformFilter), start, end, spannable);
z = true;
}
}
}
return z;
}
private static void addLinkMovementMethod(TextView textView) {
if ((textView.getMovementMethod() instanceof LinkMovementMethod) || !textView.getLinksClickable()) {
return;
}
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
private static String makeUrl(String str, String[] strArr, Matcher matcher, Linkify.TransformFilter transformFilter) {
boolean z;
if (transformFilter != null) {
str = transformFilter.transformUrl(matcher, str);
}
int length = strArr.length;
int i = 0;
while (true) {
if (i >= length) {
z = false;
break;
}
String str2 = strArr[i];
if (str.regionMatches(true, 0, str2, 0, str2.length())) {
z = true;
if (!str.regionMatches(false, 0, str2, 0, str2.length())) {
str = str2 + str.substring(str2.length());
}
} else {
i++;
}
}
if (z || strArr.length <= 0) {
return str;
}
return strArr[0] + str;
}
private static void gatherLinks(ArrayList<LinkSpec> arrayList, Spannable spannable, Pattern pattern, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
Matcher matcher = pattern.matcher(spannable);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
String group = matcher.group(0);
if (matchFilter == null || matchFilter.acceptMatch(spannable, start, end)) {
if (group != null) {
LinkSpec linkSpec = new LinkSpec();
linkSpec.url = makeUrl(group, strArr, matcher, transformFilter);
linkSpec.start = start;
linkSpec.end = end;
arrayList.add(linkSpec);
}
}
}
}
private static void applyLink(String str, int i, int i2, Spannable spannable) {
spannable.setSpan(new URLSpan(str), i, i2, 33);
}
private static void gatherMapLinks(ArrayList<LinkSpec> arrayList, Spannable spannable) {
int indexOf;
String obj = spannable.toString();
int i = 0;
while (true) {
try {
String findAddress = findAddress(obj);
if (findAddress != null && (indexOf = obj.indexOf(findAddress)) >= 0) {
LinkSpec linkSpec = new LinkSpec();
int length = findAddress.length() + indexOf;
linkSpec.start = indexOf + i;
i += length;
linkSpec.end = i;
obj = obj.substring(length);
try {
linkSpec.url = "geo:0,0?q=" + URLEncoder.encode(findAddress, "UTF-8");
arrayList.add(linkSpec);
} catch (UnsupportedEncodingException unused) {
}
}
return;
} catch (UnsupportedOperationException unused2) {
return;
}
}
}
private static String findAddress(String str) {
if (Build.VERSION.SDK_INT >= 28) {
return WebView.findAddress(str);
}
return FindAddress.findAddress(str);
}
private static void pruneOverlaps(ArrayList<LinkSpec> arrayList, Spannable spannable) {
int i;
int i2 = 0;
for (URLSpan uRLSpan : (URLSpan[]) spannable.getSpans(0, spannable.length(), URLSpan.class)) {
LinkSpec linkSpec = new LinkSpec();
linkSpec.frameworkAddedSpan = uRLSpan;
linkSpec.start = spannable.getSpanStart(uRLSpan);
linkSpec.end = spannable.getSpanEnd(uRLSpan);
arrayList.add(linkSpec);
}
Collections.sort(arrayList, COMPARATOR);
int size = arrayList.size();
while (i2 < size - 1) {
LinkSpec linkSpec2 = arrayList.get(i2);
int i3 = i2 + 1;
LinkSpec linkSpec3 = arrayList.get(i3);
if (linkSpec2.start <= linkSpec3.start && linkSpec2.end > linkSpec3.start) {
if (linkSpec3.end > linkSpec2.end && linkSpec2.end - linkSpec2.start <= linkSpec3.end - linkSpec3.start) {
i = linkSpec2.end - linkSpec2.start < linkSpec3.end - linkSpec3.start ? i2 : -1;
} else {
i = i3;
}
if (i != -1) {
Object obj = arrayList.get(i).frameworkAddedSpan;
if (obj != null) {
spannable.removeSpan(obj);
}
arrayList.remove(i);
size--;
}
}
i2 = i3;
}
}
private LinkifyCompat() {
}
/* JADX INFO: Access modifiers changed from: private */
static class LinkSpec {
int end;
URLSpan frameworkAddedSpan;
int start;
String url;
LinkSpec() {
}
}
static class Api24Impl {
private Api24Impl() {
}
static void addLinks(TextView textView, Pattern pattern, String str, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
Linkify.addLinks(textView, pattern, str, strArr, matchFilter, transformFilter);
}
static boolean addLinks(Spannable spannable, Pattern pattern, String str, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
return Linkify.addLinks(spannable, pattern, str, strArr, matchFilter, transformFilter);
}
}
}