Snap for 11149604 from 8f6cec6ca74bbbaf4a728f9965f124ff5b87f08f to androidx-versionedparcelable-release

Change-Id: I8eb6349c3bc82a1dec57bc69a8e5a9300067419c
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 3cfee0c..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,335 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-NOTO_DIR := $(call my-dir)
-
-include $(call all-makefiles-under,$(NOTO_DIR))
-
-# We have to use BUILD_PREBUILT instead of PRODUCT_COPY_FILES,
-# to copy over the NOTICE file.
-#############################################################################
-# $(1): The source file name in LOCAL_PATH.
-#       It also serves as the module name and the dest file name.
-#############################################################################
-define build-one-font-module
-$(eval include $(CLEAR_VARS))\
-$(eval LOCAL_MODULE := $(1))\
-$(eval LOCAL_SRC_FILES := $(1))\
-$(eval LOCAL_MODULE_CLASS := ETC)\
-$(eval LOCAL_MODULE_TAGS := optional)\
-$(eval LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts)\
-$(eval include $(BUILD_PREBUILT))
-endef
-
-
-#############################################################################
-# First "build" the Noto CJK fonts, which have a different directory and
-# copyright holder. These are not included in MINIMAL_FONT_FOOTPRINT builds.
-#############################################################################
-ifneq ($(MINIMAL_FONT_FOOTPRINT),true)
-LOCAL_PATH := $(NOTO_DIR)/cjk
-
-font_src_files := \
-    NotoSansCJK-Regular.ttc
-
-$(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))
-font_src_files :=
-
-endif # !MINIMAL_FONT_FOOTPRINT
-
-#############################################################################
-# Similary "build" the Noto CJK fonts for serif family.
-# These are not included in SMALLER_FONT_FOOTPRINT builds.
-#############################################################################
-ifeq ($(filter true,$(EXCLUDE_SERIF_FONTS) $(SMALLER_FONT_FOOTPRINT)),)
-LOCAL_PATH := $(NOTO_DIR)/cjk
-
-font_src_files := \
-    NotoSerifCJK-Regular.ttc
-
-$(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))
-font_src_files :=
-
-endif # !EXCLUDE_SERIF_FONTS && !SMALLER_FONT_FOOTPRINT
-
-#############################################################################
-# Now "build" the Noto Color Emoji font, which is in its own directory. It is
-# not included in the MINIMAL_FONT_FOOTPRINT builds.
-#############################################################################
-ifneq ($(MINIMAL_FONT_FOOTPRINT),true)
-LOCAL_PATH := $(NOTO_DIR)/emoji
-
-font_src_files := \
-    NotoColorEmoji.ttf
-
-$(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))
-font_src_files :=
-
-endif # !MINIMAL_FONT_FOOTPRINT
-
-#############################################################################
-# Now "build" the rest of the fonts, which live in a separate subdirectory.
-#############################################################################
-LOCAL_PATH := $(NOTO_DIR)/other
-
-#############################################################################
-# The following fonts are included in all builds.
-#############################################################################
-font_src_files := \
-    NotoSerif-Regular.ttf \
-    NotoSerif-Bold.ttf \
-    NotoSerif-Italic.ttf \
-    NotoSerif-BoldItalic.ttf
-
-#############################################################################
-# The following fonts are excluded from SMALLER_FONT_FOOTPRINT builds.
-#############################################################################
-ifneq ($(SMALLER_FONT_FOOTPRINT),true)
-font_src_files += \
-    NotoSansAdlam-Regular.ttf \
-    NotoSansAhom-Regular.otf \
-    NotoSansAnatolianHieroglyphs-Regular.otf \
-    NotoSansAvestan-Regular.ttf \
-    NotoSansBalinese-Regular.ttf \
-    NotoSansBamum-Regular.ttf \
-    NotoSansBassaVah-Regular.otf \
-    NotoSansBatak-Regular.ttf \
-    NotoSansBengali-Bold.ttf \
-    NotoSansBengali-Regular.ttf \
-    NotoSansBengaliUI-Bold.ttf \
-    NotoSansBengaliUI-Regular.ttf \
-    NotoSansBhaiksuki-Regular.otf \
-    NotoSansBrahmi-Regular.ttf \
-    NotoSansBuginese-Regular.ttf \
-    NotoSansBuhid-Regular.ttf \
-    NotoSansCanadianAboriginal-Regular.ttf \
-    NotoSansCarian-Regular.ttf \
-    NotoSansChakma-Regular.ttf \
-    NotoSansCham-Bold.ttf \
-    NotoSansCham-Regular.ttf \
-    NotoSansCherokee-Regular.ttf \
-    NotoSansCoptic-Regular.ttf \
-    NotoSansCuneiform-Regular.ttf \
-    NotoSansCypriot-Regular.ttf \
-    NotoSansDeseret-Regular.ttf \
-    NotoSansEgyptianHieroglyphs-Regular.ttf \
-    NotoSansElbasan-Regular.otf \
-    NotoSansEthiopic-Bold.ttf \
-    NotoSansEthiopic-Regular.ttf \
-    NotoSansGlagolitic-Regular.ttf \
-    NotoSansGothic-Regular.ttf \
-    NotoSansGujarati-Bold.ttf \
-    NotoSansGujarati-Regular.ttf \
-    NotoSansGujaratiUI-Bold.ttf \
-    NotoSansGujaratiUI-Regular.ttf \
-    NotoSansGurmukhi-Bold.ttf \
-    NotoSansGurmukhi-Regular.ttf \
-    NotoSansGurmukhiUI-Bold.ttf \
-    NotoSansGurmukhiUI-Regular.ttf \
-    NotoSansHanunoo-Regular.ttf \
-    NotoSansHatran-Regular.otf \
-    NotoSansImperialAramaic-Regular.ttf \
-    NotoSansInscriptionalPahlavi-Regular.ttf \
-    NotoSansInscriptionalParthian-Regular.ttf \
-    NotoSansJavanese-Regular.ttf \
-    NotoSansKaithi-Regular.ttf \
-    NotoSansKannada-Bold.ttf \
-    NotoSansKannada-Regular.ttf \
-    NotoSansKannadaUI-Bold.ttf \
-    NotoSansKannadaUI-Regular.ttf \
-    NotoSansKayahLi-Regular.ttf \
-    NotoSansKharoshthi-Regular.ttf \
-    NotoSansKhmerUI-Bold.ttf \
-    NotoSansKhmerUI-Regular.ttf \
-    NotoSansLao-Bold.ttf \
-    NotoSansLao-Regular.ttf \
-    NotoSansLaoUI-Bold.ttf \
-    NotoSansLaoUI-Regular.ttf \
-    NotoSansLepcha-Regular.ttf \
-    NotoSansLimbu-Regular.ttf \
-    NotoSansLinearA-Regular.otf \
-    NotoSansLinearB-Regular.ttf \
-    NotoSansLisu-Regular.ttf \
-    NotoSansLycian-Regular.ttf \
-    NotoSansLydian-Regular.ttf \
-    NotoSansMalayalam-Bold.ttf \
-    NotoSansMalayalam-Regular.ttf \
-    NotoSansMalayalamUI-Bold.ttf \
-    NotoSansMalayalamUI-Regular.ttf \
-    NotoSansMandaic-Regular.ttf \
-    NotoSansManichaean-Regular.otf \
-    NotoSansMarchen-Regular.otf \
-    NotoSansMeeteiMayek-Regular.ttf \
-    NotoSansMeroitic-Regular.otf \
-    NotoSansMiao-Regular.otf \
-    NotoSansMongolian-Regular.ttf \
-    NotoSansMro-Regular.otf \
-    NotoSansMultani-Regular.otf \
-    NotoSansMyanmar-Bold.ttf \
-    NotoSansMyanmar-Regular.ttf \
-    NotoSansMyanmarUI-Bold.ttf \
-    NotoSansMyanmarUI-Regular.ttf \
-    NotoSansNabataean-Regular.otf \
-    NotoSansNewa-Regular.otf \
-    NotoSansNewTaiLue-Regular.ttf \
-    NotoSansNKo-Regular.ttf \
-    NotoSansOgham-Regular.ttf \
-    NotoSansOlChiki-Regular.ttf \
-    NotoSansOldItalic-Regular.ttf \
-    NotoSansOldNorthArabian-Regular.otf \
-    NotoSansOldPermic-Regular.otf \
-    NotoSansOldPersian-Regular.ttf \
-    NotoSansOldSouthArabian-Regular.ttf \
-    NotoSansOldTurkic-Regular.ttf \
-    NotoSansOriya-Bold.ttf \
-    NotoSansOriya-Regular.ttf \
-    NotoSansOriyaUI-Bold.ttf \
-    NotoSansOriyaUI-Regular.ttf \
-    NotoSansOsage-Regular.ttf \
-    NotoSansOsmanya-Regular.ttf \
-    NotoSansPahawhHmong-Regular.otf \
-    NotoSansPalmyrene-Regular.otf \
-    NotoSansPauCinHau-Regular.otf \
-    NotoSansPhagsPa-Regular.ttf \
-    NotoSansPhoenician-Regular.ttf \
-    NotoSansRejang-Regular.ttf \
-    NotoSansRunic-Regular.ttf \
-    NotoSansSamaritan-Regular.ttf \
-    NotoSansSaurashtra-Regular.ttf \
-    NotoSansSharada-Regular.otf \
-    NotoSansShavian-Regular.ttf \
-    NotoSansSinhala-Bold.ttf \
-    NotoSansSinhala-Regular.ttf \
-    NotoSansSinhalaUI-Bold.otf \
-    NotoSansSinhalaUI-Regular.otf \
-    NotoSansSoraSompeng-Regular.otf \
-    NotoSansSundanese-Regular.ttf \
-    NotoSansSylotiNagri-Regular.ttf \
-    NotoSansSyriacEastern-Regular.ttf \
-    NotoSansSyriacEstrangela-Regular.ttf \
-    NotoSansSyriacWestern-Regular.ttf \
-    NotoSansTagalog-Regular.ttf \
-    NotoSansTagbanwa-Regular.ttf \
-    NotoSansTaiLe-Regular.ttf \
-    NotoSansTaiTham-Regular.ttf \
-    NotoSansTaiViet-Regular.ttf \
-    NotoSansTamil-Bold.ttf \
-    NotoSansTamil-Regular.ttf \
-    NotoSansTamilUI-Bold.ttf \
-    NotoSansTamilUI-Regular.ttf \
-    NotoSansTelugu-Bold.ttf \
-    NotoSansTelugu-Regular.ttf \
-    NotoSansTeluguUI-Bold.ttf \
-    NotoSansTeluguUI-Regular.ttf \
-    NotoSansThaana-Bold.ttf \
-    NotoSansThaana-Regular.ttf \
-    NotoSansTibetan-Bold.ttf \
-    NotoSansTibetan-Regular.ttf \
-    NotoSansTifinagh-Regular.ttf \
-    NotoSansUgaritic-Regular.ttf \
-    NotoSansVai-Regular.ttf \
-    NotoSansYi-Regular.ttf
-endif # !SMALLER_FONT_FOOTPRINT
-
-#############################################################################
-# The following fonts are excluded from MINIMAL_FONT_FOOTPRINT builds.
-#############################################################################
-ifneq ($(MINIMAL_FONT_FOOTPRINT),true)
-font_src_files += \
-    NotoNaskhArabic-Regular.ttf \
-    NotoNaskhArabic-Bold.ttf \
-    NotoNaskhArabicUI-Regular.ttf \
-    NotoNaskhArabicUI-Bold.ttf \
-    NotoSansArmenian-Regular.ttf \
-    NotoSansArmenian-Bold.ttf \
-    NotoSansDevanagari-Regular.ttf \
-    NotoSansDevanagari-Bold.ttf \
-    NotoSansDevanagariUI-Regular.ttf \
-    NotoSansDevanagariUI-Bold.ttf \
-    NotoSansGeorgian-Regular.ttf \
-    NotoSansGeorgian-Bold.ttf \
-    NotoSansHebrew-Regular.ttf \
-    NotoSansHebrew-Bold.ttf \
-    NotoSansSymbols-Regular-Subsetted.ttf \
-    NotoSansSymbols-Regular-Subsetted2.ttf \
-    NotoSansThai-Regular.ttf \
-    NotoSansThai-Bold.ttf \
-    NotoSansThaiUI-Regular.ttf \
-    NotoSansThaiUI-Bold.ttf
-endif # !MINIMAL_FONT_FOOTPRINT
-
-ifeq ($(filter true,$(EXCLUDE_SERIF_FONTS) $(SMALLER_FONT_FOOTPRINT)),)
-font_src_files += \
-    NotoSerifArmenian-Bold.ttf \
-    NotoSerifArmenian-Regular.ttf \
-    NotoSerifBengali-Bold.ttf \
-    NotoSerifBengali-Regular.ttf \
-    NotoSerifDevanagari-Bold.ttf \
-    NotoSerifDevanagari-Regular.ttf \
-    NotoSerifEthiopic-Bold.otf \
-    NotoSerifEthiopic-Regular.otf \
-    NotoSerifGeorgian-Bold.ttf \
-    NotoSerifGeorgian-Regular.ttf \
-    NotoSerifGujarati-Bold.ttf \
-    NotoSerifGujarati-Regular.ttf \
-    NotoSerifGurmukhi-Bold.otf \
-    NotoSerifGurmukhi-Regular.otf \
-    NotoSerifHebrew-Bold.ttf \
-    NotoSerifHebrew-Regular.ttf \
-    NotoSerifKannada-Bold.ttf \
-    NotoSerifKannada-Regular.ttf \
-    NotoSerifKhmer-Bold.otf \
-    NotoSerifKhmer-Regular.otf \
-    NotoSerifLao-Bold.ttf \
-    NotoSerifLao-Regular.ttf \
-    NotoSerifMalayalam-Bold.ttf \
-    NotoSerifMalayalam-Regular.ttf \
-    NotoSerifMyanmar-Bold.otf \
-    NotoSerifMyanmar-Regular.otf \
-    NotoSerifSinhala-Bold.otf \
-    NotoSerifSinhala-Regular.otf \
-    NotoSerifTamil-Bold.ttf \
-    NotoSerifTamil-Regular.ttf \
-    NotoSerifTelugu-Bold.ttf \
-    NotoSerifTelugu-Regular.ttf \
-    NotoSerifThai-Bold.ttf \
-    NotoSerifThai-Regular.ttf
-endif # !EXCLUDE_SERIF_FONTS && !SMALLER_FONT_FOOTPRINT
-
-$(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))
-
-#############################################################################
-# Now "build" the variable fonts, which live in a separate subdirectory.
-# The only variable fonts are for Khmer Sans, which is excluded in
-# SMALLER_FONT_FOOTPRINT build.
-#############################################################################
-
-ifneq ($(SMALLER_FONT_FOOTPRINT),true)
-
-LOCAL_PATH := $(NOTO_DIR)/other-vf
-
-font_src_files := \
-    NotoSansKhmer-VF.ttf
-
-$(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))
-
-endif # !SMALLER_FONT_FOOTPRINT
-
-NOTO_DIR :=
-build-one-font-module :=
-font_src_files :=
-
-
-
-
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..279657d
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "minikin_tests"
+    }
+  ]
+}
diff --git a/cjk/Android.bp b/cjk/Android.bp
new file mode 100644
index 0000000..5ff7204
--- /dev/null
+++ b/cjk/Android.bp
@@ -0,0 +1,23 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+prebuilt_font {
+    name: "NotoSansCJK-Regular.ttc",
+    src: "NotoSansCJK-Regular.ttc",
+}
+
+prebuilt_font {
+    name: "NotoSerifCJK-Regular.ttc",
+    src: "NotoSerifCJK-Regular.ttc",
+}
diff --git a/emoji-compat/Android.mk b/emoji-compat-flatbuffers/Android.mk
similarity index 94%
rename from emoji-compat/Android.mk
rename to emoji-compat-flatbuffers/Android.mk
index bc47046..76bd918 100644
--- a/emoji-compat/Android.mk
+++ b/emoji-compat-flatbuffers/Android.mk
@@ -15,7 +15,7 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := noto-emoji-compat-java
+LOCAL_MODULE := noto-emoji-compat-flatbuffers-java
 LOCAL_SRC_FILES := $(call all-java-files-under, src/java)
 LOCAL_SDK_VERSION := current
 
diff --git a/emoji-compat-flatbuffers/build.gradle b/emoji-compat-flatbuffers/build.gradle
new file mode 100644
index 0000000..3d9d8cb
--- /dev/null
+++ b/emoji-compat-flatbuffers/build.gradle
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+    id("java")
+}
+
+sourceSets {
+    main {
+        java.srcDirs = ['src/java']
+    }
+}
+
+compileJava {
+    sourceCompatibility = JavaVersion.VERSION_1_8
+    targetCompatibility = JavaVersion.VERSION_1_8
+}
+
+dependencies {
+    implementation("com.google.flatbuffers:flatbuffers-java:1.12.0")
+}
+
+// The "javadoc" task is unused so we don't want it to appear in the output of `./gradlew tasks`
+// So, we set the group to null
+tasks["javadoc"].group = null
diff --git a/emoji-compat/data/emoji_metadata.fbs b/emoji-compat-flatbuffers/data/emoji_metadata.fbs
similarity index 100%
rename from emoji-compat/data/emoji_metadata.fbs
rename to emoji-compat-flatbuffers/data/emoji_metadata.fbs
diff --git a/emoji-compat/data/flatbuffer_header.txt b/emoji-compat-flatbuffers/data/flatbuffer_header.txt
similarity index 69%
rename from emoji-compat/data/flatbuffer_header.txt
rename to emoji-compat-flatbuffers/data/flatbuffer_header.txt
index d67f3a8..2b40a04 100644
--- a/emoji-compat/data/flatbuffer_header.txt
+++ b/emoji-compat-flatbuffers/data/flatbuffer_header.txt
@@ -14,16 +14,3 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-package androidx.text.emoji.flatbuffer;
-
-import com.google.flatbuffers.FlatBufferBuilder;
-import com.google.flatbuffers.Table;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * Automatically generated by the FlatBuffers compiler, do not modify.
- */
-@SuppressWarnings("unused")
\ No newline at end of file
diff --git a/emoji-compat/jarjar-rules.txt b/emoji-compat-flatbuffers/jarjar-rules.txt
similarity index 100%
rename from emoji-compat/jarjar-rules.txt
rename to emoji-compat-flatbuffers/jarjar-rules.txt
diff --git a/emoji-compat/settings.gradle b/emoji-compat-flatbuffers/settings.gradle
similarity index 100%
rename from emoji-compat/settings.gradle
rename to emoji-compat-flatbuffers/settings.gradle
diff --git a/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java
new file mode 100644
index 0000000..0b2a694
--- /dev/null
+++ b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java
@@ -0,0 +1,89 @@
+// CHECKSTYLE:OFF Generated code
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// automatically generated by the FlatBuffers compiler, do not modify
+
+package androidx.text.emoji.flatbuffer;
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+@SuppressWarnings("unused")
+public final class MetadataItem extends Table {
+  public static void ValidateVersion() { Constants.FLATBUFFERS_1_12_0(); }
+  public static MetadataItem getRootAsMetadataItem(ByteBuffer _bb) { return getRootAsMetadataItem(_bb, new MetadataItem()); }
+  public static MetadataItem getRootAsMetadataItem(ByteBuffer _bb, MetadataItem obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+  public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+  public MetadataItem __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+  public int id() { int o = __offset(4); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+  public boolean emojiStyle() { int o = __offset(6); return o != 0 ? 0!=bb.get(o + bb_pos) : false; }
+  public short sdkAdded() { int o = __offset(8); return o != 0 ? bb.getShort(o + bb_pos) : 0; }
+  public short compatAdded() { int o = __offset(10); return o != 0 ? bb.getShort(o + bb_pos) : 0; }
+  public short width() { int o = __offset(12); return o != 0 ? bb.getShort(o + bb_pos) : 0; }
+  public short height() { int o = __offset(14); return o != 0 ? bb.getShort(o + bb_pos) : 0; }
+  public int codepoints(int j) { int o = __offset(16); return o != 0 ? bb.getInt(__vector(o) + j * 4) : 0; }
+  public int codepointsLength() { int o = __offset(16); return o != 0 ? __vector_len(o) : 0; }
+  public IntVector codepointsVector() { return codepointsVector(new IntVector()); }
+  public IntVector codepointsVector(IntVector obj) { int o = __offset(16); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
+  public ByteBuffer codepointsAsByteBuffer() { return __vector_as_bytebuffer(16, 4); }
+  public ByteBuffer codepointsInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 16, 4); }
+
+  public static int createMetadataItem(FlatBufferBuilder builder,
+      int id,
+      boolean emojiStyle,
+      short sdkAdded,
+      short compatAdded,
+      short width,
+      short height,
+      int codepointsOffset) {
+    builder.startTable(7);
+    MetadataItem.addCodepoints(builder, codepointsOffset);
+    MetadataItem.addId(builder, id);
+    MetadataItem.addHeight(builder, height);
+    MetadataItem.addWidth(builder, width);
+    MetadataItem.addCompatAdded(builder, compatAdded);
+    MetadataItem.addSdkAdded(builder, sdkAdded);
+    MetadataItem.addEmojiStyle(builder, emojiStyle);
+    return MetadataItem.endMetadataItem(builder);
+  }
+
+  public static void startMetadataItem(FlatBufferBuilder builder) { builder.startTable(7); }
+  public static void addId(FlatBufferBuilder builder, int id) { builder.addInt(0, id, 0); }
+  public static void addEmojiStyle(FlatBufferBuilder builder, boolean emojiStyle) { builder.addBoolean(1, emojiStyle, false); }
+  public static void addSdkAdded(FlatBufferBuilder builder, short sdkAdded) { builder.addShort(2, sdkAdded, 0); }
+  public static void addCompatAdded(FlatBufferBuilder builder, short compatAdded) { builder.addShort(3, compatAdded, 0); }
+  public static void addWidth(FlatBufferBuilder builder, short width) { builder.addShort(4, width, 0); }
+  public static void addHeight(FlatBufferBuilder builder, short height) { builder.addShort(5, height, 0); }
+  public static void addCodepoints(FlatBufferBuilder builder, int codepointsOffset) { builder.addOffset(6, codepointsOffset, 0); }
+  public static int createCodepointsVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addInt(data[i]); return builder.endVector(); }
+  public static void startCodepointsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
+  public static int endMetadataItem(FlatBufferBuilder builder) {
+    int o = builder.endTable();
+    return o;
+  }
+
+  public static final class Vector extends BaseVector {
+    public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+    public MetadataItem get(int j) { return get(new MetadataItem(), j); }
+    public MetadataItem get(MetadataItem obj, int j) {  return obj.__assign(__indirect(__element(j), bb), bb); }
+  }
+}
+
diff --git a/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataList.java b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataList.java
new file mode 100644
index 0000000..6330098
--- /dev/null
+++ b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataList.java
@@ -0,0 +1,76 @@
+// CHECKSTYLE:OFF Generated code
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// automatically generated by the FlatBuffers compiler, do not modify
+
+package androidx.text.emoji.flatbuffer;
+
+import java.nio.*;
+import java.lang.*;
+import java.util.*;
+import com.google.flatbuffers.*;
+
+@SuppressWarnings("unused")
+public final class MetadataList extends Table {
+  public static void ValidateVersion() { Constants.FLATBUFFERS_1_12_0(); }
+  public static MetadataList getRootAsMetadataList(ByteBuffer _bb) { return getRootAsMetadataList(_bb, new MetadataList()); }
+  public static MetadataList getRootAsMetadataList(ByteBuffer _bb, MetadataList obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+  public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+  public MetadataList __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+  public int version() { int o = __offset(4); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+  public androidx.text.emoji.flatbuffer.MetadataItem list(int j) { return list(new androidx.text.emoji.flatbuffer.MetadataItem(), j); }
+  public androidx.text.emoji.flatbuffer.MetadataItem list(androidx.text.emoji.flatbuffer.MetadataItem obj, int j) { int o = __offset(6); return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 4), bb) : null; }
+  public int listLength() { int o = __offset(6); return o != 0 ? __vector_len(o) : 0; }
+  public androidx.text.emoji.flatbuffer.MetadataItem.Vector listVector() { return listVector(new androidx.text.emoji.flatbuffer.MetadataItem.Vector()); }
+  public androidx.text.emoji.flatbuffer.MetadataItem.Vector listVector(androidx.text.emoji.flatbuffer.MetadataItem.Vector obj) { int o = __offset(6); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
+  public String sourceSha() { int o = __offset(8); return o != 0 ? __string(o + bb_pos) : null; }
+  public ByteBuffer sourceShaAsByteBuffer() { return __vector_as_bytebuffer(8, 1); }
+  public ByteBuffer sourceShaInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 8, 1); }
+
+  public static int createMetadataList(FlatBufferBuilder builder,
+      int version,
+      int listOffset,
+      int sourceShaOffset) {
+    builder.startTable(3);
+    MetadataList.addSourceSha(builder, sourceShaOffset);
+    MetadataList.addList(builder, listOffset);
+    MetadataList.addVersion(builder, version);
+    return MetadataList.endMetadataList(builder);
+  }
+
+  public static void startMetadataList(FlatBufferBuilder builder) { builder.startTable(3); }
+  public static void addVersion(FlatBufferBuilder builder, int version) { builder.addInt(0, version, 0); }
+  public static void addList(FlatBufferBuilder builder, int listOffset) { builder.addOffset(1, listOffset, 0); }
+  public static int createListVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
+  public static void startListVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
+  public static void addSourceSha(FlatBufferBuilder builder, int sourceShaOffset) { builder.addOffset(2, sourceShaOffset, 0); }
+  public static int endMetadataList(FlatBufferBuilder builder) {
+    int o = builder.endTable();
+    return o;
+  }
+  public static void finishMetadataListBuffer(FlatBufferBuilder builder, int offset) { builder.finish(offset); }
+  public static void finishSizePrefixedMetadataListBuffer(FlatBufferBuilder builder, int offset) { builder.finishSizePrefixed(offset); }
+
+  public static final class Vector extends BaseVector {
+    public Vector __assign(int _vector, int _element_size, ByteBuffer _bb) { __reset(_vector, _element_size, _bb); return this; }
+
+    public MetadataList get(int j) { return get(new MetadataList(), j); }
+    public MetadataList get(MetadataList obj, int j) {  return obj.__assign(__indirect(__element(j), bb), bb); }
+  }
+}
+
diff --git a/emoji-compat/README.android b/emoji-compat/README.android
index 07cabe1..908ee0c 100644
--- a/emoji-compat/README.android
+++ b/emoji-compat/README.android
@@ -5,16 +5,17 @@
 License File: LICENSE_UNICODE
 
 Description:
-Noto Color Emoji Compat font is generated using Noto Color Emoji font using createfont.py. The
-compat font is under font/ directory.
+Noto Color Emoji Compat font is generated using Noto Color Emoji font using 
+<a href="https://github.com/googlefonts/emojicompat">github.com/googlefonts/emojicompat</a>
 
-While generating the compat font, Noto Color Emoji font and data files from Unicode are used.
+Canonical source of truth for fonts is
 
-data/emoji-metadata.txt is updated using the Noto Color Emoji font and data files from
-Unicode.
+* <a href="http://github.com/googlefonts/noto-emoji">github.com/googlefonts/noto-emoji</a>
 
-supported-emojis/emojis.txt file contains list of emojis that are supported by the font. Main
-purpose is testing. It is generated using the Unicode files.
+However, we do not pull down that entire project as it would increase repo size.
 
