rigid 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. checksums.yaml +4 -4
  2. data/vendor/click/__init__.pyc +0 -0
  3. data/vendor/click/_bashcomplete.pyc +0 -0
  4. data/vendor/click/_compat.pyc +0 -0
  5. data/vendor/click/_termui_impl.pyc +0 -0
  6. data/vendor/click/_textwrap.pyc +0 -0
  7. data/vendor/click/_unicodefun.pyc +0 -0
  8. data/vendor/click/_winconsole.pyc +0 -0
  9. data/vendor/click/core.pyc +0 -0
  10. data/vendor/click/decorators.pyc +0 -0
  11. data/vendor/click/exceptions.pyc +0 -0
  12. data/vendor/click/formatting.pyc +0 -0
  13. data/vendor/click/globals.pyc +0 -0
  14. data/vendor/click/parser.pyc +0 -0
  15. data/vendor/click/termui.pyc +0 -0
  16. data/vendor/click/testing.pyc +0 -0
  17. data/vendor/click/types.pyc +0 -0
  18. data/vendor/click/utils.pyc +0 -0
  19. data/vendor/easy_install.pyc +0 -0
  20. data/vendor/pkg_resources/__init__.pyc +0 -0
  21. data/vendor/pkg_resources/_vendor/__init__.pyc +0 -0
  22. data/vendor/pkg_resources/_vendor/appdirs.pyc +0 -0
  23. data/vendor/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
  24. data/vendor/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
  25. data/vendor/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
  26. data/vendor/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
  27. data/vendor/pkg_resources/_vendor/packaging/markers.pyc +0 -0
  28. data/vendor/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
  29. data/vendor/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
  30. data/vendor/pkg_resources/_vendor/packaging/utils.pyc +0 -0
  31. data/vendor/pkg_resources/_vendor/packaging/version.pyc +0 -0
  32. data/vendor/pkg_resources/_vendor/pyparsing.pyc +0 -0
  33. data/vendor/pkg_resources/_vendor/six.pyc +0 -0
  34. data/vendor/pkg_resources/extern/__init__.pyc +0 -0
  35. data/vendor/{requests-2.11.1.dist-info/METADATA → requests-2.12.1.dist-info/DESCRIPTION.rst} +51 -30
  36. data/vendor/{requests-2.11.1.dist-info → requests-2.12.1.dist-info}/INSTALLER +0 -0
  37. data/vendor/{requests-2.11.1.dist-info/DESCRIPTION.rst → requests-2.12.1.dist-info/METADATA} +80 -1
  38. data/vendor/{requests-2.11.1.dist-info → requests-2.12.1.dist-info}/RECORD +61 -41
  39. data/vendor/{requests-2.11.1.dist-info → requests-2.12.1.dist-info}/WHEEL +1 -1
  40. data/vendor/requests-2.12.1.dist-info/metadata.json +1 -0
  41. data/vendor/{requests-2.11.1.dist-info → requests-2.12.1.dist-info}/top_level.txt +0 -0
  42. data/vendor/requests/__init__.py +2 -2
  43. data/vendor/requests/__init__.pyc +0 -0
  44. data/vendor/requests/_internal_utils.py +27 -0
  45. data/vendor/requests/_internal_utils.pyc +0 -0
  46. data/vendor/requests/adapters.py +1 -1
  47. data/vendor/requests/adapters.pyc +0 -0
  48. data/vendor/requests/api.py +3 -1
  49. data/vendor/requests/api.pyc +0 -0
  50. data/vendor/requests/auth.py +2 -1
  51. data/vendor/requests/auth.pyc +0 -0
  52. data/vendor/requests/cacert.pem +448 -375
  53. data/vendor/requests/certs.pyc +0 -0
  54. data/vendor/requests/compat.py +2 -0
  55. data/vendor/requests/compat.pyc +0 -0
  56. data/vendor/requests/cookies.py +3 -1
  57. data/vendor/requests/cookies.pyc +0 -0
  58. data/vendor/requests/exceptions.py +2 -0
  59. data/vendor/requests/exceptions.pyc +0 -0
  60. data/vendor/requests/hooks.pyc +0 -0
  61. data/vendor/requests/models.py +53 -29
  62. data/vendor/requests/models.pyc +0 -0
  63. data/vendor/requests/packages/__init__.py +6 -0
  64. data/vendor/requests/packages/__init__.pyc +0 -0
  65. data/vendor/requests/packages/chardet/__init__.pyc +0 -0
  66. data/vendor/requests/packages/chardet/big5freq.pyc +0 -0
  67. data/vendor/requests/packages/chardet/big5prober.pyc +0 -0
  68. data/vendor/requests/packages/chardet/chardetect.pyc +0 -0
  69. data/vendor/requests/packages/chardet/chardistribution.pyc +0 -0
  70. data/vendor/requests/packages/chardet/charsetgroupprober.pyc +0 -0
  71. data/vendor/requests/packages/chardet/charsetprober.pyc +0 -0
  72. data/vendor/requests/packages/chardet/codingstatemachine.pyc +0 -0
  73. data/vendor/requests/packages/chardet/compat.pyc +0 -0
  74. data/vendor/requests/packages/chardet/constants.pyc +0 -0
  75. data/vendor/requests/packages/chardet/cp949prober.pyc +0 -0
  76. data/vendor/requests/packages/chardet/escprober.pyc +0 -0
  77. data/vendor/requests/packages/chardet/escsm.pyc +0 -0
  78. data/vendor/requests/packages/chardet/eucjpprober.pyc +0 -0
  79. data/vendor/requests/packages/chardet/euckrfreq.pyc +0 -0
  80. data/vendor/requests/packages/chardet/euckrprober.pyc +0 -0
  81. data/vendor/requests/packages/chardet/euctwfreq.pyc +0 -0
  82. data/vendor/requests/packages/chardet/euctwprober.pyc +0 -0
  83. data/vendor/requests/packages/chardet/gb2312freq.pyc +0 -0
  84. data/vendor/requests/packages/chardet/gb2312prober.pyc +0 -0
  85. data/vendor/requests/packages/chardet/hebrewprober.pyc +0 -0
  86. data/vendor/requests/packages/chardet/jisfreq.pyc +0 -0
  87. data/vendor/requests/packages/chardet/jpcntx.pyc +0 -0
  88. data/vendor/requests/packages/chardet/langbulgarianmodel.pyc +0 -0
  89. data/vendor/requests/packages/chardet/langcyrillicmodel.pyc +0 -0
  90. data/vendor/requests/packages/chardet/langgreekmodel.pyc +0 -0
  91. data/vendor/requests/packages/chardet/langhebrewmodel.pyc +0 -0
  92. data/vendor/requests/packages/chardet/langhungarianmodel.pyc +0 -0
  93. data/vendor/requests/packages/chardet/langthaimodel.pyc +0 -0
  94. data/vendor/requests/packages/chardet/latin1prober.pyc +0 -0
  95. data/vendor/requests/packages/chardet/mbcharsetprober.pyc +0 -0
  96. data/vendor/requests/packages/chardet/mbcsgroupprober.pyc +0 -0
  97. data/vendor/requests/packages/chardet/mbcssm.pyc +0 -0
  98. data/vendor/requests/packages/chardet/sbcharsetprober.pyc +0 -0
  99. data/vendor/requests/packages/chardet/sbcsgroupprober.pyc +0 -0
  100. data/vendor/requests/packages/chardet/sjisprober.pyc +0 -0
  101. data/vendor/requests/packages/chardet/universaldetector.pyc +0 -0
  102. data/vendor/requests/packages/chardet/utf8prober.pyc +0 -0
  103. data/vendor/requests/packages/idna/__init__.py +1 -0
  104. data/vendor/requests/packages/idna/__init__.pyc +0 -0
  105. data/vendor/requests/packages/idna/codec.py +118 -0
  106. data/vendor/requests/packages/idna/codec.pyc +0 -0
  107. data/vendor/requests/packages/idna/compat.py +12 -0
  108. data/vendor/requests/packages/idna/compat.pyc +0 -0
  109. data/vendor/requests/packages/idna/core.py +387 -0
  110. data/vendor/requests/packages/idna/core.pyc +0 -0
  111. data/vendor/requests/packages/idna/idnadata.py +1584 -0
  112. data/vendor/requests/packages/idna/idnadata.pyc +0 -0
  113. data/vendor/requests/packages/idna/intranges.py +46 -0
  114. data/vendor/requests/packages/idna/intranges.pyc +0 -0
  115. data/vendor/requests/packages/idna/uts46data.py +7267 -0
  116. data/vendor/requests/packages/idna/uts46data.pyc +0 -0
  117. data/vendor/requests/packages/urllib3/__init__.py +2 -1
  118. data/vendor/requests/packages/urllib3/__init__.pyc +0 -0
  119. data/vendor/requests/packages/urllib3/_collections.pyc +0 -0
  120. data/vendor/requests/packages/urllib3/connection.py +62 -26
  121. data/vendor/requests/packages/urllib3/connection.pyc +0 -0
  122. data/vendor/requests/packages/urllib3/connectionpool.py +25 -20
  123. data/vendor/requests/packages/urllib3/connectionpool.pyc +0 -0
  124. data/vendor/requests/packages/urllib3/contrib/__init__.pyc +0 -0
  125. data/vendor/requests/packages/urllib3/contrib/appengine.py +87 -22
  126. data/vendor/requests/packages/urllib3/contrib/appengine.pyc +0 -0
  127. data/vendor/requests/packages/urllib3/contrib/ntlmpool.py +2 -5
  128. data/vendor/requests/packages/urllib3/contrib/ntlmpool.pyc +0 -0
  129. data/vendor/requests/packages/urllib3/contrib/pyopenssl.py +191 -118
  130. data/vendor/requests/packages/urllib3/contrib/pyopenssl.pyc +0 -0
  131. data/vendor/requests/packages/urllib3/contrib/socks.py +11 -5
  132. data/vendor/requests/packages/urllib3/contrib/socks.pyc +0 -0
  133. data/vendor/requests/packages/urllib3/exceptions.py +32 -0
  134. data/vendor/requests/packages/urllib3/exceptions.pyc +0 -0
  135. data/vendor/requests/packages/urllib3/fields.py +1 -1
  136. data/vendor/requests/packages/urllib3/fields.pyc +0 -0
  137. data/vendor/requests/packages/urllib3/filepost.py +1 -1
  138. data/vendor/requests/packages/urllib3/filepost.pyc +0 -0
  139. data/vendor/requests/packages/urllib3/packages/__init__.pyc +0 -0
  140. data/vendor/requests/packages/urllib3/packages/backports/__init__.py +0 -0
  141. data/vendor/requests/packages/urllib3/packages/backports/__init__.pyc +0 -0
  142. data/vendor/requests/packages/urllib3/packages/backports/makefile.py +53 -0
  143. data/vendor/requests/packages/urllib3/packages/backports/makefile.pyc +0 -0
  144. data/vendor/requests/packages/urllib3/packages/ordered_dict.pyc +0 -0
  145. data/vendor/requests/packages/urllib3/packages/six.pyc +0 -0
  146. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +7 -1
  147. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc +0 -0
  148. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +55 -3
  149. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc +0 -0
  150. data/vendor/requests/packages/urllib3/poolmanager.py +2 -6
  151. data/vendor/requests/packages/urllib3/poolmanager.pyc +0 -0
  152. data/vendor/requests/packages/urllib3/request.py +1 -4
  153. data/vendor/requests/packages/urllib3/request.pyc +0 -0
  154. data/vendor/requests/packages/urllib3/response.py +94 -6
  155. data/vendor/requests/packages/urllib3/response.pyc +0 -0
  156. data/vendor/requests/packages/urllib3/util/__init__.pyc +0 -0
  157. data/vendor/requests/packages/urllib3/util/connection.py +1 -0
  158. data/vendor/requests/packages/urllib3/util/connection.pyc +0 -0
  159. data/vendor/requests/packages/urllib3/util/request.pyc +0 -0
  160. data/vendor/requests/packages/urllib3/util/response.py +7 -0
  161. data/vendor/requests/packages/urllib3/util/response.pyc +0 -0
  162. data/vendor/requests/packages/urllib3/util/retry.py +93 -17
  163. data/vendor/requests/packages/urllib3/util/retry.pyc +0 -0
  164. data/vendor/requests/packages/urllib3/util/ssl_.py +28 -12
  165. data/vendor/requests/packages/urllib3/util/ssl_.pyc +0 -0
  166. data/vendor/requests/packages/urllib3/util/timeout.py +9 -6
  167. data/vendor/requests/packages/urllib3/util/timeout.pyc +0 -0
  168. data/vendor/requests/packages/urllib3/util/url.py +14 -5
  169. data/vendor/requests/packages/urllib3/util/url.pyc +0 -0
  170. data/vendor/requests/sessions.py +18 -5
  171. data/vendor/requests/sessions.pyc +0 -0
  172. data/vendor/requests/status_codes.pyc +0 -0
  173. data/vendor/requests/structures.pyc +0 -0
  174. data/vendor/requests/utils.py +42 -32
  175. data/vendor/requests/utils.pyc +0 -0
  176. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/DESCRIPTION.rst +0 -0
  177. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/INSTALLER +0 -0
  178. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/METADATA +2 -2
  179. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/RECORD +18 -18
  180. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/WHEEL +0 -0
  181. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/entry_points.txt +0 -0
  182. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/metadata.json +1 -1
  183. data/vendor/{rigid-0.2.0.dist-info → rigid-0.2.1.dist-info}/top_level.txt +0 -0
  184. data/vendor/rigid/__init__.pyc +0 -0
  185. data/vendor/rigid/api.py +39 -2
  186. data/vendor/rigid/api.pyc +0 -0
  187. data/vendor/rigid/commands/__init__.py +71 -11
  188. data/vendor/rigid/commands/__init__.pyc +0 -0
  189. data/vendor/rigid/commands/deploy.pyc +0 -0
  190. data/vendor/rigid/deploy.py +1 -1
  191. data/vendor/rigid/deploy.pyc +0 -0
  192. data/vendor/rigid/file_scanner.py +1 -1
  193. data/vendor/rigid/file_scanner.pyc +0 -0
  194. data/vendor/rigid/utils.pyc +0 -0
  195. data/vendor/tests/__init__.pyc +0 -0
  196. data/vendor/tests/integration/__init__.pyc +0 -0
  197. data/vendor/tests/integration/test_app.py +12 -0
  198. data/vendor/tests/integration/test_app.pyc +0 -0
  199. data/vendor/tests/integration/test_apps.pyc +0 -0
  200. data/vendor/tests/integration/test_deploy.pyc +0 -0
  201. data/vendor/tests/integration/test_domains.pyc +0 -0
  202. data/vendor/tests/integration/test_login.pyc +0 -0
  203. data/vendor/tests/integration/test_promote.py +2 -2
  204. data/vendor/tests/integration/test_promote.pyc +0 -0
  205. data/vendor/tests/integration/test_token.pyc +0 -0
  206. data/vendor/tests/integration/test_whoami.pyc +0 -0
  207. data/vendor/tests/test_deploy.pyc +0 -0
  208. data/vendor/tests/test_file_scanner.pyc +0 -0
  209. data/vendor/tests/utils.py +5 -2
  210. data/vendor/tests/utils.pyc +0 -0
  211. data/vendor/yaml/__init__.pyc +0 -0
  212. data/vendor/yaml/composer.pyc +0 -0
  213. data/vendor/yaml/constructor.pyc +0 -0
  214. data/vendor/yaml/cyaml.pyc +0 -0
  215. data/vendor/yaml/dumper.pyc +0 -0
  216. data/vendor/yaml/emitter.pyc +0 -0
  217. data/vendor/yaml/error.pyc +0 -0
  218. data/vendor/yaml/events.pyc +0 -0
  219. data/vendor/yaml/loader.pyc +0 -0
  220. data/vendor/yaml/nodes.pyc +0 -0
  221. data/vendor/yaml/parser.pyc +0 -0
  222. data/vendor/yaml/reader.pyc +0 -0
  223. data/vendor/yaml/representer.pyc +0 -0
  224. data/vendor/yaml/resolver.pyc +0 -0
  225. data/vendor/yaml/scanner.pyc +0 -0
  226. data/vendor/yaml/serializer.pyc +0 -0
  227. data/vendor/yaml/tokens.pyc +0 -0
  228. metadata +37 -17
  229. data/vendor/requests-2.11.1.dist-info/metadata.json +0 -1
