diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..80c574c9
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "qml/opaque"]
+ path = qml/opaque
+ url = https://git.openprivacy.ca/openprivacy/opaque
diff --git a/go.mod b/go.mod
index ac957848..3acfd98c 100644
--- a/go.mod
+++ b/go.mod
@@ -7,6 +7,7 @@ require (
git.openprivacy.ca/openprivacy/connectivity v1.1.4
git.openprivacy.ca/openprivacy/log v1.0.0
github.com/gopherjs/gopherjs v0.0.0-20200209183636-89e6cbcd0b6d // indirect
- github.com/therecipe/qt v0.0.0-20191101232336-18864661ae4f
- github.com/therecipe/qt/internal/binding/files/docs/5.13.0 v0.0.0-20191002095216-73192f6811d0 // indirect; Required - do not delete or `go tidy` away
+ github.com/therecipe/qt v0.0.0-20200126204426-5074eb6d8c41
+ github.com/therecipe/qt/internal/binding/files/docs/5.12.0 v0.0.0-20200126204426-5074eb6d8c41 // indirect
+ github.com/therecipe/qt/internal/binding/files/docs/5.13.0 v0.0.0-20200126204426-5074eb6d8c41 // indirect
)
diff --git a/go/ui/gcd.go b/go/ui/gcd.go
index 2aa034c0..afabe59e 100644
--- a/go/ui/gcd.go
+++ b/go/ui/gcd.go
@@ -21,7 +21,7 @@ type GrandCentralDispatcher struct {
core.QObject
QMLEngine *qml.QQmlApplicationEngine
- Translator *core.QTranslator
+ Translator, OpaqueTranslator *core.QTranslator
uIManagers map[string]Manager // profile-onion : Manager
diff --git a/i18n/translation_de.ts b/i18n/translation_de.ts
index 0bee62d0..af483be3 100644
--- a/i18n/translation_de.ts
+++ b/i18n/translation_de.ts
@@ -55,111 +55,12 @@
ContactList
-
+
ex: "... paste an address here to add a contact ..."
Adresse hier hinzufügen, um einen Kontakt aufzunehmen
-
- EmojiDrawer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Search...
-
-
-
-
-
- Expressions
-
-
-
-
-
- Activities
-
-
-
-
-
- Food, drink & herbs
-
-
-
-
-
- Gender, relationships & sexuality
-
-
-
-
-
- Nature and effects
-
-
-
-
-
- Objects
-
-
-
-
-
- People and animals
-
-
-
-
-
- Symbols
-
-
-
-
-
- Travel & places
-
-
-
-
-
- Miscellaneous
-
-
-
GroupSettingsPane
@@ -205,14 +106,6 @@
Löschen
-
- InplaceEditText
-
-
-
-
-
-
ListOverlay
@@ -237,7 +130,7 @@
MembershipOverlay
-
+
Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.
Unten steht eine Liste der Benutzer, die Nachrichten an die Gruppe gesendet haben. Möglicherweise enthält diese Benutzerzliste nicht alle, die Zugang zur Gruppe haben.
@@ -246,24 +139,24 @@
Message
-
+
Click to DM
Klicken, um DM zu senden
-
+
Could not send this message
Nachricht konnte nicht gesendet werden
-
+
bestätigt
-
+
Bestätigung ausstehend
@@ -294,35 +187,35 @@
OverlayPane
-
+
Do you want to accept the invitation to $GROUP
Möchtest Du die Einladung annehmen
-
+
Accept group invite button
Annehmen
-
+
Reject Group invite button
Ablehnen
-
+
Chat
-
+
Listen
-
+
Meldungen
@@ -344,28 +237,28 @@
Kopieren
-
+
notification: copied to clipboard
in die Zwischenablage kopiert
-
+
Angezeigter Name
-
+
speichern
-
+
löschen
-
+
@@ -478,7 +371,7 @@
ProfileList
-
+
@@ -486,24 +379,24 @@
ProfileManagerPane
-
+
Please enter password:
-
+
-
+
0 profiles loaded with that password
-
+
Unlock
@@ -550,31 +443,4 @@
-
- Statusbar
-
-
-
- Disconnected from the internet, check your connection
-
-
-
-
-
- Attempting to connect to Tor network
-
-
-
-
-
- Connecting...
-
-
-
-
-
- Online
-
-
-
diff --git a/i18n/translation_en.qm b/i18n/translation_en.qm
index f62ab2f5..fb3618ba 100644
Binary files a/i18n/translation_en.qm and b/i18n/translation_en.qm differ
diff --git a/i18n/translation_en.ts b/i18n/translation_en.ts
index f06eea6e..bce3a55a 100644
--- a/i18n/translation_en.ts
+++ b/i18n/translation_en.ts
@@ -55,7 +55,7 @@
ContactList
-
+
ex: "... paste an address here to add a contact ..."
... paste an address here to add a contact...
@@ -64,106 +64,89 @@
EmojiDrawer
-
- Click to cycle category.
+ Click to cycle category.
Long-press to reset.
-
- Click to cycle category.
+ Click to cycle category.
Right-click to reset.
-
- Click to cycle morphs.
+ Click to cycle morphs.
Long-press to reset.
-
- Click to cycle morphs.
+ Click to cycle morphs.
Right-click to reset.
-
- Click to cycle colours.
+ Click to cycle colours.
Long-press to reset.
-
- Click to cycle colours.
+ Click to cycle colours.
Right-click to reset.
-
Search...
- Search...
+ Search...
-
Expressions
- Expressions
+ Expressions
-
Activities
- Activities
+ Activities
-
Food, drink & herbs
- Food, drink & herbs
+ Food, drink & herbs
-
Gender, relationships & sexuality
- Gender, relationships & sexuality
+ Gender, relationships & sexuality
-
Nature and effects
- Nature and effects
+ Nature and effects
-
Objects
- Objects
+ Objects
-
People and animals
- People and animals
+ People and animals
-
Symbols
- Symbols
+ Symbols
-
Travel & places
- Travel & places
+ Travel & places
-
Miscellaneous
- Miscellaneous
+ Miscellaneous
@@ -214,9 +197,8 @@ Right-click to reset.
InplaceEditText
-
- Update
+ Update
@@ -243,7 +225,7 @@ Right-click to reset.
MembershipOverlay
-
+
Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.
Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.
@@ -252,24 +234,24 @@ Right-click to reset.
Message
-
+
Click to DM
Click to DM
-
+
Could not send this message
Could not send this message
-
+
Acknowledged
-
+
Pending
@@ -300,35 +282,35 @@ Right-click to reset.
OverlayPane
-
+
Do you want to accept the invitation to $GROUP
Do you want to accept the invitation to
-
+
Accept group invite button
Accept
-
+
Reject Group invite button
Reject
-
+
Chat
-
+
Lists
-
+
Bulletins
@@ -350,23 +332,23 @@ Right-click to reset.
Copy
-
+
notification: copied to clipboard
Copied to Clipboard
-
+
Display Name
-
+
Save
-
+
Block Peer
@@ -375,7 +357,7 @@ Right-click to reset.
Unblock Peer
-
+
Delete
@@ -496,7 +478,7 @@ Right-click to reset.
ProfileList
-
+
Add new profile
@@ -504,24 +486,24 @@ Right-click to reset.
ProfileManagerPane
-
+
Please enter password:
Please enter password
-
+
Password
-
+
0 profiles loaded with that password
0 profiles loaded with that password
-
+
Unlock
Unlock
@@ -579,28 +561,24 @@ Right-click to reset.
Statusbar
-
Disconnected from the internet, check your connection
- Disconnected from the internet, check your connection
+ Disconnected from the internet, check your connection
-
Attempting to connect to Tor network
- Attempting to connect to Tor network
+ Attempting to connect to Tor network
-
Connecting...
- Connecting to network and peers...
+ Connecting to network and peers...
-
Online
- Online
+ Online
diff --git a/i18n/translation_fr.ts b/i18n/translation_fr.ts
index b8cd61fc..6453d504 100644
--- a/i18n/translation_fr.ts
+++ b/i18n/translation_fr.ts
@@ -55,111 +55,12 @@
ContactList
-
+
ex: "... paste an address here to add a contact ..."
... coller une adresse ici pour ajouter un contact...
-
- EmojiDrawer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Search...
-
-
-
-
-
- Expressions
-
-
-
-
-
- Activities
-
-
-
-
-
- Food, drink & herbs
-
-
-
-
-
- Gender, relationships & sexuality
-
-
-
-
-
- Nature and effects
-
-
-
-
-
- Objects
-
-
-
-
-
- People and animals
-
-
-
-
-
- Symbols
-
-
-
-
-
- Travel & places
-
-
-
-
-
- Miscellaneous
-
-
-
GroupSettingsPane
@@ -205,14 +106,6 @@
Effacer
-
- InplaceEditText
-
-
-
-
-
-
ListOverlay
@@ -237,7 +130,7 @@
MembershipOverlay
-
+
Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.
Liste des utilisateurs ayant envoyés un ou plusieurs messages au groupe. Cette liste peut ne pas être representatives de l'ensemble des membres du groupe.
@@ -246,24 +139,24 @@
Message
-
+
Click to DM
Envoyer un message privé
-
+
Could not send this message
Impossible d'envoyer ce message
-
+
Confirmé
-
+
En attente
@@ -294,35 +187,35 @@
OverlayPane
-
+
Do you want to accept the invitation to $GROUP
Voulez-vous accepter l'invitation au groupe
-
+
Accept group invite button
Accepter
-
+
Reject Group invite button
Refuser
-
+
Discuter
-
+
Listes
-
+
Bulletins
@@ -344,28 +237,28 @@
Copier
-
+
notification: copied to clipboard
Copié dans le presse-papier
-
+
Pseudo
-
+
Sauvegarder
-
+
Effacer
-
+
@@ -478,7 +371,7 @@
ProfileList
-
+
@@ -486,24 +379,24 @@
ProfileManagerPane
-
+
Please enter password:
-
+
-
+
0 profiles loaded with that password
-
+
Unlock
@@ -550,31 +443,4 @@
-
- Statusbar
-
-
-
- Disconnected from the internet, check your connection
-
-
-
-
-
- Attempting to connect to Tor network
-
-
-
-
-
- Connecting...
-
-
-
-
-
- Online
-
-
-
diff --git a/i18n/translation_pt.ts b/i18n/translation_pt.ts
index df0402bd..2c823d90 100644
--- a/i18n/translation_pt.ts
+++ b/i18n/translation_pt.ts
@@ -55,111 +55,12 @@
ContactList
-
+
ex: "... paste an address here to add a contact ..."
… cole um endereço aqui para adicionar um contato…
-
- EmojiDrawer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Search...
-
-
-
-
-
- Expressions
-
-
-
-
-
- Activities
-
-
-
-
-
- Food, drink & herbs
-
-
-
-
-
- Gender, relationships & sexuality
-
-
-
-
-
- Nature and effects
-
-
-
-
-
- Objects
-
-
-
-
-
- People and animals
-
-
-
-
-
- Symbols
-
-
-
-
-
- Travel & places
-
-
-
-
-
- Miscellaneous
-
-
-
GroupSettingsPane
@@ -205,14 +106,6 @@
Deletar
-
- InplaceEditText
-
-
-
-
-
-
ListOverlay
@@ -237,7 +130,7 @@
MembershipOverlay
-
+
Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.
A lista abaixo é de usuários que enviaram mensagens ao grupo. Essa lista pode não refletir todos os usuários que têm acesso ao grupo.
@@ -246,24 +139,24 @@
Message
-
+
Click to DM
Clique para DM
-
+
Could not send this message
Não deu para enviar esta mensagem
-
+
Confirmada
-
+
Pendente
@@ -294,35 +187,35 @@
OverlayPane
-
+
Do you want to accept the invitation to $GROUP
Você quer aceitar o convite para
-
+
Accept group invite button
Aceitar
-
+
Reject Group invite button
Recusar
-
+
Chat
-
+
Listas
-
+
Boletins
@@ -344,28 +237,28 @@
Copiar
-
+
notification: copied to clipboard
Copiado
-
+
Nome de Exibição
-
+
Salvar
-
+
Deletar
-
+
@@ -478,7 +371,7 @@
ProfileList
-
+
@@ -486,24 +379,24 @@
ProfileManagerPane
-
+
Please enter password:
-
+
-
+
0 profiles loaded with that password
-
+
Unlock
@@ -550,31 +443,4 @@
-
- Statusbar
-
-
-
- Disconnected from the internet, check your connection
-
-
-
-
-
- Attempting to connect to Tor network
-
-
-
-
-
- Connecting...
-
-
-
-
-
- Online
-
-
-
diff --git a/main.go b/main.go
index 1d28ce20..f506b647 100644
--- a/main.go
+++ b/main.go
@@ -171,10 +171,16 @@ func mainUi(flagLocal bool, flagClientUI bool) {
translator := core.NewQTranslator(nil)
translator.Load("translation_en", ":/i18n/", "", "")
core.QCoreApplication_InstallTranslator(translator)
+ opaqueTranslator := core.NewQTranslator(nil)
+ opaqueTranslator.Load("translation_en", ":/qml/opaque/i18n/", "", "")
+ core.QCoreApplication_InstallTranslator(opaqueTranslator)
gcd.Translator = core.NewQTranslator(nil)
gcd.Translator.Load("translation_"+core.QLocale_System().Name(), ":/i18n/", "", "")
core.QCoreApplication_InstallTranslator(gcd.Translator)
+ gcd.OpaqueTranslator = core.NewQTranslator(nil)
+ gcd.OpaqueTranslator.Load("translation_"+core.QLocale_System().Name(), ":/qml/opaque/i18n/", "", "")
+ core.QCoreApplication_InstallTranslator(gcd.OpaqueTranslator)
core.QCoreApplication_SetAttribute(core.Qt__AA_EnableHighDpiScaling, true)
quickcontrols2.QQuickStyle_SetStyle("Universe")
diff --git a/qml.qrc b/qml.qrc
index 279eeeec..d8bacb3c 100644
--- a/qml.qrc
+++ b/qml.qrc
@@ -13,38 +13,16 @@
qml/panes/SplashPane.qml
qml/panes/ProfileManagerPane.qml
qml/panes/ProfileAddEditPane.qml
- qml/styles/CwtchComboBoxStyle.qml
- qml/styles/CwtchExpandingButton.qml
- qml/styles/CwtchTextAreaStyle.qml
- qml/styles/CwtchTextFieldStyle.qml
- qml/widgets/ContactList.qml
- qml/widgets/Portrait.qml
- qml/widgets/Badge.qml
- qml/widgets/PortraitRow.qml
- qml/widgets/ProfileRow.qml
- qml/widgets/ContactRow.qml
- qml/widgets/EmojiDrawer.qml
- qml/widgets/FontAwesome.qml
- qml/widgets/IconTextField.qml
- qml/widgets/InplaceEditText.qml
- qml/widgets/Message.qml
- qml/widgets/ScalingLabel.qml
- qml/widgets/EllipsisLabel.qml
- qml/widgets/MyProfile.qml
- qml/widgets/ProfileList.qml
- qml/widgets/RadioButton.qml
- qml/widgets/Button.qml
- qml/widgets/TextField.qml
- qml/widgets/Toolbar.qml
- qml/widgets/Statusbar.qml
- qml/widgets/UnderlineTextField.qml
- qml/widgets/controls/Loader.qml
- qml/widgets/controls/Variables.qml
+ qml/widgets/ContactList.qml
+ qml/widgets/ContactRow.qml
+ qml/widgets/Message.qml
+ qml/widgets/MyProfile.qml
+ qml/widgets/ProfileList.qml
+ qml/widgets/ProfileRow.qml
i18n/translation_de.qm
i18n/translation_en.qm
i18n/translation_fr.qm
i18n/translation_pt.qm
qml/images/cwtch_logo.png
- qml/styles/CwtchProgress.qml
diff --git a/qml/fonts/AdobeBlank.ttf b/qml/fonts/AdobeBlank.ttf
deleted file mode 100644
index 899d4876..00000000
Binary files a/qml/fonts/AdobeBlank.ttf and /dev/null differ
diff --git a/qml/fonts/Fonts.qml b/qml/fonts/Fonts.qml
deleted file mode 100644
index 40d135de..00000000
--- a/qml/fonts/Fonts.qml
+++ /dev/null
@@ -1,27 +0,0 @@
-pragma Singleton
-
-import QtQuick 2.5
-
-QtObject {
-
- property FontLoader applicationFontBold: FontLoader {
- id: opensansBold
- source: "qrc:/qml/fonts/opensans/OpenSans-Bold.ttf"
- }
-
- property FontLoader applicationFontExtrBold: FontLoader {
- id: opensansExtraBold
- source: "qrc:/qml/fonts/opensans/OpenSans-ExtraBold.ttf"
- }
-
- property FontLoader applicationFontRegular: FontLoader {
- id: opensansRegular
- source: "qrc:/qml/fonts/opensans/OpenSans-Regular.ttf"
- }
-
- property FontLoader applicationFontLight: FontLoader {
- id: opensansLight
- source: "qrc:/qml/fonts/opensans/OpenSans-Light.ttf"
- }
-
-}
diff --git a/qml/fonts/MutantStandard.js b/qml/fonts/MutantStandard.js
deleted file mode 100644
index 6393208e..00000000
--- a/qml/fonts/MutantStandard.js
+++ /dev/null
@@ -1,73 +0,0 @@
-var standard = (function () {
- 'use strict';
-
- var manifest = []
- var xhr = new XMLHttpRequest;
- xhr.open("GET", "../images/mtnt_data.json", false);
- xhr.onreadystatechange = function() {
- if (xhr.readyState == XMLHttpRequest.DONE) {
- manifest = JSON.parse(xhr.responseText);
- }
- };
- xhr.send();
-
- var basecolors = ["r1","r2","r3","d1","d2","d3","o1","o2","o3","y1","y2","y3","l1","l2","l3","g1","g2","g3","t1","t2","t3","c1","c2","c3","s1","s2","s3","b1","b2","b3","v1","v2","v3","m1","m2","m3","p1","p2","p3","e1","e2","e3","k1","k2","k3"];
-
- var extracolors = {
- "hmn": ["h1","h2","h3","h4","h5"],
- "paw": ["fe1","ft1","fk1"],
- "clw": []
- }
-
- var standard = {
- imagePath: "/",
- basecolors: basecolors,
- extracolors: extracolors,
- morphs: ["hmn", "clw", "paw"],
- parse: parse,
- numColors: numColors,
- colorByIndex: colorByIndex,
- manifest: manifest,
- }
-
- return standard;
-
- function numColors(morph) {
- if (typeof extracolors[morph] === "undefined") return basecolors.length;
- return basecolors.length + extracolors[morph].length;
- }
-
- function colorByIndex(idx, morph) {
- console.log(idx, morph, numColors(morph), idx % numColors(morph), basecolors.length)
- var i = idx % numColors(morph);
- if (i >= basecolors.length) return extracolors[morph][i - basecolors.length];
- else return basecolors[i];
- }
-
- function imagePath() {
- return standard.imagePath;
- }
-
- function parse(str) {
- var re = ":(artist|artist_r1|artist_r2|artist_r3|artist_d1|artist_d2|artist_d3|artist_o1|artist_o2|artist_o3|artist_y1|artist_y2|artist_y3|artist_l1|artist_l2|artist_l3|artist_g1|artist_g2|artist_g3|artist_t1|artist_t2|artist_t3|artist_c1|artist_c2|artist_c3|artist_s1|artist_s2|artist_s3|artist_b1|artist_b2|artist_b3|artist_v1|artist_v2|artist_v3|artist_m1|artist_m2|artist_m3|artist_p1|artist_p2|artist_p3|artist_e1|artist_e2|artist_e3|artist_k1|artist_k2|artist_k3|artist_h1|artist_h2|artist_h3|artist_h4|artist_h5|artist_fe1|artist_ft1|artist_fk1|astronaut|astronaut_r1|astronaut_r2|astronaut_r3|astronaut_d1|astronaut_d2|astronaut_d3|astronaut_o1|astronaut_o2|astronaut_o3|astronaut_y1|astronaut_y2|astronaut_y3|astronaut_l1|astronaut_l2|astronaut_l3|astronaut_g1|astronaut_g2|astronaut_g3|astronaut_t1|astronaut_t2|astronaut_t3|astronaut_c1|astronaut_c2|astronaut_c3|astronaut_s1|astronaut_s2|astronaut_s3|astronaut_b1|astronaut_b2|astronaut_b3|astronaut_v1|astronaut_v2|astronaut_v3|astronaut_m1|astronaut_m2|astronaut_m3|astronaut_p1|astronaut_p2|astronaut_p3|astronaut_e1|astronaut_e2|astronaut_e3|astronaut_k1|astronaut_k2|astronaut_k3|astronaut_h1|astronaut_h2|astronaut_h3|astronaut_h4|astronaut_h5|astronaut_fe1|astronaut_ft1|astronaut_fk1|chef|chef_r1|chef_r2|chef_r3|chef_d1|chef_d2|chef_d3|chef_o1|chef_o2|chef_o3|chef_y1|chef_y2|chef_y3|chef_l1|chef_l2|chef_l3|chef_g1|chef_g2|chef_g3|chef_t1|chef_t2|chef_t3|chef_c1|chef_c2|chef_c3|chef_s1|chef_s2|chef_s3|chef_b1|chef_b2|chef_b3|chef_v1|chef_v2|chef_v3|chef_m1|chef_m2|chef_m3|chef_p1|chef_p2|chef_p3|chef_e1|chef_e2|chef_e3|chef_k1|chef_k2|chef_k3|chef_h1|chef_h2|chef_h3|chef_h4|chef_h5|chef_fe1|chef_ft1|chef_fk1|construction_worker|construction_worker_r1|construction_worker_r2|construction_worker_r3|construction_worker_d1|construction_worker_d2|construction_worker_d3|construction_worker_o1|construction_worker_o2|construction_worker_o3|construction_worker_y1|construction_worker_y2|construction_worker_y3|construction_worker_l1|construction_worker_l2|construction_worker_l3|construction_worker_g1|construction_worker_g2|construction_worker_g3|construction_worker_t1|construction_worker_t2|construction_worker_t3|construction_worker_c1|construction_worker_c2|construction_worker_c3|construction_worker_s1|construction_worker_s2|construction_worker_s3|construction_worker_b1|construction_worker_b2|construction_worker_b3|construction_worker_v1|construction_worker_v2|construction_worker_v3|construction_worker_m1|construction_worker_m2|construction_worker_m3|construction_worker_p1|construction_worker_p2|construction_worker_p3|construction_worker_e1|construction_worker_e2|construction_worker_e3|construction_worker_k1|construction_worker_k2|construction_worker_k3|construction_worker_h1|construction_worker_h2|construction_worker_h3|construction_worker_h4|construction_worker_h5|construction_worker_fe1|construction_worker_ft1|construction_worker_fk1|detective|detective_r1|detective_r2|detective_r3|detective_d1|detective_d2|detective_d3|detective_o1|detective_o2|detective_o3|detective_y1|detective_y2|detective_y3|detective_l1|detective_l2|detective_l3|detective_g1|detective_g2|detective_g3|detective_t1|detective_t2|detective_t3|detective_c1|detective_c2|detective_c3|detective_s1|detective_s2|detective_s3|detective_b1|detective_b2|detective_b3|detective_v1|detective_v2|detective_v3|detective_m1|detective_m2|detective_m3|detective_p1|detective_p2|detective_p3|detective_e1|detective_e2|detective_e3|detective_k1|detective_k2|detective_k3|detective_h1|detective_h2|detective_h3|detective_h4|detective_h5|detective_fe1|detective_ft1|detective_fk1|factory_worker|factory_worker_r1|factory_worker_r2|factory_worker_r3|factory_worker_d1|factory_worker_d2|factory_worker_d3|factory_worker_o1|factory_worker_o2|factory_worker_o3|factory_worker_y1|factory_worker_y2|factory_worker_y3|factory_worker_l1|factory_worker_l2|factory_worker_l3|factory_worker_g1|factory_worker_g2|factory_worker_g3|factory_worker_t1|factory_worker_t2|factory_worker_t3|factory_worker_c1|factory_worker_c2|factory_worker_c3|factory_worker_s1|factory_worker_s2|factory_worker_s3|factory_worker_b1|factory_worker_b2|factory_worker_b3|factory_worker_v1|factory_worker_v2|factory_worker_v3|factory_worker_m1|factory_worker_m2|factory_worker_m3|factory_worker_p1|factory_worker_p2|factory_worker_p3|factory_worker_e1|factory_worker_e2|factory_worker_e3|factory_worker_k1|factory_worker_k2|factory_worker_k3|factory_worker_h1|factory_worker_h2|factory_worker_h3|factory_worker_h4|factory_worker_h5|factory_worker_fe1|factory_worker_ft1|factory_worker_fk1|farmer|farmer_r1|farmer_r2|farmer_r3|farmer_d1|farmer_d2|farmer_d3|farmer_o1|farmer_o2|farmer_o3|farmer_y1|farmer_y2|farmer_y3|farmer_l1|farmer_l2|farmer_l3|farmer_g1|farmer_g2|farmer_g3|farmer_t1|farmer_t2|farmer_t3|farmer_c1|farmer_c2|farmer_c3|farmer_s1|farmer_s2|farmer_s3|farmer_b1|farmer_b2|farmer_b3|farmer_v1|farmer_v2|farmer_v3|farmer_m1|farmer_m2|farmer_m3|farmer_p1|farmer_p2|farmer_p3|farmer_e1|farmer_e2|farmer_e3|farmer_k1|farmer_k2|farmer_k3|farmer_h1|farmer_h2|farmer_h3|farmer_h4|farmer_h5|farmer_fe1|farmer_ft1|farmer_fk1|firefighter|firefighter_r1|firefighter_r2|firefighter_r3|firefighter_d1|firefighter_d2|firefighter_d3|firefighter_o1|firefighter_o2|firefighter_o3|firefighter_y1|firefighter_y2|firefighter_y3|firefighter_l1|firefighter_l2|firefighter_l3|firefighter_g1|firefighter_g2|firefighter_g3|firefighter_t1|firefighter_t2|firefighter_t3|firefighter_c1|firefighter_c2|firefighter_c3|firefighter_s1|firefighter_s2|firefighter_s3|firefighter_b1|firefighter_b2|firefighter_b3|firefighter_v1|firefighter_v2|firefighter_v3|firefighter_m1|firefighter_m2|firefighter_m3|firefighter_p1|firefighter_p2|firefighter_p3|firefighter_e1|firefighter_e2|firefighter_e3|firefighter_k1|firefighter_k2|firefighter_k3|firefighter_h1|firefighter_h2|firefighter_h3|firefighter_h4|firefighter_h5|firefighter_fe1|firefighter_ft1|firefighter_fk1|health_worker|health_worker_r1|health_worker_r2|health_worker_r3|health_worker_d1|health_worker_d2|health_worker_d3|health_worker_o1|health_worker_o2|health_worker_o3|health_worker_y1|health_worker_y2|health_worker_y3|health_worker_l1|health_worker_l2|health_worker_l3|health_worker_g1|health_worker_g2|health_worker_g3|health_worker_t1|health_worker_t2|health_worker_t3|health_worker_c1|health_worker_c2|health_worker_c3|health_worker_s1|health_worker_s2|health_worker_s3|health_worker_b1|health_worker_b2|health_worker_b3|health_worker_v1|health_worker_v2|health_worker_v3|health_worker_m1|health_worker_m2|health_worker_m3|health_worker_p1|health_worker_p2|health_worker_p3|health_worker_e1|health_worker_e2|health_worker_e3|health_worker_k1|health_worker_k2|health_worker_k3|health_worker_h1|health_worker_h2|health_worker_h3|health_worker_h4|health_worker_h5|health_worker_fe1|health_worker_ft1|health_worker_fk1|judge|judge_r1|judge_r2|judge_r3|judge_d1|judge_d2|judge_d3|judge_o1|judge_o2|judge_o3|judge_y1|judge_y2|judge_y3|judge_l1|judge_l2|judge_l3|judge_g1|judge_g2|judge_g3|judge_t1|judge_t2|judge_t3|judge_c1|judge_c2|judge_c3|judge_s1|judge_s2|judge_s3|judge_b1|judge_b2|judge_b3|judge_v1|judge_v2|judge_v3|judge_m1|judge_m2|judge_m3|judge_p1|judge_p2|judge_p3|judge_e1|judge_e2|judge_e3|judge_k1|judge_k2|judge_k3|judge_h1|judge_h2|judge_h3|judge_h4|judge_h5|judge_fe1|judge_ft1|judge_fk1|mechanic|mechanic_r1|mechanic_r2|mechanic_r3|mechanic_d1|mechanic_d2|mechanic_d3|mechanic_o1|mechanic_o2|mechanic_o3|mechanic_y1|mechanic_y2|mechanic_y3|mechanic_l1|mechanic_l2|mechanic_l3|mechanic_g1|mechanic_g2|mechanic_g3|mechanic_t1|mechanic_t2|mechanic_t3|mechanic_c1|mechanic_c2|mechanic_c3|mechanic_s1|mechanic_s2|mechanic_s3|mechanic_b1|mechanic_b2|mechanic_b3|mechanic_v1|mechanic_v2|mechanic_v3|mechanic_m1|mechanic_m2|mechanic_m3|mechanic_p1|mechanic_p2|mechanic_p3|mechanic_e1|mechanic_e2|mechanic_e3|mechanic_k1|mechanic_k2|mechanic_k3|mechanic_h1|mechanic_h2|mechanic_h3|mechanic_h4|mechanic_h5|mechanic_fe1|mechanic_ft1|mechanic_fk1|office_worker|office_worker_r1|office_worker_r2|office_worker_r3|office_worker_d1|office_worker_d2|office_worker_d3|office_worker_o1|office_worker_o2|office_worker_o3|office_worker_y1|office_worker_y2|office_worker_y3|office_worker_l1|office_worker_l2|office_worker_l3|office_worker_g1|office_worker_g2|office_worker_g3|office_worker_t1|office_worker_t2|office_worker_t3|office_worker_c1|office_worker_c2|office_worker_c3|office_worker_s1|office_worker_s2|office_worker_s3|office_worker_b1|office_worker_b2|office_worker_b3|office_worker_v1|office_worker_v2|office_worker_v3|office_worker_m1|office_worker_m2|office_worker_m3|office_worker_p1|office_worker_p2|office_worker_p3|office_worker_e1|office_worker_e2|office_worker_e3|office_worker_k1|office_worker_k2|office_worker_k3|office_worker_h1|office_worker_h2|office_worker_h3|office_worker_h4|office_worker_h5|office_worker_fe1|office_worker_ft1|office_worker_fk1|pilot|pilot_r1|pilot_r2|pilot_r3|pilot_d1|pilot_d2|pilot_d3|pilot_o1|pilot_o2|pilot_o3|pilot_y1|pilot_y2|pilot_y3|pilot_l1|pilot_l2|pilot_l3|pilot_g1|pilot_g2|pilot_g3|pilot_t1|pilot_t2|pilot_t3|pilot_c1|pilot_c2|pilot_c3|pilot_s1|pilot_s2|pilot_s3|pilot_b1|pilot_b2|pilot_b3|pilot_v1|pilot_v2|pilot_v3|pilot_m1|pilot_m2|pilot_m3|pilot_p1|pilot_p2|pilot_p3|pilot_e1|pilot_e2|pilot_e3|pilot_k1|pilot_k2|pilot_k3|pilot_h1|pilot_h2|pilot_h3|pilot_h4|pilot_h5|pilot_fe1|pilot_ft1|pilot_fk1|scientist|scientist_r1|scientist_r2|scientist_r3|scientist_d1|scientist_d2|scientist_d3|scientist_o1|scientist_o2|scientist_o3|scientist_y1|scientist_y2|scientist_y3|scientist_l1|scientist_l2|scientist_l3|scientist_g1|scientist_g2|scientist_g3|scientist_t1|scientist_t2|scientist_t3|scientist_c1|scientist_c2|scientist_c3|scientist_s1|scientist_s2|scientist_s3|scientist_b1|scientist_b2|scientist_b3|scientist_v1|scientist_v2|scientist_v3|scientist_m1|scientist_m2|scientist_m3|scientist_p1|scientist_p2|scientist_p3|scientist_e1|scientist_e2|scientist_e3|scientist_k1|scientist_k2|scientist_k3|scientist_h1|scientist_h2|scientist_h3|scientist_h4|scientist_h5|scientist_fe1|scientist_ft1|scientist_fk1|singer|singer_r1|singer_r2|singer_r3|singer_d1|singer_d2|singer_d3|singer_o1|singer_o2|singer_o3|singer_y1|singer_y2|singer_y3|singer_l1|singer_l2|singer_l3|singer_g1|singer_g2|singer_g3|singer_t1|singer_t2|singer_t3|singer_c1|singer_c2|singer_c3|singer_s1|singer_s2|singer_s3|singer_b1|singer_b2|singer_b3|singer_v1|singer_v2|singer_v3|singer_m1|singer_m2|singer_m3|singer_p1|singer_p2|singer_p3|singer_e1|singer_e2|singer_e3|singer_k1|singer_k2|singer_k3|singer_h1|singer_h2|singer_h3|singer_h4|singer_h5|singer_fe1|singer_ft1|singer_fk1|student|student_r1|student_r2|student_r3|student_d1|student_d2|student_d3|student_o1|student_o2|student_o3|student_y1|student_y2|student_y3|student_l1|student_l2|student_l3|student_g1|student_g2|student_g3|student_t1|student_t2|student_t3|student_c1|student_c2|student_c3|student_s1|student_s2|student_s3|student_b1|student_b2|student_b3|student_v1|student_v2|student_v3|student_m1|student_m2|student_m3|student_p1|student_p2|student_p3|student_e1|student_e2|student_e3|student_k1|student_k2|student_k3|student_h1|student_h2|student_h3|student_h4|student_h5|student_fe1|student_ft1|student_fk1|teacher|teacher_r1|teacher_r2|teacher_r3|teacher_d1|teacher_d2|teacher_d3|teacher_o1|teacher_o2|teacher_o3|teacher_y1|teacher_y2|teacher_y3|teacher_l1|teacher_l2|teacher_l3|teacher_g1|teacher_g2|teacher_g3|teacher_t1|teacher_t2|teacher_t3|teacher_c1|teacher_c2|teacher_c3|teacher_s1|teacher_s2|teacher_s3|teacher_b1|teacher_b2|teacher_b3|teacher_v1|teacher_v2|teacher_v3|teacher_m1|teacher_m2|teacher_m3|teacher_p1|teacher_p2|teacher_p3|teacher_e1|teacher_e2|teacher_e3|teacher_k1|teacher_k2|teacher_k3|teacher_h1|teacher_h2|teacher_h3|teacher_h4|teacher_h5|teacher_fe1|teacher_ft1|teacher_fk1|technologist|technologist_r1|technologist_r2|technologist_r3|technologist_d1|technologist_d2|technologist_d3|technologist_o1|technologist_o2|technologist_o3|technologist_y1|technologist_y2|technologist_y3|technologist_l1|technologist_l2|technologist_l3|technologist_g1|technologist_g2|technologist_g3|technologist_t1|technologist_t2|technologist_t3|technologist_c1|technologist_c2|technologist_c3|technologist_s1|technologist_s2|technologist_s3|technologist_b1|technologist_b2|technologist_b3|technologist_v1|technologist_v2|technologist_v3|technologist_m1|technologist_m2|technologist_m3|technologist_p1|technologist_p2|technologist_p3|technologist_e1|technologist_e2|technologist_e3|technologist_k1|technologist_k2|technologist_k3|technologist_h1|technologist_h2|technologist_h3|technologist_h4|technologist_h5|technologist_fe1|technologist_ft1|technologist_fk1|umbrella|closed_umbrella|studio_microphone|musical_score|football|basketball|baseball|softball|tennis|8_ball|volleyball|american_football|rugby_ball|smile|wink|upside_down_smile|halo|content|big_smile|happy|grin|sweat_smile|grinning|laughing|joy|rofl|stick_out_tongue|wink_tongue|xd_tongue|yum|money_face|party_face|embarrassed|blushing|relaxed|hug|kiss|wink_kiss|happy_kiss|blush_kiss|smile_hearts|heart_eyes|soft|headpats|face_without_mouth|straight_face|expressionless|concern|disappointed_but_relieved|pensive|unamused|smirk|thinking|shush|hand_over_mouth|monocle|raised_eyebrow|lying_face|rolling_eyes|grimace|starry_eyes|confused|woozy|crazy|dead|mind_blown|open_mouth|surprised|worried|shocked|scared|cold_sweat|scream|astonished|weary|exhausted|pleading|asleep|sleepy|zippy_face|drooling|hot|cold|bandaged|medical_mask|sneezing|nauseous|sick|vomiting|angry|very_angry|angry_steam|swearing|sweat|unsure|slight_frown|frown|unhappy|disappointed|persevering|confounded|crying|loud_cry|cool_face|nerd_face|cowhand|clown|shit|hot_shit|imp_devious|imp_angry|tengu_mask|robot|alien_monster|alien|grumpy_block|cat_smile|cat_grin|cat_joy|cat_devious|cat_pouting|cat_crying|cat_kiss|cat_heart_eyes|cat_scream|blep|eyes|ghost|skull|skull_and_crossbones|jack_o_lantern|hand_hmn|hand_hmn_r1|hand_hmn_r2|hand_hmn_r3|hand_hmn_d1|hand_hmn_d2|hand_hmn_d3|hand_hmn_o1|hand_hmn_o2|hand_hmn_o3|hand_hmn_y1|hand_hmn_y2|hand_hmn_y3|hand_hmn_l1|hand_hmn_l2|hand_hmn_l3|hand_hmn_g1|hand_hmn_g2|hand_hmn_g3|hand_hmn_t1|hand_hmn_t2|hand_hmn_t3|hand_hmn_c1|hand_hmn_c2|hand_hmn_c3|hand_hmn_s1|hand_hmn_s2|hand_hmn_s3|hand_hmn_b1|hand_hmn_b2|hand_hmn_b3|hand_hmn_v1|hand_hmn_v2|hand_hmn_v3|hand_hmn_m1|hand_hmn_m2|hand_hmn_m3|hand_hmn_p1|hand_hmn_p2|hand_hmn_p3|hand_hmn_e1|hand_hmn_e2|hand_hmn_e3|hand_hmn_k1|hand_hmn_k2|hand_hmn_k3|hand_hmn_h1|hand_hmn_h2|hand_hmn_h3|hand_hmn_h4|hand_hmn_h5|hand_splayed_hmn|hand_splayed_hmn_r1|hand_splayed_hmn_r2|hand_splayed_hmn_r3|hand_splayed_hmn_d1|hand_splayed_hmn_d2|hand_splayed_hmn_d3|hand_splayed_hmn_o1|hand_splayed_hmn_o2|hand_splayed_hmn_o3|hand_splayed_hmn_y1|hand_splayed_hmn_y2|hand_splayed_hmn_y3|hand_splayed_hmn_l1|hand_splayed_hmn_l2|hand_splayed_hmn_l3|hand_splayed_hmn_g1|hand_splayed_hmn_g2|hand_splayed_hmn_g3|hand_splayed_hmn_t1|hand_splayed_hmn_t2|hand_splayed_hmn_t3|hand_splayed_hmn_c1|hand_splayed_hmn_c2|hand_splayed_hmn_c3|hand_splayed_hmn_s1|hand_splayed_hmn_s2|hand_splayed_hmn_s3|hand_splayed_hmn_b1|hand_splayed_hmn_b2|hand_splayed_hmn_b3|hand_splayed_hmn_v1|hand_splayed_hmn_v2|hand_splayed_hmn_v3|hand_splayed_hmn_m1|hand_splayed_hmn_m2|hand_splayed_hmn_m3|hand_splayed_hmn_p1|hand_splayed_hmn_p2|hand_splayed_hmn_p3|hand_splayed_hmn_e1|hand_splayed_hmn_e2|hand_splayed_hmn_e3|hand_splayed_hmn_k1|hand_splayed_hmn_k2|hand_splayed_hmn_k3|hand_splayed_hmn_h1|hand_splayed_hmn_h2|hand_splayed_hmn_h3|hand_splayed_hmn_h4|hand_splayed_hmn_h5|back_of_hand_hmn|back_of_hand_hmn_r1|back_of_hand_hmn_r2|back_of_hand_hmn_r3|back_of_hand_hmn_d1|back_of_hand_hmn_d2|back_of_hand_hmn_d3|back_of_hand_hmn_o1|back_of_hand_hmn_o2|back_of_hand_hmn_o3|back_of_hand_hmn_y1|back_of_hand_hmn_y2|back_of_hand_hmn_y3|back_of_hand_hmn_l1|back_of_hand_hmn_l2|back_of_hand_hmn_l3|back_of_hand_hmn_g1|back_of_hand_hmn_g2|back_of_hand_hmn_g3|back_of_hand_hmn_t1|back_of_hand_hmn_t2|back_of_hand_hmn_t3|back_of_hand_hmn_c1|back_of_hand_hmn_c2|back_of_hand_hmn_c3|back_of_hand_hmn_s1|back_of_hand_hmn_s2|back_of_hand_hmn_s3|back_of_hand_hmn_b1|back_of_hand_hmn_b2|back_of_hand_hmn_b3|back_of_hand_hmn_v1|back_of_hand_hmn_v2|back_of_hand_hmn_v3|back_of_hand_hmn_m1|back_of_hand_hmn_m2|back_of_hand_hmn_m3|back_of_hand_hmn_p1|back_of_hand_hmn_p2|back_of_hand_hmn_p3|back_of_hand_hmn_e1|back_of_hand_hmn_e2|back_of_hand_hmn_e3|back_of_hand_hmn_k1|back_of_hand_hmn_k2|back_of_hand_hmn_k3|back_of_hand_hmn_h1|back_of_hand_hmn_h2|back_of_hand_hmn_h3|back_of_hand_hmn_h4|back_of_hand_hmn_h5|v_hmn|v_hmn_r1|v_hmn_r2|v_hmn_r3|v_hmn_d1|v_hmn_d2|v_hmn_d3|v_hmn_o1|v_hmn_o2|v_hmn_o3|v_hmn_y1|v_hmn_y2|v_hmn_y3|v_hmn_l1|v_hmn_l2|v_hmn_l3|v_hmn_g1|v_hmn_g2|v_hmn_g3|v_hmn_t1|v_hmn_t2|v_hmn_t3|v_hmn_c1|v_hmn_c2|v_hmn_c3|v_hmn_s1|v_hmn_s2|v_hmn_s3|v_hmn_b1|v_hmn_b2|v_hmn_b3|v_hmn_v1|v_hmn_v2|v_hmn_v3|v_hmn_m1|v_hmn_m2|v_hmn_m3|v_hmn_p1|v_hmn_p2|v_hmn_p3|v_hmn_e1|v_hmn_e2|v_hmn_e3|v_hmn_k1|v_hmn_k2|v_hmn_k3|v_hmn_h1|v_hmn_h2|v_hmn_h3|v_hmn_h4|v_hmn_h5|crossed_fingers_hmn|crossed_fingers_hmn_r1|crossed_fingers_hmn_r2|crossed_fingers_hmn_r3|crossed_fingers_hmn_d1|crossed_fingers_hmn_d2|crossed_fingers_hmn_d3|crossed_fingers_hmn_o1|crossed_fingers_hmn_o2|crossed_fingers_hmn_o3|crossed_fingers_hmn_y1|crossed_fingers_hmn_y2|crossed_fingers_hmn_y3|crossed_fingers_hmn_l1|crossed_fingers_hmn_l2|crossed_fingers_hmn_l3|crossed_fingers_hmn_g1|crossed_fingers_hmn_g2|crossed_fingers_hmn_g3|crossed_fingers_hmn_t1|crossed_fingers_hmn_t2|crossed_fingers_hmn_t3|crossed_fingers_hmn_c1|crossed_fingers_hmn_c2|crossed_fingers_hmn_c3|crossed_fingers_hmn_s1|crossed_fingers_hmn_s2|crossed_fingers_hmn_s3|crossed_fingers_hmn_b1|crossed_fingers_hmn_b2|crossed_fingers_hmn_b3|crossed_fingers_hmn_v1|crossed_fingers_hmn_v2|crossed_fingers_hmn_v3|crossed_fingers_hmn_m1|crossed_fingers_hmn_m2|crossed_fingers_hmn_m3|crossed_fingers_hmn_p1|crossed_fingers_hmn_p2|crossed_fingers_hmn_p3|crossed_fingers_hmn_e1|crossed_fingers_hmn_e2|crossed_fingers_hmn_e3|crossed_fingers_hmn_k1|crossed_fingers_hmn_k2|crossed_fingers_hmn_k3|crossed_fingers_hmn_h1|crossed_fingers_hmn_h2|crossed_fingers_hmn_h3|crossed_fingers_hmn_h4|crossed_fingers_hmn_h5|index_finger_hmn|index_finger_hmn_r1|index_finger_hmn_r2|index_finger_hmn_r3|index_finger_hmn_d1|index_finger_hmn_d2|index_finger_hmn_d3|index_finger_hmn_o1|index_finger_hmn_o2|index_finger_hmn_o3|index_finger_hmn_y1|index_finger_hmn_y2|index_finger_hmn_y3|index_finger_hmn_l1|index_finger_hmn_l2|index_finger_hmn_l3|index_finger_hmn_g1|index_finger_hmn_g2|index_finger_hmn_g3|index_finger_hmn_t1|index_finger_hmn_t2|index_finger_hmn_t3|index_finger_hmn_c1|index_finger_hmn_c2|index_finger_hmn_c3|index_finger_hmn_s1|index_finger_hmn_s2|index_finger_hmn_s3|index_finger_hmn_b1|index_finger_hmn_b2|index_finger_hmn_b3|index_finger_hmn_v1|index_finger_hmn_v2|index_finger_hmn_v3|index_finger_hmn_m1|index_finger_hmn_m2|index_finger_hmn_m3|index_finger_hmn_p1|index_finger_hmn_p2|index_finger_hmn_p3|index_finger_hmn_e1|index_finger_hmn_e2|index_finger_hmn_e3|index_finger_hmn_k1|index_finger_hmn_k2|index_finger_hmn_k3|index_finger_hmn_h1|index_finger_hmn_h2|index_finger_hmn_h3|index_finger_hmn_h4|index_finger_hmn_h5|metal_hmn|metal_hmn_r1|metal_hmn_r2|metal_hmn_r3|metal_hmn_d1|metal_hmn_d2|metal_hmn_d3|metal_hmn_o1|metal_hmn_o2|metal_hmn_o3|metal_hmn_y1|metal_hmn_y2|metal_hmn_y3|metal_hmn_l1|metal_hmn_l2|metal_hmn_l3|metal_hmn_g1|metal_hmn_g2|metal_hmn_g3|metal_hmn_t1|metal_hmn_t2|metal_hmn_t3|metal_hmn_c1|metal_hmn_c2|metal_hmn_c3|metal_hmn_s1|metal_hmn_s2|metal_hmn_s3|metal_hmn_b1|metal_hmn_b2|metal_hmn_b3|metal_hmn_v1|metal_hmn_v2|metal_hmn_v3|metal_hmn_m1|metal_hmn_m2|metal_hmn_m3|metal_hmn_p1|metal_hmn_p2|metal_hmn_p3|metal_hmn_e1|metal_hmn_e2|metal_hmn_e3|metal_hmn_k1|metal_hmn_k2|metal_hmn_k3|metal_hmn_h1|metal_hmn_h2|metal_hmn_h3|metal_hmn_h4|metal_hmn_h5|vulcan_hmn|vulcan_hmn_r1|vulcan_hmn_r2|vulcan_hmn_r3|vulcan_hmn_d1|vulcan_hmn_d2|vulcan_hmn_d3|vulcan_hmn_o1|vulcan_hmn_o2|vulcan_hmn_o3|vulcan_hmn_y1|vulcan_hmn_y2|vulcan_hmn_y3|vulcan_hmn_l1|vulcan_hmn_l2|vulcan_hmn_l3|vulcan_hmn_g1|vulcan_hmn_g2|vulcan_hmn_g3|vulcan_hmn_t1|vulcan_hmn_t2|vulcan_hmn_t3|vulcan_hmn_c1|vulcan_hmn_c2|vulcan_hmn_c3|vulcan_hmn_s1|vulcan_hmn_s2|vulcan_hmn_s3|vulcan_hmn_b1|vulcan_hmn_b2|vulcan_hmn_b3|vulcan_hmn_v1|vulcan_hmn_v2|vulcan_hmn_v3|vulcan_hmn_m1|vulcan_hmn_m2|vulcan_hmn_m3|vulcan_hmn_p1|vulcan_hmn_p2|vulcan_hmn_p3|vulcan_hmn_e1|vulcan_hmn_e2|vulcan_hmn_e3|vulcan_hmn_k1|vulcan_hmn_k2|vulcan_hmn_k3|vulcan_hmn_h1|vulcan_hmn_h2|vulcan_hmn_h3|vulcan_hmn_h4|vulcan_hmn_h5|thumbs_up_hmn|thumbs_up_hmn_r1|thumbs_up_hmn_r2|thumbs_up_hmn_r3|thumbs_up_hmn_d1|thumbs_up_hmn_d2|thumbs_up_hmn_d3|thumbs_up_hmn_o1|thumbs_up_hmn_o2|thumbs_up_hmn_o3|thumbs_up_hmn_y1|thumbs_up_hmn_y2|thumbs_up_hmn_y3|thumbs_up_hmn_l1|thumbs_up_hmn_l2|thumbs_up_hmn_l3|thumbs_up_hmn_g1|thumbs_up_hmn_g2|thumbs_up_hmn_g3|thumbs_up_hmn_t1|thumbs_up_hmn_t2|thumbs_up_hmn_t3|thumbs_up_hmn_c1|thumbs_up_hmn_c2|thumbs_up_hmn_c3|thumbs_up_hmn_s1|thumbs_up_hmn_s2|thumbs_up_hmn_s3|thumbs_up_hmn_b1|thumbs_up_hmn_b2|thumbs_up_hmn_b3|thumbs_up_hmn_v1|thumbs_up_hmn_v2|thumbs_up_hmn_v3|thumbs_up_hmn_m1|thumbs_up_hmn_m2|thumbs_up_hmn_m3|thumbs_up_hmn_p1|thumbs_up_hmn_p2|thumbs_up_hmn_p3|thumbs_up_hmn_e1|thumbs_up_hmn_e2|thumbs_up_hmn_e3|thumbs_up_hmn_k1|thumbs_up_hmn_k2|thumbs_up_hmn_k3|thumbs_up_hmn_h1|thumbs_up_hmn_h2|thumbs_up_hmn_h3|thumbs_up_hmn_h4|thumbs_up_hmn_h5|thumbs_down_hmn|thumbs_down_hmn_r1|thumbs_down_hmn_r2|thumbs_down_hmn_r3|thumbs_down_hmn_d1|thumbs_down_hmn_d2|thumbs_down_hmn_d3|thumbs_down_hmn_o1|thumbs_down_hmn_o2|thumbs_down_hmn_o3|thumbs_down_hmn_y1|thumbs_down_hmn_y2|thumbs_down_hmn_y3|thumbs_down_hmn_l1|thumbs_down_hmn_l2|thumbs_down_hmn_l3|thumbs_down_hmn_g1|thumbs_down_hmn_g2|thumbs_down_hmn_g3|thumbs_down_hmn_t1|thumbs_down_hmn_t2|thumbs_down_hmn_t3|thumbs_down_hmn_c1|thumbs_down_hmn_c2|thumbs_down_hmn_c3|thumbs_down_hmn_s1|thumbs_down_hmn_s2|thumbs_down_hmn_s3|thumbs_down_hmn_b1|thumbs_down_hmn_b2|thumbs_down_hmn_b3|thumbs_down_hmn_v1|thumbs_down_hmn_v2|thumbs_down_hmn_v3|thumbs_down_hmn_m1|thumbs_down_hmn_m2|thumbs_down_hmn_m3|thumbs_down_hmn_p1|thumbs_down_hmn_p2|thumbs_down_hmn_p3|thumbs_down_hmn_e1|thumbs_down_hmn_e2|thumbs_down_hmn_e3|thumbs_down_hmn_k1|thumbs_down_hmn_k2|thumbs_down_hmn_k3|thumbs_down_hmn_h1|thumbs_down_hmn_h2|thumbs_down_hmn_h3|thumbs_down_hmn_h4|thumbs_down_hmn_h5|call_me_hmn|call_me_hmn_r1|call_me_hmn_r2|call_me_hmn_r3|call_me_hmn_d1|call_me_hmn_d2|call_me_hmn_d3|call_me_hmn_o1|call_me_hmn_o2|call_me_hmn_o3|call_me_hmn_y1|call_me_hmn_y2|call_me_hmn_y3|call_me_hmn_l1|call_me_hmn_l2|call_me_hmn_l3|call_me_hmn_g1|call_me_hmn_g2|call_me_hmn_g3|call_me_hmn_t1|call_me_hmn_t2|call_me_hmn_t3|call_me_hmn_c1|call_me_hmn_c2|call_me_hmn_c3|call_me_hmn_s1|call_me_hmn_s2|call_me_hmn_s3|call_me_hmn_b1|call_me_hmn_b2|call_me_hmn_b3|call_me_hmn_v1|call_me_hmn_v2|call_me_hmn_v3|call_me_hmn_m1|call_me_hmn_m2|call_me_hmn_m3|call_me_hmn_p1|call_me_hmn_p2|call_me_hmn_p3|call_me_hmn_e1|call_me_hmn_e2|call_me_hmn_e3|call_me_hmn_k1|call_me_hmn_k2|call_me_hmn_k3|call_me_hmn_h1|call_me_hmn_h2|call_me_hmn_h3|call_me_hmn_h4|call_me_hmn_h5|middle_finger_hmn|middle_finger_hmn_r1|middle_finger_hmn_r2|middle_finger_hmn_r3|middle_finger_hmn_d1|middle_finger_hmn_d2|middle_finger_hmn_d3|middle_finger_hmn_o1|middle_finger_hmn_o2|middle_finger_hmn_o3|middle_finger_hmn_y1|middle_finger_hmn_y2|middle_finger_hmn_y3|middle_finger_hmn_l1|middle_finger_hmn_l2|middle_finger_hmn_l3|middle_finger_hmn_g1|middle_finger_hmn_g2|middle_finger_hmn_g3|middle_finger_hmn_t1|middle_finger_hmn_t2|middle_finger_hmn_t3|middle_finger_hmn_c1|middle_finger_hmn_c2|middle_finger_hmn_c3|middle_finger_hmn_s1|middle_finger_hmn_s2|middle_finger_hmn_s3|middle_finger_hmn_b1|middle_finger_hmn_b2|middle_finger_hmn_b3|middle_finger_hmn_v1|middle_finger_hmn_v2|middle_finger_hmn_v3|middle_finger_hmn_m1|middle_finger_hmn_m2|middle_finger_hmn_m3|middle_finger_hmn_p1|middle_finger_hmn_p2|middle_finger_hmn_p3|middle_finger_hmn_e1|middle_finger_hmn_e2|middle_finger_hmn_e3|middle_finger_hmn_k1|middle_finger_hmn_k2|middle_finger_hmn_k3|middle_finger_hmn_h1|middle_finger_hmn_h2|middle_finger_hmn_h3|middle_finger_hmn_h4|middle_finger_hmn_h5|point_up_hmn|point_up_hmn_r1|point_up_hmn_r2|point_up_hmn_r3|point_up_hmn_d1|point_up_hmn_d2|point_up_hmn_d3|point_up_hmn_o1|point_up_hmn_o2|point_up_hmn_o3|point_up_hmn_y1|point_up_hmn_y2|point_up_hmn_y3|point_up_hmn_l1|point_up_hmn_l2|point_up_hmn_l3|point_up_hmn_g1|point_up_hmn_g2|point_up_hmn_g3|point_up_hmn_t1|point_up_hmn_t2|point_up_hmn_t3|point_up_hmn_c1|point_up_hmn_c2|point_up_hmn_c3|point_up_hmn_s1|point_up_hmn_s2|point_up_hmn_s3|point_up_hmn_b1|point_up_hmn_b2|point_up_hmn_b3|point_up_hmn_v1|point_up_hmn_v2|point_up_hmn_v3|point_up_hmn_m1|point_up_hmn_m2|point_up_hmn_m3|point_up_hmn_p1|point_up_hmn_p2|point_up_hmn_p3|point_up_hmn_e1|point_up_hmn_e2|point_up_hmn_e3|point_up_hmn_k1|point_up_hmn_k2|point_up_hmn_k3|point_up_hmn_h1|point_up_hmn_h2|point_up_hmn_h3|point_up_hmn_h4|point_up_hmn_h5|point_down_hmn|point_down_hmn_r1|point_down_hmn_r2|point_down_hmn_r3|point_down_hmn_d1|point_down_hmn_d2|point_down_hmn_d3|point_down_hmn_o1|point_down_hmn_o2|point_down_hmn_o3|point_down_hmn_y1|point_down_hmn_y2|point_down_hmn_y3|point_down_hmn_l1|point_down_hmn_l2|point_down_hmn_l3|point_down_hmn_g1|point_down_hmn_g2|point_down_hmn_g3|point_down_hmn_t1|point_down_hmn_t2|point_down_hmn_t3|point_down_hmn_c1|point_down_hmn_c2|point_down_hmn_c3|point_down_hmn_s1|point_down_hmn_s2|point_down_hmn_s3|point_down_hmn_b1|point_down_hmn_b2|point_down_hmn_b3|point_down_hmn_v1|point_down_hmn_v2|point_down_hmn_v3|point_down_hmn_m1|point_down_hmn_m2|point_down_hmn_m3|point_down_hmn_p1|point_down_hmn_p2|point_down_hmn_p3|point_down_hmn_e1|point_down_hmn_e2|point_down_hmn_e3|point_down_hmn_k1|point_down_hmn_k2|point_down_hmn_k3|point_down_hmn_h1|point_down_hmn_h2|point_down_hmn_h3|point_down_hmn_h4|point_down_hmn_h5|point_left_hmn|point_left_hmn_r1|point_left_hmn_r2|point_left_hmn_r3|point_left_hmn_d1|point_left_hmn_d2|point_left_hmn_d3|point_left_hmn_o1|point_left_hmn_o2|point_left_hmn_o3|point_left_hmn_y1|point_left_hmn_y2|point_left_hmn_y3|point_left_hmn_l1|point_left_hmn_l2|point_left_hmn_l3|point_left_hmn_g1|point_left_hmn_g2|point_left_hmn_g3|point_left_hmn_t1|point_left_hmn_t2|point_left_hmn_t3|point_left_hmn_c1|point_left_hmn_c2|point_left_hmn_c3|point_left_hmn_s1|point_left_hmn_s2|point_left_hmn_s3|point_left_hmn_b1|point_left_hmn_b2|point_left_hmn_b3|point_left_hmn_v1|point_left_hmn_v2|point_left_hmn_v3|point_left_hmn_m1|point_left_hmn_m2|point_left_hmn_m3|point_left_hmn_p1|point_left_hmn_p2|point_left_hmn_p3|point_left_hmn_e1|point_left_hmn_e2|point_left_hmn_e3|point_left_hmn_k1|point_left_hmn_k2|point_left_hmn_k3|point_left_hmn_h1|point_left_hmn_h2|point_left_hmn_h3|point_left_hmn_h4|point_left_hmn_h5|point_right_hmn|point_right_hmn_r1|point_right_hmn_r2|point_right_hmn_r3|point_right_hmn_d1|point_right_hmn_d2|point_right_hmn_d3|point_right_hmn_o1|point_right_hmn_o2|point_right_hmn_o3|point_right_hmn_y1|point_right_hmn_y2|point_right_hmn_y3|point_right_hmn_l1|point_right_hmn_l2|point_right_hmn_l3|point_right_hmn_g1|point_right_hmn_g2|point_right_hmn_g3|point_right_hmn_t1|point_right_hmn_t2|point_right_hmn_t3|point_right_hmn_c1|point_right_hmn_c2|point_right_hmn_c3|point_right_hmn_s1|point_right_hmn_s2|point_right_hmn_s3|point_right_hmn_b1|point_right_hmn_b2|point_right_hmn_b3|point_right_hmn_v1|point_right_hmn_v2|point_right_hmn_v3|point_right_hmn_m1|point_right_hmn_m2|point_right_hmn_m3|point_right_hmn_p1|point_right_hmn_p2|point_right_hmn_p3|point_right_hmn_e1|point_right_hmn_e2|point_right_hmn_e3|point_right_hmn_k1|point_right_hmn_k2|point_right_hmn_k3|point_right_hmn_h1|point_right_hmn_h2|point_right_hmn_h3|point_right_hmn_h4|point_right_hmn_h5|fist_hmn|fist_hmn_r1|fist_hmn_r2|fist_hmn_r3|fist_hmn_d1|fist_hmn_d2|fist_hmn_d3|fist_hmn_o1|fist_hmn_o2|fist_hmn_o3|fist_hmn_y1|fist_hmn_y2|fist_hmn_y3|fist_hmn_l1|fist_hmn_l2|fist_hmn_l3|fist_hmn_g1|fist_hmn_g2|fist_hmn_g3|fist_hmn_t1|fist_hmn_t2|fist_hmn_t3|fist_hmn_c1|fist_hmn_c2|fist_hmn_c3|fist_hmn_s1|fist_hmn_s2|fist_hmn_s3|fist_hmn_b1|fist_hmn_b2|fist_hmn_b3|fist_hmn_v1|fist_hmn_v2|fist_hmn_v3|fist_hmn_m1|fist_hmn_m2|fist_hmn_m3|fist_hmn_p1|fist_hmn_p2|fist_hmn_p3|fist_hmn_e1|fist_hmn_e2|fist_hmn_e3|fist_hmn_k1|fist_hmn_k2|fist_hmn_k3|fist_hmn_h1|fist_hmn_h2|fist_hmn_h3|fist_hmn_h4|fist_hmn_h5|fist_facing_left_hmn|fist_facing_left_hmn_r1|fist_facing_left_hmn_r2|fist_facing_left_hmn_r3|fist_facing_left_hmn_d1|fist_facing_left_hmn_d2|fist_facing_left_hmn_d3|fist_facing_left_hmn_o1|fist_facing_left_hmn_o2|fist_facing_left_hmn_o3|fist_facing_left_hmn_y1|fist_facing_left_hmn_y2|fist_facing_left_hmn_y3|fist_facing_left_hmn_l1|fist_facing_left_hmn_l2|fist_facing_left_hmn_l3|fist_facing_left_hmn_g1|fist_facing_left_hmn_g2|fist_facing_left_hmn_g3|fist_facing_left_hmn_t1|fist_facing_left_hmn_t2|fist_facing_left_hmn_t3|fist_facing_left_hmn_c1|fist_facing_left_hmn_c2|fist_facing_left_hmn_c3|fist_facing_left_hmn_s1|fist_facing_left_hmn_s2|fist_facing_left_hmn_s3|fist_facing_left_hmn_b1|fist_facing_left_hmn_b2|fist_facing_left_hmn_b3|fist_facing_left_hmn_v1|fist_facing_left_hmn_v2|fist_facing_left_hmn_v3|fist_facing_left_hmn_m1|fist_facing_left_hmn_m2|fist_facing_left_hmn_m3|fist_facing_left_hmn_p1|fist_facing_left_hmn_p2|fist_facing_left_hmn_p3|fist_facing_left_hmn_e1|fist_facing_left_hmn_e2|fist_facing_left_hmn_e3|fist_facing_left_hmn_k1|fist_facing_left_hmn_k2|fist_facing_left_hmn_k3|fist_facing_left_hmn_h1|fist_facing_left_hmn_h2|fist_facing_left_hmn_h3|fist_facing_left_hmn_h4|fist_facing_left_hmn_h5|fist_facing_right_hmn|fist_facing_right_hmn_r1|fist_facing_right_hmn_r2|fist_facing_right_hmn_r3|fist_facing_right_hmn_d1|fist_facing_right_hmn_d2|fist_facing_right_hmn_d3|fist_facing_right_hmn_o1|fist_facing_right_hmn_o2|fist_facing_right_hmn_o3|fist_facing_right_hmn_y1|fist_facing_right_hmn_y2|fist_facing_right_hmn_y3|fist_facing_right_hmn_l1|fist_facing_right_hmn_l2|fist_facing_right_hmn_l3|fist_facing_right_hmn_g1|fist_facing_right_hmn_g2|fist_facing_right_hmn_g3|fist_facing_right_hmn_t1|fist_facing_right_hmn_t2|fist_facing_right_hmn_t3|fist_facing_right_hmn_c1|fist_facing_right_hmn_c2|fist_facing_right_hmn_c3|fist_facing_right_hmn_s1|fist_facing_right_hmn_s2|fist_facing_right_hmn_s3|fist_facing_right_hmn_b1|fist_facing_right_hmn_b2|fist_facing_right_hmn_b3|fist_facing_right_hmn_v1|fist_facing_right_hmn_v2|fist_facing_right_hmn_v3|fist_facing_right_hmn_m1|fist_facing_right_hmn_m2|fist_facing_right_hmn_m3|fist_facing_right_hmn_p1|fist_facing_right_hmn_p2|fist_facing_right_hmn_p3|fist_facing_right_hmn_e1|fist_facing_right_hmn_e2|fist_facing_right_hmn_e3|fist_facing_right_hmn_k1|fist_facing_right_hmn_k2|fist_facing_right_hmn_k3|fist_facing_right_hmn_h1|fist_facing_right_hmn_h2|fist_facing_right_hmn_h3|fist_facing_right_hmn_h4|fist_facing_right_hmn_h5|punch_hmn|punch_hmn_r1|punch_hmn_r2|punch_hmn_r3|punch_hmn_d1|punch_hmn_d2|punch_hmn_d3|punch_hmn_o1|punch_hmn_o2|punch_hmn_o3|punch_hmn_y1|punch_hmn_y2|punch_hmn_y3|punch_hmn_l1|punch_hmn_l2|punch_hmn_l3|punch_hmn_g1|punch_hmn_g2|punch_hmn_g3|punch_hmn_t1|punch_hmn_t2|punch_hmn_t3|punch_hmn_c1|punch_hmn_c2|punch_hmn_c3|punch_hmn_s1|punch_hmn_s2|punch_hmn_s3|punch_hmn_b1|punch_hmn_b2|punch_hmn_b3|punch_hmn_v1|punch_hmn_v2|punch_hmn_v3|punch_hmn_m1|punch_hmn_m2|punch_hmn_m3|punch_hmn_p1|punch_hmn_p2|punch_hmn_p3|punch_hmn_e1|punch_hmn_e2|punch_hmn_e3|punch_hmn_k1|punch_hmn_k2|punch_hmn_k3|punch_hmn_h1|punch_hmn_h2|punch_hmn_h3|punch_hmn_h4|punch_hmn_h5|ok_hand_hmn|ok_hand_hmn_r1|ok_hand_hmn_r2|ok_hand_hmn_r3|ok_hand_hmn_d1|ok_hand_hmn_d2|ok_hand_hmn_d3|ok_hand_hmn_o1|ok_hand_hmn_o2|ok_hand_hmn_o3|ok_hand_hmn_y1|ok_hand_hmn_y2|ok_hand_hmn_y3|ok_hand_hmn_l1|ok_hand_hmn_l2|ok_hand_hmn_l3|ok_hand_hmn_g1|ok_hand_hmn_g2|ok_hand_hmn_g3|ok_hand_hmn_t1|ok_hand_hmn_t2|ok_hand_hmn_t3|ok_hand_hmn_c1|ok_hand_hmn_c2|ok_hand_hmn_c3|ok_hand_hmn_s1|ok_hand_hmn_s2|ok_hand_hmn_s3|ok_hand_hmn_b1|ok_hand_hmn_b2|ok_hand_hmn_b3|ok_hand_hmn_v1|ok_hand_hmn_v2|ok_hand_hmn_v3|ok_hand_hmn_m1|ok_hand_hmn_m2|ok_hand_hmn_m3|ok_hand_hmn_p1|ok_hand_hmn_p2|ok_hand_hmn_p3|ok_hand_hmn_e1|ok_hand_hmn_e2|ok_hand_hmn_e3|ok_hand_hmn_k1|ok_hand_hmn_k2|ok_hand_hmn_k3|ok_hand_hmn_h1|ok_hand_hmn_h2|ok_hand_hmn_h3|ok_hand_hmn_h4|ok_hand_hmn_h5|wave_hmn|wave_hmn_r1|wave_hmn_r2|wave_hmn_r3|wave_hmn_d1|wave_hmn_d2|wave_hmn_d3|wave_hmn_o1|wave_hmn_o2|wave_hmn_o3|wave_hmn_y1|wave_hmn_y2|wave_hmn_y3|wave_hmn_l1|wave_hmn_l2|wave_hmn_l3|wave_hmn_g1|wave_hmn_g2|wave_hmn_g3|wave_hmn_t1|wave_hmn_t2|wave_hmn_t3|wave_hmn_c1|wave_hmn_c2|wave_hmn_c3|wave_hmn_s1|wave_hmn_s2|wave_hmn_s3|wave_hmn_b1|wave_hmn_b2|wave_hmn_b3|wave_hmn_v1|wave_hmn_v2|wave_hmn_v3|wave_hmn_m1|wave_hmn_m2|wave_hmn_m3|wave_hmn_p1|wave_hmn_p2|wave_hmn_p3|wave_hmn_e1|wave_hmn_e2|wave_hmn_e3|wave_hmn_k1|wave_hmn_k2|wave_hmn_k3|wave_hmn_h1|wave_hmn_h2|wave_hmn_h3|wave_hmn_h4|wave_hmn_h5|clap_hmn|clap_hmn_r1|clap_hmn_r2|clap_hmn_r3|clap_hmn_d1|clap_hmn_d2|clap_hmn_d3|clap_hmn_o1|clap_hmn_o2|clap_hmn_o3|clap_hmn_y1|clap_hmn_y2|clap_hmn_y3|clap_hmn_l1|clap_hmn_l2|clap_hmn_l3|clap_hmn_g1|clap_hmn_g2|clap_hmn_g3|clap_hmn_t1|clap_hmn_t2|clap_hmn_t3|clap_hmn_c1|clap_hmn_c2|clap_hmn_c3|clap_hmn_s1|clap_hmn_s2|clap_hmn_s3|clap_hmn_b1|clap_hmn_b2|clap_hmn_b3|clap_hmn_v1|clap_hmn_v2|clap_hmn_v3|clap_hmn_m1|clap_hmn_m2|clap_hmn_m3|clap_hmn_p1|clap_hmn_p2|clap_hmn_p3|clap_hmn_e1|clap_hmn_e2|clap_hmn_e3|clap_hmn_k1|clap_hmn_k2|clap_hmn_k3|clap_hmn_h1|clap_hmn_h2|clap_hmn_h3|clap_hmn_h4|clap_hmn_h5|raised_hands_hmn|raised_hands_hmn_r1|raised_hands_hmn_r2|raised_hands_hmn_r3|raised_hands_hmn_d1|raised_hands_hmn_d2|raised_hands_hmn_d3|raised_hands_hmn_o1|raised_hands_hmn_o2|raised_hands_hmn_o3|raised_hands_hmn_y1|raised_hands_hmn_y2|raised_hands_hmn_y3|raised_hands_hmn_l1|raised_hands_hmn_l2|raised_hands_hmn_l3|raised_hands_hmn_g1|raised_hands_hmn_g2|raised_hands_hmn_g3|raised_hands_hmn_t1|raised_hands_hmn_t2|raised_hands_hmn_t3|raised_hands_hmn_c1|raised_hands_hmn_c2|raised_hands_hmn_c3|raised_hands_hmn_s1|raised_hands_hmn_s2|raised_hands_hmn_s3|raised_hands_hmn_b1|raised_hands_hmn_b2|raised_hands_hmn_b3|raised_hands_hmn_v1|raised_hands_hmn_v2|raised_hands_hmn_v3|raised_hands_hmn_m1|raised_hands_hmn_m2|raised_hands_hmn_m3|raised_hands_hmn_p1|raised_hands_hmn_p2|raised_hands_hmn_p3|raised_hands_hmn_e1|raised_hands_hmn_e2|raised_hands_hmn_e3|raised_hands_hmn_k1|raised_hands_hmn_k2|raised_hands_hmn_k3|raised_hands_hmn_h1|raised_hands_hmn_h2|raised_hands_hmn_h3|raised_hands_hmn_h4|raised_hands_hmn_h5|open_hands_hmn|open_hands_hmn_r1|open_hands_hmn_r2|open_hands_hmn_r3|open_hands_hmn_d1|open_hands_hmn_d2|open_hands_hmn_d3|open_hands_hmn_o1|open_hands_hmn_o2|open_hands_hmn_o3|open_hands_hmn_y1|open_hands_hmn_y2|open_hands_hmn_y3|open_hands_hmn_l1|open_hands_hmn_l2|open_hands_hmn_l3|open_hands_hmn_g1|open_hands_hmn_g2|open_hands_hmn_g3|open_hands_hmn_t1|open_hands_hmn_t2|open_hands_hmn_t3|open_hands_hmn_c1|open_hands_hmn_c2|open_hands_hmn_c3|open_hands_hmn_s1|open_hands_hmn_s2|open_hands_hmn_s3|open_hands_hmn_b1|open_hands_hmn_b2|open_hands_hmn_b3|open_hands_hmn_v1|open_hands_hmn_v2|open_hands_hmn_v3|open_hands_hmn_m1|open_hands_hmn_m2|open_hands_hmn_m3|open_hands_hmn_p1|open_hands_hmn_p2|open_hands_hmn_p3|open_hands_hmn_e1|open_hands_hmn_e2|open_hands_hmn_e3|open_hands_hmn_k1|open_hands_hmn_k2|open_hands_hmn_k3|open_hands_hmn_h1|open_hands_hmn_h2|open_hands_hmn_h3|open_hands_hmn_h4|open_hands_hmn_h5|pray_hmn|pray_hmn_r1|pray_hmn_r2|pray_hmn_r3|pray_hmn_d1|pray_hmn_d2|pray_hmn_d3|pray_hmn_o1|pray_hmn_o2|pray_hmn_o3|pray_hmn_y1|pray_hmn_y2|pray_hmn_y3|pray_hmn_l1|pray_hmn_l2|pray_hmn_l3|pray_hmn_g1|pray_hmn_g2|pray_hmn_g3|pray_hmn_t1|pray_hmn_t2|pray_hmn_t3|pray_hmn_c1|pray_hmn_c2|pray_hmn_c3|pray_hmn_s1|pray_hmn_s2|pray_hmn_s3|pray_hmn_b1|pray_hmn_b2|pray_hmn_b3|pray_hmn_v1|pray_hmn_v2|pray_hmn_v3|pray_hmn_m1|pray_hmn_m2|pray_hmn_m3|pray_hmn_p1|pray_hmn_p2|pray_hmn_p3|pray_hmn_e1|pray_hmn_e2|pray_hmn_e3|pray_hmn_k1|pray_hmn_k2|pray_hmn_k3|pray_hmn_h1|pray_hmn_h2|pray_hmn_h3|pray_hmn_h4|pray_hmn_h5|writing_hand_hmn|writing_hand_hmn_r1|writing_hand_hmn_r2|writing_hand_hmn_r3|writing_hand_hmn_d1|writing_hand_hmn_d2|writing_hand_hmn_d3|writing_hand_hmn_o1|writing_hand_hmn_o2|writing_hand_hmn_o3|writing_hand_hmn_y1|writing_hand_hmn_y2|writing_hand_hmn_y3|writing_hand_hmn_l1|writing_hand_hmn_l2|writing_hand_hmn_l3|writing_hand_hmn_g1|writing_hand_hmn_g2|writing_hand_hmn_g3|writing_hand_hmn_t1|writing_hand_hmn_t2|writing_hand_hmn_t3|writing_hand_hmn_c1|writing_hand_hmn_c2|writing_hand_hmn_c3|writing_hand_hmn_s1|writing_hand_hmn_s2|writing_hand_hmn_s3|writing_hand_hmn_b1|writing_hand_hmn_b2|writing_hand_hmn_b3|writing_hand_hmn_v1|writing_hand_hmn_v2|writing_hand_hmn_v3|writing_hand_hmn_m1|writing_hand_hmn_m2|writing_hand_hmn_m3|writing_hand_hmn_p1|writing_hand_hmn_p2|writing_hand_hmn_p3|writing_hand_hmn_e1|writing_hand_hmn_e2|writing_hand_hmn_e3|writing_hand_hmn_k1|writing_hand_hmn_k2|writing_hand_hmn_k3|writing_hand_hmn_h1|writing_hand_hmn_h2|writing_hand_hmn_h3|writing_hand_hmn_h4|writing_hand_hmn_h5|muscle_hmn|muscle_hmn_r1|muscle_hmn_r2|muscle_hmn_r3|muscle_hmn_d1|muscle_hmn_d2|muscle_hmn_d3|muscle_hmn_o1|muscle_hmn_o2|muscle_hmn_o3|muscle_hmn_y1|muscle_hmn_y2|muscle_hmn_y3|muscle_hmn_l1|muscle_hmn_l2|muscle_hmn_l3|muscle_hmn_g1|muscle_hmn_g2|muscle_hmn_g3|muscle_hmn_t1|muscle_hmn_t2|muscle_hmn_t3|muscle_hmn_c1|muscle_hmn_c2|muscle_hmn_c3|muscle_hmn_s1|muscle_hmn_s2|muscle_hmn_s3|muscle_hmn_b1|muscle_hmn_b2|muscle_hmn_b3|muscle_hmn_v1|muscle_hmn_v2|muscle_hmn_v3|muscle_hmn_m1|muscle_hmn_m2|muscle_hmn_m3|muscle_hmn_p1|muscle_hmn_p2|muscle_hmn_p3|muscle_hmn_e1|muscle_hmn_e2|muscle_hmn_e3|muscle_hmn_k1|muscle_hmn_k2|muscle_hmn_k3|muscle_hmn_h1|muscle_hmn_h2|muscle_hmn_h3|muscle_hmn_h4|muscle_hmn_h5|handshake_hmn|handshake_hmn_r1|handshake_hmn_r2|handshake_hmn_r3|handshake_hmn_d1|handshake_hmn_d2|handshake_hmn_d3|handshake_hmn_o1|handshake_hmn_o2|handshake_hmn_o3|handshake_hmn_y1|handshake_hmn_y2|handshake_hmn_y3|handshake_hmn_l1|handshake_hmn_l2|handshake_hmn_l3|handshake_hmn_g1|handshake_hmn_g2|handshake_hmn_g3|handshake_hmn_t1|handshake_hmn_t2|handshake_hmn_t3|handshake_hmn_c1|handshake_hmn_c2|handshake_hmn_c3|handshake_hmn_s1|handshake_hmn_s2|handshake_hmn_s3|handshake_hmn_b1|handshake_hmn_b2|handshake_hmn_b3|handshake_hmn_v1|handshake_hmn_v2|handshake_hmn_v3|handshake_hmn_m1|handshake_hmn_m2|handshake_hmn_m3|handshake_hmn_p1|handshake_hmn_p2|handshake_hmn_p3|handshake_hmn_e1|handshake_hmn_e2|handshake_hmn_e3|handshake_hmn_k1|handshake_hmn_k2|handshake_hmn_k3|handshake_hmn_h1|handshake_hmn_h2|handshake_hmn_h3|handshake_hmn_h4|handshake_hmn_h5|selfie_hmn|selfie_hmn_r1|selfie_hmn_r2|selfie_hmn_r3|selfie_hmn_d1|selfie_hmn_d2|selfie_hmn_d3|selfie_hmn_o1|selfie_hmn_o2|selfie_hmn_o3|selfie_hmn_y1|selfie_hmn_y2|selfie_hmn_y3|selfie_hmn_l1|selfie_hmn_l2|selfie_hmn_l3|selfie_hmn_g1|selfie_hmn_g2|selfie_hmn_g3|selfie_hmn_t1|selfie_hmn_t2|selfie_hmn_t3|selfie_hmn_c1|selfie_hmn_c2|selfie_hmn_c3|selfie_hmn_s1|selfie_hmn_s2|selfie_hmn_s3|selfie_hmn_b1|selfie_hmn_b2|selfie_hmn_b3|selfie_hmn_v1|selfie_hmn_v2|selfie_hmn_v3|selfie_hmn_m1|selfie_hmn_m2|selfie_hmn_m3|selfie_hmn_p1|selfie_hmn_p2|selfie_hmn_p3|selfie_hmn_e1|selfie_hmn_e2|selfie_hmn_e3|selfie_hmn_k1|selfie_hmn_k2|selfie_hmn_k3|selfie_hmn_h1|selfie_hmn_h2|selfie_hmn_h3|selfie_hmn_h4|selfie_hmn_h5|nail_varnish_hmn|nail_varnish_hmn_r1|nail_varnish_hmn_r2|nail_varnish_hmn_r3|nail_varnish_hmn_d1|nail_varnish_hmn_d2|nail_varnish_hmn_d3|nail_varnish_hmn_o1|nail_varnish_hmn_o2|nail_varnish_hmn_o3|nail_varnish_hmn_y1|nail_varnish_hmn_y2|nail_varnish_hmn_y3|nail_varnish_hmn_l1|nail_varnish_hmn_l2|nail_varnish_hmn_l3|nail_varnish_hmn_g1|nail_varnish_hmn_g2|nail_varnish_hmn_g3|nail_varnish_hmn_t1|nail_varnish_hmn_t2|nail_varnish_hmn_t3|nail_varnish_hmn_c1|nail_varnish_hmn_c2|nail_varnish_hmn_c3|nail_varnish_hmn_s1|nail_varnish_hmn_s2|nail_varnish_hmn_s3|nail_varnish_hmn_b1|nail_varnish_hmn_b2|nail_varnish_hmn_b3|nail_varnish_hmn_v1|nail_varnish_hmn_v2|nail_varnish_hmn_v3|nail_varnish_hmn_m1|nail_varnish_hmn_m2|nail_varnish_hmn_m3|nail_varnish_hmn_p1|nail_varnish_hmn_p2|nail_varnish_hmn_p3|nail_varnish_hmn_e1|nail_varnish_hmn_e2|nail_varnish_hmn_e3|nail_varnish_hmn_k1|nail_varnish_hmn_k2|nail_varnish_hmn_k3|nail_varnish_hmn_h1|nail_varnish_hmn_h2|nail_varnish_hmn_h3|nail_varnish_hmn_h4|nail_varnish_hmn_h5|hand_paw|hand_paw_r1|hand_paw_r2|hand_paw_r3|hand_paw_d1|hand_paw_d2|hand_paw_d3|hand_paw_o1|hand_paw_o2|hand_paw_o3|hand_paw_y1|hand_paw_y2|hand_paw_y3|hand_paw_l1|hand_paw_l2|hand_paw_l3|hand_paw_g1|hand_paw_g2|hand_paw_g3|hand_paw_t1|hand_paw_t2|hand_paw_t3|hand_paw_c1|hand_paw_c2|hand_paw_c3|hand_paw_s1|hand_paw_s2|hand_paw_s3|hand_paw_b1|hand_paw_b2|hand_paw_b3|hand_paw_v1|hand_paw_v2|hand_paw_v3|hand_paw_m1|hand_paw_m2|hand_paw_m3|hand_paw_p1|hand_paw_p2|hand_paw_p3|hand_paw_e1|hand_paw_e2|hand_paw_e3|hand_paw_k1|hand_paw_k2|hand_paw_k3|hand_paw_fe1|hand_paw_ft1|hand_paw_fk1|back_of_hand_paw|back_of_hand_paw_r1|back_of_hand_paw_r2|back_of_hand_paw_r3|back_of_hand_paw_d1|back_of_hand_paw_d2|back_of_hand_paw_d3|back_of_hand_paw_o1|back_of_hand_paw_o2|back_of_hand_paw_o3|back_of_hand_paw_y1|back_of_hand_paw_y2|back_of_hand_paw_y3|back_of_hand_paw_l1|back_of_hand_paw_l2|back_of_hand_paw_l3|back_of_hand_paw_g1|back_of_hand_paw_g2|back_of_hand_paw_g3|back_of_hand_paw_t1|back_of_hand_paw_t2|back_of_hand_paw_t3|back_of_hand_paw_c1|back_of_hand_paw_c2|back_of_hand_paw_c3|back_of_hand_paw_s1|back_of_hand_paw_s2|back_of_hand_paw_s3|back_of_hand_paw_b1|back_of_hand_paw_b2|back_of_hand_paw_b3|back_of_hand_paw_v1|back_of_hand_paw_v2|back_of_hand_paw_v3|back_of_hand_paw_m1|back_of_hand_paw_m2|back_of_hand_paw_m3|back_of_hand_paw_p1|back_of_hand_paw_p2|back_of_hand_paw_p3|back_of_hand_paw_e1|back_of_hand_paw_e2|back_of_hand_paw_e3|back_of_hand_paw_k1|back_of_hand_paw_k2|back_of_hand_paw_k3|back_of_hand_paw_fe1|back_of_hand_paw_ft1|back_of_hand_paw_fk1|v_paw|v_paw_r1|v_paw_r2|v_paw_r3|v_paw_d1|v_paw_d2|v_paw_d3|v_paw_o1|v_paw_o2|v_paw_o3|v_paw_y1|v_paw_y2|v_paw_y3|v_paw_l1|v_paw_l2|v_paw_l3|v_paw_g1|v_paw_g2|v_paw_g3|v_paw_t1|v_paw_t2|v_paw_t3|v_paw_c1|v_paw_c2|v_paw_c3|v_paw_s1|v_paw_s2|v_paw_s3|v_paw_b1|v_paw_b2|v_paw_b3|v_paw_v1|v_paw_v2|v_paw_v3|v_paw_m1|v_paw_m2|v_paw_m3|v_paw_p1|v_paw_p2|v_paw_p3|v_paw_e1|v_paw_e2|v_paw_e3|v_paw_k1|v_paw_k2|v_paw_k3|v_paw_fe1|v_paw_ft1|v_paw_fk1|crossed_fingers_paw|crossed_fingers_paw_r1|crossed_fingers_paw_r2|crossed_fingers_paw_r3|crossed_fingers_paw_d1|crossed_fingers_paw_d2|crossed_fingers_paw_d3|crossed_fingers_paw_o1|crossed_fingers_paw_o2|crossed_fingers_paw_o3|crossed_fingers_paw_y1|crossed_fingers_paw_y2|crossed_fingers_paw_y3|crossed_fingers_paw_l1|crossed_fingers_paw_l2|crossed_fingers_paw_l3|crossed_fingers_paw_g1|crossed_fingers_paw_g2|crossed_fingers_paw_g3|crossed_fingers_paw_t1|crossed_fingers_paw_t2|crossed_fingers_paw_t3|crossed_fingers_paw_c1|crossed_fingers_paw_c2|crossed_fingers_paw_c3|crossed_fingers_paw_s1|crossed_fingers_paw_s2|crossed_fingers_paw_s3|crossed_fingers_paw_b1|crossed_fingers_paw_b2|crossed_fingers_paw_b3|crossed_fingers_paw_v1|crossed_fingers_paw_v2|crossed_fingers_paw_v3|crossed_fingers_paw_m1|crossed_fingers_paw_m2|crossed_fingers_paw_m3|crossed_fingers_paw_p1|crossed_fingers_paw_p2|crossed_fingers_paw_p3|crossed_fingers_paw_e1|crossed_fingers_paw_e2|crossed_fingers_paw_e3|crossed_fingers_paw_k1|crossed_fingers_paw_k2|crossed_fingers_paw_k3|crossed_fingers_paw_fe1|crossed_fingers_paw_ft1|crossed_fingers_paw_fk1|index_finger_paw|index_finger_paw_r1|index_finger_paw_r2|index_finger_paw_r3|index_finger_paw_d1|index_finger_paw_d2|index_finger_paw_d3|index_finger_paw_o1|index_finger_paw_o2|index_finger_paw_o3|index_finger_paw_y1|index_finger_paw_y2|index_finger_paw_y3|index_finger_paw_l1|index_finger_paw_l2|index_finger_paw_l3|index_finger_paw_g1|index_finger_paw_g2|index_finger_paw_g3|index_finger_paw_t1|index_finger_paw_t2|index_finger_paw_t3|index_finger_paw_c1|index_finger_paw_c2|index_finger_paw_c3|index_finger_paw_s1|index_finger_paw_s2|index_finger_paw_s3|index_finger_paw_b1|index_finger_paw_b2|index_finger_paw_b3|index_finger_paw_v1|index_finger_paw_v2|index_finger_paw_v3|index_finger_paw_m1|index_finger_paw_m2|index_finger_paw_m3|index_finger_paw_p1|index_finger_paw_p2|index_finger_paw_p3|index_finger_paw_e1|index_finger_paw_e2|index_finger_paw_e3|index_finger_paw_k1|index_finger_paw_k2|index_finger_paw_k3|index_finger_paw_fe1|index_finger_paw_ft1|index_finger_paw_fk1|metal_paw|metal_paw_r1|metal_paw_r2|metal_paw_r3|metal_paw_d1|metal_paw_d2|metal_paw_d3|metal_paw_o1|metal_paw_o2|metal_paw_o3|metal_paw_y1|metal_paw_y2|metal_paw_y3|metal_paw_l1|metal_paw_l2|metal_paw_l3|metal_paw_g1|metal_paw_g2|metal_paw_g3|metal_paw_t1|metal_paw_t2|metal_paw_t3|metal_paw_c1|metal_paw_c2|metal_paw_c3|metal_paw_s1|metal_paw_s2|metal_paw_s3|metal_paw_b1|metal_paw_b2|metal_paw_b3|metal_paw_v1|metal_paw_v2|metal_paw_v3|metal_paw_m1|metal_paw_m2|metal_paw_m3|metal_paw_p1|metal_paw_p2|metal_paw_p3|metal_paw_e1|metal_paw_e2|metal_paw_e3|metal_paw_k1|metal_paw_k2|metal_paw_k3|metal_paw_fe1|metal_paw_ft1|metal_paw_fk1|vulcan_paw|vulcan_paw_r1|vulcan_paw_r2|vulcan_paw_r3|vulcan_paw_d1|vulcan_paw_d2|vulcan_paw_d3|vulcan_paw_o1|vulcan_paw_o2|vulcan_paw_o3|vulcan_paw_y1|vulcan_paw_y2|vulcan_paw_y3|vulcan_paw_l1|vulcan_paw_l2|vulcan_paw_l3|vulcan_paw_g1|vulcan_paw_g2|vulcan_paw_g3|vulcan_paw_t1|vulcan_paw_t2|vulcan_paw_t3|vulcan_paw_c1|vulcan_paw_c2|vulcan_paw_c3|vulcan_paw_s1|vulcan_paw_s2|vulcan_paw_s3|vulcan_paw_b1|vulcan_paw_b2|vulcan_paw_b3|vulcan_paw_v1|vulcan_paw_v2|vulcan_paw_v3|vulcan_paw_m1|vulcan_paw_m2|vulcan_paw_m3|vulcan_paw_p1|vulcan_paw_p2|vulcan_paw_p3|vulcan_paw_e1|vulcan_paw_e2|vulcan_paw_e3|vulcan_paw_k1|vulcan_paw_k2|vulcan_paw_k3|vulcan_paw_fe1|vulcan_paw_ft1|vulcan_paw_fk1|thumbs_up_paw|thumbs_up_paw_r1|thumbs_up_paw_r2|thumbs_up_paw_r3|thumbs_up_paw_d1|thumbs_up_paw_d2|thumbs_up_paw_d3|thumbs_up_paw_o1|thumbs_up_paw_o2|thumbs_up_paw_o3|thumbs_up_paw_y1|thumbs_up_paw_y2|thumbs_up_paw_y3|thumbs_up_paw_l1|thumbs_up_paw_l2|thumbs_up_paw_l3|thumbs_up_paw_g1|thumbs_up_paw_g2|thumbs_up_paw_g3|thumbs_up_paw_t1|thumbs_up_paw_t2|thumbs_up_paw_t3|thumbs_up_paw_c1|thumbs_up_paw_c2|thumbs_up_paw_c3|thumbs_up_paw_s1|thumbs_up_paw_s2|thumbs_up_paw_s3|thumbs_up_paw_b1|thumbs_up_paw_b2|thumbs_up_paw_b3|thumbs_up_paw_v1|thumbs_up_paw_v2|thumbs_up_paw_v3|thumbs_up_paw_m1|thumbs_up_paw_m2|thumbs_up_paw_m3|thumbs_up_paw_p1|thumbs_up_paw_p2|thumbs_up_paw_p3|thumbs_up_paw_e1|thumbs_up_paw_e2|thumbs_up_paw_e3|thumbs_up_paw_k1|thumbs_up_paw_k2|thumbs_up_paw_k3|thumbs_up_paw_fe1|thumbs_up_paw_ft1|thumbs_up_paw_fk1|thumbs_down_paw|thumbs_down_paw_r1|thumbs_down_paw_r2|thumbs_down_paw_r3|thumbs_down_paw_d1|thumbs_down_paw_d2|thumbs_down_paw_d3|thumbs_down_paw_o1|thumbs_down_paw_o2|thumbs_down_paw_o3|thumbs_down_paw_y1|thumbs_down_paw_y2|thumbs_down_paw_y3|thumbs_down_paw_l1|thumbs_down_paw_l2|thumbs_down_paw_l3|thumbs_down_paw_g1|thumbs_down_paw_g2|thumbs_down_paw_g3|thumbs_down_paw_t1|thumbs_down_paw_t2|thumbs_down_paw_t3|thumbs_down_paw_c1|thumbs_down_paw_c2|thumbs_down_paw_c3|thumbs_down_paw_s1|thumbs_down_paw_s2|thumbs_down_paw_s3|thumbs_down_paw_b1|thumbs_down_paw_b2|thumbs_down_paw_b3|thumbs_down_paw_v1|thumbs_down_paw_v2|thumbs_down_paw_v3|thumbs_down_paw_m1|thumbs_down_paw_m2|thumbs_down_paw_m3|thumbs_down_paw_p1|thumbs_down_paw_p2|thumbs_down_paw_p3|thumbs_down_paw_e1|thumbs_down_paw_e2|thumbs_down_paw_e3|thumbs_down_paw_k1|thumbs_down_paw_k2|thumbs_down_paw_k3|thumbs_down_paw_fe1|thumbs_down_paw_ft1|thumbs_down_paw_fk1|call_me_paw|call_me_paw_r1|call_me_paw_r2|call_me_paw_r3|call_me_paw_d1|call_me_paw_d2|call_me_paw_d3|call_me_paw_o1|call_me_paw_o2|call_me_paw_o3|call_me_paw_y1|call_me_paw_y2|call_me_paw_y3|call_me_paw_l1|call_me_paw_l2|call_me_paw_l3|call_me_paw_g1|call_me_paw_g2|call_me_paw_g3|call_me_paw_t1|call_me_paw_t2|call_me_paw_t3|call_me_paw_c1|call_me_paw_c2|call_me_paw_c3|call_me_paw_s1|call_me_paw_s2|call_me_paw_s3|call_me_paw_b1|call_me_paw_b2|call_me_paw_b3|call_me_paw_v1|call_me_paw_v2|call_me_paw_v3|call_me_paw_m1|call_me_paw_m2|call_me_paw_m3|call_me_paw_p1|call_me_paw_p2|call_me_paw_p3|call_me_paw_e1|call_me_paw_e2|call_me_paw_e3|call_me_paw_k1|call_me_paw_k2|call_me_paw_k3|call_me_paw_fe1|call_me_paw_ft1|call_me_paw_fk1|middle_finger_paw|middle_finger_paw_r1|middle_finger_paw_r2|middle_finger_paw_r3|middle_finger_paw_d1|middle_finger_paw_d2|middle_finger_paw_d3|middle_finger_paw_o1|middle_finger_paw_o2|middle_finger_paw_o3|middle_finger_paw_y1|middle_finger_paw_y2|middle_finger_paw_y3|middle_finger_paw_l1|middle_finger_paw_l2|middle_finger_paw_l3|middle_finger_paw_g1|middle_finger_paw_g2|middle_finger_paw_g3|middle_finger_paw_t1|middle_finger_paw_t2|middle_finger_paw_t3|middle_finger_paw_c1|middle_finger_paw_c2|middle_finger_paw_c3|middle_finger_paw_s1|middle_finger_paw_s2|middle_finger_paw_s3|middle_finger_paw_b1|middle_finger_paw_b2|middle_finger_paw_b3|middle_finger_paw_v1|middle_finger_paw_v2|middle_finger_paw_v3|middle_finger_paw_m1|middle_finger_paw_m2|middle_finger_paw_m3|middle_finger_paw_p1|middle_finger_paw_p2|middle_finger_paw_p3|middle_finger_paw_e1|middle_finger_paw_e2|middle_finger_paw_e3|middle_finger_paw_k1|middle_finger_paw_k2|middle_finger_paw_k3|middle_finger_paw_fe1|middle_finger_paw_ft1|middle_finger_paw_fk1|point_up_paw|point_up_paw_r1|point_up_paw_r2|point_up_paw_r3|point_up_paw_d1|point_up_paw_d2|point_up_paw_d3|point_up_paw_o1|point_up_paw_o2|point_up_paw_o3|point_up_paw_y1|point_up_paw_y2|point_up_paw_y3|point_up_paw_l1|point_up_paw_l2|point_up_paw_l3|point_up_paw_g1|point_up_paw_g2|point_up_paw_g3|point_up_paw_t1|point_up_paw_t2|point_up_paw_t3|point_up_paw_c1|point_up_paw_c2|point_up_paw_c3|point_up_paw_s1|point_up_paw_s2|point_up_paw_s3|point_up_paw_b1|point_up_paw_b2|point_up_paw_b3|point_up_paw_v1|point_up_paw_v2|point_up_paw_v3|point_up_paw_m1|point_up_paw_m2|point_up_paw_m3|point_up_paw_p1|point_up_paw_p2|point_up_paw_p3|point_up_paw_e1|point_up_paw_e2|point_up_paw_e3|point_up_paw_k1|point_up_paw_k2|point_up_paw_k3|point_up_paw_fe1|point_up_paw_ft1|point_up_paw_fk1|point_down_paw|point_down_paw_r1|point_down_paw_r2|point_down_paw_r3|point_down_paw_d1|point_down_paw_d2|point_down_paw_d3|point_down_paw_o1|point_down_paw_o2|point_down_paw_o3|point_down_paw_y1|point_down_paw_y2|point_down_paw_y3|point_down_paw_l1|point_down_paw_l2|point_down_paw_l3|point_down_paw_g1|point_down_paw_g2|point_down_paw_g3|point_down_paw_t1|point_down_paw_t2|point_down_paw_t3|point_down_paw_c1|point_down_paw_c2|point_down_paw_c3|point_down_paw_s1|point_down_paw_s2|point_down_paw_s3|point_down_paw_b1|point_down_paw_b2|point_down_paw_b3|point_down_paw_v1|point_down_paw_v2|point_down_paw_v3|point_down_paw_m1|point_down_paw_m2|point_down_paw_m3|point_down_paw_p1|point_down_paw_p2|point_down_paw_p3|point_down_paw_e1|point_down_paw_e2|point_down_paw_e3|point_down_paw_k1|point_down_paw_k2|point_down_paw_k3|point_down_paw_fe1|point_down_paw_ft1|point_down_paw_fk1|point_left_paw|point_left_paw_r1|point_left_paw_r2|point_left_paw_r3|point_left_paw_d1|point_left_paw_d2|point_left_paw_d3|point_left_paw_o1|point_left_paw_o2|point_left_paw_o3|point_left_paw_y1|point_left_paw_y2|point_left_paw_y3|point_left_paw_l1|point_left_paw_l2|point_left_paw_l3|point_left_paw_g1|point_left_paw_g2|point_left_paw_g3|point_left_paw_t1|point_left_paw_t2|point_left_paw_t3|point_left_paw_c1|point_left_paw_c2|point_left_paw_c3|point_left_paw_s1|point_left_paw_s2|point_left_paw_s3|point_left_paw_b1|point_left_paw_b2|point_left_paw_b3|point_left_paw_v1|point_left_paw_v2|point_left_paw_v3|point_left_paw_m1|point_left_paw_m2|point_left_paw_m3|point_left_paw_p1|point_left_paw_p2|point_left_paw_p3|point_left_paw_e1|point_left_paw_e2|point_left_paw_e3|point_left_paw_k1|point_left_paw_k2|point_left_paw_k3|point_left_paw_fe1|point_left_paw_ft1|point_left_paw_fk1|point_right_paw|point_right_paw_r1|point_right_paw_r2|point_right_paw_r3|point_right_paw_d1|point_right_paw_d2|point_right_paw_d3|point_right_paw_o1|point_right_paw_o2|point_right_paw_o3|point_right_paw_y1|point_right_paw_y2|point_right_paw_y3|point_right_paw_l1|point_right_paw_l2|point_right_paw_l3|point_right_paw_g1|point_right_paw_g2|point_right_paw_g3|point_right_paw_t1|point_right_paw_t2|point_right_paw_t3|point_right_paw_c1|point_right_paw_c2|point_right_paw_c3|point_right_paw_s1|point_right_paw_s2|point_right_paw_s3|point_right_paw_b1|point_right_paw_b2|point_right_paw_b3|point_right_paw_v1|point_right_paw_v2|point_right_paw_v3|point_right_paw_m1|point_right_paw_m2|point_right_paw_m3|point_right_paw_p1|point_right_paw_p2|point_right_paw_p3|point_right_paw_e1|point_right_paw_e2|point_right_paw_e3|point_right_paw_k1|point_right_paw_k2|point_right_paw_k3|point_right_paw_fe1|point_right_paw_ft1|point_right_paw_fk1|fist_paw|fist_paw_r1|fist_paw_r2|fist_paw_r3|fist_paw_d1|fist_paw_d2|fist_paw_d3|fist_paw_o1|fist_paw_o2|fist_paw_o3|fist_paw_y1|fist_paw_y2|fist_paw_y3|fist_paw_l1|fist_paw_l2|fist_paw_l3|fist_paw_g1|fist_paw_g2|fist_paw_g3|fist_paw_t1|fist_paw_t2|fist_paw_t3|fist_paw_c1|fist_paw_c2|fist_paw_c3|fist_paw_s1|fist_paw_s2|fist_paw_s3|fist_paw_b1|fist_paw_b2|fist_paw_b3|fist_paw_v1|fist_paw_v2|fist_paw_v3|fist_paw_m1|fist_paw_m2|fist_paw_m3|fist_paw_p1|fist_paw_p2|fist_paw_p3|fist_paw_e1|fist_paw_e2|fist_paw_e3|fist_paw_k1|fist_paw_k2|fist_paw_k3|fist_paw_fe1|fist_paw_ft1|fist_paw_fk1|fist_facing_left_paw|fist_facing_left_paw_r1|fist_facing_left_paw_r2|fist_facing_left_paw_r3|fist_facing_left_paw_d1|fist_facing_left_paw_d2|fist_facing_left_paw_d3|fist_facing_left_paw_o1|fist_facing_left_paw_o2|fist_facing_left_paw_o3|fist_facing_left_paw_y1|fist_facing_left_paw_y2|fist_facing_left_paw_y3|fist_facing_left_paw_l1|fist_facing_left_paw_l2|fist_facing_left_paw_l3|fist_facing_left_paw_g1|fist_facing_left_paw_g2|fist_facing_left_paw_g3|fist_facing_left_paw_t1|fist_facing_left_paw_t2|fist_facing_left_paw_t3|fist_facing_left_paw_c1|fist_facing_left_paw_c2|fist_facing_left_paw_c3|fist_facing_left_paw_s1|fist_facing_left_paw_s2|fist_facing_left_paw_s3|fist_facing_left_paw_b1|fist_facing_left_paw_b2|fist_facing_left_paw_b3|fist_facing_left_paw_v1|fist_facing_left_paw_v2|fist_facing_left_paw_v3|fist_facing_left_paw_m1|fist_facing_left_paw_m2|fist_facing_left_paw_m3|fist_facing_left_paw_p1|fist_facing_left_paw_p2|fist_facing_left_paw_p3|fist_facing_left_paw_e1|fist_facing_left_paw_e2|fist_facing_left_paw_e3|fist_facing_left_paw_k1|fist_facing_left_paw_k2|fist_facing_left_paw_k3|fist_facing_left_paw_fe1|fist_facing_left_paw_ft1|fist_facing_left_paw_fk1|fist_facing_right_paw|fist_facing_right_paw_r1|fist_facing_right_paw_r2|fist_facing_right_paw_r3|fist_facing_right_paw_d1|fist_facing_right_paw_d2|fist_facing_right_paw_d3|fist_facing_right_paw_o1|fist_facing_right_paw_o2|fist_facing_right_paw_o3|fist_facing_right_paw_y1|fist_facing_right_paw_y2|fist_facing_right_paw_y3|fist_facing_right_paw_l1|fist_facing_right_paw_l2|fist_facing_right_paw_l3|fist_facing_right_paw_g1|fist_facing_right_paw_g2|fist_facing_right_paw_g3|fist_facing_right_paw_t1|fist_facing_right_paw_t2|fist_facing_right_paw_t3|fist_facing_right_paw_c1|fist_facing_right_paw_c2|fist_facing_right_paw_c3|fist_facing_right_paw_s1|fist_facing_right_paw_s2|fist_facing_right_paw_s3|fist_facing_right_paw_b1|fist_facing_right_paw_b2|fist_facing_right_paw_b3|fist_facing_right_paw_v1|fist_facing_right_paw_v2|fist_facing_right_paw_v3|fist_facing_right_paw_m1|fist_facing_right_paw_m2|fist_facing_right_paw_m3|fist_facing_right_paw_p1|fist_facing_right_paw_p2|fist_facing_right_paw_p3|fist_facing_right_paw_e1|fist_facing_right_paw_e2|fist_facing_right_paw_e3|fist_facing_right_paw_k1|fist_facing_right_paw_k2|fist_facing_right_paw_k3|fist_facing_right_paw_fe1|fist_facing_right_paw_ft1|fist_facing_right_paw_fk1|punch_paw|punch_paw_r1|punch_paw_r2|punch_paw_r3|punch_paw_d1|punch_paw_d2|punch_paw_d3|punch_paw_o1|punch_paw_o2|punch_paw_o3|punch_paw_y1|punch_paw_y2|punch_paw_y3|punch_paw_l1|punch_paw_l2|punch_paw_l3|punch_paw_g1|punch_paw_g2|punch_paw_g3|punch_paw_t1|punch_paw_t2|punch_paw_t3|punch_paw_c1|punch_paw_c2|punch_paw_c3|punch_paw_s1|punch_paw_s2|punch_paw_s3|punch_paw_b1|punch_paw_b2|punch_paw_b3|punch_paw_v1|punch_paw_v2|punch_paw_v3|punch_paw_m1|punch_paw_m2|punch_paw_m3|punch_paw_p1|punch_paw_p2|punch_paw_p3|punch_paw_e1|punch_paw_e2|punch_paw_e3|punch_paw_k1|punch_paw_k2|punch_paw_k3|punch_paw_fe1|punch_paw_ft1|punch_paw_fk1|ok_hand_paw|ok_hand_paw_r1|ok_hand_paw_r2|ok_hand_paw_r3|ok_hand_paw_d1|ok_hand_paw_d2|ok_hand_paw_d3|ok_hand_paw_o1|ok_hand_paw_o2|ok_hand_paw_o3|ok_hand_paw_y1|ok_hand_paw_y2|ok_hand_paw_y3|ok_hand_paw_l1|ok_hand_paw_l2|ok_hand_paw_l3|ok_hand_paw_g1|ok_hand_paw_g2|ok_hand_paw_g3|ok_hand_paw_t1|ok_hand_paw_t2|ok_hand_paw_t3|ok_hand_paw_c1|ok_hand_paw_c2|ok_hand_paw_c3|ok_hand_paw_s1|ok_hand_paw_s2|ok_hand_paw_s3|ok_hand_paw_b1|ok_hand_paw_b2|ok_hand_paw_b3|ok_hand_paw_v1|ok_hand_paw_v2|ok_hand_paw_v3|ok_hand_paw_m1|ok_hand_paw_m2|ok_hand_paw_m3|ok_hand_paw_p1|ok_hand_paw_p2|ok_hand_paw_p3|ok_hand_paw_e1|ok_hand_paw_e2|ok_hand_paw_e3|ok_hand_paw_k1|ok_hand_paw_k2|ok_hand_paw_k3|ok_hand_paw_fe1|ok_hand_paw_ft1|ok_hand_paw_fk1|wave_paw|wave_paw_r1|wave_paw_r2|wave_paw_r3|wave_paw_d1|wave_paw_d2|wave_paw_d3|wave_paw_o1|wave_paw_o2|wave_paw_o3|wave_paw_y1|wave_paw_y2|wave_paw_y3|wave_paw_l1|wave_paw_l2|wave_paw_l3|wave_paw_g1|wave_paw_g2|wave_paw_g3|wave_paw_t1|wave_paw_t2|wave_paw_t3|wave_paw_c1|wave_paw_c2|wave_paw_c3|wave_paw_s1|wave_paw_s2|wave_paw_s3|wave_paw_b1|wave_paw_b2|wave_paw_b3|wave_paw_v1|wave_paw_v2|wave_paw_v3|wave_paw_m1|wave_paw_m2|wave_paw_m3|wave_paw_p1|wave_paw_p2|wave_paw_p3|wave_paw_e1|wave_paw_e2|wave_paw_e3|wave_paw_k1|wave_paw_k2|wave_paw_k3|wave_paw_fe1|wave_paw_ft1|wave_paw_fk1|clap_paw|clap_paw_r1|clap_paw_r2|clap_paw_r3|clap_paw_d1|clap_paw_d2|clap_paw_d3|clap_paw_o1|clap_paw_o2|clap_paw_o3|clap_paw_y1|clap_paw_y2|clap_paw_y3|clap_paw_l1|clap_paw_l2|clap_paw_l3|clap_paw_g1|clap_paw_g2|clap_paw_g3|clap_paw_t1|clap_paw_t2|clap_paw_t3|clap_paw_c1|clap_paw_c2|clap_paw_c3|clap_paw_s1|clap_paw_s2|clap_paw_s3|clap_paw_b1|clap_paw_b2|clap_paw_b3|clap_paw_v1|clap_paw_v2|clap_paw_v3|clap_paw_m1|clap_paw_m2|clap_paw_m3|clap_paw_p1|clap_paw_p2|clap_paw_p3|clap_paw_e1|clap_paw_e2|clap_paw_e3|clap_paw_k1|clap_paw_k2|clap_paw_k3|clap_paw_fe1|clap_paw_ft1|clap_paw_fk1|raised_hands_paw|raised_hands_paw_r1|raised_hands_paw_r2|raised_hands_paw_r3|raised_hands_paw_d1|raised_hands_paw_d2|raised_hands_paw_d3|raised_hands_paw_o1|raised_hands_paw_o2|raised_hands_paw_o3|raised_hands_paw_y1|raised_hands_paw_y2|raised_hands_paw_y3|raised_hands_paw_l1|raised_hands_paw_l2|raised_hands_paw_l3|raised_hands_paw_g1|raised_hands_paw_g2|raised_hands_paw_g3|raised_hands_paw_t1|raised_hands_paw_t2|raised_hands_paw_t3|raised_hands_paw_c1|raised_hands_paw_c2|raised_hands_paw_c3|raised_hands_paw_s1|raised_hands_paw_s2|raised_hands_paw_s3|raised_hands_paw_b1|raised_hands_paw_b2|raised_hands_paw_b3|raised_hands_paw_v1|raised_hands_paw_v2|raised_hands_paw_v3|raised_hands_paw_m1|raised_hands_paw_m2|raised_hands_paw_m3|raised_hands_paw_p1|raised_hands_paw_p2|raised_hands_paw_p3|raised_hands_paw_e1|raised_hands_paw_e2|raised_hands_paw_e3|raised_hands_paw_k1|raised_hands_paw_k2|raised_hands_paw_k3|raised_hands_paw_fe1|raised_hands_paw_ft1|raised_hands_paw_fk1|open_hands_paw|open_hands_paw_r1|open_hands_paw_r2|open_hands_paw_r3|open_hands_paw_d1|open_hands_paw_d2|open_hands_paw_d3|open_hands_paw_o1|open_hands_paw_o2|open_hands_paw_o3|open_hands_paw_y1|open_hands_paw_y2|open_hands_paw_y3|open_hands_paw_l1|open_hands_paw_l2|open_hands_paw_l3|open_hands_paw_g1|open_hands_paw_g2|open_hands_paw_g3|open_hands_paw_t1|open_hands_paw_t2|open_hands_paw_t3|open_hands_paw_c1|open_hands_paw_c2|open_hands_paw_c3|open_hands_paw_s1|open_hands_paw_s2|open_hands_paw_s3|open_hands_paw_b1|open_hands_paw_b2|open_hands_paw_b3|open_hands_paw_v1|open_hands_paw_v2|open_hands_paw_v3|open_hands_paw_m1|open_hands_paw_m2|open_hands_paw_m3|open_hands_paw_p1|open_hands_paw_p2|open_hands_paw_p3|open_hands_paw_e1|open_hands_paw_e2|open_hands_paw_e3|open_hands_paw_k1|open_hands_paw_k2|open_hands_paw_k3|open_hands_paw_fe1|open_hands_paw_ft1|open_hands_paw_fk1|pray_paw|pray_paw_r1|pray_paw_r2|pray_paw_r3|pray_paw_d1|pray_paw_d2|pray_paw_d3|pray_paw_o1|pray_paw_o2|pray_paw_o3|pray_paw_y1|pray_paw_y2|pray_paw_y3|pray_paw_l1|pray_paw_l2|pray_paw_l3|pray_paw_g1|pray_paw_g2|pray_paw_g3|pray_paw_t1|pray_paw_t2|pray_paw_t3|pray_paw_c1|pray_paw_c2|pray_paw_c3|pray_paw_s1|pray_paw_s2|pray_paw_s3|pray_paw_b1|pray_paw_b2|pray_paw_b3|pray_paw_v1|pray_paw_v2|pray_paw_v3|pray_paw_m1|pray_paw_m2|pray_paw_m3|pray_paw_p1|pray_paw_p2|pray_paw_p3|pray_paw_e1|pray_paw_e2|pray_paw_e3|pray_paw_k1|pray_paw_k2|pray_paw_k3|pray_paw_fe1|pray_paw_ft1|pray_paw_fk1|writing_hand_paw|writing_hand_paw_r1|writing_hand_paw_r2|writing_hand_paw_r3|writing_hand_paw_d1|writing_hand_paw_d2|writing_hand_paw_d3|writing_hand_paw_o1|writing_hand_paw_o2|writing_hand_paw_o3|writing_hand_paw_y1|writing_hand_paw_y2|writing_hand_paw_y3|writing_hand_paw_l1|writing_hand_paw_l2|writing_hand_paw_l3|writing_hand_paw_g1|writing_hand_paw_g2|writing_hand_paw_g3|writing_hand_paw_t1|writing_hand_paw_t2|writing_hand_paw_t3|writing_hand_paw_c1|writing_hand_paw_c2|writing_hand_paw_c3|writing_hand_paw_s1|writing_hand_paw_s2|writing_hand_paw_s3|writing_hand_paw_b1|writing_hand_paw_b2|writing_hand_paw_b3|writing_hand_paw_v1|writing_hand_paw_v2|writing_hand_paw_v3|writing_hand_paw_m1|writing_hand_paw_m2|writing_hand_paw_m3|writing_hand_paw_p1|writing_hand_paw_p2|writing_hand_paw_p3|writing_hand_paw_e1|writing_hand_paw_e2|writing_hand_paw_e3|writing_hand_paw_k1|writing_hand_paw_k2|writing_hand_paw_k3|writing_hand_paw_fe1|writing_hand_paw_ft1|writing_hand_paw_fk1|muscle_paw|muscle_paw_r1|muscle_paw_r2|muscle_paw_r3|muscle_paw_d1|muscle_paw_d2|muscle_paw_d3|muscle_paw_o1|muscle_paw_o2|muscle_paw_o3|muscle_paw_y1|muscle_paw_y2|muscle_paw_y3|muscle_paw_l1|muscle_paw_l2|muscle_paw_l3|muscle_paw_g1|muscle_paw_g2|muscle_paw_g3|muscle_paw_t1|muscle_paw_t2|muscle_paw_t3|muscle_paw_c1|muscle_paw_c2|muscle_paw_c3|muscle_paw_s1|muscle_paw_s2|muscle_paw_s3|muscle_paw_b1|muscle_paw_b2|muscle_paw_b3|muscle_paw_v1|muscle_paw_v2|muscle_paw_v3|muscle_paw_m1|muscle_paw_m2|muscle_paw_m3|muscle_paw_p1|muscle_paw_p2|muscle_paw_p3|muscle_paw_e1|muscle_paw_e2|muscle_paw_e3|muscle_paw_k1|muscle_paw_k2|muscle_paw_k3|muscle_paw_fe1|muscle_paw_ft1|muscle_paw_fk1|handshake_paw|handshake_paw_r1|handshake_paw_r2|handshake_paw_r3|handshake_paw_d1|handshake_paw_d2|handshake_paw_d3|handshake_paw_o1|handshake_paw_o2|handshake_paw_o3|handshake_paw_y1|handshake_paw_y2|handshake_paw_y3|handshake_paw_l1|handshake_paw_l2|handshake_paw_l3|handshake_paw_g1|handshake_paw_g2|handshake_paw_g3|handshake_paw_t1|handshake_paw_t2|handshake_paw_t3|handshake_paw_c1|handshake_paw_c2|handshake_paw_c3|handshake_paw_s1|handshake_paw_s2|handshake_paw_s3|handshake_paw_b1|handshake_paw_b2|handshake_paw_b3|handshake_paw_v1|handshake_paw_v2|handshake_paw_v3|handshake_paw_m1|handshake_paw_m2|handshake_paw_m3|handshake_paw_p1|handshake_paw_p2|handshake_paw_p3|handshake_paw_e1|handshake_paw_e2|handshake_paw_e3|handshake_paw_k1|handshake_paw_k2|handshake_paw_k3|handshake_paw_fe1|handshake_paw_ft1|handshake_paw_fk1|selfie_paw|selfie_paw_r1|selfie_paw_r2|selfie_paw_r3|selfie_paw_d1|selfie_paw_d2|selfie_paw_d3|selfie_paw_o1|selfie_paw_o2|selfie_paw_o3|selfie_paw_y1|selfie_paw_y2|selfie_paw_y3|selfie_paw_l1|selfie_paw_l2|selfie_paw_l3|selfie_paw_g1|selfie_paw_g2|selfie_paw_g3|selfie_paw_t1|selfie_paw_t2|selfie_paw_t3|selfie_paw_c1|selfie_paw_c2|selfie_paw_c3|selfie_paw_s1|selfie_paw_s2|selfie_paw_s3|selfie_paw_b1|selfie_paw_b2|selfie_paw_b3|selfie_paw_v1|selfie_paw_v2|selfie_paw_v3|selfie_paw_m1|selfie_paw_m2|selfie_paw_m3|selfie_paw_p1|selfie_paw_p2|selfie_paw_p3|selfie_paw_e1|selfie_paw_e2|selfie_paw_e3|selfie_paw_k1|selfie_paw_k2|selfie_paw_k3|selfie_paw_fe1|selfie_paw_ft1|selfie_paw_fk1|nail_varnish_paw|nail_varnish_paw_r1|nail_varnish_paw_r2|nail_varnish_paw_r3|nail_varnish_paw_d1|nail_varnish_paw_d2|nail_varnish_paw_d3|nail_varnish_paw_o1|nail_varnish_paw_o2|nail_varnish_paw_o3|nail_varnish_paw_y1|nail_varnish_paw_y2|nail_varnish_paw_y3|nail_varnish_paw_l1|nail_varnish_paw_l2|nail_varnish_paw_l3|nail_varnish_paw_g1|nail_varnish_paw_g2|nail_varnish_paw_g3|nail_varnish_paw_t1|nail_varnish_paw_t2|nail_varnish_paw_t3|nail_varnish_paw_c1|nail_varnish_paw_c2|nail_varnish_paw_c3|nail_varnish_paw_s1|nail_varnish_paw_s2|nail_varnish_paw_s3|nail_varnish_paw_b1|nail_varnish_paw_b2|nail_varnish_paw_b3|nail_varnish_paw_v1|nail_varnish_paw_v2|nail_varnish_paw_v3|nail_varnish_paw_m1|nail_varnish_paw_m2|nail_varnish_paw_m3|nail_varnish_paw_p1|nail_varnish_paw_p2|nail_varnish_paw_p3|nail_varnish_paw_e1|nail_varnish_paw_e2|nail_varnish_paw_e3|nail_varnish_paw_k1|nail_varnish_paw_k2|nail_varnish_paw_k3|nail_varnish_paw_fe1|nail_varnish_paw_ft1|nail_varnish_paw_fk1|hand_clw|hand_clw_r1|hand_clw_r2|hand_clw_r3|hand_clw_d1|hand_clw_d2|hand_clw_d3|hand_clw_o1|hand_clw_o2|hand_clw_o3|hand_clw_y1|hand_clw_y2|hand_clw_y3|hand_clw_l1|hand_clw_l2|hand_clw_l3|hand_clw_g1|hand_clw_g2|hand_clw_g3|hand_clw_t1|hand_clw_t2|hand_clw_t3|hand_clw_c1|hand_clw_c2|hand_clw_c3|hand_clw_s1|hand_clw_s2|hand_clw_s3|hand_clw_b1|hand_clw_b2|hand_clw_b3|hand_clw_v1|hand_clw_v2|hand_clw_v3|hand_clw_m1|hand_clw_m2|hand_clw_m3|hand_clw_p1|hand_clw_p2|hand_clw_p3|hand_clw_e1|hand_clw_e2|hand_clw_e3|hand_clw_k1|hand_clw_k2|hand_clw_k3|hand_splayed_clw|hand_splayed_clw_r1|hand_splayed_clw_r2|hand_splayed_clw_r3|hand_splayed_clw_d1|hand_splayed_clw_d2|hand_splayed_clw_d3|hand_splayed_clw_o1|hand_splayed_clw_o2|hand_splayed_clw_o3|hand_splayed_clw_y1|hand_splayed_clw_y2|hand_splayed_clw_y3|hand_splayed_clw_l1|hand_splayed_clw_l2|hand_splayed_clw_l3|hand_splayed_clw_g1|hand_splayed_clw_g2|hand_splayed_clw_g3|hand_splayed_clw_t1|hand_splayed_clw_t2|hand_splayed_clw_t3|hand_splayed_clw_c1|hand_splayed_clw_c2|hand_splayed_clw_c3|hand_splayed_clw_s1|hand_splayed_clw_s2|hand_splayed_clw_s3|hand_splayed_clw_b1|hand_splayed_clw_b2|hand_splayed_clw_b3|hand_splayed_clw_v1|hand_splayed_clw_v2|hand_splayed_clw_v3|hand_splayed_clw_m1|hand_splayed_clw_m2|hand_splayed_clw_m3|hand_splayed_clw_p1|hand_splayed_clw_p2|hand_splayed_clw_p3|hand_splayed_clw_e1|hand_splayed_clw_e2|hand_splayed_clw_e3|hand_splayed_clw_k1|hand_splayed_clw_k2|hand_splayed_clw_k3|back_of_hand_clw|back_of_hand_clw_r1|back_of_hand_clw_r2|back_of_hand_clw_r3|back_of_hand_clw_d1|back_of_hand_clw_d2|back_of_hand_clw_d3|back_of_hand_clw_o1|back_of_hand_clw_o2|back_of_hand_clw_o3|back_of_hand_clw_y1|back_of_hand_clw_y2|back_of_hand_clw_y3|back_of_hand_clw_l1|back_of_hand_clw_l2|back_of_hand_clw_l3|back_of_hand_clw_g1|back_of_hand_clw_g2|back_of_hand_clw_g3|back_of_hand_clw_t1|back_of_hand_clw_t2|back_of_hand_clw_t3|back_of_hand_clw_c1|back_of_hand_clw_c2|back_of_hand_clw_c3|back_of_hand_clw_s1|back_of_hand_clw_s2|back_of_hand_clw_s3|back_of_hand_clw_b1|back_of_hand_clw_b2|back_of_hand_clw_b3|back_of_hand_clw_v1|back_of_hand_clw_v2|back_of_hand_clw_v3|back_of_hand_clw_m1|back_of_hand_clw_m2|back_of_hand_clw_m3|back_of_hand_clw_p1|back_of_hand_clw_p2|back_of_hand_clw_p3|back_of_hand_clw_e1|back_of_hand_clw_e2|back_of_hand_clw_e3|back_of_hand_clw_k1|back_of_hand_clw_k2|back_of_hand_clw_k3|v_clw|v_clw_r1|v_clw_r2|v_clw_r3|v_clw_d1|v_clw_d2|v_clw_d3|v_clw_o1|v_clw_o2|v_clw_o3|v_clw_y1|v_clw_y2|v_clw_y3|v_clw_l1|v_clw_l2|v_clw_l3|v_clw_g1|v_clw_g2|v_clw_g3|v_clw_t1|v_clw_t2|v_clw_t3|v_clw_c1|v_clw_c2|v_clw_c3|v_clw_s1|v_clw_s2|v_clw_s3|v_clw_b1|v_clw_b2|v_clw_b3|v_clw_v1|v_clw_v2|v_clw_v3|v_clw_m1|v_clw_m2|v_clw_m3|v_clw_p1|v_clw_p2|v_clw_p3|v_clw_e1|v_clw_e2|v_clw_e3|v_clw_k1|v_clw_k2|v_clw_k3|crossed_fingers_clw|crossed_fingers_clw_r1|crossed_fingers_clw_r2|crossed_fingers_clw_r3|crossed_fingers_clw_d1|crossed_fingers_clw_d2|crossed_fingers_clw_d3|crossed_fingers_clw_o1|crossed_fingers_clw_o2|crossed_fingers_clw_o3|crossed_fingers_clw_y1|crossed_fingers_clw_y2|crossed_fingers_clw_y3|crossed_fingers_clw_l1|crossed_fingers_clw_l2|crossed_fingers_clw_l3|crossed_fingers_clw_g1|crossed_fingers_clw_g2|crossed_fingers_clw_g3|crossed_fingers_clw_t1|crossed_fingers_clw_t2|crossed_fingers_clw_t3|crossed_fingers_clw_c1|crossed_fingers_clw_c2|crossed_fingers_clw_c3|crossed_fingers_clw_s1|crossed_fingers_clw_s2|crossed_fingers_clw_s3|crossed_fingers_clw_b1|crossed_fingers_clw_b2|crossed_fingers_clw_b3|crossed_fingers_clw_v1|crossed_fingers_clw_v2|crossed_fingers_clw_v3|crossed_fingers_clw_m1|crossed_fingers_clw_m2|crossed_fingers_clw_m3|crossed_fingers_clw_p1|crossed_fingers_clw_p2|crossed_fingers_clw_p3|crossed_fingers_clw_e1|crossed_fingers_clw_e2|crossed_fingers_clw_e3|crossed_fingers_clw_k1|crossed_fingers_clw_k2|crossed_fingers_clw_k3|index_finger_clw|index_finger_clw_r1|index_finger_clw_r2|index_finger_clw_r3|index_finger_clw_d1|index_finger_clw_d2|index_finger_clw_d3|index_finger_clw_o1|index_finger_clw_o2|index_finger_clw_o3|index_finger_clw_y1|index_finger_clw_y2|index_finger_clw_y3|index_finger_clw_l1|index_finger_clw_l2|index_finger_clw_l3|index_finger_clw_g1|index_finger_clw_g2|index_finger_clw_g3|index_finger_clw_t1|index_finger_clw_t2|index_finger_clw_t3|index_finger_clw_c1|index_finger_clw_c2|index_finger_clw_c3|index_finger_clw_s1|index_finger_clw_s2|index_finger_clw_s3|index_finger_clw_b1|index_finger_clw_b2|index_finger_clw_b3|index_finger_clw_v1|index_finger_clw_v2|index_finger_clw_v3|index_finger_clw_m1|index_finger_clw_m2|index_finger_clw_m3|index_finger_clw_p1|index_finger_clw_p2|index_finger_clw_p3|index_finger_clw_e1|index_finger_clw_e2|index_finger_clw_e3|index_finger_clw_k1|index_finger_clw_k2|index_finger_clw_k3|metal_clw|metal_clw_r1|metal_clw_r2|metal_clw_r3|metal_clw_d1|metal_clw_d2|metal_clw_d3|metal_clw_o1|metal_clw_o2|metal_clw_o3|metal_clw_y1|metal_clw_y2|metal_clw_y3|metal_clw_l1|metal_clw_l2|metal_clw_l3|metal_clw_g1|metal_clw_g2|metal_clw_g3|metal_clw_t1|metal_clw_t2|metal_clw_t3|metal_clw_c1|metal_clw_c2|metal_clw_c3|metal_clw_s1|metal_clw_s2|metal_clw_s3|metal_clw_b1|metal_clw_b2|metal_clw_b3|metal_clw_v1|metal_clw_v2|metal_clw_v3|metal_clw_m1|metal_clw_m2|metal_clw_m3|metal_clw_p1|metal_clw_p2|metal_clw_p3|metal_clw_e1|metal_clw_e2|metal_clw_e3|metal_clw_k1|metal_clw_k2|metal_clw_k3|vulcan_clw|vulcan_clw_r1|vulcan_clw_r2|vulcan_clw_r3|vulcan_clw_d1|vulcan_clw_d2|vulcan_clw_d3|vulcan_clw_o1|vulcan_clw_o2|vulcan_clw_o3|vulcan_clw_y1|vulcan_clw_y2|vulcan_clw_y3|vulcan_clw_l1|vulcan_clw_l2|vulcan_clw_l3|vulcan_clw_g1|vulcan_clw_g2|vulcan_clw_g3|vulcan_clw_t1|vulcan_clw_t2|vulcan_clw_t3|vulcan_clw_c1|vulcan_clw_c2|vulcan_clw_c3|vulcan_clw_s1|vulcan_clw_s2|vulcan_clw_s3|vulcan_clw_b1|vulcan_clw_b2|vulcan_clw_b3|vulcan_clw_v1|vulcan_clw_v2|vulcan_clw_v3|vulcan_clw_m1|vulcan_clw_m2|vulcan_clw_m3|vulcan_clw_p1|vulcan_clw_p2|vulcan_clw_p3|vulcan_clw_e1|vulcan_clw_e2|vulcan_clw_e3|vulcan_clw_k1|vulcan_clw_k2|vulcan_clw_k3|thumbs_up_clw|thumbs_up_clw_r1|thumbs_up_clw_r2|thumbs_up_clw_r3|thumbs_up_clw_d1|thumbs_up_clw_d2|thumbs_up_clw_d3|thumbs_up_clw_o1|thumbs_up_clw_o2|thumbs_up_clw_o3|thumbs_up_clw_y1|thumbs_up_clw_y2|thumbs_up_clw_y3|thumbs_up_clw_l1|thumbs_up_clw_l2|thumbs_up_clw_l3|thumbs_up_clw_g1|thumbs_up_clw_g2|thumbs_up_clw_g3|thumbs_up_clw_t1|thumbs_up_clw_t2|thumbs_up_clw_t3|thumbs_up_clw_c1|thumbs_up_clw_c2|thumbs_up_clw_c3|thumbs_up_clw_s1|thumbs_up_clw_s2|thumbs_up_clw_s3|thumbs_up_clw_b1|thumbs_up_clw_b2|thumbs_up_clw_b3|thumbs_up_clw_v1|thumbs_up_clw_v2|thumbs_up_clw_v3|thumbs_up_clw_m1|thumbs_up_clw_m2|thumbs_up_clw_m3|thumbs_up_clw_p1|thumbs_up_clw_p2|thumbs_up_clw_p3|thumbs_up_clw_e1|thumbs_up_clw_e2|thumbs_up_clw_e3|thumbs_up_clw_k1|thumbs_up_clw_k2|thumbs_up_clw_k3|thumbs_down_clw|thumbs_down_clw_r1|thumbs_down_clw_r2|thumbs_down_clw_r3|thumbs_down_clw_d1|thumbs_down_clw_d2|thumbs_down_clw_d3|thumbs_down_clw_o1|thumbs_down_clw_o2|thumbs_down_clw_o3|thumbs_down_clw_y1|thumbs_down_clw_y2|thumbs_down_clw_y3|thumbs_down_clw_l1|thumbs_down_clw_l2|thumbs_down_clw_l3|thumbs_down_clw_g1|thumbs_down_clw_g2|thumbs_down_clw_g3|thumbs_down_clw_t1|thumbs_down_clw_t2|thumbs_down_clw_t3|thumbs_down_clw_c1|thumbs_down_clw_c2|thumbs_down_clw_c3|thumbs_down_clw_s1|thumbs_down_clw_s2|thumbs_down_clw_s3|thumbs_down_clw_b1|thumbs_down_clw_b2|thumbs_down_clw_b3|thumbs_down_clw_v1|thumbs_down_clw_v2|thumbs_down_clw_v3|thumbs_down_clw_m1|thumbs_down_clw_m2|thumbs_down_clw_m3|thumbs_down_clw_p1|thumbs_down_clw_p2|thumbs_down_clw_p3|thumbs_down_clw_e1|thumbs_down_clw_e2|thumbs_down_clw_e3|thumbs_down_clw_k1|thumbs_down_clw_k2|thumbs_down_clw_k3|call_me_clw|call_me_clw_r1|call_me_clw_r2|call_me_clw_r3|call_me_clw_d1|call_me_clw_d2|call_me_clw_d3|call_me_clw_o1|call_me_clw_o2|call_me_clw_o3|call_me_clw_y1|call_me_clw_y2|call_me_clw_y3|call_me_clw_l1|call_me_clw_l2|call_me_clw_l3|call_me_clw_g1|call_me_clw_g2|call_me_clw_g3|call_me_clw_t1|call_me_clw_t2|call_me_clw_t3|call_me_clw_c1|call_me_clw_c2|call_me_clw_c3|call_me_clw_s1|call_me_clw_s2|call_me_clw_s3|call_me_clw_b1|call_me_clw_b2|call_me_clw_b3|call_me_clw_v1|call_me_clw_v2|call_me_clw_v3|call_me_clw_m1|call_me_clw_m2|call_me_clw_m3|call_me_clw_p1|call_me_clw_p2|call_me_clw_p3|call_me_clw_e1|call_me_clw_e2|call_me_clw_e3|call_me_clw_k1|call_me_clw_k2|call_me_clw_k3|middle_finger_clw|middle_finger_clw_r1|middle_finger_clw_r2|middle_finger_clw_r3|middle_finger_clw_d1|middle_finger_clw_d2|middle_finger_clw_d3|middle_finger_clw_o1|middle_finger_clw_o2|middle_finger_clw_o3|middle_finger_clw_y1|middle_finger_clw_y2|middle_finger_clw_y3|middle_finger_clw_l1|middle_finger_clw_l2|middle_finger_clw_l3|middle_finger_clw_g1|middle_finger_clw_g2|middle_finger_clw_g3|middle_finger_clw_t1|middle_finger_clw_t2|middle_finger_clw_t3|middle_finger_clw_c1|middle_finger_clw_c2|middle_finger_clw_c3|middle_finger_clw_s1|middle_finger_clw_s2|middle_finger_clw_s3|middle_finger_clw_b1|middle_finger_clw_b2|middle_finger_clw_b3|middle_finger_clw_v1|middle_finger_clw_v2|middle_finger_clw_v3|middle_finger_clw_m1|middle_finger_clw_m2|middle_finger_clw_m3|middle_finger_clw_p1|middle_finger_clw_p2|middle_finger_clw_p3|middle_finger_clw_e1|middle_finger_clw_e2|middle_finger_clw_e3|middle_finger_clw_k1|middle_finger_clw_k2|middle_finger_clw_k3|point_up_clw|point_up_clw_r1|point_up_clw_r2|point_up_clw_r3|point_up_clw_d1|point_up_clw_d2|point_up_clw_d3|point_up_clw_o1|point_up_clw_o2|point_up_clw_o3|point_up_clw_y1|point_up_clw_y2|point_up_clw_y3|point_up_clw_l1|point_up_clw_l2|point_up_clw_l3|point_up_clw_g1|point_up_clw_g2|point_up_clw_g3|point_up_clw_t1|point_up_clw_t2|point_up_clw_t3|point_up_clw_c1|point_up_clw_c2|point_up_clw_c3|point_up_clw_s1|point_up_clw_s2|point_up_clw_s3|point_up_clw_b1|point_up_clw_b2|point_up_clw_b3|point_up_clw_v1|point_up_clw_v2|point_up_clw_v3|point_up_clw_m1|point_up_clw_m2|point_up_clw_m3|point_up_clw_p1|point_up_clw_p2|point_up_clw_p3|point_up_clw_e1|point_up_clw_e2|point_up_clw_e3|point_up_clw_k1|point_up_clw_k2|point_up_clw_k3|point_down_clw|point_down_clw_r1|point_down_clw_r2|point_down_clw_r3|point_down_clw_d1|point_down_clw_d2|point_down_clw_d3|point_down_clw_o1|point_down_clw_o2|point_down_clw_o3|point_down_clw_y1|point_down_clw_y2|point_down_clw_y3|point_down_clw_l1|point_down_clw_l2|point_down_clw_l3|point_down_clw_g1|point_down_clw_g2|point_down_clw_g3|point_down_clw_t1|point_down_clw_t2|point_down_clw_t3|point_down_clw_c1|point_down_clw_c2|point_down_clw_c3|point_down_clw_s1|point_down_clw_s2|point_down_clw_s3|point_down_clw_b1|point_down_clw_b2|point_down_clw_b3|point_down_clw_v1|point_down_clw_v2|point_down_clw_v3|point_down_clw_m1|point_down_clw_m2|point_down_clw_m3|point_down_clw_p1|point_down_clw_p2|point_down_clw_p3|point_down_clw_e1|point_down_clw_e2|point_down_clw_e3|point_down_clw_k1|point_down_clw_k2|point_down_clw_k3|point_left_clw|point_left_clw_r1|point_left_clw_r2|point_left_clw_r3|point_left_clw_d1|point_left_clw_d2|point_left_clw_d3|point_left_clw_o1|point_left_clw_o2|point_left_clw_o3|point_left_clw_y1|point_left_clw_y2|point_left_clw_y3|point_left_clw_l1|point_left_clw_l2|point_left_clw_l3|point_left_clw_g1|point_left_clw_g2|point_left_clw_g3|point_left_clw_t1|point_left_clw_t2|point_left_clw_t3|point_left_clw_c1|point_left_clw_c2|point_left_clw_c3|point_left_clw_s1|point_left_clw_s2|point_left_clw_s3|point_left_clw_b1|point_left_clw_b2|point_left_clw_b3|point_left_clw_v1|point_left_clw_v2|point_left_clw_v3|point_left_clw_m1|point_left_clw_m2|point_left_clw_m3|point_left_clw_p1|point_left_clw_p2|point_left_clw_p3|point_left_clw_e1|point_left_clw_e2|point_left_clw_e3|point_left_clw_k1|point_left_clw_k2|point_left_clw_k3|point_right_clw|point_right_clw_r1|point_right_clw_r2|point_right_clw_r3|point_right_clw_d1|point_right_clw_d2|point_right_clw_d3|point_right_clw_o1|point_right_clw_o2|point_right_clw_o3|point_right_clw_y1|point_right_clw_y2|point_right_clw_y3|point_right_clw_l1|point_right_clw_l2|point_right_clw_l3|point_right_clw_g1|point_right_clw_g2|point_right_clw_g3|point_right_clw_t1|point_right_clw_t2|point_right_clw_t3|point_right_clw_c1|point_right_clw_c2|point_right_clw_c3|point_right_clw_s1|point_right_clw_s2|point_right_clw_s3|point_right_clw_b1|point_right_clw_b2|point_right_clw_b3|point_right_clw_v1|point_right_clw_v2|point_right_clw_v3|point_right_clw_m1|point_right_clw_m2|point_right_clw_m3|point_right_clw_p1|point_right_clw_p2|point_right_clw_p3|point_right_clw_e1|point_right_clw_e2|point_right_clw_e3|point_right_clw_k1|point_right_clw_k2|point_right_clw_k3|fist_clw|fist_clw_r1|fist_clw_r2|fist_clw_r3|fist_clw_d1|fist_clw_d2|fist_clw_d3|fist_clw_o1|fist_clw_o2|fist_clw_o3|fist_clw_y1|fist_clw_y2|fist_clw_y3|fist_clw_l1|fist_clw_l2|fist_clw_l3|fist_clw_g1|fist_clw_g2|fist_clw_g3|fist_clw_t1|fist_clw_t2|fist_clw_t3|fist_clw_c1|fist_clw_c2|fist_clw_c3|fist_clw_s1|fist_clw_s2|fist_clw_s3|fist_clw_b1|fist_clw_b2|fist_clw_b3|fist_clw_v1|fist_clw_v2|fist_clw_v3|fist_clw_m1|fist_clw_m2|fist_clw_m3|fist_clw_p1|fist_clw_p2|fist_clw_p3|fist_clw_e1|fist_clw_e2|fist_clw_e3|fist_clw_k1|fist_clw_k2|fist_clw_k3|fist_facing_left_clw|fist_facing_left_clw_r1|fist_facing_left_clw_r2|fist_facing_left_clw_r3|fist_facing_left_clw_d1|fist_facing_left_clw_d2|fist_facing_left_clw_d3|fist_facing_left_clw_o1|fist_facing_left_clw_o2|fist_facing_left_clw_o3|fist_facing_left_clw_y1|fist_facing_left_clw_y2|fist_facing_left_clw_y3|fist_facing_left_clw_l1|fist_facing_left_clw_l2|fist_facing_left_clw_l3|fist_facing_left_clw_g1|fist_facing_left_clw_g2|fist_facing_left_clw_g3|fist_facing_left_clw_t1|fist_facing_left_clw_t2|fist_facing_left_clw_t3|fist_facing_left_clw_c1|fist_facing_left_clw_c2|fist_facing_left_clw_c3|fist_facing_left_clw_s1|fist_facing_left_clw_s2|fist_facing_left_clw_s3|fist_facing_left_clw_b1|fist_facing_left_clw_b2|fist_facing_left_clw_b3|fist_facing_left_clw_v1|fist_facing_left_clw_v2|fist_facing_left_clw_v3|fist_facing_left_clw_m1|fist_facing_left_clw_m2|fist_facing_left_clw_m3|fist_facing_left_clw_p1|fist_facing_left_clw_p2|fist_facing_left_clw_p3|fist_facing_left_clw_e1|fist_facing_left_clw_e2|fist_facing_left_clw_e3|fist_facing_left_clw_k1|fist_facing_left_clw_k2|fist_facing_left_clw_k3|fist_facing_right_clw|fist_facing_right_clw_r1|fist_facing_right_clw_r2|fist_facing_right_clw_r3|fist_facing_right_clw_d1|fist_facing_right_clw_d2|fist_facing_right_clw_d3|fist_facing_right_clw_o1|fist_facing_right_clw_o2|fist_facing_right_clw_o3|fist_facing_right_clw_y1|fist_facing_right_clw_y2|fist_facing_right_clw_y3|fist_facing_right_clw_l1|fist_facing_right_clw_l2|fist_facing_right_clw_l3|fist_facing_right_clw_g1|fist_facing_right_clw_g2|fist_facing_right_clw_g3|fist_facing_right_clw_t1|fist_facing_right_clw_t2|fist_facing_right_clw_t3|fist_facing_right_clw_c1|fist_facing_right_clw_c2|fist_facing_right_clw_c3|fist_facing_right_clw_s1|fist_facing_right_clw_s2|fist_facing_right_clw_s3|fist_facing_right_clw_b1|fist_facing_right_clw_b2|fist_facing_right_clw_b3|fist_facing_right_clw_v1|fist_facing_right_clw_v2|fist_facing_right_clw_v3|fist_facing_right_clw_m1|fist_facing_right_clw_m2|fist_facing_right_clw_m3|fist_facing_right_clw_p1|fist_facing_right_clw_p2|fist_facing_right_clw_p3|fist_facing_right_clw_e1|fist_facing_right_clw_e2|fist_facing_right_clw_e3|fist_facing_right_clw_k1|fist_facing_right_clw_k2|fist_facing_right_clw_k3|punch_clw|punch_clw_r1|punch_clw_r2|punch_clw_r3|punch_clw_d1|punch_clw_d2|punch_clw_d3|punch_clw_o1|punch_clw_o2|punch_clw_o3|punch_clw_y1|punch_clw_y2|punch_clw_y3|punch_clw_l1|punch_clw_l2|punch_clw_l3|punch_clw_g1|punch_clw_g2|punch_clw_g3|punch_clw_t1|punch_clw_t2|punch_clw_t3|punch_clw_c1|punch_clw_c2|punch_clw_c3|punch_clw_s1|punch_clw_s2|punch_clw_s3|punch_clw_b1|punch_clw_b2|punch_clw_b3|punch_clw_v1|punch_clw_v2|punch_clw_v3|punch_clw_m1|punch_clw_m2|punch_clw_m3|punch_clw_p1|punch_clw_p2|punch_clw_p3|punch_clw_e1|punch_clw_e2|punch_clw_e3|punch_clw_k1|punch_clw_k2|punch_clw_k3|ok_hand_clw|ok_hand_clw_r1|ok_hand_clw_r2|ok_hand_clw_r3|ok_hand_clw_d1|ok_hand_clw_d2|ok_hand_clw_d3|ok_hand_clw_o1|ok_hand_clw_o2|ok_hand_clw_o3|ok_hand_clw_y1|ok_hand_clw_y2|ok_hand_clw_y3|ok_hand_clw_l1|ok_hand_clw_l2|ok_hand_clw_l3|ok_hand_clw_g1|ok_hand_clw_g2|ok_hand_clw_g3|ok_hand_clw_t1|ok_hand_clw_t2|ok_hand_clw_t3|ok_hand_clw_c1|ok_hand_clw_c2|ok_hand_clw_c3|ok_hand_clw_s1|ok_hand_clw_s2|ok_hand_clw_s3|ok_hand_clw_b1|ok_hand_clw_b2|ok_hand_clw_b3|ok_hand_clw_v1|ok_hand_clw_v2|ok_hand_clw_v3|ok_hand_clw_m1|ok_hand_clw_m2|ok_hand_clw_m3|ok_hand_clw_p1|ok_hand_clw_p2|ok_hand_clw_p3|ok_hand_clw_e1|ok_hand_clw_e2|ok_hand_clw_e3|ok_hand_clw_k1|ok_hand_clw_k2|ok_hand_clw_k3|wave_clw|wave_clw_r1|wave_clw_r2|wave_clw_r3|wave_clw_d1|wave_clw_d2|wave_clw_d3|wave_clw_o1|wave_clw_o2|wave_clw_o3|wave_clw_y1|wave_clw_y2|wave_clw_y3|wave_clw_l1|wave_clw_l2|wave_clw_l3|wave_clw_g1|wave_clw_g2|wave_clw_g3|wave_clw_t1|wave_clw_t2|wave_clw_t3|wave_clw_c1|wave_clw_c2|wave_clw_c3|wave_clw_s1|wave_clw_s2|wave_clw_s3|wave_clw_b1|wave_clw_b2|wave_clw_b3|wave_clw_v1|wave_clw_v2|wave_clw_v3|wave_clw_m1|wave_clw_m2|wave_clw_m3|wave_clw_p1|wave_clw_p2|wave_clw_p3|wave_clw_e1|wave_clw_e2|wave_clw_e3|wave_clw_k1|wave_clw_k2|wave_clw_k3|clap_clw|clap_clw_r1|clap_clw_r2|clap_clw_r3|clap_clw_d1|clap_clw_d2|clap_clw_d3|clap_clw_o1|clap_clw_o2|clap_clw_o3|clap_clw_y1|clap_clw_y2|clap_clw_y3|clap_clw_l1|clap_clw_l2|clap_clw_l3|clap_clw_g1|clap_clw_g2|clap_clw_g3|clap_clw_t1|clap_clw_t2|clap_clw_t3|clap_clw_c1|clap_clw_c2|clap_clw_c3|clap_clw_s1|clap_clw_s2|clap_clw_s3|clap_clw_b1|clap_clw_b2|clap_clw_b3|clap_clw_v1|clap_clw_v2|clap_clw_v3|clap_clw_m1|clap_clw_m2|clap_clw_m3|clap_clw_p1|clap_clw_p2|clap_clw_p3|clap_clw_e1|clap_clw_e2|clap_clw_e3|clap_clw_k1|clap_clw_k2|clap_clw_k3|raised_hands_clw|raised_hands_clw_r1|raised_hands_clw_r2|raised_hands_clw_r3|raised_hands_clw_d1|raised_hands_clw_d2|raised_hands_clw_d3|raised_hands_clw_o1|raised_hands_clw_o2|raised_hands_clw_o3|raised_hands_clw_y1|raised_hands_clw_y2|raised_hands_clw_y3|raised_hands_clw_l1|raised_hands_clw_l2|raised_hands_clw_l3|raised_hands_clw_g1|raised_hands_clw_g2|raised_hands_clw_g3|raised_hands_clw_t1|raised_hands_clw_t2|raised_hands_clw_t3|raised_hands_clw_c1|raised_hands_clw_c2|raised_hands_clw_c3|raised_hands_clw_s1|raised_hands_clw_s2|raised_hands_clw_s3|raised_hands_clw_b1|raised_hands_clw_b2|raised_hands_clw_b3|raised_hands_clw_v1|raised_hands_clw_v2|raised_hands_clw_v3|raised_hands_clw_m1|raised_hands_clw_m2|raised_hands_clw_m3|raised_hands_clw_p1|raised_hands_clw_p2|raised_hands_clw_p3|raised_hands_clw_e1|raised_hands_clw_e2|raised_hands_clw_e3|raised_hands_clw_k1|raised_hands_clw_k2|raised_hands_clw_k3|open_hands_clw|open_hands_clw_r1|open_hands_clw_r2|open_hands_clw_r3|open_hands_clw_d1|open_hands_clw_d2|open_hands_clw_d3|open_hands_clw_o1|open_hands_clw_o2|open_hands_clw_o3|open_hands_clw_y1|open_hands_clw_y2|open_hands_clw_y3|open_hands_clw_l1|open_hands_clw_l2|open_hands_clw_l3|open_hands_clw_g1|open_hands_clw_g2|open_hands_clw_g3|open_hands_clw_t1|open_hands_clw_t2|open_hands_clw_t3|open_hands_clw_c1|open_hands_clw_c2|open_hands_clw_c3|open_hands_clw_s1|open_hands_clw_s2|open_hands_clw_s3|open_hands_clw_b1|open_hands_clw_b2|open_hands_clw_b3|open_hands_clw_v1|open_hands_clw_v2|open_hands_clw_v3|open_hands_clw_m1|open_hands_clw_m2|open_hands_clw_m3|open_hands_clw_p1|open_hands_clw_p2|open_hands_clw_p3|open_hands_clw_e1|open_hands_clw_e2|open_hands_clw_e3|open_hands_clw_k1|open_hands_clw_k2|open_hands_clw_k3|pray_clw|pray_clw_r1|pray_clw_r2|pray_clw_r3|pray_clw_d1|pray_clw_d2|pray_clw_d3|pray_clw_o1|pray_clw_o2|pray_clw_o3|pray_clw_y1|pray_clw_y2|pray_clw_y3|pray_clw_l1|pray_clw_l2|pray_clw_l3|pray_clw_g1|pray_clw_g2|pray_clw_g3|pray_clw_t1|pray_clw_t2|pray_clw_t3|pray_clw_c1|pray_clw_c2|pray_clw_c3|pray_clw_s1|pray_clw_s2|pray_clw_s3|pray_clw_b1|pray_clw_b2|pray_clw_b3|pray_clw_v1|pray_clw_v2|pray_clw_v3|pray_clw_m1|pray_clw_m2|pray_clw_m3|pray_clw_p1|pray_clw_p2|pray_clw_p3|pray_clw_e1|pray_clw_e2|pray_clw_e3|pray_clw_k1|pray_clw_k2|pray_clw_k3|writing_hand_clw|writing_hand_clw_r1|writing_hand_clw_r2|writing_hand_clw_r3|writing_hand_clw_d1|writing_hand_clw_d2|writing_hand_clw_d3|writing_hand_clw_o1|writing_hand_clw_o2|writing_hand_clw_o3|writing_hand_clw_y1|writing_hand_clw_y2|writing_hand_clw_y3|writing_hand_clw_l1|writing_hand_clw_l2|writing_hand_clw_l3|writing_hand_clw_g1|writing_hand_clw_g2|writing_hand_clw_g3|writing_hand_clw_t1|writing_hand_clw_t2|writing_hand_clw_t3|writing_hand_clw_c1|writing_hand_clw_c2|writing_hand_clw_c3|writing_hand_clw_s1|writing_hand_clw_s2|writing_hand_clw_s3|writing_hand_clw_b1|writing_hand_clw_b2|writing_hand_clw_b3|writing_hand_clw_v1|writing_hand_clw_v2|writing_hand_clw_v3|writing_hand_clw_m1|writing_hand_clw_m2|writing_hand_clw_m3|writing_hand_clw_p1|writing_hand_clw_p2|writing_hand_clw_p3|writing_hand_clw_e1|writing_hand_clw_e2|writing_hand_clw_e3|writing_hand_clw_k1|writing_hand_clw_k2|writing_hand_clw_k3|muscle_clw|muscle_clw_r1|muscle_clw_r2|muscle_clw_r3|muscle_clw_d1|muscle_clw_d2|muscle_clw_d3|muscle_clw_o1|muscle_clw_o2|muscle_clw_o3|muscle_clw_y1|muscle_clw_y2|muscle_clw_y3|muscle_clw_l1|muscle_clw_l2|muscle_clw_l3|muscle_clw_g1|muscle_clw_g2|muscle_clw_g3|muscle_clw_t1|muscle_clw_t2|muscle_clw_t3|muscle_clw_c1|muscle_clw_c2|muscle_clw_c3|muscle_clw_s1|muscle_clw_s2|muscle_clw_s3|muscle_clw_b1|muscle_clw_b2|muscle_clw_b3|muscle_clw_v1|muscle_clw_v2|muscle_clw_v3|muscle_clw_m1|muscle_clw_m2|muscle_clw_m3|muscle_clw_p1|muscle_clw_p2|muscle_clw_p3|muscle_clw_e1|muscle_clw_e2|muscle_clw_e3|muscle_clw_k1|muscle_clw_k2|muscle_clw_k3|handshake_clw|handshake_clw_r1|handshake_clw_r2|handshake_clw_r3|handshake_clw_d1|handshake_clw_d2|handshake_clw_d3|handshake_clw_o1|handshake_clw_o2|handshake_clw_o3|handshake_clw_y1|handshake_clw_y2|handshake_clw_y3|handshake_clw_l1|handshake_clw_l2|handshake_clw_l3|handshake_clw_g1|handshake_clw_g2|handshake_clw_g3|handshake_clw_t1|handshake_clw_t2|handshake_clw_t3|handshake_clw_c1|handshake_clw_c2|handshake_clw_c3|handshake_clw_s1|handshake_clw_s2|handshake_clw_s3|handshake_clw_b1|handshake_clw_b2|handshake_clw_b3|handshake_clw_v1|handshake_clw_v2|handshake_clw_v3|handshake_clw_m1|handshake_clw_m2|handshake_clw_m3|handshake_clw_p1|handshake_clw_p2|handshake_clw_p3|handshake_clw_e1|handshake_clw_e2|handshake_clw_e3|handshake_clw_k1|handshake_clw_k2|handshake_clw_k3|selfie_clw|selfie_clw_r1|selfie_clw_r2|selfie_clw_r3|selfie_clw_d1|selfie_clw_d2|selfie_clw_d3|selfie_clw_o1|selfie_clw_o2|selfie_clw_o3|selfie_clw_y1|selfie_clw_y2|selfie_clw_y3|selfie_clw_l1|selfie_clw_l2|selfie_clw_l3|selfie_clw_g1|selfie_clw_g2|selfie_clw_g3|selfie_clw_t1|selfie_clw_t2|selfie_clw_t3|selfie_clw_c1|selfie_clw_c2|selfie_clw_c3|selfie_clw_s1|selfie_clw_s2|selfie_clw_s3|selfie_clw_b1|selfie_clw_b2|selfie_clw_b3|selfie_clw_v1|selfie_clw_v2|selfie_clw_v3|selfie_clw_m1|selfie_clw_m2|selfie_clw_m3|selfie_clw_p1|selfie_clw_p2|selfie_clw_p3|selfie_clw_e1|selfie_clw_e2|selfie_clw_e3|selfie_clw_k1|selfie_clw_k2|selfie_clw_k3|nail_varnish_clw|nail_varnish_clw_r1|nail_varnish_clw_r2|nail_varnish_clw_r3|nail_varnish_clw_d1|nail_varnish_clw_d2|nail_varnish_clw_d3|nail_varnish_clw_o1|nail_varnish_clw_o2|nail_varnish_clw_o3|nail_varnish_clw_y1|nail_varnish_clw_y2|nail_varnish_clw_y3|nail_varnish_clw_l1|nail_varnish_clw_l2|nail_varnish_clw_l3|nail_varnish_clw_g1|nail_varnish_clw_g2|nail_varnish_clw_g3|nail_varnish_clw_t1|nail_varnish_clw_t2|nail_varnish_clw_t3|nail_varnish_clw_c1|nail_varnish_clw_c2|nail_varnish_clw_c3|nail_varnish_clw_s1|nail_varnish_clw_s2|nail_varnish_clw_s3|nail_varnish_clw_b1|nail_varnish_clw_b2|nail_varnish_clw_b3|nail_varnish_clw_v1|nail_varnish_clw_v2|nail_varnish_clw_v3|nail_varnish_clw_m1|nail_varnish_clw_m2|nail_varnish_clw_m3|nail_varnish_clw_p1|nail_varnish_clw_p2|nail_varnish_clw_p3|nail_varnish_clw_e1|nail_varnish_clw_e2|nail_varnish_clw_e3|nail_varnish_clw_k1|nail_varnish_clw_k2|nail_varnish_clw_k3|arms_in_the_air|arms_in_the_air_r1|arms_in_the_air_r2|arms_in_the_air_r3|arms_in_the_air_d1|arms_in_the_air_d2|arms_in_the_air_d3|arms_in_the_air_o1|arms_in_the_air_o2|arms_in_the_air_o3|arms_in_the_air_y1|arms_in_the_air_y2|arms_in_the_air_y3|arms_in_the_air_l1|arms_in_the_air_l2|arms_in_the_air_l3|arms_in_the_air_g1|arms_in_the_air_g2|arms_in_the_air_g3|arms_in_the_air_t1|arms_in_the_air_t2|arms_in_the_air_t3|arms_in_the_air_c1|arms_in_the_air_c2|arms_in_the_air_c3|arms_in_the_air_s1|arms_in_the_air_s2|arms_in_the_air_s3|arms_in_the_air_b1|arms_in_the_air_b2|arms_in_the_air_b3|arms_in_the_air_v1|arms_in_the_air_v2|arms_in_the_air_v3|arms_in_the_air_m1|arms_in_the_air_m2|arms_in_the_air_m3|arms_in_the_air_p1|arms_in_the_air_p2|arms_in_the_air_p3|arms_in_the_air_e1|arms_in_the_air_e2|arms_in_the_air_e3|arms_in_the_air_k1|arms_in_the_air_k2|arms_in_the_air_k3|arms_in_the_air_h1|arms_in_the_air_h2|arms_in_the_air_h3|arms_in_the_air_h4|arms_in_the_air_h5|arms_in_the_air_fe1|arms_in_the_air_ft1|arms_in_the_air_fk1|bow|bow_r1|bow_r2|bow_r3|bow_d1|bow_d2|bow_d3|bow_o1|bow_o2|bow_o3|bow_y1|bow_y2|bow_y3|bow_l1|bow_l2|bow_l3|bow_g1|bow_g2|bow_g3|bow_t1|bow_t2|bow_t3|bow_c1|bow_c2|bow_c3|bow_s1|bow_s2|bow_s3|bow_b1|bow_b2|bow_b3|bow_v1|bow_v2|bow_v3|bow_m1|bow_m2|bow_m3|bow_p1|bow_p2|bow_p3|bow_e1|bow_e2|bow_e3|bow_k1|bow_k2|bow_k3|bow_h1|bow_h2|bow_h3|bow_h4|bow_h5|bow_fe1|bow_ft1|bow_fk1|facepalm|facepalm_r1|facepalm_r2|facepalm_r3|facepalm_d1|facepalm_d2|facepalm_d3|facepalm_o1|facepalm_o2|facepalm_o3|facepalm_y1|facepalm_y2|facepalm_y3|facepalm_l1|facepalm_l2|facepalm_l3|facepalm_g1|facepalm_g2|facepalm_g3|facepalm_t1|facepalm_t2|facepalm_t3|facepalm_c1|facepalm_c2|facepalm_c3|facepalm_s1|facepalm_s2|facepalm_s3|facepalm_b1|facepalm_b2|facepalm_b3|facepalm_v1|facepalm_v2|facepalm_v3|facepalm_m1|facepalm_m2|facepalm_m3|facepalm_p1|facepalm_p2|facepalm_p3|facepalm_e1|facepalm_e2|facepalm_e3|facepalm_k1|facepalm_k2|facepalm_k3|facepalm_h1|facepalm_h2|facepalm_h3|facepalm_h4|facepalm_h5|facepalm_fe1|facepalm_ft1|facepalm_fk1|massage|massage_r1|massage_r2|massage_r3|massage_d1|massage_d2|massage_d3|massage_o1|massage_o2|massage_o3|massage_y1|massage_y2|massage_y3|massage_l1|massage_l2|massage_l3|massage_g1|massage_g2|massage_g3|massage_t1|massage_t2|massage_t3|massage_c1|massage_c2|massage_c3|massage_s1|massage_s2|massage_s3|massage_b1|massage_b2|massage_b3|massage_v1|massage_v2|massage_v3|massage_m1|massage_m2|massage_m3|massage_p1|massage_p2|massage_p3|massage_e1|massage_e2|massage_e3|massage_k1|massage_k2|massage_k3|massage_h1|massage_h2|massage_h3|massage_h4|massage_h5|massage_fe1|massage_ft1|massage_fk1|no_good|no_good_r1|no_good_r2|no_good_r3|no_good_d1|no_good_d2|no_good_d3|no_good_o1|no_good_o2|no_good_o3|no_good_y1|no_good_y2|no_good_y3|no_good_l1|no_good_l2|no_good_l3|no_good_g1|no_good_g2|no_good_g3|no_good_t1|no_good_t2|no_good_t3|no_good_c1|no_good_c2|no_good_c3|no_good_s1|no_good_s2|no_good_s3|no_good_b1|no_good_b2|no_good_b3|no_good_v1|no_good_v2|no_good_v3|no_good_m1|no_good_m2|no_good_m3|no_good_p1|no_good_p2|no_good_p3|no_good_e1|no_good_e2|no_good_e3|no_good_k1|no_good_k2|no_good_k3|no_good_h1|no_good_h2|no_good_h3|no_good_h4|no_good_h5|no_good_fe1|no_good_ft1|no_good_fk1|ok_gesture|ok_gesture_r1|ok_gesture_r2|ok_gesture_r3|ok_gesture_d1|ok_gesture_d2|ok_gesture_d3|ok_gesture_o1|ok_gesture_o2|ok_gesture_o3|ok_gesture_y1|ok_gesture_y2|ok_gesture_y3|ok_gesture_l1|ok_gesture_l2|ok_gesture_l3|ok_gesture_g1|ok_gesture_g2|ok_gesture_g3|ok_gesture_t1|ok_gesture_t2|ok_gesture_t3|ok_gesture_c1|ok_gesture_c2|ok_gesture_c3|ok_gesture_s1|ok_gesture_s2|ok_gesture_s3|ok_gesture_b1|ok_gesture_b2|ok_gesture_b3|ok_gesture_v1|ok_gesture_v2|ok_gesture_v3|ok_gesture_m1|ok_gesture_m2|ok_gesture_m3|ok_gesture_p1|ok_gesture_p2|ok_gesture_p3|ok_gesture_e1|ok_gesture_e2|ok_gesture_e3|ok_gesture_k1|ok_gesture_k2|ok_gesture_k3|ok_gesture_h1|ok_gesture_h2|ok_gesture_h3|ok_gesture_h4|ok_gesture_h5|ok_gesture_fe1|ok_gesture_ft1|ok_gesture_fk1|person_frowning|person_frowning_r1|person_frowning_r2|person_frowning_r3|person_frowning_d1|person_frowning_d2|person_frowning_d3|person_frowning_o1|person_frowning_o2|person_frowning_o3|person_frowning_y1|person_frowning_y2|person_frowning_y3|person_frowning_l1|person_frowning_l2|person_frowning_l3|person_frowning_g1|person_frowning_g2|person_frowning_g3|person_frowning_t1|person_frowning_t2|person_frowning_t3|person_frowning_c1|person_frowning_c2|person_frowning_c3|person_frowning_s1|person_frowning_s2|person_frowning_s3|person_frowning_b1|person_frowning_b2|person_frowning_b3|person_frowning_v1|person_frowning_v2|person_frowning_v3|person_frowning_m1|person_frowning_m2|person_frowning_m3|person_frowning_p1|person_frowning_p2|person_frowning_p3|person_frowning_e1|person_frowning_e2|person_frowning_e3|person_frowning_k1|person_frowning_k2|person_frowning_k3|person_frowning_h1|person_frowning_h2|person_frowning_h3|person_frowning_h4|person_frowning_h5|person_frowning_fe1|person_frowning_ft1|person_frowning_fk1|person_pouting|person_pouting_r1|person_pouting_r2|person_pouting_r3|person_pouting_d1|person_pouting_d2|person_pouting_d3|person_pouting_o1|person_pouting_o2|person_pouting_o3|person_pouting_y1|person_pouting_y2|person_pouting_y3|person_pouting_l1|person_pouting_l2|person_pouting_l3|person_pouting_g1|person_pouting_g2|person_pouting_g3|person_pouting_t1|person_pouting_t2|person_pouting_t3|person_pouting_c1|person_pouting_c2|person_pouting_c3|person_pouting_s1|person_pouting_s2|person_pouting_s3|person_pouting_b1|person_pouting_b2|person_pouting_b3|person_pouting_v1|person_pouting_v2|person_pouting_v3|person_pouting_m1|person_pouting_m2|person_pouting_m3|person_pouting_p1|person_pouting_p2|person_pouting_p3|person_pouting_e1|person_pouting_e2|person_pouting_e3|person_pouting_k1|person_pouting_k2|person_pouting_k3|person_pouting_h1|person_pouting_h2|person_pouting_h3|person_pouting_h4|person_pouting_h5|person_pouting_fe1|person_pouting_ft1|person_pouting_fk1|raising_hand|raising_hand_r1|raising_hand_r2|raising_hand_r3|raising_hand_d1|raising_hand_d2|raising_hand_d3|raising_hand_o1|raising_hand_o2|raising_hand_o3|raising_hand_y1|raising_hand_y2|raising_hand_y3|raising_hand_l1|raising_hand_l2|raising_hand_l3|raising_hand_g1|raising_hand_g2|raising_hand_g3|raising_hand_t1|raising_hand_t2|raising_hand_t3|raising_hand_c1|raising_hand_c2|raising_hand_c3|raising_hand_s1|raising_hand_s2|raising_hand_s3|raising_hand_b1|raising_hand_b2|raising_hand_b3|raising_hand_v1|raising_hand_v2|raising_hand_v3|raising_hand_m1|raising_hand_m2|raising_hand_m3|raising_hand_p1|raising_hand_p2|raising_hand_p3|raising_hand_e1|raising_hand_e2|raising_hand_e3|raising_hand_k1|raising_hand_k2|raising_hand_k3|raising_hand_h1|raising_hand_h2|raising_hand_h3|raising_hand_h4|raising_hand_h5|raising_hand_fe1|raising_hand_ft1|raising_hand_fk1|shrug|shrug_r1|shrug_r2|shrug_r3|shrug_d1|shrug_d2|shrug_d3|shrug_o1|shrug_o2|shrug_o3|shrug_y1|shrug_y2|shrug_y3|shrug_l1|shrug_l2|shrug_l3|shrug_g1|shrug_g2|shrug_g3|shrug_t1|shrug_t2|shrug_t3|shrug_c1|shrug_c2|shrug_c3|shrug_s1|shrug_s2|shrug_s3|shrug_b1|shrug_b2|shrug_b3|shrug_v1|shrug_v2|shrug_v3|shrug_m1|shrug_m2|shrug_m3|shrug_p1|shrug_p2|shrug_p3|shrug_e1|shrug_e2|shrug_e3|shrug_k1|shrug_k2|shrug_k3|shrug_h1|shrug_h2|shrug_h3|shrug_h4|shrug_h5|shrug_fe1|shrug_ft1|shrug_fk1|tipping_hand|tipping_hand_r1|tipping_hand_r2|tipping_hand_r3|tipping_hand_d1|tipping_hand_d2|tipping_hand_d3|tipping_hand_o1|tipping_hand_o2|tipping_hand_o3|tipping_hand_y1|tipping_hand_y2|tipping_hand_y3|tipping_hand_l1|tipping_hand_l2|tipping_hand_l3|tipping_hand_g1|tipping_hand_g2|tipping_hand_g3|tipping_hand_t1|tipping_hand_t2|tipping_hand_t3|tipping_hand_c1|tipping_hand_c2|tipping_hand_c3|tipping_hand_s1|tipping_hand_s2|tipping_hand_s3|tipping_hand_b1|tipping_hand_b2|tipping_hand_b3|tipping_hand_v1|tipping_hand_v2|tipping_hand_v3|tipping_hand_m1|tipping_hand_m2|tipping_hand_m3|tipping_hand_p1|tipping_hand_p2|tipping_hand_p3|tipping_hand_e1|tipping_hand_e2|tipping_hand_e3|tipping_hand_k1|tipping_hand_k2|tipping_hand_k3|tipping_hand_h1|tipping_hand_h2|tipping_hand_h3|tipping_hand_h4|tipping_hand_h5|tipping_hand_fe1|tipping_hand_ft1|tipping_hand_fk1|haircut|peach|eggplant|melon|pineapple|red_apple|green_apple|orange|pear|watermelon|cherry|lemon|strawberry|banana|cooking|bento|curry_rice|dango|meat_drumstick|meat_on_bone|onigiri|rice|senbei|sushi|ice_cream|shaved_ice|oden|lollipop|birthday_cake|shortcake|donut|candy|knife_and_fork|plate|matcha_tea|hot_drink|milk|cup_with_straw|sake|tropical_drink|wine|martini|tumbler_glass|beer|beers|cannabis_leaf|rainbow_flag|transgender_flag|genderqueer_flag|genderfluid_flag|bigender_flag|nonbinary_flag|demigirl_flag|demiguy_flag|deminonbinary_flag|agender_flag|androgyne_flag|neutrois_flag|bisexual_flag|pansexual_flag|polysexual_flag|omnisexual_flag|polyamory_flag|asexual_flag|demisexual_flag|aromantic_flag|quoiromantic_flag|lesbian_flag|lipstick_lesbian_flag|enbian_flag|bear_flag|leather_flag|intersex_flag|lunaric_flag|mercuric_flag|solaric_flag|stellaric_flag|pride_100|furry_pride|pink_triangle|black_triangle|bisexual_triangles|labrys_symbol|lambda|two_female_symbols|two_male_symbols|transgender_mercury_symbol|transgender_symbol|neuter_symbol|male_female_symbol|androgyne_symbol|gay|so_gay|queer|ace_sign|aro_sign|nb|female_symbol|male_symbol|female_and_male_symbol|palm_tree|evergreen_tree|cactus|christmas_tree|rose|maple_leaf|sheaf_of_rice|sun|cloud|sun_behind_small_cloud|sun_behind_cloud|sun_behind_large_cloud|sun_cloud_rain|rain|lightning|lightning_rain|snow|sun_face|water_drop|sweat_drops|lightning_bolt|snowflake|rainbow|umbrella_with_rain|earth_americas|earth_asia_oceania|earth_emea|earth_pacific|earth_arctic|earth_antarctic|new_moon|full_moon|gibbous_moon_1|gibbous_moon_2|half_moon_1|half_moon_2|crescent_moon_1|crescent_moon_2|crescent|new_moon_face|full_moon_face|moon_crescent_face_left|moon_crescent_face_right|star|half_star|empty_star|shining_star|sparkles|dizzy|shooting_star|fire|bang|dash|phone|phone_with_arrow|phone_vibrate|phone_off|watch|laptop|computer|computer_mouse|trackball|keyboard|printer|fax_machine|landline_phone|phone_receiver|pager|tv|radio|speaker|projector|gamepad|arcade_stick|joystick|vr_headset|camera|camera_with_flash|camcorder|movie_camera|microphone|stylus|level_slider|control_knobs|cd|dvd|minidisc|floppy_disk|cassette|vhs|lp|film_frames|battery|crt|crt_blue_screen|crt_green_lines|crt_noise|crt_prompt|crt_test_pattern|page|page_with_pencil|bookmark|curled_page|folder|open_folder|bar_chart|decreasing_graph|increasing_graph|inbox|outbox|envelope|envelope_with_arrow|incoming_envelope|email|love_letter|closed_mailbox|closed_mailbox_with_no_mail|mailbox|mailbox_with_no_mail|spiral_notebook|date|calendar|calendar_spiral|red_book|green_book|blue_book|yellow_book|magnifying_glass_left|magnifying_glass_right|paperclip|pen|pencil|triangle_ruler|green_money|yellow_money|pink_money|purple_money|moneybag|credit_card|bath|bath_with_person|toilet_paper|candle|brick|wrench|firecracker|bomb|scales|capsule|microscope|balloon|tada|confetti_ball|d4|d6|d8|d10|d12|d20|hanafuda_card|artist_palette|broadsword|zweihander|rapier|sabre|katana|european_battle_axe|glaive|great_axe|halberd|tomahawk|mace|flail|war_hammer|bow_and_arrow|crossbow|arrow|shuriken|magic_wand|red_potion|yellow_potion|green_potion|blue_potion|purple_potion|pink_potion|oil_lamp|crystal_ball|rune_stones|pentacle|spellbook|tarot_cup|tarot_pentacle|tarot_sword|tarot_wand|bone|coffin|glowstick|hole|adult|adult_r1|adult_r2|adult_r3|adult_d1|adult_d2|adult_d3|adult_o1|adult_o2|adult_o3|adult_y1|adult_y2|adult_y3|adult_l1|adult_l2|adult_l3|adult_g1|adult_g2|adult_g3|adult_t1|adult_t2|adult_t3|adult_c1|adult_c2|adult_c3|adult_s1|adult_s2|adult_s3|adult_b1|adult_b2|adult_b3|adult_v1|adult_v2|adult_v3|adult_m1|adult_m2|adult_m3|adult_p1|adult_p2|adult_p3|adult_e1|adult_e2|adult_e3|adult_k1|adult_k2|adult_k3|adult_h1|adult_h2|adult_h3|adult_h4|adult_h5|adult_fe1|adult_ft1|adult_fk1|dark_elf|demon|elf|goblin|half_demon|oni|orc|troll|bugbear|kobold|minotaur|fish_person|merperson|coyote|fox|jackal|wolf|lion_with_mane|lion_without_mane|tiger|snow_leopard|lynx|cheetah|jaguar|leopard|hyena|bear|ram|rat|deer_with_antlers|deer_without_antlers|mouse|opossum|otter|panda|rabbit|raccoon|red_panda|boar|skunk|squirrel|bat|blue_jay|crow|dove|duck|eagle|owl|parrot|penguin|pigeon|rooster|crane|peacock|pelican|toucan|snake|western_dragon|eastern_dragon|shark|dolphin|puffer_fish|turtle|spider|gryphon|slime|eye|ear|ear_r1|ear_r2|ear_r3|ear_d1|ear_d2|ear_d3|ear_o1|ear_o2|ear_o3|ear_y1|ear_y2|ear_y3|ear_l1|ear_l2|ear_l3|ear_g1|ear_g2|ear_g3|ear_t1|ear_t2|ear_t3|ear_c1|ear_c2|ear_c3|ear_s1|ear_s2|ear_s3|ear_b1|ear_b2|ear_b3|ear_v1|ear_v2|ear_v3|ear_m1|ear_m2|ear_m3|ear_p1|ear_p2|ear_p3|ear_e1|ear_e2|ear_e3|ear_k1|ear_k2|ear_k3|ear_h1|ear_h2|ear_h3|ear_h4|ear_h5|ear_fe1|ear_ft1|ear_fk1|pointed_ear|pointed_ear_r1|pointed_ear_r2|pointed_ear_r3|pointed_ear_d1|pointed_ear_d2|pointed_ear_d3|pointed_ear_o1|pointed_ear_o2|pointed_ear_o3|pointed_ear_y1|pointed_ear_y2|pointed_ear_y3|pointed_ear_l1|pointed_ear_l2|pointed_ear_l3|pointed_ear_g1|pointed_ear_g2|pointed_ear_g3|pointed_ear_t1|pointed_ear_t2|pointed_ear_t3|pointed_ear_c1|pointed_ear_c2|pointed_ear_c3|pointed_ear_s1|pointed_ear_s2|pointed_ear_s3|pointed_ear_b1|pointed_ear_b2|pointed_ear_b3|pointed_ear_v1|pointed_ear_v2|pointed_ear_v3|pointed_ear_m1|pointed_ear_m2|pointed_ear_m3|pointed_ear_p1|pointed_ear_p2|pointed_ear_p3|pointed_ear_e1|pointed_ear_e2|pointed_ear_e3|pointed_ear_k1|pointed_ear_k2|pointed_ear_k3|pointed_ear_h1|pointed_ear_h2|pointed_ear_h3|pointed_ear_h4|pointed_ear_h5|pointed_ear_fe1|pointed_ear_ft1|pointed_ear_fk1|long_pointed_ear|long_pointed_ear_r1|long_pointed_ear_r2|long_pointed_ear_r3|long_pointed_ear_d1|long_pointed_ear_d2|long_pointed_ear_d3|long_pointed_ear_o1|long_pointed_ear_o2|long_pointed_ear_o3|long_pointed_ear_y1|long_pointed_ear_y2|long_pointed_ear_y3|long_pointed_ear_l1|long_pointed_ear_l2|long_pointed_ear_l3|long_pointed_ear_g1|long_pointed_ear_g2|long_pointed_ear_g3|long_pointed_ear_t1|long_pointed_ear_t2|long_pointed_ear_t3|long_pointed_ear_c1|long_pointed_ear_c2|long_pointed_ear_c3|long_pointed_ear_s1|long_pointed_ear_s2|long_pointed_ear_s3|long_pointed_ear_b1|long_pointed_ear_b2|long_pointed_ear_b3|long_pointed_ear_v1|long_pointed_ear_v2|long_pointed_ear_v3|long_pointed_ear_m1|long_pointed_ear_m2|long_pointed_ear_m3|long_pointed_ear_p1|long_pointed_ear_p2|long_pointed_ear_p3|long_pointed_ear_e1|long_pointed_ear_e2|long_pointed_ear_e3|long_pointed_ear_k1|long_pointed_ear_k2|long_pointed_ear_k3|long_pointed_ear_h1|long_pointed_ear_h2|long_pointed_ear_h3|long_pointed_ear_h4|long_pointed_ear_h5|long_pointed_ear_fe1|long_pointed_ear_ft1|long_pointed_ear_fk1|spider_web|bust_in_silhouette|2_busts_in_silhouette|paw_print|paws|red_heart|orange_heart|yellow_heart|green_heart|blue_heart|purple_heart|black_heart|sparkling_heart|broken_heart|beating_heart|heart_arrow|heart_ribbon|heart_exclamation_mark|growing_heart|two_hearts|two_hearts_orbit|empty_heart|half_heart|awoo|dont_awoo|battery_empty|battery_low|battery_medium|battery_full|privacy|dont_at_me|hp|mp|pp|xp|black_flag|white_flag|triangular_flag|finish_flag|crossed_flags|pirate_flag|toilet|wc|potable_water|wheelchair|litter_in_bin|info|metro_sign|atm|cinema|parking|sos|18_plus|cross|no_entry|no|stop_sign|100|8_asterisk|8_star|chart|green_tick|green_cross|diamond_with_dot|circle|staff_of_asclepius|globe|sparkle|spiral|zzz|anger_symbol|name_badge|tick_box|radio_button|aries|taurus|gemini|cancer|leo|virgo|libra|scorpio|sagittarius|capricorn|aquarius|pisces|bargain|congratulations|secret|passing_grade|no_vacancy|discount|prohibited|blood_type_a|blood_type_ab|blood_type_b|blood_type_o|month|free_of_charge|request|open_for_business|not_free|acceptable|reserved|beginner|sa|vacancy|koko|vs|ng|ok|up|cool|new|free|arrow_up|arrow_down|arrow_left|arrow_right|arrow_up_left|arrow_up_right|arrow_down_left|arrow_down_right|arrow_up_down|arrow_left_right|arrow_curve_up|arrow_curve_down|arrow_curve_left|arrow_curve_right|arrows_clockwise|back|end|on_arrow|soon|top|arrows_counterclockwise|plus|minus|multiply|divide|tilde|wavy_dash|loop|double_loop|tick|music_notes|music_note|red_exclamation_mark|gray_exclamation_mark|red_question_mark|gray_question_mark|exclamation_exclamation|exclamation_question|speech_bubble|eye_speech_bubble|thought_bubble|spiky_speech_bubble|speaker_low_volume|speaker_medium_volume|speaker_loud_volume|speaker_muted|0|1|2|3|4|5|6|7|8|9|10|asterisk|hash|cl|abc|latin_lowercase|latin_uppercase|numbers|special_characters|signal|low_brightness|high_brightness|play|reverse|play_up|play_down|play_pause|pause|stop|record|fast_down|fast_up|fast_forward|rewind|skip_back|skip_forward|eject|repeat|repeat_once|shuffle|large_black_square|large_white_square|medium_black_square|medium_white_square|medium_small_black_square|medium_small_white_square|small_black_square|small_white_square|black_circle|white_circle|black_square_button|white_square_button|blue_circle|red_circle|large_orange_diamond|large_blue_diamond|small_orange_diamond|small_blue_diamond|red_upward_triangle|red_downward_triangle|1_00|2_00|3_00|4_00|5_00|6_00|7_00|8_00|9_00|10_00|11_00|12_00|1_30|2_30|3_30|4_30|5_30|6_30|7_30|8_30|9_30|10_30|11_30|12_30|bus|trolleybus|fire_engine|traffic_light_vertical|traffic_light_horizontal|aerial_tramway|mountain_tramway|suspension_railway|railway_car|tram_car|monorail|light_rail|high_speed_train|bullet_train|metro|train|tram|station|airplane|airplane_departure|airplane_arrival|mount_fuji|mountain|snowy_mountain|volcano|statue_of_liberty|tokyo_tower|beach|desert_island|beach_umbrella|world_map|school|factory|shinto_shrine|cityscape|sunset_city|dusk_city|bridge_at_night|fireworks|sparkler|night_with_stars|milky_way|rocket|color_modifier_r1|color_modifier_r2|color_modifier_r3|color_modifier_d1|color_modifier_d2|color_modifier_d3|color_modifier_o1|color_modifier_o2|color_modifier_o3|color_modifier_y1|color_modifier_y2|color_modifier_y3|color_modifier_l1|color_modifier_l2|color_modifier_l3|color_modifier_g1|color_modifier_g2|color_modifier_g3|color_modifier_t1|color_modifier_t2|color_modifier_t3|color_modifier_c1|color_modifier_c2|color_modifier_c3|color_modifier_s1|color_modifier_s2|color_modifier_s3|color_modifier_b1|color_modifier_b2|color_modifier_b3|color_modifier_v1|color_modifier_v2|color_modifier_v3|color_modifier_m1|color_modifier_m2|color_modifier_m3|color_modifier_p1|color_modifier_p2|color_modifier_p3|color_modifier_e1|color_modifier_e2|color_modifier_e3|color_modifier_k1|color_modifier_k2|color_modifier_k3|color_modifier_h1|color_modifier_h2|color_modifier_h3|color_modifier_h4|color_modifier_h5|paw_hand_modifier|claw_hand_modifier|undefined_character|0_char|1_char|2_char|3_char|4_char|5_char|6_char|7_char|8_char|9_char|asterisk_char|hash_char|enclosing_keycap|speech_bubble_left|graduation_cap):"
- var reAll = RegExp("^("+re+"){0,5}$", "g")
- var repl = replacer
- if (reAll.test(str)) {
- repl = replacer_jumbo
- }
- return str.replace(RegExp(re, "g"), repl);
- }
-
- function replacer(match, p1, offset, string) {
- return replacer_helper(match, p1, offset, string, 32)
- }
-
- function replacer_jumbo(match, p1, offset, string) {
- return replacer_helper(match, p1, offset, string, 48)
- }
-
- function replacer_helper(match, p1, offset, string, size) {
- //return ":"+p1+":"
- return ":"+p1+":"
- }
-}())
\ No newline at end of file
diff --git a/qml/fonts/Twemoji.js b/qml/fonts/Twemoji.js
deleted file mode 100644
index ebedca41..00000000
--- a/qml/fonts/Twemoji.js
+++ /dev/null
@@ -1,568 +0,0 @@
-/*jslint indent: 2, browser: true, bitwise: true, plusplus: true */
-var twemoji = (function (
- /*! Copyright Twitter Inc. and other contributors. Licensed under MIT *//*
- https://github.com/twitter/twemoji/blob/gh-pages/LICENSE
- */
-
- // WARNING: this file is generated automatically via
- // `node twemoji-generator.js`
- // please update its `createTwemoji` function
- // at the bottom of the same file instead.
-
-) {
- 'use strict';
-
- /*jshint maxparams:4 */
-
- var
- // the exported module object
- twemoji = {
-
-
- /////////////////////////
- // properties //
- /////////////////////////
-
- // default assets url, by default will be Twitter Inc. CDN
- base: 'https://twemoji.maxcdn.com/2/',
-
- // default assets file extensions, by default '.png'
- ext: '.png',
-
- // default assets/folder size, by default "72x72"
- // available via Twitter CDN: 72
- size: '72x72',
-
- // default class name, by default 'emoji'
- className: 'emoji',
-
- // basic utilities / helpers to convert code points
- // to JavaScript surrogates and vice versa
- convert: {
-
- /**
- * Given an HEX codepoint, returns UTF16 surrogate pairs.
- *
- * @param string generic codepoint, i.e. '1F4A9'
- * @return string codepoint transformed into utf16 surrogates pair,
- * i.e. \uD83D\uDCA9
- *
- * @example
- * twemoji.convert.fromCodePoint('1f1e8');
- * // "\ud83c\udde8"
- *
- * '1f1e8-1f1f3'.split('-').map(twemoji.convert.fromCodePoint).join('')
- * // "\ud83c\udde8\ud83c\uddf3"
- */
- fromCodePoint: fromCodePoint,
-
- /**
- * Given UTF16 surrogate pairs, returns the equivalent HEX codepoint.
- *
- * @param string generic utf16 surrogates pair, i.e. \uD83D\uDCA9
- * @param string optional separator for double code points, default='-'
- * @return string utf16 transformed into codepoint, i.e. '1F4A9'
- *
- * @example
- * twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3');
- * // "1f1e8-1f1f3"
- *
- * twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3', '~');
- * // "1f1e8~1f1f3"
- */
- toCodePoint: toCodePoint
- },
-
-
- /////////////////////////
- // methods //
- /////////////////////////
-
- /**
- * User first: used to remove missing images
- * preserving the original text intent when
- * a fallback for network problems is desired.
- * Automatically added to Image nodes via DOM
- * It could be recycled for string operations via:
- * $('img.emoji').on('error', twemoji.onerror)
- */
- onerror: function onerror() {
- if (this.parentNode) {
- this.parentNode.replaceChild(createText(this.alt, false), this);
- }
- },
-
- /**
- * Main method/logic to generate either tags or HTMLImage nodes.
- * "emojify" a generic text or DOM Element.
- *
- * @overloads
- *
- * String replacement for `innerHTML` or server side operations
- * twemoji.parse(string);
- * twemoji.parse(string, Function);
- * twemoji.parse(string, Object);
- *
- * HTMLElement tree parsing for safer operations over existing DOM
- * twemoji.parse(HTMLElement);
- * twemoji.parse(HTMLElement, Function);
- * twemoji.parse(HTMLElement, Object);
- *
- * @param string|HTMLElement the source to parse and enrich with emoji.
- *
- * string replace emoji matches with tags.
- * Mainly used to inject emoji via `innerHTML`
- * It does **not** parse the string or validate it,
- * it simply replaces found emoji with a tag.
- * NOTE: be sure this won't affect security.
- *
- * HTMLElement walk through the DOM tree and find emoji
- * that are inside **text node only** (nodeType === 3)
- * Mainly used to put emoji in already generated DOM
- * without compromising surrounding nodes and
- * **avoiding** the usage of `innerHTML`.
- * NOTE: Using DOM elements instead of strings should
- * improve security without compromising too much
- * performance compared with a less safe `innerHTML`.
- *
- * @param Function|Object [optional]
- * either the callback that will be invoked or an object
- * with all properties to use per each found emoji.
- *
- * Function if specified, this will be invoked per each emoji
- * that has been found through the RegExp except
- * those follwed by the invariant \uFE0E ("as text").
- * Once invoked, parameters will be:
- *
- * iconId:string the lower case HEX code point
- * i.e. "1f4a9"
- *
- * options:Object all info for this parsing operation
- *
- * variant:char the optional \uFE0F ("as image")
- * variant, in case this info
- * is anyhow meaningful.
- * By default this is ignored.
- *
- * If such callback will return a falsy value instead
- * of a valid `src` to use for the image, nothing will
- * actually change for that specific emoji.
- *
- *
- * Object if specified, an object containing the following properties
- *
- * callback Function the callback to invoke per each found emoji.
- * base string the base url, by default twemoji.base
- * ext string the image extension, by default twemoji.ext
- * size string the assets size, by default twemoji.size
- *
- * @example
- *
- * twemoji.parse("I \u2764\uFE0F emoji!");
- * // I emoji!
- *
- *
- * twemoji.parse("I \u2764\uFE0F emoji!", function(iconId, options) {
- * return '/assets/' + iconId + '.gif';
- * });
- * // I emoji!
- *
- *
- * twemoji.parse("I \u2764\uFE0F emoji!", {
- * size: 72,
- * callback: function(iconId, options) {
- * return '/assets/' + options.size + '/' + iconId + options.ext;
- * }
- * });
- * // I emoji!
- *
- */
- parse: parse,
-
- /**
- * Given a string, invokes the callback argument
- * per each emoji found in such string.
- * This is the most raw version used by
- * the .parse(string) method itself.
- *
- * @param string generic string to parse
- * @param Function a generic callback that will be
- * invoked to replace the content.
- * This calback wil receive standard
- * String.prototype.replace(str, callback)
- * arguments such:
- * callback(
- * rawText, // the emoji match
- * );
- *
- * and others commonly received via replace.
- */
- replace: replace,
-
- /**
- * Simplify string tests against emoji.
- *
- * @param string some text that might contain emoji
- * @return boolean true if any emoji was found, false otherwise.
- *
- * @example
- *
- * if (twemoji.test(someContent)) {
- * console.log("emoji All The Things!");
- * }
- */
- test: test
- },
-
- // used to escape HTML special chars in attributes
- escaper = {
- '&': '&',
- '<': '<',
- '>': '>',
- "'": ''',
- '"': '"'
- },
-
- // RegExp based on emoji's official Unicode standards
- // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
- re = /(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddb0-\uddb3])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[\u0023\u002a\u0030-\u0039]\ufe0f?\u20e3|(?:[\u00a9\u00ae\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef9]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd70\udd73-\udd76\udd7a\udd7c-\udda2\uddb4\uddb7\uddc0-\uddc2\uddd0\uddde-\uddff]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,
-
- // avoid runtime RegExp creation for not so smart,
- // not JIT based, and old browsers / engines
- UFE0Fg = /\uFE0F/g,
-
- // avoid using a string literal like '\u200D' here because minifiers expand it inline
- U200D = String.fromCharCode(0x200D),
-
- // used to find HTML special chars in attributes
- rescaper = /[&<>'"]/g,
-
- // nodes with type 1 which should **not** be parsed
- shouldntBeParsed = /^(?:iframe|noframes|noscript|script|select|style|textarea)$/,
-
- // just a private shortcut
- fromCharCode = String.fromCharCode;
-
- return twemoji;
-
-
- /////////////////////////
- // private functions //
- // declaration //
- /////////////////////////
-
- /**
- * Shortcut to create text nodes
- * @param string text used to create DOM text node
- * @return Node a DOM node with that text
- */
- function createText(text, clean) {
- return document.createTextNode(clean ? text.replace(UFE0Fg, '') : text);
- }
-
- /**
- * Utility function to escape html attribute text
- * @param string text use in HTML attribute
- * @return string text encoded to use in HTML attribute
- */
- function escapeHTML(s) {
- return s.replace(rescaper, replacer);
- }
-
- /**
- * Default callback used to generate emoji src
- * based on Twitter CDN
- * @param string the emoji codepoint string
- * @param string the default size to use, i.e. "36x36"
- * @return string the image source to use
- */
- function defaultImageSrcGenerator(icon, options) {
- return ''.concat(options.base, options.size, '/', icon, options.ext);
- }
-
- /**
- * Given a generic DOM nodeType 1, walk through all children
- * and store every nodeType 3 (#text) found in the tree.
- * @param Element a DOM Element with probably some text in it
- * @param Array the list of previously discovered text nodes
- * @return Array same list with new discovered nodes, if any
- */
- function grabAllTextNodes(node, allText) {
- var
- childNodes = node.childNodes,
- length = childNodes.length,
- subnode,
- nodeType;
- while (length--) {
- subnode = childNodes[length];
- nodeType = subnode.nodeType;
- // parse emoji only in text nodes
- if (nodeType === 3) {
- // collect them to process emoji later
- allText.push(subnode);
- }
- // ignore all nodes that are not type 1, that are svg, or that
- // should not be parsed as script, style, and others
- else if (nodeType === 1 && !('ownerSVGElement' in subnode) &&
- !shouldntBeParsed.test(subnode.nodeName.toLowerCase())) {
- grabAllTextNodes(subnode, allText);
- }
- }
- return allText;
- }
-
- /**
- * Used to both remove the possible variant
- * and to convert utf16 into code points.
- * If there is a zero-width-joiner (U+200D), leave the variants in.
- * @param string the raw text of the emoji match
- * @return string the code point
- */
- function grabTheRightIcon(rawText) {
- // if variant is present as \uFE0F
- return toCodePoint(rawText.indexOf(U200D) < 0 ?
- rawText.replace(UFE0Fg, '') :
- rawText
- );
- }
-
- /**
- * DOM version of the same logic / parser:
- * emojify all found sub-text nodes placing images node instead.
- * @param Element generic DOM node with some text in some child node
- * @param Object options containing info about how to parse
- *
- * .callback Function the callback to invoke per each found emoji.
- * .base string the base url, by default twemoji.base
- * .ext string the image extension, by default twemoji.ext
- * .size string the assets size, by default twemoji.size
- *
- * @return Element same generic node with emoji in place, if any.
- */
- function parseNode(node, options) {
- var
- allText = grabAllTextNodes(node, []),
- length = allText.length,
- attrib,
- attrname,
- modified,
- fragment,
- subnode,
- text,
- match,
- i,
- index,
- img,
- rawText,
- iconId,
- src;
- while (length--) {
- modified = false;
- fragment = document.createDocumentFragment();
- subnode = allText[length];
- text = subnode.nodeValue;
- i = 0;
- while ((match = re.exec(text))) {
- index = match.index;
- if (index !== i) {
- fragment.appendChild(
- createText(text.slice(i, index), true)
- );
- }
- rawText = match[0];
- iconId = grabTheRightIcon(rawText);
- i = index + rawText.length;
- src = options.callback(iconId, options);
- if (iconId && src) {
- img = new Image();
- img.onerror = options.onerror;
- img.setAttribute('draggable', 'false');
- attrib = options.attributes(rawText, iconId);
- for (attrname in attrib) {
- if (
- attrib.hasOwnProperty(attrname) &&
- // don't allow any handlers to be set + don't allow overrides
- attrname.indexOf('on') !== 0 &&
- !img.hasAttribute(attrname)
- ) {
- img.setAttribute(attrname, attrib[attrname]);
- }
- }
- img.className = options.className;
- img.alt = rawText;
- img.src = src;
- modified = true;
- fragment.appendChild(img);
- }
- if (!img) fragment.appendChild(createText(rawText, false));
- img = null;
- }
- // is there actually anything to replace in here ?
- if (modified) {
- // any text left to be added ?
- if (i < text.length) {
- fragment.appendChild(
- createText(text.slice(i), true)
- );
- }
- // replace the text node only, leave intact
- // anything else surrounding such text
- subnode.parentNode.replaceChild(fragment, subnode);
- }
- }
- return node;
- }
-
- /**
- * String/HTML version of the same logic / parser:
- * emojify a generic text placing images tags instead of surrogates pair.
- * @param string generic string with possibly some emoji in it
- * @param Object options containing info about how to parse
- *
- * .callback Function the callback to invoke per each found emoji.
- * .base string the base url, by default twemoji.base
- * .ext string the image extension, by default twemoji.ext
- * .size string the assets size, by default twemoji.size
- *
- * @return the string with replacing all found and parsed emoji
- */
- function parseString(str, options) {
- return replace(str, function (rawText) {
- var
- ret = rawText,
- iconId = grabTheRightIcon(rawText),
- src = options.callback(iconId, options),
- attrib,
- attrname;
- if (iconId && src) {
- // recycle the match string replacing the emoji
- // with its image counter part
- ret = '');
- }
- return ret;
- });
- }
-
- /**
- * Function used to actually replace HTML special chars
- * @param string HTML special char
- * @return string encoded HTML special char
- */
- function replacer(m) {
- return escaper[m];
- }
-
- /**
- * Default options.attribute callback
- * @return null
- */
- function returnNull() {
- return null;
- }
-
- /**
- * Given a generic value, creates its squared counterpart if it's a number.
- * As example, number 36 will return '36x36'.
- * @param any a generic value.
- * @return any a string representing asset size, i.e. "36x36"
- * only in case the value was a number.
- * Returns initial value otherwise.
- */
- function toSizeSquaredAsset(value) {
- return typeof value === 'number' ?
- value + 'x' + value :
- value;
- }
-
-
- /////////////////////////
- // exported functions //
- // declaration //
- /////////////////////////
-
- function fromCodePoint(codepoint) {
- var code = typeof codepoint === 'string' ?
- parseInt(codepoint, 16) : codepoint;
- if (code < 0x10000) {
- return fromCharCode(code);
- }
- code -= 0x10000;
- return fromCharCode(
- 0xD800 + (code >> 10),
- 0xDC00 + (code & 0x3FF)
- );
- }
-
- function parse(what, how) {
- if (!how || typeof how === 'function') {
- how = {callback: how};
- }
- // if first argument is string, inject html tags
- // otherwise use the DOM tree and parse text nodes only
- return (typeof what === 'string' ? parseString : parseNode)(what, {
- callback: how.callback || defaultImageSrcGenerator,
- attributes: typeof how.attributes === 'function' ? how.attributes : returnNull,
- base: typeof how.base === 'string' ? how.base : twemoji.base,
- ext: how.ext || twemoji.ext,
- size: how.folder || toSizeSquaredAsset(how.size || twemoji.size),
- className: how.className || twemoji.className,
- onerror: how.onerror || twemoji.onerror
- });
- }
-
- function replace(text, callback) {
- return String(text).replace(re, callback);
- }
-
- function test(text) {
- // IE6 needs a reset before too
- re.lastIndex = 0;
- var result = re.test(text);
- re.lastIndex = 0;
- return result;
- }
-
- function toCodePoint(unicodeSurrogates, sep) {
- var
- r = [],
- c = 0,
- p = 0,
- i = 0;
- while (i < unicodeSurrogates.length) {
- c = unicodeSurrogates.charCodeAt(i++);
- if (p) {
- r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));
- p = 0;
- } else if (0xD800 <= c && c <= 0xDBFF) {
- p = c;
- } else {
- r.push(c.toString(16));
- }
- }
- return r.join(sep || '-');
- }
-
-}());
\ No newline at end of file
diff --git a/qml/fonts/fontawesome.ttf b/qml/fonts/fontawesome.ttf
deleted file mode 100644
index 4adbd66d..00000000
Binary files a/qml/fonts/fontawesome.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-Bold.ttf b/qml/fonts/opensans/OpenSans-Bold.ttf
deleted file mode 100644
index efdd5e84..00000000
Binary files a/qml/fonts/opensans/OpenSans-Bold.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-BoldItalic.ttf b/qml/fonts/opensans/OpenSans-BoldItalic.ttf
deleted file mode 100644
index 9bf9b4e9..00000000
Binary files a/qml/fonts/opensans/OpenSans-BoldItalic.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-ExtraBold.ttf b/qml/fonts/opensans/OpenSans-ExtraBold.ttf
deleted file mode 100644
index 67fcf0fb..00000000
Binary files a/qml/fonts/opensans/OpenSans-ExtraBold.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-ExtraBoldItalic.ttf b/qml/fonts/opensans/OpenSans-ExtraBoldItalic.ttf
deleted file mode 100644
index 08672280..00000000
Binary files a/qml/fonts/opensans/OpenSans-ExtraBoldItalic.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-Italic.ttf b/qml/fonts/opensans/OpenSans-Italic.ttf
deleted file mode 100644
index 11785670..00000000
Binary files a/qml/fonts/opensans/OpenSans-Italic.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-Light.ttf b/qml/fonts/opensans/OpenSans-Light.ttf
deleted file mode 100644
index 6580d3a1..00000000
Binary files a/qml/fonts/opensans/OpenSans-Light.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-LightItalic.ttf b/qml/fonts/opensans/OpenSans-LightItalic.ttf
deleted file mode 100644
index 1e0c3319..00000000
Binary files a/qml/fonts/opensans/OpenSans-LightItalic.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-Regular.ttf b/qml/fonts/opensans/OpenSans-Regular.ttf
deleted file mode 100644
index 29bfd35a..00000000
Binary files a/qml/fonts/opensans/OpenSans-Regular.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-SemiBold.ttf b/qml/fonts/opensans/OpenSans-SemiBold.ttf
deleted file mode 100644
index 54e7059c..00000000
Binary files a/qml/fonts/opensans/OpenSans-SemiBold.ttf and /dev/null differ
diff --git a/qml/fonts/opensans/OpenSans-SemiBoldItalic.ttf b/qml/fonts/opensans/OpenSans-SemiBoldItalic.ttf
deleted file mode 100644
index aebcf142..00000000
Binary files a/qml/fonts/opensans/OpenSans-SemiBoldItalic.ttf and /dev/null differ
diff --git a/qml/fonts/qmldir b/qml/fonts/qmldir
deleted file mode 100644
index 8c898cef..00000000
--- a/qml/fonts/qmldir
+++ /dev/null
@@ -1 +0,0 @@
-singleton Fonts Fonts.qml
\ No newline at end of file
diff --git a/qml/main.qml b/qml/main.qml
index d70ea472..0fe47487 100644
--- a/qml/main.qml
+++ b/qml/main.qml
@@ -5,13 +5,15 @@ import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
-import "fonts"
-import "fonts/Twemoji.js" as T
-import "fonts/MutantStandard.js" as Mutant
+import "opaque"
+import "opaque/fonts"
+import "opaque/fonts/Twemoji.js" as T
+import "opaque/fonts/MutantStandard.js" as Mutant
+import "opaque/theme"
+
import "overlays"
import "panes"
import "widgets"
-import "theme"
import "utils.js" as Utils
@@ -29,17 +31,13 @@ ApplicationWindow {
readonly property real ratio: height / width
- readonly property string cwtch_background_color: '#FF0000'
- readonly property string cwtch_color: '#00FF00'
- readonly property string cwtch_dark_color: '#0000FF'
-
FontAwesome { // PRETTY BUTTON ICONS
id: awesome
- resource: "qrc:/qml/fonts/fontawesome.ttf"
+ resource: "qrc:/qml/opaque/fonts/fontawesome.ttf"
}
FontLoader {
- source: "qrc:/qml/fonts/AdobeBlank.ttf"
+ source: "qrc:/qml/opaque/fonts/AdobeBlank.ttf"
}
@@ -161,7 +159,7 @@ ApplicationWindow {
visible: (windowItem.width >= Theme.doublePaneMinSize && !Qt.inputMethod.visible) || theStack.pane == theStack.emptyPane
- ContactList{
+ ContactList {
anchors.fill: parent
dualPane: theStack.pane != theStack.emptyPane || theStack.pane == undefined
}
diff --git a/qml/opaque b/qml/opaque
new file mode 160000
index 00000000..db305895
--- /dev/null
+++ b/qml/opaque
@@ -0,0 +1 @@
+Subproject commit db305895e70fbb599d2600a7e1f2245a56380217
diff --git a/qml/overlays/BulletinOverlay.qml b/qml/overlays/BulletinOverlay.qml
index 9e95d601..4be09d70 100644
--- a/qml/overlays/BulletinOverlay.qml
+++ b/qml/overlays/BulletinOverlay.qml
@@ -6,10 +6,10 @@ import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
-import "../widgets" as Widgets
-import "../fonts/Twemoji.js" as T
+import "../opaque" as Opaque
+import "../opaque/fonts/Twemoji.js" as T
+import "../opaque/styles"
import "../utils.js" as Utils
-import "../styles"
ColumnLayout {
Layout.fillWidth: true
@@ -175,7 +175,7 @@ ColumnLayout {
width: parent.width - 50
}
- Widgets.Button {
+ Opaque.Button {
id: replybtn
visible: selected
text: "reply"
@@ -230,7 +230,7 @@ ColumnLayout {
}
- Widgets.Button { // SEND MESSAGE BUTTON
+ Opaque.Button { // SEND MESSAGE BUTTON
id: btnSend
icon: "regular/paper-plane"
text: "post"
diff --git a/qml/overlays/ChatOverlay.qml b/qml/overlays/ChatOverlay.qml
index a5cdce3f..2d0f34a2 100644
--- a/qml/overlays/ChatOverlay.qml
+++ b/qml/overlays/ChatOverlay.qml
@@ -4,10 +4,11 @@ import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
-import "../widgets" as Widgets
-import "../widgets/controls" as Awesome
-import "../fonts/Twemoji.js" as T
+import "../opaque" as Opaque
+import "../opaque/controls" as Awesome
+import "../opaque/fonts/Twemoji.js" as T
import "../utils.js" as Utils
+import "../widgets"
Item {
width: parent.width
@@ -29,7 +30,7 @@ Item {
ScrollBar.vertical: ScrollBar {}
maximumFlickVelocity: 1250
- delegate: Widgets.Message {
+ delegate: Message {
handle: _handle
from: _from
displayName: _displayName
@@ -128,7 +129,7 @@ Item {
}
}
- Widgets.EmojiDrawer {
+ Opaque.EmojiDrawer {
id: emojiDrawer
anchors.left: parent.left
anchors.right: parent.right
@@ -265,7 +266,7 @@ Item {
spacing: 1
- Widgets.Button { // SEND MESSAGE BUTTON
+ Opaque.Button { // SEND MESSAGE BUTTON
id: btnSend
icon: "regular/paper-plane"
text: "send"
@@ -301,7 +302,7 @@ Item {
spacing: 1
- Widgets.Button { // EMOJI DRAWER BUTTON
+ Opaque.Button { // EMOJI DRAWER BUTTON
id: btnEmoji
icon: "regular/smile"
anchors.right: btnAttach.left
@@ -310,7 +311,7 @@ Item {
onClicked: emojiDrawer.visible ? emojiDrawer.slideclosed() : emojiDrawer.slideopen()
}
- Widgets.Button {
+ Opaque.Button {
id: btnAttach
icon: "solid/paperclip"
anchors.right: parent.right
diff --git a/qml/overlays/ListOverlay.qml b/qml/overlays/ListOverlay.qml
index 8833229d..0ed706ce 100644
--- a/qml/overlays/ListOverlay.qml
+++ b/qml/overlays/ListOverlay.qml
@@ -5,11 +5,11 @@ import QtQuick.Controls.Material 2.0
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
-import "../widgets" as Widgets
-import "../widgets/controls" as Awesome
-import "../fonts/Twemoji.js" as T
+import "../opaque" as Opaque
+import "../opaque/controls" as Awesome
+import "../opaque/fonts/Twemoji.js" as T
import "../utils.js" as Utils
-import "../styles"
+import "../opaque/styles"
ColumnLayout {
Layout.fillWidth: true
@@ -204,7 +204,7 @@ ColumnLayout {
style: CwtchTextFieldStyle{}
}
- Widgets.Button { // SEND MESSAGE BUTTON
+ Opaque.Button { // SEND MESSAGE BUTTON
id: btnSend
icon: "regular/paper-plane"
text: "add"
diff --git a/qml/overlays/MembershipOverlay.qml b/qml/overlays/MembershipOverlay.qml
index 04a79e7e..75025398 100644
--- a/qml/overlays/MembershipOverlay.qml
+++ b/qml/overlays/MembershipOverlay.qml
@@ -5,11 +5,12 @@ import QtQuick.Controls.Material 2.0
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
-import "../widgets"
-import "../widgets/controls" as Awesome
-import "../fonts/Twemoji.js" as T
+import "../opaque"
+import "../opaque/controls" as Awesome
+import "../opaque/fonts/Twemoji.js" as T
+import "../opaque/styles"
import "../utils.js" as Utils
-import "../styles"
+import "../widgets"
ColumnLayout {
Text {
diff --git a/qml/panes/AddGroupPane.qml b/qml/panes/AddGroupPane.qml
index 26000e8b..78b5f6b2 100644
--- a/qml/panes/AddGroupPane.qml
+++ b/qml/panes/AddGroupPane.qml
@@ -6,8 +6,8 @@ import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
import QtQuick.Controls 1.4
-import "../widgets" as Widgets
-import "../styles"
+import "../opaque" as Opaque
+import "../opaque/styles"
ColumnLayout { // settingsPane
id: root
@@ -26,7 +26,7 @@ ColumnLayout { // settingsPane
spacing: 5
width: root.width
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
//: Server label
text: qsTr("server-label") + ":"
}
@@ -37,7 +37,7 @@ ColumnLayout { // settingsPane
text: "2c3kmoobnyghj2zw6pwv7d57yzld753auo3ugauezzpvfak3ahc4bdyd"
}
- Widgets.ScalingLabel{
+ Opaque.ScalingLabel{
//: Group name label
text: qsTr("group-name-label") + ":"
}
@@ -49,7 +49,7 @@ ColumnLayout { // settingsPane
text: qsTr("default-group-name")
}
- Widgets.Button {
+ Opaque.Button {
//: create group button
text: qsTr("create-group-btn")
diff --git a/qml/panes/GroupSettingsPane.qml b/qml/panes/GroupSettingsPane.qml
index d1a81b87..d7ece6c2 100644
--- a/qml/panes/GroupSettingsPane.qml
+++ b/qml/panes/GroupSettingsPane.qml
@@ -6,8 +6,8 @@ import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
import QtQuick.Controls 1.4
-import "../widgets" as Widgets
-import "../styles"
+import "../opaque" as Opaque
+import "../opaque/styles"
import "../utils.js" as Utils
ColumnLayout { // groupSettingsPane
@@ -29,7 +29,7 @@ ColumnLayout { // groupSettingsPane
leftPadding: 10
spacing: 5
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
text: qsTr("server-label") + ":"
}
@@ -39,7 +39,7 @@ ColumnLayout { // groupSettingsPane
readOnly: true
}
- Widgets.Button {
+ Opaque.Button {
icon: "regular/clipboard"
text: qsTr("copy-btn")
@@ -50,7 +50,7 @@ ColumnLayout { // groupSettingsPane
}
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
text: qsTr("invitation-label") + ":"
}
@@ -60,7 +60,7 @@ ColumnLayout { // groupSettingsPane
readOnly: true
}
- Widgets.Button {
+ Opaque.Button {
icon: "regular/clipboard"
text: qsTr("copy-btn")
@@ -71,7 +71,7 @@ ColumnLayout { // groupSettingsPane
}
}
- Widgets.ScalingLabel{
+ Opaque.ScalingLabel{
text: qsTr("group-name-label") + ":"
}
@@ -80,7 +80,7 @@ ColumnLayout { // groupSettingsPane
style: CwtchTextFieldStyle{ width: tehcol.width * 0.8 }
}
- Widgets.Button {
+ Opaque.Button {
text: qsTr("save-btn")
onClicked: {
@@ -91,7 +91,7 @@ ColumnLayout { // groupSettingsPane
}
//: Invite someone to the group
- Widgets.ScalingLabel { text: qsTr("invite-to-group-label") }
+ Opaque.ScalingLabel { text: qsTr("invite-to-group-label") }
ComboBox {
id: cbInvite
@@ -101,7 +101,7 @@ ColumnLayout { // groupSettingsPane
style: CwtchComboBoxStyle{}
}
- Widgets.Button {
+ Opaque.Button {
text: qsTr("invite-btn")
onClicked: {
@@ -109,7 +109,7 @@ ColumnLayout { // groupSettingsPane
}
}
- Widgets.Button {
+ Opaque.Button {
icon: "regular/trash-alt"
text: qsTr("delete-btn")
diff --git a/qml/panes/OverlayPane.qml b/qml/panes/OverlayPane.qml
index 123e64f2..453899cb 100644
--- a/qml/panes/OverlayPane.qml
+++ b/qml/panes/OverlayPane.qml
@@ -4,7 +4,8 @@ import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
-import "../widgets" as Widgets
+import "../opaque" as Opaque
+import "../opaque/styles"
import "../overlays"
ColumnLayout {
@@ -23,7 +24,7 @@ ColumnLayout {
text: qsTr("accept-group-invite-label") + " " + overlay.name + "?"
}
- Widgets.Button {
+ Opaque.Button {
//: Accept group invite button
text: qsTr("accept-group-btn")
icon: "regular/heart"
@@ -33,7 +34,7 @@ ColumnLayout {
}
}
- Widgets.Button {
+ Opaque.Button {
//: Reject Group invite button
text: qsTr("reject-group-btn")
icon: "regular/trash-alt"
@@ -48,21 +49,21 @@ ColumnLayout {
id: switcher
- Widgets.Button {
+ Opaque.Button {
text: qsTr("chat-btn")
onClicked: overlayStack.overlay = overlayStack.chatOverlay
}
- Widgets.Button {
+ Opaque.Button {
text: qsTr("lists-btn")
onClicked: overlayStack.overlay = overlayStack.listOverlay
}
- Widgets.Button {
+ Opaque.Button {
text: qsTr("bulletins-btn")
diff --git a/qml/panes/PeerSettingsPane.qml b/qml/panes/PeerSettingsPane.qml
index 706468d1..d9f39dbf 100644
--- a/qml/panes/PeerSettingsPane.qml
+++ b/qml/panes/PeerSettingsPane.qml
@@ -7,9 +7,9 @@ import QtQuick.Window 2.11
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
-import "../widgets" as Widgets
-import "../styles"
-import "../theme"
+import "../opaque" as Opaque
+import "../opaque/styles"
+import "../opaque/theme"
ColumnLayout { // peerSettingsPane
id: root
@@ -32,7 +32,7 @@ ColumnLayout { // peerSettingsPane
columns: 1
width:parent.width * 0.95
anchors.horizontalCenter: parent.horizontalCenter
- Widgets.EllipsisLabel {
+ Opaque.EllipsisLabel {
anchors.left:parent.left
color: Theme.mainTextColor
text: qsTr("address-label")
@@ -40,7 +40,7 @@ ColumnLayout { // peerSettingsPane
font.pointSize: 15 * gcd.themeScale
}
- Widgets.ButtonTextField {
+ Opaque.ButtonTextField {
id: txtOnion
anchors.left:parent.left
anchors.right:parent.right
@@ -56,13 +56,13 @@ ColumnLayout { // peerSettingsPane
}
}
- Widgets.HLine{}
+ Opaque.HLine{}
GridLayout {
columns: 1
width:parent.width * 0.95
anchors.horizontalCenter: parent.horizontalCenter
- Widgets.EllipsisLabel {
+ Opaque.EllipsisLabel {
anchors.left:parent.left
color: Theme.mainTextColor
text: qsTr("display-name-label")
@@ -71,7 +71,7 @@ ColumnLayout { // peerSettingsPane
}
- Widgets.ButtonTextField {
+ Opaque.ButtonTextField {
id: txtDisplayName
anchors.left:parent.left
anchors.right:parent.right
@@ -86,21 +86,21 @@ ColumnLayout { // peerSettingsPane
}
- Widgets.HLine{}
+ Opaque.HLine{}
GridLayout {
columns: 2
width:parent.width * 0.95
anchors.horizontalCenter: parent.horizontalCenter
- Widgets.EllipsisLabel {
+ Opaque.EllipsisLabel {
color: Theme.mainTextColor
text: qsTr("block-btn")
font.styleName: "ExtraBold"
font.pointSize: 15 * gcd.themeScale
}
- Widgets.ToggleSwitch {
+ Opaque.ToggleSwitch {
isToggled: root.blocked // ? qsTr("unblock-btn") : qsTr("block-btn")
anchors.right: parent.right
onToggled: function() {
@@ -117,11 +117,11 @@ ColumnLayout { // peerSettingsPane
}
- Widgets.HLine{}
+ Opaque.HLine{}
Column {
width:parent.width * 0.95
anchors.horizontalCenter: parent.horizontalCenter
- Widgets.Button {
+ Opaque.Button {
icon: "regular/trash-alt"
text: qsTr("delete-btn")
anchors.right: parent.right
diff --git a/qml/panes/ProfileAddEditPane.qml b/qml/panes/ProfileAddEditPane.qml
index 8cb3aff8..3f1154e8 100644
--- a/qml/panes/ProfileAddEditPane.qml
+++ b/qml/panes/ProfileAddEditPane.qml
@@ -6,7 +6,7 @@ import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
-import "../widgets" as Widgets
+import "../opaque" as Opaque
// import "../styles"
ColumnLayout { // Add Profile Pane
@@ -71,23 +71,23 @@ ColumnLayout { // Add Profile Pane
spacing: 5
width: profileAddEditPane.width
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
//: Onion
text: qsTr("profile-onion-label") + ":"
visible: mode == "edit"
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: onionLabel
visible: mode == "edit"
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
//: Display name
text: qsTr("profile-name") + ":"
}
- Widgets.TextField {
+ Opaque.TextField {
id: txtProfileName
Layout.fillWidth: true
//style: CwtchTextFieldStyle{ width: tehcol.width * 0.8 }
@@ -100,7 +100,7 @@ ColumnLayout { // Add Profile Pane
RowLayout {
//id: radioButtons
- Widgets.RadioButton {
+ Opaque.RadioButton {
id: radioUsePassword
checked: true
//: Password
@@ -111,7 +111,7 @@ ColumnLayout { // Add Profile Pane
}
}
- Widgets.RadioButton {
+ Opaque.RadioButton {
id: radioNoPassword
//: Unencrypted (No password)
text: qsTr("radio-no-password")
@@ -122,35 +122,35 @@ ColumnLayout { // Add Profile Pane
}
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: noPasswordLabel
//: Not using a password on this account means that all data stored locally will not be encrypted
text: qsTr("no-password-warning")
visible: radioNoPassword.checked
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: currentPasswordLabel
//: Current Password
text: qsTr("current-password-label") + ":"
visible: radioUsePassword.checked && mode == "edit" && tag != "v1-defaultPassword"
}
- Widgets.TextField {
+ Opaque.TextField {
id: txtCurrentPassword
Layout.fillWidth: true
echoMode: TextInput.Password
visible: radioUsePassword.checked && mode == "edit" && tag != "v1-defaultPassword"
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: passwordLabel
//: Password
text: qsTr("password1-label") + ":"
visible: radioUsePassword.checked
}
- Widgets.TextField {
+ Opaque.TextField {
id: txtPassword1
Layout.fillWidth: true
//style: CwtchTextFieldStyle{ width: tehcol.width * 0.8 }
@@ -163,14 +163,14 @@ ColumnLayout { // Add Profile Pane
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: passwordReLabel
//: Reenter password
text: qsTr("password2-label") + ":"
visible: radioUsePassword.checked
}
- Widgets.TextField {
+ Opaque.TextField {
id: txtPassword2
Layout.fillWidth: true
//style: CwtchTextFieldStyle{ width: tehcol.width * 0.8 }
@@ -178,7 +178,7 @@ ColumnLayout { // Add Profile Pane
visible: radioUsePassword.checked
}
- Widgets.Button { // ADD or SAVE button
+ Opaque.Button { // ADD or SAVE button
//: Create Profile || Save Profile
text: mode == "add" ? qsTr("create-profile-btn") : qsTr("save-profile-btn")
@@ -209,7 +209,7 @@ ColumnLayout { // Add Profile Pane
}
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: passwordErrorLabel
//: Passwords do not match
text: qsTr("password-error-match")
@@ -217,7 +217,7 @@ ColumnLayout { // Add Profile Pane
color: "red"
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: passwordChangeErrorLabel
//: Error changing password: Supplied password rejected
text: qsTr("password-change-error")
@@ -227,7 +227,7 @@ ColumnLayout { // Add Profile Pane
// ***** Delete button and confirm flow *****
- Widgets.Button {
+ Opaque.Button {
//: Delete Profile
text: qsTr("delete-profile-btn")
icon: "regular/trash-alt"
@@ -239,21 +239,21 @@ ColumnLayout { // Add Profile Pane
}
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: deleteConfirmLabel
//: Type DELETE to confirm
text: qsTr("delete-confirm-label")+ ":"
visible: deleting
}
- Widgets.TextField {
+ Opaque.TextField {
id: confirmDeleteTxt
Layout.fillWidth: true
//style: CwtchTextFieldStyle{ width: tehcol.width * 0.8 }
visible: deleting
}
- Widgets.Button {
+ Opaque.Button {
id: confirmDeleteBtn
icon: "regular/trash-alt"
diff --git a/qml/panes/ProfileManagerPane.qml b/qml/panes/ProfileManagerPane.qml
index 7deb581c..9447004a 100644
--- a/qml/panes/ProfileManagerPane.qml
+++ b/qml/panes/ProfileManagerPane.qml
@@ -8,10 +8,12 @@ import QtQuick.Window 2.11
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
-import "../widgets" as Widgets
-import "../widgets/controls"
-import "../styles"
-import "../theme"
+import "../widgets"
+
+import "../opaque" as Opaque
+import "../opaque/controls"
+import "../opaque/styles"
+import "../opaque/theme"
ColumnLayout {
@@ -20,14 +22,14 @@ ColumnLayout {
//leftPadding: 10
//spacing: 5
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
anchors.horizontalCenter: parent.horizontalCenter
wrapMode: TextEdit.Wrap
//: Please enter password:
text: qsTr("enter-profile-password")+":"
}
- Widgets.UnderlineTextField {
+ Opaque.UnderlineTextField {
id: txtPassword
anchors.horizontalCenter: parent.horizontalCenter
Layout.fillWidth: true
@@ -38,7 +40,7 @@ ColumnLayout {
onAccepted: button.clicked()
}
- Widgets.ScalingLabel {
+ Opaque.ScalingLabel {
id: error
anchors.horizontalCenter: parent.horizontalCenter
color: "red"
@@ -47,7 +49,7 @@ ColumnLayout {
visible: false
}
- Widgets.Button {
+ Opaque.Button {
id: "button"
anchors.horizontalCenter: parent.horizontalCenter
@@ -80,7 +82,7 @@ ColumnLayout {
Layout.minimumWidth: Layout.maximumWidth
//Layout.maximumWidth: theStack.pane == theStack.emptyPane ? parent.width : 450
- Widgets.ProfileList {
+ ProfileList {
anchors.fill: parent
}
}
diff --git a/qml/panes/SettingsPane.qml b/qml/panes/SettingsPane.qml
index c6ce40ef..91f48e2d 100644
--- a/qml/panes/SettingsPane.qml
+++ b/qml/panes/SettingsPane.qml
@@ -7,8 +7,8 @@ import QtQuick.Window 2.11
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
-import "../widgets"
-import "../widgets/controls"
+import "../opaque" as Opaque
+import "../opaque/controls"
ColumnLayout { // settingsPane
id: root
@@ -28,14 +28,14 @@ ColumnLayout { // settingsPane
spacing: 5
width: root.width
- ScalingLabel {
+ Opaque.ScalingLabel {
width: parent.width
wrapMode: TextEdit.Wrap
//: Version: %1 Built on: %2
text: qsTr("version %1 builddate %2").arg(gcd.version).arg(gcd.buildDate)
}
- ScalingLabel {
+ Opaque.ScalingLabel {
width: parent.width
wrapMode: TextEdit.Wrap
//: Interface zoom (mostly affects text and button sizes)
@@ -67,26 +67,26 @@ ColumnLayout { // settingsPane
}
}
style: CheckBoxStyle {
- label: ScalingLabel {
+ label: Opaque.ScalingLabel {
text: qsTr("block-unknown-label")
}
}
}
- ScalingLabel {
+ Opaque.ScalingLabel {
wrapMode: TextEdit.Wrap
text: qsTr("large-text-label")
size: 20
}
- ScalingLabel{
+ Opaque.ScalingLabel{
width: parent.width
wrapMode: TextEdit.Wrap
//: "Default size text (scale factor: "
text: qsTr("default-scaling-text") + " " + Math.round(zoomSlider.value * 100) / 100 + ")"
}
- ScalingLabel {
+ Opaque.ScalingLabel {
text: qsTr("small-text-label")
size: 8
}
diff --git a/qml/panes/SplashPane.qml b/qml/panes/SplashPane.qml
index bd3f9a6e..45fa925d 100644
--- a/qml/panes/SplashPane.qml
+++ b/qml/panes/SplashPane.qml
@@ -5,7 +5,7 @@ import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
-import "../styles"
+import "../opaque/styles"
Item {
id: sp
diff --git a/qml/styles/CwtchComboBoxStyle.qml b/qml/styles/CwtchComboBoxStyle.qml
deleted file mode 100644
index b4536eba..00000000
--- a/qml/styles/CwtchComboBoxStyle.qml
+++ /dev/null
@@ -1,7 +0,0 @@
-import QtQuick.Controls.Styles 1.4
-import QtQuick 2.7
-
-
-ComboBoxStyle {
- textColor: "#000"
-}
diff --git a/qml/styles/CwtchExpandingButton.qml b/qml/styles/CwtchExpandingButton.qml
deleted file mode 100644
index 76e71d26..00000000
--- a/qml/styles/CwtchExpandingButton.qml
+++ /dev/null
@@ -1,21 +0,0 @@
-import QtQuick.Controls.Styles 1.4
-import QtQuick 2.7
-
-ButtonStyle {
- background: Rectangle {
- width:25
- height:25
- color: windowItem.cwtch_dark_color
- border.color: windowItem.cwtch_color
- }
-
- label: Text {
- renderType: Text.NativeRendering
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignHCenter
- font.family: "Monospace"
- font.pointSize: 8
- color: windowItem.cwtch_background_color
- text: control.text
- }
-}
diff --git a/qml/styles/CwtchProgress.qml b/qml/styles/CwtchProgress.qml
deleted file mode 100644
index 711227c3..00000000
--- a/qml/styles/CwtchProgress.qml
+++ /dev/null
@@ -1,39 +0,0 @@
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import QtQuick.Window 2.11
-import QtQuick.Controls 1.4
-import QtQuick.Controls.Styles 1.4
-
-
-Rectangle {
- id: pb
- border.color: "#FFFFFF"
- border.width: 1
-
- color: "#D2C0DD"
- property bool running
-
- // Indeterminate animation by animating alternating stripes:
- Item {
- anchors.fill: parent
- anchors.margins: 1
- visible: control.indeterminate
- clip: true
- Row {
- Repeater {
- Rectangle {
- color: index % 2 ? "#D2C0DD" : "#b29dbe"
- width: 20 ; height: control.height
- }
- model: control.width / 20 + 2
- }
- XAnimator on x {
- from: 0 ; to: -40
- loops: Animation.Infinite
- running: pb.running
- }
- }
- }
-}
diff --git a/qml/styles/CwtchTextAreaStyle.qml b/qml/styles/CwtchTextAreaStyle.qml
deleted file mode 100644
index 4e0e584b..00000000
--- a/qml/styles/CwtchTextAreaStyle.qml
+++ /dev/null
@@ -1,8 +0,0 @@
-import QtQuick.Controls.Styles 1.4
-import QtQuick 2.7
-
-
-TextAreaStyle {
- textColor: "black"
- backgroundColor: windowItem.cwtch_background_color
-}
diff --git a/qml/styles/CwtchTextFieldStyle.qml b/qml/styles/CwtchTextFieldStyle.qml
deleted file mode 100644
index 9175e212..00000000
--- a/qml/styles/CwtchTextFieldStyle.qml
+++ /dev/null
@@ -1,15 +0,0 @@
-import QtQuick.Controls.Styles 1.4
-import QtQuick 2.7
-
-TextFieldStyle {
- id: root
- textColor: "black"
- font.pointSize: 10 * gcd.themeScale
- property int width: parent.width
-
- background: Rectangle {
- radius: 2
- color: windowItem.cwtch_background_color
- border.color: windowItem.cwtch_color
- }
-}
diff --git a/qml/theme/CwtchDark.qml b/qml/theme/CwtchDark.qml
deleted file mode 100644
index 35f04424..00000000
--- a/qml/theme/CwtchDark.qml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-ThemeType {
- readonly property color darkGrayPurple: "#281831"
- readonly property color deepPurple: "#422850"
- readonly property color mauvePurple: "#8E64A5"
- readonly property color purple: "#DFB9DE"
- readonly property color whitePurple: "#FFFDFF"
- readonly property color softPurple: "#FDF3FC"
- readonly property color pink: "#E85DA1"
- readonly property color hotPink: "#D01972"
-
- backgroundMainColor: darkGrayPurple
- backgroundPaneColor: deepPurple
-
- mainTextColor: purple
- altTextColor: mauvePurple
- defaultButtonColor: mauvePurple
- defaultButtonActiveColor: pink
- defaultButtonTextColor: whitePurple
-
- portraitOnlineBorderColor: whitePurple
- portraitOnlineBackgroundColor: darkGrayPurple
- portraitOnlineTextColor: whitePurple
- portraitConnectingBorderColor: mauvePurple
- portraitConnectingBackgroundColor: darkGrayPurple
- portraitConnectingTextColor: whitePurple
- portraitOfflineBorderColor: deepPurple
- portraitOfflineBackgroundColor: darkGrayPurple
- portraitOfflineTextColor: softPurple
-
- portraitContactBadgeColor: hotPink
- portraitContactBadgeTextColor: whitePurple
- portraitProfileBadgeColor: mauvePurple
- dropShadowColor: mauvePurple
- dropShadowPaneColor: darkGrayPurple
-
- toggleColor: darkGrayPurple
- toggleOnColor: whitePurple
- toggleOffColor: mauvePurple
-
- toolbarIconColor: whitePurple
-
- statusbarDisconnectedInternetColor: whitePurple
- statusbarDisconnectedInternetFontColor: deepPurple
- statusbarDisconnectedTorColor: darkGrayPurple
- statusbarDisconnectedTorFontColor: whitePurple
- statusbarConnectingColor: deepPurple
- statusbarConnectingFontColor: whitePurple
- statusbarOnlineColor: mauvePurple
- statusbarOnlineFontColor: whitePurple
-}
diff --git a/qml/theme/CwtchLight.qml b/qml/theme/CwtchLight.qml
deleted file mode 100644
index aac033e4..00000000
--- a/qml/theme/CwtchLight.qml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-ThemeType {
- readonly property color whitePurple: "#FFFDFF"
- readonly property color softPurple: "#FDF3FC"
- readonly property color purple: "#DFB9DE"
- readonly property color brightPurple: "#760388"
- readonly property color darkPurple: "#350052"
- readonly property color greyPurple: "#775F84"
- readonly property color pink: "#E85DA1"
- readonly property color hotPink: "#D01972"
-
- backgroundMainColor: whitePurple
- backgroundPaneColor: softPurple
-
- mainTextColor: darkPurple
- altTextColor: purple
- defaultButtonColor: hotPink
- defaultButtonActiveColor: pink
- defaultButtonTextColor: whitePurple
-
- portraitOnlineBorderColor: darkPurple
- portraitOnlineBackgroundColor: darkPurple
- portraitOnlineTextColor: darkPurple
- portraitConnectingBorderColor: greyPurple
- portraitConnectingBackgroundColor: greyPurple
- portraitConnectingTextColor: greyPurple
- portraitOfflineBorderColor: purple
- portraitOfflineBackgroundColor: purple
- portraitOfflineTextColor: purple
-
- portraitContactBadgeColor: hotPink
- portraitContactBadgeTextColor: whitePurple
- portraitProfileBadgeColor: brightPurple
- dropShadowColor: purple
- dropShadowPaneColor: purple
-
- toggleColor: whitePurple
- toggleOnColor: hotPink
- toggleOffColor: purple
-
- toolbarIconColor: darkPurple
-
- statusbarDisconnectedInternetColor: softPurple
- statusbarDisconnectedInternetFontColor: darkPurple
- statusbarDisconnectedTorColor: purple
- statusbarDisconnectedTorFontColor: darkPurple
- statusbarConnectingColor: greyPurple
- statusbarConnectingFontColor: whitePurple
- statusbarOnlineColor: darkPurple
- statusbarOnlineFontColor: whitePurple
-}
diff --git a/qml/theme/Theme.qml b/qml/theme/Theme.qml
deleted file mode 100644
index 7570b24b..00000000
--- a/qml/theme/Theme.qml
+++ /dev/null
@@ -1,61 +0,0 @@
-pragma Singleton
-
-import QtQuick 2.0
-
-Item {
- readonly property color backgroundMainColor: theme.backgroundMainColor
- readonly property color backgroundPaneColor: theme.backgroundPaneColor
-
- readonly property color mainTextColor: theme.mainTextColor
- readonly property color altTextColor: theme.altTextColor
- readonly property color defaultButtonColor: theme.defaultButtonColor
- readonly property color defaultButtonActiveColor: theme.defaultButtonActiveColor
- readonly property color defaultButtonTextColor: theme.defaultButtonTextColor
-
- readonly property color dropShadowColor: theme.dropShadowColor
- readonly property color dropShadowPaneColor: theme.dropShadowPaneColor
-
- readonly property color portraitOnlineBorderColor: theme.portraitOnlineBorderColor
- readonly property color portraitOnlineBackgroundColor: theme.portraitOnlineBackgroundColor
- readonly property color portraitOnlineTextColor: theme.portraitOnlineTextColor
- readonly property color portraitConnectingBorderColor: theme.portraitConnectingBorderColor
- readonly property color portraitConnectingBackgroundColor: theme.portraitConnectingBackgroundColor
- readonly property color portraitConnectingTextColor: theme.portraitConnectingTextColor
- readonly property color portraitOfflineBorderColor: theme.portraitOfflineBorderColor
- readonly property color portraitOfflineBackgroundColor: theme.portraitOfflineBackgroundColor
- readonly property color portraitOfflineTextColor: theme.portraitOfflineTextColor
-
- readonly property color portraitContactBadgeColor: theme.portraitContactBadgeColor
- readonly property color portraitContactBadgeTextColor: theme.portraitContactBadgeTextColor
- readonly property color portraitProfileBadgeColor: theme.portraitProfileBadgeColor
-
- readonly property color toggleColor: theme.toggleColor
- readonly property color toggleOffColor: theme.toggleOffColor
- readonly property color toggleOnColor: theme.toggleOnColor
-
- readonly property color toolbarIconColor: theme.toolbarIconColor
-
- readonly property color statusbarDisconnectedInternetColor: theme.statusbarDisconnectedInternetColor
- readonly property color statusbarDisconnectedInternetFontColor: theme.statusbarDisconnectedInternetFontColor
- readonly property color statusbarDisconnectedTorFontColor: theme.statusbarDisconnectedTorFontColor
- readonly property color statusbarDisconnectedTorColor: theme.statusbarDisconnectedTorColor
- readonly property color statusbarConnectingColor: theme.statusbarConnectingColor
- readonly property color statusbarConnectingFontColor: theme.statusbarConnectingFontColor
- readonly property color statusbarOnlineColor: theme.statusbarOnlineColor
- readonly property color statusbarOnlineFontColor: theme.statusbarOnlineFontColor
-
- readonly property int headerSize: 50
- readonly property int usernameSize: 30
- readonly property int tabSize: 25
- readonly property int chatSize: 20
- readonly property int secondaryTextSize: 20 // address
- readonly property int chatMetaTextSize: 15
- readonly property int badgeTextSize: 12
- readonly property int statusTextSize: 12
-
- readonly property int sidePaneMinSize: 700
- readonly property int doublePaneMinSize: 1000
-
- property ThemeType theme: CwtchLight { }
-
-}
diff --git a/qml/theme/ThemeType.qml b/qml/theme/ThemeType.qml
deleted file mode 100644
index 55dc9c2d..00000000
--- a/qml/theme/ThemeType.qml
+++ /dev/null
@@ -1,46 +0,0 @@
-import QtQuick 2.0
-
-QtObject {
- property color backgroundMainColor: "red"
- property color backgroundPaneColor: "red"
-
- property color mainTextColor: "red"
- property color altTextColor: "red"
- property color defaultButtonColor: "red"
- property color defaultButtonActiveColor: "red"
- property color defaultButtonTextColor: "red"
-
- property color portraitOnlineBorderColor: "red"
- property color portraitOnlineBackgroundColor: "red"
- property color portraitOnlineTextColor: "red"
- property color portraitConnectingBorderColor: "red"
- property color portraitConnectingBackgroundColor: "red"
- property color portraitConnectingTextColor: "red"
- property color portraitOfflineBorderColor: "red"
- property color portraitOfflineBackgroundColor: "red"
- property color portraitOfflineTextColor: "red"
-
- property color portraitContactBadgeColor: "red"
- property color portraitContactBadgeTextColor: "red"
- property color portraitProfileBadgeColor: "red"
- property color dropShadowColor: "black"
- property color dropShadowPaneColor: "black"
- property color toggleColor: "black"
- property color toggleOnColor: "black"
- property color toggleOffColor: "black"
-
- property color toolbarIconColor: "red"
-
- property color statusbarDisconnectedInternetColor: "red"
- property color statusbarDisconnectedInternetFontColor: "red"
- property color statusbarDisconnectedTorFontColor: "red"
- property color statusbarDisconnectedTorColor: "red"
- property color statusbarConnectingColor: "red"
- property color statusbarConnectingFontColor: "red"
- property color statusbarOnlineColor: "red"
- property color statusbarOnlineFontColor: "red"
-
- // ... more to come
-
-
-}
diff --git a/qml/theme/qmldir b/qml/theme/qmldir
deleted file mode 100644
index 4954041f..00000000
--- a/qml/theme/qmldir
+++ /dev/null
@@ -1 +0,0 @@
-singleton Theme 1.0 Theme.qml
\ No newline at end of file
diff --git a/qml/widgets/Badge.qml b/qml/widgets/Badge.qml
deleted file mode 100644
index 6369eab3..00000000
--- a/qml/widgets/Badge.qml
+++ /dev/null
@@ -1,24 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import CustomQmlTypes 1.0
-import "../theme"
-
-Rectangle {
- width: parent.width * 0.25
- height: width
- radius: width/2
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- anchors.margins: parent.width * 0.09
- property alias content: container.children
-
- Column {
- id: container
- anchors.verticalCenter: parent.verticalCenter
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
-}
diff --git a/qml/widgets/Button.qml b/qml/widgets/Button.qml
deleted file mode 100644
index c3413346..00000000
--- a/qml/widgets/Button.qml
+++ /dev/null
@@ -1,79 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-
-import "../fonts/Twemoji.js" as T
-import "../theme"
-import "../fonts"
-
-Rectangle {
- id: button
- width: (text == undefined || text == "" ? 0 : buttonText.width) + (icon == undefined || icon == "" ? 0 : ico.width) + 24 * gcd.themeScale
- Layout.minimumWidth: width
- Layout.maximumWidth: width
- height: 20 * gcd.themeScale
- Layout.minimumHeight: height
- Layout.maximumHeight: height
- color: mousedown ? Theme.defaultButtonActiveColor : Theme.defaultButtonColor
- border.color: mousedown ? Theme.defaultButtonActiveColor : Theme.defaultButtonColor
- border.width: 1
- radius: override_radius
- antialiasing: true
-
- property bool checked: false
- property double override_radius: (height / 2.0)
- property alias text: buttonText.text
- property alias font: buttonText.font.family
- property string icon
- property bool mousedown
- property string tooltip
- signal clicked
-
-
- RowLayout {
- anchors.centerIn: parent
-
- Image {
- anchors.left: parent.left
- id: ico
- source: icon!="" ? gcd.assetPath + "fontawesome/"+icon+".svg" : "";
- height: button.height / 2
- sourceSize.height: button.height / 2
- }
-
- Label {
- id: buttonText
- font.family: Fonts.applicationFontRegular.name
- font.styleName: "ExtraBold"
- font.pixelSize: button.height / 2
- color: Theme.defaultButtonTextColor
- anchors.left: ico.right
- anchors.leftMargin: 6
- visible: button.text != "" && button.text != undefined
- }
-
- ToolTip.visible: tooltip != "" && mouseArea.containsMouse
- ToolTip.text: tooltip
- }
-
-
- MouseArea {
- id: mouseArea
- anchors.fill: parent
-
- onClicked: {
- parent.focus = true
- parent.clicked()
- }
-
- onPressed: mousedown = true
-
- onReleased: mousedown = false
-
- hoverEnabled: true
- }
-
- Keys.onSpacePressed: clicked()
-}
diff --git a/qml/widgets/ButtonTextField.qml b/qml/widgets/ButtonTextField.qml
deleted file mode 100644
index 9962ce2c..00000000
--- a/qml/widgets/ButtonTextField.qml
+++ /dev/null
@@ -1,49 +0,0 @@
-import QtQuick 2.7
-
-import QtQuick.Controls 2.13
-import QtQuick.Controls.Styles 1.4
-import QtGraphicalEffects 1.12
-import "." as Widgets
-import "../theme"
-
-
-// ButtonTextField integrates a text field and a button
-TextField {
- id: tf
- color: Theme.mainTextColor
- font.pixelSize: Theme.secondaryTextSize * gcd.themeScale
- width: parent.width - 20
- property string icon
- property string button_text
- signal clicked
- smooth: true
- property color dropShadowColor: Theme.dropShadowColor
-
- background: Rectangle {
- radius: 10
- color: Theme.backgroundMainColor
- border.color: Theme.backgroundMainColor
- layer.enabled: true
- layer.effect: DropShadow {
- transparentBorder: true
- horizontalOffset: 4
- verticalOffset: 4
- samples:10
- color: tf.dropShadowColor
- }
- }
-
- Widgets.Button {
- icon: ""
- text: button_text
- anchors { top: parent.top; right: parent.right }
- override_radius: 10
- height: parent.height; width: parent.height * 4
-
- onClicked: {
- parent.focus = true;
- parent.clicked();
- }
- }
-
-}
diff --git a/qml/widgets/ContactList.qml b/qml/widgets/ContactList.qml
index 2011784a..6420d707 100644
--- a/qml/widgets/ContactList.qml
+++ b/qml/widgets/ContactList.qml
@@ -3,7 +3,9 @@ import QtQuick 2.7
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
-import "../theme"
+
+import "../opaque" as Opaque
+import "../opaque/theme"
ColumnLayout {
id: root
@@ -25,7 +27,7 @@ ColumnLayout {
}
- IconTextField {
+ Opaque.IconTextField {
id: searchAddText
anchors.horizontalCenter: parent.horizontalCenter
diff --git a/qml/widgets/ContactRow.qml b/qml/widgets/ContactRow.qml
index bed4b98e..061fe130 100644
--- a/qml/widgets/ContactRow.qml
+++ b/qml/widgets/ContactRow.qml
@@ -4,14 +4,14 @@ import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
import CustomQmlTypes 1.0
-import "../styles"
-import "../widgets" as Widgets
-import "../theme"
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
-PortraitRow {
+import "../opaque" as Opaque
+import "../opaque/styles"
+import "../opaque/theme"
+Opaque.PortraitRow {
property int status: 0
property int badge
property bool loading
diff --git a/qml/widgets/EllipsisLabel.qml b/qml/widgets/EllipsisLabel.qml
deleted file mode 100644
index a0d042c5..00000000
--- a/qml/widgets/EllipsisLabel.qml
+++ /dev/null
@@ -1,59 +0,0 @@
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import CustomQmlTypes 1.0
-import "../widgets" as Widgets
-import "../theme"
-
-
-// Needs the parent to have an onWidthChanged that calls .textResize()
-Item {
- anchors.right: parent.right
- anchors.left: parent.left
-
- property string text
-
- property alias color: label.color
- property alias pixelSize: label.font.pixelSize
- property alias weight: label.font.weight
- property alias strikeout: label.font.strikeout
- property alias font: label.font
- property int extraPadding: 0
-
- property Item container: parent
-
- height: textMetric.height
- width: textMetric.width + 10
- anchors.leftMargin: 10
-
- Label {
- id: label
- textFormat: Text.PlainText
-
- elide: Text.ElideRight
- text: textMetric.text
- }
-
- TextMetrics {
- id: textMetric
- text: text
- font: label.font
- }
-
- onTextChanged: {
- textResize()
- }
-
- function textResize() {
- textMetric.text = text
- var i = 2
- var containerWidth = container != null ? container.width : 50
- // - 30 for padding
- while (textMetric.width > containerWidth - ((30 + extraPadding) * gcd.themeScale) && containerWidth > 50) {
- textMetric.text = text.slice(0, text.length - (i * 3)) + "..."
- i++
- }
- }
-
-}
diff --git a/qml/widgets/EmojiDrawer.qml b/qml/widgets/EmojiDrawer.qml
deleted file mode 100644
index 7bb9bba1..00000000
--- a/qml/widgets/EmojiDrawer.qml
+++ /dev/null
@@ -1,400 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.13
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import Qt.labs.folderlistmodel 2.13
-import QtQml.Models 2.13
-
-import "../fonts/MutantStandard.js" as Mutant
-import "controls"
-
-Item {
- id: root
- height: 0
- property int size: 24
- property int requestedHeight: size * 8
- property string morph: "clw"
- property string color: "v1"
- property bool narrowMode: width < (txtSearch.width + root.size * 14 + btnX.width)
- signal picked(string shortcode)
- signal slideopen()
- signal slideclosed()
- visible: height != 0
-
- Rectangle {
- color: windowItem.cwtch_dark_color
- anchors.fill: parent
- }
-
- PropertyAnimation {
- id: animClose;
- target: root;
- properties: "height";
- to: 0;
- duration: 400;
- }
-
- PropertyAnimation {
- id: animOpen;
- target: root;
- properties: "height";
- to: requestedHeight;
- duration: 400;
- }
-
- Button {
- id: btnX
- anchors.top: parent.top
- anchors.right: parent.right
- text: "x"
-
- onClicked: animClose.start()
- }
-
- ColumnLayout {
- anchors.fill: parent
-
-
- RowLayout {
- TextField {
- id: txtSearch
- //: Search...
- placeholderText: qsTr("search")
- onTextChanged: {
- if (text == "") emojiModel.model = folder_expressions
- else emojiModel.model = folder_search
- emojiModel.updatefilters()
- }
- }
-
- ImageButton {
- id: btnEmojiExpressionsGroup
- visible: !root.narrowMode
- //: Expressions
- tooltip: qsTr("emojicat-expressions")
- source: gcd.assetPath + "mutstd/smile.webp"
- size: root.size
- onClicked: emojiModel.model = folder_expressions
- }
- ImageButton {
- visible: !root.narrowMode
- //: Activities
- tooltip: qsTr("emojicat-activities")
- source: gcd.assetPath + "mutstd/artist_r1.webp"
- size: root.size
- onClicked: emojiModel.model = folder_activities_clothing
- }
- ImageButton {
- visible: !root.narrowMode
- //: Food, drink & herbs
- tooltip: qsTr("emojicat-food")
- source: gcd.assetPath + "mutstd/red_apple.webp"
- size: root.size
- onClicked: emojiModel.model = folder_food_drink_herbs
- }
- ImageButton {
- visible: !root.narrowMode
- //: Gender, relationships & sexuality
- tooltip: qsTr("emojicat-gender")
- size: root.size
- source: gcd.assetPath + "mutstd/pride_100.webp"
- onClicked: emojiModel.model = folder_gsr
- }
- ImageButton {
- visible: !root.narrowMode
- //: Nature and effects
- tooltip: qsTr("emojicat-nature")
- source: gcd.assetPath + "mutstd/sun_behind_small_cloud.webp"
- size: root.size
- onClicked: emojiModel.model = folder_nature
- }
- ImageButton {
- visible: !root.narrowMode
- //: Objects
- tooltip: qsTr("emojicat-objects")
- source: gcd.assetPath + "mutstd/crystal_ball.webp"
- size: root.size
- onClicked: emojiModel.model = folder_objects
- }
- ImageButton {
- visible: !root.narrowMode
- //: People and animals
- tooltip: qsTr("emojicat-people")
- source: gcd.assetPath + "mutstd/crow.webp"
- size: root.size
- onClicked: emojiModel.model = folder_people
- }
- ImageButton {
- visible: !root.narrowMode
- //: Symbols
- tooltip: qsTr("emojicat-symbols")
- source: gcd.assetPath + "mutstd/purple_heart.webp"
- size: root.size
- onClicked: emojiModel.model = folder_symbols
- }
- ImageButton {
- visible: !root.narrowMode
- //: Travel & places
- tooltip: qsTr("emojicat-travel")
- source: gcd.assetPath + "mutstd/airplane.webp"
- size: root.size
- onClicked: emojiModel.model = folder_travel_places
- }
- ImageButton {
- visible: !root.narrowMode
- //: Miscellaneous
- tooltip: qsTr("emojicat-misc")
- source: gcd.assetPath + "mutstd/hash_char.webp"
- size: root.size
- onClicked: emojiModel.model = folder_utils
- }
- ImageButton {
- visible: !root.narrowMode
- id: btnUndefinedGroup
- // (no tooltip; this is a catchall group meant to detect unclassified emoji during development)
- //TODO: remove this category upon finalizing the Emoji Drawer
- source: gcd.assetPath + "mutstd/undefined_character.webp"
- size: root.size
- onClicked: emojiModel.model = folder_other
- }
-
- Item {
- visible: root.narrowMode
- height: root.size
- width: root.size
-
- Image {
- id: imgCatRot
- anchors.centerIn: parent
- source: cats[index].source
- property int index: 0
- property var cats: [
- {source: gcd.assetPath + "mutstd/smile.webp", model: folder_expressions},
- {source: gcd.assetPath + "mutstd/artist_r1.webp", model: folder_activities_clothing},
- {source: gcd.assetPath + "mutstd/red_apple.webp", model: folder_food_drink_herbs},
- {source: gcd.assetPath + "mutstd/pride_100.webp", model: folder_gsr},
- {source: gcd.assetPath + "mutstd/sun_behind_small_cloud.webp", model: folder_nature},
- {source: gcd.assetPath + "mutstd/crystal_ball.webp", model: folder_objects},
- {source: gcd.assetPath + "mutstd/crow.webp", model: folder_people},
- {source: gcd.assetPath + "mutstd/purple_heart.webp", model: folder_symbols},
- {source: gcd.assetPath + "mutstd/airplane.webp", model: folder_travel_places},
- {source: gcd.assetPath + "mutstd/hash_char.webp", model: folder_utils},
- {source: gcd.assetPath + "mutstd/undefined_character.webp", model: folder_other}
- ]
- height: root.size * (maCatRot.pressed ? 0.8 : 1.0)
- width: root.size * (maCatRot.pressed ? 0.8 : 1.0)
-
- ToolTip.visible: maCatRot.containsMouse
- ToolTip.text: gcd.os == "android" ? qsTr("cycle-cats-android") : qsTr("cycle-cats-desktop")
-
- MouseArea {
- id: maCatRot
- hoverEnabled: true
- acceptedButtons: Qt.LeftButton | Qt.RightButton
- anchors.fill: parent;
-
- onClicked: {
- if (mouse.button == Qt.RightButton) {//todo: long press on android
- imgCatRot.index = 0
- } else {
- imgCatRot.index = (imgCatRot.index + 1) % imgCatRot.cats.length
- }
- emojiModel.model = imgCatRot.cats[imgCatRot.index].model
- //root.morph = Mutant.standard.morphs[imgMorph.index]
- //emojiModel.updatefilters()
- }
- }
- }
- }
-
- Item {
- height: root.size
- width: root.size
-
- Image {
- id: imgMorph
- anchors.centerIn: parent
- source: gcd.assetPath + "mutstd/hand_"+Mutant.standard.morphs[index]+"_"+root.color+".webp"
- property int index: 0
- height: root.size
- width: root.size
-
- ToolTip.visible: maMorph.containsMouse
- ToolTip.text: gcd.os == "android" ? qsTr("cycle-morphs-android") : qsTr("cycle-morphs-desktop")
-
- MouseArea {
- id: maMorph
- hoverEnabled: true
- acceptedButtons: Qt.LeftButton | Qt.RightButton
- anchors.fill: parent;
- onClicked: {
- if (mouse.button == Qt.RightButton) {//todo: long press on android
- imgMorph.index = 0//TODO: saved morph
- } else {
- imgMorph.index = (imgMorph.index + 1) % Mutant.standard.morphs.length
- }
- root.morph = Mutant.standard.morphs[imgMorph.index]
- emojiModel.updatefilters()
- }
- }
- }
- }
-
- Item {
- height: root.size
- width: root.size
-
- Image {
- id: imgColor
- anchors.centerIn: parent
- source: gcd.assetPath + "mutstd/color_modifier_"+Mutant.standard.colorByIndex(index, root.morph)+".webp"
- property int index: 0
- height: root.size
- width: root.size
-
- ToolTip.visible: ma.containsMouse
- ToolTip.text: gcd.os == "android" ? qsTr("cycle-colours-android") : qsTr("cycle-colours-desktop")
-
- MouseArea {
- id: ma
- anchors.fill: parent;
- hoverEnabled: true
- acceptedButtons: Qt.LeftButton | Qt.RightButton
-
- onClicked: function(mouse){
- if (mouse.button == Qt.RightButton) {//todo: long press on android
- imgColor.index = 0//todo: saved color
- } else {
- imgColor.index = (imgColor.index + 1) % Mutant.standard.numColors(root.morph)
- }
- root.color = Mutant.standard.colorByIndex(imgColor.index, root.morph)
- emojiModel.updatefilters()
- }
- }
- }
- }
- }
-
- GridView {
- Layout.fillWidth: true
- Layout.fillHeight: true
- height: root.size * 3
- cellWidth: root.size
- cellHeight: root.size
- clip: true
- ScrollBar.vertical: ScrollBar {}
- maximumFlickVelocity: 1250
- boundsBehavior: GridView.StopAtBounds
-
-
- model: emojiModel
- }
- }
-
- ListModel { id: folder_activities_clothing }
- ListModel { id: folder_expressions }
- ListModel { id: folder_food_drink_herbs }
- ListModel { id: folder_gsr }
- ListModel { id: folder_nature }
- ListModel { id: folder_objects }
- ListModel { id: folder_people }
- ListModel { id: folder_symbols }
- ListModel { id: folder_travel_places }
- ListModel { id: folder_utils }
- ListModel { id: folder_other }
- ListModel { id: folder_search }
-
- DelegateModel {
- id: emojiModel
- model: folder_expressions
-
- delegate: Item {
- width: root.size
- height: root.size
-
- Image {
- id: img
- //source: "file://" + gcd.binaryPath + "/assets/mutstd/" + code + ".webp"
- source: gcd.assetPath + "mutstd/" + code + ".webp"
- width: root.size * (mouseArea.pressed ? 0.7 : 0.8)
- height: width
- anchors.centerIn: parent
- property string shortcode: code
-
- ToolTip.visible: mouseArea.containsMouse
- ToolTip.text: desc + "\n:" + shortcode + ":"
-
- MouseArea {
- id: mouseArea
- anchors.fill: parent
- hoverEnabled: true
-
- onClicked: root.picked(img.shortcode)
- }
- }
- }
-
- Component.onCompleted: updatefilters()
-
- function clearall() {
- folder_activities_clothing.clear()
- folder_expressions.clear()
- folder_food_drink_herbs.clear()
- folder_gsr.clear()
- folder_nature.clear()
- folder_objects.clear()
- folder_people.clear()
- folder_symbols.clear()
- folder_travel_places.clear()
- folder_utils.clear()
- folder_other.clear()
- folder_search.clear()
- }
-
- function updatefilters() {
- clearall()
-
- for (var i in Mutant.standard.manifest) {
- if (typeof Mutant.standard.manifest[i].morph !== "undefined" && Mutant.standard.manifest[i].morph != root.morph)
- continue;
-
- if (typeof Mutant.standard.manifest[i].color !== "undefined" && Mutant.standard.manifest[i].color != root.color)
- continue;
-
- if (txtSearch.text != "" && !(Mutant.standard.manifest[i].code.includes(txtSearch.text) || Mutant.standard.manifest[i].desc.includes(txtSearch.text))) {
- continue;
- }
-
- var model = folder_other
- if (txtSearch.text == "") {
- switch(Mutant.standard.manifest[i].cat) {
- case "activities_clothing": model = folder_activities_clothing; break;
- case "expressions": model = folder_expressions; break;
- case "symbols": model = folder_symbols; break;
- case "food_drink_herbs": model = folder_food_drink_herbs; break;
- case "gsr": model = folder_gsr; break;
- case "nature": model = folder_nature; break;
- case "objects": model = folder_objects; break;
- case "people": model = folder_people; break;
- case "travel_places": model = folder_travel_places; break;
- case "utils": model = folder_utils; break;
- }
- } else {
- model = folder_search
- }
-
- model.append({
- cat: Mutant.standard.manifest[i].cat,
- code: Mutant.standard.manifest[i].code,
- color: Mutant.standard.manifest[i].color,
- morph: Mutant.standard.manifest[i].morph,
- desc: Mutant.standard.manifest[i].desc
- })
- }
- }
- }
-
- onSlideopen: animOpen.start()
- onSlideclosed: animClose.start()
-}
diff --git a/qml/widgets/FontAwesome.qml b/qml/widgets/FontAwesome.qml
deleted file mode 100644
index dcdaed12..00000000
--- a/qml/widgets/FontAwesome.qml
+++ /dev/null
@@ -1,50 +0,0 @@
-/****************************************************************************
-**
-** The MIT License (MIT)
-**
-** Copyright (c) 2014 Ricardo do Valle Flores de Oliveira
-**
-** $BEGIN_LICENSE:MIT$
-** Permission is hereby granted, free of charge, to any person obtaining a copy
-** of this software and associated documentation files (the "Software"), to deal
-** in the Software without restriction, including without limitation the rights
-** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-** copies of the Software, and to permit persons to whom the Software is
-** furnished to do so, subject to the following conditions:
-**
-** The above copyright notice and this permission notice shall be included in
-** all copies or substantial portions of the Software.
-**
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-** SOFTWARE.
-**
-** $END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-import "controls" as Awesome
-
-Item {
- id: awesome
-
- property alias icons: variables
- property alias loaded: loader.loaded
- property alias resource: loader.resource
-
- readonly property string family: "FontAwesome"
-
- Awesome.Loader {
- id: loader
- }
-
- Awesome.Variables {
- id: variables
- }
-}
diff --git a/qml/widgets/HLine.qml b/qml/widgets/HLine.qml
deleted file mode 100644
index 33c342a9..00000000
--- a/qml/widgets/HLine.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import QtQuick 2.12
-import "../theme"
-
-Column {
- width: parent.width
- anchors.horizontalCenter: parent.horizontalCenter
-
- Rectangle {
- height: 10
- color:"transparent"
- width: parent.width
- }
-
-
- Rectangle {
- anchors.horizontalCenter: parent.horizontalCenter
- height: 1
- width: parent.width * 0.95
- color: Theme.dropShadowColor
- }
-
-
- Rectangle {
- height: 10
- color:"transparent"
- width: parent.width
- }
-}
diff --git a/qml/widgets/Icon.qml b/qml/widgets/Icon.qml
deleted file mode 100644
index 471a3a46..00000000
--- a/qml/widgets/Icon.qml
+++ /dev/null
@@ -1,63 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-
-import "../fonts/Twemoji.js" as T
-import "." as Widgets
-import "../theme"
-
-Rectangle {
- id: root
-
- property color backgroundColor: parent.color
- property color hilightBackgroundColor: backgroundColor
-
- property bool isHover: false
-
- color: isHover ? backgroundColor : hilightBackgroundColor
-
- property alias iconColor: iconColorOverlay.color
-
- property alias source: srcImg.source
-
- signal clicked()
-
- Image {
- id: srcImg
- anchors.fill: parent
- antialiasing: true
- smooth: true
- visible: false
- // Apparently qml can now only DOWN-SCALE/SHRINK the SVG, so with this hack it which won't cause blurriness/pixelation
- sourceSize.width: root.width*2
- sourceSize.height: root.height*2
- }
-
- ColorOverlay{
- id: iconColorOverlay
- anchors.fill: srcImg
- source: srcImg
-
- antialiasing: true
- smooth: true
- }
-
- MouseArea { // Full row mouse area triggering onClick
- id: ma
- anchors.fill: parent
- hoverEnabled: true
-
- onClicked: { root.clicked() }
-
- onEntered: {
- isHover = true
- }
-
- onExited: {
- isHover = false
- }
- }
-
-}
diff --git a/qml/widgets/IconTextField.qml b/qml/widgets/IconTextField.qml
deleted file mode 100644
index a1a80183..00000000
--- a/qml/widgets/IconTextField.qml
+++ /dev/null
@@ -1,49 +0,0 @@
-import QtQuick 2.7
-
-import QtQuick.Controls 2.13
-import QtQuick.Controls.Styles 1.4
-import QtGraphicalEffects 1.12
-import "." as Widgets
-import "../theme"
-
-// IconTextField integrates a text field and an icon
-TextField {
- color: Theme.mainTextColor
- font.pixelSize: Theme.secondaryTextSize * gcd.themeScale * gcd.themeScale
- width: parent.width - 20
- property alias icon: icon_.source
- signal clicked
- smooth: true
- placeholderTextColor: Theme.altTextColor
-
-
- background: Rectangle {
- radius: 10
- color: Theme.backgroundMainColor
- border.color: Theme.backgroundMainColor
- layer.enabled: true
- layer.effect: DropShadow {
- transparentBorder: true
- horizontalOffset: 0
- verticalOffset: 0
- samples: 10
- radius: 8
- color: Theme.dropShadowColor
- }
- }
-
- Widgets.Icon {
- id: icon_
-
- anchors.right: parent.right
- anchors.rightMargin: 4
- anchors.verticalCenter: parent.verticalCenter
-
- height: parent.height-4;
- width: parent.height-4;
-
- iconColor: Theme.altTextColor
- backgroundColor: Theme.backgroundMainColor
- }
-
-}
diff --git a/qml/widgets/InplaceEditText.qml b/qml/widgets/InplaceEditText.qml
deleted file mode 100644
index 6cf68c61..00000000
--- a/qml/widgets/InplaceEditText.qml
+++ /dev/null
@@ -1,92 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import "../widgets" as Widgets
-
-
-
-Item {
- id: root
- height: lbl.visible ? lbl.height : txt.height + (gcd.os == "android" ? btn.height + 3 : 0) //lbl.height
- implicitHeight: height //lbl.height
-
- property alias text: lbl.text
- signal updated
-
- Text { // DISPLAY THE TEXT IN READONLY MODE
- id: lbl
- fontSizeMode: Text.HorizontalFit
- font.pixelSize: 36
- minimumPixelSize: 8
- horizontalAlignment: Text.AlignHCenter
- textFormat: Text.PlainText
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- Image {
- id: img
- anchors.left: lbl.right
- anchors.leftMargin: 3
- source: gcd.assetPath + "fontawesome/solid/edit.svg"
- height: 16
- sourceSize.height: 16
- }
-
-
- MouseArea {
- anchors.fill: lbl
-
-
- onClicked: {
- lbl.visible = img.visible = false
- txt.visible = true
- if (gcd.os == "android") btn.visible = true
- txt.text = lbl.text
- txt.selectAll()
- txt.focus = true
- }
- }
-
- TextEdit { // MAKE IT AN EDITOR WHEN EDITING
- id: txt
- text: root.text
- visible: false
- selectByMouse: true
- font.pixelSize: lbl.font.pixelSize
- anchors.horizontalCenter: parent.horizontalCenter
-
-
- onActiveFocusChanged: {
- if (!activeFocus) {
- save()
- }
- }
-
- Keys.onReturnPressed: {
- if (event.modifiers == Qt.NoModifier) {
- save()
- }
- }
-
- function save() {
- root.text = txt.text
- txt.visible = btn.visible = false
- lbl.visible = img.visible = true
- root.updated(txt.text)
- }
- }
-
- Widgets.Button {
- id: btn
- anchors.top: txt.bottom
- anchors.topMargin: 3
- anchors.horizontalCenter: parent.horizontalCenter
- visible: false
- text: qsTr("Update")
-
-
- onClicked: txt.save()
- }
-}
diff --git a/qml/widgets/Message.qml b/qml/widgets/Message.qml
index d9f6e3c6..10ea3911 100644
--- a/qml/widgets/Message.qml
+++ b/qml/widgets/Message.qml
@@ -4,7 +4,8 @@ import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
-import "controls" as Awesome
+import "../opaque" as Opaque
+import "../opaque/controls" as Awesome
Item {
id: root
@@ -42,7 +43,7 @@ Item {
}
- Portrait {
+ Opaque.Portrait {
id: imgProfile
anchors.left: parent.left
// TODO: currently unused?
diff --git a/qml/widgets/MyProfile.qml b/qml/widgets/MyProfile.qml
index a8937bf1..8a9b8898 100644
--- a/qml/widgets/MyProfile.qml
+++ b/qml/widgets/MyProfile.qml
@@ -7,9 +7,9 @@ import QtQuick.Layouts 1.3
import QtQuick.Window 2.11
import QtQuick.Controls 1.4
-import "." as Widgets
-import "../styles"
-import "../theme"
+import "../opaque" as Opaque
+import "../opaque/styles"
+import "../opaque/theme"
Item {
id: root
@@ -78,7 +78,7 @@ Item {
id: profile
color: Theme.backgroundMainColor
- Portrait {
+ Opaque.Portrait {
id: portrait
source: root.image
@@ -105,7 +105,7 @@ Item {
id: nameCenter
width: name.width + addBtn.width
- EllipsisLabel {
+ Opaque.EllipsisLabel {
id: name
anchors.right: undefined
@@ -119,7 +119,7 @@ Item {
container: nameRow
}
- Widgets.Button { // Add Button
+ Opaque.Button { // Add Button
id: addBtn
anchors.left: name.right
diff --git a/qml/widgets/Portrait.qml b/qml/widgets/Portrait.qml
deleted file mode 100644
index 41728cd8..00000000
--- a/qml/widgets/Portrait.qml
+++ /dev/null
@@ -1,71 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import CustomQmlTypes 1.0
-import "../theme"
-
-Item {
- id: imgProfile
- implicitWidth: baseWidth
- implicitHeight: baseWidth
-
- property string source
- property alias badgeColor: badge.color
-
- property real logscale: 4 * Math.log10(gcd.themeScale + 1)
- property int baseWidth: 78 * logscale
- height: 78 * logscale
-
- property alias portraitBorderColor: mainImage.color
- property alias portraitColor: imageInner.color
- property alias badgeVisible: badge.visible
- property alias badgeContent: badge.content
-
-
- Rectangle {
- id: mainImage
- //anchors.leftMargin: baseWidth * 0.1
- anchors.horizontalCenter: parent.horizontalCenter
- width: baseWidth * 0.8
- height: width
- anchors.verticalCenter: parent.verticalCenter
- color: Theme.portraitOfflineBorderColor
- radius: width / 2
-
- Rectangle {
- id: imageInner
- width: parent.width - 4
- height: width
- color: Theme.portraitOfflineBorderColor
- radius: width / 2
- anchors.centerIn:parent
-
- Image { // PROFILE IMAGE
- id: img
- source: gcd.assetPath + imgProfile.source
- anchors.fill: parent
- fillMode: Image.PreserveAspectFit
- visible: false
- }
-
- Image { // CIRCLE MASK
- id: mask
- fillMode: Image.PreserveAspectFit
- visible: false
- source: "qrc:/qml/images/extra/clipcircle.png"
- }
-
- OpacityMask {
- anchors.fill: img
- source: img
- maskSource: mask
- }
- }
- }
-
- Badge {
- id: badge
- }
-}
diff --git a/qml/widgets/PortraitRow.qml b/qml/widgets/PortraitRow.qml
deleted file mode 100644
index ba65e889..00000000
--- a/qml/widgets/PortraitRow.qml
+++ /dev/null
@@ -1,141 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import CustomQmlTypes 1.0
-import "../styles"
-import "../widgets" as Widgets
-import "../theme"
-import QtQuick.Controls 1.4
-import QtQuick.Controls.Styles 1.4
-
-Item { // LOTS OF NESTING TO DEAL WITH QT WEIRDNESS, SORRY
- id: crItem
- anchors.left: parent.left
- anchors.right: parent.right
- height: 78 * logscale + 3
- implicitHeight: 78 * logscale + 3 //height
-
- property real logscale: 4 * Math.log10(gcd.themeScale + 1)
- property string displayName
- property alias image: portrait.source
- property string handle
- property bool isActive
- property bool isHover
- property string tag // profile version/type
-
- property alias badgeColor: portrait.badgeColor
- property alias portraitBorderColor: portrait.portraitBorderColor
- property alias portraitColor: portrait.portraitColor
- property alias nameColor: cn.color
- property alias onionColor: onion.color
- property alias onionVisible: onion.visible
- property alias badgeVisible: portrait.badgeVisible
- property alias badgeContent: portrait.badgeContent
- property alias hoverEnabled: buttonMA.hoverEnabled
-
- property alias content: extraMeta.children
-
- // TODO: should be in ContactRow
- property bool blocked
-
- signal clicked(string handle)
-
- Rectangle { // CONTACT ENTRY BACKGROUND COLOR
- id: crRect
- anchors.left: parent.left
- anchors.right: parent.right
- height: crItem.height
- width: parent.width
- color: isHover ? Theme.backgroundPaneColor : (isActive ? Theme.backgroundPaneColor : Theme.backgroundMainColor)
-
- Portrait {
- id: portrait
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- anchors.leftMargin: 25 * logscale
- }
-
- ColumnLayout {
- id: portraitMeta
-
- anchors.left: portrait.right
- anchors.right: parent.right
- anchors.leftMargin: 4 * logscale
- anchors.verticalCenter: parent.verticalCenter
-
- spacing: 2 * gcd.themeScale
-
-
- EllipsisLabel { // CONTACT NAME
- id: cn
- pixelSize: Theme.usernameSize * gcd.themeScale
- weight: Font.Bold
- strikeout: blocked
- text: displayName
- }
-
- EllipsisLabel { // Onion
- id: onion
- text: handle
- pixelSize: Theme.secondaryTextSize * gcd.themeScale
- strikeout: blocked
- }
-
- onWidthChanged: {
- cn.textResize()
- onion.textResize()
- }
-
- }
-
- Column {
- id: extraMeta
- anchors.left: portraitMeta.right
- anchors.verticalCenter: parent.verticalCenter
- }
- }
-
- MouseArea { // Full row mouse area triggering onClick
- id: buttonMA
- anchors.fill: parent
- hoverEnabled: true
-
- onClicked: { crItem.clicked(crItem.handle) }
-
- onEntered: {
- isHover = true
- }
-
- onExited: {
- isHover = false
- }
- }
-
- Connections { // UPDATE UNREAD MESSAGES COUNTER
- target: gcd
-
- onResetMessagePane: function() {
- isActive = false
- }
-
- onUpdateContactBlocked: function(_handle, _blocked) {
- if (handle == _handle) {
- blocked = _blocked
- }
- }
-
- onUpdateContactDisplayName: function(_handle, _displayName) {
- if (handle == _handle) {
- displayName = _displayName + (blocked == true ? " (blocked)" : "")
- }
- }
-
- onUpdateContactPicture: function(_handle, _image) {
- if (handle == _handle) {
- image = _image
- }
- }
- }
-}
diff --git a/qml/widgets/ProfileList.qml b/qml/widgets/ProfileList.qml
index 0e8618ae..1a65846c 100644
--- a/qml/widgets/ProfileList.qml
+++ b/qml/widgets/ProfileList.qml
@@ -3,7 +3,9 @@ import QtQuick 2.7
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
-import "../theme"
+
+import "../opaque" as Opaque
+import "../opaque/theme"
ColumnLayout {
id: root
@@ -101,7 +103,7 @@ ColumnLayout {
}
}
- PortraitRow {
+ Opaque.PortraitRow {
handle: ""
displayName: qsTr("add-new-profile-btn")
nameColor: Theme.mainTextColor
diff --git a/qml/widgets/ProfileRow.qml b/qml/widgets/ProfileRow.qml
index c70ee2d5..03fd71db 100644
--- a/qml/widgets/ProfileRow.qml
+++ b/qml/widgets/ProfileRow.qml
@@ -4,14 +4,14 @@ import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
import CustomQmlTypes 1.0
-import "../styles"
-import "../widgets" as Widgets
-import "../theme"
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
-PortraitRow {
+import "../opaque" as Opaque
+import "../opaque/styles"
+import "../opaque/theme"
+Opaque.PortraitRow {
badgeColor: Theme.portraitProfileBadgeColor
portraitBorderColor: Theme.portraitOnlineBorderColor
@@ -26,7 +26,7 @@ PortraitRow {
width: height
}
- Widgets.Button {// Edit BUTTON
+ Opaque.Button {// Edit BUTTON
id: btnEdit
icon: "solid/user-edit"
diff --git a/qml/widgets/RadioButton.qml b/qml/widgets/RadioButton.qml
deleted file mode 100644
index 5ce7b21a..00000000
--- a/qml/widgets/RadioButton.qml
+++ /dev/null
@@ -1,27 +0,0 @@
-import QtQuick 2.7
-
-import QtQuick.Controls 2.13
-
-
-RadioButton {
- id: control
-
- property real size: 12
- spacing: 0
-
- indicator: Rectangle {
- width: 16 * gcd.themeScale
- height: 16 * gcd.themeScale
- anchors.verticalCenter: parent.verticalCenter
- radius: 9
- border.width: 1
-
- Rectangle {
- anchors.fill: parent
- visible: control.checked
- color: "black"
- radius: 9
- anchors.margins: 4
- }
- }
-}
diff --git a/qml/widgets/ScalingLabel.qml b/qml/widgets/ScalingLabel.qml
deleted file mode 100644
index e0471fd0..00000000
--- a/qml/widgets/ScalingLabel.qml
+++ /dev/null
@@ -1,15 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import QtQuick.Window 2.11
-
-
-Label {
- font.pixelSize: gcd.themeScale * size
- wrapMode: Text.WordWrap
- color: "#000000"
- textFormat: Text.PlainText
- property real size: 12
-}
diff --git a/qml/widgets/Statusbar.qml b/qml/widgets/Statusbar.qml
index 38e4aaf8..e1dfa0c0 100644
--- a/qml/widgets/Statusbar.qml
+++ b/qml/widgets/Statusbar.qml
@@ -1,8 +1,8 @@
import QtQuick 2.7
import QtQuick.Controls 2.4
-import "." as Widgets
-import "../theme"
+import "../opaque" as Opaque
+import "../opaque/theme"
// Statusbar is a app wide 10-25 tall bar that should be place at the bottom of the app that gives network health information
// it changes color and text/icon message based on network health. when netowrk is not healthy it is always in fullsized mode
@@ -37,7 +37,7 @@ Rectangle {
font.pixelSize: Theme.statusTextSize * gcd.themeScale
}
- Icon {
+ Opaque.Icon {
id: networkStatus
opacity: 0
anchors.right: connectionStatus.left
@@ -48,7 +48,7 @@ Rectangle {
}
- Icon {
+ Opaque.Icon {
id: connectionStatus
opacity: 0
anchors.right: parent.right
diff --git a/qml/widgets/TextField.qml b/qml/widgets/TextField.qml
deleted file mode 100644
index 333f3bb3..00000000
--- a/qml/widgets/TextField.qml
+++ /dev/null
@@ -1,16 +0,0 @@
-import QtQuick 2.7
-
-import QtQuick.Controls 2.13
-
-
-TextField {
- color: "black"
- font.pointSize: 10 * gcd.themeScale
- width: 100
-
- background: Rectangle {
- radius: 2
- color: windowItem.cwtch_background_color
- border.color: windowItem.cwtch_color
- }
-}
diff --git a/qml/widgets/ToggleSwitch.qml b/qml/widgets/ToggleSwitch.qml
deleted file mode 100644
index 4c151aae..00000000
--- a/qml/widgets/ToggleSwitch.qml
+++ /dev/null
@@ -1,32 +0,0 @@
-import QtQuick.Controls 1.4
-import QtQuick.Controls.Styles 1.4
-import QtQuick 2.12
-import "../theme"
-
-// ToggleSwtch implements a stylized toggle switch. It requires the user create a function called onToggled to
-// perform any additional operations needed to define the behavior of the toggle switch
-Switch {
- property bool isToggled
- property var onToggled: function () { console.log("In Superclass") };
-
- style: SwitchStyle {
- handle: Rectangle {
- implicitWidth: 25
- implicitHeight: 25
- radius: width*0.5
- color: Theme.toggleColor
- border.color: isToggled ? Theme.toggleOnColor :Theme.toggleOffColor
- border.width:5
- }
- groove: Rectangle {
- implicitWidth: 50
- implicitHeight: 25
- radius: 25*0.5
- color: isToggled ? Theme.toggleOnColor :Theme.toggleOffColor
- }
- }
-
- onClicked: function() {isToggled = !isToggled; onToggled()}
-}
-
-
diff --git a/qml/widgets/Toolbar.qml b/qml/widgets/Toolbar.qml
deleted file mode 100644
index 70d373d7..00000000
--- a/qml/widgets/Toolbar.qml
+++ /dev/null
@@ -1,123 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-
-import "../fonts/Twemoji.js" as T
-import "." as Widgets
-import "../theme"
-
-Rectangle { // Global Toolbar
- id: toolbar
-
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.top: parent.top
- height: 35 * gcd.themeScale
-
-
- Layout.minimumHeight: height
- Layout.maximumHeight: height
- color: Theme.backgroundMainColor
-
- property alias leftMenuVisible: btnLeftMenu.visible
- property alias backVisible: btnLeftBack.visible
- property alias rightMenuVisible: btnRightMenu.visible
-
- property alias titleWidth: paneArea.width
-
-
- signal leftMenu()
- signal back()
- signal rightMenu()
-
- Icon {
- id: btnLeftMenu
- iconColor: Theme.toolbarIconColor
- source: gcd.assetPath + "core/menu-24px.svg"
-
-
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- width: 30
- height: 30
-
- onClicked: { leftMenu() }
- }
-
- Icon {
- id: btnLeftBack
- iconColor: Theme.toolbarIconColor
- source: gcd.assetPath + "core/chevron_left-24px.svg"
-
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- width: 30
- height: 30
-
- onClicked: { back() }
- }
-
-
-
- Rectangle {
- id: paneArea
- anchors.right: parent.right
-
- EllipsisLabel {
- id: paneTitle
-
- visible: true
- anchors.left: undefined
- anchors.right: undefined
- anchors.horizontalCenter: parent.horizontalCenter
-
- color: Theme.mainTextColor
- pixelSize: Theme.tabSize * gcd.themeScale
- weight: Font.Bold
- text: "global toolbar"
-
- //extraPadding: btnRightMenu.width + 10
-
- }
-
- onWidthChanged: { paneTitle.textResize() }
- }
-
- Icon {
- id: btnRightMenu
- iconColor: Theme.toolbarIconColor
- source: gcd.assetPath + "core/more_vert-24px.svg"
-
- visible: false
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
- width: 30
- height: 30
-
- onClicked: { rightMenu() }
- }
-
- function setTitle(text, width) {
- paneTitle.text = text
- paneArea.width = width
- paneTitle.textResize()
- paneTitle.visible = true
- }
-
- function hideTitle() {
- paneTitle.visible = false
- }
-
-
- Connections {
- target: gcd
-
- onSetToolbarTitle: function(handle) {
- setTitle(handle, theStack.width)
- btnRightMenu.visible = true
- }
- }
-
-}
diff --git a/qml/widgets/UnderlineTextField.qml b/qml/widgets/UnderlineTextField.qml
deleted file mode 100644
index c5d26619..00000000
--- a/qml/widgets/UnderlineTextField.qml
+++ /dev/null
@@ -1,34 +0,0 @@
-import QtQuick 2.7
-
-import QtQuick.Controls 2.13
-import QtQuick.Controls.Styles 1.4
-import QtGraphicalEffects 1.12
-import "." as Widgets
-import "../theme"
-
-// UnderlineTextField is a textfield styled as just an underline
-TextField {
- property alias backgroundColor: bg.color
-
- color: Theme.mainTextColor
- font.pixelSize: Theme.secondaryTextSize * gcd.themeScale * gcd.themeScale
- signal clicked
- smooth: true
- placeholderTextColor: Theme.altTextColor
-
- background: Rectangle {
- id: bg
- anchors.fill: parent
- color: Theme.backgroundMainColor
- border.color: color
- }
-
- Rectangle {
- id: bottomBar
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- height: 2
- color: Theme.mainTextColor
- }
-}
diff --git a/qml/widgets/controls/FlagButton.qml b/qml/widgets/controls/FlagButton.qml
deleted file mode 100644
index 760ed21c..00000000
--- a/qml/widgets/controls/FlagButton.qml
+++ /dev/null
@@ -1,43 +0,0 @@
-import QtGraphicalEffects 1.0
-import QtQuick 2.7
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-import QtQuick.Window 2.11
-import QtQuick.Controls 1.4
-
-Rectangle {
- width: img.width + 10
- height: img.height + 5
- property string emoji
- color: selected ? windowItem.cwtch_color : windowItem.cwtch_background_color
- property bool selected
- property string locale
-
-
- Image {
- id: img
- anchors.centerIn:parent
- opacity: 1.0
-
-
- source: gcd.assetPath + "twemoji/72x72/" + emoji + ".png"
-
-
- MouseArea {
- anchors.fill: parent
-
- onClicked: {
- gcd.setLocale(locale)
- }
- }
- }
-
- Connections {
- target: gcd
-
- onSupplySettings: function(zoom, newLocale) {
- selected = newLocale == locale
- }
- }
-}
diff --git a/qml/widgets/controls/ImageButton.qml b/qml/widgets/controls/ImageButton.qml
deleted file mode 100644
index b7665c0a..00000000
--- a/qml/widgets/controls/ImageButton.qml
+++ /dev/null
@@ -1,33 +0,0 @@
-import QtQuick 2.4
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Material 2.0
-import QtQuick.Layouts 1.3
-Item {
- id: root
- property alias source: img.source
- property int size: 24
- property string tooltip: ""
- width: size
- height: size
- signal clicked()
-
- ToolTip.visible: tooltip != "" && ma.containsMouse
- ToolTip.text: tooltip
-
- Image {
- id: img
- width: root.size * (ma.pressed ? 0.5 : 0.8)
- height: root.size * (ma.pressed ? 0.5 : 0.8)
- anchors.topMargin: ma.pressed ? 2 : 0
- anchors.leftMargin: anchors.topMargin
- anchors.centerIn: parent
- }
-
- MouseArea {
- id: ma
- anchors.fill: root
-
- onClicked: root.clicked()
- hoverEnabled: tooltip != ""
- }
-}
diff --git a/qml/widgets/controls/Loader.qml b/qml/widgets/controls/Loader.qml
deleted file mode 100644
index 0aa71328..00000000
--- a/qml/widgets/controls/Loader.qml
+++ /dev/null
@@ -1,38 +0,0 @@
-/****************************************************************************
-**
-** The MIT License (MIT)
-**
-** Copyright (c) 2014 Ricardo do Valle Flores de Oliveira
-**
-** $BEGIN_LICENSE:MIT$
-** Permission is hereby granted, free of charge, to any person obtaining a copy
-** of this software and associated documentation files (the "Software"), to deal
-** in the Software without restriction, including without limitation the rights
-** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-** copies of the Software, and to permit persons to whom the Software is
-** furnished to do so, subject to the following conditions:
-**
-** The above copyright notice and this permission notice shall be included in
-** all copies or substantial portions of the Software.
-**
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-** SOFTWARE.
-**
-** $END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-FontLoader {
- property string resource
- property bool loaded: false
-
- source: resource
- onStatusChanged: (status === FontLoader.Ready) ? loaded = true : loaded = false
-}
diff --git a/qml/widgets/controls/Variables.qml b/qml/widgets/controls/Variables.qml
deleted file mode 100644
index c0f51dbd..00000000
--- a/qml/widgets/controls/Variables.qml
+++ /dev/null
@@ -1,580 +0,0 @@
-/****************************************************************************
-**
-** The MIT License (MIT)
-**
-** Copyright (c) 2014 Ricardo do Valle Flores de Oliveira
-**
-** $BEGIN_LICENSE:MIT$
-** Permission is hereby granted, free of charge, to any person obtaining a copy
-** of this software and associated documentation files (the "Software"), to deal
-** in the Software without restriction, including without limitation the rights
-** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-** copies of the Software, and to permit persons to whom the Software is
-** furnished to do so, subject to the following conditions:
-**
-** The above copyright notice and this permission notice shall be included in
-** all copies or substantial portions of the Software.
-**
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-** SOFTWARE.
-**
-** $END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-QtObject {
- readonly property string fa_adjust : "\uf042"
- readonly property string fa_adn : "\uf170"
- readonly property string fa_align_center : "\uf037"
- readonly property string fa_align_justify : "\uf039"
- readonly property string fa_align_left : "\uf036"
- readonly property string fa_align_right : "\uf038"
- readonly property string fa_ambulance : "\uf0f9"
- readonly property string fa_anchor : "\uf13d"
- readonly property string fa_android : "\uf17b"
- readonly property string fa_angellist : "\uf209"
- readonly property string fa_angle_double_down : "\uf103"
- readonly property string fa_angle_double_left : "\uf100"
- readonly property string fa_angle_double_right : "\uf101"
- readonly property string fa_angle_double_up : "\uf102"
- readonly property string fa_angle_down : "\uf107"
- readonly property string fa_angle_left : "\uf104"
- readonly property string fa_angle_right : "\uf105"
- readonly property string fa_angle_up : "\uf106"
- readonly property string fa_apple : "\uf179"
- readonly property string fa_archive : "\uf187"
- readonly property string fa_area_chart : "\uf1fe"
- readonly property string fa_arrow_circle_down : "\uf0ab"
- readonly property string fa_arrow_circle_left : "\uf0a8"
- readonly property string fa_arrow_circle_o_down : "\uf01a"
- readonly property string fa_arrow_circle_o_left : "\uf190"
- readonly property string fa_arrow_circle_o_right : "\uf18e"
- readonly property string fa_arrow_circle_o_up : "\uf01b"
- readonly property string fa_arrow_circle_right : "\uf0a9"
- readonly property string fa_arrow_circle_up : "\uf0aa"
- readonly property string fa_arrow_down : "\uf063"
- readonly property string fa_arrow_left : "\uf060"
- readonly property string fa_arrow_right : "\uf061"
- readonly property string fa_arrow_up : "\uf062"
- readonly property string fa_arrows : "\uf047"
- readonly property string fa_arrows_alt : "\uf0b2"
- readonly property string fa_arrows_h : "\uf07e"
- readonly property string fa_arrows_v : "\uf07d"
- readonly property string fa_asterisk : "\uf069"
- readonly property string fa_at : "\uf1fa"
- readonly property string fa_automobile : "\uf1b9"
- readonly property string fa_backward : "\uf04a"
- readonly property string fa_ban : "\uf05e"
- readonly property string fa_bank : "\uf19c"
- readonly property string fa_bar_chart_o : "\uf080"
- readonly property string fa_barcode : "\uf02a"
- readonly property string fa_bars : "\uf0c9"
- readonly property string fa_beer : "\uf0fc"
- readonly property string fa_behance : "\uf1b4"
- readonly property string fa_behance_square : "\uf1b5"
- readonly property string fa_bell : "\uf0f3"
- readonly property string fa_bell_o : "\uf0a2"
- readonly property string fa_bell_slash : "\uf1f6"
- readonly property string fa_bell_slash_o : "\uf1f7"
- readonly property string fa_bicycle : "\uf206"
- readonly property string fa_binoculars : "\uf1e5"
- readonly property string fa_birthday_cake : "\uf1fd"
- readonly property string fa_bitbucket : "\uf171"
- readonly property string fa_bitbucket_square : "\uf172"
- readonly property string fa_bitcoin : "\uf15a"
- readonly property string fa_bold : "\uf032"
- readonly property string fa_bolt : "\uf0e7"
- readonly property string fa_bomb : "\uf1e2"
- readonly property string fa_book : "\uf02d"
- readonly property string fa_bookmark : "\uf02e"
- readonly property string fa_bookmark_o : "\uf097"
- readonly property string fa_briefcase : "\uf0b1"
- readonly property string fa_btc : "\uf15a"
- readonly property string fa_bug : "\uf188"
- readonly property string fa_building : "\uf1ad"
- readonly property string fa_building_o : "\uf0f7"
- readonly property string fa_bullhorn : "\uf0a1"
- readonly property string fa_bullseye : "\uf140"
- readonly property string $fa_bus : "\uf207"
- readonly property string fa_cab : "\uf1ba"
- readonly property string $fa_calculator : "\uf1ec"
- readonly property string fa_calendar : "\uf073"
- readonly property string fa_calendar_o : "\uf133"
- readonly property string fa_camera : "\uf030"
- readonly property string fa_camera_retro : "\uf083"
- readonly property string fa_car : "\uf1b9"
- readonly property string fa_caret_down : "\uf0d7"
- readonly property string fa_caret_left : "\uf0d9"
- readonly property string fa_caret_right : "\uf0da"
- readonly property string fa_caret_square_o_down : "\uf150"
- readonly property string fa_caret_square_o_left : "\uf191"
- readonly property string fa_caret_square_o_right : "\uf152"
- readonly property string fa_caret_square_o_up : "\uf151"
- readonly property string fa_caret_up : "\uf0d8"
- readonly property string fa_cc : "\uf20a"
- readonly property string fa_cc_amex : "\uf1f3"
- readonly property string fa_cc_discover : "\uf1f2"
- readonly property string fa_cc_mastercard : "\uf1f1"
- readonly property string fa_cc_paypal : "\uf1f4"
- readonly property string fa_cc_stripe : "\uf1f5"
- readonly property string fa_cc_visa : "\uf1f0"
- readonly property string fa_certificate : "\uf0a3"
- readonly property string fa_chain : "\uf0c1"
- readonly property string fa_chain_broken : "\uf127"
- readonly property string fa_check : "\uf00c"
- readonly property string fa_check_circle : "\uf058"
- readonly property string fa_check_circle_o : "\uf05d"
- readonly property string fa_check_square : "\uf14a"
- readonly property string fa_check_square_o : "\uf046"
- readonly property string fa_chevron_circle_down : "\uf13a"
- readonly property string fa_chevron_circle_left : "\uf137"
- readonly property string fa_chevron_circle_right : "\uf138"
- readonly property string fa_chevron_circle_up : "\uf139"
- readonly property string fa_chevron_down : "\uf078"
- readonly property string fa_chevron_left : "\uf053"
- readonly property string fa_chevron_right : "\uf054"
- readonly property string fa_chevron_up : "\uf077"
- readonly property string fa_child : "\uf1ae"
- readonly property string fa_circle : "\uf111"
- readonly property string fa_circle_o : "\uf10c"
- readonly property string fa_circle_o_notch : "\uf1ce"
- readonly property string fa_circle_thin : "\uf1db"
- readonly property string fa_clipboard : "\uf0ea"
- readonly property string fa_clock_o : "\uf017"
- readonly property string fa_cloud : "\uf0c2"
- readonly property string fa_cloud_download : "\uf0ed"
- readonly property string fa_cloud_upload : "\uf0ee"
- readonly property string fa_cny : "\uf157"
- readonly property string fa_code : "\uf121"
- readonly property string fa_code_fork : "\uf126"
- readonly property string fa_codepen : "\uf1cb"
- readonly property string fa_coffee : "\uf0f4"
- readonly property string fa_cog : "\uf013"
- readonly property string fa_cogs : "\uf085"
- readonly property string fa_columns : "\uf0db"
- readonly property string fa_comment : "\uf075"
- readonly property string fa_comment_o : "\uf0e5"
- readonly property string fa_comments : "\uf086"
- readonly property string fa_comments_o : "\uf0e6"
- readonly property string fa_compass : "\uf14e"
- readonly property string fa_compress : "\uf066"
- readonly property string fa_copy : "\uf0c5"
- readonly property string fa_copyright : "\uf1f9"
- readonly property string fa_credit_card : "\uf09d"
- readonly property string fa_crop : "\uf125"
- readonly property string fa_crosshairs : "\uf05b"
- readonly property string fa_css3 : "\uf13c"
- readonly property string fa_cube : "\uf1b2"
- readonly property string fa_cubes : "\uf1b3"
- readonly property string fa_cut : "\uf0c4"
- readonly property string fa_cutlery : "\uf0f5"
- readonly property string fa_dashboard : "\uf0e4"
- readonly property string fa_database : "\uf1c0"
- readonly property string fa_dedent : "\uf03b"
- readonly property string fa_delicious : "\uf1a5"
- readonly property string fa_desktop : "\uf108"
- readonly property string fa_deviantart : "\uf1bd"
- readonly property string fa_digg : "\uf1a6"
- readonly property string fa_dollar : "\uf155"
- readonly property string fa_dot_circle_o : "\uf192"
- readonly property string fa_download : "\uf019"
- readonly property string fa_dribbble : "\uf17d"
- readonly property string fa_dropbox : "\uf16b"
- readonly property string fa_drupal : "\uf1a9"
- readonly property string fa_edit : "\uf044"
- readonly property string fa_eject : "\uf052"
- readonly property string fa_ellipsis_h : "\uf141"
- readonly property string fa_ellipsis_v : "\uf142"
- readonly property string fa_empire : "\uf1d1"
- readonly property string fa_envelope : "\uf0e0"
- readonly property string fa_envelope_o : "\uf003"
- readonly property string fa_envelope_square : "\uf199"
- readonly property string fa_eraser : "\uf12d"
- readonly property string fa_eur : "\uf153"
- readonly property string fa_euro : "\uf153"
- readonly property string fa_exchange : "\uf0ec"
- readonly property string fa_exclamation : "\uf12a"
- readonly property string fa_exclamation_circle : "\uf06a"
- readonly property string fa_exclamation_triangle : "\uf071"
- readonly property string fa_expand : "\uf065"
- readonly property string fa_external_link : "\uf08e"
- readonly property string fa_external_link_square : "\uf14c"
- readonly property string fa_eye : "\uf06e"
- readonly property string fa_eye_slash : "\uf070"
- readonly property string fa_eyedropper : "\uf1fb"
- readonly property string fa_facebook : "\uf09a"
- readonly property string fa_facebook_square : "\uf082"
- readonly property string fa_fast_backward : "\uf049"
- readonly property string fa_fast_forward : "\uf050"
- readonly property string fa_fax : "\uf1ac"
- readonly property string fa_female : "\uf182"
- readonly property string fa_fighter_jet : "\uf0fb"
- readonly property string fa_file : "\uf15b"
- readonly property string fa_file_archive_o : "\uf1c6"
- readonly property string fa_file_audio_o : "\uf1c7"
- readonly property string fa_file_code_o : "\uf1c9"
- readonly property string fa_file_excel_o : "\uf1c3"
- readonly property string fa_file_image_o : "\uf1c5"
- readonly property string fa_file_movie_o : "\uf1c8"
- readonly property string fa_file_o : "\uf016"
- readonly property string fa_file_pdf_o : "\uf1c1"
- readonly property string fa_file_photo_o : "\uf1c5"
- readonly property string fa_file_picture_o : "\uf1c5"
- readonly property string fa_file_powerpoint_o : "\uf1c4"
- readonly property string fa_file_sound_o : "\uf1c7"
- readonly property string fa_file_text : "\uf15c"
- readonly property string fa_file_text_o : "\uf0f6"
- readonly property string fa_file_video_o : "\uf1c8"
- readonly property string fa_file_word_o : "\uf1c2"
- readonly property string fa_file_zip_o : "\uf1c6"
- readonly property string fa_files_o : "\uf0c5"
- readonly property string fa_film : "\uf008"
- readonly property string fa_filter : "\uf0b0"
- readonly property string fa_fire : "\uf06d"
- readonly property string fa_fire_extinguisher : "\uf134"
- readonly property string fa_flag : "\uf024"
- readonly property string fa_flag_checkered : "\uf11e"
- readonly property string fa_flag_o : "\uf11d"
- readonly property string fa_flash : "\uf0e7"
- readonly property string fa_flask : "\uf0c3"
- readonly property string fa_flickr : "\uf16e"
- readonly property string fa_floppy_o : "\uf0c7"
- readonly property string fa_folder : "\uf07b"
- readonly property string fa_folder_o : "\uf114"
- readonly property string fa_folder_open : "\uf07c"
- readonly property string fa_folder_open_o : "\uf115"
- readonly property string fa_font : "\uf031"
- readonly property string fa_forward : "\uf04e"
- readonly property string fa_foursquare : "\uf180"
- readonly property string fa_frown_o : "\uf119"
- readonly property string fa_futbol_o : "\uf1e3"
- readonly property string fa_gamepad : "\uf11b"
- readonly property string fa_gavel : "\uf0e3"
- readonly property string fa_gbp : "\uf154"
- readonly property string fa_ge : "\uf1d1"
- readonly property string fa_gear : "\uf013"
- readonly property string fa_gears : "\uf085"
- readonly property string fa_gift : "\uf06b"
- readonly property string fa_git : "\uf1d3"
- readonly property string fa_git_square : "\uf1d2"
- readonly property string fa_github : "\uf09b"
- readonly property string fa_github_alt : "\uf113"
- readonly property string fa_github_square : "\uf092"
- readonly property string fa_gittip : "\uf184"
- readonly property string fa_glass : "\uf000"
- readonly property string fa_globe : "\uf0ac"
- readonly property string fa_google : "\uf1a0"
- readonly property string fa_google_plus : "\uf0d5"
- readonly property string fa_google_plus_square : "\uf0d4"
- readonly property string fa_google_wallet : "\uf1ee"
- readonly property string fa_graduation_cap : "\uf19d"
- readonly property string fa_group : "\uf0c0"
- readonly property string fa_h_square : "\uf0fd"
- readonly property string fa_hacker_news : "\uf1d4"
- readonly property string fa_hand_o_down : "\uf0a7"
- readonly property string fa_hand_o_left : "\uf0a5"
- readonly property string fa_hand_o_right : "\uf0a4"
- readonly property string fa_hand_o_up : "\uf0a6"
- readonly property string fa_hdd_o : "\uf0a0"
- readonly property string fa_header : "\uf1dc"
- readonly property string fa_headphones : "\uf025"
- readonly property string fa_heart : "\uf004"
- readonly property string fa_heart_o : "\uf08a"
- readonly property string fa_history : "\uf1da"
- readonly property string fa_home : "\uf015"
- readonly property string fa_hospital_o : "\uf0f8"
- readonly property string fa_html5 : "\uf13b"
- readonly property string fa_ils : "\uf20b"
- readonly property string fa_image : "\uf03e"
- readonly property string fa_inbox : "\uf01c"
- readonly property string fa_indent : "\uf03c"
- readonly property string fa_info : "\uf129"
- readonly property string fa_info_circle : "\uf05a"
- readonly property string fa_inr : "\uf156"
- readonly property string fa_instagram : "\uf16d"
- readonly property string fa_institution : "\uf19c"
- readonly property string fa_ioxhost : "\uf208"
- readonly property string fa_italic : "\uf033"
- readonly property string fa_joomla : "\uf1aa"
- readonly property string fa_jpy : "\uf157"
- readonly property string fa_jsfiddle : "\uf1cc"
- readonly property string fa_key : "\uf084"
- readonly property string fa_keyboard_o : "\uf11c"
- readonly property string fa_krw : "\uf159"
- readonly property string fa_language : "\uf1ab"
- readonly property string fa_laptop : "\uf109"
- readonly property string fa_lastfm : "\uf202"
- readonly property string fa_lastfm_square : "\uf203"
- readonly property string fa_leaf : "\uf06c"
- readonly property string fa_legal : "\uf0e3"
- readonly property string fa_lemon_o : "\uf094"
- readonly property string fa_level_down : "\uf149"
- readonly property string fa_level_up : "\uf148"
- readonly property string fa_life_bouy : "\uf1cd"
- readonly property string fa_life_buoy : "\uf1cd"
- readonly property string fa_life_ring : "\uf1cd"
- readonly property string fa_life_saver : "\uf1cd"
- readonly property string fa_lightbulb_o : "\uf0eb"
- readonly property string fa_line_chart : "\uf201"
- readonly property string fa_link : "\uf0c1"
- readonly property string fa_linkedin : "\uf0e1"
- readonly property string fa_linkedin_square : "\uf08c"
- readonly property string fa_linux : "\uf17c"
- readonly property string fa_list : "\uf03a"
- readonly property string fa_list_alt : "\uf022"
- readonly property string fa_list_ol : "\uf0cb"
- readonly property string fa_list_ul : "\uf0ca"
- readonly property string fa_location_arrow : "\uf124"
- readonly property string fa_lock : "\uf023"
- readonly property string fa_long_arrow_down : "\uf175"
- readonly property string fa_long_arrow_left : "\uf177"
- readonly property string fa_long_arrow_right : "\uf178"
- readonly property string fa_long_arrow_up : "\uf176"
- readonly property string fa_magic : "\uf0d0"
- readonly property string fa_magnet : "\uf076"
- readonly property string fa_mail_forward : "\uf064"
- readonly property string fa_mail_reply : "\uf112"
- readonly property string fa_mail_reply_all : "\uf122"
- readonly property string fa_male : "\uf183"
- readonly property string fa_map_marker : "\uf041"
- readonly property string fa_maxcdn : "\uf136"
- readonly property string fa_meanpath : "\uf20c"
- readonly property string fa_medkit : "\uf0fa"
- readonly property string fa_meh_o : "\uf11a"
- readonly property string fa_microphone : "\uf130"
- readonly property string fa_microphone_slash : "\uf131"
- readonly property string fa_minus : "\uf068"
- readonly property string fa_minus_circle : "\uf056"
- readonly property string fa_minus_square : "\uf146"
- readonly property string fa_minus_square_o : "\uf147"
- readonly property string fa_mobile : "\uf10b"
- readonly property string fa_mobile_phone : "\uf10b"
- readonly property string fa_money : "\uf0d6"
- readonly property string fa_moon_o : "\uf186"
- readonly property string fa_mortar_board : "\uf19d"
- readonly property string fa_music : "\uf001"
- readonly property string fa_navicon : "\uf0c9"
- readonly property string fa_newspaper_o : "\uf1ea"
- readonly property string fa_openid : "\uf19b"
- readonly property string fa_outdent : "\uf03b"
- readonly property string fa_pagelines : "\uf18c"
- readonly property string fa_paint_brush : "\uf1fc"
- readonly property string fa_paper_plane : "\uf1d8"
- readonly property string fa_paper_plane_o : "\uf1d9"
- readonly property string fa_paperclip : "\uf0c6"
- readonly property string fa_paragraph : "\uf1dd"
- readonly property string fa_paste : "\uf0ea"
- readonly property string fa_pause : "\uf04c"
- readonly property string fa_paw : "\uf1b0"
- readonly property string fa_paypal : "\uf1ed"
- readonly property string fa_pencil : "\uf040"
- readonly property string fa_pencil_square : "\uf14b"
- readonly property string fa_pencil_square_o : "\uf044"
- readonly property string fa_phone : "\uf095"
- readonly property string fa_phone_square : "\uf098"
- readonly property string fa_photo : "\uf03e"
- readonly property string fa_picture_o : "\uf03e"
- readonly property string fa_pie_chart : "\uf200"
- readonly property string fa_pied_piper : "\uf1a7"
- readonly property string fa_pied_piper_alt : "\uf1a8"
- readonly property string fa_pinterest : "\uf0d2"
- readonly property string fa_pinterest_square : "\uf0d3"
- readonly property string fa_plane : "\uf072"
- readonly property string fa_play : "\uf04b"
- readonly property string fa_play_circle : "\uf144"
- readonly property string fa_play_circle_o : "\uf01d"
- readonly property string fa_plug : "\uf1e6"
- readonly property string fa_plus : "\uf067"
- readonly property string fa_plus_circle : "\uf055"
- readonly property string fa_plus_square : "\uf0fe"
- readonly property string fa_plus_square_o : "\uf196"
- readonly property string fa_power_off : "\uf011"
- readonly property string fa_print : "\uf02f"
- readonly property string fa_puzzle_piece : "\uf12e"
- readonly property string fa_qq : "\uf1d6"
- readonly property string fa_qrcode : "\uf029"
- readonly property string fa_question : "\uf128"
- readonly property string fa_question_circle : "\uf059"
- readonly property string fa_quote_left : "\uf10d"
- readonly property string fa_quote_right : "\uf10e"
- readonly property string fa_ra : "\uf1d0"
- readonly property string fa_random : "\uf074"
- readonly property string fa_rebel : "\uf1d0"
- readonly property string fa_recycle : "\uf1b8"
- readonly property string fa_reddit : "\uf1a1"
- readonly property string fa_reddit_square : "\uf1a2"
- readonly property string fa_refresh : "\uf021"
- readonly property string fa_remove : "\uf00d"
- readonly property string fa_renren : "\uf18b"
- readonly property string fa_reorder : "\uf0c9"
- readonly property string fa_repeat : "\uf01e"
- readonly property string fa_reply : "\uf112"
- readonly property string fa_reply_all : "\uf122"
- readonly property string fa_retweet : "\uf079"
- readonly property string fa_rmb : "\uf157"
- readonly property string fa_road : "\uf018"
- readonly property string fa_rocket : "\uf135"
- readonly property string fa_rotate_left : "\uf0e2"
- readonly property string fa_rotate_right : "\uf01e"
- readonly property string fa_rouble : "\uf158"
- readonly property string fa_rss : "\uf09e"
- readonly property string fa_rss_square : "\uf143"
- readonly property string fa_rub : "\uf158"
- readonly property string fa_ruble : "\uf158"
- readonly property string fa_rupee : "\uf156"
- readonly property string fa_save : "\uf0c7"
- readonly property string fa_scissors : "\uf0c4"
- readonly property string fa_search : "\uf002"
- readonly property string fa_search_minus : "\uf010"
- readonly property string fa_search_plus : "\uf00e"
- readonly property string fa_send : "\uf1d8"
- readonly property string fa_send_o : "\uf1d9"
- readonly property string fa_share : "\uf064"
- readonly property string fa_share_alt : "\uf1e0"
- readonly property string fa_share_alt_square : "\uf1e1"
- readonly property string fa_share_square : "\uf14d"
- readonly property string fa_share_square_o : "\uf045"
- readonly property string fa_shekel : "\uf20b"
- readonly property string fa_sheqel : "\uf20b"
- readonly property string fa_shield : "\uf132"
- readonly property string fa_shopping_cart : "\uf07a"
- readonly property string fa_sign_in : "\uf090"
- readonly property string fa_sign_out : "\uf08b"
- readonly property string fa_signal : "\uf012"
- readonly property string fa_sitemap : "\uf0e8"
- readonly property string fa_skype : "\uf17e"
- readonly property string fa_slack : "\uf198"
- readonly property string fa_sliders : "\uf1de"
- readonly property string fa_slideshare : "\uf1e7"
- readonly property string fa_smile_o : "\uf118"
- readonly property string fa_soccer_ball_o : "\uf1e3"
- readonly property string fa_sort : "\uf0dc"
- readonly property string fa_sort_alpha_asc : "\uf15d"
- readonly property string fa_sort_alpha_desc : "\uf15e"
- readonly property string fa_sort_amount_asc : "\uf160"
- readonly property string fa_sort_amount_desc : "\uf161"
- readonly property string fa_sort_asc : "\uf0de"
- readonly property string fa_sort_desc : "\uf0dd"
- readonly property string fa_sort_down : "\uf0dd"
- readonly property string fa_sort_numeric_asc : "\uf162"
- readonly property string fa_sort_numeric_desc : "\uf163"
- readonly property string fa_sort_up : "\uf0de"
- readonly property string fa_soundcloud : "\uf1be"
- readonly property string fa_space_shuttle : "\uf197"
- readonly property string fa_spinner : "\uf110"
- readonly property string fa_spoon : "\uf1b1"
- readonly property string fa_spotify : "\uf1bc"
- readonly property string fa_square : "\uf0c8"
- readonly property string fa_square_o : "\uf096"
- readonly property string fa_stack_exchange : "\uf18d"
- readonly property string fa_stack_overflow : "\uf16c"
- readonly property string fa_star : "\uf005"
- readonly property string fa_star_half : "\uf089"
- readonly property string fa_star_half_empty : "\uf123"
- readonly property string fa_star_half_full : "\uf123"
- readonly property string fa_star_half_o : "\uf123"
- readonly property string fa_star_o : "\uf006"
- readonly property string fa_steam : "\uf1b6"
- readonly property string fa_steam_square : "\uf1b7"
- readonly property string fa_step_backward : "\uf048"
- readonly property string fa_step_forward : "\uf051"
- readonly property string fa_stethoscope : "\uf0f1"
- readonly property string fa_stop : "\uf04d"
- readonly property string fa_strikethrough : "\uf0cc"
- readonly property string fa_stumbleupon : "\uf1a4"
- readonly property string fa_stumbleupon_circle : "\uf1a3"
- readonly property string fa_subscript : "\uf12c"
- readonly property string fa_suitcase : "\uf0f2"
- readonly property string fa_sun_o : "\uf185"
- readonly property string fa_superscript : "\uf12b"
- readonly property string fa_support : "\uf1cd"
- readonly property string fa_table : "\uf0ce"
- readonly property string fa_tablet : "\uf10a"
- readonly property string fa_tachometer : "\uf0e4"
- readonly property string fa_tag : "\uf02b"
- readonly property string fa_tags : "\uf02c"
- readonly property string fa_tasks : "\uf0ae"
- readonly property string fa_taxi : "\uf1ba"
- readonly property string fa_tencent_weibo : "\uf1d5"
- readonly property string fa_terminal : "\uf120"
- readonly property string fa_text_height : "\uf034"
- readonly property string fa_text_width : "\uf035"
- readonly property string fa_th : "\uf00a"
- readonly property string fa_th_large : "\uf009"
- readonly property string fa_th_list : "\uf00b"
- readonly property string fa_thumb_tack : "\uf08d"
- readonly property string fa_thumbs_down : "\uf165"
- readonly property string fa_thumbs_o_down : "\uf088"
- readonly property string fa_thumbs_o_up : "\uf087"
- readonly property string fa_thumbs_up : "\uf164"
- readonly property string fa_ticket : "\uf145"
- readonly property string fa_times : "\uf00d"
- readonly property string fa_times_circle : "\uf057"
- readonly property string fa_times_circle_o : "\uf05c"
- readonly property string fa_tint : "\uf043"
- readonly property string fa_toggle_down : "\uf150"
- readonly property string fa_toggle_left : "\uf191"
- readonly property string fa_toggle_off : "\uf204"
- readonly property string fa_toggle_on : "\uf205"
- readonly property string fa_toggle_right : "\uf152"
- readonly property string fa_toggle_up : "\uf151"
- readonly property string fa_trash : "\uf1f8"
- readonly property string fa_trash_o : "\uf014"
- readonly property string fa_tree : "\uf1bb"
- readonly property string fa_trello : "\uf181"
- readonly property string fa_trophy : "\uf091"
- readonly property string fa_truck : "\uf0d1"
- readonly property string fa_try : "\uf195"
- readonly property string fa_tty : "\uf1e4"
- readonly property string fa_tumblr : "\uf173"
- readonly property string fa_tumblr_square : "\uf174"
- readonly property string fa_turkish_lira : "\uf195"
- readonly property string fa_twitch : "\uf1e8"
- readonly property string fa_twitter : "\uf099"
- readonly property string fa_twitter_square : "\uf081"
- readonly property string fa_umbrella : "\uf0e9"
- readonly property string fa_underline : "\uf0cd"
- readonly property string fa_undo : "\uf0e2"
- readonly property string fa_university : "\uf19c"
- readonly property string fa_unlink : "\uf127"
- readonly property string fa_unlock : "\uf09c"
- readonly property string fa_unlock_alt : "\uf13e"
- readonly property string fa_unsorted : "\uf0dc"
- readonly property string fa_upload : "\uf093"
- readonly property string fa_usd : "\uf155"
- readonly property string fa_user : "\uf007"
- readonly property string fa_user_md : "\uf0f0"
- readonly property string fa_users : "\uf0c0"
- readonly property string fa_video_camera : "\uf03d"
- readonly property string fa_vimeo_square : "\uf194"
- readonly property string fa_vine : "\uf1ca"
- readonly property string fa_vk : "\uf189"
- readonly property string fa_volume_down : "\uf027"
- readonly property string fa_volume_off : "\uf026"
- readonly property string fa_volume_up : "\uf028"
- readonly property string fa_warning : "\uf071"
- readonly property string fa_wechat : "\uf1d7"
- readonly property string fa_weibo : "\uf18a"
- readonly property string fa_weixin : "\uf1d7"
- readonly property string fa_wheelchair : "\uf193"
- readonly property string fa_wifi : "\uf1eb"
- readonly property string fa_windows : "\uf17a"
- readonly property string fa_won : "\uf159"
- readonly property string fa_wordpress : "\uf19a"
- readonly property string fa_wrench : "\uf0ad"
- readonly property string fa_xing : "\uf168"
- readonly property string fa_xing_square : "\uf169"
- readonly property string fa_yahoo : "\uf19e"
- readonly property string fa_yelp : "\uf1e9"
- readonly property string fa_yen : "\uf157"
- readonly property string fa_youtube : "\uf167"
- readonly property string fa_youtube_play : "\uf16a"
- readonly property string fa_youtube_square : "\uf166"
-}