-Noto Color Emoji font is under the <android_source>/external/noto-fonts/emoji/ directory. Unicode
-files are under the <android_source>/external/unicode/ directory.
\ No newline at end of file
+To pull in a new font please update
+
+* font/NotoColorEmoji.txt
+* data/emoji-metadata.txt
+* supported-emojis.emojis.txt
diff --git a/emoji-compat/build.gradle b/emoji-compat/build.gradle
deleted file mode 100644
index 34acb79..0000000
--- a/emoji-compat/build.gradle
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-apply plugin: 'java'
-apply plugin: 'org.anarres.jarjar'
-apply plugin: 'maven'
-
-ext {
-    flatbuffersDir = '../../flatbuffers'
-}
-
-buildscript {
-    boolean unbundleBuild = (new File("unbundled-build")).exists()
-    repositories {
-        maven { url '../../../prebuilts/androidx/external' }
-        if (unbundleBuild) {
-            jcenter()
-        }
-    }
-
-    dependencies {
-        classpath 'org.anarres.jarjar:jarjar-gradle:1.0.1'
-    }
-}
-
-sourceSets {
-    main {
-        java.srcDirs = ['src/java']
-    }
-}
-
-compileJava {
-    sourceCompatibility = JavaVersion.VERSION_1_7
-    targetCompatibility = JavaVersion.VERSION_1_7
-}
-
-dependencies {
-    compile 'com.google.flatbuffers:flatbuffers-java:1.8.0'
-}
-
-jarjar.repackage('rename') {
-    destinationName "noto-emoji-compat-java.jar"
-    from 'com.google.flatbuffers:flatbuffers-java:1.8.0'
-    from files(sourceSets.main.output.classesDirs)
-    dependsOn sourceSets.main.output
-    classRename 'com.google.flatbuffers.**', 'androidx.text.emoji.flatbuffer.@1'
-}
-
-configurations {
-    parser
-}
-
-artifacts {
-    parser(rename.destinationPath) {
-        name 'noto-emoji-compat'
-        type 'jar'
-        builtBy rename
-    }
-}
-
-// The "javadoc" task is unused so we don't want it to appear in the output of `./gradlew tasks`
-// So, we set the group to null
-tasks["javadoc"].group = null
diff --git a/emoji-compat/createfont.py b/emoji-compat/createfont.py
deleted file mode 100755
index da1910c..0000000
--- a/emoji-compat/createfont.py
+++ /dev/null
@@ -1,676 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Creates the EmojiCompat font with the metadata. Metadata is embedded in FlatBuffers binary format
-under a meta tag with name 'Emji'.
-
-In order to create the final font the followings are used as inputs:
-
-- NotoColorEmoji.ttf: Emoji font in the Android framework. Currently at
-external/noto-fonts/emoji/NotoColorEmoji.ttf
-
-- Unicode files: Unicode files that are in the framework, and lists information about all the
-emojis. These files are emoji-data.txt, emoji-sequences.txt, emoji-zwj-sequences.txt,
-and emoji-variation-sequences.txt. Currently at external/unicode/.
-
-- additions/emoji-zwj-sequences.txt: Includes emojis that are not defined in Unicode files, but are
-in the Android font. Resides in framework and currently under external/unicode/.
-
-- data/emoji_metadata.txt: The file that includes the id, codepoints, the first
-Android OS version that the emoji was added (sdkAdded), and finally the first EmojiCompat font
-version that the emoji was added (compatAdded). Updated when the script is executed.
-
-- data/emoji_metadata.fbs: The flatbuffer schema file. See http://google.github.io/flatbuffers/.
-
-After execution the following files are generated if they don't exist otherwise, they are updated:
-- font/NotoColorEmojiCompat.ttf
-- supported-emojis/emojis.txt
-- data/emoji_metadata.txt
-- src/java/android/support/text/emoji/flatbuffer/*
-"""
-
-from __future__ import print_function
-
-import contextlib
-import csv
-import hashlib
-import itertools
-import json
-import os
-import shutil
-import sys
-import tempfile
-from fontTools import ttLib
-
-########### UPDATE OR CHECK WHEN A NEW FONT IS BEING GENERATED ###########
-# Last Android SDK Version
-SDK_VERSION = 28
-# metadata version that will be embedded into font. If there are updates to the font that would
-# cause data/emoji_metadata.txt to change, this integer number should be incremented. This number
-# defines in which EmojiCompat metadata version the emoji is added to the font.
-METADATA_VERSION = 3
-
-####### main directories where output files are created #######
-SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
-FONT_DIR = os.path.join(SCRIPT_DIR, 'font')
-DATA_DIR = os.path.join(SCRIPT_DIR, 'data')
-SUPPORTED_EMOJIS_DIR = os.path.join(SCRIPT_DIR, 'supported-emojis')
-JAVA_SRC_DIR = os.path.join(SCRIPT_DIR, 'src', 'java')
-####### output files #######
-# font file
-FONT_PATH = os.path.join(FONT_DIR, 'NotoColorEmojiCompat.ttf')
-# emoji metadata json output file
-OUTPUT_META_FILE = os.path.join(DATA_DIR, 'emoji_metadata.txt')
-# emojis test file
-TEST_DATA_PATH = os.path.join(SUPPORTED_EMOJIS_DIR, 'emojis.txt')
-####### input files #######
-# Unicode file names to read emoji data
-EMOJI_DATA_FILE = 'emoji-data.txt'
-EMOJI_SEQ_FILE = 'emoji-sequences.txt'
-EMOJI_ZWJ_FILE = 'emoji-zwj-sequences.txt'
-EMOJI_VARIATION_SEQ_FILE = 'emoji-variation-sequences.txt'
-# Android OS emoji file for emojis that are not in Unicode files
-ANDROID_EMOJI_ZWJ_SEQ_FILE = os.path.join('additions', 'emoji-zwj-sequences.txt')
-ANDROID_EMOJIS_SEQ_FILE = os.path.join('additions', 'emoji-sequences.txt')
-# Android OS emoji style override file. Codepoints that are rendered with emoji style by default
-# even though not defined so in <code>emoji-data.txt</code>.
-EMOJI_STYLE_OVERRIDE_FILE = os.path.join('additions', 'emoji-data.txt')
-# emoji metadata file
-INPUT_META_FILE = OUTPUT_META_FILE
-# flatbuffer schema
-FLATBUFFER_SCHEMA = os.path.join(DATA_DIR, 'emoji_metadata.fbs')
-# file path for java header, it will be prepended to flatbuffer java files
-FLATBUFFER_HEADER = os.path.join(DATA_DIR, "flatbuffer_header.txt")
-# temporary emoji metadata json output file
-OUTPUT_JSON_FILE_NAME = 'emoji_metadata.json'
-# temporary binary file generated by flatbuffer
-FLATBUFFER_BIN = 'emoji_metadata.bin'
-# directory representation for flatbuffer java package
-FLATBUFFER_PACKAGE_PATH = os.path.join('androidx', 'text', 'emoji', 'flatbuffer', '')
-# temporary directory that contains flatbuffer java files
-FLATBUFFER_JAVA_PATH = os.path.join(FLATBUFFER_PACKAGE_PATH)
-FLATBUFFER_METADATA_LIST_JAVA = "MetadataList.java"
-FLATBUFFER_METADATA_ITEM_JAVA = "MetadataItem.java"
-# directory under source where flatbuffer java files will be copied into
-FLATBUFFER_JAVA_TARGET = os.path.join(JAVA_SRC_DIR, FLATBUFFER_PACKAGE_PATH)
-# meta tag name used in the font to embed the emoji metadata. This value is also used in
-# MetadataListReader.java in order to locate the metadata location.
-EMOJI_META_TAG_NAME = 'Emji'
-
-EMOJI_STR = 'EMOJI'
-EMOJI_PRESENTATION_STR = 'EMOJI_PRESENTATION'
-ACCEPTED_EMOJI_PROPERTIES = [EMOJI_PRESENTATION_STR, EMOJI_STR]
-STD_VARIANTS_EMOJI_STYLE = 'EMOJI STYLE'
-
-DEFAULT_EMOJI_ID = 0xF0001
-EMOJI_STYLE_VS = 0xFE0F
-
-def to_hex_str(value):
-    """Converts given int value to hex without the 0x prefix"""
-    return format(value, 'X')
-
-def hex_str_to_int(string):
-    """Convert a hex string into int"""
-    return int(string, 16)
-
-def codepoint_to_string(codepoints):
-    """Converts a list of codepoints into a string separated with space."""
-    return ' '.join([to_hex_str(x) for x in codepoints])
-
-def prepend_header_to_file(file_path):
-    """Prepends the header to the file. Used to update flatbuffer java files with header, comments
-    and annotations."""
-    with open(file_path, "r+") as original_file:
-        with open(FLATBUFFER_HEADER, "r") as copyright_file:
-            original_content = original_file.read()
-            start_index = original_content.index("public final class")
-            original_file.seek(0)
-            original_file.write(copyright_file.read() + "\n" + original_content[start_index:])
-
-
-def update_flatbuffer_java_files(flatbuffer_java_dir):
-    """Prepends headers to flatbuffer java files and copies to the final destination"""
-    tmp_metadata_list = flatbuffer_java_dir + FLATBUFFER_METADATA_LIST_JAVA
-    tmp_metadata_item = flatbuffer_java_dir + FLATBUFFER_METADATA_ITEM_JAVA
-    prepend_header_to_file(tmp_metadata_list)
-    prepend_header_to_file(tmp_metadata_item)
-
-    if not os.path.exists(FLATBUFFER_JAVA_TARGET):
-        os.makedirs(FLATBUFFER_JAVA_TARGET)
-
-    shutil.copy(tmp_metadata_list, FLATBUFFER_JAVA_TARGET + FLATBUFFER_METADATA_LIST_JAVA)
-    shutil.copy(tmp_metadata_item, FLATBUFFER_JAVA_TARGET + FLATBUFFER_METADATA_ITEM_JAVA)
-
-def create_test_data(unicode_path):
-    """Read all the emojis in the unicode files and update the test file"""
-    lines = read_emoji_lines(os.path.join(unicode_path, EMOJI_ZWJ_FILE))
-    lines += read_emoji_lines(os.path.join(unicode_path, EMOJI_SEQ_FILE))
-
-    lines += read_emoji_lines(os.path.join(unicode_path, ANDROID_EMOJI_ZWJ_SEQ_FILE), optional=True)
-    lines += read_emoji_lines(os.path.join(unicode_path, ANDROID_EMOJIS_SEQ_FILE), optional=True)
-
-    # standardized variants contains a huge list of sequences, only read the ones that are emojis
-    # and also the ones with FE0F (emoji style)
-    standardized_variants_lines = read_emoji_lines(
-        os.path.join(unicode_path, EMOJI_VARIATION_SEQ_FILE))
-    for line in standardized_variants_lines:
-        if STD_VARIANTS_EMOJI_STYLE in line:
-            lines.append(line)
-
-    emojis_set = set()
-    for line in lines:
-        codepoints = [hex_str_to_int(x) for x in line.split(';')[0].strip().split(' ')]
-        emojis_set.add(codepoint_to_string(codepoints).upper())
-
-    emoji_data_lines = read_emoji_lines(os.path.join(unicode_path, EMOJI_DATA_FILE))
-    for line in emoji_data_lines:
-        codepoints_range, emoji_property = codepoints_and_emoji_prop(line)
-        if not emoji_property in ACCEPTED_EMOJI_PROPERTIES:
-            continue
-        is_emoji_style = emoji_property == EMOJI_PRESENTATION_STR
-        if is_emoji_style:
-            codepoints = [to_hex_str(x) for x in
-                          codepoints_for_emojirange(codepoints_range)]
-            emojis_set.update(codepoints)
-
-    emoji_style_exceptions = get_emoji_style_exceptions(unicode_path)
-    #  finally add the android default emoji exceptions
-    emojis_set.update([to_hex_str(x) for x in emoji_style_exceptions])
-
-    emojis_list = list(emojis_set)
-    emojis_list.sort()
-    with open(TEST_DATA_PATH, "w") as test_file:
-        for line in emojis_list:
-            test_file.write("%s\n" % line)
-
-class _EmojiData(object):
-    """Holds the information about a single emoji."""
-
-    def __init__(self, codepoints, is_emoji_style):
-        self.codepoints = codepoints
-        self.emoji_style = is_emoji_style
-        self.emoji_id = 0
-        self.width = 0
-        self.height = 0
-        self.sdk_added = SDK_VERSION
-        self.compat_added = METADATA_VERSION
-
-    def update_metrics(self, metrics):
-        """Updates width/height instance variables with the values given in metrics dictionary.
-        :param metrics: a dictionary object that has width and height values.
-        """
-        self.width = metrics.width
-        self.height = metrics.height
-
-    def __repr__(self):
-        return '<EmojiData {0} - {1}>'.format(self.emoji_style,
-                                              codepoint_to_string(self.codepoints))
-
-    def create_json_element(self):
-        """Creates the json representation of EmojiData."""
-        json_element = {}
-        json_element['id'] = self.emoji_id
-        json_element['emojiStyle'] = self.emoji_style
-        json_element['sdkAdded'] = self.sdk_added
-        json_element['compatAdded'] = self.compat_added
-        json_element['width'] = self.width
-        json_element['height'] = self.height
-        json_element['codepoints'] = self.codepoints
-        return json_element
-
-    def create_txt_row(self):
-        """Creates array of values for CSV of EmojiData."""
-        row = [to_hex_str(self.emoji_id), self.sdk_added, self.compat_added]
-        row += [to_hex_str(x) for x in self.codepoints]
-        return row
-
-    def update(self, emoji_id, sdk_added, compat_added):
-        """Updates current EmojiData with the values in a json element"""
-        self.emoji_id = emoji_id
-        self.sdk_added = sdk_added
-        self.compat_added = compat_added
-
-
-def read_emoji_lines(file_path, optional=False):
-    """Read all lines in an unicode emoji file into a list of uppercase strings. Ignore the empty
-    lines and comments
-    :param file_path: unicode emoji file path
-    :param optional: if True no exception is raised when the file cannot be read
-    :return: list of uppercase strings
-    """
-    result = []
-    try:
-        with open(file_path) as file_stream:
-            for line in file_stream:
-                line = line.strip()
-                if line and not line.startswith('#'):
-                    result.append(line.upper())
-    except IOError:
-        if optional:
-            pass
-        else:
-            raise
-
-    return result
-
-def get_emoji_style_exceptions(unicode_path):
-    """Read EMOJI_STYLE_OVERRIDE_FILE and return the codepoints as integers"""
-    lines = read_emoji_lines(os.path.join(unicode_path, EMOJI_STYLE_OVERRIDE_FILE))
-    exceptions = []
-    for line in lines:
-        codepoint = hex_str_to_int(codepoints_and_emoji_prop(line)[0])
-        exceptions.append(codepoint)
-    return exceptions
-
-def codepoints_for_emojirange(codepoints_range):
-    """ Return codepoints given in emoji files. Expand the codepoints that are given as a range
-    such as XYZ ... UVT
-    """
-    codepoints = []
-    if '..' in codepoints_range:
-        range_start, range_end = codepoints_range.split('..')
-        codepoints_range = range(hex_str_to_int(range_start),
-                                 hex_str_to_int(range_end) + 1)
-        codepoints.extend(codepoints_range)
-    else:
-        codepoints.append(hex_str_to_int(codepoints_range))
-    return codepoints
-
-def codepoints_and_emoji_prop(line):
-    """For a given emoji file line, return codepoints and emoji property in the line.
-    1F93C..1F93E ; [Emoji|Emoji_Presentation|Emoji_Modifier_Base|Emoji_Component
-    |Extended_Pictographic] # [...]"""
-    line = line.strip()
-    if '#' in line:
-        line = line[:line.index('#')]
-    else:
-        raise ValueError("Line is expected to have # in it")
-    line = line.split(';')
-    codepoints_range = line[0].strip()
-    emoji_property = line[1].strip()
-
-    return codepoints_range, emoji_property
-
-def read_emoji_intervals(emoji_data_map, file_path, emoji_style_exceptions):
-    """Read unicode lines of unicode emoji file in which each line describes a set of codepoint
-    intervals. Expands the interval on a line and inserts related EmojiDatas into emoji_data_map.
-    A line format that is expected is as follows:
-    1F93C..1F93E ; [Emoji|Emoji_Presentation|Emoji_Modifier_Base|Emoji_Component
-    |Extended_Pictographic] # [...]"""
-    lines = read_emoji_lines(file_path)
-
-    for line in lines:
-        codepoints_range, emoji_property = codepoints_and_emoji_prop(line)
-        if not emoji_property in ACCEPTED_EMOJI_PROPERTIES:
-            continue
-        is_emoji_style = emoji_property == EMOJI_PRESENTATION_STR
-        codepoints = codepoints_for_emojirange(codepoints_range)
-
-        for codepoint in codepoints:
-            key = codepoint_to_string([codepoint])
-            codepoint_is_emoji_style = is_emoji_style or codepoint in emoji_style_exceptions
-            if key in emoji_data_map:
-                # since there are multiple definitions of emojis, only update when emoji style is
-                # True
-                if codepoint_is_emoji_style:
-                    emoji_data_map[key].emoji_style = True
-            else:
-                emoji_data = _EmojiData([codepoint], codepoint_is_emoji_style)
-                emoji_data_map[key] = emoji_data
-
-
-def read_emoji_sequences(emoji_data_map, file_path, optional=False):
-    """Reads the content of the file which contains emoji sequences. Creates EmojiData for each
-    line and puts into emoji_data_map."""
-    lines = read_emoji_lines(file_path, optional)
-    # 1F1E6 1F1E8 ; Name ; [...]
-    for line in lines:
-        codepoints = [hex_str_to_int(x) for x in line.split(';')[0].strip().split(' ')]
-        codepoints = [x for x in codepoints if x != EMOJI_STYLE_VS]
-        key = codepoint_to_string(codepoints)
-        if not key in emoji_data_map:
-            emoji_data = _EmojiData(codepoints, False)
-            emoji_data_map[key] = emoji_data
-
-
-def load_emoji_data_map(unicode_path):
-    """Reads the emoji data files, constructs a map of space separated codepoints to EmojiData.
-    :return: map of space separated codepoints to EmojiData
-    """
-    emoji_data_map = {}
-    emoji_style_exceptions = get_emoji_style_exceptions(unicode_path)
-    read_emoji_intervals(emoji_data_map, os.path.join(unicode_path, EMOJI_DATA_FILE),
-                         emoji_style_exceptions)
-    read_emoji_sequences(emoji_data_map, os.path.join(unicode_path, EMOJI_ZWJ_FILE))
-    read_emoji_sequences(emoji_data_map, os.path.join(unicode_path, EMOJI_SEQ_FILE))
-
-    # Add the optional ANDROID_EMOJI_ZWJ_SEQ_FILE if it exists.
-    read_emoji_sequences(emoji_data_map, os.path.join(unicode_path, ANDROID_EMOJI_ZWJ_SEQ_FILE),
-                         optional=True)
-    # Add the optional ANDROID_EMOJIS_SEQ_FILE if it exists.
-    read_emoji_sequences(emoji_data_map, os.path.join(unicode_path, ANDROID_EMOJIS_SEQ_FILE),
-                         optional=True)
-
-    return emoji_data_map
-
-
-def load_previous_metadata(emoji_data_map):
-    """Updates emoji data elements in emoji_data_map using the id, sdk_added and compat_added fields
-       in emoji_metadata.txt. Returns the smallest available emoji id to use. i.e. if the largest
-       emoji id emoji_metadata.txt is 1, function would return 2. If emoji_metadata.txt does not
-       exist, or contains no emojis defined returns DEFAULT_EMOJI_ID"""
-    current_emoji_id = DEFAULT_EMOJI_ID
-    if os.path.isfile(INPUT_META_FILE):
-        with open(INPUT_META_FILE) as csvfile:
-            reader = csv.reader(csvfile, delimiter=' ')
-            for row in reader:
-                if row[0].startswith('#'):
-                    continue
-                emoji_id = hex_str_to_int(row[0])
-                sdk_added = int(row[1])
-                compat_added = int(row[2])
-                key = codepoint_to_string(hex_str_to_int(x) for x in row[3:])
-                if key in emoji_data_map:
-                    emoji_data = emoji_data_map[key]
-                    emoji_data.update(emoji_id, sdk_added, compat_added)
-                    if emoji_data.emoji_id >= current_emoji_id:
-                        current_emoji_id = emoji_data.emoji_id + 1
-
-    return current_emoji_id
-
-
-def update_ttlib_orig_sort():
-    """Updates the ttLib tag sort with a closure that makes the meta table first."""
-    orig_sort = ttLib.sortedTagList
-
-    def meta_first_table_sort(tag_list, table_order=None):
-        """Sorts the tables with the original ttLib sort, then makes the meta table first."""
-        tag_list = orig_sort(tag_list, table_order)
-        tag_list.remove('meta')
-        tag_list.insert(0, 'meta')
-        return tag_list
-
-    ttLib.sortedTagList = meta_first_table_sort
-
-
-def inject_meta_into_font(ttf, flatbuffer_bin_filename):
-    """inject metadata binary into font"""
-    if not 'meta' in ttf:
-        ttf['meta'] = ttLib.getTableClass('meta')()
-    meta = ttf['meta']
-    with open(flatbuffer_bin_filename) as flatbuffer_bin_file:
-        meta.data[EMOJI_META_TAG_NAME] = flatbuffer_bin_file.read()
-
-    # sort meta tables for faster access
-    update_ttlib_orig_sort()
-
-
-def validate_input_files(font_path, unicode_path):
-    """Validate the existence of font file and the unicode files"""
-    if not os.path.isfile(font_path):
-        raise ValueError("Font file does not exist: " + font_path)
-
-    if not os.path.isdir(unicode_path):
-        raise ValueError(
-            "Unicode directory does not exist or is not a directory " + unicode_path)
-
-    emoji_filenames = [os.path.join(unicode_path, EMOJI_DATA_FILE),
-                       os.path.join(unicode_path, EMOJI_ZWJ_FILE),
-                       os.path.join(unicode_path, EMOJI_SEQ_FILE)]
-    for emoji_filename in emoji_filenames:
-        if not os.path.isfile(emoji_filename):
-            raise ValueError("Unicode emoji data file does not exist: " + emoji_filename)
-
-
-def add_file_to_sha(sha_algo, file_path):
-    with open(file_path, 'rb') as input_file:
-        for data in iter(lambda: input_file.read(8192), ''):
-            sha_algo.update(data)
-
-def create_sha_from_source_files(font_paths):
-    """Creates a SHA from the given font files"""
-    sha_algo = hashlib.sha256()
-    for file_path in font_paths:
-        add_file_to_sha(sha_algo, file_path)
-    return sha_algo.hexdigest()
-
-
-class EmojiFontCreator(object):
-    """Creates the EmojiCompat font"""
-
-    def __init__(self, font_path, unicode_path):
-        validate_input_files(font_path, unicode_path)
-
-        self.font_path = font_path
-        self.unicode_path = unicode_path
-        self.emoji_data_map = {}
-        self.remapped_codepoints = {}
-        self.glyph_to_image_metrics_map = {}
-        # set default emoji id to start of Supplemental Private Use Area-A
-        self.emoji_id = DEFAULT_EMOJI_ID
-
-    def update_emoji_data(self, codepoints, glyph_name):
-        """Updates the existing EmojiData identified with codepoints. The fields that are set are:
-        - emoji_id (if it does not exist)
-        - image width/height"""
-        key = codepoint_to_string(codepoints)
-        if key in self.emoji_data_map:
-            # add emoji to final data
-            emoji_data = self.emoji_data_map[key]
-            emoji_data.update_metrics(self.glyph_to_image_metrics_map[glyph_name])
-            if emoji_data.emoji_id == 0:
-                emoji_data.emoji_id = self.emoji_id
-                self.emoji_id = self.emoji_id + 1
-            self.remapped_codepoints[emoji_data.emoji_id] = glyph_name
-
-    def read_cbdt(self, ttf):
-        """Read image size data from CBDT."""
-        cbdt = ttf['CBDT']
-        for strike_data in cbdt.strikeData:
-            for key, data in strike_data.iteritems():
-                data.decompile()
-                self.glyph_to_image_metrics_map[key] = data.metrics
-
-    def read_cmap12(self, ttf, glyph_to_codepoint_map):
-        """Reads single code point emojis that are in cmap12, updates glyph_to_codepoint_map and
-        finally clears all elements in CMAP 12"""
-        cmap = ttf['cmap']
-        for table in cmap.tables:
-            if table.format == 12 and table.platformID == 3 and table.platEncID == 10:
-                for codepoint, glyph_name in table.cmap.iteritems():
-                    glyph_to_codepoint_map[glyph_name] = codepoint
-                    self.update_emoji_data([codepoint], glyph_name)
-                return table
-        raise ValueError("Font doesn't contain cmap with format:12, platformID:3 and platEncID:10")
-
-    def read_gsub(self, ttf, glyph_to_codepoint_map):
-        """Reads the emoji sequences defined in GSUB and clear all elements under GSUB"""
-        gsub = ttf['GSUB']
-        ligature_subtables = []
-        context_subtables = []
-        # this code is font dependent, implementing all gsub rules is out of scope of EmojiCompat
-        # and would be expensive with little value
-        for lookup in gsub.table.LookupList.Lookup:
-            for subtable in lookup.SubTable:
-                if subtable.LookupType == 5:
-                    context_subtables.append(subtable)
-                elif subtable.LookupType == 4:
-                    ligature_subtables.append(subtable)
-
-        for subtable in context_subtables:
-            self.add_gsub_context_subtable(subtable, gsub.table.LookupList, glyph_to_codepoint_map)
-
-        for subtable in ligature_subtables:
-            self.add_gsub_ligature_subtable(subtable, glyph_to_codepoint_map)
-
-    def add_gsub_context_subtable(self, subtable, lookup_list, glyph_to_codepoint_map):
-        """Add substitutions defined as OpenType Context Substitution"""
-        for sub_class_set in subtable.SubClassSet:
-            if sub_class_set:
-                for sub_class_rule in sub_class_set.SubClassRule:
-                    # prepare holder for substitution list. each rule will have a list that is added
-                    # to the subs_list.
-                    subs_list = len(sub_class_rule.SubstLookupRecord) * [None]
-                    for record in sub_class_rule.SubstLookupRecord:
-                        subs_list[record.SequenceIndex] = self.get_substitutions(lookup_list,
-                                                                            record.LookupListIndex)
-                    # create combinations or all lists. the combinations will be filtered by
-                    # emoji_data_map. the first element that contain as a valid glyph will be used
-                    # as the final glyph
-                    combinations = list(itertools.product(*subs_list))
-                    for seq in combinations:
-                        glyph_names = [x["input"] for x in seq]
-                        codepoints = [glyph_to_codepoint_map[x] for x in glyph_names]
-                        outputs = [x["output"] for x in seq if x["output"]]
-                        nonempty_outputs = filter(lambda x: x.strip() , outputs)
-                        if len(nonempty_outputs) == 0:
-                            print("Warning: no output glyph is set for " + str(glyph_names))
-                            continue
-                        elif len(nonempty_outputs) > 1:
-                            print(
-                                "Warning: multiple glyph is set for "
-                                    + str(glyph_names) + ", will use the first one")
-
-                        glyph = nonempty_outputs[0]
-                        self.update_emoji_data(codepoints, glyph)
-
-    def get_substitutions(self, lookup_list, index):
-        result = []
-        for x in lookup_list.Lookup[index].SubTable:
-            for input, output in x.mapping.iteritems():
-                result.append({"input": input, "output": output})
-        return result
-
-    def add_gsub_ligature_subtable(self, subtable, glyph_to_codepoint_map):
-        for name, ligatures in subtable.ligatures.iteritems():
-            for ligature in ligatures:
-                glyph_names = [name] + ligature.Component
-                codepoints = [glyph_to_codepoint_map[x] for x in glyph_names]
-                self.update_emoji_data(codepoints, ligature.LigGlyph)
-
-    def write_metadata_json(self, output_json_file_path):
-        """Writes the emojis into a json file"""
-        output_json = {}
-        output_json['version'] = METADATA_VERSION
-        output_json['sourceSha'] = create_sha_from_source_files(
-            [self.font_path, OUTPUT_META_FILE, FLATBUFFER_SCHEMA])
-        output_json['list'] = []
-
-        emoji_data_list = sorted(self.emoji_data_map.values(), key=lambda x: x.emoji_id)
-
-        total_emoji_count = 0
-        for emoji_data in emoji_data_list:
-            element = emoji_data.create_json_element()
-            output_json['list'].append(element)
-            total_emoji_count = total_emoji_count + 1
-
-        # write the new json file to be processed by FlatBuffers
-        with open(output_json_file_path, 'w') as json_file:
-            print(json.dumps(output_json, indent=4, sort_keys=True, separators=(',', ':')),
-                  file=json_file)
-
-        return total_emoji_count
-
-    def write_metadata_csv(self):
-        """Writes emoji metadata into space separated file"""
-        with open(OUTPUT_META_FILE, 'w') as csvfile:
-            csvwriter = csv.writer(csvfile, delimiter=' ')
-            emoji_data_list = sorted(self.emoji_data_map.values(), key=lambda x: x.emoji_id)
-            csvwriter.writerow(['#id', 'sdkAdded', 'compatAdded', 'codepoints'])
-            for emoji_data in emoji_data_list:
-                csvwriter.writerow(emoji_data.create_txt_row())
-
-    def create_font(self):
-        """Creates the EmojiCompat font.
-        :param font_path: path to Android NotoColorEmoji font
-        :param unicode_path: path to directory that contains unicode files
-        """
-
-        tmp_dir = tempfile.mkdtemp()
-
-        # create emoji codepoints to EmojiData map
-        self.emoji_data_map = load_emoji_data_map(self.unicode_path)
-
-        # read previous metadata file to update id, sdkAdded and compatAdded. emoji id that is
-        # returned is either default or 1 greater than the largest id in previous data
-        self.emoji_id = load_previous_metadata(self.emoji_data_map)
-
-        # recalcTimestamp parameter will keep the modified field same as the original font. Changing
-        # the modified field in the font causes the font ttf file to change, which makes it harder
-        # to understand if something really changed in the font.
-        with contextlib.closing(ttLib.TTFont(self.font_path, recalcTimestamp=False)) as ttf:
-            # read image size data
-            self.read_cbdt(ttf)
-
-            # glyph name to codepoint map
-            glyph_to_codepoint_map = {}
-
-            # read single codepoint emojis under cmap12 and clear the table contents
-            cmap12_table = self.read_cmap12(ttf, glyph_to_codepoint_map)
-
-            # read emoji sequences gsub and clear the table contents
-            self.read_gsub(ttf, glyph_to_codepoint_map)
-
-            # add all new codepoint to glyph mappings
-            cmap12_table.cmap.update(self.remapped_codepoints)
-
-            # final metadata csv will be used to generate the sha, therefore write it before
-            # metadata json is written.
-            self.write_metadata_csv()
-
-            output_json_file = os.path.join(tmp_dir, OUTPUT_JSON_FILE_NAME)
-            flatbuffer_bin_file = os.path.join(tmp_dir, FLATBUFFER_BIN)
-            flatbuffer_java_dir = os.path.join(tmp_dir, FLATBUFFER_JAVA_PATH)
-
-            total_emoji_count = self.write_metadata_json(output_json_file)
-
-            # create the flatbuffers binary and java classes
-            sys_command = 'flatc -o {0} -b -j {1} {2}'
-            os.system(sys_command.format(tmp_dir, FLATBUFFER_SCHEMA, output_json_file))
-
-            # inject metadata binary into font
-            inject_meta_into_font(ttf, flatbuffer_bin_file)
-
-            # update CBDT and CBLC versions since older android versions cannot read > 2.0
-            ttf['CBDT'].version = 2.0
-            ttf['CBLC'].version = 2.0
-
-            # save the new font
-            ttf.save(FONT_PATH)
-
-            update_flatbuffer_java_files(flatbuffer_java_dir)
-
-            create_test_data(self.unicode_path)
-
-            # clear the tmp output directory
-            shutil.rmtree(tmp_dir, ignore_errors=True)
-
-            print(
-                "{0} emojis are written to\n{1}".format(total_emoji_count, FONT_DIR))
-
-
-def print_usage():
-    """Prints how to use the script."""
-    print("Please specify a path to font and unicode files.\n"
-          "usage: createfont.py noto-color-emoji-path unicode-dir-path")
-
-
-if __name__ == '__main__':
-    if len(sys.argv) < 3:
-        print_usage()
-        sys.exit(1)
-    EmojiFontCreator(sys.argv[1], sys.argv[2]).create_font()
diff --git a/emoji-compat/data/emoji_metadata.txt b/emoji-compat/data/emoji_metadata.txt
index 048957f..6a9110e 100644
--- a/emoji-compat/data/emoji_metadata.txt
+++ b/emoji-compat/data/emoji_metadata.txt
@@ -2846,3 +2846,873 @@
 F0B51 28 3 1F9B6 1F3FD

 F0B52 28 3 1F9B6 1F3FE

 F0B53 28 3 1F9B6 1F3FF

+F0B54 29 4 1F6D5

+F0B55 29 4 1F6FA

+F0B56 29 4 1F7E0

+F0B57 29 4 1F7E1

+F0B58 29 4 1F7E2

+F0B59 29 4 1F7E3

+F0B5A 29 4 1F7E4

+F0B5B 29 4 1F7E5

+F0B5C 29 4 1F7E6

+F0B5D 29 4 1F7E7

+F0B5E 29 4 1F7E8

+F0B5F 29 4 1F7E9

+F0B60 29 4 1F7EA

+F0B61 29 4 1F7EB

+F0B62 29 4 1F90D

+F0B63 29 4 1F90E

+F0B64 29 4 1F90F

+F0B65 29 4 1F93F

+F0B66 29 4 1F971

+F0B67 29 4 1F97B

+F0B68 29 4 1F9A5

+F0B69 29 4 1F9A6

+F0B6A 29 4 1F9A7

+F0B6B 29 4 1F9A8

+F0B6C 29 4 1F9A9

+F0B6D 29 4 1F9AA

+F0B6E 29 4 1F9AE

+F0B6F 29 4 1F9AF

+F0B70 29 4 1F9BA

+F0B71 29 4 1F9BB

+F0B72 29 4 1F9BC

+F0B73 29 4 1F9BD

+F0B74 29 4 1F9BE

+F0B75 29 4 1F9BF

+F0B76 29 4 1F9C3

+F0B77 29 4 1F9C4

+F0B78 29 4 1F9C5

+F0B79 29 4 1F9C6

+F0B7A 29 4 1F9C7

+F0B7B 29 4 1F9C8

+F0B7C 29 4 1F9C9

+F0B7D 29 4 1F9CA

+F0B7E 29 4 1F9CD

+F0B7F 29 4 1F9CE

+F0B80 29 4 1F9CF

+F0B81 29 4 1FA70

+F0B82 29 4 1FA71

+F0B83 29 4 1FA72

+F0B84 29 4 1FA73

+F0B85 29 4 1FA78

+F0B86 29 4 1FA79

+F0B87 29 4 1FA7A

+F0B88 29 4 1FA80

+F0B89 29 4 1FA81

+F0B8A 29 4 1FA82

+F0B8B 29 4 1FA90

+F0B8C 29 4 1FA91

+F0B8D 29 4 1FA92

+F0B8E 29 4 1FA93

+F0B8F 29 4 1FA94

+F0B90 29 4 1FA95

+F0B91 29 4 1F46B 1F3FB

+F0B92 29 4 1F46B 1F3FC

+F0B93 29 4 1F46B 1F3FD

+F0B94 29 4 1F46B 1F3FE

+F0B95 29 4 1F46B 1F3FF

+F0B96 29 4 1F46C 1F3FB

+F0B97 29 4 1F46C 1F3FC

+F0B98 29 4 1F46C 1F3FD

+F0B99 29 4 1F46C 1F3FE

+F0B9A 29 4 1F46C 1F3FF

+F0B9B 29 4 1F46D 1F3FB

+F0B9C 29 4 1F46D 1F3FC

+F0B9D 29 4 1F46D 1F3FD

+F0B9E 29 4 1F46D 1F3FE

+F0B9F 29 4 1F46D 1F3FF

+F0BA0 29 4 1F469 1F3FB 200D 1F91D 200D 1F468 1F3FC

+F0BA1 29 4 1F469 1F3FB 200D 1F91D 200D 1F468 1F3FD

+F0BA2 29 4 1F469 1F3FB 200D 1F91D 200D 1F468 1F3FE

+F0BA3 29 4 1F469 1F3FB 200D 1F91D 200D 1F468 1F3FF

+F0BA4 29 4 1F469 1F3FC 200D 1F91D 200D 1F468 1F3FB

+F0BA5 29 4 1F469 1F3FC 200D 1F91D 200D 1F468 1F3FD

+F0BA6 29 4 1F469 1F3FC 200D 1F91D 200D 1F468 1F3FE

+F0BA7 29 4 1F469 1F3FC 200D 1F91D 200D 1F468 1F3FF

+F0BA8 29 4 1F469 1F3FC 200D 1F91D 200D 1F469 1F3FB

+F0BA9 29 4 1F469 1F3FD 200D 1F91D 200D 1F468 1F3FB

+F0BAA 29 4 1F469 1F3FD 200D 1F91D 200D 1F468 1F3FC

+F0BAB 29 4 1F469 1F3FD 200D 1F91D 200D 1F468 1F3FE

+F0BAC 29 4 1F469 1F3FD 200D 1F91D 200D 1F468 1F3FF

+F0BAD 29 4 1F469 1F3FD 200D 1F91D 200D 1F469 1F3FB

+F0BAE 29 4 1F469 1F3FD 200D 1F91D 200D 1F469 1F3FC

+F0BAF 29 4 1F469 1F3FE 200D 1F91D 200D 1F468 1F3FB

+F0BB0 29 4 1F469 1F3FE 200D 1F91D 200D 1F468 1F3FC

+F0BB1 29 4 1F469 1F3FE 200D 1F91D 200D 1F468 1F3FD

+F0BB2 29 4 1F469 1F3FE 200D 1F91D 200D 1F468 1F3FF

+F0BB3 29 4 1F469 1F3FE 200D 1F91D 200D 1F469 1F3FB

+F0BB4 29 4 1F469 1F3FE 200D 1F91D 200D 1F469 1F3FC

+F0BB5 29 4 1F469 1F3FE 200D 1F91D 200D 1F469 1F3FD

+F0BB6 29 4 1F469 1F3FF 200D 1F91D 200D 1F468 1F3FB

+F0BB7 29 4 1F469 1F3FF 200D 1F91D 200D 1F468 1F3FC

+F0BB8 29 4 1F469 1F3FF 200D 1F91D 200D 1F468 1F3FD

+F0BB9 29 4 1F469 1F3FF 200D 1F91D 200D 1F468 1F3FE

+F0BBA 29 4 1F469 1F3FF 200D 1F91D 200D 1F469 1F3FB

+F0BBB 29 4 1F469 1F3FF 200D 1F91D 200D 1F469 1F3FC

+F0BBC 29 4 1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD

+F0BBD 29 4 1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE

+F0BBE 29 4 1F469 1F3FB 200D 1F9AF

+F0BBF 29 4 1F469 1F3FB 200D 1F9BC

+F0BC0 29 4 1F469 1F3FB 200D 1F9BD

+F0BC1 29 4 1F469 1F3FC 200D 1F9AF

+F0BC2 29 4 1F469 1F3FC 200D 1F9BC

+F0BC3 29 4 1F469 1F3FC 200D 1F9BD

+F0BC4 29 4 1F469 1F3FD 200D 1F9AF

+F0BC5 29 4 1F469 1F3FD 200D 1F9BC

+F0BC6 29 4 1F469 1F3FD 200D 1F9BD

+F0BC7 29 4 1F469 1F3FE 200D 1F9AF

+F0BC8 29 4 1F469 1F3FE 200D 1F9BC

+F0BC9 29 4 1F469 1F3FE 200D 1F9BD

+F0BCA 29 4 1F469 1F3FF 200D 1F9AF

+F0BCB 29 4 1F469 1F3FF 200D 1F9BC

+F0BCC 29 4 1F469 1F3FF 200D 1F9BD

+F0BCD 29 4 1F469 200D 1F9AF

+F0BCE 29 4 1F469 200D 1F9BC

+F0BCF 29 4 1F469 200D 1F9BD

+F0BD0 29 4 1F468 1F3FC 200D 1F91D 200D 1F468 1F3FB

+F0BD1 29 4 1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB

+F0BD2 29 4 1F468 1F3FD 200D 1F91D 200D 1F468 1F3FC

+F0BD3 29 4 1F468 1F3FE 200D 1F91D 200D 1F468 1F3FB

+F0BD4 29 4 1F468 1F3FE 200D 1F91D 200D 1F468 1F3FC

+F0BD5 29 4 1F468 1F3FE 200D 1F91D 200D 1F468 1F3FD

+F0BD6 29 4 1F468 1F3FF 200D 1F91D 200D 1F468 1F3FB

+F0BD7 29 4 1F468 1F3FF 200D 1F91D 200D 1F468 1F3FC

+F0BD8 29 4 1F468 1F3FF 200D 1F91D 200D 1F468 1F3FD

+F0BD9 29 4 1F468 1F3FF 200D 1F91D 200D 1F468 1F3FE

+F0BDA 29 4 1F468 1F3FB 200D 1F9AF

+F0BDB 29 4 1F468 1F3FB 200D 1F9BC

+F0BDC 29 4 1F468 1F3FB 200D 1F9BD

+F0BDD 29 4 1F468 1F3FC 200D 1F9AF

+F0BDE 29 4 1F468 1F3FC 200D 1F9BC

+F0BDF 29 4 1F468 1F3FC 200D 1F9BD

+F0BE0 29 4 1F468 1F3FD 200D 1F9AF

+F0BE1 29 4 1F468 1F3FD 200D 1F9BC

+F0BE2 29 4 1F468 1F3FD 200D 1F9BD

+F0BE3 29 4 1F468 1F3FE 200D 1F9AF

+F0BE4 29 4 1F468 1F3FE 200D 1F9BC

+F0BE5 29 4 1F468 1F3FE 200D 1F9BD

+F0BE6 29 4 1F468 1F3FF 200D 1F9AF

+F0BE7 29 4 1F468 1F3FF 200D 1F9BC

+F0BE8 29 4 1F468 1F3FF 200D 1F9BD

+F0BE9 29 4 1F468 200D 1F9AF

+F0BEA 29 4 1F468 200D 1F9BC

+F0BEB 29 4 1F468 200D 1F9BD

+F0BEC 29 4 1F415 200D 1F9BA

+F0BED 29 4 1F90F 1F3FB

+F0BEE 29 4 1F90F 1F3FC

+F0BEF 29 4 1F90F 1F3FD

+F0BF0 29 4 1F90F 1F3FE

+F0BF1 29 4 1F90F 1F3FF

+F0BF2 29 4 1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB

+F0BF3 29 4 1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB

+F0BF4 29 4 1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC

+F0BF5 29 4 1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB

+F0BF6 29 4 1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC

+F0BF7 29 4 1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD

+F0BF8 29 4 1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB

+F0BF9 29 4 1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC

+F0BFA 29 4 1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD

+F0BFB 29 4 1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FE

+F0BFC 29 4 1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB

+F0BFD 29 4 1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC

+F0BFE 29 4 1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD

+F0BFF 29 4 1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FE

+F0C00 29 4 1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FF

+F0C01 29 4 1F9D1 200D 1F91D 200D 1F9D1

+F0C02 29 4 1F9BB 1F3FB

+F0C03 29 4 1F9BB 1F3FC

+F0C04 29 4 1F9BB 1F3FD

+F0C05 29 4 1F9BB 1F3FE

+F0C06 29 4 1F9BB 1F3FF

+F0C07 29 4 1F9CF 1F3FB 200D 2640

+F0C08 29 4 1F9CF 1F3FB 200D 2642

+F0C09 29 4 1F9CF 1F3FC 200D 2640

+F0C0A 29 4 1F9CF 1F3FC 200D 2642

+F0C0B 29 4 1F9CF 1F3FD 200D 2640

+F0C0C 29 4 1F9CF 1F3FD 200D 2642

+F0C0D 29 4 1F9CF 1F3FE 200D 2640

+F0C0E 29 4 1F9CF 1F3FE 200D 2642

+F0C0F 29 4 1F9CF 1F3FF 200D 2640

+F0C10 29 4 1F9CF 1F3FF 200D 2642

+F0C11 29 4 1F9CF 200D 2640

+F0C12 29 4 1F9CF 200D 2642

+F0C13 29 4 1F9CF 1F3FB

+F0C14 29 4 1F9CF 1F3FC

+F0C15 29 4 1F9CF 1F3FD

+F0C16 29 4 1F9CF 1F3FE

+F0C17 29 4 1F9CF 1F3FF

+F0C18 29 4 1F9CD 1F3FB 200D 2640

+F0C19 29 4 1F9CD 1F3FB 200D 2642

+F0C1A 29 4 1F9CD 1F3FC 200D 2640

+F0C1B 29 4 1F9CD 1F3FC 200D 2642

+F0C1C 29 4 1F9CD 1F3FD 200D 2640

+F0C1D 29 4 1F9CD 1F3FD 200D 2642

+F0C1E 29 4 1F9CD 1F3FE 200D 2640

+F0C1F 29 4 1F9CD 1F3FE 200D 2642

+F0C20 29 4 1F9CD 1F3FF 200D 2640

+F0C21 29 4 1F9CD 1F3FF 200D 2642

+F0C22 29 4 1F9CD 200D 2640

+F0C23 29 4 1F9CD 200D 2642

+F0C24 29 4 1F9CD 1F3FB

+F0C25 29 4 1F9CD 1F3FC

+F0C26 29 4 1F9CD 1F3FD

+F0C27 29 4 1F9CD 1F3FE

+F0C28 29 4 1F9CD 1F3FF

+F0C29 29 4 1F9CE 1F3FB 200D 2640

+F0C2A 29 4 1F9CE 1F3FB 200D 2642

+F0C2B 29 4 1F9CE 1F3FC 200D 2640

+F0C2C 29 4 1F9CE 1F3FC 200D 2642

+F0C2D 29 4 1F9CE 1F3FD 200D 2640

+F0C2E 29 4 1F9CE 1F3FD 200D 2642

+F0C2F 29 4 1F9CE 1F3FE 200D 2640

+F0C30 29 4 1F9CE 1F3FE 200D 2642

+F0C31 29 4 1F9CE 1F3FF 200D 2640

+F0C32 29 4 1F9CE 1F3FF 200D 2642

+F0C33 29 4 1F9CE 200D 2640

+F0C34 29 4 1F9CE 200D 2642

+F0C35 29 4 1F9CE 1F3FB

+F0C36 29 4 1F9CE 1F3FC

+F0C37 29 4 1F9CE 1F3FD

+F0C38 29 4 1F9CE 1F3FE

+F0C39 29 4 1F9CE 1F3FF

+F0C3A 29 5 1F469 1F3FB 200D 1F91D 200D 1F469 1F3FC

+F0C3B 29 5 1F469 1F3FB 200D 1F91D 200D 1F469 1F3FD

+F0C3C 29 5 1F469 1F3FB 200D 1F91D 200D 1F469 1F3FE

+F0C3D 29 5 1F469 1F3FB 200D 1F91D 200D 1F469 1F3FF

+F0C3E 29 5 1F469 1F3FC 200D 1F91D 200D 1F469 1F3FD

+F0C3F 29 5 1F469 1F3FC 200D 1F91D 200D 1F469 1F3FE

+F0C40 29 5 1F469 1F3FC 200D 1F91D 200D 1F469 1F3FF

+F0C41 29 5 1F469 1F3FD 200D 1F91D 200D 1F469 1F3FE

+F0C42 29 5 1F469 1F3FD 200D 1F91D 200D 1F469 1F3FF

+F0C43 29 5 1F469 1F3FE 200D 1F91D 200D 1F469 1F3FF

+F0C44 29 5 1F468 1F3FB 200D 1F91D 200D 1F468 1F3FC

+F0C45 29 5 1F468 1F3FB 200D 1F91D 200D 1F468 1F3FD

+F0C46 29 5 1F468 1F3FB 200D 1F91D 200D 1F468 1F3FE

+F0C47 29 5 1F468 1F3FB 200D 1F91D 200D 1F468 1F3FF

+F0C48 29 5 1F468 1F3FC 200D 1F91D 200D 1F468 1F3FD

+F0C49 29 5 1F468 1F3FC 200D 1F91D 200D 1F468 1F3FE

+F0C4A 29 5 1F468 1F3FC 200D 1F91D 200D 1F468 1F3FF

+F0C4B 29 5 1F468 1F3FD 200D 1F91D 200D 1F468 1F3FE

+F0C4C 29 5 1F468 1F3FD 200D 1F91D 200D 1F468 1F3FF

+F0C4D 29 5 1F468 1F3FE 200D 1F91D 200D 1F468 1F3FF

+F0C4E 29 5 1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FC

+F0C4F 29 5 1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FD

+F0C50 29 5 1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FE

+F0C51 29 5 1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FF

+F0C52 29 5 1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FD

+F0C53 29 5 1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FE

+F0C54 29 5 1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FF

+F0C55 29 5 1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FE

+F0C56 29 5 1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FF

+F0C57 29 5 1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FF

+F0C58 29 5 1F9D1 1F3FB 200D 2695

+F0C59 29 5 1F9D1 1F3FB 200D 2696

+F0C5A 29 5 1F9D1 1F3FB 200D 2708

+F0C5B 29 5 1F9D1 1F3FB 200D 1F33E

+F0C5C 29 5 1F9D1 1F3FB 200D 1F373

+F0C5D 29 5 1F9D1 1F3FB 200D 1F393

+F0C5E 29 5 1F9D1 1F3FB 200D 1F3A4

+F0C5F 29 5 1F9D1 1F3FB 200D 1F3A8

+F0C60 29 5 1F9D1 1F3FB 200D 1F3EB

+F0C61 29 5 1F9D1 1F3FB 200D 1F3ED

+F0C62 29 5 1F9D1 1F3FB 200D 1F4BB

+F0C63 29 5 1F9D1 1F3FB 200D 1F4BC

+F0C64 29 5 1F9D1 1F3FB 200D 1F527

+F0C65 29 5 1F9D1 1F3FB 200D 1F52C

+F0C66 29 5 1F9D1 1F3FB 200D 1F680

+F0C67 29 5 1F9D1 1F3FB 200D 1F692

+F0C68 29 5 1F9D1 1F3FB 200D 1F9AF

+F0C69 29 5 1F9D1 1F3FB 200D 1F9B0

+F0C6A 29 5 1F9D1 1F3FB 200D 1F9B1

+F0C6B 29 5 1F9D1 1F3FB 200D 1F9B2

+F0C6C 29 5 1F9D1 1F3FB 200D 1F9B3

+F0C6D 29 5 1F9D1 1F3FB 200D 1F9BC

+F0C6E 29 5 1F9D1 1F3FB 200D 1F9BD

+F0C6F 29 5 1F9D1 1F3FC 200D 2695

+F0C70 29 5 1F9D1 1F3FC 200D 2696

+F0C71 29 5 1F9D1 1F3FC 200D 2708

+F0C72 29 5 1F9D1 1F3FC 200D 1F33E

+F0C73 29 5 1F9D1 1F3FC 200D 1F373

+F0C74 29 5 1F9D1 1F3FC 200D 1F393

+F0C75 29 5 1F9D1 1F3FC 200D 1F3A4

+F0C76 29 5 1F9D1 1F3FC 200D 1F3A8

+F0C77 29 5 1F9D1 1F3FC 200D 1F3EB

+F0C78 29 5 1F9D1 1F3FC 200D 1F3ED

+F0C79 29 5 1F9D1 1F3FC 200D 1F4BB

+F0C7A 29 5 1F9D1 1F3FC 200D 1F4BC

+F0C7B 29 5 1F9D1 1F3FC 200D 1F527

+F0C7C 29 5 1F9D1 1F3FC 200D 1F52C

+F0C7D 29 5 1F9D1 1F3FC 200D 1F680

+F0C7E 29 5 1F9D1 1F3FC 200D 1F692

+F0C7F 29 5 1F9D1 1F3FC 200D 1F9AF

+F0C80 29 5 1F9D1 1F3FC 200D 1F9B0

+F0C81 29 5 1F9D1 1F3FC 200D 1F9B1

+F0C82 29 5 1F9D1 1F3FC 200D 1F9B2

+F0C83 29 5 1F9D1 1F3FC 200D 1F9B3

+F0C84 29 5 1F9D1 1F3FC 200D 1F9BC

+F0C85 29 5 1F9D1 1F3FC 200D 1F9BD

+F0C86 29 5 1F9D1 1F3FD 200D 2695

+F0C87 29 5 1F9D1 1F3FD 200D 2696

+F0C88 29 5 1F9D1 1F3FD 200D 2708

+F0C89 29 5 1F9D1 1F3FD 200D 1F33E

+F0C8A 29 5 1F9D1 1F3FD 200D 1F373

+F0C8B 29 5 1F9D1 1F3FD 200D 1F393

+F0C8C 29 5 1F9D1 1F3FD 200D 1F3A4

+F0C8D 29 5 1F9D1 1F3FD 200D 1F3A8

+F0C8E 29 5 1F9D1 1F3FD 200D 1F3EB

+F0C8F 29 5 1F9D1 1F3FD 200D 1F3ED

+F0C90 29 5 1F9D1 1F3FD 200D 1F4BB

+F0C91 29 5 1F9D1 1F3FD 200D 1F4BC

+F0C92 29 5 1F9D1 1F3FD 200D 1F527

+F0C93 29 5 1F9D1 1F3FD 200D 1F52C

+F0C94 29 5 1F9D1 1F3FD 200D 1F680

+F0C95 29 5 1F9D1 1F3FD 200D 1F692

+F0C96 29 5 1F9D1 1F3FD 200D 1F9AF

+F0C97 29 5 1F9D1 1F3FD 200D 1F9B0

+F0C98 29 5 1F9D1 1F3FD 200D 1F9B1

+F0C99 29 5 1F9D1 1F3FD 200D 1F9B2

+F0C9A 29 5 1F9D1 1F3FD 200D 1F9B3

+F0C9B 29 5 1F9D1 1F3FD 200D 1F9BC

+F0C9C 29 5 1F9D1 1F3FD 200D 1F9BD

+F0C9D 29 5 1F9D1 1F3FE 200D 2695

+F0C9E 29 5 1F9D1 1F3FE 200D 2696

+F0C9F 29 5 1F9D1 1F3FE 200D 2708

+F0CA0 29 5 1F9D1 1F3FE 200D 1F33E

+F0CA1 29 5 1F9D1 1F3FE 200D 1F373

+F0CA2 29 5 1F9D1 1F3FE 200D 1F393

+F0CA3 29 5 1F9D1 1F3FE 200D 1F3A4

+F0CA4 29 5 1F9D1 1F3FE 200D 1F3A8

+F0CA5 29 5 1F9D1 1F3FE 200D 1F3EB

+F0CA6 29 5 1F9D1 1F3FE 200D 1F3ED

+F0CA7 29 5 1F9D1 1F3FE 200D 1F4BB

+F0CA8 29 5 1F9D1 1F3FE 200D 1F4BC

+F0CA9 29 5 1F9D1 1F3FE 200D 1F527

+F0CAA 29 5 1F9D1 1F3FE 200D 1F52C

+F0CAB 29 5 1F9D1 1F3FE 200D 1F680

+F0CAC 29 5 1F9D1 1F3FE 200D 1F692

+F0CAD 29 5 1F9D1 1F3FE 200D 1F9AF

+F0CAE 29 5 1F9D1 1F3FE 200D 1F9B0

+F0CAF 29 5 1F9D1 1F3FE 200D 1F9B1

+F0CB0 29 5 1F9D1 1F3FE 200D 1F9B2

+F0CB1 29 5 1F9D1 1F3FE 200D 1F9B3

+F0CB2 29 5 1F9D1 1F3FE 200D 1F9BC

+F0CB3 29 5 1F9D1 1F3FE 200D 1F9BD

+F0CB4 29 5 1F9D1 1F3FF 200D 2695

+F0CB5 29 5 1F9D1 1F3FF 200D 2696

+F0CB6 29 5 1F9D1 1F3FF 200D 2708

+F0CB7 29 5 1F9D1 1F3FF 200D 1F33E

+F0CB8 29 5 1F9D1 1F3FF 200D 1F373

+F0CB9 29 5 1F9D1 1F3FF 200D 1F393

+F0CBA 29 5 1F9D1 1F3FF 200D 1F3A4

+F0CBB 29 5 1F9D1 1F3FF 200D 1F3A8

+F0CBC 29 5 1F9D1 1F3FF 200D 1F3EB

+F0CBD 29 5 1F9D1 1F3FF 200D 1F3ED

+F0CBE 29 5 1F9D1 1F3FF 200D 1F4BB

+F0CBF 29 5 1F9D1 1F3FF 200D 1F4BC

+F0CC0 29 5 1F9D1 1F3FF 200D 1F527

+F0CC1 29 5 1F9D1 1F3FF 200D 1F52C

+F0CC2 29 5 1F9D1 1F3FF 200D 1F680

+F0CC3 29 5 1F9D1 1F3FF 200D 1F692

+F0CC4 29 5 1F9D1 1F3FF 200D 1F9AF

+F0CC5 29 5 1F9D1 1F3FF 200D 1F9B0

+F0CC6 29 5 1F9D1 1F3FF 200D 1F9B1

+F0CC7 29 5 1F9D1 1F3FF 200D 1F9B2

+F0CC8 29 5 1F9D1 1F3FF 200D 1F9B3

+F0CC9 29 5 1F9D1 1F3FF 200D 1F9BC

+F0CCA 29 5 1F9D1 1F3FF 200D 1F9BD

+F0CCB 29 5 1F9D1 200D 2695

+F0CCC 29 5 1F9D1 200D 2696

+F0CCD 29 5 1F9D1 200D 2708

+F0CCE 29 5 1F9D1 200D 1F33E

+F0CCF 29 5 1F9D1 200D 1F373

+F0CD0 29 5 1F9D1 200D 1F393

+F0CD1 29 5 1F9D1 200D 1F3A4

+F0CD2 29 5 1F9D1 200D 1F3A8

+F0CD3 29 5 1F9D1 200D 1F3EB

+F0CD4 29 5 1F9D1 200D 1F3ED

+F0CD5 29 5 1F9D1 200D 1F4BB

+F0CD6 29 5 1F9D1 200D 1F4BC

+F0CD7 29 5 1F9D1 200D 1F527

+F0CD8 29 5 1F9D1 200D 1F52C

+F0CD9 29 5 1F9D1 200D 1F680

+F0CDA 29 5 1F9D1 200D 1F692

+F0CDB 29 5 1F9D1 200D 1F9AF

+F0CDC 29 5 1F9D1 200D 1F9B0

+F0CDD 29 5 1F9D1 200D 1F9B1

+F0CDE 29 5 1F9D1 200D 1F9B2

+F0CDF 29 5 1F9D1 200D 1F9B3

+F0CE0 29 5 1F9D1 200D 1F9BC

+F0CE1 29 5 1F9D1 200D 1F9BD

+F0CE2 30 6 26A7

+F0CE3 30 6 1F6D6

+F0CE4 30 6 1F6D7

+F0CE5 30 6 1F6FB

+F0CE6 30 6 1F6FC

+F0CE7 30 6 1F90C

+F0CE8 30 6 1F972

+F0CE9 30 6 1F977

+F0CEA 30 6 1F978

+F0CEB 30 6 1F9A3

+F0CEC 30 6 1F9A4

+F0CED 30 6 1F9AB

+F0CEE 30 6 1F9AC

+F0CEF 30 6 1F9AD

+F0CF0 30 6 1F9CB

+F0CF1 30 6 1FA74

+F0CF2 30 6 1FA83

+F0CF3 30 6 1FA84

+F0CF4 30 6 1FA85

+F0CF5 30 6 1FA86

+F0CF6 30 6 1FA96

+F0CF7 30 6 1FA97

+F0CF8 30 6 1FA98

+F0CF9 30 6 1FA99

+F0CFA 30 6 1FA9A

+F0CFB 30 6 1FA9B

+F0CFC 30 6 1FA9C

+F0CFD 30 6 1FA9D

+F0CFE 30 6 1FA9E

+F0CFF 30 6 1FA9F

+F0D00 30 6 1FAA0

+F0D01 30 6 1FAA1

+F0D02 30 6 1FAA2

+F0D03 30 6 1FAA3

+F0D04 30 6 1FAA4

+F0D05 30 6 1FAA5

+F0D06 30 6 1FAA6

+F0D07 30 6 1FAA7

+F0D08 30 6 1FAA8

+F0D09 30 6 1FAB0

+F0D0A 30 6 1FAB1

+F0D0B 30 6 1FAB2

+F0D0C 30 6 1FAB3

+F0D0D 30 6 1FAB4

+F0D0E 30 6 1FAB5

+F0D0F 30 6 1FAB6

+F0D10 30 6 1FAC0

+F0D11 30 6 1FAC1

+F0D12 30 6 1FAC2

+F0D13 30 6 1FAD0

+F0D14 30 6 1FAD1

+F0D15 30 6 1FAD2

+F0D16 30 6 1FAD3

+F0D17 30 6 1FAD4

+F0D18 30 6 1FAD5

+F0D19 30 6 1FAD6

+F0D1A 30 6 1F3F3 200D 26A7

+F0D1B 30 6 1F408 200D 2B1B

+F0D1C 30 6 1F43B 200D 2744

+F0D1D 30 6 1F468 1F3FB 200D 1F37C

+F0D1E 30 6 1F468 1F3FC 200D 1F37C

+F0D1F 30 6 1F468 1F3FD 200D 1F37C

+F0D20 30 6 1F468 1F3FE 200D 1F37C

+F0D21 30 6 1F468 1F3FF 200D 1F37C

+F0D22 30 6 1F468 200D 1F37C

+F0D23 30 6 1F469 1F3FB 200D 1F37C

+F0D24 30 6 1F469 1F3FC 200D 1F37C

+F0D25 30 6 1F469 1F3FD 200D 1F37C

+F0D26 30 6 1F469 1F3FE 200D 1F37C

+F0D27 30 6 1F469 1F3FF 200D 1F37C

+F0D28 30 6 1F469 200D 1F37C

+F0D29 30 6 1F470 1F3FB 200D 2640

+F0D2A 30 6 1F470 1F3FB 200D 2642

+F0D2B 30 6 1F470 1F3FC 200D 2640

+F0D2C 30 6 1F470 1F3FC 200D 2642

+F0D2D 30 6 1F470 1F3FD 200D 2640

+F0D2E 30 6 1F470 1F3FD 200D 2642

+F0D2F 30 6 1F470 1F3FE 200D 2640

+F0D30 30 6 1F470 1F3FE 200D 2642

+F0D31 30 6 1F470 1F3FF 200D 2640

+F0D32 30 6 1F470 1F3FF 200D 2642

+F0D33 30 6 1F470 200D 2640

+F0D34 30 6 1F470 200D 2642

+F0D35 30 6 1F90C 1F3FB

+F0D36 30 6 1F90C 1F3FC

+F0D37 30 6 1F90C 1F3FD

+F0D38 30 6 1F90C 1F3FE

+F0D39 30 6 1F90C 1F3FF

+F0D3A 30 6 1F935 1F3FB 200D 2640

+F0D3B 30 6 1F935 1F3FB 200D 2642

+F0D3C 30 6 1F935 1F3FC 200D 2640

+F0D3D 30 6 1F935 1F3FC 200D 2642

+F0D3E 30 6 1F935 1F3FD 200D 2640

+F0D3F 30 6 1F935 1F3FD 200D 2642

+F0D40 30 6 1F935 1F3FE 200D 2640

+F0D41 30 6 1F935 1F3FE 200D 2642

+F0D42 30 6 1F935 1F3FF 200D 2640

+F0D43 30 6 1F935 1F3FF 200D 2642

+F0D44 30 6 1F935 200D 2640

+F0D45 30 6 1F935 200D 2642

+F0D46 30 6 1F977 1F3FB

+F0D47 30 6 1F977 1F3FC

+F0D48 30 6 1F977 1F3FD

+F0D49 30 6 1F977 1F3FE

+F0D4A 30 6 1F977 1F3FF

+F0D4B 30 6 1F9D1 1F3FB 200D 1F37C

+F0D4C 30 6 1F9D1 1F3FB 200D 1F384

+F0D4D 30 6 1F9D1 1F3FC 200D 1F37C

+F0D4E 30 6 1F9D1 1F3FC 200D 1F384

+F0D4F 30 6 1F9D1 1F3FD 200D 1F37C

+F0D50 30 6 1F9D1 1F3FD 200D 1F384

+F0D51 30 6 1F9D1 1F3FE 200D 1F37C

+F0D52 30 6 1F9D1 1F3FE 200D 1F384

+F0D53 30 6 1F9D1 1F3FF 200D 1F37C

+F0D54 30 6 1F9D1 1F3FF 200D 1F384

+F0D55 30 6 1F9D1 200D 1F37C

+F0D56 30 6 1F9D1 200D 1F384

+F0D57 30 7 2764 200D 1F525

+F0D58 30 7 2764 200D 1FA79

+F0D59 30 7 1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0D5A 30 7 1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0D5B 30 7 1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0D5C 30 7 1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0D5D 30 7 1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0D5E 30 7 1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0D5F 30 7 1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0D60 30 7 1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0D61 30 7 1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0D62 30 7 1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0D63 30 7 1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0D64 30 7 1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0D65 30 7 1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0D66 30 7 1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0D67 30 7 1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0D68 30 7 1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0D69 30 7 1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0D6A 30 7 1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0D6B 30 7 1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0D6C 30 7 1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0D6D 30 7 1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0D6E 30 7 1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0D6F 30 7 1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0D70 30 7 1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0D71 30 7 1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0D72 30 7 1F468 1F3FB 200D 2764 200D 1F468 1F3FB

+F0D73 30 7 1F468 1F3FB 200D 2764 200D 1F468 1F3FC

+F0D74 30 7 1F468 1F3FB 200D 2764 200D 1F468 1F3FD

+F0D75 30 7 1F468 1F3FB 200D 2764 200D 1F468 1F3FE

+F0D76 30 7 1F468 1F3FB 200D 2764 200D 1F468 1F3FF

+F0D77 30 7 1F468 1F3FC 200D 2764 200D 1F468 1F3FB

+F0D78 30 7 1F468 1F3FC 200D 2764 200D 1F468 1F3FC

+F0D79 30 7 1F468 1F3FC 200D 2764 200D 1F468 1F3FD

+F0D7A 30 7 1F468 1F3FC 200D 2764 200D 1F468 1F3FE

+F0D7B 30 7 1F468 1F3FC 200D 2764 200D 1F468 1F3FF

+F0D7C 30 7 1F468 1F3FD 200D 2764 200D 1F468 1F3FB

+F0D7D 30 7 1F468 1F3FD 200D 2764 200D 1F468 1F3FC

+F0D7E 30 7 1F468 1F3FD 200D 2764 200D 1F468 1F3FD

+F0D7F 30 7 1F468 1F3FD 200D 2764 200D 1F468 1F3FE

+F0D80 30 7 1F468 1F3FD 200D 2764 200D 1F468 1F3FF

+F0D81 30 7 1F468 1F3FE 200D 2764 200D 1F468 1F3FB

+F0D82 30 7 1F468 1F3FE 200D 2764 200D 1F468 1F3FC

+F0D83 30 7 1F468 1F3FE 200D 2764 200D 1F468 1F3FD

+F0D84 30 7 1F468 1F3FE 200D 2764 200D 1F468 1F3FE

+F0D85 30 7 1F468 1F3FE 200D 2764 200D 1F468 1F3FF

+F0D86 30 7 1F468 1F3FF 200D 2764 200D 1F468 1F3FB

+F0D87 30 7 1F468 1F3FF 200D 2764 200D 1F468 1F3FC

+F0D88 30 7 1F468 1F3FF 200D 2764 200D 1F468 1F3FD

+F0D89 30 7 1F468 1F3FF 200D 2764 200D 1F468 1F3FE

+F0D8A 30 7 1F468 1F3FF 200D 2764 200D 1F468 1F3FF

+F0D8B 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0D8C 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0D8D 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0D8E 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0D8F 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0D90 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FB

+F0D91 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FC

+F0D92 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FD

+F0D93 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FE

+F0D94 30 7 1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FF

+F0D95 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0D96 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0D97 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0D98 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0D99 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0D9A 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FB

+F0D9B 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FC

+F0D9C 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FD

+F0D9D 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FE

+F0D9E 30 7 1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FF

+F0D9F 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0DA0 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0DA1 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0DA2 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0DA3 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0DA4 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FB

+F0DA5 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FC

+F0DA6 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FD

+F0DA7 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FE

+F0DA8 30 7 1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FF

+F0DA9 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0DAA 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0DAB 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0DAC 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0DAD 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0DAE 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FB

+F0DAF 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FC

+F0DB0 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FD

+F0DB1 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FE

+F0DB2 30 7 1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FF

+F0DB3 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB

+F0DB4 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC

+F0DB5 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD

+F0DB6 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE

+F0DB7 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF

+F0DB8 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FB

+F0DB9 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FC

+F0DBA 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FD

+F0DBB 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FE

+F0DBC 30 7 1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FF

+F0DBD 30 7 1F469 1F3FB 200D 2764 200D 1F468 1F3FB

+F0DBE 30 7 1F469 1F3FB 200D 2764 200D 1F468 1F3FC

+F0DBF 30 7 1F469 1F3FB 200D 2764 200D 1F468 1F3FD

+F0DC0 30 7 1F469 1F3FB 200D 2764 200D 1F468 1F3FE

+F0DC1 30 7 1F469 1F3FB 200D 2764 200D 1F468 1F3FF

+F0DC2 30 7 1F469 1F3FB 200D 2764 200D 1F469 1F3FB

+F0DC3 30 7 1F469 1F3FB 200D 2764 200D 1F469 1F3FC

+F0DC4 30 7 1F469 1F3FB 200D 2764 200D 1F469 1F3FD

+F0DC5 30 7 1F469 1F3FB 200D 2764 200D 1F469 1F3FE

+F0DC6 30 7 1F469 1F3FB 200D 2764 200D 1F469 1F3FF

+F0DC7 30 7 1F469 1F3FC 200D 2764 200D 1F468 1F3FB

+F0DC8 30 7 1F469 1F3FC 200D 2764 200D 1F468 1F3FC

+F0DC9 30 7 1F469 1F3FC 200D 2764 200D 1F468 1F3FD

+F0DCA 30 7 1F469 1F3FC 200D 2764 200D 1F468 1F3FE

+F0DCB 30 7 1F469 1F3FC 200D 2764 200D 1F468 1F3FF

+F0DCC 30 7 1F469 1F3FC 200D 2764 200D 1F469 1F3FB

+F0DCD 30 7 1F469 1F3FC 200D 2764 200D 1F469 1F3FC

+F0DCE 30 7 1F469 1F3FC 200D 2764 200D 1F469 1F3FD

+F0DCF 30 7 1F469 1F3FC 200D 2764 200D 1F469 1F3FE

+F0DD0 30 7 1F469 1F3FC 200D 2764 200D 1F469 1F3FF

+F0DD1 30 7 1F469 1F3FD 200D 2764 200D 1F468 1F3FB

+F0DD2 30 7 1F469 1F3FD 200D 2764 200D 1F468 1F3FC

+F0DD3 30 7 1F469 1F3FD 200D 2764 200D 1F468 1F3FD

+F0DD4 30 7 1F469 1F3FD 200D 2764 200D 1F468 1F3FE

+F0DD5 30 7 1F469 1F3FD 200D 2764 200D 1F468 1F3FF

+F0DD6 30 7 1F469 1F3FD 200D 2764 200D 1F469 1F3FB

+F0DD7 30 7 1F469 1F3FD 200D 2764 200D 1F469 1F3FC

+F0DD8 30 7 1F469 1F3FD 200D 2764 200D 1F469 1F3FD

+F0DD9 30 7 1F469 1F3FD 200D 2764 200D 1F469 1F3FE

+F0DDA 30 7 1F469 1F3FD 200D 2764 200D 1F469 1F3FF

+F0DDB 30 7 1F469 1F3FE 200D 2764 200D 1F468 1F3FB

+F0DDC 30 7 1F469 1F3FE 200D 2764 200D 1F468 1F3FC

+F0DDD 30 7 1F469 1F3FE 200D 2764 200D 1F468 1F3FD

+F0DDE 30 7 1F469 1F3FE 200D 2764 200D 1F468 1F3FE

+F0DDF 30 7 1F469 1F3FE 200D 2764 200D 1F468 1F3FF

+F0DE0 30 7 1F469 1F3FE 200D 2764 200D 1F469 1F3FB

+F0DE1 30 7 1F469 1F3FE 200D 2764 200D 1F469 1F3FC

+F0DE2 30 7 1F469 1F3FE 200D 2764 200D 1F469 1F3FD

+F0DE3 30 7 1F469 1F3FE 200D 2764 200D 1F469 1F3FE

+F0DE4 30 7 1F469 1F3FE 200D 2764 200D 1F469 1F3FF

+F0DE5 30 7 1F469 1F3FF 200D 2764 200D 1F468 1F3FB

+F0DE6 30 7 1F469 1F3FF 200D 2764 200D 1F468 1F3FC

+F0DE7 30 7 1F469 1F3FF 200D 2764 200D 1F468 1F3FD

+F0DE8 30 7 1F469 1F3FF 200D 2764 200D 1F468 1F3FE

+F0DE9 30 7 1F469 1F3FF 200D 2764 200D 1F468 1F3FF

+F0DEA 30 7 1F469 1F3FF 200D 2764 200D 1F469 1F3FB

+F0DEB 30 7 1F469 1F3FF 200D 2764 200D 1F469 1F3FC

+F0DEC 30 7 1F469 1F3FF 200D 2764 200D 1F469 1F3FD

+F0DED 30 7 1F469 1F3FF 200D 2764 200D 1F469 1F3FE

+F0DEE 30 7 1F469 1F3FF 200D 2764 200D 1F469 1F3FF

+F0DEF 30 7 1F48F 1F3FB

+F0DF0 30 7 1F48F 1F3FC

+F0DF1 30 7 1F48F 1F3FD

+F0DF2 30 7 1F48F 1F3FE

+F0DF3 30 7 1F48F 1F3FF

+F0DF4 30 7 1F491 1F3FB

+F0DF5 30 7 1F491 1F3FC

+F0DF6 30 7 1F491 1F3FD

+F0DF7 30 7 1F491 1F3FE

+F0DF8 30 7 1F491 1F3FF

+F0DF9 30 7 1F62E 200D 1F4A8

+F0DFA 30 7 1F635 200D 1F4AB

+F0DFB 30 7 1F636 200D 1F32B

+F0DFC 30 7 1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FC

+F0DFD 30 7 1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FD

+F0DFE 30 7 1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FE

+F0DFF 30 7 1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FF

+F0E00 30 7 1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FB

+F0E01 30 7 1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FD

+F0E02 30 7 1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FE

+F0E03 30 7 1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FF

+F0E04 30 7 1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FB

+F0E05 30 7 1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FC

+F0E06 30 7 1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FE

+F0E07 30 7 1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FF

+F0E08 30 7 1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FB

+F0E09 30 7 1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FC

+F0E0A 30 7 1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FD

+F0E0B 30 7 1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FF

+F0E0C 30 7 1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FB

+F0E0D 30 7 1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FC

+F0E0E 30 7 1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FD

+F0E0F 30 7 1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FE

+F0E10 30 7 1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FC

+F0E11 30 7 1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FD

+F0E12 30 7 1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FE

+F0E13 30 7 1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FF

+F0E14 30 7 1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FB

+F0E15 30 7 1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FD

+F0E16 30 7 1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FE

+F0E17 30 7 1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FF

+F0E18 30 7 1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FB

+F0E19 30 7 1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FC

+F0E1A 30 7 1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FE

+F0E1B 30 7 1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FF

+F0E1C 30 7 1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FB

+F0E1D 30 7 1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FC

+F0E1E 30 7 1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FD

+F0E1F 30 7 1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FF

+F0E20 30 7 1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FB

+F0E21 30 7 1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FC

+F0E22 30 7 1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FD

+F0E23 30 7 1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FE

+F0E24 30 7 1F9D4 1F3FB 200D 2640

+F0E25 30 7 1F9D4 1F3FB 200D 2642

+F0E26 30 7 1F9D4 1F3FC 200D 2640

+F0E27 30 7 1F9D4 1F3FC 200D 2642

+F0E28 30 7 1F9D4 1F3FD 200D 2640

+F0E29 30 7 1F9D4 1F3FD 200D 2642

+F0E2A 30 7 1F9D4 1F3FE 200D 2640

+F0E2B 30 7 1F9D4 1F3FE 200D 2642

+F0E2C 30 7 1F9D4 1F3FF 200D 2640

+F0E2D 30 7 1F9D4 1F3FF 200D 2642

+F0E2E 30 7 1F9D4 200D 2640

+F0E2F 30 7 1F9D4 200D 2642

+F0E30 31 8 1F6DD

+F0E31 31 8 1F6DE

+F0E32 31 8 1F6DF

+F0E33 31 8 1F7F0

+F0E34 31 8 1F979

+F0E35 31 8 1F9CC

+F0E36 31 8 1FA7B

+F0E37 31 8 1FA7C

+F0E38 31 8 1FAA9

+F0E39 31 8 1FAAA

+F0E3A 31 8 1FAAB

+F0E3B 31 8 1FAAC

+F0E3C 31 8 1FAB7

+F0E3D 31 8 1FAB8

+F0E3E 31 8 1FAB9

+F0E3F 31 8 1FABA

+F0E40 31 8 1FAC3

+F0E41 31 8 1FAC4

+F0E42 31 8 1FAC5

+F0E43 31 8 1FAD7

+F0E44 31 8 1FAD8

+F0E45 31 8 1FAD9

+F0E46 31 8 1FAE0

+F0E47 31 8 1FAE1

+F0E48 31 8 1FAE2

+F0E49 31 8 1FAE3

+F0E4A 31 8 1FAE4

+F0E4B 31 8 1FAE5

+F0E4C 31 8 1FAE6

+F0E4D 31 8 1FAE7

+F0E4E 31 8 1FAF0

+F0E4F 31 8 1FAF1

+F0E50 31 8 1FAF2

+F0E51 31 8 1FAF3

+F0E52 31 8 1FAF4

+F0E53 31 8 1FAF5

+F0E54 31 8 1FAF6

+F0E55 31 8 1FAC3 1F3FB

+F0E56 31 8 1FAC3 1F3FC

+F0E57 31 8 1FAC3 1F3FD

+F0E58 31 8 1FAC3 1F3FE

+F0E59 31 8 1FAC3 1F3FF

+F0E5A 31 8 1FAC4 1F3FB

+F0E5B 31 8 1FAC4 1F3FC

+F0E5C 31 8 1FAC4 1F3FD

+F0E5D 31 8 1FAC4 1F3FE

+F0E5E 31 8 1FAC4 1F3FF

+F0E5F 31 8 1FAC5 1F3FB

+F0E60 31 8 1FAC5 1F3FC

+F0E61 31 8 1FAC5 1F3FD

+F0E62 31 8 1FAC5 1F3FE

+F0E63 31 8 1FAC5 1F3FF

+F0E64 31 8 1FAF0 1F3FB

+F0E65 31 8 1FAF0 1F3FC

+F0E66 31 8 1FAF0 1F3FD

+F0E67 31 8 1FAF0 1F3FE

+F0E68 31 8 1FAF0 1F3FF

+F0E69 31 8 1FAF1 1F3FB 200D 1FAF2 1F3FC

+F0E6A 31 8 1FAF1 1F3FB 200D 1FAF2 1F3FD

+F0E6B 31 8 1FAF1 1F3FB 200D 1FAF2 1F3FE

+F0E6C 31 8 1FAF1 1F3FB 200D 1FAF2 1F3FF

+F0E6D 31 8 1FAF1 1F3FC 200D 1FAF2 1F3FB

+F0E6E 31 8 1FAF1 1F3FC 200D 1FAF2 1F3FD

+F0E6F 31 8 1FAF1 1F3FC 200D 1FAF2 1F3FE

+F0E70 31 8 1FAF1 1F3FC 200D 1FAF2 1F3FF

+F0E71 31 8 1FAF1 1F3FD 200D 1FAF2 1F3FB

+F0E72 31 8 1FAF1 1F3FD 200D 1FAF2 1F3FC

+F0E73 31 8 1FAF1 1F3FD 200D 1FAF2 1F3FE

+F0E74 31 8 1FAF1 1F3FD 200D 1FAF2 1F3FF

+F0E75 31 8 1FAF1 1F3FE 200D 1FAF2 1F3FB

+F0E76 31 8 1FAF1 1F3FE 200D 1FAF2 1F3FC

+F0E77 31 8 1FAF1 1F3FE 200D 1FAF2 1F3FD

+F0E78 31 8 1FAF1 1F3FE 200D 1FAF2 1F3FF

+F0E79 31 8 1FAF1 1F3FF 200D 1FAF2 1F3FB

+F0E7A 31 8 1FAF1 1F3FF 200D 1FAF2 1F3FC

+F0E7B 31 8 1FAF1 1F3FF 200D 1FAF2 1F3FD

+F0E7C 31 8 1FAF1 1F3FF 200D 1FAF2 1F3FE

+F0E7D 31 8 1FAF1 1F3FB

+F0E7E 31 8 1FAF1 1F3FC

+F0E7F 31 8 1FAF1 1F3FD

+F0E80 31 8 1FAF1 1F3FE

+F0E81 31 8 1FAF1 1F3FF

+F0E82 31 8 1FAF2 1F3FB

+F0E83 31 8 1FAF2 1F3FC

+F0E84 31 8 1FAF2 1F3FD

+F0E85 31 8 1FAF2 1F3FE

+F0E86 31 8 1FAF2 1F3FF

+F0E87 31 8 1FAF3 1F3FB

+F0E88 31 8 1FAF3 1F3FC

+F0E89 31 8 1FAF3 1F3FD

+F0E8A 31 8 1FAF3 1F3FE

+F0E8B 31 8 1FAF3 1F3FF

+F0E8C 31 8 1FAF4 1F3FB

+F0E8D 31 8 1FAF4 1F3FC

+F0E8E 31 8 1FAF4 1F3FD

+F0E8F 31 8 1FAF4 1F3FE

+F0E90 31 8 1FAF4 1F3FF

+F0E91 31 8 1FAF5 1F3FB

+F0E92 31 8 1FAF5 1F3FC

+F0E93 31 8 1FAF5 1F3FD

+F0E94 31 8 1FAF5 1F3FE

+F0E95 31 8 1FAF5 1F3FF

+F0E96 31 8 1FAF6 1F3FB

+F0E97 31 8 1FAF6 1F3FC

+F0E98 31 8 1FAF6 1F3FD

+F0E99 31 8 1FAF6 1F3FE

+F0E9A 31 8 1FAF6 1F3FF

+F0E9C 1500 9 1F426 200D 2B1B

+F0E9D 1500 9 1F6DC

+F0E9E 1500 9 1FA75

+F0E9F 1500 9 1FA76

+F0EA0 1500 9 1FA77

+F0EA1 1500 9 1FA87

+F0EA2 1500 9 1FA88

+F0EA3 1500 9 1FAAD

+F0EA4 1500 9 1FAAE

+F0EA5 1500 9 1FAAF

+F0EA6 1500 9 1FABB

+F0EA7 1500 9 1FABC

+F0EA8 1500 9 1FABD

+F0EA9 1500 9 1FABF

+F0EAA 1500 9 1FACE

+F0EAB 1500 9 1FACF

+F0EAC 1500 9 1FADA

+F0EAD 1500 9 1FADB

+F0EAE 1500 9 1FAE8

+F0EAF 1500 9 1FAF7

+F0EB0 1500 9 1FAF7 1F3FB

+F0EB1 1500 9 1FAF7 1F3FC

+F0EB2 1500 9 1FAF7 1F3FD

+F0EB3 1500 9 1FAF7 1F3FE

+F0EB4 1500 9 1FAF7 1F3FF

+F0EB5 1500 9 1FAF8

+F0EB6 1500 9 1FAF8 1F3FB

+F0EB7 1500 9 1FAF8 1F3FC

+F0EB8 1500 9 1FAF8 1F3FD

+F0EB9 1500 9 1FAF8 1F3FE

+F0EBA 1500 9 1FAF8 1F3FF

diff --git a/emoji-compat/fetch.sh b/emoji-compat/fetch.sh
new file mode 100755
index 0000000..d35127a
--- /dev/null
+++ b/emoji-compat/fetch.sh
@@ -0,0 +1,118 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2022 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Helper script for fetching new emoji compat fonts from github source
+# of truth
+
+# This script is very basic, please extend or replace to handle your
+# needs (e.g. pulling specific commits, releases, branches) as needed.
+
+#set -o xtrace
+set +e
+
+METADATA_GIT="https://github.com/googlefonts/emojicompat.git"
+FONT_GIT="https://github.com/googlefonts/noto-emoji.git"
+
+SCRIPT_DIR=$(readlink -f $(dirname -- "$0"))
+TMP_DIR=$(mktemp -d)
+
+GIT_VERSION=$(git --version)
+if [ $? -ne 0 ]; then
+   echo -e "ERROR: git not found"
+   exit 1
+fi
+
+TTX_VERSION=$(ttx --version)
+
+if [ $? -ne 0 ]; then
+   echo "ERROR ttx required to check font"
+   echo -e "\t python3 -m venv venv"
+   echo -e "\t source venv/bin/activate"
+   echo -e "\t pip install fonttools"
+   exit 127
+fi
+
+echo "METADATA:    $METADATA_GIT"
+echo "FONT:        $FONT_GIT"
+echo "Updating in: $SCRIPT_DIR"
+
+# confirm directory is clean
+pushd $SCRIPT_DIR > /dev/null
+UNCOMMITED_CHANGES=$(git status --porcelain)
+popd > /dev/null
+if [[ "$UNCOMMITED_CHANGES" ]]; then
+   echo "$UNCOMMITED_CHANGES"
+   read -p "Uncommited changes. Continue? [y/N]:" uncommited
+   if [[ ! $uncommited =~ ^[Yy] ]]; then
+      exit 3
+   fi
+fi
+
+function confirm_git_commit() {
+   pushd $TMP_DIR/$1 > /dev/null
+   RESULT=$(git log -1)
+   echo "$RESULT"
+   read -p "Continue for repo $1? [y/N]: " yn
+   if [[ ! $yn =~ ^[Yy] ]]; then
+      exit 2
+   fi
+   popd > /dev/null
+}
+
+pushd $TMP_DIR > /dev/null
+
+git clone --quiet --depth 1 --branch main $METADATA_GIT
+confirm_git_commit "emojicompat"
+METADATA_FILE="./emojicompat/src/emojicompat/emoji_metadata.txt"
+# adjust newlines to avoid giant diffs
+cat $METADATA_FILE | awk 'sub("$", "\r")' > emoji_metadata.txt
+
+# pull the font
+git clone --quiet --depth 1 --branch main $FONT_GIT
+confirm_git_commit "noto-emoji"
+cp ./noto-emoji/fonts/NotoColorEmoji-emojicompat.ttf ./NewFont.ttf
+
+ttx -o NewFont.ttx NewFont.ttf 2> /dev/null
+grep -q 'header version="2.0"' NewFont.ttx
+
+if [ $? -ne 0 ]; then
+   echo -e "WRONG HEADER VERSION IN FONT FILE (breaks API23)"
+   echo -e "Expected 'header version=\"2.0\""
+   echo -e "Found: "
+   grep 'header version' NewFont.ttx
+   exit 128
+fi
+
+# concat new codepoints to emojis.txt
+NEW_LINES=$(comm -23 emoji_metadata.txt $SCRIPT_DIR/data/emoji_metadata.txt)
+NEW_CODEPOINTS=$(echo "$NEW_LINES" | cut -d" " -f4-100 | sed 's/\r//')
+
+if [[ "$NEW_CODEPOINTS" ]]; then
+    echo "$NEW_CODEPOINTS"
+    read -p "New codpoints found in metadata. Append emojis.txt? [y/N]:" emojiAppend
+    if [[ "$emojiAppend" =~ ^[Yy] ]]; then
+        echo "$NEW_CODEPOINTS" >> $SCRIPT_DIR/supported-emojis/emojis.txt
+        echo "Updated ${SCRIPT_DIR}/supported-emojis/emojis.txt"
+    fi
+fi
+
+cp emoji_metadata.txt $SCRIPT_DIR/data/emoji_metadata.txt
+echo "Updated ${SCRIPT_DIR}/data/emoji_metadata.txt"
+cp NewFont.ttf $SCRIPT_DIR/font/NotoColorEmojiCompat.ttf
+echo "Updated ${SCRIPT_DIR}/font/NotoColorEmojiCompat.ttf"
+
+popd > /dev/null
+rm -rf $TMP_DIR
diff --git a/emoji-compat/font/NotoColorEmojiCompat.ttf b/emoji-compat/font/NotoColorEmojiCompat.ttf
index b518b8b..c48cd26 100644
--- a/emoji-compat/font/NotoColorEmojiCompat.ttf
+++ b/emoji-compat/font/NotoColorEmojiCompat.ttf
Binary files differ
diff --git a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java b/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java
deleted file mode 100644
index 49a1e2b..0000000
--- a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java
+++ /dev/null
@@ -1,160 +0,0 @@
-// CHECKSTYLE:OFF Generated code
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.text.emoji.flatbuffer;
-
-import com.google.flatbuffers.FlatBufferBuilder;
-import com.google.flatbuffers.Table;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * Automatically generated by the FlatBuffers compiler, do not modify.
- */
-@SuppressWarnings("unused")
-public final class MetadataItem extends Table {
-    public static MetadataItem getRootAsMetadataItem(ByteBuffer _bb) {
-        return getRootAsMetadataItem(_bb, new MetadataItem());
-    }
-
-    public static MetadataItem getRootAsMetadataItem(ByteBuffer _bb, MetadataItem obj) {
-        _bb.order(ByteOrder.LITTLE_ENDIAN);
-        return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb));
-    }
-
-    public void __init(int _i, ByteBuffer _bb) {
-        bb_pos = _i;
-        bb = _bb;
-    }
-
-    public MetadataItem __assign(int _i, ByteBuffer _bb) {
-        __init(_i, _bb);
-        return this;
-    }
-
-    public int id() {
-        int o = __offset(4);
-        return o != 0 ? bb.getInt(o + bb_pos) : 0;
-    }
-
-    public boolean emojiStyle() {
-        int o = __offset(6);
-        return o != 0 ? 0 != bb.get(o + bb_pos) : false;
-    }
-
-    public short sdkAdded() {
-        int o = __offset(8);
-        return o != 0 ? bb.getShort(o + bb_pos) : 0;
-    }
-
-    public short compatAdded() {
-        int o = __offset(10);
-        return o != 0 ? bb.getShort(o + bb_pos) : 0;
-    }
-
-    public short width() {
-        int o = __offset(12);
-        return o != 0 ? bb.getShort(o + bb_pos) : 0;
-    }
-
-    public short height() {
-        int o = __offset(14);
-        return o != 0 ? bb.getShort(o + bb_pos) : 0;
-    }
-
-    public int codepoints(int j) {
-        int o = __offset(16);
-        return o != 0 ? bb.getInt(__vector(o) + j * 4) : 0;
-    }
-
-    public int codepointsLength() {
-        int o = __offset(16);
-        return o != 0 ? __vector_len(o) : 0;
-    }
-
-    public ByteBuffer codepointsAsByteBuffer() {
-        return __vector_as_bytebuffer(16, 4);
-    }
-
-    public static int createMetadataItem(FlatBufferBuilder builder,
-            int id,
-            boolean emojiStyle,
-            short sdkAdded,
-            short compatAdded,
-            short width,
-            short height,
-            int codepointsOffset) {
-        builder.startObject(7);
-        MetadataItem.addCodepoints(builder, codepointsOffset);
-        MetadataItem.addId(builder, id);
-        MetadataItem.addHeight(builder, height);
-        MetadataItem.addWidth(builder, width);
-        MetadataItem.addCompatAdded(builder, compatAdded);
-        MetadataItem.addSdkAdded(builder, sdkAdded);
-        MetadataItem.addEmojiStyle(builder, emojiStyle);
-        return MetadataItem.endMetadataItem(builder);
-    }
-
-    public static void startMetadataItem(FlatBufferBuilder builder) {
-        builder.startObject(7);
-    }
-
-    public static void addId(FlatBufferBuilder builder, int id) {
-        builder.addInt(0, id, 0);
-    }
-
-    public static void addEmojiStyle(FlatBufferBuilder builder, boolean emojiStyle) {
-        builder.addBoolean(1, emojiStyle, false);
-    }
-
-    public static void addSdkAdded(FlatBufferBuilder builder, short sdkAdded) {
-        builder.addShort(2, sdkAdded, 0);
-    }
-
-    public static void addCompatAdded(FlatBufferBuilder builder, short compatAdded) {
-        builder.addShort(3, compatAdded, 0);
-    }
-
-    public static void addWidth(FlatBufferBuilder builder, short width) {
-        builder.addShort(4, width, 0);
-    }
-
-    public static void addHeight(FlatBufferBuilder builder, short height) {
-        builder.addShort(5, height, 0);
-    }
-
-    public static void addCodepoints(FlatBufferBuilder builder, int codepointsOffset) {
-        builder.addOffset(6, codepointsOffset, 0);
-    }
-
-    public static int createCodepointsVector(FlatBufferBuilder builder, int[] data) {
-        builder.startVector(4, data.length, 4);
-        for (int i = data.length - 1; i >= 0; i--) builder.addInt(data[i]);
-        return builder.endVector();
-    }
-
-    public static void startCodepointsVector(FlatBufferBuilder builder, int numElems) {
-        builder.startVector(4, numElems, 4);
-    }
-
-    public static int endMetadataItem(FlatBufferBuilder builder) {
-        int o = builder.endObject();
-        return o;
-    }
-}
-
diff --git a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataList.java b/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataList.java
deleted file mode 100644
index 97b12a4..0000000
--- a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataList.java
+++ /dev/null
@@ -1,124 +0,0 @@
-// CHECKSTYLE:OFF Generated code
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.text.emoji.flatbuffer;
-
-import com.google.flatbuffers.FlatBufferBuilder;
-import com.google.flatbuffers.Table;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * Automatically generated by the FlatBuffers compiler, do not modify.
- */
-@SuppressWarnings("unused")
-public final class MetadataList extends Table {
-    public static MetadataList getRootAsMetadataList(ByteBuffer _bb) {
-        return getRootAsMetadataList(_bb, new MetadataList());
-    }
-
-    public static MetadataList getRootAsMetadataList(ByteBuffer _bb, MetadataList obj) {
-        _bb.order(ByteOrder.LITTLE_ENDIAN);
-        return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb));
-    }
-
-    public void __init(int _i, ByteBuffer _bb) {
-        bb_pos = _i;
-        bb = _bb;
-    }
-
-    public MetadataList __assign(int _i, ByteBuffer _bb) {
-        __init(_i, _bb);
-        return this;
-    }
-
-    public int version() {
-        int o = __offset(4);
-        return o != 0 ? bb.getInt(o + bb_pos) : 0;
-    }
-
-    public MetadataItem list(int j) {
-        return list(new MetadataItem(), j);
-    }
-
-    public MetadataItem list(MetadataItem obj, int j) {
-        int o = __offset(6);
-        return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 4), bb) : null;
-    }
-
-    public int listLength() {
-        int o = __offset(6);
-        return o != 0 ? __vector_len(o) : 0;
-    }
-
-    public String sourceSha() {
-        int o = __offset(8);
-        return o != 0 ? __string(o + bb_pos) : null;
-    }
-
-    public ByteBuffer sourceShaAsByteBuffer() {
-        return __vector_as_bytebuffer(8, 1);
-    }
-
-    public static int createMetadataList(FlatBufferBuilder builder,
-            int version,
-            int listOffset,
-            int sourceShaOffset) {
-        builder.startObject(3);
-        MetadataList.addSourceSha(builder, sourceShaOffset);
-        MetadataList.addList(builder, listOffset);
-        MetadataList.addVersion(builder, version);
-        return MetadataList.endMetadataList(builder);
-    }
-
-    public static void startMetadataList(FlatBufferBuilder builder) {
-        builder.startObject(3);
-    }
-
-    public static void addVersion(FlatBufferBuilder builder, int version) {
-        builder.addInt(0, version, 0);
-    }
-
-    public static void addList(FlatBufferBuilder builder, int listOffset) {
-        builder.addOffset(1, listOffset, 0);
-    }
-
-    public static int createListVector(FlatBufferBuilder builder, int[] data) {
-        builder.startVector(4, data.length, 4);
-        for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]);
-        return builder.endVector();
-    }
-
-    public static void startListVector(FlatBufferBuilder builder, int numElems) {
-        builder.startVector(4, numElems, 4);
-    }
-
-    public static void addSourceSha(FlatBufferBuilder builder, int sourceShaOffset) {
-        builder.addOffset(2, sourceShaOffset, 0);
-    }
-
-    public static int endMetadataList(FlatBufferBuilder builder) {
-        int o = builder.endObject();
-        return o;
-    }
-
-    public static void finishMetadataListBuffer(FlatBufferBuilder builder, int offset) {
-        builder.finish(offset);
-    }
-}
-
diff --git a/emoji-compat/supported-emojis/emojis.txt b/emoji-compat/supported-emojis/emojis.txt
index 0e2ddc2..3e5eb9e 100644
--- a/emoji-compat/supported-emojis/emojis.txt
+++ b/emoji-compat/supported-emojis/emojis.txt
@@ -670,6 +670,7 @@
 1F3F0
 1F3F3 FE0F
 1F3F3 FE0F 200D 1F308
