Internet Draft Paul Hoffman draft-ietf-idn-nameprep-03.txt IMC & VPNC February 24, 2001 Marc Blanchet Expires in six months ViaGenie Preparation of Internationalized Host Names Status of this memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." To view the list Internet-Draft Shadow Directories, see http://www.ietf.org/shadow.html. Abstract This document describes how to prepare internationalized host names for use in the DNS. The steps include: - mapping characters to other characters, such as to change their case - normalizing the characters - excluding characters that are prohibited from appearing in internationalized host names This document does not specify a wire protocol. This preparation should be done before the DNS request. 1. Introduction When expanding today's DNS to include internationalized host names, those new names will be handled in many parts of the DNS. The Internationalized Domain Name (IDN) Working Group's requirements document [IDNReq] describes a framework for domain name handling as well as requirements for the new names. A user can enter a domain name into an application program in a myriad of fashions. Depending on the input method, the characters entered in the domain name may or may not be those that are allowed in internationalized host names. Thus, there must be a way to normalized the user's input before the name is resolved in the DNS. It is a design goal of this document to allow users to enter host names in applications and have the highest chance of getting the name correct. Another, often conflicting, design goal is to allow as wide of a range of characters as possible to be allowed in host names. The user should not be limited to only entering exactly the characters that might have been used, but to instead be able to enter characters that unambiguously normalize to characters in the desired host name. Although it would be easy to use the process in this step to "correct" perceived mis-features or bugs in the current character standards, this document expressly does not do so. This document describes the steps needed to convert a name part from one that is entered by the user to one that can be used in the DNS. Within a fully-qualified domain name, some labels may be internationalized, while others are not. This specification should be applied to all internationalized labels. An application must be able to recognize which part is internationalized; the method for such recognition is outside of the scope of this document. Note that this specification is harmless to the non-internationalized labels: when the steps described here are applied to non-internationalized labels, the label will not change. 1.1 Terminology The key words "MUST", "SHALL", "REQUIRED", "SHOULD", "RECOMMENDED", and "MAY" in this document are to be interpreted as described in RFC 2119 [RFC2119]. Examples in this document use the notation for code points and names from the Unicode Standard [Unicode3] and ISO/IEC 10646 [ISO10646]. For example, the letter "a" may be represented as either "U+0061" or "LATIN SMALL LETTER A". In the lists of prohibited characters, the "U+" is left off to make the lists easier to read. The names of character ranges are shown in square brackets (such as "[SYMBOLS]") and do not come from the standards. Note: A glossary of terms used in Unicode and ISO/IEC 10646 can be found in [Glossary]. Information on the 10646/Unicode character model can be found in [CharModel]. 2. Preparation Overview The steps for preparing names are: 1) Input from the application service interface -- This can be done in many ways and is not specified in this document 2) Map -- For each character in the input, check if it has a mapping and, if so, replace it with its mapping. The mappings are a combination of folding uppercase characters to lowercase and hyphen mapping. This is described in Section 4. 3) Normalize -- Normalize the characters. This is described in Section 5. 4) Look for prohibited output -- Check for any characters that are not allowed in the output. If any are found, return an error to the application service interface. This is described in Section 6. 5) Resolution of the prepared name -- This must be specified in a different IDN document. The above steps MUST be performed in the order given in order to comply with this specification. The steps in this document have associated tables in the document. The tables are derived from outside sources, and the derivation is briefly described in the document. Although a great deal of effort has gone into preparing the tables, there is a chance that the tables do not correctly reflect the outside sources. Regardless of whether or not the tables differ from the sources, implementations MUST use the tables in this document for their processing. That is, if there is an error in the tables, the tables must still be used. Future versions of this document may include corrections and additions to the tables. 3. Mapping Each character in the input stream is checked against the mapping table. The mapping table can be found in Appendix E of this document. That table includes all the steps described in the subsections below. The mappings can be one-to-none, one-to-one, or one-to-many. That is, some characters may be eliminated or replaced by more than one character, and the output of this step might be shorter or longer than the input. Because of this, an application MUST be prepared to receive a longer or shorter string than the one input in the nameprep algorithm. Rationale: Characters that are not wanted in internationalized name parts can either be mapped to nothing in the mapping step, or cause an error in the prohibition step. The general guideline used to pick between the two outcomes was that removing alphabetic, non-protocol characters be done in the mapping step, but all other removals be done in the prohibition step. This allows for simple linguistic errors on the part of an input mechanism to be caught in the mapping step, but to not hide serious errors such as entering protocol characters or invisible characters from the user. 3.1 Case mapping The input string is case folded according to [UTR21]. For most characters, this is the same thing as changing the input character to a lowercase character. For some characters, however, more complex transformations occur. The mapping table in Appendix E is derived by applying the rules for equivalence classes from [UTR21]. Rationale: This step could have been "change all lowercase characters into uppercase characters". However, the upper-to-lower folding was chosen because most users of the Internet today enter host names in lowercase. 3.2 Additional folding mappings There are some characters that do not have mappings in [UTR21] but still need processing. These characters include a few Greek characters and many symbols that contain Latin characters. The list of characters to add to the mapping table were determined by the following algorithm: b = NormalizeWithKC(Fold(a)); c = NormalizeWithKC(Fold(b)); if c is not the same as b, add a mapping for "a to c". Because NormalizeWithKC(Fold(c)) always equals c, the table is stable from that point on. 3.3 Mapped out The following characters are simply deleted from the input (that is, they are mapped to nothing) because their presence or absence should not make two domain names different. Some characters are only useful in line-based text, and are otherwise invisible and ignored. 00AD; SOFT HYPHEN 1806; MONGOLIAN TODO SOFT HYPHEN 200B; ZERO WIDTH SPACE FEFF; ZERO WIDTH NO-BREAK SPACE Variation selectors and cursive connectors select different glyphs, but do not bear semantics. 180B; MONGOLIAN FREE VARIATION SELECTOR ONE 180C; MONGOLIAN FREE VARIATION SELECTOR TWO 180D; MONGOLIAN FREE VARIATION SELECTOR THREE 200C; ZERO WIDTH NON-JOINER 200D; ZERO WIDTH JOINER 4. Normalization The output of the mapping step is normalized using form KC, as described in [UTR15]. Using form KC instead of form C causes many characters that are identical or near-identical to be converted into a single character. Note that this specification refers to a specific version of [UTR15]. If a later version of [UTR15] changes the algorithm used for normalizing, that later version MUST NOT be used with this specification. Note that it is likely that this specification will be revised if UTR15 is changed, but until that happens, only the specified version of [UTR15] must be used. 5. Prohibited Output Before the text can be emitted, it must be checked for prohibited code points. There is a variety of prohibited code points, as described in this section. One of the goals of IDN is to allow the widest possible set of host names as long as those host names do not cause other problems, such as conflict with other standards. Specifically, experience with current DNS names have shown that there is a desire for host names that include personal names, company names, and spoken phrases. A goal of this section is to prohibit as few characters that might be used in these contexts as possible. The collected list of prohibited code points can be found in Appendix F of this document. The list in Appendix F MUST be used by implementations of this specification. If there are any discrepancies between the list in Appendix F and subsections below, the list Appendix F always takes precedence. Some code points listed in one section would also appear in other sections. Each code point is only listed once in the table in Appendix F. 5.1 Currently-prohibited ASCII characters Some of the ASCII characters that are currently prohibited in host names by [STD13] are also used in protocol elements such as URIs [URI]. The other characters in the range U+0000 to U+007F that are not currently allowed are also prohibited in host name parts to reserve them for future use in protocol elements. 0000-002C; [ASCII] 002E-002F; [ASCII] 003A-0040; [ASCII] 005B-0060; [ASCII] 007B-007F; [ASCII] 5.2 Space characters Space characters would make visual transcription of URLs nearly impossible and could lead to user entry errors in many ways. 0020; SPACE 00A0; NO-BREAK SPACE 2000; EN QUAD 2001; EM QUAD 2002; EN SPACE 2003; EM SPACE 2004; THREE-PER-EM SPACE 2005; FOUR-PER-EM SPACE 2006; SIX-PER-EM SPACE 2007; FIGURE SPACE 2008; PUNCTUATION SPACE 2009; THIN SPACE 200A; HAIR SPACE 202F; NARROW NO-BREAK SPACE 3000; IDEOGRAPHIC SPACE 1680; OGHAM SPACE MARK 200B; ZERO WIDTH SPACE 5.3 Control characters Control characters cannot be seen and can cause unpredictable results when displayed. 0000-001F; [CONTROL CHARACTERS] 007F; DELETE 0080-009F; [CONTROL CHARACTERS] 2028; LINE SEPARATOR 2029; PARAGRAPH SEPARATOR 5.4 Private use and replacement characters Because private-use characters do not have defined meanings, they are prohibited. The private-use characters are: E000-F8FF; [PRIVATE USE, PLANE 0] F0000-FFFFD; [PRIVATE USE, PLANE 15] 100000-10FFFD; [PRIVATE USE, PLANE 16] The replacement character (U+FFFD) has no known semantic definition in a name, and is often displayed by renderers to indicate "there would be some character here, but it cannot be rendered". For example, on a computer with no Asian fonts, a name with three katakana characters might be rendered with three replacement characters. FFFD; REPLACEMENT CHARACTER 5.5 Non-character code points Non-character code points are code points that have been assigned in ISO/IEC 10646 but are not characters. Because they are already assigned, they are guaranteed not to later change into characters. FFFE-FFFF; [NONCHARACTER CODE POINTS] 1FFFE-1FFFF; [NONCHARACTER CODE POINTS] 2FFFE-2FFFF; [NONCHARACTER CODE POINTS] 3FFFE-3FFFF; [NONCHARACTER CODE POINTS] 4FFFE-4FFFF; [NONCHARACTER CODE POINTS] 5FFFE-5FFFF; [NONCHARACTER CODE POINTS] 6FFFE-6FFFF; [NONCHARACTER CODE POINTS] 7FFFE-7FFFF; [NONCHARACTER CODE POINTS] 8FFFE-8FFFF; [NONCHARACTER CODE POINTS] 9FFFE-9FFFF; [NONCHARACTER CODE POINTS] AFFFE-AFFFF; [NONCHARACTER CODE POINTS] BFFFE-BFFFF; [NONCHARACTER CODE POINTS] CFFFE-CFFFF; [NONCHARACTER CODE POINTS] DFFFE-DFFFF; [NONCHARACTER CODE POINTS] EFFFE-EFFFF; [NONCHARACTER CODE POINTS] FFFFE-FFFFF; [NONCHARACTER CODE POINTS] 10FFFE-10FFFF; [NONCHARACTER CODE POINTS] 5.6 Surrogate codes The following code points are permanently reserved for use as surrogate code values in the UTF-16 encoding, will never be assigned to characters, and are therefore prohibited: D800-DFFF; [SURROGATE CODES] 5.7 Inappropriate for plain text The following characters should not appear in regular text. FFF9; INTERLINEAR ANNOTATION ANCHOR FFFA; INTERLINEAR ANNOTATION SEPARATOR FFFB; INTERLINEAR ANNOTATION TERMINATOR FFFC; OBJECT REPLACEMENT CHARACTER 5.8 Inappropriate for domain names The ideographic description characters allow different sequences of characters to be rendered the same way, which makes them inappropriate for host names that must have a single canonical order. 2FF0-2FFF; [IDEOGRAPHIC DESCRIPTION CHARACTERS] 5.9 Change display properties The following characters, some of which are deprecated in ISO/IEC 10646, can cause changes in display or the order in which characters appear when rendered. 200E; LEFT-TO-RIGHT MARK 200F; RIGHT-TO-LEFT MARK 202A; LEFT-TO-RIGHT EMBEDDING 202B; RIGHT-TO-LEFT EMBEDDING 202C; POP DIRECTIONAL FORMATTING 202D; LEFT-TO-RIGHT OVERRIDE 202E; RIGHT-TO-LEFT OVERRIDE 206A; INHIBIT SYMMETRIC SWAPPING 206B; ACTIVATE SYMMETRIC SWAPPING 206C; INHIBIT ARABIC FORM SHAPING 206D; ACTIVATE ARABIC FORM SHAPING 206E; NATIONAL DIGIT SHAPES 206F; NOMINAL DIGIT SHAPES 5.10 Inappropriate characters from common input mechanisms U+3002 is used as if it were U+002E in many input mechanisms, particularly in Asia. This prohibition allows input mechanisms to safely map U+3002 to U+002E before doing nameprep without worrying about preventing users from accessing legitimate host name parts. 3002; IDEOGRAPHIC FULL STOP 6. Unassigned Code Points All code points not assigned in ISO/IEC 10646 are called "unassigned code points". Authoritative name servers MUST NOT have internationalized name parts that contain any unassigned code points. DNS requests MAY contain name parts that contain unassigned code points. Note that this is the only part of this document where the requirements for queries differs from the requirements for names in DNS zones. Using two different policies for where unassigned code points can appear in the DNS prevents the need for versioning the IDN protocol [IDNrev]. This is very useful since it makes the overall processing simpler and do not impose a "protocol" to handle versioning. It is expected that ISO/IEC 10646 will be updated fairly frequently; recently, it has happened approximately once a year. Each time a new version of ISO/IEC 10646 appears, a new version of this document can be created. Some end users will want to use the new code points as soon as they are defined. The list of unassigned code points can be found in Appendix G of this document. The list in Appendix G MUST be used by implementations of this specification. If there are any discrepancies between the list in Appendix G and the ISO/IEC 10646 specification, the list Appendix G always takes precedence. Due to the way that versioning is handled in this section, host names that are embedded in structures that cannot be changed (such as the signed parts of digital certificates) MUST NOT have internationalized name parts that contain any unassigned code points. 6.1 Categories of code points Each code point in ISO/IEC 10646 can be categorized by how it acts in the process described in earlier sections of this document: AO Code points that may be in the output MN Code points that cannot be in the output because they are mapped to nothing or never appear as output from normalization D Code points that cannot be in the output because they are disallowed in the prohibition step U Unassigned code points A subsequent version of this document that references a newer version of ISO/IEC 10646 with new code points will inherently have some code points move from category U to either D, MN, or AO. For backwards compatibility, no future version of this document will move code points from any other category. That is, no current AO, MN, or D code points will ever change to a different category. Authoritative name servers MUST NOT contain any name that has code points outside of AO for the latest version of this document. That is, they are forbidden to contain any IDN names containing code points from the MN, D, or U categories. Applications creating name queries MUST treat U code points as if they were AO when preparing the name parts according to this document. Those applications MAY optionally have a preprocess that provide stricter checks: treating unassigned code points in the input as errors, or warning the user about the fact that the code point is unassigned in the version of this document that the software is based on; such a choice is a local matter for the software. Non-authoritative DNS servers MAY reject names that contain code points that are in categories MN or D for the version of this document that they implement, but MUST NOT reject names because they contain name parts with code points from category U. 6.2 Reasons for difference between authoritative servers and requests Different software using different versions of this document need to interoperate with maximal compatibility. The scheme described in this section (authoritative name servers MUST NOT use unassigned code points, requests MAY include unassigned code points) allows that compatibility without introducing any known security or interoperability issues. The list below shows what happens if a request contains a code point from category U that is allowed in a newer version of this document. The request either resolves to the domain name that was intended, or resolves to no domain at all. In this list, the request comes from an application using version "oldVersion" of this document, the authoritative name server is using version "newVersion" of this document, and the code point X was in category U on oldVersion, and has changed category to AO, MN, or D. There are 3 possible scenarios: 1. X becomes AO -- In newVersion, X is in category AO. Because the application passed X through, it gets back correct data from the authoritative name server. There is one exceptional case, where X is a combining mark. The order of combining marks is normalized, so if another combining mark Y has a lower combining class than X then XY will be put in the canonical order YX. (Unassigned code points are never reordered, so this doesn't happen in oldVersion). If the request contains YX, the request will get correct data from the authoritative name server. However, no domain name can be registered with XY, so a request with XY will get a "no such host" error. 2. X becomes MN -- In newVersion, X is normalized to code point "nX" and therefore X is now put in category MN. This cannot exist in any domain name, so any request containing X will get back a "no such host" error. Note, however, if the request had contained the letter nX, it would have gotten back correct data. 3. X becomes D -- In newVersion, X is in category MN. This cannot exist in any domain name, so any request containing X will get back a "no such host" error. In none of the cases does the request get data for a host name other than the one it actually wanted. The processing in this document is always stable. If a string S is the result of processing on newVersion, then it will remain the same when processed on oldVersion. There is always a way for the application to get the correct data from the authoritative name server. For example, suppose that was unassigned in oldVersion, and that it is assigned in newVersion, but case-folded to . As long as the application supplies strings containing instead of , the correct data will be returned. Because the processing is stable, a different application running newVersion can pass a processed host name to the application running oldVersion. It will only contain , and will return the correct results from the authoritative name server. 6.3 Versions of applications and authoritative name servers Another way to see that this versioning system works is to compare what happens when an application uses a newer or older version of this document. Newer application -- Suppose that a application or intermediary DNS server is using version newVersion and the authoritative name server is using version oldVersion. This case is simple: there will be no names on the server that cannot be accessed by the application because the resolver uses a superset of the code points accepted by the server. Newer server -- Suppose that an application or intermediary DNS server is using oldVersion and the authoritative name server is using newVersion. Because the application passed through any unassigned code points, the user can access names on the server that use code points in newVersion. No names on the site can have code points that are unassigned in newVersion, since that is illegal. In this case, the application has to enter the unassigned code points in the correct order, and has to use unassigned code points that would make it through both the mapping and the normalization steps. 7. Security Considerations Much of the security of the Internet relies on the DNS. Thus, any change to the characteristics of the DNS can change the security of much of the Internet. Host names are used by users to connect to Internet servers. The security of the Internet would be compromised if a user entering a single internationalized name could be connected to different servers based on different interpretations of the internationalized host name. Current applications may assume that the characters allowed in host names will always be the same as they are in [STD13]. This document vastly increases the number of characters available in host names. Every program that uses "special" characters in conjunction with host names may be vulnerable to attack based on the new characters allowed by this specification. 8. References [CharModel] Unicode Technical Report;17, Character Model. . [Glossary] Unicode Glossary, . [IDNReq] Zita Wenzel and James Seng, "Requirements of Internationalized Domain Names", draft-ietf-idn-requirements [IDNRev] Marc Blanchet, "Handling versions of internationalized domain names protocols", draft-ietf-idn-version [ISO10646] ISO/IEC 10646-1:2000. International Standard -- Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Normalize] Character Normalization in IETF Protocols, draft-duerst-i18n-norm-03 [RFC2119] Scott Bradner, "Key words for use in RFCs to Indicate Requirement Levels", March 1997, RFC 2119. [RFC2396] Tim Berners-Lee, et. al., "Uniform Resource Identifiers (URI): Generic Syntax", August 1998, RFC 2396. [RFC2732] Robert Hinden, et. al., Format for Literal IPv6 Addresses in URL's, December 1999, RFC 2732. [STD13] Paul Mockapetris, "Domain names - concepts and facilities" (RFC 1034) and "Domain names - implementation and specification" (RFC 1035, STD 13, November 1987. [Unicode3] The Unicode Consortium, "The Unicode Standard -- Version 3.0", ISBN 0-201-61633-5. Described at . [URIs] For example: Roy Fielding et. al., "Uniform Resource Identifiers: Generic Syntax", August 1998, RFC 2396; Robert Hinden et. al, "IPv6 Literal Addresses in URL's", December 1999, RFC 2732. [UTR15] Mark Davis and Martin Duerst. Unicode Normalization Forms. Unicode Technical Report;15. . [UTR21] Mark Davis. Case Mappings. Unicode Technical Report;21. . A. Acknowledgements Many people from the IETF IDN Working Group and the Unicode Technical Committee contributed ideas that went into the first draft of this document. Mark Davis and Patrik Faltstrom were particularly helpful in some of the ideas, such as the versioning description. The IDN namprep design team made many useful changes to the first draft. That team and its advisors include: Asmus Freytag Cathy Wissink Francois Yergeau James Seng Marc Blanchet Mark Davis Martin Duerst Patrik Faltstrom Paul Hoffman Additional significant improvements were proposed by: Jonathan Rosenne Kent Karlsson Scott Hollenbeck B. Differences Between -02 and -03 Drafts Throughout: Changed "ISO 10646" to "ISO/IEC 10646". Changed "codepoint" to "code point". Abstract: Added last sentence. 1: Removed the sentence about [IDNComp] in the first paragraph. Clarified the design goals in the third paragraph. Added new last paragraph about processing name parts. 3: Added sentence at the end of the second paragraph about accepting shorter or longer responses. Changed "Design note" to "Rationale". 3.1: Revised the first paragraph to make it clearer that the mapping is not simple lowercasing. Changed "Design note" to "Rationale". 3.2: Made it clearer that the normalization is with form KC. 5: Removed the previous third paragraph, which discussed the DNS service interface. 5.1: Added references for URIs. 5.4: Changed the sentence about the replacement character to read "...and is often displayed by renderers to indicate...". 5.10: Added this section, which prohibits U+3002. 6: Removed "yet" from the first sentence. 8: Fixed the reference for [IDNReq] and [STD13]. Removed the reference to [IDNComp]. Added the reference for [URIs]. C: Changed wording of the section. E, F, G: Added tags to the beginning and end of the tables. F: Added 3002 (from section 5.10). Added FDD0-FDEF, which were omitted in error. C. IANA Considerations None. D. Author Contact Information Paul Hoffman Internet Mail Consortium and VPN Consortium 127 Segre Place Santa Cruz, CA 95060 USA paul.hoffman@imc.org and paul.hoffman@vpnc.org Marc Blanchet Viagenie inc. 2875 boul. Laurier, bur. 300 Ste-Foy, Quebec, Canada, G1V 2M2 Marc.Blanchet@viagenie.qc.ca E. Mapping Table The following is the mapping table from Section 3. The table has three columns: - the character that is mapped from - the zero or more characters that it is mapped to - the reason for the mapping The columns are separated by semicolons. Note that the second column may be empty, or it may have one character, or it may have more than one character, with each character separated by a space. ----- Start Mapping Table ----- 0041; 0061; Case map 0042; 0062; Case map 0043; 0063; Case map 0044; 0064; Case map 0045; 0065; Case map 0046; 0066; Case map 0047; 0067; Case map 0048; 0068; Case map 0049; 0069; Case map 004A; 006A; Case map 004B; 006B; Case map 004C; 006C; Case map 004D; 006D; Case map 004E; 006E; Case map 004F; 006F; Case map 0050; 0070; Case map 0051; 0071; Case map 0052; 0072; Case map 0053; 0073; Case map 0054; 0074; Case map 0055; 0075; Case map 0056; 0076; Case map 0057; 0077; Case map 0058; 0078; Case map 0059; 0079; Case map 005A; 007A; Case map 00AD; ; Map out 00B5; 03BC; Case map 00C0; 00E0; Case map 00C1; 00E1; Case map 00C2; 00E2; Case map 00C3; 00E3; Case map 00C4; 00E4; Case map 00C5; 00E5; Case map 00C6; 00E6; Case map 00C7; 00E7; Case map 00C8; 00E8; Case map 00C9; 00E9; Case map 00CA; 00EA; Case map 00CB; 00EB; Case map 00CC; 00EC; Case map 00CD; 00ED; Case map 00CE; 00EE; Case map 00CF; 00EF; Case map 00D0; 00F0; Case map 00D1; 00F1; Case map 00D2; 00F2; Case map 00D3; 00F3; Case map 00D4; 00F4; Case map 00D5; 00F5; Case map 00D6; 00F6; Case map 00D8; 00F8; Case map 00D9; 00F9; Case map 00DA; 00FA; Case map 00DB; 00FB; Case map 00DC; 00FC; Case map 00DD; 00FD; Case map 00DE; 00FE; Case map 00DF; 0073 0073; Case map 0100; 0101; Case map 0102; 0103; Case map 0104; 0105; Case map 0106; 0107; Case map 0108; 0109; Case map 010A; 010B; Case map 010C; 010D; Case map 010E; 010F; Case map 0110; 0111; Case map 0112; 0113; Case map 0114; 0115; Case map 0116; 0117; Case map 0118; 0119; Case map 011A; 011B; Case map 011C; 011D; Case map 011E; 011F; Case map 0120; 0121; Case map 0122; 0123; Case map 0124; 0125; Case map 0126; 0127; Case map 0128; 0129; Case map 012A; 012B; Case map 012C; 012D; Case map 012E; 012F; Case map 0130; 0069; Case map 0131; 0069; Case map 0132; 0133; Case map 0134; 0135; Case map 0136; 0137; Case map 0139; 013A; Case map 013B; 013C; Case map 013D; 013E; Case map 013F; 0140; Case map 0141; 0142; Case map 0143; 0144; Case map 0145; 0146; Case map 0147; 0148; Case map 0149; 02BC 006E; Case map 014A; 014B; Case map 014C; 014D; Case map 014E; 014F; Case map 0150; 0151; Case map 0152; 0153; Case map 0154; 0155; Case map 0156; 0157; Case map 0158; 0159; Case map 015A; 015B; Case map 015C; 015D; Case map 015E; 015F; Case map 0160; 0161; Case map 0162; 0163; Case map 0164; 0165; Case map 0166; 0167; Case map 0168; 0169; Case map 016A; 016B; Case map 016C; 016D; Case map 016E; 016F; Case map 0170; 0171; Case map 0172; 0173; Case map 0174; 0175; Case map 0176; 0177; Case map 0178; 00FF; Case map 0179; 017A; Case map 017B; 017C; Case map 017D; 017E; Case map 017F; 0073; Case map 0181; 0253; Case map 0182; 0183; Case map 0184; 0185; Case map 0186; 0254; Case map 0187; 0188; Case map 0189; 0256; Case map 018A; 0257; Case map 018B; 018C; Case map 018E; 01DD; Case map 018F; 0259; Case map 0190; 025B; Case map 0191; 0192; Case map 0193; 0260; Case map 0194; 0263; Case map 0196; 0269; Case map 0197; 0268; Case map 0198; 0199; Case map 019C; 026F; Case map 019D; 0272; Case map 019F; 0275; Case map 01A0; 01A1; Case map 01A2; 01A3; Case map 01A4; 01A5; Case map 01A6; 0280; Case map 01A7; 01A8; Case map 01A9; 0283; Case map 01AC; 01AD; Case map 01AE; 0288; Case map 01AF; 01B0; Case map 01B1; 028A; Case map 01B2; 028B; Case map 01B3; 01B4; Case map 01B5; 01B6; Case map 01B7; 0292; Case map 01B8; 01B9; Case map 01BC; 01BD; Case map 01C4; 01C6; Case map 01C5; 01C6; Case map 01C7; 01C9; Case map 01C8; 01C9; Case map 01CA; 01CC; Case map 01CB; 01CC; Case map 01CD; 01CE; Case map 01CF; 01D0; Case map 01D1; 01D2; Case map 01D3; 01D4; Case map 01D5; 01D6; Case map 01D7; 01D8; Case map 01D9; 01DA; Case map 01DB; 01DC; Case map 01DE; 01DF; Case map 01E0; 01E1; Case map 01E2; 01E3; Case map 01E4; 01E5; Case map 01E6; 01E7; Case map 01E8; 01E9; Case map 01EA; 01EB; Case map 01EC; 01ED; Case map 01EE; 01EF; Case map 01F0; 006A 030C; Case map 01F1; 01F3; Case map 01F2; 01F3; Case map 01F4; 01F5; Case map 01F6; 0195; Case map 01F7; 01BF; Case map 01F8; 01F9; Case map 01FA; 01FB; Case map 01FC; 01FD; Case map 01FE; 01FF; Case map 0200; 0201; Case map 0202; 0203; Case map 0204; 0205; Case map 0206; 0207; Case map 0208; 0209; Case map 020A; 020B; Case map 020C; 020D; Case map 020E; 020F; Case map 0210; 0211; Case map 0212; 0213; Case map 0214; 0215; Case map 0216; 0217; Case map 0218; 0219; Case map 021A; 021B; Case map 021C; 021D; Case map 021E; 021F; Case map 0222; 0223; Case map 0224; 0225; Case map 0226; 0227; Case map 0228; 0229; Case map 022A; 022B; Case map 022C; 022D; Case map 022E; 022F; Case map 0230; 0231; Case map 0232; 0233; Case map 0345; 03B9; Case map 037A; 0020 03B9; Additional folding 0386; 03AC; Case map 0388; 03AD; Case map 0389; 03AE; Case map 038A; 03AF; Case map 038C; 03CC; Case map 038E; 03CD; Case map 038F; 03CE; Case map 0390; 03B9 0308 0301; Case map 0391; 03B1; Case map 0392; 03B2; Case map 0393; 03B3; Case map 0394; 03B4; Case map 0395; 03B5; Case map 0396; 03B6; Case map 0397; 03B7; Case map 0398; 03B8; Case map 0399; 03B9; Case map 039A; 03BA; Case map 039B; 03BB; Case map 039C; 03BC; Case map 039D; 03BD; Case map 039E; 03BE; Case map 039F; 03BF; Case map 03A0; 03C0; Case map 03A1; 03C1; Case map 03A3; 03C2; Case map 03A4; 03C4; Case map 03A5; 03C5; Case map 03A6; 03C6; Case map 03A7; 03C7; Case map 03A8; 03C8; Case map 03A9; 03C9; Case map 03AA; 03CA; Case map 03AB; 03CB; Case map 03B0; 03C5 0308 0301; Case map 03C2; 03C2; Case map 03C3; 03C2; Case map 03D0; 03B2; Case map 03D1; 03B8; Case map 03D2; 03C5; Additional folding 03D3; 03CD; Additional folding 03D4; 03CB; Additional folding 03D5; 03C6; Case map 03D6; 03C0; Case map 03DA; 03DB; Case map 03DC; 03DD; Case map 03DE; 03DF; Case map 03E0; 03E1; Case map 03E2; 03E3; Case map 03E4; 03E5; Case map 03E6; 03E7; Case map 03E8; 03E9; Case map 03EA; 03EB; Case map 03EC; 03ED; Case map 03EE; 03EF; Case map 03F0; 03BA; Case map 03F1; 03C1; Case map 03F2; 03C2; Case map 0400; 0450; Case map 0401; 0451; Case map 0402; 0452; Case map 0403; 0453; Case map 0404; 0454; Case map 0405; 0455; Case map 0406; 0456; Case map 0407; 0457; Case map 0408; 0458; Case map 0409; 0459; Case map 040A; 045A; Case map 040B; 045B; Case map 040C; 045C; Case map 040D; 045D; Case map 040E; 045E; Case map 040F; 045F; Case map 0410; 0430; Case map 0411; 0431; Case map 0412; 0432; Case map 0413; 0433; Case map 0414; 0434; Case map 0415; 0435; Case map 0416; 0436; Case map 0417; 0437; Case map 0418; 0438; Case map 0419; 0439; Case map 041A; 043A; Case map 041B; 043B; Case map 041C; 043C; Case map 041D; 043D; Case map 041E; 043E; Case map 041F; 043F; Case map 0420; 0440; Case map 0421; 0441; Case map 0422; 0442; Case map 0423; 0443; Case map 0424; 0444; Case map 0425; 0445; Case map 0426; 0446; Case map 0427; 0447; Case map 0428; 0448; Case map 0429; 0449; Case map 042A; 044A; Case map 042B; 044B; Case map 042C; 044C; Case map 042D; 044D; Case map 042E; 044E; Case map 042F; 044F; Case map 0460; 0461; Case map 0462; 0463; Case map 0464; 0465; Case map 0466; 0467; Case map 0468; 0469; Case map 046A; 046B; Case map 046C; 046D; Case map 046E; 046F; Case map 0470; 0471; Case map 0472; 0473; Case map 0474; 0475; Case map 0476; 0477; Case map 0478; 0479; Case map 047A; 047B; Case map 047C; 047D; Case map 047E; 047F; Case map 0480; 0481; Case map 048C; 048D; Case map 048E; 048F; Case map 0490; 0491; Case map 0492; 0493; Case map 0494; 0495; Case map 0496; 0497; Case map 0498; 0499; Case map 049A; 049B; Case map 049C; 049D; Case map 049E; 049F; Case map 04A0; 04A1; Case map 04A2; 04A3; Case map 04A4; 04A5; Case map 04A6; 04A7; Case map 04A8; 04A9; Case map 04AA; 04AB; Case map 04AC; 04AD; Case map 04AE; 04AF; Case map 04B0; 04B1; Case map 04B2; 04B3; Case map 04B4; 04B5; Case map 04B6; 04B7; Case map 04B8; 04B9; Case map 04BA; 04BB; Case map 04BC; 04BD; Case map 04BE; 04BF; Case map 04C1; 04C2; Case map 04C3; 04C4; Case map 04C7; 04C8; Case map 04CB; 04CC; Case map 04D0; 04D1; Case map 04D2; 04D3; Case map 04D4; 04D5; Case map 04D6; 04D7; Case map 04D8; 04D9; Case map 04DA; 04DB; Case map 04DC; 04DD; Case map 04DE; 04DF; Case map 04E0; 04E1; Case map 04E2; 04E3; Case map 04E4; 04E5; Case map 04E6; 04E7; Case map 04E8; 04E9; Case map 04EA; 04EB; Case map 04EC; 04ED; Case map 04EE; 04EF; Case map 04F0; 04F1; Case map 04F2; 04F3; Case map 04F4; 04F5; Case map 04F8; 04F9; Case map 0531; 0561; Case map 0532; 0562; Case map 0533; 0563; Case map 0534; 0564; Case map 0535; 0565; Case map 0536; 0566; Case map 0537; 0567; Case map 0538; 0568; Case map 0539; 0569; Case map 053A; 056A; Case map 053B; 056B; Case map 053C; 056C; Case map 053D; 056D; Case map 053E; 056E; Case map 053F; 056F; Case map 0540; 0570; Case map 0541; 0571; Case map 0542; 0572; Case map 0543; 0573; Case map 0544; 0574; Case map 0545; 0575; Case map 0546; 0576; Case map 0547; 0577; Case map 0548; 0578; Case map 0549; 0579; Case map 054A; 057A; Case map 054B; 057B; Case map 054C; 057C; Case map 054D; 057D; Case map 054E; 057E; Case map 054F; 057F; Case map 0550; 0580; Case map 0551; 0581; Case map 0552; 0582; Case map 0553; 0583; Case map 0554; 0584; Case map 0555; 0585; Case map 0556; 0586; Case map 0587; 0565 0582; Case map 1806; ; Map out 180B; ; Map out 180C; ; Map out 180D; ; Map out 1E00; 1E01; Case map 1E02; 1E03; Case map 1E04; 1E05; Case map 1E06; 1E07; Case map 1E08; 1E09; Case map 1E0A; 1E0B; Case map 1E0C; 1E0D; Case map 1E0E; 1E0F; Case map 1E10; 1E11; Case map 1E12; 1E13; Case map 1E14; 1E15; Case map 1E16; 1E17; Case map 1E18; 1E19; Case map 1E1A; 1E1B; Case map 1E1C; 1E1D; Case map 1E1E; 1E1F; Case map 1E20; 1E21; Case map 1E22; 1E23; Case map 1E24; 1E25; Case map 1E26; 1E27; Case map 1E28; 1E29; Case map 1E2A; 1E2B; Case map 1E2C; 1E2D; Case map 1E2E; 1E2F; Case map 1E30; 1E31; Case map 1E32; 1E33; Case map 1E34; 1E35; Case map 1E36; 1E37; Case map 1E38; 1E39; Case map 1E3A; 1E3B; Case map 1E3C; 1E3D; Case map 1E3E; 1E3F; Case map 1E40; 1E41; Case map 1E42; 1E43; Case map 1E44; 1E45; Case map 1E46; 1E47; Case map 1E48; 1E49; Case map 1E4A; 1E4B; Case map 1E4C; 1E4D; Case map 1E4E; 1E4F; Case map 1E50; 1E51; Case map 1E52; 1E53; Case map 1E54; 1E55; Case map 1E56; 1E57; Case map 1E58; 1E59; Case map 1E5A; 1E5B; Case map 1E5C; 1E5D; Case map 1E5E; 1E5F; Case map 1E60; 1E61; Case map 1E62; 1E63; Case map 1E64; 1E65; Case map 1E66; 1E67; Case map 1E68; 1E69; Case map 1E6A; 1E6B; Case map 1E6C; 1E6D; Case map 1E6E; 1E6F; Case map 1E70; 1E71; Case map 1E72; 1E73; Case map 1E74; 1E75; Case map 1E76; 1E77; Case map 1E78; 1E79; Case map 1E7A; 1E7B; Case map 1E7C; 1E7D; Case map 1E7E; 1E7F; Case map 1E80; 1E81; Case map 1E82; 1E83; Case map 1E84; 1E85; Case map 1E86; 1E87; Case map 1E88; 1E89; Case map 1E8A; 1E8B; Case map 1E8C; 1E8D; Case map 1E8E; 1E8F; Case map 1E90; 1E91; Case map 1E92; 1E93; Case map 1E94; 1E95; Case map 1E96; 0068 0331; Case map 1E97; 0074 0308; Case map 1E98; 0077 030A; Case map 1E99; 0079 030A; Case map 1E9A; 0061 02BE; Case map 1E9B; 1E61; Case map 1EA0; 1EA1; Case map 1EA2; 1EA3; Case map 1EA4; 1EA5; Case map 1EA6; 1EA7; Case map 1EA8; 1EA9; Case map 1EAA; 1EAB; Case map 1EAC; 1EAD; Case map 1EAE; 1EAF; Case map 1EB0; 1EB1; Case map 1EB2; 1EB3; Case map 1EB4; 1EB5; Case map 1EB6; 1EB7; Case map 1EB8; 1EB9; Case map 1EBA; 1EBB; Case map 1EBC; 1EBD; Case map 1EBE; 1EBF; Case map 1EC0; 1EC1; Case map 1EC2; 1EC3; Case map 1EC4; 1EC5; Case map 1EC6; 1EC7; Case map 1EC8; 1EC9; Case map 1ECA; 1ECB; Case map 1ECC; 1ECD; Case map 1ECE; 1ECF; Case map 1ED0; 1ED1; Case map 1ED2; 1ED3; Case map 1ED4; 1ED5; Case map 1ED6; 1ED7; Case map 1ED8; 1ED9; Case map 1EDA; 1EDB; Case map 1EDC; 1EDD; Case map 1EDE; 1EDF; Case map 1EE0; 1EE1; Case map 1EE2; 1EE3; Case map 1EE4; 1EE5; Case map 1EE6; 1EE7; Case map 1EE8; 1EE9; Case map 1EEA; 1EEB; Case map 1EEC; 1EED; Case map 1EEE; 1EEF; Case map 1EF0; 1EF1; Case map 1EF2; 1EF3; Case map 1EF4; 1EF5; Case map 1EF6; 1EF7; Case map 1EF8; 1EF9; Case map 1F08; 1F00; Case map 1F09; 1F01; Case map 1F0A; 1F02; Case map 1F0B; 1F03; Case map 1F0C; 1F04; Case map 1F0D; 1F05; Case map 1F0E; 1F06; Case map 1F0F; 1F07; Case map 1F18; 1F10; Case map 1F19; 1F11; Case map 1F1A; 1F12; Case map 1F1B; 1F13; Case map 1F1C; 1F14; Case map 1F1D; 1F15; Case map 1F28; 1F20; Case map 1F29; 1F21; Case map 1F2A; 1F22; Case map 1F2B; 1F23; Case map 1F2C; 1F24; Case map 1F2D; 1F25; Case map 1F2E; 1F26; Case map 1F2F; 1F27; Case map 1F38; 1F30; Case map 1F39; 1F31; Case map 1F3A; 1F32; Case map 1F3B; 1F33; Case map 1F3C; 1F34; Case map 1F3D; 1F35; Case map 1F3E; 1F36; Case map 1F3F; 1F37; Case map 1F48; 1F40; Case map 1F49; 1F41; Case map 1F4A; 1F42; Case map 1F4B; 1F43; Case map 1F4C; 1F44; Case map 1F4D; 1F45; Case map 1F50; 03C5 0313; Case map 1F52; 03C5 0313 0300; Case map 1F54; 03C5 0313 0301; Case map 1F56; 03C5 0313 0342; Case map 1F59; 1F51; Case map 1F5B; 1F53; Case map 1F5D; 1F55; Case map 1F5F; 1F57; Case map 1F68; 1F60; Case map 1F69; 1F61; Case map 1F6A; 1F62; Case map 1F6B; 1F63; Case map 1F6C; 1F64; Case map 1F6D; 1F65; Case map 1F6E; 1F66; Case map 1F6F; 1F67; Case map 1F80; 1F00 03B9; Case map 1F81; 1F01 03B9; Case map 1F82; 1F02 03B9; Case map 1F83; 1F03 03B9; Case map 1F84; 1F04 03B9; Case map 1F85; 1F05 03B9; Case map 1F86; 1F06 03B9; Case map 1F87; 1F07 03B9; Case map 1F88; 1F00 03B9; Case map 1F89; 1F01 03B9; Case map 1F8A; 1F02 03B9; Case map 1F8B; 1F03 03B9; Case map 1F8C; 1F04 03B9; Case map 1F8D; 1F05 03B9; Case map 1F8E; 1F06 03B9; Case map 1F8F; 1F07 03B9; Case map 1F90; 1F20 03B9; Case map 1F91; 1F21 03B9; Case map 1F92; 1F22 03B9; Case map 1F93; 1F23 03B9; Case map 1F94; 1F24 03B9; Case map 1F95; 1F25 03B9; Case map 1F96; 1F26 03B9; Case map 1F97; 1F27 03B9; Case map 1F98; 1F20 03B9; Case map 1F99; 1F21 03B9; Case map 1F9A; 1F22 03B9; Case map 1F9B; 1F23 03B9; Case map 1F9C; 1F24 03B9; Case map 1F9D; 1F25 03B9; Case map 1F9E; 1F26 03B9; Case map 1F9F; 1F27 03B9; Case map 1FA0; 1F60 03B9; Case map 1FA1; 1F61 03B9; Case map 1FA2; 1F62 03B9; Case map 1FA3; 1F63 03B9; Case map 1FA4; 1F64 03B9; Case map 1FA5; 1F65 03B9; Case map 1FA6; 1F66 03B9; Case map 1FA7; 1F67 03B9; Case map 1FA8; 1F60 03B9; Case map 1FA9; 1F61 03B9; Case map 1FAA; 1F62 03B9; Case map 1FAB; 1F63 03B9; Case map 1FAC; 1F64 03B9; Case map 1FAD; 1F65 03B9; Case map 1FAE; 1F66 03B9; Case map 1FAF; 1F67 03B9; Case map 1FB2; 1F70 03B9; Case map 1FB3; 03B1 03B9; Case map 1FB4; 03AC 03B9; Case map 1FB6; 03B1 0342; Case map 1FB7; 03B1 0342 03B9; Case map 1FB8; 1FB0; Case map 1FB9; 1FB1; Case map 1FBA; 1F70; Case map 1FBB; 1F71; Case map 1FBC; 03B1 03B9; Case map 1FBE; 03B9; Case map 1FC2; 1F74 03B9; Case map 1FC3; 03B7 03B9; Case map 1FC4; 03AE 03B9; Case map 1FC6; 03B7 0342; Case map 1FC7; 03B7 0342 03B9; Case map 1FC8; 1F72; Case map 1FC9; 1F73; Case map 1FCA; 1F74; Case map 1FCB; 1F75; Case map 1FCC; 03B7 03B9; Case map 1FD2; 03B9 0308 0300; Case map 1FD3; 03B9 0308 0301; Case map 1FD6; 03B9 0342; Case map 1FD7; 03B9 0308 0342; Case map 1FD8; 1FD0; Case map 1FD9; 1FD1; Case map 1FDA; 1F76; Case map 1FDB; 1F77; Case map 1FE2; 03C5 0308 0300; Case map 1FE3; 03C5 0308 0301; Case map 1FE4; 03C1 0313; Case map 1FE6; 03C5 0342; Case map 1FE7; 03C5 0308 0342; Case map 1FE8; 1FE0; Case map 1FE9; 1FE1; Case map 1FEA; 1F7A; Case map 1FEB; 1F7B; Case map 1FEC; 1FE5; Case map 1FF2; 1F7C 03B9; Case map 1FF3; 03C9 03B9; Case map 1FF4; 03CE 03B9; Case map 1FF6; 03C9 0342; Case map 1FF7; 03C9 0342 03B9; Case map 1FF8; 1F78; Case map 1FF9; 1F79; Case map 1FFA; 1F7C; Case map 1FFB; 1F7D; Case map 1FFC; 03C9 03B9; Case map 200B; ; Map out 200C; ; Map out 200D; ; Map out 20A8; 0072 0073; Additional folding 2102; 0063; Additional folding 2103; 00B0 0063; Additional folding 2107; 025B; Additional folding 2109; 00B0 0066; Additional folding 210B; 0068; Additional folding 210C; 0068; Additional folding 210D; 0068; Additional folding 2110; 0069; Additional folding 2111; 0069; Additional folding 2112; 006C; Additional folding 2115; 006E; Additional folding 2116; 006E 006F; Additional folding 2119; 0070; Additional folding 211A; 0071; Additional folding 211B; 0072; Additional folding 211C; 0072; Additional folding 211D; 0072; Additional folding 2120; 0073 006D; Additional folding 2121; 0074 0065 006C; Additional folding 2122; 0074 006D; Additional folding 2124; 007A; Additional folding 2126; 03C9; Case map 2128; 007A; Additional folding 212A; 006B; Case map 212B; 00E5; Case map 212C; 0062; Additional folding 212D; 0063; Additional folding 2130; 0065; Additional folding 2131; 0066; Additional folding 2133; 006D; Additional folding 2160; 2170; Case map 2161; 2171; Case map 2162; 2172; Case map 2163; 2173; Case map 2164; 2174; Case map 2165; 2175; Case map 2166; 2176; Case map 2167; 2177; Case map 2168; 2178; Case map 2169; 2179; Case map 216A; 217A; Case map 216B; 217B; Case map 216C; 217C; Case map 216D; 217D; Case map 216E; 217E; Case map 216F; 217F; Case map 24B6; 24D0; Case map 24B7; 24D1; Case map 24B8; 24D2; Case map 24B9; 24D3; Case map 24BA; 24D4; Case map 24BB; 24D5; Case map 24BC; 24D6; Case map 24BD; 24D7; Case map 24BE; 24D8; Case map 24BF; 24D9; Case map 24C0; 24DA; Case map 24C1; 24DB; Case map 24C2; 24DC; Case map 24C3; 24DD; Case map 24C4; 24DE; Case map 24C5; 24DF; Case map 24C6; 24E0; Case map 24C7; 24E1; Case map 24C8; 24E2; Case map 24C9; 24E3; Case map 24CA; 24E4; Case map 24CB; 24E5; Case map 24CC; 24E6; Case map 24CD; 24E7; Case map 24CE; 24E8; Case map 24CF; 24E9; Case map 3371; 0068 0070 0061; Additional folding 3373; 0061 0075; Additional folding 3375; 006F 0076; Additional folding 3380; 0070 0061; Additional folding 3381; 006E 0061; Additional folding 3382; 03BC 0061; Additional folding 3383; 006D 0061; Additional folding 3384; 006B 0061; Additional folding 3385; 006B 0062; Additional folding 3386; 006D 0062; Additional folding 3387; 0067 0062; Additional folding 338A; 0070 0066; Additional folding 338B; 006E 0066; Additional folding 338C; 03BC 0066; Additional folding 3390; 0068 007A; Additional folding 3391; 006B 0068 007A; Additional folding 3392; 006D 0068 007A; Additional folding 3393; 0067 0068 007A; Additional folding 3394; 0074 0068 007A; Additional folding 33A9; 0070 0061; Additional folding 33AA; 006B 0070 0061; Additional folding 33AB; 006D 0070 0061; Additional folding 33AC; 0067 0070 0061; Additional folding 33B4; 0070 0076; Additional folding 33B5; 006E 0076; Additional folding 33B6; 03BC 0076; Additional folding 33B7; 006D 0076; Additional folding 33B8; 006B 0076; Additional folding 33B9; 006D 0076; Additional folding 33BA; 0070 0077; Additional folding 33BB; 006E 0077; Additional folding 33BC; 03BC 0077; Additional folding 33BD; 006D 0077; Additional folding 33BE; 006B 0077; Additional folding 33BF; 006D 0077; Additional folding 33C0; 006B 03C9; Additional folding 33C1; 006D 03C9; Additional folding 33C3; 0062 0071; Additional folding 33C6; 0063 2215 006B 0067; Additional folding 33C7; 0063 006F 002E; Additional folding 33C8; 0064 0062; Additional folding 33C9; 0067 0079; Additional folding 33CB; 0068 0070; Additional folding 33CD; 006B 006B; Additional folding 33CE; 006B 006D; Additional folding 33D7; 0070 0068; Additional folding 33D9; 0070 0070 006D; Additional folding 33DA; 0070 0072; Additional folding 33DC; 0073 0076; Additional folding 33DD; 0077 0062; Additional folding FB00; 0066 0066; Case map FB01; 0066 0069; Case map FB02; 0066 006C; Case map FB03; 0066 0066 0069; Case map FB04; 0066 0066 006C; Case map FB05; 0073 0074; Case map FB06; 0073 0074; Case map FB13; 0574 0576; Case map FB14; 0574 0565; Case map FB15; 0574 056B; Case map FB16; 057E 0576; Case map FB17; 0574 056D; Case map FEFF; ; Map out FF21; FF41; Case map FF22; FF42; Case map FF23; FF43; Case map FF24; FF44; Case map FF25; FF45; Case map FF26; FF46; Case map FF27; FF47; Case map FF28; FF48; Case map FF29; FF49; Case map FF2A; FF4A; Case map FF2B; FF4B; Case map FF2C; FF4C; Case map FF2D; FF4D; Case map FF2E; FF4E; Case map FF2F; FF4F; Case map FF30; FF50; Case map FF31; FF51; Case map FF32; FF52; Case map FF33; FF53; Case map FF34; FF54; Case map FF35; FF55; Case map FF36; FF56; Case map FF37; FF57; Case map FF38; FF58; Case map FF39; FF59; Case map FF3A; FF5A; Case map ----- End Mapping Table ----- F. Prohibited Code Point List ----- Start Prohibited Table ----- 0000-002C 002E-002F 003A-0040 005B-0060 007B-007F 0080-009F 00A0 1680 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 200A 200B 200E 200F 2028 2029 202A 202B 202C 202D 202E 202F 206A 206B 206C 206D 206E 206F 2FF0-2FFF 3000 3002 D800-DFFF E000-F8FF FFF9 FFFA FFFB FFFC FFFD FFFE-FFFF 1FFFE-1FFFF 2FFFE-2FFFF 3FFFE-3FFFF 4FFFE-4FFFF 5FFFE-5FFFF 6FFFE-6FFFF 7FFFE-7FFFF 8FFFE-8FFFF 9FFFE-9FFFF AFFFE-AFFFF BFFFE-BFFFF CFFFE-CFFFF DFFFE-DFFFF EFFFE-EFFFF F0000-FFFFD FFFFE-FFFFF 100000-10FFFD 10FFFE-10FFFF ----- End Prohibited Table ----- NOTE WELL: Software that follows this specification that will be used to check names before they are put in authoritative name servers MUST add all unassigned code pints to the list of characters that are prohibited. See Section 6 for more details. G. Unassigned Code Point List ----- Start Unassigned Table ----- 0220-0221 0234-024F 02AE-02AF 02EF-02FF 034F-035F 0363-0373 0376-0379 037B-037D 037F-0383 038B 038D 03A2 03CF 03D8-03D9 03F4-03FF 0487 048A-048B 04C5-04C6 04C9-04CA 04CD-04CF 04F6-04F7 04FA-0530 0557-0558 0560 0588 058B-0590 05A2 05BA 05C5-05CF 05EB-05EF 05F5-060B 060D-061A 061C-061E 0620 063B-063F 0656-065F 066E-066F 06EE-06EF 06FF 070E 072D-072F 074B-077F 07B1-0900 0904 093A-093B 094E-094F 0955-0957 0971-0980 0984 098D-098E 0991-0992 09A9 09B1 09B3-09B5 09BA-09BB 09BD 09C5-09C6 09C9-09CA 09CE-09D6 09D8-09DB 09DE 09E4-09E5 09FB-0A01 0A03-0A04 0A0B-0A0E 0A11-0A12 0A29 0A31 0A34 0A37 0A3A-0A3B 0A3D 0A43-0A46 0A49-0A4A 0A4E-0A58 0A5D 0A5F-0A65 0A75-0A80 0A84 0A8C 0A8E 0A92 0AA9 0AB1 0AB4 0ABA-0ABB 0AC6 0ACA 0ACE-0ACF 0AD1-0ADF 0AE1-0AE5 0AF0-0B00 0B04 0B0D-0B0E 0B11-0B12 0B29 0B31 0B34-0B35 0B3A-0B3B 0B44-0B46 0B49-0B4A 0B4E-0B55 0B58-0B5B 0B5E 0B62-0B65 0B71-0B81 0B84 0B8B-0B8D 0B91 0B96-0B98 0B9B 0B9D 0BA0-0BA2 0BA5-0BA7 0BAB-0BAD 0BB6 0BBA-0BBD 0BC3-0BC5 0BC9 0BCE-0BD6 0BD8-0BE6 0BF3-0C00 0C04 0C0D 0C11 0C29 0C34 0C3A-0C3D 0C45 0C49 0C4E-0C54 0C57-0C5F 0C62-0C65 0C70-0C81 0C84 0C8D 0C91 0CA9 0CB4 0CBA-0CBD 0CC5 0CC9 0CCE-0CD4 0CD7-0CDD 0CDF 0CE2-0CE5 0CF0-0D01 0D04 0D0D 0D11 0D29 0D3A-0D3D 0D44-0D45 0D49 0D4E-0D56 0D58-0D5F 0D62-0D65 0D70-0D81 0D84 0D97-0D99 0DB2 0DBC 0DBE-0DBF 0DC7-0DC9 0DCB-0DCE 0DD5 0DD7 0DE0-0DF1 0DF5-0E00 0E3B-0E3E 0E5C-0E80 0E83 0E85-0E86 0E89 0E8B-0E8C 0E8E-0E93 0E98 0EA0 0EA4 0EA6 0EA8-0EA9 0EAC 0EBA 0EBE-0EBF 0EC5 0EC7 0ECE-0ECF 0EDA-0EDB 0EDE-0EFF 0F48 0F6B-0F70 0F8C-0F8F 0F98 0FBD 0FCD-0FCE 0FD0-0FFF 1022 1028 102B 1033-1035 103A-103F 105A-109F 10C6-10CF 10F7-10FA 10FC-10FF 115A-115E 11A3-11A7 11FA-11FF 1207 1247 1249 124E-124F 1257 1259 125E-125F 1287 1289 128E-128F 12AF 12B1 12B6-12B7 12BF 12C1 12C6-12C7 12CF 12D7 12EF 130F 1311 1316-1317 131F 1347 135B-1360 137D-139F 13F5-1400 1677-167F 169D-169F 16F1-177F 17DD-17DF 17EA-17FF 180F 181A-181F 1878-187F 18AA-1DFF 1E9C-1E9F 1EFA-1EFF 1F16-1F17 1F1E-1F1F 1F46-1F47 1F4E-1F4F 1F58 1F5A 1F5C 1F5E 1F7E-1F7F 1FB5 1FC5 1FD4-1FD5 1FDC 1FF0-1FF1 1FF5 1FFF 2047 204E-2069 2071-2073 208F-209F 20B0-20CF 20E4-20FF 213B-2152 2184-218F 21F4-21FF 22F2-22FF 237C 239B-23FF 2427-243F 244B-245F 24EB-24FF 2596-259F 25F8-25FF 2614-2618 2672-2700 2705 270A-270B 2728 274C 274E 2753-2755 2757 275F-2760 2768-2775 2795-2797 27B0 27BF-27FF 2900-2E7F 2E9A 2EF4-2EFF 2FD6-2FEF 2FFC-2FFF 303B-303D 3040 3095-3098 309F-30A0 30FF-3104 312D-3130 318F 31B8-31FF 321D-321F 3244-325F 327C-327E 32B1-32BF 32CC-32CF 32FF 3377-337A 33DE-33DF 33FF 4DB6-4DFF 9FA6-9FFF A48D-A48F A4A2-A4A3 A4B4 A4C1 A4C5 A4C7-ABFF D7A4-D7FF FA2E-FAFF FB07-FB12 FB18-FB1C FB37 FB3D FB3F FB42 FB45 FBB2-FBD2 FD40-FD4F FD90-FD91 FDC8-FDEF FDFC-FE1F FE24-FE2F FE45-FE48 FE53 FE67 FE6C-FE6F FE73 FE75 FEFD-FEFE FF00 FF5F-FF60 FFBF-FFC1 FFC8-FFC9 FFD0-FFD1 FFD8-FFD9 FFDD-FFDF FFE7 FFEF-FFF8 10000-1FFFD 20000-2FFFD 30000-3FFFD 40000-4FFFD 50000-5FFFD 60000-6FFFD 70000-7FFFD 80000-8FFFD 90000-9FFFD A0000-AFFFD B0000-BFFFD C0000-CFFFD D0000-DFFFD E0000-EFFFD ----- End Unassigned Table -----