Compare commits
2 Commits
window-ins
...
caps-lock-
Author | SHA1 | Date | |
---|---|---|---|
|
408d80b26c | ||
|
95e7494ad7 |
1
.gitattributes
vendored
@@ -1 +0,0 @@
|
||||
srcs/juloo.keyboard2/ComposeKeyData.java -diff
|
17
.github/workflows/check-layouts.yml
vendored
@@ -1,26 +1,19 @@
|
||||
name: Check layouts
|
||||
|
||||
# Runs 'gen_layouts.py' and checks that the generated file were uptodate.
|
||||
# This doesn't run 'check_layout.py'.
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
gen-layouts:
|
||||
name: Generated files
|
||||
check-layouts:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v4
|
||||
- run: python3 gen_layouts.py
|
||||
- name: "Check that the generated 'layouts.xml' is uptodate, otherwise run 'python3 gen_layouts.py'"
|
||||
run: git diff --exit-code
|
||||
check-layouts:
|
||||
name: check_layout.output
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v4
|
||||
- run: python3 check_layout.py
|
||||
- name: "Check that the generated 'check_layout.output' is uptodate, otherwise run 'python3 check_layout.py'"
|
||||
- name: Check that the generated layouts.xml is uptodate, run python3 gen_layouts.py otherwise
|
||||
run: git diff --exit-code
|
||||
|
4
.github/workflows/check-translations.yml
vendored
@@ -12,5 +12,5 @@ jobs:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v4
|
||||
- run: python3 sync_translations.py
|
||||
- name: "Check that strings files are uptodate, otherwise run 'python3 sync_translations.py'"
|
||||
run: git add -N . && git diff --exit-code
|
||||
- name: Check that strings files are uptodate, run python3 sync_translations.py otherwise
|
||||
run: git diff --exit-code
|
||||
|
@@ -14,7 +14,7 @@ Python 3 is required to update generated files but not to build the app.
|
||||
For Android Studio users, no more setup is needed.
|
||||
|
||||
For Nix users, the right environment can be obtained with `nix-shell ./shell.nix`.
|
||||
Instructions to install Nix are [here](https://wiki.nixos.org/wiki/Nix_Installation_Guide).
|
||||
Instructions to install Nix are [here](https://nixos.wiki/wiki/Nix_Installation_Guide).
|
||||
|
||||
If you don't use Android Studio or Nix, you have to inform Gradle about the
|
||||
location of your Android SDK by either:
|
||||
@@ -110,10 +110,6 @@ Run `./gradlew checkKeyboardLayouts` to check some properties about your
|
||||
layout. This will change the file `check_layout.output`, which you should
|
||||
commit.
|
||||
|
||||
Layouts are CC0 licensed by default. If you do not want your layout to be
|
||||
released into the public domain, add a copyright notice at the top of the file
|
||||
and a mention in `srcs/layouts/LICENSE`.
|
||||
|
||||
#### Adding a programming layout
|
||||
|
||||
A programming layout must contain all ASCII characters.
|
||||
@@ -180,7 +176,7 @@ the file and the English strings.
|
||||
To check that `strings.xml` is formatted correctly, run
|
||||
`python sync_translations.py`. This will modify your files.
|
||||
|
||||
Store descriptions in `fastlane/metadata/android/` are updated automatically.
|
||||
Store descriptions in `metadata/` are updated automatically.
|
||||
Translating changelogs is not useful.
|
||||
|
||||
The app name might be partially translated, the "Unexpected" word should remain
|
||||
|
@@ -1,3 +0,0 @@
|
||||
github: [ Julow ]
|
||||
liberapay: Julow
|
||||
custom: [ "https://paypal.me/JulesAguillon" ]
|
@@ -20,9 +20,9 @@ This application contains no ads, doesn't make any network requests and is Open
|
||||
|
||||
Usage: to apply the symbols located in the corners of each key, slide your finger in the direction of the symbols. For example, the Settings are opened by sliding in the left down corner.
|
||||
|
||||
| <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" alt="Screenshot-1" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png" alt="Screenshot-2"/> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png" alt="Screenshot-3"/> |
|
||||
| <img src="/metadata/android/en-US/images/phoneScreenshots/1.png" alt="Screenshot-1" /> | <img src="/metadata/android/en-US/images/phoneScreenshots/2.png" alt="Screenshot-2"/> | <img src="/metadata/android/en-US/images/phoneScreenshots/3.png" alt="Screenshot-3"/> |
|
||||
| --- | --- | --- |
|
||||
| <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png" alt="Screenshot-4" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png" alt="Screenshot-5" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png" alt="Screenshot-6" /> |
|
||||
| <img src="/metadata/android/en-US/images/phoneScreenshots/4.png" alt="Screenshot-4" /> | <img src="/metadata/android/en-US/images/phoneScreenshots/5.png" alt="Screenshot-5" /> | <img src="/metadata/android/en-US/images/phoneScreenshots/6.png" alt="Screenshot-6" /> |
|
||||
|
||||
## Similar apps
|
||||
* [Calculator++](https://github.com/Bubu/android-calculatorpp) - Calculator with a similar UX, swipe to corners for advanced math symbols and operators. Works up to Android 13 but maybe unmaintained.
|
||||
|
28
build.gradle
@@ -10,8 +10,8 @@ android {
|
||||
applicationId "juloo.keyboard2"
|
||||
minSdk 11
|
||||
targetSdkVersion 33
|
||||
versionCode 39
|
||||
versionName "1.27.0"
|
||||
versionCode 38
|
||||
versionName "1.26.0"
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
@@ -85,6 +85,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
}
|
||||
|
||||
tasks.register('buildKeyboardFont') {
|
||||
@@ -103,19 +104,10 @@ tasks.register('buildKeyboardFont') {
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('genEmojis') {
|
||||
println "\nGenerating res/raw/emojis.txt"
|
||||
exec {
|
||||
workingDir = projectDir
|
||||
commandLine "python", "gen_emoji.py"
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(Test).configureEach {
|
||||
dependsOn 'genLayoutsList'
|
||||
dependsOn 'checkKeyboardLayouts'
|
||||
dependsOn 'syncTranslations'
|
||||
dependsOn 'compileComposeSequences'
|
||||
}
|
||||
|
||||
tasks.register('genLayoutsList') {
|
||||
@@ -146,19 +138,6 @@ tasks.register('syncTranslations') {
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('compileComposeSequences') {
|
||||
def out = "srcs/juloo.keyboard2/ComposeKeyData.java"
|
||||
println "\nGenerating ${out}"
|
||||
exec {
|
||||
def sequences = new File(projectDir, "srcs/compose").listFiles().findAll {
|
||||
it.name.endsWith(".pre") || it.name.endsWith(".json")
|
||||
}
|
||||
workingDir = projectDir
|
||||
commandLine("python", "srcs/compose/compile.py", *sequences)
|
||||
standardOutput = new FileOutputStream("${projectDir}/${out}")
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named("preBuild") {
|
||||
dependsOn += "initDebugKeystore"
|
||||
dependsOn += "copyRawQwertyUS"
|
||||
@@ -188,7 +167,6 @@ tasks.register('copyLayoutDefinitions')
|
||||
{
|
||||
copy {
|
||||
from "srcs/layouts"
|
||||
include "*.xml"
|
||||
into "build/generated-resources/xml"
|
||||
}
|
||||
}
|
||||
|
@@ -50,10 +50,6 @@ Layout doesn't define some important keys, missing: f11_placeholder, f12_placeho
|
||||
# grek_qwerty
|
||||
Duplicate keys: ;
|
||||
1 warnings
|
||||
# guj_phonetic_in
|
||||
Duplicate keys: ટ, ડ
|
||||
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||
2 warnings
|
||||
# hang_dubeolsik_kr
|
||||
0 warnings
|
||||
# hebr_1_il
|
||||
@@ -69,7 +65,7 @@ Layout doesn't define some important keys, missing: f11_placeholder, f12_placeho
|
||||
1 warnings
|
||||
# latn_bone
|
||||
Layout includes some ASCII punctuation but not all, missing: $
|
||||
Layout redefines the bottom row but some important keys are missing, missing: cursor_left, cursor_right, loc compose, loc end, loc home, loc page_down, loc page_up, loc switch_greekmath, loc voice_typing, switch_backward
|
||||
Layout redefines the bottom row but some important keys are missing, missing: cursor_left, cursor_right, loc end, loc home, loc page_down, loc page_up, loc switch_greekmath, loc voice_typing, switch_backward
|
||||
2 warnings
|
||||
# latn_colemak
|
||||
Some keys contain whitespaces, unexpected: ́
|
||||
@@ -77,14 +73,13 @@ Some keys contain whitespaces, unexpected: ́
|
||||
# latn_dvorak
|
||||
0 warnings
|
||||
# latn_neo2
|
||||
0 warnings
|
||||
Layout redefines the bottom row but some important keys are missing, missing: loc end, loc home, loc page_down, loc page_up
|
||||
1 warnings
|
||||
# latn_qwerty_br
|
||||
0 warnings
|
||||
# latn_qwerty_cz
|
||||
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||
1 warnings
|
||||
# latn_qwerty_da
|
||||
0 warnings
|
||||
# latn_qwerty_es
|
||||
0 warnings
|
||||
# latn_qwerty_gb
|
||||
@@ -102,9 +97,6 @@ Layout doesn't define some important keys, missing: f11_placeholder, f12_placeho
|
||||
# latn_qwerty_se
|
||||
Duplicate keys: !, ', ,, -, ., ?
|
||||
1 warnings
|
||||
# latn_qwerty_sk
|
||||
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||
1 warnings
|
||||
# latn_qwerty_tly
|
||||
Duplicate keys: a, c, j, q
|
||||
Layout doesn't define some important keys, missing: esc, f11_placeholder, f12_placeholder, tab
|
||||
@@ -135,8 +127,6 @@ Layout doesn't define some important keys, missing: f11_placeholder, f12_placeho
|
||||
Layout includes some ASCII punctuation but not all, missing: `
|
||||
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||
2 warnings
|
||||
# shaw_imperial_en
|
||||
0 warnings
|
||||
# urdu_phonetic_ur
|
||||
Duplicate keys:
|
||||
Layout includes some ASCII punctuation but not all, missing: <, >, ?, `, |, ~
|
||||
|
@@ -1,6 +0,0 @@
|
||||
Hlavní funkcí je možnost psát více znaků posunutím kláves směrem k rohům.
|
||||
|
||||
Tato aplikace byla původně navržena pro programátory používající Termux.
|
||||
Nyní je ideální pro každodenní použití.
|
||||
|
||||
Tato aplikace neobsahuje žádné reklamy, nevyužívá připojení k síti a je Open Source.
|
@@ -1,6 +0,0 @@
|
||||
New layouts: QWERTY (Slovak), Gujarati phonetic
|
||||
Add Linux Compose key to type a variety of characters using known combinations.
|
||||
Fixed localized numpad and number row.
|
||||
Many improvements and bug fixes.
|
||||
|
||||
Huge thanks to the contributors: @Yogesh-B, @ChasmSolacer, @matthiakl, @Sestowner, @RyanGibb, @BogdanLata, @RetrogisusDEV, @V6lhost, @ErrrorMaxx, @sdrapha, @vedamanavi
|
@@ -1,6 +0,0 @@
|
||||
A principal característica é que você pode digitar mais caracteres deslizando as teclas para os cantos.
|
||||
|
||||
O app foi criado originalmente para desenvolvedores que usam Termux.
|
||||
Agora aperfeiçoado para o uso diário.
|
||||
|
||||
Este aplicativo não contém anúncios, não faz nenhuma solicitação de rede e é Open Source.
|
@@ -1,6 +0,0 @@
|
||||
Главная особенность клавиатуры — это возможность легко напечатать любой ASCII-символ жестами в углы клавиш.
|
||||
|
||||
Приложение изначально было разработано для использования с Termux.
|
||||
На данный момент оно также удобно в повседневном использовании.
|
||||
|
||||
Приложение не содержит рекламы, не осуществляет никаких запросов в сеть и имеет открытый исходный код.
|
@@ -1,6 +0,0 @@
|
||||
Головна особливість полягає в тому, що ви можете вводити більше символів, проводячи клавіші до кутів.
|
||||
|
||||
Ця програма спочатку була розроблена для програмістів, які використовують Termux.
|
||||
Тепер ідеально підходить для щоденного використання.
|
||||
|
||||
Ця програма не містить реклами, не надсилає жодних мережевих запитів і має відкритий код.
|
@@ -1 +0,0 @@
|
||||
Легка та конфіденційна віртуальна клавіатура для Android.
|
@@ -1,6 +0,0 @@
|
||||
此应用的主要功能是,通过将按键沿四角滑动,您可以输入更多字符。
|
||||
|
||||
此应用最初是为使用 Termux 的程序员而设计的。
|
||||
现在对于日常使用来说也很完美。
|
||||
|
||||
此应用没有广告,不会发送任何网络请求,而且是开源的。
|
@@ -1 +0,0 @@
|
||||
适用于 Android 的轻量级、注重隐私的虚拟键盘。
|
38
gen_emoji.py
@@ -1,38 +0,0 @@
|
||||
import urllib.request
|
||||
import os.path
|
||||
|
||||
EMOJIS_PATH = 'res/raw/emojis.txt'
|
||||
EMOJI_TEST_PATH = 'emoji-test.txt'
|
||||
EMOJI_TEST_URL = 'https://unicode.org/Public/emoji/latest/emoji-test.txt'
|
||||
|
||||
def rawEmojiFromCodes(codes):
|
||||
return ''.join([chr(int(c, 16)) for c in codes])
|
||||
|
||||
def getEmojiTestContents():
|
||||
if os.path.exists(EMOJI_TEST_PATH):
|
||||
print(f'Using existing {EMOJI_TEST_PATH}')
|
||||
else:
|
||||
print(f'Downloading {EMOJI_TEST_URL}')
|
||||
urllib.request.urlretrieve(EMOJI_TEST_URL, EMOJI_TEST_PATH)
|
||||
return open(EMOJI_TEST_PATH, mode='r', encoding='UTF-8').read()
|
||||
|
||||
|
||||
emoji_list = []
|
||||
group_indices = []
|
||||
for line in getEmojiTestContents().splitlines():
|
||||
if line.startswith('# group:'):
|
||||
if len(group_indices) == 0 or len(emoji_list) > group_indices[-1]:
|
||||
group_indices.append(len(emoji_list))
|
||||
elif not line.startswith('#') and 'fully-qualified' in line:
|
||||
codes = line.split(';')[0].split()
|
||||
emoji_list.append(rawEmojiFromCodes(codes))
|
||||
|
||||
with open(EMOJIS_PATH, 'w', encoding='UTF-8') as emojis:
|
||||
for e in emoji_list:
|
||||
emojis.write(f'{e}\n')
|
||||
emojis.write('\n')
|
||||
|
||||
emojis.write(' '.join([str(g) for g in group_indices]))
|
||||
emojis.write('\n')
|
||||
|
||||
print(f'Parsed {len(emoji_list)} emojis in {len(group_indices)}')
|
18
metadata/android/cs/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Tato aplikace je virtuální klávesnící pro Android. Umožňuje rychlejší a plynulejší psaní písmen i symbolů (vč. diakritiky), a to ve vícero jazycích a vlastních rozloženích. To vše zdarma, bez reklam a bez plýtvání vašeho uložiště. Můžete psát libovolné znaky pomocí gest (ASCII i Unicode), používat mrtvé (univerzální) klávesy pro diakritická znaménka a mnohem více.
|
||||
|
||||
Klávesnice zobrazuje až 4 další znaky v rozích každé klávesy. Tyto znaky jsou vyvolány přejetím prstu do vybraného rohu.
|
||||
|
||||
No zkrátka...:
|
||||
|
||||
- Obsahuje každý znak a speciální klávesu, která je běžnou součástí počítačové klávesnice. To přijde vhod obzvláště při používání aplikací jako např. Termux
|
||||
|
||||
- Můžete používat modifikační klávesy, obohaceny o speciální klávesy (např. Tab, Esc, šipky, F klávesy, ale také Ctrl nebo Alt !)
|
||||
|
||||
- Můžete psát vícero jazyky rychleji a bez chyb. Diakritická znaménka mohou být vyvolána i za pomocí mrtvých kláves. Nejdříve zvolte diakritické znaménko a pak znak, který chcete obohatit o toto znaménko.
|
||||
|
||||
- Je vysoce nenáročná a rychlá. Zabere 500x méně místa než klávesnice od Googlu (Gboard) a 15x méně než výchozí klávesnice systému. Bez reklam, bez sledování.
|
||||
|
||||
- Má vícero rozložení: QWERTY, QWERTZ, AZERTY. Motivy: Bílá, Tmavá, OLED Černá. A mnoho dalších které si s drobnou znalostí programování můžete upravovat dle libosti.
|
||||
|
||||
Nezapomeňte... Jako každá virtuální klávesnice, i tato musí být aktivována v nastavení systému (zařízení). Otevřte (Systémové) Nastavení a přejděte na:
|
||||
(Další nastavení NEBO Nastavení systému) > Jazyk & způsob zadávání > Spravovat klávesnice.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
1
metadata/android/fa/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
صفحه کلید غیرمنتظره
|
@@ -15,4 +15,4 @@
|
||||
- 다중 레이아웃: QWERTY, QWERTZ, AZERTY. 다양한 테마: White, Dark, OLED Black. 또한 다른 많은 옵션들.
|
||||
|
||||
다른 가상 키보드와 마찬가지로 시스템 설정에서 활성화해야 합니다. 시스템 설정을 열고 다음으로 이동합니다.
|
||||
시스템 > 언어 및 입력 > 키보드 > 키보드 관리.
|
||||
시스템 > 언어 및 입력 > 키보드 > 키보드 관리.
|
18
metadata/android/pt/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Um teclado virtual para aparelhos Android. Os recursos principais são facilidade de digitar todos os caracteres ASCII deslizando o dedo, teclas "mortas" para acentos e teclas modificadoras e a presença de teclas especiais (tab, esc, setas, etc..).
|
||||
|
||||
O teclado mostra até 4 caracteres extras nos cantos de cada tecla. Esses caracteres são digitáveis com o deslizar do dedo na tecla.
|
||||
|
||||
Alguns dos recursos interessantes:
|
||||
|
||||
- Todos caracteres e teclas especiais que também estão disponíveis num teclado de PC. Perfeito para usar com aplicativos como Termux.
|
||||
|
||||
- Incluindo Tab, Esc, as setas e teclas de função, e também Ctrl e Alt!
|
||||
|
||||
- Caracteres acentuados são digitáveis usando teclas "mortas". Primeiro ative o acento e depois digite a letra.
|
||||
|
||||
- Muito leve e rápido. Ocupa 500x menos espaço que o teclado da Google e 15x menos espaço que o teclado padrão. Sem propaganda, sem rastreio.
|
||||
|
||||
- Vários layouts: QWERTY, QWERTZ, AZERTY. Temas: Branco, Escuro, Preto OLED. E muitas outras opções.
|
||||
|
||||
Como qualquer outro teclado virtual, tem de ser ativado nas configurações de sistema. Abra as configurações e vá para:
|
||||
Sistema > Idioma e entrada > Teclado virtual > Gerenciar teclados virtuais.
|
6
metadata/android/ru/full_description.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Главная особенность клавиатуры - это возможность легко напечатать любой ASCII символ за счет свайпов в углы клавиш.
|
||||
|
||||
Приложение изначально было разработано для использования Termux.
|
||||
На данный момент, оно также удобно в повседневном использовании.
|
||||
|
||||
Приложение не содержит рекламы, не осуществляет никаких запросов в сеть и имеет открытый исходный код.
|
@@ -1 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#999999" android:pathData="M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z" /></vector>
|