+1F3F3 FE0F 200D 26A7 FE0F
 1F3F4
 1F3F4 200D 2620 FE0F
 1F3F4 E0067 E0062 E0065 E006E E0067 E007F
@@ -694,6 +695,7 @@
 1F406
 1F407
 1F408
+1F408 200D 2B1B
 1F408 FE0F
 1F409
 1F40A
@@ -708,6 +710,7 @@
 1F413
 1F414
 1F415
+1F415 200D 1F9BA
 1F415 FE0F
 1F416
 1F417
@@ -749,6 +752,7 @@
 1F439
 1F43A
 1F43B
+1F43B 200D 2744 FE0F
 1F43C
 1F43D
 1F43E
@@ -881,6 +885,7 @@
 1F468 1F3FB
 1F468 1F3FB 200D 1F33E
 1F468 1F3FB 200D 1F373
+1F468 1F3FB 200D 1F37C
 1F468 1F3FB 200D 1F393
 1F468 1F3FB 200D 1F3A4
 1F468 1F3FB 200D 1F3A8
@@ -892,16 +897,34 @@
 1F468 1F3FB 200D 1F52C
 1F468 1F3FB 200D 1F680
 1F468 1F3FB 200D 1F692
+1F468 1F3FB 200D 1F91D 200D 1F468 1F3FC
+1F468 1F3FB 200D 1F91D 200D 1F468 1F3FD
+1F468 1F3FB 200D 1F91D 200D 1F468 1F3FE
+1F468 1F3FB 200D 1F91D 200D 1F468 1F3FF
+1F468 1F3FB 200D 1F9AF
 1F468 1F3FB 200D 1F9B0
 1F468 1F3FB 200D 1F9B1
 1F468 1F3FB 200D 1F9B2
 1F468 1F3FB 200D 1F9B3
