HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
ucd_east_asian_widths.hpp
1// This file was generated by generate_unicode_data.py
2
3#pragma once
4
5#include "../utility/utility.hpp"
6#include <cstdint>
7#include <optional>
8#include <bit>
9#include <string_view>
10#include <string>
11
12hi_export_module(hikogui.unicode.ucd_east_asian_widths);
13
14hi_export namespace hi {
15inline namespace v1 {
16namespace detail {
17
18constexpr auto ucd_east_asian_widths_chunk_size = 256_uz;
19constexpr auto ucd_east_asian_widths_index_width = 6_uz;
20constexpr auto ucd_east_asian_widths_indices_size = 4352_uz;
21constexpr auto ucd_east_asian_width_width = 3_uz;
22
23static_assert(std::has_single_bit(ucd_east_asian_widths_chunk_size));
24
25constexpr uint8_t ucd_east_asian_widths_indices_bytes[3280] = {
26 0, 16,131, 16, 81, 69, 20, 81, 69, 20, 81, 69, 20, 97, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 28,130, 74, 44,195, 78, 20,241,
27 80, 20, 84, 82, 77, 69, 86, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,117,150, 89,101,150, 89,
28 101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150,
29 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 96, 81, 69, 21,145,
30 69, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,
31 101,154, 20, 81, 69, 20, 81, 69,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,101,133, 20, 87, 29,
32 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
33 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
34 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 94, 89,101,150, 89,101,150, 89,101,150, 89,101,150,
35 89,101,150, 89,101,159, 89,101,150,130, 17, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
36 69, 20, 81, 98, 90, 57, 5, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
37 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,150,105,232,166,170,236, 22,219,133, 20, 81, 69,
38 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,
39 150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,
40 101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150,
41 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,
42 150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,
43 101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,175,
44 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,
45 150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,
46 101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150,
47 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,
48 150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,
49 101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,150, 89,101,175,
50 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
51 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
52 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
53 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
54 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
55 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
56 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
57 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
58 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
59 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
60 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
61 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
62 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
63 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
64 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
65 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
66 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
67 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
68 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
69 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
70 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
71 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
72 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
73 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
74 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
75 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
76 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
77 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
78 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
79 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
80 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
81 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
82 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
83 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
84 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
85 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
86 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
87 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
88 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
89 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
90 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
91 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
92 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
93 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
94 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
95 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
96 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
97 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
98 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
99 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
100 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
101 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
102 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
103 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
104 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
105 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
106 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
107 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
108 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
109 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
110 23, 1, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
111 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
112 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
113 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81,
114 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20,
115 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69, 20, 81, 69,
116 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
117 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
118 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
119 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
120 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
121 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,241,
122 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
123 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
124 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
125 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
126 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
127 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,241,
128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
129};
130
131constexpr uint8_t ucd_east_asian_widths_bytes[4816] = {
132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146,
133 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,148, 74, 65,
134 2,145, 73, 36, 18, 73, 4,146, 0, 0, 16, 0, 0, 0, 64, 0, 2, 64, 0, 18, 72, 0, 16, 73, 4,128, 65, 32, 2, 73, 4, 16,
135 8, 0, 0, 0, 0, 0, 8, 32, 0, 0, 32, 0, 0, 0, 18, 0, 32, 0, 9, 32, 0, 64, 0, 2, 73, 4, 0, 73, 32,128, 1, 32,
136 0, 0, 0, 0, 0, 0, 18, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 65, 4, 16, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
139 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
140 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 9, 32,128, 64, 0, 0, 73, 32,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
141 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,
142 146, 73, 36,146, 73, 36,146, 73, 36,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 36,146, 73, 36,146, 72, 36,146, 72,
143 0, 0, 9, 36,146, 73, 36,146, 72, 36,146, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
144 8, 0, 0, 0, 0, 0, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 8, 0,
145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
150 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
151 219,109,182,219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
153 0, 0, 0, 0, 0, 0, 64, 36,144, 72, 4,128, 73, 4,146, 0, 0, 0, 65, 32,128, 0, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0,
154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 9, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
155 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
156 0, 32,128, 8, 0, 0, 0, 32, 16, 0, 0, 0, 9, 0, 16, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
157 0, 0, 36,144, 73, 36,146, 73, 32, 0, 73, 36,146, 72, 0, 0, 0, 0, 0, 8, 0, 0, 73, 36,146, 72, 0, 0, 0, 0, 0, 0,
158 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
159 65, 32, 2, 64, 32, 2, 8, 0,128, 1, 0,146, 64, 32,130, 73, 36, 16, 0, 4,146, 0, 4,128, 0, 0, 0, 64, 4, 0, 1, 0,
160 0, 0, 0, 0, 72, 4,146, 1, 32, 18, 0, 0, 0, 0, 0, 0, 1, 32, 18, 0, 0, 0, 0, 0,128, 8, 0, 0, 0, 0,128, 0,
161 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,176, 0, 0, 0, 0, 13,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,182, 0, 96, 48, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73,
167 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 72, 36,146, 73, 36,146, 73, 36,146,
168 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 32, 0, 73, 36,
169 146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 32, 0, 0, 0, 0, 73, 36,146, 73, 36,146, 1, 36,128, 0, 0, 0, 72, 36,146, 72,
170 0, 0, 1, 32, 18, 0, 4,128, 72, 0, 18, 64, 32, 18, 72, 0, 0, 0, 0, 0, 1, 36,128, 0, 0, 2, 0, 0, 0, 0, 0,216,
171 0, 0,144, 8, 0, 18, 0, 6,192, 0, 4, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0,109,182,219,109,176,
172 0, 0, 0, 0, 72, 36,130, 73, 4,130, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 18, 12, 0, 0, 1,
173 176, 0, 0, 0, 0, 0, 0,218, 0, 6,210, 73, 36,154, 73, 38,146, 73, 36,146, 72, 32, 0, 73,164,146, 73,180,210, 73,164,210,
174 0, 0,192, 1,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 6, 24, 0, 54,
175 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 73, 36,146, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 0, 0, 0, 0,
176 0, 0, 96, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 36,146, 64, 0, 0, 0, 0, 0, 0,
177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0,
181 210, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,182,219,109,182,219,109,182,219,108, 54,219,109,182,219,109,
185 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,176, 0, 0, 0, 0,
186 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
187 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
188 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,192, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,182,219,109,176, 0,
189 173,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,216, 13,182,219,109,182,219,109,182,
190 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,216, 13,182,219,109,182,219,109,
191 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
192 0, 0,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219, 13,182,219,109,182,219,109,182,219,109,182,219,109,182,
193 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,216,109,182,219,109,182,219,109,182,219,109,
194 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,176, 0, 0, 0, 0,109,182,219,109,182,219,
195 109,182,219,109,182,219,109,182,219,109,182,216,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219, 73, 36,146,109,182,
196 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
197 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
198 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
199 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
200 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
201 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
202 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
203 182,219,109,182,219,109,182,219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
205 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182, 0,109,182,219,109,182,219,109,182,219,109,
206 182,219,109,182,219,109,182,219,109,182,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 0, 0,109,182,219,109,182,219,109,182,219,109,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
210 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
211 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,176, 0, 0,
212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
213 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,
214 146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73,
215 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146,
216 73, 36,146, 73, 36,146,109,182,219,108, 0, 0, 0, 0, 0, 0, 0, 0,109,182,219,109,182,219,109,182,219,109,182,219,109,134,
217 219,109,182,219,109,182,216,109,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
219 22,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
220 109,182,219,109,178, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146,
221 73, 36,146, 73, 36,146, 73, 32, 2, 73, 36, 2, 73, 36, 2, 73, 36, 2, 72, 0,182,219,104,146, 73, 32, 0, 0, 0, 0, 0,128,
222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,182, 0, 0, 0, 0,108, 0, 0, 0, 0, 0,
225 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
226 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
227 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219, 0, 0, 0,
228 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
229 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
230 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
231 109,182,219, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,176,219,109,176,216,
237 109,182,219,109,182,219,109,182,219,109,182,219,109,128, 0, 0, 0, 0, 1,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,128,
238 192, 0, 0, 0, 0, 6,219, 0, 0, 0,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
239 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
240 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
241 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
242 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,176, 0,
243 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
246 73, 36,146, 73, 0, 0, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,128, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,
247 146, 73, 36,146, 73, 36,146, 72, 0, 0, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,154, 77,182,219,109,164,146, 73, 36,146, 73,
248 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
249 109,128, 0, 0, 0, 0,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,176, 0,109,182,219, 96, 0, 0,108, 0,
250 0, 0, 0, 0,109,182,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
252 109,182,219,109,182,219,109,182,219,109,182,219, 96, 0, 0, 0, 0,219,109,182,195,109,182,219,109,182,219,109,182,219,109,182,
253 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182, 27,109,182,219,109,182,219,109,176, 0, 0, 0, 0,109,182,219,109,
254 182,219,109,182,219,109,182,219,109,182,219,109,128, 3,109,176, 0, 0, 0, 0,109,182,219,109,182,219, 96, 6, 0,109,182,219,
255 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,216, 97,182,219,109,182,219,109,182,
256 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
257 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182, 3,
258 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,192, 0, 0, 0, 0, 54,216,109,182,
259 219,109,182,219,109,182,219, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 6, 0, 0,
260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,219,
261 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219, 0, 0,
262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
263 182,219,109,182,219,109,182,219,109,182,192, 0, 6, 0,109,128,219, 0, 6,219, 0, 0, 0, 0, 54, 0, 0, 6,219,109,182, 0,
264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,182,219,109,176, 0, 96, 0, 0, 0, 0, 0,
267 0, 0, 0, 0, 6,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,134,219,109,182,195,109,182,219,109,182,
268 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
269 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,
270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109,182,219,109,182, 0,109,182,219, 96, 0, 0,109,182,219,109,182,219,109,182,219,109,
272 182,219,109,182,219,109,182,195,109,182,192, 0, 0, 27,109,182,219,109,176, 0,109,182,219, 96, 0, 0,109,182,219, 96, 0, 0,
273 109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,
274 219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,
275 182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,219,109,182,192,
276 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,
277 146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73,
278 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 0, 0, 0, 0, 0, 0,
279 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,
280 146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73,
281 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,146, 73, 36,128,
282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
283};
284
285
286} // namespace detail
287
288enum class unicode_east_asian_width : uint8_t {
289 N = 0,
290 Na = 1,
291 A = 2,
292 W = 3,
293 H = 4,
294 F = 5,
295};
296
297
298[[nodiscard]] constexpr unicode_east_asian_width ucd_get_east_asian_width(char32_t code_point) noexcept
299{
300 constexpr auto max_code_point_hi = detail::ucd_east_asian_widths_indices_size - 1;
301
302 auto code_point_hi = code_point / detail::ucd_east_asian_widths_chunk_size;
303 auto const code_point_lo = code_point % detail::ucd_east_asian_widths_chunk_size;
304
305 if (code_point_hi > max_code_point_hi) {
306 code_point_hi = max_code_point_hi;
307 }
308
309 auto const chunk_index = load_bits_be<detail::ucd_east_asian_widths_index_width>(
310 detail::ucd_east_asian_widths_indices_bytes,
311 code_point_hi * detail::ucd_east_asian_widths_index_width);
312
313 // Add back in the lower-bits of the code-point.
314 auto const index = (chunk_index * detail::ucd_east_asian_widths_chunk_size) + code_point_lo;
315
316 // Get the canonical combining class from the table.
317 auto const value = load_bits_be<detail::ucd_east_asian_width_width>(
318 detail::ucd_east_asian_widths_bytes, index * detail::ucd_east_asian_width_width);
319
320 return static_cast<unicode_east_asian_width>(value);
321}
322
323}} // namespace hi::v1
324
The HikoGUI namespace.
Definition array_generic.hpp:20
DOXYGEN BUG.
Definition algorithm_misc.hpp:20