package com.facebook.appevents.integrity; import android.os.Bundle; import androidx.core.app.NotificationCompat; import com.facebook.FacebookSdk; import com.facebook.internal.FetchedAppSettings; import com.facebook.internal.FetchedAppSettingsManager; import com.facebook.internal.instrument.crashshield.CrashShieldHandler; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import kotlin.jvm.internal.Intrinsics; import org.json.JSONArray; import org.json.JSONObject; /* loaded from: classes2.dex */ public final class MACARuleMatchingManager { private static JSONArray MACARules; private static boolean enabled; public static final MACARuleMatchingManager INSTANCE = new MACARuleMatchingManager(); private static String[] keys = {NotificationCompat.CATEGORY_EVENT, "_locale", "_appVersion", "_deviceOS", "_platform", "_deviceModel", "_nativeAppID", "_nativeAppShortVersion", "_timezone", "_carrier", "_deviceOSTypeName", "_deviceOSVersion", "_remainingDiskGB"}; private MACARuleMatchingManager() { } public static final void enable() { if (CrashShieldHandler.isObjectCrashing(MACARuleMatchingManager.class)) { return; } try { INSTANCE.loadMACARules(); if (MACARules != null) { enabled = true; } } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, MACARuleMatchingManager.class); } } private final void loadMACARules() { if (CrashShieldHandler.isObjectCrashing(this)) { return; } try { FetchedAppSettingsManager fetchedAppSettingsManager = FetchedAppSettingsManager.INSTANCE; FetchedAppSettings queryAppSettings = FetchedAppSettingsManager.queryAppSettings(FacebookSdk.getApplicationId(), false); if (queryAppSettings == null) { return; } MACARules = queryAppSettings.getMACARuleMatchingSetting(); } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, this); } } public static final String getKey(JSONObject logic) { if (CrashShieldHandler.isObjectCrashing(MACARuleMatchingManager.class)) { return null; } try { Intrinsics.checkNotNullParameter(logic, "logic"); Iterator keys2 = logic.keys(); if (keys2.hasNext()) { return keys2.next(); } return null; } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, MACARuleMatchingManager.class); return null; } } /* JADX WARN: Removed duplicated region for block: B:107:0x02bd A[Catch: all -> 0x004c, TryCatch #0 {all -> 0x004c, blocks: (B:6:0x000a, B:9:0x001b, B:13:0x003f, B:15:0x0037, B:24:0x0068, B:25:0x0070, B:28:0x007d, B:32:0x0087, B:34:0x008d, B:36:0x0098, B:38:0x00a5, B:39:0x00aa, B:40:0x00ab, B:41:0x00b0, B:42:0x00b1, B:46:0x00bb, B:51:0x00c8, B:57:0x0259, B:60:0x0261, B:61:0x0265, B:63:0x026b, B:65:0x0273, B:67:0x0282, B:74:0x0292, B:75:0x0297, B:77:0x0298, B:78:0x029d, B:80:0x00d2, B:84:0x00dc, B:86:0x00e2, B:88:0x00ed, B:90:0x00fa, B:91:0x00ff, B:92:0x0100, B:93:0x0105, B:94:0x0106, B:100:0x02ab, B:104:0x02b3, B:105:0x02b7, B:107:0x02bd, B:109:0x02c5, B:111:0x02d4, B:117:0x02e3, B:118:0x02e8, B:120:0x02e9, B:121:0x02ee, B:124:0x0110, B:128:0x011a, B:130:0x0120, B:132:0x012b, B:134:0x0138, B:135:0x013d, B:136:0x013e, B:137:0x0143, B:138:0x0144, B:142:0x01f4, B:146:0x014e, B:150:0x01d8, B:154:0x0158, B:158:0x01b2, B:162:0x0162, B:166:0x016c, B:170:0x023a, B:174:0x0176, B:178:0x0180, B:184:0x038f, B:186:0x018a, B:190:0x020a, B:194:0x0194, B:198:0x019e, B:202:0x0226, B:204:0x01a8, B:208:0x01c4, B:212:0x01ce, B:216:0x01ea, B:220:0x0200, B:224:0x021c, B:228:0x0230, B:232:0x024c, B:236:0x029e, B:240:0x02ef, B:244:0x02f9, B:246:0x02ff, B:248:0x030a, B:252:0x0319, B:253:0x031e, B:254:0x031f, B:255:0x0324, B:256:0x0325, B:260:0x032f, B:262:0x0339, B:268:0x037a, B:270:0x0343, B:274:0x034d, B:276:0x035c, B:280:0x0365, B:282:0x036e, B:286:0x0383, B:290:0x0398, B:294:0x03a1, B:296:0x03a7, B:298:0x03b2, B:302:0x03c2, B:303:0x03c7, B:304:0x03c8, B:305:0x03cd, B:307:0x0055), top: B:5:0x000a }] */ /* JADX WARN: Removed duplicated region for block: B:144:0x01fe */ /* JADX WARN: Removed duplicated region for block: B:145:? A[RETURN, SYNTHETIC] */ /* JADX WARN: Removed duplicated region for block: B:152:0x01e8 */ /* JADX WARN: Removed duplicated region for block: B:153:? A[RETURN, SYNTHETIC] */ /* JADX WARN: Removed duplicated region for block: B:160:0x01c2 */ /* JADX WARN: Removed duplicated region for block: B:161:? A[RETURN, SYNTHETIC] */ /* JADX WARN: Removed duplicated region for block: B:172:0x024a */ /* JADX WARN: Removed duplicated region for block: B:173:? A[RETURN, SYNTHETIC] */ /* JADX WARN: Removed duplicated region for block: B:183:0x038e A[RETURN] */ /* JADX WARN: Removed duplicated region for block: B:184:0x038f A[Catch: all -> 0x004c, TryCatch #0 {all -> 0x004c, blocks: (B:6:0x000a, B:9:0x001b, B:13:0x003f, B:15:0x0037, B:24:0x0068, B:25:0x0070, B:28:0x007d, B:32:0x0087, B:34:0x008d, B:36:0x0098, B:38:0x00a5, B:39:0x00aa, B:40:0x00ab, B:41:0x00b0, B:42:0x00b1, B:46:0x00bb, B:51:0x00c8, B:57:0x0259, B:60:0x0261, B:61:0x0265, B:63:0x026b, B:65:0x0273, B:67:0x0282, B:74:0x0292, B:75:0x0297, B:77:0x0298, B:78:0x029d, B:80:0x00d2, B:84:0x00dc, B:86:0x00e2, B:88:0x00ed, B:90:0x00fa, B:91:0x00ff, B:92:0x0100, B:93:0x0105, B:94:0x0106, B:100:0x02ab, B:104:0x02b3, B:105:0x02b7, B:107:0x02bd, B:109:0x02c5, B:111:0x02d4, B:117:0x02e3, B:118:0x02e8, B:120:0x02e9, B:121:0x02ee, B:124:0x0110, B:128:0x011a, B:130:0x0120, B:132:0x012b, B:134:0x0138, B:135:0x013d, B:136:0x013e, B:137:0x0143, B:138:0x0144, B:142:0x01f4, B:146:0x014e, B:150:0x01d8, B:154:0x0158, B:158:0x01b2, B:162:0x0162, B:166:0x016c, B:170:0x023a, B:174:0x0176, B:178:0x0180, B:184:0x038f, B:186:0x018a, B:190:0x020a, B:194:0x0194, B:198:0x019e, B:202:0x0226, B:204:0x01a8, B:208:0x01c4, B:212:0x01ce, B:216:0x01ea, B:220:0x0200, B:224:0x021c, B:228:0x0230, B:232:0x024c, B:236:0x029e, B:240:0x02ef, B:244:0x02f9, B:246:0x02ff, B:248:0x030a, B:252:0x0319, B:253:0x031e, B:254:0x031f, B:255:0x0324, B:256:0x0325, B:260:0x032f, B:262:0x0339, B:268:0x037a, B:270:0x0343, B:274:0x034d, B:276:0x035c, B:280:0x0365, B:282:0x036e, B:286:0x0383, B:290:0x0398, B:294:0x03a1, B:296:0x03a7, B:298:0x03b2, B:302:0x03c2, B:303:0x03c7, B:304:0x03c8, B:305:0x03cd, B:307:0x0055), top: B:5:0x000a }] */ /* JADX WARN: Removed duplicated region for block: B:192:0x021a */ /* JADX WARN: Removed duplicated region for block: B:193:? A[RETURN, SYNTHETIC] */ /* JADX WARN: Removed duplicated region for block: B:267:0x0379 A[RETURN] */ /* JADX WARN: Removed duplicated region for block: B:268:0x037a A[Catch: all -> 0x004c, TryCatch #0 {all -> 0x004c, blocks: (B:6:0x000a, B:9:0x001b, B:13:0x003f, B:15:0x0037, B:24:0x0068, B:25:0x0070, B:28:0x007d, B:32:0x0087, B:34:0x008d, B:36:0x0098, B:38:0x00a5, B:39:0x00aa, B:40:0x00ab, B:41:0x00b0, B:42:0x00b1, B:46:0x00bb, B:51:0x00c8, B:57:0x0259, B:60:0x0261, B:61:0x0265, B:63:0x026b, B:65:0x0273, B:67:0x0282, B:74:0x0292, B:75:0x0297, B:77:0x0298, B:78:0x029d, B:80:0x00d2, B:84:0x00dc, B:86:0x00e2, B:88:0x00ed, B:90:0x00fa, B:91:0x00ff, B:92:0x0100, B:93:0x0105, B:94:0x0106, B:100:0x02ab, B:104:0x02b3, B:105:0x02b7, B:107:0x02bd, B:109:0x02c5, B:111:0x02d4, B:117:0x02e3, B:118:0x02e8, B:120:0x02e9, B:121:0x02ee, B:124:0x0110, B:128:0x011a, B:130:0x0120, B:132:0x012b, B:134:0x0138, B:135:0x013d, B:136:0x013e, B:137:0x0143, B:138:0x0144, B:142:0x01f4, B:146:0x014e, B:150:0x01d8, B:154:0x0158, B:158:0x01b2, B:162:0x0162, B:166:0x016c, B:170:0x023a, B:174:0x0176, B:178:0x0180, B:184:0x038f, B:186:0x018a, B:190:0x020a, B:194:0x0194, B:198:0x019e, B:202:0x0226, B:204:0x01a8, B:208:0x01c4, B:212:0x01ce, B:216:0x01ea, B:220:0x0200, B:224:0x021c, B:228:0x0230, B:232:0x024c, B:236:0x029e, B:240:0x02ef, B:244:0x02f9, B:246:0x02ff, B:248:0x030a, B:252:0x0319, B:253:0x031e, B:254:0x031f, B:255:0x0324, B:256:0x0325, B:260:0x032f, B:262:0x0339, B:268:0x037a, B:270:0x0343, B:274:0x034d, B:276:0x035c, B:280:0x0365, B:282:0x036e, B:286:0x0383, B:290:0x0398, B:294:0x03a1, B:296:0x03a7, B:298:0x03b2, B:302:0x03c2, B:303:0x03c7, B:304:0x03c8, B:305:0x03cd, B:307:0x0055), top: B:5:0x000a }] */ /* JADX WARN: Removed duplicated region for block: B:56:0x0258 A[RETURN] */ /* JADX WARN: Removed duplicated region for block: B:57:0x0259 A[Catch: all -> 0x004c, TryCatch #0 {all -> 0x004c, blocks: (B:6:0x000a, B:9:0x001b, B:13:0x003f, B:15:0x0037, B:24:0x0068, B:25:0x0070, B:28:0x007d, B:32:0x0087, B:34:0x008d, B:36:0x0098, B:38:0x00a5, B:39:0x00aa, B:40:0x00ab, B:41:0x00b0, B:42:0x00b1, B:46:0x00bb, B:51:0x00c8, B:57:0x0259, B:60:0x0261, B:61:0x0265, B:63:0x026b, B:65:0x0273, B:67:0x0282, B:74:0x0292, B:75:0x0297, B:77:0x0298, B:78:0x029d, B:80:0x00d2, B:84:0x00dc, B:86:0x00e2, B:88:0x00ed, B:90:0x00fa, B:91:0x00ff, B:92:0x0100, B:93:0x0105, B:94:0x0106, B:100:0x02ab, B:104:0x02b3, B:105:0x02b7, B:107:0x02bd, B:109:0x02c5, B:111:0x02d4, B:117:0x02e3, B:118:0x02e8, B:120:0x02e9, B:121:0x02ee, B:124:0x0110, B:128:0x011a, B:130:0x0120, B:132:0x012b, B:134:0x0138, B:135:0x013d, B:136:0x013e, B:137:0x0143, B:138:0x0144, B:142:0x01f4, B:146:0x014e, B:150:0x01d8, B:154:0x0158, B:158:0x01b2, B:162:0x0162, B:166:0x016c, B:170:0x023a, B:174:0x0176, B:178:0x0180, B:184:0x038f, B:186:0x018a, B:190:0x020a, B:194:0x0194, B:198:0x019e, B:202:0x0226, B:204:0x01a8, B:208:0x01c4, B:212:0x01ce, B:216:0x01ea, B:220:0x0200, B:224:0x021c, B:228:0x0230, B:232:0x024c, B:236:0x029e, B:240:0x02ef, B:244:0x02f9, B:246:0x02ff, B:248:0x030a, B:252:0x0319, B:253:0x031e, B:254:0x031f, B:255:0x0324, B:256:0x0325, B:260:0x032f, B:262:0x0339, B:268:0x037a, B:270:0x0343, B:274:0x034d, B:276:0x035c, B:280:0x0365, B:282:0x036e, B:286:0x0383, B:290:0x0398, B:294:0x03a1, B:296:0x03a7, B:298:0x03b2, B:302:0x03c2, B:303:0x03c7, B:304:0x03c8, B:305:0x03cd, B:307:0x0055), top: B:5:0x000a }] */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public static final boolean stringComparison(java.lang.String r9, org.json.JSONObject r10, android.os.Bundle r11) { /* Method dump skipped, instructions count: 1112 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.facebook.appevents.integrity.MACARuleMatchingManager.stringComparison(java.lang.String, org.json.JSONObject, android.os.Bundle):boolean"); } public static final ArrayList getStringArrayList(JSONArray jSONArray) { if (CrashShieldHandler.isObjectCrashing(MACARuleMatchingManager.class) || jSONArray == null) { return null; } try { ArrayList arrayList = new ArrayList<>(); int length = jSONArray.length(); if (length > 0) { int i = 0; while (true) { int i2 = i + 1; arrayList.add(jSONArray.get(i).toString()); if (i2 >= length) { break; } i = i2; } } return arrayList; } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, MACARuleMatchingManager.class); return null; } } public static final boolean isMatchCCRule(String str, Bundle bundle) { int length; if (!CrashShieldHandler.isObjectCrashing(MACARuleMatchingManager.class) && str != null && bundle != null) { try { JSONObject jSONObject = new JSONObject(str); String key = getKey(jSONObject); if (key == null) { return false; } Object obj = jSONObject.get(key); int hashCode = key.hashCode(); if (hashCode != 3555) { if (hashCode != 96727) { if (hashCode == 109267 && key.equals("not")) { return !isMatchCCRule(obj.toString(), bundle); } } else if (key.equals("and")) { JSONArray jSONArray = (JSONArray) obj; if (jSONArray == null) { return false; } int length2 = jSONArray.length(); if (length2 > 0) { int i = 0; while (true) { int i2 = i + 1; if (!isMatchCCRule(jSONArray.get(i).toString(), bundle)) { return false; } if (i2 >= length2) { break; } i = i2; } } return true; } } else if (key.equals("or")) { JSONArray jSONArray2 = (JSONArray) obj; if (jSONArray2 != null && (length = jSONArray2.length()) > 0) { int i3 = 0; while (true) { int i4 = i3 + 1; if (isMatchCCRule(jSONArray2.get(i3).toString(), bundle)) { return true; } if (i4 >= length) { break; } i3 = i4; } } return false; } JSONObject jSONObject2 = (JSONObject) obj; if (jSONObject2 == null) { return false; } return stringComparison(key, jSONObject2, bundle); } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, MACARuleMatchingManager.class); } } return false; } public static final String getMatchPropertyIDs(Bundle bundle) { String optString; if (CrashShieldHandler.isObjectCrashing(MACARuleMatchingManager.class)) { return null; } try { JSONArray jSONArray = MACARules; if (jSONArray == null) { return "[]"; } Integer valueOf = jSONArray == null ? null : Integer.valueOf(jSONArray.length()); if (valueOf != null && valueOf.intValue() == 0) { return "[]"; } JSONArray jSONArray2 = MACARules; if (jSONArray2 == null) { throw new NullPointerException("null cannot be cast to non-null type org.json.JSONArray"); } ArrayList arrayList = new ArrayList(); int length = jSONArray2.length(); if (length > 0) { int i = 0; while (true) { int i2 = i + 1; String optString2 = jSONArray2.optString(i); if (optString2 != null) { JSONObject jSONObject = new JSONObject(optString2); long optLong = jSONObject.optLong("id"); if (optLong != 0 && (optString = jSONObject.optString("rule")) != null && isMatchCCRule(optString, bundle)) { arrayList.add(Long.valueOf(optLong)); } } if (i2 >= length) { break; } i = i2; } } String jSONArray3 = new JSONArray((Collection) arrayList).toString(); Intrinsics.checkNotNullExpressionValue(jSONArray3, "JSONArray(res).toString()"); return jSONArray3; } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, MACARuleMatchingManager.class); return null; } } public static final void processParameters(Bundle bundle, String event) { if (CrashShieldHandler.isObjectCrashing(MACARuleMatchingManager.class)) { return; } try { Intrinsics.checkNotNullParameter(event, "event"); if (!enabled || bundle == null) { return; } try { generateInfo(bundle, event); bundle.putString("_audiencePropertyIds", getMatchPropertyIDs(bundle)); bundle.putString("cs_maca", "1"); removeGeneratedInfo(bundle); } catch (Exception unused) { } } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, MACARuleMatchingManager.class); } } /* JADX WARN: Removed duplicated region for block: B:15:0x005b */ /* JADX WARN: Removed duplicated region for block: B:18:0x0071 */ /* JADX WARN: Removed duplicated region for block: B:21:0x0086 */ /* JADX WARN: Removed duplicated region for block: B:25:0x0087 */ /* JADX WARN: Removed duplicated region for block: B:26:0x0042 A[Catch: all -> 0x00b3, TryCatch #0 {all -> 0x00b3, blocks: (B:6:0x000d, B:10:0x0032, B:13:0x0049, B:16:0x005c, B:19:0x0072, B:22:0x0088, B:26:0x0042, B:29:0x002b), top: B:5:0x000d }] */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public static final void generateInfo(android.os.Bundle r6, java.lang.String r7) { /* java.lang.String r0 = "ANDROID" java.lang.String r1 = "event" java.lang.Class r2 = com.facebook.appevents.integrity.MACARuleMatchingManager.class boolean r3 = com.facebook.internal.instrument.crashshield.CrashShieldHandler.isObjectCrashing(r2) if (r3 == 0) goto Ld return Ld: java.lang.String r3 = "params" kotlin.jvm.internal.Intrinsics.checkNotNullParameter(r6, r3) // Catch: java.lang.Throwable -> Lb3 kotlin.jvm.internal.Intrinsics.checkNotNullParameter(r7, r1) // Catch: java.lang.Throwable -> Lb3 r6.putString(r1, r7) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_locale" java.lang.StringBuilder r1 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> Lb3 r1.() // Catch: java.lang.Throwable -> Lb3 com.facebook.internal.Utility r3 = com.facebook.internal.Utility.INSTANCE // Catch: java.lang.Throwable -> Lb3 java.util.Locale r4 = r3.getLocale() // Catch: java.lang.Throwable -> Lb3 java.lang.String r5 = "" if (r4 != 0) goto L2b L29: r4 = r5 goto L32 L2b: java.lang.String r4 = r4.getLanguage() // Catch: java.lang.Throwable -> Lb3 if (r4 != 0) goto L32 goto L29 L32: r1.append(r4) // Catch: java.lang.Throwable -> Lb3 r4 = 95 r1.append(r4) // Catch: java.lang.Throwable -> Lb3 java.util.Locale r4 = r3.getLocale() // Catch: java.lang.Throwable -> Lb3 if (r4 != 0) goto L42 L40: r4 = r5 goto L49 L42: java.lang.String r4 = r4.getCountry() // Catch: java.lang.Throwable -> Lb3 if (r4 != 0) goto L49 goto L40 L49: r1.append(r4) // Catch: java.lang.Throwable -> Lb3 java.lang.String r1 = r1.toString() // Catch: java.lang.Throwable -> Lb3 r6.putString(r7, r1) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_appVersion" java.lang.String r1 = r3.getVersionName() // Catch: java.lang.Throwable -> Lb3 if (r1 != 0) goto L5c r1 = r5 L5c: r6.putString(r7, r1) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_deviceOS" r6.putString(r7, r0) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_platform" java.lang.String r1 = "mobile" r6.putString(r7, r1) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_deviceModel" java.lang.String r1 = android.os.Build.MODEL // Catch: java.lang.Throwable -> Lb3 if (r1 != 0) goto L72 r1 = r5 L72: r6.putString(r7, r1) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_nativeAppID" java.lang.String r1 = com.facebook.FacebookSdk.getApplicationId() // Catch: java.lang.Throwable -> Lb3 r6.putString(r7, r1) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_nativeAppShortVersion" java.lang.String r1 = r3.getVersionName() // Catch: java.lang.Throwable -> Lb3 if (r1 != 0) goto L87 goto L88 L87: r5 = r1 L88: r6.putString(r7, r5) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_timezone" java.lang.String r1 = r3.getDeviceTimeZoneName() // Catch: java.lang.Throwable -> Lb3 r6.putString(r7, r1) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_carrier" java.lang.String r1 = r3.getCarrierName() // Catch: java.lang.Throwable -> Lb3 r6.putString(r7, r1) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_deviceOSTypeName" r6.putString(r7, r0) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_deviceOSVersion" java.lang.String r0 = android.os.Build.VERSION.RELEASE // Catch: java.lang.Throwable -> Lb3 r6.putString(r7, r0) // Catch: java.lang.Throwable -> Lb3 java.lang.String r7 = "_remainingDiskGB" long r0 = r3.getAvailableExternalStorageGB() // Catch: java.lang.Throwable -> Lb3 r6.putLong(r7, r0) // Catch: java.lang.Throwable -> Lb3 return Lb3: r6 = move-exception com.facebook.internal.instrument.crashshield.CrashShieldHandler.handleThrowable(r6, r2) return */ throw new UnsupportedOperationException("Method not decompiled: com.facebook.appevents.integrity.MACARuleMatchingManager.generateInfo(android.os.Bundle, java.lang.String):void"); } public static final void removeGeneratedInfo(Bundle params) { if (CrashShieldHandler.isObjectCrashing(MACARuleMatchingManager.class)) { return; } try { Intrinsics.checkNotNullParameter(params, "params"); String[] strArr = keys; int length = strArr.length; int i = 0; while (i < length) { String str = strArr[i]; i++; params.remove(str); } } catch (Throwable th) { CrashShieldHandler.handleThrowable(th, MACARuleMatchingManager.class); } } }