+1F468 1F3FB 200D 1F9BC
+1F468 1F3FB 200D 1F9BD
 1F468 1F3FB 200D 2695 FE0F
 1F468 1F3FB 200D 2696 FE0F
 1F468 1F3FB 200D 2708 FE0F
+1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB
+1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC
+1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD
+1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE
+1F468 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF
+1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F468 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
 1F468 1F3FC
 1F468 1F3FC 200D 1F33E
 1F468 1F3FC 200D 1F373
+1F468 1F3FC 200D 1F37C
 1F468 1F3FC 200D 1F393
 1F468 1F3FC 200D 1F3A4
 1F468 1F3FC 200D 1F3A8
@@ -913,16 +936,34 @@
 1F468 1F3FC 200D 1F52C
 1F468 1F3FC 200D 1F680
 1F468 1F3FC 200D 1F692
+1F468 1F3FC 200D 1F91D 200D 1F468 1F3FB
+1F468 1F3FC 200D 1F91D 200D 1F468 1F3FD
+1F468 1F3FC 200D 1F91D 200D 1F468 1F3FE
+1F468 1F3FC 200D 1F91D 200D 1F468 1F3FF
+1F468 1F3FC 200D 1F9AF
 1F468 1F3FC 200D 1F9B0
 1F468 1F3FC 200D 1F9B1
 1F468 1F3FC 200D 1F9B2
 1F468 1F3FC 200D 1F9B3