@@ -0,0 +1,387 @@
1
+ from . import idnadata
2
+ import bisect
3
+ import unicodedata
4
+ import re
5
+ import sys
6
+ from .intranges import intranges_contain
7
+
8
+ _virama_combining_class = 9
9
+ _alabel_prefix = b'xn--'
10
+ _unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]')
11
+
12
+ if sys.version_info[0] == 3:
13
+ unicode = str
14
+ unichr = chr
15
+
16
+ class IDNAError(UnicodeError):
17
+ """ Base exception for all IDNA-encoding related problems """
18
+ pass
19
+
20
+
21
+ class IDNABidiError(IDNAError):
22
+ """ Exception when bidirectional requirements are not satisfied """
23
+ pass
24
+
25
+
26
+ class InvalidCodepoint(IDNAError):
27
+ """ Exception when a disallowed or unallocated codepoint is used """
28
+ pass
29
+
30
+
31
+ class InvalidCodepointContext(IDNAError):
32
+ """ Exception when the codepoint is not valid in the context it is used """
33
+ pass
34
+
35
+
36
+ def _combining_class(cp):
37
+ return unicodedata.combining(unichr(cp))
38
+
39
+ def _is_script(cp, script):
40
+ return intranges_contain(ord(cp), idnadata.scripts[script])
41
+
42
+ def _punycode(s):
43
+ return s.encode('punycode')
44
+
45
+ def _unot(s):
46
+ return 'U+{0:04X}'.format(s)
47
+
48
+
49
+ def valid_label_length(label):
50
+
51
+ if len(label) > 63:
52
+ return False
53
+ return True
54
+
55
+
56
+ def valid_string_length(label, trailing_dot):
57
+
58
+ if len(label) > (254 if trailing_dot else 253):
59
+ return False
60
+ return True
61
+
62
+
63
+ def check_bidi(label, check_ltr=False):
64
+
65
+ # Bidi rules should only be applied if string contains RTL characters
66
+ bidi_label = False
67
+ for (idx, cp) in enumerate(label, 1):
68
+ direction = unicodedata.bidirectional(cp)
69
+ if direction == '':
70
+ # String likely comes from a newer version of Unicode
71
+ raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx))
72
+ if direction in ['R', 'AL', 'AN']:
73
+ bidi_label = True
74
+ break
75
+ if not bidi_label and not check_ltr:
76
+ return True
77
+
78
+ # Bidi rule 1
79
+ direction = unicodedata.bidirectional(label[0])
80
+ if direction in ['R', 'AL']:
81
+ rtl = True
82
+ elif direction == 'L':
83
+ rtl = False
84
+ else:
85
+ raise IDNABidiError('First codepoint in label {0} must be directionality L, R or AL'.format(repr(label)))
86
+
87
+ valid_ending = False
88
+ number_type = False
89
+ for (idx, cp) in enumerate(label, 1):
90
+ direction = unicodedata.bidirectional(cp)
91
+
92
+ if rtl:
93
+ # Bidi rule 2
94
+ if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
95
+ raise IDNABidiError('Invalid direction for codepoint at position {0} in a right-to-left label'.format(idx))
96
+ # Bidi rule 3
97
+ if direction in ['R', 'AL', 'EN', 'AN']:
98
+ valid_ending = True
99
+ elif direction != 'NSM':
100
+ valid_ending = False
101
+ # Bidi rule 4
102
+ if direction in ['AN', 'EN']:
103
+ if not number_type:
104
+ number_type = direction
105
+ else:
106
+ if number_type != direction:
107
+ raise IDNABidiError('Can not mix numeral types in a right-to-left label')
108
+ else:
109
+ # Bidi rule 5
110
+ if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
111
+ raise IDNABidiError('Invalid direction for codepoint at position {0} in a left-to-right label'.format(idx))
112
+ # Bidi rule 6
113
+ if direction in ['L', 'EN']:
114
+ valid_ending = True
115
+ elif direction != 'NSM':
116
+ valid_ending = False
117
+
118
+ if not valid_ending:
119
+ raise IDNABidiError('Label ends with illegal codepoint directionality')
120
+
121
+ return True
122
+
123
+
124
+ def check_initial_combiner(label):
125
+
126
+ if unicodedata.category(label[0])[0] == 'M':
127
+ raise IDNAError('Label begins with an illegal combining character')
128
+ return True
129
+
130
+
131
+ def check_hyphen_ok(label):
132
+
133
+ if label[2:4] == '--':
134
+ raise IDNAError('Label has disallowed hyphens in 3rd and 4th position')
135
+ if label[0] == '-' or label[-1] == '-':
136
+ raise IDNAError('Label must not start or end with a hyphen')
137
+ return True
138
+
139
+
140
+ def check_nfc(label):
141
+
142
+ if unicodedata.normalize('NFC', label) != label:
143
+ raise IDNAError('Label must be in Normalization Form C')
144
+
145
+
146
+ def valid_contextj(label, pos):
147
+
148
+ cp_value = ord(label[pos])
149
+
150
+ if cp_value == 0x200c:
151
+
152
+ if pos > 0:
153
+ if _combining_class(ord(label[pos - 1])) == _virama_combining_class:
154
+ return True
155
+
156
+ ok = False
157
+ for i in range(pos-1, -1, -1):
158
+ joining_type = idnadata.joining_types.get(ord(label[i]))
159
+ if joining_type == 'T':
160
+ continue
161
+ if joining_type in ['L', 'D']:
162
+ ok = True
163
+ break
164
+
165
+ if not ok:
166
+ return False
167
+
168
+ ok = False
169
+ for i in range(pos+1, len(label)):
170
+ joining_type = idnadata.joining_types.get(ord(label[i]))
171
+ if joining_type == 'T':
172
+ continue
173
+ if joining_type in ['R', 'D']:
174
+ ok = True
175
+ break
176
+ return ok
177
+
178
+ if cp_value == 0x200d:
179
+
180
+ if pos > 0:
181
+ if _combining_class(ord(label[pos - 1])) == _virama_combining_class:
182
+ return True
183
+ return False
184
+
185
+ else:
186
+
187
+ return False
188
+
189
+
190
+ def valid_contexto(label, pos, exception=False):
191
+
192
+ cp_value = ord(label[pos])
193
+
194
+ if cp_value == 0x00b7:
195
+ if 0 < pos < len(label)-1:
196
+ if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c:
197
+ return True
198
+ return False
199
+
200
+ elif cp_value == 0x0375:
201
+ if pos < len(label)-1 and len(label) > 1:
202
+ return _is_script(label[pos + 1], 'Greek')
203
+ return False
204
+
205
+ elif cp_value == 0x05f3 or cp_value == 0x05f4:
206
+ if pos > 0:
207
+ return _is_script(label[pos - 1], 'Hebrew')
208
+ return False
209
+
210
+ elif cp_value == 0x30fb:
211
+ for cp in label:
212
+ if cp == u'\u30fb':
213
+ continue
214
+ if not _is_script(cp, 'Hiragana') and not _is_script(cp, 'Katakana') and not _is_script(cp, 'Han'):
215
+ return False
216
+ return True
217
+
218
+ elif 0x660 <= cp_value <= 0x669:
219
+ for cp in label:
220
+ if 0x6f0 <= ord(cp) <= 0x06f9:
221
+ return False
222
+ return True
223
+
224
+ elif 0x6f0 <= cp_value <= 0x6f9:
225
+ for cp in label:
226
+ if 0x660 <= ord(cp) <= 0x0669:
227
+ return False
228
+ return True
229
+
230
+
231
+ def check_label(label):
232
+
233
+ if isinstance(label, (bytes, bytearray)):
234
+ label = label.decode('utf-8')
235
+ if len(label) == 0:
236
+ raise IDNAError('Empty Label')
237
+
238
+ check_nfc(label)
239
+ check_hyphen_ok(label)
240
+ check_initial_combiner(label)
241
+
242
+ for (pos, cp) in enumerate(label):
243
+ cp_value = ord(cp)
244
+ if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']):
245
+ continue
246
+ elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']):
247
+ if not valid_contextj(label, pos):
248
+ raise InvalidCodepointContext('Joiner {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label)))
249
+ elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']):
250
+ if not valid_contexto(label, pos):
251
+ raise InvalidCodepointContext('Codepoint {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label)))
252
+ else:
253
+ raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label)))
254
+
255
+ check_bidi(label)
256
+
257
+
258
+ def alabel(label):
259
+
260
+ try:
261
+ label = label.encode('ascii')
262
+ try:
263
+ ulabel(label)
264
+ except:
265
+ raise IDNAError('The label {0} is not a valid A-label'.format(label))
266
+ if not valid_label_length(label):
267
+ raise IDNAError('Label too long')
268
+ return label
269
+ except UnicodeError:
270
+ pass
271
+
272
+ if not label:
273
+ raise IDNAError('No Input')
274
+
275
+ label = unicode(label)
276
+ check_label(label)
277
+ label = _punycode(label)
278
+ label = _alabel_prefix + label
279
+
280
+ if not valid_label_length(label):
281
+ raise IDNAError('Label too long')
282
+
283
+ return label
284
+
285
+
286
+ def ulabel(label):
287
+
288
+ if not isinstance(label, (bytes, bytearray)):
289
+ try:
290
+ label = label.encode('ascii')
291
+ except UnicodeError:
292
+ check_label(label)
293
+ return label
294
+
295
+ label = label.lower()
296
+ if label.startswith(_alabel_prefix):
297
+ label = label[len(_alabel_prefix):]
298
+ else:
299
+ check_label(label)
300
+ return label.decode('ascii')
301
+
302
+ label = label.decode('punycode')
303
+ check_label(label)
304
+ return label
305
+
306
+
307
+ def uts46_remap(domain, std3_rules=True, transitional=False):
308
+ """Re-map the characters in the string according to UTS46 processing."""
309
+ from .uts46data import uts46data
310
+ output = u""
311
+ try:
312
+ for pos, char in enumerate(domain):
313
+ code_point = ord(char)
314
+ uts46row = uts46data[code_point if code_point < 256 else
315
+ bisect.bisect_left(uts46data, (code_point, "Z")) - 1]
316
+ status = uts46row[1]
317
+ replacement = uts46row[2] if len(uts46row) == 3 else None
318
+ if (status == "V" or
319
+ (status == "D" and not transitional) or
320
+ (status == "3" and std3_rules and replacement is None)):
321
+ output += char
322
+ elif replacement is not None and (status == "M" or
323
+ (status == "3" and std3_rules) or
324
+ (status == "D" and transitional)):
325
+ output += replacement
326
+ elif status != "I":
327
+ raise IndexError()
328
+ return unicodedata.normalize("NFC", output)
329
+ except IndexError:
330
+ raise InvalidCodepoint(
331
+ "Codepoint {0} not allowed at position {1} in {2}".format(
332
+ _unot(code_point), pos + 1, repr(domain)))
333
+
334
+
335
+ def encode(s, strict=False, uts46=False, std3_rules=False, transitional=False):
336
+
337
+ if isinstance(s, (bytes, bytearray)):
338
+ s = s.decode("ascii")
339
+ if uts46:
340
+ s = uts46_remap(s, std3_rules, transitional)
341
+ trailing_dot = False
342
+ result = []
343
+ if strict:
344
+ labels = s.split('.')
345
+ else:
346
+ labels = _unicode_dots_re.split(s)
347
+ while labels and not labels[0]:
348
+ del labels[0]
349
+ if not labels:
350
+ raise IDNAError('Empty domain')
351
+ if labels[-1] == '':
352
+ del labels[-1]
353
+ trailing_dot = True
354
+ for label in labels:
355
+ result.append(alabel(label))
356
+ if trailing_dot:
357
+ result.append(b'')
358
+ s = b'.'.join(result)
359
+ if not valid_string_length(s, trailing_dot):
360
+ raise IDNAError('Domain too long')
361
+ return s
362
+
363
+
364
+ def decode(s, strict=False, uts46=False, std3_rules=False):
365
+
366
+ if isinstance(s, (bytes, bytearray)):
367
+ s = s.decode("ascii")
368
+ if uts46:
369
+ s = uts46_remap(s, std3_rules, False)
370
+ trailing_dot = False
371
+ result = []
372
+ if not strict:
373
+ labels = _unicode_dots_re.split(s)
374
+ else:
375
+ labels = s.split(u'.')
376
+ while labels and not labels[0]:
377
+ del labels[0]
378
+ if not labels:
379
+ raise IDNAError('Empty domain')
380
+ if not labels[-1]:
381
+ del labels[-1]
382
+ trailing_dot = True
383
+ for label in labels:
384
+ result.append(ulabel(label))
385
+ if trailing_dot:
386
+ result.append(u'')
387
+ return u'.'.join(result)
@@ -0,0 +1,1584 @@
1
+ # This file is automatically generated by build-idnadata.py
2
+
3
+ scripts = {
4
+ 'Greek': (
5
+ (0x370, 0x374),
6
+ (0x375, 0x378),
7
+ (0x37a, 0x37e),
8
+ (0x384, 0x385),
9
+ (0x386, 0x387),
10
+ (0x388, 0x38b),
11
+ (0x38c, 0x38d),
12
+ (0x38e, 0x3a2),
13
+ (0x3a3, 0x3e2),
14
+ (0x3f0, 0x400),
15
+ (0x1d26, 0x1d2b),
16
+ (0x1d5d, 0x1d62),
17
+ (0x1d66, 0x1d6b),
18
+ (0x1dbf, 0x1dc0),
19
+ (0x1f00, 0x1f16),
20
+ (0x1f18, 0x1f1e),
21
+ (0x1f20, 0x1f46),
22
+ (0x1f48, 0x1f4e),
23
+ (0x1f50, 0x1f58),
24
+ (0x1f59, 0x1f5a),
25
+ (0x1f5b, 0x1f5c),
26
+ (0x1f5d, 0x1f5e),
27
+ (0x1f5f, 0x1f7e),
28
+ (0x1f80, 0x1fb5),
29
+ (0x1fb6, 0x1fc5),
30
+ (0x1fc6, 0x1fd4),
31
+ (0x1fd6, 0x1fdc),
32
+ (0x1fdd, 0x1ff0),
33
+ (0x1ff2, 0x1ff5),
34
+ (0x1ff6, 0x1fff),
35
+ (0x2126, 0x2127),
36
+ (0x10140, 0x1018b),
37
+ (0x1d200, 0x1d246),
38
+ ),
39
+ 'Han': (
40
+ (0x2e80, 0x2e9a),
41
+ (0x2e9b, 0x2ef4),
42
+ (0x2f00, 0x2fd6),
43
+ (0x3005, 0x3006),
44
+ (0x3007, 0x3008),
45
+ (0x3021, 0x302a),
46
+ (0x3038, 0x303c),
47
+ (0x3400, 0x4db6),
48
+ (0x4e00, 0x9fcd),
49
+ (0xf900, 0xfa6e),
50
+ (0xfa70, 0xfada),
51
+ (0x20000, 0x2a6d7),
52
+ (0x2a700, 0x2b735),
53
+ (0x2b740, 0x2b81e),
54
+ (0x2f800, 0x2fa1e),
55
+ ),
56
+ 'Hebrew': (
57
+ (0x591, 0x5c8),
58
+ (0x5d0, 0x5eb),
59
+ (0x5f0, 0x5f5),
60
+ (0xfb1d, 0xfb37),
61
+ (0xfb38, 0xfb3d),
62
+ (0xfb3e, 0xfb3f),
63
+ (0xfb40, 0xfb42),
64
+ (0xfb43, 0xfb45),
65
+ (0xfb46, 0xfb50),
66
+ ),
67
+ 'Hiragana': (
68
+ (0x3041, 0x3097),
69
+ (0x309d, 0x30a0),
70
+ (0x1b001, 0x1b002),
71
+ (0x1f200, 0x1f201),
72
+ ),
73
+ 'Katakana': (
74
+ (0x30a1, 0x30fb),
75
+ (0x30fd, 0x3100),
76
+ (0x31f0, 0x3200),
77
+ (0x32d0, 0x32ff),
78
+ (0x3300, 0x3358),
79
+ (0xff66, 0xff70),
80
+ (0xff71, 0xff9e),
81
+ (0x1b000, 0x1b001),
82
+ ),
83
+ }
84
+ joining_types = {
85
+ 0x600: 'U',
86
+ 0x601: 'U',
87
+ 0x602: 'U',
88
+ 0x603: 'U',
89
+ 0x604: 'U',
90
+ 0x608: 'U',
91
+ 0x60b: 'U',
92
+ 0x620: 'D',
93
+ 0x621: 'U',
94
+ 0x622: 'R',
95
+ 0x623: 'R',
96
+ 0x624: 'R',
97
+ 0x625: 'R',
98
+ 0x626: 'D',
99
+ 0x627: 'R',
100
+ 0x628: 'D',
101
+ 0x629: 'R',
102
+ 0x62a: 'D',
103
+ 0x62b: 'D',
104
+ 0x62c: 'D',
105
+ 0x62d: 'D',
106
+ 0x62e: 'D',
107
+ 0x62f: 'R',
108
+ 0x630: 'R',
109
+ 0x631: 'R',
110
+ 0x632: 'R',
111
+ 0x633: 'D',
112
+ 0x634: 'D',
113
+ 0x635: 'D',
114
+ 0x636: 'D',
115
+ 0x637: 'D',
116
+ 0x638: 'D',
117
+ 0x639: 'D',
118
+ 0x63a: 'D',
119
+ 0x63b: 'D',
120
+ 0x63c: 'D',
121
+ 0x63d: 'D',
122
+ 0x63e: 'D',
123
+ 0x63f: 'D',
124
+ 0x640: 'C',
125
+ 0x641: 'D',
126
+ 0x642: 'D',
127
+ 0x643: 'D',
128
+ 0x644: 'D',
129
+ 0x645: 'D',
130
+ 0x646: 'D',
131
+ 0x647: 'D',
132
+ 0x648: 'R',
133
+ 0x649: 'D',
134
+ 0x64a: 'D',
135
+ 0x66e: 'D',
136
+ 0x66f: 'D',
137
+ 0x671: 'R',
138
+ 0x672: 'R',
139
+ 0x673: 'R',
140
+ 0x674: 'U',
141
+ 0x675: 'R',
142
+ 0x676: 'R',
143
+ 0x677: 'R',
144
+ 0x678: 'D',
145
+ 0x679: 'D',
146
+ 0x67a: 'D',
147
+ 0x67b: 'D',
148
+ 0x67c: 'D',
149
+ 0x67d: 'D',
150
+ 0x67e: 'D',
151
+ 0x67f: 'D',
152
+ 0x680: 'D',
153
+ 0x681: 'D',
154
+ 0x682: 'D',
155
+ 0x683: 'D',
156
+ 0x684: 'D',
157
+ 0x685: 'D',
158
+ 0x686: 'D',
159
+ 0x687: 'D',
160
+ 0x688: 'R',
161
+ 0x689: 'R',
162
+ 0x68a: 'R',
163
+ 0x68b: 'R',
164
+ 0x68c: 'R',
165
+ 0x68d: 'R',
166
+ 0x68e: 'R',
167
+ 0x68f: 'R',
168
+ 0x690: 'R',
169
+ 0x691: 'R',
170
+ 0x692: 'R',
171
+ 0x693: 'R',
172
+ 0x694: 'R',
173
+ 0x695: 'R',
174
+ 0x696: 'R',
175
+ 0x697: 'R',
176
+ 0x698: 'R',
177
+ 0x699: 'R',
178
+ 0x69a: 'D',
179
+ 0x69b: 'D',
180
+ 0x69c: 'D',
181
+ 0x69d: 'D',
182
+ 0x69e: 'D',
183
+ 0x69f: 'D',
184
+ 0x6a0: 'D',
185
+ 0x6a1: 'D',
186
+ 0x6a2: 'D',
187
+ 0x6a3: 'D',
188
+ 0x6a4: 'D',
189
+ 0x6a5: 'D',
190
+ 0x6a6: 'D',
191
+ 0x6a7: 'D',
192
+ 0x6a8: 'D',
193
+ 0x6a9: 'D',
194
+ 0x6aa: 'D',
195
+ 0x6ab: 'D',
196
+ 0x6ac: 'D',
197
+ 0x6ad: 'D',
198
+ 0x6ae: 'D',
199
+ 0x6af: 'D',
200
+ 0x6b0: 'D',
201
+ 0x6b1: 'D',
202
+ 0x6b2: 'D',
203
+ 0x6b3: 'D',
204
+ 0x6b4: 'D',
205
+ 0x6b5: 'D',
206
+ 0x6b6: 'D',
207
+ 0x6b7: 'D',
208
+ 0x6b8: 'D',
209
+ 0x6b9: 'D',
210
+ 0x6ba: 'D',
211
+ 0x6bb: 'D',
212
+ 0x6bc: 'D',
213
+ 0x6bd: 'D',
214
+ 0x6be: 'D',
215
+ 0x6bf: 'D',
216
+ 0x6c0: 'R',
217
+ 0x6c1: 'D',
218
+ 0x6c2: 'D',
219
+ 0x6c3: 'R',
220
+ 0x6c4: 'R',
221
+ 0x6c5: 'R',
222
+ 0x6c6: 'R',
223
+ 0x6c7: 'R',
224
+ 0x6c8: 'R',
225
+ 0x6c9: 'R',
226
+ 0x6ca: 'R',
227
+ 0x6cb: 'R',
228
+ 0x6cc: 'D',
229
+ 0x6cd: 'R',
230
+ 0x6ce: 'D',
231
+ 0x6cf: 'R',
232
+ 0x6d0: 'D',
233
+ 0x6d1: 'D',
234
+ 0x6d2: 'R',
235
+ 0x6d3: 'R',
236
+ 0x6d5: 'R',
237
+ 0x6dd: 'U',
238
+ 0x6ee: 'R',
239
+ 0x6ef: 'R',
240
+ 0x6fa: 'D',
241
+ 0x6fb: 'D',
242
+ 0x6fc: 'D',
243
+ 0x6ff: 'D',
244
+ 0x710: 'R',
245
+ 0x712: 'D',
246
+ 0x713: 'D',
247
+ 0x714: 'D',
248
+ 0x715: 'R',
249
+ 0x716: 'R',
250
+ 0x717: 'R',
251
+ 0x718: 'R',
252
+ 0x719: 'R',
253
+ 0x71a: 'D',
254
+ 0x71b: 'D',
255
+ 0x71c: 'D',
256
+ 0x71d: 'D',
257
+ 0x71e: 'R',
258
+ 0x71f: 'D',
259
+ 0x720: 'D',
260
+ 0x721: 'D',
261
+ 0x722: 'D',
262
+ 0x723: 'D',
263
+ 0x724: 'D',
264
+ 0x725: 'D',
265
+ 0x726: 'D',
266
+ 0x727: 'D',
267
+ 0x728: 'R',
268
+ 0x729: 'D',
269
+ 0x72a: 'R',
270
+ 0x72b: 'D',
271
+ 0x72c: 'R',
272
+ 0x72d: 'D',
273
+ 0x72e: 'D',
274
+ 0x72f: 'R',
275
+ 0x74d: 'R',
276
+ 0x74e: 'D',
277
+ 0x74f: 'D',
278
+ 0x750: 'D',
279
+ 0x751: 'D',
280
+ 0x752: 'D',
281
+ 0x753: 'D',
282
+ 0x754: 'D',
283
+ 0x755: 'D',
284
+ 0x756: 'D',
285
+ 0x757: 'D',
286
+ 0x758: 'D',
287
+ 0x759: 'R',
288
+ 0x75a: 'R',
289
+ 0x75b: 'R',
290
+ 0x75c: 'D',
291
+ 0x75d: 'D',
292
+ 0x75e: 'D',
293
+ 0x75f: 'D',
294
+ 0x760: 'D',
295
+ 0x761: 'D',
296
+ 0x762: 'D',
297
+ 0x763: 'D',
298
+ 0x764: 'D',
299
+ 0x765: 'D',
300
+ 0x766: 'D',
301
+ 0x767: 'D',
302
+ 0x768: 'D',
303
+ 0x769: 'D',
304
+ 0x76a: 'D',
305
+ 0x76b: 'R',
306
+ 0x76c: 'R',
307
+ 0x76d: 'D',
308
+ 0x76e: 'D',
309
+ 0x76f: 'D',
310
+ 0x770: 'D',
311
+ 0x771: 'R',
312
+ 0x772: 'D',
313
+ 0x773: 'R',
314
+ 0x774: 'R',
315
+ 0x775: 'D',
316
+ 0x776: 'D',
317
+ 0x777: 'D',
318
+ 0x778: 'R',
319
+ 0x779: 'R',
320
+ 0x77a: 'D',
321
+ 0x77b: 'D',
322
+ 0x77c: 'D',
323
+ 0x77d: 'D',
324
+ 0x77e: 'D',
325
+ 0x77f: 'D',
326
+ 0x7ca: 'D',
327
+ 0x7cb: 'D',
328
+ 0x7cc: 'D',
329
+ 0x7cd: 'D',
330
+ 0x7ce: 'D',
331
+ 0x7cf: 'D',
332
+ 0x7d0: 'D',
333
+ 0x7d1: 'D',
334
+ 0x7d2: 'D',
335
+ 0x7d3: 'D',
336
+ 0x7d4: 'D',
337
+ 0x7d5: 'D',
338
+ 0x7d6: 'D',
339
+ 0x7d7: 'D',
340
+ 0x7d8: 'D',
341
+ 0x7d9: 'D',
342
+ 0x7da: 'D',
343
+ 0x7db: 'D',
344
+ 0x7dc: 'D',
345
+ 0x7dd: 'D',
346
+ 0x7de: 'D',
347
+ 0x7df: 'D',
348
+ 0x7e0: 'D',
349
+ 0x7e1: 'D',
350
+ 0x7e2: 'D',
351
+ 0x7e3: 'D',
352
+ 0x7e4: 'D',
353
+ 0x7e5: 'D',
354
+ 0x7e6: 'D',
355
+ 0x7e7: 'D',
356
+ 0x7e8: 'D',
357
+ 0x7e9: 'D',
358
+ 0x7ea: 'D',
359
+ 0x7fa: 'C',
360
+ 0x840: 'R',
361
+ 0x841: 'D',
362
+ 0x842: 'D',
363
+ 0x843: 'D',
364
+ 0x844: 'D',
365
+ 0x845: 'D',
366
+ 0x846: 'R',
367
+ 0x847: 'D',
368
+ 0x848: 'D',
369
+ 0x849: 'R',
370
+ 0x84a: 'D',
371
+ 0x84b: 'D',
372
+ 0x84c: 'D',
373
+ 0x84d: 'D',
374
+ 0x84e: 'D',
375
+ 0x84f: 'R',
376
+ 0x850: 'D',
377
+ 0x851: 'D',
378
+ 0x852: 'D',
379
+ 0x853: 'D',
380
+ 0x854: 'R',
381
+ 0x855: 'D',
382
+ 0x856: 'U',
383
+ 0x857: 'U',
384
+ 0x858: 'U',
385
+ 0x8a0: 'D',
386
+ 0x8a2: 'D',
387
+ 0x8a3: 'D',
388
+ 0x8a4: 'D',
389
+ 0x8a5: 'D',
390
+ 0x8a6: 'D',
391
+ 0x8a7: 'D',
392
+ 0x8a8: 'D',
393
+ 0x8a9: 'D',
394
+ 0x8aa: 'R',
395
+ 0x8ab: 'R',
396
+ 0x8ac: 'R',
397
+ 0x1806: 'U',
398
+ 0x1807: 'D',
399
+ 0x180a: 'C',
400
+ 0x180e: 'U',
401
+ 0x1820: 'D',
402
+ 0x1821: 'D',
403
+ 0x1822: 'D',
404
+ 0x1823: 'D',
405
+ 0x1824: 'D',
406
+ 0x1825: 'D',
407
+ 0x1826: 'D',
408
+ 0x1827: 'D',
409
+ 0x1828: 'D',
410
+ 0x1829: 'D',
411
+ 0x182a: 'D',
412
+ 0x182b: 'D',
413
+ 0x182c: 'D',
414
+ 0x182d: 'D',
415
+ 0x182e: 'D',
416
+ 0x182f: 'D',
417
+ 0x1830: 'D',
418
+ 0x1831: 'D',
419
+ 0x1832: 'D',
420
+ 0x1833: 'D',
421
+ 0x1834: 'D',
422
+ 0x1835: 'D',
423
+ 0x1836: 'D',
424
+ 0x1837: 'D',
425
+ 0x1838: 'D',
426
+ 0x1839: 'D',
427
+ 0x183a: 'D',
428
+ 0x183b: 'D',
429
+ 0x183c: 'D',
430
+ 0x183d: 'D',
431
+ 0x183e: 'D',
432
+ 0x183f: 'D',
433
+ 0x1840: 'D',
434
+ 0x1841: 'D',
435
+ 0x1842: 'D',
436
+ 0x1843: 'D',
437
+ 0x1844: 'D',
438
+ 0x1845: 'D',
439
+ 0x1846: 'D',
440
+ 0x1847: 'D',
441
+ 0x1848: 'D',
442
+ 0x1849: 'D',
443
+ 0x184a: 'D',
444
+ 0x184b: 'D',
445
+ 0x184c: 'D',
446
+ 0x184d: 'D',
447
+ 0x184e: 'D',
448
+ 0x184f: 'D',
449
+ 0x1850: 'D',
450
+ 0x1851: 'D',
451
+ 0x1852: 'D',
452
+ 0x1853: 'D',
453
+ 0x1854: 'D',
454
+ 0x1855: 'D',
455
+ 0x1856: 'D',
456
+ 0x1857: 'D',
457
+ 0x1858: 'D',
458
+ 0x1859: 'D',
459
+ 0x185a: 'D',
460
+ 0x185b: 'D',
461
+ 0x185c: 'D',
462
+ 0x185d: 'D',
463
+ 0x185e: 'D',
464
+ 0x185f: 'D',
465
+ 0x1860: 'D',
466
+ 0x1861: 'D',
467
+ 0x1862: 'D',
468
+ 0x1863: 'D',
469
+ 0x1864: 'D',
470
+ 0x1865: 'D',
471
+ 0x1866: 'D',
472
+ 0x1867: 'D',
473
+ 0x1868: 'D',
474
+ 0x1869: 'D',
475
+ 0x186a: 'D',
476
+ 0x186b: 'D',
477
+ 0x186c: 'D',
478
+ 0x186d: 'D',
479
+ 0x186e: 'D',
480
+ 0x186f: 'D',
481
+ 0x1870: 'D',
482
+ 0x1871: 'D',
483
+ 0x1872: 'D',
484
+ 0x1873: 'D',
485
+ 0x1874: 'D',
486
+ 0x1875: 'D',
487
+ 0x1876: 'D',
488
+ 0x1877: 'D',
489
+ 0x1880: 'U',
490
+ 0x1881: 'U',
491
+ 0x1882: 'U',
492
+ 0x1883: 'U',
493
+ 0x1884: 'U',
494
+ 0x1885: 'U',
495
+ 0x1886: 'U',
496
+ 0x1887: 'D',
497
+ 0x1888: 'D',
498
+ 0x1889: 'D',
499
+ 0x188a: 'D',
500
+ 0x188b: 'D',
501
+ 0x188c: 'D',
502
+ 0x188d: 'D',
503
+ 0x188e: 'D',
504
+ 0x188f: 'D',
505
+ 0x1890: 'D',
506
+ 0x1891: 'D',
507
+ 0x1892: 'D',
508
+ 0x1893: 'D',
509
+ 0x1894: 'D',
510
+ 0x1895: 'D',
511
+ 0x1896: 'D',
512
+ 0x1897: 'D',
513
+ 0x1898: 'D',
514
+ 0x1899: 'D',
515
+ 0x189a: 'D',
516
+ 0x189b: 'D',
517
+ 0x189c: 'D',
518
+ 0x189d: 'D',
519
+ 0x189e: 'D',
520
+ 0x189f: 'D',
521
+ 0x18a0: 'D',
522
+ 0x18a1: 'D',
523
+ 0x18a2: 'D',
524
+ 0x18a3: 'D',
525
+ 0x18a4: 'D',
526
+ 0x18a5: 'D',
527
+ 0x18a6: 'D',
528
+ 0x18a7: 'D',
529
+ 0x18a8: 'D',
530
+ 0x18aa: 'D',
531
+ 0x200c: 'U',
532
+ 0x200d: 'C',
533
+ 0x2066: 'U',
534
+ 0x2067: 'U',
535
+ 0x2068: 'U',
536
+ 0x2069: 'U',
537
+ 0xa840: 'D',
538
+ 0xa841: 'D',
539
+ 0xa842: 'D',
540
+ 0xa843: 'D',
541
+ 0xa844: 'D',
542
+ 0xa845: 'D',
543
+ 0xa846: 'D',
544
+ 0xa847: 'D',
545
+ 0xa848: 'D',
546
+ 0xa849: 'D',
547
+ 0xa84a: 'D',
548
+ 0xa84b: 'D',
549
+ 0xa84c: 'D',
550
+ 0xa84d: 'D',
551
+ 0xa84e: 'D',
552
+ 0xa84f: 'D',
553
+ 0xa850: 'D',
554
+ 0xa851: 'D',
555
+ 0xa852: 'D',
556
+ 0xa853: 'D',
557
+ 0xa854: 'D',
558
+ 0xa855: 'D',
559
+ 0xa856: 'D',
560
+ 0xa857: 'D',
561
+ 0xa858: 'D',
562
+ 0xa859: 'D',
563
+ 0xa85a: 'D',
564
+ 0xa85b: 'D',
565
+ 0xa85c: 'D',
566
+ 0xa85d: 'D',
567
+ 0xa85e: 'D',
568
+ 0xa85f: 'D',
569
+ 0xa860: 'D',
570
+ 0xa861: 'D',
571
+ 0xa862: 'D',
572
+ 0xa863: 'D',
573
+ 0xa864: 'D',
574
+ 0xa865: 'D',
575
+ 0xa866: 'D',
576
+ 0xa867: 'D',
577
+ 0xa868: 'D',
578
+ 0xa869: 'D',
579
+ 0xa86a: 'D',
580
+ 0xa86b: 'D',
581
+ 0xa86c: 'D',
582
+ 0xa86d: 'D',
583
+ 0xa86e: 'D',
584
+ 0xa86f: 'D',
585
+ 0xa870: 'D',
586
+ 0xa871: 'D',
587
+ 0xa872: 'L',
588
+ 0xa873: 'U',
589
+ }
590
+ codepoint_classes = {
591
+ 'PVALID': (
592
+ (0x2d, 0x2e),
593
+ (0x30, 0x3a),
594
+ (0x61, 0x7b),
595
+ (0xdf, 0xf7),
596
+ (0xf8, 0x100),
597
+ (0x101, 0x102),
598
+ (0x103, 0x104),
599
+ (0x105, 0x106),
600
+ (0x107, 0x108),
601
+ (0x109, 0x10a),
602
+ (0x10b, 0x10c),
603
+ (0x10d, 0x10e),
604
+ (0x10f, 0x110),
605
+ (0x111, 0x112),
606
+ (0x113, 0x114),
607
+ (0x115, 0x116),
608
+ (0x117, 0x118),
609
+ (0x119, 0x11a),
610
+ (0x11b, 0x11c),
611
+ (0x11d, 0x11e),
612
+ (0x11f, 0x120),
613
+ (0x121, 0x122),
614
+ (0x123, 0x124),
615
+ (0x125, 0x126),
616
+ (0x127, 0x128),
617
+ (0x129, 0x12a),
618
+ (0x12b, 0x12c),
619
+ (0x12d, 0x12e),
620
+ (0x12f, 0x130),
621
+ (0x131, 0x132),
622
+ (0x135, 0x136),
623
+ (0x137, 0x139),
624
+ (0x13a, 0x13b),
625
+ (0x13c, 0x13d),
626
+ (0x13e, 0x13f),
627
+ (0x142, 0x143),
628
+ (0x144, 0x145),
629
+ (0x146, 0x147),
630
+ (0x148, 0x149),
631
+ (0x14b, 0x14c),
632
+ (0x14d, 0x14e),
633
+ (0x14f, 0x150),
634
+ (0x151, 0x152),
635
+ (0x153, 0x154),
636
+ (0x155, 0x156),
637
+ (0x157, 0x158),
638
+ (0x159, 0x15a),
639
+ (0x15b, 0x15c),
640
+ (0x15d, 0x15e),
641
+ (0x15f, 0x160),
642
+ (0x161, 0x162),
643
+ (0x163, 0x164),
644
+ (0x165, 0x166),
645
+ (0x167, 0x168),
646
+ (0x169, 0x16a),
647
+ (0x16b, 0x16c),
648
+ (0x16d, 0x16e),
649
+ (0x16f, 0x170),
650
+ (0x171, 0x172),
651
+ (0x173, 0x174),
652
+ (0x175, 0x176),
653
+ (0x177, 0x178),
654
+ (0x17a, 0x17b),
655
+ (0x17c, 0x17d),
656
+ (0x17e, 0x17f),
657
+ (0x180, 0x181),
658
+ (0x183, 0x184),
659
+ (0x185, 0x186),
660
+ (0x188, 0x189),
661
+ (0x18c, 0x18e),
662
+ (0x192, 0x193),
663
+ (0x195, 0x196),
664
+ (0x199, 0x19c),
665
+ (0x19e, 0x19f),
666
+ (0x1a1, 0x1a2),
667
+ (0x1a3, 0x1a4),
668
+ (0x1a5, 0x1a6),
669
+ (0x1a8, 0x1a9),
670
+ (0x1aa, 0x1ac),
671
+ (0x1ad, 0x1ae),
672
+ (0x1b0, 0x1b1),
673
+ (0x1b4, 0x1b5),
674
+ (0x1b6, 0x1b7),
675
+ (0x1b9, 0x1bc),
676
+ (0x1bd, 0x1c4),
677
+ (0x1ce, 0x1cf),
678
+ (0x1d0, 0x1d1),
679
+ (0x1d2, 0x1d3),
680
+ (0x1d4, 0x1d5),
681
+ (0x1d6, 0x1d7),
682
+ (0x1d8, 0x1d9),
683
+ (0x1da, 0x1db),
684
+ (0x1dc, 0x1de),
685
+ (0x1df, 0x1e0),
686
+ (0x1e1, 0x1e2),
687
+ (0x1e3, 0x1e4),
688
+ (0x1e5, 0x1e6),
689
+ (0x1e7, 0x1e8),
690
+ (0x1e9, 0x1ea),
691
+ (0x1eb, 0x1ec),
692
+ (0x1ed, 0x1ee),
693
+ (0x1ef, 0x1f1),
694
+ (0x1f5, 0x1f6),
695
+ (0x1f9, 0x1fa),
696
+ (0x1fb, 0x1fc),
697
+ (0x1fd, 0x1fe),
698
+ (0x1ff, 0x200),
699
+ (0x201, 0x202),
700
+ (0x203, 0x204),
701
+ (0x205, 0x206),
702
+ (0x207, 0x208),
703
+ (0x209, 0x20a),
704
+ (0x20b, 0x20c),
705
+ (0x20d, 0x20e),
706
+ (0x20f, 0x210),
707
+ (0x211, 0x212),
708
+ (0x213, 0x214),
709
+ (0x215, 0x216),
710
+ (0x217, 0x218),
711
+ (0x219, 0x21a),
712
+ (0x21b, 0x21c),
713
+ (0x21d, 0x21e),
714
+ (0x21f, 0x220),
715
+ (0x221, 0x222),
716
+ (0x223, 0x224),
717
+ (0x225, 0x226),
718
+ (0x227, 0x228),
719
+ (0x229, 0x22a),
720
+ (0x22b, 0x22c),
721
+ (0x22d, 0x22e),
722
+ (0x22f, 0x230),
723
+ (0x231, 0x232),
724
+ (0x233, 0x23a),
725
+ (0x23c, 0x23d),
726
+ (0x23f, 0x241),
727
+ (0x242, 0x243),
728
+ (0x247, 0x248),
729
+ (0x249, 0x24a),
730
+ (0x24b, 0x24c),
731
+ (0x24d, 0x24e),
732
+ (0x24f, 0x2b0),
733
+ (0x2b9, 0x2c2),
734
+ (0x2c6, 0x2d2),
735
+ (0x2ec, 0x2ed),
736
+ (0x2ee, 0x2ef),
737
+ (0x300, 0x340),
738
+ (0x342, 0x343),
739
+ (0x346, 0x34f),
740
+ (0x350, 0x370),
741
+ (0x371, 0x372),
742
+ (0x373, 0x374),
743
+ (0x377, 0x378),
744
+ (0x37b, 0x37e),
745
+ (0x390, 0x391),
746
+ (0x3ac, 0x3cf),
747
+ (0x3d7, 0x3d8),
748
+ (0x3d9, 0x3da),
749
+ (0x3db, 0x3dc),
750
+ (0x3dd, 0x3de),
751
+ (0x3df, 0x3e0),
752
+ (0x3e1, 0x3e2),
753
+ (0x3e3, 0x3e4),
754
+ (0x3e5, 0x3e6),
755
+ (0x3e7, 0x3e8),
756
+ (0x3e9, 0x3ea),
757
+ (0x3eb, 0x3ec),
758
+ (0x3ed, 0x3ee),
759
+ (0x3ef, 0x3f0),
760
+ (0x3f3, 0x3f4),
761
+ (0x3f8, 0x3f9),
762
+ (0x3fb, 0x3fd),
763
+ (0x430, 0x460),
764
+ (0x461, 0x462),
765
+ (0x463, 0x464),
766
+ (0x465, 0x466),
767
+ (0x467, 0x468),
768
+ (0x469, 0x46a),
769
+ (0x46b, 0x46c),
770
+ (0x46d, 0x46e),
771
+ (0x46f, 0x470),
772
+ (0x471, 0x472),
773
+ (0x473, 0x474),
774
+ (0x475, 0x476),
775
+ (0x477, 0x478),
776
+ (0x479, 0x47a),
777
+ (0x47b, 0x47c),
778
+ (0x47d, 0x47e),
779
+ (0x47f, 0x480),
780
+ (0x481, 0x482),
781
+ (0x483, 0x488),
782
+ (0x48b, 0x48c),
783
+ (0x48d, 0x48e),
784
+ (0x48f, 0x490),
785
+ (0x491, 0x492),
786
+ (0x493, 0x494),
787
+ (0x495, 0x496),
788
+ (0x497, 0x498),
789
+ (0x499, 0x49a),
790
+ (0x49b, 0x49c),
791
+ (0x49d, 0x49e),
792
+ (0x49f, 0x4a0),
793
+ (0x4a1, 0x4a2),
794
+ (0x4a3, 0x4a4),
795
+ (0x4a5, 0x4a6),
796
+ (0x4a7, 0x4a8),
797
+ (0x4a9, 0x4aa),
798
+ (0x4ab, 0x4ac),
799
+ (0x4ad, 0x4ae),
800
+ (0x4af, 0x4b0),
801
+ (0x4b1, 0x4b2),
802
+ (0x4b3, 0x4b4),
803
+ (0x4b5, 0x4b6),
804
+ (0x4b7, 0x4b8),
805
+ (0x4b9, 0x4ba),
806
+ (0x4bb, 0x4bc),
807
+ (0x4bd, 0x4be),
808
+ (0x4bf, 0x4c0),
809
+ (0x4c2, 0x4c3),
810
+ (0x4c4, 0x4c5),
811
+ (0x4c6, 0x4c7),
812
+ (0x4c8, 0x4c9),
813
+ (0x4ca, 0x4cb),
814
+ (0x4cc, 0x4cd),
815
+ (0x4ce, 0x4d0),
816
+ (0x4d1, 0x4d2),
817
+ (0x4d3, 0x4d4),
818
+ (0x4d5, 0x4d6),
819
+ (0x4d7, 0x4d8),
820
+ (0x4d9, 0x4da),
821
+ (0x4db, 0x4dc),
822
+ (0x4dd, 0x4de),
823
+ (0x4df, 0x4e0),
824
+ (0x4e1, 0x4e2),
825
+ (0x4e3, 0x4e4),
826
+ (0x4e5, 0x4e6),
827
+ (0x4e7, 0x4e8),
828
+ (0x4e9, 0x4ea),
829
+ (0x4eb, 0x4ec),
830
+ (0x4ed, 0x4ee),
831
+ (0x4ef, 0x4f0),
832
+ (0x4f1, 0x4f2),
833
+ (0x4f3, 0x4f4),
834
+ (0x4f5, 0x4f6),
835
+ (0x4f7, 0x4f8),
836
+ (0x4f9, 0x4fa),
837
+ (0x4fb, 0x4fc),
838
+ (0x4fd, 0x4fe),
839
+ (0x4ff, 0x500),
840
+ (0x501, 0x502),
841
+ (0x503, 0x504),
842
+ (0x505, 0x506),
843
+ (0x507, 0x508),
844
+ (0x509, 0x50a),
845
+ (0x50b, 0x50c),
846
+ (0x50d, 0x50e),
847
+ (0x50f, 0x510),
848
+ (0x511, 0x512),
849
+ (0x513, 0x514),
850
+ (0x515, 0x516),
851
+ (0x517, 0x518),
852
+ (0x519, 0x51a),
853
+ (0x51b, 0x51c),
854
+ (0x51d, 0x51e),
855
+ (0x51f, 0x520),
856
+ (0x521, 0x522),
857
+ (0x523, 0x524),
858
+ (0x525, 0x526),
859
+ (0x527, 0x528),
860
+ (0x559, 0x55a),
861
+ (0x561, 0x587),
862
+ (0x591, 0x5be),
863
+ (0x5bf, 0x5c0),
864
+ (0x5c1, 0x5c3),
865
+ (0x5c4, 0x5c6),
866
+ (0x5c7, 0x5c8),
867
+ (0x5d0, 0x5eb),
868
+ (0x5f0, 0x5f3),
869
+ (0x610, 0x61b),
870
+ (0x620, 0x640),
871
+ (0x641, 0x660),
872
+ (0x66e, 0x675),
873
+ (0x679, 0x6d4),
874
+ (0x6d5, 0x6dd),
875
+ (0x6df, 0x6e9),
876
+ (0x6ea, 0x6f0),
877
+ (0x6fa, 0x700),
878
+ (0x710, 0x74b),
879
+ (0x74d, 0x7b2),
880
+ (0x7c0, 0x7f6),
881
+ (0x800, 0x82e),
882
+ (0x840, 0x85c),
883
+ (0x8a0, 0x8a1),
884
+ (0x8a2, 0x8ad),
885
+ (0x8e4, 0x8ff),
886
+ (0x900, 0x958),
887
+ (0x960, 0x964),
888
+ (0x966, 0x970),
889
+ (0x971, 0x978),
890
+ (0x979, 0x980),
891
+ (0x981, 0x984),
892
+ (0x985, 0x98d),
893
+ (0x98f, 0x991),
894
+ (0x993, 0x9a9),
895
+ (0x9aa, 0x9b1),
896
+ (0x9b2, 0x9b3),
897
+ (0x9b6, 0x9ba),
898
+ (0x9bc, 0x9c5),
899
+ (0x9c7, 0x9c9),
900
+ (0x9cb, 0x9cf),
901
+ (0x9d7, 0x9d8),
902
+ (0x9e0, 0x9e4),
903
+ (0x9e6, 0x9f2),
904
+ (0xa01, 0xa04),
905
+ (0xa05, 0xa0b),
906
+ (0xa0f, 0xa11),
907
+ (0xa13, 0xa29),
908
+ (0xa2a, 0xa31),
909
+ (0xa32, 0xa33),
910
+ (0xa35, 0xa36),
911
+ (0xa38, 0xa3a),
912
+ (0xa3c, 0xa3d),
913
+ (0xa3e, 0xa43),
914
+ (0xa47, 0xa49),
915
+ (0xa4b, 0xa4e),
916
+ (0xa51, 0xa52),
917
+ (0xa5c, 0xa5d),
918
+ (0xa66, 0xa76),
919
+ (0xa81, 0xa84),
920
+ (0xa85, 0xa8e),
921
+ (0xa8f, 0xa92),
922
+ (0xa93, 0xaa9),
923
+ (0xaaa, 0xab1),
924
+ (0xab2, 0xab4),
925
+ (0xab5, 0xaba),
926
+ (0xabc, 0xac6),
927
+ (0xac7, 0xaca),
928
+ (0xacb, 0xace),
929
+ (0xad0, 0xad1),
930
+ (0xae0, 0xae4),
931
+ (0xae6, 0xaf0),
932
+ (0xb01, 0xb04),
933
+ (0xb05, 0xb0d),
934
+ (0xb0f, 0xb11),
935
+ (0xb13, 0xb29),
936
+ (0xb2a, 0xb31),
937
+ (0xb32, 0xb34),
938
+ (0xb35, 0xb3a),
939
+ (0xb3c, 0xb45),
940
+ (0xb47, 0xb49),
941
+ (0xb4b, 0xb4e),
942
+ (0xb56, 0xb58),
943
+ (0xb5f, 0xb64),
944
+ (0xb66, 0xb70),
945
+ (0xb71, 0xb72),
946
+ (0xb82, 0xb84),
947
+ (0xb85, 0xb8b),
948
+ (0xb8e, 0xb91),
949
+ (0xb92, 0xb96),
950
+ (0xb99, 0xb9b),
951
+ (0xb9c, 0xb9d),
952
+ (0xb9e, 0xba0),
953
+ (0xba3, 0xba5),
954
+ (0xba8, 0xbab),
955
+ (0xbae, 0xbba),
956
+ (0xbbe, 0xbc3),
957
+ (0xbc6, 0xbc9),
958
+ (0xbca, 0xbce),
959
+ (0xbd0, 0xbd1),
960
+ (0xbd7, 0xbd8),
961
+ (0xbe6, 0xbf0),
962
+ (0xc01, 0xc04),
963
+ (0xc05, 0xc0d),
964
+ (0xc0e, 0xc11),
965
+ (0xc12, 0xc29),
966
+ (0xc2a, 0xc34),
967
+ (0xc35, 0xc3a),
968
+ (0xc3d, 0xc45),
969
+ (0xc46, 0xc49),
970
+ (0xc4a, 0xc4e),
971
+ (0xc55, 0xc57),
972
+ (0xc58, 0xc5a),
973
+ (0xc60, 0xc64),
974
+ (0xc66, 0xc70),
975
+ (0xc82, 0xc84),
976
+ (0xc85, 0xc8d),
977
+ (0xc8e, 0xc91),
978
+ (0xc92, 0xca9),
979
+ (0xcaa, 0xcb4),
980
+ (0xcb5, 0xcba),
981
+ (0xcbc, 0xcc5),
982
+ (0xcc6, 0xcc9),
983
+ (0xcca, 0xcce),
984
+ (0xcd5, 0xcd7),
985
+ (0xcde, 0xcdf),
986
+ (0xce0, 0xce4),
987
+ (0xce6, 0xcf0),
988
+ (0xcf1, 0xcf3),
989
+ (0xd02, 0xd04),
990
+ (0xd05, 0xd0d),
991
+ (0xd0e, 0xd11),
992
+ (0xd12, 0xd3b),
993
+ (0xd3d, 0xd45),
994
+ (0xd46, 0xd49),
995
+ (0xd4a, 0xd4f),
996
+ (0xd57, 0xd58),
997
+ (0xd60, 0xd64),
998
+ (0xd66, 0xd70),
999
+ (0xd7a, 0xd80),
1000
+ (0xd82, 0xd84),
1001
+ (0xd85, 0xd97),
1002
+ (0xd9a, 0xdb2),
1003
+ (0xdb3, 0xdbc),
1004
+ (0xdbd, 0xdbe),
1005
+ (0xdc0, 0xdc7),
1006
+ (0xdca, 0xdcb),
1007
+ (0xdcf, 0xdd5),
1008
+ (0xdd6, 0xdd7),
1009
+ (0xdd8, 0xde0),
1010
+ (0xdf2, 0xdf4),
1011
+ (0xe01, 0xe33),
1012
+ (0xe34, 0xe3b),
1013
+ (0xe40, 0xe4f),
1014
+ (0xe50, 0xe5a),
1015
+ (0xe81, 0xe83),
1016
+ (0xe84, 0xe85),
1017
+ (0xe87, 0xe89),
1018
+ (0xe8a, 0xe8b),
1019
+ (0xe8d, 0xe8e),
1020
+ (0xe94, 0xe98),
1021
+ (0xe99, 0xea0),
1022
+ (0xea1, 0xea4),
1023
+ (0xea5, 0xea6),
1024
+ (0xea7, 0xea8),
1025
+ (0xeaa, 0xeac),
1026
+ (0xead, 0xeb3),
1027
+ (0xeb4, 0xeba),
1028
+ (0xebb, 0xebe),
1029
+ (0xec0, 0xec5),
1030
+ (0xec6, 0xec7),
1031
+ (0xec8, 0xece),
1032
+ (0xed0, 0xeda),
1033
+ (0xede, 0xee0),
1034
+ (0xf00, 0xf01),
1035
+ (0xf0b, 0xf0c),
1036
+ (0xf18, 0xf1a),
1037
+ (0xf20, 0xf2a),
1038
+ (0xf35, 0xf36),
1039
+ (0xf37, 0xf38),
1040
+ (0xf39, 0xf3a),
1041
+ (0xf3e, 0xf43),
1042
+ (0xf44, 0xf48),
1043
+ (0xf49, 0xf4d),
1044
+ (0xf4e, 0xf52),
1045
+ (0xf53, 0xf57),
1046
+ (0xf58, 0xf5c),
1047
+ (0xf5d, 0xf69),
1048
+ (0xf6a, 0xf6d),
1049
+ (0xf71, 0xf73),
1050
+ (0xf74, 0xf75),
1051
+ (0xf7a, 0xf81),
1052
+ (0xf82, 0xf85),
1053
+ (0xf86, 0xf93),
1054
+ (0xf94, 0xf98),
1055
+ (0xf99, 0xf9d),
1056
+ (0xf9e, 0xfa2),
1057
+ (0xfa3, 0xfa7),
1058
+ (0xfa8, 0xfac),
1059
+ (0xfad, 0xfb9),
1060
+ (0xfba, 0xfbd),
1061
+ (0xfc6, 0xfc7),
1062
+ (0x1000, 0x104a),
1063
+ (0x1050, 0x109e),
1064
+ (0x10d0, 0x10fb),
1065
+ (0x10fd, 0x1100),
1066
+ (0x1200, 0x1249),
1067
+ (0x124a, 0x124e),
1068
+ (0x1250, 0x1257),
1069
+ (0x1258, 0x1259),
1070
+ (0x125a, 0x125e),
1071
+ (0x1260, 0x1289),
1072
+ (0x128a, 0x128e),
1073
+ (0x1290, 0x12b1),
1074
+ (0x12b2, 0x12b6),
1075
+ (0x12b8, 0x12bf),
1076
+ (0x12c0, 0x12c1),
1077
+ (0x12c2, 0x12c6),
1078
+ (0x12c8, 0x12d7),
1079
+ (0x12d8, 0x1311),
1080
+ (0x1312, 0x1316),
1081
+ (0x1318, 0x135b),
1082
+ (0x135d, 0x1360),
1083
+ (0x1380, 0x1390),
1084
+ (0x13a0, 0x13f5),
1085
+ (0x1401, 0x166d),
1086
+ (0x166f, 0x1680),
1087
+ (0x1681, 0x169b),
1088
+ (0x16a0, 0x16eb),
1089
+ (0x1700, 0x170d),
1090
+ (0x170e, 0x1715),
1091
+ (0x1720, 0x1735),
1092
+ (0x1740, 0x1754),
1093
+ (0x1760, 0x176d),
1094
+ (0x176e, 0x1771),
1095
+ (0x1772, 0x1774),
1096
+ (0x1780, 0x17b4),
1097
+ (0x17b6, 0x17d4),
1098
+ (0x17d7, 0x17d8),
1099
+ (0x17dc, 0x17de),
1100
+ (0x17e0, 0x17ea),
1101
+ (0x1810, 0x181a),
1102
+ (0x1820, 0x1878),
1103
+ (0x1880, 0x18ab),
1104
+ (0x18b0, 0x18f6),
1105
+ (0x1900, 0x191d),
1106
+ (0x1920, 0x192c),
1107
+ (0x1930, 0x193c),
1108
+ (0x1946, 0x196e),
1109
+ (0x1970, 0x1975),
1110
+ (0x1980, 0x19ac),
1111
+ (0x19b0, 0x19ca),
1112
+ (0x19d0, 0x19da),
1113
+ (0x1a00, 0x1a1c),
1114
+ (0x1a20, 0x1a5f),
1115
+ (0x1a60, 0x1a7d),
1116
+ (0x1a7f, 0x1a8a),
1117
+ (0x1a90, 0x1a9a),
1118
+ (0x1aa7, 0x1aa8),
1119
+ (0x1b00, 0x1b4c),
1120
+ (0x1b50, 0x1b5a),
1121
+ (0x1b6b, 0x1b74),
1122
+ (0x1b80, 0x1bf4),
1123
+ (0x1c00, 0x1c38),
1124
+ (0x1c40, 0x1c4a),
1125
+ (0x1c4d, 0x1c7e),
1126
+ (0x1cd0, 0x1cd3),
1127
+ (0x1cd4, 0x1cf7),
1128
+ (0x1d00, 0x1d2c),
1129
+ (0x1d2f, 0x1d30),
1130
+ (0x1d3b, 0x1d3c),
1131
+ (0x1d4e, 0x1d4f),
1132
+ (0x1d6b, 0x1d78),
1133
+ (0x1d79, 0x1d9b),
1134
+ (0x1dc0, 0x1de7),
1135
+ (0x1dfc, 0x1e00),
1136
+ (0x1e01, 0x1e02),
1137
+ (0x1e03, 0x1e04),
1138
+ (0x1e05, 0x1e06),
1139
+ (0x1e07, 0x1e08),
1140
+ (0x1e09, 0x1e0a),
1141
+ (0x1e0b, 0x1e0c),
1142
+ (0x1e0d, 0x1e0e),
1143
+ (0x1e0f, 0x1e10),
1144
+ (0x1e11, 0x1e12),
1145
+ (0x1e13, 0x1e14),
1146
+ (0x1e15, 0x1e16),
1147
+ (0x1e17, 0x1e18),
1148
+ (0x1e19, 0x1e1a),
1149
+ (0x1e1b, 0x1e1c),
1150
+ (0x1e1d, 0x1e1e),
1151
+ (0x1e1f, 0x1e20),
1152
+ (0x1e21, 0x1e22),
1153
+ (0x1e23, 0x1e24),
1154
+ (0x1e25, 0x1e26),
1155
+ (0x1e27, 0x1e28),
1156
+ (0x1e29, 0x1e2a),
1157
+ (0x1e2b, 0x1e2c),
1158
+ (0x1e2d, 0x1e2e),
1159
+ (0x1e2f, 0x1e30),
1160
+ (0x1e31, 0x1e32),
1161
+ (0x1e33, 0x1e34),
1162
+ (0x1e35, 0x1e36),
1163
+ (0x1e37, 0x1e38),
1164
+ (0x1e39, 0x1e3a),
1165
+ (0x1e3b, 0x1e3c),
1166
+ (0x1e3d, 0x1e3e),
1167
+ (0x1e3f, 0x1e40),
1168
+ (0x1e41, 0x1e42),
1169
+ (0x1e43, 0x1e44),
1170
+ (0x1e45, 0x1e46),
1171
+ (0x1e47, 0x1e48),
1172
+ (0x1e49, 0x1e4a),
1173
+ (0x1e4b, 0x1e4c),
1174
+ (0x1e4d, 0x1e4e),
1175
+ (0x1e4f, 0x1e50),
1176
+ (0x1e51, 0x1e52),
1177
+ (0x1e53, 0x1e54),
1178
+ (0x1e55, 0x1e56),
1179
+ (0x1e57, 0x1e58),
1180
+ (0x1e59, 0x1e5a),
1181
+ (0x1e5b, 0x1e5c),
1182
+ (0x1e5d, 0x1e5e),
1183
+ (0x1e5f, 0x1e60),
1184
+ (0x1e61, 0x1e62),
1185
+ (0x1e63, 0x1e64),
1186
+ (0x1e65, 0x1e66),
1187
+ (0x1e67, 0x1e68),
1188
+ (0x1e69, 0x1e6a),
1189
+ (0x1e6b, 0x1e6c),
1190
+ (0x1e6d, 0x1e6e),
1191
+ (0x1e6f, 0x1e70),
1192
+ (0x1e71, 0x1e72),
1193
+ (0x1e73, 0x1e74),
1194
+ (0x1e75, 0x1e76),
1195
+ (0x1e77, 0x1e78),
1196
+ (0x1e79, 0x1e7a),
1197
+ (0x1e7b, 0x1e7c),
1198
+ (0x1e7d, 0x1e7e),
1199
+ (0x1e7f, 0x1e80),
1200
+ (0x1e81, 0x1e82),
1201
+ (0x1e83, 0x1e84),
1202
+ (0x1e85, 0x1e86),
1203
+ (0x1e87, 0x1e88),
1204
+ (0x1e89, 0x1e8a),
1205
+ (0x1e8b, 0x1e8c),
1206
+ (0x1e8d, 0x1e8e),
1207
+ (0x1e8f, 0x1e90),
1208
+ (0x1e91, 0x1e92),
1209
+ (0x1e93, 0x1e94),
1210
+ (0x1e95, 0x1e9a),
1211
+ (0x1e9c, 0x1e9e),
1212
+ (0x1e9f, 0x1ea0),
1213
+ (0x1ea1, 0x1ea2),
1214
+ (0x1ea3, 0x1ea4),
1215
+ (0x1ea5, 0x1ea6),
1216
+ (0x1ea7, 0x1ea8),
1217
+ (0x1ea9, 0x1eaa),
1218
+ (0x1eab, 0x1eac),
1219
+ (0x1ead, 0x1eae),
1220
+ (0x1eaf, 0x1eb0),
1221
+ (0x1eb1, 0x1eb2),
1222
+ (0x1eb3, 0x1eb4),
1223
+ (0x1eb5, 0x1eb6),
1224
+ (0x1eb7, 0x1eb8),
1225
+ (0x1eb9, 0x1eba),
1226
+ (0x1ebb, 0x1ebc),
1227
+ (0x1ebd, 0x1ebe),
1228
+ (0x1ebf, 0x1ec0),
1229
+ (0x1ec1, 0x1ec2),
1230
+ (0x1ec3, 0x1ec4),
1231
+ (0x1ec5, 0x1ec6),
1232
+ (0x1ec7, 0x1ec8),
1233
+ (0x1ec9, 0x1eca),
1234
+ (0x1ecb, 0x1ecc),
1235
+ (0x1ecd, 0x1ece),
1236
+ (0x1ecf, 0x1ed0),
1237
+ (0x1ed1, 0x1ed2),
1238
+ (0x1ed3, 0x1ed4),
1239
+ (0x1ed5, 0x1ed6),
1240
+ (0x1ed7, 0x1ed8),
1241
+ (0x1ed9, 0x1eda),
1242
+ (0x1edb, 0x1edc),
1243
+ (0x1edd, 0x1ede),
1244
+ (0x1edf, 0x1ee0),
1245
+ (0x1ee1, 0x1ee2),
1246
+ (0x1ee3, 0x1ee4),
1247
+ (0x1ee5, 0x1ee6),
1248
+ (0x1ee7, 0x1ee8),
1249
+ (0x1ee9, 0x1eea),
1250
+ (0x1eeb, 0x1eec),
1251
+ (0x1eed, 0x1eee),
1252
+ (0x1eef, 0x1ef0),
1253
+ (0x1ef1, 0x1ef2),
1254
+ (0x1ef3, 0x1ef4),
1255
+ (0x1ef5, 0x1ef6),
1256
+ (0x1ef7, 0x1ef8),
1257
+ (0x1ef9, 0x1efa),
1258
+ (0x1efb, 0x1efc),
1259
+ (0x1efd, 0x1efe),
1260
+ (0x1eff, 0x1f08),
1261
+ (0x1f10, 0x1f16),
1262
+ (0x1f20, 0x1f28),
1263
+ (0x1f30, 0x1f38),
1264
+ (0x1f40, 0x1f46),
1265
+ (0x1f50, 0x1f58),
1266
+ (0x1f60, 0x1f68),
1267
+ (0x1f70, 0x1f71),
1268
+ (0x1f72, 0x1f73),
1269
+ (0x1f74, 0x1f75),
1270
+ (0x1f76, 0x1f77),
1271
+ (0x1f78, 0x1f79),
1272
+ (0x1f7a, 0x1f7b),
1273
+ (0x1f7c, 0x1f7d),
1274
+ (0x1fb0, 0x1fb2),
1275
+ (0x1fb6, 0x1fb7),
1276
+ (0x1fc6, 0x1fc7),
1277
+ (0x1fd0, 0x1fd3),
1278
+ (0x1fd6, 0x1fd8),
1279
+ (0x1fe0, 0x1fe3),
1280
+ (0x1fe4, 0x1fe8),
1281
+ (0x1ff6, 0x1ff7),
1282
+ (0x214e, 0x214f),
1283
+ (0x2184, 0x2185),
1284
+ (0x2c30, 0x2c5f),
1285
+ (0x2c61, 0x2c62),
1286
+ (0x2c65, 0x2c67),
1287
+ (0x2c68, 0x2c69),
1288
+ (0x2c6a, 0x2c6b),
1289
+ (0x2c6c, 0x2c6d),
1290
+ (0x2c71, 0x2c72),
1291
+ (0x2c73, 0x2c75),
1292
+ (0x2c76, 0x2c7c),
1293
+ (0x2c81, 0x2c82),
1294
+ (0x2c83, 0x2c84),
1295
+ (0x2c85, 0x2c86),
1296
+ (0x2c87, 0x2c88),
1297
+ (0x2c89, 0x2c8a),
1298
+ (0x2c8b, 0x2c8c),
1299
+ (0x2c8d, 0x2c8e),
1300
+ (0x2c8f, 0x2c90),
1301
+ (0x2c91, 0x2c92),
1302
+ (0x2c93, 0x2c94),
1303
+ (0x2c95, 0x2c96),
1304
+ (0x2c97, 0x2c98),
1305
+ (0x2c99, 0x2c9a),
1306
+ (0x2c9b, 0x2c9c),
1307
+ (0x2c9d, 0x2c9e),
1308
+ (0x2c9f, 0x2ca0),
1309
+ (0x2ca1, 0x2ca2),
1310
+ (0x2ca3, 0x2ca4),
1311
+ (0x2ca5, 0x2ca6),
1312
+ (0x2ca7, 0x2ca8),
1313
+ (0x2ca9, 0x2caa),
1314
+ (0x2cab, 0x2cac),
1315
+ (0x2cad, 0x2cae),
1316
+ (0x2caf, 0x2cb0),
1317
+ (0x2cb1, 0x2cb2),
1318
+ (0x2cb3, 0x2cb4),
1319
+ (0x2cb5, 0x2cb6),
1320
+ (0x2cb7, 0x2cb8),
1321
+ (0x2cb9, 0x2cba),
1322
+ (0x2cbb, 0x2cbc),
1323
+ (0x2cbd, 0x2cbe),
1324
+ (0x2cbf, 0x2cc0),
1325
+ (0x2cc1, 0x2cc2),
1326
+ (0x2cc3, 0x2cc4),
1327
+ (0x2cc5, 0x2cc6),
1328
+ (0x2cc7, 0x2cc8),
1329
+ (0x2cc9, 0x2cca),
1330
+ (0x2ccb, 0x2ccc),
1331
+ (0x2ccd, 0x2cce),
1332
+ (0x2ccf, 0x2cd0),
1333
+ (0x2cd1, 0x2cd2),
1334
+ (0x2cd3, 0x2cd4),
1335
+ (0x2cd5, 0x2cd6),
1336
+ (0x2cd7, 0x2cd8),
1337
+ (0x2cd9, 0x2cda),
1338
+ (0x2cdb, 0x2cdc),
1339
+ (0x2cdd, 0x2cde),
1340
+ (0x2cdf, 0x2ce0),
1341
+ (0x2ce1, 0x2ce2),
1342
+ (0x2ce3, 0x2ce5),
1343
+ (0x2cec, 0x2ced),
1344
+ (0x2cee, 0x2cf2),
1345
+ (0x2cf3, 0x2cf4),
1346
+ (0x2d00, 0x2d26),
1347
+ (0x2d27, 0x2d28),
1348
+ (0x2d2d, 0x2d2e),
1349
+ (0x2d30, 0x2d68),
1350
+ (0x2d7f, 0x2d97),
1351
+ (0x2da0, 0x2da7),
1352
+ (0x2da8, 0x2daf),
1353
+ (0x2db0, 0x2db7),
1354
+ (0x2db8, 0x2dbf),
1355
+ (0x2dc0, 0x2dc7),
1356
+ (0x2dc8, 0x2dcf),
1357
+ (0x2dd0, 0x2dd7),
1358
+ (0x2dd8, 0x2ddf),
1359
+ (0x2de0, 0x2e00),
1360
+ (0x2e2f, 0x2e30),
1361
+ (0x3005, 0x3008),
1362
+ (0x302a, 0x302e),
1363
+ (0x303c, 0x303d),
1364
+ (0x3041, 0x3097),
1365
+ (0x3099, 0x309b),
1366
+ (0x309d, 0x309f),
1367
+ (0x30a1, 0x30fb),
1368
+ (0x30fc, 0x30ff),
1369
+ (0x3105, 0x312e),
1370
+ (0x31a0, 0x31bb),
1371
+ (0x31f0, 0x3200),
1372
+ (0x3400, 0x4db6),
1373
+ (0x4e00, 0x9fcd),
1374
+ (0xa000, 0xa48d),
1375
+ (0xa4d0, 0xa4fe),
1376
+ (0xa500, 0xa60d),
1377
+ (0xa610, 0xa62c),
1378
+ (0xa641, 0xa642),
1379
+ (0xa643, 0xa644),
1380
+ (0xa645, 0xa646),
1381
+ (0xa647, 0xa648),
1382
+ (0xa649, 0xa64a),
1383
+ (0xa64b, 0xa64c),
1384
+ (0xa64d, 0xa64e),
1385
+ (0xa64f, 0xa650),
1386
+ (0xa651, 0xa652),
1387
+ (0xa653, 0xa654),
1388
+ (0xa655, 0xa656),
1389
+ (0xa657, 0xa658),
1390
+ (0xa659, 0xa65a),
1391
+ (0xa65b, 0xa65c),
1392
+ (0xa65d, 0xa65e),
1393
+ (0xa65f, 0xa660),
1394
+ (0xa661, 0xa662),
1395
+ (0xa663, 0xa664),
1396
+ (0xa665, 0xa666),
1397
+ (0xa667, 0xa668),
1398
+ (0xa669, 0xa66a),
1399
+ (0xa66b, 0xa66c),
1400
+ (0xa66d, 0xa670),
1401
+ (0xa674, 0xa67e),
1402
+ (0xa67f, 0xa680),
1403
+ (0xa681, 0xa682),
1404
+ (0xa683, 0xa684),
1405
+ (0xa685, 0xa686),
1406
+ (0xa687, 0xa688),
1407
+ (0xa689, 0xa68a),
1408
+ (0xa68b, 0xa68c),
1409
+ (0xa68d, 0xa68e),
1410
+ (0xa68f, 0xa690),
1411
+ (0xa691, 0xa692),
1412
+ (0xa693, 0xa694),
1413
+ (0xa695, 0xa696),
1414
+ (0xa697, 0xa698),
1415
+ (0xa69f, 0xa6e6),
1416
+ (0xa6f0, 0xa6f2),
1417
+ (0xa717, 0xa720),
1418
+ (0xa723, 0xa724),
1419
+ (0xa725, 0xa726),
1420
+ (0xa727, 0xa728),
1421
+ (0xa729, 0xa72a),
1422
+ (0xa72b, 0xa72c),
1423
+ (0xa72d, 0xa72e),
1424
+ (0xa72f, 0xa732),
1425
+ (0xa733, 0xa734),
1426
+ (0xa735, 0xa736),
1427
+ (0xa737, 0xa738),
1428
+ (0xa739, 0xa73a),
1429
+ (0xa73b, 0xa73c),
1430
+ (0xa73d, 0xa73e),
1431
+ (0xa73f, 0xa740),
1432
+ (0xa741, 0xa742),
1433
+ (0xa743, 0xa744),
1434
+ (0xa745, 0xa746),
1435
+ (0xa747, 0xa748),
1436
+ (0xa749, 0xa74a),
1437
+ (0xa74b, 0xa74c),
1438
+ (0xa74d, 0xa74e),
1439
+ (0xa74f, 0xa750),
1440
+ (0xa751, 0xa752),
1441
+ (0xa753, 0xa754),
1442
+ (0xa755, 0xa756),
1443
+ (0xa757, 0xa758),
1444
+ (0xa759, 0xa75a),
1445
+ (0xa75b, 0xa75c),
1446
+ (0xa75d, 0xa75e),
1447
+ (0xa75f, 0xa760),
1448
+ (0xa761, 0xa762),
1449
+ (0xa763, 0xa764),
1450
+ (0xa765, 0xa766),
1451
+ (0xa767, 0xa768),
1452
+ (0xa769, 0xa76a),
1453
+ (0xa76b, 0xa76c),
1454
+ (0xa76d, 0xa76e),
1455
+ (0xa76f, 0xa770),
1456
+ (0xa771, 0xa779),
1457
+ (0xa77a, 0xa77b),
1458
+ (0xa77c, 0xa77d),
1459
+ (0xa77f, 0xa780),
1460
+ (0xa781, 0xa782),
1461
+ (0xa783, 0xa784),
1462
+ (0xa785, 0xa786),
1463
+ (0xa787, 0xa789),
1464
+ (0xa78c, 0xa78d),
1465
+ (0xa78e, 0xa78f),
1466
+ (0xa791, 0xa792),
1467
+ (0xa793, 0xa794),
1468
+ (0xa7a1, 0xa7a2),
1469
+ (0xa7a3, 0xa7a4),
1470
+ (0xa7a5, 0xa7a6),
1471
+ (0xa7a7, 0xa7a8),
1472
+ (0xa7a9, 0xa7aa),
1473
+ (0xa7fa, 0xa828),
1474
+ (0xa840, 0xa874),
1475
+ (0xa880, 0xa8c5),
1476
+ (0xa8d0, 0xa8da),
1477
+ (0xa8e0, 0xa8f8),
1478
+ (0xa8fb, 0xa8fc),
1479
+ (0xa900, 0xa92e),
1480
+ (0xa930, 0xa954),
1481
+ (0xa980, 0xa9c1),
1482
+ (0xa9cf, 0xa9da),
1483
+ (0xaa00, 0xaa37),
1484
+ (0xaa40, 0xaa4e),
1485
+ (0xaa50, 0xaa5a),
1486
+ (0xaa60, 0xaa77),
1487
+ (0xaa7a, 0xaa7c),
1488
+ (0xaa80, 0xaac3),
1489
+ (0xaadb, 0xaade),
1490
+ (0xaae0, 0xaaf0),
1491
+ (0xaaf2, 0xaaf7),
1492
+ (0xab01, 0xab07),
1493
+ (0xab09, 0xab0f),
1494
+ (0xab11, 0xab17),
1495
+ (0xab20, 0xab27),
1496
+ (0xab28, 0xab2f),
1497
+ (0xabc0, 0xabeb),
1498
+ (0xabec, 0xabee),
1499
+ (0xabf0, 0xabfa),
1500
+ (0xac00, 0xd7a4),
1501
+ (0xfa0e, 0xfa10),
1502
+ (0xfa11, 0xfa12),
1503
+ (0xfa13, 0xfa15),
1504
+ (0xfa1f, 0xfa20),
1505
+ (0xfa21, 0xfa22),
1506
+ (0xfa23, 0xfa25),
1507
+ (0xfa27, 0xfa2a),
1508
+ (0xfb1e, 0xfb1f),
1509
+ (0xfe20, 0xfe27),
1510
+ (0xfe73, 0xfe74),
1511
+ (0x10000, 0x1000c),
1512
+ (0x1000d, 0x10027),
1513
+ (0x10028, 0x1003b),
1514
+ (0x1003c, 0x1003e),
1515
+ (0x1003f, 0x1004e),
1516
+ (0x10050, 0x1005e),
1517
+ (0x10080, 0x100fb),
1518
+ (0x101fd, 0x101fe),
1519
+ (0x10280, 0x1029d),
1520
+ (0x102a0, 0x102d1),
1521
+ (0x10300, 0x1031f),
1522
+ (0x10330, 0x10341),
1523
+ (0x10342, 0x1034a),
1524
+ (0x10380, 0x1039e),
1525
+ (0x103a0, 0x103c4),
1526
+ (0x103c8, 0x103d0),
1527
+ (0x10428, 0x1049e),
1528
+ (0x104a0, 0x104aa),
1529
+ (0x10800, 0x10806),
1530
+ (0x10808, 0x10809),
1531
+ (0x1080a, 0x10836),
1532
+ (0x10837, 0x10839),
1533
+ (0x1083c, 0x1083d),
1534
+ (0x1083f, 0x10856),
1535
+ (0x10900, 0x10916),
1536
+ (0x10920, 0x1093a),
1537
+ (0x10980, 0x109b8),
1538
+ (0x109be, 0x109c0),
1539
+ (0x10a00, 0x10a04),
1540
+ (0x10a05, 0x10a07),
1541
+ (0x10a0c, 0x10a14),
1542
+ (0x10a15, 0x10a18),
1543
+ (0x10a19, 0x10a34),
1544
+ (0x10a38, 0x10a3b),
1545
+ (0x10a3f, 0x10a40),
1546
+ (0x10a60, 0x10a7d),
1547
+ (0x10b00, 0x10b36),
1548
+ (0x10b40, 0x10b56),
1549
+ (0x10b60, 0x10b73),
1550
+ (0x10c00, 0x10c49),
1551
+ (0x11000, 0x11047),
1552
+ (0x11066, 0x11070),
1553
+ (0x11080, 0x110bb),
1554
+ (0x110d0, 0x110e9),
1555
+ (0x110f0, 0x110fa),
1556
+ (0x11100, 0x11135),
1557
+ (0x11136, 0x11140),
1558
+ (0x11180, 0x111c5),
1559
+ (0x111d0, 0x111da),
1560
+ (0x11680, 0x116b8),
1561
+ (0x116c0, 0x116ca),
1562
+ (0x12000, 0x1236f),
1563
+ (0x13000, 0x1342f),
1564
+ (0x16800, 0x16a39),
1565
+ (0x16f00, 0x16f45),
1566
+ (0x16f50, 0x16f7f),
1567
+ (0x16f8f, 0x16fa0),
1568
+ (0x1b000, 0x1b002),
1569
+ (0x20000, 0x2a6d7),
1570
+ (0x2a700, 0x2b735),
1571
+ (0x2b740, 0x2b81e),
1572
+ ),
1573
+ 'CONTEXTJ': (
1574
+ (0x200c, 0x200e),
1575
+ ),
1576
+ 'CONTEXTO': (
1577
+ (0xb7, 0xb8),
1578
+ (0x375, 0x376),
1579
+ (0x5f3, 0x5f5),
1580
+ (0x660, 0x66a),
1581
+ (0x6f0, 0x6fa),
1582
+ (0x30fb, 0x30fc),
1583
+ ),
1584
+ }