+1F468 1F3FC 200D 1F9BC
+1F468 1F3FC 200D 1F9BD
 1F468 1F3FC 200D 2695 FE0F
 1F468 1F3FC 200D 2696 FE0F
 1F468 1F3FC 200D 2708 FE0F
+1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB
+1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC
+1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD
+1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE
+1F468 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF
+1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F468 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
 1F468 1F3FD
 1F468 1F3FD 200D 1F33E
 1F468 1F3FD 200D 1F373
+1F468 1F3FD 200D 1F37C
 1F468 1F3FD 200D 1F393
 1F468 1F3FD 200D 1F3A4
 1F468 1F3FD 200D 1F3A8
@@ -934,16 +975,34 @@
 1F468 1F3FD 200D 1F52C
 1F468 1F3FD 200D 1F680
 1F468 1F3FD 200D 1F692
+1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB
+1F468 1F3FD 200D 1F91D 200D 1F468 1F3FC
+1F468 1F3FD 200D 1F91D 200D 1F468 1F3FE
+1F468 1F3FD 200D 1F91D 200D 1F468 1F3FF
+1F468 1F3FD 200D 1F9AF
 1F468 1F3FD 200D 1F9B0
 1F468 1F3FD 200D 1F9B1
 1F468 1F3FD 200D 1F9B2
 1F468 1F3FD 200D 1F9B3
+1F468 1F3FD 200D 1F9BC
+1F468 1F3FD 200D 1F9BD
 1F468 1F3FD 200D 2695 FE0F
 1F468 1F3FD 200D 2696 FE0F
 1F468 1F3FD 200D 2708 FE0F
+1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB
+1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC
+1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD
+1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE
+1F468 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF
+1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F468 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
 1F468 1F3FE
 1F468 1F3FE 200D 1F33E
 1F468 1F3FE 200D 1F373
+1F468 1F3FE 200D 1F37C
 1F468 1F3FE 200D 1F393
 1F468 1F3FE 200D 1F3A4
 1F468 1F3FE 200D 1F3A8
@@ -955,16 +1014,34 @@
 1F468 1F3FE 200D 1F52C
 1F468 1F3FE 200D 1F680
 1F468 1F3FE 200D 1F692
+1F468 1F3FE 200D 1F91D 200D 1F468 1F3FB
+1F468 1F3FE 200D 1F91D 200D 1F468 1F3FC
+1F468 1F3FE 200D 1F91D 200D 1F468 1F3FD
+1F468 1F3FE 200D 1F91D 200D 1F468 1F3FF
+1F468 1F3FE 200D 1F9AF
 1F468 1F3FE 200D 1F9B0
 1F468 1F3FE 200D 1F9B1
 1F468 1F3FE 200D 1F9B2
 1F468 1F3FE 200D 1F9B3
+1F468 1F3FE 200D 1F9BC
+1F468 1F3FE 200D 1F9BD
 1F468 1F3FE 200D 2695 FE0F
 1F468 1F3FE 200D 2696 FE0F
 1F468 1F3FE 200D 2708 FE0F
+1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB
+1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC
+1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD
+1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE
+1F468 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF
+1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F468 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
 1F468 1F3FF
 1F468 1F3FF 200D 1F33E
 1F468 1F3FF 200D 1F373
+1F468 1F3FF 200D 1F37C
 1F468 1F3FF 200D 1F393
 1F468 1F3FF 200D 1F3A4
 1F468 1F3FF 200D 1F3A8
@@ -976,15 +1053,33 @@
 1F468 1F3FF 200D 1F52C
 1F468 1F3FF 200D 1F680
 1F468 1F3FF 200D 1F692
+1F468 1F3FF 200D 1F91D 200D 1F468 1F3FB
+1F468 1F3FF 200D 1F91D 200D 1F468 1F3FC
+1F468 1F3FF 200D 1F91D 200D 1F468 1F3FD
+1F468 1F3FF 200D 1F91D 200D 1F468 1F3FE
+1F468 1F3FF 200D 1F9AF
 1F468 1F3FF 200D 1F9B0
 1F468 1F3FF 200D 1F9B1
 1F468 1F3FF 200D 1F9B2
 1F468 1F3FF 200D 1F9B3
+1F468 1F3FF 200D 1F9BC
+1F468 1F3FF 200D 1F9BD
 1F468 1F3FF 200D 2695 FE0F
 1F468 1F3FF 200D 2696 FE0F
 1F468 1F3FF 200D 2708 FE0F
+1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB
+1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC
+1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD
+1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE
+1F468 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF
+1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F468 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
 1F468 200D 1F33E
 1F468 200D 1F373
+1F468 200D 1F37C
 1F468 200D 1F393
 1F468 200D 1F3A4
 1F468 200D 1F3A8
@@ -1011,10 +1106,13 @@
 1F468 200D 1F52C
 1F468 200D 1F680
 1F468 200D 1F692
+1F468 200D 1F9AF
 1F468 200D 1F9B0
 1F468 200D 1F9B1
 1F468 200D 1F9B2
 1F468 200D 1F9B3
+1F468 200D 1F9BC
+1F468 200D 1F9BD
 1F468 200D 2695 FE0F
 1F468 200D 2696 FE0F
 1F468 200D 2708 FE0F
@@ -1024,6 +1122,7 @@
 1F469 1F3FB
 1F469 1F3FB 200D 1F33E
 1F469 1F3FB 200D 1F373
+1F469 1F3FB 200D 1F37C
 1F469 1F3FB 200D 1F393
 1F469 1F3FB 200D 1F3A4
 1F469 1F3FB 200D 1F3A8
@@ -1035,16 +1134,48 @@
 1F469 1F3FB 200D 1F52C
 1F469 1F3FB 200D 1F680
 1F469 1F3FB 200D 1F692
+1F469 1F3FB 200D 1F91D 200D 1F468 1F3FC
+1F469 1F3FB 200D 1F91D 200D 1F468 1F3FD
+1F469 1F3FB 200D 1F91D 200D 1F468 1F3FE
+1F469 1F3FB 200D 1F91D 200D 1F468 1F3FF
+1F469 1F3FB 200D 1F91D 200D 1F469 1F3FC
+1F469 1F3FB 200D 1F91D 200D 1F469 1F3FD
+1F469 1F3FB 200D 1F91D 200D 1F469 1F3FE
+1F469 1F3FB 200D 1F91D 200D 1F469 1F3FF
+1F469 1F3FB 200D 1F9AF
 1F469 1F3FB 200D 1F9B0
 1F469 1F3FB 200D 1F9B1
 1F469 1F3FB 200D 1F9B2
 1F469 1F3FB 200D 1F9B3
+1F469 1F3FB 200D 1F9BC
+1F469 1F3FB 200D 1F9BD
 1F469 1F3FB 200D 2695 FE0F
 1F469 1F3FB 200D 2696 FE0F
 1F469 1F3FB 200D 2708 FE0F
+1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FB
+1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FC
+1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FD
+1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FE
+1F469 1F3FB 200D 2764 FE0F 200D 1F468 1F3FF
+1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FB
+1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FC
+1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FD
+1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FE
+1F469 1F3FB 200D 2764 FE0F 200D 1F469 1F3FF
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE
+1F469 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF
 1F469 1F3FC
 1F469 1F3FC 200D 1F33E
 1F469 1F3FC 200D 1F373
+1F469 1F3FC 200D 1F37C
 1F469 1F3FC 200D 1F393
 1F469 1F3FC 200D 1F3A4
 1F469 1F3FC 200D 1F3A8
@@ -1056,16 +1187,48 @@
 1F469 1F3FC 200D 1F52C
 1F469 1F3FC 200D 1F680
 1F469 1F3FC 200D 1F692
+1F469 1F3FC 200D 1F91D 200D 1F468 1F3FB
+1F469 1F3FC 200D 1F91D 200D 1F468 1F3FD
+1F469 1F3FC 200D 1F91D 200D 1F468 1F3FE
+1F469 1F3FC 200D 1F91D 200D 1F468 1F3FF
+1F469 1F3FC 200D 1F91D 200D 1F469 1F3FB
+1F469 1F3FC 200D 1F91D 200D 1F469 1F3FD
+1F469 1F3FC 200D 1F91D 200D 1F469 1F3FE
+1F469 1F3FC 200D 1F91D 200D 1F469 1F3FF
+1F469 1F3FC 200D 1F9AF
 1F469 1F3FC 200D 1F9B0
 1F469 1F3FC 200D 1F9B1
 1F469 1F3FC 200D 1F9B2
 1F469 1F3FC 200D 1F9B3
+1F469 1F3FC 200D 1F9BC
+1F469 1F3FC 200D 1F9BD
 1F469 1F3FC 200D 2695 FE0F
 1F469 1F3FC 200D 2696 FE0F
 1F469 1F3FC 200D 2708 FE0F
+1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FB
+1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FC
+1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FD
+1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FE
+1F469 1F3FC 200D 2764 FE0F 200D 1F468 1F3FF
+1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FB
+1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FC
+1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FD
+1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FE
+1F469 1F3FC 200D 2764 FE0F 200D 1F469 1F3FF
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE
+1F469 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF
 1F469 1F3FD
 1F469 1F3FD 200D 1F33E
 1F469 1F3FD 200D 1F373
+1F469 1F3FD 200D 1F37C
 1F469 1F3FD 200D 1F393
 1F469 1F3FD 200D 1F3A4
 1F469 1F3FD 200D 1F3A8
@@ -1077,16 +1240,48 @@
 1F469 1F3FD 200D 1F52C
 1F469 1F3FD 200D 1F680
 1F469 1F3FD 200D 1F692
+1F469 1F3FD 200D 1F91D 200D 1F468 1F3FB
+1F469 1F3FD 200D 1F91D 200D 1F468 1F3FC
+1F469 1F3FD 200D 1F91D 200D 1F468 1F3FE
+1F469 1F3FD 200D 1F91D 200D 1F468 1F3FF
+1F469 1F3FD 200D 1F91D 200D 1F469 1F3FB
+1F469 1F3FD 200D 1F91D 200D 1F469 1F3FC
+1F469 1F3FD 200D 1F91D 200D 1F469 1F3FE
+1F469 1F3FD 200D 1F91D 200D 1F469 1F3FF
+1F469 1F3FD 200D 1F9AF
 1F469 1F3FD 200D 1F9B0
 1F469 1F3FD 200D 1F9B1
 1F469 1F3FD 200D 1F9B2
 1F469 1F3FD 200D 1F9B3
+1F469 1F3FD 200D 1F9BC
+1F469 1F3FD 200D 1F9BD
 1F469 1F3FD 200D 2695 FE0F
 1F469 1F3FD 200D 2696 FE0F
 1F469 1F3FD 200D 2708 FE0F
+1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FB
+1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FC
+1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FD
+1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FE
+1F469 1F3FD 200D 2764 FE0F 200D 1F468 1F3FF
+1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FB
+1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FC
+1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FD
+1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FE
+1F469 1F3FD 200D 2764 FE0F 200D 1F469 1F3FF
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE
+1F469 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF
 1F469 1F3FE
 1F469 1F3FE 200D 1F33E
 1F469 1F3FE 200D 1F373
+1F469 1F3FE 200D 1F37C
 1F469 1F3FE 200D 1F393
 1F469 1F3FE 200D 1F3A4
 1F469 1F3FE 200D 1F3A8
@@ -1098,16 +1293,48 @@
 1F469 1F3FE 200D 1F52C
 1F469 1F3FE 200D 1F680
 1F469 1F3FE 200D 1F692
+1F469 1F3FE 200D 1F91D 200D 1F468 1F3FB
+1F469 1F3FE 200D 1F91D 200D 1F468 1F3FC
+1F469 1F3FE 200D 1F91D 200D 1F468 1F3FD
+1F469 1F3FE 200D 1F91D 200D 1F468 1F3FF
+1F469 1F3FE 200D 1F91D 200D 1F469 1F3FB
+1F469 1F3FE 200D 1F91D 200D 1F469 1F3FC
+1F469 1F3FE 200D 1F91D 200D 1F469 1F3FD
+1F469 1F3FE 200D 1F91D 200D 1F469 1F3FF
+1F469 1F3FE 200D 1F9AF
 1F469 1F3FE 200D 1F9B0
 1F469 1F3FE 200D 1F9B1
 1F469 1F3FE 200D 1F9B2
 1F469 1F3FE 200D 1F9B3
+1F469 1F3FE 200D 1F9BC
+1F469 1F3FE 200D 1F9BD
 1F469 1F3FE 200D 2695 FE0F
 1F469 1F3FE 200D 2696 FE0F
 1F469 1F3FE 200D 2708 FE0F
+1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FB
+1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FC
+1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FD
+1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FE
+1F469 1F3FE 200D 2764 FE0F 200D 1F468 1F3FF
+1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FB
+1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FC
+1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FD
+1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FE
+1F469 1F3FE 200D 2764 FE0F 200D 1F469 1F3FF
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE
+1F469 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF
 1F469 1F3FF
 1F469 1F3FF 200D 1F33E
 1F469 1F3FF 200D 1F373
+1F469 1F3FF 200D 1F37C
 1F469 1F3FF 200D 1F393
 1F469 1F3FF 200D 1F3A4
 1F469 1F3FF 200D 1F3A8
@@ -1119,15 +1346,47 @@
 1F469 1F3FF 200D 1F52C
 1F469 1F3FF 200D 1F680
 1F469 1F3FF 200D 1F692
+1F469 1F3FF 200D 1F91D 200D 1F468 1F3FB
+1F469 1F3FF 200D 1F91D 200D 1F468 1F3FC
+1F469 1F3FF 200D 1F91D 200D 1F468 1F3FD
+1F469 1F3FF 200D 1F91D 200D 1F468 1F3FE
+1F469 1F3FF 200D 1F91D 200D 1F469 1F3FB
+1F469 1F3FF 200D 1F91D 200D 1F469 1F3FC
+1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD
+1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE
+1F469 1F3FF 200D 1F9AF
 1F469 1F3FF 200D 1F9B0
 1F469 1F3FF 200D 1F9B1
 1F469 1F3FF 200D 1F9B2
 1F469 1F3FF 200D 1F9B3
+1F469 1F3FF 200D 1F9BC
+1F469 1F3FF 200D 1F9BD
 1F469 1F3FF 200D 2695 FE0F
 1F469 1F3FF 200D 2696 FE0F
 1F469 1F3FF 200D 2708 FE0F
+1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FB
+1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FC
+1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FD
+1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FE
+1F469 1F3FF 200D 2764 FE0F 200D 1F468 1F3FF
+1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FB
+1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FC
+1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FD
+1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FE
+1F469 1F3FF 200D 2764 FE0F 200D 1F469 1F3FF
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FB
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FC
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FD
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FE
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F468 1F3FF
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FB
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FC
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FD
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FE
+1F469 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F469 1F3FF
 1F469 200D 1F33E
 1F469 200D 1F373
+1F469 200D 1F37C
 1F469 200D 1F393
 1F469 200D 1F3A4
 1F469 200D 1F3A8
@@ -1149,10 +1408,13 @@
 1F469 200D 1F52C
 1F469 200D 1F680
 1F469 200D 1F692
+1F469 200D 1F9AF
 1F469 200D 1F9B0
 1F469 200D 1F9B1
 1F469 200D 1F9B2
 1F469 200D 1F9B3
+1F469 200D 1F9BC
+1F469 200D 1F9BD
 1F469 200D 2695 FE0F
 1F469 200D 2696 FE0F
 1F469 200D 2708 FE0F
@@ -1163,8 +1425,23 @@
 1F46A
 1F46A FE0F
 1F46B
+1F46B 1F3FB
+1F46B 1F3FC
+1F46B 1F3FD
+1F46B 1F3FE
+1F46B 1F3FF
 1F46C
+1F46C 1F3FB
+1F46C 1F3FC
+1F46C 1F3FD
+1F46C 1F3FE
+1F46C 1F3FF
 1F46D
+1F46D 1F3FB
+1F46D 1F3FC
+1F46D 1F3FD
+1F46D 1F3FE
+1F46D 1F3FF
 1F46E
 1F46E 1F3FB
 1F46E 1F3FB 200D 2640 FE0F
@@ -1188,10 +1465,22 @@
 1F46F 200D 2642 FE0F
 1F470
 1F470 1F3FB
+1F470 1F3FB 200D 2640 FE0F
+1F470 1F3FB 200D 2642 FE0F
 1F470 1F3FC
+1F470 1F3FC 200D 2640 FE0F
+1F470 1F3FC 200D 2642 FE0F
 1F470 1F3FD
+1F470 1F3FD 200D 2640 FE0F
+1F470 1F3FD 200D 2642 FE0F
 1F470 1F3FE
+1F470 1F3FE 200D 2640 FE0F
+1F470 1F3FE 200D 2642 FE0F
 1F470 1F3FF
+1F470 1F3FF 200D 2640 FE0F
+1F470 1F3FF 200D 2642 FE0F
+1F470 200D 2640 FE0F
+1F470 200D 2642 FE0F
 1F471
 1F471 1F3FB
 1F471 1F3FB 200D 2640 FE0F
@@ -1383,8 +1672,18 @@
 1F48D
 1F48E
 1F48F
+1F48F 1F3FB
+1F48F 1F3FC
+1F48F 1F3FD
+1F48F 1F3FE
+1F48F 1F3FF
 1F490
 1F491
+1F491 1F3FB
+1F491 1F3FC
+1F491 1F3FD
+1F491 1F3FE
+1F491 1F3FF
 1F492
 1F493
 1F494
@@ -1772,6 +2071,7 @@
 1F62C
 1F62D
 1F62E
+1F62E 200D 1F4A8
 1F62F
 1F630
 1F631
@@ -1779,7 +2079,9 @@
 1F633
 1F634
 1F635
+1F635 200D 1F4AB
 1F636
+1F636 200D 1F32B FE0F
 1F637
 1F638
 1F639
@@ -2083,6 +2385,12 @@
 1F6D0
 1F6D1
 1F6D2
+1F6D5
+1F6D6
+1F6D7
+1F6DD
+1F6DE
+1F6DF
 1F6E0 FE0F
 1F6E1 FE0F
 1F6E2 FE0F
@@ -2100,6 +2408,36 @@
 1F6F7
 1F6F8
 1F6F9
+1F6FA
+1F6FB
+1F6FC
+1F7E0
+1F7E1
+1F7E2
+1F7E3
+1F7E4
+1F7E5
+1F7E6
+1F7E7
+1F7E8
+1F7E9
+1F7EA
+1F7EB
+1F7F0
+1F90C
+1F90C 1F3FB
+1F90C 1F3FC
+1F90C 1F3FD
+1F90C 1F3FE
+1F90C 1F3FF
+1F90D
+1F90E
+1F90F
+1F90F 1F3FB
+1F90F 1F3FC
+1F90F 1F3FD
+1F90F 1F3FE
+1F90F 1F3FF
 1F910
 1F911
 1F912
@@ -2221,10 +2559,22 @@
 1F934 1F3FF
 1F935
 1F935 1F3FB
+1F935 1F3FB 200D 2640 FE0F
+1F935 1F3FB 200D 2642 FE0F
 1F935 1F3FC
+1F935 1F3FC 200D 2640 FE0F
+1F935 1F3FC 200D 2642 FE0F
 1F935 1F3FD
+1F935 1F3FD 200D 2640 FE0F
+1F935 1F3FD 200D 2642 FE0F
 1F935 1F3FE
+1F935 1F3FE 200D 2640 FE0F
+1F935 1F3FE 200D 2642 FE0F
 1F935 1F3FF
+1F935 1F3FF 200D 2640 FE0F
+1F935 1F3FF 200D 2642 FE0F
+1F935 200D 2640 FE0F
+1F935 200D 2642 FE0F
 1F936
 1F936 1F3FB
 1F936 1F3FC
@@ -2340,6 +2690,7 @@
 1F93E 1F3FF 200D 2642 FE0F
 1F93E 200D 2640 FE0F
 1F93E 200D 2642 FE0F
+1F93F
 1F940
 1F941
 1F942
@@ -2388,11 +2739,22 @@
 1F96E
 1F96F
 1F970
+1F971
+1F972
 1F973
 1F974
 1F975
 1F976
+1F977
+1F977 1F3FB
+1F977 1F3FC
+1F977 1F3FD
+1F977 1F3FE
+1F977 1F3FF
+1F978
+1F979
 1F97A
+1F97B
 1F97C
 1F97D
 1F97E
@@ -2432,6 +2794,19 @@
 1F9A0
 1F9A1
 1F9A2
+1F9A3
+1F9A4
+1F9A5
+1F9A6
+1F9A7
+1F9A8
+1F9A9
+1F9AA
+1F9AB
+1F9AC
+1F9AD
+1F9AE
+1F9AF
 1F9B0
 1F9B1
 1F9B2
@@ -2486,16 +2861,307 @@
 1F9B9 1F3FF 200D 2642 FE0F
 1F9B9 200D 2640 FE0F
 1F9B9 200D 2642 FE0F
+1F9BA
+1F9BB
+1F9BB 1F3FB
+1F9BB 1F3FC
+1F9BB 1F3FD
+1F9BB 1F3FE
+1F9BB 1F3FF
+1F9BC
+1F9BD
+1F9BE
+1F9BF
 1F9C0
 1F9C1
 1F9C2
+1F9C3
+1F9C4
+1F9C5
+1F9C6
+1F9C7
+1F9C8
+1F9C9
+1F9CA
+1F9CB
+1F9CC
+1F9CD
+1F9CD 1F3FB
+1F9CD 1F3FB 200D 2640 FE0F
+1F9CD 1F3FB 200D 2642 FE0F
+1F9CD 1F3FC
+1F9CD 1F3FC 200D 2640 FE0F
+1F9CD 1F3FC 200D 2642 FE0F
+1F9CD 1F3FD
+1F9CD 1F3FD 200D 2640 FE0F
+1F9CD 1F3FD 200D 2642 FE0F
+1F9CD 1F3FE
+1F9CD 1F3FE 200D 2640 FE0F
+1F9CD 1F3FE 200D 2642 FE0F
+1F9CD 1F3FF
+1F9CD 1F3FF 200D 2640 FE0F
+1F9CD 1F3FF 200D 2642 FE0F
+1F9CD 200D 2640 FE0F
+1F9CD 200D 2642 FE0F
+1F9CE
+1F9CE 1F3FB
+1F9CE 1F3FB 200D 2640 FE0F
+1F9CE 1F3FB 200D 2642 FE0F
+1F9CE 1F3FC
+1F9CE 1F3FC 200D 2640 FE0F
+1F9CE 1F3FC 200D 2642 FE0F
+1F9CE 1F3FD
+1F9CE 1F3FD 200D 2640 FE0F
+1F9CE 1F3FD 200D 2642 FE0F
+1F9CE 1F3FE
+1F9CE 1F3FE 200D 2640 FE0F
+1F9CE 1F3FE 200D 2642 FE0F
+1F9CE 1F3FF
+1F9CE 1F3FF 200D 2640 FE0F
+1F9CE 1F3FF 200D 2642 FE0F
+1F9CE 200D 2640 FE0F
+1F9CE 200D 2642 FE0F
+1F9CF
+1F9CF 1F3FB
+1F9CF 1F3FB 200D 2640 FE0F
+1F9CF 1F3FB 200D 2642 FE0F
+1F9CF 1F3FC
+1F9CF 1F3FC 200D 2640 FE0F
+1F9CF 1F3FC 200D 2642 FE0F
+1F9CF 1F3FD
+1F9CF 1F3FD 200D 2640 FE0F
+1F9CF 1F3FD 200D 2642 FE0F
+1F9CF 1F3FE
+1F9CF 1F3FE 200D 2640 FE0F
+1F9CF 1F3FE 200D 2642 FE0F
+1F9CF 1F3FF
+1F9CF 1F3FF 200D 2640 FE0F
+1F9CF 1F3FF 200D 2642 FE0F
+1F9CF 200D 2640 FE0F
+1F9CF 200D 2642 FE0F
 1F9D0
 1F9D1
 1F9D1 1F3FB
+1F9D1 1F3FB 200D 1F33E
+1F9D1 1F3FB 200D 1F373
+1F9D1 1F3FB 200D 1F37C
+1F9D1 1F3FB 200D 1F384
+1F9D1 1F3FB 200D 1F393
+1F9D1 1F3FB 200D 1F3A4
+1F9D1 1F3FB 200D 1F3A8
+1F9D1 1F3FB 200D 1F3EB
+1F9D1 1F3FB 200D 1F3ED
+1F9D1 1F3FB 200D 1F4BB
+1F9D1 1F3FB 200D 1F4BC
+1F9D1 1F3FB 200D 1F527
+1F9D1 1F3FB 200D 1F52C
+1F9D1 1F3FB 200D 1F680
+1F9D1 1F3FB 200D 1F692
+1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB
+1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FC
+1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FD
+1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FE
+1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FF
+1F9D1 1F3FB 200D 1F9AF
+1F9D1 1F3FB 200D 1F9B0
+1F9D1 1F3FB 200D 1F9B1
+1F9D1 1F3FB 200D 1F9B2
+1F9D1 1F3FB 200D 1F9B3
+1F9D1 1F3FB 200D 1F9BC
+1F9D1 1F3FB 200D 1F9BD
+1F9D1 1F3FB 200D 2695 FE0F
+1F9D1 1F3FB 200D 2696 FE0F
+1F9D1 1F3FB 200D 2708 FE0F
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FC
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FD
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FE
+1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FF
 1F9D1 1F3FC
+1F9D1 1F3FC 200D 1F33E
+1F9D1 1F3FC 200D 1F373
+1F9D1 1F3FC 200D 1F37C
+1F9D1 1F3FC 200D 1F384
+1F9D1 1F3FC 200D 1F393
+1F9D1 1F3FC 200D 1F3A4
+1F9D1 1F3FC 200D 1F3A8
+1F9D1 1F3FC 200D 1F3EB
+1F9D1 1F3FC 200D 1F3ED
+1F9D1 1F3FC 200D 1F4BB
+1F9D1 1F3FC 200D 1F4BC
+1F9D1 1F3FC 200D 1F527
+1F9D1 1F3FC 200D 1F52C
+1F9D1 1F3FC 200D 1F680
+1F9D1 1F3FC 200D 1F692
+1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB
+1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC
+1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FD
+1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FE
+1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FF
+1F9D1 1F3FC 200D 1F9AF
+1F9D1 1F3FC 200D 1F9B0
+1F9D1 1F3FC 200D 1F9B1
+1F9D1 1F3FC 200D 1F9B2
+1F9D1 1F3FC 200D 1F9B3
+1F9D1 1F3FC 200D 1F9BC
+1F9D1 1F3FC 200D 1F9BD
+1F9D1 1F3FC 200D 2695 FE0F
+1F9D1 1F3FC 200D 2696 FE0F
+1F9D1 1F3FC 200D 2708 FE0F
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FB
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FD
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FE
+1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FF
 1F9D1 1F3FD
+1F9D1 1F3FD 200D 1F33E
+1F9D1 1F3FD 200D 1F373
+1F9D1 1F3FD 200D 1F37C
+1F9D1 1F3FD 200D 1F384
+1F9D1 1F3FD 200D 1F393
+1F9D1 1F3FD 200D 1F3A4
+1F9D1 1F3FD 200D 1F3A8
+1F9D1 1F3FD 200D 1F3EB
+1F9D1 1F3FD 200D 1F3ED
+1F9D1 1F3FD 200D 1F4BB
+1F9D1 1F3FD 200D 1F4BC
+1F9D1 1F3FD 200D 1F527
+1F9D1 1F3FD 200D 1F52C
+1F9D1 1F3FD 200D 1F680
+1F9D1 1F3FD 200D 1F692
+1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB
+1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC
+1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD
+1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FE
+1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FF
+1F9D1 1F3FD 200D 1F9AF
+1F9D1 1F3FD 200D 1F9B0
+1F9D1 1F3FD 200D 1F9B1
+1F9D1 1F3FD 200D 1F9B2
+1F9D1 1F3FD 200D 1F9B3
+1F9D1 1F3FD 200D 1F9BC
+1F9D1 1F3FD 200D 1F9BD
+1F9D1 1F3FD 200D 2695 FE0F
+1F9D1 1F3FD 200D 2696 FE0F
+1F9D1 1F3FD 200D 2708 FE0F
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FB
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FC
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FE
+1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FF
 1F9D1 1F3FE
+1F9D1 1F3FE 200D 1F33E
+1F9D1 1F3FE 200D 1F373
+1F9D1 1F3FE 200D 1F37C
+1F9D1 1F3FE 200D 1F384
+1F9D1 1F3FE 200D 1F393
+1F9D1 1F3FE 200D 1F3A4
+1F9D1 1F3FE 200D 1F3A8
+1F9D1 1F3FE 200D 1F3EB
+1F9D1 1F3FE 200D 1F3ED
+1F9D1 1F3FE 200D 1F4BB
+1F9D1 1F3FE 200D 1F4BC
+1F9D1 1F3FE 200D 1F527
+1F9D1 1F3FE 200D 1F52C
+1F9D1 1F3FE 200D 1F680
+1F9D1 1F3FE 200D 1F692
+1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB
+1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC
+1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD
+1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FE
+1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FF
+1F9D1 1F3FE 200D 1F9AF
+1F9D1 1F3FE 200D 1F9B0
+1F9D1 1F3FE 200D 1F9B1
+1F9D1 1F3FE 200D 1F9B2
+1F9D1 1F3FE 200D 1F9B3
+1F9D1 1F3FE 200D 1F9BC
+1F9D1 1F3FE 200D 1F9BD
+1F9D1 1F3FE 200D 2695 FE0F
+1F9D1 1F3FE 200D 2696 FE0F
+1F9D1 1F3FE 200D 2708 FE0F
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FF
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FB
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FC
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FD
+1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FF
 1F9D1 1F3FF
+1F9D1 1F3FF 200D 1F33E
+1F9D1 1F3FF 200D 1F373
+1F9D1 1F3FF 200D 1F37C
+1F9D1 1F3FF 200D 1F384
+1F9D1 1F3FF 200D 1F393
+1F9D1 1F3FF 200D 1F3A4
+1F9D1 1F3FF 200D 1F3A8
+1F9D1 1F3FF 200D 1F3EB
+1F9D1 1F3FF 200D 1F3ED
+1F9D1 1F3FF 200D 1F4BB
+1F9D1 1F3FF 200D 1F4BC
+1F9D1 1F3FF 200D 1F527
+1F9D1 1F3FF 200D 1F52C
+1F9D1 1F3FF 200D 1F680
+1F9D1 1F3FF 200D 1F692
+1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB
+1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC
+1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD
+1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FE
+1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FF
+1F9D1 1F3FF 200D 1F9AF
+1F9D1 1F3FF 200D 1F9B0
+1F9D1 1F3FF 200D 1F9B1
+1F9D1 1F3FF 200D 1F9B2
+1F9D1 1F3FF 200D 1F9B3
+1F9D1 1F3FF 200D 1F9BC
+1F9D1 1F3FF 200D 1F9BD
+1F9D1 1F3FF 200D 2695 FE0F
+1F9D1 1F3FF 200D 2696 FE0F
+1F9D1 1F3FF 200D 2708 FE0F
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FB
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FB
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FC
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FD
+1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FE
+1F9D1 200D 1F33E
+1F9D1 200D 1F373
+1F9D1 200D 1F37C
+1F9D1 200D 1F384
+1F9D1 200D 1F393
+1F9D1 200D 1F3A4
+1F9D1 200D 1F3A8
+1F9D1 200D 1F3EB
+1F9D1 200D 1F3ED
+1F9D1 200D 1F4BB
+1F9D1 200D 1F4BC
+1F9D1 200D 1F527
+1F9D1 200D 1F52C
+1F9D1 200D 1F680
+1F9D1 200D 1F692
+1F9D1 200D 1F91D 200D 1F9D1
+1F9D1 200D 1F9AF
+1F9D1 200D 1F9B0
+1F9D1 200D 1F9B1
+1F9D1 200D 1F9B2
+1F9D1 200D 1F9B3
+1F9D1 200D 1F9BC
+1F9D1 200D 1F9BD
+1F9D1 200D 2695 FE0F
+1F9D1 200D 2696 FE0F
+1F9D1 200D 2708 FE0F
 1F9D2
 1F9D2 1F3FB
 1F9D2 1F3FC
@@ -2510,10 +3176,22 @@
 1F9D3 1F3FF
 1F9D4
 1F9D4 1F3FB
+1F9D4 1F3FB 200D 2640 FE0F
+1F9D4 1F3FB 200D 2642 FE0F
 1F9D4 1F3FC
+1F9D4 1F3FC 200D 2640 FE0F
+1F9D4 1F3FC 200D 2642 FE0F
 1F9D4 1F3FD
+1F9D4 1F3FD 200D 2640 FE0F
+1F9D4 1F3FD 200D 2642 FE0F
 1F9D4 1F3FE
+1F9D4 1F3FE 200D 2640 FE0F
+1F9D4 1F3FE 200D 2642 FE0F
 1F9D4 1F3FF
+1F9D4 1F3FF 200D 2640 FE0F
+1F9D4 1F3FF 200D 2642 FE0F
+1F9D4 200D 2640 FE0F
+1F9D4 200D 2642 FE0F
 1F9D5
 1F9D5 1F3FB
 1F9D5 1F3FC
@@ -2702,6 +3380,164 @@
 1F9FD
 1F9FE
 1F9FF
+1FA70
+1FA71
+1FA72
+1FA73
+1FA74
+1FA78
+1FA79
+1FA7A
+1FA7B
+1FA7C
+1FA80
+1FA81
+1FA82
+1FA83
+1FA84
+1FA85
+1FA86
+1FA90
+1FA91
+1FA92
+1FA93
+1FA94
+1FA95
+1FA96
+1FA97
+1FA98
+1FA99
+1FA9A
+1FA9B
+1FA9C
+1FA9D
+1FA9E
+1FA9F
+1FAA0
+1FAA1
+1FAA2
+1FAA3
+1FAA4
+1FAA5
+1FAA6
+1FAA7
+1FAA8
+1FAA9
+1FAAA
+1FAAB
+1FAAC
+1FAB0
+1FAB1
+1FAB2
+1FAB3
+1FAB4
+1FAB5
+1FAB6
+1FAB7
+1FAB8
+1FAB9
+1FABA
+1FAC0
+1FAC1
+1FAC2
+1FAC3
+1FAC3 1F3FB
+1FAC3 1F3FC
+1FAC3 1F3FD
+1FAC3 1F3FE
+1FAC3 1F3FF
+1FAC4
+1FAC4 1F3FB
+1FAC4 1F3FC
+1FAC4 1F3FD
+1FAC4 1F3FE
+1FAC4 1F3FF
+1FAC5
+1FAC5 1F3FB
+1FAC5 1F3FC
+1FAC5 1F3FD
+1FAC5 1F3FE
+1FAC5 1F3FF
+1FAD0
+1FAD1
+1FAD2
+1FAD3
+1FAD4
+1FAD5
+1FAD6
+1FAD7
+1FAD8
+1FAD9
+1FAE0
+1FAE1
+1FAE2
+1FAE3
+1FAE4
+1FAE5
+1FAE6
+1FAE7
+1FAF0
+1FAF0 1F3FB
+1FAF0 1F3FC
+1FAF0 1F3FD
+1FAF0 1F3FE
+1FAF0 1F3FF
+1FAF1
+1FAF1 1F3FB
+1FAF1 1F3FB 200D 1FAF2 1F3FC
+1FAF1 1F3FB 200D 1FAF2 1F3FD
+1FAF1 1F3FB 200D 1FAF2 1F3FE
+1FAF1 1F3FB 200D 1FAF2 1F3FF
+1FAF1 1F3FC
+1FAF1 1F3FC 200D 1FAF2 1F3FB
+1FAF1 1F3FC 200D 1FAF2 1F3FD
+1FAF1 1F3FC 200D 1FAF2 1F3FE
+1FAF1 1F3FC 200D 1FAF2 1F3FF
+1FAF1 1F3FD
+1FAF1 1F3FD 200D 1FAF2 1F3FB
+1FAF1 1F3FD 200D 1FAF2 1F3FC
+1FAF1 1F3FD 200D 1FAF2 1F3FE
+1FAF1 1F3FD 200D 1FAF2 1F3FF
+1FAF1 1F3FE
+1FAF1 1F3FE 200D 1FAF2 1F3FB
+1FAF1 1F3FE 200D 1FAF2 1F3FC
+1FAF1 1F3FE 200D 1FAF2 1F3FD
+1FAF1 1F3FE 200D 1FAF2 1F3FF
+1FAF1 1F3FF
+1FAF1 1F3FF 200D 1FAF2 1F3FB
+1FAF1 1F3FF 200D 1FAF2 1F3FC
+1FAF1 1F3FF 200D 1FAF2 1F3FD
+1FAF1 1F3FF 200D 1FAF2 1F3FE
+1FAF2
+1FAF2 1F3FB
+1FAF2 1F3FC
+1FAF2 1F3FD
+1FAF2 1F3FE
+1FAF2 1F3FF
+1FAF3
+1FAF3 1F3FB
+1FAF3 1F3FC
+1FAF3 1F3FD
+1FAF3 1F3FE
+1FAF3 1F3FF
+1FAF4
+1FAF4 1F3FB
+1FAF4 1F3FC
+1FAF4 1F3FD
+1FAF4 1F3FE
+1FAF4 1F3FF
+1FAF5
+1FAF5 1F3FB
+1FAF5 1F3FC
+1FAF5 1F3FD
+1FAF5 1F3FE
+1FAF5 1F3FF
+1FAF6
+1FAF6 1F3FB
+1FAF6 1F3FC
+1FAF6 1F3FD
+1FAF6 1F3FE
+1FAF6 1F3FF
 203C FE0F
 2049 FE0F
 2122 FE0F
@@ -2836,6 +3672,7 @@
 26A0 FE0F
 26A1
 26A1 FE0F
+26A7 FE0F
 26AA
 26AA FE0F
 26AB
@@ -2945,6 +3782,8 @@
 2763 FE0F
 2764
 2764 FE0F
+2764 FE0F 200D 1F525
+2764 FE0F 200D 1FA79
 2795
 2796
 2797
@@ -2992,3 +3831,34 @@
 39 FE0F 20E3
 A9 FE0F
 AE FE0F
+1F426 200D 2B1B
+1F6DC
+1FA75
+1FA76
+1FA77
+1FA87
+1FA88
+1FAAD
+1FAAE
+1FAAF
+1FABB
+1FABC
+1FABD
+1FABF
+1FACE
+1FACF
+1FADA
+1FADB
+1FAE8
+1FAF7
+1FAF7 1F3FB
+1FAF7 1F3FC
+1FAF7 1F3FD
+1FAF7 1F3FE
+1FAF7 1F3FF
+1FAF8
+1FAF8 1F3FB
+1FAF8 1F3FC
+1FAF8 1F3FD
+1FAF8 1F3FE
+1FAF8 1F3FF
diff --git a/emoji/Android.bp b/emoji/Android.bp
new file mode 100644
index 0000000..7565e43
--- /dev/null
+++ b/emoji/Android.bp
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+prebuilt_font {
+    name: "NotoColorEmoji.ttf",
+    src: "NotoColorEmoji.ttf",
+}
diff --git a/emoji/NotoColorEmoji.ttf b/emoji/NotoColorEmoji.ttf
index b7602e1..98fadf4 100644
--- a/emoji/NotoColorEmoji.ttf
+++ b/emoji/NotoColorEmoji.ttf
Binary files differ
diff --git a/fonts.mk b/fonts.mk
index fea0aef..13bfbfb 100644
--- a/fonts.mk
+++ b/fonts.mk
@@ -22,27 +22,30 @@
     NotoNaskhArabic-Regular.ttf \
     NotoNaskhArabicUI-Bold.ttf \
     NotoNaskhArabicUI-Regular.ttf \
-    NotoSansAdlam-Regular.ttf \
+    NotoSansAdlam-VF.ttf \
     NotoSansAhom-Regular.otf \
     NotoSansAnatolianHieroglyphs-Regular.otf \
-    NotoSansArmenian-Bold.ttf \
-    NotoSansArmenian-Regular.ttf \
+    NotoSansArmenian-Bold.otf \
+    NotoSansArmenian-Medium.otf \
+    NotoSansArmenian-Regular.otf \
     NotoSansAvestan-Regular.ttf \
     NotoSansBalinese-Regular.ttf \
     NotoSansBamum-Regular.ttf \
     NotoSansBassaVah-Regular.otf \
     NotoSansBatak-Regular.ttf \
-    NotoSansBengali-Bold.ttf \
-    NotoSansBengali-Regular.ttf \
-    NotoSansBengaliUI-Bold.ttf \
-    NotoSansBengaliUI-Regular.ttf \
+    NotoSansBengali-Bold.otf \
+    NotoSansBengali-Medium.otf \
+    NotoSansBengali-Regular.otf \
+    NotoSansBengaliUI-Bold.otf \
+    NotoSansBengaliUI-Medium.otf \
+    NotoSansBengaliUI-Regular.otf \
     NotoSansBhaiksuki-Regular.otf \
     NotoSansBrahmi-Regular.ttf \
     NotoSansBuginese-Regular.ttf \
     NotoSansBuhid-Regular.ttf \
     NotoSansCanadianAboriginal-Regular.ttf \
     NotoSansCarian-Regular.ttf \
-    NotoSansChakma-Regular.ttf \
+    NotoSansChakma-Regular.otf \
     NotoSansCham-Bold.ttf \
     NotoSansCham-Regular.ttf \
     NotoSansCherokee-Regular.ttf \
@@ -51,26 +54,29 @@
     NotoSansCuneiform-Regular.ttf \
     NotoSansCypriot-Regular.ttf \
     NotoSansDeseret-Regular.ttf \
-    NotoSansDevanagari-Bold.ttf \
-    NotoSansDevanagari-Regular.ttf \
-    NotoSansDevanagariUI-Bold.ttf \
-    NotoSansDevanagariUI-Regular.ttf \
+    NotoSansDevanagari-Bold.otf \
+    NotoSansDevanagari-Medium.otf \
+    NotoSansDevanagari-Regular.otf \
+    NotoSansDevanagariUI-Bold.otf \
+    NotoSansDevanagariUI-Medium.otf \
+    NotoSansDevanagariUI-Regular.otf \
     NotoSansEgyptianHieroglyphs-Regular.ttf \
     NotoSansElbasan-Regular.otf \
     NotoSansEthiopic-Bold.ttf \
     NotoSansEthiopic-Regular.ttf \
-    NotoSansGeorgian-Bold.ttf \
-    NotoSansGeorgian-Regular.ttf \
+    NotoSansGeorgian-VF.ttf \
     NotoSansGlagolitic-Regular.ttf \
     NotoSansGothic-Regular.ttf \
     NotoSansGujarati-Bold.ttf \
     NotoSansGujarati-Regular.ttf \
     NotoSansGujaratiUI-Bold.ttf \
     NotoSansGujaratiUI-Regular.ttf \
+    NotoSansGunjalaGondi-Regular.otf \
     NotoSansGurmukhi-Bold.ttf \
     NotoSansGurmukhi-Regular.ttf \
     NotoSansGurmukhiUI-Bold.ttf \
     NotoSansGurmukhiUI-Regular.ttf \
+    NotoSansHanifiRohingya-Regular.otf \
     NotoSansHanunoo-Regular.ttf \
     NotoSansHatran-Regular.otf \
     NotoSansHebrew-Bold.ttf \
@@ -78,7 +84,7 @@
     NotoSansImperialAramaic-Regular.ttf \
     NotoSansInscriptionalPahlavi-Regular.ttf \
     NotoSansInscriptionalParthian-Regular.ttf \
-    NotoSansJavanese-Regular.ttf \
+    NotoSansJavanese-Regular.otf \
     NotoSansKaithi-Regular.ttf \
     NotoSansKannada-Bold.ttf \
     NotoSansKannada-Regular.ttf \
@@ -89,6 +95,7 @@
     NotoSansKhmer-VF.ttf \
     NotoSansKhmerUI-Bold.ttf \
     NotoSansKhmerUI-Regular.ttf \
+    NotoSansKhojki-Regular.otf \
     NotoSansLao-Bold.ttf \
     NotoSansLao-Regular.ttf \
     NotoSansLaoUI-Bold.ttf \
@@ -100,23 +107,28 @@
     NotoSansLisu-Regular.ttf \
     NotoSansLycian-Regular.ttf \
     NotoSansLydian-Regular.ttf \
-    NotoSansMalayalam-Bold.ttf \
-    NotoSansMalayalam-Regular.ttf \
-    NotoSansMalayalamUI-Bold.ttf \
-    NotoSansMalayalamUI-Regular.ttf \
+    NotoSansMalayalam-Bold.otf \
+    NotoSansMalayalam-Medium.otf \
+    NotoSansMalayalam-Regular.otf \
+    NotoSansMalayalamUI-Bold.otf \
+    NotoSansMalayalamUI-Medium.otf \
+    NotoSansMalayalamUI-Regular.otf \
     NotoSansMandaic-Regular.ttf \
     NotoSansManichaean-Regular.otf \
     NotoSansMarchen-Regular.otf \
+    NotoSansMasaramGondi-Regular.otf \
     NotoSansMeeteiMayek-Regular.ttf \
     NotoSansMeroitic-Regular.otf \
     NotoSansMiao-Regular.otf \
     NotoSansMongolian-Regular.ttf \
     NotoSansMro-Regular.otf \
     NotoSansMultani-Regular.otf \
-    NotoSansMyanmar-Bold.ttf \
-    NotoSansMyanmar-Regular.ttf \
-    NotoSansMyanmarUI-Bold.ttf \
-    NotoSansMyanmarUI-Regular.ttf \
+    NotoSansMyanmar-Bold.otf \
+    NotoSansMyanmar-Medium.otf \
+    NotoSansMyanmar-Regular.otf \
+    NotoSansMyanmarUI-Bold.otf \
+    NotoSansMyanmarUI-Medium.otf \
+    NotoSansMyanmarUI-Regular.otf \
     NotoSansNabataean-Regular.otf \
     NotoSansNewa-Regular.otf \
     NotoSansNewTaiLue-Regular.ttf \
@@ -146,9 +158,11 @@
     NotoSansSaurashtra-Regular.ttf \
     NotoSansSharada-Regular.otf \
     NotoSansShavian-Regular.ttf \
-    NotoSansSinhala-Bold.ttf \
-    NotoSansSinhala-Regular.ttf \
+    NotoSansSinhala-Bold.otf \
+    NotoSansSinhala-Medium.otf \
+    NotoSansSinhala-Regular.otf \
     NotoSansSinhalaUI-Bold.otf \
+    NotoSansSinhalaUI-Medium.otf \
     NotoSansSinhalaUI-Regular.otf \
     NotoSansSoraSompeng-Regular.otf \
     NotoSansSundanese-Regular.ttf \
@@ -163,10 +177,12 @@
     NotoSansTaiLe-Regular.ttf \
     NotoSansTaiTham-Regular.ttf \
     NotoSansTaiViet-Regular.ttf \
-    NotoSansTamil-Bold.ttf \
-    NotoSansTamil-Regular.ttf \
-    NotoSansTamilUI-Bold.ttf \
-    NotoSansTamilUI-Regular.ttf \
+    NotoSansTamil-Bold.otf \
+    NotoSansTamil-Medium.otf \
+    NotoSansTamil-Regular.otf \
+    NotoSansTamilUI-Bold.otf \
+    NotoSansTamilUI-Medium.otf \
+    NotoSansTamilUI-Regular.otf \
     NotoSansTelugu-Bold.ttf \
     NotoSansTelugu-Regular.ttf \
     NotoSansTeluguUI-Bold.ttf \
@@ -179,16 +195,18 @@
     NotoSansThaiUI-Regular.ttf \
     NotoSansTibetan-Bold.ttf \
     NotoSansTibetan-Regular.ttf \
-    NotoSansTifinagh-Regular.ttf \
+    NotoSansTifinagh-Regular.otf \
     NotoSansUgaritic-Regular.ttf \
     NotoSansVai-Regular.ttf \
+    NotoSansWancho-Regular.otf \
+    NotoSansWarangCiti-Regular.otf \
     NotoSansYi-Regular.ttf \
     NotoSerif-Bold.ttf \
     NotoSerif-BoldItalic.ttf \
     NotoSerif-Italic.ttf \
     NotoSerif-Regular.ttf \
-    NotoSerifArmenian-Bold.ttf \
-    NotoSerifArmenian-Regular.ttf \
+    NotoSerifArmenian-Bold.otf \
+    NotoSerifArmenian-Regular.otf \
     NotoSerifBengali-Bold.ttf \
     NotoSerifBengali-Regular.ttf \
     NotoSerifCJK-Regular.ttc \
@@ -196,8 +214,7 @@
     NotoSerifDevanagari-Regular.ttf \
     NotoSerifEthiopic-Bold.otf \
     NotoSerifEthiopic-Regular.otf \
-    NotoSerifGeorgian-Bold.ttf \
-    NotoSerifGeorgian-Regular.ttf \
+    NotoSerifGeorgian-VF.ttf \
     NotoSerifGujarati-Bold.ttf \
     NotoSerifGujarati-Regular.ttf \
     NotoSerifGurmukhi-Bold.otf \
@@ -216,8 +233,8 @@
     NotoSerifMyanmar-Regular.otf \
     NotoSerifSinhala-Bold.otf \
     NotoSerifSinhala-Regular.otf \
-    NotoSerifTamil-Bold.ttf \
-    NotoSerifTamil-Regular.ttf \
+    NotoSerifTamil-Bold.otf \
+    NotoSerifTamil-Regular.otf \
     NotoSerifTelugu-Bold.ttf \
     NotoSerifTelugu-Regular.ttf \
     NotoSerifThai-Bold.ttf \
diff --git a/other-vf/Android.bp b/other-vf/Android.bp
new file mode 100644
index 0000000..4e88ad4
--- /dev/null
+++ b/other-vf/Android.bp
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+prebuilt_font {
+    name: "NotoSansKhmer-VF.ttf",
+    src: "NotoSansKhmer-VF.ttf",
+}
diff --git a/other/Android.bp b/other/Android.bp
new file mode 100644
index 0000000..7c2cd2b
--- /dev/null
+++ b/other/Android.bp
@@ -0,0 +1,1103 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+prebuilt_font {
+    name: "NotoSerif-Regular.ttf",
+    src: "NotoSerif-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerif-Bold.ttf",
+    src: "NotoSerif-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerif-Italic.ttf",
+    src: "NotoSerif-Italic.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerif-BoldItalic.ttf",
+    src: "NotoSerif-BoldItalic.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansAdlam-VF.ttf",
+    src: "NotoSansAdlam-VF.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansAhom-Regular.otf",
+    src: "NotoSansAhom-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansAnatolianHieroglyphs-Regular.otf",
+    src: "NotoSansAnatolianHieroglyphs-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansAvestan-Regular.ttf",
+    src: "NotoSansAvestan-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansBalinese-Regular.ttf",
+    src: "NotoSansBalinese-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansBamum-Regular.ttf",
+    src: "NotoSansBamum-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansBassaVah-Regular.otf",
+    src: "NotoSansBassaVah-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBatak-Regular.ttf",
+    src: "NotoSansBatak-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengali-Bold.otf",
+    src: "NotoSansBengali-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengali-Medium.otf",
+    src: "NotoSansBengali-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengali-Regular.otf",
+    src: "NotoSansBengali-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengaliUI-Bold.otf",
+    src: "NotoSansBengaliUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengaliUI-Medium.otf",
+    src: "NotoSansBengaliUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengaliUI-Regular.otf",
+    src: "NotoSansBengaliUI-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBhaiksuki-Regular.otf",
+    src: "NotoSansBhaiksuki-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBrahmi-Regular.ttf",
+    src: "NotoSansBrahmi-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansBuginese-Regular.ttf",
+    src: "NotoSansBuginese-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansBuhid-Regular.ttf",
+    src: "NotoSansBuhid-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansCanadianAboriginal-Regular.ttf",
+    src: "NotoSansCanadianAboriginal-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansCarian-Regular.ttf",
+    src: "NotoSansCarian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansChakma-Regular.otf",
+    src: "NotoSansChakma-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansCham-Bold.ttf",
+    src: "NotoSansCham-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansCham-Regular.ttf",
+    src: "NotoSansCham-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansCherokee-Regular.ttf",
+    src: "NotoSansCherokee-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansCoptic-Regular.ttf",
+    src: "NotoSansCoptic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansCuneiform-Regular.ttf",
+    src: "NotoSansCuneiform-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansCypriot-Regular.ttf",
+    src: "NotoSansCypriot-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansDeseret-Regular.ttf",
+    src: "NotoSansDeseret-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansEgyptianHieroglyphs-Regular.ttf",
+    src: "NotoSansEgyptianHieroglyphs-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansElbasan-Regular.otf",
+    src: "NotoSansElbasan-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansEthiopic-Bold.ttf",
+    src: "NotoSansEthiopic-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansEthiopic-Regular.ttf",
+    src: "NotoSansEthiopic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGlagolitic-Regular.ttf",
+    src: "NotoSansGlagolitic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGothic-Regular.ttf",
+    src: "NotoSansGothic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGujarati-Bold.ttf",
+    src: "NotoSansGujarati-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGujarati-Regular.ttf",
+    src: "NotoSansGujarati-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGujaratiUI-Bold.ttf",
+    src: "NotoSansGujaratiUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGujaratiUI-Regular.ttf",
+    src: "NotoSansGujaratiUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGurmukhi-Bold.ttf",
+    src: "NotoSansGurmukhi-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGurmukhi-Regular.ttf",
+    src: "NotoSansGurmukhi-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGurmukhiUI-Bold.ttf",
+    src: "NotoSansGurmukhiUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansGurmukhiUI-Regular.ttf",
+    src: "NotoSansGurmukhiUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansHanunoo-Regular.ttf",
+    src: "NotoSansHanunoo-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansHatran-Regular.otf",
+    src: "NotoSansHatran-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansImperialAramaic-Regular.ttf",
+    src: "NotoSansImperialAramaic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansInscriptionalPahlavi-Regular.ttf",
+    src: "NotoSansInscriptionalPahlavi-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansInscriptionalParthian-Regular.ttf",
+    src: "NotoSansInscriptionalParthian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansJavanese-Regular.otf",
+    src: "NotoSansJavanese-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansKaithi-Regular.ttf",
+    src: "NotoSansKaithi-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKannada-Bold.ttf",
+    src: "NotoSansKannada-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKannada-Regular.ttf",
+    src: "NotoSansKannada-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKannadaUI-Bold.ttf",
+    src: "NotoSansKannadaUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKannadaUI-Regular.ttf",
+    src: "NotoSansKannadaUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKayahLi-Regular.ttf",
+    src: "NotoSansKayahLi-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKharoshthi-Regular.ttf",
+    src: "NotoSansKharoshthi-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKhmerUI-Bold.ttf",
+    src: "NotoSansKhmerUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansKhmerUI-Regular.ttf",
+    src: "NotoSansKhmerUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLao-Bold.ttf",
+    src: "NotoSansLao-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLao-Regular.ttf",
+    src: "NotoSansLao-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLaoUI-Bold.ttf",
+    src: "NotoSansLaoUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLaoUI-Regular.ttf",
+    src: "NotoSansLaoUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLepcha-Regular.ttf",
+    src: "NotoSansLepcha-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLimbu-Regular.ttf",
+    src: "NotoSansLimbu-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLinearA-Regular.otf",
+    src: "NotoSansLinearA-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansLinearB-Regular.ttf",
+    src: "NotoSansLinearB-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLisu-Regular.ttf",
+    src: "NotoSansLisu-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLycian-Regular.ttf",
+    src: "NotoSansLycian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansLydian-Regular.ttf",
+    src: "NotoSansLydian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalam-Bold.otf",
+    src: "NotoSansMalayalam-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalam-Medium.otf",
+    src: "NotoSansMalayalam-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalam-Regular.otf",
+    src: "NotoSansMalayalam-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalamUI-Bold.otf",
+    src: "NotoSansMalayalamUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalamUI-Medium.otf",
+    src: "NotoSansMalayalamUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalamUI-Regular.otf",
+    src: "NotoSansMalayalamUI-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMandaic-Regular.ttf",
+    src: "NotoSansMandaic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansManichaean-Regular.otf",
+    src: "NotoSansManichaean-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMarchen-Regular.otf",
+    src: "NotoSansMarchen-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMeeteiMayek-Regular.ttf",
+    src: "NotoSansMeeteiMayek-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansMeroitic-Regular.otf",
+    src: "NotoSansMeroitic-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMiao-Regular.otf",
+    src: "NotoSansMiao-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMongolian-Regular.ttf",
+    src: "NotoSansMongolian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansMro-Regular.otf",
+    src: "NotoSansMro-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMultani-Regular.otf",
+    src: "NotoSansMultani-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMyanmar-Bold.otf",
+    src: "NotoSansMyanmar-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMyanmar-Medium.otf",
+    src: "NotoSansMyanmar-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMyanmar-Regular.otf",
+    src: "NotoSansMyanmar-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMyanmarUI-Bold.otf",
+    src: "NotoSansMyanmarUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMyanmarUI-Medium.otf",
+    src: "NotoSansMyanmarUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMyanmarUI-Regular.otf",
+    src: "NotoSansMyanmarUI-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansNabataean-Regular.otf",
+    src: "NotoSansNabataean-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansNewa-Regular.otf",
+    src: "NotoSansNewa-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansNewTaiLue-Regular.ttf",
+    src: "NotoSansNewTaiLue-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansNKo-Regular.ttf",
+    src: "NotoSansNKo-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOgham-Regular.ttf",
+    src: "NotoSansOgham-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOlChiki-Regular.ttf",
+    src: "NotoSansOlChiki-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOldItalic-Regular.ttf",
+    src: "NotoSansOldItalic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOldNorthArabian-Regular.otf",
+    src: "NotoSansOldNorthArabian-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansOldPermic-Regular.otf",
+    src: "NotoSansOldPermic-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansOldPersian-Regular.ttf",
+    src: "NotoSansOldPersian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOldSouthArabian-Regular.ttf",
+    src: "NotoSansOldSouthArabian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOldTurkic-Regular.ttf",
+    src: "NotoSansOldTurkic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOriya-Bold.ttf",
+    src: "NotoSansOriya-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOriya-Regular.ttf",
+    src: "NotoSansOriya-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOriyaUI-Bold.ttf",
+    src: "NotoSansOriyaUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOriyaUI-Regular.ttf",
+    src: "NotoSansOriyaUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOsage-Regular.ttf",
+    src: "NotoSansOsage-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansOsmanya-Regular.ttf",
+    src: "NotoSansOsmanya-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansPahawhHmong-Regular.otf",
+    src: "NotoSansPahawhHmong-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansPalmyrene-Regular.otf",
+    src: "NotoSansPalmyrene-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansPauCinHau-Regular.otf",
+    src: "NotoSansPauCinHau-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansPhagsPa-Regular.ttf",
+    src: "NotoSansPhagsPa-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansPhoenician-Regular.ttf",
+    src: "NotoSansPhoenician-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansRejang-Regular.ttf",
+    src: "NotoSansRejang-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansRunic-Regular.ttf",
+    src: "NotoSansRunic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSamaritan-Regular.ttf",
+    src: "NotoSansSamaritan-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSaurashtra-Regular.ttf",
+    src: "NotoSansSaurashtra-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSharada-Regular.otf",
+    src: "NotoSansSharada-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansShavian-Regular.ttf",
+    src: "NotoSansShavian-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSinhala-Bold.otf",
+    src: "NotoSansSinhala-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSinhala-Regular.otf",
+    src: "NotoSansSinhala-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSinhala-Medium.otf",
+    src: "NotoSansSinhala-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSinhalaUI-Bold.otf",
+    src: "NotoSansSinhalaUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSinhalaUI-Medium.otf",
+    src: "NotoSansSinhalaUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSinhalaUI-Regular.otf",
+    src: "NotoSansSinhalaUI-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSoraSompeng-Regular.otf",
+    src: "NotoSansSoraSompeng-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSundanese-Regular.ttf",
+    src: "NotoSansSundanese-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSylotiNagri-Regular.ttf",
+    src: "NotoSansSylotiNagri-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSyriacEastern-Regular.ttf",
+    src: "NotoSansSyriacEastern-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSyriacEstrangela-Regular.ttf",
+    src: "NotoSansSyriacEstrangela-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSyriacWestern-Regular.ttf",
+    src: "NotoSansSyriacWestern-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTagalog-Regular.ttf",
+    src: "NotoSansTagalog-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTagbanwa-Regular.ttf",
+    src: "NotoSansTagbanwa-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTaiLe-Regular.ttf",
+    src: "NotoSansTaiLe-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTaiTham-Regular.ttf",
+    src: "NotoSansTaiTham-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTaiViet-Regular.ttf",
+    src: "NotoSansTaiViet-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamil-Bold.otf",
+    src: "NotoSansTamil-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamil-Medium.otf",
+    src: "NotoSansTamil-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamil-Regular.otf",
+    src: "NotoSansTamil-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamilUI-Bold.otf",
+    src: "NotoSansTamilUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamilUI-Medium.otf",
+    src: "NotoSansTamilUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamilUI-Regular.otf",
+    src: "NotoSansTamilUI-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTelugu-Bold.ttf",
+    src: "NotoSansTelugu-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTelugu-Regular.ttf",
+    src: "NotoSansTelugu-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTeluguUI-Bold.ttf",
+    src: "NotoSansTeluguUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTeluguUI-Regular.ttf",
+    src: "NotoSansTeluguUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansThaana-Bold.ttf",
+    src: "NotoSansThaana-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansThaana-Regular.ttf",
+    src: "NotoSansThaana-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTibetan-Bold.ttf",
+    src: "NotoSansTibetan-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansTibetan-Regular.ttf",
+    src: "NotoSansTibetan-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansUgaritic-Regular.ttf",
+    src: "NotoSansUgaritic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansVai-Regular.ttf",
+    src: "NotoSansVai-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansYi-Regular.ttf",
+    src: "NotoSansYi-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoNaskhArabic-Regular.ttf",
+    src: "NotoNaskhArabic-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoNaskhArabic-Bold.ttf",
+    src: "NotoNaskhArabic-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoNaskhArabicUI-Regular.ttf",
+    src: "NotoNaskhArabicUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoNaskhArabicUI-Bold.ttf",
+    src: "NotoNaskhArabicUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansArmenian-Regular.otf",
+    src: "NotoSansArmenian-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansArmenian-Bold.otf",
+    src: "NotoSansArmenian-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansArmenian-Medium.otf",
+    src: "NotoSansArmenian-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansDevanagari-Regular.otf",
+    src: "NotoSansDevanagari-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansDevanagari-Bold.otf",
+    src: "NotoSansDevanagari-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansDevanagari-Medium.otf",
+    src: "NotoSansDevanagari-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansDevanagariUI-Regular.otf",
+    src: "NotoSansDevanagariUI-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansDevanagariUI-Bold.otf",
+    src: "NotoSansDevanagariUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansDevanagariUI-Medium.otf",
+    src: "NotoSansDevanagariUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansGeorgian-VF.ttf",
+    src: "NotoSansGeorgian-VF.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansHebrew-Regular.ttf",
+    src: "NotoSansHebrew-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansHebrew-Bold.ttf",
+    src: "NotoSansHebrew-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSymbols-Regular-Subsetted.ttf",
+    src: "NotoSansSymbols-Regular-Subsetted.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansSymbols-Regular-Subsetted2.ttf",
+    src: "NotoSansSymbols-Regular-Subsetted2.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansThai-Regular.ttf",
+    src: "NotoSansThai-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansThai-Bold.ttf",
+    src: "NotoSansThai-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansThaiUI-Regular.ttf",
+    src: "NotoSansThaiUI-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSansThaiUI-Bold.ttf",
+    src: "NotoSansThaiUI-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifArmenian-Bold.otf",
+    src: "NotoSerifArmenian-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansGunjalaGondi-Regular.otf",
+    src: "NotoSansGunjalaGondi-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansHanifiRohingya-Regular.otf",
+    src: "NotoSansHanifiRohingya-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansKhojki-Regular.otf",
+    src: "NotoSansKhojki-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMasaramGondi-Regular.otf",
+    src: "NotoSansMasaramGondi-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTifinagh-Regular.otf",
+    src: "NotoSansTifinagh-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansWancho-Regular.otf",
+    src: "NotoSansWancho-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansWarangCiti-Regular.otf",
+    src: "NotoSansWarangCiti-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifArmenian-Regular.otf",
+    src: "NotoSerifArmenian-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifBengali-Bold.ttf",
+    src: "NotoSerifBengali-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifBengali-Regular.ttf",
+    src: "NotoSerifBengali-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifDevanagari-Bold.ttf",
+    src: "NotoSerifDevanagari-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifDevanagari-Regular.ttf",
+    src: "NotoSerifDevanagari-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifEthiopic-Bold.otf",
+    src: "NotoSerifEthiopic-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifEthiopic-Regular.otf",
+    src: "NotoSerifEthiopic-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifGeorgian-VF.ttf",
+    src: "NotoSerifGeorgian-VF.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifGujarati-Bold.ttf",
+    src: "NotoSerifGujarati-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifGujarati-Regular.ttf",
+    src: "NotoSerifGujarati-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifGurmukhi-Bold.otf",
+    src: "NotoSerifGurmukhi-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifGurmukhi-Regular.otf",
+    src: "NotoSerifGurmukhi-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifHebrew-Bold.ttf",
+    src: "NotoSerifHebrew-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifHebrew-Regular.ttf",
+    src: "NotoSerifHebrew-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifKannada-Bold.ttf",
+    src: "NotoSerifKannada-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifKannada-Regular.ttf",
+    src: "NotoSerifKannada-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifKhmer-Bold.otf",
+    src: "NotoSerifKhmer-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifKhmer-Regular.otf",
+    src: "NotoSerifKhmer-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifLao-Bold.ttf",
+    src: "NotoSerifLao-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifLao-Regular.ttf",
+    src: "NotoSerifLao-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifMalayalam-Bold.ttf",
+    src: "NotoSerifMalayalam-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifMalayalam-Regular.ttf",
+    src: "NotoSerifMalayalam-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifMyanmar-Bold.otf",
+    src: "NotoSerifMyanmar-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifMyanmar-Regular.otf",
+    src: "NotoSerifMyanmar-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifSinhala-Bold.otf",
+    src: "NotoSerifSinhala-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifSinhala-Regular.otf",
+    src: "NotoSerifSinhala-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifTamil-Bold.otf",
+    src: "NotoSerifTamil-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifTamil-Regular.otf",
+    src: "NotoSerifTamil-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSerifTelugu-Bold.ttf",
+    src: "NotoSerifTelugu-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifTelugu-Regular.ttf",
+    src: "NotoSerifTelugu-Regular.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifThai-Bold.ttf",
+    src: "NotoSerifThai-Bold.ttf",
+}
+
+prebuilt_font {
+    name: "NotoSerifThai-Regular.ttf",
+    src: "NotoSerifThai-Regular.ttf",
+}
diff --git a/other/NotoSansAdlam-Regular.ttf b/other/NotoSansAdlam-Regular.ttf
deleted file mode 100644
index 20ea4ba..0000000
--- a/other/NotoSansAdlam-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansAdlam-VF.ttf b/other/NotoSansAdlam-VF.ttf
new file mode 100644
index 0000000..a1c9159
--- /dev/null
+++ b/other/NotoSansAdlam-VF.ttf
Binary files differ
diff --git a/other/NotoSansArmenian-Bold.otf b/other/NotoSansArmenian-Bold.otf
new file mode 100644
index 0000000..11700a9
--- /dev/null
+++ b/other/NotoSansArmenian-Bold.otf
Binary files differ
diff --git a/other/NotoSansArmenian-Bold.ttf b/other/NotoSansArmenian-Bold.ttf
deleted file mode 100644
index 109e34f..0000000
--- a/other/NotoSansArmenian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansArmenian-Medium.otf b/other/NotoSansArmenian-Medium.otf
new file mode 100644
index 0000000..17dbffb
--- /dev/null
+++ b/other/NotoSansArmenian-Medium.otf
Binary files differ
diff --git a/other/NotoSansArmenian-Regular.otf b/other/NotoSansArmenian-Regular.otf
new file mode 100644
index 0000000..60bb53f
--- /dev/null
+++ b/other/NotoSansArmenian-Regular.otf
Binary files differ
diff --git a/other/NotoSansArmenian-Regular.ttf b/other/NotoSansArmenian-Regular.ttf
deleted file mode 100644
index 7f26da5..0000000
--- a/other/NotoSansArmenian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengali-Bold.otf b/other/NotoSansBengali-Bold.otf
new file mode 100644
index 0000000..03fa2ce
--- /dev/null
+++ b/other/NotoSansBengali-Bold.otf
Binary files differ
diff --git a/other/NotoSansBengali-Bold.ttf b/other/NotoSansBengali-Bold.ttf
deleted file mode 100644
index 546a555..0000000
--- a/other/NotoSansBengali-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengali-Medium.otf b/other/NotoSansBengali-Medium.otf
new file mode 100644
index 0000000..fa98001
--- /dev/null
+++ b/other/NotoSansBengali-Medium.otf
Binary files differ
diff --git a/other/NotoSansBengali-Regular.otf b/other/NotoSansBengali-Regular.otf
new file mode 100644
index 0000000..be3fde0
--- /dev/null
+++ b/other/NotoSansBengali-Regular.otf
Binary files differ
diff --git a/other/NotoSansBengali-Regular.ttf b/other/NotoSansBengali-Regular.ttf
deleted file mode 100644
index 520d82f..0000000
--- a/other/NotoSansBengali-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengaliUI-Bold.otf b/other/NotoSansBengaliUI-Bold.otf
new file mode 100644
index 0000000..ea58c5a
--- /dev/null
+++ b/other/NotoSansBengaliUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansBengaliUI-Bold.ttf b/other/NotoSansBengaliUI-Bold.ttf
deleted file mode 100644
index 923580c..0000000
--- a/other/NotoSansBengaliUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengaliUI-Medium.otf b/other/NotoSansBengaliUI-Medium.otf
new file mode 100644
index 0000000..ba35bab
--- /dev/null
+++ b/other/NotoSansBengaliUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansBengaliUI-Regular.otf b/other/NotoSansBengaliUI-Regular.otf
new file mode 100644
index 0000000..491fd93
--- /dev/null
+++ b/other/NotoSansBengaliUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansBengaliUI-Regular.ttf b/other/NotoSansBengaliUI-Regular.ttf
deleted file mode 100644
index 5373108..0000000
--- a/other/NotoSansBengaliUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansChakma-Regular.otf b/other/NotoSansChakma-Regular.otf
new file mode 100644
index 0000000..d9690ca
--- /dev/null
+++ b/other/NotoSansChakma-Regular.otf
Binary files differ
diff --git a/other/NotoSansChakma-Regular.ttf b/other/NotoSansChakma-Regular.ttf
deleted file mode 100644
index 43e5161..0000000
--- a/other/NotoSansChakma-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagari-Bold.otf b/other/NotoSansDevanagari-Bold.otf
new file mode 100644
index 0000000..383f279
--- /dev/null
+++ b/other/NotoSansDevanagari-Bold.otf
Binary files differ
diff --git a/other/NotoSansDevanagari-Bold.ttf b/other/NotoSansDevanagari-Bold.ttf
deleted file mode 100644
index 9fe0162..0000000
--- a/other/NotoSansDevanagari-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagari-Medium.otf b/other/NotoSansDevanagari-Medium.otf
new file mode 100644
index 0000000..c454f83
--- /dev/null
+++ b/other/NotoSansDevanagari-Medium.otf
Binary files differ
diff --git a/other/NotoSansDevanagari-Regular.otf b/other/NotoSansDevanagari-Regular.otf
new file mode 100644
index 0000000..68b2c13
--- /dev/null
+++ b/other/NotoSansDevanagari-Regular.otf
Binary files differ
diff --git a/other/NotoSansDevanagari-Regular.ttf b/other/NotoSansDevanagari-Regular.ttf
deleted file mode 100644
index 0a024df..0000000
--- a/other/NotoSansDevanagari-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Bold.otf b/other/NotoSansDevanagariUI-Bold.otf
new file mode 100644
index 0000000..113ebb4
--- /dev/null
+++ b/other/NotoSansDevanagariUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Bold.ttf b/other/NotoSansDevanagariUI-Bold.ttf
deleted file mode 100644
index a0cc7dd..0000000
--- a/other/NotoSansDevanagariUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Medium.otf b/other/NotoSansDevanagariUI-Medium.otf
new file mode 100644
index 0000000..48658e8
--- /dev/null
+++ b/other/NotoSansDevanagariUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Regular.otf b/other/NotoSansDevanagariUI-Regular.otf
new file mode 100644
index 0000000..eda9bef
--- /dev/null
+++ b/other/NotoSansDevanagariUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Regular.ttf b/other/NotoSansDevanagariUI-Regular.ttf
deleted file mode 100644
index d74aefd..0000000
--- a/other/NotoSansDevanagariUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansGeorgian-Bold.ttf b/other/NotoSansGeorgian-Bold.ttf
deleted file mode 100644
index 2e01965..0000000
--- a/other/NotoSansGeorgian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansGeorgian-Regular.ttf b/other/NotoSansGeorgian-Regular.ttf
deleted file mode 100644
index b5a3847..0000000
--- a/other/NotoSansGeorgian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansGeorgian-VF.ttf b/other/NotoSansGeorgian-VF.ttf
new file mode 100644
index 0000000..25df7f1
--- /dev/null
+++ b/other/NotoSansGeorgian-VF.ttf
Binary files differ
diff --git a/other/NotoSansGunjalaGondi-Regular.otf b/other/NotoSansGunjalaGondi-Regular.otf
new file mode 100644
index 0000000..4cc0fa3
--- /dev/null
+++ b/other/NotoSansGunjalaGondi-Regular.otf
Binary files differ
diff --git a/other/NotoSansHanifiRohingya-Regular.otf b/other/NotoSansHanifiRohingya-Regular.otf
new file mode 100644
index 0000000..f3dc231
--- /dev/null
+++ b/other/NotoSansHanifiRohingya-Regular.otf
Binary files differ
diff --git a/other/NotoSansJavanese-Regular.otf b/other/NotoSansJavanese-Regular.otf
new file mode 100644
index 0000000..e1aa665
--- /dev/null
+++ b/other/NotoSansJavanese-Regular.otf
Binary files differ
diff --git a/other/NotoSansJavanese-Regular.ttf b/other/NotoSansJavanese-Regular.ttf
deleted file mode 100644
index 2a855ed..0000000
--- a/other/NotoSansJavanese-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansKhojki-Regular.otf b/other/NotoSansKhojki-Regular.otf
new file mode 100644
index 0000000..99146ac
--- /dev/null
+++ b/other/NotoSansKhojki-Regular.otf
Binary files differ
diff --git a/other/NotoSansMalayalam-Bold.otf b/other/NotoSansMalayalam-Bold.otf
new file mode 100644
index 0000000..f748b3b
--- /dev/null
+++ b/other/NotoSansMalayalam-Bold.otf
Binary files differ
diff --git a/other/NotoSansMalayalam-Bold.ttf b/other/NotoSansMalayalam-Bold.ttf
deleted file mode 100644
index 5f6ca0c..0000000
--- a/other/NotoSansMalayalam-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMalayalam-Medium.otf b/other/NotoSansMalayalam-Medium.otf
new file mode 100644
index 0000000..e8cd727
--- /dev/null
+++ b/other/NotoSansMalayalam-Medium.otf
Binary files differ
diff --git a/other/NotoSansMalayalam-Regular.otf b/other/NotoSansMalayalam-Regular.otf
new file mode 100644
index 0000000..1eaa950
--- /dev/null
+++ b/other/NotoSansMalayalam-Regular.otf
Binary files differ
diff --git a/other/NotoSansMalayalam-Regular.ttf b/other/NotoSansMalayalam-Regular.ttf
deleted file mode 100644
index be82967..0000000
--- a/other/NotoSansMalayalam-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Bold.otf b/other/NotoSansMalayalamUI-Bold.otf
new file mode 100644
index 0000000..669bf1f
--- /dev/null
+++ b/other/NotoSansMalayalamUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Bold.ttf b/other/NotoSansMalayalamUI-Bold.ttf
deleted file mode 100644
index 0919b8c..0000000
--- a/other/NotoSansMalayalamUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Medium.otf b/other/NotoSansMalayalamUI-Medium.otf
new file mode 100644
index 0000000..0468ce9
--- /dev/null
+++ b/other/NotoSansMalayalamUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Regular.otf b/other/NotoSansMalayalamUI-Regular.otf
new file mode 100644
index 0000000..3e22f89
--- /dev/null
+++ b/other/NotoSansMalayalamUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Regular.ttf b/other/NotoSansMalayalamUI-Regular.ttf
deleted file mode 100644
index 4f1b408..0000000
--- a/other/NotoSansMalayalamUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMasaramGondi-Regular.otf b/other/NotoSansMasaramGondi-Regular.otf
new file mode 100644
index 0000000..8833d01
--- /dev/null
+++ b/other/NotoSansMasaramGondi-Regular.otf
Binary files differ
diff --git a/other/NotoSansMyanmar-Bold.otf b/other/NotoSansMyanmar-Bold.otf
new file mode 100644
index 0000000..ddec241
--- /dev/null
+++ b/other/NotoSansMyanmar-Bold.otf
Binary files differ
diff --git a/other/NotoSansMyanmar-Bold.ttf b/other/NotoSansMyanmar-Bold.ttf
deleted file mode 100644
index 9f74c12..0000000
--- a/other/NotoSansMyanmar-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMyanmar-Medium.otf b/other/NotoSansMyanmar-Medium.otf
new file mode 100644
index 0000000..c6c03db
--- /dev/null
+++ b/other/NotoSansMyanmar-Medium.otf
Binary files differ
diff --git a/other/NotoSansMyanmar-Regular.otf b/other/NotoSansMyanmar-Regular.otf
new file mode 100644
index 0000000..f2f7a67
--- /dev/null
+++ b/other/NotoSansMyanmar-Regular.otf
Binary files differ
diff --git a/other/NotoSansMyanmar-Regular.ttf b/other/NotoSansMyanmar-Regular.ttf
deleted file mode 100644
index 034660b..0000000
--- a/other/NotoSansMyanmar-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Bold.otf b/other/NotoSansMyanmarUI-Bold.otf
new file mode 100644
index 0000000..6742efd
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Bold.ttf b/other/NotoSansMyanmarUI-Bold.ttf
deleted file mode 100644
index 1c76aa7..0000000
--- a/other/NotoSansMyanmarUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Medium.otf b/other/NotoSansMyanmarUI-Medium.otf
new file mode 100644
index 0000000..af579de
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Regular.otf b/other/NotoSansMyanmarUI-Regular.otf
new file mode 100644
index 0000000..7d912b8
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Regular.ttf b/other/NotoSansMyanmarUI-Regular.ttf
deleted file mode 100644
index a435ba1..0000000
--- a/other/NotoSansMyanmarUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansSinhala-Bold.otf b/other/NotoSansSinhala-Bold.otf
new file mode 100644
index 0000000..1ccfb67
--- /dev/null
+++ b/other/NotoSansSinhala-Bold.otf
Binary files differ
diff --git a/other/NotoSansSinhala-Bold.ttf b/other/NotoSansSinhala-Bold.ttf
deleted file mode 100644
index 1ba5a1c..0000000
--- a/other/NotoSansSinhala-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansSinhala-Medium.otf b/other/NotoSansSinhala-Medium.otf
new file mode 100644
index 0000000..7b62820
--- /dev/null
+++ b/other/NotoSansSinhala-Medium.otf
Binary files differ
diff --git a/other/NotoSansSinhala-Regular.otf b/other/NotoSansSinhala-Regular.otf
new file mode 100644
index 0000000..027fd25
--- /dev/null
+++ b/other/NotoSansSinhala-Regular.otf
Binary files differ
diff --git a/other/NotoSansSinhala-Regular.ttf b/other/NotoSansSinhala-Regular.ttf
deleted file mode 100644
index 9f4de71..0000000
--- a/other/NotoSansSinhala-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansSinhalaUI-Bold.otf b/other/NotoSansSinhalaUI-Bold.otf
index d73a364..8d22bf2 100644
--- a/other/NotoSansSinhalaUI-Bold.otf
+++ b/other/NotoSansSinhalaUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansSinhalaUI-Medium.otf b/other/NotoSansSinhalaUI-Medium.otf
new file mode 100644
index 0000000..8b5e701
--- /dev/null
+++ b/other/NotoSansSinhalaUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansSinhalaUI-Regular.otf b/other/NotoSansSinhalaUI-Regular.otf
index 4902292..925536d 100644
--- a/other/NotoSansSinhalaUI-Regular.otf
+++ b/other/NotoSansSinhalaUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansTamil-Bold.otf b/other/NotoSansTamil-Bold.otf
new file mode 100644
index 0000000..c9611a3
--- /dev/null
+++ b/other/NotoSansTamil-Bold.otf
Binary files differ
diff --git a/other/NotoSansTamil-Bold.ttf b/other/NotoSansTamil-Bold.ttf
deleted file mode 100644
index f15bfad..0000000
--- a/other/NotoSansTamil-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansTamil-Medium.otf b/other/NotoSansTamil-Medium.otf
new file mode 100644
index 0000000..1e84a9b
--- /dev/null
+++ b/other/NotoSansTamil-Medium.otf
Binary files differ
diff --git a/other/NotoSansTamil-Regular.otf b/other/NotoSansTamil-Regular.otf
new file mode 100644
index 0000000..b77a33c
--- /dev/null
+++ b/other/NotoSansTamil-Regular.otf
Binary files differ
diff --git a/other/NotoSansTamil-Regular.ttf b/other/NotoSansTamil-Regular.ttf
deleted file mode 100644
index 635a238..0000000
--- a/other/NotoSansTamil-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansTamilUI-Bold.otf b/other/NotoSansTamilUI-Bold.otf
new file mode 100644
index 0000000..665d6fd
--- /dev/null
+++ b/other/NotoSansTamilUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansTamilUI-Bold.ttf b/other/NotoSansTamilUI-Bold.ttf
deleted file mode 100644
index 297f30b..0000000
--- a/other/NotoSansTamilUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansTamilUI-Medium.otf b/other/NotoSansTamilUI-Medium.otf
new file mode 100644
index 0000000..64997d3
--- /dev/null
+++ b/other/NotoSansTamilUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansTamilUI-Regular.otf b/other/NotoSansTamilUI-Regular.otf
new file mode 100644
index 0000000..7ee7d4f
--- /dev/null
+++ b/other/NotoSansTamilUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansTamilUI-Regular.ttf b/other/NotoSansTamilUI-Regular.ttf
deleted file mode 100644
index 360bed8..0000000
--- a/other/NotoSansTamilUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansTifinagh-Regular.otf b/other/NotoSansTifinagh-Regular.otf
new file mode 100644
index 0000000..c8b87c8
--- /dev/null
+++ b/other/NotoSansTifinagh-Regular.otf
Binary files differ
diff --git a/other/NotoSansTifinagh-Regular.ttf b/other/NotoSansTifinagh-Regular.ttf
deleted file mode 100644
index 252a0dc..0000000
--- a/other/NotoSansTifinagh-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansWancho-Regular.otf b/other/NotoSansWancho-Regular.otf
new file mode 100644
index 0000000..af941de
--- /dev/null
+++ b/other/NotoSansWancho-Regular.otf
Binary files differ
diff --git a/other/NotoSansWarangCiti-Regular.otf b/other/NotoSansWarangCiti-Regular.otf
new file mode 100644
index 0000000..5da59fe
--- /dev/null
+++ b/other/NotoSansWarangCiti-Regular.otf
Binary files differ
diff --git a/other/NotoSerifArmenian-Bold.otf b/other/NotoSerifArmenian-Bold.otf
new file mode 100644
index 0000000..7df98e3
--- /dev/null
+++ b/other/NotoSerifArmenian-Bold.otf
Binary files differ
diff --git a/other/NotoSerifArmenian-Bold.ttf b/other/NotoSerifArmenian-Bold.ttf
deleted file mode 100644
index 215a57f..0000000
--- a/other/NotoSerifArmenian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifArmenian-Regular.otf b/other/NotoSerifArmenian-Regular.otf
new file mode 100644
index 0000000..05df944
--- /dev/null
+++ b/other/NotoSerifArmenian-Regular.otf
Binary files differ
diff --git a/other/NotoSerifArmenian-Regular.ttf b/other/NotoSerifArmenian-Regular.ttf
deleted file mode 100644
index d33f13d..0000000
--- a/other/NotoSerifArmenian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifGeorgian-Bold.ttf b/other/NotoSerifGeorgian-Bold.ttf
deleted file mode 100644
index 00709da..0000000
--- a/other/NotoSerifGeorgian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifGeorgian-Regular.ttf b/other/NotoSerifGeorgian-Regular.ttf
deleted file mode 100644
index 814731d..0000000
--- a/other/NotoSerifGeorgian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifGeorgian-VF.ttf b/other/NotoSerifGeorgian-VF.ttf
new file mode 100644
index 0000000..29b0eb8
--- /dev/null
+++ b/other/NotoSerifGeorgian-VF.ttf
Binary files differ
diff --git a/other/NotoSerifKhmer-Bold.ttf b/other/NotoSerifKhmer-Bold.ttf
deleted file mode 100644
index 795c35c..0000000
--- a/other/NotoSerifKhmer-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifKhmer-Regular.ttf b/other/NotoSerifKhmer-Regular.ttf
deleted file mode 100644
index 22a3b22..0000000
--- a/other/NotoSerifKhmer-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifMyanmar-Bold.otf b/other/NotoSerifMyanmar-Bold.otf
index 9c2bba5..ba21a27 100644
--- a/other/NotoSerifMyanmar-Bold.otf
+++ b/other/NotoSerifMyanmar-Bold.otf
Binary files differ
diff --git a/other/NotoSerifMyanmar-Regular.otf b/other/NotoSerifMyanmar-Regular.otf
index 3149b2f..ec4ed44 100644
--- a/other/NotoSerifMyanmar-Regular.otf
+++ b/other/NotoSerifMyanmar-Regular.otf
Binary files differ
diff --git a/other/NotoSerifSinhala-Bold.otf b/other/NotoSerifSinhala-Bold.otf
index 59ebdf0..ec8a3f9 100644
--- a/other/NotoSerifSinhala-Bold.otf
+++ b/other/NotoSerifSinhala-Bold.otf
Binary files differ
diff --git a/other/NotoSerifSinhala-Regular.otf b/other/NotoSerifSinhala-Regular.otf
index 3d75615..876c153 100644
--- a/other/NotoSerifSinhala-Regular.otf
+++ b/other/NotoSerifSinhala-Regular.otf
Binary files differ
diff --git a/other/NotoSerifTamil-Bold.otf b/other/NotoSerifTamil-Bold.otf
new file mode 100644
index 0000000..d0d57cd
--- /dev/null
+++ b/other/NotoSerifTamil-Bold.otf
Binary files differ
diff --git a/other/NotoSerifTamil-Bold.ttf b/other/NotoSerifTamil-Bold.ttf
deleted file mode 100644
index 9154410..0000000
--- a/other/NotoSerifTamil-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifTamil-Regular.otf b/other/NotoSerifTamil-Regular.otf
new file mode 100644
index 0000000..33b2b13
--- /dev/null
+++ b/other/NotoSerifTamil-Regular.otf
Binary files differ
diff --git a/other/NotoSerifTamil-Regular.ttf b/other/NotoSerifTamil-Regular.ttf
deleted file mode 100644
index ae772a1..0000000
--- a/other/NotoSerifTamil-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/scripts/color_emoji_image_diff.py b/scripts/color_emoji_image_diff.py
new file mode 100755
index 0000000..6f4c87e
--- /dev/null
+++ b/scripts/color_emoji_image_diff.py
@@ -0,0 +1,183 @@
+#!/usr/bin/env python
+
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import contextlib
+import itertools
+import io
+import os
+import sys
+
+from fontTools import ttLib
+from PIL import Image
+
+def to_hex_str(value):
+    """Converts given int value to hex without the 0x prefix"""
+    return format(value, 'X')
+
+def codepoint_to_string(codepoints):
+    """Converts a list of codepoints into a string separated with space."""
+    return '_'.join([to_hex_str(x) for x in codepoints])
+
+def read_cmap12(ttf, glyph_to_codepoint_map, codepoint_map):
+    cmap = ttf['cmap']
+    for table in cmap.tables:
+        if table.format == 12 and table.platformID == 3 and table.platEncID == 10:
+            for codepoint, glyph_name in table.cmap.iteritems():
+                glyph_to_codepoint_map[glyph_name] = codepoint
+                codepoint_map[codepoint_to_string([codepoint])] = glyph_name
+                # self.update_emoji_data([codepoint], glyph_name)
+            return table
+    raise ValueError("Font doesn't contain cmap with format:12, platformID:3 and platEncID:10")
+
+def read_gsub(ttf, glyph_to_codepoint_map, codepoint_map):
+    gsub = ttf['GSUB']
+    ligature_subtables = []
+    context_subtables = []
+    # this code is font dependent, implementing all gsub rules is out of scope of EmojiCompat
+    # and would be expensive with little value
+    for lookup in gsub.table.LookupList.Lookup:
+        for subtable in lookup.SubTable:
+            if subtable.LookupType == 5:
+                context_subtables.append(subtable)
+            elif subtable.LookupType == 4:
+                ligature_subtables.append(subtable)
+
+    for subtable in context_subtables:
+        add_gsub_context_subtable(subtable, gsub.table.LookupList, glyph_to_codepoint_map, codepoint_map)
+
+    for subtable in ligature_subtables:
+        add_gsub_ligature_subtable(subtable, glyph_to_codepoint_map, codepoint_map)
+
+def add_gsub_context_subtable(subtable, lookup_list, glyph_to_codepoint_map, codepoint_map):
+    for sub_class_set in subtable.SubClassSet:
+        if sub_class_set:
+            for sub_class_rule in sub_class_set.SubClassRule:
+                subs_list = len(sub_class_rule.SubstLookupRecord) * [None]
+                for record in sub_class_rule.SubstLookupRecord:
+                    subs_list[record.SequenceIndex] = get_substitutions(lookup_list,
+                                                                        record.LookupListIndex)
+                combinations = list(itertools.product(*subs_list))
+                for seq in combinations:
+                    glyph_names = [x["input"] for x in seq]
+                    codepoints = [glyph_to_codepoint_map[x] for x in glyph_names]
+                    outputs = [x["output"] for x in seq if x["output"]]
+                    nonempty_outputs = filter(lambda x: x.strip() , outputs)
+                    if len(nonempty_outputs) == 0:
+                        print("Warning: no output glyph is set for " + str(glyph_names))
+                        continue
+                    elif len(nonempty_outputs) > 1:
+                        print(
+                            "Warning: multiple glyph is set for "
+                                + str(glyph_names) + ", will use the first one")
+
+                    glyph = nonempty_outputs[0]
+                    codepoint_map[codepoint_to_string(codepoints)] = glyph
+
+def get_substitutions(lookup_list, index):
+    result = []
+    for x in lookup_list.Lookup[index].SubTable:
+        for input, output in x.mapping.iteritems():
+            result.append({"input": input, "output": output})
+    return result
+
+def add_gsub_ligature_subtable(subtable, glyph_to_codepoint_map, codepoint_map):
+    for name, ligatures in subtable.ligatures.iteritems():
+        for ligature in ligatures:
+            glyph_names = [name] + ligature.Component
+            codepoints = [glyph_to_codepoint_map[x] for x in glyph_names]
+            codepoint_map[codepoint_to_string(codepoints)] = ligature.LigGlyph
+
+def read_cbdt(ttf):
+  cbdt = ttf['CBDT']
+  glyph_to_image = {}
+  for strike_data in cbdt.strikeData:
+    for key, data in strike_data.iteritems():
+      data.decompile
+      glyph_to_image[key] = Image.open(io.BytesIO(data.imageData))
+  return glyph_to_image
+
+
+rgba_map = {}
+
+def similar_img(img1, img2):
+    # return if images are the same with accepting some changes
+    if img1 is None and img2 is None: return True
+    if img1 is None or img2 is None: return False
+    if not img1.size == img2.size: return False
+
+    pixels1 = rgba_map.get(img1, img1.convert('L').getdata())
+    pixels2 = rgba_map.get(img2, img2.convert('L').getdata())
+    pixels = itertools.izip(pixels1, pixels2)
+    diff = 0
+    for px1, px2 in pixels:
+        diff = diff + abs(px1-px2)
+    pixel_count = 1.0 * img1.size[0] * img1.size[1]
+    normalized_diff = diff / pixel_count / 255.0 * 100.0
+    if normalized_diff <= 0.5: return True
+    return False
+
+def main(argv):
+  codepoint_map_1 = {}
+  codepoint_map_2 = {}
+  glyph_to_codepoint_map_1 = {}
+  glyph_to_codepoint_map_2 = {}
+
+  with contextlib.closing(ttLib.TTFont(argv[1])) as ttf:
+    font1_cbdt = read_cbdt(ttf)
+    read_cmap12(ttf, glyph_to_codepoint_map_1, codepoint_map_1)
+    read_gsub(ttf, glyph_to_codepoint_map_1, codepoint_map_1)
+  with contextlib.closing(ttLib.TTFont(argv[2])) as ttf:
+    font2_cbdt = read_cbdt(ttf)
+    read_cmap12(ttf, glyph_to_codepoint_map_2, codepoint_map_2)
+    read_gsub(ttf, glyph_to_codepoint_map_2, codepoint_map_2)
+
+  glyphs1 = set(font1_cbdt.keys())
+  glyphs2 = set(font2_cbdt.keys())
+
+  codepoints_set1 = set(codepoint_map_1.keys())
+  codepoints_set2 = set(codepoint_map_2.keys())
+
+  if codepoints_set1 != codepoints_set2:
+    print "Codepoints set has changed: : %s" % (codepoints_set1 ^ codepoints_set2)
+
+  all_codepoints = set(codepoint_map_1.keys()).union(codepoint_map_2.keys())
+
+  for key in all_codepoints:
+    glyph1 = codepoint_map_1[key] if key in codepoint_map_1 else None
+    glyph2 = codepoint_map_2[key] if key in codepoint_map_2 else None
+
+    image1 = font1_cbdt[glyph1] if glyph1 and glyph1 in font1_cbdt else None
+    image2 = font2_cbdt[glyph2] if glyph2 and glyph2 in font2_cbdt else None
+
+    if not similar_img(image1, image2):
+      print 'Glyph %s has different image' % key
+      if image1:
+        with open(os.path.join(argv[3], '%s_old.png' % key), 'w') as f:
+            image1.save(f)
+      if image2:
+        with open(os.path.join(argv[3], '%s_new.png' % key), 'w') as f:
+            image2.save(f)
+
+
+def print_usage():
+    """Prints how to use the script."""
+    print("usage: old_font new_font output_dir")
+
+if __name__ == '__main__':
+   if len(sys.argv) < 3:
+       print_usage()
+       sys.exit(1)
+   main(sys.argv)