diff options
| author | Nils Adermann <naderman@naderman.de> | 2010-03-02 01:05:34 +0100 |
|---|---|---|
| committer | Nils Adermann <naderman@naderman.de> | 2010-03-02 01:05:34 +0100 |
| commit | 517f25353246f06eec7d1fdef90a04119a45bbbf (patch) | |
| tree | 7837b0e54fcd05f2f49a22a078b0f12cad864b30 | |
| parent | 89b37954f994a7cd517553d2d16686f91dcaae72 (diff) | |
| parent | 7068d8b462e388ea87883c5203a28fa6a8e4b6dc (diff) | |
| download | forums-517f25353246f06eec7d1fdef90a04119a45bbbf.tar forums-517f25353246f06eec7d1fdef90a04119a45bbbf.tar.gz forums-517f25353246f06eec7d1fdef90a04119a45bbbf.tar.bz2 forums-517f25353246f06eec7d1fdef90a04119a45bbbf.tar.xz forums-517f25353246f06eec7d1fdef90a04119a45bbbf.zip | |
Merge commit 'release-3.0-B5'
299 files changed, 62914 insertions, 5317 deletions
diff --git a/phpBB/adm/index.php b/phpBB/adm/index.php index 907fed3681..e441b9ff7f 100644 --- a/phpBB/adm/index.php +++ b/phpBB/adm/index.php @@ -150,14 +150,11 @@ function adm_page_header($page_title) 'S_USER_LANG' => $user->lang['USER_LANG'], 'S_CONTENT_DIRECTION' => $user->lang['DIRECTION'], 'S_CONTENT_ENCODING' => 'UTF-8', - 'S_CONTENT_DIR_LEFT' => $user->lang['LEFT'], - 'S_CONTENT_DIR_RIGHT' => $user->lang['RIGHT']) - ); + )); + + // application/xhtml+xml not used because of IE + header('Content-type: text/html; charset=UTF-8'); - if ($config['send_encoding']) - { - header('Content-type: text/html; charset=UTF-8'); - } header('Cache-Control: private, no-cache="set-cookie"'); header('Expires: 0'); header('Pragma: no-cache'); @@ -184,7 +181,7 @@ function adm_page_footer($copyright_html = true) $db->sql_report('display'); } - $debug_output = sprintf('Time : %.3fs | ' . $db->sql_num_queries() . ' Queries | GZIP : ' . (($config['gzip_compress']) ? 'On' : 'Off') . (($user->load) ? ' | Load : ' . $user->load : ''), $totaltime); + $debug_output = sprintf('Time : %.3fs | ' . $db->sql_num_queries() . ' Queries | GZIP : ' . (($config['gzip_compress']) ? 'On' : 'Off') . (($user->load) ? ' | Load : ' . $user->load : ''), $totaltime); if ($auth->acl_get('a_') && defined('DEBUG_EXTRA')) { @@ -408,6 +405,35 @@ function validate_config_vars($config_vars, &$cfg_array, &$error) $cfg_array[$config_name] = (int) $cfg_array[$config_name]; break; + // Absolute path + case 'script_path': + if (!$cfg_array[$config_name]) + { + break; + } + + $destination = str_replace('\\', '/', $cfg_array[$config_name]); + + if ($destination !== '/') + { + // Adjust destination path (no trailing slash) + if (substr($destination, -1, 1) == '/') + { + $destination = substr($destination, 0, -1); + } + + $destination = str_replace(array('../', './'), '', $destination); + + if ($destination[0] != '/') + { + $destination = '/' . $destination; + } + } + + $cfg_array[$config_name] = trim($destination); + + break; + // Relative path (appended $phpbb_root_path) case 'rpath': case 'rwpath': @@ -419,9 +445,9 @@ function validate_config_vars($config_vars, &$cfg_array, &$error) $destination = $cfg_array[$config_name]; // Adjust destination path (no trailing slash) - if ($destination{(sizeof($destination)-1)} == '/' || $destination{(sizeof($destination)-1)} == '\\') + if (substr($destination, -1, 1) == '/' || substr($destination, -1, 1) == '\\') { - $destination = substr($destination, 0, sizeof($destination)-2); + $destination = substr($destination, 0, -1); } $destination = str_replace(array('../', '..\\', './', '.\\'), '', $destination); diff --git a/phpBB/adm/style/acp_attachments.html b/phpBB/adm/style/acp_attachments.html index 698ea77f01..04535719b4 100644 --- a/phpBB/adm/style/acp_attachments.html +++ b/phpBB/adm/style/acp_attachments.html @@ -2,6 +2,10 @@ <a name="maincontent"></a> +<!-- IF U_BACK --> + <a href="{U_BACK}" style="float: right">« {L_BACK}</a> +<!-- ENDIF --> + <h1>{L_TITLE}</h1> <p>{L_TITLE_EXPLAIN}</p> @@ -184,10 +188,6 @@ <dd><input type="checkbox" class="radio" id="allow_in_pm" name="allow_in_pm" value="1"<!-- IF ALLOW_IN_PM --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> - <dt><label for="download_mode">{L_DOWNLOAD_MODE}:</label><br /><span>{L_DOWNLOAD_MODE_EXPLAIN}</span></dt> - <dd>{S_DOWNLOAD_SELECT}</dd> - </dl> - <dl> <dt><label for="upload_icon">{L_UPLOAD_ICON}:</label></dt> <dd><select name="upload_icon" id="upload_icon" onchange="update_image(this.options[selectedIndex].value);"> <option value="no_image"<!-- IF S_NO_IMAGE --> selected="selected"<!-- ENDIF -->>{L_NO_IMAGE}</option>{S_FILENAME_LIST} @@ -234,17 +234,18 @@ </thead> <tbody> <!-- BEGIN groups --> - <!-- IF groups.S_ADD_SPACER --> + <!-- IF groups.S_ADD_SPACER and not groups.S_FIRST_ROW --> <tr> <td class="spacer" colspan="3"> </td> </tr> <!-- ENDIF --> <tr> - <td><a href="{groups.U_EDIT}">{groups.GROUP_NAME}</a> + <td><strong>{groups.GROUP_NAME}</strong> <!-- IF groups.S_GROUP_ALLOWED and not groups.S_ALLOWED_IN_PM --><br /><span>» {L_NOT_ALLOWED_IN_PM}</span><!-- ENDIF --> + <!-- IF groups.S_ALLOWED_IN_PM and not groups.S_GROUP_ALLOWED --><br /><span>» {L_ONLY_ALLOWED_IN_PM}</span><!-- ENDIF --> </td> <td>{groups.CATEGORY}</td> - <td align="center" valign="middle" style="white-space: nowrap;"> <a href="{groups.U_EDIT}">{L_EDIT}</a> | <a href="{groups.U_DELETE}">{L_DELETE}</a> | <a href="{groups.U_ACT_DEACT}">{groups.L_ACT_DEACT}</a> </td> + <td align="center" valign="middle" style="white-space: nowrap;"> <a href="{groups.U_EDIT}">{ICON_EDIT}</a> <a href="{groups.U_DELETE}">{ICON_DELETE}</a> </td> </tr> <!-- END groups --> </tbody> @@ -323,7 +324,7 @@ <form id="orphan" method="post" action="{U_ACTION}"> - <fieldset> + <fieldset class="tabulated"> <legend>{L_TITLE}</legend> <table cellspacing="1"> diff --git a/phpBB/adm/style/acp_ban.html b/phpBB/adm/style/acp_ban.html index eb42592f81..5f267aaa98 100644 --- a/phpBB/adm/style/acp_ban.html +++ b/phpBB/adm/style/acp_ban.html @@ -51,7 +51,7 @@ <dl> <dt><label for="banlength">{L_BAN_LENGTH}:</label></dt> <dd><select name="banlength" id="banlength">{S_BAN_END_OPTIONS}</select></dd> - <dd><input type="text" name="banlengthother" /> (YYYY-MM-DD)</dd> + <dd><input type="text" name="banlengthother" maxlength="10" /> (YYYY-MM-DD)</dd> </dl> <dl> <dt><label for="banexclude">{L_BAN_EXCLUDE}:</label><br /><span>{L_BAN_EXCLUDE_EXPLAIN}</span></dt> @@ -59,11 +59,11 @@ </dl> <dl> <dt><label for="banreason">{L_BAN_REASON}:</label></dt> - <dd><input name="banreason" type="text" id="banreason" class="medium" /></dd> + <dd><input name="banreason" type="text" id="banreason" class="medium" maxlength="3000" /></dd> </dl> <dl> <dt><label for="bangivereason">{L_BAN_GIVE_REASON}:</label></dt> - <dd><input name="bangivereason" type="text" id="bangivereason" class="medium" /></dd> + <dd><input name="bangivereason" type="text" id="bangivereason" class="medium" maxlength="3000" /></dd> </dl> <p class="submit-buttons"> diff --git a/phpBB/adm/style/acp_bots.html b/phpBB/adm/style/acp_bots.html index 0c4e718353..6b531f545e 100644 --- a/phpBB/adm/style/acp_bots.html +++ b/phpBB/adm/style/acp_bots.html @@ -23,7 +23,7 @@ <legend>{L_TITLE}</legend> <dl> <dt><label for="bot_name">{L_BOT_NAME}:</label><br /><span>{L_BOT_NAME_EXPLAIN}</span></dt> - <dd><input name="bot_name" type="text" id="bot_name" value="{BOT_NAME}" /></dd> + <dd><input name="bot_name" type="text" id="bot_name" value="{BOT_NAME}" maxlength="255" /></dd> </dl> <dl> <dt><label for="bot_style">{L_BOT_STYLE}:</label><br /><span>{L_BOT_STYLE_EXPLAIN}</span></dt> @@ -39,11 +39,11 @@ </dl> <dl> <dt><label for="bot_agent">{L_BOT_AGENT}:</label><br /><span>{L_BOT_AGENT_EXPLAIN}</span></dt> - <dd><input name="bot_agent" type="text" id="bot_agent" value="{BOT_AGENT}" /></dd> + <dd><input name="bot_agent" type="text" id="bot_agent" value="{BOT_AGENT}" maxlength="255" /></dd> </dl> <dl> <dt><label for="bot_ip">{L_BOT_IP}:</label><br /><span>{L_BOT_IP_EXPLAIN}</span></dt> - <dd><input name="bot_ip" type="text" id="bot_ip" value="{BOT_IP}" /></dd> + <dd><input name="bot_ip" type="text" id="bot_ip" value="{BOT_IP}" maxlength="255" /></dd> </dl> <p class="submit-buttons"> diff --git a/phpBB/adm/style/acp_captcha.html b/phpBB/adm/style/acp_captcha.html index 2b141c0b37..3ffdda4eb3 100644 --- a/phpBB/adm/style/acp_captcha.html +++ b/phpBB/adm/style/acp_captcha.html @@ -29,10 +29,11 @@ </dl> <!-- ENDIF --> -<p class="submit-buttons"> +</fieldset> +<fieldset class="submit-buttons"> + <legend>{L_SUBMIT}</legend> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> -</p> </fieldset> </form> diff --git a/phpBB/adm/style/acp_database.html b/phpBB/adm/style/acp_database.html index c73670d9a8..8341d36c70 100644 --- a/phpBB/adm/style/acp_database.html +++ b/phpBB/adm/style/acp_database.html @@ -12,11 +12,11 @@ <fieldset> <legend>{L_RESTORE_OPTIONS}</legend> <dl> - <dt><label for="user">{L_SELECT_FILE}:</label></dt> + <dt><label for="file">{L_SELECT_FILE}:</label></dt> <dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_LAST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd> </dl> - <!-- IF EXISTS --> + <!-- IF .files --> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_START_RESTORE}" /> <input class="button2" type="submit" id="delete" name="delete" value="{L_DELETE_BACKUP}" /> @@ -53,26 +53,27 @@ <fieldset> <legend>{L_BACKUP_OPTIONS}</legend> <dl> - <dt><label for="user">{L_BACKUP_TYPE}:</label></dt> - <dd><input type="radio" class="radio" name="type" value="full" id="type" checked="checked" /> {L_FULL_BACKUP} <input type="radio" name="type" class="radio" value="structure" id="type" /> {L_STRUCTURE_ONLY} <input type="radio" class="radio" name="type" value="data" id="type" /> {L_DATA_ONLY}</dd> + <dt><label for="type">{L_BACKUP_TYPE}:</label></dt> + <dd><input type="radio" class="radio" name="type" value="full" id="type" checked="checked" /> {L_FULL_BACKUP} <input type="radio" name="type" class="radio" value="structure" /> {L_STRUCTURE_ONLY} <input type="radio" class="radio" name="type" value="data" /> {L_DATA_ONLY}</dd> </dl> <dl> - <dt><label for="user">{L_FILE_TYPE}:</label></dt> + <dt><label for="method">{L_FILE_TYPE}:</label></dt> <dd><!-- BEGIN methods --> - <input name="method" id="method" type="radio" class="radio" value="{methods.TYPE}"<!-- IF methods.S_FIRST_ROW -->checked="checked"<!-- ENDIF --> /> {methods.TYPE} + <input name="method"<!-- IF methods.S_FIRST_ROW --> id="method" checked="checked"<!-- ENDIF --> type="radio" class="radio" value="{methods.TYPE}" /> {methods.TYPE} <!-- END methods --></dd> </dl> <dl> - <dt><label for="user">{L_ACTION}:</label></dt> - <dd><input type="radio" class="radio" name="where" value="store_and_download" id="where" checked="checked" /> {L_STORE_AND_DOWNLOAD} <input type="radio" class="radio" name="where" value="store" id="where" /> {L_STORE_LOCAL} <input type="radio" class="radio" name="where" value="download" id="where" /> {L_DOWNLOAD}</dd> + <dt><label for="where">{L_ACTION}:</label></dt> + <dd><input type="radio" class="radio" name="where" value="store_and_download" id="where" checked="checked" /> {L_STORE_AND_DOWNLOAD} <input type="radio" class="radio" name="where" value="store" /> {L_STORE_LOCAL} <input type="radio" class="radio" name="where" value="download" /> {L_DOWNLOAD}</dd> </dl> <dl> - <dt><label for="user">{L_TABLE_SELECT}:</label></dt> - <dd><select id="table" name="table[]" size="10" multiple="true"> + <dt><label for="table">{L_TABLE_SELECT}:</label></dt> + <dd><select id="table" name="table[]" size="10" multiple="multiple"> <!-- BEGIN tables --> <option value="{tables.TABLE}">{tables.TABLE}</option> <!-- END tables --> - </select><br /><br /><div align="right"><a href="#" onclick="selector(true)">{L_SELECT_ALL}</a><br /><a href="#" onclick="selector(false)">{L_DESELECT_ALL}</a></div></dd> + </select></dd> + <dd><a href="#" onclick="selector(true)">{L_SELECT_ALL}</a> :: <a href="#" onclick="selector(false)">{L_DESELECT_ALL}</a></dd> </dl> <p class="submit-buttons"> diff --git a/phpBB/adm/style/acp_disallow.html b/phpBB/adm/style/acp_disallow.html index 14e7c392c2..6486f66c32 100644 --- a/phpBB/adm/style/acp_disallow.html +++ b/phpBB/adm/style/acp_disallow.html @@ -12,7 +12,7 @@ <legend>{L_ADD_DISALLOW_TITLE}</legend> <dl> <dt><label for="user">{L_USERNAME}:</label><br /><span>{L_ADD_DISALLOW_EXPLAIN}</span></dt> - <dd><input id="user" type="text" name="disallowed_user" class="medium" /></dd> + <dd><input id="user" type="text" name="disallowed_user" class="medium" maxlength="255" /></dd> </dl> <p class="quick"> diff --git a/phpBB/adm/style/acp_email.html b/phpBB/adm/style/acp_email.html index a44b276bee..5744136230 100644 --- a/phpBB/adm/style/acp_email.html +++ b/phpBB/adm/style/acp_email.html @@ -39,8 +39,8 @@ <dd><select id="priority" name="mail_priority_flag">{S_PRIORITY_OPTIONS}</select></dd> </dl> <dl> - <dt><label for="send">{L_SEND_IMMEDIATLY}:</label></dt> - <dd><input id="send" type="checkbox" class="radio" name="send_immediatly" checked="checked" /></dd> + <dt><label for="send">{L_SEND_IMMEDIATELY}:</label></dt> + <dd><input id="send" type="checkbox" class="radio" name="send_immediately" checked="checked" /></dd> </dl> <p class="submit-buttons"> diff --git a/phpBB/adm/style/acp_forums.html b/phpBB/adm/style/acp_forums.html index 427a1f07a4..5bbd235c04 100644 --- a/phpBB/adm/style/acp_forums.html +++ b/phpBB/adm/style/acp_forums.html @@ -143,23 +143,23 @@ </dl> <dl> <dt><label for="forum_name">{L_FORUM_NAME}:</label></dt> - <dd><input class="medium" type="text" id="forum_name" name="forum_name" value="{FORUM_NAME}" /></dd> + <dd><input class="medium" type="text" id="forum_name" name="forum_name" value="{FORUM_NAME}" maxlength="255" /></dd> </dl> <dl> <dt><label for="forum_desc">{L_FORUM_DESC}:</label><br /><span>{L_FORUM_DESC_EXPLAIN}</span></dt> - <dd><textarea id="forum_desc" name="forum_desc" rows="5" cols="45">{FORUM_DESC}</textarea></dd> + <dd><textarea id="forum_desc" name="forum_desc" rows="5" cols="45" maxlength="255">{FORUM_DESC}</textarea></dd> <dd><input type="checkbox" class="radio" name="desc_parse_bbcode"<!-- IF S_DESC_BBCODE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_BBCODE} <input type="checkbox" class="radio" name="desc_parse_smilies"<!-- IF S_DESC_SMILIES_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_SMILIES} <input type="checkbox" class="radio" name="desc_parse_urls"<!-- IF S_DESC_URLS_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_PARSE_URLS}</dd> </dl> <dl> <dt><label for="forum_image">{L_FORUM_IMAGE}:</label><br /><span>{L_FORUM_IMAGE_EXPLAIN}</span></dt> - <dd><input class="medium" type="text" id="forum_image" name="forum_image" value="{FORUM_IMAGE}" /></dd> + <dd><input class="medium" type="text" id="forum_image" name="forum_image" value="{FORUM_IMAGE}" maxlength="255" /></dd> <!-- IF FORUM_IMAGE_SRC --> <dd><img src="{FORUM_IMAGE_SRC}" alt="{L_FORUM_IMAGE}" /></dd> <!-- ENDIF --> </dl> <dl> <dt><label for="forum_password">{L_FORUM_PASSWORD}:</label><br /><span>{L_FORUM_PASSWORD_EXPLAIN}</span></dt> - <dd><input type="password" id="forum_password" name="forum_password" value="{FORUM_PASSWORD}" /></dd> + <dd><input type="password" id="forum_password" name="forum_password" value="{FORUM_PASSWORD}" maxlength="40" /></dd> </dl> <dl> <dt><label for="forum_password_confirm">{L_FORUM_PASSWORD_CONFIRM}:</label><br /><span>{L_FORUM_PASSWORD_CONFIRM_EXPLAIN}</span></dt> @@ -192,12 +192,10 @@ <dt><label for="forum_status">{L_FORUM_STATUS}:</label></dt> <dd><select id="forum_status" name="forum_status">{S_STATUS_OPTIONS}</select></dd> </dl> - <!-- IF S_SHOW_DISPLAY_ON_INDEX --> <dl> <dt><label for="display_on_index">{L_LIST_INDEX}:</label><br /><span>{L_LIST_INDEX_EXPLAIN}</span></dt> <dd><input type="radio" class="radio" name="display_on_index" value="1"<!-- IF S_DISPLAY_ON_INDEX --> id="display_on_index" checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="display_on_index" value="0"<!-- IF not S_DISPLAY_ON_INDEX --> id="display_on_index" checked="checked"<!-- ENDIF --> /> {L_NO}</dd> </dl> - <!-- ENDIF --> <dl> <dt><label for="enable_post_review">{L_ENABLE_POST_REVIEW}:</label><br /><span>{L_ENABLE_POST_REVIEW_EXPLAIN}</span></dt> <dd><input type="radio" class="radio" name="enable_post_review" value="1"<!-- IF S_ENABLE_POST_REVIEW --> id="enable_post_review" checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="enable_post_review" value="0"<!-- IF not S_ENABLE_POST_REVIEW --> id="enable_post_review" checked="checked"<!-- ENDIF --> /> {L_NO}</dd> @@ -216,7 +214,7 @@ </dl> <dl> <dt><label for="topics_per_page">{L_FORUM_TOPICS_PAGE}:</label><br /><span>{L_FORUM_TOPICS_PAGE_EXPLAIN}</span></dt> - <dd><input type="text" id="topics_per_page" name="topics_per_page" value="{TOPICS_PER_PAGE}" /></dd> + <dd><input type="text" id="topics_per_page" name="topics_per_page" value="{TOPICS_PER_PAGE}" size="4" maxlength="4" /></dd> </dl> </fieldset> @@ -228,15 +226,15 @@ </dl> <dl> <dt><label for="prune_freq">{L_AUTO_PRUNE_FREQ}:</label><br /><span>{L_AUTO_PRUNE_FREQ_EXPLAIN}</span></dt> - <dd><input type="text" id="prune_freq" name="prune_freq" value="{PRUNE_FREQ}" /> {L_DAYS}</dd> + <dd><input type="text" id="prune_freq" name="prune_freq" value="{PRUNE_FREQ}" maxlength="4" size="4" /> {L_DAYS}</dd> </dl> <dl> <dt><label for="prune_days">{L_AUTO_PRUNE_DAYS}:</label><br /><span>{L_AUTO_PRUNE_DAYS_EXPLAIN}</span></dt> - <dd><input type="text" id="prune_days" name="prune_days" value="{PRUNE_DAYS}" /> {L_DAYS}</dd> + <dd><input type="text" id="prune_days" name="prune_days" value="{PRUNE_DAYS}" maxlength="4" size="4" /> {L_DAYS}</dd> </dl> <dl> <dt><label for="prune_viewed">{L_AUTO_PRUNE_VIEWED}:</label><br /><span>{L_AUTO_PRUNE_VIEWED_EXPLAIN}</span></dt> - <dd><input type="text" id="prune_viewed" name="prune_viewed" value="{PRUNE_VIEWED}" /> {L_DAYS}</dd> + <dd><input type="text" id="prune_viewed" name="prune_viewed" value="{PRUNE_VIEWED}" maxlength="4" size="4" /> {L_DAYS}</dd> </dl> <dl> <dt><label for="prune_old_polls">{L_PRUNE_OLD_POLLS}:</label><br /><span>{L_PRUNE_OLD_POLLS_EXPLAIN}</span></dt> @@ -257,8 +255,12 @@ <fieldset> <legend>{L_GENERAL_FORUM_SETTINGS}</legend> <dl> + <dt><label for="link_display_on_index">{L_LIST_INDEX}:</label><br /><span>{L_LIST_INDEX_EXPLAIN}</span></dt> + <dd><input type="radio" class="radio" name="link_display_on_index" value="1"<!-- IF S_DISPLAY_ON_INDEX --> id="link_display_on_index" checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="link_display_on_index" value="0"<!-- IF not S_DISPLAY_ON_INDEX --> id="link_display_on_index" checked="checked"<!-- ENDIF --> /> {L_NO}</dd> + </dl> + <dl> <dt><label for="forum_link">{L_FORUM_LINK}:</label><br /><span>{L_FORUM_LINK_EXPLAIN}</span></dt> - <dd><input class="medium" type="text" id="forum_link" name="forum_link" value="{FORUM_DATA_LINK}" /></dd> + <dd><input class="medium" type="text" id="forum_link" name="forum_link" value="{FORUM_DATA_LINK}" maxlength="255" /></dd> </dl> <dl> <dt><label for="forum_link_track">{L_FORUM_LINK_TRACK}:</label><br /><span>{L_FORUM_LINK_TRACK_EXPLAIN}</span></dt> @@ -272,7 +274,7 @@ <legend>{L_FORUM_RULES}</legend> <dl> <dt><label for="forum_rules_link">{L_FORUM_RULES_LINK}:</label><br /><span>{L_FORUM_RULES_LINK_EXPLAIN}</span></dt> - <dd><input class="medium" type="text" id="forum_rules_link" name="forum_rules_link" value="{FORUM_RULES_LINK}" /></dd> + <dd><input class="medium" type="text" id="forum_rules_link" name="forum_rules_link" value="{FORUM_RULES_LINK}" maxlength="255" /></dd> </dl> <!-- IF FORUM_RULES_PREVIEW --> <dl> @@ -461,7 +463,7 @@ <fieldset class="quick"> <input type="hidden" name="action" value="add" /> - <input type="text" name="forum_name" value="" /> + <input type="text" name="forum_name" value="" maxlength="255" /> <input class="button2" name="addforum" type="submit" value="{L_CREATE_FORUM}" /> </fieldset> diff --git a/phpBB/adm/style/acp_groups.html b/phpBB/adm/style/acp_groups.html index e2ed9d4529..0ff4afd1ad 100644 --- a/phpBB/adm/style/acp_groups.html +++ b/phpBB/adm/style/acp_groups.html @@ -44,7 +44,7 @@ <input name="group_type" type="hidden" value="{GROUP_TYPE_SPECIAL}" /> <!-- ENDIF --> - <!-- IF S_ADD_GROUP --> + <!-- IF S_ADD_GROUP and S_GROUP_PERM --> <dl> <dt><label for="group_perm_from">{L_COPY_PERMISSIONS}:</label><br /><span>{L_COPY_PERMISSIONS_EXPLAIN}</span></dt> <dd><select id="group_perm_from" name="group_perm_from"><option value="0">{L_NO_PERMISSIONS}</option>{S_GROUP_OPTIONS}</select></dd> @@ -221,20 +221,16 @@ <!-- END member --> </tbody> </table> - - <div class="pagination" style="float: left;"> - <!-- IF PAGINATION --> + <!-- IF PAGINATION --> + <div class="pagination"> <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> - <!-- ELSE --> - {S_ON_PAGE} - <!-- ENDIF --> </div> + <!-- ENDIF --> <fieldset class="quick"> - <span class="small"><a href="#" onclick="marklist('list', 'mark', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('list', 'mark', false); return false;">{L_UNMARK_ALL}</a></span><br /> - <select name="action"><option class="sep" value="">{L_SELECT_OPTION}</option>{S_ACTION_OPTIONS}</select> <input class="button2" type="submit" name="update" value="{L_SUBMIT}" /> + <p class="small"><a href="#" onclick="marklist('list', 'mark', true); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('list', 'mark', false); return false;">{L_UNMARK_ALL}</a></p> </fieldset> <h1>{L_ADD_USERS}</h1> diff --git a/phpBB/adm/style/acp_icons.html b/phpBB/adm/style/acp_icons.html index 1ea1061d82..302324240d 100644 --- a/phpBB/adm/style/acp_icons.html +++ b/phpBB/adm/style/acp_icons.html @@ -45,8 +45,8 @@ <td style="text-align: center;"><img src="{items.IMG_SRC}" alt="" title="" /><input type="hidden" name="image[{items.IMG}]" value="1" /></td> <td style="vertical-align: top;">[{items.IMG}]</td> <!-- IF S_SMILIES --> - <td><input class="post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" /></td> - <td><input class="post" type="text" name="emotion[{items.IMG}]" value="{items.EMOTION}" size="10" /></td> + <td><input class="post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" maxlength="50" /></td> + <td><input class="post" type="text" name="emotion[{items.IMG}]" value="{items.EMOTION}" size="10" maxlength="50" /></td> <!-- ENDIF --> <td><input class="post" type="text" size="3" name="width[{items.IMG}]" value="{items.WIDTH}" /></td> <td><input class="post" type="text" size="3" name="height[{items.IMG}]" value="{items.HEIGHT}" /></td> @@ -122,11 +122,13 @@ <!-- ENDIF --> <form id="acp_icons" method="post" action="{U_ACTION}"> - <fieldset class="tabular"> - <legend>{L_TITLE}<legend> <div style="text-align: right;"><a href="{U_IMPORT}">{L_IMPORT}</a> | <a href="{U_EXPORT}">{L_EXPORT}</a></div> + <fieldset class="tabulated"> + + <legend>{L_TITLE}</legend> + <table cellspacing="1"> <thead> <tr> @@ -151,19 +153,10 @@ <td style="text-align: center;">{items.CODE}</td> <td style="text-align: center;">{items.EMOTION}</td> <!-- ENDIF --> - <td style="width: 80px; text-align: right; white-space: nowrap;"> - <!-- IF items.S_FIRST_ROW && not items.S_LAST_ROW --> - {ICON_MOVE_UP_DISABLED} - <a href="{items.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a> - <!-- ELSEIF not items.S_FIRST_ROW && not items.S_LAST_ROW--> - <a href="{items.U_MOVE_UP}">{ICON_MOVE_UP}</a> - <a href="{items.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a> - <!-- ELSEIF items.S_LAST_ROW && not items.S_FIRST_ROW --> - <a href="{items.U_MOVE_UP}">{ICON_MOVE_UP}</a> - {ICON_MOVE_DOWN_DISABLED} - <!-- ENDIF --> - <a href="{items.U_EDIT}">{ICON_EDIT}</a> - <a href="{items.U_DELETE}">{ICON_DELETE}</a> + <td style="text-align: right; white-space: nowrap;"> + <!-- IF items.S_FIRST_ROW -->{ICON_MOVE_UP_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_UP}">{ICON_MOVE_UP}</a><!-- ENDIF --> + <!-- IF items.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{items.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF --> + <a href="{items.U_EDIT}">{ICON_EDIT}</a> <a href="{items.U_DELETE}">{ICON_DELETE}</a> </td> </tr> <!-- END items --> diff --git a/phpBB/adm/style/acp_inactive.html b/phpBB/adm/style/acp_inactive.html index 8c50ec5c41..dc447d00fc 100755 --- a/phpBB/adm/style/acp_inactive.html +++ b/phpBB/adm/style/acp_inactive.html @@ -10,13 +10,11 @@ <div class="clearfix"></div> +<!-- IF PAGINATION --> <div class="pagination"> - <!-- IF PAGINATION --> <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> - <!-- ELSE --> - {S_ON_PAGE} - <!-- ENDIF --> </div> +<!-- ENDIF --> <table cellspacing="1"> <thead> @@ -48,27 +46,25 @@ </tbody> </table> -<!-- IF .inactive --> - <fieldset class="quick" style="float: left;"> + <fieldset class="display-options"> {L_DISPLAY_LOG}: {S_LIMIT_DAYS} {L_SORT_BY}: {S_SORT_KEY} {S_SORT_DIR} <input class="button2" type="submit" value="{L_GO}" name="sort" /> </fieldset> + <hr /> + <!-- IF PAGINATION --> + <div class="pagination"> + <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> + </div> + <!-- ENDIF --> <fieldset class="quick"> - <p><a href="#" onclick="marklist('inactive', 'mark', true); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('inactive', 'mark', false); return false;">{L_UNMARK_ALL}</a></p> <select name="action">{S_INACTIVE_OPTIONS}</select> - <input class="button2" type="submit" name="submit" value="{L_SUBMIT}" /> +<p class="small"><a href="#" onclick="marklist('inactive', 'mark', true); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('inactive', 'mark', false); return false;">{L_UNMARK_ALL}</a></p> </fieldset> -<!-- ENDIF --> -<div class="pagination"> - <!-- IF PAGINATION --> - <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> - <!-- ELSE --> - {S_ON_PAGE} - <!-- ENDIF --> -</div> + + </form> diff --git a/phpBB/adm/style/acp_jabber.html b/phpBB/adm/style/acp_jabber.html index 22c38446f2..5ff54491a3 100644 --- a/phpBB/adm/style/acp_jabber.html +++ b/phpBB/adm/style/acp_jabber.html @@ -27,7 +27,7 @@ </dl> <dl> <dt><label for="jab_port">{L_JAB_PORT}:</label><br /><span>{L_JAB_PORT_EXPLAIN}</span></dt> - <dd><input type="text" id="jab_port" name="jab_port" value="{JAB_PORT}" /></dd> + <dd><input type="text" id="jab_port" name="jab_port" value="{JAB_PORT}" maxlength="5" size="5" /></dd> </dl> <dl> <dt><label for="jab_username">{L_JAB_USERNAME}:</label><br /><span>{L_JAB_USERNAME_EXPLAIN}</span></dt> @@ -35,7 +35,7 @@ </dl> <dl> <dt><label for="jab_password">{L_JAB_PASSWORD}:</label></dt> - <dd><input type="text" id="jab_password" name="jab_password" value="{JAB_PASSWORD}" /></dd> + <dd><input type="password" id="jab_password" name="jab_password" value="{JAB_PASSWORD}" /></dd> </dl> <dl> <dt><label for="jab_resource">{L_JAB_RESOURCE}:</label><br /><span>{L_JAB_RESOURCE_EXPLAIN}</span></dt> @@ -43,7 +43,7 @@ </dl> <dl> <dt><label for="jab_package_size">{L_JAB_PACKAGE_SIZE}:</label><br /><span>{L_JAB_PACKAGE_SIZE_EXPLAIN}</span></dt> - <dd><input type="text" id="jab_package_size" name="jab_package_size" value="{JAB_PACKAGE_SIZE}" /></dd> + <dd><input type="text" id="jab_package_size" name="jab_package_size" value="{JAB_PACKAGE_SIZE}" maxlength="5" size="5" /></dd> </dl> <p class="submit-buttons"> diff --git a/phpBB/adm/style/acp_language.html b/phpBB/adm/style/acp_language.html index bc05fc43fd..21f7347d3d 100644 --- a/phpBB/adm/style/acp_language.html +++ b/phpBB/adm/style/acp_language.html @@ -7,7 +7,7 @@ <a href="{U_BACK}" style="float: right">« {L_BACK}</a> <h1>{L_SELECT_DOWNLOAD_FORMAT}</h1> - + <form id="selectmethod" method="post" action="{U_ACTION}"> <fieldset> @@ -36,11 +36,11 @@ <legend>{LANG_LOCAL_NAME}</legend> <dl> <dt><label for="lang_english_name">{L_LANG_ENGLISH_NAME}:</label></dt> - <dd><input type="text" id="lang_english_name" name="lang_english_name" value="{LANG_ENGLISH_NAME}" /></dd> + <dd><input type="text" id="lang_english_name" name="lang_english_name" value="{LANG_ENGLISH_NAME}" maxlength="100" /></dd> </dl> <dl> <dt><label for="lang_local_name">{L_LANG_LOCAL_NAME}:</label></dt> - <dd><input type="text" id="lang_local_name" name="lang_local_name" value="{LANG_LOCAL_NAME}" /></dd> + <dd><input type="text" id="lang_local_name" name="lang_local_name" value="{LANG_LOCAL_NAME}" maxlength="255" /></dd> </dl> <dl> <dt><label>{L_LANG_ISO_CODE}:</label></dt> @@ -48,7 +48,7 @@ </dl> <dl> <dt><label for="lang_author">{L_LANG_AUTHOR}:</label></dt> - <dd><input type="text" id="lang_author" name="lang_author" value="{LANG_AUTHOR}" /></dd> + <dd><input type="text" id="lang_author" name="lang_author" value="{LANG_AUTHOR}" maxlength="255" /></dd> </dl> <p class="quick" style="margin-top: -15px;"> @@ -72,7 +72,7 @@ <h1>{L_MISSING_LANG_VARIABLES}</h1> <p>{L_MISSING_VARS_EXPLAIN}</p> - + <form id="missing" method="post" action="{U_MISSING_ACTION}"> <table cellspacing="1"> @@ -104,20 +104,29 @@ <p>{L_LANGUAGE_ENTRIES_EXPLAIN}</p> - <form id="entries" method="post" action="{U_ENTRY_ACTION}"> + <form id="lang_entries" method="post" action="{U_ENTRY_ACTION}"> <!-- IF S_FROM_STORE --> <fieldset class="quick" style="float: left;"> <input type="submit" name="remove_store" value="{L_REMOVE_FROM_STORAGE_FOLDER}" class="button2" /> </fieldset> <!-- ENDIF --> - + <fieldset class="quick" style="float: right;"> <select name="language_file">{S_LANG_OPTIONS}</select> <input type="submit" class="button2" name="change" value="{L_SELECT}" /> </fieldset> <br /><br /><br /> + <!-- DIRTY DIRTY DIRTY IE --> + <!--[if lt IE 8]> + <style type="text/css"> + input.langvalue, textarea.langvalue { + width: 450px; + } + </style> + < ![endif]--> + <table cellspacing="1"> <thead> <!-- IF S_EMAIL_FILE --> @@ -185,7 +194,7 @@ <!-- BEGIN data --> <dl> <dt><label for="{data.DATA}">{data.NAME}:</label><br /><span>{data.EXPLAIN}</span></dt> - <dd><input type="text" id="{data.DATA}" name="{data.DATA}" value="{data.DEFAULT}" /></dd> + <dd><input type="<!-- IF data.DATA == 'password' -->password<!-- ELSE -->text<!-- ENDIF -->" id="{data.DATA}" name="{data.DATA}" value="{data.DEFAULT}" /></dd> </dl> <!-- END data --> </fieldset> diff --git a/phpBB/adm/style/acp_logs.html b/phpBB/adm/style/acp_logs.html index e5dc04c94a..19696c014a 100644 --- a/phpBB/adm/style/acp_logs.html +++ b/phpBB/adm/style/acp_logs.html @@ -8,20 +8,11 @@ <form id="list" method="post" action="{U_ACTION}"> -<fieldset class="quick" style="float: left;"> - {L_DISPLAY_LOG}: {S_LIMIT_DAYS} {L_SORT_BY}: {S_SORT_KEY} {S_SORT_DIR} - <input class="button2" type="submit" value="{L_GO}" name="sort" /> -</fieldset> - -<div class="clearfix"></div> - +<!-- IF PAGINATION --> <div class="pagination"> - <!-- IF PAGINATION --> <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> - <!-- ELSE --> - {S_ON_PAGE} - <!-- ENDIF --> </div> +<!-- ENDIF --> <!-- IF .log --> <table cellspacing="1"> @@ -46,7 +37,7 @@ </td> <td style="text-align: center;">{log.IP}</td> <td style="text-align: center;">{log.DATE}</td> - <td>{log.ACTION}<!-- IF log.DATA --><br />{log.DATA}</span><!-- ENDIF --></td> + <td>{log.ACTION}<!-- IF log.DATA --><br /><span>{log.DATA}</span><!-- ENDIF --></td> <td style="text-align: center;"><input type="checkbox" class="radio" name="mark[]" value="{log.ID}" /></td> </tr> <!-- END log --> @@ -61,8 +52,19 @@ <!-- ENDIF --> + +<fieldset class="display-options"> + {L_DISPLAY_LOG}: {S_LIMIT_DAYS} {L_SORT_BY}: {S_SORT_KEY} {S_SORT_DIR} + <input class="button2" type="submit" value="{L_GO}" name="sort" /> +</fieldset> +<hr /> +<!-- IF PAGINATION --> +<div class="pagination"> + <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> +</div> +<!-- ENDIF --> <!-- IF S_SHOW_FORUMS --> - <fieldset class="quick" style="float: left;"> + <fieldset class="quick"> {L_SELECT_FORUM}: <select name="f" onchange="if(this.options[this.selectedIndex].value != -1){ this.form.submit(); }">{S_FORUM_BOX}</select> <input class="button2" type="submit" value="{L_GO}" /> </fieldset> @@ -70,19 +72,13 @@ <!-- IF S_CLEARLOGS --> <fieldset class="quick"> - <b class="small"><a href="#" onclick="marklist('list', 'mark', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('list', 'mark', false); return false;">{L_UNMARK_ALL}</a></b><br /> <input class="button2" type="submit" name="delmarked" value="{L_DELETE_MARKED}" /> - <input class="button2" type="submit" name="delall" value="{L_DELETE_ALL}" /> + <input class="button2" type="submit" name="delall" value="{L_DELETE_ALL}" /><br /> + <p class="small"><a href="#" onclick="marklist('list', 'mark', true); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('list', 'mark', false); return false;">{L_UNMARK_ALL}</a></p> </fieldset> <!-- ENDIF --> -<div class="pagination"> - <!-- IF PAGINATION --> - <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> - <!-- ELSE --> - {S_ON_PAGE} - <!-- ENDIF --> -</div> + </form> diff --git a/phpBB/adm/style/acp_main.html b/phpBB/adm/style/acp_main.html index 9279cb9b9b..41d00a3b41 100644 --- a/phpBB/adm/style/acp_main.html +++ b/phpBB/adm/style/acp_main.html @@ -4,9 +4,9 @@ <!-- IF S_RESTORE_PERMISSIONS --> - <h1>{L_PERMISSIONS_TRANSFERED}</h1> + <h1>{L_PERMISSIONS_TRANSFERRED}</h1> - <p>{L_PERMISSIONS_TRANSFERED_EXPLAIN}</p> + <p>{L_PERMISSIONS_TRANSFERRED_EXPLAIN}</p> <!-- ELSE --> diff --git a/phpBB/adm/style/acp_modules.html b/phpBB/adm/style/acp_modules.html index c9f7c0baf1..ecc8fe4c61 100644 --- a/phpBB/adm/style/acp_modules.html +++ b/phpBB/adm/style/acp_modules.html @@ -27,6 +27,7 @@ // Create the new select tag var new_node = document.createElement('select'); new_node.setAttribute('id', 'module_mode'); + new_node.setAttribute('name', 'module_mode'); // Substitute it for the old one item.parentNode.replaceChild(new_node, item); @@ -191,7 +192,7 @@ <input type="hidden" name="action" value="add" /> <input type="hidden" name="module_parent_id" value="{PARENT_ID}" /> - <input type="text" name="module_langname" /> + <input type="text" name="module_langname" maxlength="255" /> <input class="button2" name="addmodule" type="submit" value="{L_CREATE_MODULE}" /> </fieldset> diff --git a/phpBB/adm/style/acp_permission_roles.html b/phpBB/adm/style/acp_permission_roles.html index d8bbeb33dd..222e1265bf 100644 --- a/phpBB/adm/style/acp_permission_roles.html +++ b/phpBB/adm/style/acp_permission_roles.html @@ -6,53 +6,22 @@ <script type="text/javascript"> <!-- - var active_option = 'options0'; - - /** - * Show/hide option panels - * value = suffix for ID to show - */ - function swap_options(id) - { - if (id == active_option) - { - return; - } - - // Hide active options and display container - dE(active_option, -1); - dE(id, 1); - - active_option = id; - } - - /** - * Mark all radio buttons in one panel - * id = table ID container, s = status ['y'/'u'/'n'] - */ - function mark_options(id, s) - { - var t = document.getElementById(id); - - if (!t) - { - return; - } - - var rb = t.getElementsByTagName('input'); - - for (var r = 0; r < rb.length; r++ ) - { - if (rb[r].id.substr(rb[r].id.length-1) == s) - { - rb[r].checked = true; - } - } - } + var active_pmask = '0'; + var active_fmask = '0'; + var active_cat = '0'; + var id = '000'; + + var role_options = new Array(); + + <!-- IF S_ROLE_JS_ARRAY --> + {S_ROLE_JS_ARRAY} + <!-- ENDIF --> //--> </script> + <script type="text/javascript" src="style/permissions.js"></script> + <a href="{U_BACK}" style="float: right">« {L_BACK}</a> <h1>{L_TITLE}</h1> @@ -68,7 +37,7 @@ <legend>{L_ROLE_DETAILS}</legend> <dl> <dt><label for="role_name">{L_ROLE_NAME}:</label></dt> - <dd><input name="role_name" type="text" id="role_name" value="{ROLE_NAME}" /></dd> + <dd><input name="role_name" type="text" id="role_name" value="{ROLE_NAME}" maxlength="255" /></dd> </dl> <dl> <dt><label for="role_description">{L_ROLE_DESCRIPTION}:</label><br /><span>{L_ROLE_DESCRIPTION_EXPLAIN}</span></dt> @@ -96,62 +65,64 @@ <h1>{L_ACL_TYPE}</h1> <fieldset class="quick"> - <a href="#" onclick="mark_options('a_options', 'y'); return false;">{L_ALL_YES}</a> • <a href="#" onclick="mark_options('a_options', 'n'); return false;">{L_ALL_NEVER}</a> • <a href="#" onclick="mark_options('a_options', 'u'); return false;">{L_ALL_NO}</a> + <a href="#" onclick="mark_options('advanced00', 'y'); init_colours('00'); return false;">{L_ALL_YES}</a> • <a href="#" onclick="mark_options('advanced00', 'n'); init_colours('00'); return false;">{L_ALL_NEVER}</a> • <a href="#" onclick="mark_options('advanced00', 'u'); init_colours('00'); return false;">{L_ALL_NO}</a> </fieldset> - <fieldset class="permissions"> - - <table cellspacing="1" class="pmask"> - <thead> - <tr> - <!-- BEGIN auth --> - <th>{auth.CAT_NAME}</th> - <!-- END auth --> - </tr> - </thead> - <tbody> - <tr> - <!-- BEGIN auth --> - <!-- IF auth.S_YES --> - <td class="preset preset_yes"> - <!-- ELSEIF auth.S_NEVER --> - <td class="preset preset_never"> - <!-- ELSEIF auth.S_NO --> - <td class="preset preset_no"> - <!-- ELSE --> - <td class="preset preset_custom"> - <!-- ENDIF --> - <a href="#" onclick="swap_options('options{auth.S_ROW_COUNT}'); return false;"><span></span></a></td> - <!-- END auth --> - </tr> - <tr class="row3"> - <td colspan="{S_NUM_PERM_COLS}" id="a_options" style="vertical-align: top; text-align: left; width: 100%;"> + <fieldset class="perm nolegend"> + + <div id="advanced00"> + <div class="perm_cat"> + <ul> + <!-- BEGIN auth --> + <!-- IF auth.S_YES --> + <li class="perm_preset_yes<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}"> + <!-- ELSEIF auth.S_NEVER --> + <li class="perm_preset_never<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}"> + <!-- ELSEIF auth.S_NO --> + <li class="perm_preset_no<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}"> + <!-- ELSE --> + <li class="perm_preset_custom<!-- IF auth.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab00{auth.S_ROW_COUNT}"> + <!-- ENDIF --> + <a href="#" onclick="swap_options('0','0','{auth.S_ROW_COUNT}'); return false;"><span class="tabbg"><span class="colour"></span>{auth.CAT_NAME}</span></a></li> + <!-- END auth --> + </ul> + </div> <!-- BEGIN auth --> - <table cellspacing="1" id="options{auth.S_ROW_COUNT}" class="type3" style="width: 100%; text-align: left;<!-- IF auth.S_FIRST_ROW --><!-- ELSE --> display: none;<!-- ENDIF -->"> - <thead> - <tr> - <th scope="col" style="text-align: left; padding-left: 0;"><strong>{L_ACL_SETTING} [{auth.CAT_NAME}]</strong></th> - <th scope="col"><a href="#" onclick="mark_options('options{auth.S_ROW_COUNT}', 'y'); return false;">{L_ACL_YES}</a></th> - <th scope="col"><a href="#" onclick="mark_options('options{auth.S_ROW_COUNT}', 'u'); return false;">{L_ACL_NO}</a></th> - <th scope="col"><a href="#" onclick="mark_options('options{auth.S_ROW_COUNT}', 'n'); return false;">{L_ACL_NEVER}</a></th> - </tr> - </thead> - <tbody> - <!-- BEGIN mask --> - <!-- IF auth.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF --> - <th>{auth.mask.PERMISSION}</th> - <td class="no"><input id="setting[{auth.mask.FIELD_NAME}]_y" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></td> - <td class="no"><input id="setting[{auth.mask.FIELD_NAME}]_u" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></td> - <td class="no"><input id="setting[{auth.mask.FIELD_NAME}]_n" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></td> - </tr> - <!-- END mask --> - </tbody> - </table> + <div class="perm_panel" id="options00{auth.S_ROW_COUNT}"<!-- IF auth.S_FIRST_ROW --><!-- ELSE --> style="display: none;"<!-- ENDIF -->> + <span class="corners-top"><span></span></span> + <div class="tablewrap"> + <table id="table00{auth.S_ROW_COUNT}" cellspacing="1"> + <colgroup> + <col class="permissions_name" /> + <col class="permissions_yes" /> + <col class="permissions_no" /> + <col class="permissions_never" /> + </colgroup> + <thead> + <tr> + <th class="name" scope="col"><strong>{L_ACL_SETTING}</strong></th> + <th class="value" scope="col"><a href="#" onclick="mark_options('options00{auth.S_ROW_COUNT}', 'y'); set_colours('00{auth.S_ROW_COUNT}', false, 'yes'); return false;">{L_ACL_YES}</a></th> + <th class="value" scope="col"><a href="#" onclick="mark_options('options00{auth.S_ROW_COUNT}', 'u'); set_colours('00{auth.S_ROW_COUNT}', false, 'no'); return false;">{L_ACL_NO}</a></th> + <th class="value" scope="col"><a href="#" onclick="mark_options('options00{auth.S_ROW_COUNT}', 'n'); set_colours('00{auth.S_ROW_COUNT}', false, 'never'); return false;">{L_ACL_NEVER}</a></th> + </tr> + </thead> + <tbody> + <!-- BEGIN mask --> + <!-- IF auth.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF --> + <th class="permission_name<!-- IF auth.mask.S_ROW_COUNT is even --> row4<!-- ELSE --> row3<!-- ENDIF -->">{auth.mask.PERMISSION}</th> + + <td><label for="{auth.mask.FIELD_NAME}_y"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting[{auth.mask.FIELD_NAME}]_y" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></label></td> + <td><label for="{auth.mask.FIELD_NAME}_u"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting[{auth.mask.FIELD_NAME}]_u" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></label></td> + <td><label for="{auth.mask.FIELD_NAME}_n"><input onchange="set_colours('00{auth.S_ROW_COUNT}', false)" id="setting[{auth.mask.FIELD_NAME}]_n" name="setting[{auth.mask.FIELD_NAME}]" class="radio" type="radio"<!-- IF auth.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></label></td> + </tr> + <!-- END mask --> + </tbody> + </table> + </div> + <span class="corners-bottom"><span></span></span> + </div> <!-- END auth --> - </td> - </tr> - </tbody> - </table> + </div> </fieldset> @@ -190,11 +161,11 @@ <td style="width: 80px; text-align: right; vertical-align: top; white-space: nowrap;"> <!-- IF roles.S_FIRST_ROW && not roles.S_LAST_ROW --> {ICON_MOVE_UP_DISABLED} - <a href="{roles.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a> + <a href="{roles.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a> <!-- ELSEIF not roles.S_FIRST_ROW && not roles.S_LAST_ROW--> <a href="{roles.U_MOVE_UP}">{ICON_MOVE_UP}</a> <a href="{roles.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a> - <!-- ELSEIF roles.S_LAST_ROW && not roles.S_FIRST_ROW --> + <!-- ELSEIF roles.S_LAST_ROW && not roles.S_FIRST_ROW --> <a href="{roles.U_MOVE_UP}">{ICON_MOVE_UP}</a> {ICON_MOVE_DOWN_DISABLED} <!-- ELSE --> @@ -210,13 +181,13 @@ </table> <fieldset class="quick"> - {L_CREATE_ROLE}: <input type="text" name="role_name" value="" /><!-- IF S_ROLE_OPTIONS --> <select name="options_from"><option value="0" selected="selected">{L_CREATE_ROLE_FROM}</option>{S_ROLE_OPTIONS}</select><!-- ENDIF --> <input class="button2" type="submit" name="add" value="{L_SUBMIT}" /><br /> + {L_CREATE_ROLE}: <input type="text" name="role_name" value="" maxlength="255" /><!-- IF S_ROLE_OPTIONS --> <select name="options_from"><option value="0" selected="selected">{L_CREATE_ROLE_FROM}</option>{S_ROLE_OPTIONS}</select><!-- ENDIF --> <input class="button2" type="submit" name="add" value="{L_SUBMIT}" /><br /> </fieldset> </form> <!-- IF S_DISPLAY_ROLE_MASK --> - + <a name="assigned_to"></a> <h1>{L_ROLE_ASSIGNED_TO}</h1> @@ -225,8 +196,6 @@ <!-- ENDIF --> - <!-- ENDIF --> - -<!-- INCLUDE overall_footer.html --> +<!-- INCLUDE overall_footer.html -->
\ No newline at end of file diff --git a/phpBB/adm/style/acp_permissions.html b/phpBB/adm/style/acp_permissions.html index 9e305e525c..f5a5f78c6b 100644 --- a/phpBB/adm/style/acp_permissions.html +++ b/phpBB/adm/style/acp_permissions.html @@ -261,8 +261,8 @@ <fieldset> <legend>{L_LOOK_UP_GROUP}</legend> <dl> - <dt><label for="group">{L_LOOK_UP_GROUP}:</label></dt> - <dd><select name="group_id[]" id="group">{S_ADD_GROUP_OPTIONS}</select></dd> + <dt><label for="group_select">{L_LOOK_UP_GROUP}:</label></dt> + <dd><select name="group_id[]" id="group_select">{S_ADD_GROUP_OPTIONS}</select></dd> <dd> </dd> </dl> </fieldset> @@ -337,14 +337,9 @@ <br /><br /> - <fieldset class="quick" style="float: left; text-align: left;"> - {L_PERMISSION_APPLIED_TO_ALL}<br /> - <a href="#" onclick="marklist('set_permissions', 'inherit', true); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('set_permissions', 'inherit', false); return false;">{L_UNMARK_ALL}</a> - </fieldset> - <fieldset class="quick" style="float: right;"> <input class="button1" type="submit" name="action[apply_all_permissions]" value="{L_APPLY_ALL_PERMISSIONS}" /> - <input class="button2" type="reset" name="cancel" value="{L_RESET}" /> + <input class="button2" type="button" name="cancel" value="{L_RESET}" onclick="document.forms['set_permissions'].reset(); init_colours(active_pmask + active_fmask);" /> </fieldset> <br /><br /> diff --git a/phpBB/adm/style/acp_ranks.html b/phpBB/adm/style/acp_ranks.html index 1926af18a2..e316c35b2a 100644 --- a/phpBB/adm/style/acp_ranks.html +++ b/phpBB/adm/style/acp_ranks.html @@ -26,7 +26,7 @@ <legend>{L_ACP_RANKS}</legend> <dl> <dt><label for="title">{L_RANK_TITLE}:</label></dt> - <dd><input name="title" type="text" id="title" value="{RANK_TITLE}" /></dd> + <dd><input name="title" type="text" id="title" value="{RANK_TITLE}" maxlength="255" /></dd> </dl> <dl> <dt><label for="rank_image">{L_RANK_IMAGE}:</label></dt> diff --git a/phpBB/adm/style/acp_reasons.html b/phpBB/adm/style/acp_reasons.html index 4aaf7328e7..e10cc1d1ca 100644 --- a/phpBB/adm/style/acp_reasons.html +++ b/phpBB/adm/style/acp_reasons.html @@ -30,7 +30,7 @@ <p><!-- IF S_TRANSLATED -->{L_IS_TRANSLATED_EXPLAIN}<!-- ELSE -->{L_IS_NOT_TRANSLATED_EXPLAIN}<!-- ENDIF --></p> <dl> <dt><label for="reason_title">{L_REASON_TITLE}:</label></dt> - <dd><input name="reason_title" type="text" id="reason_title" value="{REASON_TITLE}" /></dd> + <dd><input name="reason_title" type="text" id="reason_title" value="{REASON_TITLE}" maxlength="255" /></dd> </dl> <!-- IF S_TRANSLATED --> <dl> @@ -64,7 +64,7 @@ <p>{L_ACP_REASONS_EXPLAIN}</p> <form id="reasons" method="post" action="{U_ACTION}"> - <fieldset class="tabuled"> + <fieldset class="tabulated"> <legend>{L_ACP_REASONS}</legend> <!-- IF .reasons --> diff --git a/phpBB/adm/style/acp_search.html b/phpBB/adm/style/acp_search.html index 7a712892e8..b63226f4e1 100644 --- a/phpBB/adm/style/acp_search.html +++ b/phpBB/adm/style/acp_search.html @@ -17,11 +17,11 @@ </dl> <dl> <dt><label for="search_interval">{L_SEARCH_INTERVAL}:</label><br /><span>{L_SEARCH_INTERVAL_EXPLAIN}</span></dt> - <dd><input id="search_interval" type="text" size="4" maxlength="4" name="config[search_interval]" value="{SEARCH_INTERVAL}" /></dd> + <dd><input id="search_interval" type="text" size="4" maxlength="4" name="config[search_interval]" value="{SEARCH_INTERVAL}" /> {L_SECONDS}</dd> </dl> <dl> <dt><label for="search_anonymous_interval">{L_SEARCH_GUEST_INTERVAL}:</label><br /><span>{L_SEARCH_GUEST_INTERVAL_EXPLAIN}</span></dt> - <dd><input id="search_anonymous_interval" type="text" size="4" maxlength="4" name="config[search_anonymous_interval]" value="{SEARCH_GUEST_INTERVAL}" /></dd> + <dd><input id="search_anonymous_interval" type="text" size="4" maxlength="4" name="config[search_anonymous_interval]" value="{SEARCH_GUEST_INTERVAL}" /> {L_SECONDS}</dd> </dl> <dl> <dt><label for="limit_search_load">{L_LIMIT_SEARCH_LOAD}:</label><br /><span>{L_LIMIT_SEARCH_LOAD_EXPLAIN}</span></dt> @@ -33,7 +33,7 @@ </dl> <dl> <dt><label for="search_store_results">{L_SEARCH_STORE_RESULTS}:</label><br /><span>{L_SEARCH_STORE_RESULTS_EXPLAIN}</span></dt> - <dd><input id="search_store_results" type="text" size="4" maxlength="6" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /></dd> + <dd><input id="search_store_results" type="text" size="4" maxlength="6" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /> {L_SECONDS}</dd> </dl> </fieldset> @@ -91,10 +91,13 @@ <!-- BEGIN backend --> <!-- IF backend.S_STATS --> - + <form id="acp_search_index_{backend.NAME}" method="post" action="{U_ACTION}"> + + <fieldset class="tabulated"> + {backend.S_HIDDEN_FIELDS} - <fieldset class="tabular"> + <legend>{L_INDEX_STATS}: {backend.L_NAME} <!-- IF backend.S_ACTIVE -->({L_ACTIVE}) <!-- ENDIF --></legend> <table cellspacing="1"> @@ -130,7 +133,7 @@ <!-- ENDIF --> </p> </fieldset> - + </form> <!-- END backend --> diff --git a/phpBB/adm/style/acp_styles.html b/phpBB/adm/style/acp_styles.html index 6ee90b7d3d..efdaf1980a 100644 --- a/phpBB/adm/style/acp_styles.html +++ b/phpBB/adm/style/acp_styles.html @@ -322,15 +322,15 @@ </dl> <dl> <dt><label for="font_weight">{L_BOLD}:</label></dt> - <dd><input id="font_weight" type="radio" class="radio" name="font_weight" value="bold"<!-- IF FONT_WEIGHT eq "bold" --> checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="font_weight" value="normal"<!-- IF FONT_WEIGHT eq "normal" --> checked="checked"<!-- ENDIF --> /> {L_NO} <input type="radio" class="radio" name="font_weight" value=""<!-- IF not FONT_WEIGHT --> checked="checked"<!-- ENDIF --> /> {L_UNSET}</dd> + <dd><input id="font_weight" type="radio" class="radio" name="font_weight" value="bold"<!-- IF FONT_WEIGHT eq "bold" --> checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="font_weight" value="none"<!-- IF FONT_WEIGHT eq "none" --> checked="checked"<!-- ENDIF --> /> {L_NO} <input type="radio" class="radio" name="font_weight" value=""<!-- IF not FONT_WEIGHT --> checked="checked"<!-- ENDIF --> /> {L_UNSET}</dd> </dl> <dl> <dt><label for="font_style">{L_ITALIC}:</label></dt> - <dd><input id="font_style" type="radio" class="radio" name="font_style" value="italic"<!-- IF FONT_STYLE eq "italic" --> checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="font_style" value="normal"<!-- IF FONT_STYLE eq "normal" --> checked="checked"<!-- ENDIF --> /> {L_NO} <input type="radio" class="radio" name="font_style" value=""<!-- IF not FONT_STYLE --> checked="checked"<!-- ENDIF --> /> {L_UNSET}</dd> + <dd><input id="font_style" type="radio" class="radio" name="font_style" value="italic"<!-- IF FONT_STYLE eq "italic" --> checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="font_style" value="none"<!-- IF FONT_STYLE eq "none" --> checked="checked"<!-- ENDIF --> /> {L_NO} <input type="radio" class="radio" name="font_style" value=""<!-- IF not FONT_STYLE --> checked="checked"<!-- ENDIF --> /> {L_UNSET}</dd> </dl> <dl> <dt><label for="text_decoration">{L_UNDERLINE}:</label></dt> - <dd><input id="text_decoration" type="radio" class="radio" name="text_decoration" value="underline"<!-- IF TEXT_DECORATION eq "underline" --> checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="text_decoration" value="normal"<!-- IF TEXT_DECORATION eq "normal" --> checked="checked"<!-- ENDIF --> /> {L_NO} <input type="radio" class="radio" name="text_decoration" value=""<!-- IF not TEXT_DECORATION --> checked="checked"<!-- ENDIF --> /> {L_UNSET}</dd> + <dd><input id="text_decoration" type="radio" class="radio" name="text_decoration" value="underline"<!-- IF TEXT_DECORATION eq "underline" --> checked="checked"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="text_decoration" value="none"<!-- IF TEXT_DECORATION eq "none" --> checked="checked"<!-- ENDIF --> /> {L_NO} <input type="radio" class="radio" name="text_decoration" value=""<!-- IF not TEXT_DECORATION --> checked="checked"<!-- ENDIF --> /> {L_UNSET}</dd> </dl> <dl> <dt><label for="line_height">{L_LINE_SPACING}</label></dt> @@ -516,7 +516,7 @@ </tr> <!-- BEGIN installed --> <tr> - <td><strong>{installed.NAME}</strong></a><!-- IF installed.S_DEFAULT_STYLE --> *<!-- ENDIF --></td> + <td><strong>{installed.NAME}</strong><!-- IF installed.S_DEFAULT_STYLE --> *<!-- ENDIF --></td> <!-- IF S_STYLE --> <td style="text-align: center;">{installed.STYLE_COUNT}</td> <!-- ENDIF --> diff --git a/phpBB/adm/style/acp_users.html b/phpBB/adm/style/acp_users.html index 7bc81434d0..d44832b9b7 100644 --- a/phpBB/adm/style/acp_users.html +++ b/phpBB/adm/style/acp_users.html @@ -112,6 +112,10 @@ <dd><strong>{USER_POSTS}</strong></dd> </dl> <dl> + <dt><label>{L_WARNINGS}:</label></dt> + <dd><strong>{USER_WARNINGS}</strong></dd> + </dl> + <dl> <dt><label for="user_founder">{L_FOUNDER}:</label><br /><span>{L_FOUNDER_EXPLAIN}</span></dt> <dd><input type="radio" class="radio" name="user_founder" value="1"<!-- IF S_USER_FOUNDER --> id="user_founder" checked="checked"<!-- ENDIF --><!-- IF not S_FOUNDER --> disabled="disabled"<!-- ENDIF --> /> {L_YES} <input type="radio" class="radio" name="user_founder" value="0"<!-- IF not S_USER_FOUNDER --> id="user_founder" checked="checked"<!-- ENDIF --><!-- IF not S_FOUNDER --> disabled="disabled"<!-- ENDIF --> /> {L_NO} </dd> </dl> @@ -137,10 +141,6 @@ <fieldset> <legend>{L_USER_TOOLS}</legend> <dl> - <dt><label for="warnings">{L_WARNINGS}:</label><br /><span>{L_WARNINGS_EXPLAIN}</span></dt> - <dd><input type="text" id="warnings" name="warnings" value="{USER_WARNINGS}" size="2" /></dd> - </dl> - <dl> <dt><label for="quicktools">{L_QUICK_TOOLS}:</label></dt> <dd><select id="quicktools" name="action">{S_ACTION_OPTIONS}</select></dd> </dl> @@ -164,20 +164,9 @@ <form id="list" method="post" action="{U_ACTION}"> - <fieldset class="quick" style="float: left;"> - {L_DISPLAY_LOG}: {S_LIMIT_DAYS} {L_SORT_BY}: {S_SORT_KEY} {S_SORT_DIR} - <input class="button2" type="submit" value="{L_GO}" name="sort" /> - </fieldset> - - <div class="clearfix"></div> - <!-- IF PAGINATION --> <div class="pagination"> - <!-- IF PAGINATION --> <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> - <!-- ELSE --> - {S_ON_PAGE} - <!-- ENDIF --> </div> <!-- ENDIF --> @@ -188,7 +177,7 @@ <th>{L_REPORT_BY}</th> <th>{L_IP}</th> <th>{L_TIME}</th> - <th>{L_ACTION}</th> + <th>{L_FEEDBACK}</th> <th>{L_MARK}</th> </tr> </thead> @@ -213,12 +202,23 @@ <p>{L_NO_ENTRIES}</p> </div> <!-- ENDIF --> + + <fieldset class="display-options"> + {L_DISPLAY_LOG}: {S_LIMIT_DAYS} {L_SORT_BY}: {S_SORT_KEY} {S_SORT_DIR} + <input class="button2" type="submit" value="{L_GO}" name="sort" /> + </fieldset> + <hr /> + <!-- IF PAGINATION --> + <div class="pagination"> + <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> + </div> + <!-- ENDIF --> <!-- IF S_CLEARLOGS --> <fieldset class="quick"> - <b class="small"><a href="#" onclick="marklist('list', 'mark', true);">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('list', 'mark', false);">{L_UNMARK_ALL}</a></b><br /> <input class="button2" type="submit" name="delmarked" value="{L_DELETE_MARKED}" /> - <input class="button2" type="submit" name="delall" value="{L_DELETE_ALL}" /> + <input class="button2" type="submit" name="delall" value="{L_DELETE_ALL}" /> + <p class="small"><a href="#" onclick="marklist('list', 'mark', true);">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('list', 'mark', false);">{L_UNMARK_ALL}</a></p> </fieldset> <!-- ENDIF --> @@ -548,31 +548,31 @@ var text_name = 'signature'; // Define the bbCode tags -bbcode = new Array(); -bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->); -imageTag = false; - -// Helpline messages -var help_line = { - b: '{LA_BBCODE_B_HELP}', - i: '{LA_BBCODE_I_HELP}', - u: '{LA_BBCODE_U_HELP}', - q: '{LA_BBCODE_Q_HELP}', - c: '{LA_BBCODE_C_HELP}', - l: '{LA_BBCODE_L_HELP}', - o: '{LA_BBCODE_O_HELP}', - p: '{LA_BBCODE_P_HELP}', - w: '{LA_BBCODE_W_HELP}', - s: '{LA_BBCODE_S_HELP}', - f: '{LA_BBCODE_F_HELP}', - e: '{LA_BBCODE_E_HELP}', - d: '{LA_BBCODE_D_HELP}', - t: '{LA_BBCODE_T_HELP}', - tip: '{L_STYLES_TIP}' - <!-- BEGIN custom_tags --> - ,cb_{custom_tags.BBCODE_ID}: '{custom_tags.BBCODE_HELPLINE}' - <!-- END custom_tags --> -} + bbcode = new Array(); + bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->); + imageTag = false; + + // Helpline messages + var help_line = { + b: '{LA_BBCODE_B_HELP}', + i: '{LA_BBCODE_I_HELP}', + u: '{LA_BBCODE_U_HELP}', + q: '{LA_BBCODE_Q_HELP}', + c: '{LA_BBCODE_C_HELP}', + l: '{LA_BBCODE_L_HELP}', + o: '{LA_BBCODE_O_HELP}', + p: '{LA_BBCODE_P_HELP}', + w: '{LA_BBCODE_W_HELP}', + s: '{LA_BBCODE_S_HELP}', + f: '{LA_BBCODE_F_HELP}', + e: '{LA_BBCODE_E_HELP}', + d: '{LA_BBCODE_D_HELP}', + t: '{LA_BBCODE_T_HELP}', + tip: '{L_STYLES_TIP}' + <!-- BEGIN custom_tags --> + ,cb_{custom_tags.BBCODE_ID}: '{custom_tags.BBCODE_HELPLINE}' + <!-- END custom_tags --> + } //--> </script> @@ -600,7 +600,7 @@ var help_line = { <input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" onmouseover="helpline('o')" onmouseout="helpline('tip')" /> <input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" onmouseover="helpline('e')" onmouseout="helpline('tip')" /> <!-- IF S_BBCODE_IMG --> - <input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" onmouseover="helpline('p')" onmouseout="helpline('tip')" /> + <input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" onmouseover="helpline('p')" onmouseout="helpline('tip')" /> <!-- ENDIF --> <!-- IF S_LINKS_ALLOWED --> <input type="button" class="button2" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" onmouseover="helpline('w')" onmouseout="helpline('tip')" /> @@ -609,12 +609,12 @@ var help_line = { <input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" onmouseover="helpline('d')" onmouseout="helpline('tip')" /> <!-- ENDIF --> - {L_FONT_SIZE}: <select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" onmouseover="helpline('f')" onmouseout="helpline('tip')"> + {L_FONT_SIZE}: <select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" onmouseover="helpline('f')" onmouseout="helpline('tip')"> <option value="7">{L_FONT_TINY}</option> <option value="9">{L_FONT_SMALL}</option> <option value="12" selected="selected">{L_FONT_NORMAL}</option> <option value="18">{L_FONT_LARGE}</option> - <option value="24">{L_FONT_HUGE}</option> + <option value="24">{L_FONT_HUGE}</option> </select> <!-- IF .custom_tags --> <br /><br /> @@ -625,8 +625,10 @@ var help_line = { </div> <p><input type="text" name="helpbox" value="{L_STYLES_TIP}" class="full" style="border: 0; background: none;" /></p> - <div style="text-align: left;"><textarea name="signature" rows="10" cols="60" style="width: 80%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">{SIGNATURE}</textarea></div> - <div><!-- IF S_BBCODE_ALLOWED --> + <div style="text-align: left;"><textarea name="signature" rows="10" cols="60" style="width: 80%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">{SIGNATURE}</textarea></div> + + <div> + <!-- IF S_BBCODE_ALLOWED --> <input type="checkbox" class="radio" name="disable_bbcode"{S_BBCODE_CHECKED} /> {L_DISABLE_BBCODE} <!-- ENDIF --> <!-- IF S_SMILIES_ALLOWED --> @@ -636,7 +638,7 @@ var help_line = { <input type="checkbox" class="radio" name="disable_magic_url"{S_MAGIC_URL_CHECKED} /> {L_DISABLE_MAGIC_URL} <!-- ENDIF --> <br /><br /><strong>{L_OPTIONS}: </strong>{BBCODE_STATUS} :: {IMG_STATUS} :: {FLASH_STATUS} :: {URL_STATUS} :: {SMILIES_STATUS} - </div> + </div> </fieldset> <fieldset class="quick"> @@ -678,20 +680,12 @@ var help_line = { <form id="user_attachments" method="post" action="{U_ACTION}"> - <fieldset class="quick" style="float: left;"> - {L_SORT_BY}: <select name="sk">{S_SORT_KEY}</select> <select name="sd">{S_SORT_DIR}</select> - <input class="button2" type="submit" value="{L_GO}" name="sort" /> - </fieldset> - <div class="pagination" style="float: right;"> - <!-- IF PAGINATION --> - <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> - <!-- ELSE --> - {S_ON_PAGE} - <!-- ENDIF --> + <!-- IF PAGINATION --> + <div class="pagination"> + <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> </div> - - <div class="clearfix"></div> + <!-- ENDIF --> <!-- IF .attach --> <table cellspacing="1"> @@ -701,17 +695,17 @@ var help_line = { <th>{L_POST_TIME}</th> <th>{L_FILESIZE}</th> <th>{L_DOWNLOADS}</th> - <th>{L_DELETE}</th> + <th>{L_MARK}</th> </tr> </thead> <tbody> <!-- BEGIN attach --> <!-- IF attach.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF --> <td><a href="{attach.U_DOWNLOAD}">{attach.REAL_FILENAME}</a><br /><span class="small"><!-- IF attach.S_IN_MESSAGE --><b>{L_PM}: </b><!-- ELSE --><b>{L_TOPIC}: </b><!-- ENDIF --><a href="{attach.U_VIEW_TOPIC}">{attach.TOPIC_TITLE}</a></span></td> - <td>{attach.POST_TIME}</td> - <td>{attach.SIZE}</td> - <td>{attach.DOWNLOAD_COUNT}</td> - <td><input type="checkbox" class="radio" name="mark[]" value="{attach.ATTACH_ID}" /></td> + <td style="text-align: center">{attach.POST_TIME}</td> + <td style="text-align: center">{attach.SIZE}</td> + <td style="text-align: center">{attach.DOWNLOAD_COUNT}</td> + <td style="text-align: center"><input type="checkbox" class="radio" name="mark[]" value="{attach.ATTACH_ID}" /></td> </tr> <!-- END attach --> </tbody> @@ -721,20 +715,41 @@ var help_line = { <p>{L_NO_ENTRIES}</p> </div> <!-- ENDIF --> - + <fieldset class="display-options"> + {L_SORT_BY}: <select name="sk">{S_SORT_KEY}</select> <select name="sd">{S_SORT_DIR}</select> + <input class="button2" type="submit" value="{L_GO}" name="sort" /> + </fieldset> + <hr /> + <!-- IF PAGINATION --> + <div class="pagination"> + <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{S_ON_PAGE}</a> • <span>{PAGINATION}</span> + </div> + <!-- ENDIF --> + <fieldset class="quick"> - <b class="small"><a href="#" onclick="marklist('user_attachments', 'mark', true);">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('user_attachments', 'mark', false);">{L_UNMARK_ALL}</a></b><br /> <input class="button2" type="submit" name="delmarked" value="{L_DELETE_MARKED}" /> + <p class="small"><a href="#" onclick="marklist('user_attachments', 'mark', true);">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('user_attachments', 'mark', false);">{L_UNMARK_ALL}</a></p> </fieldset> </form> <!-- ELSEIF S_PERMISSIONS --> - <fieldset class="quick"> + <div style="float: right;"> <a href="{U_USER_PERMISSIONS}">» {L_SET_USERS_PERMISSIONS}</a><br /> <a href="{U_USER_FORUM_PERMISSIONS}">» {L_SET_USERS_FORUM_PERMISSIONS}</a> - </fieldset> + </div> + + <form id="select_forum" method="post" action="{U_ACTION}"> + + <fieldset class="quick" style="text-align: left;"> + {L_SELECT_FORUM}: <select name="f">{S_FORUM_OPTIONS}</select> + <input class="button2" type="submit" value="{L_GO}" name="select" /> + </fieldset> + + </form> + + <br clear="all" /> <!-- INCLUDE permission_mask.html --> diff --git a/phpBB/adm/style/acp_words.html b/phpBB/adm/style/acp_words.html index 17f734c29f..fa85669595 100644 --- a/phpBB/adm/style/acp_words.html +++ b/phpBB/adm/style/acp_words.html @@ -16,11 +16,11 @@ <legend>{L_EDIT_WORD}</legend> <dl> <dt><label for="word">{L_WORD}</label></dt> - <dd><input id="word" type="text" name="word" value="{WORD}" /></dd> + <dd><input id="word" type="text" name="word" value="{WORD}" maxlength="255" /></dd> </dl> <dl> <dt><label for="replacement">{L_REPLACEMENT}</label></dt> - <dd><input id="replacement" type="text" name="replacement" value="{REPLACEMENT}" /></dd> + <dd><input id="replacement" type="text" name="replacement" value="{REPLACEMENT}" maxlength="255" /></dd> </dl> {S_HIDDEN_FIELDS} @@ -52,7 +52,7 @@ <tr> <th>{L_WORD}</th> <th>{L_REPLACEMENT}</th> - <th colspan="2">{L_ACTION}</th> + <th>{L_ACTION}</th> </tr> </thead> <tbody> @@ -60,8 +60,7 @@ <!-- IF words.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF --> <td style="text-align: center;">{words.WORD}</td> <td style="text-align: center;">{words.REPLACEMENT}</td> - <td> <a href="{words.U_EDIT}">{L_EDIT}</a> </td> - <td> <a href="{words.U_DELETE}">{L_DELETE}</a> </td> + <td> <a href="{words.U_EDIT}">{ICON_EDIT}</a> <a href="{words.U_DELETE}">{ICON_DELETE}</a> </td> </tr> <!-- END words --> </tbody> diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index bedb045397..3f655663a0 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -48,6 +48,17 @@ h2, caption { margin-top: 25px; } +.rtl h2, .rtl caption { + text-align: right; +} + +h3, h4 { + font: bold 1.2em "Lucida Grande", Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; + margin-top: 25px; +} + p { margin-bottom: 0.7em; line-height: 1.4em; @@ -56,8 +67,11 @@ p { ul { list-style: disc; - margin-left: 2em; - margin-bottom: 1em; + margin: 0 0 1em 2em; +} + +.rtl ul { + margin: 0 2em 1em 0; } hr { @@ -98,6 +112,10 @@ a:hover { height: 84px; } +.rtl #page-header { + text-align: left; +} + #page-header h1 { font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 1.5em; @@ -129,12 +147,17 @@ a:hover { } #main { - float:left; + float: left; width: 76%; - margin-left: 3%; + margin: 0 0 0 3%; min-height: 350px; } +.rtl #main { + float: right; + margin: 0 3% 0 0; +} + * html #main { height: 350px; } @@ -149,6 +172,10 @@ a:hover { min-width: 570px; } +.rtl #tabs { + margin: 0 7px -6px 0; +} + #tabs ul { margin:0; padding: 0; @@ -164,7 +191,7 @@ a:hover { } #tabs a { - float:left; + float: left; background:url("../images/bg_tabs1.gif") no-repeat 0% -35px; margin: 0 1px 0 0; padding: 0 0 0 6px; @@ -172,6 +199,12 @@ a:hover { position: relative; } +.rtl #tabs a { + float: right; + margin: 0 0 0 1px; + padding: 0 6px 0 0; +} + #tabs a span { float: left; display: block; @@ -182,8 +215,13 @@ a:hover { text-transform: uppercase; } +.rtl #tabs a span { + float: left; + padding: 7px 6px 6px 12px; +} + /* Commented Backslash Hack hides rule from IE5-Mac \*/ -#tabs a span { float:none; } +#tabs a span, .rtl #tabs a span { float:none;} /* End hack */ #tabs a:hover span { @@ -237,6 +275,10 @@ span.corners-top span, span.corners-bottom span { padding: 0; } +.rtl #menu { + float: right; +} + #menu p { font-size: 1em; } @@ -316,11 +358,16 @@ th, td { text-align: left; } +.rtl th, .rtl td { + text-align: right; +} + th { padding: 6px 4px; color: #FFA34F; font-weight: bold; background: #006699 url("../images/cellpic3.gif") 0 0 repeat-x; + white-space: nowrap; } td { @@ -328,12 +375,12 @@ td { line-height: 1.2em; } -.row1 { background-color: #EFEFEF; } -.row2 { background-color: #DEE3E7; } -.row3 { background-color: #D1D7DC; } -.row4 { background-color: #E4E8EB; } -.col1 { background-color: #DEE3E7; } -.col2 { background-color: #EFEFEF; } +.row1 { background-color: #EFEFEF;} +.row2 { background-color: #DEE3E7;} +.row3 { background-color: #D1D7DC;} +.row4 { background-color: #E4E8EB;} +.col1 { background-color: #DEE3E7;} +.col2 { background-color: #EFEFEF;} .spacer { background-color: #D1D7DC; @@ -363,42 +410,38 @@ table.type2 td { /* General form styles ----------------------------------------*/ -fieldset { +fieldset { + background-color: #DDD; + padding: 10px; margin: 15px 0; - padding: 10px; border-right: 1px solid #AFAEAA; border-bottom: 1px solid #AFAEAA; border-left: 1px solid #D5D5C8; border-top: 1px solid #D5D5C8; - background-color: #ECECEC; + background-color: #ECECEC; position: relative; } -* html fieldset { - padding: 0 10px 5px 10px; -} - -fieldset p { - font-size: 1.1em; +.rtl fieldset { + border-right: 1px solid #D5D5C8; + border-bottom: 1px solid #AFAEAA; + border-left: 1px solid #AFAEAA; + border-top: 1px solid #D5D5C8; } legend { - padding: 1px 0; - font-family: "Lucida Grande", Arial, Verdana,Sans-serif; + position: absolute; + top: -0.5em; font-size: 1.1em; + color:#006699; + font-family: "Lucida Grande",Arial,Verdana,Sans-serif; font-weight: bold; - color: #006699; - position: relative; - text-transform: uppercase; line-height: 100%; - top: 0em; - vertical-align:middle; + text-transform: uppercase; } -* html legend { - margin-bottom: -10px; - margin-left: -7px; - top: -1.2em; +fieldset p { + font-size: 1.1em; } input { @@ -416,6 +459,17 @@ input { vertical-align: middle; } +.rtl input { + border-left: 1px solid #D5D5C8; + border-top: 1px solid #AFAEAA; + border-right: 1px solid #AFAEAA; + border-bottom: 1px solid #D5D5C8; +} + +input.langvalue, textarea.langvalue { + width: 90%; +} + select { font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; font-size: 100%; @@ -434,12 +488,16 @@ optgroup { } option { - padding-right: 1em; + padding: 0 1em 0 0; +} + +.rtl option { + padding: 0 0 0 1em; } .sep { color: black; - background-color: #FFA34F; + font-weight: bold; } textarea { @@ -455,10 +513,21 @@ textarea { cursor: text; } +.rtl textarea { + border-left: 1px solid #D5D5C8; + border-top: 1px solid #AFAEAA; + border-right: 1px solid #AFAEAA; + border-bottom: 1px solid #D5D5C8; +} + label { - cursor:pointer; + cursor: pointer; font-size: 1.1em; - padding-right: 5px; + padding: 0 5px 0 0; +} + +.rtl label { + padding: 0 0 0 5px; } label input { @@ -471,20 +540,33 @@ label img { } fieldset.quick, p.quick { - margin: 0 0 5px 0; - padding: 5px 0 0 0; + margin: 0 0 5px; + padding: 5px 0 0; border: none; background-color: transparent; text-align: right; font-size: 1.1em; } +.rtl fieldset.quick, .rtl p.quick { + text-align: left; +} + fieldset.quick legend { display: none; } fieldset.tabulated { - background-color: #DADFE4; +/* background-color: #DADFE4;*/ + background: none; + margin: 0; + padding: 0; + padding-top: 5px; + border: 0; +} + +fieldset.tabulated legend { + display: none; } fieldset.nobg { @@ -533,11 +615,16 @@ dt { width: auto; } -dd { color: #000; } -dd + dd { padding-top: 5px; } -dt span { padding-right: 5px; } +.rtl dt { + float: right; +} + +dd { color: #000;} +dd + dd { padding-top: 5px;} +dt span { padding: 0 5px 0 0;} +.rtl dt span { padding: 0 0 0 5px;} -dt .explain { font-style: italic; } +dt .explain { font-style: italic;} dt label { font-size: 100%; @@ -545,12 +632,20 @@ dt label { font-weight: bold; } +.rtl dt label { + text-align: right; +} + dd label { white-space: nowrap; - margin-right: 10px; + margin: 0 10px 0 0; } -html>body dd label input { vertical-align: text-bottom; } /* Tweak for Moz to align checkboxes/radio buttons nicely */ +.rtl dd label { + margin: 0 0 0 10px; +} + +html>body dd label input { vertical-align: text-bottom;} /* Tweak for Moz to align checkboxes/radio buttons nicely */ dd input, dd select { @@ -561,7 +656,7 @@ dd textarea { width: 100%; } -input.radio { +input.radio, input.perm_cb { width: auto !important; background-color: transparent; border: none; @@ -581,21 +676,36 @@ fieldset dl { fieldset dt { width: 45%; text-align: left; + border: none; border-right: 1px solid #CCC; padding-top: 3px; } +.rtl fieldset dt { + text-align: right; + border: none; + border-left: 1px solid #CCC; +} + fieldset dd { - margin-left: 45%; - padding-left: 5px; + margin: 0 0 0 45%; + padding: 0 0 0 5px; + border: none; border-left: 1px solid #CCC; vertical-align: top; } +.rtl fieldset dd { + margin: 0 45% 0 0; + padding: 0 5px 0 0; + border: none; + border-right: 1px solid #CCC; +} + dd.full { - margin-left: 0; + margin: 0; border: 0; - padding-left: 0; + padding: 0; padding-top: 3px; text-align: center; width: 95%; @@ -652,6 +762,13 @@ fieldset.submit-buttons legend { width: 75%; } +.rtl .inputbox { + border-left: 1px solid #D5D5C8; + border-top: 1px solid #AFAEAA; + border-right: 1px solid #AFAEAA; + border-bottom: 1px solid #D5D5C8; +} + select.inputbox { cursor: pointer; padding: 0; @@ -659,10 +776,7 @@ select.inputbox { } .inputbox:hover { - border-left: 1px solid #AFAEAA; - border-top: 1px solid #AFAEAA; - border-right: 1px solid #AFAEAA; - border-bottom: 1px solid #AFAEAA; + border: 1px solid #AFAEAA; background-color: #E9E9E2; } @@ -677,12 +791,12 @@ textarea.full { width: 99%; } -* html input.full, * html textarea.full { width: 95%; } -input.medium { width: 50%; } -input.narrow { width: 25%; } -input.tiny { width: 10%; } -input.autowidth { width: auto !important; } -.box2 .inputbox { background-color: #E9E9E9; } +* html input.full, * html textarea.full { width: 95%;} +input.medium { width: 50%;} +input.narrow { width: 25%;} +input.tiny { width: 10%;} +input.autowidth { width: auto !important;} +.box2 .inputbox { background-color: #E9E9E9;} /* Pagination @@ -696,6 +810,10 @@ input.autowidth { width: auto !important; } padding-bottom: 2px; } +.rtl .pagination { + text-align: left; +} + .pagination strong, .pagination b { font-weight: normal; @@ -761,167 +879,9 @@ a.button2, a.button2:link, a.button2:visited, a.button2:active { padding: 4px 8px; } -/* Permission related ----------------------------------------- */ - -.permissions { - margin: 15px 0 0 0; - padding: 0; - border: none; - background-color: transparent; -} - -.permissions table { - width: 100%; - /*empty-cells: hide;*/ - border: 1px solid #CCCFD3; - background-color: #FFFFFF; - padding: 1px; -} - -.permissions th { - padding: 3px 4px; - color: #FFFFFF; - background: #DDE1E4 url("../images/gradient2b.gif") bottom left repeat-x; - border-top: 1px solid #6DACD2; - border-bottom: 1px solid #327AA5; - text-align: left; - font-size: .85em; - text-transform: uppercase; -} - -.permissions td { - text-align: left; - font-size: 1.1em; - padding: 4px; - line-height: 120%; -} - -table.pmask { - border: none; - background: none; - padding: 0; -} - -table.pmask th { - background: none; - border-top: none; - text-align: center; - vertical-align: bottom; - color: #115098; - padding: 2px 0; -} - -table.pmask td { - padding: 0px; -} - -table.pmask td.name { - padding: 2px; - vertical-align: middle; -} - -.permissions th.name { - text-align: left; - width: auto; - padding-left: 4px; -} - -.permissions .entry { - text-align: left; - font-weight: normal; -} - -.permissions td.name { - text-align: left; - font-weight: bold; -} - -.permissions table.type3 { - float: right; - width: 350px; /* Setting the length of the permission view box */ - border: none; - background-color: transparent; - padding: 0; -} - -.permissions table.type3 thead th { - background-color: transparent; - border-top: none; - text-align: center; - color: #115098; - padding: 0 3px; - font-size: .9em; +input.disabled { font-weight: normal; - text-transform: none; -} - -.permissions table.type3 tbody th { - border-top: none; - text-align: left; - text-transform: none; - padding: 0; - border: none; - font-size: 1em; - font-weight: normal; - width: 100%; - vertical-align: middle; -} - -.permissions table.type3 td { - text-align: center; - padding: 1px; -} - -.permissions td.yes { - width: 20px; - background-color: #40C53D; -} - -.permissions td.never { - width: 20px; - background-color: #EC7181; -} - -.permissions td.no { - width: 20px; - background-color: transparent; -} - -/* Preset Styles ----------------------------------------- */ -.preset { - width: 60px; -} - -.preset a { - float: left; - display: block; - width: 100%; - height: 20px; - cursor: pointer; - background: transparent; -} - -.preset a:hover { - background: url("../images/arrow_down.gif") no-repeat 50% 50%; - text-decoration: none; -} - -.preset_yes { - background: #D3F3D2 url("../images/bg_hash1.gif") repeat; -} - -.preset_custom { - background: #DAE4EC url("../images/bg_hash2.gif") repeat; -} - -.preset_never { - background: #ECD7DA url("../images/bg_hash3.gif") repeat; -} - -.preset_no { - background: #ECD7DA url("../images/bg_hash4.gif") repeat; + color: #666; } /* Action Highlighting @@ -1046,6 +1006,10 @@ table.pmask td.name { padding: 0px; } +.rtl .sourcenum { + text-align: left; +} + .source { font-family: Monaco, 'Courier New', monospace; font-size: 125%; @@ -1076,3 +1040,307 @@ table.pmask td.name { .syntaxstring { color: #DD0000; } + +/* Permission interface +---------------------------------------- */ + +fieldset.perm legend { + text-transform: none; +} +fieldset.perm legend input{ + height: 1.1em; +} + +/* Permission sections */ +fieldset.perm .perm_simple { + text-align: left; + padding-top: 3px; +} + +.rtl fieldset.perm .perm_simple { + text-align: right; +} + +fieldset.perm .perm_advanced { + padding: 10px 0 0 5px; + vertical-align: top; + clear: right; +} + +.rtl fieldset.perm .perm_advanced { + padding: 10px 5px 0 0; + clear: left; +} + +fieldset.perm .perm_switch { + float: right; + font-size: 1.1em; +} + +.rtl fieldset.perm .perm_switch { + float: left; +} + +.perm_switch a { + text-decoration: underline; +} + +/* Tabbed menu */ +.perm_cat { + line-height: normal; + margin: 0 0 0 7px; + min-width: 570px; + font-size: 1em; +} + +.rtl .perm_cat { + margin: 0 7px 0 0; +} + +.perm_cat ul { + margin: 0; + padding: 0; + list-style: none; +} + +.perm_cat li { + display: inline; + margin: 0; + padding: 0; + font-size: 1em; + font-weight: bold; +} + +.perm_cat a { + float: left; + background: url("../images/bg_tabs1.gif") no-repeat 0% -35px; + margin: 0 1px 0 0; + padding: 0 0 0 6px; + text-decoration: none; + position: relative; +} + +.rtl .perm_cat a { + float: right; + margin: 0 0 0 1px; + padding: 0 6px 0 0; +} + +.perm_cat a span.tabbg { + float: left; + display: block; + background: url("../images/bg_tabs2.gif") no-repeat 100% -35px; + padding: 7px 12px 6px 6px; + color: #536482; + white-space: nowrap; +} + +.rtl .perm_cat a span.tabbg { + float: left; + padding: 7px 6px 6px 12px; +} + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +.perm_cat a span.tabbg, .rtl .perm_cat a span.tabbg { float: none;} +/* End hack */ + +.perm_cat a:hover span.tabbg { + color: #DD6900; +} + +.perm_cat .activetab a { + background-position: 0 0px; +} + +.perm_cat .activetab a span.tabbg { + background-position: 100% 0px; + padding-bottom: 7px; + color: #333333; +} + +.perm_cat a:hover { + background-position: 0 -70px; +} + +.perm_cat a:hover span.tabbg { + background-position: 100% -70px; +} + +.perm_cat .activetab a:hover span.tabbg { + color: #333333; + background-position: 100% 0px; +} + +.perm_cat .activetab a:hover { + background-position: 0 0px; +} + +.perm_cat a span.colour { + border: 1px solid #536482; + display: block; + float: left; + width: 10px; + height: 10px; + margin: 0 5px 0 0; +} + +.rtl .perm_cat a span.colour { + float: right; + margin: 0 0 0 5px; +} + +.perm_cat .activetab span.colour { + border-color: #333333; +} + +.perm_cat a:hover span.colour { + border-color: #DD6900; +} + +.perm_cat .activetab a:hover span.colour { + border-color: #333333; +} + +/* Permission preset colours */ +.perm_preset_yes span.colour, +.yes { + background-color: #86F786; +} + +.perm_preset_custom span.colour { + background-color: #B2BBDD; +} + +.perm_preset_never span.colour { + background-color: #DD0000; +} + +.perm_preset_no span.colour, +.never { + background-color: #EFB0B2; +} + +/* Pemrission panel +---------------------------------------- */ +.perm_panel { + float: left; + background-color: #FFF; + width: 100%; + border: 1px solid #A9B8C2; + margin-top: -1px; +} + +.rtl .perm_panel { + float: right; +} + +.perm_panel span.corners-top { + background-image: url("../images/corners_left2.gif"); +} + +.perm_panel span.corners-top span { + background-image: url("../images/corners_right2.gif"); +} + +.perm_panel span.corners-bottom { + background-image: url("../images/corners_left2.gif"); +} + +.perm_panel span.corners-bottom span { + background-image: url("../images/corners_right2.gif"); +} + +.perm_panel span.corners-top, .perm_panel span.corners-bottom, +.perm_panel span.corners-top span, .perm_panel span.corners-bottom span { + font-size: 1px; + line-height: 1px; + display: block; + height: 5px; + background-repeat: no-repeat; +} + +.perm_panel span.corners-top { + background-image: url("../images/corners_left2.gif"); + background-position: 0 0; + margin: 0 0; +} + +.perm_panel span.corners-top span { + background-image: url("../images/corners_right2.gif"); + background-position: 100% 0; +} + +.perm_panel span.corners-bottom { + background-image: url("../images/corners_left2.gif"); + background-position: 0 100%; + margin: 0 0; + clear: both; +} + +.perm_panel span.corners-bottom span { + background-image: url("../images/corners_right2.gif"); + background-position: 100% 100%; +} + +/* Permission table +---------------------------------------- */ +.perm_panel .tablewrap { + margin: 0 10px; +} + +.perm_panel table { + width: 100%; +} + +.perm_panel th { + text-transform: none; +} + +.perm_panel th.value { + text-align: center; +} + +.perm_panel th.name { + text-align: left; + width: auto; + text-transform: none; +} + +.rtl .perm_panel th.name { + text-align: right; +} + +.perm_panel th.permission_name { + border: none; + color: #536482; + font-weight: normal; +} + +.perm_panel th.permission_name a.trace { + display: inline; +} + +.perm_panel th.row3 { + background-image: none; + background-color: #D1D7DC; +} + +.perm_panel th.row4 { + background-image: none; + background-color: #E4E8EB; +} + +.perm_panel th a:link, .perm_panel th a:hover, .perm_panel th a:visited { + display: block; + color: #FFA34F; + text-decoration: underline; +} + +.perm_panel td { + padding: 0; + text-align: center; +} + +.perm_panel td label { + display: block; +} diff --git a/phpBB/adm/style/editor.js b/phpBB/adm/style/editor.js index 54e7e61f3a..2ef2853ed3 100644 --- a/phpBB/adm/style/editor.js +++ b/phpBB/adm/style/editor.js @@ -13,10 +13,10 @@ var clientPC = navigator.userAgent.toLowerCase(); // Get client info var clientVer = parseInt(navigator.appVersion); // Get browser version var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1)); -var is_nav = ((clientPC.indexOf('mozilla') != -1) && (clientPC.indexOf('spoofer') == -1) && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera') == -1) && (clientPC.indexOf('webtv') == -1) && (clientPC.indexOf('hotjava') == -1)); - var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1)); -var is_mac = (clientPC.indexOf('mac') != -1); + +var baseHeight; +window.onload = initInsertions; /** * Shows the help messages in the helpline window @@ -27,45 +27,20 @@ function helpline(help) } /** -* Replacement for arrayname.length property -*/ -function getarraysize(thearray) +* Fix a bug involving the TextRange object. From +* http://www.frostjedi.com/terra/scripts/demo/caretBug.html +*/ +function initInsertions() { - for (i = 0; i < thearray.length; i++) + var textarea = document.forms[form_name].elements[text_name]; + textarea.focus(); + if (is_ie && typeof(baseHeight) != 'number') { - if (typeof thearray[i] == 'undefined' || thearray[i] == '' || thearray[i] == null) - { - return i; - } + baseHeight = document.selection.createRange().duplicate().boundingHeight; } - - return thearray.length; } /** -* Replacement for arrayname.push(value) not implemented in IE until version 5.5 -* Appends element to the array -*/ -function arraypush(thearray,value) -{ - thearray[getarraysize(thearray)] = value; -} - -/** -* Replacement for arrayname.pop() not implemented in IE until version 5.5 -* Removes and returns the last element of an array -*/ -function arraypop(thearray) -{ - thearraysize = getarraysize(thearray); - retval = thearray[thearraysize - 1]; - delete thearray[thearraysize - 1]; - - return retval; -} - - -/** * bbstyle */ function bbstyle(bbnumber) @@ -168,6 +143,11 @@ function insert_text(text, spaces, popup) else if (textarea.createTextRange && textarea.caretPos) { + if (baseHeight != textarea.caretPos.boundingHeight) + { + textarea.focus(); + storeCaret(textarea); + } var caret_pos = textarea.caretPos; caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; diff --git a/phpBB/adm/style/install_convert.html b/phpBB/adm/style/install_convert.html index 0e3da86ae5..068a8f230e 100755 --- a/phpBB/adm/style/install_convert.html +++ b/phpBB/adm/style/install_convert.html @@ -1,100 +1,125 @@ <!-- INCLUDE install_header.html --> -<form id="install_convert" method="post" action="{U_ACTION}"> - -<h2>{TITLE}</h2> -<p>{BODY}</p> - -<!-- IF S_LIST --> - <table cellspacing="1"> - <caption>{L_AVAILABLE_CONVERTORS}</caption> - <col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" /> - <thead> - <tr> - <th>{L_SOFTWARE}</th> - <th>{L_VERSION}</th> - <th>{L_AUTHOR}</th> - <th>{L_OPTIONS}</th> - </tr> - </thead> - <tbody> - <!-- IF .convertors --> - <!-- BEGIN convertors --> - <tr> - <td>{convertors.SOFTWARE}</td> - <td>{convertors.VERSION}</td> - <td>{convertors.AUTHOR}</td> - <td><a href="{convertors.U_CONVERT}">{L_CONVERT}</a></td> - </tr> - <!-- END convertors --> - <!-- ELSE --> - <tr> - <td>{L_NO_CONVERTORS}</td> - <td>-</td> - <td>-</td> - <td>-</td> - </tr> - <!-- ENDIF --> - </tbody> - </table> -<!-- ENDIF --> +<!-- IF S_NOT_INSTALLED --> -<!-- IF .checks --> - <fieldset> + <h1>{TITLE}</h1> - <!-- BEGIN checks --> - <!-- IF checks.S_LEGEND --> - <!-- IF not checks.S_FIRST_ROW --> - </fieldset> + <p>{BODY}</p> - <fieldset> - <!-- ENDIF --> - <legend>{checks.LEGEND}</legend> - <!-- IF checks.LEGEND_EXPLAIN --><p>{checks.LEGEND_EXPLAIN}</p><!-- ENDIF --> - <!-- ELSE --> +<!-- ELSE --> - <dl> - <dt>{checks.TITLE}:</label><!-- IF checks.S_EXPLAIN --><br /><span class="explain">{checks.TITLE_EXPLAIN}</span><!-- ENDIF --></dt> - <dd>{checks.RESULT}</dd> - </dl> + <form id="install_convert" method="post" action="{U_ACTION}"> + + <h1>{TITLE}</h1> + <p>{BODY}</p> + + <!-- IF S_LIST --> + <table cellspacing="1"> + <caption>{L_AVAILABLE_CONVERTORS}</caption> + <col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" /> + <thead> + <tr> + <th>{L_SOFTWARE}</th> + <th>{L_VERSION}</th> + <th>{L_AUTHOR}</th> + <th>{L_OPTIONS}</th> + </tr> + </thead> + <tbody> + <!-- IF .convertors --> + <!-- BEGIN convertors --> + <tr> + <td>{convertors.SOFTWARE}</td> + <td>{convertors.VERSION}</td> + <td>{convertors.AUTHOR}</td> + <td><a href="{convertors.U_CONVERT}">{L_CONVERT}</a></td> + </tr> + <!-- END convertors --> + <!-- ELSE --> + <tr> + <td>{L_NO_CONVERTORS}</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> <!-- ENDIF --> - <!-- END checks --> + </tbody> + </table> + <!-- ENDIF --> - </fieldset> -<!-- ENDIF --> + <!-- IF S_CONTINUE --> + </form> -<!-- IF .options --> - <fieldset> + <fieldset class="submit-buttons"> + <form method="post" action="{U_NEW_ACTION}"> + <input class="button1" type="submit" name="submit_new" value="{L_NEW}" /> + </form> + <br /> + <form method="post" action="{U_CONTINUE_ACTION}"> + <input class="button1" type="submit" name="submit_cont" value="{L_CONTINUE}" /> + </form> + </fieldset> - <!-- BEGIN options --> - <!-- IF options.S_LEGEND --> - <!-- IF not options.S_FIRST_ROW --> + <form method="post" action="{U_ACTION}"> + <!-- ENDIF --> + + <!-- IF .checks --> + <fieldset> + + <!-- BEGIN checks --> + <!-- IF checks.S_LEGEND --> + <!-- IF not checks.S_FIRST_ROW --> </fieldset> - + <fieldset> + <!-- ENDIF --> + <legend>{checks.LEGEND}</legend> + <!-- IF checks.LEGEND_EXPLAIN --><p>{checks.LEGEND_EXPLAIN}</p><!-- ENDIF --> + <!-- ELSE --> + + <dl> + <dt>{checks.TITLE}:</label><!-- IF checks.S_EXPLAIN --><br /><span class="explain">{checks.TITLE_EXPLAIN}</span><!-- ENDIF --></dt> + <dd>{checks.RESULT}</dd> + </dl> <!-- ENDIF --> - <legend>{options.LEGEND}</legend> - <!-- ELSE --> + <!-- END checks --> - <dl> - <dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span class="explain">{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt> - <dd>{options.CONTENT}</dd> - </dl> + </fieldset> + <!-- ENDIF --> - <!-- ENDIF --> - <!-- END options --> + <!-- IF .options --> + <fieldset> - </fieldset> -<!-- ENDIF --> + <!-- BEGIN options --> + <!-- IF options.S_LEGEND --> + <!-- IF not options.S_FIRST_ROW --> + </fieldset> + + <fieldset> + <!-- ENDIF --> + <legend>{options.LEGEND}</legend> + <!-- ELSE --> -<!-- IF L_SUBMIT --> - <fieldset class="submit-buttons"> - <!-- IF L_MESSAGE --><p>{L_MESSAGE}</p><!-- ENDIF --> - {S_HIDDEN} - <!-- IF L_SUBMIT --><input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /><!-- ENDIF --> - </fieldset> -<!-- ENDIF --> + <dl> + <dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span class="explain">{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt> + <dd>{options.CONTENT}</dd> + </dl> -</form> + <!-- ENDIF --> + <!-- END options --> + + </fieldset> + <!-- ENDIF --> + + <!-- IF L_SUBMIT --> + <fieldset class="submit-buttons"> + <!-- IF L_MESSAGE --><p>{L_MESSAGE}</p><!-- ENDIF --> + {S_HIDDEN} + <!-- IF L_SUBMIT --><input class="button1<!-- IF S_REFRESH --> disabled<!-- ENDIF -->" type="submit" id="submit" <!-- IF S_REFRESH -->disabled="disabled" <!-- ELSE --> onclick="this.className = 'button1 disabled';" onsubmit="this.disabled = 'disabled';" <!-- ENDIF -->name="submit" value="{L_SUBMIT}" /><!-- ENDIF --> + </fieldset> + <!-- ENDIF --> + + </form> +<!-- ENDIF --> <!-- INCLUDE install_footer.html -->
\ No newline at end of file diff --git a/phpBB/adm/style/install_install.html b/phpBB/adm/style/install_install.html index 91a7f25480..075d026d95 100755 --- a/phpBB/adm/style/install_install.html +++ b/phpBB/adm/style/install_install.html @@ -2,7 +2,7 @@ <form id="install_install" method="post" action="{U_ACTION}"> -<!-- IF TITLE --><h2>{TITLE}</h2><!-- ENDIF --> +<!-- IF TITLE --><h1>{TITLE}</h1><!-- ENDIF --> <!-- IF BODY --><p>{BODY}</p><!-- ENDIF --> <!-- IF .checks --> @@ -54,7 +54,7 @@ <!-- ENDIF --> <!-- IF S_SHOW_DOWNLOAD --> - <h2>{L_DL_CONFIG}</h2> + <h1>{L_DL_CONFIG}</h1> <p>{L_DL_CONFIG_EXPLAIN}</p> <fieldset class="submit-buttons"> @@ -68,7 +68,7 @@ <fieldset class="submit-buttons"> <legend>{L_SUBMIT}</legend> {S_HIDDEN} - <!-- IF L_SUBMIT --><input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /><!-- ENDIF --> + <!-- IF L_SUBMIT --><input class="button1" type="submit" id="submit" onclick="this.className = 'button1 disabled';" onsubmit="this.disabled = 'disabled';" name="submit" value="{L_SUBMIT}" /><!-- ENDIF --> </fieldset> <!-- ENDIF --> diff --git a/phpBB/adm/style/install_main.html b/phpBB/adm/style/install_main.html index 9d125a42eb..2c318bfd65 100755 --- a/phpBB/adm/style/install_main.html +++ b/phpBB/adm/style/install_main.html @@ -1,6 +1,6 @@ <!-- INCLUDE install_header.html --> - <h2>{TITLE}</h2> + <h1>{TITLE}</h1> <p>{BODY}</p> <!-- INCLUDE install_footer.html -->
\ No newline at end of file diff --git a/phpBB/adm/style/install_update.html b/phpBB/adm/style/install_update.html index 5cdf2eeea0..a948ceb3fc 100644 --- a/phpBB/adm/style/install_update.html +++ b/phpBB/adm/style/install_update.html @@ -2,11 +2,11 @@ <script type="text/javascript"> <!-- -function popup(url, width, height) -{ - window.open(url.replace(/&/g, '&'), '_popup', 'height=' + height + ',resizable=yes,scrollbars=yes,width=' + width); - return false; -} + function popup(url, width, height) + { + window.open(url.replace(/&/g, '&'), 'diff', 'height=' + height + ',resizable=yes,scrollbars=yes,width=' + width); + return false; + } //--> </script> @@ -71,14 +71,16 @@ function popup(url, width, height) </fieldset> <!-- IF not S_UP_TO_DATE --> - <form id="install_update" method="post" action="{U_ACTION}"> + + <form id="install_dbupdate" method="post" action="{U_DB_UPDATE_ACTION}"> <fieldset class="submit-buttons"> - <p>{L_CHECK_FILES_EXPLAIN}</p> - <input class="button1" type="submit" name="submit" value="{L_CHECK_FILES}" /> + <p>{L_UPDATE_DATABASE_EXPLAIN}</p> + <input class="button1" type="submit" name="db_update" value="{L_UPDATE_DATABASE}" /> </fieldset> </form> + <!-- ELSE --> <form id="install_update" method="post" action="{U_ACTION}"> @@ -90,90 +92,147 @@ function popup(url, width, height) </form> <!-- ENDIF --> -<!-- ELSEIF S_FILE_CHECK --> +<!-- ELSEIF S_DB_UPDATE --> - <h1>{L_COLLECTED_INFORMATION}</h1> + <!-- IF not S_DB_UPDATE_FINISHED --> - <p>{L_COLLECTED_INFORMATION_EXPLAIN}</p> + <h1>{L_PERFORM_DATABASE_UPDATE}</h1> - <!-- IF S_NO_UPDATE_FILES --> - <div class="errorbox"> - <h3>{L_NO_UPDATE_FILES}</h3> + <p> + {L_PERFORM_DATABASE_UPDATE_EXPLAIN}<br /> + <br /> + <a href="{U_DB_UPDATE}" target="update"><strong>» {L_RUN_DATABASE_SCRIPT} «</strong></a> + </p> - <p>{L_NO_UPDATE_FILES_EXPLAIN}</p><br /> + <br /><br /> - <strong>{NO_UPDATE_FILES}</strong> - - </div> - <!-- ENDIF --> + <form id="install_dbupdate" method="post" action="{U_DB_UPDATE_ACTION}"> - <form id="install_update" method="post" action="{U_UPDATE_ACTION}"> + <fieldset class="submit-buttons"> + <input class="button1" type="submit" name="db_update" value="{L_CHECK_UPDATE_DATABASE}" /> + </fieldset> - <!-- IF .files --> - <!-- BEGIN files --> - <!-- IF files.S_STATUS --> - <!-- IF not files.S_FIRST_ROW --> - </fieldset> - <!-- ENDIF --> + </form> - <h2>{files.TITLE}</h2> + <!-- ELSE --> - <p>{files.EXPLAIN}</p> + <h1>{L_UPDATE_DB_SUCCESS}</h1> - <fieldset> - <legend><img src="{T_IMAGE_PATH}file_{files.STATUS}.gif" alt="{files.L_STATUS}" /></legend> - <!-- ELSE --> - <dl> - <!-- IF files.STATUS eq 'up_to_date' --> - <dd class="full" style="text-align: left;"><strong>{files.FILENAME}</strong></dd> - <!-- ELSE --> - <dt> - <strong>{files.FILENAME}</strong> - <!-- IF files.S_CUSTOM --> - <br /><span><em>{L_FILE_USED}: </em>{files.CUSTOM_ORIGINAL}</span> - <!-- ENDIF --> - <!-- IF files.NUM_CONFLICTS --> - <br /><span>{L_NUM_CONFLICTS}: {files.NUM_CONFLICTS}</span> - <!-- ENDIF --> - </dt> - <dd>[ <a href="{files.U_SHOW_DIFF}" onclick="popup('{files.U_SHOW_DIFF}', 700, 500); return false;">{files.L_SHOW_DIFF}</a> ]</dd> - <!-- IF files.S_CUSTOM --> - <dd><input type="checkbox" name="no_update[]" value="{files.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</dd> - <!-- ENDIF --> - <!-- IF files.STATUS eq 'conflict' --> - <dd><input type="radio" class="radio" name="conflict[{files.FILENAME}]" value="1" checked="checked" /> {L_MERGE_NEW_FILE_OPTION}<br /><input type="radio" class="radio" name="conflict[{files.FILENAME}]" value="2" /> {L_MERGE_MOD_FILE_OPTION}</dd> - <!-- ENDIF --> - <!-- ENDIF --> - </dl> - <!-- ENDIF --> - <!-- END files --> + <br /><br /> + <form id="install_update" method="post" action="{U_ACTION}"> + + <fieldset class="submit-buttons"> + <p>{L_CHECK_FILES_EXPLAIN}</p> + <input class="button1" type="submit" name="submit" value="{L_CHECK_FILES}" /> </fieldset> - <!-- ENDIF --> - <br /> + </form> - <fieldset class="quick"> - <input class="button1" type="submit" name="check_again" value="{L_CHECK_FILES_AGAIN}" /> - </fieldset> + <!-- ENDIF --> - <br /> +<!-- ELSEIF S_FILE_CHECK --> <!-- IF S_ALL_UP_TO_DATE --> - </form> - <!-- IF S_VERSION_UP_TO_DATE --> - <p>{L_NO_DATABASE_UPDATE_NEEDED}</p> - <!-- ELSE --> - <form id="install_dbupdate" method="post" action="{U_DB_UPDATE_ACTION}"> + <div class="successbox"> + <h3>{L_UPDATE_SUCCESS}</h3> + <p>{L_ALL_FILES_UP_TO_DATE}</p> + </div> + + <!-- ELSE --> + <h1>{L_COLLECTED_INFORMATION}</h1> + + <p>{L_COLLECTED_INFORMATION_EXPLAIN}</p> + + <!-- IF S_NO_UPDATE_FILES --> + <div class="errorbox"> + <h3>{L_NO_UPDATE_FILES}</h3> + + <p>{L_NO_UPDATE_FILES_EXPLAIN}</p><br /> + + <strong>{NO_UPDATE_FILES}</strong> + + </div> + <!-- ENDIF --> + + <form id="install_update" method="post" action="{U_UPDATE_ACTION}"> + + <!-- IF .files --> + <!-- BEGIN files --> + <!-- IF files.S_STATUS --> + <!-- IF not files.S_FIRST_ROW --> + </fieldset> + <!-- ENDIF --> + + <h2>{files.TITLE}</h2> + + <p>{files.EXPLAIN}</p> + + <fieldset> + <legend><img src="{T_IMAGE_PATH}file_{files.STATUS}.gif" alt="{files.L_STATUS}" /></legend> + <!-- ELSE --> + <dl> + <!-- IF files.STATUS eq 'up_to_date' --> + <dd class="full" style="text-align: left;"><strong>{files.FILENAME}</strong></dd> + <!-- ELSE --> + <dt style="width: 60%;"> + <strong><!-- IF files.DIR_PART -->{files.DIR_PART}<br /><!-- ENDIF -->{files.FILE_PART}</strong> + <!-- IF files.S_CUSTOM --> + <br /><span><em>{L_FILE_USED}: </em>{files.CUSTOM_ORIGINAL}</span> + <!-- ENDIF --> + <!-- IF files.NUM_CONFLICTS --> + <br /><span>{L_NUM_CONFLICTS}: {files.NUM_CONFLICTS}</span> + <!-- ENDIF --> + </dt> + <dd style="margin-left: 60%;"><!-- IF not files.S_BINARY -->[ <a href="{files.U_SHOW_DIFF}" onclick="popup('{files.U_SHOW_DIFF}', 700, 500); return false;">{files.L_SHOW_DIFF}</a> ]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF --></dd> + <!-- IF files.S_CUSTOM --> + <dd style="margin-left: 60%;"><input type="checkbox" name="no_update[]" value="{files.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</dd> + <!-- ENDIF --> + <!-- IF files.STATUS eq 'conflict' --> + </dl> + <dl> + <dt style="width: 60%"><input type="radio" class="radio" name="conflict[{files.FILENAME}]" value="1" checked="checked" /> {L_MERGE_NO_MERGE_NEW_OPTION}</dt> + <dd style="margin-left: 60%;">[<a href="{files.U_VIEW_NO_MERGE_NEW}" onclick="popup('{files.U_VIEW_NO_MERGE_NEW}', 700, 500); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd> + </dl> + <dl> + <dt style="width: 60%"><input type="radio" class="radio" name="conflict[{files.FILENAME}]" value="2" /> {L_MERGE_NO_MERGE_MOD_OPTION}</dt> + <dd style="margin-left: 60%;">[<a href="{files.U_VIEW_NO_MERGE_MOD}" onclick="popup('{files.U_VIEW_NO_MERGE_MOD}', 700, 500); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd> + </dl> + <!-- IF not files.S_BINARY --> + <dl> + <dt style="width: 60%"><input type="radio" class="radio" name="conflict[{files.FILENAME}]" value="3" /> {L_MERGE_NEW_FILE_OPTION}</dt> + <dd style="margin-left: 60%;">[<a href="{files.U_VIEW_NEW_FILE}" onclick="popup('{files.U_VIEW_NEW_FILE}', 700, 500); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd> + </dl> + <dl> + <dt style="width: 60%"><input type="radio" class="radio" name="conflict[{files.FILENAME}]" value="4" /> {L_MERGE_MOD_FILE_OPTION}</dt> + <dd style="margin-left: 60%;">[<a href="{files.U_VIEW_MOD_FILE}" onclick="popup('{files.U_VIEW_MOD_FILE}', 700, 500); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd> + </dl> + <!-- ENDIF --> + <!-- IF not files.S_LAST_ROW --> + </fieldset> + + <fieldset> + <legend><img src="{T_IMAGE_PATH}file_{files.STATUS}.gif" alt="{files.L_STATUS}" /></legend> + <!-- ENDIF --> + + <!-- ENDIF --> + <!-- ENDIF --> + <!-- IF files.STATUS neq 'conflict' --></dl><!-- ENDIF --> + <!-- ENDIF --> + <!-- END files --> - <fieldset class="submit-buttons"> - <p>{L_ALL_FILES_UP_TO_DATE}</p> - <input class="button1" type="submit" name="db_update" value="{L_UPDATE_DATABASE}" /> </fieldset> <!-- ENDIF --> - <!-- ELSE --> + <br /> + + <fieldset class="quick"> + <input class="button1" type="submit" name="check_again" value="{L_CHECK_FILES_AGAIN}" /> + </fieldset> + + <br /> + <h1>{L_UPDATE_METHOD}</h1> <p>{L_UPDATE_METHOD_EXPLAIN}</p> @@ -182,9 +241,9 @@ function popup(url, width, height) <input class="button1" type="submit" name="ftp_upload" value="{L_FTP_UPDATE_METHOD}" /> <input class="button1" type="submit" name="download" value="{L_DOWNLOAD_UPDATE_METHOD}" /> </fieldset> - <!-- ENDIF --> + </form> - </form> + <!-- ENDIF --> <!-- ELSEIF S_DOWNLOAD_FILES --> @@ -258,7 +317,7 @@ function popup(url, width, height) <!-- BEGIN data --> <dl> <dt><label for="{data.DATA}">{data.NAME}:</label><br /><span>{data.EXPLAIN}</span></dt> - <dd><input type="text" id="{data.DATA}" name="{data.DATA}" value="{data.DEFAULT}" /></dd> + <dd><input type="<!-- IF data.DATA == 'password' -->password<!-- ELSE -->text<!-- ENDIF -->" id="{data.DATA}" name="{data.DATA}" value="{data.DEFAULT}" /></dd> </dl> <!-- END data --> </fieldset> @@ -272,16 +331,6 @@ function popup(url, width, height) </form> -<!-- ELSEIF S_DB_UPDATE --> - - <h1>{L_PERFORM_DATABASE_UPDATE}</h1> - - <p> - {L_PERFORM_DATABASE_UPDATE_EXPLAIN}<br /> - <br /> - <a href="{U_DB_UPDATE}"><strong>» {L_RUN_DATABASE_SCRIPT} «</strong></a> - </p> - <!-- ENDIF --> <!-- INCLUDE install_footer.html --> diff --git a/phpBB/adm/style/install_update_diff.html b/phpBB/adm/style/install_update_diff.html index cdc0d8cc21..58b9aa833f 100644 --- a/phpBB/adm/style/install_update_diff.html +++ b/phpBB/adm/style/install_update_diff.html @@ -11,6 +11,26 @@ <link href="../adm/style/admin.css" rel="stylesheet" type="text/css" media="screen" /> +<script type="text/javascript"> +<!-- +function resize_panel() +{ + var block = document.getElementById('codepanel'); + var height; + + if (window.innerHeight) + { + height = window.innerHeight - 150; + block.style.height = height + 'px'; + } + else + { + //whatever IE needs to do this + } +} +--> +</script> + <style type="text/css"> <!-- @@ -22,13 +42,23 @@ width: 99%; } -<!-- IF not S_DIFF_NEW_FILE --> +<!-- IF DIFF_MODE neq 'side_by_side' and DIFF_MODE neq 'raw' --> +div#codepanel { + overflow: auto; + width: 100%; + height: 350px; +} +<!-- ELSE --> +div#codepanel { + background-color: #eee; +} +<!-- ENDIF --> +<!-- IF not IS_DIFF_NEW_FILE --> /** * Unified Diff */ .file { - border: 1px solid #eee; line-height: .7em; } @@ -69,8 +99,11 @@ * Column Diff */ table.hrdiff { - width: 99%; margin: 0 0 8px 5px; + width: 100%; + overflow: hidden; + border-bottom: 1px solid #999; + table-layout: fixed; } table.hrdiff th { @@ -89,9 +122,30 @@ table.hrdiff thead th { padding: 2px; } +table.hrdiff tr:first-child th { + border-top: none; +} + table.hrdiff tbody th { padding: 2em 1px 1px 1px; font-size: 80%; + border-top: 1px solid #999; +} + +table.hrdiff tbody td.old { + border-left: 1px solid #999; + border-right: 1px solid #999; +} +table.hrdiff tbody td.new { + border-right: 1px solid #999; +} + +table.hrdiff td pre { + overflow: auto; + display: block; + width: 100%; + overflow: auto; + display: block; } table.hrdiff .unmodified { @@ -144,11 +198,17 @@ table.hrdiff caption span { </head> + +<!-- IF DIFF_MODE neq 'side_by_side' and DIFF_MODE neq 'raw' --> +<body onresize="resize_panel();" onload="resize_panel();"> +<!-- ELSE --> <body> +<!-- ENDIF --> <div id="wrap"> <div id="page-header"> <!-- IF S_DIFF_NEW_FILE --> + <h1>{L_VIEWING_FILE_CONTENTS}</h1> <!-- ELSE --> <h1>{L_VIEWING_FILE_DIFF}</h1> @@ -158,24 +218,27 @@ table.hrdiff caption span { <form method="post"> <label for="diff_mode">{L_SELECT_DIFF_MODE}:</label> <select name="diff_mode" id="diff_mode">{S_DIFF_MODE_OPTIONS}</select> + <input class="button1" type="submit" id="submit" name="submit" value="{L_CHANGE}" /> </form> <!-- ENDIF --> </div> <div id="page-body"> - <div class="panel"> + <div class="panel" id="codepanel"> <span class="corners-top"><span></span></span> <div id="content"> <div id="main"> + <!-- IF S_DIFF_CONFLICT_FILE --> <div style="float: right;"><strong>{L_NUM_CONFLICTS}: {NUM_CONFLICTS}</strong></div> <!-- ENDIF --> - {DIFF_CONTENT} + {DIFF_CONTENT} </div> </div> <span class="corners-bottom"><span></span></span> </div> </div> + <!-- INCLUDE simple_footer.html -->
\ No newline at end of file diff --git a/phpBB/adm/style/overall_header.html b/phpBB/adm/style/overall_header.html index d5b3ff5f7e..ea1faef222 100644 --- a/phpBB/adm/style/overall_header.html +++ b/phpBB/adm/style/overall_header.html @@ -93,7 +93,7 @@ function trace(link) function find_username() { <!-- IF UA_FIND_USERNAME --> - window.open('{UA_FIND_USERNAME}', '_usersearch', 'height=500, resizable=yes, scrollbars=yes, width=740'); + window.open('{UA_FIND_USERNAME}', '_usersearch', 'height=570, resizable=yes, scrollbars=yes, width=760'); <!-- ENDIF --> return false; } @@ -113,7 +113,7 @@ function swatch(field) </script> </head> -<body> +<body class="{S_CONTENT_DIRECTION}"> <div id="wrap"> <div id="page-header"> <h1>{L_ADMIN_PANEL}</h1> diff --git a/phpBB/adm/style/permission_mask.html b/phpBB/adm/style/permission_mask.html index 51b5bf9c63..b3a18093bb 100644 --- a/phpBB/adm/style/permission_mask.html +++ b/phpBB/adm/style/permission_mask.html @@ -5,251 +5,126 @@ var active_fmask = '0'; var active_cat = '0'; + var id = '000'; + var role_options = new Array(); <!-- IF S_ROLE_JS_ARRAY --> {S_ROLE_JS_ARRAY} <!-- ENDIF --> - - /** - * Show/hide option panels - * value = suffix for ID to show - */ - function swap_options(pmask, fmask, cat) - { - id = pmask + fmask + cat; - active_option = active_pmask + active_fmask + active_cat; - - if (id == active_option) - { - return; - } - - // Hide active options - dE('options' + active_option, -1); - dE('head' + active_pmask + active_fmask, 1, 'inline'); - dE('apply' + active_pmask + active_fmask, -1); - - // Display container - dE('options' + id, 1); - dE('head' + pmask + fmask, -1, 'inline'); - dE('apply' + pmask + fmask, 1); - - active_pmask = pmask; - active_fmask = fmask; - active_cat = cat; - } - - /** - * Mark all radio buttons in one panel - * id = table ID container, s = status ['y'/'u'/'n'] - */ - function mark_options(id, s) - { - var t = document.getElementById(id); - - if (!t) - { - return; - } - - var rb = t.getElementsByTagName('input'); - - for (var r = 0; r < rb.length; r++ ) - { - if (rb[r].id.substr(rb[r].id.length-1) == s) - { - rb[r].checked = true; - } - } - } - - /** - * Mark one radio button in one panel - * id = table ID container, field_name = the auth option, s = status ['y'/'u'/'n'] - */ - function mark_one_option(id, field_name, s) - { - var t = document.getElementById(id); - - if (!t) - { - return; - } - - var rb = t.getElementsByTagName('input'); - - for (var r = 0; r < rb.length; r++ ) - { - if (rb[r].id.substr(rb[r].id.length-field_name.length-3, field_name.length) == field_name && rb[r].id.substr(rb[r].id.length-1) == s) - { - rb[r].checked = true; - } - } - } - - /** - * Reset role dropdown field to Select role... if an option gets changed - */ - function reset_role(id) - { - var t = document.getElementById(id); - - if (!t) - { - return; - } - - t.options[0].selected = true; - } - - /** - * Load role and set options accordingly - */ - function set_role_settings(role_id, target_id) - { - settings = role_options[role_id]; - - if (!settings) - { - return; - } - - // Mark all options to no (unset) first... - mark_options(target_id, 'u'); - - for (var r in settings) - { - mark_one_option(target_id, r, (settings[r] == 1) ? 'y' : 'n'); - } - } - //--> </script> +<script type="text/javascript" src="style/permissions.js"></script> + <!-- BEGIN p_mask --> <div class="clearfix"></div> +<h3>{p_mask.NAME}<!-- IF p_mask.S_LOCAL --> <span class="small"> [{p_mask.L_ACL_TYPE}]</span><!-- ENDIF --></h3> -<fieldset class="permissions"> - <!-- IF p_mask.USER_GROUPS_DEFAULT or p_mask.USER_GROUPS_CUSTOM --> - <br /> - <p> - <!-- IF p_mask.USER_GROUPS_DEFAULT --><b>{p_mask.NAME}</b> {L_USER_IS_MEMBER_OF_DEFAULT}: <b>{p_mask.USER_GROUPS_DEFAULT}</b><br /><!-- ENDIF --> - <!-- IF p_mask.USER_GROUPS_CUSTOM --><b>{p_mask.NAME}</b> {L_USER_IS_MEMBER_OF_CUSTOM}: <b>{p_mask.USER_GROUPS_CUSTOM}</b><!-- ENDIF --> - </p> - <!-- ENDIF --> - - <table cellspacing="1" class="pmask"> - <thead> - <tr> - <th style="text-align: left; width: 70%">{p_mask.NAME}<!-- IF p_mask.S_LOCAL --><span class="small" style="text-transform: none;"> [{p_mask.L_ACL_TYPE}]</span><!-- ENDIF --></th> - <th>{p_mask.CATEGORIES}</th> - </tr> - </thead> - <tbody> +<!-- BEGIN f_mask --> - <!-- BEGIN f_mask --> - <!-- IF p_mask.f_mask.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF --> - <td class="name"> - <table cellspacing="0" cellpadding="0" class="type2" style="background-color: transparent; border: 0;"> - <tbody> - <tr> - <td width="16"> - <span id="head{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}"<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW --> style="display: none;"<!-- ENDIF -->> - <!-- IF not p_mask.S_VIEW --><input type="checkbox" class="radio" name="inherit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" value="1" /><!-- ELSE --> <!-- ENDIF --> - </span> - </td> - <td><span>{p_mask.f_mask.PADDING}<!-- IF p_mask.f_mask.FOLDER_IMAGE --> {p_mask.f_mask.FOLDER_IMAGE} <!-- ENDIF --><a href="#" onclick="swap_options('{p_mask.S_ROW_COUNT}', '{p_mask.f_mask.S_ROW_COUNT}', '0'); return false;">{p_mask.f_mask.NAME}</a></span></td> - <td style="text-align: right;"> - <!-- IF p_mask.S_VIEW --> - - <!-- ELSE --> - <!-- IF p_mask.f_mask.S_ROLE_OPTIONS --> - <b>{L_ROLE}:</b> <select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" onchange="set_role_settings(this.options[selectedIndex].value, 'a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')">{p_mask.f_mask.S_ROLE_OPTIONS}</select> - <!-- ELSE --> - <b>{L_ROLE}:</b> {L_NO_ROLE_AVAILABLE} - <!-- ENDIF --> - <!-- ENDIF --> - </td> - </tr> - </tbody> - </table> - </td> - <!-- BEGIN category --> - <!-- IF p_mask.f_mask.category.S_YES --> - <td class="preset preset_yes"> - <!-- ELSEIF p_mask.f_mask.category.S_NEVER --> - <td class="preset preset_never"> - <!-- ELSEIF p_mask.f_mask.category.S_NO --> - <td class="preset preset_no"> - <!-- ELSE --> - <td class="preset preset_custom"> - <!-- ENDIF --> - <a href="#" onclick="swap_options('{p_mask.S_ROW_COUNT}', '{p_mask.f_mask.S_ROW_COUNT}', '{p_mask.f_mask.category.S_ROW_COUNT}'); return false;"> </a></td> - <!-- END category --> - </tr> - <tr class="row3"> - <td style="vertical-align: top;"> - <div id="apply{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" style="text-align: left; width: 98%; margin: 5px;<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW --><!-- ELSE --> display: none;<!-- ENDIF -->"> - <!-- IF not p_mask.S_VIEW --> - <div style="float: left; width: 60%;"> - <p class="small">{L_APPLY_PERMISSIONS_EXPLAIN}</p> - <input class="button1" type="submit" name="psubmit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" value="{L_APPLY_PERMISSIONS}" /> - </div> - <div style="float: right; text-align: right; width: 35%;"> - <p class="small"> - [<a href="#" onclick="mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'y'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ALL_YES}</a>]<br /> - [<a href="#" onclick="mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'n'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ALL_NEVER}</a>]<br /> - [<a href="#" onclick="mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'u'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ALL_NO}</a>] - </p> - </div> +<fieldset class="perm" id="perm{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}"> + <legend id="legend{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}"> + <!-- IF not p_mask.S_VIEW --> + <input type="checkbox" style="display: none;" class="perm_cb" name="inherit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" id="checkbox{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" value="1" onclick="toggle_opacity('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" /> + <!-- ELSE --> + <!-- ENDIF --> + + {p_mask.f_mask.NAME} + </legend> + <!-- IF not p_mask.S_VIEW --> + <div class="perm_switch"> + <a href="#" onclick="swap_options('{p_mask.S_ROW_COUNT}', '{p_mask.f_mask.S_ROW_COUNT}', '0', true); return false;">{L_ADVANCED_PERMISSIONS}</a> + </div> + <dl class="perm_simple"> + <dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}:</label></dt> + <!-- IF p_mask.f_mask.S_ROLE_OPTIONS --> + <dd style="margin-left: 20%"><select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" onchange="set_role_settings(this.options[selectedIndex].value, 'advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); init_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')">{p_mask.f_mask.S_ROLE_OPTIONS}</select></dd> <!-- ELSE --> - + <dd>{L_NO_ROLE_AVAILABLE}</dd> <!-- ENDIF --> + </dl> + <!-- ENDIF --> + + <!-- BEGIN category --> + <!-- IF p_mask.f_mask.category.S_FIRST_ROW --> + <div class="perm_advanced" id="advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}"<!-- IF not p_mask.S_VIEW --> style="display: none;"<!-- ENDIF -->> + + <div class="perm_cat"> + <ul> + <!-- ENDIF --> + + <!-- IF p_mask.f_mask.category.S_YES --> + <li class="perm_preset_yes<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}"> + <!-- ELSEIF p_mask.f_mask.category.S_NEVER --> + <li class="perm_preset_never<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}"> + <!-- ELSEIF p_mask.f_mask.category.S_NO --> + <li class="perm_preset_no<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}"> + <!-- ELSE --> + <li class="perm_preset_custom<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}"> + <!-- ENDIF --> + <a href="#" onclick="swap_options('{p_mask.S_ROW_COUNT}', '{p_mask.f_mask.S_ROW_COUNT}', '{p_mask.f_mask.category.S_ROW_COUNT}', false<!-- IF p_mask.S_VIEW -->, true<!-- ENDIF -->); return false;"><span class="tabbg"><span class="colour"></span>{category.CAT_NAME}</span></a></li> + <!-- END category --> + </ul> </div> - </td> - <td colspan="{p_mask.S_NUM_CATS}" id="a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" style="vertical-align: top; text-align: left;"> - <div style="width: 350px; height: 0; line-height: 0;"> </div> - <!-- BEGIN category --> - <table cellspacing="1" id="options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}" class="type3"<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --><!-- ELSE --> style="display: none;"<!-- ENDIF -->> + + <!-- BEGIN category --> + <div class="perm_panel" id="options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}" <!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --><!-- ELSE --> style="display: none;"<!-- ENDIF -->> + <span class="corners-top"><span></span></span> + <div class="tablewrap"> + <table id="table{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}" cellspacing="1"> + <colgroup> + <col class="permissions_name" /> + <col class="permissions_yes" /> + <col class="permissions_no" /> + <!-- IF not p_mask.S_VIEW --> + <col class="permissions_never" /> + <!-- ENDIF --> + </colgroup> <thead> <tr> - <th scope="col" style="text-align: left; padding-left: 0;"><strong>{L_ACL_SETTING} [{p_mask.f_mask.category.CAT_NAME}]</strong></th> + <th class="name" scope="col"><strong>{L_ACL_SETTING}</strong></th> <!-- IF p_mask.S_VIEW --> - <th scope="col">{L_ACL_YES}</th> - <th scope="col">{L_ACL_NEVER}</th> + <th style="width: 40px;" class="value" scope="col">{L_ACL_YES}</th> + <th style="width: 40px;" class="value" scope="col">{L_ACL_NEVER}</th> <!-- ELSE --> - <th scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'y'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ACL_YES}</a></th> - <th scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'u'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ACL_NO}</a></th> - <th scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'n'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_ACL_NEVER}</a></th> + <th class="value" scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'y'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false, 'yes'); return false;">{L_ACL_YES}</a></th> + <th class="value" scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'u'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false, 'no'); return false;">{L_ACL_NO}</a></th> + <th class="value" scope="col"><a href="#" onclick="mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'n'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false, 'never'); return false;">{L_ACL_NEVER}</a></th> <!-- ENDIF --> </tr> </thead> <tbody> <!-- BEGIN mask --> <!-- IF p_mask.f_mask.category.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF --> - <th><!-- IF p_mask.f_mask.category.mask.U_TRACE --><a href="#" onclick="trace('{p_mask.f_mask.category.mask.U_TRACE}'); return false;" title="{L_TRACE_SETTING}"><img src="images/icon_trace.gif" alt="{L_TRACE_SETTING}" /></a> <!-- ENDIF -->{p_mask.f_mask.category.mask.PERMISSION}</th> + <th class="permission_name<!-- IF p_mask.f_mask.category.mask.S_ROW_COUNT is even --> row4<!-- ELSE --> row3<!-- ENDIF -->"><!-- IF p_mask.f_mask.category.mask.U_TRACE --><a href="#" class="trace" onclick="trace('{p_mask.f_mask.category.mask.U_TRACE}'); return false;" title="{L_TRACE_SETTING}"><img src="images/icon_trace.gif" alt="{L_TRACE_SETTING}" /></a> <!-- ENDIF -->{p_mask.f_mask.category.mask.PERMISSION}</th> <!-- IF p_mask.S_VIEW --> - <td<!-- IF p_mask.f_mask.category.mask.S_YES --> class="yes"<!-- ELSE --> class="no"<!-- ENDIF -->> </td> - <td<!-- IF p_mask.f_mask.category.mask.S_NEVER --> class="never"<!-- ELSE --> class="no"<!-- ENDIF -->> </td> + <td<!-- IF p_mask.f_mask.category.mask.S_YES --> class="yes"<!-- ENDIF -->> </td> + <td<!-- IF p_mask.f_mask.category.mask.S_NEVER --> class="never"<!-- ENDIF -->></td> <!-- ELSE --> - <td class="no"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_y" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></td> - <td class="no"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_u" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></td> - <td class="no"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_n" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></td> + <td><label for="{p_mask.f_mask.category.mask.S_FIELD_NAME}_y"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false)" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_y" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></label></td> + <td><label for="{p_mask.f_mask.category.mask.S_FIELD_NAME}_u"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false)" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_u" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NO --> checked="checked"<!-- ENDIF --> value="-1" /></label></td> + <td><label for="{p_mask.f_mask.category.mask.S_FIELD_NAME}_n"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); set_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', false)" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_n" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" class="radio" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NEVER --> checked="checked"<!-- ENDIF --> value="0" /></label></td> <!-- ENDIF --> </tr> <!-- END mask --> </tbody> </table> - <!-- END category --> - </td> - </tr> - <!-- END f_mask --> - - </tbody> - </table> - + </div> + <!-- IF not p_mask.S_VIEW --> + <fieldset class="quick" style="margin-right: 11px;"> + <p class="small">{L_APPLY_PERMISSIONS_EXPLAIN}</p> + <input class="button1" type="submit" name="psubmit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" value="{L_APPLY_PERMISSIONS}" /> + <p class="small"><a href="#" onclick="reset_opacity(0, '{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="reset_opacity(1, '{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_UNMARK_ALL}</a></p> + </fieldset> + + <!-- ENDIF --> + <span class="corners-bottom"><span></span></span> + </div> + <!-- END category --> + </div> </fieldset> +<!-- END f_mask --> <!-- END p_mask --> diff --git a/phpBB/adm/style/permissions.js b/phpBB/adm/style/permissions.js new file mode 100644 index 0000000000..eb84e40435 --- /dev/null +++ b/phpBB/adm/style/permissions.js @@ -0,0 +1,359 @@ +/** +* Hide and show all checkboxes +* status = true (show boxes), false (hide boxes) +*/ +function display_checkboxes(status) +{ + var form = document.getElementById('set_permissions'); + var cb = document.getElementsByTagName('input'); + var display; + + //show + if (status) + { + display = 'inline'; + } + //hide + else + { + display = 'none'; + } + + for (var i = 0; i < cb.length; i++ ) + { + if (cb[i].className == 'perm_cb') + { + cb[i].style.display = display; + } + + } + +} + + +/** +* Change opacity of element +* e = element +* value = 0 (hidden) till 10 (fully visible) +*/ +function set_opacity(e, value) { + e.style.opacity = value/10; + + //IE opacity currently turned off, because of its astronomical stupidity + //e.style.filter = 'alpha(opacity=' + value*10 + ')'; +} + +/** +* Reset the opacity and checkboxes +* block_id = id of the element that needs to be toggled +*/ +function toggle_opacity(block_id) { + var cb = document.getElementById('checkbox' + block_id); + var fs = document.getElementById('perm' + block_id); + + if (cb.checked) + { + set_opacity(fs, 5); + } + else + { + set_opacity(fs, 10); + } +} + +/** +* Reset the opacity and checkboxes +* value = 0 (checked) and 1 (unchecked) +* except_id = id of the element not to hide +*/ +function reset_opacity(status, except_id) { + var perm = document.getElementById('set_permissions'); + var fs = perm.getElementsByTagName('fieldset'); + var opacity = 5; + + if (status) + { + opacity = 10; + } + + for (var i = 0; i < fs.length; i++ ) + { + if (fs[i].className != 'quick') + { + set_opacity(fs[i], opacity); + } + } + + if (typeof(except_id) != 'undefined') + { + set_opacity(document.getElementById('perm' + except_id), 10); + } + + //reset checkboxes too + marklist('set_permissions', 'inherit', !status); +} + + +/** +* Check whether we have a full radiobutton row of true +* index = offset for the row of inputs (0 == first row, 1 == second, 2 == third), +* rb = array of radiobuttons +*/ +function get_radio_status(index, rb) +{ + for (var i = index; i < rb.length; i = i + 3 ) + { + if (rb[i].checked != true) + { + if (i > index) + { + //at least one is true, but not all (custom) + return 2; + } + //first one is not true + return 0; + } + } + + // all radiobuttons true + return 1; +} + +/** +* Set tab colours +* id = panel the tab needs to be set for, +* init = initialising on open, +* quick = If no calculation needed, this contains the colour +*/ +function set_colours(id, init, quick) +{ + var table = document.getElementById('table' + id); + var tab = document.getElementById('tab' + id); + + if (typeof(quick) != 'undefined') + { + tab.className = 'perm_preset_' + quick + ' activetab'; + return; + } + + var rb = table.getElementsByTagName('input'); + var colour = 'custom'; + + var status = get_radio_status(0, rb); + + if (status == 1) + { + colour = 'yes'; + } + else if (status == 0) + { + // We move on to No + status = get_radio_status(1, rb); + + if (status == 1) + { + colour = 'no'; + } + else if (status == 0) + { + // We move on to Never + status = get_radio_status(2, rb); + + if (status == 1) + { + colour = 'never'; + } + } + } + + if (init) + { + tab.className = 'perm_preset_' + colour; + } + else + { + tab.className = 'perm_preset_' + colour + ' activetab'; + } +} + +/** +* Initialise advanced tab colours on first load +* block_id = block that is opened +*/ +function init_colours(block_id) +{ + var block = document.getElementById('advanced' + block_id); + var panels = block.getElementsByTagName('div'); + var tab = document.getElementById('tab' + id); + + for (var i = 0; i < panels.length; i++) + { + if(panels[i].className == 'perm_panel') + { + set_colours(panels[i].id.replace(/options/, ''), true); + } + } + + tab.className = tab.className + ' activetab'; +} + +/** +* Show/hide option panels +* value = suffix for ID to show +* adv = we are opening advanced permissions +* view = called from view permissions +*/ +function swap_options(pmask, fmask, cat, adv, view) +{ + id = pmask + fmask + cat; + active_option = active_pmask + active_fmask + active_cat; + + var old_tab = document.getElementById('tab' + active_option); + var new_tab = document.getElementById('tab' + id); + var adv_block = document.getElementById('advanced' + pmask + fmask); + + if (adv_block.style.display == 'block' && adv == true) + { + dE('advanced' + pmask + fmask, -1); + reset_opacity(1); + display_checkboxes(false); + return; + } + + // no need to set anything if we are clicking on the same tab again + if (new_tab == old_tab && !adv) + { + return; + } + + // init colours + if (adv && (pmask + fmask) != (active_pmask + active_fmask)) + { + init_colours(pmask + fmask); + display_checkboxes(true); + reset_opacity(1); + } + else if (adv) + { + //Checkbox might have been clicked, but we need full visibility + display_checkboxes(true); + reset_opacity(1); + } + + // set active tab + old_tab.className = old_tab.className.replace(/\ activetab/g, ''); + new_tab.className = new_tab.className + ' activetab'; + + if (id == active_option && adv != true) + { + return; + } + + dE('options' + active_option, -1); + + //hiding and showing the checkbox + if (document.getElementById('checkbox' + active_pmask + active_fmask)) + { + dE('checkbox' + pmask + fmask, -1); + + if ((pmask + fmask) != (active_pmask + active_fmask)) + { + document.getElementById('checkbox' + active_pmask + active_fmask).style.display = 'inline'; + } + } + + if (!view) + { + dE('advanced' + active_pmask + active_fmask, -1); + } + + if (!view) + { + dE('advanced' + pmask + fmask, 1); + } + dE('options' + id, 1); + + active_pmask = pmask; + active_fmask = fmask; + active_cat = cat; +} + +/** +* Mark all radio buttons in one panel +* id = table ID container, s = status ['y'/'u'/'n'] +*/ +function mark_options(id, s) +{ + var t = document.getElementById(id); + + if (!t) + { + return; + } + + var rb = t.getElementsByTagName('input'); + + for (var r = 0; r < rb.length; r++) + { + if (rb[r].id.substr(rb[r].id.length-1) == s) + { + rb[r].checked = true; + } + } +} + +function mark_one_option(id, field_name, s) +{ + var t = document.getElementById(id); + + if (!t) + { + return; + } + + var rb = t.getElementsByTagName('input'); + + for (var r = 0; r < rb.length; r++) + { + if (rb[r].id.substr(rb[r].id.length-field_name.length-3, field_name.length) == field_name && rb[r].id.substr(rb[r].id.length-1) == s) + { + rb[r].checked = true; + } + } +} + +/** +* Reset role dropdown field to Select role... if an option gets changed +*/ +function reset_role(id) +{ + var t = document.getElementById(id); + + if (!t) + { + return; + } + + t.options[0].selected = true; +} + +/** +* Load role and set options accordingly +*/ +function set_role_settings(role_id, target_id) +{ + settings = role_options[role_id]; + + if (!settings) + { + return; + } + + // Mark all options to no (unset) first... + mark_options(target_id, 'u'); + + for (var r in settings) + { + mark_one_option(target_id, r, (settings[r] == 1) ? 'y' : 'n'); + } +} diff --git a/phpBB/adm/style/simple_body.html b/phpBB/adm/style/simple_body.html index 0dd2fb7625..0b1e11b9a2 100644 --- a/phpBB/adm/style/simple_body.html +++ b/phpBB/adm/style/simple_body.html @@ -1,6 +1,6 @@ <!-- INCLUDE simple_header.html --> -<div class="errorbox"> +<div class="successbox"> <h3>{MESSAGE_TITLE}</h3> <p>{MESSAGE_TEXT}</p> </div> diff --git a/phpBB/adm/style/simple_header.html b/phpBB/adm/style/simple_header.html index d555bc1443..ca24f3891b 100644 --- a/phpBB/adm/style/simple_header.html +++ b/phpBB/adm/style/simple_header.html @@ -79,7 +79,7 @@ function marklist(id, name, state) function find_username() { <!-- IF UA_FIND_USERNAME --> - window.open('{UA_FIND_USERNAME}', '_usersearch', 'height=500, resizable=yes, scrollbars=yes, width=740'); + window.open('{UA_FIND_USERNAME}', '_usersearch', 'height=570, resizable=yes, scrollbars=yes, width=760'); <!-- ENDIF --> return false; } @@ -99,6 +99,6 @@ function swatch(field) </script> </head> -<body> +<body class="{S_CONTENT_DIRECTION}"> <div id="page-body" style="padding: 0 10px;"> diff --git a/phpBB/adm/swatch.php b/phpBB/adm/swatch.php index 3744a967a6..88da54d504 100644 --- a/phpBB/adm/swatch.php +++ b/phpBB/adm/swatch.php @@ -36,8 +36,6 @@ $template->assign_vars(array( 'S_USER_LANG' => $user->lang['USER_LANG'], 'S_CONTENT_DIRECTION' => $user->lang['DIRECTION'], 'S_CONTENT_ENCODING' => 'UTF-8', - 'S_CONTENT_DIR_LEFT' => $user->lang['LEFT'], - 'S_CONTENT_DIR_RIGHT' => $user->lang['RIGHT'], )); $template->display('body'); diff --git a/phpBB/common.php b/phpBB/common.php index 295a0a4abd..2d1d67c3fc 100644 --- a/phpBB/common.php +++ b/phpBB/common.php @@ -76,7 +76,7 @@ function deregister_globals() } // If we are on PHP >= 6.0.0 we do not need some code -if (version_compare(phpversion(), '6.0.0-dev', '>=')) +if (version_compare(PHP_VERSION, '6.0.0-dev', '>=')) { /** * @ignore diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index 60324d94a8..0f9c36bb09 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -949,6 +949,7 @@ function get_schema_struct() 'session_id' => array('CHAR:32', ''), 'confirm_type' => array('TINT:3', 0), 'code' => array('VCHAR:8', ''), + 'seed' => array('UINT:10', 0), ), 'PRIMARY_KEY' => array('session_id', 'confirm_id'), 'KEYS' => array( @@ -1043,9 +1044,9 @@ function get_schema_struct() 'enable_icons' => array('BOOL', 1), 'enable_prune' => array('BOOL', 0), 'prune_next' => array('TIMESTAMP', 0), - 'prune_days' => array('TINT:4', 0), - 'prune_viewed' => array('TINT:4', 0), - 'prune_freq' => array('TINT:4', 0), + 'prune_days' => array('UINT', 0), + 'prune_viewed' => array('UINT', 0), + 'prune_freq' => array('UINT', 0), ), 'PRIMARY_KEY' => 'forum_id', 'KEYS' => array( @@ -1326,7 +1327,7 @@ function get_schema_struct() 'rule_user_id' => array('UINT', 0), 'rule_group_id' => array('UINT', 0), 'rule_action' => array('UINT', 0), - 'rule_folder_id' => array('INT:4', 0), + 'rule_folder_id' => array('INT:11', 0), ), 'PRIMARY_KEY' => 'rule_id', 'KEYS' => array( @@ -1345,7 +1346,7 @@ function get_schema_struct() 'pm_replied' => array('BOOL', 0), 'pm_marked' => array('BOOL', 0), 'pm_forwarded' => array('BOOL', 0), - 'folder_id' => array('INT:4', 0), + 'folder_id' => array('INT:11', 0), ), 'KEYS' => array( 'msg_id' => array('INDEX', 'msg_id'), @@ -1487,6 +1488,7 @@ function get_schema_struct() 'session_time' => array('TIMESTAMP', 0), 'session_ip' => array('VCHAR:40', ''), 'session_browser' => array('VCHAR:150', ''), + 'session_forwarded_for' => array('VCHAR:255', ''), 'session_page' => array('VCHAR_UNI', ''), 'session_viewonline' => array('BOOL', 1), 'session_autologin' => array('BOOL', 0), @@ -1876,7 +1878,7 @@ function get_schema_struct() 'user_allow_viewonline' => array('BOOL', 1), 'user_allow_viewemail' => array('BOOL', 1), 'user_allow_massemail' => array('BOOL', 1), - 'user_options' => array('UINT:11', 893), + 'user_options' => array('UINT:11', 895), 'user_avatar' => array('VCHAR', ''), 'user_avatar_type' => array('TINT:2', 0), 'user_avatar_width' => array('USINT', 0), @@ -1932,10 +1934,7 @@ function get_schema_struct() 'friend' => array('BOOL', 0), 'foe' => array('BOOL', 0), ), - 'KEYS' => array( - 'user_id' => array('INDEX', 'user_id'), - 'zebra_id' => array('INDEX', 'zebra_id'), - ), + 'PRIMARY_KEY' => array('user_id', 'zebra_id'), ); return $schema_data; diff --git a/phpBB/develop/generate_utf_casefold.php b/phpBB/develop/generate_utf_casefold.php index 68cc83d880..d9aace10ce 100644 --- a/phpBB/develop/generate_utf_casefold.php +++ b/phpBB/develop/generate_utf_casefold.php @@ -89,7 +89,7 @@ function my_var_export($var) return 'array(' . implode(',', $lines) . ')'; } - elseif (is_string($var)) + else if (is_string($var)) { return "'" . str_replace(array('\\', "'"), array('\\\\', "\\'"), $var) . "'"; } diff --git a/phpBB/develop/generate_utf_tables.php b/phpBB/develop/generate_utf_tables.php index 1d7fbc1d67..ffad9106d6 100644 --- a/phpBB/develop/generate_utf_tables.php +++ b/phpBB/develop/generate_utf_tables.php @@ -320,7 +320,7 @@ while ($line = fgets($fp, 1024)) */ $map[$cp] = strtolower($capture[1]); } - elseif (isset($m[13][0])) + else if (isset($m[13][0])) { /** * If the letter has a lowercased form, use it @@ -455,7 +455,7 @@ function my_var_export($var) return 'array(' . implode(',', $lines) . ')'; } - elseif (is_string($var)) + else if (is_string($var)) { return "'" . str_replace(array('\\', "'"), array('\\\\', "\\'"), $var) . "'"; } @@ -544,11 +544,11 @@ function cp_to_utf($cp) { return chr(0xF0 | ($cp >> 18)) . chr(0x80 | (($cp >> 12) & 0x3F)) . chr(0x80 | (($cp >> 6) & 0x3F)) . chr(0x80 | ($cp & 0x3F)); } - elseif ($cp > 0x7FF) + else if ($cp > 0x7FF) { return chr(0xE0 | ($cp >> 12)) . chr(0x80 | (($cp >> 6) & 0x3F)) . chr(0x80 | ($cp & 0x3F)); } - elseif ($cp > 0x7F) + else if ($cp > 0x7F) { return chr(0xC0 | ($cp >> 6)) . chr(0x80 | ($cp & 0x3F)); } diff --git a/phpBB/develop/lang_duplicates.php b/phpBB/develop/lang_duplicates.php index 666a9a084e..5a77c79543 100644 --- a/phpBB/develop/lang_duplicates.php +++ b/phpBB/develop/lang_duplicates.php @@ -60,7 +60,7 @@ while ($module = array_shift($keys)) $compare = "Equal"; $equal++; } - elseif (strcasecmp($kkeys[$module][$dup], $kkeys[$other_module][$dup]) == 0) + else if (strcasecmp($kkeys[$module][$dup], $kkeys[$other_module][$dup]) == 0) { $compare = "Differ in case"; $case++; diff --git a/phpBB/develop/regex.php b/phpBB/develop/regex.php new file mode 100644 index 0000000000..7abecc9650 --- /dev/null +++ b/phpBB/develop/regex.php @@ -0,0 +1,74 @@ +<?php + +// IP regular expressions + +$dec_octet = '(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])'; +$h16 = '[\dA-F]{1,4}'; +$ipv4 = "(?:$dec_octet\.){3}$dec_octet"; +$ls32 = "(?:$h16:$h16|$ipv4)"; + +$ipv6_construct = array( + array(false, '', '{6}', $ls32), + array(false, '::', '{5}', $ls32), + array('', ':', '{4}', $ls32), + array('{1,2}', ':', '{3}', $ls32), + array('{1,3}', ':', '{2}', $ls32), + array('{1,4}', ':', '', $ls32), + array('{1,5}', ':', false, $ls32), + array('{1,6}', ':', false, $h16), + array('{1,7}', ':', false, '') +); + +$ipv6 = '(?:'; +foreach ($ipv6_construct as $ip_type) +{ + $ipv6 .= '(?:'; + if ($ip_type[0] !== false) + { + $ipv6 .= "(?:$h16:)" . $ip_type[0]; + } + $ipv6 .= $ip_type[1]; + if ($ip_type[2] !== false) + { + $ipv6 .= "(?:$h16:)" . $ip_type[2]; + } + $ipv6 .= $ip_type[3] . ')|'; +} +$ipv6 = substr($ipv6, 0, -1) . ')'; + +echo 'IPv4: ' . $ipv4 . "<br />\nIPv6: " . $ipv6 . "<br />\n"; + +// URL regular expressions + +$pct_encoded = "%[\dA-F]{2}"; +$unreserved = 'a-z0-9\-._~'; +$sub_delims = '!$&\'()*+,;='; +$pchar = "(?:[$unreserved$sub_delims:@|]+|$pct_encoded)"; // rfc: no "|" + +$scheme = '[a-z][a-z\d+\-.]*'; +$reg_name = "(?:[$unreserved$sub_delims|@]+|$pct_encoded)+"; // rfc: * instead of + and no "|" and no "@" (included instead of userinfo +//$userinfo = "(?:(?:[$unreserved$sub_delims:]+|$pct_encoded))*"; +$ipv4_simple = '[0-9.]+'; +$ipv6_simple = '\[[a-z0-9.]+:[a-z0-9.]+:[a-z0-9.:]+\]'; +$host = "(?:$reg_name|$ipv4_simple|$ipv6_simple)"; +$port = '\d*'; +//$authority = "(?:$userinfo@)?$host(?::$port)?"; +$authority = "$host(?::$port)?"; +$segment = "$pchar*"; +$path_abempty = "(?:/$segment)*"; +$hier_part = "/{2}$authority$path_abempty"; +$query = "(?:[$unreserved$sub_delims:@/?|]+|$pct_encoded)*"; // pchar | "/" | "?", rfc: no "|" +$fragment = $query; + +$url = "$scheme:$hier_part(?:\?$query)?(?:\#$fragment)?"; +echo 'URL: ' . $url . "<br />\n"; + +// no scheme, shortened authority, but host has to start with www. +$www_url = "www\.$reg_name(?::$port)?$path_abempty(?:\?$query)?(?:\#$fragment)?"; +echo 'www.URL: ' . $www_url . "<br />\n"; + +// no schema and no authority +$relative_url = "$segment$path_abempty(?:\?$query)?(?:\#$fragment)?"; +echo 'relative URL: ' . $relative_url . "<br />\n"; + +?>
\ No newline at end of file diff --git a/phpBB/develop/search_fill.php b/phpBB/develop/search_fill.php index 8bb656b901..1ab74f562c 100644 --- a/phpBB/develop/search_fill.php +++ b/phpBB/develop/search_fill.php @@ -82,7 +82,7 @@ for(;$postcounter <= $max_post_id; $postcounter += $batchsize) $rowset = $db->sql_fetchrowset($result); $db->sql_freeresult($result); - $post_rows = count($rowset); + $post_rows = sizeof($rowset); if( $post_rows ) { diff --git a/phpBB/develop/utf_normalizer_test.php b/phpBB/develop/utf_normalizer_test.php index 63c73c05e4..2026d3d4c8 100644 --- a/phpBB/develop/utf_normalizer_test.php +++ b/phpBB/develop/utf_normalizer_test.php @@ -71,7 +71,7 @@ $test_suite = array( require_once($phpbb_root_path . 'includes/utf/utf_normalizer.' . $phpEx); $i = $n = 0; -$failed = FALSE; +$failed = false; $tested_chars = array(); $fp = fopen($phpbb_root_path . 'develop/NormalizationTest.txt', 'rb'); @@ -127,7 +127,7 @@ while (!feof($fp)) if (strcmp($utf_expected, $utf_result)) { - $failed = TRUE; + $failed = true; $hex_result = utf_to_hexseq($utf_result); echo "\nFAILED $expected == $form($test) ($hex_expected != $hex_result)"; @@ -365,11 +365,11 @@ function cp_to_utf($cp) { return chr(0xF0 | ($cp >> 18)) . chr(0x80 | (($cp >> 12) & 0x3F)) . chr(0x80 | (($cp >> 6) & 0x3F)) . chr(0x80 | ($cp & 0x3F)); } - elseif ($cp > 0x7FF) + else if ($cp > 0x7FF) { return chr(0xE0 | ($cp >> 12)) . chr(0x80 | (($cp >> 6) & 0x3F)) . chr(0x80 | ($cp & 0x3F)); } - elseif ($cp > 0x7F) + else if ($cp > 0x7F) { return chr(0xC0 | ($cp >> 6)) . chr(0x80 | ($cp & 0x3F)); } diff --git a/phpBB/docs/AUTHORS b/phpBB/docs/AUTHORS index 24072f19b6..a9f7a89f1f 100644 --- a/phpBB/docs/AUTHORS +++ b/phpBB/docs/AUTHORS @@ -14,13 +14,13 @@ phpBB Project Manager : theFinn (James Atkinson) phpBB Lead Developers : Acyd Burn (Meik Sievertsen) psoTFX (Paul S. Owen) [2001 - 09/2005] -phpBB Developers : Ashe (Ludovic Arnaud) - [10/2002 - 11/2003, 06/2006 - ] - DavidMJ (David M.) +phpBB Developers : DavidMJ (David M.) GrahamJE (Graham Eames) naderman (Nils Adermann) subBlue (Tom Beddard) BartVB (Bart van Bragt) - [11/2000 - 03/2006] + Ashe (Ludovic Arnaud) - [10/2002 - 11/2003, 06/2006 - 10/2006] Original subSilver by subBlue Design, Tom Beddard, (c) 2001 phpBB Group diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html new file mode 100644 index 0000000000..28e8cd63db --- /dev/null +++ b/phpBB/docs/CHANGELOG.html @@ -0,0 +1,215 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<title>phpBB 3.0.x Changelog</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta http-equiv="Content-Style-Type" content="text/css" /> +<meta name="resource-type" content="document" /> +<meta name="description" lang="en" content="phpBB 3.0.x Changelog" /> +<meta name="keywords" lang="en" content="" /> +<meta name="author" content="phpBB Group" /> +<meta name="copyright" content="phpBB Group" /> +<meta name="MSSmartTagsPreventParsing" content="true" /> + +<style type="text/css"> +<!-- + +/* The original "subSilver" theme for phpBB2 Created by subBlue design :: http://www.subBlue.com */ +body { + background-color: white; + font-family: Verdana, Arial, Helvetica, sans-serif; + margin: 0; + border: 0; + padding: 0; +} + +img { + border: 0; +} + +p { + font-size: 8pt; +} + +hr { + height: 0; + border: solid #D1D7DC 0; + border-top-width: 1px; +} + +#title, h1 { + font: bold 18pt 'Trebuchet MS', Verdana, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h2 { + font: bold 12pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h3 { + font: bold 10pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +.paragraph { + margin-left: 20px; +} + +/* Structure */ +#logo { + background: #fff url(header_bg.jpg) repeat-x top right; + height: 60px; +} + +#title { + color: #12749b; + float: right; + margin: 10px 10px 0; +} + +#main { + margin-left: 25px; + margin-right: 25px; +} + +.good { + color: green; +} + +.bad { + color: red; +} + +#footer { + margin-left: 75px; + font-size: 70%; + color: #006600; +} + +code { + color: #006600; + font-weight: normal; + font-family: 'Courier New', monospace; + border-color: #D1D7DC; + border-width: 1px; + border-style: solid; + background-color: #FAFAFA; +} + +.indent p { + padding-left: 20px; + font-size: 90%; +} + +/* Anchors */ +a { + font-size: 70%; +} + +a:link, a:active, a:visited { + color: #006699; + text-decoration: none; +} + +a:hover { + color: #DD6900; + text-decoration: underline; +} + +a.nav { + color: #006699; + text-decoration: none; +} + +a.nav:hover { + text-decoration: underline; +} + +p a { + font-size: 100%; +} + +.menu { + font-size: 80%; +} + +.menu li a { + font-size: 100%; +} + +.comment { + color: green; +} + +//--> +</style> + +</head> + +<body> + +<div id="logo"> + <div id="title">phpBB 3.0.x Changelog</div> + <img src="header_left.jpg" alt="phpBB Logo" /> +</div> + +<a name="top"></a><div id="main"> + +<!-- BEGIN DOCUMENT --> + +<p>This is a non-exhaustive (but still near complete) changelog for phpBB 3.0.x including release candidate versions. Our thanks to all those people who've contributed bug reports and code fixes.</p> + +<h1>Changelog</h1> + +<ol class="menu"> + <li><a href="#changelog">Changelog</a> + <ol type="i"> + <li><a href="#v30rc1">Changes since RC-1</a></li> + </ol> + </li> + <li><a href="#disclaimer">Copyright and disclaimer</a></li> +</ol> + +<hr /> + +<a name="changelog"></a><h1>1. Changelog</h1> + + <a name="v30rc1"></a><b>1.i. Changes since 3.0.RC1</b> + <br /><br /> + <div class="paragraph"> + + <ul class="menu"> + <li> </li> + </ul> + + </div> + <a href="#top">Top</a> + <br /><br /> + + <hr /> + +<a name="disclaimer"></a><h1>2. Copyright and disclaimer</h1> + + <div class="paragraph"> + + <p>This application is opensource software released under the <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) 2007 <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p> + +</div> +<a href="#top">Top</a> + +<!-- END DOCUMENT --> + +</div> + +<br /><br /> + +<div id="footer">Note that a full list of fixed bugs can be found at the bug tracker (<a href="README.html#bugs">see section on bug reporting</a>)<br /><br /></div> + +</body> +</html> diff --git a/phpBB/docs/FAQ.html b/phpBB/docs/FAQ.html new file mode 100644 index 0000000000..6a010dc5ec --- /dev/null +++ b/phpBB/docs/FAQ.html @@ -0,0 +1,380 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<title>phpBB 3.0.x FAQ</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta http-equiv="Content-Style-Type" content="text/css" /> +<meta name="resource-type" content="document" /> +<meta name="description" lang="en" content="phpBB 3.0.x frequently asked questions" /> +<meta name="keywords" lang="en" content="" /> +<meta name="author" content="phpBB Group" /> +<meta name="copyright" content="phpBB Group" /> +<meta name="MSSmartTagsPreventParsing" content="true" /> + +<style type="text/css"> +<!-- + +/* The original "subSilver" theme for phpBB2 Created by subBlue design :: http://www.subBlue.com */ +body { + background-color: white; + font-family: Verdana, Arial, Helvetica, sans-serif; + margin: 0; + border: 0; + padding: 0; +} + +img { + border: 0; +} + +p { + font-size: 8pt; +} + +hr { + height: 0; + border: solid #D1D7DC 0; + border-top-width: 1px; +} + +#title, h1 { + font: bold 18pt 'Trebuchet MS', Verdana, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h2 { + font: bold 12pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h3 { + font: bold 10pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +.paragraph { + margin-left: 20px; +} + +/* Structure */ +#logo { + background: #fff url(header_bg.jpg) repeat-x top right; + height: 60px; +} + +#title { + color: #12749b; + float: right; + margin: 10px 10px 0; +} + +#main { + margin-left: 25px; + margin-right: 25px; +} + +.good { + color: green; +} + +.bad { + color: red; +} + +#footer { + margin-left: 75px; + font-size: 70%; + color: #006600; +} + +code { + color: #006600; + font-weight: normal; + font-family: 'Courier New', monospace; + border-color: #D1D7DC; + border-width: 1px; + border-style: solid; + background-color: #FAFAFA; +} + +.indent p { + padding-left: 20px; + font-size: 90%; +} + +/* Anchors */ +a { + font-size: 70%; +} + +a:link, a:active, a:visited { + color: #006699; + text-decoration: none; +} + +a:hover { + color: #DD6900; + text-decoration: underline; +} + +a.nav { + color: #006699; + text-decoration: none; +} + +a.nav:hover { + text-decoration: underline; +} + +p a { + font-size: 100%; +} + +.menu { + font-size: 80%; +} + +.menu li a { + font-size: 100%; +} + +.comment { + color: green; +} + +//--> +</style> + +</head> + +<body> + +<div id="logo"> + <div id="title">phpBB 3.0.x FAQ</div> + <img src="header_left.jpg" alt="phpBB Logo" /> +</div> + +<a name="top"></a><div id="main"> + +<!-- BEGIN DOCUMENT --> + +<p>This is a very basic Frequently Asked Questions (FAQ) page which attempts to answer some of the more commonly asked questions. It is by no means exhaustive and should be used in combination with the 'built-in' User FAQ within phpBB3, the community forums and our IRC channel (see <a href="README.html">README</a> for details).</p> + +<h1>FAQ</h1> + +<!-- add entry about common UTF8 problems (for example wrong uploading, editing) --> +<ul class="menu"> + <li><a href="#install">I cannot install this it is too difficult! Will you do it?</a></li> + <li><a href="#legal">I am having problems with the admin at a certain board, help!</a></li> + <li><a href="#legal">A board has ripped off my graphics/software/etc., stop them!</a></li> + <li><a href="#legal">A board is dealing in warez/porn/etc., you need to prevent them doing this!</a></li> + <li><a href="#legal">I want to sue you because i think you host an illegal board!</a></li> + <li><a href="#viewonline">According to viewonline a user is doing/reading something they should not be able to!</a></li> + <li><a href="#mail">I keep getting Mail sending errors when I (or my users) post/send PM's/etc.!</a></li> + <li><a href="#mail_language">My users are complaining that emails are not in their selected language!</a></li> + <li><a href="#aol_browser">My AOL based users keep getting logged out!</a></li> + <li><a href="#avatars">No matter what I set the uploadable avatars to I cannot upload one from my computer!</a></li> + <li><a href="#gallery_avatars">I just cannot get gallery avatars to appear!</a></li> + <li><a href="#permissions">How do I use/set permissions?</a></li> + <li><a href="#login_issues">I (or my users) cannot stay logged in to the forum!</a></li> + <li><a href="#logout_issues">My users are complaining about being logged out too quickly!</a></li> + <li><a href="#not_answered">My question isn't answered here!</a></li> + <li><a href="#disclaimer">Copyright and disclaimer</a></li> +</ul> + +<hr /> + +<a name="install"></a><h3>I cannot install this it is too difficult! Will you do it?</h3> + +<div class="paragraph"> + +<p>Simple answer, no we will not. We are not being difficult when we say this we are actually trying to help you. phpBB has a reputation for being easy to install, that reputation is we believe well deserved. It is a simple process of unarchiving a single file, uploading the resulting directory/files to their intended location and entering some data in a web based form. The sequence of events, what to type where, etc. is covered in detail in the accompanying <a href="INSTALL.html">INSTALL.html</a> documentation. If you cannot install phpBB3 the chances are you will be unable to administer or update it.</p> + +<p>There are people, companies (unrelated to your hosting provider), etc. that will install your forum, either for free or for a payment. We do not recommend you make use of these offers. Unless the service is provided by your hosting company you will have to divulge passwords and other sensitive details. If you did not know how to use an ATM would you give a passer-by your bank card and PIN and ask them to show you what to do? No, probably not! The same applies to your hosting account details!</p> + +<p>We think a better solution is for you to carefully read the enclosed documentation, read through our knowledge base at <a href="http://www.phpbb.com/">www.phpbb.com</a> and if necessary ask for help on any thing you get stuck on. However, the decision is yours but please note we may not offer support if we believe you have had the board installed by a third party. In such cases you should direct your questions to that company or person/s.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="legal"></a> +<h3>I am having problems with the admin at a certain board, help!</h3> +<h3>A board has ripped off my graphics/software/etc., stop them!</h3> +<h3>A board is dealing in warez/porn/etc., you need to prevent them doing this!</h3> +<h3>I want to sue you because i think you host an illegal board!</h3> + +<div class="paragraph"> + +<p>We provide the software, we have absolutely nothing to do with any board that runs it (beyond phpbb.com of course!) and we also do not host any site. The GPL grants the user an unlimited right of use subject to their adherence of that licence. Therefore we cannot prevent, dictate, control or otherwise limit the use of phpBB software. So please do not contact us for such matters.</p> + +<p>If you have a problem with a given board please take it up with them, not us. We are not and cannot be held legally responsible for any third party use of this software (much like Microsoft et al cannot be held responsible for the use of Windows in illegal activities, etc.). Additionally we do <strong>not</strong> track the use of phpBB software in any way. So please do not ask us for details on a "given" board we will not be able to help you. If any law firms or lawyers out there send us writs, cease and desist orders, etc. for third party website use of this software we reserve the right to charge for time wasted dealing with such issues...</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="viewonline"></a><h3>According to viewonline a user is doing/reading something they should not be able to!</h3> + +<div class="paragraph"> + +<p>No, they probably are not. phpBB uses sessions to keep track of users as they move between pages. The session information tells us who this user is. Therefore in order to determine what a user can do on a page we first need the session details. Once this data is available we can check whether the user is permitted to do whatever it is they are trying to do. This can result in it appearing as if a user is reading a topic in a forum they should not be able to access. Or perhaps viewing private messages when they are only guests, etc. In practice the user is not doing these things, they are viewing a "You are not permitted to do this" type message. The session data has simply been updated before we were able to determine what the user could or could not do.</p> + +<p>Of course this only applies where permissions have been set correctly!</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="mail"></a><h3>I keep getting Mail sending errors when I (or my users) post/send PM's/etc.!</h3> + +<div class="paragraph"> + +<p>This error will occur if phpBB cannot send mail. phpBB can send email two ways; using the PHP <code>mail()</code> function or directly via SMTP. Some hosting providers limit the <code>mail()</code> function to prevent its use in spamming, others may rename it or limit its functionality. If the <code>mail()</code> function got renamed, you are able to enter the correct name within the administration control panel. In either case you may need to make use of SMTP. This requires that you have access to such a facility, e.g. your hosting provider may provide one (perhaps requiring specific written authorisation), etc. Please see <a href="http://www.phpbb.com/">www.phpbb.com</a> for additional help on this matter.</p> + +<p>If you do require SMTP services please do not ask (on our forums or elsewhere) for someone to provide you with one. Open relays are now things of the past thanks to the unthinking spammers out there. Therefore you are unlikely to find someone willing to offer you (free) services.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="mail_language"></a><h3>My users are complaining that emails are not in their selected language!</h3> + +<div class="paragraph"> + +<p>You must have deleted a language pack or the language pack is incomplete. phpBB will try to send emails in the users selected language. If it cannot find a suitable email template it will switch to the boards default language.</p> + +<!-- additional entry about encoded emails --> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="aol_browser"></a><h3>My AOL based users keep getting logged out!</h3> + +<div class="paragraph"> + +<p>phpBB uses sessions to keep track of users as they browse the board. These sessions use a combination of a unique session id, the users IP and if specified the users browser and/or the users x-forwarded-for header to identify each user. We make use of all of this as an extra safe-guard to help prevent sessions being hijacked (by discovering the unique session id).</p> + +<p>Unfortunately this only works when the users IP is constant as they browse the board. For most users this will be the case. However certain providers route their users via a cluster of proxys. In some cases, particularly the AOL browser, this results in different IPs being forwarded as the user moves between pages. We take account of this by not checking the entire IP by default but only the first "three quads" (<samp>A.B.C</samp>). Again in most cases this will be fine. However again AOL uses IPs which can vary so much that checking only the first two quads results in a fairly static IP being available for session validation.</p> + +<p>If you are experiencing problems related to this you can set the Session IP validation parameter found in <code>Admin->General->Server Configuration->Security Settings</code> to <samp>A.B</samp>. Please note that reducing the IP validation length does potentially increase the risk of sessions being hijacked (this is something for you to consider, phpBB Group takes no responsibility should anything happen!). We suggest to at least additionally enable the browser validation.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="avatars"></a><h3>No matter what I set the uploadable avatars to I cannot upload one from my computer!</h3> + +<div class="paragraph"> + +<p>There are two possibilities here, the first is you have not created the directory you specified as the storage location for avatars, ie. as specified in the <code>Admin -> General -> Board Configuration -> Avatar settings</code> section. If the directory does not exist uploadeable avatars are automatically disabled. You should create the required directory (ensuring it has global write access or other appropriate permissions to allow the webserver to write files to it).</p> + +<p>The second possibility is that your provider has disabled file_upload support. You should contact your provider and ask them if this is the case. There is not a lot you can do, there are still three other avatar settings left to choose from including uploading via an URL which will work fine.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="gallery_avatars"></a><h3>I just cannot get gallery avatars to appear!</h3> + +<div class="paragraph"> + +<p>phpBB categorises gallery avatars and it does this by reading through folders contained in the location you specified as being the gallery path. For example, if you set the gallery path to <samp>images/avatars/gallery</samp> phpBB will expect to find a series of folders within that path, eg. <samp>images/avatars/gallery/moviestars</samp>, <samp>images/avatars/gallery/cartoons</samp>, <samp>images/avatars/gallery/misc</samp>, etc. Placing images directly in <samp>images/avatars/gallery/</samp> will result in nothing being listed in your gallery.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="permissions"></a><h3>How do I use/set permissions?</h3> + +<div class="paragraph"> + +<p>Please read our documentation about <a href="#">permissions</a>.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="login_issues"></a><h3>I (or my users) cannot stay logged in to the forum!</h3> + +<div class="paragraph"> + +<p>If you (or your users) are, after attempting a login, being returned to the index (or other page) without appearing to be logged in the most likely problem is incorrect cookie settings. phpBB uses cookies to store a session id and a small amount of user data. For this data to be stored correctly the cookie domain, name, path and secure settings must be correct. You can check this in <code>Admin->General->Server Configuration->Cookie Settings</code>. Typically the cookie domain can be left blank and the cookie path set to <samp>/</samp> (a single forward slash). Do <strong>not</strong> set the cookie as being secure unless your board is running over a secure sockets layer connection, ie. https://</p> + +<p>If you still have problems try setting the cookie domain to your full domain name, eg. <samp>www.mysystem.tld</samp>, <samp>www.something.mydomain.tld</samp>. You <strong>must</strong> ensure the domain name contains at least two dots or browsers will be unlikely to recognise the cookie, eg. <samp>.mydomain.com</samp>, <samp>mydomain.com</samp>. Do <strong>not</strong> add http:// or anything else to the domain name!</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="logout_issues"></a><h3>My users are complaining about being logged out too quickly!</h3> + +<div class="paragraph"> + +<p>You can increase the default length of sessions (ie. how long before a users session is considered 'dead') in <code>Admin->General->Server Configuration->Load Settings</code>. Set it to whatever value your users feel comfortable with, remember that security issues may affect your decision (ie. having too long a session may allow non-users to abuse your board should a user forget to logout or otherwise leave a current session on a public workstation).</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="not_answered"></a><h3>My question isn't answered here!</h3> + +<div class="paragraph"> + +<p>Please read our <a href="#">extensive user documentation</a> first, it may just explain what you want to know.</p> + +<p>Feel free to search our community forum for the information you require. <strong>PLEASE DO NOT</strong> post your question without having first used search, chances are someone has already asked and answered your question. You can find our board here:</p> + +<p><a href="http://www.phpbb.com">www.phpbb.com</a></p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="disclaimer"></a><h3>Copyright and disclaimer</h3> + +<div class="paragraph"> + + <p>This application is opensource software released under the <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) 2007 <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p> + +</div> +<a href="#top">Top</a> + +<!-- END DOCUMENT --> + +</div> + +<div id="footer"> <br /><br /></div> + +</body> +</html> diff --git a/phpBB/docs/INSTALL.html b/phpBB/docs/INSTALL.html new file mode 100644 index 0000000000..555ad399ec --- /dev/null +++ b/phpBB/docs/INSTALL.html @@ -0,0 +1,519 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<title>phpBB 3.0.x Install</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta http-equiv="Content-Style-Type" content="text/css" /> +<meta name="resource-type" content="document" /> +<meta name="description" lang="en" content="phpBB 3.0.x Installation, updating and conversion informations" /> +<meta name="keywords" lang="en" content="" /> +<meta name="author" content="phpBB Group" /> +<meta name="copyright" content="phpBB Group" /> +<meta name="MSSmartTagsPreventParsing" content="true" /> + +<style type="text/css"> +<!-- + +/* The original "subSilver" theme for phpBB2 Created by subBlue design :: http://www.subBlue.com */ +body { + background-color: white; + font-family: Verdana, Arial, Helvetica, sans-serif; + margin: 0; + border: 0; + padding: 0; +} + +img { + border: 0; +} + +p { + font-size: 8pt; +} + +hr { + height: 0; + border: solid #D1D7DC 0; + border-top-width: 1px; +} + +#title, h1 { + font: bold 18pt 'Trebuchet MS', Verdana, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h2 { + font: bold 12pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h3 { + font: bold 10pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +.paragraph { + margin-left: 20px; +} + +/* Structure */ +#logo { + background: #fff url(header_bg.jpg) repeat-x top right; + height: 60px; +} + +#title { + color: #12749b; + float: right; + margin: 10px 10px 0; +} + +#main { + margin-left: 25px; + margin-right: 25px; +} + +.good { + color: green; +} + +.bad { + color: red; +} + +#footer { + margin-left: 75px; + font-size: 70%; + color: #006600; +} + +code { + color: #006600; + font-weight: normal; + font-family: 'Courier New', monospace; + border-color: #D1D7DC; + border-width: 1px; + border-style: solid; + background-color: #FAFAFA; +} + +.indent p { + padding-left: 20px; + font-size: 90%; +} + +/* Anchors */ +a { + font-size: 70%; +} + +a:link, a:active, a:visited { + color: #006699; + text-decoration: none; +} + +a:hover { + color: #DD6900; + text-decoration: underline; +} + +a.nav { + color: #006699; + text-decoration: none; +} + +a.nav:hover { + text-decoration: underline; +} + +p a { + font-size: 100%; +} + +.menu { + font-size: 80%; +} + +.menu li a { + font-size: 100%; +} + +.comment { + color: green; +} + +//--> +</style> + +</head> + +<body> + +<div id="logo"> + <div id="title">phpBB 3.0.x Install</div> + <img src="header_left.jpg" alt="phpBB Logo" /> +</div> + +<a name="top"></a><div id="main"> + +<!-- BEGIN DOCUMENT --> + +<p><strong>Please read this document completely before proceeding with installation, updating or converting.</strong></p> + +<p>Please note these instructions are not fully comprehensive, a more thorough userguide will be available on the phpBB website in the near future. However, this document will walk you through the basics on installing, updating and converting the forum software.</p> + +<p>A basic overview of running phpBB3 can be found in the accompanying <a href="README.html">README</a> documentation. Please ensure you read that document in addition to this! For more detailed information on using phpBB3 you should read <a href="http://www.phpbb.com/support/documentation/">the documentation</a> available online.</p> + +<h1>Install</h1> + +<ol class="menu"> + <li><a href="#quickinstall">Quick install</a></li> + <li><a href="#require">Requirements</a></li> + <li><a href="#install">New installation</a></li> + <li><a href="#update">Updating from stable releases of phpBB 3.0.x</a> + <ol type="i"> + <li><a href="#update_full">Full package</a></li> + <li><a href="#update_files">Changed files only</a></li> + <li><a href="#update_patch">Patch file</a></li> + <li><a href="#update_auto">Automatic update package</a></li> + <li><a href="#update_all">All package types</a></li> + </ol> + </li> + <li><a href="#convert">Conversion from phpBB 2.0.x to phpBB 3.0.x</a> + <ol type="i"> + <li><a href="#prereq">Requirements before converting</a></li> + <li><a href="#conversion">Converting</a></li> + <li><a href="#postreq">Things to do after conversion</a></li> + </ol> + </li> + <li><a href="#postinstall">Important (security related) post-Install tasks for all installation methods</a> + <ol type="i"> + <li><a href="#avatars">Uploadable avatars</a></li> + </ol> + </li> + <li><a href="#disclaimer">Disclaimer</a></li> +</ol> + +<hr /> + +<a name="quickinstall"></a><h1>1. Quick install</h1> + +<div class="paragraph"> + <p>If you have basic knowledge of using FTP and are sure your hosting service or server will run phpBB3 you can use these steps to quickly get started. For a more detailed explanation you should skip this and go to <a href="#require">section 2</a> below.</p> + + <ol class="menu"> + <li>Decompress the phpBB3 archive to a local directory on your system.</li> + <li>Upload all the files contained in this archive (retaining the directory structure) to a web accessible directory on your server or hosting account.</li> + <li>Change the permissions on config.php to be writeable by all (666 or -rw-rw-rw- within your FTP Client)</li> + <li>Change the permissions on the following directories to be writeable by all (777 or -rwxrwxrwx within your FTP Client):<br /> + <code>store/</code>, <code>cache/</code>, <code>files/</code> and <code>images/avatars/upload/</code>.</li> + <li>Using your web browser visit the location you placed phpBB3 with the addition of install/index.php or pointing directly to install/, e.g. http://www.mydomain.com/phpBB2/install/, http://www.mydomain.com/forum/install/ etc.</li> + <li>Click the <em>INSTALL</em> tab, follow the steps and fill out all the requested information.</li> + <li>Change the permissions on config.php to be writeable only by yourself (644 or -rw-r--r-- within your FTP Client)</li> + <li>phpBB3 should now be available, please <strong>MAKE SURE</strong> you read at least <a href="#postinstall">Section 6</a> below for important, security related post-installation instructions.</li> + </ol> + + <p>If you experienced problems or do not know how to proceed with any of the steps above please read the rest of this document.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="require"></a><h1>2. Requirements</h1> + +<div class="paragraph"> + <p>phpBB3 has a few requirements which must be met before you are able to install and use it.</p> + + <ul class="menu"> + <li>A webserver or web hosting account running on any major Operating System with support for PHP</li> + <li>A SQL database system, <strong>one of</strong>: + <ul> + <li>MySQL 3.23 or above (MySQLi supported)</li> + <li>PostgreSQL 7.3+</li> + <li>SQLite 2.8.2+</li> + <li>Firebird 2.0</li> + <li>MS SQL Server 2000 or above (directly or via ODBC)</li> + <li>Oracle</li> + </ul> + </li> + <li><strong>PHP 4.3.3</strong> or above with support for the database you intend to use.</li> + <li>These optional presence of the following modules within PHP will provide access to additional features, but they are not required. + <ul> + <li>zlib Compression support</li> + <li>Remote FTP support</li> + <li>XML support</li> + <li>Imagemagick support</li> + <li>GD Support</li> + </ul> + </li> + </ul> + + <p>If your server or hosting account does not meet the requirements above we are afraid phpBB3 is not for you.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="install"></a><h1>3. New installation</h1> + +<div class="paragraph"> + + <p>Installation of phpBB3 will vary according to your server and database. If you have <em>shell access</em> to your account (via telnet or ssh for example) you may want to upload the entire phpBB3 archive (in binary mode!) to a directory on your host and unarchive it there.</p> + + <p>If you do not have shell access or do not wish to use it you will need to decompress the phpBB3 archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP <strong>ALL</strong> the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do <strong>NOT</strong> force filenames to all lower or upper case doing so will cause errors later.</p> + + <p>All .php, .inc, .sql, .cfg, .html and .txt files should be uploaded in <strong>ASCII</strong> mode, while all graphics should be uploaded in <strong>BINARY</strong> mode. If you are unfamiliar with what this means please refer to your FTP client documentation. In most cases this is all handled transparantly by your ftp client but if you encounter problems later you should be sure the files where uploaded correctly as described here.</p> + + <p>phpBB3 comes supplied with english as its standard language. However a number of separate packs for different languages are available. If you are not a native english speaker you may wish to install one or more of these packages before continuing. The installation process below will allow you to select a default language from those available (you can of course change this default at a later stage). For more details of language packs, where to obtain them and how to install them please see the <a href="README.html#i18n">README</a>.</p> + + <p>Once all the files have been uploaded to your site you should point your browser at this location with the addition of <code>install/</code>. For example if your domain name is <em>www.mydomain.tld</em> and you placed phpBB3 in a directory /phpBB3 off your web root you would enter <em>http://www.mydomain.tld/phpBB3/install/</em> or (alternatively) <em>http://www.mydomain.tld/phpBB3/install/index.php</em> into your browser. When you have done this you should see the phpBB3 Installation screen appear.</p> + + <h3>Introduction:</h3> + + <p>The installation screen gives you a short introduction into phpBB. It allows you to read the license phpBB3 is released under (General Public License) and provides information about how you can receive support. To start the installation, use the <em>Install</em> button.</p> + + <h3>Requirements</h3> + + <p>The first page you will see after starting the installation is the Requirements list. phpBB3 checks automatically whether everything that it needs to run properly is installed on your server. You need to have at least the minimum PHP version installed, and at least one database available to continue the installation. Also important, is that all shown folders are available and do have the correct permissions. Please see the description of each section to find out whether they are optional or required for phpBB3 to run. If everything is in order, you can continue the installation with <em>Start Install</em>.</p> + + <h3>Database settings</h3> + + <p>You now have to decide which database to use. See the <a href="#require">Requirements section</a> for information on which databases are supported. If you do not know your database settings, please contact your host and ask for them. You will not be able to continue without them. You need:</p> + + <ul class="menu"> + <li>The Database Type - the database you will be using.</li> + <li>The Database server hostname or DSN - the address of the database server.</li> + <li>The Database server port - the port of the database server (most of the time this is not needed).</li> + <li>The Database name - the name of the database on the server.</li> + <li>The Database username and Database password - the login data to access the database.</li> + </ul> + + <div class="indent"> + <p><strong>Note:</strong> if you are installing using SQLite, you should enter the full path to your database file in the DSN field and leave the username and password fields blank. For security reasons, you should make sure that the database file is not stored in a location accessible from the web.</p> + </div> + + <p>You don't need to change the Prefix for tables in database setting, unless you plan on using multipe phpBB installations on one database. In this case you can use a different prefix for each installation to make it work.</p> + + <p>After you entered your details, you can continue with the Proceed to next step button. Now phpBB3 will check whether the data you entered will lead to a successful database connection and whether tables with the same prefix already exist.</p> + + <p>A <em>Could not connect to the database</em> error means that you didn't enter the database data correctly and it is not possible for phpBB to connect. Make sure that everything you entered is in order and try again. Again, if you are unsure about your database settings, please contact your host.</p> + + <p>If you installed another version of phpBB before on the same database with the same prefix, phpBB will inform you and you just need to enter a different database prefix.</p> + + <p>If you see the Successful Connection message, you can continue to the next step.</p> + + <h3>Administrator details</h3> + + <p>Now you have to create your administration user. This user will have full administration access and he will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB3 installation we only include English [GB]. You can download further languages from <a href="http://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p> + + <h3>Configuration file</h3> + + <p>In this step, phpBB will try to write the configuration file automatically. The forum needs the configuration to run properly. It contains all database settings, so without it, phpBB will not be able to access the database.</p> + + <p>Usually writing the configuration file automatically works fine. But in some cases it can fail due to wrong file permissions, for instance. In this case, you need to upload the file manually. phpBB asks you to download the config.php file and tells you what to do with it. Please read the instructions carefully. After you have uploaded the file, use <em>Done</em> to get to the last step. If <em>Done</em> returns you to the same page as before, and does not return a success message, you did not upload the file correctly.</p> + + <h3>Advanced settings</h3> + + <p>The Advanced settings allow you to set some parameters of the board configuration. They are optional, and you can always change them later. So if you are not sure what these settings mean, proceed to the final step and finish the installation.</p> + + <p>If the installation was successful, you can now use the Login button to visit the Administration Control Panel. Congratulations, you have installed phpBB3 successfully. But there is still work ahead!</p> + + <p>If you are unable to get phpBB3 installed even after reading this guide, please look at the support section to find out where you can ask for further assistance.</p> + + <p>At this point if you are converting from phpBB 2.0.x, you should refer to the <a href="#convert">conversion steps</a> for further information. If not, you should remove the install directory from your server as you will only be able to access the Administration Control Panel whilst it is present.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="update"></a><h1>4. Updating from stable releases of phpBB 3.0.x</h1> + +<p>If you are currently using a stable release of phpBB3 updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Please Note</strong>: That before updating we heavily recommend you do a <em>full backup of your database and existing phpBB3 files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p> + +<p><strong>Please make sure you update your phpBB3 source files too, even if you run the <code>database_update.php</code> file.</strong></p> + +<a name="update_full"></a><b>4.i. Full package</b> +<br /><br /> +<div class="paragraph"> + + <p>The full package is normally meant for new installations, but if you want to replace all source files this package comes in handy.</p> + + <p>First you should make a copy of your existing <em>config.php</em> file, keep it in a safe place! Next delete all the existing phpBB3 files, you may want to leave your <code>files/</code> and <code>images/</code> directory in place. You can leave alternative styles in-place too. With this complete you can upload the new phpBB3 files (see <a href="#install">New installation</a> for details if necessary). Once complete copy back your saved <em>config.php</em>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p> + + <p>You should now run <code>install/database_update.php</code> which, depending on your previous version, will make a number of database changes. You may receive <em>FAILURES</em> during this procedure, they should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p> + + <p>Once the install/database_update.php has completed you may proceed to the Administration Control Panel and check remove the install directory as advised.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="update_files"></a><b>4.ii. Changed files only</b> +<br /><br /> +<div class="paragraph"> + + <p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have <samp>3.0.0</samp> you should select the phpBB-3.0.0_to_3.0.1.zip/tar.gz file.</p> + + <p>The directory structure has been preserved enabling you (if you wish) to simply upload the contents of the archive to the appropriate location on your server, i.e. simply overwrite the existing files with the new versions. Do not forget that if you have installed any Mods these files will overwrite the originals possibly destroying them in the process. You will need to re-add Mods to any affected file before uploading.</p> + + <p>As for the other update procedures you should run <b>install/database_update.php</b> after you have finished updating the files. This will update your database schema and increment the version number.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="update_patch"></a><b>4.iii. Patch file</b> +<br /><br /> + +<div class="paragraph"> + + <p>The patch file is probably the best solution for those with many Mods or other changes who do not want to re-add them back to all the changed files. To use this you will need command line access to a standard UNIX type <strong>patch</strong> application. If you do not have access to such an application but still want to use this update approach we recommend the <a href="update_auto">Automatic update package</a> explained below.</p> + + <p>A number of patch files are provided to allow you to update from previous stable releases. Select the correct patch, e.g. if your current version is 3.0.0 you need the phpBB-3.0.0_to_3.0.1.patch file. Place the correct patch in the parent directory containing the phpBB3 core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <strong>patch -cl -d [PHPBB DIRECTORY] -p1 < [PATCH NAME]</strong> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB3, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p> + + <p>If you do get failures you should look at using the <a href="#update_files">Changed files only</a> package to replace the files which failed to patch, please note that you will need to manually re-add any Mods to these particular files. Alternatively if you know how you can examine the .rej files to determine what failed where and make manual adjustments to the relevant source.</p> + + <p>You should of course delete the patch file (or files) after use. As for the other update procedures you should run <code>install/database_update.php</code> after you have finished updating the files. This will update your database schema and data (if appropriate) and increment the version number.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="update_auto"></a><b>4.iv. Automatic update package</b> +<br /><br /> + +<div class="paragraph"> + + <p>The automatic update package is holding - contrary to the others - only the update informations for updating the last released version to the latest available version. These package is meant for use with the automatic update tool.</p> + + <p>To perform the update, either follow the instructions from the <code>Administration Control Panel -> System</code> Tab - this should point out that you are running an outdated version and will guide you through the update - or following the instructions listed below.</p> + + <ul class="menu"> + <li>Go to the <a href="http://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there.</li> + <li>Upload the archives contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li> + <li>After the install folder is present, phpBB3 will go offline automatically.</li> + <li>Point your browser to the install directory, for example <samp>http://www.example.com/phpBB3/install/</samp></li> + <li>Choose the "Update" Tab and follow the instructions</li> + </ul> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="update_all"></a><b>4.v. All package types</b> +<br /><br /> + +<div class="paragraph"> + + <p>If you have non-English language packs installed you may want to see if a new version has been made available. A number of missing strings may have been added which, though not essential, may be beneficial to users. Please note that at this time not all language packs have been updated so you should be prepared to periodically check for updates.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="convert"></a><h1>5. Conversion from phpBB 2.0.x to phpBB 3.0.x</h1> + +<p>This paragraph explains the steps necessary to convert your existing phpBB2 installation to phpBB3.</p> + +<a name="prereq"></a><b>5.i. Requirements before converting</b> +<br /><br /> + +<div class="paragraph"> + <p>Before converting we heavily recommend you do a <em>full backup of your database and files</em>! If you are unsure how to achieve this please ask your hosting provider for advice. In order to convert, you need to have a new phpBB3 installation within the same database (but with a different prefix) as your old 2.0.x installation. You basically need to follow the basic instructions given for <a href="#install">New installations</a>. Please <strong>do not</strong> overwrite any old files - install phpBB3 at a different location.</p> + + <p>Once you made a backup of everything and also have a brand new phpBB3 installation, you can now begin the conversion.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="conversion"></a><b>5.ii. Converting</b> +<br /><br /> + +<div class="paragraph"> + + <p>To begin the conversion visit the install folder of your phpBB3 installation (the same as you have done for installing). Now you will see a new tab <em>Convert</em>. Click this tab.</p> + + <p>As with install the conversion is automated. Your previous 2.0.x database tables will not be touched as well as the original 2.0.x files remaining untouched. The conversion is actually only filling your phpBB3 database tables and copying additional data over to your phpBB3 installation. This has the benefit that if something goes wrong you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend you disable your old installation while converting, else you may have inconsistent data after the conversion.</p> + + <p>Please note that this conversion process may take quite some time and depending on your hosting provider this may result in it failing (due to web server or other timeout issues). If this is the case you should ask your provider if they are willing to allow the convert script to temporarily exceed their limits (be nice and they will probably be quite helpful).</p> + + <p>Once completed your board should be immediately available. If you encountered errors you should report the problems to our bug tracker or seek help via our forums (see <a href="README.html">README</a> for details).</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="postreq"></a><b>5.iii. Things to do after conversion</b> +<br /><br /> + +<div class="paragraph"> + + <p>After successful conversion there may be a few items you need to do - apart from checking if the installation is accessible and everything displayed correctly.</p> + + <p>The first thing you may want to do is going to the administration control panel and checking every configuration item within the general tab. Thereafter you may want to adjust the forum descriptions/names if you entered HTML there. You also may want to access the other administrative sections, e.g. adjusting permissions, smilies, icons, ranks, etc.</p> + + <p>Within the conversion the search index has not been created or transferred. This means after conversion you are not able to find any matches if you want to search for something. We recommend you rebuild your search index within <code>Admin -> Maintenance -> Database -> Search Index</code>.</p> + + <p>Once you are pleased with your new installation you may want to give it the name of your old installation, changing the directory name. With phpBB3 this is possible without any problems - but you may still want to check your cookie settings within the administration panel, if the cookie path need to be adjusted prior to renaming.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="postinstall"></a><h1>6. Important (security related) post-Install tasks for all installation methods</h1> + +<div class="paragraph"> + + <p>Once you have succssfully installed phpBB3 you <strong>MUST</strong> ensure you remove the entire install/ directory. Leaving the install directory in place is a <em>very serious potential security issue</em> which may lead to deletion or alteration of files, etc. Please note that until this directory is not removed phpBB3 will not operate and a warning message will be displayed. Beyond this <strong>essential</strong> deletion you may also wish to delete the docs/ directories if you wish.</p> + + <p>With these directories deleted you should proceed to the administration panel. Depending on how the installation completed you may have been directed there automatically. If not, login as the administrator you specified during install/conversion and click the <strong>Administration Panel</strong> link at the bottom of any page. Ensure that details specified in <code>Admin -> General</code> are correct!</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="avatars"></a><b>6.i. Uploadable avatars</b> +<br /><br /> +<div class="paragraph"> + + <p>phpBB3 supports several methods for allowing users to select their own <em>avatar</em> (an avatar is a small image generally unique to a user and displayed just below their username in posts).</p> + + <p>Two of these options allow users to upload an avatar from their machine or a remote location (via a URL). If you wish to enable this function you should first ensure the correct paths for uploadeable avatars is set in <code>Admin -> General -> Board Configuration -> Avatar settings</code>. By default this is <em>images/avatars/uploads</em> but you can set it to whatever you like, just ensure the configuration setting is updated. You must also ensure this directory can be written to by the webserver. Usually this means you have to alter its permissions to allow anyone to read and write to. Exactly how you should do this depends on your ftp client or server operating system.</p> + + <p>On UNIX systems for example you set the directory to a+rwx (or ugo+rwx or even 777). This can be done from a command line on your server using chmod or via your FTP client (using the Change Permissions, chmod or other Permissions dialoge box, see your FTP clients documentation for help). Most FTP clients list permissions in the form of User (Read, Write, Execute), Group (Read, Write, Execute) and Other (Read, Write, Execute). You need to tick all of these boxes to set correct permissions.</p> + + <p>On Windows system you need to ensure the directory is not write-protected and that it has global write permissions (see your servers documentation or contact your hosting provider if you are unsure on how to achieve this).</p> + + <p>Please be aware that setting a directories permissions to global write access is a potential security issue. While it is unlikely that anything nasty will occur (such as all the avatars being deleted) there are always people out there to cause trouble. Therefore you should monitor this directory and if possible make regular backups.</p> +</div> + +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="disclaimer"></a><h1>7. Copyright and disclaimer</h1> + + <div class="paragraph"> + + <p>This application is opensource software released under the <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) 2007 <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p> + +</div> +<a href="#top">Top</a> + +<!-- END DOCUMENT --> + +</div> + +<div id="footer"> <br /><br /></div> + +</body> +</html> diff --git a/phpBB/docs/README.html b/phpBB/docs/README.html new file mode 100644 index 0000000000..196a0f2de4 --- /dev/null +++ b/phpBB/docs/README.html @@ -0,0 +1,432 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<title>phpBB 3.0.x Readme</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta http-equiv="Content-Style-Type" content="text/css" /> +<meta name="resource-type" content="document" /> +<meta name="description" lang="en" content="phpBB 3.0.x Readme" /> +<meta name="keywords" lang="en" content="" /> +<meta name="author" content="phpBB Group" /> +<meta name="copyright" content="phpBB Group" /> +<meta name="MSSmartTagsPreventParsing" content="true" /> + +<style type="text/css"> +<!-- + +/* The original "subSilver" theme for phpBB2 Created by subBlue design :: http://www.subBlue.com */ +body { + background-color: white; + font-family: Verdana, Arial, Helvetica, sans-serif; + margin: 0; + border: 0; + padding: 0; +} + +img { + border: 0; +} + +p { + font-size: 8pt; +} + +hr { + height: 0; + border: solid #D1D7DC 0; + border-top-width: 1px; +} + +#title, h1 { + font: bold 18pt 'Trebuchet MS', Verdana, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h2 { + font: bold 12pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +h3 { + font: bold 10pt Arial, Helvetica, sans-serif; + text-decoration: none; + line-height: 120%; +} + +.paragraph { + margin-left: 20px; +} + +/* Structure */ +#logo { + background: #fff url(header_bg.jpg) repeat-x top right; + height: 60px; +} + +#title { + color: #12749b; + float: right; + margin: 10px 10px 0; +} + +#main { + margin-left: 25px; + margin-right: 25px; +} + +.good { + color: green; +} + +.bad { + color: red; +} + +#footer { + margin-left: 75px; + font-size: 70%; + color: #006600; +} + +code { + color: #006600; + font-weight: normal; + font-family: 'Courier New', monospace; + border-color: #D1D7DC; + border-width: 1px; + border-style: solid; + background-color: #FAFAFA; +} + +.indent p { + padding-left: 20px; + font-size: 90%; +} + +/* Anchors */ +a { + font-size: 70%; +} + +a:link, a:active, a:visited { + color: #006699; + text-decoration: none; +} + +a:hover { + color: #DD6900; + text-decoration: underline; +} + +a.nav { + color: #006699; + text-decoration: none; +} + +a.nav:hover { + text-decoration: underline; +} + +p a { + font-size: 100%; +} + +.menu { + font-size: 80%; +} + +.menu li a { + font-size: 100%; +} + +.comment { + color: green; +} + +//--> +</style> + +</head> + +<body> + +<div id="logo"> + <div id="title">phpBB 3.0.x Readme</div> + <img src="header_left.jpg" alt="phpBB Logo" /> +</div> + +<a name="top"></a><div id="main"> + +<!-- BEGIN DOCUMENT --> + +<p>Thank you for downloading phpBB3. This README will guide through the basics of installation and operation of phpBB3. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p> + +<h1>Readme</h1> + +<ol class="menu"> + <li><a href="#install">Installing phpBB3</a></li> + <li><a href="#run">Running phpBB3</a> + <ol type="i"> + <li><a href="#i18n">Internationalisation (i18n)</a></li> + <li><a href="#styles">Styles</a></li> + <li><a href="#mods">Mods</a></li> + </ol> + </li> + <li><a href="#help">Getting help with phpBB3</a> + <ol type="i"> + <li><a href="#userguide">Userguide</a></li> + <li><a href="#website">Community Forums</a></li> + <li><a href="#irc">Internet Relay Chat</a></li> + </ol> + </li> + <li><a href="#status">Status of this version</a></li> + <li><a href="#bugs">Reporting Bugs</a> + <ol type="i"> + <li><a href="#securitybugs">Security related bugs</a></li> + </ol> + </li> + <li><a href="#curbugs">Overview of current bug list</a></li> + <li><a href="#php">PHP compatibility issues</a></li> + <li><a href="#disclaimer">Disclaimer</a></li> +</ol> + +<hr /> + +<a name="install"></a><h1>1. Installing phpBB3</h1> + +<div class="paragraph"> + + <p>Installation and update/conversion instructions can be found in the <a href="INSTALL.html">INSTALL</a> document contained in this distribution. If you are intending to convert from a previous phpBB 2.0.x installation we highly recommend you backup any existing data before proceeding!</p> + + <p>Users of phpBB3 Beta versions cannot directly update or convert.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="run"></a><h1>2. Running phpBB3</h1> + + <p>Once installed phpBB is easily managed by both admin and moderator control panels. If you need help or advice with phpBB please see <a href="#help">Section 3</a> below.</p> + + <a name="i18n"></a><b>2.i. Internationalisation (i18n)</b> + <br /><br /> + <div class="paragraph"> + + <p>A number of language packs and style localisations are available. You can find them on our official download page:</p> + + <p><a href="http://www.phpbb.com/downloads/">http://www.phpbb.com/downloads/</a></p> + + <p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. So please, do not ask for help in these cases!</p> + + <p>Installation of these packages is straightforward, simply download the required language pack and unarchive it into the <samp>languages/</samp> folder. Please ensure you retain the directory structure when doing this! Once uploaded go to the <code>Admin->System->Language Packs</code> and install the now appeared new language pack. To install the style image packs you should unarchive the file/s into the styles/subSilver/imageset directory, again you must retain the directory structure. Once installed the languages will become immediately available.</p> + + <p>If your language is not available please visit our forums where you will find a topic listing translations currently available or in preparation. This topic also gives you information should you wish to volunteer to translate a language not currently listed</p> + + </div> + <a href="#top">Top</a> + <br /><br /> + + <a name="styles"></a><b>2.ii. Styles</b> + <br /><br /> + <div class="paragraph"> + + <p>Although phpBB Group are rather proud of the included styles we realise that it may not be to everyones tastes. Therefore phpBB3 allows styles to be switched with relative ease. Firstly you need to locate and download a style you like. We maintain such a site at</p> + + <p><a href="http://www.phpbb.com/styles/">http://www.phpbb.com/styles/</a></p> + + <p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3.</p> + + <p>Once you have downloaded a style the usual next step is to unarchive (or upload the unarchived contents of) the package into your <samp>styles/</samp> directory. You then need to visit <code>Administration -> Styles</code>, you should see the new style available, click install and it will become available for all your users.</p> + + </div> + <a href="#top">Top</a> + <br /><br /> + + <a name="mods"></a><b>2.iii. Mods</b> + <br /><br /> + <div class="paragraph"> + + <p>Although not officially supported by phpBB Group, phpBB has a thriving modification scene. These third party modifications to the standard phpBB extend its capabilities still further and can be found at:</p> + + <p><a href="http://www.phpbb.com/mods">http://www.phpbb.com/mods</a></p> + + <p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any modification should <strong>NOT</strong> be reported to the bug tracker (see below). First remove the modification and see if the problem is resolved.</p> + + <p>Also remember that any modifications which modify the database in any way may render upgrading your forum to future versions more difficult unless we state otherwise. With all this said many users have and continue to utilise many of the mods already available with great success.</p> + + </div> + <a href="#top">Top</a> + <br /><br /> + +<hr /> + +<a name="help"></a><h1>3. Getting help with phpBB3</h1> + + <p>phpBB3 can seem a little daunting to new users in places, particularly with regard the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a> which covers a few basic getting started questions. If you need additional help there are several places you should look.</p> + + <a name="userguide"></a><b>3.i. phpBB3 Userguide</b> + <br /><br /> + <div class="paragraph"> + + <p>A comprehensive userguide is now available online and can be accessed from the following location:</p> + + <p><a href="http://www.phpbb.com/support/documentation/">http://www.phpbb.com/support/documentation/</a></p> + + <p>This covers everything from installation through setting permissions and managing users.</p> + + </div> + <a href="#top">Top</a> + <br /><br /> + + <a name="website"></a><b>3.ii. Community Forums</b> + <br /><br /> + + <div class="paragraph"> + + <p>phpBB Group maintains a thriving community where a number of people have generously decided to donate their time to help support users. This site can be found at:</p> + + <p><a href="http://www.phpbb.com/">http://www.phpbb.com/</a></p> + + <p>If you do seek help via our forums please be sure to do a Search before posting. This may well save both you and us time and allow the developer, moderator and support groups to spend more time responding to people with unknown issues and problems. Please also remember that phpBB is an entirely volunteer effort, no one receives any compensation for the time they give, this includes moderators as well as developers. So please be respectful and mindful when awaiting responses.</p> + + </div> + <a href="#top">Top</a> + <br /><br /> + + <a name="irc"></a><b>3.iii Internet Relay Chat</b> + <br /><br /> + <div class="paragraph"> + + <p>Another place you may find help is our IRC channel. This operates on the Freenode IRC network, <em>irc.freenode.net</em> and the channel is <em>#phpbb</em> and can be accessed by any good IRC client such as mIRC, XChat, etc. Again, please do not abuse this service and be respectful of other users.</p> + + </div> + <a href="#top">Top</a> + <br /><br /> + +<hr /> + +<a name="status"></a><h1>4. Status of this version</h1> + +<div class="paragraph"> + <p>This is the third stable release of phpBB. The 3.0.x line is essentially feature frozen, point releases will see only bugs and such like fixed, though feature alterations and minor feature additions may be done. Our next major release will be phpBB 3.2 and the planning phase has begun (the unstable development version is 3.1). Please do not post questions asking when 3.2 will be available, no release date has been set.</p> + + <p>For those interested in the development of phpBB should keep an eye on the community forums to see how things are progressing:</p> + + <p><a href="http://area51.phpbb.com/">http://area51.phpbb.com/phpBB/</a></p> + + <p>Please note that this forum should <strong>NOT</strong> be used to obtain support for or ask questions about phpBB 2.0.x or phpBB 3.0.x, the main community forums are the place for this. Any such posts will be locked and go unanswered.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="bugs"></a><h1>5. Reporting Bugs</h1> + +<div class="paragraph"> + <p>The phpBB Group uses a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums, they will be locked. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p> + + <p><a href="http://www.phpbb.com/bugs/">http://www.phpbb.com/bugs/</a></p> + + <p>While we very much appreciate receiving bug reports (the more reports the more stable phpBB will be) we ask you carry out a few steps before adding new entries:</p> + + <ul class="menu"> + <li>Firstly determine if your bug is reproduceable, how to determine this depends on the bug in question. Only if the bug is reproduceable it is likely to be a problem with phpBB3 (or in some way connected). If something cannot be reproduced it may turn out to have been your hosting provider working on something, a user doing something silly, etc. Bug reports for non-reproduceable events can slow down our attempts to fix real, reproduceable issues<br /><br /></li> + <li>Next please read or search through the existing bug reports to see if <em>your</em> bug (or one very similar to it) is already listed. If it is please add to that existing bug rather than creating a new duplicate entry (all this does is slow us down).<br /><br /></li> + <li>Check the forums (use search!) to see if people have discussed anything that sounds similar to what you are seeing. However, as noted above please <strong>DO NOT</strong> post your particular bug to the forum unless it's non-reproduceable or you are sure it's related to something you have done rather phpBB3<br /><br /></li> + <li>If no existing bug exists then please feel free to add it</li> + </ul> + + <p>If you do post a new bug (i.e. one that isn't already listed in the bug tracker) firstly make sure you have logged in (your username and password are the same as for the community forums) then please include the following details:</p> + + <ul class="menu"> + <li>Your server type/version, eg. Apache 1.3.28, IIS 4, Sambar, etc.</li> + <li>PHP version and mode of operation, eg. PHP 5.1.1 as a module, PHP 4.4.4 running as CGI, etc.</li> + <li>DB type/version, eg. MySQL 4.0.1, PostgreSQL 7.3.2, MSSQL Server 2000 SP1, etc.</li> + </ul> + + <p>The relevant database type/version is listed within the administration control panel</p> + + <p>Please also be as detailed as you can in your report, if possible list the steps required to duplicate the problem. If you have a fix which you are <strong>VERY SURE</strong> works (and is consistent with our <a href="coding-guidelines.html">coding guidelines</a>) and does not introduce further problems or incompatibilities please let us know. However only include it in the bug report if you really must, if we need it we'll ask you for it.</p> + + <p>Once a bug has been submitted you will be emailed any follow up comments added to it. <strong>Please</strong> if you are requested to supply additional information, do so! It is frustrating for us to receive bug reports, ask for additional information but get nothing. In these cases we have a policy of closing the bug, which may leave a very real problem in place. Obviously we would rather not have this situation arise.</p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="securitybugs"></a><b>5.i. Security related bugs</b> +<br /><br /> +<div class="paragraph"> + <p>If you find a potential security related vulnerability in phpBB please <strong>DO NOT</strong> post it to the bug tracker, public forums, etc.! Doing so may allow unscrupulous users to take advantage of it before we have time to put a fix in place. All security related bugs should be sent to our security tracker:</p> + + <p><a href="http://www.phpbb.com/security/">http://www.phpbb.com/security/</a></p> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="curbugs"></a><h1>6. Overview of current bug list</h1> + +<div class="paragraph"> + <p>This list is not complete but does represent those bugs which may effect users on a wider scale. Other bugs listed in the tracker have typically been shown to be limited to certain setups or methods of installation/upgrade.</p> + + <ul class="menu"> + <li>By default cannot post very large messages with MSSQL (this can be configured within MSSQL)</li> + <li>Conversions may fail to complete on large boards under some hosts</li> + </ul> + +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="php"></a><h1>7. PHP compatibility issues</h1> + +<div class="paragraph"> + <p>phpBB is no longer supported on PHP3 due to several compatibility issues and we recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 4.3.3.</p> + + <p>Please remember that running any application on a developmental version of PHP can lead to strange/unexpected results which may appear to be bugs in the application (which may not be true). Therefore we recommend you upgrade to the newest stable version of PHP before running phpBB3. If you are running a developmental version of PHP please check any bugs you find on a system running a stable release before submitting.</p> + + <p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MSSQL Server 2000, PostgreSQL 7.x, Oracle 8, SQLite and Firebird. Versions of PHP used range from 4.3.3 to 6.0.0-dev without problem. </p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<a name="phpsec"></a><b>7.i. Notice on PHP security issues</b> + +<br /><br /> +<div class="paragraph"> +<p>Currently there are no known issues regarding PHP security.</p> +</div> +<a href="#top">Top</a> +<br /><br /> + +<hr /> + +<a name="disclaimer"></a><h1>8. Copyright and disclaimer</h1> + + <div class="paragraph"> + + <p>This application is opensource software released under the <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>. Please see source code and the docs directory for more details. This package and its contents are Copyright (c) 2007 <a href="http://www.phpbb.com/">phpBB Group</a>, All Rights Reserved.</p> + +</div> +<a href="#top">Top</a> + +<!-- END DOCUMENT --> + +</div> + +<div id="footer"> <br /><br /></div> + +</body> +</html> diff --git a/phpBB/docs/auth_api.html b/phpBB/docs/auth_api.html index edf23350ae..8e624eae83 100644 --- a/phpBB/docs/auth_api.html +++ b/phpBB/docs/auth_api.html @@ -216,7 +216,7 @@ body { $auth = new auth(); </pre></blockquote> - <p>Once an instance of the class has been created you are free to call the various methods it contains. Please note that should you wish to use the <code>auth_admin</code> methods you will need to instantiate this seperately but in the same way.</p> + <p>Once an instance of the class has been created you are free to call the various methods it contains. Please note that should you wish to use the <code>auth_admin</code> methods you will need to instantiate this separately but in the same way.</p> </div> <a href="#top">Top</a> @@ -349,9 +349,9 @@ $result = acl_getf_global(<code>option</code>) <div class="paragraph"> - <p>A number of additional methods are available related to <code>auth</code>. These handle more basic functions such as adding user and group permissions, new options and clearing the user cache. These methods are contained within a seperate class, <code>auth_admin</code>. This can be found in <code>includes/acp/auth.php</code>.</p> + <p>A number of additional methods are available related to <code>auth</code>. These handle more basic functions such as adding user and group permissions, new options and clearing the user cache. These methods are contained within a separate class, <code>auth_admin</code>. This can be found in <code>includes/acp/auth.php</code>.</p> - <p>To use any methods this class contains it first needs to be instantiated seperately from <code>auth</code>. This is achieved in the same way as <code>auth</code>:</p> + <p>To use any methods this class contains it first needs to be instantiated separately from <code>auth</code>. This is achieved in the same way as <code>auth</code>:</p> <blockquote><pre> $auth_admin = new auth_admin(); diff --git a/phpBB/docs/coding-guidelines.html b/phpBB/docs/coding-guidelines.html index 69e51a1059..63d83a7c20 100644 --- a/phpBB/docs/coding-guidelines.html +++ b/phpBB/docs/coding-guidelines.html @@ -16,17 +16,13 @@ <style type="text/css"> <!-- -/* - The original "subSilver" theme for phpBB2 - Created by subBlue design :: http://www.subBlue.com -*/ - +/* The original "subSilver" theme for phpBB2 Created by subBlue design :: http://www.subBlue.com */ body { - background-color: white; - font-family: Verdana, Arial, Helvetica, sans-serif; - margin: 0px; - border: 0px; - padding: 0px; + background-color: white; + font-family: Verdana, Arial, Helvetica, sans-serif; + margin: 0; + border: 0; + padding: 0; } img { @@ -34,40 +30,38 @@ img { } p { - font-size: 8pt; + font-size: 8pt; } hr { - height: 0px; - border: solid #D1D7DC 0px; + height: 0; + border: solid #D1D7DC 0; border-top-width: 1px; } #title, h1 { font: bold 18pt 'Trebuchet MS', Verdana, sans-serif; - text-decoration: none; - line-height: 120%; + text-decoration: none; + line-height: 120%; } h2 { font: bold 12pt Arial, Helvetica, sans-serif; - text-decoration: none; - line-height: 120%; + text-decoration: none; + line-height: 120%; } h3 { font: bold 10pt Arial, Helvetica, sans-serif; - text-decoration: none; - line-height: 120%; + text-decoration: none; + line-height: 120%; } .paragraph { margin-left: 20px; } -/* - Structure -*/ +/* Structure */ #logo { background: #fff url(header_bg.jpg) repeat-x top right; height: 60px; @@ -98,14 +92,14 @@ h3 { color: #006600; } -code { +code { color: #006600; - font-weight: normal; - font-family: 'Courier New', monospace; - border-color: #D1D7DC; - border-width: 1px; - border-style: solid; - background-color: #FAFAFA; + font-weight: normal; + font-family: 'Courier New', monospace; + border-color: #D1D7DC; + border-width: 1px; + border-style: solid; + background-color: #FAFAFA; } .indent p { @@ -113,30 +107,28 @@ code { font-size: 90%; } -/* - Anchors -*/ +/* Anchors */ a { font-size: 70%; } a:link, a:active, a:visited { color: #006699; - text-decoration: none; + text-decoration: none; } a:hover { - color: #DD6900; - text-decoration: underline; + color: #DD6900; + text-decoration: underline; } a.nav { - color: #006699; - text-decoration: none; + color: #006699; + text-decoration: none; } a.nav:hover { - text-decoration: underline; + text-decoration: underline; } p a { @@ -154,22 +146,9 @@ p a { .comment { color: green; } -//--> -</style> -<!--[if IE]> -<style type="text/css"> -body { - scrollbar-face-color: #DEE3E7; - scrollbar-highlight-color: white; - scrollbar-shadow-color: #DEE3E7; - scrollbar-3dlight-color: #D1D7DC; - scrollbar-arrow-color: #006699; - scrollbar-track-color: #EFEFEF; - scrollbar-darkshadow-color: #98AAB1; -} +//--> </style> -<![endif]--> </head> @@ -177,11 +156,13 @@ body { <div id="logo"> <div id="title">Coding Guidelines</div> - <a href="index.php"><img src="header_left.jpg" alt="phpBB Logo" /></a> + <img src="header_left.jpg" alt="phpBB Logo" /> </div> <a name="top"></a><div id="main"> +<!-- BEGIN DOCUMENT --> + <p>These are the phpBB Coding Guidelines for Olympus, all attempts should be made to follow it as closely as possible.<br />This document is (c) 2006 phpBB Group, copying or redistribution is not allowed without permission.</p> <h1>Coding Guidelines</h1> @@ -275,7 +256,7 @@ body { <h3>Files containing only classes:</h3> - <p>Do not forget to comment the class. Classes need a seperate @package definition, it is the same as the header package name. Apart from this special case the above statement for files containing only functions needs to be applied to classes and it's methods too.</p> + <p>Do not forget to comment the class. Classes need a separate @package definition, it is the same as the header package name. Apart from this special case the above statement for files containing only functions needs to be applied to classes and it's methods too.</p> <h3>Code following the header but only functions/classes file:</h3> @@ -310,7 +291,7 @@ class ... <p>The following packages are defined, and related new features/functions should be placed within the mentioned files/locations, as well as specifying the correct package name. The package names are bold within this list:</p> <ul class="menu"> - <li><b>phpBB3</b><br />Core files and all files not assigned to a seperate package</li> + <li><b>phpBB3</b><br />Core files and all files not assigned to a separate package</li> <li><b>acm</b><br /><code>/includes/acm</code>, <code>/includes/cache.php</code><br />Cache System</li> <li><b>acp</b><br /><code>/adm</code>, <code>/includes/acp</code>, <code>/includes/functions_admin.php</code><br />Administration Control Panel</li> <li><b>dbal</b><br /><code>/includes/db</code><br />Database Abstraction Layer.<br />Base class is <code>dbal</code> @@ -881,7 +862,7 @@ $sql_array = array( 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id' ) - ); + ), 'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . ' AND f.forum_id = fw.forum_id', @@ -1037,7 +1018,7 @@ trigger_error($user->lang['NO_FORUM']); </pre></blockquote> <blockquote><pre> -trigger_error('NO_APPROPIATE_MODE', E_USER_ERROR); +trigger_error('NO_APPROPRIATE_MODE', E_USER_ERROR); </pre></blockquote> <h3>Url formatting</h3> @@ -1108,7 +1089,7 @@ append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp; <p><strong>Use div container/css for styling and table for data representation.</strong></p> -<p>The seperate catXXXX and thXXX classes are gone. When defining a header cell just use <code><th></code> rather than <code><th class="thHead"></code> etc. Similarly for cat, don't use <code><td class="catLeft"></code> use <code><td class="cat"></code> etc.</p> +<p>The separate catXXXX and thXXX classes are gone. When defining a header cell just use <code><th></code> rather than <code><th class="thHead"></code> etc. Similarly for cat, don't use <code><td class="catLeft"></code> use <code><td class="cat"></code> etc.</p> <p>Try to retain consistency of basic layout and class useage, i.e. _EXPLAIN text should generally be placed below the title it explains, e.g. <code>{L_POST_USERNAME}<br /><span class="gensmall">{L_POST_USERNAME_EXPLAIN}</span></code> is the typical way of handling this ... there may be exceptions and this isn't a hard and fast rule.</p> @@ -1212,7 +1193,7 @@ append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp; != [neq, ne] <> (same as !=) !== (not equivalent in value and type) -=== (equivalent in value and type) +=== (equivalent in value and type) > [gt] < [lt] >= [gte] @@ -1554,6 +1535,8 @@ div </div> <a href="#top">Top</a> +<!-- END DOCUMENT --> + </div> <div id="footer"> $Id$ diff --git a/phpBB/download.php b/phpBB/download.php index 790938a7d4..41d09287de 100644 --- a/phpBB/download.php +++ b/phpBB/download.php @@ -63,7 +63,8 @@ if ($attachment['is_orphan']) trigger_error('ERROR_NO_ATTACHMENT'); } - $extensions = $cache->obtain_attach_extensions(); + // Obtain all extensions... + $extensions = $cache->obtain_attach_extensions(true); } else { @@ -106,14 +107,14 @@ else } else { - $row['forum_id'] = 0; + $row['forum_id'] = false; if (!$auth->acl_get('u_pm_download')) { trigger_error('SORRY_AUTH_VIEW_ATTACH'); } } - // disallowed ? + // disallowed? $extensions = array(); if (!extension_allowed($row['forum_id'], $attachment['extension'], $extensions)) { @@ -160,6 +161,7 @@ else if (($display_cat == ATTACHMENT_CATEGORY_NONE || $display_cat == ATTACHMENT // Determine the 'presenting'-method if ($download_mode == PHYSICAL_LINK) { + // This presenting method should no longer be used if (!@is_dir($phpbb_root_path . $config['upload_path'])) { trigger_error($user->lang['PHYSICAL_DOWNLOAD_NOT_POSSIBLE']); diff --git a/phpBB/faq.php b/phpBB/faq.php index a0976e7c67..b74ede66e4 100644 --- a/phpBB/faq.php +++ b/phpBB/faq.php @@ -32,7 +32,7 @@ switch ($mode) break; default: - $l_title = $user->lang['FAQ']; + $l_title = $user->lang['FAQ_EXPLAIN']; $user->add_lang('faq', false, true); break; } diff --git a/phpBB/includes/acm/acm_file.php b/phpBB/includes/acm/acm_file.php index b6af055399..e5ffe16d72 100644 --- a/phpBB/includes/acm/acm_file.php +++ b/phpBB/includes/acm/acm_file.php @@ -71,12 +71,11 @@ class acm } global $phpEx; - $file = "<?php\n\$this->vars = " . $this->format_array($this->vars) . ";\n\n\$this->var_expires = " . $this->format_array($this->var_expires) . "\n?>"; if ($fp = @fopen($this->cache_dir . 'data_global.' . $phpEx, 'wb')) { @flock($fp, LOCK_EX); - fwrite($fp, $file); + fwrite($fp, "<?php\n\$this->vars = " . var_export($this->vars, true) . ";\n\n\$this->var_expires = " . var_export($this->var_expires, true) . "\n?>"); @flock($fp, LOCK_UN); fclose($fp); } @@ -101,7 +100,13 @@ class acm { global $phpEx; - $dir = opendir($this->cache_dir); + $dir = @opendir($this->cache_dir); + + if (!$dir) + { + return; + } + while (($entry = readdir($dir)) !== false) { if (!preg_match('/^(sql_|data_(?!global))/', $entry)) @@ -116,7 +121,7 @@ class acm @unlink($this->cache_dir . $entry); } } - @closedir($dir); + closedir($dir); if (file_exists($this->cache_dir . 'data_global.' . $phpEx)) { @@ -151,7 +156,7 @@ class acm return false; } - include($this->cache_dir . 'data' . $var_name . ".$phpEx"); + include($this->cache_dir . "data{$var_name}.$phpEx"); return (isset($data)) ? $data : false; } else @@ -169,10 +174,10 @@ class acm { global $phpEx; - if ($fp = @fopen($this->cache_dir . 'data' . $var_name . ".$phpEx", 'wb')) + if ($fp = @fopen($this->cache_dir . "data{$var_name}.$phpEx", 'wb')) { @flock($fp, LOCK_EX); - fwrite($fp, "<?php\n\$expired = (time() > " . (time() + $ttl) . ") ? true : false;\nif (\$expired) { return; }\n\n\$data = unserialize('" . str_replace("'", "\\'", str_replace('\\', '\\\\', serialize($var))) . "');\n?>"); + fwrite($fp, "<?php\n\$expired = (time() > " . (time() + $ttl) . ") ? true : false;\nif (\$expired) { return; }\n\n\$data = " . var_export($var, true) . ";\n?>"); @flock($fp, LOCK_UN); fclose($fp); } @@ -191,7 +196,13 @@ class acm function purge() { // Purge all phpbb cache files - $dir = opendir($this->cache_dir); + $dir = @opendir($this->cache_dir); + + if (!$dir) + { + return; + } + while (($entry = readdir($dir)) !== false) { if (strpos($entry, 'sql_') !== 0 && strpos($entry, 'data_') !== 0 && strpos($entry, 'ctpl_') !== 0 && strpos($entry, 'tpl_') !== 0) @@ -201,7 +212,7 @@ class acm @unlink($this->cache_dir . $entry); } - @closedir($dir); + closedir($dir); unset($this->vars); unset($this->var_expires); @@ -222,7 +233,13 @@ class acm { $regex = '(' . ((is_array($table)) ? implode('|', $table) : $table) . ')'; - $dir = opendir($this->cache_dir); + $dir = @opendir($this->cache_dir); + + if (!$dir) + { + return; + } + while (($entry = readdir($dir)) !== false) { if (strpos($entry, 'sql_') !== 0) @@ -239,7 +256,7 @@ class acm @unlink($this->cache_dir . $entry); } } - @closedir($dir); + closedir($dir); return; } @@ -291,37 +308,6 @@ class acm } /** - * Format an array to be stored on filesystem - */ - function format_array($array, $tab = '') - { - $tab .= "\t"; - - $lines = array(); - foreach ($array as $k => $v) - { - if (is_array($v)) - { - $lines[] = "\n{$tab}'$k' => " . $this->format_array($v, $tab); - } - else if (is_int($v)) - { - $lines[] = "\n{$tab}'$k' => $v"; - } - else if (is_bool($v)) - { - $lines[] = "\n{$tab}'$k' => " . (($v) ? 'true' : 'false'); - } - else - { - $lines[] = "\n{$tab}'$k' => '" . str_replace("'", "\\'", str_replace('\\', '\\\\', $v)) . "'"; - } - } - - return 'array(' . implode(',', $lines) . ')'; - } - - /** * Load cached sql query */ function sql_load($query) @@ -368,7 +354,6 @@ class acm { @flock($fp, LOCK_EX); - $lines = array(); $query_id = sizeof($this->sql_rowset); $this->sql_rowset[$query_id] = array(); $this->sql_row_pointer[$query_id] = 0; @@ -376,12 +361,13 @@ class acm while ($row = $db->sql_fetchrow($query_result)) { $this->sql_rowset[$query_id][] = $row; - - $lines[] = "unserialize('" . str_replace("'", "\\'", str_replace('\\', '\\\\', serialize($row))) . "')"; } $db->sql_freeresult($query_result); - fwrite($fp, "<?php\n\n/*\n" . str_replace('*/', '*\/', $query) . "\n*/\n\n\$expired = (time() > " . (time() + $ttl) . ") ? true : false;\nif (\$expired) { return; }\n\n\$this->sql_rowset[\$query_id] = array(" . implode(',', $lines) . ') ?>'); + $file = "<?php\n\n/*\n" . str_replace('*/', '*\/', $query) . "\n*/\n"; + $file .= "\n\$expired = (time() > " . (time() + $ttl) . ") ? true : false;\nif (\$expired) { return; }\n"; + + fwrite($fp, $file . "\n\$this->sql_rowset[\$query_id] = " . var_export($this->sql_rowset[$query_id], true) . ";\n?>"); @flock($fp, LOCK_UN); fclose($fp); diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php index 59694b294e..23b67aadc7 100644 --- a/phpBB/includes/acp/acp_attachments.php +++ b/phpBB/includes/acp/acp_attachments.php @@ -56,8 +56,7 @@ class acp_attachments $template->assign_vars(array( 'L_TITLE' => $user->lang[$l_title], 'L_TITLE_EXPLAIN' => $user->lang[$l_title . '_EXPLAIN'], - 'U_ACTION' => $this->u_action, - ) + 'U_ACTION' => $this->u_action) ); switch ($mode) @@ -91,9 +90,9 @@ class acp_attachments 'allow_pm_attach' => array('lang' => 'ALLOW_PM_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'upload_path' => array('lang' => 'UPLOAD_DIR', 'validate' => 'wpath', 'type' => 'text:25:100', 'explain' => true), 'display_order' => array('lang' => 'DISPLAY_ORDER', 'validate' => 'bool', 'type' => 'custom', 'method' => 'display_order', 'explain' => true), - 'attachment_quota' => array('lang' => 'ATTACH_QUOTA', 'validate' => 'int', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true), - 'max_filesize' => array('lang' => 'ATTACH_MAX_FILESIZE', 'validate' => 'int', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true), - 'max_filesize_pm' => array('lang' => 'ATTACH_MAX_PM_FILESIZE','validate' => 'int', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true), + 'attachment_quota' => array('lang' => 'ATTACH_QUOTA', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true), + 'max_filesize' => array('lang' => 'ATTACH_MAX_FILESIZE', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true), + 'max_filesize_pm' => array('lang' => 'ATTACH_MAX_PM_FILESIZE','validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true), 'max_attachments' => array('lang' => 'MAX_ATTACHMENTS', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => false), 'max_attachments_pm' => array('lang' => 'MAX_ATTACHMENTS_PM', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => false), 'secure_downloads' => array('lang' => 'SECURE_DOWNLOADS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), @@ -106,8 +105,8 @@ class acp_attachments 'img_max_thumb_width' => array('lang' => 'MAX_THUMB_WIDTH', 'validate' => 'int', 'type' => 'text:7:15', 'explain' => true, 'append' => ' px'), 'img_min_thumb_filesize' => array('lang' => 'MIN_THUMB_FILESIZE', 'validate' => 'int', 'type' => 'text:7:15', 'explain' => true, 'append' => ' ' . $user->lang['BYTES']), 'img_imagick' => array('lang' => 'IMAGICK_PATH', 'validate' => 'string', 'type' => 'text:20:200', 'explain' => true, 'append' => ' <span>[ <a href="' . $this->u_action . '&action=imgmagick">' . $user->lang['SEARCH_IMAGICK'] . '</a> ]</span>'), - 'img_max' => array('lang' => 'MAX_IMAGE_SIZE', 'validate' => 'int', 'type' => 'dimension:3:4', 'explain' => true), - 'img_link' => array('lang' => 'IMAGE_LINK_SIZE', 'validate' => 'int', 'type' => 'dimension:3:4', 'explain' => true), + 'img_max' => array('lang' => 'MAX_IMAGE_SIZE', 'validate' => 'int', 'type' => 'dimension:3:4', 'explain' => true, 'append' => ' px'), + 'img_link' => array('lang' => 'IMAGE_LINK_SIZE', 'validate' => 'int', 'type' => 'dimension:3:4', 'explain' => true, 'append' => ' px'), ) ); @@ -181,8 +180,7 @@ class acp_attachments $template->assign_vars(array( 'U_SEARCH_IMAGICK' => $this->u_action . '&action=imgmagick', - 'S_THUMBNAIL_SUPPORT' => (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !sizeof($supported_types['format']))) ? false : true, - ) + 'S_THUMBNAIL_SUPPORT' => (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !sizeof($supported_types['format']))) ? false : true) ); // Secure Download Options - Same procedure as with banning @@ -200,7 +198,7 @@ class acp_attachments $value = ($row['site_ip']) ? $row['site_ip'] : $row['site_hostname']; if ($value) { - $defined_ips .= '<option' . (($row['ip_exclude']) ? ' class="sep"' : '') . ' value="' . $row['site_id'] . '">' . $value . '</option>'; + $defined_ips .= '<option' . (($row['ip_exclude']) ? ' class="sep"' : '') . ' value="' . $row['site_id'] . '">' . $value . '</option>'; $ips[$row['site_id']] = $value; } } @@ -216,8 +214,7 @@ class acp_attachments 'L_SECURE_TITLE' => $user->lang['DEFINE_' . $allow_deny . '_IPS'], 'L_IP_EXCLUDE' => $user->lang['EXCLUDE_FROM_' . $allow_deny . '_IP'], - 'L_REMOVE_IPS' => $user->lang['REMOVE_' . $allow_deny . '_IPS'], - ) + 'L_REMOVE_IPS' => $user->lang['REMOVE_' . $allow_deny . '_IPS']) ); // Output relevant options @@ -271,8 +268,8 @@ class acp_attachments if ($submit) { // Change Extensions ? - $extension_change_list = (isset($_POST['extension_change_list'])) ? array_map('intval', $_POST['extension_change_list']) : array(); - $group_select_list = (isset($_POST['group_select'])) ? array_map('intval', $_POST['group_select']) : array(); + $extension_change_list = request_var('extension_change_list', array(0)); + $group_select_list = request_var('group_select', array(0)); // Generate correct Change List $extensions = array(); @@ -294,7 +291,7 @@ class acp_attachments $sql = 'UPDATE ' . EXTENSIONS_TABLE . ' SET group_id = ' . (int) $extensions[$row['extension_id']]['group_id'] . ' WHERE extension_id = ' . $row['extension_id']; - $db->sql_query($sql); + $db->sql_query($sql); add_log('admin', 'LOG_ATTACH_EXT_UPDATE', $row['extension']); } @@ -302,7 +299,7 @@ class acp_attachments $db->sql_freeresult($result); // Delete Extension? - $extension_id_list = (isset($_POST['extension_id_list'])) ? array_map('intval', $_POST['extension_id_list']) : array(); + $extension_id_list = request_var('extension_id_list', array(0)); if (sizeof($extension_id_list)) { @@ -332,7 +329,7 @@ class acp_attachments $add_extension_group = request_var('add_group_select', 0); $add = (isset($_POST['add_extension_check'])) ? true : false; - if ($add_extension != '' && $add) + if ($add_extension && $add) { if (!sizeof($error)) { @@ -353,7 +350,7 @@ class acp_attachments 'group_id' => $add_extension_group, 'extension' => $add_extension ); - + $db->sql_query('INSERT INTO ' . EXTENSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); add_log('admin', 'LOG_ATTACH_EXT_ADD', $add_extension); } @@ -364,7 +361,7 @@ class acp_attachments { $notify[] = $user->lang['EXTENSIONS_UPDATED']; } - + $cache->destroy('_extensions'); } @@ -427,11 +424,17 @@ class acp_attachments if ($group_id) { - $sql = 'SELECT * FROM ' . EXTENSION_GROUPS_TABLE . " + $sql = 'SELECT * + FROM ' . EXTENSION_GROUPS_TABLE . " WHERE group_id = $group_id"; $result = $db->sql_query($sql); $ext_row = $db->sql_fetchrow($result); $db->sql_freeresult($result); + + if (!$ext_row) + { + trigger_error($user->lang['NO_EXT_GROUP_SPECIFIED'] . adm_back_link($this->u_action), E_USER_WARNING); + } } else { @@ -467,11 +470,11 @@ class acp_attachments $upload_icon = request_var('upload_icon', 'no_image'); $size_select = request_var('size_select', 'b'); $forum_select = request_var('forum_select', false); - $allowed_forums = isset($_POST['allowed_forums']) ? array_map('intval', array_values($_POST['allowed_forums'])) : array(); - $allow_in_pm = isset($_POST['allow_in_pm']) ? true : false; + $allowed_forums = request_var('allowed_forums', array(0)); + $allow_in_pm = (isset($_POST['allow_in_pm'])) ? true : false; $max_filesize = request_var('max_filesize', 0); $max_filesize = ($size_select == 'kb') ? round($max_filesize * 1024) : (($size_select == 'mb') ? round($max_filesize * 1048576) : $max_filesize); - $allow_group = (isset($_POST['allow_group'])) ? 1 : 0; + $allow_group = (isset($_POST['allow_group'])) ? true : false; if ($max_filesize == $config['max_filesize']) { @@ -486,14 +489,18 @@ class acp_attachments $group_ary = array( 'group_name' => $group_name, 'cat_id' => request_var('special_category', ATTACHMENT_CATEGORY_NONE), - 'allow_group' => $allow_group, - 'download_mode' => request_var('download_mode', INLINE_LINK), + 'allow_group' => ($allow_group) ? 1 : 0, 'upload_icon' => ($upload_icon == 'no_image') ? '' : $upload_icon, 'max_filesize' => $max_filesize, 'allowed_forums'=> ($forum_select) ? serialize($allowed_forums) : '', - 'allow_in_pm' => ($allow_in_pm) ? 1 : 0 + 'allow_in_pm' => ($allow_in_pm) ? 1 : 0, ); + if ($action == 'add') + { + $group_ary['download_mode'] = INLINE_LINK; + } + $sql = ($action == 'add') ? 'INSERT INTO ' . EXTENSION_GROUPS_TABLE . ' ' : 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' SET '; $sql .= $db->sql_build_array((($action == 'add') ? 'INSERT' : 'UPDATE'), $group_ary); $sql .= ($action == 'edit') ? " WHERE group_id = $group_id" : ''; @@ -508,7 +515,7 @@ class acp_attachments add_log('admin', 'LOG_ATTACH_EXTGROUP_' . strtoupper($action), $group_name); } - $extension_list = isset($_REQUEST['extensions']) ? array_map('intval', array_values($_REQUEST['extensions'])) : array(); + $extension_list = request_var('extensions', array(0)); if ($action == 'edit' && sizeof($extension_list)) { @@ -526,14 +533,14 @@ class acp_attachments $db->sql_query($sql); } - $this->rewrite_extensions(); + $cache->destroy('_extensions'); if (!sizeof($error)) { $notify[] = $user->lang['SUCCESS_EXTENSION_GROUP_' . strtoupper($action)]; } } - + $cat_lang = array( ATTACHMENT_CATEGORY_NONE => $user->lang['NO_FILE_CAT'], ATTACHMENT_CATEGORY_IMAGE => $user->lang['CAT_IMAGES'], @@ -572,7 +579,7 @@ class acp_attachments add_log('admin', 'LOG_ATTACH_EXTGROUP_DEL', $group_name); - $this->rewrite_extensions(); + $cache->destroy('_extensions'); trigger_error($user->lang['EXTENSION_GROUP_DELETED'] . adm_back_link($this->u_action)); } @@ -581,7 +588,6 @@ class acp_attachments confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( 'i' => $id, 'mode' => $mode, - 'action' => $action, 'group_id' => $group_id, 'action' => 'delete', ))); @@ -590,7 +596,7 @@ class acp_attachments break; case 'edit': - + if (!$group_id) { trigger_error($user->lang['NO_EXT_GROUP_SPECIFIED'] . adm_back_link($this->u_action), E_USER_WARNING); @@ -608,7 +614,7 @@ class acp_attachments // no break; case 'add': - + if ($action == 'add') { $ext_group_row = array( @@ -616,11 +622,10 @@ class acp_attachments 'cat_id' => 0, 'allow_group' => 1, 'allow_in_pm' => 1, - 'download_mode' => 1, 'upload_icon' => '', 'max_filesize' => 0, ); - + $forum_ids = array(); } @@ -668,6 +673,11 @@ class acp_attachments $selected = ($ext_group_row['upload_icon'] == $img) ? ' selected="selected"' : ''; } + if (strlen($img) > 255) + { + continue; + } + $filename_list .= '<option value="' . htmlspecialchars($img) . '"' . $selected . '>' . htmlspecialchars($img) . '</option>'; } } @@ -690,19 +700,18 @@ class acp_attachments } $template->assign_vars(array( - 'PHPBB_ROOT_PATH' => $phpbb_root_path, - 'IMG_PATH' => $img_path, - 'ACTION' => $action, - 'GROUP_ID' => $group_id, - 'GROUP_NAME' => $ext_group_row['group_name'], - 'ALLOW_GROUP' => $ext_group_row['allow_group'], - 'ALLOW_IN_PM' => $ext_group_row['allow_in_pm'], - 'UPLOAD_ICON_SRC' => $phpbb_root_path . $img_path . '/' . $ext_group_row['upload_icon'], - 'EXTGROUP_FILESIZE' => $ext_group_row['max_filesize'], + 'PHPBB_ROOT_PATH' => $phpbb_root_path, + 'IMG_PATH' => $img_path, + 'ACTION' => $action, + 'GROUP_ID' => $group_id, + 'GROUP_NAME' => $ext_group_row['group_name'], + 'ALLOW_GROUP' => $ext_group_row['allow_group'], + 'ALLOW_IN_PM' => $ext_group_row['allow_in_pm'], + 'UPLOAD_ICON_SRC' => $phpbb_root_path . $img_path . '/' . $ext_group_row['upload_icon'], + 'EXTGROUP_FILESIZE' => $ext_group_row['max_filesize'], 'ASSIGNED_EXTENSIONS' => $assigned_extensions, 'S_CATEGORY_SELECT' => $this->category_select('special_category', $group_id, 'category'), - 'S_DOWNLOAD_SELECT' => $this->download_select('download_mode', $group_id, 'download_mode'), 'S_EXT_GROUP_SIZE_OPTIONS' => size_select_options($size_format), 'S_EXTENSION_OPTIONS' => $s_extension_options, 'S_FILENAME_LIST' => $filename_list, @@ -711,9 +720,9 @@ class acp_attachments 'S_FORUM_IDS' => (sizeof($forum_ids)) ? true : false, 'U_EXTENSIONS' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=extensions"), + 'U_BACK' => $this->u_action, - 'L_LEGEND' => $user->lang[strtoupper($action) . '_EXTENSION_GROUP'], - ) + 'L_LEGEND' => $user->lang[strtoupper($action) . '_EXTENSION_GROUP']) ); $s_forum_id_options = ''; @@ -721,11 +730,12 @@ class acp_attachments $sql = 'SELECT forum_id, forum_name, parent_id, forum_type, left_id, right_id FROM ' . FORUMS_TABLE . ' ORDER BY left_id ASC'; - $result = $db->sql_query($sql, 600); + $result = $db->sql_query($sql); $right = $cat_right = $padding_inc = 0; $padding = $forum_list = $holding = ''; $padding_store = array('0' => ''); + while ($row = $db->sql_fetchrow($result)) { if ($row['forum_type'] == FORUM_CAT && ($row['left_id'] + 1 == $row['right_id'])) @@ -777,38 +787,19 @@ class acp_attachments $template->assign_vars(array( 'S_FORUM_ID_OPTIONS' => $s_forum_id_options) ); - - break; - - case 'deactivate': - case 'activate': - - if (!$group_id) - { - trigger_error($user->lang['NO_EXT_GROUP_SPECIFIED'] . adm_back_link($this->u_action), E_USER_WARNING); - } - - $sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' - SET allow_group = ' . (($action == 'activate') ? '1' : '0') . " - WHERE group_id = $group_id"; - $db->sql_query($sql); - - $this->rewrite_extensions(); break; } $sql = 'SELECT * FROM ' . EXTENSION_GROUPS_TABLE . ' - ORDER BY allow_group DESC, group_name'; + ORDER BY allow_group DESC, allow_in_pm DESC, group_name'; $result = $db->sql_query($sql); - $act_deact = 'activate'; + $old_allow_group = $old_allow_pm = 1; while ($row = $db->sql_fetchrow($result)) { - $s_add_spacer = ($row['allow_group'] == 0 && $act_deact == 'deactivate') ? true : false; - - $act_deact = ($row['allow_group']) ? 'deactivate' : 'activate'; + $s_add_spacer = ($old_allow_group != $row['allow_group'] || $old_allow_pm != $row['allow_in_pm']) ? true : false; $template->assign_block_vars('groups', array( 'S_ADD_SPACER' => $s_add_spacer, @@ -817,14 +808,14 @@ class acp_attachments 'U_EDIT' => $this->u_action . "&action=edit&g={$row['group_id']}", 'U_DELETE' => $this->u_action . "&action=delete&g={$row['group_id']}", - 'U_ACT_DEACT' => $this->u_action . "&action=$act_deact&g={$row['group_id']}", - 'L_ACT_DEACT' => $user->lang[strtoupper($act_deact)], 'GROUP_NAME' => $row['group_name'], 'CATEGORY' => $cat_lang[$row['cat_id']], ) ); + $old_allow_group = $row['allow_group']; + $old_allow_pm = $row['allow_in_pm']; } $db->sql_freeresult($result); @@ -849,7 +840,7 @@ class acp_attachments $delete_files = array(); while ($row = $db->sql_fetchrow($result)) { - phpbb_unlink($row['physical_filename']); + phpbb_unlink($row['physical_filename'], 'file'); if ($row['thumbnail']) { @@ -1099,47 +1090,6 @@ class acp_attachments } /** - * Build select for download modes - */ - function download_select($select_name, $group_id = false, $key = '') - { - global $db, $user; - - $types = array( - INLINE_LINK => $user->lang['MODE_INLINE'], - PHYSICAL_LINK => $user->lang['MODE_PHYSICAL'] - ); - - if ($group_id) - { - $sql = "SELECT download_mode - FROM " . EXTENSION_GROUPS_TABLE . " - WHERE group_id = " . (int) $group_id; - $result = $db->sql_query($sql); - - $download_mode = (!($row = $db->sql_fetchrow($result))) ? INLINE_LINK : $row['download_mode']; - - $db->sql_freeresult($result); - } - else - { - $download_mode = INLINE_LINK; - } - - $group_select = '<select name="' . $select_name . '"' . (($key) ? ' id="' . $key . '"' : '') . '>'; - - foreach ($types as $type => $mode) - { - $selected = ($type == $download_mode) ? ' selected="selected"' : ''; - $group_select .= '<option value="' . $type . '"' . $selected . '>' . $mode . '</option>'; - } - - $group_select .= '</select>'; - - return $group_select; - } - - /** * Search Imagick */ function search_imagemagick() @@ -1321,10 +1271,20 @@ class acp_attachments { if ($row['site_ip']) { + if (strlen($row['site_ip']) > 40) + { + continue; + } + $iplist_tmp[] = "'" . $row['site_ip'] . "'"; } else if ($row['site_hostname']) { + if (strlen($row['site_hostname']) > 255) + { + continue; + } + $hostlist_tmp[] = "'" . $row['site_hostname'] . "'"; } // break; @@ -1369,7 +1329,7 @@ class acp_attachments } else if (isset($_POST['unsecuresubmit'])) { - $unip_sql = array_map('intval', $_POST['unip']); + $unip_sql = request_var('unip', array(0)); if (sizeof($unip_sql)) { @@ -1399,45 +1359,6 @@ class acp_attachments } /** - * Re-Write extensions cache file - */ - function rewrite_extensions() - { - global $db, $cache; - - $sql = 'SELECT e.extension, g.* - FROM ' . EXTENSIONS_TABLE . ' e, ' . EXTENSION_GROUPS_TABLE . ' g - WHERE e.group_id = g.group_id - AND g.allow_group = 1'; - $result = $db->sql_query($sql); - - $extensions = array(); - while ($row = $db->sql_fetchrow($result)) - { - $extension = $row['extension']; - - $extensions[$extension]['display_cat'] = (int) $row['cat_id']; - $extensions[$extension]['download_mode']= (int) $row['download_mode']; - $extensions[$extension]['upload_icon'] = (string) $row['upload_icon']; - $extensions[$extension]['max_filesize'] = (int) $row['max_filesize']; - - $allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array(); - - if ($row['allow_in_pm']) - { - $allowed_forums = array_merge($allowed_forums, array(0)); - } - - // Store allowed extensions forum wise - $extensions['_allowed_'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums; - } - $db->sql_freeresult($result); - - $cache->destroy('_extensions'); - $cache->put('_extensions', $extensions); - } - - /** * Write display_order config field */ function display_order($value, $key = '') diff --git a/phpBB/includes/acp/acp_ban.php b/phpBB/includes/acp/acp_ban.php index 44ab731072..b85b2d36d4 100644 --- a/phpBB/includes/acp/acp_ban.php +++ b/phpBB/includes/acp/acp_ban.php @@ -40,17 +40,23 @@ class acp_ban $ban_reason = request_var('banreason', '', true); $ban_give_reason = request_var('bangivereason', '', true); - user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason); + if ($ban) + { + user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason); - trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action)); + trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action)); + } } else if ($unbansubmit) { $ban = request_var('unban', array('')); - user_unban($mode, $ban); + if ($ban) + { + user_unban($mode, $ban); - trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action)); + trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action)); + } } // Define language vars @@ -119,7 +125,7 @@ class acp_ban $field = 'username'; $l_ban_cell = $user->lang['USERNAME']; - $sql = 'SELECT b.*, u.user_id, u.username + $sql = 'SELECT b.*, u.user_id, u.username, u.username_clean FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u WHERE (b.ban_end >= ' . time() . ' OR b.ban_end = 0) @@ -160,7 +166,7 @@ class acp_ban while ($row = $db->sql_fetchrow($result)) { - $banned_options .= '<option' . (($row['ban_exclude']) ? ' class="sep"' : '') . ' value="' . $row['ban_id'] . '">' . $row[$field] . '</option>'; + $banned_options .= '<option' . (($row['ban_exclude']) ? ' class="sep"' : '') . ' value="' . $row['ban_id'] . '">' . $row[$field] . '</option>'; $time_length = ($row['ban_end']) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0; $ban_length[$row['ban_id']] = (isset($ban_end_text[$time_length])) ? $ban_end_text[$time_length] : $user->lang['UNTIL'] . ' -> ' . $user->format_date($row['ban_end']); diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index dd1897ecbd..9c2d19168a 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -134,11 +134,30 @@ class acp_bbcodes } } - if (!preg_match('#\[' . $data['bbcode_tag'] .'].*?\[/' . $data['bbcode_tag'] . ']#s', $bbcode_match)) + if (substr($data['bbcode_tag'], -1) === '=') + { + $test = substr($data['bbcode_tag'], 0, -1); + } + else + { + $test = $data['bbcode_tag']; + } + + if (!preg_match('%\\[' . $test . '[^]]*].*?\\[/' . $test . ']%s', $bbcode_match)) { trigger_error($user->lang['BBCODE_OPEN_ENDED_TAG'] . adm_back_link($this->u_action), E_USER_WARNING); } + if (strlen($data['bbcode_tag']) > 16) + { + trigger_error($user->lang['BBCODE_TAG_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING); + } + + if (strlen($bbcode_match) > 4000) + { + trigger_error($user->lang['BBCODE_TAG_DEF_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING); + } + $sql_ary = array( 'bbcode_tag' => $data['bbcode_tag'], 'bbcode_match' => $bbcode_match, diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index a04ad9dc0f..fa6b604c7b 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -27,7 +27,12 @@ class acp_board $action = request_var('action', ''); $submit = (isset($_POST['submit'])) ? true : false; - // Validation types are: string, int, bool, rpath (relative), rwpath (realtive, writeable), path (relative path, but able to escape the root), wpath (writeable) + /** + * Validation types are: + * string, int, bool, + * script_path (absolute path in url - beginning with / and no trailing slash), + * rpath (relative), rwpath (realtive, writeable), path (relative path, but able to escape the root), wpath (writeable) + */ switch ($mode) { case 'settings': @@ -148,7 +153,7 @@ class acp_board 'bump_interval' => array('lang' => 'BUMP_INTERVAL', 'validate' => 'int', 'type' => 'custom', 'method' => 'bump_interval', 'explain' => true), 'topics_per_page' => array('lang' => 'TOPICS_PER_PAGE', 'validate' => 'int', 'type' => 'text:3:4', 'explain' => false), 'posts_per_page' => array('lang' => 'POSTS_PER_PAGE', 'validate' => 'int', 'type' => 'text:3:4', 'explain' => false), - 'hot_threshold' => array('lang' => 'HOT_THRESHOLD', 'validate' => 'int', 'type' => 'text:3:4', 'explain' => false), + 'hot_threshold' => array('lang' => 'HOT_THRESHOLD', 'validate' => 'int', 'type' => 'text:3:4', 'explain' => true), 'max_poll_options' => array('lang' => 'MAX_POLL_OPTIONS', 'validate' => 'int', 'type' => 'text:4:4', 'explain' => false), 'max_post_chars' => array('lang' => 'CHAR_LIMIT', 'validate' => 'int', 'type' => 'text:4:6', 'explain' => true), 'max_post_smilies' => array('lang' => 'SMILIES_LIMIT', 'validate' => 'int', 'type' => 'text:4:4', 'explain' => true), @@ -233,9 +238,9 @@ class acp_board 'vars' => array( 'legend1' => 'GENERAL_SETTINGS', 'limit_load' => array('lang' => 'LIMIT_LOAD', 'validate' => 'int', 'type' => 'text:4:4', 'explain' => true), - 'session_length' => array('lang' => 'SESSION_LENGTH', 'validate' => 'int', 'type' => 'text:5:5', 'explain' => true), + 'session_length' => array('lang' => 'SESSION_LENGTH', 'validate' => 'int', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']), 'active_sessions' => array('lang' => 'LIMIT_SESSIONS', 'validate' => 'int', 'type' => 'text:4:4', 'explain' => true), - 'load_online_time' => array('lang' => 'ONLINE_LENGTH', 'validate' => 'int', 'type' => 'text:4:3', 'explain' => true), + 'load_online_time' => array('lang' => 'ONLINE_LENGTH', 'validate' => 'int', 'type' => 'text:4:3', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']), 'legend2' => 'GENERAL_OPTIONS', 'load_db_track' => array('lang' => 'YES_POST_MARKING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), @@ -273,7 +278,6 @@ class acp_board 'title' => 'ACP_SERVER_SETTINGS', 'vars' => array( 'legend1' => 'ACP_SERVER_SETTINGS', - 'send_encoding' => array('lang' => 'SEND_ENCODING', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'gzip_compress' => array('lang' => 'ENABLE_GZIP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'legend2' => 'PATH_SETTINGS', @@ -283,10 +287,11 @@ class acp_board 'ranks_path' => array('lang' => 'RANKS_PATH', 'validate' => 'rpath', 'type' => 'text:20:255', 'explain' => true), 'legend3' => 'SERVER_URL_SETTINGS', - 'force_server_vars' => array('lang' => 'FORCE_SERVER_VARS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), - 'server_protocol' => array('lang' => 'SERVER_PROTOCOL', 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true), - 'server_name' => array('lang' => 'SERVER_NAME', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true), - 'server_port' => array('lang' => 'SERVER_PORT', 'validate' => 'int', 'type' => 'text:5:5', 'explain' => true), + 'force_server_vars' => array('lang' => 'FORCE_SERVER_VARS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), + 'server_protocol' => array('lang' => 'SERVER_PROTOCOL', 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true), + 'server_name' => array('lang' => 'SERVER_NAME', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true), + 'server_port' => array('lang' => 'SERVER_PORT', 'validate' => 'int', 'type' => 'text:5:5', 'explain' => true), + 'script_path' => array('lang' => 'SCRIPT_PATH', 'validate' => 'script_path', 'type' => 'text::255', 'explain' => true), ) ); break; @@ -297,13 +302,14 @@ class acp_board 'vars' => array( 'legend1' => 'ACP_SECURITY_SETTINGS', 'allow_autologin' => array('lang' => 'ALLOW_AUTOLOGIN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), - 'max_autologin_time' => array('lang' => 'AUTOLOGIN_LENGTH', 'validate' => 'int', 'type' => 'text:5:5', 'explain' => true), + 'max_autologin_time' => array('lang' => 'AUTOLOGIN_LENGTH', 'validate' => 'int', 'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']), 'ip_check' => array('lang' => 'IP_VALID', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_ip_check', 'explain' => true), 'browser_check' => array('lang' => 'BROWSER_VALID', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), + 'forwarded_for_check' => array('lang' => 'FORWARDED_FOR_VALID', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'check_dnsbl' => array('lang' => 'CHECK_DNSBL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'email_check_mx' => array('lang' => 'EMAIL_CHECK_MX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'pass_complex' => array('lang' => 'PASSWORD_TYPE', 'validate' => 'string', 'type' => 'select', 'method' => 'select_password_chars', 'explain' => true), - 'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), + 'chg_passforce' => array('lang' => 'FORCE_PASS_CHANGE', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']), 'max_login_attempts' => array('lang' => 'MAX_LOGIN_ATTEMPTS', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), 'tpl_allow_php' => array('lang' => 'TPL_ALLOW_PHP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), ) @@ -391,16 +397,21 @@ class acp_board // Retrieve a list of auth plugins and check their config values $auth_plugins = array(); - $dp = opendir($phpbb_root_path . 'includes/auth'); - while (($file = readdir($dp)) !== false) + $dp = @opendir($phpbb_root_path . 'includes/auth'); + + if ($dp) { - if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file)) + while (($file = readdir($dp)) !== false) { - $auth_plugins[] = preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file); + if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file)) + { + $auth_plugins[] = preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file); + } } - } + closedir($dp); - sort($auth_plugins); + sort($auth_plugins); + } $updated_auth_settings = false; $old_auth_config = array(); @@ -569,7 +580,13 @@ class acp_board $auth_plugins = array(); - $dp = opendir($phpbb_root_path . 'includes/auth'); + $dp = @opendir($phpbb_root_path . 'includes/auth'); + + if (!$dp) + { + return ''; + } + while (($file = readdir($dp)) !== false) { if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file)) @@ -577,6 +594,7 @@ class acp_board $auth_plugins[] = preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file); } } + closedir($dp); sort($auth_plugins); @@ -661,7 +679,8 @@ class acp_board { global $user; - $user_char_ary = array('USERNAME_CHARS_ANY' => '.*', 'USERNAME_ALPHA_ONLY' => '[\w]+', 'USERNAME_ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+'); + $user_char_ary = array('USERNAME_CHARS_ANY' => '.*', 'USERNAME_ALPHA_ONLY' => '[a-z]+', 'USERNAME_ALPHA_SPACERS' => '[-\]_+ [a-z]+', 'USERNAME_LETTER_NUM' => '\w+', 'USERNAME_LETTER_NUM_SPACERS' => '[-\]_+ [\w]+', 'USERNAME_ASCII' => '[\x01-\x7F]+'); + $user_char_options = ''; foreach ($user_char_ary as $lang => $value) { @@ -689,12 +708,12 @@ class acp_board { global $user; - $pass_type_ary = array('PASS_TYPE_ANY' => '.*', 'PASS_TYPE_CASE' => '[a-zA-Z]', 'PASS_TYPE_ALPHA' => '[a-zA-Z0-9]', 'PASS_TYPE_SYMBOL' => '[a-zA-Z\W]'); + $pass_type_ary = array('PASS_TYPE_ANY', 'PASS_TYPE_CASE', 'PASS_TYPE_ALPHA', 'PASS_TYPE_SYMBOL'); $pass_char_options = ''; - foreach ($pass_type_ary as $lang => $value) + foreach ($pass_type_ary as $pass_type) { - $selected = ($selected_value == $value) ? ' selected="selected"' : ''; - $pass_char_options .= '<option value="' . $value . '"' . $selected . '>' . $user->lang[$lang] . '</option>'; + $selected = ($selected_value == $pass_type) ? ' selected="selected"' : ''; + $pass_char_options .= '<option value="' . $pass_type . '"' . $selected . '>' . $user->lang[$pass_type] . '</option>'; } return $pass_char_options; @@ -735,7 +754,14 @@ class acp_board */ function dateformat_select($value, $key) { - global $user; + global $user, $config; + + // Let the format_date function operate with the acp values + $old_tz = $user->timezone; + $old_dst = $user->dst; + + $user->timezone = $config['board_timezone']; + $user->dst = $config['board_dst']; $dateformat_options = ''; @@ -753,6 +779,10 @@ class acp_board } $dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>'; + // Reset users date options + $user->timezone = $old_tz; + $user->dst = $old_dst; + return "<select name=\"dateoptions\" id=\"dateoptions\" onchange=\"if (this.value == 'custom') { document.getElementById('$key').value = '$value'; } else { document.getElementById('$key').value = this.value; }\">$dateformat_options</select> <input type=\"text\" name=\"config[$key]\" id=\"$key\" value=\"$value\" maxlength=\"30\" />"; } diff --git a/phpBB/includes/acp/acp_bots.php b/phpBB/includes/acp/acp_bots.php index 2dbcc463e9..72fb40216d 100644 --- a/phpBB/includes/acp/acp_bots.php +++ b/phpBB/includes/acp/acp_bots.php @@ -70,42 +70,54 @@ class acp_bots case 'delete': if ($bot_id || sizeof($mark)) { - // We need to delete the relevant user, usergroup and bot entries ... - $sql_id = ($bot_id) ? " = $bot_id" : ' IN (' . implode(', ', $mark) . ')'; - - $sql = 'SELECT bot_name, user_id - FROM ' . BOTS_TABLE . " - WHERE bot_id $sql_id"; - $result = $db->sql_query($sql); - - $user_id_ary = $bot_name_ary = array(); - while ($row = $db->sql_fetchrow($result)) + if (confirm_box(true)) { - $user_id_ary[] = (int) $row['user_id']; - $bot_name_ary[] = $row['bot_name']; - } - $db->sql_freeresult($result); + // We need to delete the relevant user, usergroup and bot entries ... + $sql_id = ($bot_id) ? " = $bot_id" : ' IN (' . implode(', ', $mark) . ')'; - $db->sql_transaction('begin'); + $sql = 'SELECT bot_name, user_id + FROM ' . BOTS_TABLE . " + WHERE bot_id $sql_id"; + $result = $db->sql_query($sql); - $sql = 'DELETE FROM ' . BOTS_TABLE . " - WHERE bot_id $sql_id"; - $db->sql_query($sql); + $user_id_ary = $bot_name_ary = array(); + while ($row = $db->sql_fetchrow($result)) + { + $user_id_ary[] = (int) $row['user_id']; + $bot_name_ary[] = $row['bot_name']; + } + $db->sql_freeresult($result); - $_tables = array(USERS_TABLE, USER_GROUP_TABLE); - foreach ($_tables as $table) - { - $sql = "DELETE FROM $table - WHERE " . $db->sql_in_set('user_id', $user_id_ary); + $db->sql_transaction('begin'); + + $sql = 'DELETE FROM ' . BOTS_TABLE . " + WHERE bot_id $sql_id"; $db->sql_query($sql); - } - $db->sql_transaction('commit'); + $_tables = array(USERS_TABLE, USER_GROUP_TABLE); + foreach ($_tables as $table) + { + $sql = "DELETE FROM $table + WHERE " . $db->sql_in_set('user_id', $user_id_ary); + $db->sql_query($sql); + } + + $db->sql_transaction('commit'); - $cache->destroy('bots'); + $cache->destroy('bots'); - add_log('admin', 'LOG_BOT_DELETE', implode(', ', $bot_name_ary)); - trigger_error($user->lang['BOT_DELETED'] . adm_back_link($this->u_action)); + add_log('admin', 'LOG_BOT_DELETE', implode(', ', $bot_name_ary)); + trigger_error($user->lang['BOT_DELETED'] . adm_back_link($this->u_action)); + } + else + { + confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( + 'mark' => $mark, + 'id' => $bot_id, + 'mode' => $mode, + 'action' => $action)) + ); + } } break; @@ -169,17 +181,17 @@ class acp_bots } $user_id = user_add(array( - 'user_type' => (int) USER_IGNORE, - 'group_id' => (int) $group_row['group_id'], - 'username' => (string) $bot_row['bot_name'], - 'user_regdate' => time(), - 'user_password' => '', - 'user_colour' => (string) $group_row['group_colour'], - 'user_email' => '', - 'user_lang' => (string) $bot_row['bot_lang'], - 'user_style' => (int) $bot_row['bot_style'], - 'user_options' => 0) - ); + 'user_type' => (int) USER_IGNORE, + 'group_id' => (int) $group_row['group_id'], + 'username' => (string) $bot_row['bot_name'], + 'user_regdate' => time(), + 'user_password' => '', + 'user_colour' => (string) $group_row['group_colour'], + 'user_email' => '', + 'user_lang' => (string) $bot_row['bot_lang'], + 'user_style' => (int) $bot_row['bot_style'], + 'user_allow_massemail' => 0, + )); $sql = 'INSERT INTO ' . BOTS_TABLE . ' ' . $db->sql_build_array('INSERT', array( 'user_id' => (int) $user_id, @@ -194,7 +206,7 @@ class acp_bots } else if ($bot_id) { - $sql = 'SELECT user_id + $sql = 'SELECT user_id, bot_name FROM ' . BOTS_TABLE . " WHERE bot_id = $bot_id"; $result = $db->sql_query($sql); @@ -206,10 +218,18 @@ class acp_bots trigger_error($user->lang['NO_BOT'] . adm_back_link($this->u_action . "&id=$bot_id&action=$action"), E_USER_WARNING); } - $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array( + $sql_ary = array( 'user_style' => (int) $bot_row['bot_style'], - 'user_lang' => (string) $bot_row['bot_lang']) - ) . " WHERE user_id = {$row['user_id']}"; + 'user_lang' => (string) $bot_row['bot_lang'], + ); + + if ($bot_row['bot_name'] !== $row['bot_name']) + { + $sql_ary['username'] = (string) $bot_row['bot_name']; + $sql_ary['username_clean'] = (string) utf8_clean_string($bot_row['bot_name']); + } + + $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE user_id = {$row['user_id']}"; $db->sql_query($sql); $sql = 'UPDATE ' . BOTS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array( @@ -220,6 +240,12 @@ class acp_bots ) . " WHERE bot_id = $bot_id"; $db->sql_query($sql); + // Updated username? + if ($bot_row['bot_name'] !== $row['bot_name']) + { + user_update_name($row['bot_name'], $bot_row['bot_name']); + } + $log = 'UPDATED'; } @@ -302,7 +328,7 @@ class acp_bots $sql = 'SELECT b.bot_id, b.bot_name, b.bot_active, u.user_lastvisit FROM ' . BOTS_TABLE . ' b, ' . USERS_TABLE . ' u WHERE u.user_id = b.user_id - ORDER BY u.user_lastvisit DESC'; + ORDER BY u.user_lastvisit DESC, b.bot_name ASC'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) diff --git a/phpBB/includes/acp/acp_database.php b/phpBB/includes/acp/acp_database.php index 7a8acab445..c5fadbfd0a 100644 --- a/phpBB/includes/acp/acp_database.php +++ b/phpBB/includes/acp/acp_database.php @@ -36,6 +36,8 @@ class acp_database { case 'backup': + $this->page_title = 'ACP_BACKUP'; + switch ($action) { case 'download': @@ -70,7 +72,7 @@ class acp_database $time = time(); - $filename = 'backup_' . $time; + $filename = 'backup_' . $time . '_' . unique_id(); // We set up the info needed for our on-the-fly creation :D switch ($format) @@ -88,7 +90,6 @@ class acp_database $open = 'bzopen'; $write = 'bzwrite'; $close = 'bzclose'; - $oper = 'bzcompress'; $mimetype = 'application/x-bzip2'; break; case 'gzip': @@ -96,7 +97,6 @@ class acp_database $open = 'gzopen'; $write = 'gzwrite'; $close = 'gzclose'; - $oper = 'gzencode'; $mimetype = 'application/x-gzip'; break; } @@ -104,6 +104,25 @@ class acp_database // We write the file to "store" first (and then compress the file) to not use too much // memory. The server process can be easily killed by storing too much data at once. + if ($download == true) + { + $fh = fopen('php://output', 'wb'); + + switch ($format) + { + case 'bzip2': + ob_start('ob_bz2handler'); + break; + case 'gzip': + ob_start('ob_gzhandler'); + break; + } + + $name = $filename . $ext; + header('Pragma: no-cache'); + header("Content-Type: $mimetype; name=\"$name\""); + header("Content-disposition: attachment; filename=$name"); + } if ($store == true) { @@ -117,20 +136,12 @@ class acp_database } } - if ($download == true) - { - $name = $filename . $ext; - header('Pragma: no-cache'); - header("Content-Type: $mimetype; name=\"$name\""); - header("Content-disposition: attachment; filename=$name"); - } - // All of the generated queries go here $sql_data = ''; $sql_data .= "#\n"; $sql_data .= "# phpBB Backup Script\n"; $sql_data .= "# Dump of tables for $table_prefix\n"; - $sql_data .= "# DATE : " . gmdate("d-m-Y H:i:s", $time) . " GMT\n"; + $sql_data .= "# DATE : " . gmdate("d-m-Y H:i:s", $time) . " GMT\n"; $sql_data .= "#\n"; switch ($db->sql_layer) @@ -151,31 +162,6 @@ class acp_database break; } - if ($structure && $db->sql_layer == 'firebird') - { - $sql = 'SELECT RDB$FUNCTION_NAME, RDB$DESCRIPTION - FROM RDB$FUNCTIONS - ORDER BY RDB$FUNCTION_NAME'; - $result = $db->sql_query($sql); - - $rows = array(); - while ($row = $db->sql_fetchrow($result)) - { - $sql = 'SELECT F.RDB$FUNCTION_NAME, F.RDB$MODULE_NAME, F.RDB$ENTRYPOINT, F.RDB$RETURN_ARGUMENT, F.RDB$DESCRIPTION, FA.RDB$ARGUMENT_POSITION, FA.RDB$MECHANISM, FA.RDB$FIELD_TYPE, FA.RDB$FIELD_SCALE, FA.RDB$FIELD_LENGTH, FA.RDB$FIELD_SUB_TYPE, C.RDB$BYTES_PER_CHARACTER, C.RDB$CHARACTER_SET_NAME ,FA.RDB$FIELD_PRECISION - FROM RDB$FUNCTIONS F - LEFT JOIN RDB$FUNCTION_ARGUMENTS FA ON F.RDB$FUNCTION_NAME = FA.RDB$FUNCTION_NAME - LEFT JOIN RDB$CHARACTER_SETS C ON FA.RDB$CHARACTER_SET_ID = C.RDB$CHARACTER_SET_ID - WHERE (F.RDB$FUNCTION_NAME = ' . $row['FUNCTION_NAME'] . ') - ORDER BY FA.RDB$ARGUMENT_POSITION'; - $result2 = $db->sql_query($sql); - while ($row2 = $db->sql_fetchrow($result2)) - { - } - $db->sql_freeresult($result2); - } - $db->sql_freeresult($result); - } - foreach ($table as $table_name) { // Get the table structure @@ -238,14 +224,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -307,14 +286,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -381,14 +353,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; } @@ -470,14 +435,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -571,14 +529,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -636,8 +587,8 @@ class acp_database for ($i = 0; $i < $i_num_fields; $i++) { - $ary_type[$i] = odbc_field_type($result, $i); - $ary_name[$i] = odbc_field_name($result, $i); + $ary_type[$i] = odbc_field_type($result, $i + 1); + $ary_name[$i] = odbc_field_name($result, $i + 1); } while ($row = $db->sql_fetchrow($result)) @@ -692,14 +643,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -803,14 +747,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -898,14 +835,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -926,8 +856,8 @@ class acp_database for ($i = 0; $i < $i_num_fields; $i++) { - $ary_type[$i] = ocicolumntype($result, $i); - $ary_name[$i] = ocicolumnname($result, $i); + $ary_type[$i] = ocicolumntype($result, $i + 1); + $ary_name[$i] = ocicolumnname($result, $i + 1); } while ($row = $db->sql_fetchrow($result)) @@ -982,14 +912,7 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); } $sql_data = ''; @@ -1022,14 +945,8 @@ class acp_database if ($download == true) { - if (!empty($oper)) - { - echo $oper($sql_data); - } - else - { - echo $sql_data; - } + fwrite($fh, $sql_data); + fclose($fh); exit; } @@ -1051,7 +968,7 @@ class acp_database $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - if (strpos($row['name'], $table_prefix) === 0) + if (strlen($table_prefix) == 0 || strpos($row['name'], $table_prefix) === 0) { $tables[] = $row['name']; } @@ -1079,7 +996,7 @@ class acp_database $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - if (strpos($row['relname'], $table_prefix) === 0) + if (strlen($table_prefix) == 0 || strpos($row['relname'], $table_prefix) === 0) { $tables[] = $row['relname']; } @@ -1096,7 +1013,7 @@ class acp_database $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - if (strpos($row['TABLE_NAME'], $table_prefix) === 0) + if (strlen($table_prefix) == 0 || strpos($row['TABLE_NAME'], $table_prefix) === 0) { $tables[] = $row['TABLE_NAME']; } @@ -1112,7 +1029,7 @@ class acp_database $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - if (stripos($row['table_name'], $table_prefix) === 0) + if (strlen($table_prefix) == 0 || stripos($row['table_name'], $table_prefix) === 0) { $tables[] = $row['table_name']; } @@ -1126,7 +1043,7 @@ class acp_database $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - if (stripos($row['table_name'], $table_prefix) === 0) + if (strlen($table_prefix) == 0 || stripos($row['table_name'], $table_prefix) === 0) { $tables[] = $row['table_name']; } @@ -1168,13 +1085,16 @@ class acp_database break; case 'restore': + + $this->page_title = 'ACP_RESTORE'; + switch ($action) { case 'submit': $delete = request_var('delete', ''); $file = request_var('file', ''); - preg_match('#^(backup_\d{10,})\.(sql(?:\.(?:gz|bz2))?)$#', $file, $matches); + preg_match('#^backup_\d{10,}_[a-z\d]{16}\.(sql(?:\.(?:gz|bz2))?)$#', $file, $matches); $file_name = $phpbb_root_path . 'store/' . $matches[0]; if (!(file_exists($file_name) && is_readable($file_name))) @@ -1190,7 +1110,7 @@ class acp_database $data = file_get_contents($file_name); - switch ($matches[2]) + switch ($matches[1]) { case 'sql.bz2': $data = bzdecompress($data); @@ -1206,7 +1126,7 @@ class acp_database { $name = $matches[0]; - switch ($matches[2]) + switch ($matches[1]) { case 'sql': $mimetype = 'text/x-sql'; @@ -1256,14 +1176,14 @@ class acp_database break; case 'mssql': - case 'mssql-odbc': + case 'mssql_odbc': $delim = 'GO'; break; } $pieces = split_sql_file($data, $delim); $sql_count = count($pieces); - for($i = 0; $i < $sql_count; $i++) + for ($i = 0; $i < $sql_count; $i++) { $sql = trim($pieces[$i]); @@ -1279,7 +1199,6 @@ class acp_database break; default: - $selected = false; $methods = array('sql'); $available_methods = array('sql.gz' => 'zlib', 'sql.bz2' => 'bz2'); @@ -1293,29 +1212,27 @@ class acp_database } $dir = $phpbb_root_path . 'store/'; - $dh = opendir($dir); - while (($file = readdir($dh)) !== false) + $dh = @opendir($dir); + + if ($dh) { - if (preg_match('#^backup_(\d{10,})\.(sql(?:\.(?:gz|bz2))?)$#', $file, $matches)) + while (($file = readdir($dh)) !== false) { - $supported = in_array($matches[2], $methods); - - if ($supported == 'true') + if (preg_match('#^backup_(\d{10,})_[a-z\d]{16}\.(sql(?:\.(?:gz|bz2))?)$#', $file, $matches)) { - $template->assign_block_vars('files', array( - 'FILE' => $file, - 'NAME' => gmdate("d-m-Y H:i:s", $matches[1]), - 'SUPPORTED' => $supported - )); - $selected = true; + $supported = in_array($matches[2], $methods); + + if ($supported == 'true') + { + $template->assign_block_vars('files', array( + 'FILE' => $file, + 'NAME' => gmdate("d-m-Y H:i:s", $matches[1]), + 'SUPPORTED' => $supported + )); + } } } - } - closedir($dh); - - if ($selected === true) - { - $template->assign_var('EXISTS', true); + closedir($dh); } $template->assign_vars(array( @@ -1333,6 +1250,7 @@ class acp_database function get_table_structure($table_name) { global $db, $domains_created; + static $has_index_type; $sql_data = ''; @@ -1342,6 +1260,18 @@ class acp_database case 'mysql4': case 'mysql': + if ($has_index_type === null) + { + if ($db->sql_layer === 'mysqli' || version_compare($db->mysql_version, '4.0.2', '>=')) + { + $has_index_type = true; + } + else + { + $has_index_type = false; + } + } + $sql_data .= "CREATE TABLE $table_name(\n"; $rows = array(); @@ -1384,7 +1314,7 @@ class acp_database if ($kname != 'PRIMARY') { - if ($row['Index_type'] == 'FULLTEXT') + if ($has_index_type && $row['Index_type'] == 'FULLTEXT') { $kname = "FULLTEXT|$kname"; } @@ -1785,7 +1715,7 @@ class acp_database $sql_data .= "\nCREATE TABLE $table_name (\n"; - $sql = 'SELECT DISTINCT R.RDB$FIELD_NAME as FNAME, R.RDB$NULL_FLAG as NFLAG, R.RDB$DEFAULT_SOURCE as DSOURCE, F.RDB$FIELD_TYPE as FTYPE, F.RDB$FIELD_SUB_TYPE as STYPE, F.RDB$FIELD_LENGTH as FLEN + $sql = 'SELECT DISTINCT R.RDB$FIELD_NAME as FNAME, R.RDB$NULL_FLAG as NFLAG, R.RDB$DEFAULT_SOURCE as DSOURCE, F.RDB$FIELD_TYPE as FTYPE, F.RDB$FIELD_SUB_TYPE as STYPE, F.RDB$FIELD_LENGTH as FLEN FROM RDB$RELATION_FIELDS R JOIN RDB$FIELDS F ON R.RDB$FIELD_SOURCE=F.RDB$FIELD_NAME LEFT JOIN RDB$FIELD_DIMENSIONS D ON R.RDB$FIELD_SOURCE = D.RDB$FIELD_NAME @@ -1826,7 +1756,7 @@ class acp_database $sql_data .= "\n);;\n"; $keys = array(); - $sql = 'SELECT I.RDB$FIELD_NAME as NAME + $sql = 'SELECT I.RDB$FIELD_NAME as NAME FROM RDB$RELATION_CONSTRAINTS RC, RDB$INDEX_SEGMENTS I, RDB$INDICES IDX WHERE (I.RDB$INDEX_NAME = RC.RDB$INDEX_NAME) AND (IDX.RDB$INDEX_NAME = RC.RDB$INDEX_NAME) @@ -1919,7 +1849,7 @@ class acp_database case 'oracle': $sql_data .= "\nCREATE TABLE $table_name (\n"; - $sql = "SELECT COLUMN_NAME, DATA_TYPE, DATA_PRECISION, DATA_LENGTH, NULLABLE, DATA_DEFAULT + $sql = "SELECT COLUMN_NAME, DATA_TYPE, DATA_PRECISION, DATA_LENGTH, NULLABLE, DATA_DEFAULT FROM ALL_TAB_COLS WHERE table_name = '{$table_name}'"; $result = $db->sql_query($sql); @@ -2032,4 +1962,15 @@ class acp_database } } +// Internal handler for BZip2 +function ob_bz2handler($data, $mode) +{ + static $internal = ''; + $internal .= $data; + if ($mode & PHP_OUTPUT_HANDLER_END) + { + return bzcompress($internal); + } +} + ?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_disallow.php b/phpBB/includes/acp/acp_disallow.php index 70bdf30628..cbdc24a3b6 100644 --- a/phpBB/includes/acp/acp_disallow.php +++ b/phpBB/includes/acp/acp_disallow.php @@ -26,7 +26,7 @@ class acp_disallow // Set up general vars $this->tpl_name = 'acp_disallow'; - $this->page_header = 'ACP_DISALLOW_USERNAMES'; + $this->page_title = 'ACP_DISALLOW_USERNAMES'; $disallow = (isset($_POST['disallow'])) ? true : false; $allow = (isset($_POST['allow'])) ? true : false; diff --git a/phpBB/includes/acp/acp_email.php b/phpBB/includes/acp/acp_email.php index 5b79451634..6b2904b245 100644 --- a/phpBB/includes/acp/acp_email.php +++ b/phpBB/includes/acp/acp_email.php @@ -38,7 +38,7 @@ class acp_email { // Error checking needs to go here ... if no subject and/or no message then skip // over the send and return to the form - $use_queue = (isset($_POST['send_immediatly'])) ? false : true; + $use_queue = (isset($_POST['send_immediately'])) ? false : true; $priority = request_var('mail_priority_flag', MAIL_NORMAL_PRIORITY); if (!$subject) @@ -65,7 +65,7 @@ class acp_email { if ($group_id) { - $sql = 'SELECT u.user_email, u.username, u.user_lang, u.user_jabber, u.user_notify_type + $sql = 'SELECT u.user_email, u.username, u.username_clean, u.user_lang, u.user_jabber, u.user_notify_type FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending = 0 @@ -75,7 +75,7 @@ class acp_email } else { - $sql = 'SELECT username, user_email, user_jabber, user_notify_type, user_lang + $sql = 'SELECT username, username_clean, user_email, user_jabber, user_notify_type, user_lang FROM ' . USERS_TABLE . ' WHERE user_allow_massemail = 1 ORDER BY user_lang, user_notify_type'; @@ -107,7 +107,12 @@ class acp_email if ($i == $max_chunk_size || $row['user_lang'] != $old_lang || $row['user_notify_type'] != $old_notify_type) { $i = 0; - $j++; + + if (sizeof($email_list)) + { + $j++; + } + $old_lang = $row['user_lang']; $old_notify_type = $row['user_notify_type']; } @@ -151,7 +156,6 @@ class acp_email $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip); $messenger->subject(htmlspecialchars_decode($subject)); - $messenger->replyto($config['board_email']); $messenger->set_mail_priority($priority); $messenger->assign_vars(array( diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php index fc524e0c75..978587a650 100644 --- a/phpBB/includes/acp/acp_forums.php +++ b/phpBB/includes/acp/acp_forums.php @@ -133,6 +133,12 @@ class acp_forums 'forum_password_confirm'=> request_var('forum_password_confirm', ''), ); + // Use link_display_on_index setting if forum type is link + if ($forum_data['forum_type'] == FORUM_LINK) + { + $forum_data['display_on_index'] = request_var('link_display_on_index', false); + } + $forum_data['show_active'] = ($forum_data['forum_type'] == FORUM_POST) ? request_var('display_recent', false) : request_var('display_active', false); // Get data for forum rules if specified... @@ -218,7 +224,7 @@ class acp_forums $auth->acl_clear_prefetch(); $cache->destroy('sql', FORUMS_TABLE); - $acl_url = '&mode=setting_forum_local&forum_id[]=' . $forum_data['forum_id'] . '&select_all_groups=1'; + $acl_url = '&mode=setting_forum_local&forum_id[]=' . $forum_data['forum_id']; $message = ($action == 'add') ? $user->lang['FORUM_CREATED'] : $user->lang['FORUM_UPDATED']; @@ -390,19 +396,18 @@ class acp_forums { $forum_data = $row; } + else + { + $forum_data['left_id'] = $row['left_id']; + $forum_data['right_id'] = $row['right_id']; + } - // Make sure there is no forum displayed for parents_list having the current forum id as a parent... - $sql = 'SELECT forum_id - FROM ' . FORUMS_TABLE . ' - WHERE parent_id = ' . $forum_id; - $result = $db->sql_query($sql); - - $exclude_forums = array($forum_id); - while ($row = $db->sql_fetchrow($result)) + // Make sure no direct child forums are able to be selected as parents. + $exclude_forums = array(); + foreach (get_forum_branch($forum_id, 'children') as $row) { $exclude_forums[] = $row['forum_id']; } - $db->sql_freeresult($result); $parents_list = make_forum_select($forum_data['parent_id'], $exclude_forums, false, false, false); @@ -471,7 +476,7 @@ class acp_forums $forum_data['forum_rules_bitfield'] = ''; $forum_data['forum_rules_options'] = 0; - generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], $forum_data['forum_rules_options'], request_var('rules_allow_bbcode', false), request_var('rules_allow_urls', false), request_var('rules_allow_smiliess', false)); + generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], $forum_data['forum_rules_options'], request_var('rules_allow_bbcode', false), request_var('rules_allow_urls', false), request_var('rules_allow_smilies', false)); } // Generate preview content @@ -491,7 +496,7 @@ class acp_forums $forum_data['forum_desc_bitfield'] = ''; $forum_data['forum_desc_options'] = 0; - generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], $forum_data['forum_desc_options'], request_var('desc_allow_bbcode', false), request_var('desc_allow_urls', false), request_var('desc_allow_smiliess', false)); + generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], $forum_data['forum_desc_options'], request_var('desc_allow_bbcode', false), request_var('desc_allow_urls', false), request_var('desc_allow_smilies', false)); } // decode... @@ -668,7 +673,7 @@ class acp_forums if ($db->sql_fetchrow($result)) { $template->assign_vars(array( - 'S_MOVE_FORUM_OPTIONS' => make_forum_select($forum_data['parent_id'], $subforums_id)) // , false, true, false??? + 'S_MOVE_FORUM_OPTIONS' => make_forum_select($forum_data['parent_id'], $subforums_id, false, true)) // , false, true, false??? ); } $db->sql_freeresult($result); @@ -846,6 +851,16 @@ class acp_forums $errors[] = $user->lang['FORUM_NAME_EMPTY']; } + if (utf8_strlen($forum_data['forum_desc']) > 4000) + { + $errors[] = $user->lang['FORUM_DESC_TOO_LONG']; + } + + if (utf8_strlen($forum_data['forum_rules']) > 4000) + { + $errors[] = $user->lang['FORUM_RULES_TOO_LONG']; + } + if ($forum_data['forum_password'] || $forum_data['forum_password_confirm']) { if ($forum_data['forum_password'] != $forum_data['forum_password_confirm']) @@ -989,7 +1004,6 @@ class acp_forums if ($action_subforums == 'delete') { - $log_action_forums = 'FORUMS'; $rows = get_forum_branch($row['forum_id'], 'children', 'descending', false); foreach ($rows as $_row) @@ -1055,8 +1069,6 @@ class acp_forums return array($user->lang['NO_DESTINATION_FORUM']); } - $log_action_forums = 'MOVE_FORUMS'; - $sql = 'SELECT forum_name FROM ' . FORUMS_TABLE . ' WHERE forum_id = ' . $subforums_to_id; @@ -1115,11 +1127,9 @@ class acp_forums if ($row['forum_name'] != $forum_data_sql['forum_name']) { - // the forum name has changed, clear the parents list of child forums + // the forum name has changed, clear the parents list of all forums (for safety) $sql = 'UPDATE ' . FORUMS_TABLE . " - SET forum_parents = '' - WHERE left_id > " . $row['left_id'] . ' - AND right_id < ' . $row['right_id']; + SET forum_parents = ''"; $db->sql_query($sql); } @@ -1374,6 +1384,9 @@ class acp_forums } $db->sql_freeresult($result); + // Grab new forum data for correct tree updating later + $forum_data = $this->get_forum_info($forum_id); + $sql = 'UPDATE ' . FORUMS_TABLE . " SET parent_id = $subforums_to_id WHERE parent_id = $forum_id"; diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php index e81dc9883f..7147431259 100644 --- a/phpBB/includes/acp/acp_groups.php +++ b/phpBB/includes/acp/acp_groups.php @@ -91,8 +91,6 @@ class acp_groups break; } - group_update_listings($group_id); - trigger_error($user->lang[$message] . adm_back_link($this->u_action . '&action=list&g=' . $group_id)); break; @@ -142,8 +140,6 @@ class acp_groups group_user_attributes('default', $group_id, $mark_ary, false, $group_row['group_name'], $group_row); } - group_update_listings($group_id); - trigger_error($user->lang['GROUP_DEFS_UPDATED'] . adm_back_link($this->u_action . '&action=list&g=' . $group_id)); } else @@ -265,7 +261,9 @@ class acp_groups $allow_desc_smilies = request_var('desc_parse_smilies', false); $data['uploadurl'] = request_var('uploadurl', ''); - $data['remotelink'] = request_var('remotelink', ''); + $data['remotelink'] = request_var('remotelink', ''); + $data['width'] = request_var('width', ''); + $data['height'] = request_var('height', ''); $delete = request_var('delete', ''); $submit_ary = array( @@ -287,9 +285,6 @@ class acp_groups if (!empty($_FILES['uploadfile']['tmp_name']) || $data['uploadurl'] || $data['remotelink']) { - $data['width'] = request_var('width', ''); - $data['height'] = request_var('height', ''); - // Avatar stuff $var_ary = array( 'uploadurl' => array('string', true, 5, 255), @@ -323,6 +318,34 @@ class acp_groups $submit_ary['avatar'] = $category . '/' . $avatar_select; } } + else if ($data['width'] && $data['height']) + { + // Only update the dimensions? + if ($config['avatar_max_width'] || $config['avatar_max_height']) + { + if ($data['width'] > $config['avatar_max_width'] || $data['height'] > $config['avatar_max_height']) + { + $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']); + } + } + + if (!sizeof($error)) + { + if ($config['avatar_min_width'] || $config['avatar_min_height']) + { + if ($data['width'] < $config['avatar_min_width'] || $data['height'] < $config['avatar_min_height']) + { + $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']); + } + } + } + + if (!sizeof($error)) + { + $submit_ary['avatar_width'] = $data['width']; + $submit_ary['avatar_height'] = $data['height']; + } + } else if ($delete) { $submit_ary['avatar'] = ''; @@ -358,35 +381,49 @@ class acp_groups $group_perm_from = request_var('group_perm_from', 0); // Copy permissions? - if ($group_perm_from && $action == 'add') + // If the user has the a_authgroups permission and at least one additional permission ability set the permissions are fully transferred. + // We do not limit on one auth category because this can lead to incomplete permissions being tricky to fix for the admin, roles being assigned or added non-default permissions. + // Since the user only has the option to copy permissions from non leader managed groups this seems to be a good compromise. + if ($group_perm_from && $action == 'add' && $auth->acl_get('a_authgroups') && $auth->acl_gets('a_aauth', 'a_fauth', 'a_mauth', 'a_uauth')) { - // From the mysql documentation: - // Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14. - // Due to this we stay on the safe side if we do the insertion "the manual way" - - // Copy permisisons from/to the acl groups table (only group_id gets changed) - $sql = 'SELECT forum_id, auth_option_id, auth_role_id, auth_setting - FROM ' . ACL_GROUPS_TABLE . ' + $sql = 'SELECT group_founder_manage + FROM ' . GROUPS_TABLE . ' WHERE group_id = ' . $group_perm_from; $result = $db->sql_query($sql); + $check_row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); - $groups_sql_ary = array(); - while ($row = $db->sql_fetchrow($result)) + // Check the group if non-founder + if ($check_row && ($user->data['user_type'] == USER_FOUNDER || $check_row['group_founder_manage'] == 0)) { - $groups_sql_ary[] = array( - 'group_id' => (int) $group_id, - 'forum_id' => (int) $row['forum_id'], - 'auth_option_id' => (int) $row['auth_option_id'], - 'auth_role_id' => (int) $row['auth_role_id'], - 'auth_setting' => (int) $row['auth_setting'] - ); + // From the mysql documentation: + // Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14. + // Due to this we stay on the safe side if we do the insertion "the manual way" + + // Copy permisisons from/to the acl groups table (only group_id gets changed) + $sql = 'SELECT forum_id, auth_option_id, auth_role_id, auth_setting + FROM ' . ACL_GROUPS_TABLE . ' + WHERE group_id = ' . $group_perm_from; + $result = $db->sql_query($sql); + + $groups_sql_ary = array(); + while ($row = $db->sql_fetchrow($result)) + { + $groups_sql_ary[] = array( + 'group_id' => (int) $group_id, + 'forum_id' => (int) $row['forum_id'], + 'auth_option_id' => (int) $row['auth_option_id'], + 'auth_role_id' => (int) $row['auth_role_id'], + 'auth_setting' => (int) $row['auth_setting'] + ); + } + $db->sql_freeresult($result); + + // Now insert the data + $db->sql_multi_insert(ACL_GROUPS_TABLE, $groups_sql_ary); + + $auth->acl_clear_prefetch(); } - $db->sql_freeresult($result); - - // Now insert the data - $db->sql_multi_insert(ACL_GROUPS_TABLE, $groups_sql_ary); - - $auth->acl_clear_prefetch(); } $cache->destroy('sql', GROUPS_TABLE); @@ -494,6 +531,7 @@ class acp_groups $template->assign_vars(array( 'S_EDIT' => true, 'S_ADD_GROUP' => ($action == 'add') ? true : false, + 'S_GROUP_PERM' => ($action == 'add' && $auth->acl_get('a_authgroups') && $auth->acl_gets('a_aauth', 'a_fauth', 'a_mauth', 'a_uauth')) ? true : false, 'S_INCLUDE_SWATCH' => true, 'S_CAN_UPLOAD' => $can_upload, 'S_ERROR' => (sizeof($error)) ? true : false, @@ -518,7 +556,7 @@ class acp_groups 'S_DESC_SMILIES_CHECKED'=> $group_desc_data['allow_smilies'], 'S_RANK_OPTIONS' => $rank_options, - 'S_GROUP_OPTIONS' => group_select_options(0), + 'S_GROUP_OPTIONS' => group_select_options(false, false, (($user->data['user_type'] == USER_FOUNDER) ? false : 0)), 'AVATAR_IMAGE' => $avatar_img, 'AVATAR_MAX_FILESIZE' => $config['avatar_filesize'], 'GROUP_AVATAR_WIDTH' => (isset($group_row['group_avatar_width'])) ? $group_row['group_avatar_width'] : '', @@ -574,11 +612,11 @@ class acp_groups $db->sql_freeresult($result); // Grab the members - $sql = 'SELECT u.user_id, u.username, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending + $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND u.user_id = ug.user_id - ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username"; + ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean"; $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); $leader = $member = 0; diff --git a/phpBB/includes/acp/acp_icons.php b/phpBB/includes/acp/acp_icons.php index 4636b067c2..321df3ecb1 100644 --- a/phpBB/includes/acp/acp_icons.php +++ b/phpBB/includes/acp/acp_icons.php @@ -67,7 +67,7 @@ class acp_icons { $img_size = @getimagesize($phpbb_root_path . $img_path . '/' . $path . $img); - if (!$img_size[0] || !$img_size[1]) + if (!$img_size[0] || !$img_size[1] || strlen($img) > 255) { continue; } @@ -203,14 +203,14 @@ class acp_icons $images = (isset($_POST['image'])) ? array_keys(request_var('image', array('' => 0))) : array(); // Now really get the items - $image_id = (isset($_POST['id'])) ? array_map('intval', $_POST['id']) : array(); - $image_order = (isset($_POST['order'])) ? array_map('intval', $_POST['order']) : array(); - $image_width = (isset($_POST['width'])) ? array_map('intval', $_POST['width']) : array(); - $image_height = (isset($_POST['height'])) ? array_map('intval', $_POST['height']) : array(); - $image_add = (isset($_POST['add_img'])) ? array_map('intval', $_POST['add_img']) : array(); + $image_id = (isset($_POST['id'])) ? request_var('id', array('' => 0)) : array(); + $image_order = (isset($_POST['order'])) ? request_var('order', array('' => 0)) : array(); + $image_width = (isset($_POST['width'])) ? request_var('width', array('' => 0)) : array(); + $image_height = (isset($_POST['height'])) ? request_var('height', array('' => 0)) : array(); + $image_add = (isset($_POST['add_img'])) ? request_var('add_img', array('' => 0)) : array(); $image_emotion = request_var('emotion', array('' => '')); $image_code = request_var('code', array('' => '')); - $image_display_on_posting = (isset($_POST['display_on_posting'])) ? array_map('intval', $_POST['display_on_posting']) : array(); + $image_display_on_posting = (isset($_POST['display_on_posting'])) ? request_var('display_on_posting', array('' => 0)) : array(); foreach ($images as $image) { @@ -308,6 +308,29 @@ class acp_icons { $order = 0; + if (!($pak_ary = @file($phpbb_root_path . $img_path . '/' . $pak))) + { + trigger_error($user->lang['PAK_FILE_NOT_READABLE'] . adm_back_link($this->u_action), E_USER_WARNING); + } + + // Make sure the pak_ary is valid + foreach ($pak_ary as $pak_entry) + { + if (preg_match_all("#'(.*?)', #", $pak_entry, $data)) + { + if ((sizeof($data[1]) != 4 && $mode == 'icons') || + (sizeof($data[1]) != 6 && $mode == 'smilies')) + { + trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING); + } + } + else + { + trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING); + } + } + + // The user has already selected a smilies_pak file if ($current == 'delete') { @@ -343,11 +366,6 @@ class acp_icons $db->sql_freeresult($result); } - if (!($pak_ary = @file($phpbb_root_path . $img_path . '/' . $pak))) - { - trigger_error($user->lang['PAK_FILE_NOT_READABLE'] . adm_back_link($this->u_action), E_USER_WARNING); - } - foreach ($pak_ary as $pak_entry) { $data = array(); @@ -512,32 +530,43 @@ class acp_icons case 'delete': - $sql = "DELETE FROM $table - WHERE {$fields}_id = $icon_id"; - $db->sql_query($sql); - - switch ($mode) + if (confirm_box(true)) { - case 'smilies': - break; + $sql = "DELETE FROM $table + WHERE {$fields}_id = $icon_id"; + $db->sql_query($sql); - case 'icons': - // Reset appropriate icon_ids - $db->sql_query('UPDATE ' . TOPICS_TABLE . " - SET icon_id = 0 - WHERE icon_id = $icon_id"); + switch ($mode) + { + case 'smilies': + break; + + case 'icons': + // Reset appropriate icon_ids + $db->sql_query('UPDATE ' . TOPICS_TABLE . " + SET icon_id = 0 + WHERE icon_id = $icon_id"); + + $db->sql_query('UPDATE ' . POSTS_TABLE . " + SET icon_id = 0 + WHERE icon_id = $icon_id"); + break; + } - $db->sql_query('UPDATE ' . POSTS_TABLE . " - SET icon_id = 0 - WHERE icon_id = $icon_id"); + $notice = $user->lang[$lang . '_DELETED']; - break; + $cache->destroy('icons'); + $cache->destroy('sql', $table); + } + else + { + confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( + 'i' => $id, + 'mode' => $mode, + 'id' => $icon_id, + 'action' => 'delete', + ))); } - - $notice = $user->lang[$lang . '_DELETED']; - - $cache->destroy('icons'); - $cache->destroy('sql', $table); break; diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index 68eeaab5b4..450b9fd0de 100755 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -26,6 +26,8 @@ class acp_inactive global $config, $db, $user, $auth, $template; global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; + include($phpbb_root_path . 'includes/functions_user.' . $phpEx); + $user->add_lang('memberlist'); $action = request_var('action', ''); @@ -43,7 +45,8 @@ class acp_inactive { case 'activate': case 'delete': - $sql = 'SELECT username + + $sql = 'SELECT user_id, username FROM ' . USERS_TABLE . ' WHERE ' . $db->sql_in_set('user_id', $mark); $result = $db->sql_query($sql); @@ -51,13 +54,12 @@ class acp_inactive $user_affected = array(); while ($row = $db->sql_fetchrow($result)) { - $user_affected[] = $row['username']; + $user_affected[$row['user_id']] = $row['username']; } $db->sql_freeresult($result); if ($action == 'activate') { - include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); user_active_flip('activate', $mark); } else if ($action == 'delete') @@ -67,14 +69,14 @@ class acp_inactive trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); } - $sql = 'DELETE FROM ' . USER_GROUP_TABLE . ' WHERE ' . $db->sql_in_set('user_id', $mark); - $db->sql_query($sql); - $sql = 'DELETE FROM ' . USERS_TABLE . ' WHERE ' . $db->sql_in_set('user_id', $mark); - $db->sql_query($sql); - - add_log('admin', 'LOG_INACTIVE_' . strtoupper($action), implode(', ', $user_affected)); + foreach ($mark as $user_id) + { + user_delete('retain', $user_id, $user_affected[$user_id]); + } } + add_log('admin', 'LOG_INACTIVE_' . strtoupper($action), implode(', ', $user_affected)); + break; case 'remind': @@ -94,22 +96,19 @@ class acp_inactive include_once($phpbb_root_path . 'includes/functions_messenger.'.$phpEx); $messenger = new messenger(); - - $board_url = generate_board_url() . "/ucp.$phpEx?mode=activate"; - $usernames = array(); + do { $messenger->template('user_remind_inactive', $row['user_lang']); - $messenger->replyto($config['board_email']); $messenger->to($row['user_email'], $row['username']); $messenger->im($row['user_jabber'], $row['username']); $messenger->assign_vars(array( 'USERNAME' => htmlspecialchars_decode($row['username']), 'REGISTER_DATE' => $user->format_date($row['user_regdate']), - 'U_ACTIVATE' => "$board_url&mode=activate&u=" . $row['user_id'] . '&k=' . $row['user_actkey']) + 'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u=" . $row['user_id'] . '&k=' . $row['user_actkey']) ); $messenger->send($row['user_notify_type']); diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php index d216ff7f9b..d58fef14f1 100644 --- a/phpBB/includes/acp/acp_jabber.php +++ b/phpBB/includes/acp/acp_jabber.php @@ -58,7 +58,7 @@ class acp_jabber { if (!$jabber->connect()) { - trigger_error($user->lang['ERR_JAB_CONNECT'] . adm_back_link($this->u_action), E_USER_WARNING); + trigger_error($user->lang['ERR_JAB_CONNECT'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); } // First we'll try to authorise using this account, if that fails we'll try to create it. @@ -87,16 +87,16 @@ class acp_jabber { if (!$jabber->connect()) { - trigger_error($user->lang['ERR_JAB_CONNECT'] . adm_back_link($this->u_action), E_USER_WARNING); + trigger_error($user->lang['ERR_JAB_CONNECT'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); } if (!$jabber->send_auth()) { - trigger_error($user->lang['ERR_JAB_AUTH'] . adm_back_link($this->u_action), E_USER_WARNING); + trigger_error($user->lang['ERR_JAB_AUTH'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); } $jabber->send_presence(NULL, NULL, 'online'); - if (($result = $jabber->change_password($jab_password)) <> 2) + if (($result = $jabber->change_password($jab_password)) <> 2) { $error[] = ($result == 1) ? $user->lang['ERR_JAB_PASSCHG'] : sprintf($user->lang['ERR_JAB_PASSFAIL'], $result); } diff --git a/phpBB/includes/acp/acp_language.php b/phpBB/includes/acp/acp_language.php index 6c962d9405..b1f6554809 100644 --- a/phpBB/includes/acp/acp_language.php +++ b/phpBB/includes/acp/acp_language.php @@ -116,6 +116,7 @@ class acp_language 'S_UPLOAD' => true, 'NAME' => $method, 'U_ACTION' => $this->u_action . "&id=$lang_id&action=upload_data", + 'U_BACK' => $this->u_action . "&id=$lang_id&action=details&language_file=" . urlencode($selected_lang_file), 'HIDDEN' => $hidden_data, 'S_CONNECTION_SUCCESS' => (request_var('test_connection', '') && $test_connection === true) ? true : false, @@ -203,7 +204,7 @@ class acp_language if (!$fp) { - trigger_error(sprintf($user->lang['UNABLE_TO_WRITE_FILE'], $filename) . adm_back_link($this->u_action . '&id=' . $lang_id . '&language_file=' . urlencode($selected_lang_file)), E_USER_WARNING); + trigger_error(sprintf($user->lang['UNABLE_TO_WRITE_FILE'], $filename) . adm_back_link($this->u_action . '&id=' . $lang_id . '&action=details&language_file=' . urlencode($selected_lang_file)), E_USER_WARNING); } if ($this->language_directory == 'email') @@ -240,6 +241,9 @@ class acp_language $entry .= "\t),\n"; fwrite($fp, $entry); } + + $footer = ");\n\n?>"; + fwrite($fp, $footer); } else { @@ -252,10 +256,10 @@ class acp_language $entry = $this->format_lang_array($key, $value); fwrite($fp, $entry); } - } - $footer = "));\n\n?>"; - fwrite($fp, $footer); + $footer = "));\n\n?>"; + fwrite($fp, $footer); + } } fclose($fp); @@ -316,7 +320,17 @@ class acp_language } $transfer->rename($lang_path . $file, $lang_path . $file . '.bak'); - $transfer->copy_file('store/' . $lang_path . $file, $lang_path . $file); + $result = $transfer->copy_file('store/' . $lang_path . $file, $lang_path . $file); + + if ($result === false) + { + // If failed, try to rename again and print error out... + $transfer->delete_file($lang_path . $file); + $transfer->rename($lang_path . $file . '.bak', $lang_path . $file); + + trigger_error($user->lang['UPLOAD_FAILED'] . adm_back_link($this->u_action . '&action=details&id=' . $lang_id . '&language_file=' . urlencode($selected_lang_file)), E_USER_WARNING); + } + $transfer->close_session(); // Remove from storage folder @@ -621,16 +635,15 @@ class acp_language if (!$is_email_file) { - $method = ($is_help_file) ? 'print_help_entries' : 'print_language_entries'; $tpl = ''; $name = (($this->language_directory) ? $this->language_directory . '/' : '') . $this->language_file; if (isset($missing_vars[$name]) && sizeof($missing_vars[$name])) { - $tpl .= $this->$method($missing_vars[$name], '* '); + $tpl .= $this->print_language_entries($missing_vars[$name], '* '); } - $tpl .= $this->$method($lang); + $tpl .= $this->print_language_entries($lang); $template->assign_var('TPL', $tpl); unset($tpl); @@ -674,6 +687,13 @@ class acp_language WHERE user_lang = '" . $db->sql_escape($row['lang_iso']) . "'"; $db->sql_query($sql); + // We also need to remove the translated entries for custom profile fields - we want clean tables, don't we? + $sql = 'DELETE FROM ' . PROFILE_LANG_TABLE . ' WHERE lang_id = ' . $lang_id; + $db->sql_query($sql); + + $sql = 'DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . ' WHERE lang_id = ' . $lang_id; + $db->sql_query($sql); + add_log('admin', 'LOG_LANGUAGE_PACK_DELETED', $row['lang_english_name']); trigger_error(sprintf($user->lang['LANGUAGE_PACK_DELETED'], $row['lang_english_name']) . adm_back_link($this->u_action)); @@ -725,6 +745,43 @@ class acp_language ); $db->sql_query('INSERT INTO ' . LANG_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); + $lang_id = $db->sql_nextid(); + + // Now let's copy the default language entries for custom profile fields for this new language - makes admin's life easier. + $sql = 'SELECT lang_id + FROM ' . LANG_TABLE . " + WHERE lang_iso = '" . $db->sql_escape($config['default_lang']) . "'"; + $result = $db->sql_query($sql); + $default_lang_id = (int) $db->sql_fetchfield('lang_id'); + $db->sql_freeresult($result); + + // From the mysql documentation: + // Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14. + // Due to this we stay on the safe side if we do the insertion "the manual way" + + $sql = 'SELECT field_id, lang_name, lang_explain, lang_default_value + FROM ' . PROFILE_LANG_TABLE . ' + WHERE lang_id = ' . $default_lang_id; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $row['lang_id'] = $lang_id; + $db->sql_query('INSERT INTO ' . PROFILE_LANG_TABLE . ' ' . $db->sql_build_array('INSERT', $row)); + } + $db->sql_freeresult($result); + + $sql = 'SELECT field_id, option_id, field_type, lang_value + FROM ' . PROFILE_FIELDS_LANG_TABLE . ' + WHERE lang_id = ' . $default_lang_id; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $row['lang_id'] = $lang_id; + $db->sql_query('INSERT INTO ' . PROFILE_FIELDS_LANG_TABLE . ' ' . $db->sql_build_array('INSERT', $row)); + } + $db->sql_freeresult($result); add_log('admin', 'LOG_LANGUAGE_PACK_INSTALLED', $lang_pack['name']); @@ -866,7 +923,7 @@ class acp_language } $db->sql_freeresult($result); - $sql = 'SELECT * + $sql = 'SELECT * FROM ' . LANG_TABLE . ' ORDER BY lang_english_name'; $result = $db->sql_query($sql); @@ -893,31 +950,35 @@ class acp_language $db->sql_freeresult($result); $new_ary = $iso = array(); - $dp = opendir("{$phpbb_root_path}language"); + $dp = @opendir("{$phpbb_root_path}language"); - while (($file = readdir($dp)) !== false) + if ($dp) { - if ($file[0] != '.' && file_exists("{$phpbb_root_path}language/$file/iso.txt")) + while (($file = readdir($dp)) !== false) { - if (!in_array($file, $installed)) + if ($file[0] != '.' && file_exists("{$phpbb_root_path}language/$file/iso.txt")) { - if ($iso = file("{$phpbb_root_path}language/$file/iso.txt")) + if (!in_array($file, $installed)) { - if (sizeof($iso) == 3) + if ($iso = file("{$phpbb_root_path}language/$file/iso.txt")) { - $new_ary[$file] = array( - 'iso' => $file, - 'name' => trim($iso[0]), - 'local_name'=> trim($iso[1]), - 'author' => trim($iso[2]) - ); + if (sizeof($iso) == 3) + { + $new_ary[$file] = array( + 'iso' => $file, + 'name' => trim($iso[0]), + 'local_name'=> trim($iso[1]), + 'author' => trim($iso[2]) + ); + } } } } } + closedir($dp); } + unset($installed); - @closedir($dp); if (sizeof($new_ary)) { @@ -949,7 +1010,7 @@ class acp_language * {FILENAME} [{LANG_NAME}] * * @package language -* @copyright (c) 2006 phpBB Group +* @copyright (c) ' . date('Y') . ' phpBB Group * @author {CHANGED} - {AUTHOR} * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @@ -1029,6 +1090,35 @@ $lang = array_merge($lang, array( } /** + * Little helper to add some hardcoded template bits + */ + function add_input_field() + { + $keys = func_get_args(); + + $non_static = array_shift($keys); + $value = array_shift($keys); + + if (!$non_static) + { + return '<strong>' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '</strong>'; + } + + // If more then 270 characters, then we present a textarea, else an input field + $textarea = (utf8_strlen($value) > 270) ? true : false; + $tpl = ''; + + $tpl .= ($textarea) ? '<textarea name="' : '<input type="text" name="'; + $tpl .= 'entry[' . implode('][', array_map('utf8_htmlspecialchars', $keys)) . ']"'; + + $tpl .= ($textarea) ? ' cols="80" rows="5" class="langvalue">' : ' class="langvalue" value="'; + $tpl .= htmlspecialchars($value, ENT_COMPAT, 'UTF-8'); + $tpl .= ($textarea) ? '</textarea>' : '" />'; + + return $tpl; + } + + /** * Print language entries */ function print_language_entries(&$lang_ary, $key_prefix = '', $input_field = true) @@ -1039,56 +1129,46 @@ $lang = array_merge($lang, array( { if (is_array($value)) { + // Write key $tpl .= ' <tr> - <td class="row3" colspan="2">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<b>' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '</b></td> + <td class="row3" colspan="2">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<strong>' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '</strong></td> </tr>'; foreach ($value as $_key => $_value) { if (is_array($_value)) { + // Write key $tpl .= ' <tr> - <td class="row3" colspan="2">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . ' <b>' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . '</b></td> + <td class="row3" colspan="2">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . ' <strong>' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . '</strong></td> </tr>'; foreach ($_value as $__key => $__value) { + // Write key $tpl .= ' <tr> - <td class="row1" style="white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<b>' . htmlspecialchars($__key, ENT_COMPAT, 'UTF-8') . '</b></td> + <td class="row1" style="white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<strong>' . htmlspecialchars($__key, ENT_COMPAT, 'UTF-8') . '</strong></td> <td class="row2">'; - if ($input_field) - { - $tpl .= '<input type="text" name="entry[' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '][' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . '][' . htmlspecialchars($__key, ENT_COMPAT, 'UTF-8') . ']" value="' . htmlspecialchars($__value, ENT_COMPAT, 'UTF-8') . '" size="50" />'; - } - else - { - $tpl .= '<b>' . htmlspecialchars($__value, ENT_COMPAT, 'UTF-8') . '</b>'; - } - + $tpl .= $this->add_input_field($input_field, $__value, $key, $_key, $__key); + $tpl .= '</td> </tr>'; } } else { + // Write key $tpl .= ' <tr> - <td class="row1" style="white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<b>' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . '</b></td> + <td class="row1" style="white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<strong>' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . '</strong></td> <td class="row2">'; - if ($input_field) - { - $tpl .= '<input type="text" name="entry[' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '][' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . ']" value="' . htmlspecialchars($_value, ENT_COMPAT, 'UTF-8') . '" size="50" />'; - } - else - { - $tpl .= '<b>' . htmlspecialchars($_value, ENT_COMPAT, 'UTF-8') . '</b>'; - } - + $tpl .= $this->add_input_field($input_field, $_value, $key, $_key); + $tpl .= '</td> </tr>'; } @@ -1101,84 +1181,13 @@ $lang = array_merge($lang, array( } else { + // Write key $tpl .= ' <tr> - <td class="row1" style="white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<b>' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '</b></td> + <td class="row1" style="white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<strong>' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '</strong></td> <td class="row2">'; - if ($input_field) - { - $tpl .= '<input type="text" name="entry[' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . ']" value="' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '" size="50" />'; - } - else - { - $tpl .= '<b>' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '</b>'; - } - - $tpl .= '</td> - </tr>'; - } - } - - return $tpl; - } - - /** - * Print help entries - */ - function print_help_entries(&$lang_ary, $key_prefix = '', $text_field = true) - { - $tpl = ''; - - foreach ($lang_ary as $key => $value) - { - if (is_array($value)) - { - $tpl .= ' - <tr> - <td class="row3" colspan="2">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<b>' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '</b></td> - </tr>'; - - foreach ($value as $_key => $_value) - { - $tpl .= ' - <tr> - <td class="row1" style="width: 10%; white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<b>' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . '</b></td> - <td class="row2">'; - - if ($text_field) - { - $tpl .= '<textarea name="entry[' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '][' . htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') . ']" cols="80" rows="5" style="width: 90%;">' . htmlspecialchars($_value, ENT_COMPAT, 'UTF-8') . '</textarea>'; - } - else - { - $tpl .= '<b>' . htmlspecialchars($_value, ENT_COMPAT, 'UTF-8') . '</b>'; - } - - $tpl .= '</td> - </tr>'; - } - - $tpl .= ' - <tr> - <td class="spacer" colspan="2"> </td> - </tr>'; - } - else - { - $tpl .= ' - <tr> - <td class="row1" style="width: 10%; white-space: nowrap;">' . htmlspecialchars($key_prefix, ENT_COMPAT, 'UTF-8') . '<b>' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . '</b></td> - <td class="row2">'; - - if ($text_field) - { - $tpl .= '<textarea name="entry[' . htmlspecialchars($key, ENT_COMPAT, 'UTF-8') . ']" cols="80" rows="5" style="width: 90%;">' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '</textarea>'; - } - else - { - $tpl .= '<b>' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '</b>'; - } + $tpl .= $this->add_input_field($input_field, $value, $key); $tpl .= '</td> </tr>'; diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index d7e327e4d3..fad9ad47b7 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -43,7 +43,7 @@ class acp_main 'S_RESTORE_PERMISSIONS' => true, 'U_RESTORE_PERMISSIONS' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm'), 'PERM_FROM' => $perm_from, - 'L_PERMISSIONS_TRANSFERED_EXPLAIN' => sprintf($user->lang['PERMISSIONS_TRANSFERED_EXPLAIN'], $perm_from, append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm')), + 'L_PERMISSIONS_TRANSFERRED_EXPLAIN' => sprintf($user->lang['PERMISSIONS_TRANSFERRED_EXPLAIN'], $perm_from, append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm')), )); return; diff --git a/phpBB/includes/acp/acp_modules.php b/phpBB/includes/acp/acp_modules.php index c426e4607d..2eb45b4972 100644 --- a/phpBB/includes/acp/acp_modules.php +++ b/phpBB/includes/acp/acp_modules.php @@ -67,6 +67,17 @@ class acp_modules if (confirm_box(true)) { + // Make sure we are not directly within a module + if ($module_id == $this->parent_id) + { + $sql = 'SELECT parent_id + FROM ' . MODULES_TABLE . ' + WHERE module_id = ' . $module_id; + $result = $db->sql_query($sql); + $this->parent_id = (int) $db->sql_fetchfield('parent_id'); + $db->sql_freeresult($result); + } + $errors = $this->delete_module($module_id); if (!sizeof($errors)) @@ -501,7 +512,13 @@ class acp_modules if (!$module) { - $dh = opendir($directory); + $dh = @opendir($directory); + + if (!$dh) + { + return $fileinfo; + } + while (($file = readdir($dh)) !== false) { // Is module? @@ -1008,14 +1025,6 @@ class acp_modules return $this->lang_name($target['module_langname']); } - - /** - * Check if the module or her childs hold the management module(s) - */ - function is_management_module($module_id) - { - - } } ?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_permission_roles.php b/phpBB/includes/acp/acp_permission_roles.php index 004d9f55af..08a992957f 100644 --- a/phpBB/includes/acp/acp_permission_roles.php +++ b/phpBB/includes/acp/acp_permission_roles.php @@ -142,6 +142,11 @@ class acp_permission_roles trigger_error($user->lang['NO_ROLE_NAME_SPECIFIED'] . adm_back_link($this->u_action), E_USER_WARNING); } + if (utf8_strlen($role_description) > 4000) + { + trigger_error($user->lang['ROLE_DESCRIPTION_LONG'] . adm_back_link($this->u_action), E_USER_WARNING); + } + // if we add/edit a role we check the name to be unique among the settings... $sql = 'SELECT role_id FROM ' . ACL_ROLES_TABLE . " @@ -325,9 +330,11 @@ class acp_permission_roles if (sizeof($hold_ary)) { + $role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name']; + $template->assign_var(array( 'S_DISPLAY_ROLE_MASK' => true, - 'L_ROLE_ASSIGNED_TO' => sprintf($user->lang['ROLE_ASSIGNED_TO'], $role_row['role_name'])) + 'L_ROLE_ASSIGNED_TO' => sprintf($user->lang['ROLE_ASSIGNED_TO'], $role_name)) ); $auth_admin->display_role_mask($hold_ary); @@ -344,7 +351,7 @@ class acp_permission_roles $order_total = $order * 2 + (($action == 'move_up') ? -1 : 1); $sql = 'UPDATE ' . ACL_ROLES_TABLE . ' - SET role_order = ' . $order_total . " - role_order + SET role_order = ' . $order_total . " - role_order WHERE role_type = '" . $db->sql_escape($permission_type) . "' AND role_order IN ($order, " . (($action == 'move_up') ? $order - 1 : $order + 1) . ')'; $db->sql_query($sql); @@ -387,8 +394,10 @@ class acp_permission_roles $s_role_options = ''; while ($row = $db->sql_fetchrow($result)) { + $role_name = (!empty($user->lang[$row['role_name']])) ? $user->lang[$row['role_name']] : $row['role_name']; + $template->assign_block_vars('roles', array( - 'ROLE_NAME' => $row['role_name'], + 'ROLE_NAME' => $role_name, 'ROLE_DESCRIPTION' => (!empty($user->lang[$row['role_description']])) ? $user->lang[$row['role_description']] : nl2br($row['role_description']), 'U_EDIT' => $this->u_action . '&action=edit&role_id=' . $row['role_id'], @@ -398,12 +407,12 @@ class acp_permission_roles 'U_DISPLAY_ITEMS' => ($row['role_id'] == $display_item) ? '' : $this->u_action . '&display_item=' . $row['role_id'] . '#assigned_to') ); - $s_role_options .= '<option value="' . $row['role_id'] . '">' . $row['role_name'] . '</option>'; + $s_role_options .= '<option value="' . $row['role_id'] . '">' . $role_name . '</option>'; if ($display_item == $row['role_id']) { $template->assign_vars(array( - 'L_ROLE_ASSIGNED_TO' => sprintf($user->lang['ROLE_ASSIGNED_TO'], $row['role_name'])) + 'L_ROLE_ASSIGNED_TO' => sprintf($user->lang['ROLE_ASSIGNED_TO'], $role_name)) ); } } diff --git a/phpBB/includes/acp/acp_permissions.php b/phpBB/includes/acp/acp_permissions.php index 5354d70f72..c7e9e31d66 100644 --- a/phpBB/includes/acp/acp_permissions.php +++ b/phpBB/includes/acp/acp_permissions.php @@ -305,7 +305,7 @@ class acp_permissions $s_forum_options = ''; foreach ($forum_list as $f_id => $f_row) { - $s_forum_options .= '<option value="' . $f_id . '"' . $f_row['selected'] . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>'; + $s_forum_options .= '<option value="' . $f_id . '"' . (($f_row['selected']) ? ' selected="selected"' : '') . (($f_row['disabled']) ? ' disabled="disabled"' : '') . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>'; } // Build subforum options @@ -331,8 +331,8 @@ class acp_permissions $template->assign_vars(array( 'S_SELECT_USER' => true, - 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_victim&field=username'), - 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_victim&field=username', false)) + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_victim&field=username&select_single=true'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_victim&field=username&select_single=true', false)) ); break; @@ -347,7 +347,7 @@ class acp_permissions $template->assign_vars(array( 'S_SELECT_GROUP' => true, - 'S_GROUP_OPTIONS' => group_select_options(false)) + 'S_GROUP_OPTIONS' => group_select_options(false, false, (($user->data['user_type'] == USER_FOUNDER) ? false : 0))) ); break; @@ -393,9 +393,9 @@ class acp_permissions 'S_SELECT_USERGROUP_VIEW' => ($victim == 'usergroup_view') ? true : false, 'S_DEFINED_USER_OPTIONS' => $items['user_ids_options'], 'S_DEFINED_GROUP_OPTIONS' => $items['group_ids_options'], - 'S_ADD_GROUP_OPTIONS' => group_select_options(false, $items['group_ids']), - 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=add_user&field=username'), - 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=add_user&field=username', false)) + 'S_ADD_GROUP_OPTIONS' => group_select_options(false, $items['group_ids'], (($user->data['user_type'] == USER_FOUNDER) ? false : 0)), + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=add_user&field=username&select_single=true'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=add_user&field=username&select_single=true', false)) ); break; @@ -488,7 +488,12 @@ class acp_permissions foreach ($forum_list as $key => $row) { - $s_options .= '<option value="' . $row['forum_id'] . '"' . $row['selected'] . '>' . $row['padding'] . $row['forum_name']; + if ($row['disabled']) + { + continue; + } + + $s_options .= '<option value="' . $row['forum_id'] . '"' . (($row['selected']) ? ' selected="selected"' : '') . '>' . $row['padding'] . $row['forum_name']; // We check if a branch is there... $branch_there = false; @@ -812,7 +817,7 @@ class acp_permissions // Logging ... first grab user or groupnames ... $sql = ($ug_type == 'group') ? 'SELECT group_name as name, group_type FROM ' . GROUPS_TABLE . ' WHERE ' : 'SELECT username as name FROM ' . USERS_TABLE . ' WHERE '; - $sql .= $db->sql_in_set(($ug_type == 'group') ? 'group_id' : 'user_id', array_map('intval', $ug_id)); + $sql .= $db->sql_in_set(($ug_type == 'group') ? 'group_id' : 'user_id', array_map('intval', $ug_id)); $result = $db->sql_query($sql); $l_ug_list = ''; @@ -831,7 +836,7 @@ class acp_permissions else { // Grab the forum details if non-zero forum_id - $sql = 'SELECT forum_name + $sql = 'SELECT forum_name FROM ' . FORUMS_TABLE . ' WHERE ' . $db->sql_in_set('forum_id', $forum_id); $result = $db->sql_query($sql); @@ -1064,7 +1069,7 @@ class acp_permissions $sql_permission_option = "AND o.auth_option LIKE '" . $db->sql_escape($permission_type) . "%'"; $sql = $db->sql_build_query('SELECT_DISTINCT', array( - 'SELECT' => 'u.username, u.user_regdate, u.user_id', + 'SELECT' => 'u.username, u.username_clean, u.user_regdate, u.user_id', 'FROM' => array( USERS_TABLE => 'u', @@ -1084,7 +1089,7 @@ class acp_permissions $sql_forum_id AND u.user_id = a.user_id", - 'ORDER_BY' => 'u.username, u.user_regdate ASC' + 'ORDER_BY' => 'u.username_clean, u.user_regdate ASC' )); $result = $db->sql_query($sql); diff --git a/phpBB/includes/acp/acp_php_info.php b/phpBB/includes/acp/acp_php_info.php index fe223b623e..342d89addd 100644 --- a/phpBB/includes/acp/acp_php_info.php +++ b/phpBB/includes/acp/acp_php_info.php @@ -29,15 +29,21 @@ class acp_php_info $this->page_title = 'ACP_PHP_INFO'; ob_start(); - phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_VARIABLES); - $phpinfo = ob_get_contents(); - ob_end_clean(); + @phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_VARIABLES); + $phpinfo = ob_get_clean(); + + $phpinfo = trim($phpinfo); // Here we play around a little with the PHP Info HTML to try and stylise // it along phpBB's lines ... hopefully without breaking anything. The idea // for this was nabbed from the PHP annotated manual preg_match_all('#<body[^>]*>(.*)</body>#si', $phpinfo, $output); + if (empty($phpinfo) || empty($output)) + { + trigger_error('NO_PHPINFO_AVAILABLE', E_USER_WARNING); + } + $output = $output[1][0]; $output = preg_replace('#<tr class="v"><td>(.*?<a[^>]*><img[^>]*></a>)(.*?)</td></tr>#s', '<tr class="row1"><td><table class="type2"><tr><td>\2</td><td>\1</td></tr></table></td></tr>', $output); $output = preg_replace('#<table[^>]+>#i', '<table>', $output); diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index 8bfe2b8b36..da11868cc2 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -15,6 +15,9 @@ class acp_profile { var $u_action; + var $edit_lang_id; + var $lang_defs; + function main($id, $mode) { global $config, $db, $user, $auth, $template, $cache; @@ -47,7 +50,7 @@ class acp_profile // Build Language array // Based on this, we decide which elements need to be edited later and which language items are missing - $lang_defs = array(); + $this->lang_defs = array(); $sql = 'SELECT lang_id, lang_iso FROM ' . LANG_TABLE . ' @@ -57,8 +60,8 @@ class acp_profile while ($row = $db->sql_fetchrow($result)) { // Make some arrays with all available languages - $lang_defs['id'][] = $row['lang_id']; - $lang_defs['iso'][$row['lang_iso']] = $row['lang_id']; + $this->lang_defs['id'][$row['lang_id']] = $row['lang_iso']; + $this->lang_defs['iso'][$row['lang_iso']] = $row['lang_id']; } $db->sql_freeresult($result); @@ -70,17 +73,17 @@ class acp_profile while ($row = $db->sql_fetchrow($result)) { // Which languages are available for each item - $lang_defs['entry'][$row['field_id']][] = $row['lang_id']; + $this->lang_defs['entry'][$row['field_id']][] = $row['lang_id']; } $db->sql_freeresult($result); // Have some fields been defined? - if (isset($lang_defs['entry'])) + if (isset($this->lang_defs['entry'])) { - foreach ($lang_defs['entry'] as $field_id => $field_ary) + foreach ($this->lang_defs['entry'] as $field_id => $field_ary) { // Fill an array with the languages that are missing for each field - $lang_defs['diff'][$field_id] = array_diff($lang_defs['id'], $field_ary); + $this->lang_defs['diff'][$field_id] = array_diff(array_values($this->lang_defs['iso']), $field_ary); } } @@ -103,6 +106,8 @@ class acp_profile $field_ident = (string) $db->sql_fetchfield('field_ident'); $db->sql_freeresult($result); + $db->sql_transaction('begin'); + $db->sql_query('DELETE FROM ' . PROFILE_FIELDS_TABLE . " WHERE field_id = $field_id"); $db->sql_query('DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . " WHERE field_id = $field_id"); $db->sql_query('DELETE FROM ' . PROFILE_LANG_TABLE . " WHERE field_id = $field_id"); @@ -119,8 +124,6 @@ class acp_profile $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); - $db->sql_transaction('begin'); - // Create a temp table and populate it, destroy the existing one $db->sql_query(preg_replace('#CREATE\s+TABLE\s+"?' . PROFILE_FIELDS_DATA_TABLE . '"?#i', 'CREATE TEMPORARY TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp', $row['sql'])); $db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . '_temp SELECT * FROM ' . PROFILE_FIELDS_DATA_TABLE); @@ -149,12 +152,10 @@ class acp_profile $db->sql_query('CREATE TABLE ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $new_table_cols . ');'); $db->sql_query('INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . PROFILE_FIELDS_DATA_TABLE . '_temp;'); $db->sql_query('DROP TABLE ' . PROFILE_FIELDS_DATA_TABLE . '_temp'); - - $db->sql_transaction('commit'); break; default: - $db->sql_query('ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " DROP pf_$field_ident"); + $db->sql_query('ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " DROP COLUMN pf_$field_ident"); } $order = 0; @@ -177,6 +178,8 @@ class acp_profile } $db->sql_freeresult($result); + $db->sql_transaction('commit'); + add_log('admin', 'LOG_PROFILE_FIELD_REMOVED', $field_ident); trigger_error($user->lang['REMOVED_PROFILE_FIELD'] . adm_back_link($this->u_action)); } @@ -207,7 +210,7 @@ class acp_profile $default_lang_id = (int) $db->sql_fetchfield('lang_id'); $db->sql_freeresult($result); - if (!in_array($default_lang_id, $lang_defs['entry'][$field_id])) + if (!in_array($default_lang_id, $this->lang_defs['entry'][$field_id])) { trigger_error($user->lang['DEFAULT_LANGUAGE_NOT_FILLED'] . adm_back_link($this->u_action), E_USER_WARNING); } @@ -275,6 +278,9 @@ class acp_profile $submit = (isset($_REQUEST['next']) || isset($_REQUEST['prev'])) ? true : false; $save = (isset($_REQUEST['save'])) ? true : false; + // The language id of default language + $this->edit_lang_id = $this->lang_defs['iso'][$config['default_lang']]; + // We are editing... we need to grab basic things if ($action == 'edit') { @@ -285,7 +291,7 @@ class acp_profile $sql = 'SELECT l.*, f.* FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f - WHERE l.lang_id = ' . $lang_defs['iso'][$config['default_lang']] . " + WHERE l.lang_id = ' . $this->edit_lang_id . " AND f.field_id = $field_id AND l.field_id = f.field_id"; $result = $db->sql_query($sql); @@ -294,14 +300,29 @@ class acp_profile if (!$field_row) { - trigger_error($user->lang['FIELD_NOT_FOUND'] . adm_back_link($this->u_action), E_USER_WARNING); + // Some admin changed the default language? + $sql = 'SELECT l.*, f.* + FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f + WHERE l.lang_id <> ' . $this->edit_lang_id . " + AND f.field_id = $field_id + AND l.field_id = f.field_id"; + $result = $db->sql_query($sql); + $field_row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if (!$field_row) + { + trigger_error($user->lang['FIELD_NOT_FOUND'] . adm_back_link($this->u_action), E_USER_WARNING); + } + + $this->edit_lang_id = $field_row['lang_id']; } $field_type = $field_row['field_type']; // Get language entries $sql = 'SELECT * FROM ' . PROFILE_FIELDS_LANG_TABLE . ' - WHERE lang_id = ' . $lang_defs['iso'][$config['default_lang']] . " + WHERE lang_id = ' . $this->edit_lang_id . " AND field_id = $field_id ORDER BY option_id ASC"; $result = $db->sql_query($sql); @@ -404,17 +425,17 @@ class acp_profile { // The number of options in the field is equal to the number of options already in the database // Or we are creating a new dropdown list. - $cp->vars['lang_options'] = $exploded_options; + $cp->vars['lang_options'] = $exploded_options; } else if ($action == 'edit') { // Changing the number of options? (We remove and re-create the option fields) - $cp->vars['lang_options'] = $exploded_options; + $cp->vars['lang_options'] = $exploded_options; } } else { - $cp->vars['lang_options'] = $lang_options; + $cp->vars['lang_options'] = $lang_options; } // step 2 @@ -483,7 +504,7 @@ class acp_profile // Get language entries $sql = 'SELECT * FROM ' . PROFILE_FIELDS_LANG_TABLE . ' - WHERE lang_id <> ' . $lang_defs['iso'][$config['default_lang']] . " + WHERE lang_id <> ' . $this->edit_lang_id . " AND field_id = $field_id ORDER BY option_id ASC"; $result = $db->sql_query($sql); @@ -498,7 +519,7 @@ class acp_profile $sql = 'SELECT lang_id, lang_name, lang_explain, lang_default_value FROM ' . PROFILE_LANG_TABLE . ' - WHERE lang_id <> ' . $lang_defs['iso'][$config['default_lang']] . " + WHERE lang_id <> ' . $this->edit_lang_id . " AND field_id = $field_id ORDER BY lang_id ASC"; $result = $db->sql_query($sql); @@ -616,13 +637,13 @@ class acp_profile if (!sizeof($error)) { - if ($step == 3 && (sizeof($lang_defs['iso']) == 1 || $save)) + if ($step == 3 && (sizeof($this->lang_defs['iso']) == 1 || $save)) { - $this->save_profile_field($cp, $field_type, $lang_defs, $action); + $this->save_profile_field($cp, $field_type, $action); } else if ($action == 'edit' && $save) { - $this->save_profile_field($cp, $field_type, $lang_defs, $action); + $this->save_profile_field($cp, $field_type, $action); } } @@ -706,7 +727,7 @@ class acp_profile $template->assign_vars(array( 'S_STEP_TWO' => true, - 'L_NEXT' => (sizeof($lang_defs['iso']) == 1) ? $user->lang['SAVE'] : $user->lang['PROFILE_LANG_OPTIONS']) + 'L_NEXT' => (sizeof($this->lang_defs['iso']) == 1) ? $user->lang['SAVE'] : $user->lang['PROFILE_LANG_OPTIONS']) ); // Build options based on profile type @@ -729,7 +750,7 @@ class acp_profile foreach ($options as $lang_id => $lang_ary) { $template->assign_block_vars('options', array( - 'LANGUAGE' => ($lang_ary['lang_iso'] == $config['default_lang']) ? sprintf($user->lang['DEFAULT_ISO_LANGUAGE'], $config['default_lang']) : sprintf($user->lang['ISO_LANGUAGE'], $lang_ary['lang_iso'])) + 'LANGUAGE' => sprintf($user->lang[(($lang_id == $this->edit_lang_id) ? 'DEFAULT_' : '') . 'ISO_LANGUAGE'], $lang_ary['lang_iso'])) ); foreach ($lang_ary['fields'] as $field_ident => $field_ary) @@ -766,7 +787,7 @@ class acp_profile $active_value = (!$row['field_active']) ? 'activate' : 'deactivate'; $id = $row['field_id']; - $s_need_edit = (sizeof($lang_defs['diff'][$row['field_id']])) ? true : false; + $s_need_edit = (sizeof($this->lang_defs['diff'][$row['field_id']])) ? true : false; if ($s_need_edit) { @@ -815,10 +836,12 @@ class acp_profile { global $user, $config, $db; + $default_lang_id = (!empty($this->edit_lang_id)) ? $this->edit_lang_id : $this->lang_defs['iso'][$config['default_lang']]; + $sql = 'SELECT lang_id, lang_iso - FROM ' . LANG_TABLE . " - WHERE lang_iso <> '" . $config['default_lang'] . "' - ORDER BY lang_english_name"; + FROM ' . LANG_TABLE . ' + WHERE lang_id <> ' . (int) $default_lang_id . ' + ORDER BY lang_english_name'; $result = $db->sql_query($sql); $languages = array(); @@ -858,7 +881,7 @@ class acp_profile foreach ($options as $field => $field_type) { - $lang_options[1]['lang_iso'] = $config['default_lang']; + $lang_options[1]['lang_iso'] = $this->lang_defs['id'][$default_lang_id]; $lang_options[1]['fields'][$field] = array( 'TITLE' => $user->lang['CP_' . strtoupper($field)], 'FIELD' => '<dd>' . ((is_array($cp->vars[$field])) ? implode('<br />', $cp->vars[$field]) : str_replace("\n", '<br />', $cp->vars[$field])) . '</dd>' @@ -930,7 +953,7 @@ class acp_profile /** * Save Profile Field */ - function save_profile_field(&$cp, $field_type, &$lang_defs, $action = 'create') + function save_profile_field(&$cp, $field_type, $action = 'create') { global $db, $config, $user; @@ -939,7 +962,7 @@ class acp_profile // Collect all information, if something is going wrong, abort the operation $profile_sql = $profile_lang = $empty_lang = $profile_lang_fields = array(); - $default_lang_id = $lang_defs['iso'][$config['default_lang']]; + $default_lang_id = (!empty($this->edit_lang_id)) ? $this->edit_lang_id : $this->lang_defs['iso'][$config['default_lang']]; if ($action == 'create') { diff --git a/phpBB/includes/acp/acp_prune.php b/phpBB/includes/acp/acp_prune.php index e71fe33557..851671e36d 100644 --- a/phpBB/includes/acp/acp_prune.php +++ b/phpBB/includes/acp/acp_prune.php @@ -53,7 +53,7 @@ class acp_prune { $prune_posted = request_var('prune_days', 0); $prune_viewed = request_var('prune_vieweddays', 0); - $prune_all = !$prune_posted && !$prune_viewed; + $prune_all = (!$prune_posted && !$prune_viewed) ? true : false; $prune_flags = 0; $prune_flags += (request_var('prune_old_polls', 0)) ? 2 : 0; diff --git a/phpBB/includes/acp/acp_ranks.php b/phpBB/includes/acp/acp_ranks.php index db96b173e8..5b593a4d27 100644 --- a/phpBB/includes/acp/acp_ranks.php +++ b/phpBB/includes/acp/acp_ranks.php @@ -62,11 +62,15 @@ class acp_ranks { $sql = 'UPDATE ' . RANKS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE rank_id = $rank_id"; $message = $user->lang['RANK_UPDATED']; + + add_log('admin', 'LOG_RANK_UPDATED', $rank_title); } else { $sql = 'INSERT INTO ' . RANKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); $message = $user->lang['RANK_ADDED']; + + add_log('admin', 'LOG_RANK_ADDED', $rank_title); } $db->sql_query($sql); @@ -78,9 +82,20 @@ class acp_ranks case 'delete': - // Ok, they want to delete their rank - if ($rank_id) + if (!$rank_id) + { + trigger_error($user->lang['MUST_SELECT_RANK'] . adm_back_link($this->u_action), E_USER_WARNING); + } + + if (confirm_box(true)) { + $sql = 'SELECT rank_title + FROM ' . RANKS_TABLE . ' + WHERE rank_id = ' . $rank_id; + $result = $db->sql_query($sql); + $rank_title = (string) $db->sql_fetchfield('rank_title'); + $db->sql_freeresult($result); + $sql = 'DELETE FROM ' . RANKS_TABLE . " WHERE rank_id = $rank_id"; $db->sql_query($sql); @@ -92,11 +107,16 @@ class acp_ranks $cache->destroy('ranks'); - trigger_error($user->lang['RANK_REMOVED'] . adm_back_link($this->u_action)); + add_log('admin', 'LOG_RANK_REMOVED', $rank_title); } else { - trigger_error($user->lang['MUST_SELECT_RANK'] . adm_back_link($this->u_action), E_USER_WARNING); + confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( + 'i' => $id, + 'mode' => $mode, + 'rank_id' => $rank_id, + 'action' => 'delete', + ))); } break; @@ -144,6 +164,11 @@ class acp_ranks $selected = ''; } + if (strlen($img) > 255) + { + continue; + } + $filename_list .= '<option value="' . htmlspecialchars($img) . '"' . $selected . '>' . $img . '</option>'; } } diff --git a/phpBB/includes/acp/acp_reasons.php b/phpBB/includes/acp/acp_reasons.php index 72419de1ef..cc37c1e16d 100644 --- a/phpBB/includes/acp/acp_reasons.php +++ b/phpBB/includes/acp/acp_reasons.php @@ -214,7 +214,7 @@ class acp_reasons WHERE reason_id = $reason_id"; break; - // Nearly standard, not quite + // Standard? What's that? case 'mssql': case 'mssql_odbc': // Change the reports using this reason to 'other' @@ -268,7 +268,7 @@ class acp_reasons $order_total = $order * 2 + (($action == 'move_up') ? -1 : 1); $sql = 'UPDATE ' . REPORTS_REASONS_TABLE . ' - SET reason_order = ' . $order_total . ' - reason_order + SET reason_order = ' . $order_total . ' - reason_order WHERE reason_order IN (' . $order . ', ' . (($action == 'move_up') ? $order - 1 : $order + 1) . ')'; $db->sql_query($sql); diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index f858da6a16..1dfda1b684 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -17,7 +17,7 @@ class acp_search var $state; var $search; var $max_post_id; - var $batch_size = 4000; + var $batch_size = 5000; function main($id, $mode) { @@ -320,6 +320,16 @@ class acp_search } else { + $sql = 'SELECT forum_id, enable_indexing + FROM ' . FORUMS_TABLE; + $result = $db->sql_query($sql, 3600); + + while ($row = $db->sql_fetchrow($result)) + { + $forums[$row['forum_id']] = (bool) $row['enable_indexing']; + } + $db->sql_freeresult($result); + $sql = 'SELECT post_id, post_subject, post_text, poster_id, forum_id FROM ' . POSTS_TABLE . ' WHERE post_id >= ' . (int) ($post_counter + 1) . ' @@ -328,7 +338,12 @@ class acp_search while ($row = $db->sql_fetchrow($result)) { - $this->search->index('post', $row['post_id'], $row['post_text'], $row['post_subject'], $row['poster_id'], $row['forum_id']); + // Indexing enabled for this forum or global announcement? + // Global announcements get indexed by default. + if (!$row['forum_id'] || (isset($forums[$row['forum_id']]) && $forums[$row['forum_id']])) + { + $this->search->index('post', $row['post_id'], $row['post_text'], $row['post_subject'], $row['poster_id'], $row['forum_id']); + } } $db->sql_freeresult($result); @@ -470,15 +485,21 @@ class acp_search $search_types = array(); - $dp = opendir($phpbb_root_path . 'includes/search'); - while (($file = readdir($dp)) !== false) + $dp = @opendir($phpbb_root_path . 'includes/search'); + + if ($dp) { - if ((preg_match('#\.' . $phpEx . '$#', $file)) && ($file != "search.$phpEx")) + while (($file = readdir($dp)) !== false) { - $search_types[] = preg_replace('#^(.*?)\.' . $phpEx . '$#', '\1', $file); + if ((preg_match('#\.' . $phpEx . '$#', $file)) && ($file != "search.$phpEx")) + { + $search_types[] = preg_replace('#^(.*?)\.' . $phpEx . '$#', '\1', $file); + } } + closedir($dp); + + sort($search_types); } - sort($search_types); return $search_types; } @@ -511,7 +532,7 @@ class acp_search /** * Initialises a search backend object * - * @return false if no error occured else an error message + * @return false if no error occurred else an error message */ function init_search($type, &$search, &$error) { diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index c4c1c85793..ec69944f5e 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -35,6 +35,7 @@ class acp_styles $bitfield->set(11); $bitfield->set(12); define('TEMPLATE_BITFIELD', $bitfield->get_base64()); + unset($bitfield); $user->add_lang('acp/styles'); @@ -82,11 +83,6 @@ version = {VERSION} # images within your css file. # parse_css_file = {PARSE_CSS_FILE} - -# -# This option defines the pagination seperator in templates. -# -pagination_sep = \'{PAGINATION_SEP}\' '; $this->imageset_keys = array( @@ -262,7 +258,7 @@ pagination_sep = \'{PAGINATION_SEP}\' } else { - $filelist[substr($row['template_filename'], 0, $slash_pos + 1)] = substr($row['template_filename'], $slash_pos + 1, strlen($row['template_filename']) - $slashpos - 1); + $filelist[substr($row['template_filename'], 0, $slash_pos + 1)] = substr($row['template_filename'], $slash_pos + 1, strlen($row['template_filename']) - $slash_pos - 1); } } } @@ -532,30 +528,35 @@ pagination_sep = \'{PAGINATION_SEP}\' // Grab uninstalled items $new_ary = $cfg = array(); - $dp = opendir("{$phpbb_root_path}styles"); - while (($file = readdir($dp)) !== false) + $dp = @opendir("{$phpbb_root_path}styles"); + + if ($dp) { - $subpath = ($mode != 'style') ? "$mode/" : ''; - if ($file[0] != '.' && file_exists("{$phpbb_root_path}styles/$file/$subpath$mode.cfg")) + while (($file = readdir($dp)) !== false) { - if ($cfg = file("{$phpbb_root_path}styles/$file/$subpath$mode.cfg")) + $subpath = ($mode != 'style') ? "$mode/" : ''; + if ($file[0] != '.' && file_exists("{$phpbb_root_path}styles/$file/$subpath$mode.cfg")) { - $items = parse_cfg_file('', $cfg); - $name = (isset($items['name'])) ? trim($items['name']) : false; - - if ($name && !in_array($name, $installed)) + if ($cfg = file("{$phpbb_root_path}styles/$file/$subpath$mode.cfg")) { - $new_ary[] = array( - 'path' => $file, - 'name' => $name, - 'copyright' => $items['copyright'], - ); + $items = parse_cfg_file('', $cfg); + $name = (isset($items['name'])) ? trim($items['name']) : false; + + if ($name && !in_array($name, $installed)) + { + $new_ary[] = array( + 'path' => $file, + 'name' => $name, + 'copyright' => $items['copyright'], + ); + } } } } + @closedir($dp); } + unset($installed); - @closedir($dp); if (sizeof($new_ary)) { @@ -853,7 +854,7 @@ pagination_sep = \'{PAGINATION_SEP}\' $str_to = array('<span class="', '<span class="syntax', '</span>', '', '', '[', ']', '.', ':'); $code = str_replace($str_from, $str_to, $code); - $code = preg_replace('#^(<span class="[a-z_]+">)\n?(.*?)\n?(</span>)$#is', '$1$2$3', $code); + $code = preg_replace('#^(<span class="[a-z_]+">)\n?(.*?)\n?(</span>)$#ism', '$1$2$3', $code); $code = explode("\n", $code); @@ -966,7 +967,7 @@ pagination_sep = \'{PAGINATION_SEP}\' // Pull out a list of classes $classes = array(); - if (preg_match_all('/^([a-z0-9\.,:#> \t]+?)[ \t\n]*?\{.*?\}/msi', $stylesheet, $matches)) + if (preg_match_all('/^([a-z0-9\.,:#_\->* \t]+?)[ \t\n]*?\{.*?\}/msi', $stylesheet, $matches)) { $classes = $matches[1]; } @@ -1121,7 +1122,7 @@ pagination_sep = \'{PAGINATION_SEP}\' $s_units = '<option value=""' . (($unit == '') ? ' selected="selected"' : '') . '>' . $user->lang['NO_UNIT'] . '</option>' . $s_units; $template->assign_vars(array( - strtoupper($var) => $value, + strtoupper($var) => htmlspecialchars($value), 'S_' . strtoupper($var) . '_UNITS' => $s_units) ); break; @@ -1162,7 +1163,7 @@ pagination_sep = \'{PAGINATION_SEP}\' default: $template->assign_vars(array( - strtoupper($var) => $value) + strtoupper($var) => htmlspecialchars($value)) ); } } @@ -1178,7 +1179,7 @@ pagination_sep = \'{PAGINATION_SEP}\' } // else if we are showing raw css or the user submitted data from the simple view // then we need to turn the given information into raw css - elseif (!$css_data && !$add_custom) + else if (!$css_data && !$add_custom) { foreach ($match_elements as $type => $match_ary) { @@ -1226,7 +1227,7 @@ pagination_sep = \'{PAGINATION_SEP}\' break; default: - $value = request_var($var, ''); + $value = htmlspecialchars_decode(request_var($var, '')); } // use the element mapping to create raw css code @@ -1245,7 +1246,7 @@ pagination_sep = \'{PAGINATION_SEP}\' } } // make sure we have $show_css set, so we can link to the show_css page if we need to - elseif (!$hide_css) + else if (!$hide_css) { $show_css = true; } @@ -1265,14 +1266,14 @@ pagination_sep = \'{PAGINATION_SEP}\' else { // check whether the custom class name is valid - if (!preg_match('/^[a-z0-9#:.\- ]+$/i', $add_custom)) + if (!preg_match('/^[a-z0-9\.,:#_\->*]+$/i', $custom_class)) { trigger_error($user->lang['THEME_ERR_CLASS_CHARS'] . adm_back_link($this->u_action . "&action=edit&id=$theme_id&text_rows=$text_rows"), E_USER_WARNING); } else { // append an empty class definition to the stylesheet - $stylesheet .= "\n$custom_class\n{\n}"; + $stylesheet .= "\n$custom_class {\n\t\n}"; $message = $user->lang['THEME_CLASS_ADDED']; } } @@ -1436,28 +1437,38 @@ pagination_sep = \'{PAGINATION_SEP}\' $imagesetlist = array('nolang' => array(), 'lang' => array()); $dir = "{$phpbb_root_path}styles/$imageset_path/imageset"; - $dp = opendir($dir); - while (($file = readdir($dp)) !== false) + $dp = @opendir($dir); + + if ($dp) { - if (!is_file($dir . '/' . $file) && !is_link($dir . '/' . $file) && $file[0] != '.' && strtoupper($file) != 'CVS' && !sizeof($imagesetlist['lang'])) + while (($file = readdir($dp)) !== false) { - $dp2 = opendir("$dir/$file"); - while (($file2 = readdir($dp2)) !== false) + if (!is_file($dir . '/' . $file) && !is_link($dir . '/' . $file) && $file[0] != '.' && strtoupper($file) != 'CVS' && !sizeof($imagesetlist['lang'])) { - $imglang = $file; - if (preg_match('#\.(?:gif|jpg|png)$#', $file2)) + $dp2 = @opendir("$dir/$file"); + + if (!$dp2) { - $imagesetlist['lang'][] = "$file/$file2"; + continue; } + + while (($file2 = readdir($dp2)) !== false) + { + $imglang = $file; + if (preg_match('#\.(?:gif|jpg|png)$#', $file2)) + { + $imagesetlist['lang'][] = "$file/$file2"; + } + } + closedir($dp2); + } + else if (preg_match('#\.(?:gif|jpg|png)$#', $file)) + { + $imagesetlist['nolang'][] = $file; } - closedir($dp2); - } - else if (preg_match('#\.(?:gif|jpg|png)$#', $file)) - { - $imagesetlist['nolang'][] = $file; } + closedir($dp); } - closedir($dp); // Make sure the list of possible images is sorted alphabetically sort($imagesetlist['nolang']); @@ -1812,12 +1823,7 @@ pagination_sep = \'{PAGINATION_SEP}\' $items['parse_css_file'] = 'off'; } - if (!isset($items['pagination_sep'])) - { - $items['pagination_sep'] = ', '; - } - - $theme_cfg = str_replace(array('{PARSE_CSS_FILE}', '{PAGINATION_SEP}'), array($items['parse_css_file'], $items['pagination_sep']), $theme_cfg); + $theme_cfg = str_replace(array('{PARSE_CSS_FILE}'), array($items['parse_css_file']), $theme_cfg); $files[] = array( 'src' => "styles/{$style_row['theme_path']}/theme/", @@ -2090,7 +2096,7 @@ pagination_sep = \'{PAGINATION_SEP}\' ); } - // User has submitted form and no errors have occured + // User has submitted form and no errors have occurred if ($update && !sizeof($error)) { $sql_ary = array( @@ -2553,7 +2559,7 @@ pagination_sep = \'{PAGINATION_SEP}\' $style_row['style_active'] = request_var('style_active', 1); $style_row['style_default'] = request_var('style_default', 0); - // User has submitted form and no errors have occured + // User has submitted form and no errors have occurred if ($update && !sizeof($error)) { if ($mode == 'style') @@ -2688,7 +2694,7 @@ pagination_sep = \'{PAGINATION_SEP}\' } } - // User has submitted form and no errors have occured + // User has submitted form and no errors have occurred if ($update && !sizeof($error)) { if ($mode == 'style') @@ -2890,7 +2896,7 @@ pagination_sep = \'{PAGINATION_SEP}\' ); $sql = 'INSERT INTO ' . STYLES_TABLE . ' - ' . $db->sql_build_array('INSERT', $sql_ary); + ' . $db->sql_build_array('INSERT', $sql_ary); $db->sql_query($sql); $id = $db->sql_nextid(); diff --git a/phpBB/includes/acp/acp_update.php b/phpBB/includes/acp/acp_update.php index fac20449bc..050c547445 100644 --- a/phpBB/includes/acp/acp_update.php +++ b/phpBB/includes/acp/acp_update.php @@ -23,7 +23,7 @@ class acp_update $user->add_lang('install'); $this->tpl_name = 'acp_update'; - $this->page_title = 'ACP_UPDATE'; + $this->page_title = 'ACP_VERSION_CHECK'; // Get current and latest version $errstr = ''; @@ -53,7 +53,7 @@ class acp_update 'LATEST_VERSION' => $latest_version, 'CURRENT_VERSION' => $config['version'], - 'UPDATE_INSTRUCTIONS' => sprintf($user->lang['UPDATE_INSTRUCTIONS'], $announcement_url, $update_archive_link, $update_link), + 'UPDATE_INSTRUCTIONS' => sprintf($user->lang['UPDATE_INSTRUCTIONS'], $announcement_url, $update_link), )); } } diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 314514b8e2..24fd028bad 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -74,8 +74,8 @@ class acp_users 'ANONYMOUS_USER_ID' => ANONYMOUS, 'S_SELECT_USER' => true, - 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_user&field=username'), - 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_user&field=username', false), + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_user&field=username&select_single=true'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_user&field=username&select_single=true', false), ) ); @@ -127,7 +127,7 @@ class acp_users } $selected = ($mode == $value) ? ' selected="selected"' : ''; - $s_form_options .= '<option value="' . $value . '"' . $selected . '>' . $user->lang['ACP_USER_' . strtoupper($value)] . '</option>'; + $s_form_options .= '<option value="' . $value . '"' . $selected . '>' . $user->lang['ACP_USER_' . strtoupper($value)] . '</option>'; } $template->assign_vars(array( @@ -296,7 +296,6 @@ class acp_users $messenger->template('user_resend_inactive', $user_row['user_lang']); - $messenger->replyto($config['board_contact']); $messenger->to($user_row['user_email'], $user_row['username']); $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); @@ -624,7 +623,6 @@ class acp_users 'email_confirm' => strtolower(request_var('email_confirm', '')), 'user_password' => request_var('user_password', '', true), 'password_confirm' => request_var('password_confirm', '', true), - 'warnings' => request_var('warnings', $user_row['user_warnings']), ); // Validation data - we do not check the password complexity setting here @@ -633,7 +631,6 @@ class acp_users array('string', true, $config['min_pass_chars'], $config['max_pass_chars']), array('password')), 'password_confirm' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']), - 'warnings' => array('num'), ); // Check username if altered @@ -642,7 +639,8 @@ class acp_users $check_ary += array( 'username' => array( array('string', false, $config['min_name_chars'], $config['max_name_chars']), - array('username', $user_row['username'])), + array('username', $user_row['username']) + ), ); } @@ -653,7 +651,7 @@ class acp_users 'email' => array( array('string', false, 6, 60), array('email', $user_row['user_email']) - ), + ), 'email_confirm' => array('string', true, 6, 60) ); } @@ -671,7 +669,6 @@ class acp_users } // Which updates do we need to do? - $update_warning = ($user_row['user_warnings'] != $data['warnings']) ? true : false; $update_username = ($user_row['username'] != $data['username']) ? $data['username'] : false; $update_password = ($data['user_password'] && $user_row['user_password'] != md5($data['user_password'])) ? true : false; $update_email = ($data['email'] != $user_row['user_email']) ? $data['email'] : false; @@ -682,11 +679,6 @@ class acp_users if ($user_row['user_type'] != USER_FOUNDER || $user->data['user_type'] == USER_FOUNDER) { - if ($update_warning) - { - $sql_ary['user_warnings'] = $data['warnings']; - } - // Only allow founders updating the founder status... if ($user->data['user_type'] == USER_FOUNDER) { @@ -741,7 +733,7 @@ class acp_users { $sql_ary += array( 'user_email' => $update_email, - 'user_email_hash' => crc32(strtolower($update_email)) . strlen($update_email) + 'user_email_hash' => crc32($update_email) . strlen($update_email) ); add_log('user', $user_id, 'LOG_USER_UPDATE_EMAIL', $user_row['username'], $user_row['user_email'], $update_email); @@ -766,13 +758,6 @@ class acp_users $db->sql_query($sql); } - /** - * @todo adjust every data based in the number of user warnings - */ - if ($update_warning) - { - } - if ($update_username) { user_update_name($user_row['username'], $update_username); @@ -790,8 +775,7 @@ class acp_users $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); } - $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[\w]+' => 'USERNAME_ALPHA_ONLY', '[\w_\+\. \-\[\]]+' => 'USERNAME_ALPHA_SPACERS'); - $pass_char_ary = array('.*' => 'PASS_TYPE_ANY', '[a-zA-Z]' => 'PASS_TYPE_CASE', '[a-zA-Z0-9]' => 'PASS_TYPE_ALPHA', '[a-zA-Z\W]' => 'PASS_TYPE_SYMBOL'); + $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[a-z]+' => 'USERNAME_ALPHA_ONLY', '[-\]_+ [a-z]+' => 'USERNAME_ALPHA_SPACERS', '\w+' => 'USERNAME_LETTER_NUM', '[-\]_+ [\w]+' => 'USERNAME_LETTER_NUM_SPACERS', '[\x01-\x7F]+' => 'USERNAME_ASCII'); if ($user_id == $user->data['user_id']) { @@ -822,7 +806,7 @@ class acp_users $s_action_options = '<option class="sep" value="">' . $user->lang['SELECT_OPTION'] . '</option>'; foreach ($quick_tool_ary as $value => $lang) { - $s_action_options .= '<option value="' . $value . '">' . $user->lang['USER_ADMIN_' . $lang] . '</option>'; + $s_action_options .= '<option value="' . $value . '">' . $user->lang['USER_ADMIN_' . $lang] . '</option>'; } if ($config['load_onlinetrack']) @@ -868,7 +852,7 @@ class acp_users $template->assign_vars(array( 'L_NAME_CHARS_EXPLAIN' => sprintf($user->lang[$user_char_ary[str_replace('\\\\', '\\', $config['allow_name_chars'])] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']), - 'L_CHANGE_PASSWORD_EXPLAIN' => sprintf($user->lang[$pass_char_ary[str_replace('\\\\', '\\', $config['pass_complex'])] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), + 'L_CHANGE_PASSWORD_EXPLAIN' => sprintf($user->lang[$config['pass_complex'] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), 'S_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false, 'S_OVERVIEW' => true, @@ -941,6 +925,7 @@ class acp_users if ($submit && $message) { add_log('admin', 'LOG_USER_FEEDBACK', $user_row['username']); + add_log('mod', 0, 0, 'LOG_USER_FEEDBACK', $user_row['username']); add_log('user', $user_id, 'LOG_USER_GENERAL', $message); trigger_error($user->lang['USER_FEEDBACK_ADDED'] . adm_back_link($this->u_action . '&u=' . $user_id)); @@ -1032,7 +1017,7 @@ class acp_users 'icq' => array( array('string', true, 3, 15), array('match', true, '#^[0-9]+$#i')), - 'aim' => array('string', true, 3, 17), + 'aim' => array('string', true, 3, 255), 'msn' => array('string', true, 5, 255), 'jabber' => array( array('string', true, 5, 255), @@ -1388,95 +1373,13 @@ class acp_users case 'avatar': - $avatar_select = basename(request_var('avatar_select', '')); - $category = basename(request_var('category', '')); $can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && is_writeable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false; - $data = array(); - if ($submit) { - $delete = request_var('delete', ''); - - $data = array( - 'uploadurl' => request_var('uploadurl', ''), - 'remotelink' => request_var('remotelink', ''), - 'width' => request_var('width', ''), - 'height' => request_var('height', ''), - ); - - $error = validate_data($data, array( - 'uploadurl' => array('string', true, 5, 255), - 'remotelink' => array('string', true, 5, 255), - 'width' => array('string', true, 1, 3), - 'height' => array('string', true, 1, 3), - )); - - if (!sizeof($error)) + if (avatar_process_user($error, $user_row)) { - $data['user_id'] = $user_id; - - if ((!empty($_FILES['uploadfile']['name']) || $data['uploadurl']) && $can_upload && $config['allow_avatar_upload']) - { - list($type, $filename, $width, $height) = avatar_upload($data, $error); - } - else if ($data['remotelink'] && $config['allow_avatar_remote']) - { - list($type, $filename, $width, $height) = avatar_remote($data, $error); - } - else if ($avatar_select && $config['allow_avatar_local']) - { - $type = AVATAR_GALLERY; - $filename = $avatar_select; - - // check avatar gallery - if (!is_dir($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category)) - { - $type = $width = $height = 0; - $filename = ''; - } - else - { - list($width, $height) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . $filename); - $filename = $category . '/' . $filename; - } - } - else if ($delete) - { - $filename = ''; - $type = $width = $height = 0; - } - else - { - $data = array(); - } - } - - if (!sizeof($error)) - { - // Do we actually have any data to update? - if (sizeof($data)) - { - $sql_ary = array( - 'user_avatar' => $filename, - 'user_avatar_type' => $type, - 'user_avatar_width' => $width, - 'user_avatar_height' => $height, - ); - - $sql = 'UPDATE ' . USERS_TABLE . ' - SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' - WHERE user_id = ' . $user_id; - $db->sql_query($sql); - - // Delete old avatar if present - if ($user_row['user_avatar'] && $filename != $user_row['user_avatar'] && $user_row['user_avatar_type'] != AVATAR_GALLERY) - { - avatar_delete('user', $user_row); - } - } - - trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id)); + trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_row['user_id'])); } // Replace "error" strings with their real, localised form @@ -1508,6 +1411,8 @@ class acp_users } $display_gallery = (isset($_POST['display_gallery'])) ? true : false; + $avatar_select = basename(request_var('avatar_select', '')); + $category = basename(request_var('category', '')); if ($config['allow_avatar_local'] && $display_gallery) { @@ -1572,10 +1477,10 @@ class acp_users include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx); - $enable_bbcode = ($config['allow_sig_bbcode']) ? request_var('enable_bbcode', $this->optionget($user_row, 'bbcode')) : false; - $enable_smilies = ($config['allow_sig_smilies']) ? request_var('enable_smilies', $this->optionget($user_row, 'smilies')) : false; - $enable_urls = request_var('enable_urls', true); - $signature = utf8_normalize_nfc(request_var('signature', $user_row['user_sig'], true)); + $enable_bbcode = ($config['allow_sig_bbcode']) ? ((request_var('disable_bbcode', !$user->optionget('bbcode'))) ? false : true) : false; + $enable_smilies = ($config['allow_sig_smilies']) ? ((request_var('disable_smilies', !$user->optionget('smilies'))) ? false : true) : false; + $enable_urls = ($config['allow_sig_links']) ? ((request_var('disable_magic_url', false)) ? false : true) : false; + $signature = utf8_normalize_nfc(request_var('signature', (string) $user_row['user_sig'], true)); $preview = (isset($_POST['preview'])) ? true : false; @@ -1586,7 +1491,7 @@ class acp_users $message_parser = new parse_message($signature); // Allowing Quote BBCode - $message_parser->parse($enable_bbcode, ($config['allow_sig_links']) ? $enable_urls : false, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig'); + $message_parser->parse($enable_bbcode, $enable_urls, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig'); if (sizeof($message_parser->warn_msg)) { @@ -1630,9 +1535,9 @@ class acp_users 'SIGNATURE' => $signature, 'SIGNATURE_PREVIEW' => $signature_preview, - 'S_BBCODE_CHECKED' => (!$enable_bbcode) ? 'checked="checked"' : '', - 'S_SMILIES_CHECKED' => (!$enable_smilies) ? 'checked="checked"' : '', - 'S_MAGIC_URL_CHECKED' => (!$enable_urls) ? 'checked="checked"' : '', + 'S_BBCODE_CHECKED' => (!$enable_bbcode) ? ' checked="checked"' : '', + 'S_SMILIES_CHECKED' => (!$enable_smilies) ? ' checked="checked"' : '', + 'S_MAGIC_URL_CHECKED' => (!$enable_urls) ? ' checked="checked"' : '', 'BBCODE_STATUS' => ($config['allow_sig_bbcode']) ? sprintf($user->lang['BBCODE_IS_ON'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>') : sprintf($user->lang['BBCODE_IS_OFF'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'), 'SMILIES_STATUS' => ($config['allow_sig_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'], @@ -1782,7 +1687,7 @@ class acp_users 'S_SORT_KEY' => $s_sort_key, 'S_SORT_DIR' => $s_sort_dir, - 'PAGINATION' => generate_pagination($this->u_action . "&sk=$sort_key&sd=$sort_dir", $num_attachments, $config['topics_per_page'], $start, true)) + 'PAGINATION' => generate_pagination($this->u_action . "&u=$user_id&sk=$sort_key&sd=$sort_dir", $num_attachments, $config['topics_per_page'], $start, true)) ); break; @@ -1959,49 +1864,68 @@ class acp_users $user->add_lang('acp/permissions'); add_permission_language(); - // Select auth options - $sql = 'SELECT auth_option, is_local, is_global - FROM ' . ACL_OPTIONS_TABLE . " - WHERE auth_option LIKE '%\_'"; + $forum_id = request_var('f', 0); - if ($db->sql_layer == 'mssql' || $db->sql_layer == 'mssql_odbc') + // Global Permissions + if (!$forum_id) { - $sql .= " ESCAPE '\\' "; - } + // Select auth options + $sql = 'SELECT auth_option, is_local, is_global + FROM ' . ACL_OPTIONS_TABLE . " + WHERE auth_option LIKE '%\_'"; - $sql .= 'AND is_global = 1 - ORDER BY auth_option'; - $result = $db->sql_query($sql); + if ($db->sql_layer == 'mssql' || $db->sql_layer == 'mssql_odbc') + { + $sql .= " ESCAPE '\\' "; + } - while ($row = $db->sql_fetchrow($result)) - { - $hold_ary = $auth_admin->get_mask('view', $user_id, false, false, $row['auth_option'], 'global', ACL_NEVER); - $auth_admin->display_mask('view', $row['auth_option'], $hold_ary, 'user', false, false); - } - $db->sql_freeresult($result); + $sql .= 'AND is_global = 1 + ORDER BY auth_option'; + $result = $db->sql_query($sql); - $sql = 'SELECT auth_option, is_local, is_global - FROM ' . ACL_OPTIONS_TABLE . " - WHERE auth_option LIKE '%\_'"; + $hold_ary = array(); + while ($row = $db->sql_fetchrow($result)) + { + $hold_ary = $auth_admin->get_mask('view', $user_id, false, false, $row['auth_option'], 'global', ACL_NEVER); + $auth_admin->display_mask('view', $row['auth_option'], $hold_ary, 'user', false, false); + } + $db->sql_freeresult($result); - if ($db->sql_layer == 'mssql' || $db->sql_layer == 'mssql_odbc') - { - $sql .= " ESCAPE '\\' "; + unset($hold_ary); } + else + { + $sql = 'SELECT auth_option, is_local, is_global + FROM ' . ACL_OPTIONS_TABLE . " + WHERE auth_option LIKE '%\_'"; - $sql .= 'AND is_local = 1 - ORDER BY is_global DESC, auth_option'; - $result = $db->sql_query($sql); + if ($db->sql_layer == 'mssql' || $db->sql_layer == 'mssql_odbc') + { + $sql .= " ESCAPE '\\' "; + } - while ($row = $db->sql_fetchrow($result)) - { - $hold_ary = $auth_admin->get_mask('view', $user_id, false, false, $row['auth_option'], 'local', ACL_NEVER); - $auth_admin->display_mask('view', $row['auth_option'], $hold_ary, 'user', true, false); + $sql .= 'AND is_local = 1 + ORDER BY is_global DESC, auth_option'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $hold_ary = $auth_admin->get_mask('view', $user_id, false, $forum_id, $row['auth_option'], 'local', ACL_NEVER); + $auth_admin->display_mask('view', $row['auth_option'], $hold_ary, 'user', true, false); + } + $db->sql_freeresult($result); } - $db->sql_freeresult($result); + + $s_forum_options = '<option value="0"' . ((!$forum_id) ? ' selected="selected"' : '') . '>' . $user->lang['VIEW_GLOBAL_PERMS'] . '</option>'; + $s_forum_options .= make_forum_select($forum_id, false, true, false, false, false); $template->assign_vars(array( 'S_PERMISSIONS' => true, + + 'S_GLOBAL' => (!$forum_id) ? true : false, + 'S_FORUM_OPTIONS' => $s_forum_options, + + 'U_ACTION' => $this->u_action . '&u=' . $user_id, 'U_USER_PERMISSIONS' => append_sid("{$phpbb_admin_path}index.$phpEx" ,'i=permissions&mode=setting_user_global&user_id[]=' . $user_id), 'U_USER_FORUM_PERMISSIONS' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=permissions&mode=setting_user_local&user_id[]=' . $user_id)) ); diff --git a/phpBB/includes/acp/acp_words.php b/phpBB/includes/acp/acp_words.php index e087c4f8af..a35b7e5156 100644 --- a/phpBB/includes/acp/acp_words.php +++ b/phpBB/includes/acp/acp_words.php @@ -110,23 +110,35 @@ class acp_words trigger_error($user->lang['NO_WORD'] . adm_back_link($this->u_action), E_USER_WARNING); } - $sql = 'SELECT word - FROM ' . WORDS_TABLE . " - WHERE word_id = $word_id"; - $result = $db->sql_query($sql); - $deleted_word = $db->sql_fetchfield('word'); - $db->sql_freeresult($result); + if (confirm_box(true)) + { + $sql = 'SELECT word + FROM ' . WORDS_TABLE . " + WHERE word_id = $word_id"; + $result = $db->sql_query($sql); + $deleted_word = $db->sql_fetchfield('word'); + $db->sql_freeresult($result); - $sql = 'DELETE FROM ' . WORDS_TABLE . " - WHERE word_id = $word_id"; - $db->sql_query($sql); + $sql = 'DELETE FROM ' . WORDS_TABLE . " + WHERE word_id = $word_id"; + $db->sql_query($sql); - $cache->destroy('word_censors'); + $cache->destroy('word_censors'); - add_log('admin', 'LOG_WORD_DELETE', $deleted_word); + add_log('admin', 'LOG_WORD_DELETE', $deleted_word); + + trigger_error($user->lang['WORD_REMOVED'] . adm_back_link($this->u_action)); + } + else + { + confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( + 'i' => $id, + 'mode' => $mode, + 'id' => $word_id, + 'action' => 'delete', + ))); + } - trigger_error($user->lang['WORD_REMOVED'] . adm_back_link($this->u_action)); - break; } diff --git a/phpBB/includes/acp/auth.php b/phpBB/includes/acp/auth.php index 35b0cd29e2..b32d435d7b 100644 --- a/phpBB/includes/acp/auth.php +++ b/phpBB/includes/acp/auth.php @@ -323,6 +323,16 @@ class auth_admin extends auth if ($local) { $forum_names_ary = make_forum_select(false, false, true, false, false, false, true); + + // Remove the disabled ones, since we do not create an option field here... + foreach ($forum_names_ary as $key => $value) + { + if (!$value['disabled']) + { + continue; + } + unset($forum_names_ary[$key]); + } } else { @@ -380,6 +390,7 @@ class auth_admin extends auth } $template->assign_var('S_ROLE_JS_ARRAY', $s_role_js_array); + unset($s_role_js_array); // Now obtain memberships $user_groups_default = $user_groups_custom = array(); @@ -462,8 +473,10 @@ class auth_admin extends auth foreach ($roles as $role_id => $role_row) { $role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']); + $role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name']; + $title = ($role_description) ? ' title="' . $role_description . '"' : ''; - $s_role_options .= '<option value="' . $role_id . '"' . (($role_id == $current_role_id) ? ' selected="selected"' : '') . $title . '>' . $role_row['role_name'] . '</option>'; + $s_role_options .= '<option value="' . $role_id . '"' . (($role_id == $current_role_id) ? ' selected="selected"' : '') . $title . '>' . $role_name . '</option>'; } if ($s_role_options) @@ -478,8 +491,12 @@ class auth_admin extends auth 'FORUM_ID' => $forum_id) ); - $this->assign_cat_array($ug_array, $tpl_pmask . '.' . $tpl_fmask . '.' . $tpl_category, $tpl_mask, $ug_id, $forum_id, $show_trace); + $this->assign_cat_array($ug_array, $tpl_pmask . '.' . $tpl_fmask . '.' . $tpl_category, $tpl_mask, $ug_id, $forum_id, $show_trace, ($mode == 'view')); + + unset($content_array[$ug_id]); } + + unset($hold_ary[$forum_id]); } } else @@ -511,17 +528,22 @@ class auth_admin extends auth 'S_GROUP_MODE' => ($user_mode == 'group') ? true : false) ); - foreach ($content_array as $forum_id => $forum_array) + @reset($content_array); + while (list($forum_id, $forum_array) = each($content_array)) { // Build role dropdown options $current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0; $s_role_options = ''; - foreach ($roles as $role_id => $role_row) + + @reset($roles); + while (list($role_id, $role_row) = each($roles)) { $role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']); + $role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name']; + $title = ($role_description) ? ' title="' . $role_description . '"' : ''; - $s_role_options .= '<option value="' . $role_id . '"' . (($role_id == $current_role_id) ? ' selected="selected"' : '') . $title . '>' . $role_row['role_name'] . '</option>'; + $s_role_options .= '<option value="' . $role_id . '"' . (($role_id == $current_role_id) ? ' selected="selected"' : '') . $title . '>' . $role_name . '</option>'; } if ($s_role_options) @@ -563,8 +585,10 @@ class auth_admin extends auth 'FORUM_ID' => $forum_id) ); - $this->assign_cat_array($forum_array, $tpl_pmask . '.' . $tpl_fmask . '.' . $tpl_category, $tpl_mask, $ug_id, $forum_id, $show_trace); + $this->assign_cat_array($forum_array, $tpl_pmask . '.' . $tpl_fmask . '.' . $tpl_category, $tpl_mask, $ug_id, $forum_id, $show_trace, ($mode == 'view')); } + + unset($hold_ary[$ug_id], $ug_names_ary[$ug_id]); } } } @@ -942,7 +966,7 @@ class auth_admin extends auth $option_id_ary = array(); $table = ($mode == 'user') ? ACL_USERS_TABLE : ACL_GROUPS_TABLE; - $id_field = $mode . '_id'; + $id_field = $mode . '_id'; $where_sql = array(); @@ -1041,11 +1065,12 @@ class auth_admin extends auth * Assign category to template * used by display_mask() */ - function assign_cat_array(&$category_array, $tpl_cat, $tpl_mask, $ug_id, $forum_id, $show_trace = false) + function assign_cat_array(&$category_array, $tpl_cat, $tpl_mask, $ug_id, $forum_id, $show_trace = false, $s_view) { global $template, $user, $phpbb_admin_path, $phpEx; - foreach ($category_array as $cat => $cat_array) + @reset($category_array); + while (list($cat, $cat_array) = each($category_array)) { $template->assign_block_vars($tpl_cat, array( 'S_YES' => ($cat_array['S_YES'] && !$cat_array['S_NEVER'] && !$cat_array['S_NO']) ? true : false, @@ -1055,23 +1080,57 @@ class auth_admin extends auth 'CAT_NAME' => $user->lang['permission_cat'][$cat]) ); - foreach ($cat_array['permissions'] as $permission => $allowed) + // Sort array + $key_array = array_intersect(array_keys($user->lang), array_map(create_function('$a', 'return "acl_" . $a;'), array_keys($cat_array['permissions']))); + $values_array = $cat_array['permissions']; + + $cat_array['permissions'] = array(); + + foreach ($key_array as $key) { - $template->assign_block_vars($tpl_cat . '.' . $tpl_mask, array( - 'S_YES' => ($allowed == ACL_YES) ? true : false, - 'S_NEVER' => ($allowed == ACL_NEVER) ? true : false, - 'S_NO' => ($allowed == ACL_NO) ? true : false, + $key = str_replace('acl_', '', $key); + $cat_array['permissions'][$key] = $values_array[$key]; + } + unset($key_array, $values_array); - 'UG_ID' => $ug_id, - 'FORUM_ID' => $forum_id, - 'FIELD_NAME' => $permission, - 'S_FIELD_NAME' => 'setting[' . $ug_id . '][' . $forum_id . '][' . $permission . ']', + @reset($cat_array['permissions']); + while (list($permission, $allowed) = each($cat_array['permissions'])) + { + if ($s_view) + { + $template->assign_block_vars($tpl_cat . '.' . $tpl_mask, array( + 'S_YES' => ($allowed == ACL_YES) ? true : false, + 'S_NEVER' => ($allowed == ACL_NEVER) ? true : false, - 'U_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission") : '', - 'UA_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission", false) : '', + 'UG_ID' => $ug_id, + 'FORUM_ID' => $forum_id, + 'FIELD_NAME' => $permission, + 'S_FIELD_NAME' => 'setting[' . $ug_id . '][' . $forum_id . '][' . $permission . ']', - 'PERMISSION' => $user->lang['acl_' . $permission]['lang']) - ); + 'U_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission") : '', + 'UA_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission", false) : '', + + 'PERMISSION' => $user->lang['acl_' . $permission]['lang']) + ); + } + else + { + $template->assign_block_vars($tpl_cat . '.' . $tpl_mask, array( + 'S_YES' => ($allowed == ACL_YES) ? true : false, + 'S_NEVER' => ($allowed == ACL_NEVER) ? true : false, + 'S_NO' => ($allowed == ACL_NO) ? true : false, + + 'UG_ID' => $ug_id, + 'FORUM_ID' => $forum_id, + 'FIELD_NAME' => $permission, + 'S_FIELD_NAME' => 'setting[' . $ug_id . '][' . $forum_id . '][' . $permission . ']', + + 'U_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission") : '', + 'UA_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission", false) : '', + + 'PERMISSION' => $user->lang['acl_' . $permission]['lang']) + ); + } } } } @@ -1094,7 +1153,8 @@ class auth_admin extends auth $permissions = $permission_row[$forum_id]; ksort($permissions); - foreach ($permissions as $permission => $auth_setting) + @reset($permissions); + while (list($permission, $auth_setting) = each($permissions)) { if (!isset($user->lang['acl_' . $permission])) { diff --git a/phpBB/includes/acp/info/acp_update.php b/phpBB/includes/acp/info/acp_update.php index 014d67ff2b..0355c583f3 100644 --- a/phpBB/includes/acp/info/acp_update.php +++ b/phpBB/includes/acp/info/acp_update.php @@ -20,7 +20,7 @@ class acp_update_info 'title' => 'ACP_UPDATE', 'version' => '1.0.0', 'modes' => array( - 'version_check' => array('title' => 'ACP_VERSION_CHECK', 'auth' => 'acl_a_', 'cat' => array('ACP_AUTOMATION')), + 'version_check' => array('title' => 'ACP_VERSION_CHECK', 'auth' => 'acl_a_board', 'cat' => array('ACP_AUTOMATION')), ), ); } diff --git a/phpBB/includes/auth.php b/phpBB/includes/auth.php index c174fc6769..cf1b053f8c 100644 --- a/phpBB/includes/auth.php +++ b/phpBB/includes/auth.php @@ -113,7 +113,7 @@ class auth { if (isset($this->acl[0])) { - $this->cache[$f][$opt] = $this->acl[0]{$this->acl_options['global'][$opt]}; + $this->cache[$f][$opt] = $this->acl[0][$this->acl_options['global'][$opt]]; } } @@ -123,7 +123,7 @@ class auth { if (isset($this->acl[$f])) { - $this->cache[$f][$opt] |= $this->acl[$f]{$this->acl_options['local'][$opt]}; + $this->cache[$f][$opt] |= $this->acl[$f][$this->acl_options['local'][$opt]]; } } } @@ -221,7 +221,19 @@ class auth */ function acl_getf_global($opt) { - $allowed = false; + if (is_array($opt)) + { + // evaluates to true as soon as acl_getf_global is true for one option + foreach ($opt as $check_option) + { + if ($this->acl_getf_global($check_option)) + { + return true; + } + } + + return false; + } if (isset($this->acl_options['local'][$opt])) { @@ -233,20 +245,19 @@ class auth continue; } - $allowed = (!isset($this->cache[$f][$opt])) ? $this->acl_get($opt, $f) : $this->cache[$f][$opt]; - - if ($allowed) + // as soon as the user has any permission we're done so return true + if ((!isset($this->cache[$f][$opt])) ? $this->acl_get($opt, $f) : $this->cache[$f][$opt]) { - break; + return true; } } } else if (isset($this->acl_options['global'][$opt])) { - $allowed = $this->acl_get($opt); + return $this->acl_get($opt); } - return $allowed; + return false; } /** diff --git a/phpBB/includes/auth/auth_ldap.php b/phpBB/includes/auth/auth_ldap.php index 8241db1c4f..ff6ff3edd1 100644 --- a/phpBB/includes/auth/auth_ldap.php +++ b/phpBB/includes/auth/auth_ldap.php @@ -34,6 +34,14 @@ function init_ldap() @ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); @ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); + if ($config['ldap_user'] || $config['ldap_password']) + { + if (!@ldap_bind($ldap, htmlspecialchars_decode($config['ldap_user']), htmlspecialchars_decode($config['ldap_password']))) + { + return $user->lang['LDAP_INCORRECT_USER_PASSWORD']; + } + } + // ldap_connect only checks whether the specified server is valid, so the connection might still fail $search = @ldap_search( $ldap, @@ -95,6 +103,14 @@ function login_ldap(&$username, &$password) @ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); @ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); + if ($config['ldap_user'] || $config['ldap_password']) + { + if (!@ldap_bind($ldap, $config['ldap_user'], htmlspecialchars_decode($config['ldap_password']))) + { + return $user->lang['LDAP_NO_SERVER_CONNECTION']; + } + } + $search = @ldap_search( $ldap, $config['ldap_base_dn'], @@ -222,6 +238,14 @@ function acp_ldap(&$new) <dd><input type="text" id="ldap_server" size="40" name="config[ldap_server]" value="' . $new['ldap_server'] . '" /></dd> </dl> <dl> + <dt><label for="ldap_user">' . $user->lang['LDAP_USER'] . ':</label><br /><span>' . $user->lang['LDAP_USER_EXPLAIN'] . '</span></dt> + <dd><input type="text" id="ldap_user" size="40" name="config[ldap_user]" value="' . $new['ldap_user'] . '" /></dd> + </dl> + <dl> + <dt><label for="ldap_password">' . $user->lang['LDAP_PASSWORD'] . ':</label><br /><span>' . $user->lang['LDAP_PASSWORD_EXPLAIN'] . '</span></dt> + <dd><input type="password" id="ldap_password" size="40" name="config[ldap_password]" value="' . $new['ldap_password'] . '" /></dd> + </dl> + <dl> <dt><label for="ldap_dn">' . $user->lang['LDAP_DN'] . ':</label><br /><span>' . $user->lang['LDAP_DN_EXPLAIN'] . '</span></dt> <dd><input type="text" id="ldap_dn" size="40" name="config[ldap_base_dn]" value="' . $new['ldap_base_dn'] . '" /></dd> </dl> @@ -238,7 +262,7 @@ function acp_ldap(&$new) // These are fields required in the config table return array( 'tpl' => $tpl, - 'config' => array('ldap_server', 'ldap_base_dn', 'ldap_uid', 'ldap_email') + 'config' => array('ldap_server', 'ldap_user', 'ldap_password', 'ldap_base_dn', 'ldap_uid', 'ldap_email') ); } diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php index 9536abddd3..b7f274ce35 100644 --- a/phpBB/includes/bbcode.php +++ b/phpBB/includes/bbcode.php @@ -21,7 +21,7 @@ class bbcode var $bbcodes = array(); - var $template_bitfield = 0; + var $template_bitfield; var $template_filename = ''; /** @@ -115,7 +115,7 @@ class bbcode if (empty($this->template_filename)) { - $this->template_bitfield = $user->theme['bbcode_bitfield']; + $this->template_bitfield = new bitfield($user->theme['bbcode_bitfield']); $this->template_filename = $phpbb_root_path . 'styles/' . $user->theme['template_path'] . '/template/bbcode.html'; if (!@file_exists($this->template_filename)) @@ -238,7 +238,7 @@ class bbcode case 6: $this->bbcode_cache[$bbcode_id] = array( 'preg' => array( - '!\[color=(#[0-9a-fA-F]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!s' => $this->bbcode_tpl('color', $bbcode_id), + '!\[color=(#[0-9a-f]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!is' => $this->bbcode_tpl('color', $bbcode_id), ) ); break; @@ -318,13 +318,9 @@ class bbcode break; default: - if (!isset($template_bitfield)) - { - $template_bitfield = new bitfield($this->template_bitfield); - } if (isset($rowset[$bbcode_id])) { - if ($template_bitfield->get($bbcode_id)) + if ($this->template_bitfield->get($bbcode_id)) { // The bbcode requires a custom template to be loaded if (!$bbcode_tpl = $this->bbcode_tpl($rowset[$bbcode_id]['bbcode_tag'], $bbcode_id)) @@ -383,10 +379,10 @@ class bbcode */ function bbcode_tpl($tpl_name, $bbcode_id = -1, $skip_bitfield_check = false) { + static $bbcode_hardtpl = array(); if (empty($bbcode_hardtpl)) { global $user; - static $bbcode_hardtpl = array(); $bbcode_hardtpl = array( 'b_open' => '<span style="font-weight: bold">', @@ -400,10 +396,9 @@ class bbcode 'color' => '<span style="color: $1">$2</span>', 'email' => '<a href="mailto:$1">$2</a>' ); - $template_bitfield = new bitfield($this->template_bitfield); } - if ($bbcode_id != -1 && !$template_bitfield->get($bbcode_id) && !$skip_bitfield_check) + if ($bbcode_id != -1 && !$skip_bitfield_check && !$this->template_bitfield->get($bbcode_id)) { return (isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false; } @@ -477,49 +472,41 @@ class bbcode { $tpl = 'ulist_open_default'; $type = 'default'; - $start = 0; } else if ($type == 'i') { $tpl = 'olist_open'; $type = 'lower-roman'; - $start = 1; } else if ($type == 'I') { $tpl = 'olist_open'; $type = 'upper-roman'; - $start = 1; } else if (preg_match('#^(disc|circle|square)$#i', $type)) { $tpl = 'ulist_open'; $type = strtolower($type); - $start = 1; } else if (preg_match('#^[a-z]$#', $type)) { $tpl = 'olist_open'; $type = 'lower-alpha'; - $start = ord($type) - 96; } else if (preg_match('#[A-Z]#', $type)) { $tpl = 'olist_open'; $type = 'upper-alpha'; - $start = ord($type) - 64; } else if (is_numeric($type)) { $tpl = 'olist_open'; $type = 'arabic-numbers'; - $start = intval($type); } else { $tpl = 'olist_open'; $type = 'arabic-numbers'; - $start = 1; } return str_replace('{LIST_TYPE}', $type, $this->bbcode_tpl($tpl)); diff --git a/phpBB/includes/cache.php b/phpBB/includes/cache.php index 6266d32c0f..a8931f3163 100644 --- a/phpBB/includes/cache.php +++ b/phpBB/includes/cache.php @@ -82,7 +82,7 @@ class cache extends acm if (($censors = $this->get('word_censors')) === false) { $sql = 'SELECT word, replacement - FROM ' . WORDS_TABLE; + FROM ' . WORDS_TABLE; $result = $db->sql_query($sql); $censors = array(); @@ -173,21 +173,29 @@ class cache extends acm /** * Obtain allowed extensions + * + * @param mixed $forum_id If false then check for private messaging, if int then check for forum id. If true, then only return extension informations. + * + * @return array allowed extensions array. */ - function obtain_attach_extensions($forum_id = false) + function obtain_attach_extensions($forum_id) { if (($extensions = $this->get('_extensions')) === false) { global $db; - + + $extensions = array( + '_allowed_post' => array(), + '_allowed_pm' => array(), + ); + // The rule is to only allow those extensions defined. ;) $sql = 'SELECT e.extension, g.* FROM ' . EXTENSIONS_TABLE . ' e, ' . EXTENSION_GROUPS_TABLE . ' g WHERE e.group_id = g.group_id - AND g.allow_group = 1'; + AND (g.allow_group = 1 OR g.allow_in_pm = 1)'; $result = $db->sql_query($sql); - $extensions = array('_allowed_' => array()); while ($row = $db->sql_fetchrow($result)) { $extension = strtolower(trim($row['extension'])); @@ -196,47 +204,62 @@ class cache extends acm 'display_cat' => (int) $row['cat_id'], 'download_mode' => (int) $row['download_mode'], 'upload_icon' => trim($row['upload_icon']), - 'max_filesize' => (int) $row['max_filesize'] + 'max_filesize' => (int) $row['max_filesize'], + 'allow_group' => $row['allow_group'], + 'allow_in_pm' => $row['allow_in_pm'], ); $allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array(); - if ($row['allow_in_pm']) + // Store allowed extensions forum wise + if ($row['allow_group']) { - $allowed_forums = array_merge($allowed_forums, array(0)); + $extensions['_allowed_post'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums; } - // Store allowed extensions forum wise - $extensions['_allowed_'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums; + if ($row['allow_in_pm']) + { + $extensions['_allowed_pm'][$extension] = 0; + } } $db->sql_freeresult($result); $this->put('_extensions', $extensions); } - if ($forum_id !== false) + // Forum post + if ($forum_id === false) { - $return = array(); + // We are checking for private messages, therefore we only need to get the pm extensions... + $return = array('_allowed_' => array()); - foreach ($extensions['_allowed_'] as $extension => $check) + foreach ($extensions['_allowed_pm'] as $extension => $check) { - $allowed = false; + $return['_allowed_'][$extension] = 0; + $return[$extension] = $extensions[$extension]; + } + $extensions = $return; + } + else if ($forum_id === true) + { + return $extensions; + } + else + { + $forum_id = (int) $forum_id; + $return = array('_allowed_' => array()); + + foreach ($extensions['_allowed_post'] as $extension => $check) + { + // Check for allowed forums if (is_array($check)) { - // Check for private messaging AND all forums allowed - if (sizeof($check) == 1 && $check[0] == 0) - { - $allowed = true; - } - else - { - $allowed = (!in_array($forum_id, $check)) ? false : true; - } + $allowed = (!in_array($forum_id, $check)) ? false : true; } else { - $allowed = ($forum_id === 0) ? false : true; + $allowed = true; } if ($allowed) @@ -365,7 +388,7 @@ class cache extends acm global $db; $sql = 'SELECT disallow_username - FROM ' . DISALLOW_TABLE; + FROM ' . DISALLOW_TABLE; $result = $db->sql_query($sql); $usernames = array(); diff --git a/phpBB/includes/captcha/captcha_gd.php b/phpBB/includes/captcha/captcha_gd.php index 10c61836a5..662d55f5f7 100644 --- a/phpBB/includes/captcha/captcha_gd.php +++ b/phpBB/includes/captcha/captcha_gd.php @@ -19,7 +19,7 @@ class captcha var $width = 360; var $height = 96; - function execute($code) + function execute($code, $seed) { global $config; $stats = gd_info(); @@ -48,8 +48,11 @@ class captcha imageantialias($image, true); } + // seed the random generator + mt_srand($seed); + // set background color - $back = imagecolorallocate($image, mt_rand(224, 255), mt_rand(224, 255), mt_rand(224, 255)); + $back = imagecolorallocate($image, mt_rand(224, 255), mt_rand(224, 255), mt_rand(224, 255)); imagefilledrectangle($image, 0, 0, $this->width, $this->height, $back); // allocates the 216 websafe color palette to the image @@ -70,6 +73,7 @@ class captcha // fill with noise or grid if ($config['captcha_gd_noise']) { + $chars_allowed = array_merge(range('1', '9'), range('A', 'Z')); // random characters in background with random position, angle, color for ($i = 0 ; $i < 72; $i++) { @@ -78,9 +82,10 @@ class captcha $x = mt_rand(0, 360); $y = mt_rand(0, (int)($this->height - ($size / 5))); $color = $func2($image, mt_rand(160, 224), mt_rand(160, 224), mt_rand(160, 224)); - $text = chr(mt_rand(45, 250)); + $text = $chars_allowed[mt_rand(0, sizeof($chars_allowed) - 1)]; imagettftext($image, $size, $angle, $x, $y, $color, $this->get_font(), $text); } + unset($chars_allowed); } else { @@ -132,7 +137,13 @@ class captcha { global $phpbb_root_path; - $dr = opendir($phpbb_root_path . 'includes/captcha/fonts'); + $dr = @opendir($phpbb_root_path . 'includes/captcha/fonts'); + + if (!$dr) + { + trigger_error('Unable to open includes/captcha/fonts directory.', E_USER_ERROR); + } + while (false !== ($entry = readdir($dr))) { if (strtolower(pathinfo($entry, PATHINFO_EXTENSION)) == 'ttf') @@ -143,7 +154,7 @@ class captcha closedir($dr); } - return $fonts[array_rand($fonts)]; + return $fonts[mt_rand(0, sizeof($fonts) - 1)]; } } diff --git a/phpBB/includes/captcha/captcha_non_gd.php b/phpBB/includes/captcha/captcha_non_gd.php index 41bd22868e..bb4e5af443 100644 --- a/phpBB/includes/captcha/captcha_non_gd.php +++ b/phpBB/includes/captcha/captcha_non_gd.php @@ -30,15 +30,14 @@ class captcha } /** - * Create the image containing $code + * Create the image containing $code with a seed of $seed */ - function execute($code) + function execute($code, $seed) { $img_height = $this->height - 10; $img_width = 0; - list($usec, $sec) = explode(' ', microtime()); - mt_srand($sec * $usec); + mt_srand($seed); $char_widths = $hold_chars = array(); $code_len = strlen($code); diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 652bda40a6..99812363b7 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -117,6 +117,7 @@ define('FULL_FOLDER_HOLD', -1); // Download Modes - Attachments define('INLINE_LINK', 1); +// This mode is only used internally to allow modders extending the attachment functionality define('PHYSICAL_LINK', 2); // Confirm types diff --git a/phpBB/includes/db/dbal.php b/phpBB/includes/db/dbal.php index da5efcf55a..da649ed812 100644 --- a/phpBB/includes/db/dbal.php +++ b/phpBB/includes/db/dbal.php @@ -115,6 +115,24 @@ class dbal } /** + * Build LIMIT query + * Doing some validation here. + */ + function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + { + if (empty($query)) + { + return false; + } + + // Never use a negative total or offset + $total = ($total < 0) ? 0 : $total; + $offset = ($offset < 0) ? 0 : $offset; + + return $this->_sql_query_limit($query, $total, $offset, $cache_ttl); + } + + /** * Fetch all rows */ function sql_fetchrowset($query_id = false) @@ -282,15 +300,36 @@ class dbal } /** - * Build IN, NOT IN, = and <> sql comparison string. + * Build IN or NOT IN sql comparison string, uses <> or = on single element + * arrays to improve comparison speed * @access public + * @param string $field name of the sql column that shall be compared + * @param array $array array of values that are allowed (IN) or not allowed (NOT IN) + * @param bool $negate true for IN (), false for NOT IN () + * @param bool $allow_empty_set Allow $array to be empty, this function will return 1=1 or 1=0 then */ - function sql_in_set($field, $array, $negate = false) + function sql_in_set($field, $array, $negate = false, $allow_empty_set = false) { if (!sizeof($array)) { - // Not optimal, but at least the backtrace should help in identifying where the problem lies. - $this->sql_error('No values specified for SQL IN comparison'); + if (!$allow_empty_set) + { + // Print the backtrace to help identifying the location of the problematic code + $this->sql_error('No values specified for SQL IN comparison'); + } + else + { + // NOT IN () actually means everything so use a tautology + if ($negate) + { + return '1=1'; + } + // IN () actually means nothing so use a contradiction + else + { + return '1=0'; + } + } } if (!is_array($array)) @@ -438,7 +477,7 @@ class dbal */ function sql_error($sql = '') { - global $auth, $user; + global $auth, $user, $config; // Set var to retrieve errored status $this->sql_error_triggered = true; @@ -459,7 +498,7 @@ class dbal $backtrace = get_backtrace(); $message .= ($sql) ? '<br /><br /><u>SQL</u><br /><br />' . htmlspecialchars($sql) : ''; - $message .= ($backtrace) ? '<br /><br /><u>BACKTRACE</u><br />' . $backtrace : ''; + $message .= ($backtrace) ? '<br /><br /><u>BACKTRACE</u><br />' . $backtrace : ''; $message .= '<br />'; } else @@ -472,7 +511,14 @@ class dbal } else { - $message .= '<br /><br />' . $user->lang['SQL_ERROR_OCCURRED']; + if (!empty($config['board_contact'])) + { + $message .= '<br /><br />' . sprintf($user->lang['SQL_ERROR_OCCURRED'], '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>'); + } + else + { + $message .= '<br /><br />' . sprintf($user->lang['SQL_ERROR_OCCURRED'], '', ''); + } } } diff --git a/phpBB/includes/db/firebird.php b/phpBB/includes/db/firebird.php index 7fd034c7dc..5ce4949956 100644 --- a/phpBB/includes/db/firebird.php +++ b/phpBB/includes/db/firebird.php @@ -97,6 +97,12 @@ class dbal_firebird extends dbal { global $cache; + // EXPLAIN only in extra debug mode + if (defined('DEBUG_EXTRA')) + { + $this->sql_report('start', $query); + } + $this->last_query_text = $query; $this->query_result = ($cache_ttl && method_exists($cache, 'sql_load')) ? $cache->sql_load($query) : false; $this->sql_add_num_queries($this->query_result); @@ -108,6 +114,11 @@ class dbal_firebird extends dbal $this->sql_error($query); } + if (defined('DEBUG_EXTRA')) + { + $this->sql_report('stop', $query); + } + if (!$this->transaction) { if (function_exists('ibase_commit_ret')) @@ -131,6 +142,10 @@ class dbal_firebird extends dbal $this->open_queries[(int) $this->query_result] = $this->query_result; } } + else if (defined('DEBUG_EXTRA')) + { + $this->sql_report('fromcache', $query); + } } else { @@ -143,20 +158,13 @@ class dbal_firebird extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; + $this->query_result = false; - $query = 'SELECT FIRST ' . $total . ((!empty($offset)) ? ' SKIP ' . $offset : '') . substr($query, 6); + $query = 'SELECT FIRST ' . $total . ((!empty($offset)) ? ' SKIP ' . $offset : '') . substr($query, 6); - return $this->sql_query($query, $cache_ttl); - } - else - { - return false; - } + return $this->sql_query($query, $cache_ttl); } /** @@ -269,7 +277,7 @@ class dbal_firebird extends dbal { $sql = "SELECT GEN_ID(" . $tablename[1] . "_gen, 0) AS new_id FROM RDB\$DATABASE"; - if (!($temp_q_id = @ibase_query($this->db_connect_id, $sql))) + if (!($temp_q_id = @ibase_query($this->db_connect_id, $sql))) { return false; } diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php index 439cb725fb..b28ea01acb 100644 --- a/phpBB/includes/db/mssql.php +++ b/phpBB/includes/db/mssql.php @@ -35,6 +35,8 @@ class dbal_mssql extends dbal $this->server = $sqlserver . (($port) ? ':' . $port : ''); $this->dbname = $database; + ini_set('mssql.charset', 'UTF-8'); + $this->db_connect_id = ($this->persistency) ? @mssql_pconnect($this->server, $this->user, $sqlpassword) : @mssql_connect($this->server, $this->user, $sqlpassword); if ($this->db_connect_id && $this->dbname != '') @@ -157,40 +159,33 @@ class dbal_mssql extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; + $this->query_result = false; - // Since TOP is only returning a set number of rows we won't need it if total is set to 0 (return all rows) - if ($total) + // Since TOP is only returning a set number of rows we won't need it if total is set to 0 (return all rows) + if ($total) + { + // We need to grab the total number of rows + the offset number of rows to get the correct result + if (strpos($query, 'SELECT DISTINCT') === 0) { - // We need to grab the total number of rows + the offset number of rows to get the correct result - if (strpos($query, 'SELECT DISTINCT') === 0) - { - $query = 'SELECT DISTINCT TOP ' . ($total + $offset) . ' ' . substr($query, 15); - } - else - { - $query = 'SELECT TOP ' . ($total + $offset) . ' ' . substr($query, 6); - } + $query = 'SELECT DISTINCT TOP ' . ($total + $offset) . ' ' . substr($query, 15); } - - $result = $this->sql_query($query, $cache_ttl); - - // Seek by $offset rows - if ($offset) + else { - $this->sql_rowseek($offset, $result); + $query = 'SELECT TOP ' . ($total + $offset) . ' ' . substr($query, 6); } - - return $result; } - else + + $result = $this->sql_query($query, $cache_ttl); + + // Seek by $offset rows + if ($offset) { - return false; + $this->sql_rowseek($offset, $result); } + + return $result; } /** diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php index 2cb3bf0f2d..0b8f1e2a95 100644 --- a/phpBB/includes/db/mssql_odbc.php +++ b/phpBB/includes/db/mssql_odbc.php @@ -156,40 +156,33 @@ class dbal_mssql_odbc extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; + $this->query_result = false; - // Since TOP is only returning a set number of rows we won't need it if total is set to 0 (return all rows) - if ($total) + // Since TOP is only returning a set number of rows we won't need it if total is set to 0 (return all rows) + if ($total) + { + // We need to grab the total number of rows + the offset number of rows to get the correct result + if (strpos($query, 'SELECT DISTINCT') === 0) { - // We need to grab the total number of rows + the offset number of rows to get the correct result - if (strpos($query, 'SELECT DISTINCT') === 0) - { - $query = 'SELECT DISTINCT TOP ' . ($total + $offset) . ' ' . substr($query, 15); - } - else - { - $query = 'SELECT TOP ' . ($total + $offset) . ' ' . substr($query, 6); - } + $query = 'SELECT DISTINCT TOP ' . ($total + $offset) . ' ' . substr($query, 15); } - - $result = $this->sql_query($query, $cache_ttl); - - // Seek by $offset rows - if ($offset) + else { - $this->sql_rowseek($offset, $result); + $query = 'SELECT TOP ' . ($total + $offset) . ' ' . substr($query, 6); } - - return $result; } - else + + $result = $this->sql_query($query, $cache_ttl); + + // Seek by $offset rows + if ($offset) { - return false; + $this->sql_rowseek($offset, $result); } + + return $result; } /** diff --git a/phpBB/includes/db/mysql.php b/phpBB/includes/db/mysql.php index 89a6e21d70..b750618ae6 100644 --- a/phpBB/includes/db/mysql.php +++ b/phpBB/includes/db/mysql.php @@ -163,27 +163,20 @@ class dbal_mysql extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; - - // if $total is set to 0 we do not want to limit the number of rows - if ($total == 0) - { - // Having a value of -1 was always a bug - $total = '18446744073709551615'; - } - - $query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); + $this->query_result = false; - return $this->sql_query($query, $cache_ttl); - } - else + // if $total is set to 0 we do not want to limit the number of rows + if ($total == 0) { - return false; + // Having a value of -1 was always a bug + $total = '18446744073709551615'; } + + $query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); + + return $this->sql_query($query, $cache_ttl); } /** diff --git a/phpBB/includes/db/mysqli.php b/phpBB/includes/db/mysqli.php index 86700744fb..da6faa3983 100644 --- a/phpBB/includes/db/mysqli.php +++ b/phpBB/includes/db/mysqli.php @@ -142,27 +142,20 @@ class dbal_mysqli extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; - - // if $total is set to 0 we do not want to limit the number of rows - if ($total == 0) - { - // MySQL 4.1+ no longer supports -1 in limit queries - $total = '18446744073709551615'; - } - - $query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); + $this->query_result = false; - return $this->sql_query($query, $cache_ttl); - } - else + // if $total is set to 0 we do not want to limit the number of rows + if ($total == 0) { - return false; + // MySQL 4.1+ no longer supports -1 in limit queries + $total = '18446744073709551615'; } + + $query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); + + return $this->sql_query($query, $cache_ttl); } /** diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index 8f65c667a7..860c7a3614 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -46,7 +46,7 @@ class dbal_oracle extends dbal */ function sql_server_info() { - return 'Oracle ' . @ociserverversion($this->db_connect_id); + return @ociserverversion($this->db_connect_id); } /** @@ -213,20 +213,13 @@ class dbal_oracle extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; + $this->query_result = false; - $query = 'SELECT * FROM (SELECT /*+ FIRST_ROWS */ rownum AS xrownum, a.* FROM (' . $query . ') a WHERE rownum <= ' . ($offset + $total) . ') WHERE xrownum >= ' . $offset; + $query = 'SELECT * FROM (SELECT /*+ FIRST_ROWS */ rownum AS xrownum, a.* FROM (' . $query . ') a WHERE rownum <= ' . ($offset + $total) . ') WHERE xrownum >= ' . $offset; - return $this->sql_query($query, $cache_ttl); - } - else - { - return false; - } + return $this->sql_query($query, $cache_ttl); } /** diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php index c06786a795..f2e96260ba 100644 --- a/phpBB/includes/db/postgres.php +++ b/phpBB/includes/db/postgres.php @@ -192,26 +192,19 @@ class dbal_postgres extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; - - // if $total is set to 0 we do not want to limit the number of rows - if ($total == 0) - { - $total = -1; - } + $this->query_result = false; - $query .= "\n LIMIT $total OFFSET $offset"; - - return $this->sql_query($query, $cache_ttl); - } - else + // if $total is set to 0 we do not want to limit the number of rows + if ($total == 0) { - return false; + $total = -1; } + + $query .= "\n LIMIT $total OFFSET $offset"; + + return $this->sql_query($query, $cache_ttl); } /** @@ -275,7 +268,7 @@ class dbal_postgres extends dbal if (preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $this->last_query_text, $tablename)) { $query = "SELECT currval('" . $tablename[1] . "_seq') AS last_value"; - $temp_q_id = @pg_query($this->db_connect_id, $query); + $temp_q_id = @pg_query($this->db_connect_id, $query); if (!$temp_q_id) { diff --git a/phpBB/includes/db/sqlite.php b/phpBB/includes/db/sqlite.php index 708376881c..9f44bd6b35 100644 --- a/phpBB/includes/db/sqlite.php +++ b/phpBB/includes/db/sqlite.php @@ -141,26 +141,19 @@ class dbal_sqlite extends dbal /** * Build LIMIT query */ - function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) + function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { - if ($query != '') - { - $this->query_result = false; - - // if $total is set to 0 we do not want to limit the number of rows - if ($total == 0) - { - $total = -1; - } - - $query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); + $this->query_result = false; - return $this->sql_query($query, $cache_ttl); - } - else + // if $total is set to 0 we do not want to limit the number of rows + if ($total == 0) { - return false; + $total = -1; } + + $query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); + + return $this->sql_query($query, $cache_ttl); } /** diff --git a/phpBB/includes/diff/diff.php b/phpBB/includes/diff/diff.php index ca8d16fd3e..b18970dab4 100644 --- a/phpBB/includes/diff/diff.php +++ b/phpBB/includes/diff/diff.php @@ -15,10 +15,6 @@ if (!defined('IN_PHPBB')) exit; } -// Include renderer and engine -include_once($phpbb_root_path . 'includes/diff/engine.' . $phpEx); -include_once($phpbb_root_path . 'includes/diff/renderer.' . $phpEx); - /** * Code from pear.php.net, Text_Diff-0.2.1 (beta) package * http://pear.php.net/package/Text_Diff/ @@ -46,10 +42,10 @@ class diff * @param array $from_lines An array of strings. Typically these are lines from a file. * @param array $to_lines An array of strings. */ - function diff($from_lines, $to_lines) + function diff(&$from_content, &$to_content, $preserve_cr = true) { $diff_engine = &new diff_engine(); - $this->_edits = call_user_func_array(array($diff_engine, 'diff'), array($from_lines, $to_lines)); + $this->_edits = $diff_engine->diff($from_content, $to_content, $preserve_cr); } /** @@ -248,7 +244,7 @@ class mapped_diff extends diff * compared when computing the diff. * @param array $mapped_to_lines This array should have the same number of elements as $to_lines. */ - function mapped_diff($from_lines, $to_lines, $mapped_from_lines, $mapped_to_lines) + function mapped_diff(&$from_lines, &$to_lines, &$mapped_from_lines, &$mapped_to_lines) { if (sizeof($from_lines) != sizeof($mapped_from_lines) || sizeof($to_lines) != sizeof($mapped_to_lines)) { @@ -414,10 +410,16 @@ class diff3 extends diff * @param array $final1 The first version to compare to. * @param array $final2 The second version to compare to. */ - function diff3($orig, $final1, $final2) + function diff3(&$orig, &$final1, &$final2) { - $engine = new diff_engine(); - $this->_edits = $this->_diff3($engine->diff($orig, $final1), $engine->diff($orig, $final2)); + $diff_engine = &new diff_engine(); + + $diff_1 = $diff_engine->diff($orig, $final1); + $diff_2 = $diff_engine->diff($orig, $final2); + + unset($engine); + + $this->_edits = $this->_diff3($diff_1, $diff_2); } /** @@ -542,7 +544,7 @@ class diff3 extends diff /** * @access private */ - function _diff3($edits1, $edits2) + function _diff3(&$edits1, &$edits2) { $edits = array(); $bb = &new diff3_block_builder(); diff --git a/phpBB/includes/diff/engine.php b/phpBB/includes/diff/engine.php index 5fcb317dd5..a74fa9d263 100644 --- a/phpBB/includes/diff/engine.php +++ b/phpBB/includes/diff/engine.php @@ -47,10 +47,32 @@ if (!defined('IN_PHPBB')) */ class diff_engine { - function diff($from_lines, $to_lines) + function diff(&$from_lines, &$to_lines, $preserve_cr = true) { - array_walk($from_lines, array('diff', 'trim_newlines')); - array_walk($to_lines, array('diff', 'trim_newlines')); + // Remove empty lines... + // If preserve_cr is true, we basically only change \r\n and bare \r to \n to get the same carriage returns for both files + // If it is false, we try to only use \n once per line and ommit all empty lines to be able to get a proper data diff + + if (is_array($from_lines)) + { + $from_lines = implode("\n", $from_lines); + } + + if (is_array($to_lines)) + { + $to_lines = implode("\n", $to_lines); + } + + if ($preserve_cr) + { + $from_lines = explode("\n", str_replace("\r", "\n", str_replace("\r\n", "\n", $from_lines))); + $to_lines = explode("\n", str_replace("\r", "\n", str_replace("\r\n", "\n", $to_lines))); + } + else + { + $from_lines = explode("\n", preg_replace('#[\n\r]+#', "\n", $from_lines)); + $to_lines = explode("\n", preg_replace('#[\n\r]+#', "\n", $to_lines)); + } $n_from = sizeof($from_lines); $n_to = sizeof($to_lines); @@ -249,6 +271,7 @@ class diff_engine } } + // no reset() here while (list($junk, $y) = each($matches)) { if ($y > $this->seq[$k - 1]) diff --git a/phpBB/includes/diff/renderer.php b/phpBB/includes/diff/renderer.php index 984fd65708..e920e9688f 100644 --- a/phpBB/includes/diff/renderer.php +++ b/phpBB/includes/diff/renderer.php @@ -98,8 +98,13 @@ class diff_renderer if (is_a($diff, 'diff3')) { $diff3 = &$diff; - $diff = &new diff($diff3->get_original(), $diff3->merged_output()); + + $diff_1 = $diff3->get_original(); + $diff_2 = $diff3->merged_output(); + unset($diff3); + + $diff = &new diff($diff_1, $diff_2); } $nlead = $this->_leading_context_lines; @@ -293,17 +298,17 @@ class diff_renderer_unified extends diff_renderer function _context($lines) { - return '<pre class="diff context">' . htmlspecialchars($this->_lines($lines, ' ')) . '</pre>'; + return '<pre class="diff context">' . htmlspecialchars($this->_lines($lines, ' ')) . '<br /></pre>'; } function _added($lines) { - return '<pre class="diff added">' . htmlspecialchars($this->_lines($lines, '+')) . '</pre>'; + return '<pre class="diff added">' . htmlspecialchars($this->_lines($lines, '+')) . '<br /></pre>'; } function _deleted($lines) { - return '<pre class="diff removed">' . htmlspecialchars($this->_lines($lines, '-')) . '</pre>'; + return '<pre class="diff removed">' . htmlspecialchars($this->_lines($lines, '-')) . '<br /></pre>'; } function _changed($orig, $final) @@ -360,7 +365,7 @@ class diff_renderer_inline extends diff_renderer */ function get_diff_content($diff) { - return '<pre>' . nl2br($this->render($diff)) . '</pre>'; + return '<pre>' . nl2br($this->render($diff)) . '<br /></pre>'; } function _start_diff() @@ -440,7 +445,11 @@ class diff_renderer_inline extends diff_renderer // We want to split on word boundaries, but we need to preserve whitespace as well. // Therefore we split on words, but include all blocks of whitespace in the wordlist. - $diff = &new diff($this->_split_on_words($text1, $nl), $this->_split_on_words($text2, $nl)); + $splitted_text_1 = $this->_split_on_words($text1, $nl); + $splitted_text_2 = $this->_split_on_words($text2, $nl); + + $diff = &new diff($splitted_text_1, $splitted_text_2); + unset($splitted_text_1, $splitted_text_2); // Get the diff in inline format. $renderer = &new diff_renderer_inline(array_merge($this->get_params(), array('split_level' => 'words'))); @@ -506,7 +515,7 @@ class diff_renderer_raw extends diff_renderer */ function get_diff_content($diff) { - return '<textarea style="height: 400px;" class="full">' . htmlspecialchars($this->render($diff)) . '</textarea>'; + return '<textarea style="height: 290px;" class="full">' . htmlspecialchars($this->render($diff)) . '</textarea>'; } function _block_header($xbeg, $xlen, $ybeg, $ylen) @@ -605,8 +614,8 @@ class diff_renderer_side_by_side extends diff_renderer $line = $current_context; $current_context = ''; - $output .= '<tr class="unmodified"><td><pre>' . ((strlen($line)) ? $line : ' ') . '</pre></td> - <td><pre>' . ((strlen($line)) ? $line : ' ') . '</pre></td></tr>'; + $output .= '<tr class="unmodified"><td><pre>' . ((strlen($line)) ? $line : ' ') . '<br /></pre></td> + <td><pre>' . ((strlen($line)) ? $line : ' ') . '<br /></pre></td></tr>'; } switch ($change['type']) @@ -619,7 +628,7 @@ class diff_renderer_side_by_side extends diff_renderer $line .= htmlspecialchars($_line) . '<br />'; } - $output .= '<tr><td class="added_empty"> </td><td class="added"><pre>' . ((strlen($line)) ? $line : ' ') . '</pre></td></tr>'; + $output .= '<tr><td class="added_empty"> </td><td class="added"><pre>' . ((strlen($line)) ? $line : ' ') . '<br /></pre></td></tr>'; break; case 'remove': @@ -630,7 +639,7 @@ class diff_renderer_side_by_side extends diff_renderer $line .= htmlspecialchars($_line) . '<br />'; } - $output .= '<tr><td class="removed"><pre>' . ((strlen($line)) ? $line : ' ') . '</pre></td><td class="removed_empty"> </td></tr>'; + $output .= '<tr><td class="removed"><pre>' . ((strlen($line)) ? $line : ' ') . '<br /></pre></td><td class="removed_empty"> </td></tr>'; break; case 'empty': @@ -655,7 +664,7 @@ class diff_renderer_side_by_side extends diff_renderer if (!empty($left)) { - $output .= '<td class="modified"><pre>' . $left . '</pre></td>'; + $output .= '<td class="modified"><pre>' . $left . '<br /></pre></td>'; } else if ($row < $oldsize) { @@ -668,7 +677,7 @@ class diff_renderer_side_by_side extends diff_renderer if (!empty($right)) { - $output .= '<td class="modified"><pre>' . $right . '</pre></td>'; + $output .= '<td class="modified"><pre>' . $right . '<br /></pre></td>'; } else if ($row < $newsize) { @@ -689,8 +698,8 @@ class diff_renderer_side_by_side extends diff_renderer $line = $current_context; $current_context = ''; - $output .= '<tr class="unmodified"><td><pre>' . ((strlen($line)) ? $line : ' ') . '</pre></td>'; - $output .= '<td><pre>' . ((strlen($line)) ? $line : ' ') . '</pre></td></tr>'; + $output .= '<tr class="unmodified"><td><pre>' . ((strlen($line)) ? $line : ' ') . '<br /></pre></td>'; + $output .= '<td><pre>' . ((strlen($line)) ? $line : ' ') . '<br /></pre></td></tr>'; } } } diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 9c8163bd14..ff514e7ec5 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -403,7 +403,7 @@ if (!function_exists('stripos')) * @param string $haystack is the string to search in * @param string $needle is the string to search for * - * @return mixed Returns the numeric position of the first occurrence of needle in the haystack string. Unlike strpos(), stripos() is case-insensitive. + * @return mixed Returns the numeric position of the first occurrence of needle in the haystack string. Unlike strpos(), stripos() is case-insensitive. * Note that the needle may be a string of one or more characters. * If needle is not found, stripos() will return boolean FALSE. */ @@ -524,8 +524,8 @@ if (!function_exists('realpath')) // Break the string into little bits for us to nibble on $bits = explode('/', $path); - // Remove any . in the path - $bits = array_diff($bits, array('.')); + // Remove any . in the path, renumber array for the loop below + $bits = array_keys(array_diff($bits, array('.'))); // Lets get looping, run over and resolve any .. (up directory) for ($i = 0, $max = sizeof($bits); $i < $max; $i++) @@ -636,7 +636,7 @@ function language_select($default = '') $sql = 'SELECT lang_iso, lang_local_name FROM ' . LANG_TABLE . ' ORDER BY lang_english_name'; - $result = $db->sql_query($sql, 600); + $result = $db->sql_query($sql); $lang_options = ''; while ($row = $db->sql_fetchrow($result)) @@ -1285,8 +1285,11 @@ function generate_pagination($base_url, $num_items, $per_page, $start_item, $add { global $template, $user; - $seperator = $user->theme['pagination_sep']; - $total_pages = ceil($num_items/$per_page); + // Make sure $per_page is a valid value + $per_page = ($per_page <= 0) ? 1 : $per_page; + + $seperator = '<span class="page-sep">' . $user->lang['COMMA_SEPARATOR'] . '</span>'; + $total_pages = ceil($num_items / $per_page); if ($total_pages == 1 || !$num_items) { @@ -1361,6 +1364,9 @@ function on_page($num_items, $per_page, $start) { global $template, $user; + // Make sure $per_page is a valid value + $per_page = ($per_page <= 0) ? 1 : $per_page; + $on_page = floor($start / $per_page) + 1; $template->assign_vars(array( @@ -1451,6 +1457,7 @@ function generate_board_url($without_script_path = false) $server_protocol = ($config['server_protocol']) ? $config['server_protocol'] : (($config['cookie_secure']) ? 'https://' : 'http://'); $server_name = $config['server_name']; $server_port = (int) $config['server_port']; + $script_path = $config['script_path']; $url = $server_protocol . $server_name; } @@ -1459,6 +1466,8 @@ function generate_board_url($without_script_path = false) // Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection $cookie_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0; $url = (($cookie_secure) ? 'https://' : 'http://') . $server_name; + + $script_path = $user->page['root_script_path']; } if ($server_port && (($config['cookie_secure'] && $server_port <> 443) || (!$config['cookie_secure'] && $server_port <> 80))) @@ -1466,13 +1475,18 @@ function generate_board_url($without_script_path = false) $url .= ':' . $server_port; } - if ($without_script_path) + if (!$without_script_path) { - return $url; + $url .= $script_path; } // Strip / from the end - return $url . substr($user->page['root_script_path'], 0, -1); + if (substr($url, -1, 1) == '/') + { + $url = substr($url, 0, -1); + } + + return $url; } /** @@ -1495,12 +1509,6 @@ function redirect($url, $return = false) // Make sure no &'s are in, this will break the redirect $url = str_replace('&', '&', $url); - // Make sure no linebreaks are there... to prevent http response splitting for PHP < 4.4.2 - if (strpos(urldecode($url), "\n") !== false || strpos(urldecode($url), "\r") !== false) - { - trigger_error('Tried to redirect to potentially insecure url.', E_USER_ERROR); - } - // Determine which type of redirect we need to handle... $url_parts = parse_url($url); @@ -1572,7 +1580,18 @@ function redirect($url, $return = false) if (@preg_match('#Microsoft|WebSTAR|Xitami#', getenv('SERVER_SOFTWARE'))) { header('Refresh: 0; URL=' . $url); - echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="refresh" content="0; url=' . $url . '"><title>Redirect</title></head><body><div align="center">' . sprintf($user->lang['URL_REDIRECT'], '<a href="' . $url . '">', '</a>') . '</div></body></html>'; + + echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; + echo '<html xmlns="http://www.w3.org/1999/xhtml" dir="' . $user->lang['DIRECTION'] . '" lang="' . $user->lang['USER_LANG'] . '" xml:lang="' . $user->lang['USER_LANG'] . '">'; + echo '<head>'; + echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />'; + echo '<meta http-equiv="refresh" content="0; url=' . $url . '" />'; + echo '<title>' . $user->lang['REDIRECT'] . '</title>'; + echo '</head>'; + echo '<body>'; + echo '<div style="text-align: center;">' . sprintf($user->lang['URL_REDIRECT'], '<a href="' . $url . '">', '</a>') . '</div>'; + echo '</body>'; + echo '</html>'; exit; } @@ -1879,6 +1898,12 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa // append/replace SID (may change during the session for AOL users) $redirect = reapply_sid($redirect); + // Special case... the user is effectively banned, but we allow founders to login + if (defined('IN_CHECK_BAN') && $result['user_row']['user_type'] != USER_FOUNDER) + { + return; + } + meta_refresh(3, $redirect); trigger_error($message . '<br /><br />' . sprintf($l_redirect, '<a href="' . $redirect . '">', '</a>')); } @@ -1903,12 +1928,17 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa // Generate code $code = gen_rand_string(mt_rand(5, 8)); $confirm_id = md5(unique_id($user->ip)); + $seed = hexdec(substr(unique_id(), 4, 10)); + + // compute $seed % 0x7fffffff + $seed -= 0x7fffffff * floor($seed / 0x7fffffff); $sql = 'INSERT INTO ' . CONFIRM_TABLE . ' ' . $db->sql_build_array('INSERT', array( 'confirm_id' => (string) $confirm_id, 'session_id' => (string) $user->session_id, 'confirm_type' => (int) CONFIRM_LOGIN, - 'code' => (string) $code) + 'code' => (string) $code, + 'seed' => (int) $seed) ); $db->sql_query($sql); @@ -2096,7 +2126,7 @@ function bump_topic_allowed($forum_id, $topic_bumped, $last_post_time, $topic_po * @param string $words An array of words which should be contained in the result, has to be a valid part of a PCRE pattern (escape with preg_quote!) * @param int $length The desired length of the resulting text, however the result might be shorter or longer than this value * -* @return string Context of the specified words seperated by "..." +* @return string Context of the specified words separated by "..." */ function get_context($text, $words, $length = 400) { @@ -2319,7 +2349,7 @@ function generate_text_for_storage(&$text, &$uid, &$bitfield, &$flags, $allow_bb $uid = ''; } - $flags = (($allow_bbcode) ? 1 : 0) + (($allow_smilies) ? 2 : 0) + (($allow_urls) ? 4 : 0); + $flags = (($allow_bbcode) ? OPTION_FLAG_BBCODE : 0) + (($allow_smilies) ? OPTION_FLAG_SMILIES : 0) + (($allow_urls) ? OPTION_FLAG_LINKS : 0); $bitfield = $message_parser->bbcode_bitfield; return; @@ -2366,15 +2396,15 @@ function make_clickable($text, $server_url = false) // Be sure to not let the matches cross over. ;) // relative urls for this board - $magic_url_match[] = '#(^|[\n\t (])(' . preg_quote($server_url, '#') . ')/(([^[ \t\n\r<"\'\)&]+|&(?!lt;|quot;))*)#ie'; - $magic_url_replace[] = "'\$1<!-- l --><a href=\"\$2/' . preg_replace('/(&|\?)sid=[0-9a-f]{32}/', '\\1', '\$3') . '\">' . preg_replace('/(&|\?)sid=[0-9a-f]{32}/', '\\1', '\$3') . '</a><!-- l -->'"; + $magic_url_match[] = '#(^|[\n\t (])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie'; + $magic_url_replace[] = "'\$1<!-- l --><a href=\"\$2/' . preg_replace('/(&|\?)sid=[0-9a-f]{32}/', '\\\\1', '\$3') . '\">' . preg_replace('/(&|\?)sid=[0-9a-f]{32}/', '\\\\1', '\$3') . '</a><!-- l -->'"; // matches a xxxx://aaaaa.bbb.cccc. ... - $magic_url_match[] = '#(^|[\n\t (])([\w]+:/{2}.*?([^[ \t\n\r<"\'\)&]+|&(?!lt;|quot;))*)#ie'; + $magic_url_match[] = '#(^|[\n\t (])(' . get_preg_expression('url_inline') . ')#ie'; $magic_url_replace[] = "'\$1<!-- m --><a href=\"\$2\">' . ((strlen('\$2') > 55) ? substr(str_replace('&', '&', '\$2'), 0, 39) . ' ... ' . substr(str_replace('&', '&', '\$2'), -10) : '\$2') . '</a><!-- m -->'"; // matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing - $magic_url_match[] = '#(^|[\n\t (])(w{3}\.[\w\-]+\.[\w\-.\~]+(?:[^[ \t\n\r<"\'\)&]+|&(?!lt;|quot;))*)#ie'; + $magic_url_match[] = '#(^|[\n\t (])(' . get_preg_expression('www_url_inline') . ')#ie'; $magic_url_replace[] = "'\$1<!-- w --><a href=\"http://\$2\">' . ((strlen('\$2') > 55) ? substr(str_replace('&', '&', '\$2'), 0, 39) . ' ... ' . substr(str_replace('&', '&', '\$2'), -10) : '\$2') . '</a><!-- w -->'"; // matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode. @@ -2425,24 +2455,299 @@ function smiley_text($text, $force_option = false) } /** -* Inline Attachment processing +* General attachment parsing +* +* @param mixed $forum_id The forum id the attachments are displayed in (false if in private message) +* @param string &$message The post/private message +* @param array &$attachments The attachments to parse for (inline) display. The attachments array will hold templated data after parsing. +* @param array &$update_count The attachment counts to be updated - will be filled +* @param bool $preview If set to true the attachments are parsed for preview. Within preview mode the comments are fetched from the given $attachments array and not fetched from the database. */ -function parse_inline_attachments(&$text, &$attachments, &$update_count, $forum_id = 0, $preview = false) +function parse_attachments($forum_id, &$message, &$attachments, &$update_count, $preview = false) { - global $config, $user; + if (!sizeof($attachments)) + { + return; + } + + global $template, $cache, $user; + global $extensions, $config, $phpbb_root_path, $phpEx; + + // + $compiled_attachments = array(); + + if (!isset($template->filename['attachment_tpl'])) + { + $template->set_filenames(array( + 'attachment_tpl' => 'attachment.html') + ); + } + + if (empty($extensions) || !is_array($extensions)) + { + $extensions = $cache->obtain_attach_extensions($forum_id); + } + + // Look for missing attachment information... + $attach_ids = array(); + foreach ($attachments as $pos => $attachment) + { + // If is_orphan is set, we need to retrieve the attachments again... + if (!isset($attachment['extension']) && !isset($attachment['physical_filename'])) + { + $attach_ids[(int) $attachment['attach_id']] = $pos; + } + } + + // Grab attachments (security precaution) + if (sizeof($attach_ids)) + { + global $db; + + $new_attachment_data = array(); + + $sql = 'SELECT * + FROM ' . ATTACHMENTS_TABLE . ' + WHERE ' . $db->sql_in_set('attach_id', array_keys($attach_ids)); + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + if (!isset($attach_ids[$row['attach_id']])) + { + continue; + } + + // If we preview attachments we will set some retrieved values here + if ($preview) + { + $row['attach_comment'] = $attachments[$attach_ids[$row['attach_id']]]['attach_comment']; + } + + $new_attachment_data[$attach_ids[$row['attach_id']]] = $row; + } + $db->sql_freeresult($result); + + $attachments = $new_attachment_data; + unset($new_attachment_data); + } + + // Sort correctly + if ($config['display_order']) + { + // Ascending sort + krsort($attachments); + } + else + { + // Descending sort + ksort($attachments); + } - if (!function_exists('display_attachments')) + foreach ($attachments as $attachment) { - global $phpbb_root_path, $phpEx; - include("{$phpbb_root_path}includes/functions_display.$phpEx"); + if (!sizeof($attachment)) + { + continue; + } + + // We need to reset/empty the _file block var, because this function might be called more than once + $template->destroy_block_vars('_file'); + + $block_array = array(); + + // Some basics... + $attachment['extension'] = strtolower(trim($attachment['extension'])); + $filename = $phpbb_root_path . $config['upload_path'] . '/' . basename($attachment['physical_filename']); + $thumbnail_filename = $phpbb_root_path . $config['upload_path'] . '/thumb_' . basename($attachment['physical_filename']); + + $upload_icon = ''; + + if (isset($extensions[$attachment['extension']])) + { + if ($user->img('icon_topic_attach', '') && !$extensions[$attachment['extension']]['upload_icon']) + { + $upload_icon = $user->img('icon_topic_attach', ''); + } + else if ($extensions[$attachment['extension']]['upload_icon']) + { + $upload_icon = '<img src="' . $phpbb_root_path . $config['upload_icons_path'] . '/' . trim($extensions[$attachment['extension']]['upload_icon']) . '" alt="" />'; + } + } + + $filesize = $attachment['filesize']; + $size_lang = ($filesize >= 1048576) ? $user->lang['MB'] : ( ($filesize >= 1024) ? $user->lang['KB'] : $user->lang['BYTES'] ); + $filesize = ($filesize >= 1048576) ? round((round($filesize / 1048576 * 100) / 100), 2) : (($filesize >= 1024) ? round((round($filesize / 1024 * 100) / 100), 2) : $filesize); + + $comment = str_replace("\n", '<br />', censor_text($attachment['attach_comment'])); + + $block_array += array( + 'UPLOAD_ICON' => $upload_icon, + 'FILESIZE' => $filesize, + 'SIZE_LANG' => $size_lang, + 'DOWNLOAD_NAME' => basename($attachment['real_filename']), + 'COMMENT' => $comment, + ); + + $denied = false; + + if (!extension_allowed($forum_id, $attachment['extension'], $extensions)) + { + $denied = true; + + $block_array += array( + 'S_DENIED' => true, + 'DENIED_MESSAGE' => sprintf($user->lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']) + ); + } + + if (!$denied) + { + $l_downloaded_viewed = $download_link = ''; + $display_cat = $extensions[$attachment['extension']]['display_cat']; + + if ($display_cat == ATTACHMENT_CATEGORY_IMAGE) + { + if ($attachment['thumbnail']) + { + $display_cat = ATTACHMENT_CATEGORY_THUMB; + } + else + { + if ($config['img_display_inlined']) + { + if ($config['img_link_width'] || $config['img_link_height']) + { + list($width, $height) = @getimagesize($filename); + + $display_cat = (!$width && !$height) ? ATTACHMENT_CATEGORY_IMAGE : (($width <= $config['img_link_width'] && $height <= $config['img_link_height']) ? ATTACHMENT_CATEGORY_IMAGE : ATTACHMENT_CATEGORY_NONE); + } + } + else + { + $display_cat = ATTACHMENT_CATEGORY_NONE; + } + } + } + + // Make some descisions based on user options being set. + if (($display_cat == ATTACHMENT_CATEGORY_IMAGE || $display_cat == ATTACHMENT_CATEGORY_THUMB) && !$user->optionget('viewimg')) + { + $display_cat = ATTACHMENT_CATEGORY_NONE; + } + + if ($display_cat == ATTACHMENT_CATEGORY_FLASH && !$user->optionget('viewflash')) + { + $display_cat = ATTACHMENT_CATEGORY_NONE; + } + + $download_link = append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id'] . '&f=' . (int) $forum_id); + + switch ($display_cat) + { + // Images + case ATTACHMENT_CATEGORY_IMAGE: + $l_downloaded_viewed = $user->lang['VIEWED']; + + $block_array += array( + 'S_IMAGE' => true, + ); + + $update_count[] = $attachment['attach_id']; + break; + + // Images, but display Thumbnail + case ATTACHMENT_CATEGORY_THUMB: + $l_downloaded_viewed = $user->lang['VIEWED']; + $thumbnail_link = append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id'] . '&t=1&f=' . (int) $forum_id); + + $block_array += array( + 'S_THUMBNAIL' => true, + 'THUMB_IMAGE' => $thumbnail_link, + ); + break; + + // Windows Media Streams + case ATTACHMENT_CATEGORY_WM: + $l_downloaded_viewed = $user->lang['VIEWED']; + + // Giving the filename directly because within the wm object all variables are in local context making it impossible + // to validate against a valid session (all params can differ) + // $download_link = $filename; + + $block_array += array( + 'U_FORUM' => generate_board_url(), + 'ATTACH_ID' => $attachment['attach_id'], + 'S_WM_FILE' => true, + ); + + // Viewed/Heared File ... update the download count + $update_count[] = $attachment['attach_id']; + break; + + // Real Media Streams + case ATTACHMENT_CATEGORY_RM: + case ATTACHMENT_CATEGORY_QUICKTIME: + $l_downloaded_viewed = $user->lang['VIEWED']; + + $block_array += array( + 'S_RM_FILE' => ($display_cat == ATTACHMENT_CATEGORY_RM) ? true : false, + 'S_QUICKTIME_FILE' => ($display_cat == ATTACHMENT_CATEGORY_QUICKTIME) ? true : false, + 'U_FORUM' => generate_board_url(), + 'ATTACH_ID' => $attachment['attach_id'], + ); + + // Viewed/Heared File ... update the download count + $update_count[] = $attachment['attach_id']; + break; + + // Macromedia Flash Files + case ATTACHMENT_CATEGORY_FLASH: + list($width, $height) = @getimagesize($filename); + + $l_downloaded_viewed = $user->lang['VIEWED']; + + $block_array += array( + 'S_FLASH_FILE' => true, + 'WIDTH' => $width, + 'HEIGHT' => $height, + ); + + // Viewed/Heared File ... update the download count + $update_count[] = $attachment['attach_id']; + break; + + default: + $l_downloaded_viewed = $user->lang['DOWNLOADED']; + + $block_array += array( + 'S_FILE' => true, + ); + break; + } + + $l_download_count = (!isset($attachment['download_count']) || $attachment['download_count'] == 0) ? $user->lang['DOWNLOAD_NONE'] : (($attachment['download_count'] == 1) ? sprintf($user->lang['DOWNLOAD_COUNT'], $attachment['download_count']) : sprintf($user->lang['DOWNLOAD_COUNTS'], $attachment['download_count'])); + + $block_array += array( + 'U_DOWNLOAD_LINK' => $download_link, + 'L_DOWNLOADED_VIEWED' => $l_downloaded_viewed, + 'L_DOWNLOAD_COUNT' => $l_download_count + ); + } + + $template->assign_block_vars('_file', $block_array); + + $compiled_attachments[] = $template->assign_display('attachment_tpl'); } - $attachments = display_attachments($forum_id, NULL, $attachments, $update_count, false, true); + $attachments = $compiled_attachments; + unset($compiled_attachments); + $tpl_size = sizeof($attachments); $unset_tpl = array(); - preg_match_all('#<!\-\- ia([0-9]+) \-\->(.*?)<!\-\- ia\1 \-\->#', $text, $matches, PREG_PATTERN_ORDER); + preg_match_all('#<!\-\- ia([0-9]+) \-\->(.*?)<!\-\- ia\1 \-\->#', $message, $matches, PREG_PATTERN_ORDER); $replace = array(); foreach ($matches[0] as $num => $capture) @@ -2458,42 +2763,36 @@ function parse_inline_attachments(&$text, &$attachments, &$update_count, $forum_ if (isset($replace['from'])) { - $text = str_replace($replace['from'], $replace['to'], $text); + $message = str_replace($replace['from'], $replace['to'], $message); } - return array_unique($unset_tpl); + $unset_tpl = array_unique($unset_tpl); + + // Needed to let not display the inlined attachments at the end of the post again + foreach ($unset_tpl as $index) + { + unset($attachments[$index]); + } } /** -* Check if extension is allowed to be posted within forum X (forum_id 0 == private messaging) +* Check if extension is allowed to be posted. +* +* @param mixed $forum_id The forum id to check or false if private message +* @param string $extension The extension to check, for example zip. +* @param array &$extensions The extension array holding the information from the cache (will be obtained if empty) +* +* @return bool False if the extension is not allowed to be posted, else true. */ function extension_allowed($forum_id, $extension, &$extensions) { - if (!sizeof($extensions)) + if (empty($extensions)) { global $cache; - $extensions = $cache->obtain_attach_extensions(); - } - - if (!isset($extensions['_allowed_'][$extension])) - { - return false; - } - - $check = $extensions['_allowed_'][$extension]; - - if (is_array($check)) - { - // Check for private messaging AND all forums allowed - if (sizeof($check) == 1 && $check[0] == 0) - { - return true; - } - - return (!in_array($forum_id, $check)) ? false : true; + $extensions = $cache->obtain_attach_extensions($forum_id); } - return ($forum_id == 0) ? false : true; + return (!isset($extensions['_allowed_'][$extension])) ? false : true; } // Little helpers @@ -2712,8 +3011,8 @@ function get_backtrace() /** * This function returns a regular expression pattern for commonly used expressions -* Use with / as delimiter for email mode -* mode can be: email|bbcode_htm +* Use with / as delimiter for email mode and # for url modes +* mode can be: email|bbcode_htm|url|url_inline|www_url|www_url_inline|relative_url|relative_url_inline */ function get_preg_expression($mode) { @@ -2726,12 +3025,31 @@ function get_preg_expression($mode) case 'bbcode_htm': return array( '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#', - '#<!\-\- (l|m|w) \-\-><a href="(.*?)">.*?</a><!\-\- \1 \-\->#', + '#<!\-\- ([lmw]) \-\-><a href="(.*?)">.*?</a><!\-\- \1 \-\->#', '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#', '#<!\-\- .*? \-\->#s', '#<.*?>#s', ); break; + + case 'url': + case 'url_inline': + $inline = ($mode == 'url') ? ')' : ''; + // generated with regex generation file in the develop folder + return "[a-z][a-z\d+\-.]*:/{2}(?:(?:[a-z0-9\-._~!$&'($inline*+,;=|@]+|%[\dA-F]{2})+|[0-9.]+|\[[a-z0-9.]+:[a-z0-9.]+:[a-z0-9.:]+\])(?::\d*)?(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?"; + break; + + case 'www_url': + case 'www_url_inline': + $inline = ($mode == 'www_url') ? ')' : ''; + return "www\.(?:[a-z0-9\-._~!$&'($inline*+,;=|@]+|%[\dA-F]{2})+(?::\d*)?(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?"; + break; + + case 'relative_url': + case 'relative_url_inline': + $inline = ($mode == 'relative_url') ? ')' : ''; + return "(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?"; + break; } return ''; @@ -2793,7 +3111,7 @@ function get_username_string($mode, $user_id, $username, $username_colour = '', { global $phpbb_root_path, $phpEx, $user; - $full_string = $profile_url = ''; + $profile_url = ''; $username_colour = ($username_colour) ? '#' . $username_colour : ''; if ($guest_username === false) @@ -2838,7 +3156,7 @@ function get_username_string($mode, $user_id, $username, $username_colour = '', { $tpl = '{USERNAME}'; } - else if (!$profile_url && $username_colour) + else if (!$profile_url && $username_colour) { $tpl = '<span style="color: {USERNAME_COLOUR}; font-weight: bold;">{USERNAME}</span>'; } @@ -2916,7 +3234,7 @@ function phpbb_checkdnsrr($host, $type = '') function msg_handler($errno, $msg_text, $errfile, $errline) { global $cache, $db, $auth, $template, $config, $user; - global $phpEx, $phpbb_root_path, $starttime, $msg_title, $msg_long_text; + global $phpEx, $phpbb_root_path, $msg_title, $msg_long_text; // Message handler is stripping text. In case we need it, we are possible to define long text... if (isset($msg_long_text) && $msg_long_text && !$msg_text) @@ -3095,7 +3413,6 @@ function page_header($page_title = '', $display_online_list = true) if ($config['load_online'] && $config['load_online_time'] && $display_online_list) { - $userlist_ary = $userlist_visible = array(); $logged_visible_online = $logged_hidden_online = $guests_online = $prev_user_id = 0; $prev_session_ip = $reading_sql = ''; @@ -3140,7 +3457,7 @@ function page_header($page_title = '', $display_online_list = true) $db->sql_freeresult($result); } - $sql = 'SELECT u.username, u.user_id, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_ip, s.session_viewonline + $sql = 'SELECT u.username, u.username_clean, u.user_id, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_ip, s.session_viewonline FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s WHERE s.session_time >= ' . (time() - (intval($config['load_online_time']) * 60)) . $reading_sql . @@ -3363,7 +3680,7 @@ function page_header($page_title = '', $display_online_list = true) 'U_RESTORE_PERMISSIONS' => ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm') : '', 'S_USER_LOGGED_IN' => ($user->data['user_id'] != ANONYMOUS) ? true : false, - 'S_BOARD_DISABLED' => ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_')) ? true : false, + 'S_BOARD_DISABLED' => ($config['board_disable']) ? true : false, 'S_REGISTERED_USER' => $user->data['is_registered'], 'S_IS_BOT' => $user->data['is_bot'], 'S_USER_PM_POPUP' => $user->optionget('popuppm'), @@ -3372,8 +3689,6 @@ function page_header($page_title = '', $display_online_list = true) 'S_USERNAME' => $user->data['username'], 'S_CONTENT_DIRECTION' => $user->lang['DIRECTION'], 'S_CONTENT_ENCODING' => 'UTF-8', - 'S_CONTENT_DIR_LEFT' => $user->lang['LEFT'], - 'S_CONTENT_DIR_RIGHT' => $user->lang['RIGHT'], 'S_TIMEZONE' => ($user->data['user_dst'] || ($user->data['user_id'] == ANONYMOUS && $config['board_dst'])) ? sprintf($user->lang['ALL_TIMES'], $user->lang['tz'][$tz], $user->lang['tz']['dst']) : sprintf($user->lang['ALL_TIMES'], $user->lang['tz'][$tz], ''), 'S_DISPLAY_ONLINE_LIST' => ($l_online_time) ? 1 : 0, 'S_DISPLAY_SEARCH' => (!$config['load_search']) ? 0 : (isset($auth) ? ($auth->acl_get('u_search') && $auth->acl_getf_global('f_search')) : 1), @@ -3399,10 +3714,9 @@ function page_header($page_title = '', $display_online_list = true) 'SITE_LOGO_IMG' => $user->img('site_logo')) ); - if ($config['send_encoding']) - { - header('Content-type: text/html; charset=UTF-8'); - } + // application/xhtml+xml not used because of IE + header('Content-type: text/html; charset=UTF-8'); + header('Cache-Control: private, no-cache="set-cookie"'); header('Expires: 0'); header('Pragma: no-cache'); @@ -3415,7 +3729,7 @@ function page_header($page_title = '', $display_online_list = true) */ function page_footer($run_cron = true) { - global $db, $config, $template, $user, $auth, $cache, $messenger, $starttime, $phpbb_root_path, $phpEx; + global $db, $config, $template, $user, $auth, $cache, $starttime, $phpbb_root_path, $phpEx; // Output page creation time if (defined('DEBUG')) @@ -3428,7 +3742,7 @@ function page_footer($run_cron = true) $db->sql_report('display'); } - $debug_output = sprintf('Time : %.3fs | ' . $db->sql_num_queries() . ' Queries | GZIP : ' . (($config['gzip_compress']) ? 'On' : 'Off') . (($user->load) ? ' | Load : ' . $user->load : ''), $totaltime); + $debug_output = sprintf('Time : %.3fs | ' . $db->sql_num_queries() . ' Queries | GZIP : ' . (($config['gzip_compress']) ? 'On' : 'Off') . (($user->load) ? ' | Load : ' . $user->load : ''), $totaltime); if ($auth->acl_get('a_') && defined('DEBUG_EXTRA')) { @@ -3542,17 +3856,18 @@ class bitfield // Get the ($n / 8)th char $byte = $n >> 3; - if (!isset($this->data[$byte])) + if (strlen($this->data) >= $byte + 1) + { + $c = $this->data[$byte]; + + // Lookup the ($n % 8)th bit of the byte + $bit = 7 - ($n & 7); + return (bool) (ord($c) & (1 << $bit)); + } + else { - // Of course, if it doesn't exist then the result if FALSE return false; } - - $c = $this->data[$byte]; - - // Lookup the ($n % 8)th bit of the byte - $bit = 7 - ($n & 7); - return (bool) (ord($c) & (1 << $bit)); } function set($n) @@ -3560,16 +3875,13 @@ class bitfield $byte = $n >> 3; $bit = 7 - ($n & 7); - if (isset($this->data[$byte])) + if (strlen($this->data) >= $byte + 1) { $this->data[$byte] = $this->data[$byte] | chr(1 << $bit); } else { - if ($byte - strlen($this->data) > 0) - { - $this->data .= str_repeat("\0", $byte - strlen($this->data)); - } + $this->data .= str_repeat("\0", $byte - strlen($this->data)); $this->data .= chr(1 << $bit); } } @@ -3578,13 +3890,11 @@ class bitfield { $byte = $n >> 3; - if (!isset($this->data[$byte])) + if (strlen($this->data) >= $byte + 1) { - return; + $bit = 7 - ($n & 7); + $this->data[$byte] = $this->data[$byte] &~ chr(1 << $bit); } - - $bit = 7 - ($n & 7); - $this->data[$byte] = $this->data[$byte] &~ chr(1 << $bit); } function get_blob() diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index c00a2cd3d9..8e4865fa97 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -114,7 +114,7 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = ORDER BY left_id ASC'; $result = $db->sql_query($sql); - $right = $iteration = 0; + $right = 0; $padding_store = array('0' => ''); $padding = ''; $forum_list = ($return_array) ? array() : ''; @@ -136,41 +136,44 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = } $right = $row['right_id']; + $disabled = false; if ($acl && !$auth->acl_gets($acl, $row['forum_id'])) { - continue; - } - - if ((is_array($ignore_id) && in_array($row['forum_id'], $ignore_id)) || $row['forum_id'] == $ignore_id) - { - continue; + // List permission? + if ($auth->acl_get('f_list', $row['forum_id'])) + { + $disabled = true; + } + else + { + continue; + } } - if ($row['forum_type'] == FORUM_CAT && ($row['left_id'] + 1 == $row['right_id']) && $ignore_emptycat) - { + if ( + ((is_array($ignore_id) && in_array($row['forum_id'], $ignore_id)) || $row['forum_id'] == $ignore_id) + || // Non-postable forum with no subforums, don't display - continue; - } - - if ($row['forum_type'] != FORUM_POST && $ignore_nonpost) + ($row['forum_type'] == FORUM_CAT && ($row['left_id'] + 1 == $row['right_id']) && $ignore_emptycat) + || + ($row['forum_type'] != FORUM_POST && $ignore_nonpost) + ) { - continue; + $disabled = true; } if ($return_array) { // Include some more information... $selected = (is_array($select_id)) ? ((in_array($row['forum_id'], $select_id)) ? true : false) : (($row['forum_id'] == $select_id) ? true : false); - $forum_list[$row['forum_id']] = array_merge(array('padding' => $padding, 'selected' => $selected), $row); + $forum_list[$row['forum_id']] = array_merge(array('padding' => $padding, 'selected' => ($selected && !$disabled), 'disabled' => $disabled), $row); } else { $selected = (is_array($select_id)) ? ((in_array($row['forum_id'], $select_id)) ? ' selected="selected"' : '') : (($row['forum_id'] == $select_id) ? ' selected="selected"' : ''); - $forum_list .= '<option value="' . $row['forum_id'] . '"' . $selected . '>' . $padding . $row['forum_name'] . '</option>'; + $forum_list .= '<option value="' . $row['forum_id'] . '"' . (($disabled) ? ' disabled="disabled"' : $selected) . '>' . $padding . $row['forum_name'] . '</option>'; } - - $iteration++; } $db->sql_freeresult($result); unset($padding_store); @@ -200,19 +203,27 @@ function size_select_options($size_compare) } /** -* Generate list of groups +* Generate list of groups (option fields without select) +* +* @param int $group_id The default group id to mark as selected +* @param array $exclude_ids The group ids to exclude from the list, false (default) if you whish to exclude no id +* @param int $manage_founder If set to false (default) all groups are returned, if 0 only those groups returned not being managed by founders only, if 1 only those groups returned managed by founders only. +* +* @return string The list of options. */ -function group_select_options($group_id, $exclude_ids = false) +function group_select_options($group_id, $exclude_ids = false, $manage_founder = false) { global $db, $user, $config; $exclude_sql = ($exclude_ids !== false && sizeof($exclude_ids)) ? 'WHERE ' . $db->sql_in_set('group_id', array_map('intval', $exclude_ids), true) : ''; $sql_and = (!$config['coppa_enable']) ? (($exclude_sql) ? ' AND ' : ' WHERE ') . "group_name <> 'REGISTERED_COPPA'" : ''; + $sql_founder = ($manage_founder !== false) ? (($exclude_sql || $sql_and) ? ' AND ' : ' WHERE ') . 'group_founder_manage = ' . (int) $manage_founder : ''; $sql = 'SELECT group_id, group_name, group_type FROM ' . GROUPS_TABLE . " $exclude_sql $sql_and + $sql_founder ORDER BY group_type DESC, group_name ASC"; $result = $db->sql_query($sql); @@ -337,7 +348,13 @@ function filelist($rootdir, $dir = '', $type = 'gif|jpg|jpeg|png') return false; } - $dh = opendir($rootdir . $dir); + $dh = @opendir($rootdir . $dir); + + if (!$dh) + { + return false; + } + while (($fname = readdir($dh)) !== false) { if (is_file("$rootdir$dir$fname")) @@ -759,7 +776,7 @@ function delete_attachments($mode, $ids, $resync = true) $space_removed = $files_removed = 0; foreach ($physical as $file_ary) { - if (phpbb_unlink($file_ary['filename'], 'file')) + if (phpbb_unlink($file_ary['filename'], 'file', true)) { $space_removed += $file_ary['filesize']; $files_removed++; @@ -767,7 +784,7 @@ function delete_attachments($mode, $ids, $resync = true) if ($file_ary['thumbnail']) { - phpbb_unlink($file_ary['filename'], 'thumbnail'); + phpbb_unlink($file_ary['filename'], 'thumbnail', true); } } set_config('upload_dir_size', $config['upload_dir_size'] - $space_removed, true); @@ -993,14 +1010,28 @@ function update_posted_info(&$topic_ids) } /** -* Delete File +* Delete attached file */ -function phpbb_unlink($filename, $mode = 'file') +function phpbb_unlink($filename, $mode = 'file', $entry_removed = false) { - global $config, $user, $phpbb_root_path; + global $db, $phpbb_root_path, $config; + + // Because of copying topics or modifications a physical filename could be assigned more than once. If so, do not remove the file itself. + $sql = 'SELECT COUNT(attach_id) AS num_entries + FROM ' . ATTACHMENTS_TABLE . " + WHERE physical_filename = '" . $db->sql_escape(basename($filename)) . "'"; + $result = $db->sql_query($sql); + $num_entries = (int) $db->sql_fetchfield('num_entries'); + $db->sql_freeresult($result); + + // Do not remove file if at least one additional entry with the same name exist. + if (($entry_removed && $num_entries > 0) || (!$entry_removed && $num_entries > 1)) + { + return false; + } - $filename = ($mode == 'thumbnail') ? $phpbb_root_path . $config['upload_path'] . '/thumb_' . basename($filename) : $phpbb_root_path . $config['upload_path'] . '/' . basename($filename); - return @unlink($filename); + $filename = ($mode == 'thumbnail') ? 'thumb_' . basename($filename) : basename($filename); + return @unlink($phpbb_root_path . $config['upload_path'] . '/' . $filename); } /** @@ -1927,10 +1958,7 @@ function split_sql_file($sql, $delimiter) $sql = str_replace("\r" , '', $sql); $data = preg_split('/' . preg_quote($delimiter, '/') . '$/m', $sql); - foreach ($data as $key => $value) - { - $data[$key] = trim($value); - } + $data = array_map('trim', $data); // The empty case $end_data = end($data); @@ -2051,7 +2079,7 @@ function cache_moderators() // Make sure not hidden or special groups are involved... $sql = 'SELECT group_name, group_id, group_type - FROM ' . GROUPS_TABLE . ' + FROM ' . GROUPS_TABLE . ' WHERE ' . $db->sql_in_set('group_id', $ug_id_ary); $result = $db->sql_query($sql); @@ -2161,7 +2189,7 @@ function view_log($mode, &$log, &$log_count, $limit = 0, $offset = 0, $forum_id return; } - $sql = "SELECT l.*, u.username, u.user_colour + $sql = "SELECT l.*, u.username, u.username_clean, u.user_colour FROM " . LOG_TABLE . " l, " . USERS_TABLE . " u WHERE l.log_type = $log_type AND u.user_id = l.user_id @@ -2561,7 +2589,7 @@ function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port { $get_info = true; } - else if (strpos($line, '404 Not Found') !== false) + else if (stripos($line, '404 not found') !== false) { $errstr = $user->lang['FILE_NOT_FOUND'] . ': ' . $filename; return false; @@ -2574,11 +2602,12 @@ function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port { if ($errstr) { + $errstr = utf8_convert_message($errstr); return false; } else { - $errstr = 'fsock disabled'; + $errstr = $user->lang['FSOCK_DISABLED']; return false; } } @@ -2590,7 +2619,7 @@ function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port * Tidy Warnings * Remove all warnings which have now expired from the database * The duration of a warning can be defined by the administrator -* This only removes the warning and reduces the assosciated count, +* This only removes the warning and reduces the associated count, * it does not remove the user note recording the contents of the warning */ function tidy_warnings() @@ -2657,9 +2686,9 @@ function add_permission_language() // Now search in acp and mods folder for permissions_ files. foreach (array('acp/', 'mods/') as $path) { - $dh = opendir($user->lang_path . $path); + $dh = @opendir($user->lang_path . $path); - if ($dh !== false) + if ($dh) { while (($file = readdir($dh)) !== false) { diff --git a/phpBB/includes/functions_compress.php b/phpBB/includes/functions_compress.php index 93a3547e21..3fe2bf9a9b 100644 --- a/phpBB/includes/functions_compress.php +++ b/phpBB/includes/functions_compress.php @@ -600,7 +600,7 @@ class compress_tar extends compress function open() { $fzopen = ($this->isbz && function_exists('bzopen')) ? 'bzopen' : (($this->isgz && @extension_loaded('zlib')) ? 'gzopen' : 'fopen'); - $this->fp = @$fzopen($this->file, $this->mode . 'b' . (($fzopen == 'gzopen') ? '9' : '')); + $this->fp = @$fzopen($this->file, $this->mode . (($fzopen == 'bzopen') ? '' : 'b') . (($fzopen == 'gzopen') ? '9' : '')); if (!$this->fp) { diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php new file mode 100644 index 0000000000..14dd4c370b --- /dev/null +++ b/phpBB/includes/functions_convert.php @@ -0,0 +1,2268 @@ +<?php +/** +* +* @package install +* @version $Id$ +* @copyright (c) 2006 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +* Default avatar width/height +* @ignore +*/ +define('DEFAULT_AVATAR_X', 80); +define('DEFAULT_AVATAR_Y', 80); + +// Global functions - all functions can be used by convertors + +/** +* Determine whether we are approaching the maximum execution time +*/ +function still_on_time() +{ + static $max_execution_time, $start_time; + + $time = explode(' ', microtime()); + $current_time = $time[0] + $time[1]; + + if (empty($max_execution_time)) + { + $max_execution_time = (function_exists('ini_get')) ? (int) ini_get('max_execution_time') : (int) get_cfg_var('max_execution_time'); + + // If zero, then set to something higher to not let the user catch the ten seconds barrier. + if ($max_execution_time === 0) + { + $max_execution_time = 250; + } + + $max_execution_time = min(max(10, ($max_execution_time - 15)), 250); + + // For debugging purposes + // $max_execution_time = 10; + + global $starttime; + $start_time = (empty($starttime)) ? $current_time : $starttime; + } + + return (ceil($current_time - $start_time) < $max_execution_time) ? true : false; +} + +// SIMPLE FUNCTIONS + +/** +* Return the preceding value +*/ +function dec($var) +{ + return --$var; +} + +/** +* Return the next value +*/ +function inc($var) +{ + return ++$var; +} + +/** +* Return whether the value is positive +*/ +function is_positive($n) +{ + return ($n > 0) ? 1 : 0; +} + +/** +* Boolean inverse of the value +*/ +function not($var) +{ + return ($var) ? 0 : 1; +} + +/** +* Convert a textual value to it's equivalent boolean value +* +* @param string $str String to convert (converts yes, on, y, 1 and true to boolean true) +* @return boolean The equivalent value +*/ +function str_to_bool($str) +{ + $str = strtolower($str); + return ($str == 'yes' || $str == 'on' || $str == 'y' || $str == 'true' || $str == '1') ? true : false; +} + +/** +* Function to mimic php's empty() function (it is the same) +*/ +function is_empty($mixed) +{ + return empty($mixed); +} + +/** +* Convert the name of a user's primary group to the appropriate equivalent phpBB group id +* +* @param string $status The name of the group +* @return int The group_id corresponding to the equivalent group +*/ +function str_to_primary_group($status) +{ + switch (ucfirst(strtolower($status))) + { + case 'Administrator': + return get_group_id('administrators'); + break; + + case 'Super moderator': + case 'Global moderator': + case 'Moderator': + return get_group_id('global_moderators'); + break; + + case 'Guest': + case 'Anonymous': + return get_group_id('guests'); + break; + + default: + return get_group_id('registered'); + break; + } +} + +/** +* Convert a boolean into the appropriate phpBB constant indicating whether the item is locked +*/ +function is_item_locked($bool) +{ + return ($bool) ? ITEM_LOCKED : ITEM_UNLOCKED; +} + +/** +* Convert a value from days to seconds +*/ +function days_to_seconds($days) +{ + return ($days * 86400); +} + +/** +* Determine whether a user is anonymous and return the appropriate new user_id +*/ +function is_user_anonymous($user_id) +{ + return ($user_id > ANONYMOUS) ? $user_id : ANONYMOUS; +} + +/** +* Generate a key value based on existing values +* +* @param int $pad Amount to add to the maximum value +* @return int Key value +*/ +function auto_id($pad = 0) +{ + global $auto_id, $convert_row; + + if (!empty($convert_row['max_id'])) + { + return $convert_row['max_id'] + $pad; + } + + return $auto_id + $pad; +} + +/** +* Convert a boolean into the appropriate phpBB constant indicating whether the user is active +*/ +function set_user_type($user_active) +{ + return ($user_active) ? USER_NORMAL : USER_INACTIVE; +} + +/** +* Convert a value from minutes to hours +*/ +function minutes_to_hours($minutes) +{ + return ($minutes / 3600); +} + +/** +* Return the group_id for a given group name +*/ +function get_group_id($group_name) +{ + global $db, $group_mapping; + + if (empty($group_mapping)) + { + $sql = 'SELECT group_name, group_id + FROM ' . GROUPS_TABLE; + $result = $db->sql_query($sql); + + $group_mapping = array(); + while ($row = $db->sql_fetchrow($result)) + { + $group_mapping[strtoupper($row['group_name'])] = (int) $row['group_id']; + } + $db->sql_freeresult($result); + } + + if (!sizeof($group_mapping)) + { + add_default_groups(); + return get_group_id($group_name); + } + + if (isset($group_mapping[strtoupper($group_name)])) + { + return $group_mapping[strtoupper($group_name)]; + } + + return $group_mapping['REGISTERED']; +} + +/** +* Generate the email hash stored in the users table +*/ +function gen_email_hash($email) +{ + return (crc32(strtolower($email)) . strlen($email)); +} + +/** +* Convert a boolean into the appropriate phpBB constant indicating whether the topic is locked +*/ +function is_topic_locked($bool) +{ + return (!empty($bool)) ? ITEM_LOCKED : ITEM_UNLOCKED; +} + +/** +* Generate a bbcode_uid value +*/ +function make_uid($timestamp) +{ + return substr(md5($timestamp), 0, BBCODE_UID_LEN); +} + +/** +* Validate a website address +*/ +function validate_website($url) +{ + return ($url == 'http://') ? '' : $url; +} + +/** +* Convert nulls to zeros for fields which allowed a NULL value in the source but not the destination +*/ +function null_to_zero($value) +{ + return ($value === NULL) ? 0 : $value; +} + +/** +* Convert nulls to empty strings for fields which allowed a NULL value in the source but not the destination +*/ +function null_to_str($value) +{ + return ($value === NULL) ? '' : $value; +} + +// EXTENDED FUNCTIONS + +/** +* Get old config value +*/ +function get_config_value($config_name) +{ + static $convert_config; + + if (!isset($convert_config)) + { + $convert_config = get_config(); + } + + if (!isset($convert_config[$config_name])) + { + return false; + } + + return (empty($convert_config[$config_name])) ? '' : $convert_config[$config_name]; +} + +/** +* Convert an IP address from the hexadecimal notation to normal dotted-quad notation +*/ +function decode_ip($int_ip) +{ + if (!$int_ip) + { + return ''; + } + + $hexipbang = explode('.', chunk_split($int_ip, 2, '.')); + return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]); +} + +/** +* Reverse the encoding of wild-carded bans +*/ +function decode_ban_ip($int_ip) +{ + return str_replace('255', '*', decode_ip($int_ip)); +} + +/** +* Determine the MIME-type of a specified filename +* This does not actually inspect the file, but simply uses the file extension +*/ +function mimetype($filename) +{ + if (!preg_match('/\.([a-z0-9]+)$/i', $filename, $m)) + { + return 'application/octet-stream'; + } + + switch (strtolower($m[1])) + { + case 'zip': return 'application/zip'; + case 'jpeg': return 'image/jpeg'; + case 'jpg': return 'image/jpeg'; + case 'jpe': return 'image/jpeg'; + case 'png': return 'image/png'; + case 'gif': return 'image/gif'; + case 'htm': + case 'html': return 'text/html'; + case 'tif': return 'image/tiff'; + case 'tiff': return 'image/tiff'; + case 'ras': return 'image/x-cmu-raster'; + case 'pnm': return 'image/x-portable-anymap'; + case 'pbm': return 'image/x-portable-bitmap'; + case 'pgm': return 'image/x-portable-graymap'; + case 'ppm': return 'image/x-portable-pixmap'; + case 'rgb': return 'image/x-rgb'; + case 'xbm': return 'image/x-xbitmap'; + case 'xpm': return 'image/x-xpixmap'; + case 'xwd': return 'image/x-xwindowdump'; + case 'z': return 'application/x-compress'; + case 'gtar': return 'application/x-gtar'; + case 'tgz': return 'application/x-gtar'; + case 'gz': return 'application/x-gzip'; + case 'tar': return 'application/x-tar'; + case 'xls': return 'application/excel'; + case 'pdf': return 'application/pdf'; + case 'ppt': return 'application/powerpoint'; + case 'rm': return 'application/vnd.rn-realmedia'; + case 'wma': return 'audio/x-ms-wma'; + case 'swf': return 'application/x-shockwave-flash'; + case 'ief': return 'image/ief'; + case 'doc': + case 'dot': + case 'wrd': return 'application/msword'; + case 'ai': + case 'eps': + case 'ps': return 'application/postscript'; + case 'asc': + case 'txt': + case 'c': + case 'cc': + case 'h': + case 'hh': + case 'cpp': + case 'hpp': + case 'php': + case 'php3': return 'text/plain'; + default: return 'application/octet-stream'; + } +} + +/** +* Obtain the dimensions of all remotely hosted avatars +* This should only be called from execute_last +* There can be significant network overhead if there are a large number of remote avatars +* @todo Look at the option of allowing the user to decide whether this is called or to force the dimensions +*/ +function remote_avatar_dims() +{ + global $db; + + $sql = 'SELECT user_id, user_avatar + FROM ' . USERS_TABLE . ' + WHERE user_avatar_type = ' . AVATAR_REMOTE; + $result = $db->sql_query($sql); + + $remote_avatars = array(); + while ($row = $db->sql_fetchrow($result)) + { + $remote_avatars[(int) $row['user_id']] = $row['user_avatar']; + } + $db->sql_freeresult($result); + + foreach ($remote_avatars as $user_id => $avatar) + { + $width = (int) get_remote_avatar_dim($avatar, 0); + $height = (int) get_remote_avatar_dim($avatar, 1); + + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_avatar_width = ' . (int) $width . ', user_avatar_height = ' . (int) $height . ' + WHERE user_id = ' . $user_id; + $db->sql_query($sql); + } +} + +function import_avatar_gallery($gallery_name = '', $subdirs_as_galleries = false) +{ + global $config, $convert, $phpbb_root_path, $user; + + $relative_path = empty($convert->convertor['source_path_absolute']); + + if (empty($convert->convertor['avatar_gallery_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_GALLERY_PATH'], 'import_avatar_gallery()'), __LINE__, __FILE__); + } + + $src_path = relative_base(path($convert->convertor['avatar_gallery_path'], $relative_path), $relative_path); + + if (is_dir($src_path)) + { + copy_dir($convert->convertor['avatar_gallery_path'], path($config['avatar_gallery_path']) . $gallery_name, !$subdirs_as_galleries, false, true, $relative_path); + + // only doing 1 level deep. (ibf 1.x) + // notes: ibf has 2 tiers: directly in the avatar directory for base gallery (handled in the above statement), plus subdirs(handled below). + // recursive subdirs ignored. -- i don't know if other forums support recursive galleries. if they do, this following code could be upgraded to be recursive. + if ($subdirs_as_galleries) + { + $dirlist = array(); + if ($handle = @opendir($src_path)) + { + while ($entry = readdir($handle)) + { + if ($entry[0] == '.' || $entry == 'CVS' || $entry == 'index.htm') + { + continue; + } + + if (is_dir($src_path . $entry)) + { + $dirlist[] = $entry; + } + } + closedir($handle); + } + else if ($dir = @dir($src_path)) + { + while ($entry = $dir->read()) + { + if ($entry[0] == '.' || $entry == 'CVS' || $entry == 'index.htm') + { + continue; + } + + if (is_dir($src_path . $entry)) + { + $dirlist[] = $entry; + } + } + $dir->close(); + } + + for ($i = 0; $i < sizeof($dirlist); ++$i) + { + $dir = $dirlist[$i]; + copy_dir(path($convert->convertor['avatar_gallery_path'], $relative_path) . $dir, path($config['avatar_gallery_path']) . $dir, true, false, true, $relative_path); + } + } + } +} + +function import_attachment_files($category_name = '') +{ + global $config, $convert, $phpbb_root_path, $db, $user; + + $sql = 'SELECT config_value AS upload_path + FROM ' . CONFIG_TABLE . " + WHERE config_name = 'upload_path'"; + $result = $db->sql_query($sql); + $config['upload_path'] = $db->sql_fetchfield('upload_path'); + $db->sql_freeresult($result); + + $relative_path = empty($convert->convertor['source_path_absolute']); + + if (empty($convert->convertor['upload_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_UPLOAD_DIR'], 'import_attachment_files()'), __LINE__, __FILE__); + } + + if (is_dir(relative_base(path($convert->convertor['upload_path'], $relative_path), $relative_path))) + { + copy_dir($convert->convertor['upload_path'], path($config['upload_path']) . $category_name, true, false, true, $relative_path); + } +} + +function attachment_forum_perms($forum_id) +{ + if (!is_array($forum_id)) + { + $forum_id = array($forum_id); + } + + return serialize($forum_id); +} + +// base64todec function +// -> from php manual? +function base64_unpack($string) +{ + $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-'; + $base = strlen($chars); + + $length = strlen($string); + $number = 0; + + for ($i = 1; $i <= $length; $i++) + { + $pos = $length - $i; + $operand = strpos($chars, substr($string, $pos, 1)); + $exponent = pow($base, $i-1); + $dec_value = $operand * $exponent; + $number += $dec_value; + } + + return $number; +} + +function _import_check($config_var, $source, $use_target) +{ + global $convert, $config; + + $result = array( + 'orig_source' => $source, + 'copied' => false, + 'relative_path' => (empty($convert->convertor['source_path_absolute'])) ? true : false, + ); + + $target = $config[$config_var] . '/' . basename(($use_target === false) ? $source : $use_target); + + if (!empty($convert->convertor[$config_var]) && strpos($source, $convert->convertor[$config_var]) !== 0) + { + $source = $convert->convertor[$config_var] . $source; + } + + $result['source'] = $source; + + if (file_exists(relative_base($source, $result['relative_path'], __LINE__, __FILE__))) + { + $result['copied'] = copy_file($source, $target, false, false, $result['relative_path']); + } + + if ($result['copied']) + { + $result['target'] = basename($target); + } + else + { + $result['target'] = ($use_target !== false) ? $result['orig_source'] : basename($target); + } + + return $result; +} + +function import_attachment($source, $use_target = false) +{ + if (empty($source)) + { + return ''; + } + + global $convert, $phpbb_root_path, $config, $user; + + if (empty($convert->convertor['upload_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_UPLOAD_DIR'], 'import_attachment()'), __LINE__, __FILE__); + } + + $result = _import_check('upload_path', $source, $use_target); + + if ($result['copied']) + { + // Thumbnails? + if (is_array($convert->convertor['thumbnails'])) + { + $thumb_dir = $convert->convertor['thumbnails'][0]; + $thumb_prefix = $convert->convertor['thumbnails'][1]; + $thumb_source = $thumb_dir . $thumb_prefix . basename($result['source']); + + if (strpos($thumb_source, $convert->convertor['upload_path']) !== 0) + { + $thumb_source = $convert->convertor['upload_path'] . $thumb_source; + } + $thumb_target = $config['upload_path'] . '/thumb_' . $result['target']; + + if (file_exists(relative_base($thumb_source, $result['relative_path'], __LINE__, __FILE__))) + { + copy_file($thumb_source, $thumb_target, false, false, $result['relative_path']); + } + } + } + + return $result['target']; +} + +function import_rank($source, $use_target = false) +{ + if (empty($source)) + { + return ''; + } + + global $convert, $phpbb_root_path, $config, $user; + + if (!isset($convert->convertor['ranks_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_RANKS_PATH'], 'import_rank()'), __LINE__, __FILE__); + } + + $result = _import_check('ranks_path', $source, $use_target); + return $result['target']; +} + +function import_smiley($source, $use_target = false) +{ + if (empty($source)) + { + return ''; + } + + global $convert, $phpbb_root_path, $config, $user; + + if (!isset($convert->convertor['smilies_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_SMILIES_PATH'], 'import_smiley()'), __LINE__, __FILE__); + } + + $result = _import_check('smilies_path', $source, $use_target); + return $result['target']; +} + +function import_avatar($source, $use_target = false) +{ + if (empty($source) || preg_match('#^https?:#i', $source) || preg_match('#blank\.(gif|png)$#i', $source)) + { + return; + } + + global $convert, $phpbb_root_path, $config, $user; + + if (!isset($convert->convertor['avatar_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_AVATAR_PATH'], 'import_avatar()'), __LINE__, __FILE__); + } + + $result = _import_check('avatar_path', $source, $use_target); + return $result['target']; +} + +/** +* @todo all image dimension functions below (there are a *lot*) should get revisited and converted to one or two functions (no more needed, really). +*/ + +/** +* Calculate the size of the specified image +* Called from the following functions for calculating the size of specific image types +*/ +function get_image_dim($source) +{ + if (empty($source)) + { + return array(0, 0); + } + + global $convert; + + $relative_path = empty($convert->convertor['source_path_absolute']); + + if (file_exists(relative_base($source, $relative_path))) + { + $image = relative_base($source, $relative_path); + return getimagesize($image); + } + + return false; +} + +/** +* Obtain the width of the specified smilie +*/ +function get_smiley_width($src) +{ + return get_smiley_dim($src, 0); +} + +/** +* Obtain the height of the specified smilie +*/ +function get_smiley_height($src) +{ + return get_smiley_dim($src, 1); +} + +/** +* Obtain the size of the specified smilie (using the cache if possible) and cache the value +*/ +function get_smiley_dim($source, $axis) +{ + if (empty($source)) + { + return 15; + } + + static $smiley_cache = array(); + + if (isset($smiley_cache[$source])) + { + return $smiley_cache[$source][$axis]; + } + + global $convert, $phpbb_root_path, $config, $user; + + $orig_source = $source; + + if (!isset($convert->convertor['smilies_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_SMILIES_PATH'], 'get_smiley_dim()'), __LINE__, __FILE__); + } + + if (!empty($convert->convertor['smilies_path']) && strpos($source, $convert->convertor['smilies_path']) !== 0) + { + $source = $convert->convertor['smilies_path'] . $source; + } + + $smiley_cache[$orig_source] = get_image_dim($source); + + if (empty($smiley_cache[$orig_source]) || empty($smiley_cache[$orig_source][0]) || empty($smiley_cache[$orig_source][1])) + { + $smiley_cache[$orig_source] = array(15, 15); + return 15; + } + + return $smiley_cache[$orig_source][$axis]; +} + +/** +* Obtain the width of the specified avatar +*/ +function get_avatar_width($src, $func = false, $arg1 = false, $arg2 = false) +{ + return get_avatar_dim($src, 0, $func, $arg1, $arg2); +} + +/** +* Obtain the height of the specified avatar +*/ +function get_avatar_height($src, $func = false, $arg1 = false, $arg2 = false) +{ + return get_avatar_dim($src, 1, $func, $arg1, $arg2); +} + +/** +*/ +function get_avatar_dim($src, $axis, $func = false, $arg1 = false, $arg2 = false) +{ + $avatar_type = AVATAR_UPLOAD; + + if ($func) + { + if ($arg1 || $arg2) + { + $ary = array($arg1); + + if ($arg2) + { + $ary[] = $arg2; + } + + $avatar_type = call_user_func_array($func, $ary); + } + else + { + $avatar_type = call_user_func($func); + } + } + + switch ($avatar_type) + { + case AVATAR_UPLOAD: + return get_upload_avatar_dim($src, $axis); + break; + + case AVATAR_GALLERY: + return get_gallery_avatar_dim($src, $axis); + break; + + case AVATAR_REMOTE: + // see notes on this functions usage and (hopefully) model $func to avoid this accordingly + return get_remote_avatar_dim($src, $axis); + break; + + default: + return $axis ? DEFAULT_AVATAR_Y : DEFAULT_AVATAR_X; + break; + } +} + +/** +* Obtain the size of the specified uploaded avatar (using the cache if possible) and cache the value +*/ +function get_upload_avatar_dim($source, $axis) +{ + static $cachedims = false; + static $cachekey = false; + + if (empty($source)) + { + return 0; + } + + if ($cachekey == $source) + { + return $cachedims[$axis]; + } + + $orig_source = $source; + + if (substr($source, 0, 7) == 'upload:') + { + $source = substr($source, 7); + } + + global $convert, $phpbb_root_path, $config, $user; + + if (!isset($convert->convertor['avatar_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_AVATAR_PATH'], 'get_upload_avatar_dim()'), __LINE__, __FILE__); + } + + if (!empty($convert->convertor['avatar_path']) && strpos($source, $convert->convertor['avatar_path']) !== 0) + { + $source = path($convert->convertor['avatar_path'], empty($convert->convertor['source_path_absolute'])) . $source; + } + + $cachedims = get_image_dim($source); + + if (empty($cachedims) || empty($cachedims[0]) || empty($cachedims[1])) + { + $cachedims = array(DEFAULT_AVATAR_X, DEFAULT_AVATAR_Y); + } + + return $cachedims[$axis]; +} + +/** +* Obtain the size of the specified gallery avatar (using the cache if possible) and cache the value +*/ +function get_gallery_avatar_dim($source, $axis) +{ + if (empty($source)) + { + return 0; + } + + static $avatar_cache = array(); + + if (isset($avatar_cache[$source])) + { + return $avatar_cache[$source][$axis]; + } + + global $convert, $phpbb_root_path, $config, $user; + + $orig_source = $source; + + if (!isset($convert->convertor['avatar_gallery_path'])) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_GALLERY_PATH'], 'get_gallery_avatar_dim()'), __LINE__, __FILE__); + } + + if (!empty($convert->convertor['avatar_gallery_path']) && strpos($source, $convert->convertor['avatar_gallery_path']) !== 0) + { + $source = path($convert->convertor['avatar_gallery_path'], empty($convert->convertor['source_path_absolute'])) . $source; + } + + $avatar_cache[$orig_source] = get_image_dim($source); + + if (empty($avatar_cache[$orig_source]) || empty($avatar_cache[$orig_source][0]) || empty($avatar_cache[$orig_source][1])) + { + $avatar_cache[$orig_source] = array(DEFAULT_AVATAR_X, DEFAULT_AVATAR_Y); + } + + return $avatar_cache[$orig_source][$axis]; +} + +/** +* Obtain the size of the specified remote avatar (using the cache if possible) and cache the value +* Whilst it's unlikely that remote avatars will be duplicated, it is possible so caching seems the best option +* This should only be called from a post processing step due to the possibility of network timeouts +*/ +function get_remote_avatar_dim($src,$axis) +{ + if (empty($src)) + { + return 0; + } + + static $avatar_cache = array(); + + if (isset($avatar_cache[$src])) + { + return $avatar_cache[$src][$axis]; + } + + $avatar_cache[$src] = getimagesize($src); + + if (empty($avatar_cache[$src]) || empty($avatar_cache[$src][0]) || empty($avatar_cache[$src][1])) + { + $avatar_cache[$src] = array(DEFAULT_AVATAR_X, DEFAULT_AVATAR_Y); + } + + return $avatar_cache[$src][$axis]; +} + +function set_user_options() +{ + global $convert_row; + + // Key need to be set in row, else default value is chosen + $keyoptions = array( + 'viewimg' => array('bit' => 0, 'default' => 1), + 'viewflash' => array('bit' => 1, 'default' => 1), + 'viewsmilies' => array('bit' => 2, 'default' => 1), + 'viewsigs' => array('bit' => 3, 'default' => 1), + 'viewavatars' => array('bit' => 4, 'default' => 1), + 'viewcensors' => array('bit' => 5, 'default' => 1), + 'attachsig' => array('bit' => 6, 'default' => 0), + 'bbcode' => array('bit' => 8, 'default' => 1), + 'smilies' => array('bit' => 9, 'default' => 1), + 'popuppm' => array('bit' => 10, 'default' => 0), + ); + + $option_field = 0; + + foreach ($keyoptions as $key => $key_ary) + { + $value = (isset($convert_row[$key])) ? (int) $convert_row[$key] : $key_ary['default']; + + if ($value && !($option_field & 1 << $key_ary['bit'])) + { + $option_field += 1 << $key_ary['bit']; + } + } + + return $option_field; +} + +/** +* Index messages on the fly as we convert them +* @todo naderman, can you check that this works with the new search plugins as it's use is currently disabled (and thus untested) +function search_indexing($message = '') +{ + global $fulltext_search, $convert_row; + + if (!isset($convert_row['post_id'])) + { + return; + } + + if (!$message) + { + if (!isset($convert_row['message'])) + { + return; + } + + $message = $convert_row['message']; + } + + $title = (isset($convert_row['title'])) ? $convert_row['title'] : ''; + + $fulltext_search->index('post', $convert_row['post_id'], $message, $title, $convert_row['poster_id'], $convert_row['forum_id']); +} +*/ + +function make_unique_filename($filename) +{ + if (!strlen($filename)) + { + $filename = md5(unique_id()) . '.dat'; + } + else if ($filename[0] == '.') + { + $filename = md5(unique_id()) . $filename; + } + else if (preg_match('/\.([a-z]+)$/i', $filename, $m)) + { + $filename = preg_replace('/\.([a-z]+)$/i', '_' . md5(unique_id()) . '.\1', $filename); + } + else + { + $filename .= '_' . md5(unique_id()) . '.dat'; + } + + return $filename; +} + +function words_unique(&$words) +{ + reset($words); + $return_array = array(); + + $word = current($words); + do + { + $return_array[$word] = $word; + } + while ($word = next($words)); + + return $return_array; +} + +/** +* Adds a user to the specified group and optionally makes them a group leader +* This function does not create the group if it does not exist and so should only be called after the groups have been created +*/ +function add_user_group($group_id, $user_id, $group_leader=false) +{ + global $convert, $phpbb_root_path, $config, $user, $db; + + $sql = 'INSERT INTO ' . USER_GROUP_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'group_id' => $group_id, + 'user_id' => $user_id, + 'group_leader' => ($group_leader) ? 1 : 0, + 'user_pending' => 0)); + $db->sql_query($sql); +} + +// STANDALONE FUNCTIONS + +/** +* Add users to the pre-defined "special" groups +* +* @param string $group The name of the special group to add to +* @param string $select_query An SQL query to retrieve the user(s) to add to the group +*/ +function user_group_auth($group, $select_query) +{ + global $convert, $phpbb_root_path, $config, $user, $db; + + if (!in_array($group, array('guests', 'registered', 'registered_coppa', 'global_moderators', 'administrators', 'bots'))) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_WRONG_GROUP'], $group, 'user_group_auth()'), __LINE__, __FILE__, true); + return; + } + + $sql = 'SELECT group_id + FROM ' . GROUPS_TABLE . " + WHERE group_name = '" . $db->sql_escape(strtoupper($group)) . "'"; + $result = $db->sql_query($sql); + $group_id = (int) $db->sql_fetchfield('group_id'); + $db->sql_freeresult($result); + + if (!$group_id) + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_NO_GROUP'], $group, 'user_group_auth()'), __LINE__, __FILE__, true); + return; + } + + $sql = 'INSERT INTO ' . USER_GROUP_TABLE . ' (user_id, group_id, user_pending) + ' . str_replace('{' . strtoupper($group) . '}', $group_id . ', 0', $select_query); + $db->sql_query($sql); +} + +/** +* Retrieves configuration information from the source forum and caches it as an array +* Both database and file driven configuration formats can be handled +* (the type used is specified in $config_schema, see convert_phpbb20.php for more details) +*/ +function get_config() +{ + static $convert_config; + global $user; + + if (isset($convert_config)) + { + return $convert_config; + } + + global $db, $phpbb_root_path, $config; + global $convert; + + if ($convert->config_schema['table_format'] != 'file') + { + $sql = 'SELECT * FROM ' . $convert->src_table_prefix . $convert->config_schema['table_name']; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + + if (!$row) + { + $convert->p_master->error($user->lang['CONV_ERROR_GET_CONFIG'], __LINE__, __FILE__); + } + } + + if (is_array($convert->config_schema['table_format'])) + { + $convert_config = array(); + list($key, $val) = each($convert->config_schema['table_format']); + + do + { + $convert_config[$row[$key]] = $row[$val]; + } + while ($row = $db->sql_fetchrow($result)); + $db->sql_freeresult($result); + } + else if ($convert->config_schema['table_format'] == 'file') + { + $filename = $convert->options['forum_path'] . '/' . $convert->config_schema['filename']; + if (!file_exists($filename)) + { + $convert->p_master->error($user->lang['FILE_NOT_FOUND'] . ': ' . $filename, __LINE__, __FILE__); + } + + $convert_config = extract_variables_from_file($filename); + if (!empty($convert->config_schema['array_name'])) + { + $convert_config = $convert_config[$convert->config_schema['array_name']]; + } + } + else + { + $convert_config = $row; + } + + if (!sizeof($convert_config)) + { + $convert->p_master->error($lang['CONV_ERROR_CONFIG_EMPTY'], __LINE__, __FILE__); + } + + return $convert_config; +} + +/** +* Transfers the relevant configuration information from the source forum +* The mapping of fields is specified in $config_schema, see convert_phpbb20.php for more details +*/ +function restore_config($schema) +{ + global $db, $config; + + $convert_config = get_config(); + foreach ($schema['settings'] as $config_name => $src) + { + if (preg_match('/(.*)\((.*)\)/', $src, $m)) + { + $var = (empty($m[2])) ? '' : "'" . addslashes($convert_config[$m[2]]) . "'"; + $exec = '$config_value = ' . $m[1] . '(' . $var . ');'; + eval($exec); + } + else + { + $config_value = (isset($convert_config[$src])) ? $convert_config[$src] : ''; + } + + if ($config_value !== '') + { + // Most are... + if (is_string($config_value)) + { + $config_value = utf8_htmlspecialchars($config_value); + } + + set_config($config_name, $config_value); + } + } +} + +/** +* Update the count of PM's in custom folders for all users +*/ +function update_folder_pm_count() +{ + global $db, $convert, $user; + + $sql = 'SELECT user_id, folder_id, COUNT(msg_id) as num_messages + FROM ' . PRIVMSGS_TO_TABLE . ' + WHERE folder_id NOT IN (' . PRIVMSGS_NO_BOX . ', ' . PRIVMSGS_HOLD_BOX . ', ' . PRIVMSGS_INBOX . ', ' . PRIVMSGS_OUTBOX . ', ' . PRIVMSGS_SENTBOX . ') + GROUP BY folder_id'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $db->sql_query('UPDATE ' . PRIVMSGS_FOLDER_TABLE . ' SET pm_count = ' . $row['num_messages'] . ' + WHERE user_id = ' . $row['user_id'] . ' AND folder_id = ' . $row['folder_id']); + } + $db->sql_freeresult($result); +} + +// Functions mainly used by the main convertor script + +function path($path, $path_relative = true) +{ + if (substr($path, -1) != '/') + { + $path .= '/'; + } + + if (!$path_relative) + { + return $path; + } + + if (substr($path, 0, 1) == '/') + { + $path = substr($path, 1); + } + + return $path; +} + +/** +* Extract the variables defined in a configuration file +* @todo As noted by Xore we need to look at this from a security perspective +*/ +function extract_variables_from_file($_filename) +{ + include($_filename); + + $vars = get_defined_vars(); + unset($vars['_filename']); + + return $vars; +} + +function get_path($src_path, $src_url, $test_file) +{ + global $config, $phpbb_root_path, $phpEx; + + $board_config = get_config(); + + $test_file = preg_replace('/\.php$/i', ".$phpEx", $test_file); + $src_path = path($src_path); + + if (@file_exists($phpbb_root_path . $src_path . $test_file)) + { + return $src_path; + } + + if (!empty($src_url) && !empty($board_config['server_name'])) + { + if (!preg_match('#https?://([^/]+)(.*)#i', $src_url, $m)) + { + return false; + } + + if ($m[1] != $board_config['server_name']) + { + return false; + } + + $url_parts = explode('/', $m[2]); + if (substr($src_url, -1) != '/') + { + if (preg_match('/.*\.([a-z0-9]{3,4})$/i', $url_parts[count($url_parts) - 1])) + { + $url_parts[sizeof($url_parts) - 1] = ''; + } + else + { + $url_parts[] = ''; + } + } + + $script_path = $board_config['script_path']; + if (substr($script_path, -1) == '/') + { + $script_path = substr($script_path, 0, -1); + } + + $path_array = array(); + + $phpbb_parts = explode('/', $script_path); + for ($i = 0; $i < sizeof($url_parts); ++$i) + { + if ($i < sizeof($phpbb_parts[$i]) && $url_parts[$i] == $phpbb_parts[$i]) + { + $path_array[] = $url_parts[$i]; + unset($url_parts[$i]); + } + else + { + $path = ''; + for ($j = $i; $j < sizeof($phpbb_parts); ++$j) + { + $path .= '../'; + } + $path .= implode('/', $url_parts); + break; + } + } + + if (!empty($path)) + { + if (@file_exists($phpbb_root_path . $path . $test_file)) + { + return $path; + } + } + } + + return false; +} + +function compare_table($tables, $tablename, &$prefixes) +{ + for ($i = 0; $i < sizeof($tables); ++$i) + { + if (preg_match('/(.*)' . $tables[$i] . '$/', $tablename, $m)) + { + if (empty($m[1])) + { + $m[1] = '*'; + } + + if (isset($prefixes[$m[1]])) + { + $prefixes[$m[1]]++; + } + else + { + $prefixes[$m[1]] = 1; + } + } + } +} + +/** +* Grant permissions to a specified user or group +* +* @param string $ug_type user|group|user_role|group_role +* @param mixed $forum_id forum ids (array|int|0) -> 0 == all forums +* @param mixed $ug_id [int] user_id|group_id : [string] usergroup name +* @param mixed $acl_list [string] acl entry : [array] acl entries : [string] role entry +* @param int $setting ACL_YES|ACL_NO|ACL_NEVER +*/ +function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting = ACL_NO) +{ + global $db, $convert, $user, $config; + static $acl_option_ids, $group_ids; + + if (($ug_type == 'group' || $ug_type == 'group_role') && is_string($ug_id)) + { + if (!isset($group_ids[$ug_id])) + { + $sql = 'SELECT group_id + FROM ' . GROUPS_TABLE . " + WHERE group_name = '" . $db->sql_escape(strtoupper($ug_id)) . "'"; + $result = $db->sql_query_limit($sql, 1); + $id = (int) $db->sql_fetchfield('group_id'); + $db->sql_freeresult($result); + + if (!$id) + { + return; + } + + $group_ids[$ug_id] = $id; + } + + $ug_id = (int) $group_ids[$ug_id]; + } + + $table = ($ug_type == 'user' || $ug_type == 'user_role') ? ACL_USERS_TABLE : ACL_GROUPS_TABLE; + $id_field = ($ug_type == 'user' || $ug_type == 'user_role') ? 'user_id' : 'group_id'; + + // Role based permissions are the simplest to handle so check for them first + if ($ug_type == 'user_role' || $ug_type == 'group_role') + { + $sql = 'SELECT role_id + FROM ' . ACL_ROLES_TABLE . " + WHERE role_description = 'ROLE_DESCRIPTION_" . $db->sql_escape($acl_list) . "'"; + $result = $db->sql_query_limit($sql, 1); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + // If we have no role id there is something wrong here + if ($row) + { + $sql = "INSERT INTO $table ($id_field, forum_id, auth_role_id) VALUES ($ug_id, $forum_id, " . $row['role_id'] . ')'; + $db->sql_query($sql); + } + + return; + } + + // Build correct parameters + $auth = array(); + + if (!is_array($acl_list)) + { + $auth = array($acl_list => $setting); + } + else + { + foreach ($acl_list as $auth_option) + { + $auth[$auth_option] = $setting; + } + } + unset($acl_list); + + if (!is_array($forum_id)) + { + $forum_id = array($forum_id); + } + + // Set any flags as required + foreach ($auth as $auth_option => $acl_setting) + { + $flag = substr($auth_option, 0, strpos($auth_option, '_') + 1); + if (empty($auth[$flag])) + { + $auth[$flag] = $acl_setting; + } + } + + if (!is_array($acl_option_ids) || empty($acl_option_ids)) + { + $sql = 'SELECT auth_option_id, auth_option + FROM ' . ACL_OPTIONS_TABLE; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $acl_option_ids[$row['auth_option']] = $row['auth_option_id']; + } + $db->sql_freeresult($result); + } + + $sql_forum = 'AND a.forum_id IN (' . implode(', ', array_map('intval', $forum_id)) . ')'; + + $sql = ($ug_type == 'user') ? 'SELECT o.auth_option_id, o.auth_option, a.forum_id, a.auth_setting FROM ' . ACL_USERS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . " o WHERE a.auth_option_id = o.auth_option_id $sql_forum AND a.user_id = $ug_id" : 'SELECT o.auth_option_id, o.auth_option, a.forum_id, a.auth_setting FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . " o WHERE a.auth_option_id = o.auth_option_id $sql_forum AND a.group_id = $ug_id"; + $result = $db->sql_query($sql); + + $cur_auth = array(); + while ($row = $db->sql_fetchrow($result)) + { + $cur_auth[$row['forum_id']][$row['auth_option_id']] = $row['auth_setting']; + } + $db->sql_freeresult($result); + + $sql_ary = array(); + foreach ($forum_id as $forum) + { + foreach ($auth as $auth_option => $setting) + { + $auth_option_id = $acl_option_ids[$auth_option]; + + if (!$auth_option_id) + { + continue; + } + + switch ($setting) + { + case ACL_NO: + if (isset($cur_auth[$forum][$auth_option_id])) + { + $sql_ary['delete'][] = "DELETE FROM $table + WHERE forum_id = $forum + AND auth_option_id = $auth_option_id + AND $id_field = $ug_id"; + } + break; + + default: + if (!isset($cur_auth[$forum][$auth_option_id])) + { + $sql_ary['insert'][] = "$ug_id, $forum, $auth_option_id, $setting"; + } + else if ($cur_auth[$forum][$auth_option_id] != $setting) + { + $sql_ary['update'][] = "UPDATE " . $table . " + SET auth_setting = $setting + WHERE $id_field = $ug_id + AND forum_id = $forum + AND auth_option_id = $auth_option_id"; + } + } + } + } + unset($cur_auth); + + $sql = ''; + foreach ($sql_ary as $sql_type => $sql_subary) + { + switch ($sql_type) + { + case 'insert': + switch ($db->sql_layer) + { + case 'mysql': + case 'mysql4': + $sql = 'VALUES ' . implode(', ', preg_replace('#^(.*?)$#', '(\1)', $sql_subary)); + break; + + case 'mssql': + case 'sqlite': + $sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary)); + break; + + default: + foreach ($sql_subary as $sql) + { + $sql = "INSERT INTO $table ($id_field, forum_id, auth_option_id, auth_setting) VALUES ($sql)"; + $db->sql_query($sql); + $sql = ''; + } + } + + if ($sql != '') + { + $sql = "INSERT INTO $table ($id_field, forum_id, auth_option_id, auth_setting) $sql"; + $db->sql_query($sql); + } + break; + + case 'update': + case 'delete': + foreach ($sql_subary as $sql) + { + $db->sql_query($sql); + $sql = ''; + } + break; + } + unset($sql_ary[$sql_type]); + } + unset($sql_ary); + +} + +/** +* Update the count of unread private messages for all users +*/ +function update_unread_count() +{ + global $db; + + $sql = 'SELECT user_id, COUNT(msg_id) as num_messages + FROM ' . PRIVMSGS_TO_TABLE . ' + WHERE pm_unread = 1 + AND folder_id <> ' . PRIVMSGS_OUTBOX . ' + GROUP BY user_id'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_unread_privmsg = ' . $row['num_messages'] . ' + WHERE user_id = ' . $row['user_id']); + } + $db->sql_freeresult($result); +} + +/** +* Add any of the pre-defined "special" groups which are missing from the database +*/ +function add_default_groups() +{ + global $db; + + $default_groups = array( + 'GUESTS' => array('', 0), + 'REGISTERED' => array('', 0), + 'REGISTERED_COPPA' => array('', 0), + 'GLOBAL_MODERATORS' => array('00AA00', 1), + 'ADMINISTRATORS' => array('AA0000', 1), + 'BOTS' => array('9E8DA7', 0) + ); + + $sql = 'SELECT * + FROM ' . GROUPS_TABLE . " + WHERE group_name IN ('" . implode("', '", array_keys($default_groups)) . "')"; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + unset($default_groups[strtoupper($row['group_name'])]); + } + $db->sql_freeresult($result); + + $sql_ary = array(); + + foreach ($default_groups as $name => $data) + { + $sql_ary[] = array( + 'group_name' => (string) $name, + 'group_desc' => '', + 'group_desc_uid' => '', + 'group_desc_bitfield' => '', + 'group_type' => GROUP_SPECIAL, + 'group_colour' => $data[0], + 'group_legend' => $data[1], + ); + } + + if (sizeof($sql_ary)) + { + $db->sql_multi_insert(GROUPS_TABLE, $sql_ary); + } +} + +/** +* Add the search bots into the database +* This code should be used in execute_last if the source database did not have bots +* If you are converting bots this function should not be called +* @todo We might want to look at sharing the bot list between the install code and this code for consistancy +*/ +function add_bots() +{ + global $db, $convert, $user, $config, $phpbb_root_path, $phpEx; + + $db->sql_query($convert->truncate_statement . BOTS_TABLE); + + $sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name = 'BOTS'"; + $result = $db->sql_query($sql); + $group_id = (int) $db->sql_fetchfield('group_id', 0, $result); + $db->sql_freeresult($result); + + if (!$group_id) + { + add_default_groups(); + + $sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name = 'BOTS'"; + $result = $db->sql_query($sql); + $group_id = (int) $db->sql_fetchfield('group_id', 0, $result); + $db->sql_freeresult($result); + + if (!$group_id) + { + $install->error($user->lang['CONV_ERROR_INCONSISTENT_GROUPS'], __LINE__, __FILE__); + } + } + + $bots = array( + 'AdsBot [Google]' => array('AdsBot-Google', ''), + 'Alexa [Bot]' => array('ia_archiver', ''), + 'Alta Vista [Bot]' => array('Scooter/', ''), + 'Ask Jeeves [Bot]' => array('Ask Jeeves', ''), + 'Baidu [Spider]' => array('Baiduspider+(', ''), + 'Exabot [Bot]' => array('Exabot/', ''), + 'FAST Enterprise [Crawler]' => array('FAST Enterprise Crawler', ''), + 'FAST WebCrawler [Crawler]' => array('FAST-WebCrawler/', ''), + 'Francis [Bot]' => array('http://www.neomo.de/', ''), + 'Gigabot [Bot]' => array('Gigabot/', ''), + 'Google Adsense [Bot]' => array('Mediapartners-Google/', ''), + 'Google Desktop' => array('Google Desktop', ''), + 'Google Feedfetcher' => array('Feedfetcher-Google', ''), + 'Google [Bot]' => array('Googlebot', ''), + 'Heise IT-Markt [Crawler]' => array('heise-IT-Markt-Crawler', ''), + 'Heritrix [Crawler]' => array('heritrix/1.', ''), + 'IBM Research [Bot]' => array('ibm.com/cs/crawler', ''), + 'ICCrawler - ICjobs' => array('ICCrawler - ICjobs', ''), + 'ichiro [Crawler]' => array('ichiro/2', ''), + 'Majestic-12 [Bot]' => array('MJ12bot/', ''), + 'Metager [Bot]' => array('MetagerBot/', ''), + 'MSN NewsBlogs' => array('msnbot-NewsBlogs/', ''), + 'MSN [Bot]' => array('msnbot/', ''), + 'MSNbot Media' => array('msnbot-media/', ''), + 'NG-Search [Bot]' => array('NG-Search/', ''), + 'Nutch [Bot]' => array('http://lucene.apache.org/nutch/', ''), + 'Nutch/CVS [Bot]' => array('NutchCVS/', ''), + 'OmniExplorer [Bot]' => array('OmniExplorer_Bot/', ''), + 'Online link [Validator]' => array('online link validator', ''), + 'psbot [Picsearch]' => array('psbot/0', ''), + 'Seekport [Bot]' => array('Seekbot/', ''), + 'Sensis [Crawler]' => array('Sensis Web Crawler', ''), + 'SEO Crawler' => array('SEO search Crawler/', ''), + 'Seoma [Crawler]' => array('Seoma [SEO Crawler]', ''), + 'SEOSearch [Crawler]' => array('SEOsearch/', ''), + 'Snappy [Bot]' => array('Snappy/1.1 ( http://www.urltrends.com/ )', ''), + 'Steeler [Crawler]' => array('http://www.tkl.iis.u-tokyo.ac.jp/~crawler/', ''), + 'Synoo [Bot]' => array('SynooBot/', ''), + 'Telekom [Bot]' => array('crawleradmin.t-info@telekom.de', ''), + 'TurnitinBot [Bot]' => array('TurnitinBot/', ''), + 'Voyager [Bot]' => array('voyager/1.0', ''), + 'W3 [Sitesearch]' => array('W3 SiteSearch Crawler', ''), + 'W3C [Linkcheck]' => array('W3C-checklink/', ''), + 'W3C [Validator]' => array('W3C_*Validator', ''), + 'WiseNut [Bot]' => array('http://www.WISEnutbot.com', ''), + 'Yacy [Bot]' => array('yacybot', ''), + 'Yahoo MMCrawler [Bot]' => array('Yahoo-MMCrawler/', ''), + 'Yahoo Slurp [Bot]' => array('Yahoo! DE Slurp', ''), + 'Yahoo [Bot]' => array('Yahoo! Slurp', ''), + 'YahooSeeker [Bot]' => array('YahooSeeker/', ''), + ); + + if (!function_exists('user_add')) + { + include($phpbb_root_path . 'includes/functions_user.' . $phpEx); + } + + foreach ($bots as $bot_name => $bot_ary) + { + $user_row = array( + 'user_type' => USER_IGNORE, + 'group_id' => $group_id, + 'username' => $bot_name, + 'user_regdate' => time(), + 'user_password' => '', + 'user_colour' => '9E8DA7', + 'user_email' => '', + 'user_lang' => $config['default_lang'], + 'user_style' => 1, + 'user_timezone' => 0, + 'user_allow_massemail' => 0, + ); + + $user_id = user_add($user_row); + + if ($user_id) + { + $sql = 'INSERT INTO ' . BOTS_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'bot_active' => 1, + 'bot_name' => $bot_name, + 'user_id' => $user_id, + 'bot_agent' => $bot_ary[0], + 'bot_ip' => $bot_ary[1]) + ); + $db->sql_query($sql); + } + } +} + +/** +* Update any dynamic configuration variables after the conversion is finished +* @todo Confirm that this updates all relevant values since it has not necessarily been kept in sync with all changes +*/ +function update_dynamic_config() +{ + global $db, $config; + + // Get latest username + $sql = 'SELECT user_id, username, user_colour + FROM ' . USERS_TABLE . ' + WHERE user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') + ORDER BY user_id DESC'; + $result = $db->sql_query_limit($sql, 1); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if ($row) + { + set_config('newest_user_id', $row['user_id'], true); + set_config('newest_username', $row['username'], true); + set_config('newest_user_colour', $row['user_colour'], true); + } + + set_config('record_online_users', 1, true); + set_config('record_online_date', time(), true); + + $sql = 'SELECT COUNT(post_id) AS stat + FROM ' . POSTS_TABLE . ' + WHERE post_approved = 1'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + set_config('num_posts', (int) $row['stat'], true); + + $sql = 'SELECT COUNT(topic_id) AS stat + FROM ' . TOPICS_TABLE . ' + WHERE topic_approved = 1'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + set_config('num_topics', (int) $row['stat'], true); + + $sql = 'SELECT COUNT(user_id) AS stat + FROM ' . USERS_TABLE . ' + WHERE user_type IN (' . USER_NORMAL . ',' . USER_FOUNDER . ')'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + set_config('num_users', (int) $row['stat'], true); + + $sql = 'SELECT COUNT(attach_id) as stat + FROM ' . ATTACHMENTS_TABLE . ' + WHERE is_orphan = 0'; + $result = $db->sql_query($sql); + set_config('num_files', (int) $db->sql_fetchfield('stat'), true); + $db->sql_freeresult($result); + + $sql = 'SELECT SUM(filesize) as stat + FROM ' . ATTACHMENTS_TABLE . ' + WHERE is_orphan = 0'; + $result = $db->sql_query($sql); + set_config('upload_dir_size', (int) $db->sql_fetchfield('stat'), true); + $db->sql_freeresult($result); + + $sql = 'SELECT COUNT(post_id) AS num_posts, poster_id + FROM ' . POSTS_TABLE . ' + WHERE post_postcount = 1 + GROUP BY poster_id'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $db->sql_query('UPDATE ' . USERS_TABLE . " SET user_posts = {$row['num_posts']} WHERE user_id = {$row['poster_id']}"); + } + $db->sql_freeresult($result); +} + +/** +* Updates topics_posted entries +*/ +function update_topics_posted() +{ + global $db, $config; + + $db->sql_query((($db->sql_layer != 'sqlite') ? 'TRUNCATE TABLE ' : 'DELETE FROM ') . TOPICS_POSTED_TABLE); + + // This can get really nasty... therefore we only do the last six months + $get_from_time = time() - (6 * 4 * 7 * 24 * 60 * 60); + + // Select forum ids, do not include categories + $sql = 'SELECT forum_id + FROM ' . FORUMS_TABLE . ' + WHERE forum_type <> ' . FORUM_CAT; + $result = $db->sql_query($sql); + + $forum_ids = array(); + while ($row = $db->sql_fetchrow($result)) + { + $forum_ids[] = $row['forum_id']; + } + $db->sql_freeresult($result); + + // Any global announcements? ;) + $forum_ids[] = 0; + + // Now go through the forums and get us some topics... + foreach ($forum_ids as $forum_id) + { + $sql = 'SELECT p.poster_id, p.topic_id + FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t + WHERE t.forum_id = ' . $forum_id . ' + AND t.topic_moved_id = 0 + AND t.topic_last_post_time > ' . $get_from_time . ' + AND t.topic_id = p.topic_id + AND p.poster_id <> ' . ANONYMOUS . ' + GROUP BY p.poster_id, p.topic_id'; + $result = $db->sql_query($sql); + + $posted = array(); + while ($row = $db->sql_fetchrow($result)) + { + $posted[$row['poster_id']][] = $row['topic_id']; + } + $db->sql_freeresult($result); + + $sql_ary = array(); + foreach ($posted as $user_id => $topic_row) + { + foreach ($topic_row as $topic_id) + { + $sql_ary[] = array( + 'user_id' => $user_id, + 'topic_id' => $topic_id, + 'topic_posted' => 1, + ); + } + } + unset($posted); + + $db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary); + } +} + +/** +* Ensure that all users have a default group specified and update related information such as their colour +*/ +function fix_empty_primary_groups() +{ + global $db; + + // Set group ids for users not already having it + $sql = 'UPDATE ' . USERS_TABLE . ' SET group_id = ' . get_group_id('registered') . ' + WHERE group_id = 0 AND user_type = ' . USER_INACTIVE; + $db->sql_query($sql); + + $sql = 'UPDATE ' . USERS_TABLE . ' SET group_id = ' . get_group_id('registered') . ' + WHERE group_id = 0 AND user_type = ' . USER_NORMAL; + $db->sql_query($sql); + + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET group_id = ' . get_group_id('guests') . ' WHERE user_id = ' . ANONYMOUS); + + $sql = 'SELECT ban_userid as user_id FROM ' . BANLIST_TABLE . ' WHERE ban_userid > 0'; + $result = $db->sql_query($sql); + + $user_ids = array(); + while ($row = $db->sql_fetchrow($result)) + { + $user_ids[] = $row['user_id']; + } + $db->sql_freeresult($result); + + if (sizeof($user_ids)) + { + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_type = ' . USER_IGNORE . ' + WHERE user_id IN (' . implode(',', $user_ids) . ')'); + } + + $sql = 'SELECT user_id FROM ' . USER_GROUP_TABLE . ' WHERE group_id = ' . get_group_id('administrators'); + $result = $db->sql_query($sql); + + $user_ids = array(); + while ($row = $db->sql_fetchrow($result)) + { + $user_ids[] = $row['user_id']; + } + $db->sql_freeresult($result); + + if (sizeof($user_ids)) + { + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET group_id = ' . get_group_id('administrators') . ' + WHERE group_id = 0 AND user_id IN (' . implode(', ', $user_ids) . ')'); + } + + $sql = 'SELECT user_id FROM ' . USER_GROUP_TABLE . ' WHERE group_id = ' . get_group_id('global_moderators'); + + $user_ids = array(); + while ($row = $db->sql_fetchrow($result)) + { + $user_ids[] = $row['user_id']; + } + $db->sql_freeresult($result); + + if (sizeof($user_ids)) + { + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET group_id = ' . get_group_id('global_moderators') . ' + WHERE group_id = 0 AND user_id IN (' . implode(', ', $user_ids) . ')'); + } + + // Set user colour + $sql = 'SELECT group_id, group_colour FROM ' . GROUPS_TABLE . " + WHERE group_colour <> ''"; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $db->sql_query('UPDATE ' . USERS_TABLE . " SET user_colour = '{$row['group_colour']}' WHERE group_id = {$row['group_id']}"); + } + $db->sql_freeresult($result); +} + +function convert_bbcode($message, $convert_size = true, $extended_bbcodes = false) +{ + static $orig, $repl, $origx, $replx, $str_from, $str_to; + + if (empty($orig)) + { + $orig = $repl = array(); + + $orig[] = '#\[(php|sql)\](.*?)\[/(php|sql)\]#is'; + $repl[] = '[code]\2[/code]'; + + $orig[] = '#\[font=[^\]]+\](.*?)\[/font\]#is'; + $repl[] = '\1'; + + $orig[] = '#\[align=[a-z]+\](.*?)\[/align\]#is'; + $repl[] = '\1'; + + $orig[] = '#\[/list=.*?\]#is'; + $repl[] = '[/list]'; + + $origx = array( + '#\[glow[^\]]+\](.*?)\[/glow\]#is', + '#\[shadow[^\]]+\](.*?)\[/shadow\]#is', + '#\[flash[^\]]+\](.*?)\[/flash\]#is' + ); + + $replx = array( + '\1', + '\1', + '[url=\1]Flash[/url]' + ); + + $str_from = array( + '[ftp]', '[/ftp]', + '[ftp=', '[/ftp]', + '[pre]', '[/pre]', + '[table]', '[/table]', + '[td]', '[/td]', + '[tr]', '[/tr]', + '[s]', '[/s]', + '[left]', '[/left]', + '[right]', '[/right]', + '[center]', '[/center]', + '[sub]', '[/sub]', + '[sup]', '[/sup]', + '[tt]', '[/tt]', + '[move]', '[/move]', + '[hr]' + ); + + $str_to = array( + '[url]', '[/url]', + '[url=', '[/url]', + '[code]', '[/code]', + "\n", '', + '', '', + "\n", '', + '', '', + '', '', + '', '', + '', '', + '', '', + '', '', + '', '', + '', '', + "\n\n" + ); + + for ($i = 0; $i < sizeof($str_from); ++$i) + { + $origx[] = '#\\' . str_replace(']', '\\]', $str_from[$i]) . '#is'; + $replx[] = $str_to[$i]; + } + } + + if (preg_match_all('#\[email=([^\]]+)\](.*?)\[/email\]#i', $message, $m)) + { + for ($i = 0; $i < sizeof($m[1]); ++$i) + { + if ($m[1][$i] == $m[2][$i]) + { + $message = str_replace($m[0][$i], '[email]' . $m[1][$i] . '[/email]', $message); + } + else + { + $message = str_replace($m[0][$i], $m[2][$i] . ' ([email]' . $m[1][$i] . '[/email])', $message); + } + } + } + + if ($convert_size && preg_match('#\[size=[0-9]+\].*?\[/size\]#i', $message)) + { + $size = array(9, 9, 12, 15, 18, 24, 29, 29, 29, 29); + $message = preg_replace('#\[size=([0-9]+)\](.*?)\[/size\]#i', '[size=\1]\2[/size]', $message); + $message = preg_replace('#\[size=[0-9]{2,}\](.*?)\[/size\]#i', '[size=29]\1[/size]', $message); + + for ($i = sizeof($size); $i; ) + { + $i--; + $message = str_replace('[size=' . $i . ']', '[size=' . $size[$i] . ']', $message); + } + } + + if ($extended_bbcodes) + { + $message = preg_replace($origx, $replx, $message); + } + + $message = preg_replace($orig, $repl, $message); + return $message; +} + + +function copy_file($src, $trg, $overwrite = false, $die_on_failure = true, $source_relative_path = true) +{ + global $convert, $phpbb_root_path, $config, $user, $db; + + if (substr($trg, -1) == '/') + { + $trg .= basename($src); + } + $src_path = relative_base($src, $source_relative_path, __LINE__, __FILE__); + $trg_path = $trg; + + if (!$overwrite && @file_exists($trg_path)) + { + return true; + } + + if (!@file_exists($src_path)) + { + return; + } + + $path = $phpbb_root_path; + $parts = explode('/', $trg); + unset($parts[sizeof($parts) - 1]); + + for ($i = 0; $i < sizeof($parts); ++$i) + { + $path .= $parts[$i] . '/'; + + if (!is_dir($path)) + { + @mkdir($path, 0777); + } + } + + if (!is_writable($path)) + { + @chmod($path, 0777); + } + + if (!@copy($src_path, $phpbb_root_path . $trg_path)) + { + $convert->p_master->error(sprintf($user->lang['COULD_NOT_COPY'], $src_path, $phpbb_root_path . $trg), __LINE__, __FILE__, !$die_on_failure); + return; + } + + if ($perm = @fileperms($src_path)) + { + @chmod($phpbb_root_path . $trg_path, $perm); + } + + return true; +} + +function copy_dir($src, $trg, $copy_subdirs = true, $overwrite = false, $die_on_failure = true, $source_relative_path = true) +{ + global $convert, $phpbb_root_path, $config, $user, $db; + + $dirlist = $filelist = $bad_dirs = array(); + $src = path($src, $source_relative_path); + $trg = path($trg); + $src_path = relative_base($src, $source_relative_path, __LINE__, __FILE__); + $trg_path = $phpbb_root_path . $trg; + + if (!is_dir($trg_path)) + { + @mkdir($trg_path, 0777); + @chmod($trg_path, 0777); + } + + if (!is_writeable($trg_path)) + { + $bad_dirs[] = path($config['script_path']) . $trg; + } + + if ($handle = @opendir($src_path)) + { + while ($entry = readdir($handle)) + { + if ($entry[0] == '.' || $entry == 'CVS' || $entry == 'index.htm') + { + continue; + } + + if (is_dir($src_path . $entry)) + { + $dirlist[] = $entry; + } + else + { + $filelist[] = $entry; + } + } + closedir($handle); + } + else if ($dir = @dir($src_path)) + { + while ($entry = $dir->read()) + { + if ($entry[0] == '.' || $entry == 'CVS' || $entry == 'index.htm') + { + continue; + } + + if (is_dir($src_path . $entry)) + { + $dirlist[] = $entry; + } + else + { + $filelist[] = $entry; + } + } + $dir->close(); + } + else + { + $convert->p_master->error(sprintf($user->lang['CONV_ERROR_COULD_NOT_READ'], relative_base($src, $source_relative_path)), __LINE__, __FILE__); + } + + if ($copy_subdirs) + { + for ($i = 0; $i < sizeof($dirlist); ++$i) + { + $dir = $dirlist[$i]; + + if ($dir == 'CVS') + { + continue; + } + + if (!is_dir($trg_path . $dir)) + { + @mkdir($trg_path . $dir, 0777); + @chmod($trg_path . $dir, 0777); + } + + if (!is_writeable($trg_path . $dir)) + { + $bad_dirs[] = $trg . $dir; + $bad_dirs[] = $trg_path . $dir; + } + + if (!sizeof($bad_dirs)) + { + copy_dir($src . $dir, $trg . $dir, true, $overwrite, $die_on_failure, $source_relative_path); + } + } + } + + if (sizeof($bad_dirs)) + { + $str = (sizeof($bad_dirs) == 1) ? $user->lang['MAKE_FOLDER_WRITABLE'] : $user->lang['MAKE_FOLDERS_WRITABLE']; + sort($bad_dirs); + $convert->p_master->error(sprintf($str, implode('<br />', $bad_dirs)), __LINE__, __FILE__); + } + + for ($i = 0; $i < sizeof($filelist); ++$i) + { + copy_file($src . $filelist[$i], $trg . $filelist[$i], $overwrite, $die_on_failure, $source_relative_path); + } +} + +function relative_base($path, $is_relative = true, $line = false, $file = false) +{ + global $convert, $phpbb_root_path, $config, $user, $db; + + if (!$is_relative) + { + return $path; + } + + if (empty($convert->options['forum_path']) && $is_relative) + { + $line = $line ? $line : __LINE__; + $file = $file ? $file : __FILE__; + + $convert->p_master->error($user->lang['CONV_ERROR_NO_FORUM_PATH'], $line, $file); + } + + return $convert->options['forum_path'] . '/' . $path; +} + +?>
\ No newline at end of file diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 663b6bfe19..e62bf674e6 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -47,7 +47,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod $show_active = (isset($root_data['forum_flags']) && ($root_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS)) ? true : false; $sql_from = FORUMS_TABLE . ' f '; - $lastread_select = $sql_lastread = ''; + $lastread_select = ''; if ($config['load_db_lastread'] && $user->data['is_registered']) { @@ -149,7 +149,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod { if ($row['forum_type'] != FORUM_CAT) { - $forum_ids_moderator[] = $forum_id; + $forum_ids_moderator[] = (int) $forum_id; } // Direct child of current branch @@ -504,24 +504,27 @@ function topic_generate_pagination($replies, $url) { global $config, $user; - if (($replies + 1) > $config['posts_per_page']) + // Make sure $per_page is a valid value + $per_page = ($config['posts_per_page'] <= 0) ? 1 : $config['posts_per_page']; + + if (($replies + 1) > $per_page) { - $total_pages = ceil(($replies + 1) / $config['posts_per_page']); + $total_pages = ceil(($replies + 1) / $per_page); $pagination = ''; $times = 1; - for ($j = 0; $j < $replies + 1; $j += $config['posts_per_page']) + for ($j = 0; $j < $replies + 1; $j += $per_page) { $pagination .= '<a href="' . $url . '&start=' . $j . '">' . $times . '</a>'; if ($times == 1 && $total_pages > 4) { $pagination .= ' ... '; $times = $total_pages - 3; - $j += ($total_pages - 4) * $config['posts_per_page']; + $j += ($total_pages - 4) * $per_page; } else if ($times < $total_pages) { - $pagination .= $user->theme['pagination_sep']; + $pagination .= '<span class="page-sep">' . $user->lang['COMMA_SEPARATOR'] . '</span>'; } $times++; } @@ -563,18 +566,43 @@ function get_moderators(&$forum_moderators, $forum_id = false) return; } - $forum_sql = 'AND ' . $db->sql_in_set('forum_id', $forum_id); + $forum_sql = 'AND m.' . $db->sql_in_set('forum_id', $forum_id); } - $sql = 'SELECT * - FROM ' . MODERATOR_CACHE_TABLE . " - WHERE display_on_index = 1 - $forum_sql"; + $sql_array = array( + 'SELECT' => 'm.*, u.user_colour, g.group_colour, g.group_type', + + 'FROM' => array( + MODERATOR_CACHE_TABLE => 'm', + ), + + 'LEFT_JOIN' => array( + array( + 'FROM' => array(USERS_TABLE => 'u'), + 'ON' => 'm.user_id = u.user_id', + ), + array( + 'FROM' => array(GROUPS_TABLE => 'g'), + 'ON' => 'm.group_id = g.group_id', + ), + ), + + 'WHERE' => "m.display_on_index = 1 $forum_sql", + ); + + $sql = $db->sql_build_query('SELECT', $sql_array); $result = $db->sql_query($sql, 3600); while ($row = $db->sql_fetchrow($result)) { - $forum_moderators[$row['forum_id']][] = (!empty($row['user_id'])) ? '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']) . '">' . $row['username'] . '</a>' : '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']) . '">' . $row['group_name'] . '</a>'; + if (!empty($row['user_id'])) + { + $forum_moderators[$row['forum_id']][] = get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']); + } + else + { + $forum_moderators[$row['forum_id']][] = '<a' . (($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . ';font-weight:bold;"' : '') . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']) . '">' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</a>'; + } } $db->sql_freeresult($result); @@ -682,280 +710,10 @@ function topic_status(&$topic_row, $replies, $unread_topic, &$folder_img, &$fold } } - if ($topic_row['poll_start']) - { - $topic_type .= $user->lang['VIEW_TOPIC_POLL']; - } -} - -/** -* Display Attachments -*/ -function display_attachments($forum_id, $blockname, &$attachment_data, &$update_count, $force_physical = false, $return = false) -{ - global $template, $cache, $user; - global $extensions, $config, $phpbb_root_path, $phpEx; - - $return_tpl = array(); - - $template->set_filenames(array( - 'attachment_tpl' => 'attachment.html') - ); - - if (!sizeof($attachment_data)) - { - return array(); - } - - if (empty($extensions) || !is_array($extensions)) - { - $extensions = $cache->obtain_attach_extensions(); - } - - // Look for missing attachment information... - $attach_ids = array(); - foreach ($attachment_data as $pos => $attachment) - { - // If is_orphan is set, we need to retrieve the attachments again... - if (!isset($attachment['extension']) && !isset($attachment['physical_filename'])) - { - $attach_ids[(int) $attachment['attach_id']] = $pos; - } - } - - if (sizeof($attach_ids)) - { - global $db; - - $attachment_data = array(); - - $sql = 'SELECT * - FROM ' . ATTACHMENTS_TABLE . ' - WHERE ' . $db->sql_in_set('attach_id', array_keys($attach_ids)); - $result = $db->sql_query($sql); - - while ($row = $db->sql_fetchrow($result)) - { - if (!isset($attach_ids[$row['attach_id']])) - { - continue; - } - - $attachment_data[$attach_ids[$row['attach_id']]] = $row; - } - $db->sql_freeresult($result); - } - - // Sort correctly (please note that the attachment_data array itself get changed by this - if ($config['display_order']) - { - // Ascending sort - krsort($attachment_data); - } - else + if ($topic_row['poll_start'] && $topic_row['topic_status'] != ITEM_MOVED) { - // Descending sort - ksort($attachment_data); - } - - foreach ($attachment_data as $attachment) - { - if (!sizeof($attachment)) - { - continue; - } - - // We need to reset/empty the _file block var, because this function might be called more than once - $template->destroy_block_vars('_file'); - - $block_array = array(); - - // Some basics... - $attachment['extension'] = strtolower(trim($attachment['extension'])); - $filename = $phpbb_root_path . $config['upload_path'] . '/' . basename($attachment['physical_filename']); - $thumbnail_filename = $phpbb_root_path . $config['upload_path'] . '/thumb_' . basename($attachment['physical_filename']); - - $upload_icon = ''; - - if (isset($extensions[$attachment['extension']])) - { - if ($user->img('icon_topic_attach', '') && !$extensions[$attachment['extension']]['upload_icon']) - { - $upload_icon = $user->img('icon_topic_attach', ''); - } - else if ($extensions[$attachment['extension']]['upload_icon']) - { - $upload_icon = '<img src="' . $phpbb_root_path . $config['upload_icons_path'] . '/' . trim($extensions[$attachment['extension']]['upload_icon']) . '" alt="" />'; - } - } - - $filesize = $attachment['filesize']; - $size_lang = ($filesize >= 1048576) ? $user->lang['MB'] : ( ($filesize >= 1024) ? $user->lang['KB'] : $user->lang['BYTES'] ); - $filesize = ($filesize >= 1048576) ? round((round($filesize / 1048576 * 100) / 100), 2) : (($filesize >= 1024) ? round((round($filesize / 1024 * 100) / 100), 2) : $filesize); - - $comment = str_replace("\n", '<br />', censor_text($attachment['attach_comment'])); - - $block_array += array( - 'UPLOAD_ICON' => $upload_icon, - 'FILESIZE' => $filesize, - 'SIZE_LANG' => $size_lang, - 'DOWNLOAD_NAME' => basename($attachment['real_filename']), - 'COMMENT' => $comment, - ); - - $denied = false; - - if (!extension_allowed($forum_id, $attachment['extension'], $extensions)) - { - $denied = true; - - $block_array += array( - 'S_DENIED' => true, - 'DENIED_MESSAGE' => sprintf($user->lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']) - ); - } - - if (!$denied) - { - $l_downloaded_viewed = $download_link = ''; - $display_cat = $extensions[$attachment['extension']]['display_cat']; - - if ($display_cat == ATTACHMENT_CATEGORY_IMAGE) - { - if ($attachment['thumbnail']) - { - $display_cat = ATTACHMENT_CATEGORY_THUMB; - } - else - { - if ($config['img_display_inlined']) - { - if ($config['img_link_width'] || $config['img_link_height']) - { - list($width, $height) = @getimagesize($filename); - - $display_cat = (!$width && !$height) ? ATTACHMENT_CATEGORY_IMAGE : (($width <= $config['img_link_width'] && $height <= $config['img_link_height']) ? ATTACHMENT_CATEGORY_IMAGE : ATTACHMENT_CATEGORY_NONE); - } - } - else - { - $display_cat = ATTACHMENT_CATEGORY_NONE; - } - } - } - - $download_link = (!$force_physical && $attachment['attach_id']) ? append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id'] . '&f=' . $forum_id) : $filename; - - $download_link_full = (!$force_physical && $attachment['attach_id']) ? generate_board_url() . append_sid("/download.$phpEx", 'id=' . $attachment['attach_id'] . '&f=' . $forum_id) : generate_board_url() . $filename; - - switch ($display_cat) - { - // Images - case ATTACHMENT_CATEGORY_IMAGE: - $l_downloaded_viewed = $user->lang['VIEWED']; - - $block_array += array( - 'S_IMAGE' => true, - ); - - $update_count[] = $attachment['attach_id']; - break; - - // Images, but display Thumbnail - case ATTACHMENT_CATEGORY_THUMB: - $l_downloaded_viewed = $user->lang['VIEWED']; - $thumbnail_link = (!$force_physical && $attachment['attach_id']) ? append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id'] . '&t=1&f=' . $forum_id) : $thumbnail_filename; - - $block_array += array( - 'S_THUMBNAIL' => true, - 'THUMB_IMAGE' => $thumbnail_link, - ); - break; - - // Windows Media Streams - case ATTACHMENT_CATEGORY_WM: - $l_downloaded_viewed = $user->lang['VIEWED']; - - // Giving the filename directly because within the wm object all variables are in local context making it impossible - // to validate against a valid session (all params can differ) - $download_link = $filename; - - $block_array += array( - 'U_FORUM' => generate_board_url(), - 'S_WM_FILE' => true, - ); - - // Viewed/Heared File ... update the download count - $update_count[] = $attachment['attach_id']; - break; - - // Real Media Streams - case ATTACHMENT_CATEGORY_RM: - case ATTACHMENT_CATEGORY_QUICKTIME: - $l_downloaded_viewed = $user->lang['VIEWED']; - - $block_array += array( - 'S_RM_FILE' => ($display_cat == ATTACHMENT_CATEGORY_RM) ? true : false, - 'S_QUICKTIME_FILE' => ($display_cat == ATTACHMENT_CATEGORY_QUICKTIME) ? true : false, - 'U_FORUM' => generate_board_url(), - 'ATTACH_ID' => $attachment['attach_id'], - ); - - // Viewed/Heared File ... update the download count - $update_count[] = $attachment['attach_id']; - break; - - // Macromedia Flash Files - case ATTACHMENT_CATEGORY_FLASH: - list($width, $height) = @getimagesize($filename); - - $l_downloaded_viewed = $user->lang['VIEWED']; - - $block_array += array( - 'S_FLASH_FILE' => true, - 'WIDTH' => $width, - 'HEIGHT' => $height, - ); - - // Viewed/Heared File ... update the download count - $update_count[] = $attachment['attach_id']; - break; - - default: - $l_downloaded_viewed = $user->lang['DOWNLOADED']; - - $block_array += array( - 'S_FILE' => true, - ); - break; - } - - $l_download_count = (!isset($attachment['download_count']) || $attachment['download_count'] == 0) ? $user->lang['DOWNLOAD_NONE'] : (($attachment['download_count'] == 1) ? sprintf($user->lang['DOWNLOAD_COUNT'], $attachment['download_count']) : sprintf($user->lang['DOWNLOAD_COUNTS'], $attachment['download_count'])); - - $block_array += array( - 'U_DOWNLOAD_LINK' => $download_link, - 'L_DOWNLOADED_VIEWED' => $l_downloaded_viewed, - 'L_DOWNLOAD_COUNT' => $l_download_count - ); - } - - $template->assign_block_vars('_file', $block_array); - - $tpl = $template->assign_display('attachment_tpl'); - - if (!$return) - { - $template->assign_block_vars($blockname, array( - 'DISPLAY_ATTACHMENT' => $tpl) - ); - } - else - { - $return_tpl[] = $tpl; - } + $topic_type = $user->lang['VIEW_TOPIC_POLL']; } - - return $return_tpl; } /** @@ -1007,7 +765,7 @@ function display_reasons($reason_id = 0) // If the reason is defined within the language file, we will use the localized version, else just use the database entry... if (isset($user->lang['report_reasons']['TITLE'][strtoupper($row['reason_title'])]) && isset($user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])])) { - $row['reson_description'] = $user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])]; + $row['reason_description'] = $user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])]; $row['reason_title'] = $user->lang['report_reasons']['TITLE'][strtoupper($row['reason_title'])]; } @@ -1116,13 +874,15 @@ function display_user_activity(&$userdata) $active_t_pct = ($userdata['user_posts']) ? ($active_t_count / $userdata['user_posts']) * 100 : 0; } + $l_active_pct = ($userdata['user_id'] != ANONYMOUS && $userdata['user_id'] == $user->data['user_id']) ? $user->lang['POST_PCT_ACTIVE_OWN'] : $user->lang['POST_PCT_ACTIVE']; + $template->assign_vars(array( 'ACTIVE_FORUM' => $active_f_name, 'ACTIVE_FORUM_POSTS' => ($active_f_count == 1) ? sprintf($user->lang['USER_POST'], 1) : sprintf($user->lang['USER_POSTS'], $active_f_count), - 'ACTIVE_FORUM_PCT' => sprintf($user->lang['POST_PCT_ACTIVE'], $active_f_pct), + 'ACTIVE_FORUM_PCT' => sprintf($l_active_pct, $active_f_pct), 'ACTIVE_TOPIC' => censor_text($active_t_name), 'ACTIVE_TOPIC_POSTS' => ($active_t_count == 1) ? sprintf($user->lang['USER_POST'], 1) : sprintf($user->lang['USER_POSTS'], $active_t_count), - 'ACTIVE_TOPIC_PCT' => sprintf($user->lang['POST_PCT_ACTIVE'], $active_t_pct), + 'ACTIVE_TOPIC_PCT' => sprintf($l_active_pct, $active_t_pct), 'U_ACTIVE_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $active_f_id), 'U_ACTIVE_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $active_t_id), 'S_SHOW_ACTIVITY' => true) @@ -1241,4 +1001,48 @@ function watch_topic_forum($mode, &$s_watching, &$s_watching_img, $user_id, $for return; } +/** +* Get user rank title and image +* +* @param int $user_rank the current stored users rank id +* @param int $user_posts the users number of posts +* @param string &$rank_title the rank title will be stored here after execution +* @param string &$rank_img the rank image as full img tag is stored here after execution +* @param string &$rank_img_src the rank image source is stored here after execution +* +*/ +function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src) +{ + global $ranks, $config; + + if (empty($ranks)) + { + global $cache; + $ranks = $cache->obtain_ranks(); + } + + if (!empty($user_rank)) + { + $rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : ''; + $rank_img = (!empty($ranks['special'][$user_rank]['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] . '" alt="' . $ranks['special'][$user_rank]['rank_title'] . '" title="' . $ranks['special'][$user_rank]['rank_title'] . '" />' : ''; + $rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] : ''; + } + else + { + if (!empty($ranks['normal'])) + { + foreach ($ranks['normal'] as $rank) + { + if ($user_posts >= $rank['rank_min']) + { + $rank_title = $rank['rank_title']; + $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $rank['rank_image'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : ''; + $rank_img_src = (!empty($rank['rank_image'])) ? $config['ranks_path'] . '/' . $rank['rank_image'] : ''; + break; + } + } + } + } +} + ?>
\ No newline at end of file diff --git a/phpBB/includes/functions_jabber.php b/phpBB/includes/functions_jabber.php index 726985e631..b0a7e09c08 100644 --- a/phpBB/includes/functions_jabber.php +++ b/phpBB/includes/functions_jabber.php @@ -20,7 +20,7 @@ * last modified: 24.03.2004 13:01:53 * * Modified by phpBB Development Team -* version: v0.4.3a +* version: v0.4.3a1 * * @package phpBB3 */ @@ -113,7 +113,7 @@ class jabber if ($this->connector->open_socket($this->server, $this->port)) { $this->send_packet("<?xml version='1.0' encoding='UTF-8' ?" . ">\n"); - $this->send_packet("<stream:stream to='{$this->server}' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>\n"); + $this->send_packet("<stream:stream to='{$this->server}' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='0.9'>\n"); sleep(2); @@ -672,7 +672,7 @@ class jabber { if ($this->enable_logging && sizeof($this->log_array)) { - return implode("\n\n", $this->log_array); + return implode("<br /><br />", $this->log_array); } return ''; @@ -805,7 +805,7 @@ class jabber * Check if connected * @access private */ - function _check_connected() + function _check_connected($in_tls = false) { $incoming_array = $this->_listen_incoming(); @@ -815,14 +815,16 @@ class jabber { $this->stream_id = $incoming_array['stream:stream']['@']['id']; - if (!empty($incoming_array['stream:stream']['#']['stream:features'][0]['#']['starttls'][0]['@']['xmlns']) && $incoming_array['stream:stream']['#']['stream:features'][0]['#']['starttls'][0]['@']['xmlns'] == 'urn:ietf:params:xml:ns:xmpp-tls') + // We only start TLS authentication if not called within TLS authentication itself, which may produce a never ending loop... + if (!$in_tls) { - return $this->_starttls(); - } - else - { - return true; + if (!empty($incoming_array['stream:stream']['#']['stream:features'][0]['#']['starttls'][0]['@']['xmlns']) && $incoming_array['stream:stream']['#']['stream:features'][0]['#']['starttls'][0]['@']['xmlns'] == 'urn:ietf:params:xml:ns:xmpp-tls') + { + return $this->_starttls(); + } } + + return true; } else { @@ -843,12 +845,21 @@ class jabber */ function _starttls() { - if (!function_exists('stream_socket_enable_crypto') || !function_exists('stream_get_meta_data') || !function_exists('socket_set_blocking')) + if (!function_exists('stream_socket_enable_crypto') || !function_exists('stream_get_meta_data') || !function_exists('socket_set_blocking') || !function_exists('stream_get_wrappers')) { $this->add_to_log('WARNING: TLS is not available'); return true; } + // Make sure the encryption stream is supported + $streams = stream_get_wrappers(); + + if (!in_array('streams.crypto', $streams)) + { + $this->add_to_log('WARNING: SSL/crypto stream not supported'); + return true; + } + $this->send_packet("<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>\n"); sleep(2); $incoming_array = $this->_listen_incoming(); @@ -868,19 +879,21 @@ class jabber $meta = stream_get_meta_data($this->connector->active_socket); socket_set_blocking($this->connector->active_socket, 1); - if (!stream_socket_enable_crypto($this->connector->active_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) + $result = @stream_socket_enable_crypto($this->connector->active_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + if (!$result) { socket_set_blocking($this->connector->active_socket, $meta['blocked']); $this->add_to_log('ERROR: _starttls() #3'); return false; } + socket_set_blocking($this->connector->active_socket, $meta['blocked']); $this->send_packet("<?xml version='1.0' encoding='UTF-8' ?" . ">\n"); $this->send_packet("<stream:stream to='{$this->server}' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>\n"); sleep(2); - if (!$this->_check_connected()) + if (!$this->_check_connected(true)) { $this->add_to_log('ERROR: _starttls() #4'); return false; diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index 4625ba47d0..755a6d9116 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -26,15 +26,6 @@ class messenger */ function messenger($use_queue = true) { - global $config; - - if (preg_match('#^[c-z]:\\\#i', getenv('PATH')) && !$config['smtp_delivery'] && phpversion() < '4.3') - { - // We are running on windows, force delivery to use our smtp functions since php's are broken by default - $config['smtp_delivery'] = 1; - $config['smtp_host'] = @ini_get('SMTP'); - } - $this->use_queue = $use_queue; $this->subject = ''; } @@ -54,9 +45,21 @@ class messenger */ function to($address, $realname = '') { + global $config; + $pos = isset($this->addresses['to']) ? sizeof($this->addresses['to']) : 0; + $this->addresses['to'][$pos]['email'] = trim($address); - $this->addresses['to'][$pos]['name'] = trim($realname); + + // If empty sendmail_path on windows, PHP changes the to line + if (!$config['smtp_delivery'] && strpos(strtolower(PHP_OS), 'win') === 0) + { + $this->addresses['to'][$pos]['name'] = ''; + } + else + { + $this->addresses['to'][$pos]['name'] = trim($realname); + } } /** @@ -249,7 +252,7 @@ class messenger */ function error($type, $msg) { - global $user, $phpEx, $phpbb_root_path; + global $user, $phpEx, $phpbb_root_path, $config; // Session doesn't exist, create it if (!isset($user->session_id) || $user->session_id === '') @@ -257,7 +260,22 @@ class messenger $user->session_begin(); } - add_log('critical', 'LOG_ERROR_' . $type, $msg); + $calling_page = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : $_ENV['PHP_SELF']; + + $message = ''; + switch ($type) + { + case 'EMAIL': + $message = '<strong>EMAIL/' . (($config['smtp_delivery']) ? 'SMTP' : 'PHP/' . $config['email_function_name'] . '()') . '</strong>'; + break; + + default: + $message = "<strong>$type</strong>"; + break; + } + + $message .= '<br /><em>' . htmlspecialchars($calling_page) . '<em><br /><br />' . $msg . '<br />'; + add_log('critical', 'LOG_ERROR_' . $type, $message); } /** @@ -345,12 +363,12 @@ class messenger if (empty($this->replyto)) { - $this->replyto = '<' . $config['board_email'] . '>'; + $this->replyto = '<' . $config['board_contact'] . '>'; } if (empty($this->from)) { - $this->from = '<' . $config['board_email'] . '>'; + $this->from = '<' . $config['board_contact'] . '>'; } // Build to, cc and bcc strings @@ -364,7 +382,7 @@ class messenger foreach ($address_ary as $which_ary) { - $$type .= (($$type != '') ? ', ' : '') . (($which_ary['name'] != '') ? '"' . mail_encode($which_ary['name']) . '" <' . $which_ary['email'] . '>' : $which_ary['email']); + $$type .= (($$type != '') ? ', ' : '') . (($which_ary['name'] != '') ? '"' . mail_encode($which_ary['name']) . '" <' . $which_ary['email'] . '>' : $which_ary['email']); } } @@ -383,14 +401,14 @@ class messenger } else { - $result = @$config['email_function_name']($mail_to, mail_encode($this->subject), implode("\n", preg_split("/\r?\n/", wordwrap($this->msg))), $headers); + ob_start(); + $result = $config['email_function_name']($mail_to, mail_encode($this->subject), implode("\n", preg_split("/\r?\n/", wordwrap($this->msg))), $headers); + $err_msg = ob_get_clean(); } if (!$result) { - $message = '<u>EMAIL ERROR</u> [ ' . (($config['smtp_delivery']) ? 'SMTP' : 'PHP') . ' ]<br /><br />' . $err_msg . '<br /><br /><u>CALLING PAGE</u><br /><br />' . ((!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : $_ENV['PHP_SELF']) . '<br />'; - - $this->error('EMAIL', $message); + $this->error('EMAIL', $err_msg); return false; } } @@ -440,25 +458,25 @@ class messenger if (!$use_queue) { - include_once($phpbb_root_path . 'includes/functions_jabber.'.$phpEx); + include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx); $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password'], $config['jab_resource']); if (!$this->jabber->connect()) { - $this->error('JABBER', 'Could not connect to Jabber server'); + $this->error('JABBER', 'Could not connect to Jabber server<br />' . $this->jabber->get_log()); return false; } if (!$this->jabber->send_auth()) { - $this->error('JABBER', 'Could not authorise on Jabber server'); + $this->error('JABBER', 'Could not authorise on Jabber server<br />' . $this->jabber->get_log()); return false; } $this->jabber->send_presence(NULL, NULL, 'online'); foreach ($addresses as $address) { - $this->jabber->send_message($address, 'normal', NULL, array('body' => $this->msg)); + $this->jabber->send_message($address, 'normal', NULL, array('body' => $this->msg, 'subject' => $this->subject)); } sleep(1); @@ -607,14 +625,22 @@ class queue $err_msg = ''; $to = (!$to) ? 'Undisclosed-Recipient:;' : $to; - $result = ($config['smtp_delivery']) ? smtpmail($addresses, mail_encode($subject), wordwrap($msg), $err_msg, $headers) : @$config['email_function_name']($to, mail_encode($subject), implode("\n", preg_split("/\r?\n/", wordwrap($msg))), $headers); + if ($config['smtp_delivery']) + { + $result = smtpmail($addresses, mail_encode($subject), wordwrap($msg), $err_msg, $headers); + } + else + { + ob_start(); + $result = $config['email_function_name']($to, mail_encode($subject), implode("\n", preg_split("/\r?\n/", wordwrap($msg))), $headers); + $err_msg = ob_get_clean(); + } if (!$result) { @unlink($this->cache_file . '.lock'); - $message = 'Method: [ ' . (($config['smtp_delivery']) ? 'SMTP' : 'PHP') . ' ]<br /><br />' . $err_msg . '<br /><br /><u>CALLING PAGE</u><br /><br />' . ((!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : $_ENV['PHP_SELF']); - messenger::error('EMAIL', $message); + messenger::error('EMAIL', $err_msg); continue 2; } break; @@ -622,10 +648,9 @@ class queue case 'jabber': foreach ($addresses as $address) { - if ($this->jabber->send_message($address, 'normal', NULL, array('body' => $msg)) === false) + if ($this->jabber->send_message($address, 'normal', NULL, array('body' => $msg, 'subject' => $subject)) === false) { - $message = 'Method: [ JABBER ]<br /><br />' . $this->jabber->get_log() . '<br /><br /><u>CALLING PAGE</u><br /><br />' . ((!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : $_ENV['PHP_SELF']); - messenger::error('JABBER', $message); + messenger::error('JABBER', $this->jabber->get_log()); continue 3; } } @@ -657,12 +682,10 @@ class queue } else { - $file = '<?php $this->queue_data=' . $this->format_array($this->queue_data) . '; ?>'; - if ($fp = @fopen($this->cache_file, 'w')) { @flock($fp, LOCK_EX); - fwrite($fp, $file); + fwrite($fp, "<?php\n\$this->queue_data = " . var_export($this->queue_data, true) . ";\n?>"); @flock($fp, LOCK_UN); fclose($fp); } @@ -697,48 +720,15 @@ class queue } } } - - $file = '<?php $this->queue_data = ' . $this->format_array($this->data) . '; ?>'; if ($fp = @fopen($this->cache_file, 'w')) { @flock($fp, LOCK_EX); - fwrite($fp, $file); + fwrite($fp, "<?php\n\$this->queue_data = " . var_export($this->data, true) . ";\n?>"); @flock($fp, LOCK_UN); fclose($fp); } } - - /** - * Format array - * @access private - */ - function format_array($array) - { - $lines = array(); - foreach ($array as $k => $v) - { - if (is_array($v)) - { - $lines[] = "'$k'=>" . $this->format_array($v); - } - else if (is_int($v)) - { - $lines[] = "'$k'=>$v"; - } - else if (is_bool($v)) - { - $lines[] = "'$k'=>" . (($v) ? 'true' : 'false'); - } - else - { - $lines[] = "'$k'=>'" . str_replace("'", "\'", str_replace('\\', '\\\\', $v)) . "'"; - } - } - - return 'array(' . implode(',', $lines) . ')'; - } - } /** @@ -767,10 +757,10 @@ function smtpmail($addresses, $subject, $message, &$err_msg, $headers = '') // Something we really didn't take into consideration originally $header_array = explode("\r\n", $headers); $headers = ''; - + foreach ($header_array as $header) { - if (preg_match('#^cc:#si', $header) || preg_match('#^bcc:#si', $header)) + if (strpos(strtolower($header), 'cc:') === 0 || strpos(strtolower($header), 'bcc:') === 0) { $header = ''; } @@ -831,6 +821,11 @@ function smtpmail($addresses, $subject, $message, &$err_msg, $headers = '') // Ok we have error checked as much as we can to this point let's get on it already. if (!$smtp->socket = @fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 20)) { + if ($errstr) + { + $errstr = utf8_convert_message($errstr); + } + $err_msg = (isset($user->lang['NO_CONNECT_TO_SMTP_HOST'])) ? sprintf($user->lang['NO_CONNECT_TO_SMTP_HOST'], $errno, $errstr) : "Could not connect to smtp host : $errno : $errstr"; return false; } @@ -851,7 +846,7 @@ function smtpmail($addresses, $subject, $message, &$err_msg, $headers = '') // From this point onward most server response codes should be 250 // Specify who the mail is from.... - $smtp->server_send('MAIL FROM:<' . $config['board_email'] . '>'); + $smtp->server_send('MAIL FROM:<' . $config['board_contact'] . '>'); if ($err_msg = $smtp->server_parse('250', __LINE__)) { $smtp->close_session($err_msg); @@ -976,7 +971,7 @@ class smtp_class { if ($this->backtrace) { - $this->backtrace_log[] = $message; + $this->backtrace_log[] = htmlspecialchars($message, ENT_COMPAT, 'UTF-8'); } } @@ -987,7 +982,7 @@ class smtp_class { fputs($this->socket, $command . "\r\n"); - (!$private_info) ? $this->add_backtrace("# $command") : $this->add_backtrace('# Ommitting sensitive information'); + (!$private_info) ? $this->add_backtrace("# $command") : $this->add_backtrace('# Omitting sensitive information'); // We could put additional code here } @@ -1033,7 +1028,7 @@ class smtp_class if ($this->backtrace) { - $message = '<h1>Backtrace</h1><p>' . implode('<br />', array_map('htmlspecialchars', $this->backtrace_log)) . '</p>'; + $message = '<h1>Backtrace</h1><p>' . implode('<br />', $this->backtrace_log) . '</p>'; $err_msg .= $message; } } @@ -1072,6 +1067,11 @@ class smtp_class // able to get our ip for matching... if (!$this->socket = @fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 10)) { + if ($errstr) + { + $errstr = utf8_convert_message($errstr); + } + $err_msg = (isset($user->lang['NO_CONNECT_TO_SMTP_HOST'])) ? sprintf($user->lang['NO_CONNECT_TO_SMTP_HOST'], $errno, $errstr) : "Could not connect to smtp host : $errno : $errstr"; return $err_msg; } @@ -1162,6 +1162,11 @@ class smtp_class if (!$this->socket = @fsockopen($hostname, 110, $errno, $errstr, 10)) { + if ($errstr) + { + $errstr = utf8_convert_message($errstr); + } + return (isset($user->lang['NO_CONNECT_TO_SMTP_HOST'])) ? sprintf($user->lang['NO_CONNECT_TO_SMTP_HOST'], $errno, $errstr) : "Could not connect to smtp host : $errno : $errstr"; } @@ -1406,7 +1411,7 @@ function mail_encode($str) { $text = ''; - while (sizeof($array) && strlen(base64_encode($text . $array[0])) <= $split_length) + while (sizeof($array) && intval((strlen($text . $array[0]) + 2) / 3) << 2 <= $split_length) { $text .= array_shift($array); } diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php index 753e043c16..d45358327f 100644 --- a/phpBB/includes/functions_module.php +++ b/phpBB/includes/functions_module.php @@ -21,6 +21,7 @@ class p_master var $p_parent; var $active_module = false; + var $active_module_row_id = false; var $acl_forum_id = false; var $module_ary = array(); @@ -69,6 +70,11 @@ class p_master $cache->put('_modules_' . $this->p_class, $this->module_cache); } + if (empty($this->module_cache)) + { + $this->module_cache = array('modules' => array(), 'parents' => array()); + } + // We "could" build a true tree with this function - maybe mod authors want to use this... // Functions for traversing and manipulating the tree are not available though // We might re-structure the module system to use true trees in 3.2.x... @@ -166,7 +172,7 @@ class p_master $depth = sizeof($this->module_cache['parents'][$row['module_id']]); // We need to prefix the functions to not create a naming conflict - + // Function for building 'url_extra' $url_func = '_module_' . $row['module_basename'] . '_url'; @@ -191,7 +197,7 @@ class p_master 'mode' => (string) $row['module_mode'], 'display' => (int) $row['module_display'], - 'url_extra' => (function_exists($url_func)) ? $url_func($row['module_mode']) : '', + 'url_extra' => (function_exists($url_func)) ? $url_func($row['module_mode'], $row) : '', 'lang' => ($row['module_basename'] && function_exists($lang_func)) ? $lang_func($row['module_mode'], $row['module_langname']) : ((!empty($user->lang[$row['module_langname']])) ? $user->lang[$row['module_langname']] : $row['module_langname']), 'langname' => $row['module_langname'], @@ -212,6 +218,50 @@ class p_master } /** + * Check if a certain main module is accessible/loaded + * By giving the module mode you are able to additionally check for only one mode within the main module + * + * @param string $module_basename The module base name, for example logs, reports, main (for the mcp). + * @param mixed $module_mode The module mode to check. If provided the mode will be checked in addition for presence. + * + * @return bool Returns true if module is loaded and accessible, else returns false + */ + function loaded($module_basename, $module_mode = false) + { + if (empty($this->loaded_cache)) + { + $this->loaded_cache = array(); + + foreach ($this->module_ary as $row) + { + if (!$row['name']) + { + continue; + } + + if (!isset($this->loaded_cache[$row['name']])) + { + $this->loaded_cache[$row['name']] = array(); + } + + if (!$row['mode']) + { + continue; + } + + $this->loaded_cache[$row['name']][$row['mode']] = true; + } + } + + if ($module_mode === false) + { + return (isset($this->loaded_cache[$module_basename])) ? true : false; + } + + return (!empty($this->loaded_cache[$module_basename][$module_mode])) ? true : false; + } + + /** * Check module authorisation */ function module_auth($module_auth, $forum_id = false) @@ -314,6 +364,7 @@ class p_master $this->module_cache['parents'] = $this->module_cache['parents'][$this->p_id]; $this->active_module = $item_ary['id']; + $this->active_module_row_id = $row_id; break; } @@ -369,8 +420,14 @@ class p_master // We pre-define the action parameter we are using all over the place if (defined('IN_ADMIN')) { + // Is first module automatically enabled a duplicate and the category not passed yet? + if (!$icat && $this->module_ary[$this->active_module_row_id]['is_duplicate']) + { + $icat = $this->module_ary[$this->active_module_row_id]['parent']; + } + // Not being able to overwrite ;) - $this->module->u_action = append_sid("{$phpbb_admin_path}index.$phpEx", "i={$this->p_id}") . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}"; + $this->module->u_action = append_sid("{$phpbb_admin_path}index.$phpEx", "i={$this->p_name}") . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}"; } else { @@ -384,7 +441,13 @@ class p_master $this->module->u_action = $phpbb_root_path . (($user->page['page_dir']) ? $user->page['page_dir'] . '/' : '') . $user->page['page_name']; } - $this->module->u_action = append_sid($this->module->u_action, "i={$this->p_id}") . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}"; + $this->module->u_action = append_sid($this->module->u_action, "i={$this->p_name}") . (($icat) ? '&icat=' . $icat : '') . "&mode={$this->p_mode}"; + } + + // Add url_extra parameter to u_action url + if (!empty($this->module_ary) && $this->active_module !== false && $this->module_ary[$this->active_module_row_id]['url_extra']) + { + $this->module->u_action .= $this->module_ary[$this->active_module_row_id]['url_extra']; } // Assign the module path for re-usage @@ -394,7 +457,7 @@ class p_master // Users are able to call the main method after this function to be able to assign additional parameters manually if ($execute_module) { - $this->module->main(($this->p_name) ? $this->p_name : $this->p_id, $this->p_mode); + $this->module->main($this->p_name, $this->p_mode); } return; @@ -578,7 +641,9 @@ class p_master } $u_title = $module_url . $delim . 'i=' . (($item_ary['cat']) ? $item_ary['id'] : $item_ary['name'] . (($item_ary['is_duplicate']) ? '&icat=' . $current_id : '') . '&mode=' . $item_ary['mode']); - $u_title .= (!$item_ary['cat'] && isset($item_ary['url_extra'])) ? $item_ary['url_extra'] : ''; + + // Was not allowed in categories before - /*!$item_ary['cat'] && */ + $u_title .= (isset($item_ary['url_extra'])) ? $item_ary['url_extra'] : ''; // Only output a categories items if it's currently selected if (!$depth || ($depth && (in_array($item_ary['parent'], array_values($this->module_cache['parents'])) || $item_ary['parent'] == $this->p_parent))) diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 49ed4932a3..d68aa9f645 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -9,7 +9,7 @@ */ /** -* Fill smiley templates (or just the variables) with smileys, either in a window or inline +* Fill smiley templates (or just the variables) with smilies, either in a window or inline */ function generate_smilies($mode, $forum_id) { @@ -96,7 +96,7 @@ function generate_smilies($mode, $forum_id) } /** -* Update Post Information (First/Last Post in topic/forum) +* Update last post information * Should be used instead of sync() if only the last post information are out of sync... faster * * @param string $type Can be forum|topic @@ -338,7 +338,7 @@ function upload_attachment($form_name, $forum_id, $local = false, $local_storage return $filedata; } - $extensions = $cache->obtain_attach_extensions($forum_id); + $extensions = $cache->obtain_attach_extensions((($is_message) ? false : (int) $forum_id)); $upload->set_allowed_extensions(array_keys($extensions['_allowed_'])); $file = ($local) ? $upload->local_upload($local_storage) : $upload->form_upload($form_name); @@ -1107,7 +1107,6 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id { $messenger->template($email_template, $addr['lang']); - $messenger->replyto($config['board_email']); $messenger->to($addr['email'], $addr['name']); $messenger->im($addr['jabber'], $addr['name']); @@ -1324,12 +1323,12 @@ function delete_post($forum_id, $topic_id, $post_id, &$data) $db->sql_transaction('commit'); // Adjust posted info for this user by looking for a post by him/her within this topic... - if ($post_mode != 'delete_topic' && $config['load_db_track'] && $user->data['is_registered']) + if ($post_mode != 'delete_topic' && $config['load_db_track'] && $data['poster_id'] != ANONYMOUS) { $sql = 'SELECT poster_id FROM ' . POSTS_TABLE . ' WHERE topic_id = ' . $topic_id . ' - AND poster_id = ' . $user->data['user_id']; + AND poster_id = ' . $data['poster_id']; $result = $db->sql_query_limit($sql, 1); $poster_id = (int) $db->sql_fetchfield('poster_id'); $db->sql_freeresult($result); @@ -1339,7 +1338,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data) { $sql = 'DELETE FROM ' . TOPICS_POSTED_TABLE . ' WHERE topic_id = ' . $topic_id . ' - AND user_id = ' . $user->data['user_id']; + AND user_id = ' . $data['poster_id']; $db->sql_query($sql); } } @@ -1578,7 +1577,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u ); } - $sql = 'INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_data[POSTS_TABLE]['sql']); + $sql = 'INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_data[POSTS_TABLE]['sql']); $db->sql_query($sql); $data['post_id'] = $db->sql_nextid(); @@ -1973,7 +1972,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u } else { - $url = ($auth->acl_get('f_noapprove', $data['forum_id']) || $auth->acl_get('m_approve', $data['forum_id'])) ? append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$data['forum_id']}&t={$data['topic_id']}&p={$data['post_id']}") . "#p{$data['post_id']}" : append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$data['forum_id']}&t={$data['topic_id']}"); + $url = ($auth->acl_get('f_noapprove', $data['forum_id']) || $auth->acl_get('m_approve', $data['forum_id'])) ? append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$data['forum_id']}&t={$data['topic_id']}&p={$data['post_id']}") . "#p{$data['post_id']}" : append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$data['forum_id']}&t={$data['topic_id']}"); } return $url; diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index d67478b190..7677f4ba34 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -17,7 +17,7 @@ if (!defined('IN_PHPBB')) /* Ability to simply add own rules by doing three things: - 1) Add an appropiate constant + 1) Add an appropriate constant 2) Add a new check array to the global_privmsgs_rules variable and the condition array (if one is required) 3) Add a new language variable to ucp.php @@ -313,7 +313,7 @@ function check_rule(&$rules, &$rule_row, &$message_row, $user_id) } /** -* Place new messages into appropiate folder +* Place new messages into appropriate folder */ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) { @@ -347,7 +347,7 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) AND t.folder_id = " . PRIVMSGS_NO_BOX . ' AND t.msg_id = p.msg_id'; - // Just place into the appropiate arrays if no rules need to be checked + // Just place into the appropriate arrays if no rules need to be checked if (!$user_message_rules) { $result = $db->sql_query($retrieve_sql); @@ -420,7 +420,7 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) $db->sql_freeresult($result); } - // Now place into the appropiate folder + // Now place into the appropriate folder foreach ($check_rows as $row) { // Add membership if set @@ -539,7 +539,7 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) if (sizeof($important_ids)) { $sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . ' - SET pm_marked = !pm_marked + SET pm_marked = 1 - pm_marked WHERE folder_id = ' . PRIVMSGS_NO_BOX . " AND user_id = $user_id AND " . $db->sql_in_set('msg_id', $important_ids); @@ -831,7 +831,7 @@ function handle_mark_actions($user_id, $mark_action) { global $db, $user, $_POST, $phpbb_root_path, $phpEx; - $msg_ids = (isset($_POST['marked_msg_id'])) ? array_map('intval', $_POST['marked_msg_id']) : array(); + $msg_ids = request_var('marked_msg_id', array(0)); $cur_folder_id = request_var('cur_folder_id', PRIVMSGS_NO_BOX); $confirm = (isset($_POST['confirm'])) ? true : false; @@ -845,7 +845,7 @@ function handle_mark_actions($user_id, $mark_action) case 'mark_important': $sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . " - SET pm_marked = !pm_marked + SET pm_marked = 1 - pm_marked WHERE folder_id = $cur_folder_id AND user_id = $user_id AND " . $db->sql_in_set('msg_id', $msg_ids); @@ -1240,9 +1240,9 @@ function get_folder_status($folder_id, $folder) /** * Submit PM */ -function submit_pm($mode, $subject, &$data, $update_message, $put_in_outbox = true) +function submit_pm($mode, $subject, &$data, $put_in_outbox = true) { - global $db, $auth, $config, $phpEx, $template, $user; + global $db, $auth, $config, $phpEx, $template, $user, $phpbb_root_path; // We do not handle erasing pms here if ($mode == 'delete') @@ -1610,7 +1610,6 @@ function pm_notification($mode, $author, $recipients, $subject, $message) { $messenger->template('privmsg_notify', $addr['lang']); - $messenger->replyto($config['board_email']); $messenger->to($addr['email'], $addr['name']); $messenger->im($addr['jabber'], $addr['name']); diff --git a/phpBB/includes/functions_profile_fields.php b/phpBB/includes/functions_profile_fields.php index 494288a600..05bea54bd7 100644 --- a/phpBB/includes/functions_profile_fields.php +++ b/phpBB/includes/functions_profile_fields.php @@ -37,7 +37,7 @@ class custom_profile case 'profile': // Show hidden fields to moderators/admins - if (!$auth->acl_gets('a_', 'm_')) + if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) { $sql_where .= ' AND f.field_hide = 0'; } @@ -199,7 +199,7 @@ class custom_profile FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f WHERE l.lang_id = ' . $user->get_iso_lang_id() . ' AND f.field_active = 1 ' . - ((!$auth->acl_gets('a_', 'm_')) ? ' AND f.field_hide = 0 ' : '') . ' + ((!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) ? ' AND f.field_hide = 0 ' : '') . ' AND f.field_no_view = 0 AND l.field_id = f.field_id ORDER BY f.field_order'; @@ -264,7 +264,7 @@ class custom_profile case 'profile': // Show hidden fields to moderators/admins - if (!$auth->acl_gets('a_', 'm_')) + if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) { $sql_where .= ' AND f.field_hide = 0'; } diff --git a/phpBB/includes/functions_template.php b/phpBB/includes/functions_template.php index 47ff906a28..4e5b46c3f7 100644 --- a/phpBB/includes/functions_template.php +++ b/phpBB/includes/functions_template.php @@ -112,21 +112,22 @@ class template_compile // if they wish to display < and > $this->remove_php_tags($code); - // Pull out all block/statement level elements and seperate plain text + // Pull out all block/statement level elements and separate plain text preg_match_all('#<!-- PHP -->(.*?)<!-- ENDPHP -->#s', $code, $matches); $php_blocks = $matches[1]; - $code = preg_replace('#<!-- PHP -->(.*?)<!-- ENDPHP -->#s', '<!-- PHP -->', $code); + $code = preg_replace('#<!-- PHP -->.*?<!-- ENDPHP -->#s', '<!-- PHP -->', $code); - preg_match_all('#<!-- INCLUDE ([a-zA-Z0-9\_\-\+\./]+?) -->#', $code, $matches); + preg_match_all('#<!-- INCLUDE ([a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches); $include_blocks = $matches[1]; - $code = preg_replace('#<!-- INCLUDE ([a-zA-Z0-9\_\-\+\./]+?) -->#', '<!-- INCLUDE -->', $code); + $code = preg_replace('#<!-- INCLUDE [a-zA-Z0-9\_\-\+\./]+ -->#', '<!-- INCLUDE -->', $code); - preg_match_all('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+?) -->#', $code, $matches); + preg_match_all('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches); $includephp_blocks = $matches[1]; - $code = preg_replace('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+?) -->#', '<!-- INCLUDEPHP -->', $code); + $code = preg_replace('#<!-- INCLUDEPHP [a-zA-Z0-9\_\-\+\./]+ -->#', '<!-- INCLUDEPHP -->', $code); - preg_match_all('#<!-- ([^<].*?) (.*?)?[ ]?-->#', $code, $blocks); - $text_blocks = preg_split('#<!-- ([^<].*?) (.*?)?[ ]?-->#', $code); + preg_match_all('#<!-- ([^<].*?) (.*?)? ?-->#', $code, $blocks, PREG_SET_ORDER); + + $text_blocks = preg_split('#<!-- [^<].*? (?:.*?)? ?-->#', $code); for ($i = 0, $j = sizeof($text_blocks); $i < $j; $i++) { @@ -134,18 +135,15 @@ class template_compile } $compile_blocks = array(); - for ($curr_tb = 0, $tb_size = sizeof($text_blocks); $curr_tb < $tb_size; $curr_tb++) + for ($curr_tb = 0, $tb_size = sizeof($blocks); $curr_tb < $tb_size; $curr_tb++) { - if (!isset($blocks[1][$curr_tb])) - { - $blocks[1][$curr_tb] = ''; - } + $block_val = &$blocks[$curr_tb]; - switch ($blocks[1][$curr_tb]) + switch ($block_val[1]) { case 'BEGIN': $this->block_else_level[] = false; - $compile_blocks[] = '<?php ' . $this->compile_tag_block($blocks[2][$curr_tb]) . ' ?>'; + $compile_blocks[] = '<?php ' . $this->compile_tag_block($block_val[2]) . ' ?>'; break; case 'BEGINELSE': @@ -159,7 +157,7 @@ class template_compile break; case 'IF': - $compile_blocks[] = '<?php ' . $this->compile_tag_if($blocks[2][$curr_tb], false) . ' ?>'; + $compile_blocks[] = '<?php ' . $this->compile_tag_if($block_val[2], false) . ' ?>'; break; case 'ELSE': @@ -167,7 +165,7 @@ class template_compile break; case 'ELSEIF': - $compile_blocks[] = '<?php ' . $this->compile_tag_if($blocks[2][$curr_tb], true) . ' ?>'; + $compile_blocks[] = '<?php ' . $this->compile_tag_if($block_val[2], true) . ' ?>'; break; case 'ENDIF': @@ -175,11 +173,11 @@ class template_compile break; case 'DEFINE': - $compile_blocks[] = '<?php ' . $this->compile_tag_define($blocks[2][$curr_tb], true) . ' ?>'; + $compile_blocks[] = '<?php ' . $this->compile_tag_define($block_val[2], true) . ' ?>'; break; case 'UNDEFINE': - $compile_blocks[] = '<?php ' . $this->compile_tag_define($blocks[2][$curr_tb], false) . ' ?>'; + $compile_blocks[] = '<?php ' . $this->compile_tag_define($block_val[2], false) . ' ?>'; break; case 'INCLUDE': @@ -197,9 +195,9 @@ class template_compile break; default: - $this->compile_var_tags($blocks[0][$curr_tb]); - $trim_check = trim($blocks[0][$curr_tb]); - $compile_blocks[] = (!$no_echo) ? ((!empty($trim_check)) ? $blocks[0][$curr_tb] : '') : ((!empty($trim_check)) ? $blocks[0][$curr_tb] : ''); + $this->compile_var_tags($block_val[0]); + $trim_check = trim($block_val[0]); + $compile_blocks[] = (!$no_echo) ? ((!empty($trim_check)) ? $block_val[0] : '') : ((!empty($trim_check)) ? $block_val[0] : ''); break; } } @@ -211,12 +209,12 @@ class template_compile $template_php .= (!$no_echo) ? ((!empty($trim_check_text)) ? $text_blocks[$i] : '') . ((!empty($compile_blocks[$i])) ? $compile_blocks[$i] : '') : ((!empty($trim_check_text)) ? $text_blocks[$i] : '') . ((!empty($compile_blocks[$i])) ? $compile_blocks[$i] : ''); } - // There will be a number of occassions where we switch into and out of + // There will be a number of occasions where we switch into and out of // PHP mode instantaneously. Rather than "burden" the parser with this // we'll strip out such occurences, minimising such switching $template_php = str_replace(' ?><?php ', ' ', $template_php); - return (!$no_echo) ? $template_php : "\$$echo_var .= '" . $template_php . "'"; + return (!$no_echo) ? $template_php : "\$$echo_var .= '" . $template_php . "'"; } /** @@ -229,33 +227,33 @@ class template_compile $varrefs = array(); // This one will handle varrefs WITH namespaces - preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $text_blocks, $varrefs); + preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $text_blocks, $varrefs, PREG_SET_ORDER); - for ($j = 0, $size = sizeof($varrefs[1]); $j < $size; $j++) + foreach ($varrefs as $var_val) { - $namespace = $varrefs[1][$j]; - $varname = $varrefs[3][$j]; - $new = $this->generate_block_varref($namespace, $varname, true, $varrefs[2][$j]); + $namespace = $var_val[1]; + $varname = $var_val[3]; + $new = $this->generate_block_varref($namespace, $varname, true, $var_val[2]); - $text_blocks = str_replace($varrefs[0][$j], $new, $text_blocks); + $text_blocks = str_replace($var_val[0], $new, $text_blocks); } // This will handle the remaining root-level varrefs // transform vars prefixed by L_ into their language variable pendant if nothing is set within the tpldata array if (strpos($text_blocks, '{L_') !== false) { - $text_blocks = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_tpldata['.'][0]['L_\\1'])) ? \$this->_tpldata['.'][0]['L_\\1'] : ((isset(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '{ ' . ucfirst(strtolower(str_replace('_', ' ', '\\1'))) . ' }')); ?>", $text_blocks); + $text_blocks = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_rootref['L_\\1'])) ? \$this->_rootref['L_\\1'] : ((isset(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '{ \\1 }')); ?>", $text_blocks); } // Handle addslashed language variables prefixed with LA_ // If a template variable already exist, it will be used in favor of it... if (strpos($text_blocks, '{LA_') !== false) { - $text_blocks = preg_replace('#\{LA_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_tpldata['.'][0]['LA_\\1'])) ? \$this->_tpldata['.'][0]['LA_\\1'] : ((isset(\$this->_tpldata['.'][0]['L_\\1'])) ? addslashes(\$this->_tpldata['.'][0]['L_\\1']) : ((isset(\$user->lang['\\1'])) ? addslashes(\$user->lang['\\1']) : '{ ' . ucfirst(strtolower(str_replace('_', ' ', '\\1'))) . ' }'))); ?>", $text_blocks); + $text_blocks = preg_replace('#\{LA_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_rootref['LA_\\1'])) ? \$this->_rootref['LA_\\1'] : ((isset(\$this->_rootref['L_\\1'])) ? addslashes(\$this->_rootref['L_\\1']) : ((isset(\$user->lang['\\1'])) ? addslashes(\$user->lang['\\1']) : '{ \\1 }'))); ?>", $text_blocks); } // Handle remaining varrefs - $text_blocks = preg_replace('#\{([a-z0-9\-_]*)\}#is', "<?php echo (isset(\$this->_tpldata['.'][0]['\\1'])) ? \$this->_tpldata['.'][0]['\\1'] : ''; ?>", $text_blocks); + $text_blocks = preg_replace('#\{([a-z0-9\-_]*)\}#is', "<?php echo (isset(\$this->_rootref['\\1'])) ? \$this->_rootref['\\1'] : ''; ?>", $text_blocks); $text_blocks = preg_replace('#\{\$([a-z0-9\-_]*)\}#is', "<?php echo (isset(\$this->_tpldata['DEFINE']['.']['\\1'])) ? \$this->_tpldata['DEFINE']['.']['\\1'] : ''; ?>", $text_blocks); return; @@ -317,25 +315,27 @@ class template_compile $tag_template_php = ''; array_push($this->block_names, $tag_args); - if (sizeof($this->block_names) < 2) + if ($no_nesting !== false) + { + // We need to implode $no_nesting times from the end... + $block = array_slice($this->block_names, -$no_nesting); + } + else + { + $block = $this->block_names; + } + + if (sizeof($block) < 2) { // Block is not nested. - $tag_template_php = '$_' . $tag_args . "_count = (isset(\$this->_tpldata['$tag_args'])) ? sizeof(\$this->_tpldata['$tag_args']) : 0;"; + $tag_template_php = '$_' . $tag_args . "_count = (isset(\$this->_tpldata['$tag_args'])) ? sizeof(\$this->_tpldata['$tag_args']) : 0;"; + $varref = "\$this->_tpldata['$tag_args']"; } else { // This block is nested. - // Generate a namespace string for this block. - if ($no_nesting !== false) - { - // We need to implode $no_nesting times from the end... - $namespace = implode('.', array_slice($this->block_names, -$no_nesting)); - } - else - { - $namespace = implode('.', $this->block_names); - } + $namespace = implode('.', $block); // Get a reference to the data array for this block that depends on the // current indices of all parent blocks. @@ -346,7 +346,19 @@ class template_compile } $tag_template_php .= 'if ($_' . $tag_args . '_count) {'; - $tag_template_php .= 'for ($this->_' . $tag_args . '_i = ' . $loop_start . '; $this->_' . $tag_args . '_i < ' . $loop_end . '; $this->_' . $tag_args . '_i++){'; + + /** + * The following uses foreach for iteration instead of a for loop, foreach is faster but requires PHP to make a copy of the contents of the array which uses more memory + * <code> + * if (!$offset) + * { + * $tag_template_php .= 'foreach (' . $varref . ' as $_' . $tag_args . '_i => $_' . $tag_args . '_val){'; + * } + * </code> + */ + + $tag_template_php .= 'for ($_' . $tag_args . '_i = ' . $loop_start . '; $_' . $tag_args . '_i < ' . $loop_end . '; ++$_' . $tag_args . '_i){'; + $tag_template_php .= '$_'. $tag_args . '_val = &' . $varref . '[$_'. $tag_args. '_i];'; return $tag_template_php; } @@ -464,14 +476,33 @@ class template_compile default: if (preg_match('#^((?:[a-z0-9\-_]+\.)+)?(\$)?(?=[A-Z])([A-Z0-9\-_]+)#s', $token, $varrefs)) { - $token = (!empty($varrefs[1])) ? $this->generate_block_data_ref(substr($varrefs[1], 0, -1), true, $varrefs[2]) . '[\'' . $varrefs[3] . '\']' : (($varrefs[2]) ? '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $varrefs[3] . '\']' : '$this->_tpldata[\'.\'][0][\'' . $varrefs[3] . '\']'); + $token = (!empty($varrefs[1])) ? $this->generate_block_data_ref(substr($varrefs[1], 0, -1), true, $varrefs[2]) . '[\'' . $varrefs[3] . '\']' : (($varrefs[2]) ? '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $varrefs[3] . '\']' : '$this->_rootref[\'' . $varrefs[3] . '\']'); } - else if (preg_match('#^\.(([a-z0-9\-_]+\.?)+)$#s', $token, $varrefs)) + else if (preg_match('#^\.((?:[a-z0-9\-_]+\.?)+)$#s', $token, $varrefs)) { // Allow checking if loops are set with .loopname // It is also possible to check the loop count by doing <!-- IF .loopname > 1 --> for example - $_tok = $this->generate_block_data_ref($varrefs[1], false); - $token = "sizeof($_tok)"; + $blocks = explode('.', $varrefs[1]); + + // If the block is nested, we have a reference that we can grab. + // If the block is not nested, we just go and grab the block from _tpldata + if (sizeof($blocks) > 1) + { + $block = array_pop($blocks); + $namespace = implode('.', $blocks); + $varref = $this->generate_block_data_ref($namespace, true); + + // Add the block reference for the last child. + $varref .= "['" . $block . "']"; + } + else + { + $varref = '$this->_tpldata'; + + // Add the block reference for the last child. + $varref .= "['" . $blocks[0] . "']"; + } + $token = "sizeof($varref)"; } break; @@ -491,7 +522,7 @@ class template_compile if (empty($match[2]) || (!isset($match[4]) && $op)) { - return; + return ''; } if (!$op) @@ -583,7 +614,7 @@ class template_compile } else { - $expr = "!($is_arg % 2)"; + $expr = "!($is_arg & 1)"; } break; @@ -596,7 +627,7 @@ class template_compile } else { - $expr = "($is_arg % 2)"; + $expr = "($is_arg & 1)"; } break; @@ -658,33 +689,42 @@ class template_compile // Get an array of the blocks involved. $blocks = explode('.', $blockname); $blockcount = sizeof($blocks) - 1; - $varref = '$this->_tpldata' . (($defop) ? '[\'DEFINE\']' : ''); - // Build up the string with everything but the last child. - for ($i = 0; $i < $blockcount; $i++) + // DEFINE is not an element of any referenced variable, we must use _tpldata to access it + if ($defop) + { + $varref = '$this->_tpldata[\'DEFINE\']'; + // Build up the string with everything but the last child. + for ($i = 0; $i < $blockcount; $i++) + { + $varref .= "['" . $blocks[$i] . "'][\$_" . $blocks[$i] . '_i]'; + } + // Add the block reference for the last child. + $varref .= "['" . $blocks[$blockcount] . "']"; + // Add the iterator for the last child if requried. + if ($include_last_iterator) + { + $varref .= '[$_' . $blocks[$blockcount] . '_i]'; + } + return $varref; + } + else if ($include_last_iterator) { - $varref .= "['" . $blocks[$i] . "'][\$this->_" . $blocks[$i] . '_i]'; + return '$_'. $blocks[$blockcount] . '_val'; } - - // Add the block reference for the last child. - $varref .= "['" . $blocks[$blockcount] . "']"; - - // Add the iterator for the last child if requried. - if ($include_last_iterator) + else { - $varref .= '[$this->_' . $blocks[$blockcount] . '_i]'; + return '$_'. $blocks[$blockcount - 1] . '_val[\''. $blocks[$blockcount]. '\']'; } - - return $varref; } /** * Write compiled file to cache directory * @access private */ - function compile_write(&$handle, $data) + function compile_write($handle, $data) { - global $phpEx, $user; + global $phpEx; $filename = $this->template->cachepath . str_replace('/', '.', $this->template->filename[$handle]) . '.' . $phpEx; diff --git a/phpBB/includes/functions_transfer.php b/phpBB/includes/functions_transfer.php index 00ef78f933..7be2e4acd6 100644 --- a/phpBB/includes/functions_transfer.php +++ b/phpBB/includes/functions_transfer.php @@ -32,8 +32,8 @@ class transfer { global $phpbb_root_path; - $this->file_perms = 644; - $this->dir_perms = 777; + $this->file_perms = '0644'; + $this->dir_perms = '0777'; // We use the store directory as temporary path to circumvent open basedir restrictions $this->tmp_path = $phpbb_root_path . 'store/'; @@ -52,7 +52,7 @@ class transfer // ftp functions can only move files around and can't create. // This means that the users will need to have access to write // temporary files or have write access on a folder within phpBB - // like the cache folder. If the user can't do either, then + // like the cache folder. If the user can't do either, then // he/she needs to use the fsock ftp method $temp_name = tempnam($this->tmp_path, 'transfer_'); @unlink($temp_name); @@ -196,7 +196,9 @@ class transfer global $phpbb_root_path; $directory = $this->root_path . str_replace($phpbb_root_path, '', $directory); - $result = $this->_ls($directory); + + $this->_chdir($directory); + $result = $this->_ls(''); if ($result !== false && is_array($result)) { @@ -263,7 +265,11 @@ class ftp extends transfer // Make sure $this->root_path is layed out the same way as the $user->page['root_script_path'] value (/ at the end) $this->root_path = str_replace('\\', '/', $this->root_path); - $this->root_path = (($root_path[0] != '/' ) ? '/' : '') . $root_path . ((substr($root_path, -1, 1) == '/') ? '' : '/'); + + if (!empty($root_path)) + { + $this->root_path = (($root_path[0] != '/' ) ? '/' : '') . $root_path . ((substr($root_path, -1, 1) == '/') ? '' : '/'); + } // Init some needed values transfer::transfer(); @@ -353,9 +359,12 @@ class ftp extends transfer */ function _chdir($dir = '') { - if (substr($dir, -1, 1) == '/') + if ($dir && $dir !== '/') { - $dir = substr($dir, 0, -1); + if (substr($dir, -1, 1) == '/') + { + $dir = substr($dir, 0, -1); + } } return @ftp_chdir($this->connection, $dir); @@ -373,7 +382,7 @@ class ftp extends transfer } else { - $chmod_cmd = 'CHMOD 0' . $perms . ' ' . $file; + $chmod_cmd = 'CHMOD ' . $perms . ' ' . $file; $err = $this->_site($chmod_cmd); } @@ -477,7 +486,11 @@ class ftp_fsock extends transfer // Make sure $this->root_path is layed out the same way as the $user->page['root_script_path'] value (/ at the end) $this->root_path = str_replace('\\', '/', $this->root_path); - $this->root_path = (($root_path[0] != '/' ) ? '/' : '') . $root_path . ((substr($root_path, -1, 1) == '/') ? '' : '/'); + + if (!empty($root_path)) + { + $this->root_path = (($root_path[0] != '/' ) ? '/' : '') . $root_path . ((substr($root_path, -1, 1) == '/') ? '' : '/'); + } // Init some needed values transfer::transfer(); @@ -575,9 +588,12 @@ class ftp_fsock extends transfer */ function _chdir($dir = '') { - if (substr($dir, -1, 1) == '/') + if ($dir && $dir !== '/') { - $dir = substr($dir, 0, -1); + if (substr($dir, -1, 1) == '/') + { + $dir = substr($dir, 0, -1); + } } return $this->_send_command('CWD', $dir); diff --git a/phpBB/includes/functions_upload.php b/phpBB/includes/functions_upload.php index ff32e4447d..489f3e942e 100644 --- a/phpBB/includes/functions_upload.php +++ b/phpBB/includes/functions_upload.php @@ -50,7 +50,8 @@ class filespec $this->filename = $upload_ary['tmp_name']; $this->filesize = $upload_ary['size']; - $this->realname = $this->uploadname = trim(htmlspecialchars(basename($upload_ary['name']))); + $name = trim(htmlspecialchars(basename($upload_ary['name']))); + $this->realname = $this->uploadname = (STRIP) ? stripslashes($name) : $name; $this->mimetype = $upload_ary['type']; // Opera adds the name to the mime type @@ -76,7 +77,7 @@ class filespec /** * Cleans destination filename * - * @param real|unique $mode real creates a realname, filtering some characters, lowering every character. Unique creates an unique filename + * @param real|unique|unique_ext $mode real creates a realname, filtering some characters, lowering every character. Unique creates an unique filename * @param string $prefix Prefix applied to filename * @access public */ @@ -106,6 +107,10 @@ class filespec break; case 'unique': + $this->realname = $prefix . md5(unique_id()); + break; + + case 'unique_ext': default: $this->realname = $prefix . md5(unique_id()) . '.' . $this->extension; break; @@ -182,6 +187,7 @@ class filespec /** * Get mimetype. Utilize mime_content_type if the function exist. + * Not used at the moment... */ function get_mimetype($filename) { @@ -214,10 +220,11 @@ class filespec * The phpbb_root_path variable will be applied to the destination path * * @param string $destination_path Destination path, for example $config['avatar_path'] + * @param bool $overwrite If set to true, an already existing file will be overwritten * @param octal $chmod Permission mask for chmodding the file after a successful move * @access public */ - function move_file($destination, $chmod = 0666) + function move_file($destination, $overwrite = false, $chmod = 0666) { global $user, $phpbb_root_path; @@ -241,62 +248,64 @@ class filespec $this->destination_file = $this->destination_path . '/' . basename($this->realname); // Check if the file already exist, else there is something wrong... - if (file_exists($this->destination_file)) + if (file_exists($this->destination_file) && !$overwrite) { @unlink($this->filename); - return false; } - - switch ($upload_mode) + else { - case 'copy': + if (file_exists($this->destination_file)) + { + @unlink($this->destination_file); + } + + switch ($upload_mode) + { + case 'copy': + + if (!@copy($this->filename, $this->destination_file)) + { + if (!@move_uploaded_file($this->filename, $this->destination_file)) + { + $this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'GENERAL_UPLOAD_ERROR'], $this->destination_file); + return false; + } + } + + @unlink($this->filename); + + break; + + case 'move': - if (!@copy($this->filename, $this->destination_file)) - { if (!@move_uploaded_file($this->filename, $this->destination_file)) { - $this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'GENERAL_UPLOAD_ERROR'], $this->destination_file); - return false; + if (!@copy($this->filename, $this->destination_file)) + { + $this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'GENERAL_UPLOAD_ERROR'], $this->destination_file); + return false; + } } - } - else - { + @unlink($this->filename); - } - break; + break; - case 'move': + case 'local': - if (!@move_uploaded_file($this->filename, $this->destination_file)) - { if (!@copy($this->filename, $this->destination_file)) { $this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'GENERAL_UPLOAD_ERROR'], $this->destination_file); return false; } - else - { - @unlink($this->filename); - } - } - - break; - - case 'local': + @unlink($this->filename); - if (!@copy($this->filename, $this->destination_file)) - { - $this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'GENERAL_UPLOAD_ERROR'], $this->destination_file); - return false; - } - @unlink($this->filename); + break; + } - break; + @chmod($this->destination_file, $chmod); } - @chmod($this->destination_file, $chmod); - // Try to get real filesize from destination folder $this->filesize = (@filesize($this->destination_file)) ? @filesize($this->destination_file) : $this->filesize; @@ -642,6 +651,9 @@ class fileupload $filename = $url['path']; $filesize = 0; + $errno = 0; + $errstr = ''; + if (!($fsock = @fsockopen($host, $port, $errno, $errstr))) { $file = new fileerror($user->lang[$this->error_prefix . 'NOT_UPLOADED']); @@ -670,11 +682,11 @@ class fileupload } else { - if (strpos($line, 'Content-Type: ') !== false) + if (stripos($line, 'content-type: ') !== false) { - $upload_ary['type'] = rtrim(str_replace('Content-Type: ', '', $line)); + $upload_ary['type'] = rtrim(str_replace('content-type: ', '', strtolower($line))); } - else if (strpos($line, '404 Not Found') !== false) + else if (stripos($line, '404 not found') !== false) { $file = new fileerror($user->lang[$this->error_prefix . 'URL_NOT_FOUND']); return $file; diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index d22add63ea..933124ce28 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -77,7 +77,7 @@ function update_last_username() global $db; // Get latest username - $sql = 'SELECT user_id, username + $sql = 'SELECT user_id, username, user_colour FROM ' . USERS_TABLE . ' WHERE user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') ORDER BY user_id DESC'; @@ -89,6 +89,7 @@ function update_last_username() { set_config('newest_user_id', $row['user_id'], true); set_config('newest_username', $row['username'], true); + set_config('newest_user_colour', $row['user_colour'], true); } } @@ -144,7 +145,7 @@ function user_add($user_row, $cp_data = false) 'user_password' => (isset($user_row['user_password'])) ? $user_row['user_password'] : '', 'user_pass_convert' => 0, 'user_email' => strtolower($user_row['user_email']), - 'user_email_hash' => (int) crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email']), + 'user_email_hash' => crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email']), 'group_id' => $user_row['group_id'], 'user_type' => $user_row['user_type'], ); @@ -244,7 +245,7 @@ function user_add($user_row, $cp_data = false) $db->sql_query($sql); // Now make it the users default group... - group_set_user_default($user_row['group_id'], array($user_id)); + group_set_user_default($user_row['group_id'], array($user_id), false); // set the newest user and adjust the user count if the user is a normal user and no activation mail is sent if ($user_row['user_type'] == USER_NORMAL) @@ -252,6 +253,15 @@ function user_add($user_row, $cp_data = false) set_config('newest_user_id', $user_id, true); set_config('newest_username', $user_row['username'], true); set_config('num_users', $config['num_users'] + 1, true); + + $sql = 'SELECT group_colour + FROM ' . GROUPS_TABLE . ' + WHERE group_id = ' . $user_row['group_id']; + $result = $db->sql_query_limit($sql, 1); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + set_config('newest_user_colour', $row['group_colour'], true); } return $user_id; @@ -265,6 +275,18 @@ function user_delete($mode, $user_id, $post_username = false) global $cache, $config, $db, $user, $auth; global $phpbb_root_path, $phpEx; + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . $user_id; + $result = $db->sql_query($sql); + $user_row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if (!$user_row) + { + return false; + } + $db->sql_transaction('begin'); switch ($mode) @@ -302,18 +324,12 @@ function user_delete($mode, $user_id, $post_username = false) $db->sql_query($sql); // Since we change every post by this author, we need to count this amount towards the anonymous user - $sql = 'SELECT user_posts - FROM ' . USERS_TABLE . ' - WHERE user_id = ' . $user_id; - $result = $db->sql_query($sql); - $num_posts = (int) $db->sql_fetchfield('user_posts'); - $db->sql_freeresult($result); // Update the post count for the anonymous user - if ($num_posts) + if ($user_row['user_posts']) { $sql = 'UPDATE ' . USERS_TABLE . ' - SET user_posts = user_posts + ' . $num_posts . ' + SET user_posts = user_posts + ' . $user_row['user_posts'] . ' WHERE user_id = ' . ANONYMOUS; $db->sql_query($sql); } @@ -323,7 +339,7 @@ function user_delete($mode, $user_id, $post_username = false) if (!function_exists('delete_posts')) { - include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx); + include($phpbb_root_path . 'includes/functions_admin.' . $phpEx); } $sql = 'SELECT topic_id, COUNT(post_id) AS total_posts @@ -381,8 +397,6 @@ function user_delete($mode, $user_id, $post_username = false) $cache->destroy('sql', MODERATOR_CACHE_TABLE); - include_once($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx); - // Remove any undelivered mails... $sql = 'SELECT msg_id, user_id FROM ' . PRIVMSGS_TO_TABLE . ' @@ -446,7 +460,11 @@ function user_delete($mode, $user_id, $post_username = false) update_last_username(); } - set_config('num_users', $config['num_users'] - 1, true); + // Decrement number of users if this user is active + if ($user_row['user_type'] != USER_INACTIVE && $user_row['user_type'] != USER_IGNORE) + { + set_config('num_users', $config['num_users'] - 1, true); + } $db->sql_transaction('commit'); @@ -728,19 +746,6 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas $ip_1_counter++; } } - else if (preg_match('#^([\w\-_]\.?){2,}$#is', trim($ban_item))) - { - // hostname - $ip_ary = gethostbynamel(trim($ban_item)); - - foreach ($ip_ary as $ip) - { - if ($ip) - { - $banlist_ary[] = $ip; - } - } - } else if (preg_match('#^([0-9]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})$#', trim($ban_item)) || preg_match('#^[a-f0-9:]+\*?$#i', trim($ban_item))) { // Normal IP address @@ -751,6 +756,27 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas // Ban all IPs $banlist_ary[] = "*"; } + else if (preg_match('#^([\w\-_]\.?){2,}$#is', trim($ban_item))) + { + // hostname + $ip_ary = gethostbynamel(trim($ban_item)); + + if (!empty($ip_ary)) + { + foreach ($ip_ary as $ip) + { + if ($ip) + { + if (strlen($ip) > 40) + { + continue; + } + + $banlist_ary[] = $ip; + } + } + } + } else { trigger_error('NO_IPS_DEFINED'); @@ -767,6 +793,11 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas if (preg_match('#^.*?@*|(([a-z0-9\-]+\.)+([a-z]{2,3}))$#i', $ban_item)) { + if (strlen($ban_item) > 100) + { + continue; + } + if (!sizeof($founder) || !in_array($ban_item, $founder)) { $banlist_ary[] = $ban_item; @@ -786,12 +817,17 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas } // Fetch currently set bans of the specified type and exclude state. Prevent duplicate bans. + $sql_where = ($type == 'ban_userid') ? 'ban_userid <> 0' : "$type <> ''"; + $sql = "SELECT $type FROM " . BANLIST_TABLE . " - WHERE $type <> '' + WHERE $sql_where AND ban_exclude = $ban_exclude"; $result = $db->sql_query($sql); + // Reset $sql_where, because we use it later... + $sql_where = ''; + if ($row = $db->sql_fetchrow($result)) { $banlist_ary_tmp = array(); @@ -1117,20 +1153,24 @@ function validate_match($string, $optional = false, $match) * Also checks if it includes the " character, which we don't allow in usernames. * Used for registering, changing names, and posting anonymously with a username * +* @param string $username The username to check +* @param string $allowed_username An allowed username, default being $user->data['username'] +* * @return mixed Either false if validation succeeded or a string which will be used as the error message (with the variable name appended) */ -function validate_username($username) +function validate_username($username, $allowed_username = false) { global $config, $db, $user, $cache; $clean_username = utf8_clean_string($username); + $allowed_username = ($allowed_username === false) ? $user->data['username_clean'] : utf8_clean_string($allowed_username); - if (utf8_clean_string($user->data['username']) == $clean_username) + if ($allowed_username == $clean_username) { return false; } - if (!preg_match('#^' . str_replace('\\\\', '\\', $config['allow_name_chars']) . '$#i', $username) || strpos($username, '"') !== false || strpos($username, '"') !== false) + if (!preg_match('#^' . str_replace('\\\\', '\\', $config['allow_name_chars']) . '$#ui', $username) || strpos($username, '"') !== false || strpos($username, '"') !== false) { return 'INVALID_CHARS'; } @@ -1159,7 +1199,6 @@ function validate_username($username) return 'USERNAME_TAKEN'; } - $bad_usernames = $cache->obtain_disallowed_usernames(); foreach ($bad_usernames as $bad_username) @@ -1171,7 +1210,7 @@ function validate_username($username) } $sql = 'SELECT word - FROM ' . WORDS_TABLE; + FROM ' . WORDS_TABLE; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) @@ -1201,10 +1240,51 @@ function validate_password($password) return false; } - // We only check for existance of characters - if (!preg_match('#' . str_replace('\\\\', '\\', $config['pass_complex']) . '#i', $password)) + // generic UTF-8 character types supported? + if (version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) { - return 'INVALID_CHARS'; + $upp = '\p{Lu}'; + $low = '\p{Ll}'; + $num = '\p{N}'; + $sym = '[^\p{Lu}\p{Ll}\p{N}]'; + } + else + { + $upp = '[A-Z]'; + $low = '[a-z]'; + $num = '[0-9]'; + $sym = '[^A-Za-z0-9]'; + } + + $chars = array(); + + switch ($config['pass_complex']) + { + case 'PASS_TYPE_CASE': + $chars[] = $low; + $chars[] = $upp; + break; + + case 'PASS_TYPE_ALPHA': + $chars[] = $low; + $chars[] = $upp; + $chars[] = $num; + break; + + case 'PASS_TYPE_SYMBOL': + $chars[] = $low; + $chars[] = $upp; + $chars[] = $num; + $chars[] = $sym; + break; + } + + foreach ($chars as $char) + { + if (!preg_match('#' . $char . '#u', $password)) + { + return 'INVALID_CHARS'; + } } return false; @@ -1213,15 +1293,19 @@ function validate_password($password) /** * Check to see if email address is banned or already present in the DB * -* @return boolean|string Either false if validation succeeded or a string which will be used as the error message (with the variable name appended) +* @param string $email The email to check +* @param string $allowed_email An allowed email, default being $user->data['user_email'] +* +* @return mixed Either false if validation succeeded or a string which will be used as the error message (with the variable name appended) */ -function validate_email($email) +function validate_email($email, $allowed_email = false) { global $config, $db, $user; $email = strtolower($email); + $allowed_email = ($allowed_email === false) ? strtolower($user->data['user_email']) : strtolower($allowed_email); - if (strtolower($user->data['user_email']) == $email) + if ($allowed_email == $email) { return false; } @@ -1237,7 +1321,7 @@ function validate_email($email) { list(, $domain) = explode('@', $email); - if (phpbb_checkdnsrr($domain, 'MX') === false) + if (phpbb_checkdnsrr($domain, 'A') === false && phpbb_checkdnsrr($domain, 'MX') === false) { return 'DOMAIN_NO_MX_RECORD'; } @@ -1252,7 +1336,7 @@ function validate_email($email) { $sql = 'SELECT user_email_hash FROM ' . USERS_TABLE . " - WHERE user_email_hash = " . crc32($email) . strlen($email); + WHERE user_email_hash = " . (crc32($email) . strlen($email)); $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); @@ -1388,9 +1472,10 @@ function avatar_upload($data, &$error) $destination = $config['avatar_path']; - if ($destination{(sizeof($destination)-1)} == '/' || $destination{(sizeof($destination)-1)} == '\\') + // Adjust destination path (no trailing slash) + if (substr($destination, -1, 1) == '/' || substr($destination, -1, 1) == '\\') { - $destination = substr($destination, 0, sizeof($destination)-2); + $destination = substr($destination, 0, -1); } $destination = str_replace(array('../', '..\\', './', '.\\'), '', $destination); @@ -1399,7 +1484,8 @@ function avatar_upload($data, &$error) $destination = ''; } - $file->move_file($destination); + // Move file and overwrite any existing image + $file->move_file($destination, true); if (sizeof($file->error)) { @@ -1507,6 +1593,127 @@ function avatar_gallery($category, $avatar_select, $items_per_column, $block_var return $avatar_list; } +/** +* Uploading/Changing user avatar +*/ +function avatar_process_user(&$error, $custom_userdata = false) +{ + global $config, $phpbb_root_path, $auth, $user, $db; + + $data = array( + 'uploadurl' => request_var('uploadurl', ''), + 'remotelink' => request_var('remotelink', ''), + 'width' => request_var('width', ''), + 'height' => request_var('height', ''), + ); + + $error = validate_data($data, array( + 'uploadurl' => array('string', true, 5, 255), + 'remotelink' => array('string', true, 5, 255), + 'width' => array('string', true, 1, 3), + 'height' => array('string', true, 1, 3), + )); + + if (sizeof($error)) + { + return false; + } + + $sql_ary = array(); + $data['user_id'] = ($custom_userdata === false) ? $user->data['user_id'] : $custom_userdata['user_id']; + $change_avatar = ($custom_userdata === false) ? $auth->acl_get('u_chgavatar') : true; + $avatar_select = basename(request_var('avatar_select', '')); + + // Can we upload? + $can_upload = ($config['allow_avatar_upload'] && file_exists($phpbb_root_path . $config['avatar_path']) && is_writeable($phpbb_root_path . $config['avatar_path']) && $change_avatar && (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on')) ? true : false; + + if ((!empty($_FILES['uploadfile']['name']) || $data['uploadurl']) && $can_upload) + { + list($sql_ary['user_avatar_type'], $sql_ary['user_avatar'], $sql_ary['user_avatar_width'], $sql_ary['user_avatar_height']) = avatar_upload($data, $error); + } + else if ($data['remotelink'] && $change_avatar && $config['allow_avatar_remote']) + { + list($sql_ary['user_avatar_type'], $sql_ary['user_avatar'], $sql_ary['user_avatar_width'], $sql_ary['user_avatar_height']) = avatar_remote($data, $error); + } + else if ($avatar_select && $change_avatar && $config['allow_avatar_local']) + { + $category = basename(request_var('category', '')); + + $sql_ary['user_avatar_type'] = AVATAR_GALLERY; + $sql_ary['user_avatar'] = $avatar_select; + + // check avatar gallery + if (!is_dir($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category)) + { + $sql_ary['user_avatar'] = ''; + $sql_ary['user_avatar_type'] = $sql_ary['user_avatar_width'] = $sql_ary['user_avatar_height'] = 0; + } + else + { + list($sql_ary['user_avatar_width'], $sql_ary['user_avatar_height']) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . $sql_ary['user_avatar']); + $sql_ary['user_avatar'] = $category . '/' . $sql_ary['user_avatar']; + } + } + else if (isset($_POST['delete']) && $change_avatar) + { + $sql_ary['user_avatar'] = ''; + $sql_ary['user_avatar_type'] = $sql_ary['user_avatar_width'] = $sql_ary['user_avatar_height'] = 0; + } + else if ($data['width'] && $data['height']) + { + // Only update the dimensions? + if ($config['avatar_max_width'] || $config['avatar_max_height']) + { + if ($data['width'] > $config['avatar_max_width'] || $data['height'] > $config['avatar_max_height']) + { + $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']); + } + } + + if (!sizeof($error)) + { + if ($config['avatar_min_width'] || $config['avatar_min_height']) + { + if ($data['width'] < $config['avatar_min_width'] || $data['height'] < $config['avatar_min_height']) + { + $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']); + } + } + } + + if (!sizeof($error)) + { + $sql_ary['user_avatar_width'] = $data['width']; + $sql_ary['user_avatar_height'] = $data['height']; + } + } + + if (!sizeof($error)) + { + // Do we actually have any data to update? + if (sizeof($sql_ary)) + { + $sql = 'UPDATE ' . USERS_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' + WHERE user_id = ' . (($custom_userdata === false) ? $user->data['user_id'] : $custom_userdata['user_id']); + $db->sql_query($sql); + + if (isset($sql_ary['user_avatar'])) + { + $userdata = ($custom_userdata === false) ? $user->data : $custom_userdata; + + // Delete old avatar if present + if ($userdata['user_avatar'] && $sql_ary['user_avatar'] != $userdata['user_avatar'] && $userdata['user_avatar_type'] != AVATAR_GALLERY) + { + avatar_delete('user', $userdata); + } + } + } + } + + return (sizeof($error)) ? false : true; +} + // // Usergroup functions // @@ -1592,12 +1799,19 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow $sql = 'UPDATE ' . GROUPS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE group_id = $group_id"; + $db->sql_query($sql); + + // Since we may update the name too, we need to do this on other tables too... + $sql = 'UPDATE ' . MODERATOR_CACHE_TABLE . " + SET group_name = '" . $db->sql_escape($sql_ary['group_name']) . "' + WHERE group_id = $group_id"; + $db->sql_query($sql); } else { $sql = 'INSERT INTO ' . GROUPS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $db->sql_query($sql); } - $db->sql_query($sql); if (!$group_id) { @@ -1635,7 +1849,6 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow { $user_ary[] = $row['user_id']; } - $db->sql_freeresult($result); if (sizeof($user_ary)) @@ -1646,6 +1859,8 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow $name = ($type == GROUP_SPECIAL) ? $user->lang['G_' . $name] : $name; add_log('admin', $log, $name); + + group_update_listings($group_id); } return (sizeof($error)) ? $error : false; @@ -1934,6 +2149,8 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false, add_log('admin', $log, $group_name, implode(', ', $username_ary)); + group_update_listings($group_id); + // Return false - no error return false; } @@ -1973,7 +2190,7 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna case 'approve': // Make sure we only approve those which are pending ;) - $sql = 'SELECT u.user_id, u.user_email, u.username, u.user_notify_type, u.user_jabber, u.user_lang + $sql = 'SELECT u.user_id, u.user_email, u.username, u.username_clean, u.user_notify_type, u.user_jabber, u.user_lang FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . ' ug WHERE ug.group_id = ' . $group_id . ' AND ug.user_pending = 1 @@ -2008,7 +2225,6 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna { $messenger->template('group_approved', $row['user_lang']); - $messenger->replyto($config['board_email']); $messenger->to($row['user_email'], $row['username']); $messenger->im($row['user_jabber'], $row['username']); @@ -2037,13 +2253,17 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna add_log('admin', $log, $group_name, implode(', ', $username_ary)); + group_update_listings($group_id); + return true; } /** * Set users default group +* +* @private */ -function group_set_user_default($group_id, $user_id_ary, $group_attributes = false) +function group_set_user_default($group_id, $user_id_ary, $group_attributes = false, $update_listing = false) { global $db; @@ -2126,6 +2346,18 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal $sql = 'UPDATE ' . TOPICS_TABLE . " SET topic_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "' WHERE " . $db->sql_in_set('topic_last_poster_id', $user_id_ary); $db->sql_query($sql); + + global $config; + + if (in_array($config['newest_user_id'], $user_id_ary)) + { + set_config('newest_user_colour', $sql_ary['user_colour'], true); + } + } + + if ($update_listing) + { + group_update_listings($group_id); } } @@ -2176,7 +2408,7 @@ function group_memberships($group_id_ary = false, $user_id_ary = false, $return_ $group_id_ary = (!is_array($group_id_ary)) ? array($group_id_ary) : $group_id_ary; } - $sql = 'SELECT ug.*, u.username, u.user_email + $sql = 'SELECT ug.*, u.username, u.username_clean, u.user_email FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u WHERE ug.user_id = u.user_id AND '; diff --git a/phpBB/includes/mcp/mcp_ban.php b/phpBB/includes/mcp/mcp_ban.php index 510943aa45..aea2466888 100644 --- a/phpBB/includes/mcp/mcp_ban.php +++ b/phpBB/includes/mcp/mcp_ban.php @@ -43,17 +43,23 @@ class mcp_ban $ban_reason = request_var('banreason', '', true); $ban_give_reason = request_var('bangivereason', '', true); - user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason); + if ($ban) + { + user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason); - trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">« ' . $user->lang['BACK_TO_PREV'] . '</a>'); + trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">« ' . $user->lang['BACK_TO_PREV'] . '</a>'); + } } else if ($unbansubmit) { $ban = request_var('unban', array('')); - user_unban($mode, $ban); + if ($ban) + { + user_unban($mode, $ban); - trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">« ' . $user->lang['BACK_TO_PREV'] . '</a>'); + trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">« ' . $user->lang['BACK_TO_PREV'] . '</a>'); + } } // Ban length options @@ -104,8 +110,41 @@ class mcp_ban 'U_ACTION' => $this->u_action, 'U_FIND_USER' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp_ban&field=ban'), - ) - ); + )); + + if ($mode != 'user') + { + return; + } + + // As a "service" we will check if any post id is specified and populate the username of the poster id if given + $post_id = request_var('p', 0); + $user_id = request_var('u', 0); + $username = false; + + if ($user_id && $user_id <> ANONYMOUS) + { + $sql = 'SELECT username + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . $user_id; + $result = $db->sql_query($sql); + $username = (string) $db->sql_fetchfield('username'); + $db->sql_freeresult($result); + } + else if ($post_id) + { + $post_info = get_post_data($post_id, 'm_ban'); + + if (sizeof($post_info) && !empty($post_info[$post_id])) + { + $username = $post_info[$post_id]['username']; + } + } + + if ($username) + { + $template->assign_var('USERNAMES', $username); + } } } diff --git a/phpBB/includes/mcp/mcp_forum.php b/phpBB/includes/mcp/mcp_forum.php index bf9ef5280d..cf41df646d 100644 --- a/phpBB/includes/mcp/mcp_forum.php +++ b/phpBB/includes/mcp/mcp_forum.php @@ -13,9 +13,11 @@ */ function mcp_forum_view($id, $mode, $action, $forum_info) { - global $template, $db, $user, $auth, $cache; + global $template, $db, $user, $auth, $cache, $module; global $phpEx, $phpbb_root_path, $config; + $user->add_lang('viewtopic'); + include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx); $url = append_sid("{$phpbb_root_path}mcp.$phpEx?" . extra_url()); @@ -78,9 +80,12 @@ function mcp_forum_view($id, $mode, $action, $forum_info) 'S_CAN_SYNC' => $auth->acl_get('m_', $forum_id), 'S_CAN_APPROVE' => $auth->acl_get('m_approve', $forum_id), 'S_MERGE_SELECT' => ($action == 'merge_select') ? true : false, + 'S_CAN_MAKE_NORMAL' => $auth->acl_gets('f_sticky', 'f_announce', $forum_id), + 'S_CAN_MAKE_STICKY' => $auth->acl_get('f_sticky', $forum_id), + 'S_CAN_MAKE_ANNOUNCE' => $auth->acl_get('f_announce', $forum_id), 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id), - 'U_VIEW_FORUM_LOGS' => ($auth->acl_gets('a_', 'm_', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=logs&mode=forum_logs&f=' . $forum_id) : '', + 'U_VIEW_FORUM_LOGS' => ($auth->acl_gets('a_', 'm_', $forum_id) && $module->loaded('logs')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=logs&mode=forum_logs&f=' . $forum_id) : '', 'S_MCP_ACTION' => $url . "&i=$id&mode=$mode&start=$start" . (($action == 'merge_select') ? $selected_ids : ''), @@ -94,8 +99,18 @@ function mcp_forum_view($id, $mode, $action, $forum_info) $topic_rows = array(); - $sql = 'SELECT t.* - FROM ' . TOPICS_TABLE . " t + if ($config['load_db_lastread']) + { + $read_tracking_join = ' LEFT JOIN ' . TOPICS_TRACK_TABLE . ' tt ON (tt.topic_id = t.topic_id AND tt.user_id = ' . $user->data['user_id'] . ')'; + $read_tracking_select = ', tt.mark_time'; + } + else + { + $read_tracking_join = $read_tracking_select = ''; + } + + $sql = "SELECT t.*$read_tracking_select + FROM " . TOPICS_TABLE . " t $read_tracking_join WHERE (t.forum_id = $forum_id OR t.forum_id = 0) " . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND t.topic_approved = 1') . " $limit_time_sql @@ -104,19 +119,40 @@ function mcp_forum_view($id, $mode, $action, $forum_info) while ($row = $db->sql_fetchrow($result)) { - $topic_rows[] = $row; + $topic_rows[$row['topic_id']] = $row; + $topic_list[] = $row['topic_id']; } $db->sql_freeresult($result); - foreach ($topic_rows as $row) + $topic_tracking_info = array(); + // Get topic tracking info + if ($config['load_db_lastread']) + { + $topic_tracking_info = get_topic_tracking($forum_id, $topic_list, $topic_rows, array($forum_id => $forum_info['mark_time']), array()); + } + else + { + $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_list, array()); + } + + foreach ($topic_rows as $topic_id => $row) { $topic_title = ''; $replies = ($auth->acl_get('m_approve', $forum_id)) ? $row['topic_replies_real'] : $row['topic_replies']; + if ($row['topic_status'] == ITEM_MOVED) + { + $unread_topic = false; + } + else + { + $unread_topic = (isset($topic_tracking_info[$topic_id]) && $row['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false; + } + // Get folder img, topic status/type related information $folder_img = $folder_alt = $topic_type = ''; - topic_status($row, $replies, false, $folder_img, $folder_alt, $topic_type); + topic_status($row, $replies, $unread_topic, $folder_img, $folder_alt, $topic_type); $topic_title = censor_text($row['topic_title']); @@ -124,14 +160,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info) $posts_unapproved = ($row['topic_approved'] && $row['topic_replies'] < $row['topic_replies_real'] && $auth->acl_get('m_approve', $row['forum_id'])) ? true : false; $u_mcp_queue = ($topic_unapproved || $posts_unapproved) ? $url . '&i=queue&mode=' . (($topic_unapproved) ? 'approve_details' : 'unapproved_posts') . '&t=' . $row['topic_id'] : ''; - $template->assign_block_vars('topicrow', array( - 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&f=$forum_id&t={$row['topic_id']}&mode=topic_view"), - - 'S_SELECT_TOPIC' => ($action == 'merge_select' && $row['topic_id'] != $topic_id) ? true : false, - 'U_SELECT_TOPIC' => $url . "&i=$id&mode=topic_view&action=merge&to_topic_id=" . $row['topic_id'] . $selected_ids, - 'U_MCP_QUEUE' => $u_mcp_queue, - 'U_MCP_REPORT' => ($auth->acl_get('m_report', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=topic_view&t=' . $row['topic_id'] . '&action=reports') : '', - + $topic_row = array( 'ATTACH_ICON_IMG' => ($auth->acl_get('u_download') && $auth->acl_get('f_download', $row['forum_id']) && $row['topic_attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '', 'TOPIC_FOLDER_IMG' => $user->img($folder_img, $folder_alt), 'TOPIC_FOLDER_IMG_SRC' => $user->img($folder_img, $folder_alt, false, '', 'src'), @@ -154,16 +183,40 @@ function mcp_forum_view($id, $mode, $action, $forum_info) 'TOPIC_TITLE' => $topic_title, 'REPLIES' => ($auth->acl_get('m_approve', $row['forum_id'])) ? $row['topic_replies_real'] : $row['topic_replies'], 'LAST_POST_TIME' => $user->format_date($row['topic_last_post_time']), - 'TOPIC_ID' => $row['topic_id'], - 'S_TOPIC_CHECKED' => ($topic_id_list && in_array($row['topic_id'], $topic_id_list)) ? 'checked="checked" ' : '', 'FIRST_POST_TIME' => $user->format_date($row['topic_time']), 'LAST_POST_SUBJECT' => $row['topic_last_post_subject'], 'LAST_VIEW_TIME' => $user->format_date($row['topic_last_view_time']), 'S_TOPIC_REPORTED' => (!empty($row['topic_reported']) && $auth->acl_get('m_report', $row['forum_id'])) ? true : false, 'S_TOPIC_UNAPPROVED' => $topic_unapproved, - 'S_POSTS_UNAPPROVED' => $posts_unapproved) + 'S_POSTS_UNAPPROVED' => $posts_unapproved, + 'S_UNREAD_TOPIC' => $unread_topic, ); + + if ($row['topic_status'] == ITEM_MOVED) + { + $topic_row = array_merge($topic_row, array( + 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t={$row['topic_moved_id']}"), + 'U_DELETE_TOPIC' => ($auth->acl_get('m_delete', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&f=$forum_id&topic_id_list[]={$row['topic_id']}&mode=forum_view&action=delete_topic") : '', + 'S_MOVED_TOPIC' => true, + 'TOPIC_ID' => $row['topic_moved_id'], + )); + } + else + { + $topic_row = array_merge($topic_row, array( + 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&f=$forum_id&t={$row['topic_id']}&mode=topic_view"), + + 'S_SELECT_TOPIC' => ($action == 'merge_select' && $row['topic_id'] != $topic_id) ? true : false, + 'U_SELECT_TOPIC' => $url . "&i=$id&mode=topic_view&action=merge&to_topic_id=" . $row['topic_id'] . $selected_ids, + 'U_MCP_QUEUE' => $u_mcp_queue, + 'U_MCP_REPORT' => ($auth->acl_get('m_report', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=topic_view&t=' . $row['topic_id'] . '&action=reports') : '', + 'TOPIC_ID' => $row['topic_id'], + 'S_TOPIC_CHECKED' => ($topic_id_list && in_array($row['topic_id'], $topic_id_list)) ? true : false, + )); + } + + $template->assign_block_vars('topicrow', $topic_row); } unset($topic_rows); } @@ -180,7 +233,7 @@ function mcp_resync_topics($topic_ids) trigger_error($user->lang['NO_TOPIC_SELECTED']); } - if (check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_'))) + if (!check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_'))) { return; } diff --git a/phpBB/includes/mcp/mcp_front.php b/phpBB/includes/mcp/mcp_front.php index acfedb583f..6904d6dfd1 100644 --- a/phpBB/includes/mcp/mcp_front.php +++ b/phpBB/includes/mcp/mcp_front.php @@ -14,227 +14,241 @@ function mcp_front_view($id, $mode, $action) { global $phpEx, $phpbb_root_path, $config; - global $template, $db, $user, $auth; + global $template, $db, $user, $auth, $module; // Latest 5 unapproved - $forum_list = get_forum_list('m_approve'); - $post_list = array(); - $forum_names = array(); + if ($module->loaded('queue')) + { + $forum_list = get_forum_list('m_approve'); + $post_list = array(); + $forum_names = array(); - $forum_id = request_var('f', 0); + $forum_id = request_var('f', 0); - $template->assign_var('S_SHOW_UNAPPROVED', (!empty($forum_list)) ? true : false); - - if (!empty($forum_list)) - { - $sql = 'SELECT COUNT(post_id) AS total - FROM ' . POSTS_TABLE . ' - WHERE forum_id IN (0, ' . implode(', ', $forum_list) . ') - AND post_approved = 0'; - $result = $db->sql_query($sql); - $total = (int) $db->sql_fetchfield('total'); - $db->sql_freeresult($result); - - if ($total) + $template->assign_var('S_SHOW_UNAPPROVED', (!empty($forum_list)) ? true : false); + + if (!empty($forum_list)) { - $global_id = $forum_list[0]; - - $sql = 'SELECT forum_id, forum_name - FROM ' . FORUMS_TABLE . ' - WHERE ' . $db->sql_in_set('forum_id', $forum_list); + $sql = 'SELECT COUNT(post_id) AS total + FROM ' . POSTS_TABLE . ' + WHERE forum_id IN (0, ' . implode(', ', $forum_list) . ') + AND post_approved = 0'; $result = $db->sql_query($sql); + $total = (int) $db->sql_fetchfield('total'); + $db->sql_freeresult($result); - while ($row = $db->sql_fetchrow($result)) + if ($total) { - $forum_names[$row['forum_id']] = $row['forum_name']; - } - $db->sql_freeresult($result); + $global_id = $forum_list[0]; - $sql = 'SELECT post_id - FROM ' . POSTS_TABLE . ' - WHERE forum_id IN (0, ' . implode(', ', $forum_list) . ') - AND post_approved = 0 - ORDER BY post_time DESC'; - $result = $db->sql_query_limit($sql, 5); + $sql = 'SELECT forum_id, forum_name + FROM ' . FORUMS_TABLE . ' + WHERE ' . $db->sql_in_set('forum_id', $forum_list); + $result = $db->sql_query($sql); - while ($row = $db->sql_fetchrow($result)) - { - $post_list[] = $row['post_id']; - } - $db->sql_freeresult($result); + while ($row = $db->sql_fetchrow($result)) + { + $forum_names[$row['forum_id']] = $row['forum_name']; + } + $db->sql_freeresult($result); - $sql = 'SELECT p.post_id, p.post_subject, p.post_time, p.poster_id, p.post_username, u.username, t.topic_id, t.topic_title, t.topic_first_post_id, p.forum_id - FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u - WHERE ' . $db->sql_in_set('p.post_id', $post_list) . ' - AND t.topic_id = p.topic_id - AND p.poster_id = u.user_id - ORDER BY p.post_time DESC'; - $result = $db->sql_query($sql); + $sql = 'SELECT post_id + FROM ' . POSTS_TABLE . ' + WHERE forum_id IN (0, ' . implode(', ', $forum_list) . ') + AND post_approved = 0 + ORDER BY post_time DESC'; + $result = $db->sql_query_limit($sql, 5); - while ($row = $db->sql_fetchrow($result)) - { - $global_topic = ($row['forum_id']) ? false : true; - if ($global_topic) + while ($row = $db->sql_fetchrow($result)) { - $row['forum_id'] = $global_id; + $post_list[] = $row['post_id']; } + $db->sql_freeresult($result); - $template->assign_block_vars('unapproved', array( - 'U_POST_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=post_details&f=' . $row['forum_id'] . '&p=' . $row['post_id']), - 'U_MCP_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=forum_view&f=' . $row['forum_id']) : '', - 'U_MCP_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=topic_view&f=' . $row['forum_id'] . '&t=' . $row['topic_id']), - 'U_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']) : '', - 'U_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id']), - 'U_AUTHOR' => ($row['poster_id'] == ANONYMOUS) ? '' : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['poster_id']), - - 'FORUM_NAME' => (!$global_topic) ? $forum_names[$row['forum_id']] : $user->lang['GLOBAL_ANNOUNCEMENT'], - 'TOPIC_TITLE' => $row['topic_title'], - 'AUTHOR' => ($row['poster_id'] == ANONYMOUS) ? (($row['post_username']) ? $row['post_username'] : $user->lang['GUEST']) : $row['username'], - 'SUBJECT' => ($row['post_subject']) ? $row['post_subject'] : $user->lang['NO_SUBJECT'], - 'POST_TIME' => $user->format_date($row['post_time'])) - ); + $sql = 'SELECT p.post_id, p.post_subject, p.post_time, p.poster_id, p.post_username, u.username, u.username_clean, t.topic_id, t.topic_title, t.topic_first_post_id, p.forum_id + FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u + WHERE ' . $db->sql_in_set('p.post_id', $post_list) . ' + AND t.topic_id = p.topic_id + AND p.poster_id = u.user_id + ORDER BY p.post_time DESC'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $global_topic = ($row['forum_id']) ? false : true; + if ($global_topic) + { + $row['forum_id'] = $global_id; + } + + $template->assign_block_vars('unapproved', array( + 'U_POST_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=approve_details&f=' . $row['forum_id'] . '&p=' . $row['post_id']), + 'U_MCP_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=forum_view&f=' . $row['forum_id']) : '', + 'U_MCP_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=topic_view&f=' . $row['forum_id'] . '&t=' . $row['topic_id']), + 'U_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']) : '', + 'U_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id']), + 'U_AUTHOR' => ($row['poster_id'] == ANONYMOUS) ? '' : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['poster_id']), + + 'FORUM_NAME' => (!$global_topic) ? $forum_names[$row['forum_id']] : $user->lang['GLOBAL_ANNOUNCEMENT'], + 'POST_ID' => $row['post_id'], + 'TOPIC_TITLE' => $row['topic_title'], + 'AUTHOR' => ($row['poster_id'] == ANONYMOUS) ? (($row['post_username']) ? $row['post_username'] : $user->lang['GUEST']) : $row['username'], + 'SUBJECT' => ($row['post_subject']) ? $row['post_subject'] : $user->lang['NO_SUBJECT'], + 'POST_TIME' => $user->format_date($row['post_time'])) + ); + } + $db->sql_freeresult($result); } - $db->sql_freeresult($result); - } - if ($total == 0) - { $template->assign_vars(array( - 'L_UNAPPROVED_TOTAL' => $user->lang['UNAPPROVED_POSTS_ZERO_TOTAL'], - 'S_HAS_UNAPPROVED_POSTS' => false) - ); - } - else - { - $template->assign_vars(array( - 'L_UNAPPROVED_TOTAL' => ($total == 1) ? $user->lang['UNAPPROVED_POST_TOTAL'] : sprintf($user->lang['UNAPPROVED_POSTS_TOTAL'], $total), - 'S_HAS_UNAPPROVED_POSTS' => true) - ); + 'S_MCP_QUEUE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue"), + )); + + if ($total == 0) + { + $template->assign_vars(array( + 'L_UNAPPROVED_TOTAL' => $user->lang['UNAPPROVED_POSTS_ZERO_TOTAL'], + 'S_HAS_UNAPPROVED_POSTS' => false) + ); + } + else + { + $template->assign_vars(array( + 'L_UNAPPROVED_TOTAL' => ($total == 1) ? $user->lang['UNAPPROVED_POST_TOTAL'] : sprintf($user->lang['UNAPPROVED_POSTS_TOTAL'], $total), + 'S_HAS_UNAPPROVED_POSTS' => true) + ); + } } } // Latest 5 reported - $forum_list = get_forum_list('m_report'); + if ($module->loaded('reports')) + { + $forum_list = get_forum_list('m_report'); - $template->assign_var('S_SHOW_REPORTS', (!empty($forum_list)) ? true : false); + $template->assign_var('S_SHOW_REPORTS', (!empty($forum_list)) ? true : false); - if (!empty($forum_list)) - { - $sql = 'SELECT COUNT(r.report_id) AS total - FROM ' . REPORTS_TABLE . ' r, ' . POSTS_TABLE . ' p - WHERE r.post_id = p.post_id - AND r.report_closed = 0 - AND p.forum_id IN (0, ' . implode(', ', $forum_list) . ')'; - $result = $db->sql_query($sql); - $total = (int) $db->sql_fetchfield('total'); - $db->sql_freeresult($result); - - if ($total) + if (!empty($forum_list)) { - $global_id = $forum_list[0]; - - $sql = $db->sql_build_query('SELECT', array( - 'SELECT' => 'r.report_time, p.post_id, p.post_subject, u.username, u.user_colour, u.user_id, t.topic_id, t.topic_title, f.forum_id, f.forum_name', - - 'FROM' => array( - REPORTS_TABLE => 'r', - REPORTS_REASONS_TABLE => 'rr', - TOPICS_TABLE => 't', - USERS_TABLE => 'u', - POSTS_TABLE => 'p' - ), - - 'LEFT_JOIN' => array( - array( - 'FROM' => array(FORUMS_TABLE => 'f'), - 'ON' => 'f.forum_id = p.forum_id' - ) - ), - - 'WHERE' => 'r.post_id = p.post_id + $sql = 'SELECT COUNT(r.report_id) AS total + FROM ' . REPORTS_TABLE . ' r, ' . POSTS_TABLE . ' p + WHERE r.post_id = p.post_id AND r.report_closed = 0 - AND r.reason_id = rr.reason_id - AND p.topic_id = t.topic_id - AND r.user_id = u.user_id - AND p.forum_id IN (0, ' . implode(', ', $forum_list) . ')', - - 'ORDER_BY' => 'p.post_time DESC' - )); - $result = $db->sql_query_limit($sql, 5); + AND p.forum_id IN (0, ' . implode(', ', $forum_list) . ')'; + $result = $db->sql_query($sql); + $total = (int) $db->sql_fetchfield('total'); + $db->sql_freeresult($result); - while ($row = $db->sql_fetchrow($result)) + if ($total) { - $global_topic = ($row['forum_id']) ? false : true; - if ($global_topic) + $global_id = $forum_list[0]; + + $sql = $db->sql_build_query('SELECT', array( + 'SELECT' => 'r.report_time, p.post_id, p.post_subject, u.username, u.username_clean, u.user_colour, u.user_id, t.topic_id, t.topic_title, f.forum_id, f.forum_name', + + 'FROM' => array( + REPORTS_TABLE => 'r', + REPORTS_REASONS_TABLE => 'rr', + TOPICS_TABLE => 't', + USERS_TABLE => 'u', + POSTS_TABLE => 'p' + ), + + 'LEFT_JOIN' => array( + array( + 'FROM' => array(FORUMS_TABLE => 'f'), + 'ON' => 'f.forum_id = p.forum_id' + ) + ), + + 'WHERE' => 'r.post_id = p.post_id + AND r.report_closed = 0 + AND r.reason_id = rr.reason_id + AND p.topic_id = t.topic_id + AND r.user_id = u.user_id + AND p.forum_id IN (0, ' . implode(', ', $forum_list) . ')', + + 'ORDER_BY' => 'p.post_time DESC' + )); + $result = $db->sql_query_limit($sql, 5); + + while ($row = $db->sql_fetchrow($result)) { - $row['forum_id'] = $global_id; + $global_topic = ($row['forum_id']) ? false : true; + if ($global_topic) + { + $row['forum_id'] = $global_id; + } + + $template->assign_block_vars('report', array( + 'U_POST_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . '&p=' . $row['post_id'] . "&i=reports&mode=report_details"), + 'U_MCP_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . "&i=$id&mode=forum_view") : '', + 'U_MCP_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id'] . "&i=$id&mode=topic_view"), + 'U_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']) : '', + 'U_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id']), + + 'REPORTER_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']), + 'REPORTER' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), + 'REPORTER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), + 'U_REPORTER' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']), + + 'FORUM_NAME' => (!$global_topic) ? $row['forum_name'] : $user->lang['GLOBAL_ANNOUNCEMENT'], + 'TOPIC_TITLE' => $row['topic_title'], + 'SUBJECT' => ($row['post_subject']) ? $row['post_subject'] : $user->lang['NO_SUBJECT'], + 'REPORT_TIME' => $user->format_date($row['report_time'])) + ); } + } - $template->assign_block_vars('report', array( - 'U_POST_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . '&p=' . $row['post_id'] . "&i=reports&mode=report_details"), - 'U_MCP_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . "&i=$id&mode=forum_view") : '', - 'U_MCP_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id'] . "&i=$id&mode=topic_view"), - 'U_FORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']) : '', - 'U_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id']), - - 'REPORTER_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']), - 'REPORTER' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), - 'REPORTER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), - 'U_REPORTER' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']), - - 'FORUM_NAME' => (!$global_topic) ? $row['forum_name'] : $user->lang['GLOBAL_ANNOUNCEMENT'], - 'TOPIC_TITLE' => $row['topic_title'], - 'SUBJECT' => ($row['post_subject']) ? $row['post_subject'] : $user->lang['NO_SUBJECT'], - 'REPORT_TIME' => $user->format_date($row['report_time'])) + if ($total == 0) + { + $template->assign_vars(array( + 'L_REPORTS_TOTAL' => $user->lang['REPORTS_ZERO_TOTAL'], + 'S_HAS_REPORTS' => false) + ); + } + else + { + $template->assign_vars(array( + 'L_REPORTS_TOTAL' => ($total == 1) ? $user->lang['REPORT_TOTAL'] : sprintf($user->lang['REPORTS_TOTAL'], $total), + 'S_HAS_REPORTS' => true) ); } - } - - if ($total == 0) - { - $template->assign_vars(array( - 'L_REPORTS_TOTAL' => $user->lang['REPORTS_ZERO_TOTAL'], - 'S_HAS_REPORTS' => false) - ); - } - else - { - $template->assign_vars(array( - 'L_REPORTS_TOTAL' => ($total == 1) ? $user->lang['REPORT_TOTAL'] : sprintf($user->lang['REPORTS_TOTAL'], $total), - 'S_HAS_REPORTS' => true) - ); } } // Latest 5 logs - $forum_list = get_forum_list(array('m_', 'a_')); - - if (!empty($forum_list)) + if ($module->loaded('logs')) { - // Add forum_id 0 for global announcements - $forum_list[] = 0; - - $log_count = 0; - $log = array(); - view_log('mod', $log, $log_count, 5, 0, $forum_list); + $forum_list = get_forum_list(array('m_', 'a_')); - foreach ($log as $row) + if (!empty($forum_list)) { - $template->assign_block_vars('log', array( - 'USERNAME' => $row['username_full'], - 'IP' => $row['ip'], - 'TIME' => $user->format_date($row['time']), - 'ACTION' => $row['action'], - 'U_VIEW_TOPIC' => (!empty($row['viewtopic'])) ? $row['viewtopic'] : '', - 'U_VIEWLOGS' => (!empty($row['viewlogs'])) ? $row['viewlogs'] : '') - ); + // Add forum_id 0 for global announcements + $forum_list[] = 0; + + $log_count = 0; + $log = array(); + view_log('mod', $log, $log_count, 5, 0, $forum_list); + + foreach ($log as $row) + { + $template->assign_block_vars('log', array( + 'USERNAME' => $row['username_full'], + 'IP' => $row['ip'], + 'TIME' => $user->format_date($row['time']), + 'ACTION' => $row['action'], + 'U_VIEW_TOPIC' => (!empty($row['viewtopic'])) ? $row['viewtopic'] : '', + 'U_VIEWLOGS' => (!empty($row['viewlogs'])) ? $row['viewlogs'] : '') + ); + } } - } - $template->assign_vars(array( - 'S_SHOW_LOGS' => (!empty($forum_list)) ? true : false, - 'S_HAS_LOGS' => (!empty($log)) ? true : false) - ); + $template->assign_vars(array( + 'S_SHOW_LOGS' => (!empty($forum_list)) ? true : false, + 'S_HAS_LOGS' => (!empty($log)) ? true : false) + ); + } $template->assign_var('S_MCP_ACTION', append_sid("{$phpbb_root_path}mcp.$phpEx")); make_jumpbox(append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=forum_view'), 0, false, 'm_'); diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index a59d965300..e10a2f7990 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -145,7 +145,7 @@ class mcp_main $forum_id = request_var('f', 0); - $forum_info = get_forum_data($forum_id, 'm_'); + $forum_info = get_forum_data($forum_id, 'm_', true); if (!sizeof($forum_info)) { @@ -226,7 +226,7 @@ function lock_unlock($action, $ids) } unset($orig_ids); - $redirect = request_var('redirect', build_url(array('_f_', 'action'))); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); $s_hidden_fields = build_hidden_fields(array( $sql_id . '_list' => $ids, @@ -312,13 +312,13 @@ function change_topic_type($action, $topic_ids) break; } - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); - $s_hidden_fields = build_hidden_fields(array( + $s_hidden_fields = array( 'topic_id_list' => $topic_ids, 'f' => $forum_id, 'action' => $action, - 'redirect' => $redirect) + 'redirect' => $redirect, ); $success_msg = ''; @@ -333,22 +333,24 @@ function change_topic_type($action, $topic_ids) $db->sql_query($sql); // Reset forum id if a global topic is within the array - if ($forum_id) + $to_forum_id = request_var('to_forum_id', 0); + + if ($to_forum_id) { $sql = 'UPDATE ' . TOPICS_TABLE . " - SET topic_type = $new_topic_type, forum_id = $forum_id + SET topic_type = $new_topic_type, forum_id = $to_forum_id WHERE " . $db->sql_in_set('topic_id', $topic_ids) . ' AND forum_id = 0'; $db->sql_query($sql); // Update forum_ids for all posts $sql = 'UPDATE ' . POSTS_TABLE . " - SET forum_id = $forum_id + SET forum_id = $to_forum_id WHERE " . $db->sql_in_set('topic_id', $topic_ids) . ' AND forum_id = 0'; $db->sql_query($sql); - sync('forum', 'forum_id', $forum_id); + sync('forum', 'forum_id', $to_forum_id); } } else @@ -403,7 +405,41 @@ function change_topic_type($action, $topic_ids) } else { - confirm_box(false, $l_new_type, $s_hidden_fields); + // Global topic involved? + $global_involved = false; + + if ($new_topic_type != POST_GLOBAL) + { + $sql = 'SELECT forum_id + FROM ' . TOPICS_TABLE . ' + WHERE ' . $db->sql_in_set('topic_id', $topic_ids) . ' + AND forum_id = 0'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if ($row) + { + $global_involved = true; + } + } + + if ($global_involved) + { + global $template; + + $template->assign_vars(array( + 'S_FORUM_SELECT' => make_forum_select(request_var('f', $forum_id), false, false, true, true), + 'S_CAN_LEAVE_SHADOW' => false, + 'ADDITIONAL_MSG' => (sizeof($topic_ids) == 1) ? $user->lang['SELECT_FORUM_GLOBAL_ANNOUNCEMENT'] : $user->lang['SELECT_FORUM_GLOBAL_ANNOUNCEMENTS']) + ); + + confirm_box(false, $l_new_type, build_hidden_fields($s_hidden_fields), 'mcp_move.html'); + } + else + { + confirm_box(false, $l_new_type, build_hidden_fields($s_hidden_fields)); + } } $redirect = request_var('redirect', "index.$phpEx"); @@ -437,7 +473,7 @@ function mcp_move_topic($topic_ids) } $to_forum_id = request_var('to_forum_id', 0); - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); $additional_msg = $success_msg = ''; $s_hidden_fields = build_hidden_fields(array( @@ -591,7 +627,7 @@ function mcp_delete_topic($topic_ids) return; } - $redirect = request_var('redirect', build_url(array('_f_', 'action'))); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); $forum_id = request_var('f', 0); $s_hidden_fields = build_hidden_fields(array( @@ -647,7 +683,7 @@ function mcp_delete_post($post_ids) return; } - $redirect = request_var('redirect', build_url(array('_f_', 'action'))); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); $forum_id = request_var('f', 0); $s_hidden_fields = build_hidden_fields(array( @@ -769,8 +805,8 @@ function mcp_fork_topic($topic_ids) } $to_forum_id = request_var('to_forum_id', 0); - $forum_id = request_var('forum_id', 0); - $redirect = request_var('redirect', build_url(array('_f_', 'action'))); + $forum_id = request_var('f', 0); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); $additional_msg = $success_msg = ''; $s_hidden_fields = build_hidden_fields(array( @@ -940,6 +976,7 @@ function mcp_fork_topic($topic_ids) 'post_msg_id' => (int) $new_post_id, 'topic_id' => (int) $new_topic_id, 'in_message' => 0, + 'is_orphan' => (int) $attach_row['is_orphan'], 'poster_id' => (int) $attach_row['poster_id'], 'physical_filename' => (string) basename($attach_row['physical_filename']), 'real_filename' => (string) basename($attach_row['real_filename']), diff --git a/phpBB/includes/mcp/mcp_notes.php b/phpBB/includes/mcp/mcp_notes.php index 84bba18bb7..1b3c36ac22 100755 --- a/phpBB/includes/mcp/mcp_notes.php +++ b/phpBB/includes/mcp/mcp_notes.php @@ -41,7 +41,8 @@ class mcp_notes { case 'front': $template->assign_vars(array( - 'U_FIND_MEMBER' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp&field=username'), + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp&field=username&select_single=true'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp&field=username&select_single=true', false), 'U_POST_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&mode=user_notes'), 'L_TITLE' => $user->lang['MCP_NOTES']) @@ -130,6 +131,8 @@ class mcp_notes if ($usernote && $action == 'add_feedback') { add_log('admin', 'LOG_USER_FEEDBACK', $userrow['username']); + add_log('mod', 0, 0, 'LOG_USER_FEEDBACK', $userrow['username']); + add_log('user', $user_id, 'LOG_USER_GENERAL', $usernote); $redirect = $this->u_action . '&u=' . $user_id; diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index a1cc7f4331..67f5472134 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -22,7 +22,7 @@ function mcp_post_details($id, $mode, $action) $start = request_var('start', 0); // Get post data - $post_info = get_post_data(array($post_id)); + $post_info = get_post_data(array($post_id), false, true); if (!sizeof($post_info)) { @@ -38,12 +38,12 @@ function mcp_post_details($id, $mode, $action) $ip = request_var('ip', ''); include($phpbb_root_path . 'includes/functions_user.' . $phpEx); - + $whois = user_ipwhois($ip); - + $whois = preg_replace('#(\s)([\w\-\._\+]+@[\w\-\.]+)(\s)#', '\1<a href="mailto:\2">\2</a>\3', $whois); - $whois = preg_replace('#(\s)(http:/{2}[^\s]*)(\s)#', '\1<a href="\2">\2</a>\3', $whois); - + $whois = preg_replace('#(\s)(ht{2}p:/{2}\S*)(\s)#', '\1<a href="\2">\2</a>\3', $whois); + $template->assign_vars(array( 'RETURN_POST' => sprintf($user->lang['RETURN_POST'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&p=$post_id") . '">', '</a>'), 'WHOIS' => trim($whois)) @@ -91,6 +91,21 @@ function mcp_post_details($id, $mode, $action) // Set some vars $users_ary = $usernames_ary = array(); $post_id = $post_info['post_id']; + $topic_tracking_info = array(); + + // Get topic tracking info + if ($config['load_db_lastread']) + { + $tmp_topic_data = array($post_info['topic_id'] => $post_info); + $topic_tracking_info = get_topic_tracking($post_info['forum_id'], $post_info['topic_id'], $tmp_topic_data, array($post_info['forum_id'] => $post_info['forum_mark_time'])); + unset($tmp_topic_data); + } + else + { + $topic_tracking_info = get_complete_topic_tracking($post_info['forum_id'], $post_info['topic_id']); + } + + $post_unread = (isset($topic_tracking_info[$post_info['topic_id']]) && $post_info['post_time'] > $topic_tracking_info[$post_info['topic_id']]) ? true : false; // Process message, leave it uncensored $message = $post_info['post_text']; @@ -119,14 +134,17 @@ function mcp_post_details($id, $mode, $action) 'S_CLEAR_ALLOWED' => ($auth->acl_get('a_clearlogs')) ? true : false, 'U_EDIT' => ($auth->acl_get('m_edit', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=edit&f={$post_info['forum_id']}&p={$post_info['post_id']}") : '', - 'U_FIND_MEMBER' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp_chgposter&field=username'), + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp_chgposter&field=username&select_single=true'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp_chgposter&field=username&select_single=true', false), 'U_MCP_APPROVE' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=approve_details&f=' . $post_info['forum_id'] . '&p=' . $post_id), 'U_MCP_REPORT' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=report_details&f=' . $post_info['forum_id'] . '&p=' . $post_id), 'U_MCP_USER_NOTES' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&mode=user_notes&u=' . $post_info['user_id']), 'U_MCP_WARN_USER' => ($auth->acl_getf_global('m_warn')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&mode=warn_user&u=' . $post_info['user_id']) : '', 'U_VIEW_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&p=' . $post_info['post_id'] . '#p' . $post_info['post_id']), 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&t=' . $post_info['topic_id']), - + + 'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'), + 'RETURN_TOPIC' => sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$post_info['forum_id']}&p=$post_id") . "#p$post_id\">", '</a>'), 'RETURN_FORUM' => sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", "f={$post_info['forum_id']}&start={$start}") . '">', '</a>'), 'REPORTED_IMG' => $user->img('icon_topic_reported', $user->lang['POST_REPORTED']), @@ -144,8 +162,10 @@ function mcp_post_details($id, $mode, $action) 'POST_DATE' => $user->format_date($post_info['post_time']), 'POST_IP' => $post_info['poster_ip'], 'POST_IPADDR' => @gethostbyaddr($post_info['poster_ip']), - 'POST_ID' => $post_info['post_id']) - ); + 'POST_ID' => $post_info['post_id'], + + 'U_WHOIS' => ($auth->acl_get('m_info', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$post_info['poster_ip']}") : '', + )); // Get User Notes $log_data = array(); @@ -273,9 +293,9 @@ function mcp_post_details($id, $mode, $action) $sql = 'SELECT poster_ip, COUNT(poster_ip) AS postings FROM ' . POSTS_TABLE . ' - WHERE poster_id = ' . $post_info['poster_id'] . ' + WHERE poster_id = ' . $post_info['poster_id'] . " GROUP BY poster_ip - ORDER BY postings DESC'; + ORDER BY postings DESC"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) @@ -316,7 +336,7 @@ function mcp_post_details($id, $mode, $action) */ function change_poster(&$post_info, $userdata) { - global $auth, $db, $config; + global $auth, $db, $config, $phpbb_root_path, $phpEx; if (empty($userdata) || $userdata['user_id'] == $post_info['user_id']) { diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php index df23bcd98f..6378295191 100644 --- a/phpBB/includes/mcp/mcp_queue.php +++ b/phpBB/includes/mcp/mcp_queue.php @@ -50,11 +50,11 @@ class mcp_queue if ($action == 'approve') { - approve_post($post_id_list, $mode); + approve_post($post_id_list, 'queue', $mode); } else { - disapprove_post($post_id_list, $mode); + disapprove_post($post_id_list, 'queue', $mode); } break; @@ -82,7 +82,7 @@ class mcp_queue } } - $post_info = get_post_data(array($post_id), 'm_approve'); + $post_info = get_post_data(array($post_id), 'm_approve', true); if (!sizeof($post_info)) { @@ -99,6 +99,21 @@ class mcp_queue ); } + $topic_tracking_info = array(); + // Get topic tracking info + if ($config['load_db_lastread']) + { + $tmp_topic_data = array($post_info['topic_id'] => $post_info); + $topic_tracking_info = get_topic_tracking($post_info['forum_id'], $post_info['topic_id'], $tmp_topic_data, array($post_info['forum_id'] => $post_info['forum_mark_time'])); + unset($tmp_topic_data); + } + else + { + $topic_tracking_info = get_complete_topic_tracking($post_info['forum_id'], $post_info['topic_id']); + } + + $post_unread = (isset($topic_tracking_info[$post_info['topic_id']]) && $post_info['post_time'] > $topic_tracking_info[$post_info['topic_id']]) ? true : false; + // Process message, leave it uncensored $message = $post_info['post_text']; $message = str_replace("\n", '<br />', $message); @@ -110,6 +125,9 @@ class mcp_queue } $message = smiley_text($message); + $post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&p=' . $post_info['post_id'] . '#p' . $post_info['post_id']); + $topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&t=' . $post_info['topic_id']); + $template->assign_vars(array( 'S_MCP_QUEUE' => true, 'S_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f=$forum_id"), @@ -124,10 +142,14 @@ class mcp_queue 'U_MCP_REPORT' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=report_details&f=' . $post_info['forum_id'] . '&p=' . $post_id), 'U_MCP_USER_NOTES' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&mode=user_notes&u=' . $post_info['user_id']), 'U_MCP_WARN_USER' => ($auth->acl_getf_global('m_warn')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&mode=warn_user&u=' . $post_info['user_id']) : '', - 'U_VIEW_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&p=' . $post_info['post_id'] . '#p' . $post_info['post_id']), - 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&t=' . $post_info['topic_id']), + 'U_VIEW_POST' => $post_url, + 'U_VIEW_TOPIC' => $topic_url, + + 'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'), 'RETURN_QUEUE' => sprintf($user->lang['RETURN_QUEUE'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue' . (($topic_id) ? '&mode=unapproved_topics' : '&mode=unapproved_posts')) . "&start=$start\">", '</a>'), + 'RETURN_POST' => sprintf($user->lang['RETURN_POST'], '<a href="' . $post_url . '">', '</a>'), + 'RETURN_TOPIC_SIMPLE' => sprintf($user->lang['RETURN_TOPIC_SIMPLE'], '<a href="' . $topic_url . '">', '</a>'), 'REPORTED_IMG' => $user->img('icon_topic_reported', $user->lang['POST_REPORTED']), 'UNAPPROVED_IMG' => $user->img('icon_topic_unapproved', $user->lang['POST_UNAPPROVED']), 'EDIT_IMG' => $user->img('icon_post_edit', $user->lang['EDIT_POST']), @@ -248,7 +270,7 @@ class mcp_queue if (sizeof($post_ids)) { - $sql = 'SELECT t.topic_id, t.topic_title, t.forum_id, p.post_id, p.post_subject, p.post_username, p.poster_id, p.post_time, u.username, u.user_colour + $sql = 'SELECT t.topic_id, t.topic_title, t.forum_id, p.post_id, p.post_subject, p.post_username, p.poster_id, p.post_time, u.username, u.username_clean, u.user_colour FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u WHERE ' . $db->sql_in_set('p.post_id', $post_ids) . ' AND t.topic_id = p.topic_id @@ -372,7 +394,7 @@ class mcp_queue /** * Approve Post/Topic */ -function approve_post($post_id_list, $mode) +function approve_post($post_id_list, $id, $mode) { global $db, $template, $user, $config; global $phpEx, $phpbb_root_path; @@ -382,11 +404,11 @@ function approve_post($post_id_list, $mode) trigger_error('NOT_AUTHORIZED'); } - $redirect = request_var('redirect', build_url(array('_f_'))); + $redirect = request_var('redirect', build_url(array('_f_', 'quickmod'))); $success_msg = ''; $s_hidden_fields = build_hidden_fields(array( - 'i' => 'queue', + 'i' => $id, 'mode' => $mode, 'post_id_list' => $post_id_list, 'action' => 'approve', @@ -544,7 +566,6 @@ function approve_post($post_id_list, $mode) $messenger->template($email_template, $post_data['user_lang']); - $messenger->replyto($config['board_email']); $messenger->to($post_data['user_email'], $post_data['username']); $messenger->im($post_data['user_jabber'], $post_data['username']); @@ -617,7 +638,7 @@ function approve_post($post_id_list, $mode) /** * Disapprove Post/Topic */ -function disapprove_post($post_id_list, $mode) +function disapprove_post($post_id_list, $id, $mode) { global $db, $template, $user, $config; global $phpEx, $phpbb_root_path; @@ -627,13 +648,13 @@ function disapprove_post($post_id_list, $mode) trigger_error('NOT_AUTHORIZED'); } - $redirect = request_var('redirect', build_url(array('t', 'mode', '_f_')) . '&mode=unapproved_topics'); + $redirect = request_var('redirect', build_url(array('t', 'mode', '_f_', 'quickmod')) . '&mode=unapproved_topics'); $reason = request_var('reason', '', true); $reason_id = request_var('reason_id', 0); $success_msg = $additional_msg = ''; $s_hidden_fields = build_hidden_fields(array( - 'i' => 'queue', + 'i' => $id, 'mode' => $mode, 'post_id_list' => $post_id_list, 'action' => 'disapprove', @@ -767,7 +788,6 @@ function disapprove_post($post_id_list, $mode) $messenger->template($email_template, $post_data['user_lang']); - $messenger->replyto($config['board_email']); $messenger->to($post_data['user_email'], $post_data['username']); $messenger->im($post_data['user_jabber'], $post_data['username']); diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php index 7a84c872a5..78fa02cccc 100755 --- a/phpBB/includes/mcp/mcp_reports.php +++ b/phpBB/includes/mcp/mcp_reports.php @@ -64,7 +64,7 @@ class mcp_reports // closed reports are accessed by report id $report_id = request_var('r', 0); - $sql = 'SELECT r.post_id, r.user_id, r.report_closed, report_time, r.report_text, rr.reason_title, rr.reason_description, u.username, u.user_colour + $sql = 'SELECT r.post_id, r.user_id, r.report_closed, report_time, r.report_text, rr.reason_title, rr.reason_description, u.username, u.username_clean, u.user_colour FROM ' . REPORTS_TABLE . ' r, ' . REPORTS_REASONS_TABLE . ' rr, ' . USERS_TABLE . ' u WHERE ' . (($report_id) ? 'r.report_id = ' . $report_id : "r.post_id = $post_id AND r.report_closed = 0") . ' AND rr.reason_id = r.reason_id @@ -83,7 +83,7 @@ class mcp_reports $post_id = $report['post_id']; } - $post_info = get_post_data(array($post_id), 'm_report'); + $post_info = get_post_data(array($post_id), 'm_report', true); if (!sizeof($post_info)) { @@ -107,13 +107,27 @@ class mcp_reports ); } + $topic_tracking_info = array(); + // Get topic tracking info + if ($config['load_db_lastread']) + { + $tmp_topic_data = array($post_info['topic_id'] => $post_info); + $topic_tracking_info = get_topic_tracking($post_info['forum_id'], $post_info['topic_id'], $tmp_topic_data, array($post_info['forum_id'] => $post_info['forum_mark_time'])); + unset($tmp_topic_data); + } + else + { + $topic_tracking_info = get_complete_topic_tracking($post_info['forum_id'], $post_info['topic_id']); + } + + $post_unread = (isset($topic_tracking_info[$post_info['topic_id']]) && $post_info['post_time'] > $topic_tracking_info[$post_info['topic_id']]) ? true : false; + // Process message, leave it uncensored $message = $post_info['post_text']; $message = str_replace("\n", '<br />', $message); if ($post_info['bbcode_bitfield']) { include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx); - $bbcode = new bbcode($post_info['bbcode_bitfield']); $bbcode->bbcode_second_pass($message, $post_info['bbcode_uid'], $post_info['bbcode_bitfield']); } @@ -139,6 +153,7 @@ class mcp_reports 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&t=' . $post_info['topic_id']), 'EDIT_IMG' => $user->img('icon_post_edit', $user->lang['EDIT_POST']), + 'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'), 'UNAPPROVED_IMG' => $user->img('icon_topic_unapproved', $user->lang['POST_UNAPPROVED']), 'RETURN_REPORTS' => sprintf($user->lang['RETURN_REPORTS'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports' . (($post_info['post_reported']) ? '&mode=reports' : '&mode=reports_closed') . '&start=' . $start . '&f=' . $post_info['forum_id']) . '">', '</a>'), @@ -279,7 +294,7 @@ class mcp_reports if (sizeof($report_ids)) { - $sql = 'SELECT t.forum_id, t.topic_id, t.topic_title, p.post_id, p.post_subject, p.post_username, p.poster_id, p.post_time, u.username, u.user_colour, r.user_id as reporter_id, ru.username as reporter_name, ru.user_colour as reporter_colour, r.report_time, r.report_id + $sql = 'SELECT t.forum_id, t.topic_id, t.topic_title, p.post_id, p.post_subject, p.post_username, p.poster_id, p.post_time, u.username, u.username_clean, u.user_colour, r.user_id as reporter_id, ru.username as reporter_name, ru.user_colour as reporter_colour, r.report_time, r.report_id FROM ' . REPORTS_TABLE . ' r, ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u, ' . USERS_TABLE . ' ru WHERE ' . $db->sql_in_set('r.report_id', $report_ids) . ' AND t.topic_id = p.topic_id @@ -337,7 +352,9 @@ class mcp_reports 'PAGINATION' => generate_pagination($this->u_action . "&f=$forum_id&t=$topic_id", $total, $config['topics_per_page'], $start), 'PAGE_NUMBER' => on_page($total, $config['topics_per_page'], $start), 'TOPIC_ID' => $topic_id, - 'TOTAL' => $total) + 'TOTAL' => $total, + 'TOTAL_REPORTS' => ($total == 1) ? $user->lang['LIST_REPORT'] : sprintf($user->lang['LIST_REPORTS'], $total), + ) ); $this->tpl_name = 'mcp_reports'; @@ -361,15 +378,15 @@ function close_report($post_id_list, $mode, $action) if ($action == 'delete' && strpos($user->data['session_page'], 'mode=report_details') !== false) { - $redirect = request_var('redirect', build_url(array('mode', '_f_', 'r')) . '&mode=reports'); + $redirect = request_var('redirect', build_url(array('mode', '_f_', 'r', 'quickmod')) . '&mode=reports'); } else if ($action == 'close' && !request_var('r', 0)) { - $redirect = request_var('redirect', build_url(array('mode', '_f_', 'p')) . '&mode=reports'); + $redirect = request_var('redirect', build_url(array('mode', '_f_', 'p', 'quickmod')) . '&mode=reports'); } else { - $redirect = request_var('redirect', build_url(array('_f_'))); + $redirect = request_var('redirect', build_url(array('_f_', 'quickmod'))); } $success_msg = ''; @@ -385,7 +402,7 @@ function close_report($post_id_list, $mode, $action) { $post_info = get_post_data($post_id_list, 'm_report'); - $sql = 'SELECT r.post_id, r.report_closed, r.user_id, r.user_notify, u.username, u.user_email, u.user_jabber, u.user_lang, u.user_notify_type + $sql = 'SELECT r.post_id, r.report_closed, r.user_id, r.user_notify, u.username, u.username_clean, u.user_email, u.user_jabber, u.user_lang, u.user_notify_type FROM ' . REPORTS_TABLE . ' r, ' . USERS_TABLE . ' u WHERE ' . $db->sql_in_set('r.post_id', array_keys($post_info)) . ' ' . (($action == 'close') ? 'AND r.report_closed = 0' : '') . ' @@ -482,7 +499,6 @@ function close_report($post_id_list, $mode, $action) $messenger->template('report_' . $action . 'd', $reporter['user_lang']); - $messenger->replyto($config['board_email']); $messenger->to($reporter['user_email'], $reporter['username']); $messenger->im($reporter['user_jabber'], $reporter['username']); diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index ae4ed9850c..716b7a1529 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -21,7 +21,7 @@ function mcp_topic_view($id, $mode, $action) $user->add_lang('viewtopic'); $topic_id = request_var('t', 0); - $topic_info = get_topic_data(array($topic_id)); + $topic_info = get_topic_data(array($topic_id), false, true); if (!sizeof($topic_info)) { @@ -57,6 +57,21 @@ function mcp_topic_view($id, $mode, $action) $subject = $topic_info['topic_title']; } + // Approve posts? + if ($action == 'approve' && $auth->acl_get('m_approve', $topic_info['forum_id'])) + { + include($phpbb_root_path . 'includes/mcp/mcp_queue.' . $phpEx); + include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); + include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); + + if (!sizeof($post_id_list)) + { + trigger_error('NO_POST_SELECTED'); + } + + approve_post($post_id_list, $id, $mode); + } + // Jumpbox, sort selects and that kind of things make_jumpbox($url . "&i=$id&mode=forum_view", $topic_info['forum_id'], false, 'm_'); $where_sql = ($action == 'reports') ? 'WHERE post_reported = 1 AND ' : 'WHERE'; @@ -79,7 +94,7 @@ function mcp_topic_view($id, $mode, $action) $posts_per_page = $total; } - $sql = 'SELECT u.username, u.user_colour, p.* + $sql = 'SELECT u.username, u.username_clean, u.user_colour, p.* FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u WHERE ' . (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . ' p.topic_id = ' . $topic_id . ' ' . @@ -103,6 +118,20 @@ function mcp_topic_view($id, $mode, $action) $bbcode = new bbcode(base64_encode($bbcode_bitfield)); } + $topic_tracking_info = array(); + + // Get topic tracking info + if ($config['load_db_lastread']) + { + $tmp_topic_data = array($topic_id => $topic_info); + $topic_tracking_info = get_topic_tracking($topic_info['forum_id'], $topic_id, $tmp_topic_data, array($topic_info['forum_id'] => $topic_info['forum_mark_time'])); + unset($tmp_topic_data); + } + else + { + $topic_tracking_info = get_complete_topic_tracking($topic_info['forum_id'], $topic_id); + } + foreach ($rowset as $i => $row) { $has_unapproved_posts = false; @@ -123,6 +152,8 @@ function mcp_topic_view($id, $mode, $action) $has_unapproved_posts = true; } + $post_unread = (isset($topic_tracking_info[$topic_id]) && $row['post_time'] > $topic_tracking_info[$topic_id]) ? true : false; + $template->assign_block_vars('postrow', array( 'POST_AUTHOR_FULL' => get_username_string('full', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']), 'POST_AUTHOR_COLOUR' => get_username_string('colour', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']), @@ -135,7 +166,7 @@ function mcp_topic_view($id, $mode, $action) 'POST_ID' => $row['post_id'], 'RETURN_TOPIC' => sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $topic_id) . '">', '</a>'), - 'MINI_POST_IMG' => ($row['post_time'] > $user->data['user_lastvisit'] && $user->data['is_registered']) ? $user->img('icon_post_target_unread', $user->lang['NEW_POST']) : $user->img('icon_post_target', $user->lang['POST']), + 'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'), 'S_POST_REPORTED' => ($row['post_reported']) ? true : false, 'S_POST_UNAPPROVED' => ($row['post_approved']) ? false : true, @@ -280,7 +311,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject) return; } - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'quickmod'))); $s_hidden_fields = build_hidden_fields(array( 'i' => 'main', @@ -371,6 +402,12 @@ function split_topic($action, $topic_id, $to_forum_id, $subject) $to_topic_id = $db->sql_nextid(); move_posts($post_id_list, $to_topic_id); + $topic_info = get_post_data(array($topic_id)); + $topic_info = $topic_info[$topic_id]; + + add_log('mod', $to_forum_id, $to_topic_id, 'LOG_SPLIT_DESTINATION', $subject); + add_log('mod', $forum_id, $topic_id, 'LOG_SPLIT_SOURCE', $topic_info['topic_title']); + // Change topic title of first post $sql = 'UPDATE ' . POSTS_TABLE . " SET post_subject = '" . $db->sql_escape($subject) . "' @@ -438,7 +475,7 @@ function merge_posts($topic_id, $to_topic_id) return; } - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'quickmod'))); $s_hidden_fields = build_hidden_fields(array( 'i' => 'main', @@ -463,13 +500,18 @@ function merge_posts($topic_id, $to_topic_id) $success_msg = 'POSTS_MERGED_SUCCESS'; // Does the original topic still exist? If yes, link back to it - $topic_data = get_topic_data(array($topic_id)); + $sql = 'SELECT forum_id + FROM ' . TOPICS_TABLE . ' + WHERE topic_id = ' . $topic_id; + $result = $db->sql_query_limit($sql, 1); - if (sizeof($topic_data)) + if ($row = $db->sql_fetchrow($result)) { - $return_link .= sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topic_data['forum_id'] . '&t=' . $topic_id) . '">', '</a>'); + $return_link .= sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $topic_id) . '">', '</a>'); } + $db->sql_freeresult($result); + // Link to the new topic $return_link .= (($return_link) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&t=' . $to_topic_id) . '">', '</a>'); } diff --git a/phpBB/includes/mcp/mcp_warn.php b/phpBB/includes/mcp/mcp_warn.php index ef8d0132fc..ea414d2bfd 100755 --- a/phpBB/includes/mcp/mcp_warn.php +++ b/phpBB/includes/mcp/mcp_warn.php @@ -71,7 +71,8 @@ function mcp_warn_front_view($id, $mode) global $template, $db, $user, $auth; $template->assign_vars(array( - 'U_FIND_MEMBER' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp&field=username'), + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp&field=username&select_single=true'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=mcp&field=username&select_single=true', false), 'U_POST_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&mode=warn_user'), ) ); @@ -102,7 +103,7 @@ function mcp_warn_front_view($id, $mode) // And now the 5 most recent users to get in trouble - $sql = 'SELECT u.user_id, u.username, u.user_colour, u.user_warnings, w.warning_time + $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_colour, u.user_warnings, w.warning_time FROM ' . USERS_TABLE . ' u, ' . WARNINGS_TABLE . ' w WHERE u.user_id = w.user_id ORDER BY w.warning_time DESC'; @@ -206,22 +207,22 @@ function mcp_warn_post_view($id, $mode, $action) WHERE post_id = $post_id AND u.user_id = p.poster_id"; $result = $db->sql_query($sql); - $userrow = $db->sql_fetchrow($result); + $user_row = $db->sql_fetchrow($result); $db->sql_freeresult($result); - if (!$userrow) + if (!$user_row) { trigger_error($user->lang['NO_POST']); } // There is no point issuing a warning to ignored users (ie anonymous and bots) - if ($userrow['user_type'] == USER_IGNORE) + if ($user_row['user_type'] == USER_IGNORE) { trigger_error($user->lang['CANNOT_WARN_ANONYMOUS']); } // Prevent someone from warning themselves - if ($userrow['user_id'] == $user->data['user_id']) + if ($user_row['user_id'] == $user->data['user_id']) { trigger_error($user->lang['CANNOT_WARN_SELF']); } @@ -240,11 +241,11 @@ function mcp_warn_post_view($id, $mode, $action) trigger_error($user->lang['ALREADY_WARNED']); } - $user_id = $userrow['user_id']; + $user_id = $user_row['user_id']; if ($warning && $action == 'add_warning') { - add_warning($userrow, $warning, $notify, $post_id); + add_warning($user_row, $warning, $notify, $post_id); $redirect = append_sid("{$phpbb_root_path}mcp.$phpEx", "i=notes&mode=user_notes&u=$user_id"); meta_refresh(2, $redirect); @@ -255,16 +256,16 @@ function mcp_warn_post_view($id, $mode, $action) // We want to make the message available here as a reminder // Parse the message and subject - $message = $userrow['post_text']; + $message = $user_row['post_text']; $message = str_replace("\n", '<br />', censor_text($message)); // Second parse bbcode here - if ($userrow['bbcode_bitfield']) + if ($user_row['bbcode_bitfield']) { include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx); - $bbcode = new bbcode($userrow['bbcode_bitfield']); - $bbcode->bbcode_second_pass($message, $userrow['bbcode_uid'], $userrow['bbcode_bitfield']); + $bbcode = new bbcode($user_row['bbcode_bitfield']); + $bbcode->bbcode_second_pass($message, $user_row['bbcode_uid'], $user_row['bbcode_bitfield']); } // Always process smilies after parsing bbcodes @@ -272,13 +273,13 @@ function mcp_warn_post_view($id, $mode, $action) // Generate the appropriate user information for the user we are looking at $rank_title = $rank_img = ''; -// get_user_rank($userrow['user_rank'], $userrow['user_posts'], $rank_title, $rank_img); +// get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img); $avatar_img = ''; - if (!empty($userrow['user_avatar'])) + if (!empty($user_row['user_avatar'])) { - switch ($userrow['user_avatar_type']) + switch ($user_row['user_avatar_type']) { case AVATAR_UPLOAD: $avatar_img = $config['avatar_path'] . '/'; @@ -289,19 +290,19 @@ function mcp_warn_post_view($id, $mode, $action) break; } - $avatar_img .= $userrow['user_avatar']; - $avatar_img = '<img src="' . $avatar_img . '" width="' . $userrow['user_avatar_width'] . '" height="' . $userrow['user_avatar_height'] . '" alt="" />'; + $avatar_img .= $user_row['user_avatar']; + $avatar_img = '<img src="' . $avatar_img . '" width="' . $user_row['user_avatar_width'] . '" height="' . $user_row['user_avatar_height'] . '" alt="" />'; } $template->assign_vars(array( 'U_POST_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&p=$post_id"), 'POST' => $message, - 'USERNAME' => $userrow['username'], - 'USER_COLOR' => (!empty($userrow['user_colour'])) ? $userrow['user_colour'] : '', + 'USERNAME' => $user_row['username'], + 'USER_COLOR' => (!empty($user_row['user_colour'])) ? $user_row['user_colour'] : '', 'RANK_TITLE' => $rank_title, - 'JOINED' => $user->format_date($userrow['user_regdate']), - 'POSTS' => ($userrow['user_posts']) ? $userrow['user_posts'] : 0, + 'JOINED' => $user->format_date($user_row['user_regdate']), + 'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0, 'AVATAR_IMG' => $avatar_img, 'RANK_IMG' => $rank_img, @@ -316,7 +317,7 @@ function mcp_warn_post_view($id, $mode, $action) */ function mcp_warn_user_view($id, $mode, $action) { - global $phpEx, $phpbb_root_path, $config; + global $phpEx, $phpbb_root_path, $config, $module; global $template, $db, $user, $auth; $user_id = request_var('u', 0); @@ -330,25 +331,25 @@ function mcp_warn_user_view($id, $mode, $action) FROM ' . USERS_TABLE . ' WHERE ' . $sql_where; $result = $db->sql_query($sql); - $userrow = $db->sql_fetchrow($result); + $user_row = $db->sql_fetchrow($result); $db->sql_freeresult($result); - if (!$userrow) + if (!$user_row) { trigger_error('NO_USER'); } // Prevent someone from warning themselves - if ($userrow['user_id'] == $user->data['user_id']) + if ($user_row['user_id'] == $user->data['user_id']) { trigger_error($user->lang['CANNOT_WARN_SELF']); } - $user_id = $userrow['user_id']; + $user_id = $user_row['user_id']; if ($warning && $action == 'add_warning') { - add_warning($userrow, $warning, $notify); + add_warning($user_row, $warning, $notify); $redirect = append_sid("{$phpbb_root_path}mcp.$phpEx", "i=notes&mode=user_notes&u=$user_id"); meta_refresh(2, $redirect); @@ -357,13 +358,13 @@ function mcp_warn_user_view($id, $mode, $action) // Generate the appropriate user information for the user we are looking at $rank_title = $rank_img = ''; -// get_user_rank($userrow['user_rank'], $userrow['user_posts'], $rank_title, $rank_img); +// get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img); $avatar_img = ''; - if (!empty($userrow['user_avatar'])) + if (!empty($user_row['user_avatar'])) { - switch ($userrow['user_avatar_type']) + switch ($user_row['user_avatar_type']) { case AVATAR_UPLOAD: $avatar_img = $config['avatar_path'] . '/'; @@ -374,20 +375,20 @@ function mcp_warn_user_view($id, $mode, $action) break; } - $avatar_img .= $userrow['user_avatar']; - $avatar_img = '<img src="' . $avatar_img . '" width="' . $userrow['user_avatar_width'] . '" height="' . $userrow['user_avatar_height'] . '" alt="" />'; + $avatar_img .= $user_row['user_avatar']; + $avatar_img = '<img src="' . $avatar_img . '" width="' . $user_row['user_avatar_width'] . '" height="' . $user_row['user_avatar_height'] . '" alt="" />'; } // OK, they didn't submit a warning so lets build the page for them to do so $template->assign_vars(array( 'U_POST_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&u=$user_id"), - 'USERNAME' => $userrow['username'], - 'USER_COLOR' => (!empty($userrow['user_colour'])) ? $userrow['user_colour'] : '', + 'USERNAME' => $user_row['username'], + 'USER_COLOR' => (!empty($user_row['user_colour'])) ? $user_row['user_colour'] : '', 'RANK_TITLE' => $rank_title, - 'JOINED' => $user->format_date($userrow['user_regdate']), - 'POSTS' => ($userrow['user_posts']) ? $userrow['user_posts'] : 0, - 'WARNINGS' => ($userrow['user_warnings']) ? $userrow['user_warnings'] : 0, + 'JOINED' => $user->format_date($user_row['user_regdate']), + 'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0, + 'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0, 'AVATAR_IMG' => $avatar_img, 'RANK_IMG' => $rank_img, @@ -398,7 +399,7 @@ function mcp_warn_user_view($id, $mode, $action) /** * Insert the warning into the database */ -function add_warning($userrow, $warning, $send_pm = true, $post_id = 0) +function add_warning($user_row, $warning, $send_pm = true, $post_id = 0) { global $phpEx, $phpbb_root_path, $config; global $template, $db, $user, $auth; @@ -408,8 +409,8 @@ function add_warning($userrow, $warning, $send_pm = true, $post_id = 0) include_once($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx); include_once($phpbb_root_path . 'includes/message_parser.' . $phpEx); - $userrow['user_lang'] = (file_exists($phpbb_root_path . 'language/' . $userrow['user_lang'] . "/mcp.$phpEx")) ? $userrow['user_lang'] : $config['default_lang']; - include($phpbb_root_path . 'language/' . basename($userrow['user_lang']) . "/mcp.$phpEx"); + $user_row['user_lang'] = (file_exists($phpbb_root_path . 'language/' . $user_row['user_lang'] . "/mcp.$phpEx")) ? $user_row['user_lang'] : $config['default_lang']; + include($phpbb_root_path . 'language/' . basename($user_row['user_lang']) . "/mcp.$phpEx"); $message_parser = new parse_message(); @@ -428,17 +429,17 @@ function add_warning($userrow, $warning, $send_pm = true, $post_id = 0) 'bbcode_bitfield' => $message_parser->bbcode_bitfield, 'bbcode_uid' => $message_parser->bbcode_uid, 'message' => $message_parser->message, - 'address_list' => array('u' => array($userrow['user_id'] => 'to')), + 'address_list' => array('u' => array($user_row['user_id'] => 'to')), ); - submit_pm('post', $lang['WARNING_PM_SUBJECT'], $pm_data, false, false); + submit_pm('post', $lang['WARNING_PM_SUBJECT'], $pm_data, false); } - add_log('admin', 'LOG_USER_WARNING', $userrow['username']); - $log_id = add_log('user', $userrow['user_id'], 'LOG_USER_WARNING_BODY', $warning); + add_log('admin', 'LOG_USER_WARNING', $user_row['username']); + $log_id = add_log('user', $user_row['user_id'], 'LOG_USER_WARNING_BODY', $warning); $sql_ary = array( - 'user_id' => $userrow['user_id'], + 'user_id' => $user_row['user_id'], 'post_id' => $post_id, 'log_id' => $log_id, 'warning_time' => time(), @@ -449,8 +450,18 @@ function add_warning($userrow, $warning, $send_pm = true, $post_id = 0) $sql = 'UPDATE ' . USERS_TABLE . ' SET user_warnings = user_warnings + 1, user_last_warning = ' . time() . ' - WHERE user_id = ' . $userrow['user_id']; + WHERE user_id = ' . $user_row['user_id']; $db->sql_query($sql); + + // We add this to the mod log too for moderators to see that a specific user got warned. + $sql = 'SELECT forum_id, topic_id + FROM ' . POSTS_TABLE . ' + WHERE post_id = ' . $post_id; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_USER_WARNING', $user_row['username']); } ?>
\ No newline at end of file diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 797c2f5cfd..e5e2240b6d 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -55,7 +55,7 @@ class bbcode_firstpass extends bbcode { if (preg_match($regexp, $this->message)) { - $this->warn_msg[] = $user->lang['UNAUTHORISED_BBCODE'] . '[' . $bbcode_name . ']'; + $this->warn_msg[] = sprintf($user->lang['UNAUTHORISED_BBCODE'] , '[' . $bbcode_name . ']'); continue; } } @@ -84,15 +84,12 @@ class bbcode_firstpass extends bbcode function prepare_bbcodes() { // Add newline at the end and in front of each quote block to prevent parsing errors (urls, smilies, etc.) - if (strpos($this->message, '[quote') !== false) + if (strpos($this->message, '[quote') !== false && strpos($this->message, '[/quote]') !== false) { $this->message = str_replace("\r\n", "\n", $this->message); - // We strip newlines and spaces after and before quotes in quotes (trimming) - $this->message = preg_replace(array('#\[quote(=".*?")?\]([\s|\n]+)#ius', '#([\s|\n]+)\[\/quote\]#ius'), array("[quote\\1]", "[/quote]"), $this->message); - - // Now we add exactly one newline - $this->message = preg_replace(array('#\[quote(=".*?")?\]#is', '#\[\/quote\]#is'), array("[quote\\1]\n", "\n[/quote]"), $this->message); + // We strip newlines and spaces after and before quotes in quotes (trimming) and then add exactly one newline + $this->message = preg_replace('#\[quote(=".*?")?\]\s*(.*?)\s*\[/quote\]#siu', '[quote\1]' . "\n" . '\2' ."\n[/quote]", $this->message); } // Add other checks which needs to be placed before actually parsing anything (be it bbcodes, smilies, urls...) @@ -117,9 +114,9 @@ class bbcode_firstpass extends bbcode 'url' => array('bbcode_id' => 3, 'regexp' => array('#\[url(=(.*))?\](.*)\[/url\]#iUe' => "\$this->validate_url('\$2', '\$3')")), 'img' => array('bbcode_id' => 4, 'regexp' => array('#\[img\](https?://)([a-z0-9\-\.,\?!%\*_:;~\\&$@/=\+]+)\[/img\]#ie' => "\$this->bbcode_img('\$1\$2')")), 'size' => array('bbcode_id' => 5, 'regexp' => array('#\[size=([\-\+]?[1-2]?[0-9])\](.*?)\[/size\]#ise' => "\$this->bbcode_size('\$1', '\$2')")), - 'color' => array('bbcode_id' => 6, 'regexp' => array('!\[color=(#[0-9A-Fa-f]{6}|[a-z\-]+)\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")), + 'color' => array('bbcode_id' => 6, 'regexp' => array('!\[color=(#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")), 'u' => array('bbcode_id' => 7, 'regexp' => array('#\[u\](.*?)\[/u\]#ise' => "\$this->bbcode_underline('\$1')")), - 'list' => array('bbcode_id' => 9, 'regexp' => array('#\[list(=[a-z|0-9|(?:disc|circle|square))]+)?\].*\[/list\]#ise' => "\$this->bbcode_parse_list('\$0')")), + 'list' => array('bbcode_id' => 9, 'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#ise' => "\$this->bbcode_parse_list('\$0')")), 'email' => array('bbcode_id' => 10, 'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\$1', '\$2')")), 'flash' => array('bbcode_id' => 11, 'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')")) ); @@ -265,7 +262,7 @@ class bbcode_firstpass extends bbcode */ function bbcode_img($in) { - global $user, $config, $phpEx; + global $user, $config; if (!$this->check_bbcode('img', $in)) { @@ -309,7 +306,7 @@ class bbcode_firstpass extends bbcode */ function bbcode_flash($width, $height, $in) { - global $user, $config, $phpEx; + global $user, $config; if (!$this->check_bbcode('flash', $in)) { @@ -418,7 +415,7 @@ class bbcode_firstpass extends bbcode $conf = array('highlight.bg', 'highlight.comment', 'highlight.default', 'highlight.html', 'highlight.keyword', 'highlight.string'); foreach ($conf as $ini_var) { - ini_set($ini_var, str_replace('highlight.', 'syntax', $ini_var)); + @ini_set($ini_var, str_replace('highlight.', 'syntax', $ini_var)); } // Because highlight_string is specialcharing the text (but we already did this before), we have to reverse this in order to get correct results @@ -448,7 +445,7 @@ class bbcode_firstpass extends bbcode $code = preg_replace('#(?:[\n\r\s\t]| )*</span>$#u', '</span>', $code); // remove newline at the end - if (!empty($code) && $code{strlen($code)-1} == "\n") + if (!empty($code) && $code[strlen($code) - 1] == "\n") { $code = substr($code, 0, -1); } @@ -484,27 +481,13 @@ class bbcode_firstpass extends bbcode return ''; } - $out = '['; - - // Grab item_start with no item_end - $in = preg_replace('#\[\*\](.*?)(\[\/list\]|\[list(=?(?:[0-9]|[a-z]|))\]|\[\*\])#is', '[*:' . $this->bbcode_uid . ']\1[/*:m:' . $this->bbcode_uid . ']\2', $in); - - // Grab them again as backreference - $in = preg_replace('#\[\*\](.*?)(\[\/list\]|\[list(=?(?:[0-9]|[a-z]|))\]|\[\*\])(^\[\/*\])#is', '[*:' . $this->bbcode_uid . ']\1[/*:m:' . $this->bbcode_uid . ']\2', $in); - - // Grab end tag following start tag - $in = preg_replace('#\[\/\*:m:' . $this->bbcode_uid . '\](\n|)\[\*\]#is', '[/*:m:' . $this->bbcode_uid . '][*:' . $this->bbcode_uid . ']', $in); - - // Replace end tag - $in = preg_replace('#\[\/\*\]#i', '[/*:' . $this->bbcode_uid . ']', $in); - // $tok holds characters to stop at. Since the string starts with a '[' we'll get everything up to the first ']' which should be the opening [list] tag $tok = ']'; $out = '['; // First character is [ $in = substr($in, 1); - $list_end_tags = array(); + $list_end_tags = $item_end_tags = array(); do { @@ -512,7 +495,7 @@ class bbcode_firstpass extends bbcode for ($i = 0, $tok_len = strlen($tok); $i < $tok_len; ++$i) { - $tmp_pos = strpos($in, $tok{$i}); + $tmp_pos = strpos($in, $tok[$i]); if ($tmp_pos !== false && $tmp_pos < $pos) { @@ -521,7 +504,7 @@ class bbcode_firstpass extends bbcode } $buffer = substr($in, 0, $pos); - $tok = $in{$pos}; + $tok = $in[$pos]; $in = substr($in, $pos + 1); @@ -530,13 +513,20 @@ class bbcode_firstpass extends bbcode // if $tok is ']' the buffer holds a tag if (strtolower($buffer) == '/list' && sizeof($list_end_tags)) { + // valid [/list] tag, check nesting so that we don't hit false positives + if (sizeof($item_end_tags) && sizeof($item_end_tags) >= sizeof($list_end_tags)) + { + // current li tag has not been closed + $out = preg_replace('/\n?\[$/', '[', $out) . array_pop($item_end_tags) . ']['; + } + $out .= array_pop($list_end_tags) . ']'; $tok = '['; } - else if (preg_match('#list(=?(?:[0-9]|[a-z]|))#i', $buffer, $m)) + else if (preg_match('#^list(=[0-9a-z])?$#i', $buffer, $m)) { // sub-list, add a closing tag - if (!$m[1] || preg_match('/^(disc|square|circle)$/i', $m[1])) + if (empty($m[1]) || preg_match('/^(?:disc|square|circle)$/i', $m[1])) { array_push($list_end_tags, '/list:u:' . $this->bbcode_uid); } @@ -544,17 +534,44 @@ class bbcode_firstpass extends bbcode { array_push($list_end_tags, '/list:o:' . $this->bbcode_uid); } - - if (strtolower(substr($buffer, 0, 4)) == 'list') - { - $buffer = 'list' . substr($buffer, 4, $pos); - } - $out .= $buffer . ':' . $this->bbcode_uid . ']'; $tok = '['; } else { + if (($buffer == '*' || substr($buffer, -2) == '[*') && sizeof($list_end_tags)) + { + // the buffer holds a bullet tag and we have a [list] tag open + if (sizeof($item_end_tags) >= sizeof($list_end_tags)) + { + if (substr($buffer, -2) == '[*') + { + $out .= substr($buffer, 0, -2) . '['; + } + // current li tag has not been closed + if (preg_match('/\n\[$/', $out, $m)) + { + $out = preg_replace('/\n\[$/', '[', $out); + $buffer = array_pop($item_end_tags) . "]\n[*:" . $this->bbcode_uid; + } + else + { + $buffer = array_pop($item_end_tags) . '][*:' . $this->bbcode_uid; + } + } + else + { + $buffer = '*:' . $this->bbcode_uid; + } + + $item_end_tags[] = '/*:m:' . $this->bbcode_uid; + } + else if ($buffer == '/*') + { + array_pop($item_end_tags); + $buffer = '/*:' . $this->bbcode_uid; + } + $out .= $buffer . $tok; $tok = '[]'; } @@ -568,6 +585,11 @@ class bbcode_firstpass extends bbcode } while ($in); + // do we have some tags open? close them now + if (sizeof($item_end_tags)) + { + $out .= '[' . implode('][', $item_end_tags) . ']'; + } if (sizeof($list_end_tags)) { $out .= '[' . implode('][', $list_end_tags) . ']'; @@ -783,6 +805,9 @@ class bbcode_firstpass extends bbcode /** * Validate url + * + * @param string $var1 optional url parameter for url bbcode: [url(=$var1)]$var2[/url] + * @param string $var2 url bbcode content: [url(=$var1)]$var2[/url] */ function validate_url($var1, $var2) { @@ -792,17 +817,20 @@ class bbcode_firstpass extends bbcode $var2 = str_replace("\r\n", "\n", str_replace('\"', '"', trim($var2))); $url = ($var1) ? $var1 : $var2; - $valid = false; if (!$url || ($var1 && !$var2)) { return ''; } + $valid = false; + + $url = str_replace(' ', '%20', $url); + // Checking urls - if (preg_match('#' . preg_quote(generate_board_url(), '#') . '/([^ \t\n\r<"\']+)#i', $url) || - preg_match('#([\w]+?://.*?[^ \t\n\r<"\']*)#i', $url) || - preg_match('#(www\.[\w\-]+\.[\w\-.\~]+(?:/[^ \t\n\r<"\']*)?)#i', $url)) + if (preg_match('#^' . get_preg_expression('url') . '$#i', $url) || + preg_match('#^' . get_preg_expression('www_url') . '$#i', $url) || + preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#i', $url)) { $valid = true; } @@ -811,12 +839,13 @@ class bbcode_firstpass extends bbcode { $this->parsed_items['url']++; - if (!preg_match('#^[\w]+?://.*?#i', $url)) + // if there is no scheme, then add http schema + if (!preg_match('#^[a-z][a-z\d+\-.]*:/{2}#i', $url)) { $url = 'http://' . $url; } - // We take our test url and stick on the first bit of text we get to check if we are really at the domain. If so, lets go! + // Is this a link to somewhere inside this board? If so then remove the session id from the url if (strpos($url, generate_board_url()) !== false && strpos($url, 'sid=') !== false) { $url = preg_replace('/(&|\?)sid=[0-9a-f]{32}/', '\1', $url); @@ -840,7 +869,14 @@ class bbcode_firstpass extends bbcode { global $config, $phpEx, $user; - $check_path = ($user->page['root_script_path'] != '/') ? substr($user->page['root_script_path'], 0, -1) : '/'; + if ($config['force_server_vars']) + { + $check_path = $config['script_path']; + } + else + { + $check_path = ($user->page['root_script_path'] != '/') ? substr($user->page['root_script_path'], 0, -1) : '/'; + } // Is the user trying to link to a php file in this domain and script path? if (strpos($url, ".{$phpEx}") !== false && strpos($url, $check_path) !== false) @@ -933,7 +969,8 @@ class parse_message extends bbcode_firstpass // Do some general 'cleanup' first before processing message, // e.g. remove excessive newlines(?), smilies(?) // Transform \r\n and \r into \n - $match = array('#\r\n?#', "#([\n][\s]+){3,}#u", '#(script|about|applet|activex|chrome):#i'); + // TODO: Second regex looks wrong... + $match = array('#\r\n?#', "#(\n\s+){3,}#u", '#(script|about|applet|activex|chrome):#i'); $replace = array("\n", "\n\n", "\\1:"); $this->message = preg_replace($match, $replace, trim($this->message)); @@ -987,7 +1024,7 @@ class parse_message extends bbcode_firstpass if ($config['max_' . $mode . '_urls']) { - $num_urls += preg_match_all('#\<!-- (l|m|w|e) --\>.*?\<!-- \1 --\>#', $this->message, $matches); + $num_urls += preg_match_all('#\<!-- ([lmwe]) --\>.*?\<!-- \1 --\>#', $this->message, $matches); } } @@ -1093,7 +1130,7 @@ class parse_message extends bbcode_firstpass */ function smilies($max_smilies = 0) { - global $db, $user, $phpbb_root_path; + global $db, $user; static $match; static $replace; @@ -1132,7 +1169,7 @@ class parse_message extends bbcode_firstpass while ($row = $db->sql_fetchrow($result)) { // (assertion) - $match[] = '#(?<=^|[\n ]|\.)' . preg_quote($row['code'], '#') . '#'; + $match[] = '#(?<=^|[\n .])' . preg_quote($row['code'], '#') . '#'; $replace[] = '<!-- s' . $row['code'] . ' --><img src="{SMILIES_PATH}/' . $row['smiley_url'] . '" alt="' . $row['emotion'] . '" title="' . $row['emotion'] . '" /><!-- s' . $row['code'] . ' -->'; } $db->sql_freeresult($result); @@ -1142,16 +1179,26 @@ class parse_message extends bbcode_firstpass { if ($max_smilies) { - $num_matches = preg_match_all('#' . str_replace('#', '', implode('|', $match)) . '#', $this->message, $matches); - unset($matches); - - if ($num_matches !== false && $num_matches > $max_smilies) + $count = 0; + foreach ($match as $key => $smilie) { - $this->warn_msg[] = sprintf($user->lang['TOO_MANY_SMILIES'], $max_smilies); - return; + if ($small_count = preg_match_all($smilie, $this->message, $array)) + { + $count += $small_count; + if ($count > $max_smilies) + { + $this->warn_msg[] = sprintf($user->lang['TOO_MANY_SMILIES'], $max_smilies); + return; + } + } + $this->message = preg_replace($smilie, $replace[$key], $this->message); } + $this->message = trim($this->message); + } + else + { + $this->message = trim(preg_replace($match, $replace, $this->message)); } - $this->message = trim(preg_replace($match, $replace, $this->message)); } } @@ -1170,7 +1217,22 @@ class parse_message extends bbcode_firstpass $add_file = (isset($_POST['add_file'])) ? true : false; $delete_file = (isset($_POST['delete_file'])) ? true : false; - $edit_comment = (isset($_POST['edit_comment'])) ? true : false; + + // First of all adjust comments if changed + $actual_comment_list = utf8_normalize_nfc(request_var('comment_list', array(''), true)); + + foreach ($actual_comment_list as $comment_key => $comment) + { + if (!isset($this->attachment_data[$comment_key])) + { + continue; + } + + if ($this->attachment_data[$comment_key]['attach_comment'] != $actual_comment_list[$comment_key]) + { + $this->attachment_data[$comment_key]['attach_comment'] = $actual_comment_list[$comment_key]; + } + } $cfg = array(); $cfg['max_attachments'] = ($is_message) ? $config['max_attachments_pm'] : $config['max_attachments']; @@ -1241,7 +1303,6 @@ class parse_message extends bbcode_firstpass if (!empty($this->attachment_data[$index])) { - // delete selected attachment if ($this->attachment_data[$index]['is_orphan']) { @@ -1278,59 +1339,47 @@ class parse_message extends bbcode_firstpass $this->attachment_data = array_values($this->attachment_data); } } - else if ($edit_comment || $add_file || $preview) + else if (($add_file || $preview) && $upload_file) { - if ($edit_comment) + if ($num_attachments < $cfg['max_attachments'] || $auth->acl_gets('m_', 'a_', $forum_id)) { - $actual_comment_list = utf8_normalize_nfc(request_var('comment_list', array(''), true)); + $filedata = upload_attachment($form_name, $forum_id, false, '', $is_message); + $error = array_merge($error, $filedata['error']); - $edit_comment = request_var('edit_comment', array(0 => '')); - $edit_comment = key($edit_comment); - $this->attachment_data[$edit_comment]['attach_comment'] = $actual_comment_list[$edit_comment]; - } - - if (($add_file || $preview) && $upload_file) - { - if ($num_attachments < $cfg['max_attachments'] || $auth->acl_gets('m_', 'a_', $forum_id)) + if (!sizeof($error)) { - $filedata = upload_attachment($form_name, $forum_id, false, '', $is_message); - $error = array_merge($error, $filedata['error']); - - if (!sizeof($error)) - { - $sql_ary = array( - 'physical_filename' => $filedata['physical_filename'], - 'attach_comment' => $this->filename_data['filecomment'], - 'real_filename' => $filedata['real_filename'], - 'extension' => $filedata['extension'], - 'mimetype' => $filedata['mimetype'], - 'filesize' => $filedata['filesize'], - 'filetime' => $filedata['filetime'], - 'thumbnail' => $filedata['thumbnail'], - 'is_orphan' => 1, - 'in_message' => ($is_message) ? 1 : 0, - 'poster_id' => $user->data['user_id'], - ); - - $db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); - - $new_entry = array( - 'attach_id' => $db->sql_nextid(), - 'is_orphan' => 1, - 'real_filename' => $filedata['real_filename'], - 'attach_comment'=> $this->filename_data['filecomment'], - ); - - $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data); - $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message); - $this->filename_data['filecomment'] = ''; - } - } - else - { - $error[] = sprintf($user->lang['TOO_MANY_ATTACHMENTS'], $cfg['max_attachments']); + $sql_ary = array( + 'physical_filename' => $filedata['physical_filename'], + 'attach_comment' => $this->filename_data['filecomment'], + 'real_filename' => $filedata['real_filename'], + 'extension' => $filedata['extension'], + 'mimetype' => $filedata['mimetype'], + 'filesize' => $filedata['filesize'], + 'filetime' => $filedata['filetime'], + 'thumbnail' => $filedata['thumbnail'], + 'is_orphan' => 1, + 'in_message' => ($is_message) ? 1 : 0, + 'poster_id' => $user->data['user_id'], + ); + + $db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); + + $new_entry = array( + 'attach_id' => $db->sql_nextid(), + 'is_orphan' => 1, + 'real_filename' => $filedata['real_filename'], + 'attach_comment'=> $this->filename_data['filecomment'], + ); + + $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data); + $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message); + $this->filename_data['filecomment'] = ''; } } + else + { + $error[] = sprintf($user->lang['TOO_MANY_ATTACHMENTS'], $cfg['max_attachments']); + } } } @@ -1449,16 +1498,22 @@ class parse_message extends bbcode_firstpass $tmp_message = $this->message; $this->message = $poll['poll_title']; + $poll['poll_options'] = explode("\n", trim($poll['poll_option_text'])); + $poll['poll_options_size'] = sizeof($poll['poll_options']); - $poll['poll_title'] = $this->parse($poll['enable_bbcode'], ($config['allow_post_links']) ? $poll['enable_urls'] : false, $poll['enable_smilies'], $poll['img_status'], false, false, $config['allow_post_links'], false); + if (!$poll['poll_title'] && $poll['poll_options_size']) + { + $this->warn_msg[] = $user->lang['NO_POLL_TITLE']; + } + else + { + $poll['poll_title'] = $this->parse($poll['enable_bbcode'], ($config['allow_post_links']) ? $poll['enable_urls'] : false, $poll['enable_smilies'], $poll['img_status'], false, false, $config['allow_post_links'], false); + } $this->message = $tmp_message; unset($tmp_message); - $poll['poll_options'] = explode("\n", trim($poll['poll_option_text'])); - $poll['poll_options_size'] = sizeof($poll['poll_options']); - if (sizeof($poll['poll_options']) == 1) { $this->warn_msg[] = $user->lang['TOO_FEW_POLL_OPTIONS']; @@ -1472,11 +1527,6 @@ class parse_message extends bbcode_firstpass $this->warn_msg[] = $user->lang['TOO_MANY_USER_OPTIONS']; } - if (!$poll['poll_title'] && $poll['poll_options_size']) - { - $this->warn_msg[] = $user->lang['NO_POLL_TITLE']; - } - $poll['poll_max_options'] = ($poll['poll_max_options'] < 1) ? 1 : (($poll['poll_max_options'] > $config['max_poll_options']) ? $config['max_poll_options'] : $poll['poll_max_options']); } } diff --git a/phpBB/includes/search/fulltext_mysql.php b/phpBB/includes/search/fulltext_mysql.php index 8a102a321d..7c67b755e1 100644 --- a/phpBB/includes/search/fulltext_mysql.php +++ b/phpBB/includes/search/fulltext_mysql.php @@ -32,6 +32,7 @@ class fulltext_mysql extends search_backend var $split_words = array(); var $search_query; var $common_words = array(); + var $pcre_properties = false; function fulltext_mysql(&$error) { @@ -39,6 +40,11 @@ class fulltext_mysql extends search_backend $this->word_length = array('min' => $config['fulltext_mysql_min_word_len'], 'max' => $config['fulltext_mysql_max_word_len']); + if (version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) + { + $this->pcre_properties = true; + } + $error = false; } @@ -49,16 +55,7 @@ class fulltext_mysql extends search_backend { global $db, $user; - if (strpos($db->sql_layer, 'mysql') === false) - { - return $user->lang['FULLTEXT_MYSQL_INCOMPATIBLE_VERSION']; - } - - $result = $db->sql_query('SELECT VERSION() AS mysql_version'); - $version = $db->sql_fetchfield('mysql_version'); - $db->sql_freeresult($result); - - if (!preg_match('#^4|5|6#s', $version)) + if ($db->sql_layer != 'mysql4' && $db->sql_layer != 'mysqli') { return $user->lang['FULLTEXT_MYSQL_INCOMPATIBLE_VERSION']; } @@ -132,9 +129,9 @@ class fulltext_mysql extends search_backend $keywords = preg_replace($match, ' ', trim($keywords)); // Split words - $split_keywords = preg_replace('#([^\w\'*])#', '$1$1', str_replace('\'\'', '\' \'', trim($keywords))); + $split_keywords = preg_replace(($this->pcre_properties) ? '#([^\p{L}\p{N}\'*])#u' : '#([^\w\'*])#u', '$1$1', str_replace('\'\'', '\' \'', trim($keywords))); $matches = array(); - preg_match_all('#(?:[^\w*]|^)([+\-|]?(?:[\w*]+\'?)*[\w*])(?:[^\w*]|$)#', $split_keywords, $matches); + preg_match_all(($this->pcre_properties) ? '#(?:[^\p{L}\p{N}*]|^)([+\-|]?(?:[\p{L}\p{N}*]+\'?)*[\p{L}\p{N}*])(?:[^\p{L}\p{N}*]|$)#u' : '#(?:[^\w*]|^)([+\-|]?(?:[\w*]+\'?)*[\w*])(?:[^\w*]|$)#u', $split_keywords, $matches); $this->split_words = $matches[1]; if (sizeof($this->ignore_words)) @@ -183,9 +180,9 @@ class fulltext_mysql extends search_backend $this->get_synonyms(); // Split words - $text = preg_replace('#([^\w\'*])#', '$1$1', str_replace('\'\'', '\' \'', trim($text))); + $text = preg_replace(($this->pcre_properties) ? '#([^\p{L}\p{N}\'*])#u' : '#([^\w\'*])#u', '$1$1', str_replace('\'\'', '\' \'', trim($text))); $matches = array(); - preg_match_all('#(?:[^\w*]|^)([+\-|]?(?:[\w*]+\'?)*[\w*])(?:[^\w*]|$)#', $text, $matches); + preg_match_all(($this->pcre_properties) ? '#(?:[^\p{L}\p{N}*]|^)([+\-|]?(?:[\p{L}\p{N}*]+\'?)*[\p{L}\p{N}*])(?:[^\p{L}\p{N}*]|$)#u' : '#(?:[^\w*]|^)([+\-|]?(?:[\w*]+\'?)*[\w*])(?:[^\w*]|$)#u', $text, $matches); $text = $matches[1]; if (sizeof($this->ignore_words)) @@ -648,14 +645,29 @@ class fulltext_mysql extends search_backend $this->get_stats(); } + $alter = array(); + if (!isset($this->stats['post_subject'])) { - $db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ADD FULLTEXT (post_subject)'); + if ($db->sql_layer == 'mysqli' || version_compare($db->mysql_version, '4.1.3', '>=')) + { + $alter[] = 'MODIFY post_subject varchar(100) COLLATE utf8_unicode_ci DEFAULT \'\' NOT NULL'; + } + $alter[] = 'ADD FULLTEXT (post_subject)'; } if (!isset($this->stats['post_text'])) { - $db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ADD FULLTEXT (post_text)'); + if ($db->sql_layer == 'mysqli' || version_compare($db->mysql_version, '4.1.3', '>=')) + { + $alter[] = 'MODIFY post_text mediumtext COLLATE utf8_unicode_ci NOT NULL'; + } + $alter[] = 'ADD FULLTEXT (post_text)'; + } + + if (sizeof($alter)) + { + $db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter)); } $db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE); @@ -681,14 +693,21 @@ class fulltext_mysql extends search_backend $this->get_stats(); } + $alter = array(); + if (isset($this->stats['post_subject'])) { - $db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' DROP INDEX post_subject'); + $alter[] = 'DROP INDEX post_subject'; } if (isset($this->stats['post_text'])) { - $db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' DROP INDEX post_text'); + $alter[] = 'DROP INDEX post_text'; + } + + if (sizeof($alter)) + { + $db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter)); } $db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE); @@ -767,6 +786,28 @@ class fulltext_mysql extends search_backend $this->stats['total_posts'] = (int) $db->sql_fetchfield('total_posts'); $db->sql_freeresult($result); } + + /** + * Display a note, that UTF-8 support is not available with certain versions of PHP + */ + function acp() + { + global $user, $config; + + + $tpl = ' + <dl> + <dt><label>' . $user->lang['FULLTEXT_MYSQL_UNICODE'] . '</label><br /><span>' . $user->lang['FULLTEXT_MYSQL_UNICODE_EXPLAIN'] . '</span></dt> + <dd>' . (($this->pcre_properties) ? $user->lang['YES'] : $user->lang['NO']) . ' (PHP ' . PHP_VERSION . ')</dd> + </dl> + '; + + // These are fields required in the config table + return array( + 'tpl' => $tpl, + 'config' => array() + ); + } } ?>
\ No newline at end of file diff --git a/phpBB/includes/search/fulltext_native.php b/phpBB/includes/search/fulltext_native.php index df000f5e04..11ca09805a 100755 --- a/phpBB/includes/search/fulltext_native.php +++ b/phpBB/includes/search/fulltext_native.php @@ -80,7 +80,7 @@ class fulltext_native extends search_backend */ function split_keywords($keywords, $terms) { - global $db, $config, $user; + global $db, $user; $keywords = trim($this->cleanup($keywords, '+-|()*')); @@ -166,7 +166,7 @@ class fulltext_native extends search_backend $keywords = preg_replace($match, $replace, $keywords); - // $keywords input format: each word seperated by a space, words in a bracket are not seperated + // $keywords input format: each word separated by a space, words in a bracket are not separated // the user wants to search for any word, convert the search query if ($terms == 'any') @@ -187,19 +187,22 @@ class fulltext_native extends search_backend preg_match_all('#([^\\s+\\-|*()]+)(?:$|[\\s+\\-|()])#u', $keywords, $exact_words); $exact_words = $exact_words[1]; + $common_ids = array(); + if (sizeof($exact_words)) { $sql = 'SELECT word_id, word_text, word_common FROM ' . SEARCH_WORDLIST_TABLE . ' WHERE ' . $db->sql_in_set('word_text', $exact_words); $result = $db->sql_query($sql); - + // store an array of words and ids, remove common words while ($row = $db->sql_fetchrow($result)) { if ($row['word_common']) { $this->common_words[] = $row['word_text']; + $common_ids[$row['word_text']] = (int) $row['word_id']; continue; } @@ -270,16 +273,19 @@ class fulltext_native extends search_backend // if this is an array of words then retrieve an id for each if (is_array($word)) { + $non_common_words = array(); $id_words = array(); foreach ($word as $i => $word_part) { if (strpos($word_part, '*') !== false) { $id_words[] = '\'' . $db->sql_escape(str_replace('*', '%', $word_part)) . '\''; + $non_common_words[] = $word_part; } - if (isset($words[$word_part])) + else if (isset($words[$word_part])) { $id_words[] = $words[$word_part]; + $non_common_words[] = $word_part; } } if (sizeof($id_words)) @@ -296,17 +302,27 @@ class fulltext_native extends search_backend } } // throw an error if we shall not ignore unexistant words - else if (!$ignore_no_id) + else if (!$ignore_no_id && sizeof($non_common_words)) { - trigger_error(sprintf($user->lang['WORDS_IN_NO_POST'], implode(', ', $word))); + trigger_error(sprintf($user->lang['WORDS_IN_NO_POST'], implode(', ', $non_common_words))); } + unset($non_common_words); } // else we only need one id else if (($wildcard = strpos($word, '*') !== false) || isset($words[$word])) { + if ($wildcard) { - $this->{$mode . '_ids'}[] = '\'' . $db->sql_escape(str_replace('*', '%', $word)) . '\''; + $len = utf8_strlen(str_replace('*', '', $word)); + if ($len >= $this->word_length['min'] && $len <= $this->word_length['max']) + { + $this->{$mode . '_ids'}[] = '\'' . $db->sql_escape(str_replace('*', '%', $word)) . '\''; + } + else + { + $this->common_words[] = $row['word_text']; + } } else { @@ -316,7 +332,26 @@ class fulltext_native extends search_backend // throw an error if we shall not ignore unexistant words else if (!$ignore_no_id) { - trigger_error(sprintf($user->lang['WORD_IN_NO_POST'], $word)); + if (!isset($common_ids[$word])) + { + $len = utf8_strlen($word); + if ($len >= $this->word_length['min'] && $len <= $this->word_length['max']) + { + trigger_error(sprintf($user->lang['WORD_IN_NO_POST'], $word)); + } + else + { + $this->common_words[] = $word; + } + } + } + else + { + $len = utf8_strlen($word); + if ($len < $this->word_length['min'] || $len > $this->word_length['max']) + { + $this->common_words[] = $word; + } } } @@ -460,7 +495,7 @@ class fulltext_native extends search_backend 'ON' => "w$w_num.word_text LIKE $id" ); $word_ids[] = "w$w_num.word_id"; - + $w_num++; } else @@ -488,7 +523,7 @@ class fulltext_native extends search_backend { $sql_where[] = "m$m_num.word_id = $subquery"; } - + $sql_array['FROM'][SEARCH_WORDMATCH_TABLE][] = 'm' . $m_num; if ($title_match) @@ -617,11 +652,11 @@ class fulltext_native extends search_backend default: $sql_array_count['SELECT'] = ($type == 'posts') ? 'COUNT(DISTINCT p.post_id) AS total_results' : 'COUNT(DISTINCT p.topic_id) AS total_results'; $sql = (!$sql) ? $db->sql_build_query('SELECT', $sql_array_count) : $sql; - + $result = $db->sql_query($sql); $total_results = (int) $db->sql_fetchfield('total_results'); $db->sql_freeresult($result); - + if (!$total_results) { return false; @@ -835,10 +870,10 @@ class fulltext_native extends search_backend $sql_time" . (($db->sql_layer == 'sqlite') ? ')' : ''); } $result = $db->sql_query($sql); - + $total_results = (int) $db->sql_fetchfield('total_results'); $db->sql_freeresult($result); - + if (!$total_results) { return false; @@ -924,8 +959,7 @@ class fulltext_native extends search_backend */ function split_message($text) { - global $phpbb_root_path, $phpEx; - global $config, $user; + global $phpbb_root_path, $phpEx, $user; $match = $words = array(); @@ -937,8 +971,8 @@ class fulltext_native extends search_backend // BBcode $match[] = '#\[\/?[a-z0-9\*\+\-]+(?:=.*?)?(?::[a-z])?(\:?[0-9a-z]{5,})\]#'; - $min = $config['fulltext_native_min_chars']; - $max = $config['fulltext_native_max_chars']; + $min = $this->word_length['min']; + $max = $this->word_length['max']; $isset_min = $min - 1; @@ -947,10 +981,9 @@ class fulltext_native extends search_backend */ $word = strtok($this->cleanup(preg_replace($match, ' ', strip_tags($text)), -1), ' '); - while (isset($word[0])) + while (strlen($word)) { - if (isset($word[255]) - || !isset($word[$isset_min])) + if (strlen($word) > 255 || strlen($word) <= $isset_min) { /** * Words longer than 255 bytes are ignored. This will have to be @@ -1131,7 +1164,7 @@ class fulltext_native extends search_backend } // destroy cached search results containing any of the words removed or added - $this->destroy_cache(array_unique(array_merge($words['add']['post'], $words['add']['title'], $words['del']['post'], $words['del']['post'])), array($poster_id)); + $this->destroy_cache(array_unique(array_merge($words['add']['post'], $words['add']['title'], $words['del']['post'], $words['del']['title'])), array($poster_id)); unset($unique_add_words); unset($words); @@ -1174,14 +1207,15 @@ class fulltext_native extends search_backend $destroy_cache_words = array(); - // Remove common (> 20% of posts ) words - if ($config['num_posts'] >= 100) + // Remove common words + if ($config['num_posts'] >= 100 && $config['fulltext_native_common_thres']) { + $common_threshold = ((double) $config['fulltext_native_common_thres']) / 100.0; // First, get the IDs of common words $sql = 'SELECT word_id FROM ' . SEARCH_WORDMATCH_TABLE . ' GROUP BY word_id - HAVING COUNT(word_id) > ' . floor($config['num_posts'] * 0.2); + HAVING COUNT(word_id) > ' . floor($config['num_posts'] * $common_threshold); $result = $db->sql_query($sql); $sql_in = array(); @@ -1551,12 +1585,16 @@ class fulltext_native extends search_backend <dt><label for="fulltext_native_max_chars">' . $user->lang['MAX_SEARCH_CHARS'] . ':</label><br /><span>' . $user->lang['MAX_SEARCH_CHARS_EXPLAIN'] . '</span></dt> <dd><input id="fulltext_native_max_chars" type="text" size="3" maxlength="3" name="config[fulltext_native_max_chars]" value="' . (int) $config['fulltext_native_max_chars'] . '" /></dd> </dl> + <dl> + <dt><label for="fulltext_native_common_thres">' . $user->lang['COMMON_WORD_THRESHOLD'] . ':</label><br /><span>' . $user->lang['COMMON_WORD_THRESHOLD_EXPLAIN'] . '</span></dt> + <dd><input id="fulltext_native_common_thres" type="text" size="3" maxlength="3" name="config[fulltext_native_common_thres]" value="' . (int) $config['fulltext_native_common_thres'] . '" /> %</dd> + </dl> '; // These are fields required in the config table return array( 'tpl' => $tpl, - 'config' => array('fulltext_native_load_upd' => 'bool', 'fulltext_native_min_chars' => 'integer:0:255', 'fulltext_native_max_chars' => 'integer:0:255') + 'config' => array('fulltext_native_load_upd' => 'bool', 'fulltext_native_min_chars' => 'integer:0:255', 'fulltext_native_max_chars' => 'integer:0:255', 'fulltext_native_common_thres' => 'double:0:100') ); } } diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index ad6a049a65..9121a965fd 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -18,6 +18,7 @@ class session var $page = array(); var $data = array(); var $browser = ''; + var $forwarded_for = ''; var $host = ''; var $session_id = ''; var $ip = ''; @@ -91,7 +92,7 @@ class session // The script path from the webroot to the phpBB root (for example: /phpBB2/) $script_dirs = explode('/', $script_path); array_splice($script_dirs, -sizeof($page_dirs)); - $root_script_path = implode('/', $script_dirs) . (sizeof($root_dirs) ? '/' . implode('/', $root_dirs) : ''); + $root_script_path = implode('/', $script_dirs) . (sizeof($root_dirs) ? '/' . implode('/', $root_dirs) : ''); // We are on the base level (phpBB root == webroot), lets adjust the variables a bit... if (!$root_script_path) @@ -145,9 +146,40 @@ class session $this->cookie_data = array('u' => 0, 'k' => ''); $this->update_session_page = $update_session_page; $this->browser = (!empty($_SERVER['HTTP_USER_AGENT'])) ? (string) $_SERVER['HTTP_USER_AGENT'] : ''; + $this->forwarded_for = (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) ? (string) $_SERVER['HTTP_X_FORWARDED_FOR'] : ''; $this->host = (!empty($_SERVER['HTTP_HOST'])) ? (string) $_SERVER['HTTP_HOST'] : 'localhost'; $this->page = $this->extract_current_page($phpbb_root_path); + // if the forwarded for header shall be checked we have to validate its contents + if ($config['forwarded_for_check']) + { + $this->forwarded_for = preg_replace('#, +#', ', ', $this->forwarded_for); + + // Whoa these look impressive! + // The code to generate the following two regular expressions which match valid IPv4/IPv6 addresses + // can be found in the develop directory + $ipv4 = '#^(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$#'; + $ipv6 = '#^(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){5}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:))$#i'; + + // split the list of IPs + $ips = explode(', ', $this->forwarded_for); + foreach ($ips as $ip) + { + // check IPv4 first, the IPv6 is hopefully only going to be used very seldomly + if (!empty($ip) && !preg_match($ipv4, $ip) && !preg_match($ipv6, $ip)) + { + if (!defined('DEBUG_EXTRA')) + { + trigger_error('Hacking attempt!'); + } + else + { + trigger_error('Invalid HTTP_X_FORWARDED_FOR header detected: ' . htmlspecialchars($this->forwarded_for)); + } + } + } + } + // Add forum to the page for tracking online users - also adding a "x" to the end to properly identify the number $this->page['page'] .= (isset($_REQUEST['f'])) ? ((strpos($this->page['page'], '?') !== false) ? '&' : '?') . '_f_=' . (int) $_REQUEST['f'] . 'x' : ''; @@ -216,7 +248,10 @@ class session $s_browser = ($config['browser_check']) ? strtolower(substr($this->data['session_browser'], 0, 149)) : ''; $u_browser = ($config['browser_check']) ? strtolower(substr($this->browser, 0, 149)) : ''; - if ($u_ip === $s_ip && $s_browser === $u_browser) + $s_forwarded_for = ($config['forwarded_for_check']) ? substr($this->data['session_forwarded_for'], 0, 254) : ''; + $u_forwarded_for = ($config['forwarded_for_check']) ? substr($this->forwarded_for, 0, 254) : ''; + + if ($u_ip === $s_ip && $s_browser === $u_browser && $s_forwarded_for === $u_forwarded_for) { $session_expired = false; @@ -278,7 +313,7 @@ class session // Added logging temporarly to help debug bugs... if (defined('DEBUG_EXTRA')) { - add_log('critical', 'LOG_IP_BROWSER_CHECK', $u_ip, $s_ip, $u_browser, $s_browser); + add_log('critical', 'LOG_IP_BROWSER_FORWARDED_CHECK', $u_ip, $s_ip, $u_browser, $s_browser, $u_forwarded_for, $s_forwarded_for); } } } @@ -398,7 +433,7 @@ class session $db->sql_freeresult($result); } - // If no data was returned one or more of the following occured: + // If no data was returned one or more of the following occurred: // Key didn't match one in the DB // User does not exist // User is inactive @@ -447,7 +482,16 @@ class session // Is user banned? Are they excluded? Won't return on ban, exists within method if ($this->data['user_type'] != USER_FOUNDER) { - $this->check_ban($this->data['user_id'], $this->ip); + if (!$config['forwarded_for_check']) + { + $this->check_ban($this->data['user_id'], $this->ip); + } + else + { + $ips = explode(', ', $this->forwarded_for); + $ips[] = $this->ip; + $this->check_ban($this->data['user_id'], $ips); + } } $this->data['is_registered'] = (!$bot && $this->data['user_id'] != ANONYMOUS && ($this->data['user_type'] == USER_NORMAL || $this->data['user_type'] == USER_FOUNDER)) ? true : false; @@ -456,14 +500,17 @@ class session // If our friend is a bot, we re-assign a previously assigned session if ($this->data['is_bot'] && $bot == $this->data['user_id'] && $this->data['session_id']) { - // Only assign the current session if the ip and browser match... + // Only assign the current session if the ip, browser and forwarded_for match... $s_ip = implode('.', array_slice(explode('.', $this->data['session_ip']), 0, $config['ip_check'])); $u_ip = implode('.', array_slice(explode('.', $this->ip), 0, $config['ip_check'])); $s_browser = ($config['browser_check']) ? strtolower(substr($this->data['session_browser'], 0, 149)) : ''; $u_browser = ($config['browser_check']) ? strtolower(substr($this->browser, 0, 149)) : ''; - if ($u_ip === $s_ip && $s_browser === $u_browser) + $s_forwarded_for = ($config['forwarded_for_check']) ? substr($this->data['session_forwarded_for'], 0, 254) : ''; + $u_forwarded_for = ($config['forwarded_for_check']) ? substr($this->forwarded_for, 0, 254) : ''; + + if ($u_ip === $s_ip && $s_browser === $u_browser && $s_forwarded_for === $u_forwarded_for) { $this->session_id = $this->data['session_id']; @@ -512,6 +559,7 @@ class session 'session_last_visit' => (int) $this->data['session_last_visit'], 'session_time' => (int) $this->time_now, 'session_browser' => (string) $this->browser, + 'session_forwarded_for' => (string) $this->forwarded_for, 'session_ip' => (string) $this->ip, 'session_autologin' => ($session_autologin) ? 1 : 0, 'session_admin' => ($set_admin) ? 1 : 0, @@ -580,6 +628,14 @@ class session } else { + $this->data['session_time'] = $this->data['session_last_visit'] = $this->time_now; + + // Update the last visit time + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $this->data['session_time'] . ' + WHERE user_id = ' . (int) $this->data['user_id']; + $db->sql_query($sql); + $SID = '?sid='; $_SID = ''; } @@ -595,7 +651,7 @@ class session * and update the users information from the relevant session data. It will then * grab guest user information. */ - function session_kill() + function session_kill($new_session = true) { global $SID, $_SID, $db, $config, $phpbb_root_path, $phpEx; @@ -656,7 +712,10 @@ class session $this->session_id = $_SID = ''; // To make sure a valid session is created we create one for the anonymous user - $this->session_create(ANONYMOUS); + if ($new_session) + { + $this->session_create(ANONYMOUS); + } return true; } @@ -757,11 +816,18 @@ class session * are passed to the method pre-existing session data is used. If $return is false * this routine does not return on finding a banned user, it outputs a relevant * message and stops execution. + * + * @param string|array $user_ips Can contain a string with one IP or an array of multiple IPs */ - function check_ban($user_id = false, $user_ip = false, $user_email = false, $return = false) + function check_ban($user_id = false, $user_ips = false, $user_email = false, $return = false) { global $config, $db; + if (defined('IN_CHECK_BAN')) + { + return; + } + $banned = false; $sql = 'SELECT ban_ip, ban_userid, ban_email, ban_exclude, ban_give_reason, ban_end @@ -774,14 +840,14 @@ class session $sql .= " AND ban_email = ''"; } - if ($user_ip === false) + if ($user_ips === false) { - $sql .= " AND (ban_ip = '' OR (ban_ip <> '' AND ban_exclude = 1))"; + $sql .= " AND (ban_ip = '' OR ban_exclude = 1)"; } if ($user_id === false) { - $sql .= ' AND (ban_userid = 0 OR (ban_userid <> 0 AND ban_exclude = 1))'; + $sql .= ' AND (ban_userid = 0 OR ban_exclude = 1)'; } else { @@ -792,7 +858,7 @@ class session $sql .= " OR ban_email <> ''"; } - if ($user_ip !== false) + if ($user_ips !== false) { $sql .= " OR ban_ip <> ''"; } @@ -805,8 +871,28 @@ class session $ban_triggered_by = 'user'; while ($row = $db->sql_fetchrow($result)) { + $ip_banned = false; + if (!empty($row['ban_ip'])) + { + if (!is_array($user_ips)) + { + $ip_banned = preg_match('#^' . str_replace('*', '.*?', $row['ban_ip']) . '$#i', $user_ips); + } + else + { + foreach ($user_ips as $user_ip) + { + if (preg_match('#^' . str_replace('*', '.*?', $row['ban_ip']) . '$#i', $user_ip)) + { + $ip_banned = true; + break; + } + } + } + } + if ((!empty($row['ban_userid']) && intval($row['ban_userid']) == $user_id) || - (!empty($row['ban_ip']) && preg_match('#^' . str_replace('*', '.*?', $row['ban_ip']) . '$#i', $user_ip)) || + $ip_banned || (!empty($row['ban_email']) && preg_match('#^' . str_replace('*', '.*?', $row['ban_email']) . '$#i', $user_email))) { if (!empty($row['ban_exclude'])) @@ -823,7 +909,7 @@ class session { $ban_triggered_by = 'user'; } - else if (!empty($row['ban_ip']) && preg_match('#^' . str_replace('*', '.*?', $row['ban_ip']) . '$#i', $user_ip)) + else if (!empty($row['ban_ip']) && preg_match('#^' . str_replace('*', '.*?', $row['ban_ip']) . '$#i', $user_ips)) { $ban_triggered_by = 'ip'; } @@ -849,6 +935,23 @@ class session $this->session_kill(); } + // We show a login box here to allow founders accessing the board if banned by IP + if (defined('IN_LOGIN') && $this->data['user_id'] == ANONYMOUS) + { + global $phpEx; + + // Set as a precaution to allow login_box() handling this case correctly as well as this function not being executed again. + define('IN_CHECK_BAN', 1); + + $this->setup('ucp'); + $this->data['is_registered'] = $this->data['is_bot'] = false; + + login_box("index.$phpEx"); + + // The false here is needed, else the user is able to circumvent the ban. + $this->session_kill(false); + } + // Determine which message to output $till_date = ($ban_row['ban_end']) ? $this->format_date($ban_row['ban_end']) : ''; $message = ($ban_row['ban_end']) ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM'; @@ -870,9 +973,10 @@ class session * Only IPv4 (rbldns does not support AAAA records/IPv6 lookups) * * @author satmd (from the php manual) + * @param string $mode register/post - spamcop for example is ommitted for posting * @return false if ip is not blacklisted, else an array([checked server], [lookup]) */ - function check_dnsbl($ip = false) + function check_dnsbl($mode, $ip = false) { if ($ip === false) { @@ -880,23 +984,40 @@ class session } $dnsbl_check = array( - 'bl.spamcop.net' => 'http://spamcop.net/bl.shtml?', 'list.dsbl.org' => 'http://dsbl.org/listing?', 'sbl-xbl.spamhaus.org' => 'http://www.spamhaus.org/query/bl?ip=', ); + if ($mode == 'register') + { + $dnsbl_check['bl.spamcop.net'] = 'http://spamcop.net/bl.shtml?'; + } + if ($ip) { $quads = explode('.', $ip); $reverse_ip = $quads[3] . '.' . $quads[2] . '.' . $quads[1] . '.' . $quads[0]; + // Need to be listed on all servers... + $listed = true; + $info = array(); + foreach ($dnsbl_check as $dnsbl => $lookup) { if (phpbb_checkdnsrr($reverse_ip . '.' . $dnsbl . '.', 'A') === true) { - return array($dnsbl, $lookup . $ip); + $info = array($dnsbl, $lookup . $ip); + } + else + { + $listed = false; } } + + if ($listed) + { + return $info; + } } return false; @@ -1185,7 +1306,7 @@ class user extends session } $stylesheet = str_replace($match, $content, $stylesheet); } - unset ($content); + unset($content); } $stylesheet = str_replace('./', 'styles/' . $this->theme['theme_path'] . '/theme/', $stylesheet); @@ -1210,10 +1331,10 @@ class user extends session // Disable board if the install/ directory is still present // For the brave development army we do not care about this, else we need to comment out this everytime we develop locally - if (!defined('DEBUG_EXTRA') && !defined('ADMIN_START') && !defined('IN_LOGIN') && file_exists($phpbb_root_path . 'install')) + if (!defined('DEBUG_EXTRA') && !defined('ADMIN_START') && !defined('IN_INSTALL') && !defined('IN_LOGIN') && file_exists($phpbb_root_path . 'install')) { // Adjust the message slightly according to the permissions - if ($auth->acl_gets('a_', 'm_')) + if ($auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_')) { $message = 'REMOVE_INSTALL'; } @@ -1226,7 +1347,7 @@ class user extends session } // Is board disabled and user not an admin or moderator? - if ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_')) + if ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) { $message = (!empty($config['board_disable_msg'])) ? $config['board_disable_msg'] : 'BOARD_DISABLE'; trigger_error($message); @@ -1235,7 +1356,7 @@ class user extends session // Is load exceeded? if ($config['limit_load'] && $this->load !== false) { - if ($this->load > floatval($config['limit_load']) && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_')) + if ($this->load > floatval($config['limit_load']) && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) { trigger_error('BOARD_UNAVAILABLE'); } @@ -1325,7 +1446,7 @@ class user extends session // $lang == $this->lang // $help == $this->help - // - add appropiate variables here, name them as they are used within the language file... + // - add appropriate variables here, name them as they are used within the language file... if (!$use_db) { if ((include($this->lang_path . (($use_help) ? 'help_' : '') . "$lang_file.$phpEx")) === false) diff --git a/phpBB/includes/template.php b/phpBB/includes/template.php index 76a89869f5..259874488d 100644 --- a/phpBB/includes/template.php +++ b/phpBB/includes/template.php @@ -23,11 +23,12 @@ class template { /** variable that holds all the data we'll be substituting into * the compiled templates. Takes form: - * --> $this->_tpldata[block.][iteration#][child.][iteration#][child2.][iteration#][variablename] == value + * --> $this->_tpldata[block][iteration#][child][iteration#][child2][iteration#][variablename] == value * if it's a root-level variable, it'll be like this: * --> $this->_tpldata[.][0][varname] == value */ - var $_tpldata = array(); + var $_tpldata = array('.' => array(0 => array())); + var $_rootref; // Root dir and hash of filenames for each template handle. var $root = ''; @@ -55,6 +56,8 @@ class template trigger_error('Template path could not be found: styles/' . $user->theme['template_path'] . '/template', E_USER_ERROR); } + $this->_rootref = &$this->_tpldata['.'][0]; + return true; } @@ -104,7 +107,7 @@ class template */ function destroy() { - $this->_tpldata = array(); + $this->_tpldata = array('.' => array(0 => array())); } /** @@ -204,12 +207,6 @@ class template $compile = new template_compile($this); - // If the file for this handle is already loaded and compiled, do nothing. - if (!empty($this->uncompiled_code[$handle])) - { - return true; - } - // If we don't have a file assigned to this handle, die. if (!isset($this->files[$handle])) { @@ -281,7 +278,7 @@ class template { foreach ($vararray as $key => $val) { - $this->_tpldata['.'][0][$key] = $val; + $this->_rootref[$key] = $val; } return true; @@ -293,7 +290,7 @@ class template */ function assign_var($varname, $varval) { - $this->_tpldata['.'][0][$varname] = $varval; + $this->_rootref[$varname] = $varval; return true; } @@ -476,7 +473,7 @@ class template } /** - * Include a seperate template + * Include a separate template * @access private */ function _tpl_include($filename, $include = true) diff --git a/phpBB/includes/ucp/ucp_activate.php b/phpBB/includes/ucp/ucp_activate.php index b3cb27223a..e9fbe69938 100644 --- a/phpBB/includes/ucp/ucp_activate.php +++ b/phpBB/includes/ucp/ucp_activate.php @@ -84,7 +84,6 @@ class ucp_activate $messenger->template('admin_welcome_activated', $user_row['user_lang']); - $messenger->replyto($config['board_contact']); $messenger->to($user_row['user_email'], $user_row['username']); $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); diff --git a/phpBB/includes/ucp/ucp_attachments.php b/phpBB/includes/ucp/ucp_attachments.php index 2312d1f30d..895cb51020 100644 --- a/phpBB/includes/ucp/ucp_attachments.php +++ b/phpBB/includes/ucp/ucp_attachments.php @@ -27,7 +27,7 @@ class ucp_attachments $delete = (isset($_POST['delete'])) ? true : false; $confirm = (isset($_POST['confirm'])) ? true : false; - $delete_ids = isset($_REQUEST['attachment']) ? array_keys(array_map('intval', $_REQUEST['attachment'])) : array(); + $delete_ids = array_keys(request_var('attachment', array(0))); if ($delete && sizeof($delete_ids)) { diff --git a/phpBB/includes/ucp/ucp_confirm.php b/phpBB/includes/ucp/ucp_confirm.php index 087a186fa7..e971dbb3ae 100644 --- a/phpBB/includes/ucp/ucp_confirm.php +++ b/phpBB/includes/ucp/ucp_confirm.php @@ -39,7 +39,7 @@ class ucp_confirm } // Try and grab code for this id and session - $sql = 'SELECT code + $sql = 'SELECT code, seed FROM ' . CONFIRM_TABLE . " WHERE session_id = '" . $db->sql_escape($user->session_id) . "' AND confirm_id = '" . $db->sql_escape($confirm_id) . "' @@ -64,7 +64,7 @@ class ucp_confirm } $captcha = new captcha(); - $captcha->execute($row['code']); + $captcha->execute($row['code'], $row['seed']); exit; } } diff --git a/phpBB/includes/ucp/ucp_groups.php b/phpBB/includes/ucp/ucp_groups.php index 1536411e9d..119f496d21 100644 --- a/phpBB/includes/ucp/ucp_groups.php +++ b/phpBB/includes/ucp/ucp_groups.php @@ -172,7 +172,7 @@ class ucp_groups include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); $messenger = new messenger(); - $sql = 'SELECT u.username, u.user_email, u.user_notify_type, u.user_jabber, u.user_lang + $sql = 'SELECT u.username, u.username_clean, u.user_email, u.user_notify_type, u.user_jabber, u.user_lang FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u WHERE ug.user_id = u.user_id AND ' . (($group_row[$group_id]['group_type'] == GROUP_FREE) ? "ug.user_id = {$user->data['user_id']}" : 'ug.group_leader = 1') . " @@ -183,7 +183,6 @@ class ucp_groups { $messenger->template($email_template, $row['user_lang']); - $messenger->replyto($config['board_email']); $messenger->to($row['user_email'], $row['username']); $messenger->im($row['user_jabber'], $row['username']); @@ -675,11 +674,11 @@ class ucp_groups $start = request_var('start', 0); // Grab the members - $sql = 'SELECT u.user_id, u.username, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending + $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND u.user_id = ug.user_id - ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username"; + ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean"; $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); $pending = false; diff --git a/phpBB/includes/ucp/ucp_main.php b/phpBB/includes/ucp/ucp_main.php index 57a8d0f86a..6678c362c0 100644 --- a/phpBB/includes/ucp/ucp_main.php +++ b/phpBB/includes/ucp/ucp_main.php @@ -193,8 +193,8 @@ class ucp_main if ($unwatch) { - $forums = (isset($_POST['f'])) ? array_map('intval', array_keys($_POST['f'])) : array(); - $topics = (isset($_POST['t'])) ? array_map('intval', array_keys($_POST['t'])) : array(); + $forums = array_keys(request_var('f', array(0 => 0))); + $topics = array_keys(request_var('t', array(0 => 0))); if (sizeof($forums) || sizeof($topics)) { @@ -512,7 +512,7 @@ class ucp_main if (isset($_POST['unbookmark'])) { $s_hidden_fields = array('unbookmark' => 1); - $topics = (isset($_POST['t'])) ? array_map('intval', array_keys($_POST['t'])) : array(); + $topics = (isset($_POST['t'])) ? array_keys(request_var('t', array(0 => 0))) : array(); $url = $this->u_action; if (!sizeof($topics)) @@ -644,7 +644,7 @@ class ucp_main if ($delete) { - $drafts = (!empty($_POST['d'])) ? array_map('intval', array_keys($_POST['d'])) : array(); + $drafts = array_keys(request_var('d', array(0 => 0))); if (sizeof($drafts)) { diff --git a/phpBB/includes/ucp/ucp_pm.php b/phpBB/includes/ucp/ucp_pm.php index b51f265df3..b1f016e149 100644 --- a/phpBB/includes/ucp/ucp_pm.php +++ b/phpBB/includes/ucp/ucp_pm.php @@ -218,7 +218,7 @@ class ucp_pm // Move PM if ($move_pm) { - $move_msg_ids = (isset($_POST['marked_msg_id'])) ? array_map('intval', $_POST['marked_msg_id']) : array(); + $move_msg_ids = (isset($_POST['marked_msg_id'])) ? request_var('marked_msg_id', array(0)) : array(); $cur_folder_id = request_var('cur_folder_id', PRIVMSGS_NO_BOX); if (move_pm($user->data['user_id'], $user->data['message_limit'], $move_msg_ids, $dest_folder, $cur_folder_id)) @@ -239,7 +239,7 @@ class ucp_pm handle_mark_actions($user->data['user_id'], $mark_option); } - // If new messages arrived, place them into the appropiate folder + // If new messages arrived, place them into the appropriate folder $num_not_moved = $num_removed = 0; if ($user->data['user_new_privmsg'] && $action == 'view_folder') @@ -368,6 +368,7 @@ class ucp_pm 'U_OUTBOX' => $this->u_action . '&folder=outbox', 'U_SENTBOX' => $this->u_action . '&folder=sentbox', 'U_CREATE_FOLDER' => $this->u_action . '&mode=options', + 'U_CURRENT_FOLDER' => $this->u_action . '&folder=' . $folder_id, 'S_IN_INBOX' => ($folder_id == PRIVMSGS_INBOX) ? true : false, 'S_IN_OUTBOX' => ($folder_id == PRIVMSGS_OUTBOX) ? true : false, diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 3cfb2f37a9..ce6087f424 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -48,10 +48,11 @@ function compose_pm($id, $mode, $action) $add_to = (isset($_REQUEST['add_to'])) ? true : false; $add_bcc = (isset($_REQUEST['add_bcc'])) ? true : false; - $refresh = isset($_POST['add_file']) || isset($_POST['delete_file']) || isset($_POST['edit_comment']) || $save || $load + $refresh = isset($_POST['add_file']) || isset($_POST['delete_file']) || $save || $load || $remove_u || $remove_g || $add_to || $add_bcc; $action = ($delete && !$preview && !$refresh && $submit) ? 'delete' : $action; + $select_single = ($config['allow_mass_pm'] && $auth->acl_get('u_masspm')) ? false : true; $error = array(); $current_time = time(); @@ -90,7 +91,8 @@ function compose_pm($id, $mode, $action) 'S_SHOW_PM_BOX' => true, 'S_ALLOW_MASS_PM' => ($config['allow_mass_pm'] && $auth->acl_get('u_masspm')) ? true : false, 'S_GROUP_OPTIONS' => ($config['allow_mass_pm'] && $auth->acl_get('u_masspm')) ? $group_options : '', - 'U_SEARCH_USER' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=post&field=username_list')) + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=searchuser&form=post&field=username_list&select_single=$select_single"), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=searchuser&form=post&field=username_list&select_single=$select_single", false)) ); } @@ -513,14 +515,17 @@ function compose_pm($id, $mode, $action) } // Subject defined - if (!$subject && !($remove_u || $remove_g || $add_to || $add_bcc)) + if ($submit) { - $error[] = $user->lang['EMPTY_SUBJECT']; - } + if (!$subject) + { + $error[] = $user->lang['EMPTY_SUBJECT']; + } - if (!sizeof($address_list)) - { - $error[] = $user->lang['NO_RECIPIENT']; + if (!sizeof($address_list)) + { + $error[] = $user->lang['NO_RECIPIENT']; + } } if (sizeof($message_parser->warn_msg) && !($remove_u || $remove_g || $add_to || $add_bcc)) @@ -553,7 +558,7 @@ function compose_pm($id, $mode, $action) unset($message_parser); // ((!$message_subject) ? $subject : $message_subject) - $msg_id = submit_pm($action, $subject, $pm_data, true); + $msg_id = submit_pm($action, $subject, $pm_data); $return_message_url = append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=view&p=' . $msg_id); $return_folder_url = append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&folder=outbox'); @@ -569,8 +574,6 @@ function compose_pm($id, $mode, $action) // Preview if (!sizeof($error) && $preview) { - $post_time = ($action == 'edit') ? $post_time : $current_time; - $preview_message = $message_parser->format_display($enable_bbcode, $enable_urls, $enable_smilies, false); $preview_signature = $user->data['user_sig']; @@ -596,10 +599,20 @@ function compose_pm($id, $mode, $action) // Attachment Preview if (sizeof($message_parser->attachment_data)) { - $extensions = $update_count = array(); - $template->assign_var('S_HAS_ATTACHMENTS', true); - display_attachments(0, 'attachment', $message_parser->attachment_data, $update_count); + + $update_count = array(); + $attachment_data = $message_parser->attachment_data; + + parse_attachments(false, $preview_message, $attachment_data, $update_count, true); + + foreach ($attachment_data as $i => $attachment) + { + $template->assign_block_vars('attachment', array( + 'DISPLAY_ATTACHMENT' => $attachment) + ); + } + unset($attachment_data); } $preview_subject = censor_text($subject); diff --git a/phpBB/includes/ucp/ucp_pm_options.php b/phpBB/includes/ucp/ucp_pm_options.php index 9ce7f87740..db4d62f472 100644 --- a/phpBB/includes/ucp/ucp_pm_options.php +++ b/phpBB/includes/ucp/ucp_pm_options.php @@ -227,6 +227,14 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit $user->data['user_full_folder'] = PRIVMSGS_INBOX; } + // Now make sure the folder is not used for rules + // We assign another folder id (the one the messages got moved to) or assign the INBOX (to not have to remove any rule) + $sql = 'UPDATE ' . PRIVMSGS_RULES_TABLE . ' SET rule_folder_id = '; + $sql .= ($remove_action == 1) ? $move_to : PRIVMSGS_INBOX; + $sql .= ' WHERE rule_folder_id = ' . $remove_folder_id; + + $db->sql_query($sql); + $meta_info = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=$mode"); $message = $user->lang['FOLDER_REMOVED']; @@ -430,11 +438,12 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit 'S_HOLD_CHECKED' => $s_hold_checked, 'S_MOVE_CHECKED' => $s_move_checked, 'S_MAX_FOLDER_REACHED' => ($num_user_folder >= $config['pm_max_boxes']) ? true : false, + 'S_MAX_FOLDER_ZERO' => ($config['pm_max_boxes'] == 0) ? true : false, 'DEFAULT_ACTION' => ($config['full_folder_action'] == 1) ? $user->lang['DELETE_OLDEST_MESSAGES'] : $user->lang['HOLD_NEW_MESSAGES'], - 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=rule_string'), - 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=rule_string', true)) + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=rule_string&select_single=true'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=rule_string&select_single=true', false)) ); $rule_lang = $action_lang = $check_lang = array(); diff --git a/phpBB/includes/ucp/ucp_pm_viewfolder.php b/phpBB/includes/ucp/ucp_pm_viewfolder.php index 4277639d83..4ce5b81fce 100644 --- a/phpBB/includes/ucp/ucp_pm_viewfolder.php +++ b/phpBB/includes/ucp/ucp_pm_viewfolder.php @@ -239,7 +239,9 @@ function view_folder($id, $mode, $folder_id, $folder) $template->assign_vars(array( 'S_SHOW_RECIPIENTS' => ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) ? true : false, - 'S_SHOW_COLOUR_LEGEND' => true) + 'S_SHOW_COLOUR_LEGEND' => true, + + 'S_PM_ICONS' => ($config['enable_pm_icons']) ? true : false) ); } } @@ -519,7 +521,7 @@ function get_pm_from($folder_id, $folder, $user_id) $sql_start = $start; } - $sql = 'SELECT t.*, p.root_level, p.message_time, p.message_subject, p.icon_id, p.to_address, p.message_attachment, p.bcc_address, u.username, u.user_colour + $sql = 'SELECT t.*, p.root_level, p.message_time, p.message_subject, p.icon_id, p.to_address, p.message_attachment, p.bcc_address, u.username, u.username_clean, u.user_colour FROM ' . PRIVMSGS_TO_TABLE . ' t, ' . PRIVMSGS_TABLE . ' p, ' . USERS_TABLE . " u WHERE t.user_id = $user_id AND p.author_id = u.user_id diff --git a/phpBB/includes/ucp/ucp_pm_viewmessage.php b/phpBB/includes/ucp/ucp_pm_viewmessage.php index 9a19baa257..4bda60834e 100644 --- a/phpBB/includes/ucp/ucp_pm_viewmessage.php +++ b/phpBB/includes/ucp/ucp_pm_viewmessage.php @@ -117,16 +117,10 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row) } // Assign inline attachments - if (isset($attachments) && sizeof($attachments)) + if (!empty($attachments)) { $update_count = array(); - $unset_attachments = parse_inline_attachments($message, $attachments, $update_count, 0); - - // Needed to let not display the inlined attachments at the end of the message again - foreach ($unset_attachments as $index) - { - unset($attachments[$index]); - } + parse_attachments(false, $message, $attachments, $update_count); // Update the attachment download counts if (sizeof($update_count)) @@ -170,8 +164,8 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row) 'MESSAGE_AUTHOR' => get_username_string('username', $author_id, $user_info['username'], $user_info['user_colour'], $user_info['username']), 'U_MESSAGE_AUTHOR' => get_username_string('profile', $author_id, $user_info['username'], $user_info['user_colour'], $user_info['username']), - 'AUTHOR_RANK' => $user_info['rank_title'], - 'RANK_IMAGE' => $user_info['rank_image'], + 'RANK_TITLE' => $user_info['rank_title'], + 'RANK_IMG' => $user_info['rank_image'], 'AUTHOR_AVATAR' => (isset($user_info['avatar'])) ? $user_info['avatar'] : '', 'AUTHOR_JOINED' => $user->format_date($user_info['user_regdate']), 'AUTHOR_POSTS' => (!empty($user_info['user_posts'])) ? $user_info['user_posts'] : '', @@ -193,6 +187,7 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row) 'MESSAGE' => $message, 'SIGNATURE' => ($message_row['enable_sig']) ? $signature : '', 'EDITED_MESSAGE' => $l_edited_by, + 'MESSAGE_ID' => $message_row['msg_id'], 'U_INFO' => ($auth->acl_get('m_info') && $message_row['pm_forwarded']) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'mode=pm_details&p=' . $message_row['msg_id'], true, $user->session_id) : '', 'U_DELETE' => ($auth->acl_get('u_pm_delete')) ? "$url&mode=compose&action=delete&f=$folder_id&p=" . $message_row['msg_id'] : '', @@ -277,11 +272,11 @@ function message_history($msg_id, $user_id, $message_row, $folder) { $folder_id = (int) $row['folder_id']; - $row['folder'][] = (isset($folder[$folder_id])) ? '<a href="' . $folder_url . $folder_id . '">' . $folder[$folder_id]['folder_name'] . '</a>' : $user->lang['UNKOWN_FOLDER']; + $row['folder'][] = (isset($folder[$folder_id])) ? '<a href="' . $folder_url . $folder_id . '">' . $folder[$folder_id]['folder_name'] . '</a>' : $user->lang['UNKNOWN_FOLDER']; if (isset($rowset[$row['msg_id']])) { - $rowset[$row['msg_id']]['folder'][] = (isset($folder[$folder_id])) ? '<a href="' . $folder_url . $folder_id . '">' . $folder[$folder_id]['folder_name'] . '</a>' : $user->lang['UNKOWN_FOLDER']; + $rowset[$row['msg_id']]['folder'][] = (isset($folder[$folder_id])) ? '<a href="' . $folder_url . $folder_id . '">' . $folder[$folder_id]['folder_name'] . '</a>' : $user->lang['UNKNOWN_FOLDER']; } else { @@ -467,7 +462,7 @@ function get_user_information($user_id, $user_row) if (!empty($user_row['user_allow_viewemail']) || $auth->acl_get('a_email')) { - $user_row['email'] = ($config['board_email_form'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&u=$user_id") : (($config['board_hide_emails'] && !$auth->acl_get('a_email')) ? '' : 'mailto:' . $user_row['user_email']); + $user_row['email'] = ($config['board_email_form'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&u=$user_id") : ((($config['board_hide_emails'] && !$auth->acl_get('a_email')) || empty($user_row['user_email'])) ? '' : 'mailto:' . $user_row['user_email']); } else { diff --git a/phpBB/includes/ucp/ucp_prefs.php b/phpBB/includes/ucp/ucp_prefs.php index e72673c023..e57cc3ec26 100644 --- a/phpBB/includes/ucp/ucp_prefs.php +++ b/phpBB/includes/ucp/ucp_prefs.php @@ -215,7 +215,7 @@ class ucp_prefs $limit_post_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); $sort_by_post_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']); - $sort_by_post_sql = array('a' => 'u.username', 't' => 'p.post_id', 's' => 'p.post_subject'); + $sort_by_post_sql = array('a' => 'u.username_clean', 't' => 'p.post_id', 's' => 'p.post_subject'); $_options = array('topic', 'post'); foreach ($_options as $sort_option) diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php index 29055f0d89..e730368e20 100644 --- a/phpBB/includes/ucp/ucp_profile.php +++ b/phpBB/includes/ucp/ucp_profile.php @@ -11,6 +11,8 @@ /** * ucp_profile * Changing profile settings +* +* @todo what about pertaining user_sig_options? * @package ucp */ class ucp_profile @@ -52,7 +54,7 @@ class ucp_profile 'password_confirm' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']), 'email' => array( array('string', false, 6, 60), - array('email', $data['email'])), + array('email')), 'email_confirm' => array('string', true, 6, 60), ); @@ -60,7 +62,7 @@ class ucp_profile { $check_ary['username'] = array( array('string', false, $config['min_name_chars'], $config['max_name_chars']), - array('username', $data['username']), + array('username'), ); } @@ -130,7 +132,6 @@ class ucp_profile $template_file = ($config['require_activation'] == USER_ACTIVATION_ADMIN) ? 'user_activate_inactive' : 'user_activate'; $messenger->template($template_file, $user->data['user_lang']); - $messenger->replyto($config['board_contact']); $messenger->to($data['email'], $data['username']); $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); @@ -167,13 +168,12 @@ class ucp_profile while ($row = $db->sql_fetchrow($result)) { $messenger->template('admin_activate', $row['user_lang']); - $messenger->replyto($config['board_contact']); $messenger->to($row['user_email'], $row['username']); $messenger->im($row['user_jabber'], $row['username']); $messenger->assign_vars(array( 'USERNAME' => htmlspecialchars_decode($data['username']), - 'U_USER_DETAILS' => "$server_url/memberlist.$phpEx?mode=viewprofile&u={$user->data['user_id']}", + 'U_USER_DETAILS' => "$server_url/memberlist.$phpEx?mode=viewprofile&u={$user->data['user_id']}", 'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u={$user->data['user_id']}&k=$user_actkey") ); @@ -212,8 +212,7 @@ class ucp_profile $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); } - $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[\w]+' => 'USERNAME_ALPHA_ONLY', '[\w_\+\. \-\[\]]+' => 'USERNAME_ALPHA_SPACERS'); - $pass_char_ary = array('.*' => 'PASS_TYPE_ANY', '[a-zA-Z]' => 'PASS_TYPE_CASE', '[a-zA-Z0-9]' => 'PASS_TYPE_ALPHA', '[a-zA-Z\W]' => 'PASS_TYPE_SYMBOL'); + $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[a-z]+' => 'USERNAME_ALPHA_ONLY', '[-\]_+ [a-z]+' => 'USERNAME_ALPHA_SPACERS', '\w+' => 'USERNAME_LETTER_NUM', '[-\]_+ [\w]+' => 'USERNAME_LETTER_NUM_SPACERS', '[\x01-\x7F]+' => 'USERNAME_ASCII'); $template->assign_vars(array( 'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '', @@ -225,7 +224,7 @@ class ucp_profile 'CUR_PASSWORD' => '', 'L_USERNAME_EXPLAIN' => sprintf($user->lang[$user_char_ary[str_replace('\\\\', '\\', $config['allow_name_chars'])] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']), - 'L_CHANGE_PASSWORD_EXPLAIN' => sprintf($user->lang[$pass_char_ary[str_replace('\\\\', '\\', $config['pass_complex'])] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), + 'L_CHANGE_PASSWORD_EXPLAIN' => sprintf($user->lang[$config['pass_complex'] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), 'S_FORCE_PASSWORD' => ($config['chg_passforce'] && $user->data['user_passchg'] < time() - $config['chg_passforce']) ? true : false, 'S_CHANGE_USERNAME' => ($config['allow_namechange'] && $auth->acl_get('u_chgname')) ? true : false, @@ -272,7 +271,7 @@ class ucp_profile 'icq' => array( array('string', true, 3, 15), array('match', true, '#^[0-9]+$#i')), - 'aim' => array('string', true, 3, 17), + 'aim' => array('string', true, 3, 255), 'msn' => array('string', true, 5, 255), 'jabber' => array( array('string', true, 5, 255), @@ -406,22 +405,23 @@ class ucp_profile include($phpbb_root_path . 'includes/functions_posting.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx); - $enable_bbcode = ($config['allow_sig_bbcode']) ? request_var('enable_bbcode', $user->optionget('bbcode')) : false; - $enable_smilies = ($config['allow_sig_smilies']) ? request_var('enable_smilies', $user->optionget('smilies')) : false; - $enable_urls = request_var('enable_urls', true); + $enable_bbcode = ($config['allow_sig_bbcode']) ? ((request_var('disable_bbcode', !$user->optionget('bbcode'))) ? false : true) : false; + $enable_smilies = ($config['allow_sig_smilies']) ? ((request_var('disable_smilies', !$user->optionget('smilies'))) ? false : true) : false; + $enable_urls = ($config['allow_sig_links']) ? ((request_var('disable_magic_url', false)) ? false : true) : false; + $signature = utf8_normalize_nfc(request_var('signature', (string) $user->data['user_sig'], true)); if ($submit || $preview) { - include($phpbb_root_path . 'includes/message_parser.'.$phpEx); + include($phpbb_root_path . 'includes/message_parser.' . $phpEx); if (!sizeof($error)) { $message_parser = new parse_message($signature); // Allowing Quote BBCode - $message_parser->parse($enable_bbcode, ($config['allow_sig_links']) ? $enable_urls : false, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig'); - + $message_parser->parse($enable_bbcode, $enable_urls, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig'); + if (sizeof($message_parser->warn_msg)) { $error[] = implode('<br />', $message_parser->warn_msg); @@ -444,7 +444,7 @@ class ucp_profile trigger_error($message); } } - + // Replace "error" strings with their real, localised form $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); } @@ -464,9 +464,9 @@ class ucp_profile 'SIGNATURE' => $signature, 'SIGNATURE_PREVIEW' => $signature_preview, - 'S_BBCODE_CHECKED' => (!$enable_bbcode) ? 'checked="checked"' : '', - 'S_SMILIES_CHECKED' => (!$enable_smilies) ? 'checked="checked"' : '', - 'S_MAGIC_URL_CHECKED' => (!$enable_urls) ? 'checked="checked"' : '', + 'S_BBCODE_CHECKED' => (!$enable_bbcode) ? ' checked="checked"' : '', + 'S_SMILIES_CHECKED' => (!$enable_smilies) ? ' checked="checked"' : '', + 'S_MAGIC_URL_CHECKED' => (!$enable_urls) ? ' checked="checked"' : '', 'BBCODE_STATUS' => ($config['allow_sig_bbcode']) ? sprintf($user->lang['BBCODE_IS_ON'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>') : sprintf($user->lang['BBCODE_IS_OFF'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'), 'SMILIES_STATUS' => ($config['allow_sig_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'], @@ -491,94 +491,15 @@ class ucp_profile case 'avatar': $display_gallery = (isset($_POST['display_gallery'])) ? true : false; - $delete = (isset($_POST['delete'])) ? true : false; - $avatar_select = basename(request_var('avatar_select', '')); $category = basename(request_var('category', '')); - // Can we upload? $can_upload = ($config['allow_avatar_upload'] && file_exists($phpbb_root_path . $config['avatar_path']) && is_writeable($phpbb_root_path . $config['avatar_path']) && $auth->acl_get('u_chgavatar') && (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on')) ? true : false; if ($submit) { - $data = array( - 'uploadurl' => request_var('uploadurl', ''), - 'remotelink' => request_var('remotelink', ''), - 'width' => request_var('width', ''), - 'height' => request_var('height', ''), - ); - - $error = validate_data($data, array( - 'uploadurl' => array('string', true, 5, 255), - 'remotelink' => array('string', true, 5, 255), - 'width' => array('string', true, 1, 3), - 'height' => array('string', true, 1, 3), - )); - - if (!sizeof($error)) - { - $data['user_id'] = $user->data['user_id']; - - if ((!empty($_FILES['uploadfile']['name']) || $data['uploadurl']) && $can_upload) - { - list($type, $filename, $width, $height) = avatar_upload($data, $error); - } - else if ($data['remotelink'] && $auth->acl_get('u_chgavatar') && $config['allow_avatar_remote']) - { - list($type, $filename, $width, $height) = avatar_remote($data, $error); - } - else if ($avatar_select && $auth->acl_get('u_chgavatar') && $config['allow_avatar_local']) - { - $type = AVATAR_GALLERY; - $filename = $avatar_select; - - // check avatar gallery - if (!is_dir($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category)) - { - $filename = ''; - $type = $width = $height = 0; - } - else - { - list($width, $height) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . $filename); - $filename = $category . '/' . $filename; - } - } - else if ($delete && $auth->acl_get('u_chgavatar')) - { - $filename = ''; - $type = $width = $height = 0; - } - else - { - $data = array(); - } - } - - if (!sizeof($error)) + if (avatar_process_user($error)) { - // Do we actually have any data to update? - if (sizeof($data)) - { - $sql_ary = array( - 'user_avatar' => $filename, - 'user_avatar_type' => $type, - 'user_avatar_width' => $width, - 'user_avatar_height' => $height, - ); - - $sql = 'UPDATE ' . USERS_TABLE . ' - SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' - WHERE user_id = ' . $user->data['user_id']; - $db->sql_query($sql); - - // Delete old avatar if present - if ($user->data['user_avatar'] && $filename != $user->data['user_avatar'] && $user->data['user_avatar_type'] != AVATAR_GALLERY) - { - avatar_delete('user', $user->data); - } - } - meta_refresh(3, $this->u_action); $message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); trigger_error($message); @@ -627,8 +548,8 @@ class ucp_profile $template->assign_vars(array( 'AVATAR' => $avatar_img, 'AVATAR_SIZE' => $config['avatar_filesize'], - 'WIDTH' => (isset($data['width'])) ? $data['width'] : $user->data['user_avatar_width'], - 'HEIGHT' => (isset($data['height'])) ? $data['height'] : $user->data['user_avatar_height'], + 'WIDTH' => request_var('width', $user->data['user_avatar_width']), + 'HEIGHT' => request_var('height', $user->data['user_avatar_height']), 'S_UPLOAD_AVATAR_FILE' => $can_upload, 'S_UPLOAD_AVATAR_URL' => $can_upload, diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index fcbc2675f8..9fffdff5fd 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -65,6 +65,7 @@ class ucp_register if (!$agreed) { $add_lang = ($change_lang) ? '&change_lang=' . urlencode($change_lang) : ''; + $add_coppa = ($coppa) ? '&coppa=1' : ''; if ($coppa === false && $config['coppa_enable']) { @@ -92,7 +93,7 @@ class ucp_register 'S_SHOW_COPPA' => false, 'S_REGISTRATION' => true, 'S_HIDDEN_FIELDS' => ($confirm_id) ? '<input type="hidden" name="confirm_id" value="' . $confirm_id . '" />' : '', - 'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register' . $add_lang)) + 'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register' . $add_lang . $add_coppa)) ); } @@ -121,9 +122,8 @@ class ucp_register $data = array( 'username' => request_var('username', '', true), - 'password_confirm' => request_var('password_confirm', '', true), 'new_password' => request_var('new_password', '', true), - 'cur_password' => request_var('cur_password', '', true), + 'password_confirm' => request_var('password_confirm', '', true), 'email' => strtolower(request_var('email', '')), 'email_confirm' => strtolower(request_var('email_confirm', '')), 'confirm_code' => request_var('confirm_code', ''), @@ -157,7 +157,7 @@ class ucp_register // DNSBL check if ($config['check_dnsbl']) { - if (($dnsbl = $user->check_dnsbl()) !== false) + if (($dnsbl = $user->check_dnsbl('register')) !== false) { $error[] = sprintf($user->lang['IP_BLACKLISTED'], $user->ip, $dnsbl[1]); } @@ -320,7 +320,6 @@ class ucp_register $messenger->template($email_template, $data['lang']); - $messenger->replyto($config['board_contact']); $messenger->to($data['email'], $data['username']); $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); @@ -368,7 +367,6 @@ class ucp_register while ($row = $db->sql_fetchrow($result)) { $messenger->template('admin_activate', $row['user_lang']); - $messenger->replyto($config['board_contact']); $messenger->to($row['user_email'], $row['username']); $messenger->im($row['user_jabber'], $row['username']); @@ -384,7 +382,7 @@ class ucp_register } } - $message = $message . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); + $message = $message . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); trigger_error($message); } } @@ -418,7 +416,7 @@ class ucp_register if (sizeof($sql_in)) { - $sql = 'DELETE FROM ' . CONFIRM_TABLE . ' + $sql = 'DELETE FROM ' . CONFIRM_TABLE . ' WHERE ' . $db->sql_in_set('session_id', $sql_in, true) . ' AND confirm_type = ' . CONFIRM_REG; $db->sql_query($sql); @@ -441,12 +439,17 @@ class ucp_register $code = gen_rand_string(mt_rand(5, 8)); $confirm_id = md5(unique_id($user->ip)); + $seed = hexdec(substr(unique_id(), 4, 10)); + + // compute $seed % 0x7fffffff + $seed -= 0x7fffffff * floor($seed / 0x7fffffff); $sql = 'INSERT INTO ' . CONFIRM_TABLE . ' ' . $db->sql_build_array('INSERT', array( 'confirm_id' => (string) $confirm_id, 'session_id' => (string) $user->session_id, 'confirm_type' => (int) CONFIRM_REG, - 'code' => (string) $code) + 'code' => (string) $code, + 'seed' => (int) $seed) ); $db->sql_query($sql); } @@ -472,10 +475,8 @@ class ucp_register break; } - $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[\w]+' => 'USERNAME_ALPHA_ONLY', '[\w_\+\. \-\[\]]+' => 'USERNAME_ALPHA_SPACERS'); - $pass_char_ary = array('.*' => 'PASS_TYPE_ANY', '[a-zA-Z]' => 'PASS_TYPE_CASE', '[a-zA-Z0-9]' => 'PASS_TYPE_ALPHA', '[a-zA-Z\W]' => 'PASS_TYPE_SYMBOL'); + $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[a-z]+' => 'USERNAME_ALPHA_ONLY', '[-\]_+ [a-z]+' => 'USERNAME_ALPHA_SPACERS', '\w+' => 'USERNAME_LETTER_NUM', '[-\]_+ [\w]+' => 'USERNAME_LETTER_NUM_SPACERS', '[\x01-\x7F]+' => 'USERNAME_ASCII'); - // $template->assign_vars(array( 'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '', 'USERNAME' => $data['username'], @@ -488,7 +489,7 @@ class ucp_register 'L_CONFIRM_EXPLAIN' => sprintf($user->lang['CONFIRM_EXPLAIN'], '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>'), 'L_REG_COND' => $l_reg_cond, 'L_USERNAME_EXPLAIN' => sprintf($user->lang[$user_char_ary[str_replace('\\\\', '\\', $config['allow_name_chars'])] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']), - 'L_NEW_PASSWORD_EXPLAIN' => sprintf($user->lang[$pass_char_ary[str_replace('\\\\', '\\', $config['pass_complex'])] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), + 'L_PASSWORD_EXPLAIN' => sprintf($user->lang[$config['pass_complex'] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), 'S_LANG_OPTIONS' => language_select($data['lang']), 'S_TZ_OPTIONS' => tz_select($data['tz']), diff --git a/phpBB/includes/ucp/ucp_remind.php b/phpBB/includes/ucp/ucp_remind.php index 924c096e04..0e86d5259f 100644 --- a/phpBB/includes/ucp/ucp_remind.php +++ b/phpBB/includes/ucp/ucp_remind.php @@ -64,7 +64,6 @@ class ucp_remind $messenger->template('user_activate_passwd', $user_row['user_lang']); - $messenger->replyto($user->data['user_email']); $messenger->to($user_row['user_email'], $user_row['username']); $messenger->im($user_row['user_jabber'], $user_row['username']); @@ -78,7 +77,7 @@ class ucp_remind meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx")); - $message = $user->lang['PASSWORD_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); + $message = $user->lang['PASSWORD_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); trigger_error($message); } diff --git a/phpBB/includes/ucp/ucp_resend.php b/phpBB/includes/ucp/ucp_resend.php index fe5801b37d..1eaa30ce1e 100644 --- a/phpBB/includes/ucp/ucp_resend.php +++ b/phpBB/includes/ucp/ucp_resend.php @@ -67,8 +67,6 @@ class ucp_resend if ($config['require_activation'] == USER_ACTIVATION_SELF || $coppa) { $messenger->template(($coppa) ? 'coppa_resend_inactive' : 'user_resend_inactive', $user_row['user_lang']); - - $messenger->replyto($config['board_contact']); $messenger->to($user_row['user_email'], $user_row['username']); $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); @@ -107,13 +105,12 @@ class ucp_resend while ($row = $db->sql_fetchrow($result)) { $messenger->template('admin_activate', $row['user_lang']); - $messenger->replyto($config['board_contact']); $messenger->to($row['user_email'], $row['username']); $messenger->im($row['user_jabber'], $row['username']); $messenger->assign_vars(array( 'USERNAME' => htmlspecialchars_decode($user_row['username']), - 'U_USER_DETAILS' => "$server_url/memberlist.$phpEx?mode=viewprofile&u={$user->data['user_id']}", + 'U_USER_DETAILS' => generate_board_url() . "/memberlist.$phpEx?mode=viewprofile&u={$user->data['user_id']}", 'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k={$user_row['user_actkey']}") ); @@ -124,7 +121,7 @@ class ucp_resend meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx")); - $message = $user->lang['ACTIVATION_EMAIL_SENT'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); + $message = $user->lang['ACTIVATION_EMAIL_SENT'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); trigger_error($message); } diff --git a/phpBB/includes/ucp/ucp_zebra.php b/phpBB/includes/ucp/ucp_zebra.php index b65ba2fd29..3c9abfe5b4 100644 --- a/phpBB/includes/ucp/ucp_zebra.php +++ b/phpBB/includes/ucp/ucp_zebra.php @@ -40,164 +40,179 @@ class ucp_zebra $data[$var] = request_var($var, $default, true); } - if ($data['add']) + if (!empty($data['add']) || sizeof($data['usernames'])) { - $data['add'] = array_map('trim', array_map('utf8_clean_string', explode("\n", $data['add']))); - - // Do these name/s exist on a list already? If so, ignore ... we could be - // 'nice' and automatically handle names added to one list present on - // the other (by removing the existing one) ... but I have a feeling this - // may lead to complaints - $sql = 'SELECT z.*, u.username - FROM ' . ZEBRA_TABLE . ' z, ' . USERS_TABLE . ' u - WHERE z.user_id = ' . $user->data['user_id'] . ' - AND u.user_id = z.zebra_id'; - $result = $db->sql_query($sql); - - $friends = $foes = array(); - while ($row = $db->sql_fetchrow($result)) + if (confirm_box(true)) { - if ($row['friend']) + if ($data['add']) { - $friends[] = utf8_clean_string($row['username']); - } - else - { - $foes[] = utf8_clean_string($row['username']); - } - } - $db->sql_freeresult($result); - - // remove friends from the username array - $n = sizeof($data['add']); - $data['add'] = array_diff($data['add'], $friends); - - if (sizeof($data['add']) < $n && $mode == 'foes') - { - $error[] = $user->lang['NOT_ADDED_FOES_FRIENDS']; - } - - // remove foes from the username array - $n = sizeof($data['add']); - $data['add'] = array_diff($data['add'], $foes); - - if (sizeof($data['add']) < $n && $mode == 'friends') - { - $error[] = $user->lang['NOT_ADDED_FRIENDS_FOES']; - } + $data['add'] = array_map('trim', array_map('utf8_clean_string', explode("\n", $data['add']))); + + // Do these name/s exist on a list already? If so, ignore ... we could be + // 'nice' and automatically handle names added to one list present on + // the other (by removing the existing one) ... but I have a feeling this + // may lead to complaints + $sql = 'SELECT z.*, u.username, u.username_clean + FROM ' . ZEBRA_TABLE . ' z, ' . USERS_TABLE . ' u + WHERE z.user_id = ' . $user->data['user_id'] . ' + AND u.user_id = z.zebra_id'; + $result = $db->sql_query($sql); + + $friends = $foes = array(); + while ($row = $db->sql_fetchrow($result)) + { + if ($row['friend']) + { + $friends[] = utf8_clean_string($row['username']); + } + else + { + $foes[] = utf8_clean_string($row['username']); + } + } + $db->sql_freeresult($result); - // remove the user himself from the username array - $n = sizeof($data['add']); - $data['add'] = array_diff($data['add'], array(utf8_clean_string($user->data['username']))); + // remove friends from the username array + $n = sizeof($data['add']); + $data['add'] = array_diff($data['add'], $friends); - if (sizeof($data['add']) < $n) - { - $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_SELF']; - } + if (sizeof($data['add']) < $n && $mode == 'foes') + { + $error[] = $user->lang['NOT_ADDED_FOES_FRIENDS']; + } - unset($friends, $foes, $n); + // remove foes from the username array + $n = sizeof($data['add']); + $data['add'] = array_diff($data['add'], $foes); - if (sizeof($data['add'])) - { - $sql = 'SELECT user_id, user_type - FROM ' . USERS_TABLE . ' - WHERE ' . $db->sql_in_set('username_clean', $data['add']) . ' - AND user_type <> ' . USER_INACTIVE; - $result = $db->sql_query($sql); - - $user_id_ary = array(); - while ($row = $db->sql_fetchrow($result)) - { - if ($row['user_id'] != ANONYMOUS && $row['user_type'] != USER_IGNORE) + if (sizeof($data['add']) < $n && $mode == 'friends') { - $user_id_ary[] = $row['user_id']; + $error[] = $user->lang['NOT_ADDED_FRIENDS_FOES']; } - else + + // remove the user himself from the username array + $n = sizeof($data['add']); + $data['add'] = array_diff($data['add'], array(utf8_clean_string($user->data['username']))); + + if (sizeof($data['add']) < $n) { - $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_ANONYMOUS']; + $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_SELF']; } - } - $db->sql_freeresult($result); - if (sizeof($user_id_ary)) - { - // Remove users from foe list if they are admins or moderators - if ($mode == 'foes') + unset($friends, $foes, $n); + + if (sizeof($data['add'])) { - $perms = array(); - foreach ($auth->acl_get_list($user_id_ary, array('a_', 'm_')) as $forum_id => $forum_ary) + $sql = 'SELECT user_id, user_type + FROM ' . USERS_TABLE . ' + WHERE ' . $db->sql_in_set('username_clean', $data['add']) . ' + AND user_type <> ' . USER_INACTIVE; + $result = $db->sql_query($sql); + + $user_id_ary = array(); + while ($row = $db->sql_fetchrow($result)) { - foreach ($forum_ary as $auth_option => $user_ary) + if ($row['user_id'] != ANONYMOUS && $row['user_type'] != USER_IGNORE) { - $perms = array_merge($perms, $user_ary); + $user_id_ary[] = $row['user_id']; + } + else + { + $error[] = $user->lang['NOT_ADDED_' . $l_mode . '_ANONYMOUS']; } } + $db->sql_freeresult($result); - $perms = array_unique($perms); - - if (sizeof($perms)) + if (sizeof($user_id_ary)) { - $error[] = $user->lang['NOT_ADDED_FOES_MOD_ADMIN']; - } + // Remove users from foe list if they are admins or moderators + if ($mode == 'foes') + { + $perms = array(); + foreach ($auth->acl_get_list($user_id_ary, array('a_', 'm_')) as $forum_id => $forum_ary) + { + foreach ($forum_ary as $auth_option => $user_ary) + { + $perms = array_merge($perms, $user_ary); + } + } + + $perms = array_unique($perms); + + if (sizeof($perms)) + { + $error[] = $user->lang['NOT_ADDED_FOES_MOD_ADMIN']; + } + + // This may not be right ... it may yield true when perms equate to deny + $user_id_ary = array_diff($user_id_ary, $perms); + unset($perms); + } - // This may not be right ... it may yield true when perms equate to deny - $user_id_ary = array_diff($user_id_ary, $perms); - unset($perms); - } + if (sizeof($user_id_ary)) + { + $sql_mode = ($mode == 'friends') ? 'friend' : 'foe'; - if (sizeof($user_id_ary)) - { - $sql_mode = ($mode == 'friends') ? 'friend' : 'foe'; + $sql_ary = array(); + foreach ($user_id_ary as $zebra_id) + { + $sql_ary[] = array( + 'user_id' => $user->data['user_id'], + 'zebra_id' => (int) $zebra_id, + $sql_mode => 1 + ); + } - $sql_ary = array(); - foreach ($user_id_ary as $zebra_id) + $db->sql_multi_insert(ZEBRA_TABLE, $sql_ary); + + $updated = true; + } + unset($user_id_ary); + } + else if (!sizeof($error)) { - $sql_ary[] = array( - 'user_id' => $user->data['user_id'], - 'zebra_id' => (int) $zebra_id, - $sql_mode => 1 - ); + $error[] = $user->lang['USER_NOT_FOUND_OR_INACTIVE']; } - - $db->sql_multi_insert(ZEBRA_TABLE, $sql_ary); - - $updated = true; } - unset($user_id_ary); } - else if (!sizeof($error)) + else if (sizeof($data['usernames'])) { - $error[] = $user->lang['USER_NOT_FOUND_OR_INACTIVE']; - } - } - } - else if (sizeof($data['usernames'])) - { - // Force integer values - $data['usernames'] = array_map('intval', $data['usernames']); + // Force integer values + $data['usernames'] = array_map('intval', $data['usernames']); - $sql = 'DELETE FROM ' . ZEBRA_TABLE . ' - WHERE user_id = ' . $user->data['user_id'] . ' - AND ' . $db->sql_in_set('zebra_id', $data['usernames']); - $db->sql_query($sql); + $sql = 'DELETE FROM ' . ZEBRA_TABLE . ' + WHERE user_id = ' . $user->data['user_id'] . ' + AND ' . $db->sql_in_set('zebra_id', $data['usernames']); + $db->sql_query($sql); - $updated = true; - } + $updated = true; + } - if ($updated) - { - meta_refresh(3, $this->u_action); - $message = $user->lang[$l_mode . '_UPDATED'] . '<br />' . implode('<br />', $error) . ((sizeof($error)) ? '<br />' : '') . '<br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); - trigger_error($message); - } - else - { - $template->assign_var('ERROR', implode('<br />', $error)); + if ($updated) + { + meta_refresh(3, $this->u_action); + $message = $user->lang[$l_mode . '_UPDATED'] . '<br />' . implode('<br />', $error) . ((sizeof($error)) ? '<br />' : '') . '<br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); + trigger_error($message); + } + else + { + $template->assign_var('ERROR', implode('<br />', $error)); + } + } + else + { + confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( + 'mode' => $mode, + 'submit' => true, + 'usernames' => $data['usernames'], + 'add' => $data['add'])) + ); + } } } $sql_and = ($mode == 'friends') ? 'z.friend = 1' : 'z.foe = 1'; - $sql = 'SELECT z.*, u.username + $sql = 'SELECT z.*, u.username, u.username_clean FROM ' . ZEBRA_TABLE . ' z, ' . USERS_TABLE . ' u WHERE z.user_id = ' . $user->data['user_id'] . " AND $sql_and @@ -215,7 +230,8 @@ class ucp_zebra $template->assign_vars(array( 'L_TITLE' => $user->lang['UCP_ZEBRA_' . $l_mode], - 'U_SEARCH_USER' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=add'), + 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=add'), + 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=add', false), 'S_USERNAME_OPTIONS' => $s_username_options, 'S_HIDDEN_FIELDS' => $s_hidden_fields, diff --git a/phpBB/includes/utf/data/recode_basic.php b/phpBB/includes/utf/data/recode_basic.php new file mode 100644 index 0000000000..8950b0550b --- /dev/null +++ b/phpBB/includes/utf/data/recode_basic.php @@ -0,0 +1,1340 @@ +<?php +function iso_8859_1($string) +{ + return utf8_encode($string); +} + +function iso_8859_2($string) +{ + static $transform = array( + "\x80" => "\xC2\x80", + "\x81" => "\xC2\x81", + "\x82" => "\xC2\x82", + "\x83" => "\xC2\x83", + "\x84" => "\xC2\x84", + "\x85" => "\xC2\x85", + "\x86" => "\xC2\x86", + "\x87" => "\xC2\x87", + "\x88" => "\xC2\x88", + "\x89" => "\xC2\x89", + "\x8A" => "\xC2\x8A", + "\x8B" => "\xC2\x8B", + "\x8C" => "\xC2\x8C", + "\x8D" => "\xC2\x8D", + "\x8E" => "\xC2\x8E", + "\x8F" => "\xC2\x8F", + "\x90" => "\xC2\x90", + "\x91" => "\xC2\x91", + "\x92" => "\xC2\x92", + "\x93" => "\xC2\x93", + "\x94" => "\xC2\x94", + "\x95" => "\xC2\x95", + "\x96" => "\xC2\x96", + "\x97" => "\xC2\x97", + "\x98" => "\xC2\x98", + "\x99" => "\xC2\x99", + "\x9A" => "\xC2\x9A", + "\x9B" => "\xC2\x9B", + "\x9C" => "\xC2\x9C", + "\x9D" => "\xC2\x9D", + "\x9E" => "\xC2\x9E", + "\x9F" => "\xC2\x9F", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xC4\x84", + "\xA2" => "\xCB\x98", + "\xA3" => "\xC5\x81", + "\xA4" => "\xC2\xA4", + "\xA5" => "\xC4\xBD", + "\xA6" => "\xC5\x9A", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xC2\xA8", + "\xA9" => "\xC5\xA0", + "\xAA" => "\xC5\x9E", + "\xAB" => "\xC5\xA4", + "\xAC" => "\xC5\xB9", + "\xAD" => "\xC2\xAD", + "\xAE" => "\xC5\xBD", + "\xAF" => "\xC5\xBB", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC4\x85", + "\xB2" => "\xCB\x9B", + "\xB3" => "\xC5\x82", + "\xB4" => "\xC2\xB4", + "\xB5" => "\xC4\xBE", + "\xB6" => "\xC5\x9B", + "\xB7" => "\xCB\x87", + "\xB8" => "\xC2\xB8", + "\xB9" => "\xC5\xA1", + "\xBA" => "\xC5\x9F", + "\xBB" => "\xC5\xA5", + "\xBC" => "\xC5\xBA", + "\xBD" => "\xCB\x9D", + "\xBE" => "\xC5\xBE", + "\xBF" => "\xC5\xBC", + "\xC0" => "\xC5\x94", + "\xC1" => "\xC3\x81", + "\xC2" => "\xC3\x82", + "\xC3" => "\xC4\x82", + "\xC4" => "\xC3\x84", + "\xC5" => "\xC4\xB9", + "\xC6" => "\xC4\x86", + "\xC7" => "\xC3\x87", + "\xC8" => "\xC4\x8C", + "\xC9" => "\xC3\x89", + "\xCA" => "\xC4\x98", + "\xCB" => "\xC3\x8B", + "\xCC" => "\xC4\x9A", + "\xCD" => "\xC3\x8D", + "\xCE" => "\xC3\x8E", + "\xCF" => "\xC4\x8E", + "\xD0" => "\xC4\x90", + "\xD1" => "\xC5\x83", + "\xD2" => "\xC5\x87", + "\xD3" => "\xC3\x93", + "\xD4" => "\xC3\x94", + "\xD5" => "\xC5\x90", + "\xD6" => "\xC3\x96", + "\xD7" => "\xC3\x97", + "\xD8" => "\xC5\x98", + "\xD9" => "\xC5\xAE", + "\xDA" => "\xC3\x9A", + "\xDB" => "\xC5\xB0", + "\xDC" => "\xC3\x9C", + "\xDD" => "\xC3\x9D", + "\xDE" => "\xC5\xA2", + "\xDF" => "\xC3\x9F", + "\xE0" => "\xC5\x95", + "\xE1" => "\xC3\xA1", + "\xE2" => "\xC3\xA2", + "\xE3" => "\xC4\x83", + "\xE4" => "\xC3\xA4", + "\xE5" => "\xC4\xBA", + "\xE6" => "\xC4\x87", + "\xE7" => "\xC3\xA7", + "\xE8" => "\xC4\x8D", + "\xE9" => "\xC3\xA9", + "\xEA" => "\xC4\x99", + "\xEB" => "\xC3\xAB", + "\xEC" => "\xC4\x9B", + "\xED" => "\xC3\xAD", + "\xEE" => "\xC3\xAE", + "\xEF" => "\xC4\x8F", + "\xF0" => "\xC4\x91", + "\xF1" => "\xC5\x84", + "\xF2" => "\xC5\x88", + "\xF3" => "\xC3\xB3", + "\xF4" => "\xC3\xB4", + "\xF5" => "\xC5\x91", + "\xF6" => "\xC3\xB6", + "\xF7" => "\xC3\xB7", + "\xF8" => "\xC5\x99", + "\xF9" => "\xC5\xAF", + "\xFA" => "\xC3\xBA", + "\xFB" => "\xC5\xB1", + "\xFC" => "\xC3\xBC", + "\xFD" => "\xC3\xBD", + "\xFE" => "\xC5\xA3", + "\xFF" => "\xCB\x99", + ); + return strtr($string, $transform); +} + +function iso_8859_4($string) +{ + static $transform = array( + "\x80" => "\xC2\x80", + "\x81" => "\xC2\x81", + "\x82" => "\xC2\x82", + "\x83" => "\xC2\x83", + "\x84" => "\xC2\x84", + "\x85" => "\xC2\x85", + "\x86" => "\xC2\x86", + "\x87" => "\xC2\x87", + "\x88" => "\xC2\x88", + "\x89" => "\xC2\x89", + "\x8A" => "\xC2\x8A", + "\x8B" => "\xC2\x8B", + "\x8C" => "\xC2\x8C", + "\x8D" => "\xC2\x8D", + "\x8E" => "\xC2\x8E", + "\x8F" => "\xC2\x8F", + "\x90" => "\xC2\x90", + "\x91" => "\xC2\x91", + "\x92" => "\xC2\x92", + "\x93" => "\xC2\x93", + "\x94" => "\xC2\x94", + "\x95" => "\xC2\x95", + "\x96" => "\xC2\x96", + "\x97" => "\xC2\x97", + "\x98" => "\xC2\x98", + "\x99" => "\xC2\x99", + "\x9A" => "\xC2\x9A", + "\x9B" => "\xC2\x9B", + "\x9C" => "\xC2\x9C", + "\x9D" => "\xC2\x9D", + "\x9E" => "\xC2\x9E", + "\x9F" => "\xC2\x9F", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xC4\x84", + "\xA2" => "\xC4\xB8", + "\xA3" => "\xC5\x96", + "\xA4" => "\xC2\xA4", + "\xA5" => "\xC4\xA8", + "\xA6" => "\xC4\xBB", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xC2\xA8", + "\xA9" => "\xC5\xA0", + "\xAA" => "\xC4\x92", + "\xAB" => "\xC4\xA2", + "\xAC" => "\xC5\xA6", + "\xAD" => "\xC2\xAD", + "\xAE" => "\xC5\xBD", + "\xAF" => "\xC2\xAF", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC4\x85", + "\xB2" => "\xCB\x9B", + "\xB3" => "\xC5\x97", + "\xB4" => "\xC2\xB4", + "\xB5" => "\xC4\xA9", + "\xB6" => "\xC4\xBC", + "\xB7" => "\xCB\x87", + "\xB8" => "\xC2\xB8", + "\xB9" => "\xC5\xA1", + "\xBA" => "\xC4\x93", + "\xBB" => "\xC4\xA3", + "\xBC" => "\xC5\xA7", + "\xBD" => "\xC5\x8A", + "\xBE" => "\xC5\xBE", + "\xBF" => "\xC5\x8B", + "\xC0" => "\xC4\x80", + "\xC1" => "\xC3\x81", + "\xC2" => "\xC3\x82", + "\xC3" => "\xC3\x83", + "\xC4" => "\xC3\x84", + "\xC5" => "\xC3\x85", + "\xC6" => "\xC3\x86", + "\xC7" => "\xC4\xAE", + "\xC8" => "\xC4\x8C", + "\xC9" => "\xC3\x89", + "\xCA" => "\xC4\x98", + "\xCB" => "\xC3\x8B", + "\xCC" => "\xC4\x96", + "\xCD" => "\xC3\x8D", + "\xCE" => "\xC3\x8E", + "\xCF" => "\xC4\xAA", + "\xD0" => "\xC4\x90", + "\xD1" => "\xC5\x85", + "\xD2" => "\xC5\x8C", + "\xD3" => "\xC4\xB6", + "\xD4" => "\xC3\x94", + "\xD5" => "\xC3\x95", + "\xD6" => "\xC3\x96", + "\xD7" => "\xC3\x97", + "\xD8" => "\xC3\x98", + "\xD9" => "\xC5\xB2", + "\xDA" => "\xC3\x9A", + "\xDB" => "\xC3\x9B", + "\xDC" => "\xC3\x9C", + "\xDD" => "\xC5\xA8", + "\xDE" => "\xC5\xAA", + "\xDF" => "\xC3\x9F", + "\xE0" => "\xC4\x81", + "\xE1" => "\xC3\xA1", + "\xE2" => "\xC3\xA2", + "\xE3" => "\xC3\xA3", + "\xE4" => "\xC3\xA4", + "\xE5" => "\xC3\xA5", + "\xE6" => "\xC3\xA6", + "\xE7" => "\xC4\xAF", + "\xE8" => "\xC4\x8D", + "\xE9" => "\xC3\xA9", + "\xEA" => "\xC4\x99", + "\xEB" => "\xC3\xAB", + "\xEC" => "\xC4\x97", + "\xED" => "\xC3\xAD", + "\xEE" => "\xC3\xAE", + "\xEF" => "\xC4\xAB", + "\xF0" => "\xC4\x91", + "\xF1" => "\xC5\x86", + "\xF2" => "\xC5\x8D", + "\xF3" => "\xC4\xB7", + "\xF4" => "\xC3\xB4", + "\xF5" => "\xC3\xB5", + "\xF6" => "\xC3\xB6", + "\xF7" => "\xC3\xB7", + "\xF8" => "\xC3\xB8", + "\xF9" => "\xC5\xB3", + "\xFA" => "\xC3\xBA", + "\xFB" => "\xC3\xBB", + "\xFC" => "\xC3\xBC", + "\xFD" => "\xC5\xA9", + "\xFE" => "\xC5\xAB", + "\xFF" => "\xCB\x99", + ); + return strtr($string, $transform); +} + +function iso_8859_7($string) +{ + static $transform = array( + "\x80" => "\xC2\x80", + "\x81" => "\xC2\x81", + "\x82" => "\xC2\x82", + "\x83" => "\xC2\x83", + "\x84" => "\xC2\x84", + "\x85" => "\xC2\x85", + "\x86" => "\xC2\x86", + "\x87" => "\xC2\x87", + "\x88" => "\xC2\x88", + "\x89" => "\xC2\x89", + "\x8A" => "\xC2\x8A", + "\x8B" => "\xC2\x8B", + "\x8C" => "\xC2\x8C", + "\x8D" => "\xC2\x8D", + "\x8E" => "\xC2\x8E", + "\x8F" => "\xC2\x8F", + "\x90" => "\xC2\x90", + "\x91" => "\xC2\x91", + "\x92" => "\xC2\x92", + "\x93" => "\xC2\x93", + "\x94" => "\xC2\x94", + "\x95" => "\xC2\x95", + "\x96" => "\xC2\x96", + "\x97" => "\xC2\x97", + "\x98" => "\xC2\x98", + "\x99" => "\xC2\x99", + "\x9A" => "\xC2\x9A", + "\x9B" => "\xC2\x9B", + "\x9C" => "\xC2\x9C", + "\x9D" => "\xC2\x9D", + "\x9E" => "\xC2\x9E", + "\x9F" => "\xC2\x9F", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xE2\x80\x98", + "\xA2" => "\xE2\x80\x99", + "\xA3" => "\xC2\xA3", + "\xA4" => "\xE2\x82\xAC", + "\xA5" => "\xE2\x82\xAF", + "\xA6" => "\xC2\xA6", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xC2\xA8", + "\xA9" => "\xC2\xA9", + "\xAA" => "\xCD\xBA", + "\xAB" => "\xC2\xAB", + "\xAC" => "\xC2\xAC", + "\xAD" => "\xC2\xAD", + "\xAF" => "\xE2\x80\x95", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC2\xB1", + "\xB2" => "\xC2\xB2", + "\xB3" => "\xC2\xB3", + "\xB4" => "\xCE\x84", + "\xB5" => "\xCE\x85", + "\xB6" => "\xCE\x86", + "\xB7" => "\xC2\xB7", + "\xB8" => "\xCE\x88", + "\xB9" => "\xCE\x89", + "\xBA" => "\xCE\x8A", + "\xBB" => "\xC2\xBB", + "\xBC" => "\xCE\x8C", + "\xBD" => "\xC2\xBD", + "\xBE" => "\xCE\x8E", + "\xBF" => "\xCE\x8F", + "\xC0" => "\xCE\x90", + "\xC1" => "\xCE\x91", + "\xC2" => "\xCE\x92", + "\xC3" => "\xCE\x93", + "\xC4" => "\xCE\x94", + "\xC5" => "\xCE\x95", + "\xC6" => "\xCE\x96", + "\xC7" => "\xCE\x97", + "\xC8" => "\xCE\x98", + "\xC9" => "\xCE\x99", + "\xCA" => "\xCE\x9A", + "\xCB" => "\xCE\x9B", + "\xCC" => "\xCE\x9C", + "\xCD" => "\xCE\x9D", + "\xCE" => "\xCE\x9E", + "\xCF" => "\xCE\x9F", + "\xD0" => "\xCE\xA0", + "\xD1" => "\xCE\xA1", + "\xD3" => "\xCE\xA3", + "\xD4" => "\xCE\xA4", + "\xD5" => "\xCE\xA5", + "\xD6" => "\xCE\xA6", + "\xD7" => "\xCE\xA7", + "\xD8" => "\xCE\xA8", + "\xD9" => "\xCE\xA9", + "\xDA" => "\xCE\xAA", + "\xDB" => "\xCE\xAB", + "\xDC" => "\xCE\xAC", + "\xDD" => "\xCE\xAD", + "\xDE" => "\xCE\xAE", + "\xDF" => "\xCE\xAF", + "\xE0" => "\xCE\xB0", + "\xE1" => "\xCE\xB1", + "\xE2" => "\xCE\xB2", + "\xE3" => "\xCE\xB3", + "\xE4" => "\xCE\xB4", + "\xE5" => "\xCE\xB5", + "\xE6" => "\xCE\xB6", + "\xE7" => "\xCE\xB7", + "\xE8" => "\xCE\xB8", + "\xE9" => "\xCE\xB9", + "\xEA" => "\xCE\xBA", + "\xEB" => "\xCE\xBB", + "\xEC" => "\xCE\xBC", + "\xED" => "\xCE\xBD", + "\xEE" => "\xCE\xBE", + "\xEF" => "\xCE\xBF", + "\xF0" => "\xCF\x80", + "\xF1" => "\xCF\x81", + "\xF2" => "\xCF\x82", + "\xF3" => "\xCF\x83", + "\xF4" => "\xCF\x84", + "\xF5" => "\xCF\x85", + "\xF6" => "\xCF\x86", + "\xF7" => "\xCF\x87", + "\xF8" => "\xCF\x88", + "\xF9" => "\xCF\x89", + "\xFA" => "\xCF\x8A", + "\xFB" => "\xCF\x8B", + "\xFC" => "\xCF\x8C", + "\xFD" => "\xCF\x8D", + "\xFE" => "\xCF\x8E", + ); + return strtr($string, $transform); +} + +function iso_8859_9($string) +{ + static $tranform = array( + "\xC3\x90" => "\xC4\x9E", + "\xC3\x9D" => "\xC4\xB0", + "\xC3\x9E" => "\xC5\x9E", + "\xC3\xB0" => "\xC4\x9F", + "\xC3\xBD" => "\xC4\xB1", + "\xC3\xBE" => "\xC5\x9F", + ); + return strtr(utf8_encode($string), $transform); +} + +function iso_8859_15($string) +{ + static $tranform = array( + "\xC2\xA4" => "\xE2\x82\xAC", + "\xC2\xA6" => "\xC5\xA0", + "\xC2\xA8" => "\xC5\xA1", + "\xC2\xB4" => "\xC5\xBD", + "\xC2\xB8" => "\xC5\xBE", + "\xC2\xBC" => "\xC5\x92", + "\xC2\xBD" => "\xC5\x93", + "\xC2\xBE" => "\xC5\xB8", + ); + return strtr(utf8_encode($string), $transform); +} + +// nearly the same as iso-8859-11 +function tis_620($string) +{ + static $transform = array( + "\x80" => "\xC2\x80", + "\x81" => "\xC2\x81", + "\x82" => "\xC2\x82", + "\x83" => "\xC2\x83", + "\x84" => "\xC2\x84", + "\x85" => "\xC2\x85", + "\x86" => "\xC2\x86", + "\x87" => "\xC2\x87", + "\x88" => "\xC2\x88", + "\x89" => "\xC2\x89", + "\x8A" => "\xC2\x8A", + "\x8B" => "\xC2\x8B", + "\x8C" => "\xC2\x8C", + "\x8D" => "\xC2\x8D", + "\x8E" => "\xC2\x8E", + "\x8F" => "\xC2\x8F", + "\x90" => "\xC2\x90", + "\x91" => "\xC2\x91", + "\x92" => "\xC2\x92", + "\x93" => "\xC2\x93", + "\x94" => "\xC2\x94", + "\x95" => "\xC2\x95", + "\x96" => "\xC2\x96", + "\x97" => "\xC2\x97", + "\x98" => "\xC2\x98", + "\x99" => "\xC2\x99", + "\x9A" => "\xC2\x9A", + "\x9B" => "\xC2\x9B", + "\x9C" => "\xC2\x9C", + "\x9D" => "\xC2\x9D", + "\x9E" => "\xC2\x9E", + "\x9F" => "\xC2\x9F", + "\xA1" => "\xE0\xB8\x81", + "\xA2" => "\xE0\xB8\x82", + "\xA3" => "\xE0\xB8\x83", + "\xA4" => "\xE0\xB8\x84", + "\xA5" => "\xE0\xB8\x85", + "\xA6" => "\xE0\xB8\x86", + "\xA7" => "\xE0\xB8\x87", + "\xA8" => "\xE0\xB8\x88", + "\xA9" => "\xE0\xB8\x89", + "\xAA" => "\xE0\xB8\x8A", + "\xAB" => "\xE0\xB8\x8B", + "\xAC" => "\xE0\xB8\x8C", + "\xAD" => "\xE0\xB8\x8D", + "\xAE" => "\xE0\xB8\x8E", + "\xAF" => "\xE0\xB8\x8F", + "\xB0" => "\xE0\xB8\x90", + "\xB1" => "\xE0\xB8\x91", + "\xB2" => "\xE0\xB8\x92", + "\xB3" => "\xE0\xB8\x93", + "\xB4" => "\xE0\xB8\x94", + "\xB5" => "\xE0\xB8\x95", + "\xB6" => "\xE0\xB8\x96", + "\xB7" => "\xE0\xB8\x97", + "\xB8" => "\xE0\xB8\x98", + "\xB9" => "\xE0\xB8\x99", + "\xBA" => "\xE0\xB8\x9A", + "\xBB" => "\xE0\xB8\x9B", + "\xBC" => "\xE0\xB8\x9C", + "\xBD" => "\xE0\xB8\x9D", + "\xBE" => "\xE0\xB8\x9E", + "\xBF" => "\xE0\xB8\x9F", + "\xC0" => "\xE0\xB8\xA0", + "\xC1" => "\xE0\xB8\xA1", + "\xC2" => "\xE0\xB8\xA2", + "\xC3" => "\xE0\xB8\xA3", + "\xC4" => "\xE0\xB8\xA4", + "\xC5" => "\xE0\xB8\xA5", + "\xC6" => "\xE0\xB8\xA6", + "\xC7" => "\xE0\xB8\xA7", + "\xC8" => "\xE0\xB8\xA8", + "\xC9" => "\xE0\xB8\xA9", + "\xCA" => "\xE0\xB8\xAA", + "\xCB" => "\xE0\xB8\xAB", + "\xCC" => "\xE0\xB8\xAC", + "\xCD" => "\xE0\xB8\xAD", + "\xCE" => "\xE0\xB8\xAE", + "\xCF" => "\xE0\xB8\xAF", + "\xD0" => "\xE0\xB8\xB0", + "\xD1" => "\xE0\xB8\xB1", + "\xD2" => "\xE0\xB8\xB2", + "\xD3" => "\xE0\xB8\xB3", + "\xD4" => "\xE0\xB8\xB4", + "\xD5" => "\xE0\xB8\xB5", + "\xD6" => "\xE0\xB8\xB6", + "\xD7" => "\xE0\xB8\xB7", + "\xD8" => "\xE0\xB8\xB8", + "\xD9" => "\xE0\xB8\xB9", + "\xDA" => "\xE0\xB8\xBA", + "\xDF" => "\xE0\xB8\xBF", + "\xE0" => "\xE0\xB9\x80", + "\xE1" => "\xE0\xB9\x81", + "\xE2" => "\xE0\xB9\x82", + "\xE3" => "\xE0\xB9\x83", + "\xE4" => "\xE0\xB9\x84", + "\xE5" => "\xE0\xB9\x85", + "\xE6" => "\xE0\xB9\x86", + "\xE7" => "\xE0\xB9\x87", + "\xE8" => "\xE0\xB9\x88", + "\xE9" => "\xE0\xB9\x89", + "\xEA" => "\xE0\xB9\x8A", + "\xEB" => "\xE0\xB9\x8B", + "\xEC" => "\xE0\xB9\x8C", + "\xED" => "\xE0\xB9\x8D", + "\xEE" => "\xE0\xB9\x8E", + "\xEF" => "\xE0\xB9\x8F", + "\xF0" => "\xE0\xB9\x90", + "\xF1" => "\xE0\xB9\x91", + "\xF2" => "\xE0\xB9\x92", + "\xF3" => "\xE0\xB9\x93", + "\xF4" => "\xE0\xB9\x94", + "\xF5" => "\xE0\xB9\x95", + "\xF6" => "\xE0\xB9\x96", + "\xF7" => "\xE0\xB9\x97", + "\xF8" => "\xE0\xB9\x98", + "\xF9" => "\xE0\xB9\x99", + "\xFA" => "\xE0\xB9\x9A", + "\xFB" => "\xE0\xB9\x9B", + ); + return strtr($string, $transform); +} + +function cp874($string) +{ + static $transform = array( + "\x80" => "\xE2\x82\xAC", + "\x85" => "\xE2\x80\xA6", + "\x91" => "\xE2\x80\x98", + "\x92" => "\xE2\x80\x99", + "\x93" => "\xE2\x80\x9C", + "\x94" => "\xE2\x80\x9D", + "\x95" => "\xE2\x80\xA2", + "\x96" => "\xE2\x80\x93", + "\x97" => "\xE2\x80\x94", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xE0\xB8\x81", + "\xA2" => "\xE0\xB8\x82", + "\xA3" => "\xE0\xB8\x83", + "\xA4" => "\xE0\xB8\x84", + "\xA5" => "\xE0\xB8\x85", + "\xA6" => "\xE0\xB8\x86", + "\xA7" => "\xE0\xB8\x87", + "\xA8" => "\xE0\xB8\x88", + "\xA9" => "\xE0\xB8\x89", + "\xAA" => "\xE0\xB8\x8A", + "\xAB" => "\xE0\xB8\x8B", + "\xAC" => "\xE0\xB8\x8C", + "\xAD" => "\xE0\xB8\x8D", + "\xAE" => "\xE0\xB8\x8E", + "\xAF" => "\xE0\xB8\x8F", + "\xB0" => "\xE0\xB8\x90", + "\xB1" => "\xE0\xB8\x91", + "\xB2" => "\xE0\xB8\x92", + "\xB3" => "\xE0\xB8\x93", + "\xB4" => "\xE0\xB8\x94", + "\xB5" => "\xE0\xB8\x95", + "\xB6" => "\xE0\xB8\x96", + "\xB7" => "\xE0\xB8\x97", + "\xB8" => "\xE0\xB8\x98", + "\xB9" => "\xE0\xB8\x99", + "\xBA" => "\xE0\xB8\x9A", + "\xBB" => "\xE0\xB8\x9B", + "\xBC" => "\xE0\xB8\x9C", + "\xBD" => "\xE0\xB8\x9D", + "\xBE" => "\xE0\xB8\x9E", + "\xBF" => "\xE0\xB8\x9F", + "\xC0" => "\xE0\xB8\xA0", + "\xC1" => "\xE0\xB8\xA1", + "\xC2" => "\xE0\xB8\xA2", + "\xC3" => "\xE0\xB8\xA3", + "\xC4" => "\xE0\xB8\xA4", + "\xC5" => "\xE0\xB8\xA5", + "\xC6" => "\xE0\xB8\xA6", + "\xC7" => "\xE0\xB8\xA7", + "\xC8" => "\xE0\xB8\xA8", + "\xC9" => "\xE0\xB8\xA9", + "\xCA" => "\xE0\xB8\xAA", + "\xCB" => "\xE0\xB8\xAB", + "\xCC" => "\xE0\xB8\xAC", + "\xCD" => "\xE0\xB8\xAD", + "\xCE" => "\xE0\xB8\xAE", + "\xCF" => "\xE0\xB8\xAF", + "\xD0" => "\xE0\xB8\xB0", + "\xD1" => "\xE0\xB8\xB1", + "\xD2" => "\xE0\xB8\xB2", + "\xD3" => "\xE0\xB8\xB3", + "\xD4" => "\xE0\xB8\xB4", + "\xD5" => "\xE0\xB8\xB5", + "\xD6" => "\xE0\xB8\xB6", + "\xD7" => "\xE0\xB8\xB7", + "\xD8" => "\xE0\xB8\xB8", + "\xD9" => "\xE0\xB8\xB9", + "\xDA" => "\xE0\xB8\xBA", + "\xDF" => "\xE0\xB8\xBF", + "\xE0" => "\xE0\xB9\x80", + "\xE1" => "\xE0\xB9\x81", + "\xE2" => "\xE0\xB9\x82", + "\xE3" => "\xE0\xB9\x83", + "\xE4" => "\xE0\xB9\x84", + "\xE5" => "\xE0\xB9\x85", + "\xE6" => "\xE0\xB9\x86", + "\xE7" => "\xE0\xB9\x87", + "\xE8" => "\xE0\xB9\x88", + "\xE9" => "\xE0\xB9\x89", + "\xEA" => "\xE0\xB9\x8A", + "\xEB" => "\xE0\xB9\x8B", + "\xEC" => "\xE0\xB9\x8C", + "\xED" => "\xE0\xB9\x8D", + "\xEE" => "\xE0\xB9\x8E", + "\xEF" => "\xE0\xB9\x8F", + "\xF0" => "\xE0\xB9\x90", + "\xF1" => "\xE0\xB9\x91", + "\xF2" => "\xE0\xB9\x92", + "\xF3" => "\xE0\xB9\x93", + "\xF4" => "\xE0\xB9\x94", + "\xF5" => "\xE0\xB9\x95", + "\xF6" => "\xE0\xB9\x96", + "\xF7" => "\xE0\xB9\x97", + "\xF8" => "\xE0\xB9\x98", + "\xF9" => "\xE0\xB9\x99", + "\xFA" => "\xE0\xB9\x9A", + "\xFB" => "\xE0\xB9\x9B", + ); + return strtr($string, $transform); +} + +function cp1250($string) +{ + static $transform = array( + "\x80" => "\xE2\x82\xAC", + "\x82" => "\xE2\x80\x9A", + "\x84" => "\xE2\x80\x9E", + "\x85" => "\xE2\x80\xA6", + "\x86" => "\xE2\x80\xA0", + "\x87" => "\xE2\x80\xA1", + "\x89" => "\xE2\x80\xB0", + "\x8A" => "\xC5\xA0", + "\x8B" => "\xE2\x80\xB9", + "\x8C" => "\xC5\x9A", + "\x8D" => "\xC5\xA4", + "\x8E" => "\xC5\xBD", + "\x8F" => "\xC5\xB9", + "\x91" => "\xE2\x80\x98", + "\x92" => "\xE2\x80\x99", + "\x93" => "\xE2\x80\x9C", + "\x94" => "\xE2\x80\x9D", + "\x95" => "\xE2\x80\xA2", + "\x96" => "\xE2\x80\x93", + "\x97" => "\xE2\x80\x94", + "\x99" => "\xE2\x84\xA2", + "\x9A" => "\xC5\xA1", + "\x9B" => "\xE2\x80\xBA", + "\x9C" => "\xC5\x9B", + "\x9D" => "\xC5\xA5", + "\x9E" => "\xC5\xBE", + "\x9F" => "\xC5\xBA", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xCB\x87", + "\xA2" => "\xCB\x98", + "\xA3" => "\xC5\x81", + "\xA4" => "\xC2\xA4", + "\xA5" => "\xC4\x84", + "\xA6" => "\xC2\xA6", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xC2\xA8", + "\xA9" => "\xC2\xA9", + "\xAA" => "\xC5\x9E", + "\xAB" => "\xC2\xAB", + "\xAC" => "\xC2\xAC", + "\xAD" => "\xC2\xAD", + "\xAE" => "\xC2\xAE", + "\xAF" => "\xC5\xBB", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC2\xB1", + "\xB2" => "\xCB\x9B", + "\xB3" => "\xC5\x82", + "\xB4" => "\xC2\xB4", + "\xB5" => "\xC2\xB5", + "\xB6" => "\xC2\xB6", + "\xB7" => "\xC2\xB7", + "\xB8" => "\xC2\xB8", + "\xB9" => "\xC4\x85", + "\xBA" => "\xC5\x9F", + "\xBB" => "\xC2\xBB", + "\xBC" => "\xC4\xBD", + "\xBD" => "\xCB\x9D", + "\xBE" => "\xC4\xBE", + "\xBF" => "\xC5\xBC", + "\xC0" => "\xC5\x94", + "\xC1" => "\xC3\x81", + "\xC2" => "\xC3\x82", + "\xC3" => "\xC4\x82", + "\xC4" => "\xC3\x84", + "\xC5" => "\xC4\xB9", + "\xC6" => "\xC4\x86", + "\xC7" => "\xC3\x87", + "\xC8" => "\xC4\x8C", + "\xC9" => "\xC3\x89", + "\xCA" => "\xC4\x98", + "\xCB" => "\xC3\x8B", + "\xCC" => "\xC4\x9A", + "\xCD" => "\xC3\x8D", + "\xCE" => "\xC3\x8E", + "\xCF" => "\xC4\x8E", + "\xD0" => "\xC4\x90", + "\xD1" => "\xC5\x83", + "\xD2" => "\xC5\x87", + "\xD3" => "\xC3\x93", + "\xD4" => "\xC3\x94", + "\xD5" => "\xC5\x90", + "\xD6" => "\xC3\x96", + "\xD7" => "\xC3\x97", + "\xD8" => "\xC5\x98", + "\xD9" => "\xC5\xAE", + "\xDA" => "\xC3\x9A", + "\xDB" => "\xC5\xB0", + "\xDC" => "\xC3\x9C", + "\xDD" => "\xC3\x9D", + "\xDE" => "\xC5\xA2", + "\xDF" => "\xC3\x9F", + "\xE0" => "\xC5\x95", + "\xE1" => "\xC3\xA1", + "\xE2" => "\xC3\xA2", + "\xE3" => "\xC4\x83", + "\xE4" => "\xC3\xA4", + "\xE5" => "\xC4\xBA", + "\xE6" => "\xC4\x87", + "\xE7" => "\xC3\xA7", + "\xE8" => "\xC4\x8D", + "\xE9" => "\xC3\xA9", + "\xEA" => "\xC4\x99", + "\xEB" => "\xC3\xAB", + "\xEC" => "\xC4\x9B", + "\xED" => "\xC3\xAD", + "\xEE" => "\xC3\xAE", + "\xEF" => "\xC4\x8F", + "\xF0" => "\xC4\x91", + "\xF1" => "\xC5\x84", + "\xF2" => "\xC5\x88", + "\xF3" => "\xC3\xB3", + "\xF4" => "\xC3\xB4", + "\xF5" => "\xC5\x91", + "\xF6" => "\xC3\xB6", + "\xF7" => "\xC3\xB7", + "\xF8" => "\xC5\x99", + "\xF9" => "\xC5\xAF", + "\xFA" => "\xC3\xBA", + "\xFB" => "\xC5\xB1", + "\xFC" => "\xC3\xBC", + "\xFD" => "\xC3\xBD", + "\xFE" => "\xC5\xA3", + "\xFF" => "\xCB\x99", + ); + return strtr($string, $transform); +} + +function cp1251($string) +{ + static $transform = array( + "\x80" => "\xD0\x82", + "\x81" => "\xD0\x83", + "\x82" => "\xE2\x80\x9A", + "\x83" => "\xD1\x93", + "\x84" => "\xE2\x80\x9E", + "\x85" => "\xE2\x80\xA6", + "\x86" => "\xE2\x80\xA0", + "\x87" => "\xE2\x80\xA1", + "\x88" => "\xE2\x82\xAC", + "\x89" => "\xE2\x80\xB0", + "\x8A" => "\xD0\x89", + "\x8B" => "\xE2\x80\xB9", + "\x8C" => "\xD0\x8A", + "\x8D" => "\xD0\x8C", + "\x8E" => "\xD0\x8B", + "\x8F" => "\xD0\x8F", + "\x90" => "\xD1\x92", + "\x91" => "\xE2\x80\x98", + "\x92" => "\xE2\x80\x99", + "\x93" => "\xE2\x80\x9C", + "\x94" => "\xE2\x80\x9D", + "\x95" => "\xE2\x80\xA2", + "\x96" => "\xE2\x80\x93", + "\x97" => "\xE2\x80\x94", + "\x99" => "\xE2\x84\xA2", + "\x9A" => "\xD1\x99", + "\x9B" => "\xE2\x80\xBA", + "\x9C" => "\xD1\x9A", + "\x9D" => "\xD1\x9C", + "\x9E" => "\xD1\x9B", + "\x9F" => "\xD1\x9F", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xD0\x8E", + "\xA2" => "\xD1\x9E", + "\xA3" => "\xD0\x88", + "\xA4" => "\xC2\xA4", + "\xA5" => "\xD2\x90", + "\xA6" => "\xC2\xA6", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xD0\x81", + "\xA9" => "\xC2\xA9", + "\xAA" => "\xD0\x84", + "\xAB" => "\xC2\xAB", + "\xAC" => "\xC2\xAC", + "\xAD" => "\xC2\xAD", + "\xAE" => "\xC2\xAE", + "\xAF" => "\xD0\x87", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC2\xB1", + "\xB2" => "\xD0\x86", + "\xB3" => "\xD1\x96", + "\xB4" => "\xD2\x91", + "\xB5" => "\xC2\xB5", + "\xB6" => "\xC2\xB6", + "\xB7" => "\xC2\xB7", + "\xB8" => "\xD1\x91", + "\xB9" => "\xE2\x84\x96", + "\xBA" => "\xD1\x94", + "\xBB" => "\xC2\xBB", + "\xBC" => "\xD1\x98", + "\xBD" => "\xD0\x85", + "\xBE" => "\xD1\x95", + "\xBF" => "\xD1\x97", + "\xC0" => "\xD0\x90", + "\xC1" => "\xD0\x91", + "\xC2" => "\xD0\x92", + "\xC3" => "\xD0\x93", + "\xC4" => "\xD0\x94", + "\xC5" => "\xD0\x95", + "\xC6" => "\xD0\x96", + "\xC7" => "\xD0\x97", + "\xC8" => "\xD0\x98", + "\xC9" => "\xD0\x99", + "\xCA" => "\xD0\x9A", + "\xCB" => "\xD0\x9B", + "\xCC" => "\xD0\x9C", + "\xCD" => "\xD0\x9D", + "\xCE" => "\xD0\x9E", + "\xCF" => "\xD0\x9F", + "\xD0" => "\xD0\xA0", + "\xD1" => "\xD0\xA1", + "\xD2" => "\xD0\xA2", + "\xD3" => "\xD0\xA3", + "\xD4" => "\xD0\xA4", + "\xD5" => "\xD0\xA5", + "\xD6" => "\xD0\xA6", + "\xD7" => "\xD0\xA7", + "\xD8" => "\xD0\xA8", + "\xD9" => "\xD0\xA9", + "\xDA" => "\xD0\xAA", + "\xDB" => "\xD0\xAB", + "\xDC" => "\xD0\xAC", + "\xDD" => "\xD0\xAD", + "\xDE" => "\xD0\xAE", + "\xDF" => "\xD0\xAF", + "\xE0" => "\xD0\xB0", + "\xE1" => "\xD0\xB1", + "\xE2" => "\xD0\xB2", + "\xE3" => "\xD0\xB3", + "\xE4" => "\xD0\xB4", + "\xE5" => "\xD0\xB5", + "\xE6" => "\xD0\xB6", + "\xE7" => "\xD0\xB7", + "\xE8" => "\xD0\xB8", + "\xE9" => "\xD0\xB9", + "\xEA" => "\xD0\xBA", + "\xEB" => "\xD0\xBB", + "\xEC" => "\xD0\xBC", + "\xED" => "\xD0\xBD", + "\xEE" => "\xD0\xBE", + "\xEF" => "\xD0\xBF", + "\xF0" => "\xD1\x80", + "\xF1" => "\xD1\x81", + "\xF2" => "\xD1\x82", + "\xF3" => "\xD1\x83", + "\xF4" => "\xD1\x84", + "\xF5" => "\xD1\x85", + "\xF6" => "\xD1\x86", + "\xF7" => "\xD1\x87", + "\xF8" => "\xD1\x88", + "\xF9" => "\xD1\x89", + "\xFA" => "\xD1\x8A", + "\xFB" => "\xD1\x8B", + "\xFC" => "\xD1\x8C", + "\xFD" => "\xD1\x8D", + "\xFE" => "\xD1\x8E", + "\xFF" => "\xD1\x8F", + ); + return strtr($string, $transform); +} + +function cp1254($string) +{ + static $tranform = array( + "\xC2\x80" => "\xE2\x82\xAC", + "\xC2\x82" => "\xE2\x80\x9A", + "\xC2\x83" => "\xC6\x92", + "\xC2\x84" => "\xE2\x80\x9E", + "\xC2\x85" => "\xE2\x80\xA6", + "\xC2\x86" => "\xE2\x80\xA0", + "\xC2\x87" => "\xE2\x80\xA1", + "\xC2\x88" => "\xCB\x86", + "\xC2\x89" => "\xE2\x80\xB0", + "\xC2\x8A" => "\xC5\xA0", + "\xC2\x8B" => "\xE2\x80\xB9", + "\xC2\x8C" => "\xC5\x92", + "\xC2\x91" => "\xE2\x80\x98", + "\xC2\x92" => "\xE2\x80\x99", + "\xC2\x93" => "\xE2\x80\x9C", + "\xC2\x94" => "\xE2\x80\x9D", + "\xC2\x95" => "\xE2\x80\xA2", + "\xC2\x96" => "\xE2\x80\x93", + "\xC2\x97" => "\xE2\x80\x94", + "\xC2\x98" => "\xCB\x9C", + "\xC2\x99" => "\xE2\x84\xA2", + "\xC2\x9A" => "\xC5\xA1", + "\xC2\x9B" => "\xE2\x80\xBA", + "\xC2\x9C" => "\xC5\x93", + "\xC2\x9F" => "\xC5\xB8", + "\xC3\x90" => "\xC4\x9E", + "\xC3\x9D" => "\xC4\xB0", + "\xC3\x9E" => "\xC5\x9E", + "\xC3\xB0" => "\xC4\x9F", + "\xC3\xBD" => "\xC4\xB1", + "\xC3\xBE" => "\xC5\x9F", + ); + return strtr(utf8_encode($string), $transform); +} + +function cp1255($string) +{ + static $transform = array( + "\x80" => "\xE2\x82\xAC", + "\x82" => "\xE2\x80\x9A", + "\x83" => "\xC6\x92", + "\x84" => "\xE2\x80\x9E", + "\x85" => "\xE2\x80\xA6", + "\x86" => "\xE2\x80\xA0", + "\x87" => "\xE2\x80\xA1", + "\x88" => "\xCB\x86", + "\x89" => "\xE2\x80\xB0", + "\x8B" => "\xE2\x80\xB9", + "\x91" => "\xE2\x80\x98", + "\x92" => "\xE2\x80\x99", + "\x93" => "\xE2\x80\x9C", + "\x94" => "\xE2\x80\x9D", + "\x95" => "\xE2\x80\xA2", + "\x96" => "\xE2\x80\x93", + "\x97" => "\xE2\x80\x94", + "\x98" => "\xCB\x9C", + "\x99" => "\xE2\x84\xA2", + "\x9B" => "\xE2\x80\xBA", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xC2\xA1", + "\xA2" => "\xC2\xA2", + "\xA3" => "\xC2\xA3", + "\xA4" => "\xE2\x82\xAA", + "\xA5" => "\xC2\xA5", + "\xA6" => "\xC2\xA6", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xC2\xA8", + "\xA9" => "\xC2\xA9", + "\xAA" => "\xC3\x97", + "\xAB" => "\xC2\xAB", + "\xAC" => "\xC2\xAC", + "\xAD" => "\xC2\xAD", + "\xAE" => "\xC2\xAE", + "\xAF" => "\xC2\xAF", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC2\xB1", + "\xB2" => "\xC2\xB2", + "\xB3" => "\xC2\xB3", + "\xB4" => "\xC2\xB4", + "\xB5" => "\xC2\xB5", + "\xB6" => "\xC2\xB6", + "\xB7" => "\xC2\xB7", + "\xB8" => "\xC2\xB8", + "\xB9" => "\xC2\xB9", + "\xBA" => "\xC3\xB7", + "\xBB" => "\xC2\xBB", + "\xBC" => "\xC2\xBC", + "\xBD" => "\xC2\xBD", + "\xBE" => "\xC2\xBE", + "\xBF" => "\xC2\xBF", + "\xC0" => "\xD6\xB0", + "\xC1" => "\xD6\xB1", + "\xC2" => "\xD6\xB2", + "\xC3" => "\xD6\xB3", + "\xC4" => "\xD6\xB4", + "\xC5" => "\xD6\xB5", + "\xC6" => "\xD6\xB6", + "\xC7" => "\xD6\xB7", + "\xC8" => "\xD6\xB8", + "\xC9" => "\xD6\xB9", + "\xCB" => "\xD6\xBB", + "\xCC" => "\xD6\xBC", + "\xCD" => "\xD6\xBD", + "\xCE" => "\xD6\xBE", + "\xCF" => "\xD6\xBF", + "\xD0" => "\xD7\x80", + "\xD1" => "\xD7\x81", + "\xD2" => "\xD7\x82", + "\xD3" => "\xD7\x83", + "\xD4" => "\xD7\xB0", + "\xD5" => "\xD7\xB1", + "\xD6" => "\xD7\xB2", + "\xD7" => "\xD7\xB3", + "\xD8" => "\xD7\xB4", + "\xE0" => "\xD7\x90", + "\xE1" => "\xD7\x91", + "\xE2" => "\xD7\x92", + "\xE3" => "\xD7\x93", + "\xE4" => "\xD7\x94", + "\xE5" => "\xD7\x95", + "\xE6" => "\xD7\x96", + "\xE7" => "\xD7\x97", + "\xE8" => "\xD7\x98", + "\xE9" => "\xD7\x99", + "\xEA" => "\xD7\x9A", + "\xEB" => "\xD7\x9B", + "\xEC" => "\xD7\x9C", + "\xED" => "\xD7\x9D", + "\xEE" => "\xD7\x9E", + "\xEF" => "\xD7\x9F", + "\xF0" => "\xD7\xA0", + "\xF1" => "\xD7\xA1", + "\xF2" => "\xD7\xA2", + "\xF3" => "\xD7\xA3", + "\xF4" => "\xD7\xA4", + "\xF5" => "\xD7\xA5", + "\xF6" => "\xD7\xA6", + "\xF7" => "\xD7\xA7", + "\xF8" => "\xD7\xA8", + "\xF9" => "\xD7\xA9", + "\xFA" => "\xD7\xAA", + "\xFD" => "\xE2\x80\x8E", + "\xFE" => "\xE2\x80\x8F", + ); + return strtr($string, $transform); +} + +function cp1256($string) +{ + static $transform = array( + "\x80" => "\xE2\x82\xAC", + "\x81" => "\xD9\xBE", + "\x82" => "\xE2\x80\x9A", + "\x83" => "\xC6\x92", + "\x84" => "\xE2\x80\x9E", + "\x85" => "\xE2\x80\xA6", + "\x86" => "\xE2\x80\xA0", + "\x87" => "\xE2\x80\xA1", + "\x88" => "\xCB\x86", + "\x89" => "\xE2\x80\xB0", + "\x8A" => "\xD9\xB9", + "\x8B" => "\xE2\x80\xB9", + "\x8C" => "\xC5\x92", + "\x8D" => "\xDA\x86", + "\x8E" => "\xDA\x98", + "\x8F" => "\xDA\x88", + "\x90" => "\xDA\xAF", + "\x91" => "\xE2\x80\x98", + "\x92" => "\xE2\x80\x99", + "\x93" => "\xE2\x80\x9C", + "\x94" => "\xE2\x80\x9D", + "\x95" => "\xE2\x80\xA2", + "\x96" => "\xE2\x80\x93", + "\x97" => "\xE2\x80\x94", + "\x98" => "\xDA\xA9", + "\x99" => "\xE2\x84\xA2", + "\x9A" => "\xDA\x91", + "\x9B" => "\xE2\x80\xBA", + "\x9C" => "\xC5\x93", + "\x9D" => "\xE2\x80\x8C", + "\x9E" => "\xE2\x80\x8D", + "\x9F" => "\xDA\xBA", + "\xA0" => "\xC2\xA0", + "\xA1" => "\xD8\x8C", + "\xA2" => "\xC2\xA2", + "\xA3" => "\xC2\xA3", + "\xA4" => "\xC2\xA4", + "\xA5" => "\xC2\xA5", + "\xA6" => "\xC2\xA6", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xC2\xA8", + "\xA9" => "\xC2\xA9", + "\xAA" => "\xDA\xBE", + "\xAB" => "\xC2\xAB", + "\xAC" => "\xC2\xAC", + "\xAD" => "\xC2\xAD", + "\xAE" => "\xC2\xAE", + "\xAF" => "\xC2\xAF", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC2\xB1", + "\xB2" => "\xC2\xB2", + "\xB3" => "\xC2\xB3", + "\xB4" => "\xC2\xB4", + "\xB5" => "\xC2\xB5", + "\xB6" => "\xC2\xB6", + "\xB7" => "\xC2\xB7", + "\xB8" => "\xC2\xB8", + "\xB9" => "\xC2\xB9", + "\xBA" => "\xD8\x9B", + "\xBB" => "\xC2\xBB", + "\xBC" => "\xC2\xBC", + "\xBD" => "\xC2\xBD", + "\xBE" => "\xC2\xBE", + "\xBF" => "\xD8\x9F", + "\xC0" => "\xDB\x81", + "\xC1" => "\xD8\xA1", + "\xC2" => "\xD8\xA2", + "\xC3" => "\xD8\xA3", + "\xC4" => "\xD8\xA4", + "\xC5" => "\xD8\xA5", + "\xC6" => "\xD8\xA6", + "\xC7" => "\xD8\xA7", + "\xC8" => "\xD8\xA8", + "\xC9" => "\xD8\xA9", + "\xCA" => "\xD8\xAA", + "\xCB" => "\xD8\xAB", + "\xCC" => "\xD8\xAC", + "\xCD" => "\xD8\xAD", + "\xCE" => "\xD8\xAE", + "\xCF" => "\xD8\xAF", + "\xD0" => "\xD8\xB0", + "\xD1" => "\xD8\xB1", + "\xD2" => "\xD8\xB2", + "\xD3" => "\xD8\xB3", + "\xD4" => "\xD8\xB4", + "\xD5" => "\xD8\xB5", + "\xD6" => "\xD8\xB6", + "\xD7" => "\xC3\x97", + "\xD8" => "\xD8\xB7", + "\xD9" => "\xD8\xB8", + "\xDA" => "\xD8\xB9", + "\xDB" => "\xD8\xBA", + "\xDC" => "\xD9\x80", + "\xDD" => "\xD9\x81", + "\xDE" => "\xD9\x82", + "\xDF" => "\xD9\x83", + "\xE0" => "\xC3\xA0", + "\xE1" => "\xD9\x84", + "\xE2" => "\xC3\xA2", + "\xE3" => "\xD9\x85", + "\xE4" => "\xD9\x86", + "\xE5" => "\xD9\x87", + "\xE6" => "\xD9\x88", + "\xE7" => "\xC3\xA7", + "\xE8" => "\xC3\xA8", + "\xE9" => "\xC3\xA9", + "\xEA" => "\xC3\xAA", + "\xEB" => "\xC3\xAB", + "\xEC" => "\xD9\x89", + "\xED" => "\xD9\x8A", + "\xEE" => "\xC3\xAE", + "\xEF" => "\xC3\xAF", + "\xF0" => "\xD9\x8B", + "\xF1" => "\xD9\x8C", + "\xF2" => "\xD9\x8D", + "\xF3" => "\xD9\x8E", + "\xF4" => "\xC3\xB4", + "\xF5" => "\xD9\x8F", + "\xF6" => "\xD9\x90", + "\xF7" => "\xC3\xB7", + "\xF8" => "\xD9\x91", + "\xF9" => "\xC3\xB9", + "\xFA" => "\xD9\x92", + "\xFB" => "\xC3\xBB", + "\xFC" => "\xC3\xBC", + "\xFD" => "\xE2\x80\x8E", + "\xFE" => "\xE2\x80\x8F", + "\xFF" => "\xDB\x92", + ); + return strtr($string, $transform); +} + +function cp1257($string) +{ + static $transform = array( + "\x80" => "\xE2\x82\xAC", + "\x82" => "\xE2\x80\x9A", + "\x84" => "\xE2\x80\x9E", + "\x85" => "\xE2\x80\xA6", + "\x86" => "\xE2\x80\xA0", + "\x87" => "\xE2\x80\xA1", + "\x89" => "\xE2\x80\xB0", + "\x8B" => "\xE2\x80\xB9", + "\x8D" => "\xC2\xA8", + "\x8E" => "\xCB\x87", + "\x8F" => "\xC2\xB8", + "\x91" => "\xE2\x80\x98", + "\x92" => "\xE2\x80\x99", + "\x93" => "\xE2\x80\x9C", + "\x94" => "\xE2\x80\x9D", + "\x95" => "\xE2\x80\xA2", + "\x96" => "\xE2\x80\x93", + "\x97" => "\xE2\x80\x94", + "\x99" => "\xE2\x84\xA2", + "\x9B" => "\xE2\x80\xBA", + "\x9D" => "\xC2\xAF", + "\x9E" => "\xCB\x9B", + "\xA0" => "\xC2\xA0", + "\xA2" => "\xC2\xA2", + "\xA3" => "\xC2\xA3", + "\xA4" => "\xC2\xA4", + "\xA6" => "\xC2\xA6", + "\xA7" => "\xC2\xA7", + "\xA8" => "\xC3\x98", + "\xA9" => "\xC2\xA9", + "\xAA" => "\xC5\x96", + "\xAB" => "\xC2\xAB", + "\xAC" => "\xC2\xAC", + "\xAD" => "\xC2\xAD", + "\xAE" => "\xC2\xAE", + "\xAF" => "\xC3\x86", + "\xB0" => "\xC2\xB0", + "\xB1" => "\xC2\xB1", + "\xB2" => "\xC2\xB2", + "\xB3" => "\xC2\xB3", + "\xB4" => "\xC2\xB4", + "\xB5" => "\xC2\xB5", + "\xB6" => "\xC2\xB6", + "\xB7" => "\xC2\xB7", + "\xB8" => "\xC3\xB8", + "\xB9" => "\xC2\xB9", + "\xBA" => "\xC5\x97", + "\xBB" => "\xC2\xBB", + "\xBC" => "\xC2\xBC", + "\xBD" => "\xC2\xBD", + "\xBE" => "\xC2\xBE", + "\xBF" => "\xC3\xA6", + "\xC0" => "\xC4\x84", + "\xC1" => "\xC4\xAE", + "\xC2" => "\xC4\x80", + "\xC3" => "\xC4\x86", + "\xC4" => "\xC3\x84", + "\xC5" => "\xC3\x85", + "\xC6" => "\xC4\x98", + "\xC7" => "\xC4\x92", + "\xC8" => "\xC4\x8C", + "\xC9" => "\xC3\x89", + "\xCA" => "\xC5\xB9", + "\xCB" => "\xC4\x96", + "\xCC" => "\xC4\xA2", + "\xCD" => "\xC4\xB6", + "\xCE" => "\xC4\xAA", + "\xCF" => "\xC4\xBB", + "\xD0" => "\xC5\xA0", + "\xD1" => "\xC5\x83", + "\xD2" => "\xC5\x85", + "\xD3" => "\xC3\x93", + "\xD4" => "\xC5\x8C", + "\xD5" => "\xC3\x95", + "\xD6" => "\xC3\x96", + "\xD7" => "\xC3\x97", + "\xD8" => "\xC5\xB2", + "\xD9" => "\xC5\x81", + "\xDA" => "\xC5\x9A", + "\xDB" => "\xC5\xAA", + "\xDC" => "\xC3\x9C", + "\xDD" => "\xC5\xBB", + "\xDE" => "\xC5\xBD", + "\xDF" => "\xC3\x9F", + "\xE0" => "\xC4\x85", + "\xE1" => "\xC4\xAF", + "\xE2" => "\xC4\x81", + "\xE3" => "\xC4\x87", + "\xE4" => "\xC3\xA4", + "\xE5" => "\xC3\xA5", + "\xE6" => "\xC4\x99", + "\xE7" => "\xC4\x93", + "\xE8" => "\xC4\x8D", + "\xE9" => "\xC3\xA9", + "\xEA" => "\xC5\xBA", + "\xEB" => "\xC4\x97", + "\xEC" => "\xC4\xA3", + "\xED" => "\xC4\xB7", + "\xEE" => "\xC4\xAB", + "\xEF" => "\xC4\xBC", + "\xF0" => "\xC5\xA1", + "\xF1" => "\xC5\x84", + "\xF2" => "\xC5\x86", + "\xF3" => "\xC3\xB3", + "\xF4" => "\xC5\x8D", + "\xF5" => "\xC3\xB5", + "\xF6" => "\xC3\xB6", + "\xF7" => "\xC3\xB7", + "\xF8" => "\xC5\xB3", + "\xF9" => "\xC5\x82", + "\xFA" => "\xC5\x9B", + "\xFB" => "\xC5\xAB", + "\xFC" => "\xC3\xBC", + "\xFD" => "\xC5\xBC", + "\xFE" => "\xC5\xBE", + "\xFF" => "\xCB\x99", + ); + return strtr($string, $transform); +} + +?>
\ No newline at end of file diff --git a/phpBB/includes/utf/data/recode_cjk.php b/phpBB/includes/utf/data/recode_cjk.php new file mode 100644 index 0000000000..b40728b65d --- /dev/null +++ b/phpBB/includes/utf/data/recode_cjk.php @@ -0,0 +1,45179 @@ +<?php +// Not inluded within the standard distribution + +function gb2312($string) +{ + static $transform = array( + "\xA1\xA1" => "\xE3\x80\x80", + "\xA1\xA2" => "\xE3\x80\x81", + "\xA1\xA3" => "\xE3\x80\x82", + "\xA1\xA4" => "\xE3\x83\xBB", + "\xA1\xA5" => "\xCB\x89", + "\xA1\xA6" => "\xCB\x87", + "\xA1\xA7" => "\xC2\xA8", + "\xA1\xA8" => "\xE3\x80\x83", + "\xA1\xA9" => "\xE3\x80\x85", + "\xA1\xAA" => "\xE2\x80\x95", + "\xA1\xAB" => "\xEF\xBD\x9E", + "\xA1\xAC" => "\xE2\x80\x96", + "\xA1\xAD" => "\xE2\x80\xA6", + "\xA1\xAE" => "\xE2\x80\x98", + "\xA1\xAF" => "\xE2\x80\x99", + "\xA1\xB0" => "\xE2\x80\x9C", + "\xA1\xB1" => "\xE2\x80\x9D", + "\xA1\xB2" => "\xE3\x80\x94", + "\xA1\xB3" => "\xE3\x80\x95", + "\xA1\xB4" => "\xE3\x80\x88", + "\xA1\xB5" => "\xE3\x80\x89", + "\xA1\xB6" => "\xE3\x80\x8A", + "\xA1\xB7" => "\xE3\x80\x8B", + "\xA1\xB8" => "\xE3\x80\x8C", + "\xA1\xB9" => "\xE3\x80\x8D", + "\xA1\xBA" => "\xE3\x80\x8E", + "\xA1\xBB" => "\xE3\x80\x8F", + "\xA1\xBC" => "\xE3\x80\x96", + "\xA1\xBD" => "\xE3\x80\x97", + "\xA1\xBE" => "\xE3\x80\x90", + "\xA1\xBF" => "\xE3\x80\x91", + "\xA1\xC0" => "\xC2\xB1", + "\xA1\xC1" => "\xC3\x97", + "\xA1\xC2" => "\xC3\xB7", + "\xA1\xC3" => "\xE2\x88\xB6", + "\xA1\xC4" => "\xE2\x88\xA7", + "\xA1\xC5" => "\xE2\x88\xA8", + "\xA1\xC6" => "\xE2\x88\x91", + "\xA1\xC7" => "\xE2\x88\x8F", + "\xA1\xC8" => "\xE2\x88\xAA", + "\xA1\xC9" => "\xE2\x88\xA9", + "\xA1\xCA" => "\xE2\x88\x88", + "\xA1\xCB" => "\xE2\x88\xB7", + "\xA1\xCC" => "\xE2\x88\x9A", + "\xA1\xCD" => "\xE2\x8A\xA5", + "\xA1\xCE" => "\xE2\x88\xA5", + "\xA1\xCF" => "\xE2\x88\xA0", + "\xA1\xD0" => "\xE2\x8C\x92", + "\xA1\xD1" => "\xE2\x8A\x99", + "\xA1\xD2" => "\xE2\x88\xAB", + "\xA1\xD3" => "\xE2\x88\xAE", + "\xA1\xD4" => "\xE2\x89\xA1", + "\xA1\xD5" => "\xE2\x89\x8C", + "\xA1\xD6" => "\xE2\x89\x88", + "\xA1\xD7" => "\xE2\x88\xBD", + "\xA1\xD8" => "\xE2\x88\x9D", + "\xA1\xD9" => "\xE2\x89\xA0", + "\xA1\xDA" => "\xE2\x89\xAE", + "\xA1\xDB" => "\xE2\x89\xAF", + "\xA1\xDC" => "\xE2\x89\xA4", + "\xA1\xDD" => "\xE2\x89\xA5", + "\xA1\xDE" => "\xE2\x88\x9E", + "\xA1\xDF" => "\xE2\x88\xB5", + "\xA1\xE0" => "\xE2\x88\xB4", + "\xA1\xE1" => "\xE2\x99\x82", + "\xA1\xE2" => "\xE2\x99\x80", + "\xA1\xE3" => "\xC2\xB0", + "\xA1\xE4" => "\xE2\x80\xB2", + "\xA1\xE5" => "\xE2\x80\xB3", + "\xA1\xE6" => "\xE2\x84\x83", + "\xA1\xE7" => "\xEF\xBC\x84", + "\xA1\xE8" => "\xC2\xA4", + "\xA1\xE9" => "\xEF\xBF\xA0", + "\xA1\xEA" => "\xEF\xBF\xA1", + "\xA1\xEB" => "\xE2\x80\xB0", + "\xA1\xEC" => "\xC2\xA7", + "\xA1\xED" => "\xE2\x84\x96", + "\xA1\xEE" => "\xE2\x98\x86", + "\xA1\xEF" => "\xE2\x98\x85", + "\xA1\xF0" => "\xE2\x97\x8B", + "\xA1\xF1" => "\xE2\x97\x8F", + "\xA1\xF2" => "\xE2\x97\x8E", + "\xA1\xF3" => "\xE2\x97\x87", + "\xA1\xF4" => "\xE2\x97\x86", + "\xA1\xF5" => "\xE2\x96\xA1", + "\xA1\xF6" => "\xE2\x96\xA0", + "\xA1\xF7" => "\xE2\x96\xB3", + "\xA1\xF8" => "\xE2\x96\xB2", + "\xA1\xF9" => "\xE2\x80\xBB", + "\xA1\xFA" => "\xE2\x86\x92", + "\xA1\xFB" => "\xE2\x86\x90", + "\xA1\xFC" => "\xE2\x86\x91", + "\xA1\xFD" => "\xE2\x86\x93", + "\xA1\xFE" => "\xE3\x80\x93", + "\xA2\xB1" => "\xE2\x92\x88", + "\xA2\xB2" => "\xE2\x92\x89", + "\xA2\xB3" => "\xE2\x92\x8A", + "\xA2\xB4" => "\xE2\x92\x8B", + "\xA2\xB5" => "\xE2\x92\x8C", + "\xA2\xB6" => "\xE2\x92\x8D", + "\xA2\xB7" => "\xE2\x92\x8E", + "\xA2\xB8" => "\xE2\x92\x8F", + "\xA2\xB9" => "\xE2\x92\x90", + "\xA2\xBA" => "\xE2\x92\x91", + "\xA2\xBB" => "\xE2\x92\x92", + "\xA2\xBC" => "\xE2\x92\x93", + "\xA2\xBD" => "\xE2\x92\x94", + "\xA2\xBE" => "\xE2\x92\x95", + "\xA2\xBF" => "\xE2\x92\x96", + "\xA2\xC0" => "\xE2\x92\x97", + "\xA2\xC1" => "\xE2\x92\x98", + "\xA2\xC2" => "\xE2\x92\x99", + "\xA2\xC3" => "\xE2\x92\x9A", + "\xA2\xC4" => "\xE2\x92\x9B", + "\xA2\xC5" => "\xE2\x91\xB4", + "\xA2\xC6" => "\xE2\x91\xB5", + "\xA2\xC7" => "\xE2\x91\xB6", + "\xA2\xC8" => "\xE2\x91\xB7", + "\xA2\xC9" => "\xE2\x91\xB8", + "\xA2\xCA" => "\xE2\x91\xB9", + "\xA2\xCB" => "\xE2\x91\xBA", + "\xA2\xCC" => "\xE2\x91\xBB", + "\xA2\xCD" => "\xE2\x91\xBC", + "\xA2\xCE" => "\xE2\x91\xBD", + "\xA2\xCF" => "\xE2\x91\xBE", + "\xA2\xD0" => "\xE2\x91\xBF", + "\xA2\xD1" => "\xE2\x92\x80", + "\xA2\xD2" => "\xE2\x92\x81", + "\xA2\xD3" => "\xE2\x92\x82", + "\xA2\xD4" => "\xE2\x92\x83", + "\xA2\xD5" => "\xE2\x92\x84", + "\xA2\xD6" => "\xE2\x92\x85", + "\xA2\xD7" => "\xE2\x92\x86", + "\xA2\xD8" => "\xE2\x92\x87", + "\xA2\xD9" => "\xE2\x91\xA0", + "\xA2\xDA" => "\xE2\x91\xA1", + "\xA2\xDB" => "\xE2\x91\xA2", + "\xA2\xDC" => "\xE2\x91\xA3", + "\xA2\xDD" => "\xE2\x91\xA4", + "\xA2\xDE" => "\xE2\x91\xA5", + "\xA2\xDF" => "\xE2\x91\xA6", + "\xA2\xE0" => "\xE2\x91\xA7", + "\xA2\xE1" => "\xE2\x91\xA8", + "\xA2\xE2" => "\xE2\x91\xA9", + "\xA2\xE5" => "\xE3\x88\xA0", + "\xA2\xE6" => "\xE3\x88\xA1", + "\xA2\xE7" => "\xE3\x88\xA2", + "\xA2\xE8" => "\xE3\x88\xA3", + "\xA2\xE9" => "\xE3\x88\xA4", + "\xA2\xEA" => "\xE3\x88\xA5", + "\xA2\xEB" => "\xE3\x88\xA6", + "\xA2\xEC" => "\xE3\x88\xA7", + "\xA2\xED" => "\xE3\x88\xA8", + "\xA2\xEE" => "\xE3\x88\xA9", + "\xA2\xF1" => "\xE2\x85\xA0", + "\xA2\xF2" => "\xE2\x85\xA1", + "\xA2\xF3" => "\xE2\x85\xA2", + "\xA2\xF4" => "\xE2\x85\xA3", + "\xA2\xF5" => "\xE2\x85\xA4", + "\xA2\xF6" => "\xE2\x85\xA5", + "\xA2\xF7" => "\xE2\x85\xA6", + "\xA2\xF8" => "\xE2\x85\xA7", + "\xA2\xF9" => "\xE2\x85\xA8", + "\xA2\xFA" => "\xE2\x85\xA9", + "\xA2\xFB" => "\xE2\x85\xAA", + "\xA2\xFC" => "\xE2\x85\xAB", + "\xA3\xA1" => "\xEF\xBC\x81", + "\xA3\xA2" => "\xEF\xBC\x82", + "\xA3\xA3" => "\xEF\xBC\x83", + "\xA3\xA4" => "\xEF\xBF\xA5", + "\xA3\xA5" => "\xEF\xBC\x85", + "\xA3\xA6" => "\xEF\xBC\x86", + "\xA3\xA7" => "\xEF\xBC\x87", + "\xA3\xA8" => "\xEF\xBC\x88", + "\xA3\xA9" => "\xEF\xBC\x89", + "\xA3\xAA" => "\xEF\xBC\x8A", + "\xA3\xAB" => "\xEF\xBC\x8B", + "\xA3\xAC" => "\xEF\xBC\x8C", + "\xA3\xAD" => "\xEF\xBC\x8D", + "\xA3\xAE" => "\xEF\xBC\x8E", + "\xA3\xAF" => "\xEF\xBC\x8F", + "\xA3\xB0" => "\xEF\xBC\x90", + "\xA3\xB1" => "\xEF\xBC\x91", + "\xA3\xB2" => "\xEF\xBC\x92", + "\xA3\xB3" => "\xEF\xBC\x93", + "\xA3\xB4" => "\xEF\xBC\x94", + "\xA3\xB5" => "\xEF\xBC\x95", + "\xA3\xB6" => "\xEF\xBC\x96", + "\xA3\xB7" => "\xEF\xBC\x97", + "\xA3\xB8" => "\xEF\xBC\x98", + "\xA3\xB9" => "\xEF\xBC\x99", + "\xA3\xBA" => "\xEF\xBC\x9A", + "\xA3\xBB" => "\xEF\xBC\x9B", + "\xA3\xBC" => "\xEF\xBC\x9C", + "\xA3\xBD" => "\xEF\xBC\x9D", + "\xA3\xBE" => "\xEF\xBC\x9E", + "\xA3\xBF" => "\xEF\xBC\x9F", + "\xA3\xC0" => "\xEF\xBC\xA0", + "\xA3\xC1" => "\xEF\xBC\xA1", + "\xA3\xC2" => "\xEF\xBC\xA2", + "\xA3\xC3" => "\xEF\xBC\xA3", + "\xA3\xC4" => "\xEF\xBC\xA4", + "\xA3\xC5" => "\xEF\xBC\xA5", + "\xA3\xC6" => "\xEF\xBC\xA6", + "\xA3\xC7" => "\xEF\xBC\xA7", + "\xA3\xC8" => "\xEF\xBC\xA8", + "\xA3\xC9" => "\xEF\xBC\xA9", + "\xA3\xCA" => "\xEF\xBC\xAA", + "\xA3\xCB" => "\xEF\xBC\xAB", + "\xA3\xCC" => "\xEF\xBC\xAC", + "\xA3\xCD" => "\xEF\xBC\xAD", + "\xA3\xCE" => "\xEF\xBC\xAE", + "\xA3\xCF" => "\xEF\xBC\xAF", + "\xA3\xD0" => "\xEF\xBC\xB0", + "\xA3\xD1" => "\xEF\xBC\xB1", + "\xA3\xD2" => "\xEF\xBC\xB2", + "\xA3\xD3" => "\xEF\xBC\xB3", + "\xA3\xD4" => "\xEF\xBC\xB4", + "\xA3\xD5" => "\xEF\xBC\xB5", + "\xA3\xD6" => "\xEF\xBC\xB6", + "\xA3\xD7" => "\xEF\xBC\xB7", + "\xA3\xD8" => "\xEF\xBC\xB8", + "\xA3\xD9" => "\xEF\xBC\xB9", + "\xA3\xDA" => "\xEF\xBC\xBA", + "\xA3\xDB" => "\xEF\xBC\xBB", + "\xA3\xDC" => "\xEF\xBC\xBC", + "\xA3\xDD" => "\xEF\xBC\xBD", + "\xA3\xDE" => "\xEF\xBC\xBE", + "\xA3\xDF" => "\xEF\xBC\xBF", + "\xA3\xE0" => "\xEF\xBD\x80", + "\xA3\xE1" => "\xEF\xBD\x81", + "\xA3\xE2" => "\xEF\xBD\x82", + "\xA3\xE3" => "\xEF\xBD\x83", + "\xA3\xE4" => "\xEF\xBD\x84", + "\xA3\xE5" => "\xEF\xBD\x85", + "\xA3\xE6" => "\xEF\xBD\x86", + "\xA3\xE7" => "\xEF\xBD\x87", + "\xA3\xE8" => "\xEF\xBD\x88", + "\xA3\xE9" => "\xEF\xBD\x89", + "\xA3\xEA" => "\xEF\xBD\x8A", + "\xA3\xEB" => "\xEF\xBD\x8B", + "\xA3\xEC" => "\xEF\xBD\x8C", + "\xA3\xED" => "\xEF\xBD\x8D", + "\xA3\xEE" => "\xEF\xBD\x8E", + "\xA3\xEF" => "\xEF\xBD\x8F", + "\xA3\xF0" => "\xEF\xBD\x90", + "\xA3\xF1" => "\xEF\xBD\x91", + "\xA3\xF2" => "\xEF\xBD\x92", + "\xA3\xF3" => "\xEF\xBD\x93", + "\xA3\xF4" => "\xEF\xBD\x94", + "\xA3\xF5" => "\xEF\xBD\x95", + "\xA3\xF6" => "\xEF\xBD\x96", + "\xA3\xF7" => "\xEF\xBD\x97", + "\xA3\xF8" => "\xEF\xBD\x98", + "\xA3\xF9" => "\xEF\xBD\x99", + "\xA3\xFA" => "\xEF\xBD\x9A", + "\xA3\xFB" => "\xEF\xBD\x9B", + "\xA3\xFC" => "\xEF\xBD\x9C", + "\xA3\xFD" => "\xEF\xBD\x9D", + "\xA3\xFE" => "\xEF\xBF\xA3", + "\xA4\xA1" => "\xE3\x81\x81", + "\xA4\xA2" => "\xE3\x81\x82", + "\xA4\xA3" => "\xE3\x81\x83", + "\xA4\xA4" => "\xE3\x81\x84", + "\xA4\xA5" => "\xE3\x81\x85", + "\xA4\xA6" => "\xE3\x81\x86", + "\xA4\xA7" => "\xE3\x81\x87", + "\xA4\xA8" => "\xE3\x81\x88", + "\xA4\xA9" => "\xE3\x81\x89", + "\xA4\xAA" => "\xE3\x81\x8A", + "\xA4\xAB" => "\xE3\x81\x8B", + "\xA4\xAC" => "\xE3\x81\x8C", + "\xA4\xAD" => "\xE3\x81\x8D", + "\xA4\xAE" => "\xE3\x81\x8E", + "\xA4\xAF" => "\xE3\x81\x8F", + "\xA4\xB0" => "\xE3\x81\x90", + "\xA4\xB1" => "\xE3\x81\x91", + "\xA4\xB2" => "\xE3\x81\x92", + "\xA4\xB3" => "\xE3\x81\x93", + "\xA4\xB4" => "\xE3\x81\x94", + "\xA4\xB5" => "\xE3\x81\x95", + "\xA4\xB6" => "\xE3\x81\x96", + "\xA4\xB7" => "\xE3\x81\x97", + "\xA4\xB8" => "\xE3\x81\x98", + "\xA4\xB9" => "\xE3\x81\x99", + "\xA4\xBA" => "\xE3\x81\x9A", + "\xA4\xBB" => "\xE3\x81\x9B", + "\xA4\xBC" => "\xE3\x81\x9C", + "\xA4\xBD" => "\xE3\x81\x9D", + "\xA4\xBE" => "\xE3\x81\x9E", + "\xA4\xBF" => "\xE3\x81\x9F", + "\xA4\xC0" => "\xE3\x81\xA0", + "\xA4\xC1" => "\xE3\x81\xA1", + "\xA4\xC2" => "\xE3\x81\xA2", + "\xA4\xC3" => "\xE3\x81\xA3", + "\xA4\xC4" => "\xE3\x81\xA4", + "\xA4\xC5" => "\xE3\x81\xA5", + "\xA4\xC6" => "\xE3\x81\xA6", + "\xA4\xC7" => "\xE3\x81\xA7", + "\xA4\xC8" => "\xE3\x81\xA8", + "\xA4\xC9" => "\xE3\x81\xA9", + "\xA4\xCA" => "\xE3\x81\xAA", + "\xA4\xCB" => "\xE3\x81\xAB", + "\xA4\xCC" => "\xE3\x81\xAC", + "\xA4\xCD" => "\xE3\x81\xAD", + "\xA4\xCE" => "\xE3\x81\xAE", + "\xA4\xCF" => "\xE3\x81\xAF", + "\xA4\xD0" => "\xE3\x81\xB0", + "\xA4\xD1" => "\xE3\x81\xB1", + "\xA4\xD2" => "\xE3\x81\xB2", + "\xA4\xD3" => "\xE3\x81\xB3", + "\xA4\xD4" => "\xE3\x81\xB4", + "\xA4\xD5" => "\xE3\x81\xB5", + "\xA4\xD6" => "\xE3\x81\xB6", + "\xA4\xD7" => "\xE3\x81\xB7", + "\xA4\xD8" => "\xE3\x81\xB8", + "\xA4\xD9" => "\xE3\x81\xB9", + "\xA4\xDA" => "\xE3\x81\xBA", + "\xA4\xDB" => "\xE3\x81\xBB", + "\xA4\xDC" => "\xE3\x81\xBC", + "\xA4\xDD" => "\xE3\x81\xBD", + "\xA4\xDE" => "\xE3\x81\xBE", + "\xA4\xDF" => "\xE3\x81\xBF", + "\xA4\xE0" => "\xE3\x82\x80", + "\xA4\xE1" => "\xE3\x82\x81", + "\xA4\xE2" => "\xE3\x82\x82", + "\xA4\xE3" => "\xE3\x82\x83", + "\xA4\xE4" => "\xE3\x82\x84", + "\xA4\xE5" => "\xE3\x82\x85", + "\xA4\xE6" => "\xE3\x82\x86", + "\xA4\xE7" => "\xE3\x82\x87", + "\xA4\xE8" => "\xE3\x82\x88", + "\xA4\xE9" => "\xE3\x82\x89", + "\xA4\xEA" => "\xE3\x82\x8A", + "\xA4\xEB" => "\xE3\x82\x8B", + "\xA4\xEC" => "\xE3\x82\x8C", + "\xA4\xED" => "\xE3\x82\x8D", + "\xA4\xEE" => "\xE3\x82\x8E", + "\xA4\xEF" => "\xE3\x82\x8F", + "\xA4\xF0" => "\xE3\x82\x90", + "\xA4\xF1" => "\xE3\x82\x91", + "\xA4\xF2" => "\xE3\x82\x92", + "\xA4\xF3" => "\xE3\x82\x93", + "\xA5\xA1" => "\xE3\x82\xA1", + "\xA5\xA2" => "\xE3\x82\xA2", + "\xA5\xA3" => "\xE3\x82\xA3", + "\xA5\xA4" => "\xE3\x82\xA4", + "\xA5\xA5" => "\xE3\x82\xA5", + "\xA5\xA6" => "\xE3\x82\xA6", + "\xA5\xA7" => "\xE3\x82\xA7", + "\xA5\xA8" => "\xE3\x82\xA8", + "\xA5\xA9" => "\xE3\x82\xA9", + "\xA5\xAA" => "\xE3\x82\xAA", + "\xA5\xAB" => "\xE3\x82\xAB", + "\xA5\xAC" => "\xE3\x82\xAC", + "\xA5\xAD" => "\xE3\x82\xAD", + "\xA5\xAE" => "\xE3\x82\xAE", + "\xA5\xAF" => "\xE3\x82\xAF", + "\xA5\xB0" => "\xE3\x82\xB0", + "\xA5\xB1" => "\xE3\x82\xB1", + "\xA5\xB2" => "\xE3\x82\xB2", + "\xA5\xB3" => "\xE3\x82\xB3", + "\xA5\xB4" => "\xE3\x82\xB4", + "\xA5\xB5" => "\xE3\x82\xB5", + "\xA5\xB6" => "\xE3\x82\xB6", + "\xA5\xB7" => "\xE3\x82\xB7", + "\xA5\xB8" => "\xE3\x82\xB8", + "\xA5\xB9" => "\xE3\x82\xB9", + "\xA5\xBA" => "\xE3\x82\xBA", + "\xA5\xBB" => "\xE3\x82\xBB", + "\xA5\xBC" => "\xE3\x82\xBC", + "\xA5\xBD" => "\xE3\x82\xBD", + "\xA5\xBE" => "\xE3\x82\xBE", + "\xA5\xBF" => "\xE3\x82\xBF", + "\xA5\xC0" => "\xE3\x83\x80", + "\xA5\xC1" => "\xE3\x83\x81", + "\xA5\xC2" => "\xE3\x83\x82", + "\xA5\xC3" => "\xE3\x83\x83", + "\xA5\xC4" => "\xE3\x83\x84", + "\xA5\xC5" => "\xE3\x83\x85", + "\xA5\xC6" => "\xE3\x83\x86", + "\xA5\xC7" => "\xE3\x83\x87", + "\xA5\xC8" => "\xE3\x83\x88", + "\xA5\xC9" => "\xE3\x83\x89", + "\xA5\xCA" => "\xE3\x83\x8A", + "\xA5\xCB" => "\xE3\x83\x8B", + "\xA5\xCC" => "\xE3\x83\x8C", + "\xA5\xCD" => "\xE3\x83\x8D", + "\xA5\xCE" => "\xE3\x83\x8E", + "\xA5\xCF" => "\xE3\x83\x8F", + "\xA5\xD0" => "\xE3\x83\x90", + "\xA5\xD1" => "\xE3\x83\x91", + "\xA5\xD2" => "\xE3\x83\x92", + "\xA5\xD3" => "\xE3\x83\x93", + "\xA5\xD4" => "\xE3\x83\x94", + "\xA5\xD5" => "\xE3\x83\x95", + "\xA5\xD6" => "\xE3\x83\x96", + "\xA5\xD7" => "\xE3\x83\x97", + "\xA5\xD8" => "\xE3\x83\x98", + "\xA5\xD9" => "\xE3\x83\x99", + "\xA5\xDA" => "\xE3\x83\x9A", + "\xA5\xDB" => "\xE3\x83\x9B", + "\xA5\xDC" => "\xE3\x83\x9C", + "\xA5\xDD" => "\xE3\x83\x9D", + "\xA5\xDE" => "\xE3\x83\x9E", + "\xA5\xDF" => "\xE3\x83\x9F", + "\xA5\xE0" => "\xE3\x83\xA0", + "\xA5\xE1" => "\xE3\x83\xA1", + "\xA5\xE2" => "\xE3\x83\xA2", + "\xA5\xE3" => "\xE3\x83\xA3", + "\xA5\xE4" => "\xE3\x83\xA4", + "\xA5\xE5" => "\xE3\x83\xA5", + "\xA5\xE6" => "\xE3\x83\xA6", + "\xA5\xE7" => "\xE3\x83\xA7", + "\xA5\xE8" => "\xE3\x83\xA8", + "\xA5\xE9" => "\xE3\x83\xA9", + "\xA5\xEA" => "\xE3\x83\xAA", + "\xA5\xEB" => "\xE3\x83\xAB", + "\xA5\xEC" => "\xE3\x83\xAC", + "\xA5\xED" => "\xE3\x83\xAD", + "\xA5\xEE" => "\xE3\x83\xAE", + "\xA5\xEF" => "\xE3\x83\xAF", + "\xA5\xF0" => "\xE3\x83\xB0", + "\xA5\xF1" => "\xE3\x83\xB1", + "\xA5\xF2" => "\xE3\x83\xB2", + "\xA5\xF3" => "\xE3\x83\xB3", + "\xA5\xF4" => "\xE3\x83\xB4", + "\xA5\xF5" => "\xE3\x83\xB5", + "\xA5\xF6" => "\xE3\x83\xB6", + "\xA6\xA1" => "\xCE\x91", + "\xA6\xA2" => "\xCE\x92", + "\xA6\xA3" => "\xCE\x93", + "\xA6\xA4" => "\xCE\x94", + "\xA6\xA5" => "\xCE\x95", + "\xA6\xA6" => "\xCE\x96", + "\xA6\xA7" => "\xCE\x97", + "\xA6\xA8" => "\xCE\x98", + "\xA6\xA9" => "\xCE\x99", + "\xA6\xAA" => "\xCE\x9A", + "\xA6\xAB" => "\xCE\x9B", + "\xA6\xAC" => "\xCE\x9C", + "\xA6\xAD" => "\xCE\x9D", + "\xA6\xAE" => "\xCE\x9E", + "\xA6\xAF" => "\xCE\x9F", + "\xA6\xB0" => "\xCE\xA0", + "\xA6\xB1" => "\xCE\xA1", + "\xA6\xB2" => "\xCE\xA3", + "\xA6\xB3" => "\xCE\xA4", + "\xA6\xB4" => "\xCE\xA5", + "\xA6\xB5" => "\xCE\xA6", + "\xA6\xB6" => "\xCE\xA7", + "\xA6\xB7" => "\xCE\xA8", + "\xA6\xB8" => "\xCE\xA9", + "\xA6\xC1" => "\xCE\xB1", + "\xA6\xC2" => "\xCE\xB2", + "\xA6\xC3" => "\xCE\xB3", + "\xA6\xC4" => "\xCE\xB4", + "\xA6\xC5" => "\xCE\xB5", + "\xA6\xC6" => "\xCE\xB6", + "\xA6\xC7" => "\xCE\xB7", + "\xA6\xC8" => "\xCE\xB8", + "\xA6\xC9" => "\xCE\xB9", + "\xA6\xCA" => "\xCE\xBA", + "\xA6\xCB" => "\xCE\xBB", + "\xA6\xCC" => "\xCE\xBC", + "\xA6\xCD" => "\xCE\xBD", + "\xA6\xCE" => "\xCE\xBE", + "\xA6\xCF" => "\xCE\xBF", + "\xA6\xD0" => "\xCF\x80", + "\xA6\xD1" => "\xCF\x81", + "\xA6\xD2" => "\xCF\x83", + "\xA6\xD3" => "\xCF\x84", + "\xA6\xD4" => "\xCF\x85", + "\xA6\xD5" => "\xCF\x86", + "\xA6\xD6" => "\xCF\x87", + "\xA6\xD7" => "\xCF\x88", + "\xA6\xD8" => "\xCF\x89", + "\xA7\xA1" => "\xD0\x90", + "\xA7\xA2" => "\xD0\x91", + "\xA7\xA3" => "\xD0\x92", + "\xA7\xA4" => "\xD0\x93", + "\xA7\xA5" => "\xD0\x94", + "\xA7\xA6" => "\xD0\x95", + "\xA7\xA7" => "\xD0\x81", + "\xA7\xA8" => "\xD0\x96", + "\xA7\xA9" => "\xD0\x97", + "\xA7\xAA" => "\xD0\x98", + "\xA7\xAB" => "\xD0\x99", + "\xA7\xAC" => "\xD0\x9A", + "\xA7\xAD" => "\xD0\x9B", + "\xA7\xAE" => "\xD0\x9C", + "\xA7\xAF" => "\xD0\x9D", + "\xA7\xB0" => "\xD0\x9E", + "\xA7\xB1" => "\xD0\x9F", + "\xA7\xB2" => "\xD0\xA0", + "\xA7\xB3" => "\xD0\xA1", + "\xA7\xB4" => "\xD0\xA2", + "\xA7\xB5" => "\xD0\xA3", + "\xA7\xB6" => "\xD0\xA4", + "\xA7\xB7" => "\xD0\xA5", + "\xA7\xB8" => "\xD0\xA6", + "\xA7\xB9" => "\xD0\xA7", + "\xA7\xBA" => "\xD0\xA8", + "\xA7\xBB" => "\xD0\xA9", + "\xA7\xBC" => "\xD0\xAA", + "\xA7\xBD" => "\xD0\xAB", + "\xA7\xBE" => "\xD0\xAC", + "\xA7\xBF" => "\xD0\xAD", + "\xA7\xC0" => "\xD0\xAE", + "\xA7\xC1" => "\xD0\xAF", + "\xA7\xD1" => "\xD0\xB0", + "\xA7\xD2" => "\xD0\xB1", + "\xA7\xD3" => "\xD0\xB2", + "\xA7\xD4" => "\xD0\xB3", + "\xA7\xD5" => "\xD0\xB4", + "\xA7\xD6" => "\xD0\xB5", + "\xA7\xD7" => "\xD1\x91", + "\xA7\xD8" => "\xD0\xB6", + "\xA7\xD9" => "\xD0\xB7", + "\xA7\xDA" => "\xD0\xB8", + "\xA7\xDB" => "\xD0\xB9", + "\xA7\xDC" => "\xD0\xBA", + "\xA7\xDD" => "\xD0\xBB", + "\xA7\xDE" => "\xD0\xBC", + "\xA7\xDF" => "\xD0\xBD", + "\xA7\xE0" => "\xD0\xBE", + "\xA7\xE1" => "\xD0\xBF", + "\xA7\xE2" => "\xD1\x80", + "\xA7\xE3" => "\xD1\x81", + "\xA7\xE4" => "\xD1\x82", + "\xA7\xE5" => "\xD1\x83", + "\xA7\xE6" => "\xD1\x84", + "\xA7\xE7" => "\xD1\x85", + "\xA7\xE8" => "\xD1\x86", + "\xA7\xE9" => "\xD1\x87", + "\xA7\xEA" => "\xD1\x88", + "\xA7\xEB" => "\xD1\x89", + "\xA7\xEC" => "\xD1\x8A", + "\xA7\xED" => "\xD1\x8B", + "\xA7\xEE" => "\xD1\x8C", + "\xA7\xEF" => "\xD1\x8D", + "\xA7\xF0" => "\xD1\x8E", + "\xA7\xF1" => "\xD1\x8F", + "\xA8\xA1" => "\xC4\x81", + "\xA8\xA2" => "\xC3\xA1", + "\xA8\xA3" => "\xC7\x8E", + "\xA8\xA4" => "\xC3\xA0", + "\xA8\xA5" => "\xC4\x93", + "\xA8\xA6" => "\xC3\xA9", + "\xA8\xA7" => "\xC4\x9B", + "\xA8\xA8" => "\xC3\xA8", + "\xA8\xA9" => "\xC4\xAB", + "\xA8\xAA" => "\xC3\xAD", + "\xA8\xAB" => "\xC7\x90", + "\xA8\xAC" => "\xC3\xAC", + "\xA8\xAD" => "\xC5\x8D", + "\xA8\xAE" => "\xC3\xB3", + "\xA8\xAF" => "\xC7\x92", + "\xA8\xB0" => "\xC3\xB2", + "\xA8\xB1" => "\xC5\xAB", + "\xA8\xB2" => "\xC3\xBA", + "\xA8\xB3" => "\xC7\x94", + "\xA8\xB4" => "\xC3\xB9", + "\xA8\xB5" => "\xC7\x96", + "\xA8\xB6" => "\xC7\x98", + "\xA8\xB7" => "\xC7\x9A", + "\xA8\xB8" => "\xC7\x9C", + "\xA8\xB9" => "\xC3\xBC", + "\xA8\xBA" => "\xC3\xAA", + "\xA8\xC5" => "\xE3\x84\x85", + "\xA8\xC6" => "\xE3\x84\x86", + "\xA8\xC7" => "\xE3\x84\x87", + "\xA8\xC8" => "\xE3\x84\x88", + "\xA8\xC9" => "\xE3\x84\x89", + "\xA8\xCA" => "\xE3\x84\x8A", + "\xA8\xCB" => "\xE3\x84\x8B", + "\xA8\xCC" => "\xE3\x84\x8C", + "\xA8\xCD" => "\xE3\x84\x8D", + "\xA8\xCE" => "\xE3\x84\x8E", + "\xA8\xCF" => "\xE3\x84\x8F", + "\xA8\xD0" => "\xE3\x84\x90", + "\xA8\xD1" => "\xE3\x84\x91", + "\xA8\xD2" => "\xE3\x84\x92", + "\xA8\xD3" => "\xE3\x84\x93", + "\xA8\xD4" => "\xE3\x84\x94", + "\xA8\xD5" => "\xE3\x84\x95", + "\xA8\xD6" => "\xE3\x84\x96", + "\xA8\xD7" => "\xE3\x84\x97", + "\xA8\xD8" => "\xE3\x84\x98", + "\xA8\xD9" => "\xE3\x84\x99", + "\xA8\xDA" => "\xE3\x84\x9A", + "\xA8\xDB" => "\xE3\x84\x9B", + "\xA8\xDC" => "\xE3\x84\x9C", + "\xA8\xDD" => "\xE3\x84\x9D", + "\xA8\xDE" => "\xE3\x84\x9E", + "\xA8\xDF" => "\xE3\x84\x9F", + "\xA8\xE0" => "\xE3\x84\xA0", + "\xA8\xE1" => "\xE3\x84\xA1", + "\xA8\xE2" => "\xE3\x84\xA2", + "\xA8\xE3" => "\xE3\x84\xA3", + "\xA8\xE4" => "\xE3\x84\xA4", + "\xA8\xE5" => "\xE3\x84\xA5", + "\xA8\xE6" => "\xE3\x84\xA6", + "\xA8\xE7" => "\xE3\x84\xA7", + "\xA8\xE8" => "\xE3\x84\xA8", + "\xA8\xE9" => "\xE3\x84\xA9", + "\xA9\xA4" => "\xE2\x94\x80", + "\xA9\xA5" => "\xE2\x94\x81", + "\xA9\xA6" => "\xE2\x94\x82", + "\xA9\xA7" => "\xE2\x94\x83", + "\xA9\xA8" => "\xE2\x94\x84", + "\xA9\xA9" => "\xE2\x94\x85", + "\xA9\xAA" => "\xE2\x94\x86", + "\xA9\xAB" => "\xE2\x94\x87", + "\xA9\xAC" => "\xE2\x94\x88", + "\xA9\xAD" => "\xE2\x94\x89", + "\xA9\xAE" => "\xE2\x94\x8A", + "\xA9\xAF" => "\xE2\x94\x8B", + "\xA9\xB0" => "\xE2\x94\x8C", + "\xA9\xB1" => "\xE2\x94\x8D", + "\xA9\xB2" => "\xE2\x94\x8E", + "\xA9\xB3" => "\xE2\x94\x8F", + "\xA9\xB4" => "\xE2\x94\x90", + "\xA9\xB5" => "\xE2\x94\x91", + "\xA9\xB6" => "\xE2\x94\x92", + "\xA9\xB7" => "\xE2\x94\x93", + "\xA9\xB8" => "\xE2\x94\x94", + "\xA9\xB9" => "\xE2\x94\x95", + "\xA9\xBA" => "\xE2\x94\x96", + "\xA9\xBB" => "\xE2\x94\x97", + "\xA9\xBC" => "\xE2\x94\x98", + "\xA9\xBD" => "\xE2\x94\x99", + "\xA9\xBE" => "\xE2\x94\x9A", + "\xA9\xBF" => "\xE2\x94\x9B", + "\xA9\xC0" => "\xE2\x94\x9C", + "\xA9\xC1" => "\xE2\x94\x9D", + "\xA9\xC2" => "\xE2\x94\x9E", + "\xA9\xC3" => "\xE2\x94\x9F", + "\xA9\xC4" => "\xE2\x94\xA0", + "\xA9\xC5" => "\xE2\x94\xA1", + "\xA9\xC6" => "\xE2\x94\xA2", + "\xA9\xC7" => "\xE2\x94\xA3", + "\xA9\xC8" => "\xE2\x94\xA4", + "\xA9\xC9" => "\xE2\x94\xA5", + "\xA9\xCA" => "\xE2\x94\xA6", + "\xA9\xCB" => "\xE2\x94\xA7", + "\xA9\xCC" => "\xE2\x94\xA8", + "\xA9\xCD" => "\xE2\x94\xA9", + "\xA9\xCE" => "\xE2\x94\xAA", + "\xA9\xCF" => "\xE2\x94\xAB", + "\xA9\xD0" => "\xE2\x94\xAC", + "\xA9\xD1" => "\xE2\x94\xAD", + "\xA9\xD2" => "\xE2\x94\xAE", + "\xA9\xD3" => "\xE2\x94\xAF", + "\xA9\xD4" => "\xE2\x94\xB0", + "\xA9\xD5" => "\xE2\x94\xB1", + "\xA9\xD6" => "\xE2\x94\xB2", + "\xA9\xD7" => "\xE2\x94\xB3", + "\xA9\xD8" => "\xE2\x94\xB4", + "\xA9\xD9" => "\xE2\x94\xB5", + "\xA9\xDA" => "\xE2\x94\xB6", + "\xA9\xDB" => "\xE2\x94\xB7", + "\xA9\xDC" => "\xE2\x94\xB8", + "\xA9\xDD" => "\xE2\x94\xB9", + "\xA9\xDE" => "\xE2\x94\xBA", + "\xA9\xDF" => "\xE2\x94\xBB", + "\xA9\xE0" => "\xE2\x94\xBC", + "\xA9\xE1" => "\xE2\x94\xBD", + "\xA9\xE2" => "\xE2\x94\xBE", + "\xA9\xE3" => "\xE2\x94\xBF", + "\xA9\xE4" => "\xE2\x95\x80", + "\xA9\xE5" => "\xE2\x95\x81", + "\xA9\xE6" => "\xE2\x95\x82", + "\xA9\xE7" => "\xE2\x95\x83", + "\xA9\xE8" => "\xE2\x95\x84", + "\xA9\xE9" => "\xE2\x95\x85", + "\xA9\xEA" => "\xE2\x95\x86", + "\xA9\xEB" => "\xE2\x95\x87", + "\xA9\xEC" => "\xE2\x95\x88", + "\xA9\xED" => "\xE2\x95\x89", + "\xA9\xEE" => "\xE2\x95\x8A", + "\xA9\xEF" => "\xE2\x95\x8B", + "\xB0\xA1" => "\xE5\x95\x8A", + "\xB0\xA2" => "\xE9\x98\xBF", + "\xB0\xA3" => "\xE5\x9F\x83", + "\xB0\xA4" => "\xE6\x8C\xA8", + "\xB0\xA5" => "\xE5\x93\x8E", + "\xB0\xA6" => "\xE5\x94\x89", + "\xB0\xA7" => "\xE5\x93\x80", + "\xB0\xA8" => "\xE7\x9A\x91", + "\xB0\xA9" => "\xE7\x99\x8C", + "\xB0\xAA" => "\xE8\x94\xBC", + "\xB0\xAB" => "\xE7\x9F\xAE", + "\xB0\xAC" => "\xE8\x89\xBE", + "\xB0\xAD" => "\xE7\xA2\x8D", + "\xB0\xAE" => "\xE7\x88\xB1", + "\xB0\xAF" => "\xE9\x9A\x98", + "\xB0\xB0" => "\xE9\x9E\x8D", + "\xB0\xB1" => "\xE6\xB0\xA8", + "\xB0\xB2" => "\xE5\xAE\x89", + "\xB0\xB3" => "\xE4\xBF\xBA", + "\xB0\xB4" => "\xE6\x8C\x89", + "\xB0\xB5" => "\xE6\x9A\x97", + "\xB0\xB6" => "\xE5\xB2\xB8", + "\xB0\xB7" => "\xE8\x83\xBA", + "\xB0\xB8" => "\xE6\xA1\x88", + "\xB0\xB9" => "\xE8\x82\xAE", + "\xB0\xBA" => "\xE6\x98\x82", + "\xB0\xBB" => "\xE7\x9B\x8E", + "\xB0\xBC" => "\xE5\x87\xB9", + "\xB0\xBD" => "\xE6\x95\x96", + "\xB0\xBE" => "\xE7\x86\xAC", + "\xB0\xBF" => "\xE7\xBF\xB1", + "\xB0\xC0" => "\xE8\xA2\x84", + "\xB0\xC1" => "\xE5\x82\xB2", + "\xB0\xC2" => "\xE5\xA5\xA5", + "\xB0\xC3" => "\xE6\x87\x8A", + "\xB0\xC4" => "\xE6\xBE\xB3", + "\xB0\xC5" => "\xE8\x8A\xAD", + "\xB0\xC6" => "\xE6\x8D\x8C", + "\xB0\xC7" => "\xE6\x89\x92", + "\xB0\xC8" => "\xE5\x8F\xAD", + "\xB0\xC9" => "\xE5\x90\xA7", + "\xB0\xCA" => "\xE7\xAC\x86", + "\xB0\xCB" => "\xE5\x85\xAB", + "\xB0\xCC" => "\xE7\x96\xA4", + "\xB0\xCD" => "\xE5\xB7\xB4", + "\xB0\xCE" => "\xE6\x8B\x94", + "\xB0\xCF" => "\xE8\xB7\x8B", + "\xB0\xD0" => "\xE9\x9D\xB6", + "\xB0\xD1" => "\xE6\x8A\x8A", + "\xB0\xD2" => "\xE8\x80\x99", + "\xB0\xD3" => "\xE5\x9D\x9D", + "\xB0\xD4" => "\xE9\x9C\xB8", + "\xB0\xD5" => "\xE7\xBD\xA2", + "\xB0\xD6" => "\xE7\x88\xB8", + "\xB0\xD7" => "\xE7\x99\xBD", + "\xB0\xD8" => "\xE6\x9F\x8F", + "\xB0\xD9" => "\xE7\x99\xBE", + "\xB0\xDA" => "\xE6\x91\x86", + "\xB0\xDB" => "\xE4\xBD\xB0", + "\xB0\xDC" => "\xE8\xB4\xA5", + "\xB0\xDD" => "\xE6\x8B\x9C", + "\xB0\xDE" => "\xE7\xA8\x97", + "\xB0\xDF" => "\xE6\x96\x91", + "\xB0\xE0" => "\xE7\x8F\xAD", + "\xB0\xE1" => "\xE6\x90\xAC", + "\xB0\xE2" => "\xE6\x89\xB3", + "\xB0\xE3" => "\xE8\x88\xAC", + "\xB0\xE4" => "\xE9\xA2\x81", + "\xB0\xE5" => "\xE6\x9D\xBF", + "\xB0\xE6" => "\xE7\x89\x88", + "\xB0\xE7" => "\xE6\x89\xAE", + "\xB0\xE8" => "\xE6\x8B\x8C", + "\xB0\xE9" => "\xE4\xBC\xB4", + "\xB0\xEA" => "\xE7\x93\xA3", + "\xB0\xEB" => "\xE5\x8D\x8A", + "\xB0\xEC" => "\xE5\x8A\x9E", + "\xB0\xED" => "\xE7\xBB\x8A", + "\xB0\xEE" => "\xE9\x82\xA6", + "\xB0\xEF" => "\xE5\xB8\xAE", + "\xB0\xF0" => "\xE6\xA2\x86", + "\xB0\xF1" => "\xE6\xA6\x9C", + "\xB0\xF2" => "\xE8\x86\x80", + "\xB0\xF3" => "\xE7\xBB\x91", + "\xB0\xF4" => "\xE6\xA3\x92", + "\xB0\xF5" => "\xE7\xA3\x85", + "\xB0\xF6" => "\xE8\x9A\x8C", + "\xB0\xF7" => "\xE9\x95\x91", + "\xB0\xF8" => "\xE5\x82\x8D", + "\xB0\xF9" => "\xE8\xB0\xA4", + "\xB0\xFA" => "\xE8\x8B\x9E", + "\xB0\xFB" => "\xE8\x83\x9E", + "\xB0\xFC" => "\xE5\x8C\x85", + "\xB0\xFD" => "\xE8\xA4\x92", + "\xB0\xFE" => "\xE5\x89\xA5", + "\xB1\xA1" => "\xE8\x96\x84", + "\xB1\xA2" => "\xE9\x9B\xB9", + "\xB1\xA3" => "\xE4\xBF\x9D", + "\xB1\xA4" => "\xE5\xA0\xA1", + "\xB1\xA5" => "\xE9\xA5\xB1", + "\xB1\xA6" => "\xE5\xAE\x9D", + "\xB1\xA7" => "\xE6\x8A\xB1", + "\xB1\xA8" => "\xE6\x8A\xA5", + "\xB1\xA9" => "\xE6\x9A\xB4", + "\xB1\xAA" => "\xE8\xB1\xB9", + "\xB1\xAB" => "\xE9\xB2\x8D", + "\xB1\xAC" => "\xE7\x88\x86", + "\xB1\xAD" => "\xE6\x9D\xAF", + "\xB1\xAE" => "\xE7\xA2\x91", + "\xB1\xAF" => "\xE6\x82\xB2", + "\xB1\xB0" => "\xE5\x8D\x91", + "\xB1\xB1" => "\xE5\x8C\x97", + "\xB1\xB2" => "\xE8\xBE\x88", + "\xB1\xB3" => "\xE8\x83\x8C", + "\xB1\xB4" => "\xE8\xB4\x9D", + "\xB1\xB5" => "\xE9\x92\xA1", + "\xB1\xB6" => "\xE5\x80\x8D", + "\xB1\xB7" => "\xE7\x8B\x88", + "\xB1\xB8" => "\xE5\xA4\x87", + "\xB1\xB9" => "\xE6\x83\xAB", + "\xB1\xBA" => "\xE7\x84\x99", + "\xB1\xBB" => "\xE8\xA2\xAB", + "\xB1\xBC" => "\xE5\xA5\x94", + "\xB1\xBD" => "\xE8\x8B\xAF", + "\xB1\xBE" => "\xE6\x9C\xAC", + "\xB1\xBF" => "\xE7\xAC\xA8", + "\xB1\xC0" => "\xE5\xB4\xA9", + "\xB1\xC1" => "\xE7\xBB\xB7", + "\xB1\xC2" => "\xE7\x94\xAD", + "\xB1\xC3" => "\xE6\xB3\xB5", + "\xB1\xC4" => "\xE8\xB9\xA6", + "\xB1\xC5" => "\xE8\xBF\xB8", + "\xB1\xC6" => "\xE9\x80\xBC", + "\xB1\xC7" => "\xE9\xBC\xBB", + "\xB1\xC8" => "\xE6\xAF\x94", + "\xB1\xC9" => "\xE9\x84\x99", + "\xB1\xCA" => "\xE7\xAC\x94", + "\xB1\xCB" => "\xE5\xBD\xBC", + "\xB1\xCC" => "\xE7\xA2\xA7", + "\xB1\xCD" => "\xE8\x93\x96", + "\xB1\xCE" => "\xE8\x94\xBD", + "\xB1\xCF" => "\xE6\xAF\x95", + "\xB1\xD0" => "\xE6\xAF\x99", + "\xB1\xD1" => "\xE6\xAF\x96", + "\xB1\xD2" => "\xE5\xB8\x81", + "\xB1\xD3" => "\xE5\xBA\x87", + "\xB1\xD4" => "\xE7\x97\xB9", + "\xB1\xD5" => "\xE9\x97\xAD", + "\xB1\xD6" => "\xE6\x95\x9D", + "\xB1\xD7" => "\xE5\xBC\x8A", + "\xB1\xD8" => "\xE5\xBF\x85", + "\xB1\xD9" => "\xE8\xBE\x9F", + "\xB1\xDA" => "\xE5\xA3\x81", + "\xB1\xDB" => "\xE8\x87\x82", + "\xB1\xDC" => "\xE9\x81\xBF", + "\xB1\xDD" => "\xE9\x99\x9B", + "\xB1\xDE" => "\xE9\x9E\xAD", + "\xB1\xDF" => "\xE8\xBE\xB9", + "\xB1\xE0" => "\xE7\xBC\x96", + "\xB1\xE1" => "\xE8\xB4\xAC", + "\xB1\xE2" => "\xE6\x89\x81", + "\xB1\xE3" => "\xE4\xBE\xBF", + "\xB1\xE4" => "\xE5\x8F\x98", + "\xB1\xE5" => "\xE5\x8D\x9E", + "\xB1\xE6" => "\xE8\xBE\xA8", + "\xB1\xE7" => "\xE8\xBE\xA9", + "\xB1\xE8" => "\xE8\xBE\xAB", + "\xB1\xE9" => "\xE9\x81\x8D", + "\xB1\xEA" => "\xE6\xA0\x87", + "\xB1\xEB" => "\xE5\xBD\xAA", + "\xB1\xEC" => "\xE8\x86\x98", + "\xB1\xED" => "\xE8\xA1\xA8", + "\xB1\xEE" => "\xE9\xB3\x96", + "\xB1\xEF" => "\xE6\x86\x8B", + "\xB1\xF0" => "\xE5\x88\xAB", + "\xB1\xF1" => "\xE7\x98\xAA", + "\xB1\xF2" => "\xE5\xBD\xAC", + "\xB1\xF3" => "\xE6\x96\x8C", + "\xB1\xF4" => "\xE6\xBF\x92", + "\xB1\xF5" => "\xE6\xBB\xA8", + "\xB1\xF6" => "\xE5\xAE\xBE", + "\xB1\xF7" => "\xE6\x91\x88", + "\xB1\xF8" => "\xE5\x85\xB5", + "\xB1\xF9" => "\xE5\x86\xB0", + "\xB1\xFA" => "\xE6\x9F\x84", + "\xB1\xFB" => "\xE4\xB8\x99", + "\xB1\xFC" => "\xE7\xA7\x89", + "\xB1\xFD" => "\xE9\xA5\xBC", + "\xB1\xFE" => "\xE7\x82\xB3", + "\xB2\xA1" => "\xE7\x97\x85", + "\xB2\xA2" => "\xE5\xB9\xB6", + "\xB2\xA3" => "\xE7\x8E\xBB", + "\xB2\xA4" => "\xE8\x8F\xA0", + "\xB2\xA5" => "\xE6\x92\xAD", + "\xB2\xA6" => "\xE6\x8B\xA8", + "\xB2\xA7" => "\xE9\x92\xB5", + "\xB2\xA8" => "\xE6\xB3\xA2", + "\xB2\xA9" => "\xE5\x8D\x9A", + "\xB2\xAA" => "\xE5\x8B\x83", + "\xB2\xAB" => "\xE6\x90\x8F", + "\xB2\xAC" => "\xE9\x93\x82", + "\xB2\xAD" => "\xE7\xAE\x94", + "\xB2\xAE" => "\xE4\xBC\xAF", + "\xB2\xAF" => "\xE5\xB8\x9B", + "\xB2\xB0" => "\xE8\x88\xB6", + "\xB2\xB1" => "\xE8\x84\x96", + "\xB2\xB2" => "\xE8\x86\x8A", + "\xB2\xB3" => "\xE6\xB8\xA4", + "\xB2\xB4" => "\xE6\xB3\x8A", + "\xB2\xB5" => "\xE9\xA9\xB3", + "\xB2\xB6" => "\xE6\x8D\x95", + "\xB2\xB7" => "\xE5\x8D\x9C", + "\xB2\xB8" => "\xE5\x93\xBA", + "\xB2\xB9" => "\xE8\xA1\xA5", + "\xB2\xBA" => "\xE5\x9F\xA0", + "\xB2\xBB" => "\xE4\xB8\x8D", + "\xB2\xBC" => "\xE5\xB8\x83", + "\xB2\xBD" => "\xE6\xAD\xA5", + "\xB2\xBE" => "\xE7\xB0\xBF", + "\xB2\xBF" => "\xE9\x83\xA8", + "\xB2\xC0" => "\xE6\x80\x96", + "\xB2\xC1" => "\xE6\x93\xA6", + "\xB2\xC2" => "\xE7\x8C\x9C", + "\xB2\xC3" => "\xE8\xA3\x81", + "\xB2\xC4" => "\xE6\x9D\x90", + "\xB2\xC5" => "\xE6\x89\x8D", + "\xB2\xC6" => "\xE8\xB4\xA2", + "\xB2\xC7" => "\xE7\x9D\xAC", + "\xB2\xC8" => "\xE8\xB8\xA9", + "\xB2\xC9" => "\xE9\x87\x87", + "\xB2\xCA" => "\xE5\xBD\xA9", + "\xB2\xCB" => "\xE8\x8F\x9C", + "\xB2\xCC" => "\xE8\x94\xA1", + "\xB2\xCD" => "\xE9\xA4\x90", + "\xB2\xCE" => "\xE5\x8F\x82", + "\xB2\xCF" => "\xE8\x9A\x95", + "\xB2\xD0" => "\xE6\xAE\x8B", + "\xB2\xD1" => "\xE6\x83\xAD", + "\xB2\xD2" => "\xE6\x83\xA8", + "\xB2\xD3" => "\xE7\x81\xBF", + "\xB2\xD4" => "\xE8\x8B\x8D", + "\xB2\xD5" => "\xE8\x88\xB1", + "\xB2\xD6" => "\xE4\xBB\x93", + "\xB2\xD7" => "\xE6\xB2\xA7", + "\xB2\xD8" => "\xE8\x97\x8F", + "\xB2\xD9" => "\xE6\x93\x8D", + "\xB2\xDA" => "\xE7\xB3\x99", + "\xB2\xDB" => "\xE6\xA7\xBD", + "\xB2\xDC" => "\xE6\x9B\xB9", + "\xB2\xDD" => "\xE8\x8D\x89", + "\xB2\xDE" => "\xE5\x8E\x95", + "\xB2\xDF" => "\xE7\xAD\x96", + "\xB2\xE0" => "\xE4\xBE\xA7", + "\xB2\xE1" => "\xE5\x86\x8C", + "\xB2\xE2" => "\xE6\xB5\x8B", + "\xB2\xE3" => "\xE5\xB1\x82", + "\xB2\xE4" => "\xE8\xB9\xAD", + "\xB2\xE5" => "\xE6\x8F\x92", + "\xB2\xE6" => "\xE5\x8F\x89", + "\xB2\xE7" => "\xE8\x8C\xAC", + "\xB2\xE8" => "\xE8\x8C\xB6", + "\xB2\xE9" => "\xE6\x9F\xA5", + "\xB2\xEA" => "\xE7\xA2\xB4", + "\xB2\xEB" => "\xE6\x90\xBD", + "\xB2\xEC" => "\xE5\xAF\x9F", + "\xB2\xED" => "\xE5\xB2\x94", + "\xB2\xEE" => "\xE5\xB7\xAE", + "\xB2\xEF" => "\xE8\xAF\xA7", + "\xB2\xF0" => "\xE6\x8B\x86", + "\xB2\xF1" => "\xE6\x9F\xB4", + "\xB2\xF2" => "\xE8\xB1\xBA", + "\xB2\xF3" => "\xE6\x90\x80", + "\xB2\xF4" => "\xE6\x8E\xBA", + "\xB2\xF5" => "\xE8\x9D\x89", + "\xB2\xF6" => "\xE9\xA6\x8B", + "\xB2\xF7" => "\xE8\xB0\x97", + "\xB2\xF8" => "\xE7\xBC\xA0", + "\xB2\xF9" => "\xE9\x93\xB2", + "\xB2\xFA" => "\xE4\xBA\xA7", + "\xB2\xFB" => "\xE9\x98\x90", + "\xB2\xFC" => "\xE9\xA2\xA4", + "\xB2\xFD" => "\xE6\x98\x8C", + "\xB2\xFE" => "\xE7\x8C\x96", + "\xB3\xA1" => "\xE5\x9C\xBA", + "\xB3\xA2" => "\xE5\xB0\x9D", + "\xB3\xA3" => "\xE5\xB8\xB8", + "\xB3\xA4" => "\xE9\x95\xBF", + "\xB3\xA5" => "\xE5\x81\xBF", + "\xB3\xA6" => "\xE8\x82\xA0", + "\xB3\xA7" => "\xE5\x8E\x82", + "\xB3\xA8" => "\xE6\x95\x9E", + "\xB3\xA9" => "\xE7\x95\x85", + "\xB3\xAA" => "\xE5\x94\xB1", + "\xB3\xAB" => "\xE5\x80\xA1", + "\xB3\xAC" => "\xE8\xB6\x85", + "\xB3\xAD" => "\xE6\x8A\x84", + "\xB3\xAE" => "\xE9\x92\x9E", + "\xB3\xAF" => "\xE6\x9C\x9D", + "\xB3\xB0" => "\xE5\x98\xB2", + "\xB3\xB1" => "\xE6\xBD\xAE", + "\xB3\xB2" => "\xE5\xB7\xA2", + "\xB3\xB3" => "\xE5\x90\xB5", + "\xB3\xB4" => "\xE7\x82\x92", + "\xB3\xB5" => "\xE8\xBD\xA6", + "\xB3\xB6" => "\xE6\x89\xAF", + "\xB3\xB7" => "\xE6\x92\xA4", + "\xB3\xB8" => "\xE6\x8E\xA3", + "\xB3\xB9" => "\xE5\xBD\xBB", + "\xB3\xBA" => "\xE6\xBE\x88", + "\xB3\xBB" => "\xE9\x83\xB4", + "\xB3\xBC" => "\xE8\x87\xA3", + "\xB3\xBD" => "\xE8\xBE\xB0", + "\xB3\xBE" => "\xE5\xB0\x98", + "\xB3\xBF" => "\xE6\x99\xA8", + "\xB3\xC0" => "\xE5\xBF\xB1", + "\xB3\xC1" => "\xE6\xB2\x89", + "\xB3\xC2" => "\xE9\x99\x88", + "\xB3\xC3" => "\xE8\xB6\x81", + "\xB3\xC4" => "\xE8\xA1\xAC", + "\xB3\xC5" => "\xE6\x92\x91", + "\xB3\xC6" => "\xE7\xA7\xB0", + "\xB3\xC7" => "\xE5\x9F\x8E", + "\xB3\xC8" => "\xE6\xA9\x99", + "\xB3\xC9" => "\xE6\x88\x90", + "\xB3\xCA" => "\xE5\x91\x88", + "\xB3\xCB" => "\xE4\xB9\x98", + "\xB3\xCC" => "\xE7\xA8\x8B", + "\xB3\xCD" => "\xE6\x83\xA9", + "\xB3\xCE" => "\xE6\xBE\x84", + "\xB3\xCF" => "\xE8\xAF\x9A", + "\xB3\xD0" => "\xE6\x89\xBF", + "\xB3\xD1" => "\xE9\x80\x9E", + "\xB3\xD2" => "\xE9\xAA\x8B", + "\xB3\xD3" => "\xE7\xA7\xA4", + "\xB3\xD4" => "\xE5\x90\x83", + "\xB3\xD5" => "\xE7\x97\xB4", + "\xB3\xD6" => "\xE6\x8C\x81", + "\xB3\xD7" => "\xE5\x8C\x99", + "\xB3\xD8" => "\xE6\xB1\xA0", + "\xB3\xD9" => "\xE8\xBF\x9F", + "\xB3\xDA" => "\xE5\xBC\x9B", + "\xB3\xDB" => "\xE9\xA9\xB0", + "\xB3\xDC" => "\xE8\x80\xBB", + "\xB3\xDD" => "\xE9\xBD\xBF", + "\xB3\xDE" => "\xE4\xBE\x88", + "\xB3\xDF" => "\xE5\xB0\xBA", + "\xB3\xE0" => "\xE8\xB5\xA4", + "\xB3\xE1" => "\xE7\xBF\x85", + "\xB3\xE2" => "\xE6\x96\xA5", + "\xB3\xE3" => "\xE7\x82\xBD", + "\xB3\xE4" => "\xE5\x85\x85", + "\xB3\xE5" => "\xE5\x86\xB2", + "\xB3\xE6" => "\xE8\x99\xAB", + "\xB3\xE7" => "\xE5\xB4\x87", + "\xB3\xE8" => "\xE5\xAE\xA0", + "\xB3\xE9" => "\xE6\x8A\xBD", + "\xB3\xEA" => "\xE9\x85\xAC", + "\xB3\xEB" => "\xE7\x95\xB4", + "\xB3\xEC" => "\xE8\xB8\x8C", + "\xB3\xED" => "\xE7\xA8\xA0", + "\xB3\xEE" => "\xE6\x84\x81", + "\xB3\xEF" => "\xE7\xAD\xB9", + "\xB3\xF0" => "\xE4\xBB\x87", + "\xB3\xF1" => "\xE7\xBB\xB8", + "\xB3\xF2" => "\xE7\x9E\x85", + "\xB3\xF3" => "\xE4\xB8\x91", + "\xB3\xF4" => "\xE8\x87\xAD", + "\xB3\xF5" => "\xE5\x88\x9D", + "\xB3\xF6" => "\xE5\x87\xBA", + "\xB3\xF7" => "\xE6\xA9\xB1", + "\xB3\xF8" => "\xE5\x8E\xA8", + "\xB3\xF9" => "\xE8\xBA\x87", + "\xB3\xFA" => "\xE9\x94\x84", + "\xB3\xFB" => "\xE9\x9B\x8F", + "\xB3\xFC" => "\xE6\xBB\x81", + "\xB3\xFD" => "\xE9\x99\xA4", + "\xB3\xFE" => "\xE6\xA5\x9A", + "\xB4\xA1" => "\xE7\xA1\x80", + "\xB4\xA2" => "\xE5\x82\xA8", + "\xB4\xA3" => "\xE7\x9F\x97", + "\xB4\xA4" => "\xE6\x90\x90", + "\xB4\xA5" => "\xE8\xA7\xA6", + "\xB4\xA6" => "\xE5\xA4\x84", + "\xB4\xA7" => "\xE6\x8F\xA3", + "\xB4\xA8" => "\xE5\xB7\x9D", + "\xB4\xA9" => "\xE7\xA9\xBF", + "\xB4\xAA" => "\xE6\xA4\xBD", + "\xB4\xAB" => "\xE4\xBC\xA0", + "\xB4\xAC" => "\xE8\x88\xB9", + "\xB4\xAD" => "\xE5\x96\x98", + "\xB4\xAE" => "\xE4\xB8\xB2", + "\xB4\xAF" => "\xE7\x96\xAE", + "\xB4\xB0" => "\xE7\xAA\x97", + "\xB4\xB1" => "\xE5\xB9\xA2", + "\xB4\xB2" => "\xE5\xBA\x8A", + "\xB4\xB3" => "\xE9\x97\xAF", + "\xB4\xB4" => "\xE5\x88\x9B", + "\xB4\xB5" => "\xE5\x90\xB9", + "\xB4\xB6" => "\xE7\x82\x8A", + "\xB4\xB7" => "\xE6\x8D\xB6", + "\xB4\xB8" => "\xE9\x94\xA4", + "\xB4\xB9" => "\xE5\x9E\x82", + "\xB4\xBA" => "\xE6\x98\xA5", + "\xB4\xBB" => "\xE6\xA4\xBF", + "\xB4\xBC" => "\xE9\x86\x87", + "\xB4\xBD" => "\xE5\x94\x87", + "\xB4\xBE" => "\xE6\xB7\xB3", + "\xB4\xBF" => "\xE7\xBA\xAF", + "\xB4\xC0" => "\xE8\xA0\xA2", + "\xB4\xC1" => "\xE6\x88\xB3", + "\xB4\xC2" => "\xE7\xBB\xB0", + "\xB4\xC3" => "\xE7\x96\xB5", + "\xB4\xC4" => "\xE8\x8C\xA8", + "\xB4\xC5" => "\xE7\xA3\x81", + "\xB4\xC6" => "\xE9\x9B\x8C", + "\xB4\xC7" => "\xE8\xBE\x9E", + "\xB4\xC8" => "\xE6\x85\x88", + "\xB4\xC9" => "\xE7\x93\xB7", + "\xB4\xCA" => "\xE8\xAF\x8D", + "\xB4\xCB" => "\xE6\xAD\xA4", + "\xB4\xCC" => "\xE5\x88\xBA", + "\xB4\xCD" => "\xE8\xB5\x90", + "\xB4\xCE" => "\xE6\xAC\xA1", + "\xB4\xCF" => "\xE8\x81\xAA", + "\xB4\xD0" => "\xE8\x91\xB1", + "\xB4\xD1" => "\xE5\x9B\xB1", + "\xB4\xD2" => "\xE5\x8C\x86", + "\xB4\xD3" => "\xE4\xBB\x8E", + "\xB4\xD4" => "\xE4\xB8\x9B", + "\xB4\xD5" => "\xE5\x87\x91", + "\xB4\xD6" => "\xE7\xB2\x97", + "\xB4\xD7" => "\xE9\x86\x8B", + "\xB4\xD8" => "\xE7\xB0\x87", + "\xB4\xD9" => "\xE4\xBF\x83", + "\xB4\xDA" => "\xE8\xB9\xBF", + "\xB4\xDB" => "\xE7\xAF\xA1", + "\xB4\xDC" => "\xE7\xAA\x9C", + "\xB4\xDD" => "\xE6\x91\xA7", + "\xB4\xDE" => "\xE5\xB4\x94", + "\xB4\xDF" => "\xE5\x82\xAC", + "\xB4\xE0" => "\xE8\x84\x86", + "\xB4\xE1" => "\xE7\x98\x81", + "\xB4\xE2" => "\xE7\xB2\xB9", + "\xB4\xE3" => "\xE6\xB7\xAC", + "\xB4\xE4" => "\xE7\xBF\xA0", + "\xB4\xE5" => "\xE6\x9D\x91", + "\xB4\xE6" => "\xE5\xAD\x98", + "\xB4\xE7" => "\xE5\xAF\xB8", + "\xB4\xE8" => "\xE7\xA3\x8B", + "\xB4\xE9" => "\xE6\x92\xAE", + "\xB4\xEA" => "\xE6\x90\x93", + "\xB4\xEB" => "\xE6\x8E\xAA", + "\xB4\xEC" => "\xE6\x8C\xAB", + "\xB4\xED" => "\xE9\x94\x99", + "\xB4\xEE" => "\xE6\x90\xAD", + "\xB4\xEF" => "\xE8\xBE\xBE", + "\xB4\xF0" => "\xE7\xAD\x94", + "\xB4\xF1" => "\xE7\x98\xA9", + "\xB4\xF2" => "\xE6\x89\x93", + "\xB4\xF3" => "\xE5\xA4\xA7", + "\xB4\xF4" => "\xE5\x91\x86", + "\xB4\xF5" => "\xE6\xAD\xB9", + "\xB4\xF6" => "\xE5\x82\xA3", + "\xB4\xF7" => "\xE6\x88\xB4", + "\xB4\xF8" => "\xE5\xB8\xA6", + "\xB4\xF9" => "\xE6\xAE\x86", + "\xB4\xFA" => "\xE4\xBB\xA3", + "\xB4\xFB" => "\xE8\xB4\xB7", + "\xB4\xFC" => "\xE8\xA2\x8B", + "\xB4\xFD" => "\xE5\xBE\x85", + "\xB4\xFE" => "\xE9\x80\xAE", + "\xB5\xA1" => "\xE6\x80\xA0", + "\xB5\xA2" => "\xE8\x80\xBD", + "\xB5\xA3" => "\xE6\x8B\x85", + "\xB5\xA4" => "\xE4\xB8\xB9", + "\xB5\xA5" => "\xE5\x8D\x95", + "\xB5\xA6" => "\xE9\x83\xB8", + "\xB5\xA7" => "\xE6\x8E\xB8", + "\xB5\xA8" => "\xE8\x83\x86", + "\xB5\xA9" => "\xE6\x97\xA6", + "\xB5\xAA" => "\xE6\xB0\xAE", + "\xB5\xAB" => "\xE4\xBD\x86", + "\xB5\xAC" => "\xE6\x83\xAE", + "\xB5\xAD" => "\xE6\xB7\xA1", + "\xB5\xAE" => "\xE8\xAF\x9E", + "\xB5\xAF" => "\xE5\xBC\xB9", + "\xB5\xB0" => "\xE8\x9B\x8B", + "\xB5\xB1" => "\xE5\xBD\x93", + "\xB5\xB2" => "\xE6\x8C\xA1", + "\xB5\xB3" => "\xE5\x85\x9A", + "\xB5\xB4" => "\xE8\x8D\xA1", + "\xB5\xB5" => "\xE6\xA1\xA3", + "\xB5\xB6" => "\xE5\x88\x80", + "\xB5\xB7" => "\xE6\x8D\xA3", + "\xB5\xB8" => "\xE8\xB9\x88", + "\xB5\xB9" => "\xE5\x80\x92", + "\xB5\xBA" => "\xE5\xB2\x9B", + "\xB5\xBB" => "\xE7\xA5\xB7", + "\xB5\xBC" => "\xE5\xAF\xBC", + "\xB5\xBD" => "\xE5\x88\xB0", + "\xB5\xBE" => "\xE7\xA8\xBB", + "\xB5\xBF" => "\xE6\x82\xBC", + "\xB5\xC0" => "\xE9\x81\x93", + "\xB5\xC1" => "\xE7\x9B\x97", + "\xB5\xC2" => "\xE5\xBE\xB7", + "\xB5\xC3" => "\xE5\xBE\x97", + "\xB5\xC4" => "\xE7\x9A\x84", + "\xB5\xC5" => "\xE8\xB9\xAC", + "\xB5\xC6" => "\xE7\x81\xAF", + "\xB5\xC7" => "\xE7\x99\xBB", + "\xB5\xC8" => "\xE7\xAD\x89", + "\xB5\xC9" => "\xE7\x9E\xAA", + "\xB5\xCA" => "\xE5\x87\xB3", + "\xB5\xCB" => "\xE9\x82\x93", + "\xB5\xCC" => "\xE5\xA0\xA4", + "\xB5\xCD" => "\xE4\xBD\x8E", + "\xB5\xCE" => "\xE6\xBB\xB4", + "\xB5\xCF" => "\xE8\xBF\xAA", + "\xB5\xD0" => "\xE6\x95\x8C", + "\xB5\xD1" => "\xE7\xAC\x9B", + "\xB5\xD2" => "\xE7\x8B\x84", + "\xB5\xD3" => "\xE6\xB6\xA4", + "\xB5\xD4" => "\xE7\xBF\x9F", + "\xB5\xD5" => "\xE5\xAB\xA1", + "\xB5\xD6" => "\xE6\x8A\xB5", + "\xB5\xD7" => "\xE5\xBA\x95", + "\xB5\xD8" => "\xE5\x9C\xB0", + "\xB5\xD9" => "\xE8\x92\x82", + "\xB5\xDA" => "\xE7\xAC\xAC", + "\xB5\xDB" => "\xE5\xB8\x9D", + "\xB5\xDC" => "\xE5\xBC\x9F", + "\xB5\xDD" => "\xE9\x80\x92", + "\xB5\xDE" => "\xE7\xBC\x94", + "\xB5\xDF" => "\xE9\xA2\xA0", + "\xB5\xE0" => "\xE6\x8E\x82", + "\xB5\xE1" => "\xE6\xBB\x87", + "\xB5\xE2" => "\xE7\xA2\x98", + "\xB5\xE3" => "\xE7\x82\xB9", + "\xB5\xE4" => "\xE5\x85\xB8", + "\xB5\xE5" => "\xE9\x9D\x9B", + "\xB5\xE6" => "\xE5\x9E\xAB", + "\xB5\xE7" => "\xE7\x94\xB5", + "\xB5\xE8" => "\xE4\xBD\x83", + "\xB5\xE9" => "\xE7\x94\xB8", + "\xB5\xEA" => "\xE5\xBA\x97", + "\xB5\xEB" => "\xE6\x83\xA6", + "\xB5\xEC" => "\xE5\xA5\xA0", + "\xB5\xED" => "\xE6\xB7\x80", + "\xB5\xEE" => "\xE6\xAE\xBF", + "\xB5\xEF" => "\xE7\xA2\x89", + "\xB5\xF0" => "\xE5\x8F\xBC", + "\xB5\xF1" => "\xE9\x9B\x95", + "\xB5\xF2" => "\xE5\x87\x8B", + "\xB5\xF3" => "\xE5\x88\x81", + "\xB5\xF4" => "\xE6\x8E\x89", + "\xB5\xF5" => "\xE5\x90\x8A", + "\xB5\xF6" => "\xE9\x92\x93", + "\xB5\xF7" => "\xE8\xB0\x83", + "\xB5\xF8" => "\xE8\xB7\x8C", + "\xB5\xF9" => "\xE7\x88\xB9", + "\xB5\xFA" => "\xE7\xA2\x9F", + "\xB5\xFB" => "\xE8\x9D\xB6", + "\xB5\xFC" => "\xE8\xBF\xAD", + "\xB5\xFD" => "\xE8\xB0\x8D", + "\xB5\xFE" => "\xE5\x8F\xA0", + "\xB6\xA1" => "\xE4\xB8\x81", + "\xB6\xA2" => "\xE7\x9B\xAF", + "\xB6\xA3" => "\xE5\x8F\xAE", + "\xB6\xA4" => "\xE9\x92\x89", + "\xB6\xA5" => "\xE9\xA1\xB6", + "\xB6\xA6" => "\xE9\xBC\x8E", + "\xB6\xA7" => "\xE9\x94\xAD", + "\xB6\xA8" => "\xE5\xAE\x9A", + "\xB6\xA9" => "\xE8\xAE\xA2", + "\xB6\xAA" => "\xE4\xB8\xA2", + "\xB6\xAB" => "\xE4\xB8\x9C", + "\xB6\xAC" => "\xE5\x86\xAC", + "\xB6\xAD" => "\xE8\x91\xA3", + "\xB6\xAE" => "\xE6\x87\x82", + "\xB6\xAF" => "\xE5\x8A\xA8", + "\xB6\xB0" => "\xE6\xA0\x8B", + "\xB6\xB1" => "\xE4\xBE\x97", + "\xB6\xB2" => "\xE6\x81\xAB", + "\xB6\xB3" => "\xE5\x86\xBB", + "\xB6\xB4" => "\xE6\xB4\x9E", + "\xB6\xB5" => "\xE5\x85\x9C", + "\xB6\xB6" => "\xE6\x8A\x96", + "\xB6\xB7" => "\xE6\x96\x97", + "\xB6\xB8" => "\xE9\x99\xA1", + "\xB6\xB9" => "\xE8\xB1\x86", + "\xB6\xBA" => "\xE9\x80\x97", + "\xB6\xBB" => "\xE7\x97\x98", + "\xB6\xBC" => "\xE9\x83\xBD", + "\xB6\xBD" => "\xE7\x9D\xA3", + "\xB6\xBE" => "\xE6\xAF\x92", + "\xB6\xBF" => "\xE7\x8A\x8A", + "\xB6\xC0" => "\xE7\x8B\xAC", + "\xB6\xC1" => "\xE8\xAF\xBB", + "\xB6\xC2" => "\xE5\xA0\xB5", + "\xB6\xC3" => "\xE7\x9D\xB9", + "\xB6\xC4" => "\xE8\xB5\x8C", + "\xB6\xC5" => "\xE6\x9D\x9C", + "\xB6\xC6" => "\xE9\x95\x80", + "\xB6\xC7" => "\xE8\x82\x9A", + "\xB6\xC8" => "\xE5\xBA\xA6", + "\xB6\xC9" => "\xE6\xB8\xA1", + "\xB6\xCA" => "\xE5\xA6\x92", + "\xB6\xCB" => "\xE7\xAB\xAF", + "\xB6\xCC" => "\xE7\x9F\xAD", + "\xB6\xCD" => "\xE9\x94\xBB", + "\xB6\xCE" => "\xE6\xAE\xB5", + "\xB6\xCF" => "\xE6\x96\xAD", + "\xB6\xD0" => "\xE7\xBC\x8E", + "\xB6\xD1" => "\xE5\xA0\x86", + "\xB6\xD2" => "\xE5\x85\x91", + "\xB6\xD3" => "\xE9\x98\x9F", + "\xB6\xD4" => "\xE5\xAF\xB9", + "\xB6\xD5" => "\xE5\xA2\xA9", + "\xB6\xD6" => "\xE5\x90\xA8", + "\xB6\xD7" => "\xE8\xB9\xB2", + "\xB6\xD8" => "\xE6\x95\xA6", + "\xB6\xD9" => "\xE9\xA1\xBF", + "\xB6\xDA" => "\xE5\x9B\xA4", + "\xB6\xDB" => "\xE9\x92\x9D", + "\xB6\xDC" => "\xE7\x9B\xBE", + "\xB6\xDD" => "\xE9\x81\x81", + "\xB6\xDE" => "\xE6\x8E\x87", + "\xB6\xDF" => "\xE5\x93\x86", + "\xB6\xE0" => "\xE5\xA4\x9A", + "\xB6\xE1" => "\xE5\xA4\xBA", + "\xB6\xE2" => "\xE5\x9E\x9B", + "\xB6\xE3" => "\xE8\xBA\xB2", + "\xB6\xE4" => "\xE6\x9C\xB5", + "\xB6\xE5" => "\xE8\xB7\xBA", + "\xB6\xE6" => "\xE8\x88\xB5", + "\xB6\xE7" => "\xE5\x89\x81", + "\xB6\xE8" => "\xE6\x83\xB0", + "\xB6\xE9" => "\xE5\xA0\x95", + "\xB6\xEA" => "\xE8\x9B\xBE", + "\xB6\xEB" => "\xE5\xB3\xA8", + "\xB6\xEC" => "\xE9\xB9\x85", + "\xB6\xED" => "\xE4\xBF\x84", + "\xB6\xEE" => "\xE9\xA2\x9D", + "\xB6\xEF" => "\xE8\xAE\xB9", + "\xB6\xF0" => "\xE5\xA8\xA5", + "\xB6\xF1" => "\xE6\x81\xB6", + "\xB6\xF2" => "\xE5\x8E\x84", + "\xB6\xF3" => "\xE6\x89\xBC", + "\xB6\xF4" => "\xE9\x81\x8F", + "\xB6\xF5" => "\xE9\x84\x82", + "\xB6\xF6" => "\xE9\xA5\xBF", + "\xB6\xF7" => "\xE6\x81\xA9", + "\xB6\xF8" => "\xE8\x80\x8C", + "\xB6\xF9" => "\xE5\x84\xBF", + "\xB6\xFA" => "\xE8\x80\xB3", + "\xB6\xFB" => "\xE5\xB0\x94", + "\xB6\xFC" => "\xE9\xA5\xB5", + "\xB6\xFD" => "\xE6\xB4\xB1", + "\xB6\xFE" => "\xE4\xBA\x8C", + "\xB7\xA1" => "\xE8\xB4\xB0", + "\xB7\xA2" => "\xE5\x8F\x91", + "\xB7\xA3" => "\xE7\xBD\x9A", + "\xB7\xA4" => "\xE7\xAD\x8F", + "\xB7\xA5" => "\xE4\xBC\x90", + "\xB7\xA6" => "\xE4\xB9\x8F", + "\xB7\xA7" => "\xE9\x98\x80", + "\xB7\xA8" => "\xE6\xB3\x95", + "\xB7\xA9" => "\xE7\x8F\x90", + "\xB7\xAA" => "\xE8\x97\xA9", + "\xB7\xAB" => "\xE5\xB8\x86", + "\xB7\xAC" => "\xE7\x95\xAA", + "\xB7\xAD" => "\xE7\xBF\xBB", + "\xB7\xAE" => "\xE6\xA8\x8A", + "\xB7\xAF" => "\xE7\x9F\xBE", + "\xB7\xB0" => "\xE9\x92\x92", + "\xB7\xB1" => "\xE7\xB9\x81", + "\xB7\xB2" => "\xE5\x87\xA1", + "\xB7\xB3" => "\xE7\x83\xA6", + "\xB7\xB4" => "\xE5\x8F\x8D", + "\xB7\xB5" => "\xE8\xBF\x94", + "\xB7\xB6" => "\xE8\x8C\x83", + "\xB7\xB7" => "\xE8\xB4\xA9", + "\xB7\xB8" => "\xE7\x8A\xAF", + "\xB7\xB9" => "\xE9\xA5\xAD", + "\xB7\xBA" => "\xE6\xB3\x9B", + "\xB7\xBB" => "\xE5\x9D\x8A", + "\xB7\xBC" => "\xE8\x8A\xB3", + "\xB7\xBD" => "\xE6\x96\xB9", + "\xB7\xBE" => "\xE8\x82\xAA", + "\xB7\xBF" => "\xE6\x88\xBF", + "\xB7\xC0" => "\xE9\x98\xB2", + "\xB7\xC1" => "\xE5\xA6\xA8", + "\xB7\xC2" => "\xE4\xBB\xBF", + "\xB7\xC3" => "\xE8\xAE\xBF", + "\xB7\xC4" => "\xE7\xBA\xBA", + "\xB7\xC5" => "\xE6\x94\xBE", + "\xB7\xC6" => "\xE8\x8F\xB2", + "\xB7\xC7" => "\xE9\x9D\x9E", + "\xB7\xC8" => "\xE5\x95\xA1", + "\xB7\xC9" => "\xE9\xA3\x9E", + "\xB7\xCA" => "\xE8\x82\xA5", + "\xB7\xCB" => "\xE5\x8C\xAA", + "\xB7\xCC" => "\xE8\xAF\xBD", + "\xB7\xCD" => "\xE5\x90\xA0", + "\xB7\xCE" => "\xE8\x82\xBA", + "\xB7\xCF" => "\xE5\xBA\x9F", + "\xB7\xD0" => "\xE6\xB2\xB8", + "\xB7\xD1" => "\xE8\xB4\xB9", + "\xB7\xD2" => "\xE8\x8A\xAC", + "\xB7\xD3" => "\xE9\x85\x9A", + "\xB7\xD4" => "\xE5\x90\xA9", + "\xB7\xD5" => "\xE6\xB0\x9B", + "\xB7\xD6" => "\xE5\x88\x86", + "\xB7\xD7" => "\xE7\xBA\xB7", + "\xB7\xD8" => "\xE5\x9D\x9F", + "\xB7\xD9" => "\xE7\x84\x9A", + "\xB7\xDA" => "\xE6\xB1\xBE", + "\xB7\xDB" => "\xE7\xB2\x89", + "\xB7\xDC" => "\xE5\xA5\x8B", + "\xB7\xDD" => "\xE4\xBB\xBD", + "\xB7\xDE" => "\xE5\xBF\xBF", + "\xB7\xDF" => "\xE6\x84\xA4", + "\xB7\xE0" => "\xE7\xB2\xAA", + "\xB7\xE1" => "\xE4\xB8\xB0", + "\xB7\xE2" => "\xE5\xB0\x81", + "\xB7\xE3" => "\xE6\x9E\xAB", + "\xB7\xE4" => "\xE8\x9C\x82", + "\xB7\xE5" => "\xE5\xB3\xB0", + "\xB7\xE6" => "\xE9\x94\x8B", + "\xB7\xE7" => "\xE9\xA3\x8E", + "\xB7\xE8" => "\xE7\x96\xAF", + "\xB7\xE9" => "\xE7\x83\xBD", + "\xB7\xEA" => "\xE9\x80\xA2", + "\xB7\xEB" => "\xE5\x86\xAF", + "\xB7\xEC" => "\xE7\xBC\x9D", + "\xB7\xED" => "\xE8\xAE\xBD", + "\xB7\xEE" => "\xE5\xA5\x89", + "\xB7\xEF" => "\xE5\x87\xA4", + "\xB7\xF0" => "\xE4\xBD\x9B", + "\xB7\xF1" => "\xE5\x90\xA6", + "\xB7\xF2" => "\xE5\xA4\xAB", + "\xB7\xF3" => "\xE6\x95\xB7", + "\xB7\xF4" => "\xE8\x82\xA4", + "\xB7\xF5" => "\xE5\xAD\xB5", + "\xB7\xF6" => "\xE6\x89\xB6", + "\xB7\xF7" => "\xE6\x8B\x82", + "\xB7\xF8" => "\xE8\xBE\x90", + "\xB7\xF9" => "\xE5\xB9\x85", + "\xB7\xFA" => "\xE6\xB0\x9F", + "\xB7\xFB" => "\xE7\xAC\xA6", + "\xB7\xFC" => "\xE4\xBC\x8F", + "\xB7\xFD" => "\xE4\xBF\x98", + "\xB7\xFE" => "\xE6\x9C\x8D", + "\xB8\xA1" => "\xE6\xB5\xAE", + "\xB8\xA2" => "\xE6\xB6\xAA", + "\xB8\xA3" => "\xE7\xA6\x8F", + "\xB8\xA4" => "\xE8\xA2\xB1", + "\xB8\xA5" => "\xE5\xBC\x97", + "\xB8\xA6" => "\xE7\x94\xAB", + "\xB8\xA7" => "\xE6\x8A\x9A", + "\xB8\xA8" => "\xE8\xBE\x85", + "\xB8\xA9" => "\xE4\xBF\xAF", + "\xB8\xAA" => "\xE9\x87\x9C", + "\xB8\xAB" => "\xE6\x96\xA7", + "\xB8\xAC" => "\xE8\x84\xAF", + "\xB8\xAD" => "\xE8\x85\x91", + "\xB8\xAE" => "\xE5\xBA\x9C", + "\xB8\xAF" => "\xE8\x85\x90", + "\xB8\xB0" => "\xE8\xB5\xB4", + "\xB8\xB1" => "\xE5\x89\xAF", + "\xB8\xB2" => "\xE8\xA6\x86", + "\xB8\xB3" => "\xE8\xB5\x8B", + "\xB8\xB4" => "\xE5\xA4\x8D", + "\xB8\xB5" => "\xE5\x82\x85", + "\xB8\xB6" => "\xE4\xBB\x98", + "\xB8\xB7" => "\xE9\x98\x9C", + "\xB8\xB8" => "\xE7\x88\xB6", + "\xB8\xB9" => "\xE8\x85\xB9", + "\xB8\xBA" => "\xE8\xB4\x9F", + "\xB8\xBB" => "\xE5\xAF\x8C", + "\xB8\xBC" => "\xE8\xAE\xA3", + "\xB8\xBD" => "\xE9\x99\x84", + "\xB8\xBE" => "\xE5\xA6\x87", + "\xB8\xBF" => "\xE7\xBC\x9A", + "\xB8\xC0" => "\xE5\x92\x90", + "\xB8\xC1" => "\xE5\x99\xB6", + "\xB8\xC2" => "\xE5\x98\x8E", + "\xB8\xC3" => "\xE8\xAF\xA5", + "\xB8\xC4" => "\xE6\x94\xB9", + "\xB8\xC5" => "\xE6\xA6\x82", + "\xB8\xC6" => "\xE9\x92\x99", + "\xB8\xC7" => "\xE7\x9B\x96", + "\xB8\xC8" => "\xE6\xBA\x89", + "\xB8\xC9" => "\xE5\xB9\xB2", + "\xB8\xCA" => "\xE7\x94\x98", + "\xB8\xCB" => "\xE6\x9D\x86", + "\xB8\xCC" => "\xE6\x9F\x91", + "\xB8\xCD" => "\xE7\xAB\xBF", + "\xB8\xCE" => "\xE8\x82\x9D", + "\xB8\xCF" => "\xE8\xB5\xB6", + "\xB8\xD0" => "\xE6\x84\x9F", + "\xB8\xD1" => "\xE7\xA7\x86", + "\xB8\xD2" => "\xE6\x95\xA2", + "\xB8\xD3" => "\xE8\xB5\xA3", + "\xB8\xD4" => "\xE5\x86\x88", + "\xB8\xD5" => "\xE5\x88\x9A", + "\xB8\xD6" => "\xE9\x92\xA2", + "\xB8\xD7" => "\xE7\xBC\xB8", + "\xB8\xD8" => "\xE8\x82\x9B", + "\xB8\xD9" => "\xE7\xBA\xB2", + "\xB8\xDA" => "\xE5\xB2\x97", + "\xB8\xDB" => "\xE6\xB8\xAF", + "\xB8\xDC" => "\xE6\x9D\xA0", + "\xB8\xDD" => "\xE7\xAF\x99", + "\xB8\xDE" => "\xE7\x9A\x8B", + "\xB8\xDF" => "\xE9\xAB\x98", + "\xB8\xE0" => "\xE8\x86\x8F", + "\xB8\xE1" => "\xE7\xBE\x94", + "\xB8\xE2" => "\xE7\xB3\x95", + "\xB8\xE3" => "\xE6\x90\x9E", + "\xB8\xE4" => "\xE9\x95\x90", + "\xB8\xE5" => "\xE7\xA8\xBF", + "\xB8\xE6" => "\xE5\x91\x8A", + "\xB8\xE7" => "\xE5\x93\xA5", + "\xB8\xE8" => "\xE6\xAD\x8C", + "\xB8\xE9" => "\xE6\x90\x81", + "\xB8\xEA" => "\xE6\x88\x88", + "\xB8\xEB" => "\xE9\xB8\xBD", + "\xB8\xEC" => "\xE8\x83\xB3", + "\xB8\xED" => "\xE7\x96\x99", + "\xB8\xEE" => "\xE5\x89\xB2", + "\xB8\xEF" => "\xE9\x9D\xA9", + "\xB8\xF0" => "\xE8\x91\x9B", + "\xB8\xF1" => "\xE6\xA0\xBC", + "\xB8\xF2" => "\xE8\x9B\xA4", + "\xB8\xF3" => "\xE9\x98\x81", + "\xB8\xF4" => "\xE9\x9A\x94", + "\xB8\xF5" => "\xE9\x93\xAC", + "\xB8\xF6" => "\xE4\xB8\xAA", + "\xB8\xF7" => "\xE5\x90\x84", + "\xB8\xF8" => "\xE7\xBB\x99", + "\xB8\xF9" => "\xE6\xA0\xB9", + "\xB8\xFA" => "\xE8\xB7\x9F", + "\xB8\xFB" => "\xE8\x80\x95", + "\xB8\xFC" => "\xE6\x9B\xB4", + "\xB8\xFD" => "\xE5\xBA\x9A", + "\xB8\xFE" => "\xE7\xBE\xB9", + "\xB9\xA1" => "\xE5\x9F\x82", + "\xB9\xA2" => "\xE8\x80\xBF", + "\xB9\xA3" => "\xE6\xA2\x97", + "\xB9\xA4" => "\xE5\xB7\xA5", + "\xB9\xA5" => "\xE6\x94\xBB", + "\xB9\xA6" => "\xE5\x8A\x9F", + "\xB9\xA7" => "\xE6\x81\xAD", + "\xB9\xA8" => "\xE9\xBE\x9A", + "\xB9\xA9" => "\xE4\xBE\x9B", + "\xB9\xAA" => "\xE8\xBA\xAC", + "\xB9\xAB" => "\xE5\x85\xAC", + "\xB9\xAC" => "\xE5\xAE\xAB", + "\xB9\xAD" => "\xE5\xBC\x93", + "\xB9\xAE" => "\xE5\xB7\xA9", + "\xB9\xAF" => "\xE6\xB1\x9E", + "\xB9\xB0" => "\xE6\x8B\xB1", + "\xB9\xB1" => "\xE8\xB4\xA1", + "\xB9\xB2" => "\xE5\x85\xB1", + "\xB9\xB3" => "\xE9\x92\xA9", + "\xB9\xB4" => "\xE5\x8B\xBE", + "\xB9\xB5" => "\xE6\xB2\x9F", + "\xB9\xB6" => "\xE8\x8B\x9F", + "\xB9\xB7" => "\xE7\x8B\x97", + "\xB9\xB8" => "\xE5\x9E\xA2", + "\xB9\xB9" => "\xE6\x9E\x84", + "\xB9\xBA" => "\xE8\xB4\xAD", + "\xB9\xBB" => "\xE5\xA4\x9F", + "\xB9\xBC" => "\xE8\xBE\x9C", + "\xB9\xBD" => "\xE8\x8F\x87", + "\xB9\xBE" => "\xE5\x92\x95", + "\xB9\xBF" => "\xE7\xAE\x8D", + "\xB9\xC0" => "\xE4\xBC\xB0", + "\xB9\xC1" => "\xE6\xB2\xBD", + "\xB9\xC2" => "\xE5\xAD\xA4", + "\xB9\xC3" => "\xE5\xA7\x91", + "\xB9\xC4" => "\xE9\xBC\x93", + "\xB9\xC5" => "\xE5\x8F\xA4", + "\xB9\xC6" => "\xE8\x9B\x8A", + "\xB9\xC7" => "\xE9\xAA\xA8", + "\xB9\xC8" => "\xE8\xB0\xB7", + "\xB9\xC9" => "\xE8\x82\xA1", + "\xB9\xCA" => "\xE6\x95\x85", + "\xB9\xCB" => "\xE9\xA1\xBE", + "\xB9\xCC" => "\xE5\x9B\xBA", + "\xB9\xCD" => "\xE9\x9B\x87", + "\xB9\xCE" => "\xE5\x88\xAE", + "\xB9\xCF" => "\xE7\x93\x9C", + "\xB9\xD0" => "\xE5\x89\x90", + "\xB9\xD1" => "\xE5\xAF\xA1", + "\xB9\xD2" => "\xE6\x8C\x82", + "\xB9\xD3" => "\xE8\xA4\x82", + "\xB9\xD4" => "\xE4\xB9\x96", + "\xB9\xD5" => "\xE6\x8B\x90", + "\xB9\xD6" => "\xE6\x80\xAA", + "\xB9\xD7" => "\xE6\xA3\xBA", + "\xB9\xD8" => "\xE5\x85\xB3", + "\xB9\xD9" => "\xE5\xAE\x98", + "\xB9\xDA" => "\xE5\x86\xA0", + "\xB9\xDB" => "\xE8\xA7\x82", + "\xB9\xDC" => "\xE7\xAE\xA1", + "\xB9\xDD" => "\xE9\xA6\x86", + "\xB9\xDE" => "\xE7\xBD\x90", + "\xB9\xDF" => "\xE6\x83\xAF", + "\xB9\xE0" => "\xE7\x81\x8C", + "\xB9\xE1" => "\xE8\xB4\xAF", + "\xB9\xE2" => "\xE5\x85\x89", + "\xB9\xE3" => "\xE5\xB9\xBF", + "\xB9\xE4" => "\xE9\x80\x9B", + "\xB9\xE5" => "\xE7\x91\xB0", + "\xB9\xE6" => "\xE8\xA7\x84", + "\xB9\xE7" => "\xE5\x9C\xAD", + "\xB9\xE8" => "\xE7\xA1\x85", + "\xB9\xE9" => "\xE5\xBD\x92", + "\xB9\xEA" => "\xE9\xBE\x9F", + "\xB9\xEB" => "\xE9\x97\xBA", + "\xB9\xEC" => "\xE8\xBD\xA8", + "\xB9\xED" => "\xE9\xAC\xBC", + "\xB9\xEE" => "\xE8\xAF\xA1", + "\xB9\xEF" => "\xE7\x99\xB8", + "\xB9\xF0" => "\xE6\xA1\x82", + "\xB9\xF1" => "\xE6\x9F\x9C", + "\xB9\xF2" => "\xE8\xB7\xAA", + "\xB9\xF3" => "\xE8\xB4\xB5", + "\xB9\xF4" => "\xE5\x88\xBD", + "\xB9\xF5" => "\xE8\xBE\x8A", + "\xB9\xF6" => "\xE6\xBB\x9A", + "\xB9\xF7" => "\xE6\xA3\x8D", + "\xB9\xF8" => "\xE9\x94\x85", + "\xB9\xF9" => "\xE9\x83\xAD", + "\xB9\xFA" => "\xE5\x9B\xBD", + "\xB9\xFB" => "\xE6\x9E\x9C", + "\xB9\xFC" => "\xE8\xA3\xB9", + "\xB9\xFD" => "\xE8\xBF\x87", + "\xB9\xFE" => "\xE5\x93\x88", + "\xBA\xA1" => "\xE9\xAA\xB8", + "\xBA\xA2" => "\xE5\xAD\xA9", + "\xBA\xA3" => "\xE6\xB5\xB7", + "\xBA\xA4" => "\xE6\xB0\xA6", + "\xBA\xA5" => "\xE4\xBA\xA5", + "\xBA\xA6" => "\xE5\xAE\xB3", + "\xBA\xA7" => "\xE9\xAA\x87", + "\xBA\xA8" => "\xE9\x85\xA3", + "\xBA\xA9" => "\xE6\x86\xA8", + "\xBA\xAA" => "\xE9\x82\xAF", + "\xBA\xAB" => "\xE9\x9F\xA9", + "\xBA\xAC" => "\xE5\x90\xAB", + "\xBA\xAD" => "\xE6\xB6\xB5", + "\xBA\xAE" => "\xE5\xAF\x92", + "\xBA\xAF" => "\xE5\x87\xBD", + "\xBA\xB0" => "\xE5\x96\x8A", + "\xBA\xB1" => "\xE7\xBD\x95", + "\xBA\xB2" => "\xE7\xBF\xB0", + "\xBA\xB3" => "\xE6\x92\xBC", + "\xBA\xB4" => "\xE6\x8D\x8D", + "\xBA\xB5" => "\xE6\x97\xB1", + "\xBA\xB6" => "\xE6\x86\xBE", + "\xBA\xB7" => "\xE6\x82\x8D", + "\xBA\xB8" => "\xE7\x84\x8A", + "\xBA\xB9" => "\xE6\xB1\x97", + "\xBA\xBA" => "\xE6\xB1\x89", + "\xBA\xBB" => "\xE5\xA4\xAF", + "\xBA\xBC" => "\xE6\x9D\xAD", + "\xBA\xBD" => "\xE8\x88\xAA", + "\xBA\xBE" => "\xE5\xA3\x95", + "\xBA\xBF" => "\xE5\x9A\x8E", + "\xBA\xC0" => "\xE8\xB1\xAA", + "\xBA\xC1" => "\xE6\xAF\xAB", + "\xBA\xC2" => "\xE9\x83\x9D", + "\xBA\xC3" => "\xE5\xA5\xBD", + "\xBA\xC4" => "\xE8\x80\x97", + "\xBA\xC5" => "\xE5\x8F\xB7", + "\xBA\xC6" => "\xE6\xB5\xA9", + "\xBA\xC7" => "\xE5\x91\xB5", + "\xBA\xC8" => "\xE5\x96\x9D", + "\xBA\xC9" => "\xE8\x8D\xB7", + "\xBA\xCA" => "\xE8\x8F\x8F", + "\xBA\xCB" => "\xE6\xA0\xB8", + "\xBA\xCC" => "\xE7\xA6\xBE", + "\xBA\xCD" => "\xE5\x92\x8C", + "\xBA\xCE" => "\xE4\xBD\x95", + "\xBA\xCF" => "\xE5\x90\x88", + "\xBA\xD0" => "\xE7\x9B\x92", + "\xBA\xD1" => "\xE8\xB2\x89", + "\xBA\xD2" => "\xE9\x98\x82", + "\xBA\xD3" => "\xE6\xB2\xB3", + "\xBA\xD4" => "\xE6\xB6\xB8", + "\xBA\xD5" => "\xE8\xB5\xAB", + "\xBA\xD6" => "\xE8\xA4\x90", + "\xBA\xD7" => "\xE9\xB9\xA4", + "\xBA\xD8" => "\xE8\xB4\xBA", + "\xBA\xD9" => "\xE5\x98\xBF", + "\xBA\xDA" => "\xE9\xBB\x91", + "\xBA\xDB" => "\xE7\x97\x95", + "\xBA\xDC" => "\xE5\xBE\x88", + "\xBA\xDD" => "\xE7\x8B\xA0", + "\xBA\xDE" => "\xE6\x81\xA8", + "\xBA\xDF" => "\xE5\x93\xBC", + "\xBA\xE0" => "\xE4\xBA\xA8", + "\xBA\xE1" => "\xE6\xA8\xAA", + "\xBA\xE2" => "\xE8\xA1\xA1", + "\xBA\xE3" => "\xE6\x81\x92", + "\xBA\xE4" => "\xE8\xBD\xB0", + "\xBA\xE5" => "\xE5\x93\x84", + "\xBA\xE6" => "\xE7\x83\x98", + "\xBA\xE7" => "\xE8\x99\xB9", + "\xBA\xE8" => "\xE9\xB8\xBF", + "\xBA\xE9" => "\xE6\xB4\xAA", + "\xBA\xEA" => "\xE5\xAE\x8F", + "\xBA\xEB" => "\xE5\xBC\x98", + "\xBA\xEC" => "\xE7\xBA\xA2", + "\xBA\xED" => "\xE5\x96\x89", + "\xBA\xEE" => "\xE4\xBE\xAF", + "\xBA\xEF" => "\xE7\x8C\xB4", + "\xBA\xF0" => "\xE5\x90\xBC", + "\xBA\xF1" => "\xE5\x8E\x9A", + "\xBA\xF2" => "\xE5\x80\x99", + "\xBA\xF3" => "\xE5\x90\x8E", + "\xBA\xF4" => "\xE5\x91\xBC", + "\xBA\xF5" => "\xE4\xB9\x8E", + "\xBA\xF6" => "\xE5\xBF\xBD", + "\xBA\xF7" => "\xE7\x91\x9A", + "\xBA\xF8" => "\xE5\xA3\xB6", + "\xBA\xF9" => "\xE8\x91\xAB", + "\xBA\xFA" => "\xE8\x83\xA1", + "\xBA\xFB" => "\xE8\x9D\xB4", + "\xBA\xFC" => "\xE7\x8B\x90", + "\xBA\xFD" => "\xE7\xB3\x8A", + "\xBA\xFE" => "\xE6\xB9\x96", + "\xBB\xA1" => "\xE5\xBC\xA7", + "\xBB\xA2" => "\xE8\x99\x8E", + "\xBB\xA3" => "\xE5\x94\xAC", + "\xBB\xA4" => "\xE6\x8A\xA4", + "\xBB\xA5" => "\xE4\xBA\x92", + "\xBB\xA6" => "\xE6\xB2\xAA", + "\xBB\xA7" => "\xE6\x88\xB7", + "\xBB\xA8" => "\xE8\x8A\xB1", + "\xBB\xA9" => "\xE5\x93\x97", + "\xBB\xAA" => "\xE5\x8D\x8E", + "\xBB\xAB" => "\xE7\x8C\xBE", + "\xBB\xAC" => "\xE6\xBB\x91", + "\xBB\xAD" => "\xE7\x94\xBB", + "\xBB\xAE" => "\xE5\x88\x92", + "\xBB\xAF" => "\xE5\x8C\x96", + "\xBB\xB0" => "\xE8\xAF\x9D", + "\xBB\xB1" => "\xE6\xA7\x90", + "\xBB\xB2" => "\xE5\xBE\x8A", + "\xBB\xB3" => "\xE6\x80\x80", + "\xBB\xB4" => "\xE6\xB7\xAE", + "\xBB\xB5" => "\xE5\x9D\x8F", + "\xBB\xB6" => "\xE6\xAC\xA2", + "\xBB\xB7" => "\xE7\x8E\xAF", + "\xBB\xB8" => "\xE6\xA1\x93", + "\xBB\xB9" => "\xE8\xBF\x98", + "\xBB\xBA" => "\xE7\xBC\x93", + "\xBB\xBB" => "\xE6\x8D\xA2", + "\xBB\xBC" => "\xE6\x82\xA3", + "\xBB\xBD" => "\xE5\x94\xA4", + "\xBB\xBE" => "\xE7\x97\xAA", + "\xBB\xBF" => "\xE8\xB1\xA2", + "\xBB\xC0" => "\xE7\x84\x95", + "\xBB\xC1" => "\xE6\xB6\xA3", + "\xBB\xC2" => "\xE5\xAE\xA6", + "\xBB\xC3" => "\xE5\xB9\xBB", + "\xBB\xC4" => "\xE8\x8D\x92", + "\xBB\xC5" => "\xE6\x85\x8C", + "\xBB\xC6" => "\xE9\xBB\x84", + "\xBB\xC7" => "\xE7\xA3\xBA", + "\xBB\xC8" => "\xE8\x9D\x97", + "\xBB\xC9" => "\xE7\xB0\xA7", + "\xBB\xCA" => "\xE7\x9A\x87", + "\xBB\xCB" => "\xE5\x87\xB0", + "\xBB\xCC" => "\xE6\x83\xB6", + "\xBB\xCD" => "\xE7\x85\x8C", + "\xBB\xCE" => "\xE6\x99\x83", + "\xBB\xCF" => "\xE5\xB9\x8C", + "\xBB\xD0" => "\xE6\x81\x8D", + "\xBB\xD1" => "\xE8\xB0\x8E", + "\xBB\xD2" => "\xE7\x81\xB0", + "\xBB\xD3" => "\xE6\x8C\xA5", + "\xBB\xD4" => "\xE8\xBE\x89", + "\xBB\xD5" => "\xE5\xBE\xBD", + "\xBB\xD6" => "\xE6\x81\xA2", + "\xBB\xD7" => "\xE8\x9B\x94", + "\xBB\xD8" => "\xE5\x9B\x9E", + "\xBB\xD9" => "\xE6\xAF\x81", + "\xBB\xDA" => "\xE6\x82\x94", + "\xBB\xDB" => "\xE6\x85\xA7", + "\xBB\xDC" => "\xE5\x8D\x89", + "\xBB\xDD" => "\xE6\x83\xA0", + "\xBB\xDE" => "\xE6\x99\xA6", + "\xBB\xDF" => "\xE8\xB4\xBF", + "\xBB\xE0" => "\xE7\xA7\xBD", + "\xBB\xE1" => "\xE4\xBC\x9A", + "\xBB\xE2" => "\xE7\x83\xA9", + "\xBB\xE3" => "\xE6\xB1\x87", + "\xBB\xE4" => "\xE8\xAE\xB3", + "\xBB\xE5" => "\xE8\xAF\xB2", + "\xBB\xE6" => "\xE7\xBB\x98", + "\xBB\xE7" => "\xE8\x8D\xA4", + "\xBB\xE8" => "\xE6\x98\x8F", + "\xBB\xE9" => "\xE5\xA9\x9A", + "\xBB\xEA" => "\xE9\xAD\x82", + "\xBB\xEB" => "\xE6\xB5\x91", + "\xBB\xEC" => "\xE6\xB7\xB7", + "\xBB\xED" => "\xE8\xB1\x81", + "\xBB\xEE" => "\xE6\xB4\xBB", + "\xBB\xEF" => "\xE4\xBC\x99", + "\xBB\xF0" => "\xE7\x81\xAB", + "\xBB\xF1" => "\xE8\x8E\xB7", + "\xBB\xF2" => "\xE6\x88\x96", + "\xBB\xF3" => "\xE6\x83\x91", + "\xBB\xF4" => "\xE9\x9C\x8D", + "\xBB\xF5" => "\xE8\xB4\xA7", + "\xBB\xF6" => "\xE7\xA5\xB8", + "\xBB\xF7" => "\xE5\x87\xBB", + "\xBB\xF8" => "\xE5\x9C\xBE", + "\xBB\xF9" => "\xE5\x9F\xBA", + "\xBB\xFA" => "\xE6\x9C\xBA", + "\xBB\xFB" => "\xE7\x95\xB8", + "\xBB\xFC" => "\xE7\xA8\xBD", + "\xBB\xFD" => "\xE7\xA7\xAF", + "\xBB\xFE" => "\xE7\xAE\x95", + "\xBC\xA1" => "\xE8\x82\x8C", + "\xBC\xA2" => "\xE9\xA5\xA5", + "\xBC\xA3" => "\xE8\xBF\xB9", + "\xBC\xA4" => "\xE6\xBF\x80", + "\xBC\xA5" => "\xE8\xAE\xA5", + "\xBC\xA6" => "\xE9\xB8\xA1", + "\xBC\xA7" => "\xE5\xA7\xAC", + "\xBC\xA8" => "\xE7\xBB\xA9", + "\xBC\xA9" => "\xE7\xBC\x89", + "\xBC\xAA" => "\xE5\x90\x89", + "\xBC\xAB" => "\xE6\x9E\x81", + "\xBC\xAC" => "\xE6\xA3\x98", + "\xBC\xAD" => "\xE8\xBE\x91", + "\xBC\xAE" => "\xE7\xB1\x8D", + "\xBC\xAF" => "\xE9\x9B\x86", + "\xBC\xB0" => "\xE5\x8F\x8A", + "\xBC\xB1" => "\xE6\x80\xA5", + "\xBC\xB2" => "\xE7\x96\xBE", + "\xBC\xB3" => "\xE6\xB1\xB2", + "\xBC\xB4" => "\xE5\x8D\xB3", + "\xBC\xB5" => "\xE5\xAB\x89", + "\xBC\xB6" => "\xE7\xBA\xA7", + "\xBC\xB7" => "\xE6\x8C\xA4", + "\xBC\xB8" => "\xE5\x87\xA0", + "\xBC\xB9" => "\xE8\x84\x8A", + "\xBC\xBA" => "\xE5\xB7\xB1", + "\xBC\xBB" => "\xE8\x93\x9F", + "\xBC\xBC" => "\xE6\x8A\x80", + "\xBC\xBD" => "\xE5\x86\x80", + "\xBC\xBE" => "\xE5\xAD\xA3", + "\xBC\xBF" => "\xE4\xBC\x8E", + "\xBC\xC0" => "\xE7\xA5\xAD", + "\xBC\xC1" => "\xE5\x89\x82", + "\xBC\xC2" => "\xE6\x82\xB8", + "\xBC\xC3" => "\xE6\xB5\x8E", + "\xBC\xC4" => "\xE5\xAF\x84", + "\xBC\xC5" => "\xE5\xAF\x82", + "\xBC\xC6" => "\xE8\xAE\xA1", + "\xBC\xC7" => "\xE8\xAE\xB0", + "\xBC\xC8" => "\xE6\x97\xA2", + "\xBC\xC9" => "\xE5\xBF\x8C", + "\xBC\xCA" => "\xE9\x99\x85", + "\xBC\xCB" => "\xE5\xA6\x93", + "\xBC\xCC" => "\xE7\xBB\xA7", + "\xBC\xCD" => "\xE7\xBA\xAA", + "\xBC\xCE" => "\xE5\x98\x89", + "\xBC\xCF" => "\xE6\x9E\xB7", + "\xBC\xD0" => "\xE5\xA4\xB9", + "\xBC\xD1" => "\xE4\xBD\xB3", + "\xBC\xD2" => "\xE5\xAE\xB6", + "\xBC\xD3" => "\xE5\x8A\xA0", + "\xBC\xD4" => "\xE8\x8D\x9A", + "\xBC\xD5" => "\xE9\xA2\x8A", + "\xBC\xD6" => "\xE8\xB4\xBE", + "\xBC\xD7" => "\xE7\x94\xB2", + "\xBC\xD8" => "\xE9\x92\xBE", + "\xBC\xD9" => "\xE5\x81\x87", + "\xBC\xDA" => "\xE7\xA8\xBC", + "\xBC\xDB" => "\xE4\xBB\xB7", + "\xBC\xDC" => "\xE6\x9E\xB6", + "\xBC\xDD" => "\xE9\xA9\xBE", + "\xBC\xDE" => "\xE5\xAB\x81", + "\xBC\xDF" => "\xE6\xAD\xBC", + "\xBC\xE0" => "\xE7\x9B\x91", + "\xBC\xE1" => "\xE5\x9D\x9A", + "\xBC\xE2" => "\xE5\xB0\x96", + "\xBC\xE3" => "\xE7\xAC\xBA", + "\xBC\xE4" => "\xE9\x97\xB4", + "\xBC\xE5" => "\xE7\x85\x8E", + "\xBC\xE6" => "\xE5\x85\xBC", + "\xBC\xE7" => "\xE8\x82\xA9", + "\xBC\xE8" => "\xE8\x89\xB0", + "\xBC\xE9" => "\xE5\xA5\xB8", + "\xBC\xEA" => "\xE7\xBC\x84", + "\xBC\xEB" => "\xE8\x8C\xA7", + "\xBC\xEC" => "\xE6\xA3\x80", + "\xBC\xED" => "\xE6\x9F\xAC", + "\xBC\xEE" => "\xE7\xA2\xB1", + "\xBC\xEF" => "\xE7\xA1\xB7", + "\xBC\xF0" => "\xE6\x8B\xA3", + "\xBC\xF1" => "\xE6\x8D\xA1", + "\xBC\xF2" => "\xE7\xAE\x80", + "\xBC\xF3" => "\xE4\xBF\xAD", + "\xBC\xF4" => "\xE5\x89\xAA", + "\xBC\xF5" => "\xE5\x87\x8F", + "\xBC\xF6" => "\xE8\x8D\x90", + "\xBC\xF7" => "\xE6\xA7\x9B", + "\xBC\xF8" => "\xE9\x89\xB4", + "\xBC\xF9" => "\xE8\xB7\xB5", + "\xBC\xFA" => "\xE8\xB4\xB1", + "\xBC\xFB" => "\xE8\xA7\x81", + "\xBC\xFC" => "\xE9\x94\xAE", + "\xBC\xFD" => "\xE7\xAE\xAD", + "\xBC\xFE" => "\xE4\xBB\xB6", + "\xBD\xA1" => "\xE5\x81\xA5", + "\xBD\xA2" => "\xE8\x88\xB0", + "\xBD\xA3" => "\xE5\x89\x91", + "\xBD\xA4" => "\xE9\xA5\xAF", + "\xBD\xA5" => "\xE6\xB8\x90", + "\xBD\xA6" => "\xE6\xBA\x85", + "\xBD\xA7" => "\xE6\xB6\xA7", + "\xBD\xA8" => "\xE5\xBB\xBA", + "\xBD\xA9" => "\xE5\x83\xB5", + "\xBD\xAA" => "\xE5\xA7\x9C", + "\xBD\xAB" => "\xE5\xB0\x86", + "\xBD\xAC" => "\xE6\xB5\x86", + "\xBD\xAD" => "\xE6\xB1\x9F", + "\xBD\xAE" => "\xE7\x96\x86", + "\xBD\xAF" => "\xE8\x92\x8B", + "\xBD\xB0" => "\xE6\xA1\xA8", + "\xBD\xB1" => "\xE5\xA5\x96", + "\xBD\xB2" => "\xE8\xAE\xB2", + "\xBD\xB3" => "\xE5\x8C\xA0", + "\xBD\xB4" => "\xE9\x85\xB1", + "\xBD\xB5" => "\xE9\x99\x8D", + "\xBD\xB6" => "\xE8\x95\x89", + "\xBD\xB7" => "\xE6\xA4\x92", + "\xBD\xB8" => "\xE7\xA4\x81", + "\xBD\xB9" => "\xE7\x84\xA6", + "\xBD\xBA" => "\xE8\x83\xB6", + "\xBD\xBB" => "\xE4\xBA\xA4", + "\xBD\xBC" => "\xE9\x83\x8A", + "\xBD\xBD" => "\xE6\xB5\x87", + "\xBD\xBE" => "\xE9\xAA\x84", + "\xBD\xBF" => "\xE5\xA8\x87", + "\xBD\xC0" => "\xE5\x9A\xBC", + "\xBD\xC1" => "\xE6\x90\x85", + "\xBD\xC2" => "\xE9\x93\xB0", + "\xBD\xC3" => "\xE7\x9F\xAB", + "\xBD\xC4" => "\xE4\xBE\xA5", + "\xBD\xC5" => "\xE8\x84\x9A", + "\xBD\xC6" => "\xE7\x8B\xA1", + "\xBD\xC7" => "\xE8\xA7\x92", + "\xBD\xC8" => "\xE9\xA5\xBA", + "\xBD\xC9" => "\xE7\xBC\xB4", + "\xBD\xCA" => "\xE7\xBB\x9E", + "\xBD\xCB" => "\xE5\x89\xBF", + "\xBD\xCC" => "\xE6\x95\x99", + "\xBD\xCD" => "\xE9\x85\xB5", + "\xBD\xCE" => "\xE8\xBD\xBF", + "\xBD\xCF" => "\xE8\xBE\x83", + "\xBD\xD0" => "\xE5\x8F\xAB", + "\xBD\xD1" => "\xE7\xAA\x96", + "\xBD\xD2" => "\xE6\x8F\xAD", + "\xBD\xD3" => "\xE6\x8E\xA5", + "\xBD\xD4" => "\xE7\x9A\x86", + "\xBD\xD5" => "\xE7\xA7\xB8", + "\xBD\xD6" => "\xE8\xA1\x97", + "\xBD\xD7" => "\xE9\x98\xB6", + "\xBD\xD8" => "\xE6\x88\xAA", + "\xBD\xD9" => "\xE5\x8A\xAB", + "\xBD\xDA" => "\xE8\x8A\x82", + "\xBD\xDB" => "\xE6\xA1\x94", + "\xBD\xDC" => "\xE6\x9D\xB0", + "\xBD\xDD" => "\xE6\x8D\xB7", + "\xBD\xDE" => "\xE7\x9D\xAB", + "\xBD\xDF" => "\xE7\xAB\xAD", + "\xBD\xE0" => "\xE6\xB4\x81", + "\xBD\xE1" => "\xE7\xBB\x93", + "\xBD\xE2" => "\xE8\xA7\xA3", + "\xBD\xE3" => "\xE5\xA7\x90", + "\xBD\xE4" => "\xE6\x88\x92", + "\xBD\xE5" => "\xE8\x97\x89", + "\xBD\xE6" => "\xE8\x8A\xA5", + "\xBD\xE7" => "\xE7\x95\x8C", + "\xBD\xE8" => "\xE5\x80\x9F", + "\xBD\xE9" => "\xE4\xBB\x8B", + "\xBD\xEA" => "\xE7\x96\xA5", + "\xBD\xEB" => "\xE8\xAF\xAB", + "\xBD\xEC" => "\xE5\xB1\x8A", + "\xBD\xED" => "\xE5\xB7\xBE", + "\xBD\xEE" => "\xE7\xAD\x8B", + "\xBD\xEF" => "\xE6\x96\xA4", + "\xBD\xF0" => "\xE9\x87\x91", + "\xBD\xF1" => "\xE4\xBB\x8A", + "\xBD\xF2" => "\xE6\xB4\xA5", + "\xBD\xF3" => "\xE8\xA5\x9F", + "\xBD\xF4" => "\xE7\xB4\xA7", + "\xBD\xF5" => "\xE9\x94\xA6", + "\xBD\xF6" => "\xE4\xBB\x85", + "\xBD\xF7" => "\xE8\xB0\xA8", + "\xBD\xF8" => "\xE8\xBF\x9B", + "\xBD\xF9" => "\xE9\x9D\xB3", + "\xBD\xFA" => "\xE6\x99\x8B", + "\xBD\xFB" => "\xE7\xA6\x81", + "\xBD\xFC" => "\xE8\xBF\x91", + "\xBD\xFD" => "\xE7\x83\xAC", + "\xBD\xFE" => "\xE6\xB5\xB8", + "\xBE\xA1" => "\xE5\xB0\xBD", + "\xBE\xA2" => "\xE5\x8A\xB2", + "\xBE\xA3" => "\xE8\x8D\x86", + "\xBE\xA4" => "\xE5\x85\xA2", + "\xBE\xA5" => "\xE8\x8C\x8E", + "\xBE\xA6" => "\xE7\x9D\x9B", + "\xBE\xA7" => "\xE6\x99\xB6", + "\xBE\xA8" => "\xE9\xB2\xB8", + "\xBE\xA9" => "\xE4\xBA\xAC", + "\xBE\xAA" => "\xE6\x83\x8A", + "\xBE\xAB" => "\xE7\xB2\xBE", + "\xBE\xAC" => "\xE7\xB2\xB3", + "\xBE\xAD" => "\xE7\xBB\x8F", + "\xBE\xAE" => "\xE4\xBA\x95", + "\xBE\xAF" => "\xE8\xAD\xA6", + "\xBE\xB0" => "\xE6\x99\xAF", + "\xBE\xB1" => "\xE9\xA2\x88", + "\xBE\xB2" => "\xE9\x9D\x99", + "\xBE\xB3" => "\xE5\xA2\x83", + "\xBE\xB4" => "\xE6\x95\xAC", + "\xBE\xB5" => "\xE9\x95\x9C", + "\xBE\xB6" => "\xE5\xBE\x84", + "\xBE\xB7" => "\xE7\x97\x89", + "\xBE\xB8" => "\xE9\x9D\x96", + "\xBE\xB9" => "\xE7\xAB\x9F", + "\xBE\xBA" => "\xE7\xAB\x9E", + "\xBE\xBB" => "\xE5\x87\x80", + "\xBE\xBC" => "\xE7\x82\xAF", + "\xBE\xBD" => "\xE7\xAA\x98", + "\xBE\xBE" => "\xE6\x8F\xAA", + "\xBE\xBF" => "\xE7\xA9\xB6", + "\xBE\xC0" => "\xE7\xBA\xA0", + "\xBE\xC1" => "\xE7\x8E\x96", + "\xBE\xC2" => "\xE9\x9F\xAD", + "\xBE\xC3" => "\xE4\xB9\x85", + "\xBE\xC4" => "\xE7\x81\xB8", + "\xBE\xC5" => "\xE4\xB9\x9D", + "\xBE\xC6" => "\xE9\x85\x92", + "\xBE\xC7" => "\xE5\x8E\xA9", + "\xBE\xC8" => "\xE6\x95\x91", + "\xBE\xC9" => "\xE6\x97\xA7", + "\xBE\xCA" => "\xE8\x87\xBC", + "\xBE\xCB" => "\xE8\x88\x85", + "\xBE\xCC" => "\xE5\x92\x8E", + "\xBE\xCD" => "\xE5\xB0\xB1", + "\xBE\xCE" => "\xE7\x96\x9A", + "\xBE\xCF" => "\xE9\x9E\xA0", + "\xBE\xD0" => "\xE6\x8B\x98", + "\xBE\xD1" => "\xE7\x8B\x99", + "\xBE\xD2" => "\xE7\x96\xBD", + "\xBE\xD3" => "\xE5\xB1\x85", + "\xBE\xD4" => "\xE9\xA9\xB9", + "\xBE\xD5" => "\xE8\x8F\x8A", + "\xBE\xD6" => "\xE5\xB1\x80", + "\xBE\xD7" => "\xE5\x92\x80", + "\xBE\xD8" => "\xE7\x9F\xA9", + "\xBE\xD9" => "\xE4\xB8\xBE", + "\xBE\xDA" => "\xE6\xB2\xAE", + "\xBE\xDB" => "\xE8\x81\x9A", + "\xBE\xDC" => "\xE6\x8B\x92", + "\xBE\xDD" => "\xE6\x8D\xAE", + "\xBE\xDE" => "\xE5\xB7\xA8", + "\xBE\xDF" => "\xE5\x85\xB7", + "\xBE\xE0" => "\xE8\xB7\x9D", + "\xBE\xE1" => "\xE8\xB8\x9E", + "\xBE\xE2" => "\xE9\x94\xAF", + "\xBE\xE3" => "\xE4\xBF\xB1", + "\xBE\xE4" => "\xE5\x8F\xA5", + "\xBE\xE5" => "\xE6\x83\xA7", + "\xBE\xE6" => "\xE7\x82\xAC", + "\xBE\xE7" => "\xE5\x89\xA7", + "\xBE\xE8" => "\xE6\x8D\x90", + "\xBE\xE9" => "\xE9\xB9\x83", + "\xBE\xEA" => "\xE5\xA8\x9F", + "\xBE\xEB" => "\xE5\x80\xA6", + "\xBE\xEC" => "\xE7\x9C\xB7", + "\xBE\xED" => "\xE5\x8D\xB7", + "\xBE\xEE" => "\xE7\xBB\xA2", + "\xBE\xEF" => "\xE6\x92\x85", + "\xBE\xF0" => "\xE6\x94\xAB", + "\xBE\xF1" => "\xE6\x8A\x89", + "\xBE\xF2" => "\xE6\x8E\x98", + "\xBE\xF3" => "\xE5\x80\x94", + "\xBE\xF4" => "\xE7\x88\xB5", + "\xBE\xF5" => "\xE8\xA7\x89", + "\xBE\xF6" => "\xE5\x86\xB3", + "\xBE\xF7" => "\xE8\xAF\x80", + "\xBE\xF8" => "\xE7\xBB\x9D", + "\xBE\xF9" => "\xE5\x9D\x87", + "\xBE\xFA" => "\xE8\x8F\x8C", + "\xBE\xFB" => "\xE9\x92\xA7", + "\xBE\xFC" => "\xE5\x86\x9B", + "\xBE\xFD" => "\xE5\x90\x9B", + "\xBE\xFE" => "\xE5\xB3\xBB", + "\xBF\xA1" => "\xE4\xBF\x8A", + "\xBF\xA2" => "\xE7\xAB\xA3", + "\xBF\xA3" => "\xE6\xB5\x9A", + "\xBF\xA4" => "\xE9\x83\xA1", + "\xBF\xA5" => "\xE9\xAA\x8F", + "\xBF\xA6" => "\xE5\x96\x80", + "\xBF\xA7" => "\xE5\x92\x96", + "\xBF\xA8" => "\xE5\x8D\xA1", + "\xBF\xA9" => "\xE5\x92\xAF", + "\xBF\xAA" => "\xE5\xBC\x80", + "\xBF\xAB" => "\xE6\x8F\xA9", + "\xBF\xAC" => "\xE6\xA5\xB7", + "\xBF\xAD" => "\xE5\x87\xAF", + "\xBF\xAE" => "\xE6\x85\xA8", + "\xBF\xAF" => "\xE5\x88\x8A", + "\xBF\xB0" => "\xE5\xA0\xAA", + "\xBF\xB1" => "\xE5\x8B\x98", + "\xBF\xB2" => "\xE5\x9D\x8E", + "\xBF\xB3" => "\xE7\xA0\x8D", + "\xBF\xB4" => "\xE7\x9C\x8B", + "\xBF\xB5" => "\xE5\xBA\xB7", + "\xBF\xB6" => "\xE6\x85\xB7", + "\xBF\xB7" => "\xE7\xB3\xA0", + "\xBF\xB8" => "\xE6\x89\x9B", + "\xBF\xB9" => "\xE6\x8A\x97", + "\xBF\xBA" => "\xE4\xBA\xA2", + "\xBF\xBB" => "\xE7\x82\x95", + "\xBF\xBC" => "\xE8\x80\x83", + "\xBF\xBD" => "\xE6\x8B\xB7", + "\xBF\xBE" => "\xE7\x83\xA4", + "\xBF\xBF" => "\xE9\x9D\xA0", + "\xBF\xC0" => "\xE5\x9D\xB7", + "\xBF\xC1" => "\xE8\x8B\x9B", + "\xBF\xC2" => "\xE6\x9F\xAF", + "\xBF\xC3" => "\xE6\xA3\xB5", + "\xBF\xC4" => "\xE7\xA3\x95", + "\xBF\xC5" => "\xE9\xA2\x97", + "\xBF\xC6" => "\xE7\xA7\x91", + "\xBF\xC7" => "\xE5\xA3\xB3", + "\xBF\xC8" => "\xE5\x92\xB3", + "\xBF\xC9" => "\xE5\x8F\xAF", + "\xBF\xCA" => "\xE6\xB8\xB4", + "\xBF\xCB" => "\xE5\x85\x8B", + "\xBF\xCC" => "\xE5\x88\xBB", + "\xBF\xCD" => "\xE5\xAE\xA2", + "\xBF\xCE" => "\xE8\xAF\xBE", + "\xBF\xCF" => "\xE8\x82\xAF", + "\xBF\xD0" => "\xE5\x95\x83", + "\xBF\xD1" => "\xE5\x9E\xA6", + "\xBF\xD2" => "\xE6\x81\xB3", + "\xBF\xD3" => "\xE5\x9D\x91", + "\xBF\xD4" => "\xE5\x90\xAD", + "\xBF\xD5" => "\xE7\xA9\xBA", + "\xBF\xD6" => "\xE6\x81\x90", + "\xBF\xD7" => "\xE5\xAD\x94", + "\xBF\xD8" => "\xE6\x8E\xA7", + "\xBF\xD9" => "\xE6\x8A\xA0", + "\xBF\xDA" => "\xE5\x8F\xA3", + "\xBF\xDB" => "\xE6\x89\xA3", + "\xBF\xDC" => "\xE5\xAF\x87", + "\xBF\xDD" => "\xE6\x9E\xAF", + "\xBF\xDE" => "\xE5\x93\xAD", + "\xBF\xDF" => "\xE7\xAA\x9F", + "\xBF\xE0" => "\xE8\x8B\xA6", + "\xBF\xE1" => "\xE9\x85\xB7", + "\xBF\xE2" => "\xE5\xBA\x93", + "\xBF\xE3" => "\xE8\xA3\xA4", + "\xBF\xE4" => "\xE5\xA4\xB8", + "\xBF\xE5" => "\xE5\x9E\xAE", + "\xBF\xE6" => "\xE6\x8C\x8E", + "\xBF\xE7" => "\xE8\xB7\xA8", + "\xBF\xE8" => "\xE8\x83\xAF", + "\xBF\xE9" => "\xE5\x9D\x97", + "\xBF\xEA" => "\xE7\xAD\xB7", + "\xBF\xEB" => "\xE4\xBE\xA9", + "\xBF\xEC" => "\xE5\xBF\xAB", + "\xBF\xED" => "\xE5\xAE\xBD", + "\xBF\xEE" => "\xE6\xAC\xBE", + "\xBF\xEF" => "\xE5\x8C\xA1", + "\xBF\xF0" => "\xE7\xAD\x90", + "\xBF\xF1" => "\xE7\x8B\x82", + "\xBF\xF2" => "\xE6\xA1\x86", + "\xBF\xF3" => "\xE7\x9F\xBF", + "\xBF\xF4" => "\xE7\x9C\xB6", + "\xBF\xF5" => "\xE6\x97\xB7", + "\xBF\xF6" => "\xE5\x86\xB5", + "\xBF\xF7" => "\xE4\xBA\x8F", + "\xBF\xF8" => "\xE7\x9B\x94", + "\xBF\xF9" => "\xE5\xB2\xBF", + "\xBF\xFA" => "\xE7\xAA\xA5", + "\xBF\xFB" => "\xE8\x91\xB5", + "\xBF\xFC" => "\xE5\xA5\x8E", + "\xBF\xFD" => "\xE9\xAD\x81", + "\xBF\xFE" => "\xE5\x82\x80", + "\xC0\xA1" => "\xE9\xA6\x88", + "\xC0\xA2" => "\xE6\x84\xA7", + "\xC0\xA3" => "\xE6\xBA\x83", + "\xC0\xA4" => "\xE5\x9D\xA4", + "\xC0\xA5" => "\xE6\x98\x86", + "\xC0\xA6" => "\xE6\x8D\x86", + "\xC0\xA7" => "\xE5\x9B\xB0", + "\xC0\xA8" => "\xE6\x8B\xAC", + "\xC0\xA9" => "\xE6\x89\xA9", + "\xC0\xAA" => "\xE5\xBB\x93", + "\xC0\xAB" => "\xE9\x98\x94", + "\xC0\xAC" => "\xE5\x9E\x83", + "\xC0\xAD" => "\xE6\x8B\x89", + "\xC0\xAE" => "\xE5\x96\x87", + "\xC0\xAF" => "\xE8\x9C\xA1", + "\xC0\xB0" => "\xE8\x85\x8A", + "\xC0\xB1" => "\xE8\xBE\xA3", + "\xC0\xB2" => "\xE5\x95\xA6", + "\xC0\xB3" => "\xE8\x8E\xB1", + "\xC0\xB4" => "\xE6\x9D\xA5", + "\xC0\xB5" => "\xE8\xB5\x96", + "\xC0\xB6" => "\xE8\x93\x9D", + "\xC0\xB7" => "\xE5\xA9\xAA", + "\xC0\xB8" => "\xE6\xA0\x8F", + "\xC0\xB9" => "\xE6\x8B\xA6", + "\xC0\xBA" => "\xE7\xAF\xAE", + "\xC0\xBB" => "\xE9\x98\x91", + "\xC0\xBC" => "\xE5\x85\xB0", + "\xC0\xBD" => "\xE6\xBE\x9C", + "\xC0\xBE" => "\xE8\xB0\xB0", + "\xC0\xBF" => "\xE6\x8F\xBD", + "\xC0\xC0" => "\xE8\xA7\x88", + "\xC0\xC1" => "\xE6\x87\x92", + "\xC0\xC2" => "\xE7\xBC\x86", + "\xC0\xC3" => "\xE7\x83\x82", + "\xC0\xC4" => "\xE6\xBB\xA5", + "\xC0\xC5" => "\xE7\x90\x85", + "\xC0\xC6" => "\xE6\xA6\x94", + "\xC0\xC7" => "\xE7\x8B\xBC", + "\xC0\xC8" => "\xE5\xBB\x8A", + "\xC0\xC9" => "\xE9\x83\x8E", + "\xC0\xCA" => "\xE6\x9C\x97", + "\xC0\xCB" => "\xE6\xB5\xAA", + "\xC0\xCC" => "\xE6\x8D\x9E", + "\xC0\xCD" => "\xE5\x8A\xB3", + "\xC0\xCE" => "\xE7\x89\xA2", + "\xC0\xCF" => "\xE8\x80\x81", + "\xC0\xD0" => "\xE4\xBD\xAC", + "\xC0\xD1" => "\xE5\xA7\xA5", + "\xC0\xD2" => "\xE9\x85\xAA", + "\xC0\xD3" => "\xE7\x83\x99", + "\xC0\xD4" => "\xE6\xB6\x9D", + "\xC0\xD5" => "\xE5\x8B\x92", + "\xC0\xD6" => "\xE4\xB9\x90", + "\xC0\xD7" => "\xE9\x9B\xB7", + "\xC0\xD8" => "\xE9\x95\xAD", + "\xC0\xD9" => "\xE8\x95\xBE", + "\xC0\xDA" => "\xE7\xA3\x8A", + "\xC0\xDB" => "\xE7\xB4\xAF", + "\xC0\xDC" => "\xE5\x84\xA1", + "\xC0\xDD" => "\xE5\x9E\x92", + "\xC0\xDE" => "\xE6\x93\x82", + "\xC0\xDF" => "\xE8\x82\x8B", + "\xC0\xE0" => "\xE7\xB1\xBB", + "\xC0\xE1" => "\xE6\xB3\xAA", + "\xC0\xE2" => "\xE6\xA3\xB1", + "\xC0\xE3" => "\xE6\xA5\x9E", + "\xC0\xE4" => "\xE5\x86\xB7", + "\xC0\xE5" => "\xE5\x8E\x98", + "\xC0\xE6" => "\xE6\xA2\xA8", + "\xC0\xE7" => "\xE7\x8A\x81", + "\xC0\xE8" => "\xE9\xBB\x8E", + "\xC0\xE9" => "\xE7\xAF\xB1", + "\xC0\xEA" => "\xE7\x8B\xB8", + "\xC0\xEB" => "\xE7\xA6\xBB", + "\xC0\xEC" => "\xE6\xBC\x93", + "\xC0\xED" => "\xE7\x90\x86", + "\xC0\xEE" => "\xE6\x9D\x8E", + "\xC0\xEF" => "\xE9\x87\x8C", + "\xC0\xF0" => "\xE9\xB2\xA4", + "\xC0\xF1" => "\xE7\xA4\xBC", + "\xC0\xF2" => "\xE8\x8E\x89", + "\xC0\xF3" => "\xE8\x8D\x94", + "\xC0\xF4" => "\xE5\x90\x8F", + "\xC0\xF5" => "\xE6\xA0\x97", + "\xC0\xF6" => "\xE4\xB8\xBD", + "\xC0\xF7" => "\xE5\x8E\x89", + "\xC0\xF8" => "\xE5\x8A\xB1", + "\xC0\xF9" => "\xE7\xA0\xBE", + "\xC0\xFA" => "\xE5\x8E\x86", + "\xC0\xFB" => "\xE5\x88\xA9", + "\xC0\xFC" => "\xE5\x82\x88", + "\xC0\xFD" => "\xE4\xBE\x8B", + "\xC0\xFE" => "\xE4\xBF\x90", + "\xC1\xA1" => "\xE7\x97\xA2", + "\xC1\xA2" => "\xE7\xAB\x8B", + "\xC1\xA3" => "\xE7\xB2\x92", + "\xC1\xA4" => "\xE6\xB2\xA5", + "\xC1\xA5" => "\xE9\x9A\xB6", + "\xC1\xA6" => "\xE5\x8A\x9B", + "\xC1\xA7" => "\xE7\x92\x83", + "\xC1\xA8" => "\xE5\x93\xA9", + "\xC1\xA9" => "\xE4\xBF\xA9", + "\xC1\xAA" => "\xE8\x81\x94", + "\xC1\xAB" => "\xE8\x8E\xB2", + "\xC1\xAC" => "\xE8\xBF\x9E", + "\xC1\xAD" => "\xE9\x95\xB0", + "\xC1\xAE" => "\xE5\xBB\x89", + "\xC1\xAF" => "\xE6\x80\x9C", + "\xC1\xB0" => "\xE6\xB6\x9F", + "\xC1\xB1" => "\xE5\xB8\x98", + "\xC1\xB2" => "\xE6\x95\x9B", + "\xC1\xB3" => "\xE8\x84\xB8", + "\xC1\xB4" => "\xE9\x93\xBE", + "\xC1\xB5" => "\xE6\x81\x8B", + "\xC1\xB6" => "\xE7\x82\xBC", + "\xC1\xB7" => "\xE7\xBB\x83", + "\xC1\xB8" => "\xE7\xB2\xAE", + "\xC1\xB9" => "\xE5\x87\x89", + "\xC1\xBA" => "\xE6\xA2\x81", + "\xC1\xBB" => "\xE7\xB2\xB1", + "\xC1\xBC" => "\xE8\x89\xAF", + "\xC1\xBD" => "\xE4\xB8\xA4", + "\xC1\xBE" => "\xE8\xBE\x86", + "\xC1\xBF" => "\xE9\x87\x8F", + "\xC1\xC0" => "\xE6\x99\xBE", + "\xC1\xC1" => "\xE4\xBA\xAE", + "\xC1\xC2" => "\xE8\xB0\x85", + "\xC1\xC3" => "\xE6\x92\xA9", + "\xC1\xC4" => "\xE8\x81\x8A", + "\xC1\xC5" => "\xE5\x83\x9A", + "\xC1\xC6" => "\xE7\x96\x97", + "\xC1\xC7" => "\xE7\x87\x8E", + "\xC1\xC8" => "\xE5\xAF\xA5", + "\xC1\xC9" => "\xE8\xBE\xBD", + "\xC1\xCA" => "\xE6\xBD\xA6", + "\xC1\xCB" => "\xE4\xBA\x86", + "\xC1\xCC" => "\xE6\x92\x82", + "\xC1\xCD" => "\xE9\x95\xA3", + "\xC1\xCE" => "\xE5\xBB\x96", + "\xC1\xCF" => "\xE6\x96\x99", + "\xC1\xD0" => "\xE5\x88\x97", + "\xC1\xD1" => "\xE8\xA3\x82", + "\xC1\xD2" => "\xE7\x83\x88", + "\xC1\xD3" => "\xE5\x8A\xA3", + "\xC1\xD4" => "\xE7\x8C\x8E", + "\xC1\xD5" => "\xE7\x90\xB3", + "\xC1\xD6" => "\xE6\x9E\x97", + "\xC1\xD7" => "\xE7\xA3\xB7", + "\xC1\xD8" => "\xE9\x9C\x96", + "\xC1\xD9" => "\xE4\xB8\xB4", + "\xC1\xDA" => "\xE9\x82\xBB", + "\xC1\xDB" => "\xE9\xB3\x9E", + "\xC1\xDC" => "\xE6\xB7\x8B", + "\xC1\xDD" => "\xE5\x87\x9B", + "\xC1\xDE" => "\xE8\xB5\x81", + "\xC1\xDF" => "\xE5\x90\x9D", + "\xC1\xE0" => "\xE6\x8B\x8E", + "\xC1\xE1" => "\xE7\x8E\xB2", + "\xC1\xE2" => "\xE8\x8F\xB1", + "\xC1\xE3" => "\xE9\x9B\xB6", + "\xC1\xE4" => "\xE9\xBE\x84", + "\xC1\xE5" => "\xE9\x93\x83", + "\xC1\xE6" => "\xE4\xBC\xB6", + "\xC1\xE7" => "\xE7\xBE\x9A", + "\xC1\xE8" => "\xE5\x87\x8C", + "\xC1\xE9" => "\xE7\x81\xB5", + "\xC1\xEA" => "\xE9\x99\xB5", + "\xC1\xEB" => "\xE5\xB2\xAD", + "\xC1\xEC" => "\xE9\xA2\x86", + "\xC1\xED" => "\xE5\x8F\xA6", + "\xC1\xEE" => "\xE4\xBB\xA4", + "\xC1\xEF" => "\xE6\xBA\x9C", + "\xC1\xF0" => "\xE7\x90\x89", + "\xC1\xF1" => "\xE6\xA6\xB4", + "\xC1\xF2" => "\xE7\xA1\xAB", + "\xC1\xF3" => "\xE9\xA6\x8F", + "\xC1\xF4" => "\xE7\x95\x99", + "\xC1\xF5" => "\xE5\x88\x98", + "\xC1\xF6" => "\xE7\x98\xA4", + "\xC1\xF7" => "\xE6\xB5\x81", + "\xC1\xF8" => "\xE6\x9F\xB3", + "\xC1\xF9" => "\xE5\x85\xAD", + "\xC1\xFA" => "\xE9\xBE\x99", + "\xC1\xFB" => "\xE8\x81\x8B", + "\xC1\xFC" => "\xE5\x92\x99", + "\xC1\xFD" => "\xE7\xAC\xBC", + "\xC1\xFE" => "\xE7\xAA\xBF", + "\xC2\xA1" => "\xE9\x9A\x86", + "\xC2\xA2" => "\xE5\x9E\x84", + "\xC2\xA3" => "\xE6\x8B\xA2", + "\xC2\xA4" => "\xE9\x99\x87", + "\xC2\xA5" => "\xE6\xA5\xBC", + "\xC2\xA6" => "\xE5\xA8\x84", + "\xC2\xA7" => "\xE6\x90\x82", + "\xC2\xA8" => "\xE7\xAF\x93", + "\xC2\xA9" => "\xE6\xBC\x8F", + "\xC2\xAA" => "\xE9\x99\x8B", + "\xC2\xAB" => "\xE8\x8A\xA6", + "\xC2\xAC" => "\xE5\x8D\xA2", + "\xC2\xAD" => "\xE9\xA2\x85", + "\xC2\xAE" => "\xE5\xBA\x90", + "\xC2\xAF" => "\xE7\x82\x89", + "\xC2\xB0" => "\xE6\x8E\xB3", + "\xC2\xB1" => "\xE5\x8D\xA4", + "\xC2\xB2" => "\xE8\x99\x8F", + "\xC2\xB3" => "\xE9\xB2\x81", + "\xC2\xB4" => "\xE9\xBA\x93", + "\xC2\xB5" => "\xE7\xA2\x8C", + "\xC2\xB6" => "\xE9\x9C\xB2", + "\xC2\xB7" => "\xE8\xB7\xAF", + "\xC2\xB8" => "\xE8\xB5\x82", + "\xC2\xB9" => "\xE9\xB9\xBF", + "\xC2\xBA" => "\xE6\xBD\x9E", + "\xC2\xBB" => "\xE7\xA6\x84", + "\xC2\xBC" => "\xE5\xBD\x95", + "\xC2\xBD" => "\xE9\x99\x86", + "\xC2\xBE" => "\xE6\x88\xAE", + "\xC2\xBF" => "\xE9\xA9\xB4", + "\xC2\xC0" => "\xE5\x90\x95", + "\xC2\xC1" => "\xE9\x93\x9D", + "\xC2\xC2" => "\xE4\xBE\xA3", + "\xC2\xC3" => "\xE6\x97\x85", + "\xC2\xC4" => "\xE5\xB1\xA5", + "\xC2\xC5" => "\xE5\xB1\xA1", + "\xC2\xC6" => "\xE7\xBC\x95", + "\xC2\xC7" => "\xE8\x99\x91", + "\xC2\xC8" => "\xE6\xB0\xAF", + "\xC2\xC9" => "\xE5\xBE\x8B", + "\xC2\xCA" => "\xE7\x8E\x87", + "\xC2\xCB" => "\xE6\xBB\xA4", + "\xC2\xCC" => "\xE7\xBB\xBF", + "\xC2\xCD" => "\xE5\xB3\xA6", + "\xC2\xCE" => "\xE6\x8C\x9B", + "\xC2\xCF" => "\xE5\xAD\xAA", + "\xC2\xD0" => "\xE6\xBB\xA6", + "\xC2\xD1" => "\xE5\x8D\xB5", + "\xC2\xD2" => "\xE4\xB9\xB1", + "\xC2\xD3" => "\xE6\x8E\xA0", + "\xC2\xD4" => "\xE7\x95\xA5", + "\xC2\xD5" => "\xE6\x8A\xA1", + "\xC2\xD6" => "\xE8\xBD\xAE", + "\xC2\xD7" => "\xE4\xBC\xA6", + "\xC2\xD8" => "\xE4\xBB\x91", + "\xC2\xD9" => "\xE6\xB2\xA6", + "\xC2\xDA" => "\xE7\xBA\xB6", + "\xC2\xDB" => "\xE8\xAE\xBA", + "\xC2\xDC" => "\xE8\x90\x9D", + "\xC2\xDD" => "\xE8\x9E\xBA", + "\xC2\xDE" => "\xE7\xBD\x97", + "\xC2\xDF" => "\xE9\x80\xBB", + "\xC2\xE0" => "\xE9\x94\xA3", + "\xC2\xE1" => "\xE7\xAE\xA9", + "\xC2\xE2" => "\xE9\xAA\xA1", + "\xC2\xE3" => "\xE8\xA3\xB8", + "\xC2\xE4" => "\xE8\x90\xBD", + "\xC2\xE5" => "\xE6\xB4\x9B", + "\xC2\xE6" => "\xE9\xAA\x86", + "\xC2\xE7" => "\xE7\xBB\x9C", + "\xC2\xE8" => "\xE5\xA6\x88", + "\xC2\xE9" => "\xE9\xBA\xBB", + "\xC2\xEA" => "\xE7\x8E\x9B", + "\xC2\xEB" => "\xE7\xA0\x81", + "\xC2\xEC" => "\xE8\x9A\x82", + "\xC2\xED" => "\xE9\xA9\xAC", + "\xC2\xEE" => "\xE9\xAA\x82", + "\xC2\xEF" => "\xE5\x98\x9B", + "\xC2\xF0" => "\xE5\x90\x97", + "\xC2\xF1" => "\xE5\x9F\x8B", + "\xC2\xF2" => "\xE4\xB9\xB0", + "\xC2\xF3" => "\xE9\xBA\xA6", + "\xC2\xF4" => "\xE5\x8D\x96", + "\xC2\xF5" => "\xE8\xBF\x88", + "\xC2\xF6" => "\xE8\x84\x89", + "\xC2\xF7" => "\xE7\x9E\x92", + "\xC2\xF8" => "\xE9\xA6\x92", + "\xC2\xF9" => "\xE8\x9B\xAE", + "\xC2\xFA" => "\xE6\xBB\xA1", + "\xC2\xFB" => "\xE8\x94\x93", + "\xC2\xFC" => "\xE6\x9B\xBC", + "\xC2\xFD" => "\xE6\x85\xA2", + "\xC2\xFE" => "\xE6\xBC\xAB", + "\xC3\xA1" => "\xE8\xB0\xA9", + "\xC3\xA2" => "\xE8\x8A\x92", + "\xC3\xA3" => "\xE8\x8C\xAB", + "\xC3\xA4" => "\xE7\x9B\xB2", + "\xC3\xA5" => "\xE6\xB0\x93", + "\xC3\xA6" => "\xE5\xBF\x99", + "\xC3\xA7" => "\xE8\x8E\xBD", + "\xC3\xA8" => "\xE7\x8C\xAB", + "\xC3\xA9" => "\xE8\x8C\x85", + "\xC3\xAA" => "\xE9\x94\x9A", + "\xC3\xAB" => "\xE6\xAF\x9B", + "\xC3\xAC" => "\xE7\x9F\x9B", + "\xC3\xAD" => "\xE9\x93\x86", + "\xC3\xAE" => "\xE5\x8D\xAF", + "\xC3\xAF" => "\xE8\x8C\x82", + "\xC3\xB0" => "\xE5\x86\x92", + "\xC3\xB1" => "\xE5\xB8\xBD", + "\xC3\xB2" => "\xE8\xB2\x8C", + "\xC3\xB3" => "\xE8\xB4\xB8", + "\xC3\xB4" => "\xE4\xB9\x88", + "\xC3\xB5" => "\xE7\x8E\xAB", + "\xC3\xB6" => "\xE6\x9E\x9A", + "\xC3\xB7" => "\xE6\xA2\x85", + "\xC3\xB8" => "\xE9\x85\xB6", + "\xC3\xB9" => "\xE9\x9C\x89", + "\xC3\xBA" => "\xE7\x85\xA4", + "\xC3\xBB" => "\xE6\xB2\xA1", + "\xC3\xBC" => "\xE7\x9C\x89", + "\xC3\xBD" => "\xE5\xAA\x92", + "\xC3\xBE" => "\xE9\x95\x81", + "\xC3\xBF" => "\xE6\xAF\x8F", + "\xC3\xC0" => "\xE7\xBE\x8E", + "\xC3\xC1" => "\xE6\x98\xA7", + "\xC3\xC2" => "\xE5\xAF\x90", + "\xC3\xC3" => "\xE5\xA6\xB9", + "\xC3\xC4" => "\xE5\xAA\x9A", + "\xC3\xC5" => "\xE9\x97\xA8", + "\xC3\xC6" => "\xE9\x97\xB7", + "\xC3\xC7" => "\xE4\xBB\xAC", + "\xC3\xC8" => "\xE8\x90\x8C", + "\xC3\xC9" => "\xE8\x92\x99", + "\xC3\xCA" => "\xE6\xAA\xAC", + "\xC3\xCB" => "\xE7\x9B\x9F", + "\xC3\xCC" => "\xE9\x94\xB0", + "\xC3\xCD" => "\xE7\x8C\x9B", + "\xC3\xCE" => "\xE6\xA2\xA6", + "\xC3\xCF" => "\xE5\xAD\x9F", + "\xC3\xD0" => "\xE7\x9C\xAF", + "\xC3\xD1" => "\xE9\x86\x9A", + "\xC3\xD2" => "\xE9\x9D\xA1", + "\xC3\xD3" => "\xE7\xB3\x9C", + "\xC3\xD4" => "\xE8\xBF\xB7", + "\xC3\xD5" => "\xE8\xB0\x9C", + "\xC3\xD6" => "\xE5\xBC\xA5", + "\xC3\xD7" => "\xE7\xB1\xB3", + "\xC3\xD8" => "\xE7\xA7\x98", + "\xC3\xD9" => "\xE8\xA7\x85", + "\xC3\xDA" => "\xE6\xB3\x8C", + "\xC3\xDB" => "\xE8\x9C\x9C", + "\xC3\xDC" => "\xE5\xAF\x86", + "\xC3\xDD" => "\xE5\xB9\x82", + "\xC3\xDE" => "\xE6\xA3\x89", + "\xC3\xDF" => "\xE7\x9C\xA0", + "\xC3\xE0" => "\xE7\xBB\xB5", + "\xC3\xE1" => "\xE5\x86\x95", + "\xC3\xE2" => "\xE5\x85\x8D", + "\xC3\xE3" => "\xE5\x8B\x89", + "\xC3\xE4" => "\xE5\xA8\xA9", + "\xC3\xE5" => "\xE7\xBC\x85", + "\xC3\xE6" => "\xE9\x9D\xA2", + "\xC3\xE7" => "\xE8\x8B\x97", + "\xC3\xE8" => "\xE6\x8F\x8F", + "\xC3\xE9" => "\xE7\x9E\x84", + "\xC3\xEA" => "\xE8\x97\x90", + "\xC3\xEB" => "\xE7\xA7\x92", + "\xC3\xEC" => "\xE6\xB8\xBA", + "\xC3\xED" => "\xE5\xBA\x99", + "\xC3\xEE" => "\xE5\xA6\x99", + "\xC3\xEF" => "\xE8\x94\x91", + "\xC3\xF0" => "\xE7\x81\xAD", + "\xC3\xF1" => "\xE6\xB0\x91", + "\xC3\xF2" => "\xE6\x8A\xBF", + "\xC3\xF3" => "\xE7\x9A\xBF", + "\xC3\xF4" => "\xE6\x95\x8F", + "\xC3\xF5" => "\xE6\x82\xAF", + "\xC3\xF6" => "\xE9\x97\xBD", + "\xC3\xF7" => "\xE6\x98\x8E", + "\xC3\xF8" => "\xE8\x9E\x9F", + "\xC3\xF9" => "\xE9\xB8\xA3", + "\xC3\xFA" => "\xE9\x93\xAD", + "\xC3\xFB" => "\xE5\x90\x8D", + "\xC3\xFC" => "\xE5\x91\xBD", + "\xC3\xFD" => "\xE8\xB0\xAC", + "\xC3\xFE" => "\xE6\x91\xB8", + "\xC4\xA1" => "\xE6\x91\xB9", + "\xC4\xA2" => "\xE8\x98\x91", + "\xC4\xA3" => "\xE6\xA8\xA1", + "\xC4\xA4" => "\xE8\x86\x9C", + "\xC4\xA5" => "\xE7\xA3\xA8", + "\xC4\xA6" => "\xE6\x91\xA9", + "\xC4\xA7" => "\xE9\xAD\x94", + "\xC4\xA8" => "\xE6\x8A\xB9", + "\xC4\xA9" => "\xE6\x9C\xAB", + "\xC4\xAA" => "\xE8\x8E\xAB", + "\xC4\xAB" => "\xE5\xA2\xA8", + "\xC4\xAC" => "\xE9\xBB\x98", + "\xC4\xAD" => "\xE6\xB2\xAB", + "\xC4\xAE" => "\xE6\xBC\xA0", + "\xC4\xAF" => "\xE5\xAF\x9E", + "\xC4\xB0" => "\xE9\x99\x8C", + "\xC4\xB1" => "\xE8\xB0\x8B", + "\xC4\xB2" => "\xE7\x89\x9F", + "\xC4\xB3" => "\xE6\x9F\x90", + "\xC4\xB4" => "\xE6\x8B\x87", + "\xC4\xB5" => "\xE7\x89\xA1", + "\xC4\xB6" => "\xE4\xBA\xA9", + "\xC4\xB7" => "\xE5\xA7\x86", + "\xC4\xB8" => "\xE6\xAF\x8D", + "\xC4\xB9" => "\xE5\xA2\x93", + "\xC4\xBA" => "\xE6\x9A\xAE", + "\xC4\xBB" => "\xE5\xB9\x95", + "\xC4\xBC" => "\xE5\x8B\x9F", + "\xC4\xBD" => "\xE6\x85\x95", + "\xC4\xBE" => "\xE6\x9C\xA8", + "\xC4\xBF" => "\xE7\x9B\xAE", + "\xC4\xC0" => "\xE7\x9D\xA6", + "\xC4\xC1" => "\xE7\x89\xA7", + "\xC4\xC2" => "\xE7\xA9\x86", + "\xC4\xC3" => "\xE6\x8B\xBF", + "\xC4\xC4" => "\xE5\x93\xAA", + "\xC4\xC5" => "\xE5\x91\x90", + "\xC4\xC6" => "\xE9\x92\xA0", + "\xC4\xC7" => "\xE9\x82\xA3", + "\xC4\xC8" => "\xE5\xA8\x9C", + "\xC4\xC9" => "\xE7\xBA\xB3", + "\xC4\xCA" => "\xE6\xB0\x96", + "\xC4\xCB" => "\xE4\xB9\x83", + "\xC4\xCC" => "\xE5\xA5\xB6", + "\xC4\xCD" => "\xE8\x80\x90", + "\xC4\xCE" => "\xE5\xA5\x88", + "\xC4\xCF" => "\xE5\x8D\x97", + "\xC4\xD0" => "\xE7\x94\xB7", + "\xC4\xD1" => "\xE9\x9A\xBE", + "\xC4\xD2" => "\xE5\x9B\x8A", + "\xC4\xD3" => "\xE6\x8C\xA0", + "\xC4\xD4" => "\xE8\x84\x91", + "\xC4\xD5" => "\xE6\x81\xBC", + "\xC4\xD6" => "\xE9\x97\xB9", + "\xC4\xD7" => "\xE6\xB7\x96", + "\xC4\xD8" => "\xE5\x91\xA2", + "\xC4\xD9" => "\xE9\xA6\x81", + "\xC4\xDA" => "\xE5\x86\x85", + "\xC4\xDB" => "\xE5\xAB\xA9", + "\xC4\xDC" => "\xE8\x83\xBD", + "\xC4\xDD" => "\xE5\xA6\xAE", + "\xC4\xDE" => "\xE9\x9C\x93", + "\xC4\xDF" => "\xE5\x80\xAA", + "\xC4\xE0" => "\xE6\xB3\xA5", + "\xC4\xE1" => "\xE5\xB0\xBC", + "\xC4\xE2" => "\xE6\x8B\x9F", + "\xC4\xE3" => "\xE4\xBD\xA0", + "\xC4\xE4" => "\xE5\x8C\xBF", + "\xC4\xE5" => "\xE8\x85\xBB", + "\xC4\xE6" => "\xE9\x80\x86", + "\xC4\xE7" => "\xE6\xBA\xBA", + "\xC4\xE8" => "\xE8\x94\xAB", + "\xC4\xE9" => "\xE6\x8B\x88", + "\xC4\xEA" => "\xE5\xB9\xB4", + "\xC4\xEB" => "\xE7\xA2\xBE", + "\xC4\xEC" => "\xE6\x92\xB5", + "\xC4\xED" => "\xE6\x8D\xBB", + "\xC4\xEE" => "\xE5\xBF\xB5", + "\xC4\xEF" => "\xE5\xA8\x98", + "\xC4\xF0" => "\xE9\x85\xBF", + "\xC4\xF1" => "\xE9\xB8\x9F", + "\xC4\xF2" => "\xE5\xB0\xBF", + "\xC4\xF3" => "\xE6\x8D\x8F", + "\xC4\xF4" => "\xE8\x81\x82", + "\xC4\xF5" => "\xE5\xAD\xBD", + "\xC4\xF6" => "\xE5\x95\xAE", + "\xC4\xF7" => "\xE9\x95\x8A", + "\xC4\xF8" => "\xE9\x95\x8D", + "\xC4\xF9" => "\xE6\xB6\x85", + "\xC4\xFA" => "\xE6\x82\xA8", + "\xC4\xFB" => "\xE6\x9F\xA0", + "\xC4\xFC" => "\xE7\x8B\x9E", + "\xC4\xFD" => "\xE5\x87\x9D", + "\xC4\xFE" => "\xE5\xAE\x81", + "\xC5\xA1" => "\xE6\x8B\xA7", + "\xC5\xA2" => "\xE6\xB3\x9E", + "\xC5\xA3" => "\xE7\x89\x9B", + "\xC5\xA4" => "\xE6\x89\xAD", + "\xC5\xA5" => "\xE9\x92\xAE", + "\xC5\xA6" => "\xE7\xBA\xBD", + "\xC5\xA7" => "\xE8\x84\x93", + "\xC5\xA8" => "\xE6\xB5\x93", + "\xC5\xA9" => "\xE5\x86\x9C", + "\xC5\xAA" => "\xE5\xBC\x84", + "\xC5\xAB" => "\xE5\xA5\xB4", + "\xC5\xAC" => "\xE5\x8A\xAA", + "\xC5\xAD" => "\xE6\x80\x92", + "\xC5\xAE" => "\xE5\xA5\xB3", + "\xC5\xAF" => "\xE6\x9A\x96", + "\xC5\xB0" => "\xE8\x99\x90", + "\xC5\xB1" => "\xE7\x96\x9F", + "\xC5\xB2" => "\xE6\x8C\xAA", + "\xC5\xB3" => "\xE6\x87\xA6", + "\xC5\xB4" => "\xE7\xB3\xAF", + "\xC5\xB5" => "\xE8\xAF\xBA", + "\xC5\xB6" => "\xE5\x93\xA6", + "\xC5\xB7" => "\xE6\xAC\xA7", + "\xC5\xB8" => "\xE9\xB8\xA5", + "\xC5\xB9" => "\xE6\xAE\xB4", + "\xC5\xBA" => "\xE8\x97\x95", + "\xC5\xBB" => "\xE5\x91\x95", + "\xC5\xBC" => "\xE5\x81\xB6", + "\xC5\xBD" => "\xE6\xB2\xA4", + "\xC5\xBE" => "\xE5\x95\xAA", + "\xC5\xBF" => "\xE8\xB6\xB4", + "\xC5\xC0" => "\xE7\x88\xAC", + "\xC5\xC1" => "\xE5\xB8\x95", + "\xC5\xC2" => "\xE6\x80\x95", + "\xC5\xC3" => "\xE7\x90\xB6", + "\xC5\xC4" => "\xE6\x8B\x8D", + "\xC5\xC5" => "\xE6\x8E\x92", + "\xC5\xC6" => "\xE7\x89\x8C", + "\xC5\xC7" => "\xE5\xBE\x98", + "\xC5\xC8" => "\xE6\xB9\x83", + "\xC5\xC9" => "\xE6\xB4\xBE", + "\xC5\xCA" => "\xE6\x94\x80", + "\xC5\xCB" => "\xE6\xBD\x98", + "\xC5\xCC" => "\xE7\x9B\x98", + "\xC5\xCD" => "\xE7\xA3\x90", + "\xC5\xCE" => "\xE7\x9B\xBC", + "\xC5\xCF" => "\xE7\x95\x94", + "\xC5\xD0" => "\xE5\x88\xA4", + "\xC5\xD1" => "\xE5\x8F\x9B", + "\xC5\xD2" => "\xE4\xB9\x93", + "\xC5\xD3" => "\xE5\xBA\x9E", + "\xC5\xD4" => "\xE6\x97\x81", + "\xC5\xD5" => "\xE8\x80\xAA", + "\xC5\xD6" => "\xE8\x83\x96", + "\xC5\xD7" => "\xE6\x8A\x9B", + "\xC5\xD8" => "\xE5\x92\x86", + "\xC5\xD9" => "\xE5\x88\xA8", + "\xC5\xDA" => "\xE7\x82\xAE", + "\xC5\xDB" => "\xE8\xA2\x8D", + "\xC5\xDC" => "\xE8\xB7\x91", + "\xC5\xDD" => "\xE6\xB3\xA1", + "\xC5\xDE" => "\xE5\x91\xB8", + "\xC5\xDF" => "\xE8\x83\x9A", + "\xC5\xE0" => "\xE5\x9F\xB9", + "\xC5\xE1" => "\xE8\xA3\xB4", + "\xC5\xE2" => "\xE8\xB5\x94", + "\xC5\xE3" => "\xE9\x99\xAA", + "\xC5\xE4" => "\xE9\x85\x8D", + "\xC5\xE5" => "\xE4\xBD\xA9", + "\xC5\xE6" => "\xE6\xB2\x9B", + "\xC5\xE7" => "\xE5\x96\xB7", + "\xC5\xE8" => "\xE7\x9B\x86", + "\xC5\xE9" => "\xE7\xA0\xB0", + "\xC5\xEA" => "\xE6\x8A\xA8", + "\xC5\xEB" => "\xE7\x83\xB9", + "\xC5\xEC" => "\xE6\xBE\x8E", + "\xC5\xED" => "\xE5\xBD\xAD", + "\xC5\xEE" => "\xE8\x93\xAC", + "\xC5\xEF" => "\xE6\xA3\x9A", + "\xC5\xF0" => "\xE7\xA1\xBC", + "\xC5\xF1" => "\xE7\xAF\xB7", + "\xC5\xF2" => "\xE8\x86\xA8", + "\xC5\xF3" => "\xE6\x9C\x8B", + "\xC5\xF4" => "\xE9\xB9\x8F", + "\xC5\xF5" => "\xE6\x8D\xA7", + "\xC5\xF6" => "\xE7\xA2\xB0", + "\xC5\xF7" => "\xE5\x9D\xAF", + "\xC5\xF8" => "\xE7\xA0\x92", + "\xC5\xF9" => "\xE9\x9C\xB9", + "\xC5\xFA" => "\xE6\x89\xB9", + "\xC5\xFB" => "\xE6\x8A\xAB", + "\xC5\xFC" => "\xE5\x8A\x88", + "\xC5\xFD" => "\xE7\x90\xB5", + "\xC5\xFE" => "\xE6\xAF\x97", + "\xC6\xA1" => "\xE5\x95\xA4", + "\xC6\xA2" => "\xE8\x84\xBE", + "\xC6\xA3" => "\xE7\x96\xB2", + "\xC6\xA4" => "\xE7\x9A\xAE", + "\xC6\xA5" => "\xE5\x8C\xB9", + "\xC6\xA6" => "\xE7\x97\x9E", + "\xC6\xA7" => "\xE5\x83\xBB", + "\xC6\xA8" => "\xE5\xB1\x81", + "\xC6\xA9" => "\xE8\xAD\xAC", + "\xC6\xAA" => "\xE7\xAF\x87", + "\xC6\xAB" => "\xE5\x81\x8F", + "\xC6\xAC" => "\xE7\x89\x87", + "\xC6\xAD" => "\xE9\xAA\x97", + "\xC6\xAE" => "\xE9\xA3\x98", + "\xC6\xAF" => "\xE6\xBC\x82", + "\xC6\xB0" => "\xE7\x93\xA2", + "\xC6\xB1" => "\xE7\xA5\xA8", + "\xC6\xB2" => "\xE6\x92\x87", + "\xC6\xB3" => "\xE7\x9E\xA5", + "\xC6\xB4" => "\xE6\x8B\xBC", + "\xC6\xB5" => "\xE9\xA2\x91", + "\xC6\xB6" => "\xE8\xB4\xAB", + "\xC6\xB7" => "\xE5\x93\x81", + "\xC6\xB8" => "\xE8\x81\x98", + "\xC6\xB9" => "\xE4\xB9\x92", + "\xC6\xBA" => "\xE5\x9D\xAA", + "\xC6\xBB" => "\xE8\x8B\xB9", + "\xC6\xBC" => "\xE8\x90\x8D", + "\xC6\xBD" => "\xE5\xB9\xB3", + "\xC6\xBE" => "\xE5\x87\xAD", + "\xC6\xBF" => "\xE7\x93\xB6", + "\xC6\xC0" => "\xE8\xAF\x84", + "\xC6\xC1" => "\xE5\xB1\x8F", + "\xC6\xC2" => "\xE5\x9D\xA1", + "\xC6\xC3" => "\xE6\xB3\xBC", + "\xC6\xC4" => "\xE9\xA2\x87", + "\xC6\xC5" => "\xE5\xA9\x86", + "\xC6\xC6" => "\xE7\xA0\xB4", + "\xC6\xC7" => "\xE9\xAD\x84", + "\xC6\xC8" => "\xE8\xBF\xAB", + "\xC6\xC9" => "\xE7\xB2\x95", + "\xC6\xCA" => "\xE5\x89\x96", + "\xC6\xCB" => "\xE6\x89\x91", + "\xC6\xCC" => "\xE9\x93\xBA", + "\xC6\xCD" => "\xE4\xBB\x86", + "\xC6\xCE" => "\xE8\x8E\x86", + "\xC6\xCF" => "\xE8\x91\xA1", + "\xC6\xD0" => "\xE8\x8F\xA9", + "\xC6\xD1" => "\xE8\x92\xB2", + "\xC6\xD2" => "\xE5\x9F\x94", + "\xC6\xD3" => "\xE6\x9C\xB4", + "\xC6\xD4" => "\xE5\x9C\x83", + "\xC6\xD5" => "\xE6\x99\xAE", + "\xC6\xD6" => "\xE6\xB5\xA6", + "\xC6\xD7" => "\xE8\xB0\xB1", + "\xC6\xD8" => "\xE6\x9B\x9D", + "\xC6\xD9" => "\xE7\x80\x91", + "\xC6\xDA" => "\xE6\x9C\x9F", + "\xC6\xDB" => "\xE6\xAC\xBA", + "\xC6\xDC" => "\xE6\xA0\x96", + "\xC6\xDD" => "\xE6\x88\x9A", + "\xC6\xDE" => "\xE5\xA6\xBB", + "\xC6\xDF" => "\xE4\xB8\x83", + "\xC6\xE0" => "\xE5\x87\x84", + "\xC6\xE1" => "\xE6\xBC\x86", + "\xC6\xE2" => "\xE6\x9F\x92", + "\xC6\xE3" => "\xE6\xB2\x8F", + "\xC6\xE4" => "\xE5\x85\xB6", + "\xC6\xE5" => "\xE6\xA3\x8B", + "\xC6\xE6" => "\xE5\xA5\x87", + "\xC6\xE7" => "\xE6\xAD\xA7", + "\xC6\xE8" => "\xE7\x95\xA6", + "\xC6\xE9" => "\xE5\xB4\x8E", + "\xC6\xEA" => "\xE8\x84\x90", + "\xC6\xEB" => "\xE9\xBD\x90", + "\xC6\xEC" => "\xE6\x97\x97", + "\xC6\xED" => "\xE7\xA5\x88", + "\xC6\xEE" => "\xE7\xA5\x81", + "\xC6\xEF" => "\xE9\xAA\x91", + "\xC6\xF0" => "\xE8\xB5\xB7", + "\xC6\xF1" => "\xE5\xB2\x82", + "\xC6\xF2" => "\xE4\xB9\x9E", + "\xC6\xF3" => "\xE4\xBC\x81", + "\xC6\xF4" => "\xE5\x90\xAF", + "\xC6\xF5" => "\xE5\xA5\x91", + "\xC6\xF6" => "\xE7\xA0\x8C", + "\xC6\xF7" => "\xE5\x99\xA8", + "\xC6\xF8" => "\xE6\xB0\x94", + "\xC6\xF9" => "\xE8\xBF\x84", + "\xC6\xFA" => "\xE5\xBC\x83", + "\xC6\xFB" => "\xE6\xB1\xBD", + "\xC6\xFC" => "\xE6\xB3\xA3", + "\xC6\xFD" => "\xE8\xAE\xAB", + "\xC6\xFE" => "\xE6\x8E\x90", + "\xC7\xA1" => "\xE6\x81\xB0", + "\xC7\xA2" => "\xE6\xB4\xBD", + "\xC7\xA3" => "\xE7\x89\xB5", + "\xC7\xA4" => "\xE6\x89\xA6", + "\xC7\xA5" => "\xE9\x92\x8E", + "\xC7\xA6" => "\xE9\x93\x85", + "\xC7\xA7" => "\xE5\x8D\x83", + "\xC7\xA8" => "\xE8\xBF\x81", + "\xC7\xA9" => "\xE7\xAD\xBE", + "\xC7\xAA" => "\xE4\xBB\x9F", + "\xC7\xAB" => "\xE8\xB0\xA6", + "\xC7\xAC" => "\xE4\xB9\xBE", + "\xC7\xAD" => "\xE9\xBB\x94", + "\xC7\xAE" => "\xE9\x92\xB1", + "\xC7\xAF" => "\xE9\x92\xB3", + "\xC7\xB0" => "\xE5\x89\x8D", + "\xC7\xB1" => "\xE6\xBD\x9C", + "\xC7\xB2" => "\xE9\x81\xA3", + "\xC7\xB3" => "\xE6\xB5\x85", + "\xC7\xB4" => "\xE8\xB0\xB4", + "\xC7\xB5" => "\xE5\xA0\x91", + "\xC7\xB6" => "\xE5\xB5\x8C", + "\xC7\xB7" => "\xE6\xAC\xA0", + "\xC7\xB8" => "\xE6\xAD\x89", + "\xC7\xB9" => "\xE6\x9E\xAA", + "\xC7\xBA" => "\xE5\x91\x9B", + "\xC7\xBB" => "\xE8\x85\x94", + "\xC7\xBC" => "\xE7\xBE\x8C", + "\xC7\xBD" => "\xE5\xA2\x99", + "\xC7\xBE" => "\xE8\x94\xB7", + "\xC7\xBF" => "\xE5\xBC\xBA", + "\xC7\xC0" => "\xE6\x8A\xA2", + "\xC7\xC1" => "\xE6\xA9\x87", + "\xC7\xC2" => "\xE9\x94\xB9", + "\xC7\xC3" => "\xE6\x95\xB2", + "\xC7\xC4" => "\xE6\x82\x84", + "\xC7\xC5" => "\xE6\xA1\xA5", + "\xC7\xC6" => "\xE7\x9E\xA7", + "\xC7\xC7" => "\xE4\xB9\x94", + "\xC7\xC8" => "\xE4\xBE\xA8", + "\xC7\xC9" => "\xE5\xB7\xA7", + "\xC7\xCA" => "\xE9\x9E\x98", + "\xC7\xCB" => "\xE6\x92\xAC", + "\xC7\xCC" => "\xE7\xBF\x98", + "\xC7\xCD" => "\xE5\xB3\xAD", + "\xC7\xCE" => "\xE4\xBF\x8F", + "\xC7\xCF" => "\xE7\xAA\x8D", + "\xC7\xD0" => "\xE5\x88\x87", + "\xC7\xD1" => "\xE8\x8C\x84", + "\xC7\xD2" => "\xE4\xB8\x94", + "\xC7\xD3" => "\xE6\x80\xAF", + "\xC7\xD4" => "\xE7\xAA\x83", + "\xC7\xD5" => "\xE9\x92\xA6", + "\xC7\xD6" => "\xE4\xBE\xB5", + "\xC7\xD7" => "\xE4\xBA\xB2", + "\xC7\xD8" => "\xE7\xA7\xA6", + "\xC7\xD9" => "\xE7\x90\xB4", + "\xC7\xDA" => "\xE5\x8B\xA4", + "\xC7\xDB" => "\xE8\x8A\xB9", + "\xC7\xDC" => "\xE6\x93\x92", + "\xC7\xDD" => "\xE7\xA6\xBD", + "\xC7\xDE" => "\xE5\xAF\x9D", + "\xC7\xDF" => "\xE6\xB2\x81", + "\xC7\xE0" => "\xE9\x9D\x92", + "\xC7\xE1" => "\xE8\xBD\xBB", + "\xC7\xE2" => "\xE6\xB0\xA2", + "\xC7\xE3" => "\xE5\x80\xBE", + "\xC7\xE4" => "\xE5\x8D\xBF", + "\xC7\xE5" => "\xE6\xB8\x85", + "\xC7\xE6" => "\xE6\x93\x8E", + "\xC7\xE7" => "\xE6\x99\xB4", + "\xC7\xE8" => "\xE6\xB0\xB0", + "\xC7\xE9" => "\xE6\x83\x85", + "\xC7\xEA" => "\xE9\xA1\xB7", + "\xC7\xEB" => "\xE8\xAF\xB7", + "\xC7\xEC" => "\xE5\xBA\x86", + "\xC7\xED" => "\xE7\x90\xBC", + "\xC7\xEE" => "\xE7\xA9\xB7", + "\xC7\xEF" => "\xE7\xA7\x8B", + "\xC7\xF0" => "\xE4\xB8\x98", + "\xC7\xF1" => "\xE9\x82\xB1", + "\xC7\xF2" => "\xE7\x90\x83", + "\xC7\xF3" => "\xE6\xB1\x82", + "\xC7\xF4" => "\xE5\x9B\x9A", + "\xC7\xF5" => "\xE9\x85\x8B", + "\xC7\xF6" => "\xE6\xB3\x85", + "\xC7\xF7" => "\xE8\xB6\x8B", + "\xC7\xF8" => "\xE5\x8C\xBA", + "\xC7\xF9" => "\xE8\x9B\x86", + "\xC7\xFA" => "\xE6\x9B\xB2", + "\xC7\xFB" => "\xE8\xBA\xAF", + "\xC7\xFC" => "\xE5\xB1\x88", + "\xC7\xFD" => "\xE9\xA9\xB1", + "\xC7\xFE" => "\xE6\xB8\xA0", + "\xC8\xA1" => "\xE5\x8F\x96", + "\xC8\xA2" => "\xE5\xA8\xB6", + "\xC8\xA3" => "\xE9\xBE\x8B", + "\xC8\xA4" => "\xE8\xB6\xA3", + "\xC8\xA5" => "\xE5\x8E\xBB", + "\xC8\xA6" => "\xE5\x9C\x88", + "\xC8\xA7" => "\xE9\xA2\xA7", + "\xC8\xA8" => "\xE6\x9D\x83", + "\xC8\xA9" => "\xE9\x86\x9B", + "\xC8\xAA" => "\xE6\xB3\x89", + "\xC8\xAB" => "\xE5\x85\xA8", + "\xC8\xAC" => "\xE7\x97\x8A", + "\xC8\xAD" => "\xE6\x8B\xB3", + "\xC8\xAE" => "\xE7\x8A\xAC", + "\xC8\xAF" => "\xE5\x88\xB8", + "\xC8\xB0" => "\xE5\x8A\x9D", + "\xC8\xB1" => "\xE7\xBC\xBA", + "\xC8\xB2" => "\xE7\x82\x94", + "\xC8\xB3" => "\xE7\x98\xB8", + "\xC8\xB4" => "\xE5\x8D\xB4", + "\xC8\xB5" => "\xE9\xB9\x8A", + "\xC8\xB6" => "\xE6\xA6\xB7", + "\xC8\xB7" => "\xE7\xA1\xAE", + "\xC8\xB8" => "\xE9\x9B\x80", + "\xC8\xB9" => "\xE8\xA3\x99", + "\xC8\xBA" => "\xE7\xBE\xA4", + "\xC8\xBB" => "\xE7\x84\xB6", + "\xC8\xBC" => "\xE7\x87\x83", + "\xC8\xBD" => "\xE5\x86\x89", + "\xC8\xBE" => "\xE6\x9F\x93", + "\xC8\xBF" => "\xE7\x93\xA4", + "\xC8\xC0" => "\xE5\xA3\xA4", + "\xC8\xC1" => "\xE6\x94\x98", + "\xC8\xC2" => "\xE5\x9A\xB7", + "\xC8\xC3" => "\xE8\xAE\xA9", + "\xC8\xC4" => "\xE9\xA5\xB6", + "\xC8\xC5" => "\xE6\x89\xB0", + "\xC8\xC6" => "\xE7\xBB\x95", + "\xC8\xC7" => "\xE6\x83\xB9", + "\xC8\xC8" => "\xE7\x83\xAD", + "\xC8\xC9" => "\xE5\xA3\xAC", + "\xC8\xCA" => "\xE4\xBB\x81", + "\xC8\xCB" => "\xE4\xBA\xBA", + "\xC8\xCC" => "\xE5\xBF\x8D", + "\xC8\xCD" => "\xE9\x9F\xA7", + "\xC8\xCE" => "\xE4\xBB\xBB", + "\xC8\xCF" => "\xE8\xAE\xA4", + "\xC8\xD0" => "\xE5\x88\x83", + "\xC8\xD1" => "\xE5\xA6\x8A", + "\xC8\xD2" => "\xE7\xBA\xAB", + "\xC8\xD3" => "\xE6\x89\x94", + "\xC8\xD4" => "\xE4\xBB\x8D", + "\xC8\xD5" => "\xE6\x97\xA5", + "\xC8\xD6" => "\xE6\x88\x8E", + "\xC8\xD7" => "\xE8\x8C\xB8", + "\xC8\xD8" => "\xE8\x93\x89", + "\xC8\xD9" => "\xE8\x8D\xA3", + "\xC8\xDA" => "\xE8\x9E\x8D", + "\xC8\xDB" => "\xE7\x86\x94", + "\xC8\xDC" => "\xE6\xBA\xB6", + "\xC8\xDD" => "\xE5\xAE\xB9", + "\xC8\xDE" => "\xE7\xBB\x92", + "\xC8\xDF" => "\xE5\x86\x97", + "\xC8\xE0" => "\xE6\x8F\x89", + "\xC8\xE1" => "\xE6\x9F\x94", + "\xC8\xE2" => "\xE8\x82\x89", + "\xC8\xE3" => "\xE8\x8C\xB9", + "\xC8\xE4" => "\xE8\xA0\x95", + "\xC8\xE5" => "\xE5\x84\x92", + "\xC8\xE6" => "\xE5\xAD\xBA", + "\xC8\xE7" => "\xE5\xA6\x82", + "\xC8\xE8" => "\xE8\xBE\xB1", + "\xC8\xE9" => "\xE4\xB9\xB3", + "\xC8\xEA" => "\xE6\xB1\x9D", + "\xC8\xEB" => "\xE5\x85\xA5", + "\xC8\xEC" => "\xE8\xA4\xA5", + "\xC8\xED" => "\xE8\xBD\xAF", + "\xC8\xEE" => "\xE9\x98\xAE", + "\xC8\xEF" => "\xE8\x95\x8A", + "\xC8\xF0" => "\xE7\x91\x9E", + "\xC8\xF1" => "\xE9\x94\x90", + "\xC8\xF2" => "\xE9\x97\xB0", + "\xC8\xF3" => "\xE6\xB6\xA6", + "\xC8\xF4" => "\xE8\x8B\xA5", + "\xC8\xF5" => "\xE5\xBC\xB1", + "\xC8\xF6" => "\xE6\x92\x92", + "\xC8\xF7" => "\xE6\xB4\x92", + "\xC8\xF8" => "\xE8\x90\xA8", + "\xC8\xF9" => "\xE8\x85\xAE", + "\xC8\xFA" => "\xE9\xB3\x83", + "\xC8\xFB" => "\xE5\xA1\x9E", + "\xC8\xFC" => "\xE8\xB5\x9B", + "\xC8\xFD" => "\xE4\xB8\x89", + "\xC8\xFE" => "\xE5\x8F\x81", + "\xC9\xA1" => "\xE4\xBC\x9E", + "\xC9\xA2" => "\xE6\x95\xA3", + "\xC9\xA3" => "\xE6\xA1\x91", + "\xC9\xA4" => "\xE5\x97\x93", + "\xC9\xA5" => "\xE4\xB8\xA7", + "\xC9\xA6" => "\xE6\x90\x94", + "\xC9\xA7" => "\xE9\xAA\x9A", + "\xC9\xA8" => "\xE6\x89\xAB", + "\xC9\xA9" => "\xE5\xAB\x82", + "\xC9\xAA" => "\xE7\x91\x9F", + "\xC9\xAB" => "\xE8\x89\xB2", + "\xC9\xAC" => "\xE6\xB6\xA9", + "\xC9\xAD" => "\xE6\xA3\xAE", + "\xC9\xAE" => "\xE5\x83\xA7", + "\xC9\xAF" => "\xE8\x8E\x8E", + "\xC9\xB0" => "\xE7\xA0\x82", + "\xC9\xB1" => "\xE6\x9D\x80", + "\xC9\xB2" => "\xE5\x88\xB9", + "\xC9\xB3" => "\xE6\xB2\x99", + "\xC9\xB4" => "\xE7\xBA\xB1", + "\xC9\xB5" => "\xE5\x82\xBB", + "\xC9\xB6" => "\xE5\x95\xA5", + "\xC9\xB7" => "\xE7\x85\x9E", + "\xC9\xB8" => "\xE7\xAD\x9B", + "\xC9\xB9" => "\xE6\x99\x92", + "\xC9\xBA" => "\xE7\x8F\x8A", + "\xC9\xBB" => "\xE8\x8B\xAB", + "\xC9\xBC" => "\xE6\x9D\x89", + "\xC9\xBD" => "\xE5\xB1\xB1", + "\xC9\xBE" => "\xE5\x88\xA0", + "\xC9\xBF" => "\xE7\x85\xBD", + "\xC9\xC0" => "\xE8\xA1\xAB", + "\xC9\xC1" => "\xE9\x97\xAA", + "\xC9\xC2" => "\xE9\x99\x95", + "\xC9\xC3" => "\xE6\x93\x85", + "\xC9\xC4" => "\xE8\xB5\xA1", + "\xC9\xC5" => "\xE8\x86\xB3", + "\xC9\xC6" => "\xE5\x96\x84", + "\xC9\xC7" => "\xE6\xB1\x95", + "\xC9\xC8" => "\xE6\x89\x87", + "\xC9\xC9" => "\xE7\xBC\xAE", + "\xC9\xCA" => "\xE5\xA2\x92", + "\xC9\xCB" => "\xE4\xBC\xA4", + "\xC9\xCC" => "\xE5\x95\x86", + "\xC9\xCD" => "\xE8\xB5\x8F", + "\xC9\xCE" => "\xE6\x99\x8C", + "\xC9\xCF" => "\xE4\xB8\x8A", + "\xC9\xD0" => "\xE5\xB0\x9A", + "\xC9\xD1" => "\xE8\xA3\xB3", + "\xC9\xD2" => "\xE6\xA2\xA2", + "\xC9\xD3" => "\xE6\x8D\x8E", + "\xC9\xD4" => "\xE7\xA8\x8D", + "\xC9\xD5" => "\xE7\x83\xA7", + "\xC9\xD6" => "\xE8\x8A\x8D", + "\xC9\xD7" => "\xE5\x8B\xBA", + "\xC9\xD8" => "\xE9\x9F\xB6", + "\xC9\xD9" => "\xE5\xB0\x91", + "\xC9\xDA" => "\xE5\x93\xA8", + "\xC9\xDB" => "\xE9\x82\xB5", + "\xC9\xDC" => "\xE7\xBB\x8D", + "\xC9\xDD" => "\xE5\xA5\xA2", + "\xC9\xDE" => "\xE8\xB5\x8A", + "\xC9\xDF" => "\xE8\x9B\x87", + "\xC9\xE0" => "\xE8\x88\x8C", + "\xC9\xE1" => "\xE8\x88\x8D", + "\xC9\xE2" => "\xE8\xB5\xA6", + "\xC9\xE3" => "\xE6\x91\x84", + "\xC9\xE4" => "\xE5\xB0\x84", + "\xC9\xE5" => "\xE6\x85\x91", + "\xC9\xE6" => "\xE6\xB6\x89", + "\xC9\xE7" => "\xE7\xA4\xBE", + "\xC9\xE8" => "\xE8\xAE\xBE", + "\xC9\xE9" => "\xE7\xA0\xB7", + "\xC9\xEA" => "\xE7\x94\xB3", + "\xC9\xEB" => "\xE5\x91\xBB", + "\xC9\xEC" => "\xE4\xBC\xB8", + "\xC9\xED" => "\xE8\xBA\xAB", + "\xC9\xEE" => "\xE6\xB7\xB1", + "\xC9\xEF" => "\xE5\xA8\xA0", + "\xC9\xF0" => "\xE7\xBB\x85", + "\xC9\xF1" => "\xE7\xA5\x9E", + "\xC9\xF2" => "\xE6\xB2\x88", + "\xC9\xF3" => "\xE5\xAE\xA1", + "\xC9\xF4" => "\xE5\xA9\xB6", + "\xC9\xF5" => "\xE7\x94\x9A", + "\xC9\xF6" => "\xE8\x82\xBE", + "\xC9\xF7" => "\xE6\x85\x8E", + "\xC9\xF8" => "\xE6\xB8\x97", + "\xC9\xF9" => "\xE5\xA3\xB0", + "\xC9\xFA" => "\xE7\x94\x9F", + "\xC9\xFB" => "\xE7\x94\xA5", + "\xC9\xFC" => "\xE7\x89\xB2", + "\xC9\xFD" => "\xE5\x8D\x87", + "\xC9\xFE" => "\xE7\xBB\xB3", + "\xCA\xA1" => "\xE7\x9C\x81", + "\xCA\xA2" => "\xE7\x9B\x9B", + "\xCA\xA3" => "\xE5\x89\xA9", + "\xCA\xA4" => "\xE8\x83\x9C", + "\xCA\xA5" => "\xE5\x9C\xA3", + "\xCA\xA6" => "\xE5\xB8\x88", + "\xCA\xA7" => "\xE5\xA4\xB1", + "\xCA\xA8" => "\xE7\x8B\xAE", + "\xCA\xA9" => "\xE6\x96\xBD", + "\xCA\xAA" => "\xE6\xB9\xBF", + "\xCA\xAB" => "\xE8\xAF\x97", + "\xCA\xAC" => "\xE5\xB0\xB8", + "\xCA\xAD" => "\xE8\x99\xB1", + "\xCA\xAE" => "\xE5\x8D\x81", + "\xCA\xAF" => "\xE7\x9F\xB3", + "\xCA\xB0" => "\xE6\x8B\xBE", + "\xCA\xB1" => "\xE6\x97\xB6", + "\xCA\xB2" => "\xE4\xBB\x80", + "\xCA\xB3" => "\xE9\xA3\x9F", + "\xCA\xB4" => "\xE8\x9A\x80", + "\xCA\xB5" => "\xE5\xAE\x9E", + "\xCA\xB6" => "\xE8\xAF\x86", + "\xCA\xB7" => "\xE5\x8F\xB2", + "\xCA\xB8" => "\xE7\x9F\xA2", + "\xCA\xB9" => "\xE4\xBD\xBF", + "\xCA\xBA" => "\xE5\xB1\x8E", + "\xCA\xBB" => "\xE9\xA9\xB6", + "\xCA\xBC" => "\xE5\xA7\x8B", + "\xCA\xBD" => "\xE5\xBC\x8F", + "\xCA\xBE" => "\xE7\xA4\xBA", + "\xCA\xBF" => "\xE5\xA3\xAB", + "\xCA\xC0" => "\xE4\xB8\x96", + "\xCA\xC1" => "\xE6\x9F\xBF", + "\xCA\xC2" => "\xE4\xBA\x8B", + "\xCA\xC3" => "\xE6\x8B\xAD", + "\xCA\xC4" => "\xE8\xAA\x93", + "\xCA\xC5" => "\xE9\x80\x9D", + "\xCA\xC6" => "\xE5\x8A\xBF", + "\xCA\xC7" => "\xE6\x98\xAF", + "\xCA\xC8" => "\xE5\x97\x9C", + "\xCA\xC9" => "\xE5\x99\xAC", + "\xCA\xCA" => "\xE9\x80\x82", + "\xCA\xCB" => "\xE4\xBB\x95", + "\xCA\xCC" => "\xE4\xBE\x8D", + "\xCA\xCD" => "\xE9\x87\x8A", + "\xCA\xCE" => "\xE9\xA5\xB0", + "\xCA\xCF" => "\xE6\xB0\x8F", + "\xCA\xD0" => "\xE5\xB8\x82", + "\xCA\xD1" => "\xE6\x81\x83", + "\xCA\xD2" => "\xE5\xAE\xA4", + "\xCA\xD3" => "\xE8\xA7\x86", + "\xCA\xD4" => "\xE8\xAF\x95", + "\xCA\xD5" => "\xE6\x94\xB6", + "\xCA\xD6" => "\xE6\x89\x8B", + "\xCA\xD7" => "\xE9\xA6\x96", + "\xCA\xD8" => "\xE5\xAE\x88", + "\xCA\xD9" => "\xE5\xAF\xBF", + "\xCA\xDA" => "\xE6\x8E\x88", + "\xCA\xDB" => "\xE5\x94\xAE", + "\xCA\xDC" => "\xE5\x8F\x97", + "\xCA\xDD" => "\xE7\x98\xA6", + "\xCA\xDE" => "\xE5\x85\xBD", + "\xCA\xDF" => "\xE8\x94\xAC", + "\xCA\xE0" => "\xE6\x9E\xA2", + "\xCA\xE1" => "\xE6\xA2\xB3", + "\xCA\xE2" => "\xE6\xAE\x8A", + "\xCA\xE3" => "\xE6\x8A\x92", + "\xCA\xE4" => "\xE8\xBE\x93", + "\xCA\xE5" => "\xE5\x8F\x94", + "\xCA\xE6" => "\xE8\x88\x92", + "\xCA\xE7" => "\xE6\xB7\x91", + "\xCA\xE8" => "\xE7\x96\x8F", + "\xCA\xE9" => "\xE4\xB9\xA6", + "\xCA\xEA" => "\xE8\xB5\x8E", + "\xCA\xEB" => "\xE5\xAD\xB0", + "\xCA\xEC" => "\xE7\x86\x9F", + "\xCA\xED" => "\xE8\x96\xAF", + "\xCA\xEE" => "\xE6\x9A\x91", + "\xCA\xEF" => "\xE6\x9B\x99", + "\xCA\xF0" => "\xE7\xBD\xB2", + "\xCA\xF1" => "\xE8\x9C\x80", + "\xCA\xF2" => "\xE9\xBB\x8D", + "\xCA\xF3" => "\xE9\xBC\xA0", + "\xCA\xF4" => "\xE5\xB1\x9E", + "\xCA\xF5" => "\xE6\x9C\xAF", + "\xCA\xF6" => "\xE8\xBF\xB0", + "\xCA\xF7" => "\xE6\xA0\x91", + "\xCA\xF8" => "\xE6\x9D\x9F", + "\xCA\xF9" => "\xE6\x88\x8D", + "\xCA\xFA" => "\xE7\xAB\x96", + "\xCA\xFB" => "\xE5\xA2\x85", + "\xCA\xFC" => "\xE5\xBA\xB6", + "\xCA\xFD" => "\xE6\x95\xB0", + "\xCA\xFE" => "\xE6\xBC\xB1", + "\xCB\xA1" => "\xE6\x81\x95", + "\xCB\xA2" => "\xE5\x88\xB7", + "\xCB\xA3" => "\xE8\x80\x8D", + "\xCB\xA4" => "\xE6\x91\x94", + "\xCB\xA5" => "\xE8\xA1\xB0", + "\xCB\xA6" => "\xE7\x94\xA9", + "\xCB\xA7" => "\xE5\xB8\x85", + "\xCB\xA8" => "\xE6\xA0\x93", + "\xCB\xA9" => "\xE6\x8B\xB4", + "\xCB\xAA" => "\xE9\x9C\x9C", + "\xCB\xAB" => "\xE5\x8F\x8C", + "\xCB\xAC" => "\xE7\x88\xBD", + "\xCB\xAD" => "\xE8\xB0\x81", + "\xCB\xAE" => "\xE6\xB0\xB4", + "\xCB\xAF" => "\xE7\x9D\xA1", + "\xCB\xB0" => "\xE7\xA8\x8E", + "\xCB\xB1" => "\xE5\x90\xAE", + "\xCB\xB2" => "\xE7\x9E\xAC", + "\xCB\xB3" => "\xE9\xA1\xBA", + "\xCB\xB4" => "\xE8\x88\x9C", + "\xCB\xB5" => "\xE8\xAF\xB4", + "\xCB\xB6" => "\xE7\xA1\x95", + "\xCB\xB7" => "\xE6\x9C\x94", + "\xCB\xB8" => "\xE7\x83\x81", + "\xCB\xB9" => "\xE6\x96\xAF", + "\xCB\xBA" => "\xE6\x92\x95", + "\xCB\xBB" => "\xE5\x98\xB6", + "\xCB\xBC" => "\xE6\x80\x9D", + "\xCB\xBD" => "\xE7\xA7\x81", + "\xCB\xBE" => "\xE5\x8F\xB8", + "\xCB\xBF" => "\xE4\xB8\x9D", + "\xCB\xC0" => "\xE6\xAD\xBB", + "\xCB\xC1" => "\xE8\x82\x86", + "\xCB\xC2" => "\xE5\xAF\xBA", + "\xCB\xC3" => "\xE5\x97\xA3", + "\xCB\xC4" => "\xE5\x9B\x9B", + "\xCB\xC5" => "\xE4\xBC\xBA", + "\xCB\xC6" => "\xE4\xBC\xBC", + "\xCB\xC7" => "\xE9\xA5\xB2", + "\xCB\xC8" => "\xE5\xB7\xB3", + "\xCB\xC9" => "\xE6\x9D\xBE", + "\xCB\xCA" => "\xE8\x80\xB8", + "\xCB\xCB" => "\xE6\x80\x82", + "\xCB\xCC" => "\xE9\xA2\x82", + "\xCB\xCD" => "\xE9\x80\x81", + "\xCB\xCE" => "\xE5\xAE\x8B", + "\xCB\xCF" => "\xE8\xAE\xBC", + "\xCB\xD0" => "\xE8\xAF\xB5", + "\xCB\xD1" => "\xE6\x90\x9C", + "\xCB\xD2" => "\xE8\x89\x98", + "\xCB\xD3" => "\xE6\x93\x9E", + "\xCB\xD4" => "\xE5\x97\xBD", + "\xCB\xD5" => "\xE8\x8B\x8F", + "\xCB\xD6" => "\xE9\x85\xA5", + "\xCB\xD7" => "\xE4\xBF\x97", + "\xCB\xD8" => "\xE7\xB4\xA0", + "\xCB\xD9" => "\xE9\x80\x9F", + "\xCB\xDA" => "\xE7\xB2\x9F", + "\xCB\xDB" => "\xE5\x83\xB3", + "\xCB\xDC" => "\xE5\xA1\x91", + "\xCB\xDD" => "\xE6\xBA\xAF", + "\xCB\xDE" => "\xE5\xAE\xBF", + "\xCB\xDF" => "\xE8\xAF\x89", + "\xCB\xE0" => "\xE8\x82\x83", + "\xCB\xE1" => "\xE9\x85\xB8", + "\xCB\xE2" => "\xE8\x92\x9C", + "\xCB\xE3" => "\xE7\xAE\x97", + "\xCB\xE4" => "\xE8\x99\xBD", + "\xCB\xE5" => "\xE9\x9A\x8B", + "\xCB\xE6" => "\xE9\x9A\x8F", + "\xCB\xE7" => "\xE7\xBB\xA5", + "\xCB\xE8" => "\xE9\xAB\x93", + "\xCB\xE9" => "\xE7\xA2\x8E", + "\xCB\xEA" => "\xE5\xB2\x81", + "\xCB\xEB" => "\xE7\xA9\x97", + "\xCB\xEC" => "\xE9\x81\x82", + "\xCB\xED" => "\xE9\x9A\xA7", + "\xCB\xEE" => "\xE7\xA5\x9F", + "\xCB\xEF" => "\xE5\xAD\x99", + "\xCB\xF0" => "\xE6\x8D\x9F", + "\xCB\xF1" => "\xE7\xAC\x8B", + "\xCB\xF2" => "\xE8\x93\x91", + "\xCB\xF3" => "\xE6\xA2\xAD", + "\xCB\xF4" => "\xE5\x94\x86", + "\xCB\xF5" => "\xE7\xBC\xA9", + "\xCB\xF6" => "\xE7\x90\x90", + "\xCB\xF7" => "\xE7\xB4\xA2", + "\xCB\xF8" => "\xE9\x94\x81", + "\xCB\xF9" => "\xE6\x89\x80", + "\xCB\xFA" => "\xE5\xA1\x8C", + "\xCB\xFB" => "\xE4\xBB\x96", + "\xCB\xFC" => "\xE5\xAE\x83", + "\xCB\xFD" => "\xE5\xA5\xB9", + "\xCB\xFE" => "\xE5\xA1\x94", + "\xCC\xA1" => "\xE7\x8D\xAD", + "\xCC\xA2" => "\xE6\x8C\x9E", + "\xCC\xA3" => "\xE8\xB9\x8B", + "\xCC\xA4" => "\xE8\xB8\x8F", + "\xCC\xA5" => "\xE8\x83\x8E", + "\xCC\xA6" => "\xE8\x8B\x94", + "\xCC\xA7" => "\xE6\x8A\xAC", + "\xCC\xA8" => "\xE5\x8F\xB0", + "\xCC\xA9" => "\xE6\xB3\xB0", + "\xCC\xAA" => "\xE9\x85\x9E", + "\xCC\xAB" => "\xE5\xA4\xAA", + "\xCC\xAC" => "\xE6\x80\x81", + "\xCC\xAD" => "\xE6\xB1\xB0", + "\xCC\xAE" => "\xE5\x9D\x8D", + "\xCC\xAF" => "\xE6\x91\x8A", + "\xCC\xB0" => "\xE8\xB4\xAA", + "\xCC\xB1" => "\xE7\x98\xAB", + "\xCC\xB2" => "\xE6\xBB\xA9", + "\xCC\xB3" => "\xE5\x9D\x9B", + "\xCC\xB4" => "\xE6\xAA\x80", + "\xCC\xB5" => "\xE7\x97\xB0", + "\xCC\xB6" => "\xE6\xBD\xAD", + "\xCC\xB7" => "\xE8\xB0\xAD", + "\xCC\xB8" => "\xE8\xB0\x88", + "\xCC\xB9" => "\xE5\x9D\xA6", + "\xCC\xBA" => "\xE6\xAF\xAF", + "\xCC\xBB" => "\xE8\xA2\x92", + "\xCC\xBC" => "\xE7\xA2\xB3", + "\xCC\xBD" => "\xE6\x8E\xA2", + "\xCC\xBE" => "\xE5\x8F\xB9", + "\xCC\xBF" => "\xE7\x82\xAD", + "\xCC\xC0" => "\xE6\xB1\xA4", + "\xCC\xC1" => "\xE5\xA1\x98", + "\xCC\xC2" => "\xE6\x90\xAA", + "\xCC\xC3" => "\xE5\xA0\x82", + "\xCC\xC4" => "\xE6\xA3\xA0", + "\xCC\xC5" => "\xE8\x86\x9B", + "\xCC\xC6" => "\xE5\x94\x90", + "\xCC\xC7" => "\xE7\xB3\x96", + "\xCC\xC8" => "\xE5\x80\x98", + "\xCC\xC9" => "\xE8\xBA\xBA", + "\xCC\xCA" => "\xE6\xB7\x8C", + "\xCC\xCB" => "\xE8\xB6\x9F", + "\xCC\xCC" => "\xE7\x83\xAB", + "\xCC\xCD" => "\xE6\x8E\x8F", + "\xCC\xCE" => "\xE6\xB6\x9B", + "\xCC\xCF" => "\xE6\xBB\x94", + "\xCC\xD0" => "\xE7\xBB\xA6", + "\xCC\xD1" => "\xE8\x90\x84", + "\xCC\xD2" => "\xE6\xA1\x83", + "\xCC\xD3" => "\xE9\x80\x83", + "\xCC\xD4" => "\xE6\xB7\x98", + "\xCC\xD5" => "\xE9\x99\xB6", + "\xCC\xD6" => "\xE8\xAE\xA8", + "\xCC\xD7" => "\xE5\xA5\x97", + "\xCC\xD8" => "\xE7\x89\xB9", + "\xCC\xD9" => "\xE8\x97\xA4", + "\xCC\xDA" => "\xE8\x85\xBE", + "\xCC\xDB" => "\xE7\x96\xBC", + "\xCC\xDC" => "\xE8\xAA\x8A", + "\xCC\xDD" => "\xE6\xA2\xAF", + "\xCC\xDE" => "\xE5\x89\x94", + "\xCC\xDF" => "\xE8\xB8\xA2", + "\xCC\xE0" => "\xE9\x94\x91", + "\xCC\xE1" => "\xE6\x8F\x90", + "\xCC\xE2" => "\xE9\xA2\x98", + "\xCC\xE3" => "\xE8\xB9\x84", + "\xCC\xE4" => "\xE5\x95\xBC", + "\xCC\xE5" => "\xE4\xBD\x93", + "\xCC\xE6" => "\xE6\x9B\xBF", + "\xCC\xE7" => "\xE5\x9A\x8F", + "\xCC\xE8" => "\xE6\x83\x95", + "\xCC\xE9" => "\xE6\xB6\x95", + "\xCC\xEA" => "\xE5\x89\x83", + "\xCC\xEB" => "\xE5\xB1\x89", + "\xCC\xEC" => "\xE5\xA4\xA9", + "\xCC\xED" => "\xE6\xB7\xBB", + "\xCC\xEE" => "\xE5\xA1\xAB", + "\xCC\xEF" => "\xE7\x94\xB0", + "\xCC\xF0" => "\xE7\x94\x9C", + "\xCC\xF1" => "\xE6\x81\xAC", + "\xCC\xF2" => "\xE8\x88\x94", + "\xCC\xF3" => "\xE8\x85\x86", + "\xCC\xF4" => "\xE6\x8C\x91", + "\xCC\xF5" => "\xE6\x9D\xA1", + "\xCC\xF6" => "\xE8\xBF\xA2", + "\xCC\xF7" => "\xE7\x9C\xBA", + "\xCC\xF8" => "\xE8\xB7\xB3", + "\xCC\xF9" => "\xE8\xB4\xB4", + "\xCC\xFA" => "\xE9\x93\x81", + "\xCC\xFB" => "\xE5\xB8\x96", + "\xCC\xFC" => "\xE5\x8E\x85", + "\xCC\xFD" => "\xE5\x90\xAC", + "\xCC\xFE" => "\xE7\x83\x83", + "\xCD\xA1" => "\xE6\xB1\x80", + "\xCD\xA2" => "\xE5\xBB\xB7", + "\xCD\xA3" => "\xE5\x81\x9C", + "\xCD\xA4" => "\xE4\xBA\xAD", + "\xCD\xA5" => "\xE5\xBA\xAD", + "\xCD\xA6" => "\xE6\x8C\xBA", + "\xCD\xA7" => "\xE8\x89\x87", + "\xCD\xA8" => "\xE9\x80\x9A", + "\xCD\xA9" => "\xE6\xA1\x90", + "\xCD\xAA" => "\xE9\x85\xAE", + "\xCD\xAB" => "\xE7\x9E\xB3", + "\xCD\xAC" => "\xE5\x90\x8C", + "\xCD\xAD" => "\xE9\x93\x9C", + "\xCD\xAE" => "\xE5\xBD\xA4", + "\xCD\xAF" => "\xE7\xAB\xA5", + "\xCD\xB0" => "\xE6\xA1\xB6", + "\xCD\xB1" => "\xE6\x8D\x85", + "\xCD\xB2" => "\xE7\xAD\x92", + "\xCD\xB3" => "\xE7\xBB\x9F", + "\xCD\xB4" => "\xE7\x97\x9B", + "\xCD\xB5" => "\xE5\x81\xB7", + "\xCD\xB6" => "\xE6\x8A\x95", + "\xCD\xB7" => "\xE5\xA4\xB4", + "\xCD\xB8" => "\xE9\x80\x8F", + "\xCD\xB9" => "\xE5\x87\xB8", + "\xCD\xBA" => "\xE7\xA7\x83", + "\xCD\xBB" => "\xE7\xAA\x81", + "\xCD\xBC" => "\xE5\x9B\xBE", + "\xCD\xBD" => "\xE5\xBE\x92", + "\xCD\xBE" => "\xE9\x80\x94", + "\xCD\xBF" => "\xE6\xB6\x82", + "\xCD\xC0" => "\xE5\xB1\xA0", + "\xCD\xC1" => "\xE5\x9C\x9F", + "\xCD\xC2" => "\xE5\x90\x90", + "\xCD\xC3" => "\xE5\x85\x94", + "\xCD\xC4" => "\xE6\xB9\x8D", + "\xCD\xC5" => "\xE5\x9B\xA2", + "\xCD\xC6" => "\xE6\x8E\xA8", + "\xCD\xC7" => "\xE9\xA2\x93", + "\xCD\xC8" => "\xE8\x85\xBF", + "\xCD\xC9" => "\xE8\x9C\x95", + "\xCD\xCA" => "\xE8\xA4\xAA", + "\xCD\xCB" => "\xE9\x80\x80", + "\xCD\xCC" => "\xE5\x90\x9E", + "\xCD\xCD" => "\xE5\xB1\xAF", + "\xCD\xCE" => "\xE8\x87\x80", + "\xCD\xCF" => "\xE6\x8B\x96", + "\xCD\xD0" => "\xE6\x89\x98", + "\xCD\xD1" => "\xE8\x84\xB1", + "\xCD\xD2" => "\xE9\xB8\xB5", + "\xCD\xD3" => "\xE9\x99\x80", + "\xCD\xD4" => "\xE9\xA9\xAE", + "\xCD\xD5" => "\xE9\xA9\xBC", + "\xCD\xD6" => "\xE6\xA4\xAD", + "\xCD\xD7" => "\xE5\xA6\xA5", + "\xCD\xD8" => "\xE6\x8B\x93", + "\xCD\xD9" => "\xE5\x94\xBE", + "\xCD\xDA" => "\xE6\x8C\x96", + "\xCD\xDB" => "\xE5\x93\x87", + "\xCD\xDC" => "\xE8\x9B\x99", + "\xCD\xDD" => "\xE6\xB4\xBC", + "\xCD\xDE" => "\xE5\xA8\x83", + "\xCD\xDF" => "\xE7\x93\xA6", + "\xCD\xE0" => "\xE8\xA2\x9C", + "\xCD\xE1" => "\xE6\xAD\xAA", + "\xCD\xE2" => "\xE5\xA4\x96", + "\xCD\xE3" => "\xE8\xB1\x8C", + "\xCD\xE4" => "\xE5\xBC\xAF", + "\xCD\xE5" => "\xE6\xB9\xBE", + "\xCD\xE6" => "\xE7\x8E\xA9", + "\xCD\xE7" => "\xE9\xA1\xBD", + "\xCD\xE8" => "\xE4\xB8\xB8", + "\xCD\xE9" => "\xE7\x83\xB7", + "\xCD\xEA" => "\xE5\xAE\x8C", + "\xCD\xEB" => "\xE7\xA2\x97", + "\xCD\xEC" => "\xE6\x8C\xBD", + "\xCD\xED" => "\xE6\x99\x9A", + "\xCD\xEE" => "\xE7\x9A\x96", + "\xCD\xEF" => "\xE6\x83\x8B", + "\xCD\xF0" => "\xE5\xAE\x9B", + "\xCD\xF1" => "\xE5\xA9\x89", + "\xCD\xF2" => "\xE4\xB8\x87", + "\xCD\xF3" => "\xE8\x85\x95", + "\xCD\xF4" => "\xE6\xB1\xAA", + "\xCD\xF5" => "\xE7\x8E\x8B", + "\xCD\xF6" => "\xE4\xBA\xA1", + "\xCD\xF7" => "\xE6\x9E\x89", + "\xCD\xF8" => "\xE7\xBD\x91", + "\xCD\xF9" => "\xE5\xBE\x80", + "\xCD\xFA" => "\xE6\x97\xBA", + "\xCD\xFB" => "\xE6\x9C\x9B", + "\xCD\xFC" => "\xE5\xBF\x98", + "\xCD\xFD" => "\xE5\xA6\x84", + "\xCD\xFE" => "\xE5\xA8\x81", + "\xCE\xA1" => "\xE5\xB7\x8D", + "\xCE\xA2" => "\xE5\xBE\xAE", + "\xCE\xA3" => "\xE5\x8D\xB1", + "\xCE\xA4" => "\xE9\x9F\xA6", + "\xCE\xA5" => "\xE8\xBF\x9D", + "\xCE\xA6" => "\xE6\xA1\x85", + "\xCE\xA7" => "\xE5\x9B\xB4", + "\xCE\xA8" => "\xE5\x94\xAF", + "\xCE\xA9" => "\xE6\x83\x9F", + "\xCE\xAA" => "\xE4\xB8\xBA", + "\xCE\xAB" => "\xE6\xBD\x8D", + "\xCE\xAC" => "\xE7\xBB\xB4", + "\xCE\xAD" => "\xE8\x8B\x87", + "\xCE\xAE" => "\xE8\x90\x8E", + "\xCE\xAF" => "\xE5\xA7\x94", + "\xCE\xB0" => "\xE4\xBC\x9F", + "\xCE\xB1" => "\xE4\xBC\xAA", + "\xCE\xB2" => "\xE5\xB0\xBE", + "\xCE\xB3" => "\xE7\xBA\xAC", + "\xCE\xB4" => "\xE6\x9C\xAA", + "\xCE\xB5" => "\xE8\x94\x9A", + "\xCE\xB6" => "\xE5\x91\xB3", + "\xCE\xB7" => "\xE7\x95\x8F", + "\xCE\xB8" => "\xE8\x83\x83", + "\xCE\xB9" => "\xE5\x96\x82", + "\xCE\xBA" => "\xE9\xAD\x8F", + "\xCE\xBB" => "\xE4\xBD\x8D", + "\xCE\xBC" => "\xE6\xB8\xAD", + "\xCE\xBD" => "\xE8\xB0\x93", + "\xCE\xBE" => "\xE5\xB0\x89", + "\xCE\xBF" => "\xE6\x85\xB0", + "\xCE\xC0" => "\xE5\x8D\xAB", + "\xCE\xC1" => "\xE7\x98\x9F", + "\xCE\xC2" => "\xE6\xB8\xA9", + "\xCE\xC3" => "\xE8\x9A\x8A", + "\xCE\xC4" => "\xE6\x96\x87", + "\xCE\xC5" => "\xE9\x97\xBB", + "\xCE\xC6" => "\xE7\xBA\xB9", + "\xCE\xC7" => "\xE5\x90\xBB", + "\xCE\xC8" => "\xE7\xA8\xB3", + "\xCE\xC9" => "\xE7\xB4\x8A", + "\xCE\xCA" => "\xE9\x97\xAE", + "\xCE\xCB" => "\xE5\x97\xA1", + "\xCE\xCC" => "\xE7\xBF\x81", + "\xCE\xCD" => "\xE7\x93\xAE", + "\xCE\xCE" => "\xE6\x8C\x9D", + "\xCE\xCF" => "\xE8\x9C\x97", + "\xCE\xD0" => "\xE6\xB6\xA1", + "\xCE\xD1" => "\xE7\xAA\x9D", + "\xCE\xD2" => "\xE6\x88\x91", + "\xCE\xD3" => "\xE6\x96\xA1", + "\xCE\xD4" => "\xE5\x8D\xA7", + "\xCE\xD5" => "\xE6\x8F\xA1", + "\xCE\xD6" => "\xE6\xB2\x83", + "\xCE\xD7" => "\xE5\xB7\xAB", + "\xCE\xD8" => "\xE5\x91\x9C", + "\xCE\xD9" => "\xE9\x92\xA8", + "\xCE\xDA" => "\xE4\xB9\x8C", + "\xCE\xDB" => "\xE6\xB1\xA1", + "\xCE\xDC" => "\xE8\xAF\xAC", + "\xCE\xDD" => "\xE5\xB1\x8B", + "\xCE\xDE" => "\xE6\x97\xA0", + "\xCE\xDF" => "\xE8\x8A\x9C", + "\xCE\xE0" => "\xE6\xA2\xA7", + "\xCE\xE1" => "\xE5\x90\xBE", + "\xCE\xE2" => "\xE5\x90\xB4", + "\xCE\xE3" => "\xE6\xAF\x8B", + "\xCE\xE4" => "\xE6\xAD\xA6", + "\xCE\xE5" => "\xE4\xBA\x94", + "\xCE\xE6" => "\xE6\x8D\x82", + "\xCE\xE7" => "\xE5\x8D\x88", + "\xCE\xE8" => "\xE8\x88\x9E", + "\xCE\xE9" => "\xE4\xBC\x8D", + "\xCE\xEA" => "\xE4\xBE\xAE", + "\xCE\xEB" => "\xE5\x9D\x9E", + "\xCE\xEC" => "\xE6\x88\x8A", + "\xCE\xED" => "\xE9\x9B\xBE", + "\xCE\xEE" => "\xE6\x99\xA4", + "\xCE\xEF" => "\xE7\x89\xA9", + "\xCE\xF0" => "\xE5\x8B\xBF", + "\xCE\xF1" => "\xE5\x8A\xA1", + "\xCE\xF2" => "\xE6\x82\x9F", + "\xCE\xF3" => "\xE8\xAF\xAF", + "\xCE\xF4" => "\xE6\x98\x94", + "\xCE\xF5" => "\xE7\x86\x99", + "\xCE\xF6" => "\xE6\x9E\x90", + "\xCE\xF7" => "\xE8\xA5\xBF", + "\xCE\xF8" => "\xE7\xA1\x92", + "\xCE\xF9" => "\xE7\x9F\xBD", + "\xCE\xFA" => "\xE6\x99\xB0", + "\xCE\xFB" => "\xE5\x98\xBB", + "\xCE\xFC" => "\xE5\x90\xB8", + "\xCE\xFD" => "\xE9\x94\xA1", + "\xCE\xFE" => "\xE7\x89\xBA", + "\xCF\xA1" => "\xE7\xA8\x80", + "\xCF\xA2" => "\xE6\x81\xAF", + "\xCF\xA3" => "\xE5\xB8\x8C", + "\xCF\xA4" => "\xE6\x82\x89", + "\xCF\xA5" => "\xE8\x86\x9D", + "\xCF\xA6" => "\xE5\xA4\x95", + "\xCF\xA7" => "\xE6\x83\x9C", + "\xCF\xA8" => "\xE7\x86\x84", + "\xCF\xA9" => "\xE7\x83\xAF", + "\xCF\xAA" => "\xE6\xBA\xAA", + "\xCF\xAB" => "\xE6\xB1\x90", + "\xCF\xAC" => "\xE7\x8A\x80", + "\xCF\xAD" => "\xE6\xAA\x84", + "\xCF\xAE" => "\xE8\xA2\xAD", + "\xCF\xAF" => "\xE5\xB8\xAD", + "\xCF\xB0" => "\xE4\xB9\xA0", + "\xCF\xB1" => "\xE5\xAA\xB3", + "\xCF\xB2" => "\xE5\x96\x9C", + "\xCF\xB3" => "\xE9\x93\xA3", + "\xCF\xB4" => "\xE6\xB4\x97", + "\xCF\xB5" => "\xE7\xB3\xBB", + "\xCF\xB6" => "\xE9\x9A\x99", + "\xCF\xB7" => "\xE6\x88\x8F", + "\xCF\xB8" => "\xE7\xBB\x86", + "\xCF\xB9" => "\xE7\x9E\x8E", + "\xCF\xBA" => "\xE8\x99\xBE", + "\xCF\xBB" => "\xE5\x8C\xA3", + "\xCF\xBC" => "\xE9\x9C\x9E", + "\xCF\xBD" => "\xE8\xBE\x96", + "\xCF\xBE" => "\xE6\x9A\x87", + "\xCF\xBF" => "\xE5\xB3\xA1", + "\xCF\xC0" => "\xE4\xBE\xA0", + "\xCF\xC1" => "\xE7\x8B\xAD", + "\xCF\xC2" => "\xE4\xB8\x8B", + "\xCF\xC3" => "\xE5\x8E\xA6", + "\xCF\xC4" => "\xE5\xA4\x8F", + "\xCF\xC5" => "\xE5\x90\x93", + "\xCF\xC6" => "\xE6\x8E\x80", + "\xCF\xC7" => "\xE9\x94\xA8", + "\xCF\xC8" => "\xE5\x85\x88", + "\xCF\xC9" => "\xE4\xBB\x99", + "\xCF\xCA" => "\xE9\xB2\x9C", + "\xCF\xCB" => "\xE7\xBA\xA4", + "\xCF\xCC" => "\xE5\x92\xB8", + "\xCF\xCD" => "\xE8\xB4\xA4", + "\xCF\xCE" => "\xE8\xA1\x94", + "\xCF\xCF" => "\xE8\x88\xB7", + "\xCF\xD0" => "\xE9\x97\xB2", + "\xCF\xD1" => "\xE6\xB6\x8E", + "\xCF\xD2" => "\xE5\xBC\xA6", + "\xCF\xD3" => "\xE5\xAB\x8C", + "\xCF\xD4" => "\xE6\x98\xBE", + "\xCF\xD5" => "\xE9\x99\xA9", + "\xCF\xD6" => "\xE7\x8E\xB0", + "\xCF\xD7" => "\xE7\x8C\xAE", + "\xCF\xD8" => "\xE5\x8E\xBF", + "\xCF\xD9" => "\xE8\x85\xBA", + "\xCF\xDA" => "\xE9\xA6\x85", + "\xCF\xDB" => "\xE7\xBE\xA1", + "\xCF\xDC" => "\xE5\xAE\xAA", + "\xCF\xDD" => "\xE9\x99\xB7", + "\xCF\xDE" => "\xE9\x99\x90", + "\xCF\xDF" => "\xE7\xBA\xBF", + "\xCF\xE0" => "\xE7\x9B\xB8", + "\xCF\xE1" => "\xE5\x8E\xA2", + "\xCF\xE2" => "\xE9\x95\xB6", + "\xCF\xE3" => "\xE9\xA6\x99", + "\xCF\xE4" => "\xE7\xAE\xB1", + "\xCF\xE5" => "\xE8\xA5\x84", + "\xCF\xE6" => "\xE6\xB9\x98", + "\xCF\xE7" => "\xE4\xB9\xA1", + "\xCF\xE8" => "\xE7\xBF\x94", + "\xCF\xE9" => "\xE7\xA5\xA5", + "\xCF\xEA" => "\xE8\xAF\xA6", + "\xCF\xEB" => "\xE6\x83\xB3", + "\xCF\xEC" => "\xE5\x93\x8D", + "\xCF\xED" => "\xE4\xBA\xAB", + "\xCF\xEE" => "\xE9\xA1\xB9", + "\xCF\xEF" => "\xE5\xB7\xB7", + "\xCF\xF0" => "\xE6\xA9\xA1", + "\xCF\xF1" => "\xE5\x83\x8F", + "\xCF\xF2" => "\xE5\x90\x91", + "\xCF\xF3" => "\xE8\xB1\xA1", + "\xCF\xF4" => "\xE8\x90\xA7", + "\xCF\xF5" => "\xE7\xA1\x9D", + "\xCF\xF6" => "\xE9\x9C\x84", + "\xCF\xF7" => "\xE5\x89\x8A", + "\xCF\xF8" => "\xE5\x93\xAE", + "\xCF\xF9" => "\xE5\x9A\xA3", + "\xCF\xFA" => "\xE9\x94\x80", + "\xCF\xFB" => "\xE6\xB6\x88", + "\xCF\xFC" => "\xE5\xAE\xB5", + "\xCF\xFD" => "\xE6\xB7\x86", + "\xCF\xFE" => "\xE6\x99\x93", + "\xD0\xA1" => "\xE5\xB0\x8F", + "\xD0\xA2" => "\xE5\xAD\x9D", + "\xD0\xA3" => "\xE6\xA0\xA1", + "\xD0\xA4" => "\xE8\x82\x96", + "\xD0\xA5" => "\xE5\x95\xB8", + "\xD0\xA6" => "\xE7\xAC\x91", + "\xD0\xA7" => "\xE6\x95\x88", + "\xD0\xA8" => "\xE6\xA5\x94", + "\xD0\xA9" => "\xE4\xBA\x9B", + "\xD0\xAA" => "\xE6\xAD\x87", + "\xD0\xAB" => "\xE8\x9D\x8E", + "\xD0\xAC" => "\xE9\x9E\x8B", + "\xD0\xAD" => "\xE5\x8D\x8F", + "\xD0\xAE" => "\xE6\x8C\x9F", + "\xD0\xAF" => "\xE6\x90\xBA", + "\xD0\xB0" => "\xE9\x82\xAA", + "\xD0\xB1" => "\xE6\x96\x9C", + "\xD0\xB2" => "\xE8\x83\x81", + "\xD0\xB3" => "\xE8\xB0\x90", + "\xD0\xB4" => "\xE5\x86\x99", + "\xD0\xB5" => "\xE6\xA2\xB0", + "\xD0\xB6" => "\xE5\x8D\xB8", + "\xD0\xB7" => "\xE8\x9F\xB9", + "\xD0\xB8" => "\xE6\x87\x88", + "\xD0\xB9" => "\xE6\xB3\x84", + "\xD0\xBA" => "\xE6\xB3\xBB", + "\xD0\xBB" => "\xE8\xB0\xA2", + "\xD0\xBC" => "\xE5\xB1\x91", + "\xD0\xBD" => "\xE8\x96\xAA", + "\xD0\xBE" => "\xE8\x8A\xAF", + "\xD0\xBF" => "\xE9\x94\x8C", + "\xD0\xC0" => "\xE6\xAC\xA3", + "\xD0\xC1" => "\xE8\xBE\x9B", + "\xD0\xC2" => "\xE6\x96\xB0", + "\xD0\xC3" => "\xE5\xBF\xBB", + "\xD0\xC4" => "\xE5\xBF\x83", + "\xD0\xC5" => "\xE4\xBF\xA1", + "\xD0\xC6" => "\xE8\xA1\x85", + "\xD0\xC7" => "\xE6\x98\x9F", + "\xD0\xC8" => "\xE8\x85\xA5", + "\xD0\xC9" => "\xE7\x8C\xA9", + "\xD0\xCA" => "\xE6\x83\xBA", + "\xD0\xCB" => "\xE5\x85\xB4", + "\xD0\xCC" => "\xE5\x88\x91", + "\xD0\xCD" => "\xE5\x9E\x8B", + "\xD0\xCE" => "\xE5\xBD\xA2", + "\xD0\xCF" => "\xE9\x82\xA2", + "\xD0\xD0" => "\xE8\xA1\x8C", + "\xD0\xD1" => "\xE9\x86\x92", + "\xD0\xD2" => "\xE5\xB9\xB8", + "\xD0\xD3" => "\xE6\x9D\x8F", + "\xD0\xD4" => "\xE6\x80\xA7", + "\xD0\xD5" => "\xE5\xA7\x93", + "\xD0\xD6" => "\xE5\x85\x84", + "\xD0\xD7" => "\xE5\x87\xB6", + "\xD0\xD8" => "\xE8\x83\xB8", + "\xD0\xD9" => "\xE5\x8C\x88", + "\xD0\xDA" => "\xE6\xB1\xB9", + "\xD0\xDB" => "\xE9\x9B\x84", + "\xD0\xDC" => "\xE7\x86\x8A", + "\xD0\xDD" => "\xE4\xBC\x91", + "\xD0\xDE" => "\xE4\xBF\xAE", + "\xD0\xDF" => "\xE7\xBE\x9E", + "\xD0\xE0" => "\xE6\x9C\xBD", + "\xD0\xE1" => "\xE5\x97\x85", + "\xD0\xE2" => "\xE9\x94\x88", + "\xD0\xE3" => "\xE7\xA7\x80", + "\xD0\xE4" => "\xE8\xA2\x96", + "\xD0\xE5" => "\xE7\xBB\xA3", + "\xD0\xE6" => "\xE5\xA2\x9F", + "\xD0\xE7" => "\xE6\x88\x8C", + "\xD0\xE8" => "\xE9\x9C\x80", + "\xD0\xE9" => "\xE8\x99\x9A", + "\xD0\xEA" => "\xE5\x98\x98", + "\xD0\xEB" => "\xE9\xA1\xBB", + "\xD0\xEC" => "\xE5\xBE\x90", + "\xD0\xED" => "\xE8\xAE\xB8", + "\xD0\xEE" => "\xE8\x93\x84", + "\xD0\xEF" => "\xE9\x85\x97", + "\xD0\xF0" => "\xE5\x8F\x99", + "\xD0\xF1" => "\xE6\x97\xAD", + "\xD0\xF2" => "\xE5\xBA\x8F", + "\xD0\xF3" => "\xE7\x95\x9C", + "\xD0\xF4" => "\xE6\x81\xA4", + "\xD0\xF5" => "\xE7\xB5\xAE", + "\xD0\xF6" => "\xE5\xA9\xBF", + "\xD0\xF7" => "\xE7\xBB\xAA", + "\xD0\xF8" => "\xE7\xBB\xAD", + "\xD0\xF9" => "\xE8\xBD\xA9", + "\xD0\xFA" => "\xE5\x96\xA7", + "\xD0\xFB" => "\xE5\xAE\xA3", + "\xD0\xFC" => "\xE6\x82\xAC", + "\xD0\xFD" => "\xE6\x97\x8B", + "\xD0\xFE" => "\xE7\x8E\x84", + "\xD1\xA1" => "\xE9\x80\x89", + "\xD1\xA2" => "\xE7\x99\xA3", + "\xD1\xA3" => "\xE7\x9C\xA9", + "\xD1\xA4" => "\xE7\xBB\x9A", + "\xD1\xA5" => "\xE9\x9D\xB4", + "\xD1\xA6" => "\xE8\x96\x9B", + "\xD1\xA7" => "\xE5\xAD\xA6", + "\xD1\xA8" => "\xE7\xA9\xB4", + "\xD1\xA9" => "\xE9\x9B\xAA", + "\xD1\xAA" => "\xE8\xA1\x80", + "\xD1\xAB" => "\xE5\x8B\x8B", + "\xD1\xAC" => "\xE7\x86\x8F", + "\xD1\xAD" => "\xE5\xBE\xAA", + "\xD1\xAE" => "\xE6\x97\xAC", + "\xD1\xAF" => "\xE8\xAF\xA2", + "\xD1\xB0" => "\xE5\xAF\xBB", + "\xD1\xB1" => "\xE9\xA9\xAF", + "\xD1\xB2" => "\xE5\xB7\xA1", + "\xD1\xB3" => "\xE6\xAE\x89", + "\xD1\xB4" => "\xE6\xB1\x9B", + "\xD1\xB5" => "\xE8\xAE\xAD", + "\xD1\xB6" => "\xE8\xAE\xAF", + "\xD1\xB7" => "\xE9\x80\x8A", + "\xD1\xB8" => "\xE8\xBF\x85", + "\xD1\xB9" => "\xE5\x8E\x8B", + "\xD1\xBA" => "\xE6\x8A\xBC", + "\xD1\xBB" => "\xE9\xB8\xA6", + "\xD1\xBC" => "\xE9\xB8\xAD", + "\xD1\xBD" => "\xE5\x91\x80", + "\xD1\xBE" => "\xE4\xB8\xAB", + "\xD1\xBF" => "\xE8\x8A\xBD", + "\xD1\xC0" => "\xE7\x89\x99", + "\xD1\xC1" => "\xE8\x9A\x9C", + "\xD1\xC2" => "\xE5\xB4\x96", + "\xD1\xC3" => "\xE8\xA1\x99", + "\xD1\xC4" => "\xE6\xB6\xAF", + "\xD1\xC5" => "\xE9\x9B\x85", + "\xD1\xC6" => "\xE5\x93\x91", + "\xD1\xC7" => "\xE4\xBA\x9A", + "\xD1\xC8" => "\xE8\xAE\xB6", + "\xD1\xC9" => "\xE7\x84\x89", + "\xD1\xCA" => "\xE5\x92\xBD", + "\xD1\xCB" => "\xE9\x98\x89", + "\xD1\xCC" => "\xE7\x83\x9F", + "\xD1\xCD" => "\xE6\xB7\xB9", + "\xD1\xCE" => "\xE7\x9B\x90", + "\xD1\xCF" => "\xE4\xB8\xA5", + "\xD1\xD0" => "\xE7\xA0\x94", + "\xD1\xD1" => "\xE8\x9C\x92", + "\xD1\xD2" => "\xE5\xB2\xA9", + "\xD1\xD3" => "\xE5\xBB\xB6", + "\xD1\xD4" => "\xE8\xA8\x80", + "\xD1\xD5" => "\xE9\xA2\x9C", + "\xD1\xD6" => "\xE9\x98\x8E", + "\xD1\xD7" => "\xE7\x82\x8E", + "\xD1\xD8" => "\xE6\xB2\xBF", + "\xD1\xD9" => "\xE5\xA5\x84", + "\xD1\xDA" => "\xE6\x8E\xA9", + "\xD1\xDB" => "\xE7\x9C\xBC", + "\xD1\xDC" => "\xE8\xA1\x8D", + "\xD1\xDD" => "\xE6\xBC\x94", + "\xD1\xDE" => "\xE8\x89\xB3", + "\xD1\xDF" => "\xE5\xA0\xB0", + "\xD1\xE0" => "\xE7\x87\x95", + "\xD1\xE1" => "\xE5\x8E\x8C", + "\xD1\xE2" => "\xE7\xA0\x9A", + "\xD1\xE3" => "\xE9\x9B\x81", + "\xD1\xE4" => "\xE5\x94\x81", + "\xD1\xE5" => "\xE5\xBD\xA6", + "\xD1\xE6" => "\xE7\x84\xB0", + "\xD1\xE7" => "\xE5\xAE\xB4", + "\xD1\xE8" => "\xE8\xB0\x9A", + "\xD1\xE9" => "\xE9\xAA\x8C", + "\xD1\xEA" => "\xE6\xAE\x83", + "\xD1\xEB" => "\xE5\xA4\xAE", + "\xD1\xEC" => "\xE9\xB8\xAF", + "\xD1\xED" => "\xE7\xA7\xA7", + "\xD1\xEE" => "\xE6\x9D\xA8", + "\xD1\xEF" => "\xE6\x89\xAC", + "\xD1\xF0" => "\xE4\xBD\xAF", + "\xD1\xF1" => "\xE7\x96\xA1", + "\xD1\xF2" => "\xE7\xBE\x8A", + "\xD1\xF3" => "\xE6\xB4\x8B", + "\xD1\xF4" => "\xE9\x98\xB3", + "\xD1\xF5" => "\xE6\xB0\xA7", + "\xD1\xF6" => "\xE4\xBB\xB0", + "\xD1\xF7" => "\xE7\x97\x92", + "\xD1\xF8" => "\xE5\x85\xBB", + "\xD1\xF9" => "\xE6\xA0\xB7", + "\xD1\xFA" => "\xE6\xBC\xBE", + "\xD1\xFB" => "\xE9\x82\x80", + "\xD1\xFC" => "\xE8\x85\xB0", + "\xD1\xFD" => "\xE5\xA6\x96", + "\xD1\xFE" => "\xE7\x91\xB6", + "\xD2\xA1" => "\xE6\x91\x87", + "\xD2\xA2" => "\xE5\xB0\xA7", + "\xD2\xA3" => "\xE9\x81\xA5", + "\xD2\xA4" => "\xE7\xAA\x91", + "\xD2\xA5" => "\xE8\xB0\xA3", + "\xD2\xA6" => "\xE5\xA7\x9A", + "\xD2\xA7" => "\xE5\x92\xAC", + "\xD2\xA8" => "\xE8\x88\x80", + "\xD2\xA9" => "\xE8\x8D\xAF", + "\xD2\xAA" => "\xE8\xA6\x81", + "\xD2\xAB" => "\xE8\x80\x80", + "\xD2\xAC" => "\xE6\xA4\xB0", + "\xD2\xAD" => "\xE5\x99\x8E", + "\xD2\xAE" => "\xE8\x80\xB6", + "\xD2\xAF" => "\xE7\x88\xB7", + "\xD2\xB0" => "\xE9\x87\x8E", + "\xD2\xB1" => "\xE5\x86\xB6", + "\xD2\xB2" => "\xE4\xB9\x9F", + "\xD2\xB3" => "\xE9\xA1\xB5", + "\xD2\xB4" => "\xE6\x8E\x96", + "\xD2\xB5" => "\xE4\xB8\x9A", + "\xD2\xB6" => "\xE5\x8F\xB6", + "\xD2\xB7" => "\xE6\x9B\xB3", + "\xD2\xB8" => "\xE8\x85\x8B", + "\xD2\xB9" => "\xE5\xA4\x9C", + "\xD2\xBA" => "\xE6\xB6\xB2", + "\xD2\xBB" => "\xE4\xB8\x80", + "\xD2\xBC" => "\xE5\xA3\xB9", + "\xD2\xBD" => "\xE5\x8C\xBB", + "\xD2\xBE" => "\xE6\x8F\x96", + "\xD2\xBF" => "\xE9\x93\xB1", + "\xD2\xC0" => "\xE4\xBE\x9D", + "\xD2\xC1" => "\xE4\xBC\x8A", + "\xD2\xC2" => "\xE8\xA1\xA3", + "\xD2\xC3" => "\xE9\xA2\x90", + "\xD2\xC4" => "\xE5\xA4\xB7", + "\xD2\xC5" => "\xE9\x81\x97", + "\xD2\xC6" => "\xE7\xA7\xBB", + "\xD2\xC7" => "\xE4\xBB\xAA", + "\xD2\xC8" => "\xE8\x83\xB0", + "\xD2\xC9" => "\xE7\x96\x91", + "\xD2\xCA" => "\xE6\xB2\x82", + "\xD2\xCB" => "\xE5\xAE\x9C", + "\xD2\xCC" => "\xE5\xA7\xA8", + "\xD2\xCD" => "\xE5\xBD\x9D", + "\xD2\xCE" => "\xE6\xA4\x85", + "\xD2\xCF" => "\xE8\x9A\x81", + "\xD2\xD0" => "\xE5\x80\x9A", + "\xD2\xD1" => "\xE5\xB7\xB2", + "\xD2\xD2" => "\xE4\xB9\x99", + "\xD2\xD3" => "\xE7\x9F\xA3", + "\xD2\xD4" => "\xE4\xBB\xA5", + "\xD2\xD5" => "\xE8\x89\xBA", + "\xD2\xD6" => "\xE6\x8A\x91", + "\xD2\xD7" => "\xE6\x98\x93", + "\xD2\xD8" => "\xE9\x82\x91", + "\xD2\xD9" => "\xE5\xB1\xB9", + "\xD2\xDA" => "\xE4\xBA\xBF", + "\xD2\xDB" => "\xE5\xBD\xB9", + "\xD2\xDC" => "\xE8\x87\x86", + "\xD2\xDD" => "\xE9\x80\xB8", + "\xD2\xDE" => "\xE8\x82\x84", + "\xD2\xDF" => "\xE7\x96\xAB", + "\xD2\xE0" => "\xE4\xBA\xA6", + "\xD2\xE1" => "\xE8\xA3\x94", + "\xD2\xE2" => "\xE6\x84\x8F", + "\xD2\xE3" => "\xE6\xAF\x85", + "\xD2\xE4" => "\xE5\xBF\x86", + "\xD2\xE5" => "\xE4\xB9\x89", + "\xD2\xE6" => "\xE7\x9B\x8A", + "\xD2\xE7" => "\xE6\xBA\xA2", + "\xD2\xE8" => "\xE8\xAF\xA3", + "\xD2\xE9" => "\xE8\xAE\xAE", + "\xD2\xEA" => "\xE8\xB0\x8A", + "\xD2\xEB" => "\xE8\xAF\x91", + "\xD2\xEC" => "\xE5\xBC\x82", + "\xD2\xED" => "\xE7\xBF\xBC", + "\xD2\xEE" => "\xE7\xBF\x8C", + "\xD2\xEF" => "\xE7\xBB\x8E", + "\xD2\xF0" => "\xE8\x8C\xB5", + "\xD2\xF1" => "\xE8\x8D\xAB", + "\xD2\xF2" => "\xE5\x9B\xA0", + "\xD2\xF3" => "\xE6\xAE\xB7", + "\xD2\xF4" => "\xE9\x9F\xB3", + "\xD2\xF5" => "\xE9\x98\xB4", + "\xD2\xF6" => "\xE5\xA7\xBB", + "\xD2\xF7" => "\xE5\x90\x9F", + "\xD2\xF8" => "\xE9\x93\xB6", + "\xD2\xF9" => "\xE6\xB7\xAB", + "\xD2\xFA" => "\xE5\xAF\x85", + "\xD2\xFB" => "\xE9\xA5\xAE", + "\xD2\xFC" => "\xE5\xB0\xB9", + "\xD2\xFD" => "\xE5\xBC\x95", + "\xD2\xFE" => "\xE9\x9A\x90", + "\xD3\xA1" => "\xE5\x8D\xB0", + "\xD3\xA2" => "\xE8\x8B\xB1", + "\xD3\xA3" => "\xE6\xA8\xB1", + "\xD3\xA4" => "\xE5\xA9\xB4", + "\xD3\xA5" => "\xE9\xB9\xB0", + "\xD3\xA6" => "\xE5\xBA\x94", + "\xD3\xA7" => "\xE7\xBC\xA8", + "\xD3\xA8" => "\xE8\x8E\xB9", + "\xD3\xA9" => "\xE8\x90\xA4", + "\xD3\xAA" => "\xE8\x90\xA5", + "\xD3\xAB" => "\xE8\x8D\xA7", + "\xD3\xAC" => "\xE8\x9D\x87", + "\xD3\xAD" => "\xE8\xBF\x8E", + "\xD3\xAE" => "\xE8\xB5\xA2", + "\xD3\xAF" => "\xE7\x9B\x88", + "\xD3\xB0" => "\xE5\xBD\xB1", + "\xD3\xB1" => "\xE9\xA2\x96", + "\xD3\xB2" => "\xE7\xA1\xAC", + "\xD3\xB3" => "\xE6\x98\xA0", + "\xD3\xB4" => "\xE5\x93\x9F", + "\xD3\xB5" => "\xE6\x8B\xA5", + "\xD3\xB6" => "\xE4\xBD\xA3", + "\xD3\xB7" => "\xE8\x87\x83", + "\xD3\xB8" => "\xE7\x97\x88", + "\xD3\xB9" => "\xE5\xBA\xB8", + "\xD3\xBA" => "\xE9\x9B\x8D", + "\xD3\xBB" => "\xE8\xB8\x8A", + "\xD3\xBC" => "\xE8\x9B\xB9", + "\xD3\xBD" => "\xE5\x92\x8F", + "\xD3\xBE" => "\xE6\xB3\xB3", + "\xD3\xBF" => "\xE6\xB6\x8C", + "\xD3\xC0" => "\xE6\xB0\xB8", + "\xD3\xC1" => "\xE6\x81\xBF", + "\xD3\xC2" => "\xE5\x8B\x87", + "\xD3\xC3" => "\xE7\x94\xA8", + "\xD3\xC4" => "\xE5\xB9\xBD", + "\xD3\xC5" => "\xE4\xBC\x98", + "\xD3\xC6" => "\xE6\x82\xA0", + "\xD3\xC7" => "\xE5\xBF\xA7", + "\xD3\xC8" => "\xE5\xB0\xA4", + "\xD3\xC9" => "\xE7\x94\xB1", + "\xD3\xCA" => "\xE9\x82\xAE", + "\xD3\xCB" => "\xE9\x93\x80", + "\xD3\xCC" => "\xE7\x8A\xB9", + "\xD3\xCD" => "\xE6\xB2\xB9", + "\xD3\xCE" => "\xE6\xB8\xB8", + "\xD3\xCF" => "\xE9\x85\x89", + "\xD3\xD0" => "\xE6\x9C\x89", + "\xD3\xD1" => "\xE5\x8F\x8B", + "\xD3\xD2" => "\xE5\x8F\xB3", + "\xD3\xD3" => "\xE4\xBD\x91", + "\xD3\xD4" => "\xE9\x87\x89", + "\xD3\xD5" => "\xE8\xAF\xB1", + "\xD3\xD6" => "\xE5\x8F\x88", + "\xD3\xD7" => "\xE5\xB9\xBC", + "\xD3\xD8" => "\xE8\xBF\x82", + "\xD3\xD9" => "\xE6\xB7\xA4", + "\xD3\xDA" => "\xE4\xBA\x8E", + "\xD3\xDB" => "\xE7\x9B\x82", + "\xD3\xDC" => "\xE6\xA6\x86", + "\xD3\xDD" => "\xE8\x99\x9E", + "\xD3\xDE" => "\xE6\x84\x9A", + "\xD3\xDF" => "\xE8\x88\x86", + "\xD3\xE0" => "\xE4\xBD\x99", + "\xD3\xE1" => "\xE4\xBF\x9E", + "\xD3\xE2" => "\xE9\x80\xBE", + "\xD3\xE3" => "\xE9\xB1\xBC", + "\xD3\xE4" => "\xE6\x84\x89", + "\xD3\xE5" => "\xE6\xB8\x9D", + "\xD3\xE6" => "\xE6\xB8\x94", + "\xD3\xE7" => "\xE9\x9A\x85", + "\xD3\xE8" => "\xE4\xBA\x88", + "\xD3\xE9" => "\xE5\xA8\xB1", + "\xD3\xEA" => "\xE9\x9B\xA8", + "\xD3\xEB" => "\xE4\xB8\x8E", + "\xD3\xEC" => "\xE5\xB1\xBF", + "\xD3\xED" => "\xE7\xA6\xB9", + "\xD3\xEE" => "\xE5\xAE\x87", + "\xD3\xEF" => "\xE8\xAF\xAD", + "\xD3\xF0" => "\xE7\xBE\xBD", + "\xD3\xF1" => "\xE7\x8E\x89", + "\xD3\xF2" => "\xE5\x9F\x9F", + "\xD3\xF3" => "\xE8\x8A\x8B", + "\xD3\xF4" => "\xE9\x83\x81", + "\xD3\xF5" => "\xE5\x90\x81", + "\xD3\xF6" => "\xE9\x81\x87", + "\xD3\xF7" => "\xE5\x96\xBB", + "\xD3\xF8" => "\xE5\xB3\xAA", + "\xD3\xF9" => "\xE5\xBE\xA1", + "\xD3\xFA" => "\xE6\x84\x88", + "\xD3\xFB" => "\xE6\xAC\xB2", + "\xD3\xFC" => "\xE7\x8B\xB1", + "\xD3\xFD" => "\xE8\x82\xB2", + "\xD3\xFE" => "\xE8\xAA\x89", + "\xD4\xA1" => "\xE6\xB5\xB4", + "\xD4\xA2" => "\xE5\xAF\x93", + "\xD4\xA3" => "\xE8\xA3\x95", + "\xD4\xA4" => "\xE9\xA2\x84", + "\xD4\xA5" => "\xE8\xB1\xAB", + "\xD4\xA6" => "\xE9\xA9\xAD", + "\xD4\xA7" => "\xE9\xB8\xB3", + "\xD4\xA8" => "\xE6\xB8\x8A", + "\xD4\xA9" => "\xE5\x86\xA4", + "\xD4\xAA" => "\xE5\x85\x83", + "\xD4\xAB" => "\xE5\x9E\xA3", + "\xD4\xAC" => "\xE8\xA2\x81", + "\xD4\xAD" => "\xE5\x8E\x9F", + "\xD4\xAE" => "\xE6\x8F\xB4", + "\xD4\xAF" => "\xE8\xBE\x95", + "\xD4\xB0" => "\xE5\x9B\xAD", + "\xD4\xB1" => "\xE5\x91\x98", + "\xD4\xB2" => "\xE5\x9C\x86", + "\xD4\xB3" => "\xE7\x8C\xBF", + "\xD4\xB4" => "\xE6\xBA\x90", + "\xD4\xB5" => "\xE7\xBC\x98", + "\xD4\xB6" => "\xE8\xBF\x9C", + "\xD4\xB7" => "\xE8\x8B\x91", + "\xD4\xB8" => "\xE6\x84\xBF", + "\xD4\xB9" => "\xE6\x80\xA8", + "\xD4\xBA" => "\xE9\x99\xA2", + "\xD4\xBB" => "\xE6\x9B\xB0", + "\xD4\xBC" => "\xE7\xBA\xA6", + "\xD4\xBD" => "\xE8\xB6\x8A", + "\xD4\xBE" => "\xE8\xB7\x83", + "\xD4\xBF" => "\xE9\x92\xA5", + "\xD4\xC0" => "\xE5\xB2\xB3", + "\xD4\xC1" => "\xE7\xB2\xA4", + "\xD4\xC2" => "\xE6\x9C\x88", + "\xD4\xC3" => "\xE6\x82\xA6", + "\xD4\xC4" => "\xE9\x98\x85", + "\xD4\xC5" => "\xE8\x80\x98", + "\xD4\xC6" => "\xE4\xBA\x91", + "\xD4\xC7" => "\xE9\x83\xA7", + "\xD4\xC8" => "\xE5\x8C\x80", + "\xD4\xC9" => "\xE9\x99\xA8", + "\xD4\xCA" => "\xE5\x85\x81", + "\xD4\xCB" => "\xE8\xBF\x90", + "\xD4\xCC" => "\xE8\x95\xB4", + "\xD4\xCD" => "\xE9\x85\x9D", + "\xD4\xCE" => "\xE6\x99\x95", + "\xD4\xCF" => "\xE9\x9F\xB5", + "\xD4\xD0" => "\xE5\xAD\x95", + "\xD4\xD1" => "\xE5\x8C\x9D", + "\xD4\xD2" => "\xE7\xA0\xB8", + "\xD4\xD3" => "\xE6\x9D\x82", + "\xD4\xD4" => "\xE6\xA0\xBD", + "\xD4\xD5" => "\xE5\x93\x89", + "\xD4\xD6" => "\xE7\x81\xBE", + "\xD4\xD7" => "\xE5\xAE\xB0", + "\xD4\xD8" => "\xE8\xBD\xBD", + "\xD4\xD9" => "\xE5\x86\x8D", + "\xD4\xDA" => "\xE5\x9C\xA8", + "\xD4\xDB" => "\xE5\x92\xB1", + "\xD4\xDC" => "\xE6\x94\x92", + "\xD4\xDD" => "\xE6\x9A\x82", + "\xD4\xDE" => "\xE8\xB5\x9E", + "\xD4\xDF" => "\xE8\xB5\x83", + "\xD4\xE0" => "\xE8\x84\x8F", + "\xD4\xE1" => "\xE8\x91\xAC", + "\xD4\xE2" => "\xE9\x81\xAD", + "\xD4\xE3" => "\xE7\xB3\x9F", + "\xD4\xE4" => "\xE5\x87\xBF", + "\xD4\xE5" => "\xE8\x97\xBB", + "\xD4\xE6" => "\xE6\x9E\xA3", + "\xD4\xE7" => "\xE6\x97\xA9", + "\xD4\xE8" => "\xE6\xBE\xA1", + "\xD4\xE9" => "\xE8\x9A\xA4", + "\xD4\xEA" => "\xE8\xBA\x81", + "\xD4\xEB" => "\xE5\x99\xAA", + "\xD4\xEC" => "\xE9\x80\xA0", + "\xD4\xED" => "\xE7\x9A\x82", + "\xD4\xEE" => "\xE7\x81\xB6", + "\xD4\xEF" => "\xE7\x87\xA5", + "\xD4\xF0" => "\xE8\xB4\xA3", + "\xD4\xF1" => "\xE6\x8B\xA9", + "\xD4\xF2" => "\xE5\x88\x99", + "\xD4\xF3" => "\xE6\xB3\xBD", + "\xD4\xF4" => "\xE8\xB4\xBC", + "\xD4\xF5" => "\xE6\x80\x8E", + "\xD4\xF6" => "\xE5\xA2\x9E", + "\xD4\xF7" => "\xE6\x86\x8E", + "\xD4\xF8" => "\xE6\x9B\xBE", + "\xD4\xF9" => "\xE8\xB5\xA0", + "\xD4\xFA" => "\xE6\x89\x8E", + "\xD4\xFB" => "\xE5\x96\xB3", + "\xD4\xFC" => "\xE6\xB8\xA3", + "\xD4\xFD" => "\xE6\x9C\xAD", + "\xD4\xFE" => "\xE8\xBD\xA7", + "\xD5\xA1" => "\xE9\x93\xA1", + "\xD5\xA2" => "\xE9\x97\xB8", + "\xD5\xA3" => "\xE7\x9C\xA8", + "\xD5\xA4" => "\xE6\xA0\x85", + "\xD5\xA5" => "\xE6\xA6\xA8", + "\xD5\xA6" => "\xE5\x92\x8B", + "\xD5\xA7" => "\xE4\xB9\x8D", + "\xD5\xA8" => "\xE7\x82\xB8", + "\xD5\xA9" => "\xE8\xAF\x88", + "\xD5\xAA" => "\xE6\x91\x98", + "\xD5\xAB" => "\xE6\x96\x8B", + "\xD5\xAC" => "\xE5\xAE\x85", + "\xD5\xAD" => "\xE7\xAA\x84", + "\xD5\xAE" => "\xE5\x80\xBA", + "\xD5\xAF" => "\xE5\xAF\xA8", + "\xD5\xB0" => "\xE7\x9E\xBB", + "\xD5\xB1" => "\xE6\xAF\xA1", + "\xD5\xB2" => "\xE8\xA9\xB9", + "\xD5\xB3" => "\xE7\xB2\x98", + "\xD5\xB4" => "\xE6\xB2\xBE", + "\xD5\xB5" => "\xE7\x9B\x8F", + "\xD5\xB6" => "\xE6\x96\xA9", + "\xD5\xB7" => "\xE8\xBE\x97", + "\xD5\xB8" => "\xE5\xB4\xAD", + "\xD5\xB9" => "\xE5\xB1\x95", + "\xD5\xBA" => "\xE8\x98\xB8", + "\xD5\xBB" => "\xE6\xA0\x88", + "\xD5\xBC" => "\xE5\x8D\xA0", + "\xD5\xBD" => "\xE6\x88\x98", + "\xD5\xBE" => "\xE7\xAB\x99", + "\xD5\xBF" => "\xE6\xB9\x9B", + "\xD5\xC0" => "\xE7\xBB\xBD", + "\xD5\xC1" => "\xE6\xA8\x9F", + "\xD5\xC2" => "\xE7\xAB\xA0", + "\xD5\xC3" => "\xE5\xBD\xB0", + "\xD5\xC4" => "\xE6\xBC\xB3", + "\xD5\xC5" => "\xE5\xBC\xA0", + "\xD5\xC6" => "\xE6\x8E\x8C", + "\xD5\xC7" => "\xE6\xB6\xA8", + "\xD5\xC8" => "\xE6\x9D\x96", + "\xD5\xC9" => "\xE4\xB8\x88", + "\xD5\xCA" => "\xE5\xB8\x90", + "\xD5\xCB" => "\xE8\xB4\xA6", + "\xD5\xCC" => "\xE4\xBB\x97", + "\xD5\xCD" => "\xE8\x83\x80", + "\xD5\xCE" => "\xE7\x98\xB4", + "\xD5\xCF" => "\xE9\x9A\x9C", + "\xD5\xD0" => "\xE6\x8B\x9B", + "\xD5\xD1" => "\xE6\x98\xAD", + "\xD5\xD2" => "\xE6\x89\xBE", + "\xD5\xD3" => "\xE6\xB2\xBC", + "\xD5\xD4" => "\xE8\xB5\xB5", + "\xD5\xD5" => "\xE7\x85\xA7", + "\xD5\xD6" => "\xE7\xBD\xA9", + "\xD5\xD7" => "\xE5\x85\x86", + "\xD5\xD8" => "\xE8\x82\x87", + "\xD5\xD9" => "\xE5\x8F\xAC", + "\xD5\xDA" => "\xE9\x81\xAE", + "\xD5\xDB" => "\xE6\x8A\x98", + "\xD5\xDC" => "\xE5\x93\xB2", + "\xD5\xDD" => "\xE8\x9B\xB0", + "\xD5\xDE" => "\xE8\xBE\x99", + "\xD5\xDF" => "\xE8\x80\x85", + "\xD5\xE0" => "\xE9\x94\x97", + "\xD5\xE1" => "\xE8\x94\x97", + "\xD5\xE2" => "\xE8\xBF\x99", + "\xD5\xE3" => "\xE6\xB5\x99", + "\xD5\xE4" => "\xE7\x8F\x8D", + "\xD5\xE5" => "\xE6\x96\x9F", + "\xD5\xE6" => "\xE7\x9C\x9F", + "\xD5\xE7" => "\xE7\x94\x84", + "\xD5\xE8" => "\xE7\xA0\xA7", + "\xD5\xE9" => "\xE8\x87\xBB", + "\xD5\xEA" => "\xE8\xB4\x9E", + "\xD5\xEB" => "\xE9\x92\x88", + "\xD5\xEC" => "\xE4\xBE\xA6", + "\xD5\xED" => "\xE6\x9E\x95", + "\xD5\xEE" => "\xE7\x96\xB9", + "\xD5\xEF" => "\xE8\xAF\x8A", + "\xD5\xF0" => "\xE9\x9C\x87", + "\xD5\xF1" => "\xE6\x8C\xAF", + "\xD5\xF2" => "\xE9\x95\x87", + "\xD5\xF3" => "\xE9\x98\xB5", + "\xD5\xF4" => "\xE8\x92\xB8", + "\xD5\xF5" => "\xE6\x8C\xA3", + "\xD5\xF6" => "\xE7\x9D\x81", + "\xD5\xF7" => "\xE5\xBE\x81", + "\xD5\xF8" => "\xE7\x8B\xB0", + "\xD5\xF9" => "\xE4\xBA\x89", + "\xD5\xFA" => "\xE6\x80\x94", + "\xD5\xFB" => "\xE6\x95\xB4", + "\xD5\xFC" => "\xE6\x8B\xAF", + "\xD5\xFD" => "\xE6\xAD\xA3", + "\xD5\xFE" => "\xE6\x94\xBF", + "\xD6\xA1" => "\xE5\xB8\xA7", + "\xD6\xA2" => "\xE7\x97\x87", + "\xD6\xA3" => "\xE9\x83\x91", + "\xD6\xA4" => "\xE8\xAF\x81", + "\xD6\xA5" => "\xE8\x8A\x9D", + "\xD6\xA6" => "\xE6\x9E\x9D", + "\xD6\xA7" => "\xE6\x94\xAF", + "\xD6\xA8" => "\xE5\x90\xB1", + "\xD6\xA9" => "\xE8\x9C\x98", + "\xD6\xAA" => "\xE7\x9F\xA5", + "\xD6\xAB" => "\xE8\x82\xA2", + "\xD6\xAC" => "\xE8\x84\x82", + "\xD6\xAD" => "\xE6\xB1\x81", + "\xD6\xAE" => "\xE4\xB9\x8B", + "\xD6\xAF" => "\xE7\xBB\x87", + "\xD6\xB0" => "\xE8\x81\x8C", + "\xD6\xB1" => "\xE7\x9B\xB4", + "\xD6\xB2" => "\xE6\xA4\x8D", + "\xD6\xB3" => "\xE6\xAE\x96", + "\xD6\xB4" => "\xE6\x89\xA7", + "\xD6\xB5" => "\xE5\x80\xBC", + "\xD6\xB6" => "\xE4\xBE\x84", + "\xD6\xB7" => "\xE5\x9D\x80", + "\xD6\xB8" => "\xE6\x8C\x87", + "\xD6\xB9" => "\xE6\xAD\xA2", + "\xD6\xBA" => "\xE8\xB6\xBE", + "\xD6\xBB" => "\xE5\x8F\xAA", + "\xD6\xBC" => "\xE6\x97\xA8", + "\xD6\xBD" => "\xE7\xBA\xB8", + "\xD6\xBE" => "\xE5\xBF\x97", + "\xD6\xBF" => "\xE6\x8C\x9A", + "\xD6\xC0" => "\xE6\x8E\xB7", + "\xD6\xC1" => "\xE8\x87\xB3", + "\xD6\xC2" => "\xE8\x87\xB4", + "\xD6\xC3" => "\xE7\xBD\xAE", + "\xD6\xC4" => "\xE5\xB8\x9C", + "\xD6\xC5" => "\xE5\xB3\x99", + "\xD6\xC6" => "\xE5\x88\xB6", + "\xD6\xC7" => "\xE6\x99\xBA", + "\xD6\xC8" => "\xE7\xA7\xA9", + "\xD6\xC9" => "\xE7\xA8\x9A", + "\xD6\xCA" => "\xE8\xB4\xA8", + "\xD6\xCB" => "\xE7\x82\x99", + "\xD6\xCC" => "\xE7\x97\x94", + "\xD6\xCD" => "\xE6\xBB\x9E", + "\xD6\xCE" => "\xE6\xB2\xBB", + "\xD6\xCF" => "\xE7\xAA\x92", + "\xD6\xD0" => "\xE4\xB8\xAD", + "\xD6\xD1" => "\xE7\x9B\x85", + "\xD6\xD2" => "\xE5\xBF\xA0", + "\xD6\xD3" => "\xE9\x92\x9F", + "\xD6\xD4" => "\xE8\xA1\xB7", + "\xD6\xD5" => "\xE7\xBB\x88", + "\xD6\xD6" => "\xE7\xA7\x8D", + "\xD6\xD7" => "\xE8\x82\xBF", + "\xD6\xD8" => "\xE9\x87\x8D", + "\xD6\xD9" => "\xE4\xBB\xB2", + "\xD6\xDA" => "\xE4\xBC\x97", + "\xD6\xDB" => "\xE8\x88\x9F", + "\xD6\xDC" => "\xE5\x91\xA8", + "\xD6\xDD" => "\xE5\xB7\x9E", + "\xD6\xDE" => "\xE6\xB4\xB2", + "\xD6\xDF" => "\xE8\xAF\x8C", + "\xD6\xE0" => "\xE7\xB2\xA5", + "\xD6\xE1" => "\xE8\xBD\xB4", + "\xD6\xE2" => "\xE8\x82\x98", + "\xD6\xE3" => "\xE5\xB8\x9A", + "\xD6\xE4" => "\xE5\x92\x92", + "\xD6\xE5" => "\xE7\x9A\xB1", + "\xD6\xE6" => "\xE5\xAE\x99", + "\xD6\xE7" => "\xE6\x98\xBC", + "\xD6\xE8" => "\xE9\xAA\xA4", + "\xD6\xE9" => "\xE7\x8F\xA0", + "\xD6\xEA" => "\xE6\xA0\xAA", + "\xD6\xEB" => "\xE8\x9B\x9B", + "\xD6\xEC" => "\xE6\x9C\xB1", + "\xD6\xED" => "\xE7\x8C\xAA", + "\xD6\xEE" => "\xE8\xAF\xB8", + "\xD6\xEF" => "\xE8\xAF\x9B", + "\xD6\xF0" => "\xE9\x80\x90", + "\xD6\xF1" => "\xE7\xAB\xB9", + "\xD6\xF2" => "\xE7\x83\x9B", + "\xD6\xF3" => "\xE7\x85\xAE", + "\xD6\xF4" => "\xE6\x8B\x84", + "\xD6\xF5" => "\xE7\x9E\xA9", + "\xD6\xF6" => "\xE5\x98\xB1", + "\xD6\xF7" => "\xE4\xB8\xBB", + "\xD6\xF8" => "\xE8\x91\x97", + "\xD6\xF9" => "\xE6\x9F\xB1", + "\xD6\xFA" => "\xE5\x8A\xA9", + "\xD6\xFB" => "\xE8\x9B\x80", + "\xD6\xFC" => "\xE8\xB4\xAE", + "\xD6\xFD" => "\xE9\x93\xB8", + "\xD6\xFE" => "\xE7\xAD\x91", + "\xD7\xA1" => "\xE4\xBD\x8F", + "\xD7\xA2" => "\xE6\xB3\xA8", + "\xD7\xA3" => "\xE7\xA5\x9D", + "\xD7\xA4" => "\xE9\xA9\xBB", + "\xD7\xA5" => "\xE6\x8A\x93", + "\xD7\xA6" => "\xE7\x88\xAA", + "\xD7\xA7" => "\xE6\x8B\xBD", + "\xD7\xA8" => "\xE4\xB8\x93", + "\xD7\xA9" => "\xE7\xA0\x96", + "\xD7\xAA" => "\xE8\xBD\xAC", + "\xD7\xAB" => "\xE6\x92\xB0", + "\xD7\xAC" => "\xE8\xB5\x9A", + "\xD7\xAD" => "\xE7\xAF\x86", + "\xD7\xAE" => "\xE6\xA1\xA9", + "\xD7\xAF" => "\xE5\xBA\x84", + "\xD7\xB0" => "\xE8\xA3\x85", + "\xD7\xB1" => "\xE5\xA6\x86", + "\xD7\xB2" => "\xE6\x92\x9E", + "\xD7\xB3" => "\xE5\xA3\xAE", + "\xD7\xB4" => "\xE7\x8A\xB6", + "\xD7\xB5" => "\xE6\xA4\x8E", + "\xD7\xB6" => "\xE9\x94\xA5", + "\xD7\xB7" => "\xE8\xBF\xBD", + "\xD7\xB8" => "\xE8\xB5\x98", + "\xD7\xB9" => "\xE5\x9D\xA0", + "\xD7\xBA" => "\xE7\xBC\x80", + "\xD7\xBB" => "\xE8\xB0\x86", + "\xD7\xBC" => "\xE5\x87\x86", + "\xD7\xBD" => "\xE6\x8D\x89", + "\xD7\xBE" => "\xE6\x8B\x99", + "\xD7\xBF" => "\xE5\x8D\x93", + "\xD7\xC0" => "\xE6\xA1\x8C", + "\xD7\xC1" => "\xE7\x90\xA2", + "\xD7\xC2" => "\xE8\x8C\x81", + "\xD7\xC3" => "\xE9\x85\x8C", + "\xD7\xC4" => "\xE5\x95\x84", + "\xD7\xC5" => "\xE7\x9D\x80", + "\xD7\xC6" => "\xE7\x81\xBC", + "\xD7\xC7" => "\xE6\xB5\x8A", + "\xD7\xC8" => "\xE5\x85\xB9", + "\xD7\xC9" => "\xE5\x92\xA8", + "\xD7\xCA" => "\xE8\xB5\x84", + "\xD7\xCB" => "\xE5\xA7\xBF", + "\xD7\xCC" => "\xE6\xBB\x8B", + "\xD7\xCD" => "\xE6\xB7\x84", + "\xD7\xCE" => "\xE5\xAD\x9C", + "\xD7\xCF" => "\xE7\xB4\xAB", + "\xD7\xD0" => "\xE4\xBB\x94", + "\xD7\xD1" => "\xE7\xB1\xBD", + "\xD7\xD2" => "\xE6\xBB\x93", + "\xD7\xD3" => "\xE5\xAD\x90", + "\xD7\xD4" => "\xE8\x87\xAA", + "\xD7\xD5" => "\xE6\xB8\x8D", + "\xD7\xD6" => "\xE5\xAD\x97", + "\xD7\xD7" => "\xE9\xAC\x83", + "\xD7\xD8" => "\xE6\xA3\x95", + "\xD7\xD9" => "\xE8\xB8\xAA", + "\xD7\xDA" => "\xE5\xAE\x97", + "\xD7\xDB" => "\xE7\xBB\xBC", + "\xD7\xDC" => "\xE6\x80\xBB", + "\xD7\xDD" => "\xE7\xBA\xB5", + "\xD7\xDE" => "\xE9\x82\xB9", + "\xD7\xDF" => "\xE8\xB5\xB0", + "\xD7\xE0" => "\xE5\xA5\x8F", + "\xD7\xE1" => "\xE6\x8F\x8D", + "\xD7\xE2" => "\xE7\xA7\x9F", + "\xD7\xE3" => "\xE8\xB6\xB3", + "\xD7\xE4" => "\xE5\x8D\x92", + "\xD7\xE5" => "\xE6\x97\x8F", + "\xD7\xE6" => "\xE7\xA5\x96", + "\xD7\xE7" => "\xE8\xAF\x85", + "\xD7\xE8" => "\xE9\x98\xBB", + "\xD7\xE9" => "\xE7\xBB\x84", + "\xD7\xEA" => "\xE9\x92\xBB", + "\xD7\xEB" => "\xE7\xBA\x82", + "\xD7\xEC" => "\xE5\x98\xB4", + "\xD7\xED" => "\xE9\x86\x89", + "\xD7\xEE" => "\xE6\x9C\x80", + "\xD7\xEF" => "\xE7\xBD\xAA", + "\xD7\xF0" => "\xE5\xB0\x8A", + "\xD7\xF1" => "\xE9\x81\xB5", + "\xD7\xF2" => "\xE6\x98\xA8", + "\xD7\xF3" => "\xE5\xB7\xA6", + "\xD7\xF4" => "\xE4\xBD\x90", + "\xD7\xF5" => "\xE6\x9F\x9E", + "\xD7\xF6" => "\xE5\x81\x9A", + "\xD7\xF7" => "\xE4\xBD\x9C", + "\xD7\xF8" => "\xE5\x9D\x90", + "\xD7\xF9" => "\xE5\xBA\xA7", + "\xD8\xA1" => "\xE4\xBA\x8D", + "\xD8\xA2" => "\xE4\xB8\x8C", + "\xD8\xA3" => "\xE5\x85\x80", + "\xD8\xA4" => "\xE4\xB8\x90", + "\xD8\xA5" => "\xE5\xBB\xBF", + "\xD8\xA6" => "\xE5\x8D\x85", + "\xD8\xA7" => "\xE4\xB8\x95", + "\xD8\xA8" => "\xE4\xBA\x98", + "\xD8\xA9" => "\xE4\xB8\x9E", + "\xD8\xAA" => "\xE9\xAC\xB2", + "\xD8\xAB" => "\xE5\xAD\xAC", + "\xD8\xAC" => "\xE5\x99\xA9", + "\xD8\xAD" => "\xE4\xB8\xA8", + "\xD8\xAE" => "\xE7\xA6\xBA", + "\xD8\xAF" => "\xE4\xB8\xBF", + "\xD8\xB0" => "\xE5\x8C\x95", + "\xD8\xB1" => "\xE4\xB9\x87", + "\xD8\xB2" => "\xE5\xA4\xAD", + "\xD8\xB3" => "\xE7\x88\xBB", + "\xD8\xB4" => "\xE5\x8D\xAE", + "\xD8\xB5" => "\xE6\xB0\x90", + "\xD8\xB6" => "\xE5\x9B\x9F", + "\xD8\xB7" => "\xE8\x83\xA4", + "\xD8\xB8" => "\xE9\xA6\x97", + "\xD8\xB9" => "\xE6\xAF\x93", + "\xD8\xBA" => "\xE7\x9D\xBE", + "\xD8\xBB" => "\xE9\xBC\x97", + "\xD8\xBC" => "\xE4\xB8\xB6", + "\xD8\xBD" => "\xE4\xBA\x9F", + "\xD8\xBE" => "\xE9\xBC\x90", + "\xD8\xBF" => "\xE4\xB9\x9C", + "\xD8\xC0" => "\xE4\xB9\xA9", + "\xD8\xC1" => "\xE4\xBA\x93", + "\xD8\xC2" => "\xE8\x8A\x88", + "\xD8\xC3" => "\xE5\xAD\x9B", + "\xD8\xC4" => "\xE5\x95\xAC", + "\xD8\xC5" => "\xE5\x98\x8F", + "\xD8\xC6" => "\xE4\xBB\x84", + "\xD8\xC7" => "\xE5\x8E\x8D", + "\xD8\xC8" => "\xE5\x8E\x9D", + "\xD8\xC9" => "\xE5\x8E\xA3", + "\xD8\xCA" => "\xE5\x8E\xA5", + "\xD8\xCB" => "\xE5\x8E\xAE", + "\xD8\xCC" => "\xE9\x9D\xA5", + "\xD8\xCD" => "\xE8\xB5\x9D", + "\xD8\xCE" => "\xE5\x8C\x9A", + "\xD8\xCF" => "\xE5\x8F\xB5", + "\xD8\xD0" => "\xE5\x8C\xA6", + "\xD8\xD1" => "\xE5\x8C\xAE", + "\xD8\xD2" => "\xE5\x8C\xBE", + "\xD8\xD3" => "\xE8\xB5\x9C", + "\xD8\xD4" => "\xE5\x8D\xA6", + "\xD8\xD5" => "\xE5\x8D\xA3", + "\xD8\xD6" => "\xE5\x88\x82", + "\xD8\xD7" => "\xE5\x88\x88", + "\xD8\xD8" => "\xE5\x88\x8E", + "\xD8\xD9" => "\xE5\x88\xAD", + "\xD8\xDA" => "\xE5\x88\xB3", + "\xD8\xDB" => "\xE5\x88\xBF", + "\xD8\xDC" => "\xE5\x89\x80", + "\xD8\xDD" => "\xE5\x89\x8C", + "\xD8\xDE" => "\xE5\x89\x9E", + "\xD8\xDF" => "\xE5\x89\xA1", + "\xD8\xE0" => "\xE5\x89\x9C", + "\xD8\xE1" => "\xE8\x92\xAF", + "\xD8\xE2" => "\xE5\x89\xBD", + "\xD8\xE3" => "\xE5\x8A\x82", + "\xD8\xE4" => "\xE5\x8A\x81", + "\xD8\xE5" => "\xE5\x8A\x90", + "\xD8\xE6" => "\xE5\x8A\x93", + "\xD8\xE7" => "\xE5\x86\x82", + "\xD8\xE8" => "\xE7\xBD\x94", + "\xD8\xE9" => "\xE4\xBA\xBB", + "\xD8\xEA" => "\xE4\xBB\x83", + "\xD8\xEB" => "\xE4\xBB\x89", + "\xD8\xEC" => "\xE4\xBB\x82", + "\xD8\xED" => "\xE4\xBB\xA8", + "\xD8\xEE" => "\xE4\xBB\xA1", + "\xD8\xEF" => "\xE4\xBB\xAB", + "\xD8\xF0" => "\xE4\xBB\x9E", + "\xD8\xF1" => "\xE4\xBC\x9B", + "\xD8\xF2" => "\xE4\xBB\xB3", + "\xD8\xF3" => "\xE4\xBC\xA2", + "\xD8\xF4" => "\xE4\xBD\xA4", + "\xD8\xF5" => "\xE4\xBB\xB5", + "\xD8\xF6" => "\xE4\xBC\xA5", + "\xD8\xF7" => "\xE4\xBC\xA7", + "\xD8\xF8" => "\xE4\xBC\x89", + "\xD8\xF9" => "\xE4\xBC\xAB", + "\xD8\xFA" => "\xE4\xBD\x9E", + "\xD8\xFB" => "\xE4\xBD\xA7", + "\xD8\xFC" => "\xE6\x94\xB8", + "\xD8\xFD" => "\xE4\xBD\x9A", + "\xD8\xFE" => "\xE4\xBD\x9D", + "\xD9\xA1" => "\xE4\xBD\x9F", + "\xD9\xA2" => "\xE4\xBD\x97", + "\xD9\xA3" => "\xE4\xBC\xB2", + "\xD9\xA4" => "\xE4\xBC\xBD", + "\xD9\xA5" => "\xE4\xBD\xB6", + "\xD9\xA6" => "\xE4\xBD\xB4", + "\xD9\xA7" => "\xE4\xBE\x91", + "\xD9\xA8" => "\xE4\xBE\x89", + "\xD9\xA9" => "\xE4\xBE\x83", + "\xD9\xAA" => "\xE4\xBE\x8F", + "\xD9\xAB" => "\xE4\xBD\xBE", + "\xD9\xAC" => "\xE4\xBD\xBB", + "\xD9\xAD" => "\xE4\xBE\xAA", + "\xD9\xAE" => "\xE4\xBD\xBC", + "\xD9\xAF" => "\xE4\xBE\xAC", + "\xD9\xB0" => "\xE4\xBE\x94", + "\xD9\xB1" => "\xE4\xBF\xA6", + "\xD9\xB2" => "\xE4\xBF\xA8", + "\xD9\xB3" => "\xE4\xBF\xAA", + "\xD9\xB4" => "\xE4\xBF\x85", + "\xD9\xB5" => "\xE4\xBF\x9A", + "\xD9\xB6" => "\xE4\xBF\xA3", + "\xD9\xB7" => "\xE4\xBF\x9C", + "\xD9\xB8" => "\xE4\xBF\x91", + "\xD9\xB9" => "\xE4\xBF\x9F", + "\xD9\xBA" => "\xE4\xBF\xB8", + "\xD9\xBB" => "\xE5\x80\xA9", + "\xD9\xBC" => "\xE5\x81\x8C", + "\xD9\xBD" => "\xE4\xBF\xB3", + "\xD9\xBE" => "\xE5\x80\xAC", + "\xD9\xBF" => "\xE5\x80\x8F", + "\xD9\xC0" => "\xE5\x80\xAE", + "\xD9\xC1" => "\xE5\x80\xAD", + "\xD9\xC2" => "\xE4\xBF\xBE", + "\xD9\xC3" => "\xE5\x80\x9C", + "\xD9\xC4" => "\xE5\x80\x8C", + "\xD9\xC5" => "\xE5\x80\xA5", + "\xD9\xC6" => "\xE5\x80\xA8", + "\xD9\xC7" => "\xE5\x81\xBE", + "\xD9\xC8" => "\xE5\x81\x83", + "\xD9\xC9" => "\xE5\x81\x95", + "\xD9\xCA" => "\xE5\x81\x88", + "\xD9\xCB" => "\xE5\x81\x8E", + "\xD9\xCC" => "\xE5\x81\xAC", + "\xD9\xCD" => "\xE5\x81\xBB", + "\xD9\xCE" => "\xE5\x82\xA5", + "\xD9\xCF" => "\xE5\x82\xA7", + "\xD9\xD0" => "\xE5\x82\xA9", + "\xD9\xD1" => "\xE5\x82\xBA", + "\xD9\xD2" => "\xE5\x83\x96", + "\xD9\xD3" => "\xE5\x84\x86", + "\xD9\xD4" => "\xE5\x83\xAD", + "\xD9\xD5" => "\xE5\x83\xAC", + "\xD9\xD6" => "\xE5\x83\xA6", + "\xD9\xD7" => "\xE5\x83\xAE", + "\xD9\xD8" => "\xE5\x84\x87", + "\xD9\xD9" => "\xE5\x84\x8B", + "\xD9\xDA" => "\xE4\xBB\x9D", + "\xD9\xDB" => "\xE6\xB0\xBD", + "\xD9\xDC" => "\xE4\xBD\x98", + "\xD9\xDD" => "\xE4\xBD\xA5", + "\xD9\xDE" => "\xE4\xBF\x8E", + "\xD9\xDF" => "\xE9\xBE\xA0", + "\xD9\xE0" => "\xE6\xB1\x86", + "\xD9\xE1" => "\xE7\xB1\xB4", + "\xD9\xE2" => "\xE5\x85\xAE", + "\xD9\xE3" => "\xE5\xB7\xBD", + "\xD9\xE4" => "\xE9\xBB\x89", + "\xD9\xE5" => "\xE9\xA6\x98", + "\xD9\xE6" => "\xE5\x86\x81", + "\xD9\xE7" => "\xE5\xA4\x94", + "\xD9\xE8" => "\xE5\x8B\xB9", + "\xD9\xE9" => "\xE5\x8C\x8D", + "\xD9\xEA" => "\xE8\xA8\x87", + "\xD9\xEB" => "\xE5\x8C\x90", + "\xD9\xEC" => "\xE5\x87\xAB", + "\xD9\xED" => "\xE5\xA4\x99", + "\xD9\xEE" => "\xE5\x85\x95", + "\xD9\xEF" => "\xE4\xBA\xA0", + "\xD9\xF0" => "\xE5\x85\x96", + "\xD9\xF1" => "\xE4\xBA\xB3", + "\xD9\xF2" => "\xE8\xA1\xAE", + "\xD9\xF3" => "\xE8\xA2\xA4", + "\xD9\xF4" => "\xE4\xBA\xB5", + "\xD9\xF5" => "\xE8\x84\x94", + "\xD9\xF6" => "\xE8\xA3\x92", + "\xD9\xF7" => "\xE7\xA6\x80", + "\xD9\xF8" => "\xE5\xAC\xB4", + "\xD9\xF9" => "\xE8\xA0\x83", + "\xD9\xFA" => "\xE7\xBE\xB8", + "\xD9\xFB" => "\xE5\x86\xAB", + "\xD9\xFC" => "\xE5\x86\xB1", + "\xD9\xFD" => "\xE5\x86\xBD", + "\xD9\xFE" => "\xE5\x86\xBC", + "\xDA\xA1" => "\xE5\x87\x87", + "\xDA\xA2" => "\xE5\x86\x96", + "\xDA\xA3" => "\xE5\x86\xA2", + "\xDA\xA4" => "\xE5\x86\xA5", + "\xDA\xA5" => "\xE8\xAE\xA0", + "\xDA\xA6" => "\xE8\xAE\xA6", + "\xDA\xA7" => "\xE8\xAE\xA7", + "\xDA\xA8" => "\xE8\xAE\xAA", + "\xDA\xA9" => "\xE8\xAE\xB4", + "\xDA\xAA" => "\xE8\xAE\xB5", + "\xDA\xAB" => "\xE8\xAE\xB7", + "\xDA\xAC" => "\xE8\xAF\x82", + "\xDA\xAD" => "\xE8\xAF\x83", + "\xDA\xAE" => "\xE8\xAF\x8B", + "\xDA\xAF" => "\xE8\xAF\x8F", + "\xDA\xB0" => "\xE8\xAF\x8E", + "\xDA\xB1" => "\xE8\xAF\x92", + "\xDA\xB2" => "\xE8\xAF\x93", + "\xDA\xB3" => "\xE8\xAF\x94", + "\xDA\xB4" => "\xE8\xAF\x96", + "\xDA\xB5" => "\xE8\xAF\x98", + "\xDA\xB6" => "\xE8\xAF\x99", + "\xDA\xB7" => "\xE8\xAF\x9C", + "\xDA\xB8" => "\xE8\xAF\x9F", + "\xDA\xB9" => "\xE8\xAF\xA0", + "\xDA\xBA" => "\xE8\xAF\xA4", + "\xDA\xBB" => "\xE8\xAF\xA8", + "\xDA\xBC" => "\xE8\xAF\xA9", + "\xDA\xBD" => "\xE8\xAF\xAE", + "\xDA\xBE" => "\xE8\xAF\xB0", + "\xDA\xBF" => "\xE8\xAF\xB3", + "\xDA\xC0" => "\xE8\xAF\xB6", + "\xDA\xC1" => "\xE8\xAF\xB9", + "\xDA\xC2" => "\xE8\xAF\xBC", + "\xDA\xC3" => "\xE8\xAF\xBF", + "\xDA\xC4" => "\xE8\xB0\x80", + "\xDA\xC5" => "\xE8\xB0\x82", + "\xDA\xC6" => "\xE8\xB0\x84", + "\xDA\xC7" => "\xE8\xB0\x87", + "\xDA\xC8" => "\xE8\xB0\x8C", + "\xDA\xC9" => "\xE8\xB0\x8F", + "\xDA\xCA" => "\xE8\xB0\x91", + "\xDA\xCB" => "\xE8\xB0\x92", + "\xDA\xCC" => "\xE8\xB0\x94", + "\xDA\xCD" => "\xE8\xB0\x95", + "\xDA\xCE" => "\xE8\xB0\x96", + "\xDA\xCF" => "\xE8\xB0\x99", + "\xDA\xD0" => "\xE8\xB0\x9B", + "\xDA\xD1" => "\xE8\xB0\x98", + "\xDA\xD2" => "\xE8\xB0\x9D", + "\xDA\xD3" => "\xE8\xB0\x9F", + "\xDA\xD4" => "\xE8\xB0\xA0", + "\xDA\xD5" => "\xE8\xB0\xA1", + "\xDA\xD6" => "\xE8\xB0\xA5", + "\xDA\xD7" => "\xE8\xB0\xA7", + "\xDA\xD8" => "\xE8\xB0\xAA", + "\xDA\xD9" => "\xE8\xB0\xAB", + "\xDA\xDA" => "\xE8\xB0\xAE", + "\xDA\xDB" => "\xE8\xB0\xAF", + "\xDA\xDC" => "\xE8\xB0\xB2", + "\xDA\xDD" => "\xE8\xB0\xB3", + "\xDA\xDE" => "\xE8\xB0\xB5", + "\xDA\xDF" => "\xE8\xB0\xB6", + "\xDA\xE0" => "\xE5\x8D\xA9", + "\xDA\xE1" => "\xE5\x8D\xBA", + "\xDA\xE2" => "\xE9\x98\x9D", + "\xDA\xE3" => "\xE9\x98\xA2", + "\xDA\xE4" => "\xE9\x98\xA1", + "\xDA\xE5" => "\xE9\x98\xB1", + "\xDA\xE6" => "\xE9\x98\xAA", + "\xDA\xE7" => "\xE9\x98\xBD", + "\xDA\xE8" => "\xE9\x98\xBC", + "\xDA\xE9" => "\xE9\x99\x82", + "\xDA\xEA" => "\xE9\x99\x89", + "\xDA\xEB" => "\xE9\x99\x94", + "\xDA\xEC" => "\xE9\x99\x9F", + "\xDA\xED" => "\xE9\x99\xA7", + "\xDA\xEE" => "\xE9\x99\xAC", + "\xDA\xEF" => "\xE9\x99\xB2", + "\xDA\xF0" => "\xE9\x99\xB4", + "\xDA\xF1" => "\xE9\x9A\x88", + "\xDA\xF2" => "\xE9\x9A\x8D", + "\xDA\xF3" => "\xE9\x9A\x97", + "\xDA\xF4" => "\xE9\x9A\xB0", + "\xDA\xF5" => "\xE9\x82\x97", + "\xDA\xF6" => "\xE9\x82\x9B", + "\xDA\xF7" => "\xE9\x82\x9D", + "\xDA\xF8" => "\xE9\x82\x99", + "\xDA\xF9" => "\xE9\x82\xAC", + "\xDA\xFA" => "\xE9\x82\xA1", + "\xDA\xFB" => "\xE9\x82\xB4", + "\xDA\xFC" => "\xE9\x82\xB3", + "\xDA\xFD" => "\xE9\x82\xB6", + "\xDA\xFE" => "\xE9\x82\xBA", + "\xDB\xA1" => "\xE9\x82\xB8", + "\xDB\xA2" => "\xE9\x82\xB0", + "\xDB\xA3" => "\xE9\x83\x8F", + "\xDB\xA4" => "\xE9\x83\x85", + "\xDB\xA5" => "\xE9\x82\xBE", + "\xDB\xA6" => "\xE9\x83\x90", + "\xDB\xA7" => "\xE9\x83\x84", + "\xDB\xA8" => "\xE9\x83\x87", + "\xDB\xA9" => "\xE9\x83\x93", + "\xDB\xAA" => "\xE9\x83\xA6", + "\xDB\xAB" => "\xE9\x83\xA2", + "\xDB\xAC" => "\xE9\x83\x9C", + "\xDB\xAD" => "\xE9\x83\x97", + "\xDB\xAE" => "\xE9\x83\x9B", + "\xDB\xAF" => "\xE9\x83\xAB", + "\xDB\xB0" => "\xE9\x83\xAF", + "\xDB\xB1" => "\xE9\x83\xBE", + "\xDB\xB2" => "\xE9\x84\x84", + "\xDB\xB3" => "\xE9\x84\xA2", + "\xDB\xB4" => "\xE9\x84\x9E", + "\xDB\xB5" => "\xE9\x84\xA3", + "\xDB\xB6" => "\xE9\x84\xB1", + "\xDB\xB7" => "\xE9\x84\xAF", + "\xDB\xB8" => "\xE9\x84\xB9", + "\xDB\xB9" => "\xE9\x85\x83", + "\xDB\xBA" => "\xE9\x85\x86", + "\xDB\xBB" => "\xE5\x88\x8D", + "\xDB\xBC" => "\xE5\xA5\x82", + "\xDB\xBD" => "\xE5\x8A\xA2", + "\xDB\xBE" => "\xE5\x8A\xAC", + "\xDB\xBF" => "\xE5\x8A\xAD", + "\xDB\xC0" => "\xE5\x8A\xBE", + "\xDB\xC1" => "\xE5\x93\xBF", + "\xDB\xC2" => "\xE5\x8B\x90", + "\xDB\xC3" => "\xE5\x8B\x96", + "\xDB\xC4" => "\xE5\x8B\xB0", + "\xDB\xC5" => "\xE5\x8F\x9F", + "\xDB\xC6" => "\xE7\x87\xAE", + "\xDB\xC7" => "\xE7\x9F\x8D", + "\xDB\xC8" => "\xE5\xBB\xB4", + "\xDB\xC9" => "\xE5\x87\xB5", + "\xDB\xCA" => "\xE5\x87\xBC", + "\xDB\xCB" => "\xE9\xAC\xAF", + "\xDB\xCC" => "\xE5\x8E\xB6", + "\xDB\xCD" => "\xE5\xBC\x81", + "\xDB\xCE" => "\xE7\x95\x9A", + "\xDB\xCF" => "\xE5\xB7\xAF", + "\xDB\xD0" => "\xE5\x9D\x8C", + "\xDB\xD1" => "\xE5\x9E\xA9", + "\xDB\xD2" => "\xE5\x9E\xA1", + "\xDB\xD3" => "\xE5\xA1\xBE", + "\xDB\xD4" => "\xE5\xA2\xBC", + "\xDB\xD5" => "\xE5\xA3\x85", + "\xDB\xD6" => "\xE5\xA3\x91", + "\xDB\xD7" => "\xE5\x9C\xA9", + "\xDB\xD8" => "\xE5\x9C\xAC", + "\xDB\xD9" => "\xE5\x9C\xAA", + "\xDB\xDA" => "\xE5\x9C\xB3", + "\xDB\xDB" => "\xE5\x9C\xB9", + "\xDB\xDC" => "\xE5\x9C\xAE", + "\xDB\xDD" => "\xE5\x9C\xAF", + "\xDB\xDE" => "\xE5\x9D\x9C", + "\xDB\xDF" => "\xE5\x9C\xBB", + "\xDB\xE0" => "\xE5\x9D\x82", + "\xDB\xE1" => "\xE5\x9D\xA9", + "\xDB\xE2" => "\xE5\x9E\x85", + "\xDB\xE3" => "\xE5\x9D\xAB", + "\xDB\xE4" => "\xE5\x9E\x86", + "\xDB\xE5" => "\xE5\x9D\xBC", + "\xDB\xE6" => "\xE5\x9D\xBB", + "\xDB\xE7" => "\xE5\x9D\xA8", + "\xDB\xE8" => "\xE5\x9D\xAD", + "\xDB\xE9" => "\xE5\x9D\xB6", + "\xDB\xEA" => "\xE5\x9D\xB3", + "\xDB\xEB" => "\xE5\x9E\xAD", + "\xDB\xEC" => "\xE5\x9E\xA4", + "\xDB\xED" => "\xE5\x9E\x8C", + "\xDB\xEE" => "\xE5\x9E\xB2", + "\xDB\xEF" => "\xE5\x9F\x8F", + "\xDB\xF0" => "\xE5\x9E\xA7", + "\xDB\xF1" => "\xE5\x9E\xB4", + "\xDB\xF2" => "\xE5\x9E\x93", + "\xDB\xF3" => "\xE5\x9E\xA0", + "\xDB\xF4" => "\xE5\x9F\x95", + "\xDB\xF5" => "\xE5\x9F\x98", + "\xDB\xF6" => "\xE5\x9F\x9A", + "\xDB\xF7" => "\xE5\x9F\x99", + "\xDB\xF8" => "\xE5\x9F\x92", + "\xDB\xF9" => "\xE5\x9E\xB8", + "\xDB\xFA" => "\xE5\x9F\xB4", + "\xDB\xFB" => "\xE5\x9F\xAF", + "\xDB\xFC" => "\xE5\x9F\xB8", + "\xDB\xFD" => "\xE5\x9F\xA4", + "\xDB\xFE" => "\xE5\x9F\x9D", + "\xDC\xA1" => "\xE5\xA0\x8B", + "\xDC\xA2" => "\xE5\xA0\x8D", + "\xDC\xA3" => "\xE5\x9F\xBD", + "\xDC\xA4" => "\xE5\x9F\xAD", + "\xDC\xA5" => "\xE5\xA0\x80", + "\xDC\xA6" => "\xE5\xA0\x9E", + "\xDC\xA7" => "\xE5\xA0\x99", + "\xDC\xA8" => "\xE5\xA1\x84", + "\xDC\xA9" => "\xE5\xA0\xA0", + "\xDC\xAA" => "\xE5\xA1\xA5", + "\xDC\xAB" => "\xE5\xA1\xAC", + "\xDC\xAC" => "\xE5\xA2\x81", + "\xDC\xAD" => "\xE5\xA2\x89", + "\xDC\xAE" => "\xE5\xA2\x9A", + "\xDC\xAF" => "\xE5\xA2\x80", + "\xDC\xB0" => "\xE9\xA6\xA8", + "\xDC\xB1" => "\xE9\xBC\x99", + "\xDC\xB2" => "\xE6\x87\xBF", + "\xDC\xB3" => "\xE8\x89\xB9", + "\xDC\xB4" => "\xE8\x89\xBD", + "\xDC\xB5" => "\xE8\x89\xBF", + "\xDC\xB6" => "\xE8\x8A\x8F", + "\xDC\xB7" => "\xE8\x8A\x8A", + "\xDC\xB8" => "\xE8\x8A\xA8", + "\xDC\xB9" => "\xE8\x8A\x84", + "\xDC\xBA" => "\xE8\x8A\x8E", + "\xDC\xBB" => "\xE8\x8A\x91", + "\xDC\xBC" => "\xE8\x8A\x97", + "\xDC\xBD" => "\xE8\x8A\x99", + "\xDC\xBE" => "\xE8\x8A\xAB", + "\xDC\xBF" => "\xE8\x8A\xB8", + "\xDC\xC0" => "\xE8\x8A\xBE", + "\xDC\xC1" => "\xE8\x8A\xB0", + "\xDC\xC2" => "\xE8\x8B\x88", + "\xDC\xC3" => "\xE8\x8B\x8A", + "\xDC\xC4" => "\xE8\x8B\xA3", + "\xDC\xC5" => "\xE8\x8A\x98", + "\xDC\xC6" => "\xE8\x8A\xB7", + "\xDC\xC7" => "\xE8\x8A\xAE", + "\xDC\xC8" => "\xE8\x8B\x8B", + "\xDC\xC9" => "\xE8\x8B\x8C", + "\xDC\xCA" => "\xE8\x8B\x81", + "\xDC\xCB" => "\xE8\x8A\xA9", + "\xDC\xCC" => "\xE8\x8A\xB4", + "\xDC\xCD" => "\xE8\x8A\xA1", + "\xDC\xCE" => "\xE8\x8A\xAA", + "\xDC\xCF" => "\xE8\x8A\x9F", + "\xDC\xD0" => "\xE8\x8B\x84", + "\xDC\xD1" => "\xE8\x8B\x8E", + "\xDC\xD2" => "\xE8\x8A\xA4", + "\xDC\xD3" => "\xE8\x8B\xA1", + "\xDC\xD4" => "\xE8\x8C\x89", + "\xDC\xD5" => "\xE8\x8B\xB7", + "\xDC\xD6" => "\xE8\x8B\xA4", + "\xDC\xD7" => "\xE8\x8C\x8F", + "\xDC\xD8" => "\xE8\x8C\x87", + "\xDC\xD9" => "\xE8\x8B\x9C", + "\xDC\xDA" => "\xE8\x8B\xB4", + "\xDC\xDB" => "\xE8\x8B\x92", + "\xDC\xDC" => "\xE8\x8B\x98", + "\xDC\xDD" => "\xE8\x8C\x8C", + "\xDC\xDE" => "\xE8\x8B\xBB", + "\xDC\xDF" => "\xE8\x8B\x93", + "\xDC\xE0" => "\xE8\x8C\x91", + "\xDC\xE1" => "\xE8\x8C\x9A", + "\xDC\xE2" => "\xE8\x8C\x86", + "\xDC\xE3" => "\xE8\x8C\x94", + "\xDC\xE4" => "\xE8\x8C\x95", + "\xDC\xE5" => "\xE8\x8B\xA0", + "\xDC\xE6" => "\xE8\x8B\x95", + "\xDC\xE7" => "\xE8\x8C\x9C", + "\xDC\xE8" => "\xE8\x8D\x91", + "\xDC\xE9" => "\xE8\x8D\x9B", + "\xDC\xEA" => "\xE8\x8D\x9C", + "\xDC\xEB" => "\xE8\x8C\x88", + "\xDC\xEC" => "\xE8\x8E\x92", + "\xDC\xED" => "\xE8\x8C\xBC", + "\xDC\xEE" => "\xE8\x8C\xB4", + "\xDC\xEF" => "\xE8\x8C\xB1", + "\xDC\xF0" => "\xE8\x8E\x9B", + "\xDC\xF1" => "\xE8\x8D\x9E", + "\xDC\xF2" => "\xE8\x8C\xAF", + "\xDC\xF3" => "\xE8\x8D\x8F", + "\xDC\xF4" => "\xE8\x8D\x87", + "\xDC\xF5" => "\xE8\x8D\x83", + "\xDC\xF6" => "\xE8\x8D\x9F", + "\xDC\xF7" => "\xE8\x8D\x80", + "\xDC\xF8" => "\xE8\x8C\x97", + "\xDC\xF9" => "\xE8\x8D\xA0", + "\xDC\xFA" => "\xE8\x8C\xAD", + "\xDC\xFB" => "\xE8\x8C\xBA", + "\xDC\xFC" => "\xE8\x8C\xB3", + "\xDC\xFD" => "\xE8\x8D\xA6", + "\xDC\xFE" => "\xE8\x8D\xA5", + "\xDD\xA1" => "\xE8\x8D\xA8", + "\xDD\xA2" => "\xE8\x8C\x9B", + "\xDD\xA3" => "\xE8\x8D\xA9", + "\xDD\xA4" => "\xE8\x8D\xAC", + "\xDD\xA5" => "\xE8\x8D\xAA", + "\xDD\xA6" => "\xE8\x8D\xAD", + "\xDD\xA7" => "\xE8\x8D\xAE", + "\xDD\xA8" => "\xE8\x8E\xB0", + "\xDD\xA9" => "\xE8\x8D\xB8", + "\xDD\xAA" => "\xE8\x8E\xB3", + "\xDD\xAB" => "\xE8\x8E\xB4", + "\xDD\xAC" => "\xE8\x8E\xA0", + "\xDD\xAD" => "\xE8\x8E\xAA", + "\xDD\xAE" => "\xE8\x8E\x93", + "\xDD\xAF" => "\xE8\x8E\x9C", + "\xDD\xB0" => "\xE8\x8E\x85", + "\xDD\xB1" => "\xE8\x8D\xBC", + "\xDD\xB2" => "\xE8\x8E\xB6", + "\xDD\xB3" => "\xE8\x8E\xA9", + "\xDD\xB4" => "\xE8\x8D\xBD", + "\xDD\xB5" => "\xE8\x8E\xB8", + "\xDD\xB6" => "\xE8\x8D\xBB", + "\xDD\xB7" => "\xE8\x8E\x98", + "\xDD\xB8" => "\xE8\x8E\x9E", + "\xDD\xB9" => "\xE8\x8E\xA8", + "\xDD\xBA" => "\xE8\x8E\xBA", + "\xDD\xBB" => "\xE8\x8E\xBC", + "\xDD\xBC" => "\xE8\x8F\x81", + "\xDD\xBD" => "\xE8\x90\x81", + "\xDD\xBE" => "\xE8\x8F\xA5", + "\xDD\xBF" => "\xE8\x8F\x98", + "\xDD\xC0" => "\xE5\xA0\x87", + "\xDD\xC1" => "\xE8\x90\x98", + "\xDD\xC2" => "\xE8\x90\x8B", + "\xDD\xC3" => "\xE8\x8F\x9D", + "\xDD\xC4" => "\xE8\x8F\xBD", + "\xDD\xC5" => "\xE8\x8F\x96", + "\xDD\xC6" => "\xE8\x90\x9C", + "\xDD\xC7" => "\xE8\x90\xB8", + "\xDD\xC8" => "\xE8\x90\x91", + "\xDD\xC9" => "\xE8\x90\x86", + "\xDD\xCA" => "\xE8\x8F\x94", + "\xDD\xCB" => "\xE8\x8F\x9F", + "\xDD\xCC" => "\xE8\x90\x8F", + "\xDD\xCD" => "\xE8\x90\x83", + "\xDD\xCE" => "\xE8\x8F\xB8", + "\xDD\xCF" => "\xE8\x8F\xB9", + "\xDD\xD0" => "\xE8\x8F\xAA", + "\xDD\xD1" => "\xE8\x8F\x85", + "\xDD\xD2" => "\xE8\x8F\x80", + "\xDD\xD3" => "\xE8\x90\xA6", + "\xDD\xD4" => "\xE8\x8F\xB0", + "\xDD\xD5" => "\xE8\x8F\xA1", + "\xDD\xD6" => "\xE8\x91\x9C", + "\xDD\xD7" => "\xE8\x91\x91", + "\xDD\xD8" => "\xE8\x91\x9A", + "\xDD\xD9" => "\xE8\x91\x99", + "\xDD\xDA" => "\xE8\x91\xB3", + "\xDD\xDB" => "\xE8\x92\x87", + "\xDD\xDC" => "\xE8\x92\x88", + "\xDD\xDD" => "\xE8\x91\xBA", + "\xDD\xDE" => "\xE8\x92\x89", + "\xDD\xDF" => "\xE8\x91\xB8", + "\xDD\xE0" => "\xE8\x90\xBC", + "\xDD\xE1" => "\xE8\x91\x86", + "\xDD\xE2" => "\xE8\x91\xA9", + "\xDD\xE3" => "\xE8\x91\xB6", + "\xDD\xE4" => "\xE8\x92\x8C", + "\xDD\xE5" => "\xE8\x92\x8E", + "\xDD\xE6" => "\xE8\x90\xB1", + "\xDD\xE7" => "\xE8\x91\xAD", + "\xDD\xE8" => "\xE8\x93\x81", + "\xDD\xE9" => "\xE8\x93\x8D", + "\xDD\xEA" => "\xE8\x93\x90", + "\xDD\xEB" => "\xE8\x93\xA6", + "\xDD\xEC" => "\xE8\x92\xBD", + "\xDD\xED" => "\xE8\x93\x93", + "\xDD\xEE" => "\xE8\x93\x8A", + "\xDD\xEF" => "\xE8\x92\xBF", + "\xDD\xF0" => "\xE8\x92\xBA", + "\xDD\xF1" => "\xE8\x93\xA0", + "\xDD\xF2" => "\xE8\x92\xA1", + "\xDD\xF3" => "\xE8\x92\xB9", + "\xDD\xF4" => "\xE8\x92\xB4", + "\xDD\xF5" => "\xE8\x92\x97", + "\xDD\xF6" => "\xE8\x93\xA5", + "\xDD\xF7" => "\xE8\x93\xA3", + "\xDD\xF8" => "\xE8\x94\x8C", + "\xDD\xF9" => "\xE7\x94\x8D", + "\xDD\xFA" => "\xE8\x94\xB8", + "\xDD\xFB" => "\xE8\x93\xB0", + "\xDD\xFC" => "\xE8\x94\xB9", + "\xDD\xFD" => "\xE8\x94\x9F", + "\xDD\xFE" => "\xE8\x94\xBA", + "\xDE\xA1" => "\xE8\x95\x96", + "\xDE\xA2" => "\xE8\x94\xBB", + "\xDE\xA3" => "\xE8\x93\xBF", + "\xDE\xA4" => "\xE8\x93\xBC", + "\xDE\xA5" => "\xE8\x95\x99", + "\xDE\xA6" => "\xE8\x95\x88", + "\xDE\xA7" => "\xE8\x95\xA8", + "\xDE\xA8" => "\xE8\x95\xA4", + "\xDE\xA9" => "\xE8\x95\x9E", + "\xDE\xAA" => "\xE8\x95\xBA", + "\xDE\xAB" => "\xE7\x9E\xA2", + "\xDE\xAC" => "\xE8\x95\x83", + "\xDE\xAD" => "\xE8\x95\xB2", + "\xDE\xAE" => "\xE8\x95\xBB", + "\xDE\xAF" => "\xE8\x96\xA4", + "\xDE\xB0" => "\xE8\x96\xA8", + "\xDE\xB1" => "\xE8\x96\x87", + "\xDE\xB2" => "\xE8\x96\x8F", + "\xDE\xB3" => "\xE8\x95\xB9", + "\xDE\xB4" => "\xE8\x96\xAE", + "\xDE\xB5" => "\xE8\x96\x9C", + "\xDE\xB6" => "\xE8\x96\x85", + "\xDE\xB7" => "\xE8\x96\xB9", + "\xDE\xB8" => "\xE8\x96\xB7", + "\xDE\xB9" => "\xE8\x96\xB0", + "\xDE\xBA" => "\xE8\x97\x93", + "\xDE\xBB" => "\xE8\x97\x81", + "\xDE\xBC" => "\xE8\x97\x9C", + "\xDE\xBD" => "\xE8\x97\xBF", + "\xDE\xBE" => "\xE8\x98\xA7", + "\xDE\xBF" => "\xE8\x98\x85", + "\xDE\xC0" => "\xE8\x98\xA9", + "\xDE\xC1" => "\xE8\x98\x96", + "\xDE\xC2" => "\xE8\x98\xBC", + "\xDE\xC3" => "\xE5\xBB\xBE", + "\xDE\xC4" => "\xE5\xBC\x88", + "\xDE\xC5" => "\xE5\xA4\xBC", + "\xDE\xC6" => "\xE5\xA5\x81", + "\xDE\xC7" => "\xE8\x80\xB7", + "\xDE\xC8" => "\xE5\xA5\x95", + "\xDE\xC9" => "\xE5\xA5\x9A", + "\xDE\xCA" => "\xE5\xA5\x98", + "\xDE\xCB" => "\xE5\x8C\x8F", + "\xDE\xCC" => "\xE5\xB0\xA2", + "\xDE\xCD" => "\xE5\xB0\xA5", + "\xDE\xCE" => "\xE5\xB0\xAC", + "\xDE\xCF" => "\xE5\xB0\xB4", + "\xDE\xD0" => "\xE6\x89\x8C", + "\xDE\xD1" => "\xE6\x89\xAA", + "\xDE\xD2" => "\xE6\x8A\x9F", + "\xDE\xD3" => "\xE6\x8A\xBB", + "\xDE\xD4" => "\xE6\x8B\x8A", + "\xDE\xD5" => "\xE6\x8B\x9A", + "\xDE\xD6" => "\xE6\x8B\x97", + "\xDE\xD7" => "\xE6\x8B\xAE", + "\xDE\xD8" => "\xE6\x8C\xA2", + "\xDE\xD9" => "\xE6\x8B\xB6", + "\xDE\xDA" => "\xE6\x8C\xB9", + "\xDE\xDB" => "\xE6\x8D\x8B", + "\xDE\xDC" => "\xE6\x8D\x83", + "\xDE\xDD" => "\xE6\x8E\xAD", + "\xDE\xDE" => "\xE6\x8F\xB6", + "\xDE\xDF" => "\xE6\x8D\xB1", + "\xDE\xE0" => "\xE6\x8D\xBA", + "\xDE\xE1" => "\xE6\x8E\x8E", + "\xDE\xE2" => "\xE6\x8E\xB4", + "\xDE\xE3" => "\xE6\x8D\xAD", + "\xDE\xE4" => "\xE6\x8E\xAC", + "\xDE\xE5" => "\xE6\x8E\x8A", + "\xDE\xE6" => "\xE6\x8D\xA9", + "\xDE\xE7" => "\xE6\x8E\xAE", + "\xDE\xE8" => "\xE6\x8E\xBC", + "\xDE\xE9" => "\xE6\x8F\xB2", + "\xDE\xEA" => "\xE6\x8F\xB8", + "\xDE\xEB" => "\xE6\x8F\xA0", + "\xDE\xEC" => "\xE6\x8F\xBF", + "\xDE\xED" => "\xE6\x8F\x84", + "\xDE\xEE" => "\xE6\x8F\x9E", + "\xDE\xEF" => "\xE6\x8F\x8E", + "\xDE\xF0" => "\xE6\x91\x92", + "\xDE\xF1" => "\xE6\x8F\x86", + "\xDE\xF2" => "\xE6\x8E\xBE", + "\xDE\xF3" => "\xE6\x91\x85", + "\xDE\xF4" => "\xE6\x91\x81", + "\xDE\xF5" => "\xE6\x90\x8B", + "\xDE\xF6" => "\xE6\x90\x9B", + "\xDE\xF7" => "\xE6\x90\xA0", + "\xDE\xF8" => "\xE6\x90\x8C", + "\xDE\xF9" => "\xE6\x90\xA6", + "\xDE\xFA" => "\xE6\x90\xA1", + "\xDE\xFB" => "\xE6\x91\x9E", + "\xDE\xFC" => "\xE6\x92\x84", + "\xDE\xFD" => "\xE6\x91\xAD", + "\xDE\xFE" => "\xE6\x92\x96", + "\xDF\xA1" => "\xE6\x91\xBA", + "\xDF\xA2" => "\xE6\x92\xB7", + "\xDF\xA3" => "\xE6\x92\xB8", + "\xDF\xA4" => "\xE6\x92\x99", + "\xDF\xA5" => "\xE6\x92\xBA", + "\xDF\xA6" => "\xE6\x93\x80", + "\xDF\xA7" => "\xE6\x93\x90", + "\xDF\xA8" => "\xE6\x93\x97", + "\xDF\xA9" => "\xE6\x93\xA4", + "\xDF\xAA" => "\xE6\x93\xA2", + "\xDF\xAB" => "\xE6\x94\x89", + "\xDF\xAC" => "\xE6\x94\xA5", + "\xDF\xAD" => "\xE6\x94\xAE", + "\xDF\xAE" => "\xE5\xBC\x8B", + "\xDF\xAF" => "\xE5\xBF\x92", + "\xDF\xB0" => "\xE7\x94\x99", + "\xDF\xB1" => "\xE5\xBC\x91", + "\xDF\xB2" => "\xE5\x8D\x9F", + "\xDF\xB3" => "\xE5\x8F\xB1", + "\xDF\xB4" => "\xE5\x8F\xBD", + "\xDF\xB5" => "\xE5\x8F\xA9", + "\xDF\xB6" => "\xE5\x8F\xA8", + "\xDF\xB7" => "\xE5\x8F\xBB", + "\xDF\xB8" => "\xE5\x90\x92", + "\xDF\xB9" => "\xE5\x90\x96", + "\xDF\xBA" => "\xE5\x90\x86", + "\xDF\xBB" => "\xE5\x91\x8B", + "\xDF\xBC" => "\xE5\x91\x92", + "\xDF\xBD" => "\xE5\x91\x93", + "\xDF\xBE" => "\xE5\x91\x94", + "\xDF\xBF" => "\xE5\x91\x96", + "\xDF\xC0" => "\xE5\x91\x83", + "\xDF\xC1" => "\xE5\x90\xA1", + "\xDF\xC2" => "\xE5\x91\x97", + "\xDF\xC3" => "\xE5\x91\x99", + "\xDF\xC4" => "\xE5\x90\xA3", + "\xDF\xC5" => "\xE5\x90\xB2", + "\xDF\xC6" => "\xE5\x92\x82", + "\xDF\xC7" => "\xE5\x92\x94", + "\xDF\xC8" => "\xE5\x91\xB7", + "\xDF\xC9" => "\xE5\x91\xB1", + "\xDF\xCA" => "\xE5\x91\xA4", + "\xDF\xCB" => "\xE5\x92\x9A", + "\xDF\xCC" => "\xE5\x92\x9B", + "\xDF\xCD" => "\xE5\x92\x84", + "\xDF\xCE" => "\xE5\x91\xB6", + "\xDF\xCF" => "\xE5\x91\xA6", + "\xDF\xD0" => "\xE5\x92\x9D", + "\xDF\xD1" => "\xE5\x93\x90", + "\xDF\xD2" => "\xE5\x92\xAD", + "\xDF\xD3" => "\xE5\x93\x82", + "\xDF\xD4" => "\xE5\x92\xB4", + "\xDF\xD5" => "\xE5\x93\x92", + "\xDF\xD6" => "\xE5\x92\xA7", + "\xDF\xD7" => "\xE5\x92\xA6", + "\xDF\xD8" => "\xE5\x93\x93", + "\xDF\xD9" => "\xE5\x93\x94", + "\xDF\xDA" => "\xE5\x91\xB2", + "\xDF\xDB" => "\xE5\x92\xA3", + "\xDF\xDC" => "\xE5\x93\x95", + "\xDF\xDD" => "\xE5\x92\xBB", + "\xDF\xDE" => "\xE5\x92\xBF", + "\xDF\xDF" => "\xE5\x93\x8C", + "\xDF\xE0" => "\xE5\x93\x99", + "\xDF\xE1" => "\xE5\x93\x9A", + "\xDF\xE2" => "\xE5\x93\x9C", + "\xDF\xE3" => "\xE5\x92\xA9", + "\xDF\xE4" => "\xE5\x92\xAA", + "\xDF\xE5" => "\xE5\x92\xA4", + "\xDF\xE6" => "\xE5\x93\x9D", + "\xDF\xE7" => "\xE5\x93\x8F", + "\xDF\xE8" => "\xE5\x93\x9E", + "\xDF\xE9" => "\xE5\x94\x9B", + "\xDF\xEA" => "\xE5\x93\xA7", + "\xDF\xEB" => "\xE5\x94\xA0", + "\xDF\xEC" => "\xE5\x93\xBD", + "\xDF\xED" => "\xE5\x94\x94", + "\xDF\xEE" => "\xE5\x93\xB3", + "\xDF\xEF" => "\xE5\x94\xA2", + "\xDF\xF0" => "\xE5\x94\xA3", + "\xDF\xF1" => "\xE5\x94\x8F", + "\xDF\xF2" => "\xE5\x94\x91", + "\xDF\xF3" => "\xE5\x94\xA7", + "\xDF\xF4" => "\xE5\x94\xAA", + "\xDF\xF5" => "\xE5\x95\xA7", + "\xDF\xF6" => "\xE5\x96\x8F", + "\xDF\xF7" => "\xE5\x96\xB5", + "\xDF\xF8" => "\xE5\x95\x89", + "\xDF\xF9" => "\xE5\x95\xAD", + "\xDF\xFA" => "\xE5\x95\x81", + "\xDF\xFB" => "\xE5\x95\x95", + "\xDF\xFC" => "\xE5\x94\xBF", + "\xDF\xFD" => "\xE5\x95\x90", + "\xDF\xFE" => "\xE5\x94\xBC", + "\xE0\xA1" => "\xE5\x94\xB7", + "\xE0\xA2" => "\xE5\x95\x96", + "\xE0\xA3" => "\xE5\x95\xB5", + "\xE0\xA4" => "\xE5\x95\xB6", + "\xE0\xA5" => "\xE5\x95\xB7", + "\xE0\xA6" => "\xE5\x94\xB3", + "\xE0\xA7" => "\xE5\x94\xB0", + "\xE0\xA8" => "\xE5\x95\x9C", + "\xE0\xA9" => "\xE5\x96\x8B", + "\xE0\xAA" => "\xE5\x97\x92", + "\xE0\xAB" => "\xE5\x96\x83", + "\xE0\xAC" => "\xE5\x96\xB1", + "\xE0\xAD" => "\xE5\x96\xB9", + "\xE0\xAE" => "\xE5\x96\x88", + "\xE0\xAF" => "\xE5\x96\x81", + "\xE0\xB0" => "\xE5\x96\x9F", + "\xE0\xB1" => "\xE5\x95\xBE", + "\xE0\xB2" => "\xE5\x97\x96", + "\xE0\xB3" => "\xE5\x96\x91", + "\xE0\xB4" => "\xE5\x95\xBB", + "\xE0\xB5" => "\xE5\x97\x9F", + "\xE0\xB6" => "\xE5\x96\xBD", + "\xE0\xB7" => "\xE5\x96\xBE", + "\xE0\xB8" => "\xE5\x96\x94", + "\xE0\xB9" => "\xE5\x96\x99", + "\xE0\xBA" => "\xE5\x97\xAA", + "\xE0\xBB" => "\xE5\x97\xB7", + "\xE0\xBC" => "\xE5\x97\x89", + "\xE0\xBD" => "\xE5\x98\x9F", + "\xE0\xBE" => "\xE5\x97\x91", + "\xE0\xBF" => "\xE5\x97\xAB", + "\xE0\xC0" => "\xE5\x97\xAC", + "\xE0\xC1" => "\xE5\x97\x94", + "\xE0\xC2" => "\xE5\x97\xA6", + "\xE0\xC3" => "\xE5\x97\x9D", + "\xE0\xC4" => "\xE5\x97\x84", + "\xE0\xC5" => "\xE5\x97\xAF", + "\xE0\xC6" => "\xE5\x97\xA5", + "\xE0\xC7" => "\xE5\x97\xB2", + "\xE0\xC8" => "\xE5\x97\xB3", + "\xE0\xC9" => "\xE5\x97\x8C", + "\xE0\xCA" => "\xE5\x97\x8D", + "\xE0\xCB" => "\xE5\x97\xA8", + "\xE0\xCC" => "\xE5\x97\xB5", + "\xE0\xCD" => "\xE5\x97\xA4", + "\xE0\xCE" => "\xE8\xBE\x94", + "\xE0\xCF" => "\xE5\x98\x9E", + "\xE0\xD0" => "\xE5\x98\x88", + "\xE0\xD1" => "\xE5\x98\x8C", + "\xE0\xD2" => "\xE5\x98\x81", + "\xE0\xD3" => "\xE5\x98\xA4", + "\xE0\xD4" => "\xE5\x98\xA3", + "\xE0\xD5" => "\xE5\x97\xBE", + "\xE0\xD6" => "\xE5\x98\x80", + "\xE0\xD7" => "\xE5\x98\xA7", + "\xE0\xD8" => "\xE5\x98\xAD", + "\xE0\xD9" => "\xE5\x99\x98", + "\xE0\xDA" => "\xE5\x98\xB9", + "\xE0\xDB" => "\xE5\x99\x97", + "\xE0\xDC" => "\xE5\x98\xAC", + "\xE0\xDD" => "\xE5\x99\x8D", + "\xE0\xDE" => "\xE5\x99\xA2", + "\xE0\xDF" => "\xE5\x99\x99", + "\xE0\xE0" => "\xE5\x99\x9C", + "\xE0\xE1" => "\xE5\x99\x8C", + "\xE0\xE2" => "\xE5\x99\x94", + "\xE0\xE3" => "\xE5\x9A\x86", + "\xE0\xE4" => "\xE5\x99\xA4", + "\xE0\xE5" => "\xE5\x99\xB1", + "\xE0\xE6" => "\xE5\x99\xAB", + "\xE0\xE7" => "\xE5\x99\xBB", + "\xE0\xE8" => "\xE5\x99\xBC", + "\xE0\xE9" => "\xE5\x9A\x85", + "\xE0\xEA" => "\xE5\x9A\x93", + "\xE0\xEB" => "\xE5\x9A\xAF", + "\xE0\xEC" => "\xE5\x9B\x94", + "\xE0\xED" => "\xE5\x9B\x97", + "\xE0\xEE" => "\xE5\x9B\x9D", + "\xE0\xEF" => "\xE5\x9B\xA1", + "\xE0\xF0" => "\xE5\x9B\xB5", + "\xE0\xF1" => "\xE5\x9B\xAB", + "\xE0\xF2" => "\xE5\x9B\xB9", + "\xE0\xF3" => "\xE5\x9B\xBF", + "\xE0\xF4" => "\xE5\x9C\x84", + "\xE0\xF5" => "\xE5\x9C\x8A", + "\xE0\xF6" => "\xE5\x9C\x89", + "\xE0\xF7" => "\xE5\x9C\x9C", + "\xE0\xF8" => "\xE5\xB8\x8F", + "\xE0\xF9" => "\xE5\xB8\x99", + "\xE0\xFA" => "\xE5\xB8\x94", + "\xE0\xFB" => "\xE5\xB8\x91", + "\xE0\xFC" => "\xE5\xB8\xB1", + "\xE0\xFD" => "\xE5\xB8\xBB", + "\xE0\xFE" => "\xE5\xB8\xBC", + "\xE1\xA1" => "\xE5\xB8\xB7", + "\xE1\xA2" => "\xE5\xB9\x84", + "\xE1\xA3" => "\xE5\xB9\x94", + "\xE1\xA4" => "\xE5\xB9\x9B", + "\xE1\xA5" => "\xE5\xB9\x9E", + "\xE1\xA6" => "\xE5\xB9\xA1", + "\xE1\xA7" => "\xE5\xB2\x8C", + "\xE1\xA8" => "\xE5\xB1\xBA", + "\xE1\xA9" => "\xE5\xB2\x8D", + "\xE1\xAA" => "\xE5\xB2\x90", + "\xE1\xAB" => "\xE5\xB2\x96", + "\xE1\xAC" => "\xE5\xB2\x88", + "\xE1\xAD" => "\xE5\xB2\x98", + "\xE1\xAE" => "\xE5\xB2\x99", + "\xE1\xAF" => "\xE5\xB2\x91", + "\xE1\xB0" => "\xE5\xB2\x9A", + "\xE1\xB1" => "\xE5\xB2\x9C", + "\xE1\xB2" => "\xE5\xB2\xB5", + "\xE1\xB3" => "\xE5\xB2\xA2", + "\xE1\xB4" => "\xE5\xB2\xBD", + "\xE1\xB5" => "\xE5\xB2\xAC", + "\xE1\xB6" => "\xE5\xB2\xAB", + "\xE1\xB7" => "\xE5\xB2\xB1", + "\xE1\xB8" => "\xE5\xB2\xA3", + "\xE1\xB9" => "\xE5\xB3\x81", + "\xE1\xBA" => "\xE5\xB2\xB7", + "\xE1\xBB" => "\xE5\xB3\x84", + "\xE1\xBC" => "\xE5\xB3\x92", + "\xE1\xBD" => "\xE5\xB3\xA4", + "\xE1\xBE" => "\xE5\xB3\x8B", + "\xE1\xBF" => "\xE5\xB3\xA5", + "\xE1\xC0" => "\xE5\xB4\x82", + "\xE1\xC1" => "\xE5\xB4\x83", + "\xE1\xC2" => "\xE5\xB4\xA7", + "\xE1\xC3" => "\xE5\xB4\xA6", + "\xE1\xC4" => "\xE5\xB4\xAE", + "\xE1\xC5" => "\xE5\xB4\xA4", + "\xE1\xC6" => "\xE5\xB4\x9E", + "\xE1\xC7" => "\xE5\xB4\x86", + "\xE1\xC8" => "\xE5\xB4\x9B", + "\xE1\xC9" => "\xE5\xB5\x98", + "\xE1\xCA" => "\xE5\xB4\xBE", + "\xE1\xCB" => "\xE5\xB4\xB4", + "\xE1\xCC" => "\xE5\xB4\xBD", + "\xE1\xCD" => "\xE5\xB5\xAC", + "\xE1\xCE" => "\xE5\xB5\x9B", + "\xE1\xCF" => "\xE5\xB5\xAF", + "\xE1\xD0" => "\xE5\xB5\x9D", + "\xE1\xD1" => "\xE5\xB5\xAB", + "\xE1\xD2" => "\xE5\xB5\x8B", + "\xE1\xD3" => "\xE5\xB5\x8A", + "\xE1\xD4" => "\xE5\xB5\xA9", + "\xE1\xD5" => "\xE5\xB5\xB4", + "\xE1\xD6" => "\xE5\xB6\x82", + "\xE1\xD7" => "\xE5\xB6\x99", + "\xE1\xD8" => "\xE5\xB6\x9D", + "\xE1\xD9" => "\xE8\xB1\xB3", + "\xE1\xDA" => "\xE5\xB6\xB7", + "\xE1\xDB" => "\xE5\xB7\x85", + "\xE1\xDC" => "\xE5\xBD\xB3", + "\xE1\xDD" => "\xE5\xBD\xB7", + "\xE1\xDE" => "\xE5\xBE\x82", + "\xE1\xDF" => "\xE5\xBE\x87", + "\xE1\xE0" => "\xE5\xBE\x89", + "\xE1\xE1" => "\xE5\xBE\x8C", + "\xE1\xE2" => "\xE5\xBE\x95", + "\xE1\xE3" => "\xE5\xBE\x99", + "\xE1\xE4" => "\xE5\xBE\x9C", + "\xE1\xE5" => "\xE5\xBE\xA8", + "\xE1\xE6" => "\xE5\xBE\xAD", + "\xE1\xE7" => "\xE5\xBE\xB5", + "\xE1\xE8" => "\xE5\xBE\xBC", + "\xE1\xE9" => "\xE8\xA1\xA2", + "\xE1\xEA" => "\xE5\xBD\xA1", + "\xE1\xEB" => "\xE7\x8A\xAD", + "\xE1\xEC" => "\xE7\x8A\xB0", + "\xE1\xED" => "\xE7\x8A\xB4", + "\xE1\xEE" => "\xE7\x8A\xB7", + "\xE1\xEF" => "\xE7\x8A\xB8", + "\xE1\xF0" => "\xE7\x8B\x83", + "\xE1\xF1" => "\xE7\x8B\x81", + "\xE1\xF2" => "\xE7\x8B\x8E", + "\xE1\xF3" => "\xE7\x8B\x8D", + "\xE1\xF4" => "\xE7\x8B\x92", + "\xE1\xF5" => "\xE7\x8B\xA8", + "\xE1\xF6" => "\xE7\x8B\xAF", + "\xE1\xF7" => "\xE7\x8B\xA9", + "\xE1\xF8" => "\xE7\x8B\xB2", + "\xE1\xF9" => "\xE7\x8B\xB4", + "\xE1\xFA" => "\xE7\x8B\xB7", + "\xE1\xFB" => "\xE7\x8C\x81", + "\xE1\xFC" => "\xE7\x8B\xB3", + "\xE1\xFD" => "\xE7\x8C\x83", + "\xE1\xFE" => "\xE7\x8B\xBA", + "\xE2\xA1" => "\xE7\x8B\xBB", + "\xE2\xA2" => "\xE7\x8C\x97", + "\xE2\xA3" => "\xE7\x8C\x93", + "\xE2\xA4" => "\xE7\x8C\xA1", + "\xE2\xA5" => "\xE7\x8C\x8A", + "\xE2\xA6" => "\xE7\x8C\x9E", + "\xE2\xA7" => "\xE7\x8C\x9D", + "\xE2\xA8" => "\xE7\x8C\x95", + "\xE2\xA9" => "\xE7\x8C\xA2", + "\xE2\xAA" => "\xE7\x8C\xB9", + "\xE2\xAB" => "\xE7\x8C\xA5", + "\xE2\xAC" => "\xE7\x8C\xAC", + "\xE2\xAD" => "\xE7\x8C\xB8", + "\xE2\xAE" => "\xE7\x8C\xB1", + "\xE2\xAF" => "\xE7\x8D\x90", + "\xE2\xB0" => "\xE7\x8D\x8D", + "\xE2\xB1" => "\xE7\x8D\x97", + "\xE2\xB2" => "\xE7\x8D\xA0", + "\xE2\xB3" => "\xE7\x8D\xAC", + "\xE2\xB4" => "\xE7\x8D\xAF", + "\xE2\xB5" => "\xE7\x8D\xBE", + "\xE2\xB6" => "\xE8\x88\x9B", + "\xE2\xB7" => "\xE5\xA4\xA5", + "\xE2\xB8" => "\xE9\xA3\xA7", + "\xE2\xB9" => "\xE5\xA4\xA4", + "\xE2\xBA" => "\xE5\xA4\x82", + "\xE2\xBB" => "\xE9\xA5\xA3", + "\xE2\xBC" => "\xE9\xA5\xA7", + "\xE2\xBD" => "\xE9\xA5\xA8", + "\xE2\xBE" => "\xE9\xA5\xA9", + "\xE2\xBF" => "\xE9\xA5\xAA", + "\xE2\xC0" => "\xE9\xA5\xAB", + "\xE2\xC1" => "\xE9\xA5\xAC", + "\xE2\xC2" => "\xE9\xA5\xB4", + "\xE2\xC3" => "\xE9\xA5\xB7", + "\xE2\xC4" => "\xE9\xA5\xBD", + "\xE2\xC5" => "\xE9\xA6\x80", + "\xE2\xC6" => "\xE9\xA6\x84", + "\xE2\xC7" => "\xE9\xA6\x87", + "\xE2\xC8" => "\xE9\xA6\x8A", + "\xE2\xC9" => "\xE9\xA6\x8D", + "\xE2\xCA" => "\xE9\xA6\x90", + "\xE2\xCB" => "\xE9\xA6\x91", + "\xE2\xCC" => "\xE9\xA6\x93", + "\xE2\xCD" => "\xE9\xA6\x94", + "\xE2\xCE" => "\xE9\xA6\x95", + "\xE2\xCF" => "\xE5\xBA\x80", + "\xE2\xD0" => "\xE5\xBA\x91", + "\xE2\xD1" => "\xE5\xBA\x8B", + "\xE2\xD2" => "\xE5\xBA\x96", + "\xE2\xD3" => "\xE5\xBA\xA5", + "\xE2\xD4" => "\xE5\xBA\xA0", + "\xE2\xD5" => "\xE5\xBA\xB9", + "\xE2\xD6" => "\xE5\xBA\xB5", + "\xE2\xD7" => "\xE5\xBA\xBE", + "\xE2\xD8" => "\xE5\xBA\xB3", + "\xE2\xD9" => "\xE8\xB5\x93", + "\xE2\xDA" => "\xE5\xBB\x92", + "\xE2\xDB" => "\xE5\xBB\x91", + "\xE2\xDC" => "\xE5\xBB\x9B", + "\xE2\xDD" => "\xE5\xBB\xA8", + "\xE2\xDE" => "\xE5\xBB\xAA", + "\xE2\xDF" => "\xE8\x86\xBA", + "\xE2\xE0" => "\xE5\xBF\x84", + "\xE2\xE1" => "\xE5\xBF\x89", + "\xE2\xE2" => "\xE5\xBF\x96", + "\xE2\xE3" => "\xE5\xBF\x8F", + "\xE2\xE4" => "\xE6\x80\x83", + "\xE2\xE5" => "\xE5\xBF\xAE", + "\xE2\xE6" => "\xE6\x80\x84", + "\xE2\xE7" => "\xE5\xBF\xA1", + "\xE2\xE8" => "\xE5\xBF\xA4", + "\xE2\xE9" => "\xE5\xBF\xBE", + "\xE2\xEA" => "\xE6\x80\x85", + "\xE2\xEB" => "\xE6\x80\x86", + "\xE2\xEC" => "\xE5\xBF\xAA", + "\xE2\xED" => "\xE5\xBF\xAD", + "\xE2\xEE" => "\xE5\xBF\xB8", + "\xE2\xEF" => "\xE6\x80\x99", + "\xE2\xF0" => "\xE6\x80\xB5", + "\xE2\xF1" => "\xE6\x80\xA6", + "\xE2\xF2" => "\xE6\x80\x9B", + "\xE2\xF3" => "\xE6\x80\x8F", + "\xE2\xF4" => "\xE6\x80\x8D", + "\xE2\xF5" => "\xE6\x80\xA9", + "\xE2\xF6" => "\xE6\x80\xAB", + "\xE2\xF7" => "\xE6\x80\x8A", + "\xE2\xF8" => "\xE6\x80\xBF", + "\xE2\xF9" => "\xE6\x80\xA1", + "\xE2\xFA" => "\xE6\x81\xB8", + "\xE2\xFB" => "\xE6\x81\xB9", + "\xE2\xFC" => "\xE6\x81\xBB", + "\xE2\xFD" => "\xE6\x81\xBA", + "\xE2\xFE" => "\xE6\x81\x82", + "\xE3\xA1" => "\xE6\x81\xAA", + "\xE3\xA2" => "\xE6\x81\xBD", + "\xE3\xA3" => "\xE6\x82\x96", + "\xE3\xA4" => "\xE6\x82\x9A", + "\xE3\xA5" => "\xE6\x82\xAD", + "\xE3\xA6" => "\xE6\x82\x9D", + "\xE3\xA7" => "\xE6\x82\x83", + "\xE3\xA8" => "\xE6\x82\x92", + "\xE3\xA9" => "\xE6\x82\x8C", + "\xE3\xAA" => "\xE6\x82\x9B", + "\xE3\xAB" => "\xE6\x83\xAC", + "\xE3\xAC" => "\xE6\x82\xBB", + "\xE3\xAD" => "\xE6\x82\xB1", + "\xE3\xAE" => "\xE6\x83\x9D", + "\xE3\xAF" => "\xE6\x83\x98", + "\xE3\xB0" => "\xE6\x83\x86", + "\xE3\xB1" => "\xE6\x83\x9A", + "\xE3\xB2" => "\xE6\x82\xB4", + "\xE3\xB3" => "\xE6\x84\xA0", + "\xE3\xB4" => "\xE6\x84\xA6", + "\xE3\xB5" => "\xE6\x84\x95", + "\xE3\xB6" => "\xE6\x84\xA3", + "\xE3\xB7" => "\xE6\x83\xB4", + "\xE3\xB8" => "\xE6\x84\x80", + "\xE3\xB9" => "\xE6\x84\x8E", + "\xE3\xBA" => "\xE6\x84\xAB", + "\xE3\xBB" => "\xE6\x85\x8A", + "\xE3\xBC" => "\xE6\x85\xB5", + "\xE3\xBD" => "\xE6\x86\xAC", + "\xE3\xBE" => "\xE6\x86\x94", + "\xE3\xBF" => "\xE6\x86\xA7", + "\xE3\xC0" => "\xE6\x86\xB7", + "\xE3\xC1" => "\xE6\x87\x94", + "\xE3\xC2" => "\xE6\x87\xB5", + "\xE3\xC3" => "\xE5\xBF\x9D", + "\xE3\xC4" => "\xE9\x9A\xB3", + "\xE3\xC5" => "\xE9\x97\xA9", + "\xE3\xC6" => "\xE9\x97\xAB", + "\xE3\xC7" => "\xE9\x97\xB1", + "\xE3\xC8" => "\xE9\x97\xB3", + "\xE3\xC9" => "\xE9\x97\xB5", + "\xE3\xCA" => "\xE9\x97\xB6", + "\xE3\xCB" => "\xE9\x97\xBC", + "\xE3\xCC" => "\xE9\x97\xBE", + "\xE3\xCD" => "\xE9\x98\x83", + "\xE3\xCE" => "\xE9\x98\x84", + "\xE3\xCF" => "\xE9\x98\x86", + "\xE3\xD0" => "\xE9\x98\x88", + "\xE3\xD1" => "\xE9\x98\x8A", + "\xE3\xD2" => "\xE9\x98\x8B", + "\xE3\xD3" => "\xE9\x98\x8C", + "\xE3\xD4" => "\xE9\x98\x8D", + "\xE3\xD5" => "\xE9\x98\x8F", + "\xE3\xD6" => "\xE9\x98\x92", + "\xE3\xD7" => "\xE9\x98\x95", + "\xE3\xD8" => "\xE9\x98\x96", + "\xE3\xD9" => "\xE9\x98\x97", + "\xE3\xDA" => "\xE9\x98\x99", + "\xE3\xDB" => "\xE9\x98\x9A", + "\xE3\xDC" => "\xE4\xB8\xAC", + "\xE3\xDD" => "\xE7\x88\xBF", + "\xE3\xDE" => "\xE6\x88\x95", + "\xE3\xDF" => "\xE6\xB0\xB5", + "\xE3\xE0" => "\xE6\xB1\x94", + "\xE3\xE1" => "\xE6\xB1\x9C", + "\xE3\xE2" => "\xE6\xB1\x8A", + "\xE3\xE3" => "\xE6\xB2\xA3", + "\xE3\xE4" => "\xE6\xB2\x85", + "\xE3\xE5" => "\xE6\xB2\x90", + "\xE3\xE6" => "\xE6\xB2\x94", + "\xE3\xE7" => "\xE6\xB2\x8C", + "\xE3\xE8" => "\xE6\xB1\xA8", + "\xE3\xE9" => "\xE6\xB1\xA9", + "\xE3\xEA" => "\xE6\xB1\xB4", + "\xE3\xEB" => "\xE6\xB1\xB6", + "\xE3\xEC" => "\xE6\xB2\x86", + "\xE3\xED" => "\xE6\xB2\xA9", + "\xE3\xEE" => "\xE6\xB3\x90", + "\xE3\xEF" => "\xE6\xB3\x94", + "\xE3\xF0" => "\xE6\xB2\xAD", + "\xE3\xF1" => "\xE6\xB3\xB7", + "\xE3\xF2" => "\xE6\xB3\xB8", + "\xE3\xF3" => "\xE6\xB3\xB1", + "\xE3\xF4" => "\xE6\xB3\x97", + "\xE3\xF5" => "\xE6\xB2\xB2", + "\xE3\xF6" => "\xE6\xB3\xA0", + "\xE3\xF7" => "\xE6\xB3\x96", + "\xE3\xF8" => "\xE6\xB3\xBA", + "\xE3\xF9" => "\xE6\xB3\xAB", + "\xE3\xFA" => "\xE6\xB3\xAE", + "\xE3\xFB" => "\xE6\xB2\xB1", + "\xE3\xFC" => "\xE6\xB3\x93", + "\xE3\xFD" => "\xE6\xB3\xAF", + "\xE3\xFE" => "\xE6\xB3\xBE", + "\xE4\xA1" => "\xE6\xB4\xB9", + "\xE4\xA2" => "\xE6\xB4\xA7", + "\xE4\xA3" => "\xE6\xB4\x8C", + "\xE4\xA4" => "\xE6\xB5\x83", + "\xE4\xA5" => "\xE6\xB5\x88", + "\xE4\xA6" => "\xE6\xB4\x87", + "\xE4\xA7" => "\xE6\xB4\x84", + "\xE4\xA8" => "\xE6\xB4\x99", + "\xE4\xA9" => "\xE6\xB4\x8E", + "\xE4\xAA" => "\xE6\xB4\xAB", + "\xE4\xAB" => "\xE6\xB5\x8D", + "\xE4\xAC" => "\xE6\xB4\xAE", + "\xE4\xAD" => "\xE6\xB4\xB5", + "\xE4\xAE" => "\xE6\xB4\x9A", + "\xE4\xAF" => "\xE6\xB5\x8F", + "\xE4\xB0" => "\xE6\xB5\x92", + "\xE4\xB1" => "\xE6\xB5\x94", + "\xE4\xB2" => "\xE6\xB4\xB3", + "\xE4\xB3" => "\xE6\xB6\x91", + "\xE4\xB4" => "\xE6\xB5\xAF", + "\xE4\xB5" => "\xE6\xB6\x9E", + "\xE4\xB6" => "\xE6\xB6\xA0", + "\xE4\xB7" => "\xE6\xB5\x9E", + "\xE4\xB8" => "\xE6\xB6\x93", + "\xE4\xB9" => "\xE6\xB6\x94", + "\xE4\xBA" => "\xE6\xB5\x9C", + "\xE4\xBB" => "\xE6\xB5\xA0", + "\xE4\xBC" => "\xE6\xB5\xBC", + "\xE4\xBD" => "\xE6\xB5\xA3", + "\xE4\xBE" => "\xE6\xB8\x9A", + "\xE4\xBF" => "\xE6\xB7\x87", + "\xE4\xC0" => "\xE6\xB7\x85", + "\xE4\xC1" => "\xE6\xB7\x9E", + "\xE4\xC2" => "\xE6\xB8\x8E", + "\xE4\xC3" => "\xE6\xB6\xBF", + "\xE4\xC4" => "\xE6\xB7\xA0", + "\xE4\xC5" => "\xE6\xB8\x91", + "\xE4\xC6" => "\xE6\xB7\xA6", + "\xE4\xC7" => "\xE6\xB7\x9D", + "\xE4\xC8" => "\xE6\xB7\x99", + "\xE4\xC9" => "\xE6\xB8\x96", + "\xE4\xCA" => "\xE6\xB6\xAB", + "\xE4\xCB" => "\xE6\xB8\x8C", + "\xE4\xCC" => "\xE6\xB6\xAE", + "\xE4\xCD" => "\xE6\xB8\xAB", + "\xE4\xCE" => "\xE6\xB9\xAE", + "\xE4\xCF" => "\xE6\xB9\x8E", + "\xE4\xD0" => "\xE6\xB9\xAB", + "\xE4\xD1" => "\xE6\xBA\xB2", + "\xE4\xD2" => "\xE6\xB9\x9F", + "\xE4\xD3" => "\xE6\xBA\x86", + "\xE4\xD4" => "\xE6\xB9\x93", + "\xE4\xD5" => "\xE6\xB9\x94", + "\xE4\xD6" => "\xE6\xB8\xB2", + "\xE4\xD7" => "\xE6\xB8\xA5", + "\xE4\xD8" => "\xE6\xB9\x84", + "\xE4\xD9" => "\xE6\xBB\x9F", + "\xE4\xDA" => "\xE6\xBA\xB1", + "\xE4\xDB" => "\xE6\xBA\x98", + "\xE4\xDC" => "\xE6\xBB\xA0", + "\xE4\xDD" => "\xE6\xBC\xAD", + "\xE4\xDE" => "\xE6\xBB\xA2", + "\xE4\xDF" => "\xE6\xBA\xA5", + "\xE4\xE0" => "\xE6\xBA\xA7", + "\xE4\xE1" => "\xE6\xBA\xBD", + "\xE4\xE2" => "\xE6\xBA\xBB", + "\xE4\xE3" => "\xE6\xBA\xB7", + "\xE4\xE4" => "\xE6\xBB\x97", + "\xE4\xE5" => "\xE6\xBA\xB4", + "\xE4\xE6" => "\xE6\xBB\x8F", + "\xE4\xE7" => "\xE6\xBA\x8F", + "\xE4\xE8" => "\xE6\xBB\x82", + "\xE4\xE9" => "\xE6\xBA\x9F", + "\xE4\xEA" => "\xE6\xBD\xA2", + "\xE4\xEB" => "\xE6\xBD\x86", + "\xE4\xEC" => "\xE6\xBD\x87", + "\xE4\xED" => "\xE6\xBC\xA4", + "\xE4\xEE" => "\xE6\xBC\x95", + "\xE4\xEF" => "\xE6\xBB\xB9", + "\xE4\xF0" => "\xE6\xBC\xAF", + "\xE4\xF1" => "\xE6\xBC\xB6", + "\xE4\xF2" => "\xE6\xBD\x8B", + "\xE4\xF3" => "\xE6\xBD\xB4", + "\xE4\xF4" => "\xE6\xBC\xAA", + "\xE4\xF5" => "\xE6\xBC\x89", + "\xE4\xF6" => "\xE6\xBC\xA9", + "\xE4\xF7" => "\xE6\xBE\x89", + "\xE4\xF8" => "\xE6\xBE\x8D", + "\xE4\xF9" => "\xE6\xBE\x8C", + "\xE4\xFA" => "\xE6\xBD\xB8", + "\xE4\xFB" => "\xE6\xBD\xB2", + "\xE4\xFC" => "\xE6\xBD\xBC", + "\xE4\xFD" => "\xE6\xBD\xBA", + "\xE4\xFE" => "\xE6\xBF\x91", + "\xE5\xA1" => "\xE6\xBF\x89", + "\xE5\xA2" => "\xE6\xBE\xA7", + "\xE5\xA3" => "\xE6\xBE\xB9", + "\xE5\xA4" => "\xE6\xBE\xB6", + "\xE5\xA5" => "\xE6\xBF\x82", + "\xE5\xA6" => "\xE6\xBF\xA1", + "\xE5\xA7" => "\xE6\xBF\xAE", + "\xE5\xA8" => "\xE6\xBF\x9E", + "\xE5\xA9" => "\xE6\xBF\xA0", + "\xE5\xAA" => "\xE6\xBF\xAF", + "\xE5\xAB" => "\xE7\x80\x9A", + "\xE5\xAC" => "\xE7\x80\xA3", + "\xE5\xAD" => "\xE7\x80\x9B", + "\xE5\xAE" => "\xE7\x80\xB9", + "\xE5\xAF" => "\xE7\x80\xB5", + "\xE5\xB0" => "\xE7\x81\x8F", + "\xE5\xB1" => "\xE7\x81\x9E", + "\xE5\xB2" => "\xE5\xAE\x80", + "\xE5\xB3" => "\xE5\xAE\x84", + "\xE5\xB4" => "\xE5\xAE\x95", + "\xE5\xB5" => "\xE5\xAE\x93", + "\xE5\xB6" => "\xE5\xAE\xA5", + "\xE5\xB7" => "\xE5\xAE\xB8", + "\xE5\xB8" => "\xE7\x94\xAF", + "\xE5\xB9" => "\xE9\xAA\x9E", + "\xE5\xBA" => "\xE6\x90\xB4", + "\xE5\xBB" => "\xE5\xAF\xA4", + "\xE5\xBC" => "\xE5\xAF\xAE", + "\xE5\xBD" => "\xE8\xA4\xB0", + "\xE5\xBE" => "\xE5\xAF\xB0", + "\xE5\xBF" => "\xE8\xB9\x87", + "\xE5\xC0" => "\xE8\xAC\x87", + "\xE5\xC1" => "\xE8\xBE\xB6", + "\xE5\xC2" => "\xE8\xBF\x93", + "\xE5\xC3" => "\xE8\xBF\x95", + "\xE5\xC4" => "\xE8\xBF\xA5", + "\xE5\xC5" => "\xE8\xBF\xAE", + "\xE5\xC6" => "\xE8\xBF\xA4", + "\xE5\xC7" => "\xE8\xBF\xA9", + "\xE5\xC8" => "\xE8\xBF\xA6", + "\xE5\xC9" => "\xE8\xBF\xB3", + "\xE5\xCA" => "\xE8\xBF\xA8", + "\xE5\xCB" => "\xE9\x80\x85", + "\xE5\xCC" => "\xE9\x80\x84", + "\xE5\xCD" => "\xE9\x80\x8B", + "\xE5\xCE" => "\xE9\x80\xA6", + "\xE5\xCF" => "\xE9\x80\x91", + "\xE5\xD0" => "\xE9\x80\x8D", + "\xE5\xD1" => "\xE9\x80\x96", + "\xE5\xD2" => "\xE9\x80\xA1", + "\xE5\xD3" => "\xE9\x80\xB5", + "\xE5\xD4" => "\xE9\x80\xB6", + "\xE5\xD5" => "\xE9\x80\xAD", + "\xE5\xD6" => "\xE9\x80\xAF", + "\xE5\xD7" => "\xE9\x81\x84", + "\xE5\xD8" => "\xE9\x81\x91", + "\xE5\xD9" => "\xE9\x81\x92", + "\xE5\xDA" => "\xE9\x81\x90", + "\xE5\xDB" => "\xE9\x81\xA8", + "\xE5\xDC" => "\xE9\x81\x98", + "\xE5\xDD" => "\xE9\x81\xA2", + "\xE5\xDE" => "\xE9\x81\x9B", + "\xE5\xDF" => "\xE6\x9A\xB9", + "\xE5\xE0" => "\xE9\x81\xB4", + "\xE5\xE1" => "\xE9\x81\xBD", + "\xE5\xE2" => "\xE9\x82\x82", + "\xE5\xE3" => "\xE9\x82\x88", + "\xE5\xE4" => "\xE9\x82\x83", + "\xE5\xE5" => "\xE9\x82\x8B", + "\xE5\xE6" => "\xE5\xBD\x90", + "\xE5\xE7" => "\xE5\xBD\x97", + "\xE5\xE8" => "\xE5\xBD\x96", + "\xE5\xE9" => "\xE5\xBD\x98", + "\xE5\xEA" => "\xE5\xB0\xBB", + "\xE5\xEB" => "\xE5\x92\xAB", + "\xE5\xEC" => "\xE5\xB1\x90", + "\xE5\xED" => "\xE5\xB1\x99", + "\xE5\xEE" => "\xE5\xAD\xB1", + "\xE5\xEF" => "\xE5\xB1\xA3", + "\xE5\xF0" => "\xE5\xB1\xA6", + "\xE5\xF1" => "\xE7\xBE\xBC", + "\xE5\xF2" => "\xE5\xBC\xAA", + "\xE5\xF3" => "\xE5\xBC\xA9", + "\xE5\xF4" => "\xE5\xBC\xAD", + "\xE5\xF5" => "\xE8\x89\xB4", + "\xE5\xF6" => "\xE5\xBC\xBC", + "\xE5\xF7" => "\xE9\xAC\xBB", + "\xE5\xF8" => "\xE5\xB1\xAE", + "\xE5\xF9" => "\xE5\xA6\x81", + "\xE5\xFA" => "\xE5\xA6\x83", + "\xE5\xFB" => "\xE5\xA6\x8D", + "\xE5\xFC" => "\xE5\xA6\xA9", + "\xE5\xFD" => "\xE5\xA6\xAA", + "\xE5\xFE" => "\xE5\xA6\xA3", + "\xE6\xA1" => "\xE5\xA6\x97", + "\xE6\xA2" => "\xE5\xA7\x8A", + "\xE6\xA3" => "\xE5\xA6\xAB", + "\xE6\xA4" => "\xE5\xA6\x9E", + "\xE6\xA5" => "\xE5\xA6\xA4", + "\xE6\xA6" => "\xE5\xA7\x92", + "\xE6\xA7" => "\xE5\xA6\xB2", + "\xE6\xA8" => "\xE5\xA6\xAF", + "\xE6\xA9" => "\xE5\xA7\x97", + "\xE6\xAA" => "\xE5\xA6\xBE", + "\xE6\xAB" => "\xE5\xA8\x85", + "\xE6\xAC" => "\xE5\xA8\x86", + "\xE6\xAD" => "\xE5\xA7\x9D", + "\xE6\xAE" => "\xE5\xA8\x88", + "\xE6\xAF" => "\xE5\xA7\xA3", + "\xE6\xB0" => "\xE5\xA7\x98", + "\xE6\xB1" => "\xE5\xA7\xB9", + "\xE6\xB2" => "\xE5\xA8\x8C", + "\xE6\xB3" => "\xE5\xA8\x89", + "\xE6\xB4" => "\xE5\xA8\xB2", + "\xE6\xB5" => "\xE5\xA8\xB4", + "\xE6\xB6" => "\xE5\xA8\x91", + "\xE6\xB7" => "\xE5\xA8\xA3", + "\xE6\xB8" => "\xE5\xA8\x93", + "\xE6\xB9" => "\xE5\xA9\x80", + "\xE6\xBA" => "\xE5\xA9\xA7", + "\xE6\xBB" => "\xE5\xA9\x8A", + "\xE6\xBC" => "\xE5\xA9\x95", + "\xE6\xBD" => "\xE5\xA8\xBC", + "\xE6\xBE" => "\xE5\xA9\xA2", + "\xE6\xBF" => "\xE5\xA9\xB5", + "\xE6\xC0" => "\xE8\x83\xAC", + "\xE6\xC1" => "\xE5\xAA\xAA", + "\xE6\xC2" => "\xE5\xAA\x9B", + "\xE6\xC3" => "\xE5\xA9\xB7", + "\xE6\xC4" => "\xE5\xA9\xBA", + "\xE6\xC5" => "\xE5\xAA\xBE", + "\xE6\xC6" => "\xE5\xAB\xAB", + "\xE6\xC7" => "\xE5\xAA\xB2", + "\xE6\xC8" => "\xE5\xAB\x92", + "\xE6\xC9" => "\xE5\xAB\x94", + "\xE6\xCA" => "\xE5\xAA\xB8", + "\xE6\xCB" => "\xE5\xAB\xA0", + "\xE6\xCC" => "\xE5\xAB\xA3", + "\xE6\xCD" => "\xE5\xAB\xB1", + "\xE6\xCE" => "\xE5\xAB\x96", + "\xE6\xCF" => "\xE5\xAB\xA6", + "\xE6\xD0" => "\xE5\xAB\x98", + "\xE6\xD1" => "\xE5\xAB\x9C", + "\xE6\xD2" => "\xE5\xAC\x89", + "\xE6\xD3" => "\xE5\xAC\x97", + "\xE6\xD4" => "\xE5\xAC\x96", + "\xE6\xD5" => "\xE5\xAC\xB2", + "\xE6\xD6" => "\xE5\xAC\xB7", + "\xE6\xD7" => "\xE5\xAD\x80", + "\xE6\xD8" => "\xE5\xB0\x95", + "\xE6\xD9" => "\xE5\xB0\x9C", + "\xE6\xDA" => "\xE5\xAD\x9A", + "\xE6\xDB" => "\xE5\xAD\xA5", + "\xE6\xDC" => "\xE5\xAD\xB3", + "\xE6\xDD" => "\xE5\xAD\x91", + "\xE6\xDE" => "\xE5\xAD\x93", + "\xE6\xDF" => "\xE5\xAD\xA2", + "\xE6\xE0" => "\xE9\xA9\xB5", + "\xE6\xE1" => "\xE9\xA9\xB7", + "\xE6\xE2" => "\xE9\xA9\xB8", + "\xE6\xE3" => "\xE9\xA9\xBA", + "\xE6\xE4" => "\xE9\xA9\xBF", + "\xE6\xE5" => "\xE9\xA9\xBD", + "\xE6\xE6" => "\xE9\xAA\x80", + "\xE6\xE7" => "\xE9\xAA\x81", + "\xE6\xE8" => "\xE9\xAA\x85", + "\xE6\xE9" => "\xE9\xAA\x88", + "\xE6\xEA" => "\xE9\xAA\x8A", + "\xE6\xEB" => "\xE9\xAA\x90", + "\xE6\xEC" => "\xE9\xAA\x92", + "\xE6\xED" => "\xE9\xAA\x93", + "\xE6\xEE" => "\xE9\xAA\x96", + "\xE6\xEF" => "\xE9\xAA\x98", + "\xE6\xF0" => "\xE9\xAA\x9B", + "\xE6\xF1" => "\xE9\xAA\x9C", + "\xE6\xF2" => "\xE9\xAA\x9D", + "\xE6\xF3" => "\xE9\xAA\x9F", + "\xE6\xF4" => "\xE9\xAA\xA0", + "\xE6\xF5" => "\xE9\xAA\xA2", + "\xE6\xF6" => "\xE9\xAA\xA3", + "\xE6\xF7" => "\xE9\xAA\xA5", + "\xE6\xF8" => "\xE9\xAA\xA7", + "\xE6\xF9" => "\xE7\xBA\x9F", + "\xE6\xFA" => "\xE7\xBA\xA1", + "\xE6\xFB" => "\xE7\xBA\xA3", + "\xE6\xFC" => "\xE7\xBA\xA5", + "\xE6\xFD" => "\xE7\xBA\xA8", + "\xE6\xFE" => "\xE7\xBA\xA9", + "\xE7\xA1" => "\xE7\xBA\xAD", + "\xE7\xA2" => "\xE7\xBA\xB0", + "\xE7\xA3" => "\xE7\xBA\xBE", + "\xE7\xA4" => "\xE7\xBB\x80", + "\xE7\xA5" => "\xE7\xBB\x81", + "\xE7\xA6" => "\xE7\xBB\x82", + "\xE7\xA7" => "\xE7\xBB\x89", + "\xE7\xA8" => "\xE7\xBB\x8B", + "\xE7\xA9" => "\xE7\xBB\x8C", + "\xE7\xAA" => "\xE7\xBB\x90", + "\xE7\xAB" => "\xE7\xBB\x94", + "\xE7\xAC" => "\xE7\xBB\x97", + "\xE7\xAD" => "\xE7\xBB\x9B", + "\xE7\xAE" => "\xE7\xBB\xA0", + "\xE7\xAF" => "\xE7\xBB\xA1", + "\xE7\xB0" => "\xE7\xBB\xA8", + "\xE7\xB1" => "\xE7\xBB\xAB", + "\xE7\xB2" => "\xE7\xBB\xAE", + "\xE7\xB3" => "\xE7\xBB\xAF", + "\xE7\xB4" => "\xE7\xBB\xB1", + "\xE7\xB5" => "\xE7\xBB\xB2", + "\xE7\xB6" => "\xE7\xBC\x8D", + "\xE7\xB7" => "\xE7\xBB\xB6", + "\xE7\xB8" => "\xE7\xBB\xBA", + "\xE7\xB9" => "\xE7\xBB\xBB", + "\xE7\xBA" => "\xE7\xBB\xBE", + "\xE7\xBB" => "\xE7\xBC\x81", + "\xE7\xBC" => "\xE7\xBC\x82", + "\xE7\xBD" => "\xE7\xBC\x83", + "\xE7\xBE" => "\xE7\xBC\x87", + "\xE7\xBF" => "\xE7\xBC\x88", + "\xE7\xC0" => "\xE7\xBC\x8B", + "\xE7\xC1" => "\xE7\xBC\x8C", + "\xE7\xC2" => "\xE7\xBC\x8F", + "\xE7\xC3" => "\xE7\xBC\x91", + "\xE7\xC4" => "\xE7\xBC\x92", + "\xE7\xC5" => "\xE7\xBC\x97", + "\xE7\xC6" => "\xE7\xBC\x99", + "\xE7\xC7" => "\xE7\xBC\x9C", + "\xE7\xC8" => "\xE7\xBC\x9B", + "\xE7\xC9" => "\xE7\xBC\x9F", + "\xE7\xCA" => "\xE7\xBC\xA1", + "\xE7\xCB" => "\xE7\xBC\xA2", + "\xE7\xCC" => "\xE7\xBC\xA3", + "\xE7\xCD" => "\xE7\xBC\xA4", + "\xE7\xCE" => "\xE7\xBC\xA5", + "\xE7\xCF" => "\xE7\xBC\xA6", + "\xE7\xD0" => "\xE7\xBC\xA7", + "\xE7\xD1" => "\xE7\xBC\xAA", + "\xE7\xD2" => "\xE7\xBC\xAB", + "\xE7\xD3" => "\xE7\xBC\xAC", + "\xE7\xD4" => "\xE7\xBC\xAD", + "\xE7\xD5" => "\xE7\xBC\xAF", + "\xE7\xD6" => "\xE7\xBC\xB0", + "\xE7\xD7" => "\xE7\xBC\xB1", + "\xE7\xD8" => "\xE7\xBC\xB2", + "\xE7\xD9" => "\xE7\xBC\xB3", + "\xE7\xDA" => "\xE7\xBC\xB5", + "\xE7\xDB" => "\xE5\xB9\xBA", + "\xE7\xDC" => "\xE7\x95\xBF", + "\xE7\xDD" => "\xE5\xB7\x9B", + "\xE7\xDE" => "\xE7\x94\xBE", + "\xE7\xDF" => "\xE9\x82\x95", + "\xE7\xE0" => "\xE7\x8E\x8E", + "\xE7\xE1" => "\xE7\x8E\x91", + "\xE7\xE2" => "\xE7\x8E\xAE", + "\xE7\xE3" => "\xE7\x8E\xA2", + "\xE7\xE4" => "\xE7\x8E\x9F", + "\xE7\xE5" => "\xE7\x8F\x8F", + "\xE7\xE6" => "\xE7\x8F\x82", + "\xE7\xE7" => "\xE7\x8F\x91", + "\xE7\xE8" => "\xE7\x8E\xB7", + "\xE7\xE9" => "\xE7\x8E\xB3", + "\xE7\xEA" => "\xE7\x8F\x80", + "\xE7\xEB" => "\xE7\x8F\x89", + "\xE7\xEC" => "\xE7\x8F\x88", + "\xE7\xED" => "\xE7\x8F\xA5", + "\xE7\xEE" => "\xE7\x8F\x99", + "\xE7\xEF" => "\xE9\xA1\xBC", + "\xE7\xF0" => "\xE7\x90\x8A", + "\xE7\xF1" => "\xE7\x8F\xA9", + "\xE7\xF2" => "\xE7\x8F\xA7", + "\xE7\xF3" => "\xE7\x8F\x9E", + "\xE7\xF4" => "\xE7\x8E\xBA", + "\xE7\xF5" => "\xE7\x8F\xB2", + "\xE7\xF6" => "\xE7\x90\x8F", + "\xE7\xF7" => "\xE7\x90\xAA", + "\xE7\xF8" => "\xE7\x91\x9B", + "\xE7\xF9" => "\xE7\x90\xA6", + "\xE7\xFA" => "\xE7\x90\xA5", + "\xE7\xFB" => "\xE7\x90\xA8", + "\xE7\xFC" => "\xE7\x90\xB0", + "\xE7\xFD" => "\xE7\x90\xAE", + "\xE7\xFE" => "\xE7\x90\xAC", + "\xE8\xA1" => "\xE7\x90\x9B", + "\xE8\xA2" => "\xE7\x90\x9A", + "\xE8\xA3" => "\xE7\x91\x81", + "\xE8\xA4" => "\xE7\x91\x9C", + "\xE8\xA5" => "\xE7\x91\x97", + "\xE8\xA6" => "\xE7\x91\x95", + "\xE8\xA7" => "\xE7\x91\x99", + "\xE8\xA8" => "\xE7\x91\xB7", + "\xE8\xA9" => "\xE7\x91\xAD", + "\xE8\xAA" => "\xE7\x91\xBE", + "\xE8\xAB" => "\xE7\x92\x9C", + "\xE8\xAC" => "\xE7\x92\x8E", + "\xE8\xAD" => "\xE7\x92\x80", + "\xE8\xAE" => "\xE7\x92\x81", + "\xE8\xAF" => "\xE7\x92\x87", + "\xE8\xB0" => "\xE7\x92\x8B", + "\xE8\xB1" => "\xE7\x92\x9E", + "\xE8\xB2" => "\xE7\x92\xA8", + "\xE8\xB3" => "\xE7\x92\xA9", + "\xE8\xB4" => "\xE7\x92\x90", + "\xE8\xB5" => "\xE7\x92\xA7", + "\xE8\xB6" => "\xE7\x93\x92", + "\xE8\xB7" => "\xE7\x92\xBA", + "\xE8\xB8" => "\xE9\x9F\xAA", + "\xE8\xB9" => "\xE9\x9F\xAB", + "\xE8\xBA" => "\xE9\x9F\xAC", + "\xE8\xBB" => "\xE6\x9D\x8C", + "\xE8\xBC" => "\xE6\x9D\x93", + "\xE8\xBD" => "\xE6\x9D\x9E", + "\xE8\xBE" => "\xE6\x9D\x88", + "\xE8\xBF" => "\xE6\x9D\xA9", + "\xE8\xC0" => "\xE6\x9E\xA5", + "\xE8\xC1" => "\xE6\x9E\x87", + "\xE8\xC2" => "\xE6\x9D\xAA", + "\xE8\xC3" => "\xE6\x9D\xB3", + "\xE8\xC4" => "\xE6\x9E\x98", + "\xE8\xC5" => "\xE6\x9E\xA7", + "\xE8\xC6" => "\xE6\x9D\xB5", + "\xE8\xC7" => "\xE6\x9E\xA8", + "\xE8\xC8" => "\xE6\x9E\x9E", + "\xE8\xC9" => "\xE6\x9E\xAD", + "\xE8\xCA" => "\xE6\x9E\x8B", + "\xE8\xCB" => "\xE6\x9D\xB7", + "\xE8\xCC" => "\xE6\x9D\xBC", + "\xE8\xCD" => "\xE6\x9F\xB0", + "\xE8\xCE" => "\xE6\xA0\x89", + "\xE8\xCF" => "\xE6\x9F\x98", + "\xE8\xD0" => "\xE6\xA0\x8A", + "\xE8\xD1" => "\xE6\x9F\xA9", + "\xE8\xD2" => "\xE6\x9E\xB0", + "\xE8\xD3" => "\xE6\xA0\x8C", + "\xE8\xD4" => "\xE6\x9F\x99", + "\xE8\xD5" => "\xE6\x9E\xB5", + "\xE8\xD6" => "\xE6\x9F\x9A", + "\xE8\xD7" => "\xE6\x9E\xB3", + "\xE8\xD8" => "\xE6\x9F\x9D", + "\xE8\xD9" => "\xE6\xA0\x80", + "\xE8\xDA" => "\xE6\x9F\x83", + "\xE8\xDB" => "\xE6\x9E\xB8", + "\xE8\xDC" => "\xE6\x9F\xA2", + "\xE8\xDD" => "\xE6\xA0\x8E", + "\xE8\xDE" => "\xE6\x9F\x81", + "\xE8\xDF" => "\xE6\x9F\xBD", + "\xE8\xE0" => "\xE6\xA0\xB2", + "\xE8\xE1" => "\xE6\xA0\xB3", + "\xE8\xE2" => "\xE6\xA1\xA0", + "\xE8\xE3" => "\xE6\xA1\xA1", + "\xE8\xE4" => "\xE6\xA1\x8E", + "\xE8\xE5" => "\xE6\xA1\xA2", + "\xE8\xE6" => "\xE6\xA1\x84", + "\xE8\xE7" => "\xE6\xA1\xA4", + "\xE8\xE8" => "\xE6\xA2\x83", + "\xE8\xE9" => "\xE6\xA0\x9D", + "\xE8\xEA" => "\xE6\xA1\x95", + "\xE8\xEB" => "\xE6\xA1\xA6", + "\xE8\xEC" => "\xE6\xA1\x81", + "\xE8\xED" => "\xE6\xA1\xA7", + "\xE8\xEE" => "\xE6\xA1\x80", + "\xE8\xEF" => "\xE6\xA0\xBE", + "\xE8\xF0" => "\xE6\xA1\x8A", + "\xE8\xF1" => "\xE6\xA1\x89", + "\xE8\xF2" => "\xE6\xA0\xA9", + "\xE8\xF3" => "\xE6\xA2\xB5", + "\xE8\xF4" => "\xE6\xA2\x8F", + "\xE8\xF5" => "\xE6\xA1\xB4", + "\xE8\xF6" => "\xE6\xA1\xB7", + "\xE8\xF7" => "\xE6\xA2\x93", + "\xE8\xF8" => "\xE6\xA1\xAB", + "\xE8\xF9" => "\xE6\xA3\x82", + "\xE8\xFA" => "\xE6\xA5\xAE", + "\xE8\xFB" => "\xE6\xA3\xBC", + "\xE8\xFC" => "\xE6\xA4\x9F", + "\xE8\xFD" => "\xE6\xA4\xA0", + "\xE8\xFE" => "\xE6\xA3\xB9", + "\xE9\xA1" => "\xE6\xA4\xA4", + "\xE9\xA2" => "\xE6\xA3\xB0", + "\xE9\xA3" => "\xE6\xA4\x8B", + "\xE9\xA4" => "\xE6\xA4\x81", + "\xE9\xA5" => "\xE6\xA5\x97", + "\xE9\xA6" => "\xE6\xA3\xA3", + "\xE9\xA7" => "\xE6\xA4\x90", + "\xE9\xA8" => "\xE6\xA5\xB1", + "\xE9\xA9" => "\xE6\xA4\xB9", + "\xE9\xAA" => "\xE6\xA5\xA0", + "\xE9\xAB" => "\xE6\xA5\x82", + "\xE9\xAC" => "\xE6\xA5\x9D", + "\xE9\xAD" => "\xE6\xA6\x84", + "\xE9\xAE" => "\xE6\xA5\xAB", + "\xE9\xAF" => "\xE6\xA6\x80", + "\xE9\xB0" => "\xE6\xA6\x98", + "\xE9\xB1" => "\xE6\xA5\xB8", + "\xE9\xB2" => "\xE6\xA4\xB4", + "\xE9\xB3" => "\xE6\xA7\x8C", + "\xE9\xB4" => "\xE6\xA6\x87", + "\xE9\xB5" => "\xE6\xA6\x88", + "\xE9\xB6" => "\xE6\xA7\x8E", + "\xE9\xB7" => "\xE6\xA6\x89", + "\xE9\xB8" => "\xE6\xA5\xA6", + "\xE9\xB9" => "\xE6\xA5\xA3", + "\xE9\xBA" => "\xE6\xA5\xB9", + "\xE9\xBB" => "\xE6\xA6\x9B", + "\xE9\xBC" => "\xE6\xA6\xA7", + "\xE9\xBD" => "\xE6\xA6\xBB", + "\xE9\xBE" => "\xE6\xA6\xAB", + "\xE9\xBF" => "\xE6\xA6\xAD", + "\xE9\xC0" => "\xE6\xA7\x94", + "\xE9\xC1" => "\xE6\xA6\xB1", + "\xE9\xC2" => "\xE6\xA7\x81", + "\xE9\xC3" => "\xE6\xA7\x8A", + "\xE9\xC4" => "\xE6\xA7\x9F", + "\xE9\xC5" => "\xE6\xA6\x95", + "\xE9\xC6" => "\xE6\xA7\xA0", + "\xE9\xC7" => "\xE6\xA6\x8D", + "\xE9\xC8" => "\xE6\xA7\xBF", + "\xE9\xC9" => "\xE6\xA8\xAF", + "\xE9\xCA" => "\xE6\xA7\xAD", + "\xE9\xCB" => "\xE6\xA8\x97", + "\xE9\xCC" => "\xE6\xA8\x98", + "\xE9\xCD" => "\xE6\xA9\xA5", + "\xE9\xCE" => "\xE6\xA7\xB2", + "\xE9\xCF" => "\xE6\xA9\x84", + "\xE9\xD0" => "\xE6\xA8\xBE", + "\xE9\xD1" => "\xE6\xAA\xA0", + "\xE9\xD2" => "\xE6\xA9\x90", + "\xE9\xD3" => "\xE6\xA9\x9B", + "\xE9\xD4" => "\xE6\xA8\xB5", + "\xE9\xD5" => "\xE6\xAA\x8E", + "\xE9\xD6" => "\xE6\xA9\xB9", + "\xE9\xD7" => "\xE6\xA8\xBD", + "\xE9\xD8" => "\xE6\xA8\xA8", + "\xE9\xD9" => "\xE6\xA9\x98", + "\xE9\xDA" => "\xE6\xA9\xBC", + "\xE9\xDB" => "\xE6\xAA\x91", + "\xE9\xDC" => "\xE6\xAA\x90", + "\xE9\xDD" => "\xE6\xAA\xA9", + "\xE9\xDE" => "\xE6\xAA\x97", + "\xE9\xDF" => "\xE6\xAA\xAB", + "\xE9\xE0" => "\xE7\x8C\xB7", + "\xE9\xE1" => "\xE7\x8D\x92", + "\xE9\xE2" => "\xE6\xAE\x81", + "\xE9\xE3" => "\xE6\xAE\x82", + "\xE9\xE4" => "\xE6\xAE\x87", + "\xE9\xE5" => "\xE6\xAE\x84", + "\xE9\xE6" => "\xE6\xAE\x92", + "\xE9\xE7" => "\xE6\xAE\x93", + "\xE9\xE8" => "\xE6\xAE\x8D", + "\xE9\xE9" => "\xE6\xAE\x9A", + "\xE9\xEA" => "\xE6\xAE\x9B", + "\xE9\xEB" => "\xE6\xAE\xA1", + "\xE9\xEC" => "\xE6\xAE\xAA", + "\xE9\xED" => "\xE8\xBD\xAB", + "\xE9\xEE" => "\xE8\xBD\xAD", + "\xE9\xEF" => "\xE8\xBD\xB1", + "\xE9\xF0" => "\xE8\xBD\xB2", + "\xE9\xF1" => "\xE8\xBD\xB3", + "\xE9\xF2" => "\xE8\xBD\xB5", + "\xE9\xF3" => "\xE8\xBD\xB6", + "\xE9\xF4" => "\xE8\xBD\xB8", + "\xE9\xF5" => "\xE8\xBD\xB7", + "\xE9\xF6" => "\xE8\xBD\xB9", + "\xE9\xF7" => "\xE8\xBD\xBA", + "\xE9\xF8" => "\xE8\xBD\xBC", + "\xE9\xF9" => "\xE8\xBD\xBE", + "\xE9\xFA" => "\xE8\xBE\x81", + "\xE9\xFB" => "\xE8\xBE\x82", + "\xE9\xFC" => "\xE8\xBE\x84", + "\xE9\xFD" => "\xE8\xBE\x87", + "\xE9\xFE" => "\xE8\xBE\x8B", + "\xEA\xA1" => "\xE8\xBE\x8D", + "\xEA\xA2" => "\xE8\xBE\x8E", + "\xEA\xA3" => "\xE8\xBE\x8F", + "\xEA\xA4" => "\xE8\xBE\x98", + "\xEA\xA5" => "\xE8\xBE\x9A", + "\xEA\xA6" => "\xE8\xBB\x8E", + "\xEA\xA7" => "\xE6\x88\x8B", + "\xEA\xA8" => "\xE6\x88\x97", + "\xEA\xA9" => "\xE6\x88\x9B", + "\xEA\xAA" => "\xE6\x88\x9F", + "\xEA\xAB" => "\xE6\x88\xA2", + "\xEA\xAC" => "\xE6\x88\xA1", + "\xEA\xAD" => "\xE6\x88\xA5", + "\xEA\xAE" => "\xE6\x88\xA4", + "\xEA\xAF" => "\xE6\x88\xAC", + "\xEA\xB0" => "\xE8\x87\xA7", + "\xEA\xB1" => "\xE7\x93\xAF", + "\xEA\xB2" => "\xE7\x93\xB4", + "\xEA\xB3" => "\xE7\x93\xBF", + "\xEA\xB4" => "\xE7\x94\x8F", + "\xEA\xB5" => "\xE7\x94\x91", + "\xEA\xB6" => "\xE7\x94\x93", + "\xEA\xB7" => "\xE6\x94\xB4", + "\xEA\xB8" => "\xE6\x97\xAE", + "\xEA\xB9" => "\xE6\x97\xAF", + "\xEA\xBA" => "\xE6\x97\xB0", + "\xEA\xBB" => "\xE6\x98\x8A", + "\xEA\xBC" => "\xE6\x98\x99", + "\xEA\xBD" => "\xE6\x9D\xB2", + "\xEA\xBE" => "\xE6\x98\x83", + "\xEA\xBF" => "\xE6\x98\x95", + "\xEA\xC0" => "\xE6\x98\x80", + "\xEA\xC1" => "\xE7\x82\x85", + "\xEA\xC2" => "\xE6\x9B\xB7", + "\xEA\xC3" => "\xE6\x98\x9D", + "\xEA\xC4" => "\xE6\x98\xB4", + "\xEA\xC5" => "\xE6\x98\xB1", + "\xEA\xC6" => "\xE6\x98\xB6", + "\xEA\xC7" => "\xE6\x98\xB5", + "\xEA\xC8" => "\xE8\x80\x86", + "\xEA\xC9" => "\xE6\x99\x9F", + "\xEA\xCA" => "\xE6\x99\x94", + "\xEA\xCB" => "\xE6\x99\x81", + "\xEA\xCC" => "\xE6\x99\x8F", + "\xEA\xCD" => "\xE6\x99\x96", + "\xEA\xCE" => "\xE6\x99\xA1", + "\xEA\xCF" => "\xE6\x99\x97", + "\xEA\xD0" => "\xE6\x99\xB7", + "\xEA\xD1" => "\xE6\x9A\x84", + "\xEA\xD2" => "\xE6\x9A\x8C", + "\xEA\xD3" => "\xE6\x9A\xA7", + "\xEA\xD4" => "\xE6\x9A\x9D", + "\xEA\xD5" => "\xE6\x9A\xBE", + "\xEA\xD6" => "\xE6\x9B\x9B", + "\xEA\xD7" => "\xE6\x9B\x9C", + "\xEA\xD8" => "\xE6\x9B\xA6", + "\xEA\xD9" => "\xE6\x9B\xA9", + "\xEA\xDA" => "\xE8\xB4\xB2", + "\xEA\xDB" => "\xE8\xB4\xB3", + "\xEA\xDC" => "\xE8\xB4\xB6", + "\xEA\xDD" => "\xE8\xB4\xBB", + "\xEA\xDE" => "\xE8\xB4\xBD", + "\xEA\xDF" => "\xE8\xB5\x80", + "\xEA\xE0" => "\xE8\xB5\x85", + "\xEA\xE1" => "\xE8\xB5\x86", + "\xEA\xE2" => "\xE8\xB5\x88", + "\xEA\xE3" => "\xE8\xB5\x89", + "\xEA\xE4" => "\xE8\xB5\x87", + "\xEA\xE5" => "\xE8\xB5\x8D", + "\xEA\xE6" => "\xE8\xB5\x95", + "\xEA\xE7" => "\xE8\xB5\x99", + "\xEA\xE8" => "\xE8\xA7\x87", + "\xEA\xE9" => "\xE8\xA7\x8A", + "\xEA\xEA" => "\xE8\xA7\x8B", + "\xEA\xEB" => "\xE8\xA7\x8C", + "\xEA\xEC" => "\xE8\xA7\x8E", + "\xEA\xED" => "\xE8\xA7\x8F", + "\xEA\xEE" => "\xE8\xA7\x90", + "\xEA\xEF" => "\xE8\xA7\x91", + "\xEA\xF0" => "\xE7\x89\xAE", + "\xEA\xF1" => "\xE7\x8A\x9F", + "\xEA\xF2" => "\xE7\x89\x9D", + "\xEA\xF3" => "\xE7\x89\xA6", + "\xEA\xF4" => "\xE7\x89\xAF", + "\xEA\xF5" => "\xE7\x89\xBE", + "\xEA\xF6" => "\xE7\x89\xBF", + "\xEA\xF7" => "\xE7\x8A\x84", + "\xEA\xF8" => "\xE7\x8A\x8B", + "\xEA\xF9" => "\xE7\x8A\x8D", + "\xEA\xFA" => "\xE7\x8A\x8F", + "\xEA\xFB" => "\xE7\x8A\x92", + "\xEA\xFC" => "\xE6\x8C\x88", + "\xEA\xFD" => "\xE6\x8C\xB2", + "\xEA\xFE" => "\xE6\x8E\xB0", + "\xEB\xA1" => "\xE6\x90\xBF", + "\xEB\xA2" => "\xE6\x93\x98", + "\xEB\xA3" => "\xE8\x80\x84", + "\xEB\xA4" => "\xE6\xAF\xAA", + "\xEB\xA5" => "\xE6\xAF\xB3", + "\xEB\xA6" => "\xE6\xAF\xBD", + "\xEB\xA7" => "\xE6\xAF\xB5", + "\xEB\xA8" => "\xE6\xAF\xB9", + "\xEB\xA9" => "\xE6\xB0\x85", + "\xEB\xAA" => "\xE6\xB0\x87", + "\xEB\xAB" => "\xE6\xB0\x86", + "\xEB\xAC" => "\xE6\xB0\x8D", + "\xEB\xAD" => "\xE6\xB0\x95", + "\xEB\xAE" => "\xE6\xB0\x98", + "\xEB\xAF" => "\xE6\xB0\x99", + "\xEB\xB0" => "\xE6\xB0\x9A", + "\xEB\xB1" => "\xE6\xB0\xA1", + "\xEB\xB2" => "\xE6\xB0\xA9", + "\xEB\xB3" => "\xE6\xB0\xA4", + "\xEB\xB4" => "\xE6\xB0\xAA", + "\xEB\xB5" => "\xE6\xB0\xB2", + "\xEB\xB6" => "\xE6\x94\xB5", + "\xEB\xB7" => "\xE6\x95\x95", + "\xEB\xB8" => "\xE6\x95\xAB", + "\xEB\xB9" => "\xE7\x89\x8D", + "\xEB\xBA" => "\xE7\x89\x92", + "\xEB\xBB" => "\xE7\x89\x96", + "\xEB\xBC" => "\xE7\x88\xB0", + "\xEB\xBD" => "\xE8\x99\xA2", + "\xEB\xBE" => "\xE5\x88\x96", + "\xEB\xBF" => "\xE8\x82\x9F", + "\xEB\xC0" => "\xE8\x82\x9C", + "\xEB\xC1" => "\xE8\x82\x93", + "\xEB\xC2" => "\xE8\x82\xBC", + "\xEB\xC3" => "\xE6\x9C\x8A", + "\xEB\xC4" => "\xE8\x82\xBD", + "\xEB\xC5" => "\xE8\x82\xB1", + "\xEB\xC6" => "\xE8\x82\xAB", + "\xEB\xC7" => "\xE8\x82\xAD", + "\xEB\xC8" => "\xE8\x82\xB4", + "\xEB\xC9" => "\xE8\x82\xB7", + "\xEB\xCA" => "\xE8\x83\xA7", + "\xEB\xCB" => "\xE8\x83\xA8", + "\xEB\xCC" => "\xE8\x83\xA9", + "\xEB\xCD" => "\xE8\x83\xAA", + "\xEB\xCE" => "\xE8\x83\x9B", + "\xEB\xCF" => "\xE8\x83\x82", + "\xEB\xD0" => "\xE8\x83\x84", + "\xEB\xD1" => "\xE8\x83\x99", + "\xEB\xD2" => "\xE8\x83\x8D", + "\xEB\xD3" => "\xE8\x83\x97", + "\xEB\xD4" => "\xE6\x9C\x90", + "\xEB\xD5" => "\xE8\x83\x9D", + "\xEB\xD6" => "\xE8\x83\xAB", + "\xEB\xD7" => "\xE8\x83\xB1", + "\xEB\xD8" => "\xE8\x83\xB4", + "\xEB\xD9" => "\xE8\x83\xAD", + "\xEB\xDA" => "\xE8\x84\x8D", + "\xEB\xDB" => "\xE8\x84\x8E", + "\xEB\xDC" => "\xE8\x83\xB2", + "\xEB\xDD" => "\xE8\x83\xBC", + "\xEB\xDE" => "\xE6\x9C\x95", + "\xEB\xDF" => "\xE8\x84\x92", + "\xEB\xE0" => "\xE8\xB1\x9A", + "\xEB\xE1" => "\xE8\x84\xB6", + "\xEB\xE2" => "\xE8\x84\x9E", + "\xEB\xE3" => "\xE8\x84\xAC", + "\xEB\xE4" => "\xE8\x84\x98", + "\xEB\xE5" => "\xE8\x84\xB2", + "\xEB\xE6" => "\xE8\x85\x88", + "\xEB\xE7" => "\xE8\x85\x8C", + "\xEB\xE8" => "\xE8\x85\x93", + "\xEB\xE9" => "\xE8\x85\xB4", + "\xEB\xEA" => "\xE8\x85\x99", + "\xEB\xEB" => "\xE8\x85\x9A", + "\xEB\xEC" => "\xE8\x85\xB1", + "\xEB\xED" => "\xE8\x85\xA0", + "\xEB\xEE" => "\xE8\x85\xA9", + "\xEB\xEF" => "\xE8\x85\xBC", + "\xEB\xF0" => "\xE8\x85\xBD", + "\xEB\xF1" => "\xE8\x85\xAD", + "\xEB\xF2" => "\xE8\x85\xA7", + "\xEB\xF3" => "\xE5\xA1\x8D", + "\xEB\xF4" => "\xE5\xAA\xB5", + "\xEB\xF5" => "\xE8\x86\x88", + "\xEB\xF6" => "\xE8\x86\x82", + "\xEB\xF7" => "\xE8\x86\x91", + "\xEB\xF8" => "\xE6\xBB\x95", + "\xEB\xF9" => "\xE8\x86\xA3", + "\xEB\xFA" => "\xE8\x86\xAA", + "\xEB\xFB" => "\xE8\x87\x8C", + "\xEB\xFC" => "\xE6\x9C\xA6", + "\xEB\xFD" => "\xE8\x87\x8A", + "\xEB\xFE" => "\xE8\x86\xBB", + "\xEC\xA1" => "\xE8\x87\x81", + "\xEC\xA2" => "\xE8\x86\xA6", + "\xEC\xA3" => "\xE6\xAC\xA4", + "\xEC\xA4" => "\xE6\xAC\xB7", + "\xEC\xA5" => "\xE6\xAC\xB9", + "\xEC\xA6" => "\xE6\xAD\x83", + "\xEC\xA7" => "\xE6\xAD\x86", + "\xEC\xA8" => "\xE6\xAD\x99", + "\xEC\xA9" => "\xE9\xA3\x91", + "\xEC\xAA" => "\xE9\xA3\x92", + "\xEC\xAB" => "\xE9\xA3\x93", + "\xEC\xAC" => "\xE9\xA3\x95", + "\xEC\xAD" => "\xE9\xA3\x99", + "\xEC\xAE" => "\xE9\xA3\x9A", + "\xEC\xAF" => "\xE6\xAE\xB3", + "\xEC\xB0" => "\xE5\xBD\x80", + "\xEC\xB1" => "\xE6\xAF\x82", + "\xEC\xB2" => "\xE8\xA7\xB3", + "\xEC\xB3" => "\xE6\x96\x90", + "\xEC\xB4" => "\xE9\xBD\x91", + "\xEC\xB5" => "\xE6\x96\x93", + "\xEC\xB6" => "\xE6\x96\xBC", + "\xEC\xB7" => "\xE6\x97\x86", + "\xEC\xB8" => "\xE6\x97\x84", + "\xEC\xB9" => "\xE6\x97\x83", + "\xEC\xBA" => "\xE6\x97\x8C", + "\xEC\xBB" => "\xE6\x97\x8E", + "\xEC\xBC" => "\xE6\x97\x92", + "\xEC\xBD" => "\xE6\x97\x96", + "\xEC\xBE" => "\xE7\x82\x80", + "\xEC\xBF" => "\xE7\x82\x9C", + "\xEC\xC0" => "\xE7\x82\x96", + "\xEC\xC1" => "\xE7\x82\x9D", + "\xEC\xC2" => "\xE7\x82\xBB", + "\xEC\xC3" => "\xE7\x83\x80", + "\xEC\xC4" => "\xE7\x82\xB7", + "\xEC\xC5" => "\xE7\x82\xAB", + "\xEC\xC6" => "\xE7\x82\xB1", + "\xEC\xC7" => "\xE7\x83\xA8", + "\xEC\xC8" => "\xE7\x83\x8A", + "\xEC\xC9" => "\xE7\x84\x90", + "\xEC\xCA" => "\xE7\x84\x93", + "\xEC\xCB" => "\xE7\x84\x96", + "\xEC\xCC" => "\xE7\x84\xAF", + "\xEC\xCD" => "\xE7\x84\xB1", + "\xEC\xCE" => "\xE7\x85\xB3", + "\xEC\xCF" => "\xE7\x85\x9C", + "\xEC\xD0" => "\xE7\x85\xA8", + "\xEC\xD1" => "\xE7\x85\x85", + "\xEC\xD2" => "\xE7\x85\xB2", + "\xEC\xD3" => "\xE7\x85\x8A", + "\xEC\xD4" => "\xE7\x85\xB8", + "\xEC\xD5" => "\xE7\x85\xBA", + "\xEC\xD6" => "\xE7\x86\x98", + "\xEC\xD7" => "\xE7\x86\xB3", + "\xEC\xD8" => "\xE7\x86\xB5", + "\xEC\xD9" => "\xE7\x86\xA8", + "\xEC\xDA" => "\xE7\x86\xA0", + "\xEC\xDB" => "\xE7\x87\xA0", + "\xEC\xDC" => "\xE7\x87\x94", + "\xEC\xDD" => "\xE7\x87\xA7", + "\xEC\xDE" => "\xE7\x87\xB9", + "\xEC\xDF" => "\xE7\x88\x9D", + "\xEC\xE0" => "\xE7\x88\xA8", + "\xEC\xE1" => "\xE7\x81\xAC", + "\xEC\xE2" => "\xE7\x84\x98", + "\xEC\xE3" => "\xE7\x85\xA6", + "\xEC\xE4" => "\xE7\x86\xB9", + "\xEC\xE5" => "\xE6\x88\xBE", + "\xEC\xE6" => "\xE6\x88\xBD", + "\xEC\xE7" => "\xE6\x89\x83", + "\xEC\xE8" => "\xE6\x89\x88", + "\xEC\xE9" => "\xE6\x89\x89", + "\xEC\xEA" => "\xE7\xA4\xBB", + "\xEC\xEB" => "\xE7\xA5\x80", + "\xEC\xEC" => "\xE7\xA5\x86", + "\xEC\xED" => "\xE7\xA5\x89", + "\xEC\xEE" => "\xE7\xA5\x9B", + "\xEC\xEF" => "\xE7\xA5\x9C", + "\xEC\xF0" => "\xE7\xA5\x93", + "\xEC\xF1" => "\xE7\xA5\x9A", + "\xEC\xF2" => "\xE7\xA5\xA2", + "\xEC\xF3" => "\xE7\xA5\x97", + "\xEC\xF4" => "\xE7\xA5\xA0", + "\xEC\xF5" => "\xE7\xA5\xAF", + "\xEC\xF6" => "\xE7\xA5\xA7", + "\xEC\xF7" => "\xE7\xA5\xBA", + "\xEC\xF8" => "\xE7\xA6\x85", + "\xEC\xF9" => "\xE7\xA6\x8A", + "\xEC\xFA" => "\xE7\xA6\x9A", + "\xEC\xFB" => "\xE7\xA6\xA7", + "\xEC\xFC" => "\xE7\xA6\xB3", + "\xEC\xFD" => "\xE5\xBF\x91", + "\xEC\xFE" => "\xE5\xBF\x90", + "\xED\xA1" => "\xE6\x80\xBC", + "\xED\xA2" => "\xE6\x81\x9D", + "\xED\xA3" => "\xE6\x81\x9A", + "\xED\xA4" => "\xE6\x81\xA7", + "\xED\xA5" => "\xE6\x81\x81", + "\xED\xA6" => "\xE6\x81\x99", + "\xED\xA7" => "\xE6\x81\xA3", + "\xED\xA8" => "\xE6\x82\xAB", + "\xED\xA9" => "\xE6\x84\x86", + "\xED\xAA" => "\xE6\x84\x8D", + "\xED\xAB" => "\xE6\x85\x9D", + "\xED\xAC" => "\xE6\x86\xA9", + "\xED\xAD" => "\xE6\x86\x9D", + "\xED\xAE" => "\xE6\x87\x8B", + "\xED\xAF" => "\xE6\x87\x91", + "\xED\xB0" => "\xE6\x88\x86", + "\xED\xB1" => "\xE8\x82\x80", + "\xED\xB2" => "\xE8\x81\xBF", + "\xED\xB3" => "\xE6\xB2\x93", + "\xED\xB4" => "\xE6\xB3\xB6", + "\xED\xB5" => "\xE6\xB7\xBC", + "\xED\xB6" => "\xE7\x9F\xB6", + "\xED\xB7" => "\xE7\x9F\xB8", + "\xED\xB8" => "\xE7\xA0\x80", + "\xED\xB9" => "\xE7\xA0\x89", + "\xED\xBA" => "\xE7\xA0\x97", + "\xED\xBB" => "\xE7\xA0\x98", + "\xED\xBC" => "\xE7\xA0\x91", + "\xED\xBD" => "\xE6\x96\xAB", + "\xED\xBE" => "\xE7\xA0\xAD", + "\xED\xBF" => "\xE7\xA0\x9C", + "\xED\xC0" => "\xE7\xA0\x9D", + "\xED\xC1" => "\xE7\xA0\xB9", + "\xED\xC2" => "\xE7\xA0\xBA", + "\xED\xC3" => "\xE7\xA0\xBB", + "\xED\xC4" => "\xE7\xA0\x9F", + "\xED\xC5" => "\xE7\xA0\xBC", + "\xED\xC6" => "\xE7\xA0\xA5", + "\xED\xC7" => "\xE7\xA0\xAC", + "\xED\xC8" => "\xE7\xA0\xA3", + "\xED\xC9" => "\xE7\xA0\xA9", + "\xED\xCA" => "\xE7\xA1\x8E", + "\xED\xCB" => "\xE7\xA1\xAD", + "\xED\xCC" => "\xE7\xA1\x96", + "\xED\xCD" => "\xE7\xA1\x97", + "\xED\xCE" => "\xE7\xA0\xA6", + "\xED\xCF" => "\xE7\xA1\x90", + "\xED\xD0" => "\xE7\xA1\x87", + "\xED\xD1" => "\xE7\xA1\x8C", + "\xED\xD2" => "\xE7\xA1\xAA", + "\xED\xD3" => "\xE7\xA2\x9B", + "\xED\xD4" => "\xE7\xA2\x93", + "\xED\xD5" => "\xE7\xA2\x9A", + "\xED\xD6" => "\xE7\xA2\x87", + "\xED\xD7" => "\xE7\xA2\x9C", + "\xED\xD8" => "\xE7\xA2\xA1", + "\xED\xD9" => "\xE7\xA2\xA3", + "\xED\xDA" => "\xE7\xA2\xB2", + "\xED\xDB" => "\xE7\xA2\xB9", + "\xED\xDC" => "\xE7\xA2\xA5", + "\xED\xDD" => "\xE7\xA3\x94", + "\xED\xDE" => "\xE7\xA3\x99", + "\xED\xDF" => "\xE7\xA3\x89", + "\xED\xE0" => "\xE7\xA3\xAC", + "\xED\xE1" => "\xE7\xA3\xB2", + "\xED\xE2" => "\xE7\xA4\x85", + "\xED\xE3" => "\xE7\xA3\xB4", + "\xED\xE4" => "\xE7\xA4\x93", + "\xED\xE5" => "\xE7\xA4\xA4", + "\xED\xE6" => "\xE7\xA4\x9E", + "\xED\xE7" => "\xE7\xA4\xB4", + "\xED\xE8" => "\xE9\xBE\x9B", + "\xED\xE9" => "\xE9\xBB\xB9", + "\xED\xEA" => "\xE9\xBB\xBB", + "\xED\xEB" => "\xE9\xBB\xBC", + "\xED\xEC" => "\xE7\x9B\xB1", + "\xED\xED" => "\xE7\x9C\x84", + "\xED\xEE" => "\xE7\x9C\x8D", + "\xED\xEF" => "\xE7\x9B\xB9", + "\xED\xF0" => "\xE7\x9C\x87", + "\xED\xF1" => "\xE7\x9C\x88", + "\xED\xF2" => "\xE7\x9C\x9A", + "\xED\xF3" => "\xE7\x9C\xA2", + "\xED\xF4" => "\xE7\x9C\x99", + "\xED\xF5" => "\xE7\x9C\xAD", + "\xED\xF6" => "\xE7\x9C\xA6", + "\xED\xF7" => "\xE7\x9C\xB5", + "\xED\xF8" => "\xE7\x9C\xB8", + "\xED\xF9" => "\xE7\x9D\x90", + "\xED\xFA" => "\xE7\x9D\x91", + "\xED\xFB" => "\xE7\x9D\x87", + "\xED\xFC" => "\xE7\x9D\x83", + "\xED\xFD" => "\xE7\x9D\x9A", + "\xED\xFE" => "\xE7\x9D\xA8", + "\xEE\xA1" => "\xE7\x9D\xA2", + "\xEE\xA2" => "\xE7\x9D\xA5", + "\xEE\xA3" => "\xE7\x9D\xBF", + "\xEE\xA4" => "\xE7\x9E\x8D", + "\xEE\xA5" => "\xE7\x9D\xBD", + "\xEE\xA6" => "\xE7\x9E\x80", + "\xEE\xA7" => "\xE7\x9E\x8C", + "\xEE\xA8" => "\xE7\x9E\x91", + "\xEE\xA9" => "\xE7\x9E\x9F", + "\xEE\xAA" => "\xE7\x9E\xA0", + "\xEE\xAB" => "\xE7\x9E\xB0", + "\xEE\xAC" => "\xE7\x9E\xB5", + "\xEE\xAD" => "\xE7\x9E\xBD", + "\xEE\xAE" => "\xE7\x94\xBA", + "\xEE\xAF" => "\xE7\x95\x80", + "\xEE\xB0" => "\xE7\x95\x8E", + "\xEE\xB1" => "\xE7\x95\x8B", + "\xEE\xB2" => "\xE7\x95\x88", + "\xEE\xB3" => "\xE7\x95\x9B", + "\xEE\xB4" => "\xE7\x95\xB2", + "\xEE\xB5" => "\xE7\x95\xB9", + "\xEE\xB6" => "\xE7\x96\x83", + "\xEE\xB7" => "\xE7\xBD\x98", + "\xEE\xB8" => "\xE7\xBD\xA1", + "\xEE\xB9" => "\xE7\xBD\x9F", + "\xEE\xBA" => "\xE8\xA9\x88", + "\xEE\xBB" => "\xE7\xBD\xA8", + "\xEE\xBC" => "\xE7\xBD\xB4", + "\xEE\xBD" => "\xE7\xBD\xB1", + "\xEE\xBE" => "\xE7\xBD\xB9", + "\xEE\xBF" => "\xE7\xBE\x81", + "\xEE\xC0" => "\xE7\xBD\xBE", + "\xEE\xC1" => "\xE7\x9B\x8D", + "\xEE\xC2" => "\xE7\x9B\xA5", + "\xEE\xC3" => "\xE8\xA0\xB2", + "\xEE\xC4" => "\xE9\x92\x85", + "\xEE\xC5" => "\xE9\x92\x86", + "\xEE\xC6" => "\xE9\x92\x87", + "\xEE\xC7" => "\xE9\x92\x8B", + "\xEE\xC8" => "\xE9\x92\x8A", + "\xEE\xC9" => "\xE9\x92\x8C", + "\xEE\xCA" => "\xE9\x92\x8D", + "\xEE\xCB" => "\xE9\x92\x8F", + "\xEE\xCC" => "\xE9\x92\x90", + "\xEE\xCD" => "\xE9\x92\x94", + "\xEE\xCE" => "\xE9\x92\x97", + "\xEE\xCF" => "\xE9\x92\x95", + "\xEE\xD0" => "\xE9\x92\x9A", + "\xEE\xD1" => "\xE9\x92\x9B", + "\xEE\xD2" => "\xE9\x92\x9C", + "\xEE\xD3" => "\xE9\x92\xA3", + "\xEE\xD4" => "\xE9\x92\xA4", + "\xEE\xD5" => "\xE9\x92\xAB", + "\xEE\xD6" => "\xE9\x92\xAA", + "\xEE\xD7" => "\xE9\x92\xAD", + "\xEE\xD8" => "\xE9\x92\xAC", + "\xEE\xD9" => "\xE9\x92\xAF", + "\xEE\xDA" => "\xE9\x92\xB0", + "\xEE\xDB" => "\xE9\x92\xB2", + "\xEE\xDC" => "\xE9\x92\xB4", + "\xEE\xDD" => "\xE9\x92\xB6", + "\xEE\xDE" => "\xE9\x92\xB7", + "\xEE\xDF" => "\xE9\x92\xB8", + "\xEE\xE0" => "\xE9\x92\xB9", + "\xEE\xE1" => "\xE9\x92\xBA", + "\xEE\xE2" => "\xE9\x92\xBC", + "\xEE\xE3" => "\xE9\x92\xBD", + "\xEE\xE4" => "\xE9\x92\xBF", + "\xEE\xE5" => "\xE9\x93\x84", + "\xEE\xE6" => "\xE9\x93\x88", + "\xEE\xE7" => "\xE9\x93\x89", + "\xEE\xE8" => "\xE9\x93\x8A", + "\xEE\xE9" => "\xE9\x93\x8B", + "\xEE\xEA" => "\xE9\x93\x8C", + "\xEE\xEB" => "\xE9\x93\x8D", + "\xEE\xEC" => "\xE9\x93\x8E", + "\xEE\xED" => "\xE9\x93\x90", + "\xEE\xEE" => "\xE9\x93\x91", + "\xEE\xEF" => "\xE9\x93\x92", + "\xEE\xF0" => "\xE9\x93\x95", + "\xEE\xF1" => "\xE9\x93\x96", + "\xEE\xF2" => "\xE9\x93\x97", + "\xEE\xF3" => "\xE9\x93\x99", + "\xEE\xF4" => "\xE9\x93\x98", + "\xEE\xF5" => "\xE9\x93\x9B", + "\xEE\xF6" => "\xE9\x93\x9E", + "\xEE\xF7" => "\xE9\x93\x9F", + "\xEE\xF8" => "\xE9\x93\xA0", + "\xEE\xF9" => "\xE9\x93\xA2", + "\xEE\xFA" => "\xE9\x93\xA4", + "\xEE\xFB" => "\xE9\x93\xA5", + "\xEE\xFC" => "\xE9\x93\xA7", + "\xEE\xFD" => "\xE9\x93\xA8", + "\xEE\xFE" => "\xE9\x93\xAA", + "\xEF\xA1" => "\xE9\x93\xA9", + "\xEF\xA2" => "\xE9\x93\xAB", + "\xEF\xA3" => "\xE9\x93\xAE", + "\xEF\xA4" => "\xE9\x93\xAF", + "\xEF\xA5" => "\xE9\x93\xB3", + "\xEF\xA6" => "\xE9\x93\xB4", + "\xEF\xA7" => "\xE9\x93\xB5", + "\xEF\xA8" => "\xE9\x93\xB7", + "\xEF\xA9" => "\xE9\x93\xB9", + "\xEF\xAA" => "\xE9\x93\xBC", + "\xEF\xAB" => "\xE9\x93\xBD", + "\xEF\xAC" => "\xE9\x93\xBF", + "\xEF\xAD" => "\xE9\x94\x83", + "\xEF\xAE" => "\xE9\x94\x82", + "\xEF\xAF" => "\xE9\x94\x86", + "\xEF\xB0" => "\xE9\x94\x87", + "\xEF\xB1" => "\xE9\x94\x89", + "\xEF\xB2" => "\xE9\x94\x8A", + "\xEF\xB3" => "\xE9\x94\x8D", + "\xEF\xB4" => "\xE9\x94\x8E", + "\xEF\xB5" => "\xE9\x94\x8F", + "\xEF\xB6" => "\xE9\x94\x92", + "\xEF\xB7" => "\xE9\x94\x93", + "\xEF\xB8" => "\xE9\x94\x94", + "\xEF\xB9" => "\xE9\x94\x95", + "\xEF\xBA" => "\xE9\x94\x96", + "\xEF\xBB" => "\xE9\x94\x98", + "\xEF\xBC" => "\xE9\x94\x9B", + "\xEF\xBD" => "\xE9\x94\x9D", + "\xEF\xBE" => "\xE9\x94\x9E", + "\xEF\xBF" => "\xE9\x94\x9F", + "\xEF\xC0" => "\xE9\x94\xA2", + "\xEF\xC1" => "\xE9\x94\xAA", + "\xEF\xC2" => "\xE9\x94\xAB", + "\xEF\xC3" => "\xE9\x94\xA9", + "\xEF\xC4" => "\xE9\x94\xAC", + "\xEF\xC5" => "\xE9\x94\xB1", + "\xEF\xC6" => "\xE9\x94\xB2", + "\xEF\xC7" => "\xE9\x94\xB4", + "\xEF\xC8" => "\xE9\x94\xB6", + "\xEF\xC9" => "\xE9\x94\xB7", + "\xEF\xCA" => "\xE9\x94\xB8", + "\xEF\xCB" => "\xE9\x94\xBC", + "\xEF\xCC" => "\xE9\x94\xBE", + "\xEF\xCD" => "\xE9\x94\xBF", + "\xEF\xCE" => "\xE9\x95\x82", + "\xEF\xCF" => "\xE9\x94\xB5", + "\xEF\xD0" => "\xE9\x95\x84", + "\xEF\xD1" => "\xE9\x95\x85", + "\xEF\xD2" => "\xE9\x95\x86", + "\xEF\xD3" => "\xE9\x95\x89", + "\xEF\xD4" => "\xE9\x95\x8C", + "\xEF\xD5" => "\xE9\x95\x8E", + "\xEF\xD6" => "\xE9\x95\x8F", + "\xEF\xD7" => "\xE9\x95\x92", + "\xEF\xD8" => "\xE9\x95\x93", + "\xEF\xD9" => "\xE9\x95\x94", + "\xEF\xDA" => "\xE9\x95\x96", + "\xEF\xDB" => "\xE9\x95\x97", + "\xEF\xDC" => "\xE9\x95\x98", + "\xEF\xDD" => "\xE9\x95\x99", + "\xEF\xDE" => "\xE9\x95\x9B", + "\xEF\xDF" => "\xE9\x95\x9E", + "\xEF\xE0" => "\xE9\x95\x9F", + "\xEF\xE1" => "\xE9\x95\x9D", + "\xEF\xE2" => "\xE9\x95\xA1", + "\xEF\xE3" => "\xE9\x95\xA2", + "\xEF\xE4" => "\xE9\x95\xA4", + "\xEF\xE5" => "\xE9\x95\xA5", + "\xEF\xE6" => "\xE9\x95\xA6", + "\xEF\xE7" => "\xE9\x95\xA7", + "\xEF\xE8" => "\xE9\x95\xA8", + "\xEF\xE9" => "\xE9\x95\xA9", + "\xEF\xEA" => "\xE9\x95\xAA", + "\xEF\xEB" => "\xE9\x95\xAB", + "\xEF\xEC" => "\xE9\x95\xAC", + "\xEF\xED" => "\xE9\x95\xAF", + "\xEF\xEE" => "\xE9\x95\xB1", + "\xEF\xEF" => "\xE9\x95\xB2", + "\xEF\xF0" => "\xE9\x95\xB3", + "\xEF\xF1" => "\xE9\x94\xBA", + "\xEF\xF2" => "\xE7\x9F\xA7", + "\xEF\xF3" => "\xE7\x9F\xAC", + "\xEF\xF4" => "\xE9\x9B\x89", + "\xEF\xF5" => "\xE7\xA7\x95", + "\xEF\xF6" => "\xE7\xA7\xAD", + "\xEF\xF7" => "\xE7\xA7\xA3", + "\xEF\xF8" => "\xE7\xA7\xAB", + "\xEF\xF9" => "\xE7\xA8\x86", + "\xEF\xFA" => "\xE5\xB5\x87", + "\xEF\xFB" => "\xE7\xA8\x83", + "\xEF\xFC" => "\xE7\xA8\x82", + "\xEF\xFD" => "\xE7\xA8\x9E", + "\xEF\xFE" => "\xE7\xA8\x94", + "\xF0\xA1" => "\xE7\xA8\xB9", + "\xF0\xA2" => "\xE7\xA8\xB7", + "\xF0\xA3" => "\xE7\xA9\x91", + "\xF0\xA4" => "\xE9\xBB\x8F", + "\xF0\xA5" => "\xE9\xA6\xA5", + "\xF0\xA6" => "\xE7\xA9\xB0", + "\xF0\xA7" => "\xE7\x9A\x88", + "\xF0\xA8" => "\xE7\x9A\x8E", + "\xF0\xA9" => "\xE7\x9A\x93", + "\xF0\xAA" => "\xE7\x9A\x99", + "\xF0\xAB" => "\xE7\x9A\xA4", + "\xF0\xAC" => "\xE7\x93\x9E", + "\xF0\xAD" => "\xE7\x93\xA0", + "\xF0\xAE" => "\xE7\x94\xAC", + "\xF0\xAF" => "\xE9\xB8\xA0", + "\xF0\xB0" => "\xE9\xB8\xA2", + "\xF0\xB1" => "\xE9\xB8\xA8", + "\xF0\xB2" => "\xE9\xB8\xA9", + "\xF0\xB3" => "\xE9\xB8\xAA", + "\xF0\xB4" => "\xE9\xB8\xAB", + "\xF0\xB5" => "\xE9\xB8\xAC", + "\xF0\xB6" => "\xE9\xB8\xB2", + "\xF0\xB7" => "\xE9\xB8\xB1", + "\xF0\xB8" => "\xE9\xB8\xB6", + "\xF0\xB9" => "\xE9\xB8\xB8", + "\xF0\xBA" => "\xE9\xB8\xB7", + "\xF0\xBB" => "\xE9\xB8\xB9", + "\xF0\xBC" => "\xE9\xB8\xBA", + "\xF0\xBD" => "\xE9\xB8\xBE", + "\xF0\xBE" => "\xE9\xB9\x81", + "\xF0\xBF" => "\xE9\xB9\x82", + "\xF0\xC0" => "\xE9\xB9\x84", + "\xF0\xC1" => "\xE9\xB9\x86", + "\xF0\xC2" => "\xE9\xB9\x87", + "\xF0\xC3" => "\xE9\xB9\x88", + "\xF0\xC4" => "\xE9\xB9\x89", + "\xF0\xC5" => "\xE9\xB9\x8B", + "\xF0\xC6" => "\xE9\xB9\x8C", + "\xF0\xC7" => "\xE9\xB9\x8E", + "\xF0\xC8" => "\xE9\xB9\x91", + "\xF0\xC9" => "\xE9\xB9\x95", + "\xF0\xCA" => "\xE9\xB9\x97", + "\xF0\xCB" => "\xE9\xB9\x9A", + "\xF0\xCC" => "\xE9\xB9\x9B", + "\xF0\xCD" => "\xE9\xB9\x9C", + "\xF0\xCE" => "\xE9\xB9\x9E", + "\xF0\xCF" => "\xE9\xB9\xA3", + "\xF0\xD0" => "\xE9\xB9\xA6", + "\xF0\xD1" => "\xE9\xB9\xA7", + "\xF0\xD2" => "\xE9\xB9\xA8", + "\xF0\xD3" => "\xE9\xB9\xA9", + "\xF0\xD4" => "\xE9\xB9\xAA", + "\xF0\xD5" => "\xE9\xB9\xAB", + "\xF0\xD6" => "\xE9\xB9\xAC", + "\xF0\xD7" => "\xE9\xB9\xB1", + "\xF0\xD8" => "\xE9\xB9\xAD", + "\xF0\xD9" => "\xE9\xB9\xB3", + "\xF0\xDA" => "\xE7\x96\x92", + "\xF0\xDB" => "\xE7\x96\x94", + "\xF0\xDC" => "\xE7\x96\x96", + "\xF0\xDD" => "\xE7\x96\xA0", + "\xF0\xDE" => "\xE7\x96\x9D", + "\xF0\xDF" => "\xE7\x96\xAC", + "\xF0\xE0" => "\xE7\x96\xA3", + "\xF0\xE1" => "\xE7\x96\xB3", + "\xF0\xE2" => "\xE7\x96\xB4", + "\xF0\xE3" => "\xE7\x96\xB8", + "\xF0\xE4" => "\xE7\x97\x84", + "\xF0\xE5" => "\xE7\x96\xB1", + "\xF0\xE6" => "\xE7\x96\xB0", + "\xF0\xE7" => "\xE7\x97\x83", + "\xF0\xE8" => "\xE7\x97\x82", + "\xF0\xE9" => "\xE7\x97\x96", + "\xF0\xEA" => "\xE7\x97\x8D", + "\xF0\xEB" => "\xE7\x97\xA3", + "\xF0\xEC" => "\xE7\x97\xA8", + "\xF0\xED" => "\xE7\x97\xA6", + "\xF0\xEE" => "\xE7\x97\xA4", + "\xF0\xEF" => "\xE7\x97\xAB", + "\xF0\xF0" => "\xE7\x97\xA7", + "\xF0\xF1" => "\xE7\x98\x83", + "\xF0\xF2" => "\xE7\x97\xB1", + "\xF0\xF3" => "\xE7\x97\xBC", + "\xF0\xF4" => "\xE7\x97\xBF", + "\xF0\xF5" => "\xE7\x98\x90", + "\xF0\xF6" => "\xE7\x98\x80", + "\xF0\xF7" => "\xE7\x98\x85", + "\xF0\xF8" => "\xE7\x98\x8C", + "\xF0\xF9" => "\xE7\x98\x97", + "\xF0\xFA" => "\xE7\x98\x8A", + "\xF0\xFB" => "\xE7\x98\xA5", + "\xF0\xFC" => "\xE7\x98\x98", + "\xF0\xFD" => "\xE7\x98\x95", + "\xF0\xFE" => "\xE7\x98\x99", + "\xF1\xA1" => "\xE7\x98\x9B", + "\xF1\xA2" => "\xE7\x98\xBC", + "\xF1\xA3" => "\xE7\x98\xA2", + "\xF1\xA4" => "\xE7\x98\xA0", + "\xF1\xA5" => "\xE7\x99\x80", + "\xF1\xA6" => "\xE7\x98\xAD", + "\xF1\xA7" => "\xE7\x98\xB0", + "\xF1\xA8" => "\xE7\x98\xBF", + "\xF1\xA9" => "\xE7\x98\xB5", + "\xF1\xAA" => "\xE7\x99\x83", + "\xF1\xAB" => "\xE7\x98\xBE", + "\xF1\xAC" => "\xE7\x98\xB3", + "\xF1\xAD" => "\xE7\x99\x8D", + "\xF1\xAE" => "\xE7\x99\x9E", + "\xF1\xAF" => "\xE7\x99\x94", + "\xF1\xB0" => "\xE7\x99\x9C", + "\xF1\xB1" => "\xE7\x99\x96", + "\xF1\xB2" => "\xE7\x99\xAB", + "\xF1\xB3" => "\xE7\x99\xAF", + "\xF1\xB4" => "\xE7\xBF\x8A", + "\xF1\xB5" => "\xE7\xAB\xA6", + "\xF1\xB6" => "\xE7\xA9\xB8", + "\xF1\xB7" => "\xE7\xA9\xB9", + "\xF1\xB8" => "\xE7\xAA\x80", + "\xF1\xB9" => "\xE7\xAA\x86", + "\xF1\xBA" => "\xE7\xAA\x88", + "\xF1\xBB" => "\xE7\xAA\x95", + "\xF1\xBC" => "\xE7\xAA\xA6", + "\xF1\xBD" => "\xE7\xAA\xA0", + "\xF1\xBE" => "\xE7\xAA\xAC", + "\xF1\xBF" => "\xE7\xAA\xA8", + "\xF1\xC0" => "\xE7\xAA\xAD", + "\xF1\xC1" => "\xE7\xAA\xB3", + "\xF1\xC2" => "\xE8\xA1\xA4", + "\xF1\xC3" => "\xE8\xA1\xA9", + "\xF1\xC4" => "\xE8\xA1\xB2", + "\xF1\xC5" => "\xE8\xA1\xBD", + "\xF1\xC6" => "\xE8\xA1\xBF", + "\xF1\xC7" => "\xE8\xA2\x82", + "\xF1\xC8" => "\xE8\xA2\xA2", + "\xF1\xC9" => "\xE8\xA3\x86", + "\xF1\xCA" => "\xE8\xA2\xB7", + "\xF1\xCB" => "\xE8\xA2\xBC", + "\xF1\xCC" => "\xE8\xA3\x89", + "\xF1\xCD" => "\xE8\xA3\xA2", + "\xF1\xCE" => "\xE8\xA3\x8E", + "\xF1\xCF" => "\xE8\xA3\xA3", + "\xF1\xD0" => "\xE8\xA3\xA5", + "\xF1\xD1" => "\xE8\xA3\xB1", + "\xF1\xD2" => "\xE8\xA4\x9A", + "\xF1\xD3" => "\xE8\xA3\xBC", + "\xF1\xD4" => "\xE8\xA3\xA8", + "\xF1\xD5" => "\xE8\xA3\xBE", + "\xF1\xD6" => "\xE8\xA3\xB0", + "\xF1\xD7" => "\xE8\xA4\xA1", + "\xF1\xD8" => "\xE8\xA4\x99", + "\xF1\xD9" => "\xE8\xA4\x93", + "\xF1\xDA" => "\xE8\xA4\x9B", + "\xF1\xDB" => "\xE8\xA4\x8A", + "\xF1\xDC" => "\xE8\xA4\xB4", + "\xF1\xDD" => "\xE8\xA4\xAB", + "\xF1\xDE" => "\xE8\xA4\xB6", + "\xF1\xDF" => "\xE8\xA5\x81", + "\xF1\xE0" => "\xE8\xA5\xA6", + "\xF1\xE1" => "\xE8\xA5\xBB", + "\xF1\xE2" => "\xE7\x96\x8B", + "\xF1\xE3" => "\xE8\x83\xA5", + "\xF1\xE4" => "\xE7\x9A\xB2", + "\xF1\xE5" => "\xE7\x9A\xB4", + "\xF1\xE6" => "\xE7\x9F\x9C", + "\xF1\xE7" => "\xE8\x80\x92", + "\xF1\xE8" => "\xE8\x80\x94", + "\xF1\xE9" => "\xE8\x80\x96", + "\xF1\xEA" => "\xE8\x80\x9C", + "\xF1\xEB" => "\xE8\x80\xA0", + "\xF1\xEC" => "\xE8\x80\xA2", + "\xF1\xED" => "\xE8\x80\xA5", + "\xF1\xEE" => "\xE8\x80\xA6", + "\xF1\xEF" => "\xE8\x80\xA7", + "\xF1\xF0" => "\xE8\x80\xA9", + "\xF1\xF1" => "\xE8\x80\xA8", + "\xF1\xF2" => "\xE8\x80\xB1", + "\xF1\xF3" => "\xE8\x80\x8B", + "\xF1\xF4" => "\xE8\x80\xB5", + "\xF1\xF5" => "\xE8\x81\x83", + "\xF1\xF6" => "\xE8\x81\x86", + "\xF1\xF7" => "\xE8\x81\x8D", + "\xF1\xF8" => "\xE8\x81\x92", + "\xF1\xF9" => "\xE8\x81\xA9", + "\xF1\xFA" => "\xE8\x81\xB1", + "\xF1\xFB" => "\xE8\xA6\x83", + "\xF1\xFC" => "\xE9\xA1\xB8", + "\xF1\xFD" => "\xE9\xA2\x80", + "\xF1\xFE" => "\xE9\xA2\x83", + "\xF2\xA1" => "\xE9\xA2\x89", + "\xF2\xA2" => "\xE9\xA2\x8C", + "\xF2\xA3" => "\xE9\xA2\x8D", + "\xF2\xA4" => "\xE9\xA2\x8F", + "\xF2\xA5" => "\xE9\xA2\x94", + "\xF2\xA6" => "\xE9\xA2\x9A", + "\xF2\xA7" => "\xE9\xA2\x9B", + "\xF2\xA8" => "\xE9\xA2\x9E", + "\xF2\xA9" => "\xE9\xA2\x9F", + "\xF2\xAA" => "\xE9\xA2\xA1", + "\xF2\xAB" => "\xE9\xA2\xA2", + "\xF2\xAC" => "\xE9\xA2\xA5", + "\xF2\xAD" => "\xE9\xA2\xA6", + "\xF2\xAE" => "\xE8\x99\x8D", + "\xF2\xAF" => "\xE8\x99\x94", + "\xF2\xB0" => "\xE8\x99\xAC", + "\xF2\xB1" => "\xE8\x99\xAE", + "\xF2\xB2" => "\xE8\x99\xBF", + "\xF2\xB3" => "\xE8\x99\xBA", + "\xF2\xB4" => "\xE8\x99\xBC", + "\xF2\xB5" => "\xE8\x99\xBB", + "\xF2\xB6" => "\xE8\x9A\xA8", + "\xF2\xB7" => "\xE8\x9A\x8D", + "\xF2\xB8" => "\xE8\x9A\x8B", + "\xF2\xB9" => "\xE8\x9A\xAC", + "\xF2\xBA" => "\xE8\x9A\x9D", + "\xF2\xBB" => "\xE8\x9A\xA7", + "\xF2\xBC" => "\xE8\x9A\xA3", + "\xF2\xBD" => "\xE8\x9A\xAA", + "\xF2\xBE" => "\xE8\x9A\x93", + "\xF2\xBF" => "\xE8\x9A\xA9", + "\xF2\xC0" => "\xE8\x9A\xB6", + "\xF2\xC1" => "\xE8\x9B\x84", + "\xF2\xC2" => "\xE8\x9A\xB5", + "\xF2\xC3" => "\xE8\x9B\x8E", + "\xF2\xC4" => "\xE8\x9A\xB0", + "\xF2\xC5" => "\xE8\x9A\xBA", + "\xF2\xC6" => "\xE8\x9A\xB1", + "\xF2\xC7" => "\xE8\x9A\xAF", + "\xF2\xC8" => "\xE8\x9B\x89", + "\xF2\xC9" => "\xE8\x9B\x8F", + "\xF2\xCA" => "\xE8\x9A\xB4", + "\xF2\xCB" => "\xE8\x9B\xA9", + "\xF2\xCC" => "\xE8\x9B\xB1", + "\xF2\xCD" => "\xE8\x9B\xB2", + "\xF2\xCE" => "\xE8\x9B\xAD", + "\xF2\xCF" => "\xE8\x9B\xB3", + "\xF2\xD0" => "\xE8\x9B\x90", + "\xF2\xD1" => "\xE8\x9C\x93", + "\xF2\xD2" => "\xE8\x9B\x9E", + "\xF2\xD3" => "\xE8\x9B\xB4", + "\xF2\xD4" => "\xE8\x9B\x9F", + "\xF2\xD5" => "\xE8\x9B\x98", + "\xF2\xD6" => "\xE8\x9B\x91", + "\xF2\xD7" => "\xE8\x9C\x83", + "\xF2\xD8" => "\xE8\x9C\x87", + "\xF2\xD9" => "\xE8\x9B\xB8", + "\xF2\xDA" => "\xE8\x9C\x88", + "\xF2\xDB" => "\xE8\x9C\x8A", + "\xF2\xDC" => "\xE8\x9C\x8D", + "\xF2\xDD" => "\xE8\x9C\x89", + "\xF2\xDE" => "\xE8\x9C\xA3", + "\xF2\xDF" => "\xE8\x9C\xBB", + "\xF2\xE0" => "\xE8\x9C\x9E", + "\xF2\xE1" => "\xE8\x9C\xA5", + "\xF2\xE2" => "\xE8\x9C\xAE", + "\xF2\xE3" => "\xE8\x9C\x9A", + "\xF2\xE4" => "\xE8\x9C\xBE", + "\xF2\xE5" => "\xE8\x9D\x88", + "\xF2\xE6" => "\xE8\x9C\xB4", + "\xF2\xE7" => "\xE8\x9C\xB1", + "\xF2\xE8" => "\xE8\x9C\xA9", + "\xF2\xE9" => "\xE8\x9C\xB7", + "\xF2\xEA" => "\xE8\x9C\xBF", + "\xF2\xEB" => "\xE8\x9E\x82", + "\xF2\xEC" => "\xE8\x9C\xA2", + "\xF2\xED" => "\xE8\x9D\xBD", + "\xF2\xEE" => "\xE8\x9D\xBE", + "\xF2\xEF" => "\xE8\x9D\xBB", + "\xF2\xF0" => "\xE8\x9D\xA0", + "\xF2\xF1" => "\xE8\x9D\xB0", + "\xF2\xF2" => "\xE8\x9D\x8C", + "\xF2\xF3" => "\xE8\x9D\xAE", + "\xF2\xF4" => "\xE8\x9E\x8B", + "\xF2\xF5" => "\xE8\x9D\x93", + "\xF2\xF6" => "\xE8\x9D\xA3", + "\xF2\xF7" => "\xE8\x9D\xBC", + "\xF2\xF8" => "\xE8\x9D\xA4", + "\xF2\xF9" => "\xE8\x9D\x99", + "\xF2\xFA" => "\xE8\x9D\xA5", + "\xF2\xFB" => "\xE8\x9E\x93", + "\xF2\xFC" => "\xE8\x9E\xAF", + "\xF2\xFD" => "\xE8\x9E\xA8", + "\xF2\xFE" => "\xE8\x9F\x92", + "\xF3\xA1" => "\xE8\x9F\x86", + "\xF3\xA2" => "\xE8\x9E\x88", + "\xF3\xA3" => "\xE8\x9E\x85", + "\xF3\xA4" => "\xE8\x9E\xAD", + "\xF3\xA5" => "\xE8\x9E\x97", + "\xF3\xA6" => "\xE8\x9E\x83", + "\xF3\xA7" => "\xE8\x9E\xAB", + "\xF3\xA8" => "\xE8\x9F\xA5", + "\xF3\xA9" => "\xE8\x9E\xAC", + "\xF3\xAA" => "\xE8\x9E\xB5", + "\xF3\xAB" => "\xE8\x9E\xB3", + "\xF3\xAC" => "\xE8\x9F\x8B", + "\xF3\xAD" => "\xE8\x9F\x93", + "\xF3\xAE" => "\xE8\x9E\xBD", + "\xF3\xAF" => "\xE8\x9F\x91", + "\xF3\xB0" => "\xE8\x9F\x80", + "\xF3\xB1" => "\xE8\x9F\x8A", + "\xF3\xB2" => "\xE8\x9F\x9B", + "\xF3\xB3" => "\xE8\x9F\xAA", + "\xF3\xB4" => "\xE8\x9F\xA0", + "\xF3\xB5" => "\xE8\x9F\xAE", + "\xF3\xB6" => "\xE8\xA0\x96", + "\xF3\xB7" => "\xE8\xA0\x93", + "\xF3\xB8" => "\xE8\x9F\xBE", + "\xF3\xB9" => "\xE8\xA0\x8A", + "\xF3\xBA" => "\xE8\xA0\x9B", + "\xF3\xBB" => "\xE8\xA0\xA1", + "\xF3\xBC" => "\xE8\xA0\xB9", + "\xF3\xBD" => "\xE8\xA0\xBC", + "\xF3\xBE" => "\xE7\xBC\xB6", + "\xF3\xBF" => "\xE7\xBD\x82", + "\xF3\xC0" => "\xE7\xBD\x84", + "\xF3\xC1" => "\xE7\xBD\x85", + "\xF3\xC2" => "\xE8\x88\x90", + "\xF3\xC3" => "\xE7\xAB\xBA", + "\xF3\xC4" => "\xE7\xAB\xBD", + "\xF3\xC5" => "\xE7\xAC\x88", + "\xF3\xC6" => "\xE7\xAC\x83", + "\xF3\xC7" => "\xE7\xAC\x84", + "\xF3\xC8" => "\xE7\xAC\x95", + "\xF3\xC9" => "\xE7\xAC\x8A", + "\xF3\xCA" => "\xE7\xAC\xAB", + "\xF3\xCB" => "\xE7\xAC\x8F", + "\xF3\xCC" => "\xE7\xAD\x87", + "\xF3\xCD" => "\xE7\xAC\xB8", + "\xF3\xCE" => "\xE7\xAC\xAA", + "\xF3\xCF" => "\xE7\xAC\x99", + "\xF3\xD0" => "\xE7\xAC\xAE", + "\xF3\xD1" => "\xE7\xAC\xB1", + "\xF3\xD2" => "\xE7\xAC\xA0", + "\xF3\xD3" => "\xE7\xAC\xA5", + "\xF3\xD4" => "\xE7\xAC\xA4", + "\xF3\xD5" => "\xE7\xAC\xB3", + "\xF3\xD6" => "\xE7\xAC\xBE", + "\xF3\xD7" => "\xE7\xAC\x9E", + "\xF3\xD8" => "\xE7\xAD\x98", + "\xF3\xD9" => "\xE7\xAD\x9A", + "\xF3\xDA" => "\xE7\xAD\x85", + "\xF3\xDB" => "\xE7\xAD\xB5", + "\xF3\xDC" => "\xE7\xAD\x8C", + "\xF3\xDD" => "\xE7\xAD\x9D", + "\xF3\xDE" => "\xE7\xAD\xA0", + "\xF3\xDF" => "\xE7\xAD\xAE", + "\xF3\xE0" => "\xE7\xAD\xBB", + "\xF3\xE1" => "\xE7\xAD\xA2", + "\xF3\xE2" => "\xE7\xAD\xB2", + "\xF3\xE3" => "\xE7\xAD\xB1", + "\xF3\xE4" => "\xE7\xAE\x90", + "\xF3\xE5" => "\xE7\xAE\xA6", + "\xF3\xE6" => "\xE7\xAE\xA7", + "\xF3\xE7" => "\xE7\xAE\xB8", + "\xF3\xE8" => "\xE7\xAE\xAC", + "\xF3\xE9" => "\xE7\xAE\x9D", + "\xF3\xEA" => "\xE7\xAE\xA8", + "\xF3\xEB" => "\xE7\xAE\x85", + "\xF3\xEC" => "\xE7\xAE\xAA", + "\xF3\xED" => "\xE7\xAE\x9C", + "\xF3\xEE" => "\xE7\xAE\xA2", + "\xF3\xEF" => "\xE7\xAE\xAB", + "\xF3\xF0" => "\xE7\xAE\xB4", + "\xF3\xF1" => "\xE7\xAF\x91", + "\xF3\xF2" => "\xE7\xAF\x81", + "\xF3\xF3" => "\xE7\xAF\x8C", + "\xF3\xF4" => "\xE7\xAF\x9D", + "\xF3\xF5" => "\xE7\xAF\x9A", + "\xF3\xF6" => "\xE7\xAF\xA5", + "\xF3\xF7" => "\xE7\xAF\xA6", + "\xF3\xF8" => "\xE7\xAF\xAA", + "\xF3\xF9" => "\xE7\xB0\x8C", + "\xF3\xFA" => "\xE7\xAF\xBE", + "\xF3\xFB" => "\xE7\xAF\xBC", + "\xF3\xFC" => "\xE7\xB0\x8F", + "\xF3\xFD" => "\xE7\xB0\x96", + "\xF3\xFE" => "\xE7\xB0\x8B", + "\xF4\xA1" => "\xE7\xB0\x9F", + "\xF4\xA2" => "\xE7\xB0\xAA", + "\xF4\xA3" => "\xE7\xB0\xA6", + "\xF4\xA4" => "\xE7\xB0\xB8", + "\xF4\xA5" => "\xE7\xB1\x81", + "\xF4\xA6" => "\xE7\xB1\x80", + "\xF4\xA7" => "\xE8\x87\xBE", + "\xF4\xA8" => "\xE8\x88\x81", + "\xF4\xA9" => "\xE8\x88\x82", + "\xF4\xAA" => "\xE8\x88\x84", + "\xF4\xAB" => "\xE8\x87\xAC", + "\xF4\xAC" => "\xE8\xA1\x84", + "\xF4\xAD" => "\xE8\x88\xA1", + "\xF4\xAE" => "\xE8\x88\xA2", + "\xF4\xAF" => "\xE8\x88\xA3", + "\xF4\xB0" => "\xE8\x88\xAD", + "\xF4\xB1" => "\xE8\x88\xAF", + "\xF4\xB2" => "\xE8\x88\xA8", + "\xF4\xB3" => "\xE8\x88\xAB", + "\xF4\xB4" => "\xE8\x88\xB8", + "\xF4\xB5" => "\xE8\x88\xBB", + "\xF4\xB6" => "\xE8\x88\xB3", + "\xF4\xB7" => "\xE8\x88\xB4", + "\xF4\xB8" => "\xE8\x88\xBE", + "\xF4\xB9" => "\xE8\x89\x84", + "\xF4\xBA" => "\xE8\x89\x89", + "\xF4\xBB" => "\xE8\x89\x8B", + "\xF4\xBC" => "\xE8\x89\x8F", + "\xF4\xBD" => "\xE8\x89\x9A", + "\xF4\xBE" => "\xE8\x89\x9F", + "\xF4\xBF" => "\xE8\x89\xA8", + "\xF4\xC0" => "\xE8\xA1\xBE", + "\xF4\xC1" => "\xE8\xA2\x85", + "\xF4\xC2" => "\xE8\xA2\x88", + "\xF4\xC3" => "\xE8\xA3\x98", + "\xF4\xC4" => "\xE8\xA3\x9F", + "\xF4\xC5" => "\xE8\xA5\x9E", + "\xF4\xC6" => "\xE7\xBE\x9D", + "\xF4\xC7" => "\xE7\xBE\x9F", + "\xF4\xC8" => "\xE7\xBE\xA7", + "\xF4\xC9" => "\xE7\xBE\xAF", + "\xF4\xCA" => "\xE7\xBE\xB0", + "\xF4\xCB" => "\xE7\xBE\xB2", + "\xF4\xCC" => "\xE7\xB1\xBC", + "\xF4\xCD" => "\xE6\x95\x89", + "\xF4\xCE" => "\xE7\xB2\x91", + "\xF4\xCF" => "\xE7\xB2\x9D", + "\xF4\xD0" => "\xE7\xB2\x9C", + "\xF4\xD1" => "\xE7\xB2\x9E", + "\xF4\xD2" => "\xE7\xB2\xA2", + "\xF4\xD3" => "\xE7\xB2\xB2", + "\xF4\xD4" => "\xE7\xB2\xBC", + "\xF4\xD5" => "\xE7\xB2\xBD", + "\xF4\xD6" => "\xE7\xB3\x81", + "\xF4\xD7" => "\xE7\xB3\x87", + "\xF4\xD8" => "\xE7\xB3\x8C", + "\xF4\xD9" => "\xE7\xB3\x8D", + "\xF4\xDA" => "\xE7\xB3\x88", + "\xF4\xDB" => "\xE7\xB3\x85", + "\xF4\xDC" => "\xE7\xB3\x97", + "\xF4\xDD" => "\xE7\xB3\xA8", + "\xF4\xDE" => "\xE8\x89\xAE", + "\xF4\xDF" => "\xE6\x9A\xA8", + "\xF4\xE0" => "\xE7\xBE\xBF", + "\xF4\xE1" => "\xE7\xBF\x8E", + "\xF4\xE2" => "\xE7\xBF\x95", + "\xF4\xE3" => "\xE7\xBF\xA5", + "\xF4\xE4" => "\xE7\xBF\xA1", + "\xF4\xE5" => "\xE7\xBF\xA6", + "\xF4\xE6" => "\xE7\xBF\xA9", + "\xF4\xE7" => "\xE7\xBF\xAE", + "\xF4\xE8" => "\xE7\xBF\xB3", + "\xF4\xE9" => "\xE7\xB3\xB8", + "\xF4\xEA" => "\xE7\xB5\xB7", + "\xF4\xEB" => "\xE7\xB6\xA6", + "\xF4\xEC" => "\xE7\xB6\xAE", + "\xF4\xED" => "\xE7\xB9\x87", + "\xF4\xEE" => "\xE7\xBA\x9B", + "\xF4\xEF" => "\xE9\xBA\xB8", + "\xF4\xF0" => "\xE9\xBA\xB4", + "\xF4\xF1" => "\xE8\xB5\xB3", + "\xF4\xF2" => "\xE8\xB6\x84", + "\xF4\xF3" => "\xE8\xB6\x94", + "\xF4\xF4" => "\xE8\xB6\x91", + "\xF4\xF5" => "\xE8\xB6\xB1", + "\xF4\xF6" => "\xE8\xB5\xA7", + "\xF4\xF7" => "\xE8\xB5\xAD", + "\xF4\xF8" => "\xE8\xB1\x87", + "\xF4\xF9" => "\xE8\xB1\x89", + "\xF4\xFA" => "\xE9\x85\x8A", + "\xF4\xFB" => "\xE9\x85\x90", + "\xF4\xFC" => "\xE9\x85\x8E", + "\xF4\xFD" => "\xE9\x85\x8F", + "\xF4\xFE" => "\xE9\x85\xA4", + "\xF5\xA1" => "\xE9\x85\xA2", + "\xF5\xA2" => "\xE9\x85\xA1", + "\xF5\xA3" => "\xE9\x85\xB0", + "\xF5\xA4" => "\xE9\x85\xA9", + "\xF5\xA5" => "\xE9\x85\xAF", + "\xF5\xA6" => "\xE9\x85\xBD", + "\xF5\xA7" => "\xE9\x85\xBE", + "\xF5\xA8" => "\xE9\x85\xB2", + "\xF5\xA9" => "\xE9\x85\xB4", + "\xF5\xAA" => "\xE9\x85\xB9", + "\xF5\xAB" => "\xE9\x86\x8C", + "\xF5\xAC" => "\xE9\x86\x85", + "\xF5\xAD" => "\xE9\x86\x90", + "\xF5\xAE" => "\xE9\x86\x8D", + "\xF5\xAF" => "\xE9\x86\x91", + "\xF5\xB0" => "\xE9\x86\xA2", + "\xF5\xB1" => "\xE9\x86\xA3", + "\xF5\xB2" => "\xE9\x86\xAA", + "\xF5\xB3" => "\xE9\x86\xAD", + "\xF5\xB4" => "\xE9\x86\xAE", + "\xF5\xB5" => "\xE9\x86\xAF", + "\xF5\xB6" => "\xE9\x86\xB5", + "\xF5\xB7" => "\xE9\x86\xB4", + "\xF5\xB8" => "\xE9\x86\xBA", + "\xF5\xB9" => "\xE8\xB1\x95", + "\xF5\xBA" => "\xE9\xB9\xBE", + "\xF5\xBB" => "\xE8\xB6\xB8", + "\xF5\xBC" => "\xE8\xB7\xAB", + "\xF5\xBD" => "\xE8\xB8\x85", + "\xF5\xBE" => "\xE8\xB9\x99", + "\xF5\xBF" => "\xE8\xB9\xA9", + "\xF5\xC0" => "\xE8\xB6\xB5", + "\xF5\xC1" => "\xE8\xB6\xBF", + "\xF5\xC2" => "\xE8\xB6\xBC", + "\xF5\xC3" => "\xE8\xB6\xBA", + "\xF5\xC4" => "\xE8\xB7\x84", + "\xF5\xC5" => "\xE8\xB7\x96", + "\xF5\xC6" => "\xE8\xB7\x97", + "\xF5\xC7" => "\xE8\xB7\x9A", + "\xF5\xC8" => "\xE8\xB7\x9E", + "\xF5\xC9" => "\xE8\xB7\x8E", + "\xF5\xCA" => "\xE8\xB7\x8F", + "\xF5\xCB" => "\xE8\xB7\x9B", + "\xF5\xCC" => "\xE8\xB7\x86", + "\xF5\xCD" => "\xE8\xB7\xAC", + "\xF5\xCE" => "\xE8\xB7\xB7", + "\xF5\xCF" => "\xE8\xB7\xB8", + "\xF5\xD0" => "\xE8\xB7\xA3", + "\xF5\xD1" => "\xE8\xB7\xB9", + "\xF5\xD2" => "\xE8\xB7\xBB", + "\xF5\xD3" => "\xE8\xB7\xA4", + "\xF5\xD4" => "\xE8\xB8\x89", + "\xF5\xD5" => "\xE8\xB7\xBD", + "\xF5\xD6" => "\xE8\xB8\x94", + "\xF5\xD7" => "\xE8\xB8\x9D", + "\xF5\xD8" => "\xE8\xB8\x9F", + "\xF5\xD9" => "\xE8\xB8\xAC", + "\xF5\xDA" => "\xE8\xB8\xAE", + "\xF5\xDB" => "\xE8\xB8\xA3", + "\xF5\xDC" => "\xE8\xB8\xAF", + "\xF5\xDD" => "\xE8\xB8\xBA", + "\xF5\xDE" => "\xE8\xB9\x80", + "\xF5\xDF" => "\xE8\xB8\xB9", + "\xF5\xE0" => "\xE8\xB8\xB5", + "\xF5\xE1" => "\xE8\xB8\xBD", + "\xF5\xE2" => "\xE8\xB8\xB1", + "\xF5\xE3" => "\xE8\xB9\x89", + "\xF5\xE4" => "\xE8\xB9\x81", + "\xF5\xE5" => "\xE8\xB9\x82", + "\xF5\xE6" => "\xE8\xB9\x91", + "\xF5\xE7" => "\xE8\xB9\x92", + "\xF5\xE8" => "\xE8\xB9\x8A", + "\xF5\xE9" => "\xE8\xB9\xB0", + "\xF5\xEA" => "\xE8\xB9\xB6", + "\xF5\xEB" => "\xE8\xB9\xBC", + "\xF5\xEC" => "\xE8\xB9\xAF", + "\xF5\xED" => "\xE8\xB9\xB4", + "\xF5\xEE" => "\xE8\xBA\x85", + "\xF5\xEF" => "\xE8\xBA\x8F", + "\xF5\xF0" => "\xE8\xBA\x94", + "\xF5\xF1" => "\xE8\xBA\x90", + "\xF5\xF2" => "\xE8\xBA\x9C", + "\xF5\xF3" => "\xE8\xBA\x9E", + "\xF5\xF4" => "\xE8\xB1\xB8", + "\xF5\xF5" => "\xE8\xB2\x82", + "\xF5\xF6" => "\xE8\xB2\x8A", + "\xF5\xF7" => "\xE8\xB2\x85", + "\xF5\xF8" => "\xE8\xB2\x98", + "\xF5\xF9" => "\xE8\xB2\x94", + "\xF5\xFA" => "\xE6\x96\x9B", + "\xF5\xFB" => "\xE8\xA7\x96", + "\xF5\xFC" => "\xE8\xA7\x9E", + "\xF5\xFD" => "\xE8\xA7\x9A", + "\xF5\xFE" => "\xE8\xA7\x9C", + "\xF6\xA1" => "\xE8\xA7\xA5", + "\xF6\xA2" => "\xE8\xA7\xAB", + "\xF6\xA3" => "\xE8\xA7\xAF", + "\xF6\xA4" => "\xE8\xA8\xBE", + "\xF6\xA5" => "\xE8\xAC\xA6", + "\xF6\xA6" => "\xE9\x9D\x93", + "\xF6\xA7" => "\xE9\x9B\xA9", + "\xF6\xA8" => "\xE9\x9B\xB3", + "\xF6\xA9" => "\xE9\x9B\xAF", + "\xF6\xAA" => "\xE9\x9C\x86", + "\xF6\xAB" => "\xE9\x9C\x81", + "\xF6\xAC" => "\xE9\x9C\x88", + "\xF6\xAD" => "\xE9\x9C\x8F", + "\xF6\xAE" => "\xE9\x9C\x8E", + "\xF6\xAF" => "\xE9\x9C\xAA", + "\xF6\xB0" => "\xE9\x9C\xAD", + "\xF6\xB1" => "\xE9\x9C\xB0", + "\xF6\xB2" => "\xE9\x9C\xBE", + "\xF6\xB3" => "\xE9\xBE\x80", + "\xF6\xB4" => "\xE9\xBE\x83", + "\xF6\xB5" => "\xE9\xBE\x85", + "\xF6\xB6" => "\xE9\xBE\x86", + "\xF6\xB7" => "\xE9\xBE\x87", + "\xF6\xB8" => "\xE9\xBE\x88", + "\xF6\xB9" => "\xE9\xBE\x89", + "\xF6\xBA" => "\xE9\xBE\x8A", + "\xF6\xBB" => "\xE9\xBE\x8C", + "\xF6\xBC" => "\xE9\xBB\xBE", + "\xF6\xBD" => "\xE9\xBC\x8B", + "\xF6\xBE" => "\xE9\xBC\x8D", + "\xF6\xBF" => "\xE9\x9A\xB9", + "\xF6\xC0" => "\xE9\x9A\xBC", + "\xF6\xC1" => "\xE9\x9A\xBD", + "\xF6\xC2" => "\xE9\x9B\x8E", + "\xF6\xC3" => "\xE9\x9B\x92", + "\xF6\xC4" => "\xE7\x9E\xBF", + "\xF6\xC5" => "\xE9\x9B\xA0", + "\xF6\xC6" => "\xE9\x8A\x8E", + "\xF6\xC7" => "\xE9\x8A\xAE", + "\xF6\xC8" => "\xE9\x8B\x88", + "\xF6\xC9" => "\xE9\x8C\xBE", + "\xF6\xCA" => "\xE9\x8D\xAA", + "\xF6\xCB" => "\xE9\x8F\x8A", + "\xF6\xCC" => "\xE9\x8E\x8F", + "\xF6\xCD" => "\xE9\x90\xBE", + "\xF6\xCE" => "\xE9\x91\xAB", + "\xF6\xCF" => "\xE9\xB1\xBF", + "\xF6\xD0" => "\xE9\xB2\x82", + "\xF6\xD1" => "\xE9\xB2\x85", + "\xF6\xD2" => "\xE9\xB2\x86", + "\xF6\xD3" => "\xE9\xB2\x87", + "\xF6\xD4" => "\xE9\xB2\x88", + "\xF6\xD5" => "\xE7\xA8\xA3", + "\xF6\xD6" => "\xE9\xB2\x8B", + "\xF6\xD7" => "\xE9\xB2\x8E", + "\xF6\xD8" => "\xE9\xB2\x90", + "\xF6\xD9" => "\xE9\xB2\x91", + "\xF6\xDA" => "\xE9\xB2\x92", + "\xF6\xDB" => "\xE9\xB2\x94", + "\xF6\xDC" => "\xE9\xB2\x95", + "\xF6\xDD" => "\xE9\xB2\x9A", + "\xF6\xDE" => "\xE9\xB2\x9B", + "\xF6\xDF" => "\xE9\xB2\x9E", + "\xF6\xE0" => "\xE9\xB2\x9F", + "\xF6\xE1" => "\xE9\xB2\xA0", + "\xF6\xE2" => "\xE9\xB2\xA1", + "\xF6\xE3" => "\xE9\xB2\xA2", + "\xF6\xE4" => "\xE9\xB2\xA3", + "\xF6\xE5" => "\xE9\xB2\xA5", + "\xF6\xE6" => "\xE9\xB2\xA6", + "\xF6\xE7" => "\xE9\xB2\xA7", + "\xF6\xE8" => "\xE9\xB2\xA8", + "\xF6\xE9" => "\xE9\xB2\xA9", + "\xF6\xEA" => "\xE9\xB2\xAB", + "\xF6\xEB" => "\xE9\xB2\xAD", + "\xF6\xEC" => "\xE9\xB2\xAE", + "\xF6\xED" => "\xE9\xB2\xB0", + "\xF6\xEE" => "\xE9\xB2\xB1", + "\xF6\xEF" => "\xE9\xB2\xB2", + "\xF6\xF0" => "\xE9\xB2\xB3", + "\xF6\xF1" => "\xE9\xB2\xB4", + "\xF6\xF2" => "\xE9\xB2\xB5", + "\xF6\xF3" => "\xE9\xB2\xB6", + "\xF6\xF4" => "\xE9\xB2\xB7", + "\xF6\xF5" => "\xE9\xB2\xBA", + "\xF6\xF6" => "\xE9\xB2\xBB", + "\xF6\xF7" => "\xE9\xB2\xBC", + "\xF6\xF8" => "\xE9\xB2\xBD", + "\xF6\xF9" => "\xE9\xB3\x84", + "\xF6\xFA" => "\xE9\xB3\x85", + "\xF6\xFB" => "\xE9\xB3\x86", + "\xF6\xFC" => "\xE9\xB3\x87", + "\xF6\xFD" => "\xE9\xB3\x8A", + "\xF6\xFE" => "\xE9\xB3\x8B", + "\xF7\xA1" => "\xE9\xB3\x8C", + "\xF7\xA2" => "\xE9\xB3\x8D", + "\xF7\xA3" => "\xE9\xB3\x8E", + "\xF7\xA4" => "\xE9\xB3\x8F", + "\xF7\xA5" => "\xE9\xB3\x90", + "\xF7\xA6" => "\xE9\xB3\x93", + "\xF7\xA7" => "\xE9\xB3\x94", + "\xF7\xA8" => "\xE9\xB3\x95", + "\xF7\xA9" => "\xE9\xB3\x97", + "\xF7\xAA" => "\xE9\xB3\x98", + "\xF7\xAB" => "\xE9\xB3\x99", + "\xF7\xAC" => "\xE9\xB3\x9C", + "\xF7\xAD" => "\xE9\xB3\x9D", + "\xF7\xAE" => "\xE9\xB3\x9F", + "\xF7\xAF" => "\xE9\xB3\xA2", + "\xF7\xB0" => "\xE9\x9D\xBC", + "\xF7\xB1" => "\xE9\x9E\x85", + "\xF7\xB2" => "\xE9\x9E\x91", + "\xF7\xB3" => "\xE9\x9E\x92", + "\xF7\xB4" => "\xE9\x9E\x94", + "\xF7\xB5" => "\xE9\x9E\xAF", + "\xF7\xB6" => "\xE9\x9E\xAB", + "\xF7\xB7" => "\xE9\x9E\xA3", + "\xF7\xB8" => "\xE9\x9E\xB2", + "\xF7\xB9" => "\xE9\x9E\xB4", + "\xF7\xBA" => "\xE9\xAA\xB1", + "\xF7\xBB" => "\xE9\xAA\xB0", + "\xF7\xBC" => "\xE9\xAA\xB7", + "\xF7\xBD" => "\xE9\xB9\x98", + "\xF7\xBE" => "\xE9\xAA\xB6", + "\xF7\xBF" => "\xE9\xAA\xBA", + "\xF7\xC0" => "\xE9\xAA\xBC", + "\xF7\xC1" => "\xE9\xAB\x81", + "\xF7\xC2" => "\xE9\xAB\x80", + "\xF7\xC3" => "\xE9\xAB\x85", + "\xF7\xC4" => "\xE9\xAB\x82", + "\xF7\xC5" => "\xE9\xAB\x8B", + "\xF7\xC6" => "\xE9\xAB\x8C", + "\xF7\xC7" => "\xE9\xAB\x91", + "\xF7\xC8" => "\xE9\xAD\x85", + "\xF7\xC9" => "\xE9\xAD\x83", + "\xF7\xCA" => "\xE9\xAD\x87", + "\xF7\xCB" => "\xE9\xAD\x89", + "\xF7\xCC" => "\xE9\xAD\x88", + "\xF7\xCD" => "\xE9\xAD\x8D", + "\xF7\xCE" => "\xE9\xAD\x91", + "\xF7\xCF" => "\xE9\xA3\xA8", + "\xF7\xD0" => "\xE9\xA4\x8D", + "\xF7\xD1" => "\xE9\xA4\xAE", + "\xF7\xD2" => "\xE9\xA5\x95", + "\xF7\xD3" => "\xE9\xA5\x94", + "\xF7\xD4" => "\xE9\xAB\x9F", + "\xF7\xD5" => "\xE9\xAB\xA1", + "\xF7\xD6" => "\xE9\xAB\xA6", + "\xF7\xD7" => "\xE9\xAB\xAF", + "\xF7\xD8" => "\xE9\xAB\xAB", + "\xF7\xD9" => "\xE9\xAB\xBB", + "\xF7\xDA" => "\xE9\xAB\xAD", + "\xF7\xDB" => "\xE9\xAB\xB9", + "\xF7\xDC" => "\xE9\xAC\x88", + "\xF7\xDD" => "\xE9\xAC\x8F", + "\xF7\xDE" => "\xE9\xAC\x93", + "\xF7\xDF" => "\xE9\xAC\x9F", + "\xF7\xE0" => "\xE9\xAC\xA3", + "\xF7\xE1" => "\xE9\xBA\xBD", + "\xF7\xE2" => "\xE9\xBA\xBE", + "\xF7\xE3" => "\xE7\xB8\xBB", + "\xF7\xE4" => "\xE9\xBA\x82", + "\xF7\xE5" => "\xE9\xBA\x87", + "\xF7\xE6" => "\xE9\xBA\x88", + "\xF7\xE7" => "\xE9\xBA\x8B", + "\xF7\xE8" => "\xE9\xBA\x92", + "\xF7\xE9" => "\xE9\x8F\x96", + "\xF7\xEA" => "\xE9\xBA\x9D", + "\xF7\xEB" => "\xE9\xBA\x9F", + "\xF7\xEC" => "\xE9\xBB\x9B", + "\xF7\xED" => "\xE9\xBB\x9C", + "\xF7\xEE" => "\xE9\xBB\x9D", + "\xF7\xEF" => "\xE9\xBB\xA0", + "\xF7\xF0" => "\xE9\xBB\x9F", + "\xF7\xF1" => "\xE9\xBB\xA2", + "\xF7\xF2" => "\xE9\xBB\xA9", + "\xF7\xF3" => "\xE9\xBB\xA7", + "\xF7\xF4" => "\xE9\xBB\xA5", + "\xF7\xF5" => "\xE9\xBB\xAA", + "\xF7\xF6" => "\xE9\xBB\xAF", + "\xF7\xF7" => "\xE9\xBC\xA2", + "\xF7\xF8" => "\xE9\xBC\xAC", + "\xF7\xF9" => "\xE9\xBC\xAF", + "\xF7\xFA" => "\xE9\xBC\xB9", + "\xF7\xFB" => "\xE9\xBC\xB7", + "\xF7\xFC" => "\xE9\xBC\xBD", + "\xF7\xFD" => "\xE9\xBC\xBE", + "\xF7\xFE" => "\xE9\xBD\x84", + ); + return strtr($string, $transform); +} + +function sjis($string) +{ + static $array = array( + "\x5C"=>"\xC2\xA5", + "\x7E"=>"\xE2\x80\xBE", + "\x81\x40"=>"\xE3\x80\x80", + "\x81\x41"=>"\xE3\x80\x81", + "\x81\x42"=>"\xE3\x80\x82", + "\x81\x43"=>"\xEF\xBC\x8C", + "\x81\x44"=>"\xEF\xBC\x8E", + "\x81\x45"=>"\xE3\x83\xBB", + "\x81\x46"=>"\xEF\xBC\x9A", + "\x81\x47"=>"\xEF\xBC\x9B", + "\x81\x48"=>"\xEF\xBC\x9F", + "\x81\x49"=>"\xEF\xBC\x81", + "\x81\x4A"=>"\xE3\x82\x9B", + "\x81\x4B"=>"\xE3\x82\x9C", + "\x81\x4C"=>"\xC2\xB4", + "\x81\x4D"=>"\xEF\xBD\x80", + "\x81\x4E"=>"\xC2\xA8", + "\x81\x4F"=>"\xEF\xBC\xBE", + "\x81\x50"=>"\xEF\xBF\xA3", + "\x81\x51"=>"\xEF\xBC\xBF", + "\x81\x52"=>"\xE3\x83\xBD", + "\x81\x53"=>"\xE3\x83\xBE", + "\x81\x54"=>"\xE3\x82\x9D", + "\x81\x55"=>"\xE3\x82\x9E", + "\x81\x56"=>"\xE3\x80\x83", + "\x81\x57"=>"\xE4\xBB\x9D", + "\x81\x58"=>"\xE3\x80\x85", + "\x81\x59"=>"\xE3\x80\x86", + "\x81\x5A"=>"\xE3\x80\x87", + "\x81\x5B"=>"\xE3\x83\xBC", + "\x81\x5C"=>"\xE2\x80\x95", // set as U+2015 but could be U+2014 + "\x81\x5D"=>"\xE2\x80\x90", + "\x81\x5E"=>"\xEF\xBC\x8F", + "\x81\x5F"=>"\xEF\xBC\xBC", // or U+005C + "\x81\x60"=>"\xE3\x80\x9C", + "\x81\x61"=>"\xE2\x80\x96", + "\x81\x62"=>"\xEF\xBD\x9C", + "\x81\x63"=>"\xE2\x80\xA6", + "\x81\x64"=>"\xE2\x80\xA5", + "\x81\x65"=>"\xE2\x80\x98", + "\x81\x66"=>"\xE2\x80\x99", + "\x81\x67"=>"\xE2\x80\x9C", + "\x81\x68"=>"\xE2\x80\x9D", + "\x81\x69"=>"\xEF\xBC\x88", + "\x81\x6A"=>"\xEF\xBC\x89", + "\x81\x6B"=>"\xE3\x80\x94", + "\x81\x6C"=>"\xE3\x80\x95", + "\x81\x6D"=>"\xEF\xBC\xBB", + "\x81\x6E"=>"\xEF\xBC\xBD", + "\x81\x6F"=>"\xEF\xBD\x9B", + "\x81\x70"=>"\xEF\xBD\x9D", + "\x81\x71"=>"\xE3\x80\x88", + "\x81\x72"=>"\xE3\x80\x89", + "\x81\x73"=>"\xE3\x80\x8A", + "\x81\x74"=>"\xE3\x80\x8B", + "\x81\x75"=>"\xE3\x80\x8C", + "\x81\x76"=>"\xE3\x80\x8D", + "\x81\x77"=>"\xE3\x80\x8E", + "\x81\x78"=>"\xE3\x80\x8F", + "\x81\x79"=>"\xE3\x80\x90", + "\x81\x7A"=>"\xE3\x80\x91", + "\x81\x7B"=>"\xEF\xBC\x8B", + "\x81\x7C"=>"\xE2\x88\x92", + "\x81\x7D"=>"\xC2\xB1", + "\x81\x7E"=>"\xC3\x97", + "\x81\x80"=>"\xC3\xB7", + "\x81\x81"=>"\xEF\xBC\x9D", + "\x81\x82"=>"\xE2\x89\xA0", + "\x81\x83"=>"\xEF\xBC\x9C", + "\x81\x84"=>"\xEF\xBC\x9E", + "\x81\x85"=>"\xE2\x89\xA6", + "\x81\x86"=>"\xE2\x89\xA7", + "\x81\x87"=>"\xE2\x88\x9E", + "\x81\x88"=>"\xE2\x88\xB4", + "\x81\x89"=>"\xE2\x99\x82", + "\x81\x8A"=>"\xE2\x99\x80", + "\x81\x8B"=>"\xC2\xB0", + "\x81\x8C"=>"\xE2\x80\xB2", + "\x81\x8D"=>"\xE2\x80\xB3", + "\x81\x8E"=>"\xE2\x84\x83", + "\x81\x8F"=>"\xEF\xBF\xA5", + "\x81\x90"=>"\xEF\xBC\x84", + "\x81\x91"=>"\xC2\xA2", + "\x81\x92"=>"\xC2\xA3", + "\x81\x93"=>"\xEF\xBC\x85", + "\x81\x94"=>"\xEF\xBC\x83", + "\x81\x95"=>"\xEF\xBC\x86", + "\x81\x96"=>"\xEF\xBC\x8A", + "\x81\x97"=>"\xEF\xBC\xA0", + "\x81\x98"=>"\xC2\xA7", + "\x81\x99"=>"\xE2\x98\x86", + "\x81\x9A"=>"\xE2\x98\x85", + "\x81\x9B"=>"\xE2\x97\x8B", + "\x81\x9C"=>"\xE2\x97\x8F", + "\x81\x9D"=>"\xE2\x97\x8E", + "\x81\x9E"=>"\xE2\x97\x87", + "\x81\x9F"=>"\xE2\x97\x86", + "\x81\xA0"=>"\xE2\x96\xA1", + "\x81\xA1"=>"\xE2\x96\xA0", + "\x81\xA2"=>"\xE2\x96\xB3", + "\x81\xA3"=>"\xE2\x96\xB2", + "\x81\xA4"=>"\xE2\x96\xBD", + "\x81\xA5"=>"\xE2\x96\xBC", + "\x81\xA6"=>"\xE2\x80\xBB", + "\x81\xA7"=>"\xE3\x80\x92", + "\x81\xA8"=>"\xE2\x86\x92", + "\x81\xA9"=>"\xE2\x86\x90", + "\x81\xAA"=>"\xE2\x86\x91", + "\x81\xAB"=>"\xE2\x86\x93", + "\x81\xAC"=>"\xE3\x80\x93", + "\x81\xAD"=>"\xEF\xBC\x87", // extra?! + "\x81\xB8"=>"\xE2\x88\x88", + "\x81\xB9"=>"\xE2\x88\x8B", + "\x81\xBA"=>"\xE2\x8A\x86", + "\x81\xBB"=>"\xE2\x8A\x87", + "\x81\xBC"=>"\xE2\x8A\x82", + "\x81\xBD"=>"\xE2\x8A\x83", + "\x81\xBE"=>"\xE2\x88\xAA", + "\x81\xBF"=>"\xE2\x88\xA9", + "\x81\xC8"=>"\xE2\x88\xA7", + "\x81\xC9"=>"\xE2\x88\xA8", + "\x81\xCA"=>"\xC2\xAC", + "\x81\xCB"=>"\xE2\x87\x92", + "\x81\xCC"=>"\xE2\x87\x94", + "\x81\xCD"=>"\xE2\x88\x80", + "\x81\xCE"=>"\xE2\x88\x83", + "\x81\xDA"=>"\xE2\x88\xA0", + "\x81\xDB"=>"\xE2\x8A\xA5", + "\x81\xDC"=>"\xE2\x8C\x92", + "\x81\xDD"=>"\xE2\x88\x82", + "\x81\xDE"=>"\xE2\x88\x87", + "\x81\xDF"=>"\xE2\x89\xA1", + "\x81\xE0"=>"\xE2\x89\x92", + "\x81\xE1"=>"\xE2\x89\xAA", + "\x81\xE2"=>"\xE2\x89\xAB", + "\x81\xE3"=>"\xE2\x88\x9A", + "\x81\xE4"=>"\xE2\x88\xBD", + "\x81\xE5"=>"\xE2\x88\x9D", + "\x81\xE6"=>"\xE2\x88\xB5", + "\x81\xE7"=>"\xE2\x88\xAB", + "\x81\xE8"=>"\xE2\x88\xAC", + "\x81\xF0"=>"\xE2\x84\xAB", + "\x81\xF1"=>"\xE2\x80\xB0", + "\x81\xF2"=>"\xE2\x99\xAF", + "\x81\xF3"=>"\xE2\x99\xAD", + "\x81\xF4"=>"\xE2\x99\xAA", + "\x81\xF5"=>"\xE2\x80\xA0", + "\x81\xF6"=>"\xE2\x80\xA1", + "\x81\xF7"=>"\xC2\xB6", + "\x81\xFC"=>"\xE2\x97\xAF", + "\x82\x4F"=>"\xEF\xBC\x90", + "\x82\x50"=>"\xEF\xBC\x91", + "\x82\x51"=>"\xEF\xBC\x92", + "\x82\x52"=>"\xEF\xBC\x93", + "\x82\x53"=>"\xEF\xBC\x94", + "\x82\x54"=>"\xEF\xBC\x95", + "\x82\x55"=>"\xEF\xBC\x96", + "\x82\x56"=>"\xEF\xBC\x97", + "\x82\x57"=>"\xEF\xBC\x98", + "\x82\x58"=>"\xEF\xBC\x99", + "\x82\x60"=>"\xEF\xBC\xA1", + "\x82\x61"=>"\xEF\xBC\xA2", + "\x82\x62"=>"\xEF\xBC\xA3", + "\x82\x63"=>"\xEF\xBC\xA4", + "\x82\x64"=>"\xEF\xBC\xA5", + "\x82\x65"=>"\xEF\xBC\xA6", + "\x82\x66"=>"\xEF\xBC\xA7", + "\x82\x67"=>"\xEF\xBC\xA8", + "\x82\x68"=>"\xEF\xBC\xA9", + "\x82\x69"=>"\xEF\xBC\xAA", + "\x82\x6A"=>"\xEF\xBC\xAB", + "\x82\x6B"=>"\xEF\xBC\xAC", + "\x82\x6C"=>"\xEF\xBC\xAD", + "\x82\x6D"=>"\xEF\xBC\xAE", + "\x82\x6E"=>"\xEF\xBC\xAF", + "\x82\x6F"=>"\xEF\xBC\xB0", + "\x82\x70"=>"\xEF\xBC\xB1", + "\x82\x71"=>"\xEF\xBC\xB2", + "\x82\x72"=>"\xEF\xBC\xB3", + "\x82\x73"=>"\xEF\xBC\xB4", + "\x82\x74"=>"\xEF\xBC\xB5", + "\x82\x75"=>"\xEF\xBC\xB6", + "\x82\x76"=>"\xEF\xBC\xB7", + "\x82\x77"=>"\xEF\xBC\xB8", + "\x82\x78"=>"\xEF\xBC\xB9", + "\x82\x79"=>"\xEF\xBC\xBA", + "\x82\x81"=>"\xEF\xBD\x81", + "\x82\x82"=>"\xEF\xBD\x82", + "\x82\x83"=>"\xEF\xBD\x83", + "\x82\x84"=>"\xEF\xBD\x84", + "\x82\x85"=>"\xEF\xBD\x85", + "\x82\x86"=>"\xEF\xBD\x86", + "\x82\x87"=>"\xEF\xBD\x87", + "\x82\x88"=>"\xEF\xBD\x88", + "\x82\x89"=>"\xEF\xBD\x89", + "\x82\x8A"=>"\xEF\xBD\x8A", + "\x82\x8B"=>"\xEF\xBD\x8B", + "\x82\x8C"=>"\xEF\xBD\x8C", + "\x82\x8D"=>"\xEF\xBD\x8D", + "\x82\x8E"=>"\xEF\xBD\x8E", + "\x82\x8F"=>"\xEF\xBD\x8F", + "\x82\x90"=>"\xEF\xBD\x90", + "\x82\x91"=>"\xEF\xBD\x91", + "\x82\x92"=>"\xEF\xBD\x92", + "\x82\x93"=>"\xEF\xBD\x93", + "\x82\x94"=>"\xEF\xBD\x94", + "\x82\x95"=>"\xEF\xBD\x95", + "\x82\x96"=>"\xEF\xBD\x96", + "\x82\x97"=>"\xEF\xBD\x97", + "\x82\x98"=>"\xEF\xBD\x98", + "\x82\x99"=>"\xEF\xBD\x99", + "\x82\x9A"=>"\xEF\xBD\x9A", + "\x82\x9F"=>"\xE3\x81\x81", + "\x82\xA0"=>"\xE3\x81\x82", + "\x82\xA1"=>"\xE3\x81\x83", + "\x82\xA2"=>"\xE3\x81\x84", + "\x82\xA3"=>"\xE3\x81\x85", + "\x82\xA4"=>"\xE3\x81\x86", + "\x82\xA5"=>"\xE3\x81\x87", + "\x82\xA6"=>"\xE3\x81\x88", + "\x82\xA7"=>"\xE3\x81\x89", + "\x82\xA8"=>"\xE3\x81\x8A", + "\x82\xA9"=>"\xE3\x81\x8B", + "\x82\xAA"=>"\xE3\x81\x8C", + "\x82\xAB"=>"\xE3\x81\x8D", + "\x82\xAC"=>"\xE3\x81\x8E", + "\x82\xAD"=>"\xE3\x81\x8F", + "\x82\xAE"=>"\xE3\x81\x90", + "\x82\xAF"=>"\xE3\x81\x91", + "\x82\xB0"=>"\xE3\x81\x92", + "\x82\xB1"=>"\xE3\x81\x93", + "\x82\xB2"=>"\xE3\x81\x94", + "\x82\xB3"=>"\xE3\x81\x95", + "\x82\xB4"=>"\xE3\x81\x96", + "\x82\xB5"=>"\xE3\x81\x97", + "\x82\xB6"=>"\xE3\x81\x98", + "\x82\xB7"=>"\xE3\x81\x99", + "\x82\xB8"=>"\xE3\x81\x9A", + "\x82\xB9"=>"\xE3\x81\x9B", + "\x82\xBA"=>"\xE3\x81\x9C", + "\x82\xBB"=>"\xE3\x81\x9D", + "\x82\xBC"=>"\xE3\x81\x9E", + "\x82\xBD"=>"\xE3\x81\x9F", + "\x82\xBE"=>"\xE3\x81\xA0", + "\x82\xBF"=>"\xE3\x81\xA1", + "\x82\xC0"=>"\xE3\x81\xA2", + "\x82\xC1"=>"\xE3\x81\xA3", + "\x82\xC2"=>"\xE3\x81\xA4", + "\x82\xC3"=>"\xE3\x81\xA5", + "\x82\xC4"=>"\xE3\x81\xA6", + "\x82\xC5"=>"\xE3\x81\xA7", + "\x82\xC6"=>"\xE3\x81\xA8", + "\x82\xC7"=>"\xE3\x81\xA9", + "\x82\xC8"=>"\xE3\x81\xAA", + "\x82\xC9"=>"\xE3\x81\xAB", + "\x82\xCA"=>"\xE3\x81\xAC", + "\x82\xCB"=>"\xE3\x81\xAD", + "\x82\xCC"=>"\xE3\x81\xAE", + "\x82\xCD"=>"\xE3\x81\xAF", + "\x82\xCE"=>"\xE3\x81\xB0", + "\x82\xCF"=>"\xE3\x81\xB1", + "\x82\xD0"=>"\xE3\x81\xB2", + "\x82\xD1"=>"\xE3\x81\xB3", + "\x82\xD2"=>"\xE3\x81\xB4", + "\x82\xD3"=>"\xE3\x81\xB5", + "\x82\xD4"=>"\xE3\x81\xB6", + "\x82\xD5"=>"\xE3\x81\xB7", + "\x82\xD6"=>"\xE3\x81\xB8", + "\x82\xD7"=>"\xE3\x81\xB9", + "\x82\xD8"=>"\xE3\x81\xBA", + "\x82\xD9"=>"\xE3\x81\xBB", + "\x82\xDA"=>"\xE3\x81\xBC", + "\x82\xDB"=>"\xE3\x81\xBD", + "\x82\xDC"=>"\xE3\x81\xBE", + "\x82\xDD"=>"\xE3\x81\xBF", + "\x82\xDE"=>"\xE3\x82\x80", + "\x82\xDF"=>"\xE3\x82\x81", + "\x82\xE0"=>"\xE3\x82\x82", + "\x82\xE1"=>"\xE3\x82\x83", + "\x82\xE2"=>"\xE3\x82\x84", + "\x82\xE3"=>"\xE3\x82\x85", + "\x82\xE4"=>"\xE3\x82\x86", + "\x82\xE5"=>"\xE3\x82\x87", + "\x82\xE6"=>"\xE3\x82\x88", + "\x82\xE7"=>"\xE3\x82\x89", + "\x82\xE8"=>"\xE3\x82\x8A", + "\x82\xE9"=>"\xE3\x82\x8B", + "\x82\xEA"=>"\xE3\x82\x8C", + "\x82\xEB"=>"\xE3\x82\x8D", + "\x82\xEC"=>"\xE3\x82\x8E", + "\x82\xED"=>"\xE3\x82\x8F", + "\x82\xEE"=>"\xE3\x82\x90", + "\x82\xEF"=>"\xE3\x82\x91", + "\x82\xF0"=>"\xE3\x82\x92", + "\x82\xF1"=>"\xE3\x82\x93", + "\x83\x40"=>"\xE3\x82\xA1", + "\x83\x41"=>"\xE3\x82\xA2", + "\x83\x42"=>"\xE3\x82\xA3", + "\x83\x43"=>"\xE3\x82\xA4", + "\x83\x44"=>"\xE3\x82\xA5", + "\x83\x45"=>"\xE3\x82\xA6", + "\x83\x46"=>"\xE3\x82\xA7", + "\x83\x47"=>"\xE3\x82\xA8", + "\x83\x48"=>"\xE3\x82\xA9", + "\x83\x49"=>"\xE3\x82\xAA", + "\x83\x4A"=>"\xE3\x82\xAB", + "\x83\x4B"=>"\xE3\x82\xAC", + "\x83\x4C"=>"\xE3\x82\xAD", + "\x83\x4D"=>"\xE3\x82\xAE", + "\x83\x4E"=>"\xE3\x82\xAF", + "\x83\x4F"=>"\xE3\x82\xB0", + "\x83\x50"=>"\xE3\x82\xB1", + "\x83\x51"=>"\xE3\x82\xB2", + "\x83\x52"=>"\xE3\x82\xB3", + "\x83\x53"=>"\xE3\x82\xB4", + "\x83\x54"=>"\xE3\x82\xB5", + "\x83\x55"=>"\xE3\x82\xB6", + "\x83\x56"=>"\xE3\x82\xB7", + "\x83\x57"=>"\xE3\x82\xB8", + "\x83\x58"=>"\xE3\x82\xB9", + "\x83\x59"=>"\xE3\x82\xBA", + "\x83\x5A"=>"\xE3\x82\xBB", + "\x83\x5B"=>"\xE3\x82\xBC", + "\x83\x5C"=>"\xE3\x82\xBD", + "\x83\x5D"=>"\xE3\x82\xBE", + "\x83\x5E"=>"\xE3\x82\xBF", + "\x83\x5F"=>"\xE3\x83\x80", + "\x83\x60"=>"\xE3\x83\x81", + "\x83\x61"=>"\xE3\x83\x82", + "\x83\x62"=>"\xE3\x83\x83", + "\x83\x63"=>"\xE3\x83\x84", + "\x83\x64"=>"\xE3\x83\x85", + "\x83\x65"=>"\xE3\x83\x86", + "\x83\x66"=>"\xE3\x83\x87", + "\x83\x67"=>"\xE3\x83\x88", + "\x83\x68"=>"\xE3\x83\x89", + "\x83\x69"=>"\xE3\x83\x8A", + "\x83\x6A"=>"\xE3\x83\x8B", + "\x83\x6B"=>"\xE3\x83\x8C", + "\x83\x6C"=>"\xE3\x83\x8D", + "\x83\x6D"=>"\xE3\x83\x8E", + "\x83\x6E"=>"\xE3\x83\x8F", + "\x83\x6F"=>"\xE3\x83\x90", + "\x83\x70"=>"\xE3\x83\x91", + "\x83\x71"=>"\xE3\x83\x92", + "\x83\x72"=>"\xE3\x83\x93", + "\x83\x73"=>"\xE3\x83\x94", + "\x83\x74"=>"\xE3\x83\x95", + "\x83\x75"=>"\xE3\x83\x96", + "\x83\x76"=>"\xE3\x83\x97", + "\x83\x77"=>"\xE3\x83\x98", + "\x83\x78"=>"\xE3\x83\x99", + "\x83\x79"=>"\xE3\x83\x9A", + "\x83\x7A"=>"\xE3\x83\x9B", + "\x83\x7B"=>"\xE3\x83\x9C", + "\x83\x7C"=>"\xE3\x83\x9D", + "\x83\x7D"=>"\xE3\x83\x9E", + "\x83\x7E"=>"\xE3\x83\x9F", + "\x83\x80"=>"\xE3\x83\xA0", + "\x83\x81"=>"\xE3\x83\xA1", + "\x83\x82"=>"\xE3\x83\xA2", + "\x83\x83"=>"\xE3\x83\xA3", + "\x83\x84"=>"\xE3\x83\xA4", + "\x83\x85"=>"\xE3\x83\xA5", + "\x83\x86"=>"\xE3\x83\xA6", + "\x83\x87"=>"\xE3\x83\xA7", + "\x83\x88"=>"\xE3\x83\xA8", + "\x83\x89"=>"\xE3\x83\xA9", + "\x83\x8A"=>"\xE3\x83\xAA", + "\x83\x8B"=>"\xE3\x83\xAB", + "\x83\x8C"=>"\xE3\x83\xAC", + "\x83\x8D"=>"\xE3\x83\xAD", + "\x83\x8E"=>"\xE3\x83\xAE", + "\x83\x8F"=>"\xE3\x83\xAF", + "\x83\x90"=>"\xE3\x83\xB0", + "\x83\x91"=>"\xE3\x83\xB1", + "\x83\x92"=>"\xE3\x83\xB2", + "\x83\x93"=>"\xE3\x83\xB3", + "\x83\x94"=>"\xE3\x83\xB4", + "\x83\x95"=>"\xE3\x83\xB5", + "\x83\x96"=>"\xE3\x83\xB6", + "\x83\x9F"=>"\xCE\x91", + "\x83\xA0"=>"\xCE\x92", + "\x83\xA1"=>"\xCE\x93", + "\x83\xA2"=>"\xCE\x94", + "\x83\xA3"=>"\xCE\x95", + "\x83\xA4"=>"\xCE\x96", + "\x83\xA5"=>"\xCE\x97", + "\x83\xA6"=>"\xCE\x98", + "\x83\xA7"=>"\xCE\x99", + "\x83\xA8"=>"\xCE\x9A", + "\x83\xA9"=>"\xCE\x9B", + "\x83\xAA"=>"\xCE\x9C", + "\x83\xAB"=>"\xCE\x9D", + "\x83\xAC"=>"\xCE\x9E", + "\x83\xAD"=>"\xCE\x9F", + "\x83\xAE"=>"\xCE\xA0", + "\x83\xAF"=>"\xCE\xA1", + "\x83\xB0"=>"\xCE\xA3", + "\x83\xB1"=>"\xCE\xA4", + "\x83\xB2"=>"\xCE\xA5", + "\x83\xB3"=>"\xCE\xA6", + "\x83\xB4"=>"\xCE\xA7", + "\x83\xB5"=>"\xCE\xA8", + "\x83\xB6"=>"\xCE\xA9", + "\x83\xBF"=>"\xCE\xB1", + "\x83\xC0"=>"\xCE\xB2", + "\x83\xC1"=>"\xCE\xB3", + "\x83\xC2"=>"\xCE\xB4", + "\x83\xC3"=>"\xCE\xB5", + "\x83\xC4"=>"\xCE\xB6", + "\x83\xC5"=>"\xCE\xB7", + "\x83\xC6"=>"\xCE\xB8", + "\x83\xC7"=>"\xCE\xB9", + "\x83\xC8"=>"\xCE\xBA", + "\x83\xC9"=>"\xCE\xBB", + "\x83\xCA"=>"\xCE\xBC", + "\x83\xCB"=>"\xCE\xBD", + "\x83\xCC"=>"\xCE\xBE", + "\x83\xCD"=>"\xCE\xBF", + "\x83\xCE"=>"\xCF\x80", + "\x83\xCF"=>"\xCF\x81", + "\x83\xD0"=>"\xCF\x83", + "\x83\xD1"=>"\xCF\x84", + "\x83\xD2"=>"\xCF\x85", + "\x83\xD3"=>"\xCF\x86", + "\x83\xD4"=>"\xCF\x87", + "\x83\xD5"=>"\xCF\x88", + "\x83\xD6"=>"\xCF\x89", + "\x84\x40"=>"\xD0\x90", + "\x84\x41"=>"\xD0\x91", + "\x84\x42"=>"\xD0\x92", + "\x84\x43"=>"\xD0\x93", + "\x84\x44"=>"\xD0\x94", + "\x84\x45"=>"\xD0\x95", + "\x84\x46"=>"\xD0\x81", + "\x84\x47"=>"\xD0\x96", + "\x84\x48"=>"\xD0\x97", + "\x84\x49"=>"\xD0\x98", + "\x84\x4A"=>"\xD0\x99", + "\x84\x4B"=>"\xD0\x9A", + "\x84\x4C"=>"\xD0\x9B", + "\x84\x4D"=>"\xD0\x9C", + "\x84\x4E"=>"\xD0\x9D", + "\x84\x4F"=>"\xD0\x9E", + "\x84\x50"=>"\xD0\x9F", + "\x84\x51"=>"\xD0\xA0", + "\x84\x52"=>"\xD0\xA1", + "\x84\x53"=>"\xD0\xA2", + "\x84\x54"=>"\xD0\xA3", + "\x84\x55"=>"\xD0\xA4", + "\x84\x56"=>"\xD0\xA5", + "\x84\x57"=>"\xD0\xA6", + "\x84\x58"=>"\xD0\xA7", + "\x84\x59"=>"\xD0\xA8", + "\x84\x5A"=>"\xD0\xA9", + "\x84\x5B"=>"\xD0\xAA", + "\x84\x5C"=>"\xD0\xAB", + "\x84\x5D"=>"\xD0\xAC", + "\x84\x5E"=>"\xD0\xAD", + "\x84\x5F"=>"\xD0\xAE", + "\x84\x60"=>"\xD0\xAF", + "\x84\x70"=>"\xD0\xB0", + "\x84\x71"=>"\xD0\xB1", + "\x84\x72"=>"\xD0\xB2", + "\x84\x73"=>"\xD0\xB3", + "\x84\x74"=>"\xD0\xB4", + "\x84\x75"=>"\xD0\xB5", + "\x84\x76"=>"\xD1\x91", + "\x84\x77"=>"\xD0\xB6", + "\x84\x78"=>"\xD0\xB7", + "\x84\x79"=>"\xD0\xB8", + "\x84\x7A"=>"\xD0\xB9", + "\x84\x7B"=>"\xD0\xBA", + "\x84\x7C"=>"\xD0\xBB", + "\x84\x7D"=>"\xD0\xBC", + "\x84\x7E"=>"\xD0\xBD", + "\x84\x80"=>"\xD0\xBE", + "\x84\x81"=>"\xD0\xBF", + "\x84\x82"=>"\xD1\x80", + "\x84\x83"=>"\xD1\x81", + "\x84\x84"=>"\xD1\x82", + "\x84\x85"=>"\xD1\x83", + "\x84\x86"=>"\xD1\x84", + "\x84\x87"=>"\xD1\x85", + "\x84\x88"=>"\xD1\x86", + "\x84\x89"=>"\xD1\x87", + "\x84\x8A"=>"\xD1\x88", + "\x84\x8B"=>"\xD1\x89", + "\x84\x8C"=>"\xD1\x8A", + "\x84\x8D"=>"\xD1\x8B", + "\x84\x8E"=>"\xD1\x8C", + "\x84\x8F"=>"\xD1\x8D", + "\x84\x90"=>"\xD1\x8E", + "\x84\x91"=>"\xD1\x8F", + "\x84\x9F"=>"\xE2\x94\x80", + "\x84\xA0"=>"\xE2\x94\x82", + "\x84\xA1"=>"\xE2\x94\x8C", + "\x84\xA2"=>"\xE2\x94\x90", + "\x84\xA3"=>"\xE2\x94\x98", + "\x84\xA4"=>"\xE2\x94\x94", + "\x84\xA5"=>"\xE2\x94\x9C", + "\x84\xA6"=>"\xE2\x94\xAC", + "\x84\xA7"=>"\xE2\x94\xA4", + "\x84\xA8"=>"\xE2\x94\xB4", + "\x84\xA9"=>"\xE2\x94\xBC", + "\x84\xAA"=>"\xE2\x94\x81", + "\x84\xAB"=>"\xE2\x94\x83", + "\x84\xAC"=>"\xE2\x94\x8F", + "\x84\xAD"=>"\xE2\x94\x93", + "\x84\xAE"=>"\xE2\x94\x9B", + "\x84\xAF"=>"\xE2\x94\x97", + "\x84\xB0"=>"\xE2\x94\xA3", + "\x84\xB1"=>"\xE2\x94\xB3", + "\x84\xB2"=>"\xE2\x94\xAB", + "\x84\xB3"=>"\xE2\x94\xBB", + "\x84\xB4"=>"\xE2\x95\x8B", + "\x84\xB5"=>"\xE2\x94\xA0", + "\x84\xB6"=>"\xE2\x94\xAF", + "\x84\xB7"=>"\xE2\x94\xA8", + "\x84\xB8"=>"\xE2\x94\xB7", + "\x84\xB9"=>"\xE2\x94\xBF", + "\x84\xBA"=>"\xE2\x94\x9D", + "\x84\xBB"=>"\xE2\x94\xB0", + "\x84\xBC"=>"\xE2\x94\xA5", + "\x84\xBD"=>"\xE2\x94\xB8", + "\x84\xBE"=>"\xE2\x95\x82", + "\x88\x9F"=>"\xE4\xBA\x9C", + "\x88\xA0"=>"\xE5\x94\x96", + "\x88\xA1"=>"\xE5\xA8\x83", + "\x88\xA2"=>"\xE9\x98\xBF", + "\x88\xA3"=>"\xE5\x93\x80", + "\x88\xA4"=>"\xE6\x84\x9B", + "\x88\xA5"=>"\xE6\x8C\xA8", + "\x88\xA6"=>"\xE5\xA7\xB6", + "\x88\xA7"=>"\xE9\x80\xA2", + "\x88\xA8"=>"\xE8\x91\xB5", + "\x88\xA9"=>"\xE8\x8C\x9C", + "\x88\xAA"=>"\xE7\xA9\x90", + "\x88\xAB"=>"\xE6\x82\xAA", + "\x88\xAC"=>"\xE6\x8F\xA1", + "\x88\xAD"=>"\xE6\xB8\xA5", + "\x88\xAE"=>"\xE6\x97\xAD", + "\x88\xAF"=>"\xE8\x91\xA6", + "\x88\xB0"=>"\xE8\x8A\xA6", + "\x88\xB1"=>"\xE9\xAF\xB5", + "\x88\xB2"=>"\xE6\xA2\x93", + "\x88\xB3"=>"\xE5\x9C\xA7", + "\x88\xB4"=>"\xE6\x96\xA1", + "\x88\xB5"=>"\xE6\x89\xB1", + "\x88\xB6"=>"\xE5\xAE\x9B", + "\x88\xB7"=>"\xE5\xA7\x90", + "\x88\xB8"=>"\xE8\x99\xBB", + "\x88\xB9"=>"\xE9\xA3\xB4", + "\x88\xBA"=>"\xE7\xB5\xA2", + "\x88\xBB"=>"\xE7\xB6\xBE", + "\x88\xBC"=>"\xE9\xAE\x8E", + "\x88\xBD"=>"\xE6\x88\x96", + "\x88\xBE"=>"\xE7\xB2\x9F", + "\x88\xBF"=>"\xE8\xA2\xB7", + "\x88\xC0"=>"\xE5\xAE\x89", + "\x88\xC1"=>"\xE5\xBA\xB5", + "\x88\xC2"=>"\xE6\x8C\x89", + "\x88\xC3"=>"\xE6\x9A\x97", + "\x88\xC4"=>"\xE6\xA1\x88", + "\x88\xC5"=>"\xE9\x97\x87", + "\x88\xC6"=>"\xE9\x9E\x8D", + "\x88\xC7"=>"\xE6\x9D\x8F", + "\x88\xC8"=>"\xE4\xBB\xA5", + "\x88\xC9"=>"\xE4\xBC\x8A", + "\x88\xCA"=>"\xE4\xBD\x8D", + "\x88\xCB"=>"\xE4\xBE\x9D", + "\x88\xCC"=>"\xE5\x81\x89", + "\x88\xCD"=>"\xE5\x9B\xB2", + "\x88\xCE"=>"\xE5\xA4\xB7", + "\x88\xCF"=>"\xE5\xA7\x94", + "\x88\xD0"=>"\xE5\xA8\x81", + "\x88\xD1"=>"\xE5\xB0\x89", + "\x88\xD2"=>"\xE6\x83\x9F", + "\x88\xD3"=>"\xE6\x84\x8F", + "\x88\xD4"=>"\xE6\x85\xB0", + "\x88\xD5"=>"\xE6\x98\x93", + "\x88\xD6"=>"\xE6\xA4\x85", + "\x88\xD7"=>"\xE7\x82\xBA", + "\x88\xD8"=>"\xE7\x95\x8F", + "\x88\xD9"=>"\xE7\x95\xB0", + "\x88\xDA"=>"\xE7\xA7\xBB", + "\x88\xDB"=>"\xE7\xB6\xAD", + "\x88\xDC"=>"\xE7\xB7\xAF", + "\x88\xDD"=>"\xE8\x83\x83", + "\x88\xDE"=>"\xE8\x90\x8E", + "\x88\xDF"=>"\xE8\xA1\xA3", + "\x88\xE0"=>"\xE8\xAC\x82", + "\x88\xE1"=>"\xE9\x81\x95", + "\x88\xE2"=>"\xE9\x81\xBA", + "\x88\xE3"=>"\xE5\x8C\xBB", + "\x88\xE4"=>"\xE4\xBA\x95", + "\x88\xE5"=>"\xE4\xBA\xA5", + "\x88\xE6"=>"\xE5\x9F\x9F", + "\x88\xE7"=>"\xE8\x82\xB2", + "\x88\xE8"=>"\xE9\x83\x81", + "\x88\xE9"=>"\xE7\xA3\xAF", + "\x88\xEA"=>"\xE4\xB8\x80", + "\x88\xEB"=>"\xE5\xA3\xB1", + "\x88\xEC"=>"\xE6\xBA\xA2", + "\x88\xED"=>"\xE9\x80\xB8", + "\x88\xEE"=>"\xE7\xA8\xB2", + "\x88\xEF"=>"\xE8\x8C\xA8", + "\x88\xF0"=>"\xE8\x8A\x8B", + "\x88\xF1"=>"\xE9\xB0\xAF", + "\x88\xF2"=>"\xE5\x85\x81", + "\x88\xF3"=>"\xE5\x8D\xB0", + "\x88\xF4"=>"\xE5\x92\xBD", + "\x88\xF5"=>"\xE5\x93\xA1", + "\x88\xF6"=>"\xE5\x9B\xA0", + "\x88\xF7"=>"\xE5\xA7\xBB", + "\x88\xF8"=>"\xE5\xBC\x95", + "\x88\xF9"=>"\xE9\xA3\xB2", + "\x88\xFA"=>"\xE6\xB7\xAB", + "\x88\xFB"=>"\xE8\x83\xA4", + "\x88\xFC"=>"\xE8\x94\xAD", + "\x89\x40"=>"\xE9\x99\xA2", + "\x89\x41"=>"\xE9\x99\xB0", + "\x89\x42"=>"\xE9\x9A\xA0", + "\x89\x43"=>"\xE9\x9F\xBB", + "\x89\x44"=>"\xE5\x90\x8B", + "\x89\x45"=>"\xE5\x8F\xB3", + "\x89\x46"=>"\xE5\xAE\x87", + "\x89\x47"=>"\xE7\x83\x8F", + "\x89\x48"=>"\xE7\xBE\xBD", + "\x89\x49"=>"\xE8\xBF\x82", + "\x89\x4A"=>"\xE9\x9B\xA8", + "\x89\x4B"=>"\xE5\x8D\xAF", + "\x89\x4C"=>"\xE9\xB5\x9C", + "\x89\x4D"=>"\xE7\xAA\xBA", + "\x89\x4E"=>"\xE4\xB8\x91", + "\x89\x4F"=>"\xE7\xA2\x93", + "\x89\x50"=>"\xE8\x87\xBC", + "\x89\x51"=>"\xE6\xB8\xA6", + "\x89\x52"=>"\xE5\x98\x98", + "\x89\x53"=>"\xE5\x94\x84", + "\x89\x54"=>"\xE6\xAC\x9D", + "\x89\x55"=>"\xE8\x94\x9A", + "\x89\x56"=>"\xE9\xB0\xBB", + "\x89\x57"=>"\xE5\xA7\xA5", + "\x89\x58"=>"\xE5\x8E\xA9", + "\x89\x59"=>"\xE6\xB5\xA6", + "\x89\x5A"=>"\xE7\x93\x9C", + "\x89\x5B"=>"\xE9\x96\x8F", + "\x89\x5C"=>"\xE5\x99\x82", + "\x89\x5D"=>"\xE4\xBA\x91", + "\x89\x5E"=>"\xE9\x81\x8B", + "\x89\x5F"=>"\xE9\x9B\xB2", + "\x89\x60"=>"\xE8\x8D\x8F", + "\x89\x61"=>"\xE9\xA4\x8C", + "\x89\x62"=>"\xE5\x8F\xA1", + "\x89\x63"=>"\xE5\x96\xB6", + "\x89\x64"=>"\xE5\xAC\xB0", + "\x89\x65"=>"\xE5\xBD\xB1", + "\x89\x66"=>"\xE6\x98\xA0", + "\x89\x67"=>"\xE6\x9B\xB3", + "\x89\x68"=>"\xE6\xA0\x84", + "\x89\x69"=>"\xE6\xB0\xB8", + "\x89\x6A"=>"\xE6\xB3\xB3", + "\x89\x6B"=>"\xE6\xB4\xA9", + "\x89\x6C"=>"\xE7\x91\x9B", + "\x89\x6D"=>"\xE7\x9B\x88", + "\x89\x6E"=>"\xE7\xA9\x8E", + "\x89\x6F"=>"\xE9\xA0\xB4", + "\x89\x70"=>"\xE8\x8B\xB1", + "\x89\x71"=>"\xE8\xA1\x9B", + "\x89\x72"=>"\xE8\xA9\xA0", + "\x89\x73"=>"\xE9\x8B\xAD", + "\x89\x74"=>"\xE6\xB6\xB2", + "\x89\x75"=>"\xE7\x96\xAB", + "\x89\x76"=>"\xE7\x9B\x8A", + "\x89\x77"=>"\xE9\xA7\x85", + "\x89\x78"=>"\xE6\x82\xA6", + "\x89\x79"=>"\xE8\xAC\x81", + "\x89\x7A"=>"\xE8\xB6\x8A", + "\x89\x7B"=>"\xE9\x96\xB2", + "\x89\x7C"=>"\xE6\xA6\x8E", + "\x89\x7D"=>"\xE5\x8E\xAD", + "\x89\x7E"=>"\xE5\x86\x86", + "\x89\x80"=>"\xE5\x9C\x92", + "\x89\x81"=>"\xE5\xA0\xB0", + "\x89\x82"=>"\xE5\xA5\x84", + "\x89\x83"=>"\xE5\xAE\xB4", + "\x89\x84"=>"\xE5\xBB\xB6", + "\x89\x85"=>"\xE6\x80\xA8", + "\x89\x86"=>"\xE6\x8E\xA9", + "\x89\x87"=>"\xE6\x8F\xB4", + "\x89\x88"=>"\xE6\xB2\xBF", + "\x89\x89"=>"\xE6\xBC\x94", + "\x89\x8A"=>"\xE7\x82\x8E", + "\x89\x8B"=>"\xE7\x84\x94", + "\x89\x8C"=>"\xE7\x85\x99", + "\x89\x8D"=>"\xE7\x87\x95", + "\x89\x8E"=>"\xE7\x8C\xBF", + "\x89\x8F"=>"\xE7\xB8\x81", + "\x89\x90"=>"\xE8\x89\xB6", + "\x89\x91"=>"\xE8\x8B\x91", + "\x89\x92"=>"\xE8\x96\x97", + "\x89\x93"=>"\xE9\x81\xA0", + "\x89\x94"=>"\xE9\x89\x9B", + "\x89\x95"=>"\xE9\xB4\x9B", + "\x89\x96"=>"\xE5\xA1\xA9", + "\x89\x97"=>"\xE6\x96\xBC", + "\x89\x98"=>"\xE6\xB1\x9A", + "\x89\x99"=>"\xE7\x94\xA5", + "\x89\x9A"=>"\xE5\x87\xB9", + "\x89\x9B"=>"\xE5\xA4\xAE", + "\x89\x9C"=>"\xE5\xA5\xA5", + "\x89\x9D"=>"\xE5\xBE\x80", + "\x89\x9E"=>"\xE5\xBF\x9C", + "\x89\x9F"=>"\xE6\x8A\xBC", + "\x89\xA0"=>"\xE6\x97\xBA", + "\x89\xA1"=>"\xE6\xA8\xAA", + "\x89\xA2"=>"\xE6\xAC\xA7", + "\x89\xA3"=>"\xE6\xAE\xB4", + "\x89\xA4"=>"\xE7\x8E\x8B", + "\x89\xA5"=>"\xE7\xBF\x81", + "\x89\xA6"=>"\xE8\xA5\x96", + "\x89\xA7"=>"\xE9\xB4\xAC", + "\x89\xA8"=>"\xE9\xB4\x8E", + "\x89\xA9"=>"\xE9\xBB\x84", + "\x89\xAA"=>"\xE5\xB2\xA1", + "\x89\xAB"=>"\xE6\xB2\x96", + "\x89\xAC"=>"\xE8\x8D\xBB", + "\x89\xAD"=>"\xE5\x84\x84", + "\x89\xAE"=>"\xE5\xB1\x8B", + "\x89\xAF"=>"\xE6\x86\xB6", + "\x89\xB0"=>"\xE8\x87\x86", + "\x89\xB1"=>"\xE6\xA1\xB6", + "\x89\xB2"=>"\xE7\x89\xA1", + "\x89\xB3"=>"\xE4\xB9\x99", + "\x89\xB4"=>"\xE4\xBF\xBA", + "\x89\xB5"=>"\xE5\x8D\xB8", + "\x89\xB6"=>"\xE6\x81\xA9", + "\x89\xB7"=>"\xE6\xB8\xA9", + "\x89\xB8"=>"\xE7\xA9\x8F", + "\x89\xB9"=>"\xE9\x9F\xB3", + "\x89\xBA"=>"\xE4\xB8\x8B", + "\x89\xBB"=>"\xE5\x8C\x96", + "\x89\xBC"=>"\xE4\xBB\xAE", + "\x89\xBD"=>"\xE4\xBD\x95", + "\x89\xBE"=>"\xE4\xBC\xBD", + "\x89\xBF"=>"\xE4\xBE\xA1", + "\x89\xC0"=>"\xE4\xBD\xB3", + "\x89\xC1"=>"\xE5\x8A\xA0", + "\x89\xC2"=>"\xE5\x8F\xAF", + "\x89\xC3"=>"\xE5\x98\x89", + "\x89\xC4"=>"\xE5\xA4\x8F", + "\x89\xC5"=>"\xE5\xAB\x81", + "\x89\xC6"=>"\xE5\xAE\xB6", + "\x89\xC7"=>"\xE5\xAF\xA1", + "\x89\xC8"=>"\xE7\xA7\x91", + "\x89\xC9"=>"\xE6\x9A\x87", + "\x89\xCA"=>"\xE6\x9E\x9C", + "\x89\xCB"=>"\xE6\x9E\xB6", + "\x89\xCC"=>"\xE6\xAD\x8C", + "\x89\xCD"=>"\xE6\xB2\xB3", + "\x89\xCE"=>"\xE7\x81\xAB", + "\x89\xCF"=>"\xE7\x8F\x82", + "\x89\xD0"=>"\xE7\xA6\x8D", + "\x89\xD1"=>"\xE7\xA6\xBE", + "\x89\xD2"=>"\xE7\xA8\xBC", + "\x89\xD3"=>"\xE7\xAE\x87", + "\x89\xD4"=>"\xE8\x8A\xB1", + "\x89\xD5"=>"\xE8\x8B\x9B", + "\x89\xD6"=>"\xE8\x8C\x84", + "\x89\xD7"=>"\xE8\x8D\xB7", + "\x89\xD8"=>"\xE8\x8F\xAF", + "\x89\xD9"=>"\xE8\x8F\x93", + "\x89\xDA"=>"\xE8\x9D\xA6", + "\x89\xDB"=>"\xE8\xAA\xB2", + "\x89\xDC"=>"\xE5\x98\xA9", + "\x89\xDD"=>"\xE8\xB2\xA8", + "\x89\xDE"=>"\xE8\xBF\xA6", + "\x89\xDF"=>"\xE9\x81\x8E", + "\x89\xE0"=>"\xE9\x9C\x9E", + "\x89\xE1"=>"\xE8\x9A\x8A", + "\x89\xE2"=>"\xE4\xBF\x84", + "\x89\xE3"=>"\xE5\xB3\xA8", + "\x89\xE4"=>"\xE6\x88\x91", + "\x89\xE5"=>"\xE7\x89\x99", + "\x89\xE6"=>"\xE7\x94\xBB", + "\x89\xE7"=>"\xE8\x87\xA5", + "\x89\xE8"=>"\xE8\x8A\xBD", + "\x89\xE9"=>"\xE8\x9B\xBE", + "\x89\xEA"=>"\xE8\xB3\x80", + "\x89\xEB"=>"\xE9\x9B\x85", + "\x89\xEC"=>"\xE9\xA4\x93", + "\x89\xED"=>"\xE9\xA7\x95", + "\x89\xEE"=>"\xE4\xBB\x8B", + "\x89\xEF"=>"\xE4\xBC\x9A", + "\x89\xF0"=>"\xE8\xA7\xA3", + "\x89\xF1"=>"\xE5\x9B\x9E", + "\x89\xF2"=>"\xE5\xA1\x8A", + "\x89\xF3"=>"\xE5\xA3\x8A", + "\x89\xF4"=>"\xE5\xBB\xBB", + "\x89\xF5"=>"\xE5\xBF\xAB", + "\x89\xF6"=>"\xE6\x80\xAA", + "\x89\xF7"=>"\xE6\x82\x94", + "\x89\xF8"=>"\xE6\x81\xA2", + "\x89\xF9"=>"\xE6\x87\x90", + "\x89\xFA"=>"\xE6\x88\x92", + "\x89\xFB"=>"\xE6\x8B\x90", + "\x89\xFC"=>"\xE6\x94\xB9", + "\x8A\x40"=>"\xE9\xAD\x81", + "\x8A\x41"=>"\xE6\x99\xA6", + "\x8A\x42"=>"\xE6\xA2\xB0", + "\x8A\x43"=>"\xE6\xB5\xB7", + "\x8A\x44"=>"\xE7\x81\xB0", + "\x8A\x45"=>"\xE7\x95\x8C", + "\x8A\x46"=>"\xE7\x9A\x86", + "\x8A\x47"=>"\xE7\xB5\xB5", + "\x8A\x48"=>"\xE8\x8A\xA5", + "\x8A\x49"=>"\xE8\x9F\xB9", + "\x8A\x4A"=>"\xE9\x96\x8B", + "\x8A\x4B"=>"\xE9\x9A\x8E", + "\x8A\x4C"=>"\xE8\xB2\x9D", + "\x8A\x4D"=>"\xE5\x87\xB1", + "\x8A\x4E"=>"\xE5\x8A\xBE", + "\x8A\x4F"=>"\xE5\xA4\x96", + "\x8A\x50"=>"\xE5\x92\xB3", + "\x8A\x51"=>"\xE5\xAE\xB3", + "\x8A\x52"=>"\xE5\xB4\x96", + "\x8A\x53"=>"\xE6\x85\xA8", + "\x8A\x54"=>"\xE6\xA6\x82", + "\x8A\x55"=>"\xE6\xB6\xAF", + "\x8A\x56"=>"\xE7\xA2\x8D", + "\x8A\x57"=>"\xE8\x93\x8B", + "\x8A\x58"=>"\xE8\xA1\x97", + "\x8A\x59"=>"\xE8\xA9\xB2", + "\x8A\x5A"=>"\xE9\x8E\xA7", + "\x8A\x5B"=>"\xE9\xAA\xB8", + "\x8A\x5C"=>"\xE6\xB5\xAC", + "\x8A\x5D"=>"\xE9\xA6\xA8", + "\x8A\x5E"=>"\xE8\x9B\x99", + "\x8A\x5F"=>"\xE5\x9E\xA3", + "\x8A\x60"=>"\xE6\x9F\xBF", + "\x8A\x61"=>"\xE8\x9B\x8E", + "\x8A\x62"=>"\xE9\x88\x8E", + "\x8A\x63"=>"\xE5\x8A\x83", + "\x8A\x64"=>"\xE5\x9A\x87", + "\x8A\x65"=>"\xE5\x90\x84", + "\x8A\x66"=>"\xE5\xBB\x93", + "\x8A\x67"=>"\xE6\x8B\xA1", + "\x8A\x68"=>"\xE6\x92\xB9", + "\x8A\x69"=>"\xE6\xA0\xBC", + "\x8A\x6A"=>"\xE6\xA0\xB8", + "\x8A\x6B"=>"\xE6\xAE\xBB", + "\x8A\x6C"=>"\xE7\x8D\xB2", + "\x8A\x6D"=>"\xE7\xA2\xBA", + "\x8A\x6E"=>"\xE7\xA9\xAB", + "\x8A\x6F"=>"\xE8\xA6\x9A", + "\x8A\x70"=>"\xE8\xA7\x92", + "\x8A\x71"=>"\xE8\xB5\xAB", + "\x8A\x72"=>"\xE8\xBC\x83", + "\x8A\x73"=>"\xE9\x83\xAD", + "\x8A\x74"=>"\xE9\x96\xA3", + "\x8A\x75"=>"\xE9\x9A\x94", + "\x8A\x76"=>"\xE9\x9D\xA9", + "\x8A\x77"=>"\xE5\xAD\xA6", + "\x8A\x78"=>"\xE5\xB2\xB3", + "\x8A\x79"=>"\xE6\xA5\xBD", + "\x8A\x7A"=>"\xE9\xA1\x8D", + "\x8A\x7B"=>"\xE9\xA1\x8E", + "\x8A\x7C"=>"\xE6\x8E\x9B", + "\x8A\x7D"=>"\xE7\xAC\xA0", + "\x8A\x7E"=>"\xE6\xA8\xAB", + "\x8A\x80"=>"\xE6\xA9\xBF", + "\x8A\x81"=>"\xE6\xA2\xB6", + "\x8A\x82"=>"\xE9\xB0\x8D", + "\x8A\x83"=>"\xE6\xBD\x9F", + "\x8A\x84"=>"\xE5\x89\xB2", + "\x8A\x85"=>"\xE5\x96\x9D", + "\x8A\x86"=>"\xE6\x81\xB0", + "\x8A\x87"=>"\xE6\x8B\xAC", + "\x8A\x88"=>"\xE6\xB4\xBB", + "\x8A\x89"=>"\xE6\xB8\x87", + "\x8A\x8A"=>"\xE6\xBB\x91", + "\x8A\x8B"=>"\xE8\x91\x9B", + "\x8A\x8C"=>"\xE8\xA4\x90", + "\x8A\x8D"=>"\xE8\xBD\x84", + "\x8A\x8E"=>"\xE4\xB8\x94", + "\x8A\x8F"=>"\xE9\xB0\xB9", + "\x8A\x90"=>"\xE5\x8F\xB6", + "\x8A\x91"=>"\xE6\xA4\x9B", + "\x8A\x92"=>"\xE6\xA8\xBA", + "\x8A\x93"=>"\xE9\x9E\x84", + "\x8A\x94"=>"\xE6\xA0\xAA", + "\x8A\x95"=>"\xE5\x85\x9C", + "\x8A\x96"=>"\xE7\xAB\x83", + "\x8A\x97"=>"\xE8\x92\xB2", + "\x8A\x98"=>"\xE9\x87\x9C", + "\x8A\x99"=>"\xE9\x8E\x8C", + "\x8A\x9A"=>"\xE5\x99\x9B", + "\x8A\x9B"=>"\xE9\xB4\xA8", + "\x8A\x9C"=>"\xE6\xA0\xA2", + "\x8A\x9D"=>"\xE8\x8C\x85", + "\x8A\x9E"=>"\xE8\x90\xB1", + "\x8A\x9F"=>"\xE7\xB2\xA5", + "\x8A\xA0"=>"\xE5\x88\x88", + "\x8A\xA1"=>"\xE8\x8B\x85", + "\x8A\xA2"=>"\xE7\x93\xA6", + "\x8A\xA3"=>"\xE4\xB9\xBE", + "\x8A\xA4"=>"\xE4\xBE\x83", + "\x8A\xA5"=>"\xE5\x86\xA0", + "\x8A\xA6"=>"\xE5\xAF\x92", + "\x8A\xA7"=>"\xE5\x88\x8A", + "\x8A\xA8"=>"\xE5\x8B\x98", + "\x8A\xA9"=>"\xE5\x8B\xA7", + "\x8A\xAA"=>"\xE5\xB7\xBB", + "\x8A\xAB"=>"\xE5\x96\x9A", + "\x8A\xAC"=>"\xE5\xA0\xAA", + "\x8A\xAD"=>"\xE5\xA7\xA6", + "\x8A\xAE"=>"\xE5\xAE\x8C", + "\x8A\xAF"=>"\xE5\xAE\x98", + "\x8A\xB0"=>"\xE5\xAF\x9B", + "\x8A\xB1"=>"\xE5\xB9\xB2", + "\x8A\xB2"=>"\xE5\xB9\xB9", + "\x8A\xB3"=>"\xE6\x82\xA3", + "\x8A\xB4"=>"\xE6\x84\x9F", + "\x8A\xB5"=>"\xE6\x85\xA3", + "\x8A\xB6"=>"\xE6\x86\xBE", + "\x8A\xB7"=>"\xE6\x8F\x9B", + "\x8A\xB8"=>"\xE6\x95\xA2", + "\x8A\xB9"=>"\xE6\x9F\x91", + "\x8A\xBA"=>"\xE6\xA1\x93", + "\x8A\xBB"=>"\xE6\xA3\xBA", + "\x8A\xBC"=>"\xE6\xAC\xBE", + "\x8A\xBD"=>"\xE6\xAD\x93", + "\x8A\xBE"=>"\xE6\xB1\x97", + "\x8A\xBF"=>"\xE6\xBC\xA2", + "\x8A\xC0"=>"\xE6\xBE\x97", + "\x8A\xC1"=>"\xE6\xBD\x85", + "\x8A\xC2"=>"\xE7\x92\xB0", + "\x8A\xC3"=>"\xE7\x94\x98", + "\x8A\xC4"=>"\xE7\x9B\xA3", + "\x8A\xC5"=>"\xE7\x9C\x8B", + "\x8A\xC6"=>"\xE7\xAB\xBF", + "\x8A\xC7"=>"\xE7\xAE\xA1", + "\x8A\xC8"=>"\xE7\xB0\xA1", + "\x8A\xC9"=>"\xE7\xB7\xA9", + "\x8A\xCA"=>"\xE7\xBC\xB6", + "\x8A\xCB"=>"\xE7\xBF\xB0", + "\x8A\xCC"=>"\xE8\x82\x9D", + "\x8A\xCD"=>"\xE8\x89\xA6", + "\x8A\xCE"=>"\xE8\x8E\x9E", + "\x8A\xCF"=>"\xE8\xA6\xB3", + "\x8A\xD0"=>"\xE8\xAB\x8C", + "\x8A\xD1"=>"\xE8\xB2\xAB", + "\x8A\xD2"=>"\xE9\x82\x84", + "\x8A\xD3"=>"\xE9\x91\x91", + "\x8A\xD4"=>"\xE9\x96\x93", + "\x8A\xD5"=>"\xE9\x96\x91", + "\x8A\xD6"=>"\xE9\x96\xA2", + "\x8A\xD7"=>"\xE9\x99\xA5", + "\x8A\xD8"=>"\xE9\x9F\x93", + "\x8A\xD9"=>"\xE9\xA4\xA8", + "\x8A\xDA"=>"\xE8\x88\x98", + "\x8A\xDB"=>"\xE4\xB8\xB8", + "\x8A\xDC"=>"\xE5\x90\xAB", + "\x8A\xDD"=>"\xE5\xB2\xB8", + "\x8A\xDE"=>"\xE5\xB7\x8C", + "\x8A\xDF"=>"\xE7\x8E\xA9", + "\x8A\xE0"=>"\xE7\x99\x8C", + "\x8A\xE1"=>"\xE7\x9C\xBC", + "\x8A\xE2"=>"\xE5\xB2\xA9", + "\x8A\xE3"=>"\xE7\xBF\xAB", + "\x8A\xE4"=>"\xE8\xB4\x8B", + "\x8A\xE5"=>"\xE9\x9B\x81", + "\x8A\xE6"=>"\xE9\xA0\x91", + "\x8A\xE7"=>"\xE9\xA1\x94", + "\x8A\xE8"=>"\xE9\xA1\x98", + "\x8A\xE9"=>"\xE4\xBC\x81", + "\x8A\xEA"=>"\xE4\xBC\x8E", + "\x8A\xEB"=>"\xE5\x8D\xB1", + "\x8A\xEC"=>"\xE5\x96\x9C", + "\x8A\xED"=>"\xE5\x99\xA8", + "\x8A\xEE"=>"\xE5\x9F\xBA", + "\x8A\xEF"=>"\xE5\xA5\x87", + "\x8A\xF0"=>"\xE5\xAC\x89", + "\x8A\xF1"=>"\xE5\xAF\x84", + "\x8A\xF2"=>"\xE5\xB2\x90", + "\x8A\xF3"=>"\xE5\xB8\x8C", + "\x8A\xF4"=>"\xE5\xB9\xBE", + "\x8A\xF5"=>"\xE5\xBF\x8C", + "\x8A\xF6"=>"\xE6\x8F\xAE", + "\x8A\xF7"=>"\xE6\x9C\xBA", + "\x8A\xF8"=>"\xE6\x97\x97", + "\x8A\xF9"=>"\xE6\x97\xA2", + "\x8A\xFA"=>"\xE6\x9C\x9F", + "\x8A\xFB"=>"\xE6\xA3\x8B", + "\x8A\xFC"=>"\xE6\xA3\x84", + "\x8B\x40"=>"\xE6\xA9\x9F", + "\x8B\x41"=>"\xE5\xB8\xB0", + "\x8B\x42"=>"\xE6\xAF\x85", + "\x8B\x43"=>"\xE6\xB0\x97", + "\x8B\x44"=>"\xE6\xB1\xBD", + "\x8B\x45"=>"\xE7\x95\xBF", + "\x8B\x46"=>"\xE7\xA5\x88", + "\x8B\x47"=>"\xE5\xAD\xA3", + "\x8B\x48"=>"\xE7\xA8\x80", + "\x8B\x49"=>"\xE7\xB4\x80", + "\x8B\x4A"=>"\xE5\xBE\xBD", + "\x8B\x4B"=>"\xE8\xA6\x8F", + "\x8B\x4C"=>"\xE8\xA8\x98", + "\x8B\x4D"=>"\xE8\xB2\xB4", + "\x8B\x4E"=>"\xE8\xB5\xB7", + "\x8B\x4F"=>"\xE8\xBB\x8C", + "\x8B\x50"=>"\xE8\xBC\x9D", + "\x8B\x51"=>"\xE9\xA3\xA2", + "\x8B\x52"=>"\xE9\xA8\x8E", + "\x8B\x53"=>"\xE9\xAC\xBC", + "\x8B\x54"=>"\xE4\xBA\x80", + "\x8B\x55"=>"\xE5\x81\xBD", + "\x8B\x56"=>"\xE5\x84\x80", + "\x8B\x57"=>"\xE5\xA6\x93", + "\x8B\x58"=>"\xE5\xAE\x9C", + "\x8B\x59"=>"\xE6\x88\xAF", + "\x8B\x5A"=>"\xE6\x8A\x80", + "\x8B\x5B"=>"\xE6\x93\xAC", + "\x8B\x5C"=>"\xE6\xAC\xBA", + "\x8B\x5D"=>"\xE7\x8A\xA0", + "\x8B\x5E"=>"\xE7\x96\x91", + "\x8B\x5F"=>"\xE7\xA5\x87", + "\x8B\x60"=>"\xE7\xBE\xA9", + "\x8B\x61"=>"\xE8\x9F\xBB", + "\x8B\x62"=>"\xE8\xAA\xBC", + "\x8B\x63"=>"\xE8\xAD\xB0", + "\x8B\x64"=>"\xE6\x8E\xAC", + "\x8B\x65"=>"\xE8\x8F\x8A", + "\x8B\x66"=>"\xE9\x9E\xA0", + "\x8B\x67"=>"\xE5\x90\x89", + "\x8B\x68"=>"\xE5\x90\x83", + "\x8B\x69"=>"\xE5\x96\xAB", + "\x8B\x6A"=>"\xE6\xA1\x94", + "\x8B\x6B"=>"\xE6\xA9\x98", + "\x8B\x6C"=>"\xE8\xA9\xB0", + "\x8B\x6D"=>"\xE7\xA0\xA7", + "\x8B\x6E"=>"\xE6\x9D\xB5", + "\x8B\x6F"=>"\xE9\xBB\x8D", + "\x8B\x70"=>"\xE5\x8D\xB4", + "\x8B\x71"=>"\xE5\xAE\xA2", + "\x8B\x72"=>"\xE8\x84\x9A", + "\x8B\x73"=>"\xE8\x99\x90", + "\x8B\x74"=>"\xE9\x80\x86", + "\x8B\x75"=>"\xE4\xB8\x98", + "\x8B\x76"=>"\xE4\xB9\x85", + "\x8B\x77"=>"\xE4\xBB\x87", + "\x8B\x78"=>"\xE4\xBC\x91", + "\x8B\x79"=>"\xE5\x8F\x8A", + "\x8B\x7A"=>"\xE5\x90\xB8", + "\x8B\x7B"=>"\xE5\xAE\xAE", + "\x8B\x7C"=>"\xE5\xBC\x93", + "\x8B\x7D"=>"\xE6\x80\xA5", + "\x8B\x7E"=>"\xE6\x95\x91", + "\x8B\x80"=>"\xE6\x9C\xBD", + "\x8B\x81"=>"\xE6\xB1\x82", + "\x8B\x82"=>"\xE6\xB1\xB2", + "\x8B\x83"=>"\xE6\xB3\xA3", + "\x8B\x84"=>"\xE7\x81\xB8", + "\x8B\x85"=>"\xE7\x90\x83", + "\x8B\x86"=>"\xE7\xA9\xB6", + "\x8B\x87"=>"\xE7\xAA\xAE", + "\x8B\x88"=>"\xE7\xAC\x88", + "\x8B\x89"=>"\xE7\xB4\x9A", + "\x8B\x8A"=>"\xE7\xB3\xBE", + "\x8B\x8B"=>"\xE7\xB5\xA6", + "\x8B\x8C"=>"\xE6\x97\xA7", + "\x8B\x8D"=>"\xE7\x89\x9B", + "\x8B\x8E"=>"\xE5\x8E\xBB", + "\x8B\x8F"=>"\xE5\xB1\x85", + "\x8B\x90"=>"\xE5\xB7\xA8", + "\x8B\x91"=>"\xE6\x8B\x92", + "\x8B\x92"=>"\xE6\x8B\xA0", + "\x8B\x93"=>"\xE6\x8C\x99", + "\x8B\x94"=>"\xE6\xB8\xA0", + "\x8B\x95"=>"\xE8\x99\x9A", + "\x8B\x96"=>"\xE8\xA8\xB1", + "\x8B\x97"=>"\xE8\xB7\x9D", + "\x8B\x98"=>"\xE9\x8B\xB8", + "\x8B\x99"=>"\xE6\xBC\x81", + "\x8B\x9A"=>"\xE7\xA6\xA6", + "\x8B\x9B"=>"\xE9\xAD\x9A", + "\x8B\x9C"=>"\xE4\xBA\xA8", + "\x8B\x9D"=>"\xE4\xBA\xAB", + "\x8B\x9E"=>"\xE4\xBA\xAC", + "\x8B\x9F"=>"\xE4\xBE\x9B", + "\x8B\xA0"=>"\xE4\xBE\xA0", + "\x8B\xA1"=>"\xE5\x83\x91", + "\x8B\xA2"=>"\xE5\x85\x87", + "\x8B\xA3"=>"\xE7\xAB\xB6", + "\x8B\xA4"=>"\xE5\x85\xB1", + "\x8B\xA5"=>"\xE5\x87\xB6", + "\x8B\xA6"=>"\xE5\x8D\x94", + "\x8B\xA7"=>"\xE5\x8C\xA1", + "\x8B\xA8"=>"\xE5\x8D\xBF", + "\x8B\xA9"=>"\xE5\x8F\xAB", + "\x8B\xAA"=>"\xE5\x96\xAC", + "\x8B\xAB"=>"\xE5\xA2\x83", + "\x8B\xAC"=>"\xE5\xB3\xA1", + "\x8B\xAD"=>"\xE5\xBC\xB7", + "\x8B\xAE"=>"\xE5\xBD\x8A", + "\x8B\xAF"=>"\xE6\x80\xAF", + "\x8B\xB0"=>"\xE6\x81\x90", + "\x8B\xB1"=>"\xE6\x81\xAD", + "\x8B\xB2"=>"\xE6\x8C\x9F", + "\x8B\xB3"=>"\xE6\x95\x99", + "\x8B\xB4"=>"\xE6\xA9\x8B", + "\x8B\xB5"=>"\xE6\xB3\x81", + "\x8B\xB6"=>"\xE7\x8B\x82", + "\x8B\xB7"=>"\xE7\x8B\xAD", + "\x8B\xB8"=>"\xE7\x9F\xAF", + "\x8B\xB9"=>"\xE8\x83\xB8", + "\x8B\xBA"=>"\xE8\x84\x85", + "\x8B\xBB"=>"\xE8\x88\x88", + "\x8B\xBC"=>"\xE8\x95\x8E", + "\x8B\xBD"=>"\xE9\x83\xB7", + "\x8B\xBE"=>"\xE9\x8F\xA1", + "\x8B\xBF"=>"\xE9\x9F\xBF", + "\x8B\xC0"=>"\xE9\xA5\x97", + "\x8B\xC1"=>"\xE9\xA9\x9A", + "\x8B\xC2"=>"\xE4\xBB\xB0", + "\x8B\xC3"=>"\xE5\x87\x9D", + "\x8B\xC4"=>"\xE5\xB0\xAD", + "\x8B\xC5"=>"\xE6\x9A\x81", + "\x8B\xC6"=>"\xE6\xA5\xAD", + "\x8B\xC7"=>"\xE5\xB1\x80", + "\x8B\xC8"=>"\xE6\x9B\xB2", + "\x8B\xC9"=>"\xE6\xA5\xB5", + "\x8B\xCA"=>"\xE7\x8E\x89", + "\x8B\xCB"=>"\xE6\xA1\x90", + "\x8B\xCC"=>"\xE7\xB2\x81", + "\x8B\xCD"=>"\xE5\x83\x85", + "\x8B\xCE"=>"\xE5\x8B\xA4", + "\x8B\xCF"=>"\xE5\x9D\x87", + "\x8B\xD0"=>"\xE5\xB7\xBE", + "\x8B\xD1"=>"\xE9\x8C\xA6", + "\x8B\xD2"=>"\xE6\x96\xA4", + "\x8B\xD3"=>"\xE6\xAC\xA3", + "\x8B\xD4"=>"\xE6\xAC\xBD", + "\x8B\xD5"=>"\xE7\x90\xB4", + "\x8B\xD6"=>"\xE7\xA6\x81", + "\x8B\xD7"=>"\xE7\xA6\xBD", + "\x8B\xD8"=>"\xE7\xAD\x8B", + "\x8B\xD9"=>"\xE7\xB7\x8A", + "\x8B\xDA"=>"\xE8\x8A\xB9", + "\x8B\xDB"=>"\xE8\x8F\x8C", + "\x8B\xDC"=>"\xE8\xA1\xBF", + "\x8B\xDD"=>"\xE8\xA5\x9F", + "\x8B\xDE"=>"\xE8\xAC\xB9", + "\x8B\xDF"=>"\xE8\xBF\x91", + "\x8B\xE0"=>"\xE9\x87\x91", + "\x8B\xE1"=>"\xE5\x90\x9F", + "\x8B\xE2"=>"\xE9\x8A\x80", + "\x8B\xE3"=>"\xE4\xB9\x9D", + "\x8B\xE4"=>"\xE5\x80\xB6", + "\x8B\xE5"=>"\xE5\x8F\xA5", + "\x8B\xE6"=>"\xE5\x8C\xBA", + "\x8B\xE7"=>"\xE7\x8B\x97", + "\x8B\xE8"=>"\xE7\x8E\x96", + "\x8B\xE9"=>"\xE7\x9F\xA9", + "\x8B\xEA"=>"\xE8\x8B\xA6", + "\x8B\xEB"=>"\xE8\xBA\xAF", + "\x8B\xEC"=>"\xE9\xA7\x86", + "\x8B\xED"=>"\xE9\xA7\x88", + "\x8B\xEE"=>"\xE9\xA7\x92", + "\x8B\xEF"=>"\xE5\x85\xB7", + "\x8B\xF0"=>"\xE6\x84\x9A", + "\x8B\xF1"=>"\xE8\x99\x9E", + "\x8B\xF2"=>"\xE5\x96\xB0", + "\x8B\xF3"=>"\xE7\xA9\xBA", + "\x8B\xF4"=>"\xE5\x81\xB6", + "\x8B\xF5"=>"\xE5\xAF\x93", + "\x8B\xF6"=>"\xE9\x81\x87", + "\x8B\xF7"=>"\xE9\x9A\x85", + "\x8B\xF8"=>"\xE4\xB8\xB2", + "\x8B\xF9"=>"\xE6\xAB\x9B", + "\x8B\xFA"=>"\xE9\x87\xA7", + "\x8B\xFB"=>"\xE5\xB1\x91", + "\x8B\xFC"=>"\xE5\xB1\x88", + "\x8C\x40"=>"\xE6\x8E\x98", + "\x8C\x41"=>"\xE7\xAA\x9F", + "\x8C\x42"=>"\xE6\xB2\x93", + "\x8C\x43"=>"\xE9\x9D\xB4", + "\x8C\x44"=>"\xE8\xBD\xA1", + "\x8C\x45"=>"\xE7\xAA\xAA", + "\x8C\x46"=>"\xE7\x86\x8A", + "\x8C\x47"=>"\xE9\x9A\x88", + "\x8C\x48"=>"\xE7\xB2\x82", + "\x8C\x49"=>"\xE6\xA0\x97", + "\x8C\x4A"=>"\xE7\xB9\xB0", + "\x8C\x4B"=>"\xE6\xA1\x91", + "\x8C\x4C"=>"\xE9\x8D\xAC", + "\x8C\x4D"=>"\xE5\x8B\xB2", + "\x8C\x4E"=>"\xE5\x90\x9B", + "\x8C\x4F"=>"\xE8\x96\xAB", + "\x8C\x50"=>"\xE8\xA8\x93", + "\x8C\x51"=>"\xE7\xBE\xA4", + "\x8C\x52"=>"\xE8\xBB\x8D", + "\x8C\x53"=>"\xE9\x83\xA1", + "\x8C\x54"=>"\xE5\x8D\xA6", + "\x8C\x55"=>"\xE8\xA2\x88", + "\x8C\x56"=>"\xE7\xA5\x81", + "\x8C\x57"=>"\xE4\xBF\x82", + "\x8C\x58"=>"\xE5\x82\xBE", + "\x8C\x59"=>"\xE5\x88\x91", + "\x8C\x5A"=>"\xE5\x85\x84", + "\x8C\x5B"=>"\xE5\x95\x93", + "\x8C\x5C"=>"\xE5\x9C\xAD", + "\x8C\x5D"=>"\xE7\x8F\xAA", + "\x8C\x5E"=>"\xE5\x9E\x8B", + "\x8C\x5F"=>"\xE5\xA5\x91", + "\x8C\x60"=>"\xE5\xBD\xA2", + "\x8C\x61"=>"\xE5\xBE\x84", + "\x8C\x62"=>"\xE6\x81\xB5", + "\x8C\x63"=>"\xE6\x85\xB6", + "\x8C\x64"=>"\xE6\x85\xA7", + "\x8C\x65"=>"\xE6\x86\xA9", + "\x8C\x66"=>"\xE6\x8E\xB2", + "\x8C\x67"=>"\xE6\x90\xBA", + "\x8C\x68"=>"\xE6\x95\xAC", + "\x8C\x69"=>"\xE6\x99\xAF", + "\x8C\x6A"=>"\xE6\xA1\x82", + "\x8C\x6B"=>"\xE6\xB8\x93", + "\x8C\x6C"=>"\xE7\x95\xA6", + "\x8C\x6D"=>"\xE7\xA8\xBD", + "\x8C\x6E"=>"\xE7\xB3\xBB", + "\x8C\x6F"=>"\xE7\xB5\x8C", + "\x8C\x70"=>"\xE7\xB6\x99", + "\x8C\x71"=>"\xE7\xB9\x8B", + "\x8C\x72"=>"\xE7\xBD\xAB", + "\x8C\x73"=>"\xE8\x8C\x8E", + "\x8C\x74"=>"\xE8\x8D\x8A", + "\x8C\x75"=>"\xE8\x9B\x8D", + "\x8C\x76"=>"\xE8\xA8\x88", + "\x8C\x77"=>"\xE8\xA9\xA3", + "\x8C\x78"=>"\xE8\xAD\xA6", + "\x8C\x79"=>"\xE8\xBB\xBD", + "\x8C\x7A"=>"\xE9\xA0\x9A", + "\x8C\x7B"=>"\xE9\xB6\x8F", + "\x8C\x7C"=>"\xE8\x8A\xB8", + "\x8C\x7D"=>"\xE8\xBF\x8E", + "\x8C\x7E"=>"\xE9\xAF\xA8", + "\x8C\x80"=>"\xE5\x8A\x87", + "\x8C\x81"=>"\xE6\x88\x9F", + "\x8C\x82"=>"\xE6\x92\x83", + "\x8C\x83"=>"\xE6\xBF\x80", + "\x8C\x84"=>"\xE9\x9A\x99", + "\x8C\x85"=>"\xE6\xA1\x81", + "\x8C\x86"=>"\xE5\x82\x91", + "\x8C\x87"=>"\xE6\xAC\xA0", + "\x8C\x88"=>"\xE6\xB1\xBA", + "\x8C\x89"=>"\xE6\xBD\x94", + "\x8C\x8A"=>"\xE7\xA9\xB4", + "\x8C\x8B"=>"\xE7\xB5\x90", + "\x8C\x8C"=>"\xE8\xA1\x80", + "\x8C\x8D"=>"\xE8\xA8\xA3", + "\x8C\x8E"=>"\xE6\x9C\x88", + "\x8C\x8F"=>"\xE4\xBB\xB6", + "\x8C\x90"=>"\xE5\x80\xB9", + "\x8C\x91"=>"\xE5\x80\xA6", + "\x8C\x92"=>"\xE5\x81\xA5", + "\x8C\x93"=>"\xE5\x85\xBC", + "\x8C\x94"=>"\xE5\x88\xB8", + "\x8C\x95"=>"\xE5\x89\xA3", + "\x8C\x96"=>"\xE5\x96\xA7", + "\x8C\x97"=>"\xE5\x9C\x8F", + "\x8C\x98"=>"\xE5\xA0\x85", + "\x8C\x99"=>"\xE5\xAB\x8C", + "\x8C\x9A"=>"\xE5\xBB\xBA", + "\x8C\x9B"=>"\xE6\x86\xB2", + "\x8C\x9C"=>"\xE6\x87\xB8", + "\x8C\x9D"=>"\xE6\x8B\xB3", + "\x8C\x9E"=>"\xE6\x8D\xB2", + "\x8C\x9F"=>"\xE6\xA4\x9C", + "\x8C\xA0"=>"\xE6\xA8\xA9", + "\x8C\xA1"=>"\xE7\x89\xBD", + "\x8C\xA2"=>"\xE7\x8A\xAC", + "\x8C\xA3"=>"\xE7\x8C\xAE", + "\x8C\xA4"=>"\xE7\xA0\x94", + "\x8C\xA5"=>"\xE7\xA1\xAF", + "\x8C\xA6"=>"\xE7\xB5\xB9", + "\x8C\xA7"=>"\xE7\x9C\x8C", + "\x8C\xA8"=>"\xE8\x82\xA9", + "\x8C\xA9"=>"\xE8\xA6\x8B", + "\x8C\xAA"=>"\xE8\xAC\x99", + "\x8C\xAB"=>"\xE8\xB3\xA2", + "\x8C\xAC"=>"\xE8\xBB\x92", + "\x8C\xAD"=>"\xE9\x81\xA3", + "\x8C\xAE"=>"\xE9\x8D\xB5", + "\x8C\xAF"=>"\xE9\x99\xBA", + "\x8C\xB0"=>"\xE9\xA1\x95", + "\x8C\xB1"=>"\xE9\xA8\x93", + "\x8C\xB2"=>"\xE9\xB9\xB8", + "\x8C\xB3"=>"\xE5\x85\x83", + "\x8C\xB4"=>"\xE5\x8E\x9F", + "\x8C\xB5"=>"\xE5\x8E\xB3", + "\x8C\xB6"=>"\xE5\xB9\xBB", + "\x8C\xB7"=>"\xE5\xBC\xA6", + "\x8C\xB8"=>"\xE6\xB8\x9B", + "\x8C\xB9"=>"\xE6\xBA\x90", + "\x8C\xBA"=>"\xE7\x8E\x84", + "\x8C\xBB"=>"\xE7\x8F\xBE", + "\x8C\xBC"=>"\xE7\xB5\x83", + "\x8C\xBD"=>"\xE8\x88\xB7", + "\x8C\xBE"=>"\xE8\xA8\x80", + "\x8C\xBF"=>"\xE8\xAB\xBA", + "\x8C\xC0"=>"\xE9\x99\x90", + "\x8C\xC1"=>"\xE4\xB9\x8E", + "\x8C\xC2"=>"\xE5\x80\x8B", + "\x8C\xC3"=>"\xE5\x8F\xA4", + "\x8C\xC4"=>"\xE5\x91\xBC", + "\x8C\xC5"=>"\xE5\x9B\xBA", + "\x8C\xC6"=>"\xE5\xA7\x91", + "\x8C\xC7"=>"\xE5\xAD\xA4", + "\x8C\xC8"=>"\xE5\xB7\xB1", + "\x8C\xC9"=>"\xE5\xBA\xAB", + "\x8C\xCA"=>"\xE5\xBC\xA7", + "\x8C\xCB"=>"\xE6\x88\xB8", + "\x8C\xCC"=>"\xE6\x95\x85", + "\x8C\xCD"=>"\xE6\x9E\xAF", + "\x8C\xCE"=>"\xE6\xB9\x96", + "\x8C\xCF"=>"\xE7\x8B\x90", + "\x8C\xD0"=>"\xE7\xB3\x8A", + "\x8C\xD1"=>"\xE8\xA2\xB4", + "\x8C\xD2"=>"\xE8\x82\xA1", + "\x8C\xD3"=>"\xE8\x83\xA1", + "\x8C\xD4"=>"\xE8\x8F\xB0", + "\x8C\xD5"=>"\xE8\x99\x8E", + "\x8C\xD6"=>"\xE8\xAA\x87", + "\x8C\xD7"=>"\xE8\xB7\xA8", + "\x8C\xD8"=>"\xE9\x88\xB7", + "\x8C\xD9"=>"\xE9\x9B\x87", + "\x8C\xDA"=>"\xE9\xA1\xA7", + "\x8C\xDB"=>"\xE9\xBC\x93", + "\x8C\xDC"=>"\xE4\xBA\x94", + "\x8C\xDD"=>"\xE4\xBA\x92", + "\x8C\xDE"=>"\xE4\xBC\x8D", + "\x8C\xDF"=>"\xE5\x8D\x88", + "\x8C\xE0"=>"\xE5\x91\x89", + "\x8C\xE1"=>"\xE5\x90\xBE", + "\x8C\xE2"=>"\xE5\xA8\xAF", + "\x8C\xE3"=>"\xE5\xBE\x8C", + "\x8C\xE4"=>"\xE5\xBE\xA1", + "\x8C\xE5"=>"\xE6\x82\x9F", + "\x8C\xE6"=>"\xE6\xA2\xA7", + "\x8C\xE7"=>"\xE6\xAA\x8E", + "\x8C\xE8"=>"\xE7\x91\x9A", + "\x8C\xE9"=>"\xE7\xA2\x81", + "\x8C\xEA"=>"\xE8\xAA\x9E", + "\x8C\xEB"=>"\xE8\xAA\xA4", + "\x8C\xEC"=>"\xE8\xAD\xB7", + "\x8C\xED"=>"\xE9\x86\x90", + "\x8C\xEE"=>"\xE4\xB9\x9E", + "\x8C\xEF"=>"\xE9\xAF\x89", + "\x8C\xF0"=>"\xE4\xBA\xA4", + "\x8C\xF1"=>"\xE4\xBD\xBC", + "\x8C\xF2"=>"\xE4\xBE\xAF", + "\x8C\xF3"=>"\xE5\x80\x99", + "\x8C\xF4"=>"\xE5\x80\x96", + "\x8C\xF5"=>"\xE5\x85\x89", + "\x8C\xF6"=>"\xE5\x85\xAC", + "\x8C\xF7"=>"\xE5\x8A\x9F", + "\x8C\xF8"=>"\xE5\x8A\xB9", + "\x8C\xF9"=>"\xE5\x8B\xBE", + "\x8C\xFA"=>"\xE5\x8E\x9A", + "\x8C\xFB"=>"\xE5\x8F\xA3", + "\x8C\xFC"=>"\xE5\x90\x91", + "\x8D\x40"=>"\xE5\x90\x8E", + "\x8D\x41"=>"\xE5\x96\x89", + "\x8D\x42"=>"\xE5\x9D\x91", + "\x8D\x43"=>"\xE5\x9E\xA2", + "\x8D\x44"=>"\xE5\xA5\xBD", + "\x8D\x45"=>"\xE5\xAD\x94", + "\x8D\x46"=>"\xE5\xAD\x9D", + "\x8D\x47"=>"\xE5\xAE\x8F", + "\x8D\x48"=>"\xE5\xB7\xA5", + "\x8D\x49"=>"\xE5\xB7\xA7", + "\x8D\x4A"=>"\xE5\xB7\xB7", + "\x8D\x4B"=>"\xE5\xB9\xB8", + "\x8D\x4C"=>"\xE5\xBA\x83", + "\x8D\x4D"=>"\xE5\xBA\x9A", + "\x8D\x4E"=>"\xE5\xBA\xB7", + "\x8D\x4F"=>"\xE5\xBC\x98", + "\x8D\x50"=>"\xE6\x81\x92", + "\x8D\x51"=>"\xE6\x85\x8C", + "\x8D\x52"=>"\xE6\x8A\x97", + "\x8D\x53"=>"\xE6\x8B\x98", + "\x8D\x54"=>"\xE6\x8E\xA7", + "\x8D\x55"=>"\xE6\x94\xBB", + "\x8D\x56"=>"\xE6\x98\x82", + "\x8D\x57"=>"\xE6\x99\x83", + "\x8D\x58"=>"\xE6\x9B\xB4", + "\x8D\x59"=>"\xE6\x9D\xAD", + "\x8D\x5A"=>"\xE6\xA0\xA1", + "\x8D\x5B"=>"\xE6\xA2\x97", + "\x8D\x5C"=>"\xE6\xA7\x8B", + "\x8D\x5D"=>"\xE6\xB1\x9F", + "\x8D\x5E"=>"\xE6\xB4\xAA", + "\x8D\x5F"=>"\xE6\xB5\xA9", + "\x8D\x60"=>"\xE6\xB8\xAF", + "\x8D\x61"=>"\xE6\xBA\x9D", + "\x8D\x62"=>"\xE7\x94\xB2", + "\x8D\x63"=>"\xE7\x9A\x87", + "\x8D\x64"=>"\xE7\xA1\xAC", + "\x8D\x65"=>"\xE7\xA8\xBF", + "\x8D\x66"=>"\xE7\xB3\xA0", + "\x8D\x67"=>"\xE7\xB4\x85", + "\x8D\x68"=>"\xE7\xB4\x98", + "\x8D\x69"=>"\xE7\xB5\x9E", + "\x8D\x6A"=>"\xE7\xB6\xB1", + "\x8D\x6B"=>"\xE8\x80\x95", + "\x8D\x6C"=>"\xE8\x80\x83", + "\x8D\x6D"=>"\xE8\x82\xAF", + "\x8D\x6E"=>"\xE8\x82\xB1", + "\x8D\x6F"=>"\xE8\x85\x94", + "\x8D\x70"=>"\xE8\x86\x8F", + "\x8D\x71"=>"\xE8\x88\xAA", + "\x8D\x72"=>"\xE8\x8D\x92", + "\x8D\x73"=>"\xE8\xA1\x8C", + "\x8D\x74"=>"\xE8\xA1\xA1", + "\x8D\x75"=>"\xE8\xAC\x9B", + "\x8D\x76"=>"\xE8\xB2\xA2", + "\x8D\x77"=>"\xE8\xB3\xBC", + "\x8D\x78"=>"\xE9\x83\x8A", + "\x8D\x79"=>"\xE9\x85\xB5", + "\x8D\x7A"=>"\xE9\x89\xB1", + "\x8D\x7B"=>"\xE7\xA0\xBF", + "\x8D\x7C"=>"\xE9\x8B\xBC", + "\x8D\x7D"=>"\xE9\x96\xA4", + "\x8D\x7E"=>"\xE9\x99\x8D", + "\x8D\x80"=>"\xE9\xA0\x85", + "\x8D\x81"=>"\xE9\xA6\x99", + "\x8D\x82"=>"\xE9\xAB\x98", + "\x8D\x83"=>"\xE9\xB4\xBB", + "\x8D\x84"=>"\xE5\x89\x9B", + "\x8D\x85"=>"\xE5\x8A\xAB", + "\x8D\x86"=>"\xE5\x8F\xB7", + "\x8D\x87"=>"\xE5\x90\x88", + "\x8D\x88"=>"\xE5\xA3\x95", + "\x8D\x89"=>"\xE6\x8B\xB7", + "\x8D\x8A"=>"\xE6\xBF\xA0", + "\x8D\x8B"=>"\xE8\xB1\xAA", + "\x8D\x8C"=>"\xE8\xBD\x9F", + "\x8D\x8D"=>"\xE9\xBA\xB9", + "\x8D\x8E"=>"\xE5\x85\x8B", + "\x8D\x8F"=>"\xE5\x88\xBB", + "\x8D\x90"=>"\xE5\x91\x8A", + "\x8D\x91"=>"\xE5\x9B\xBD", + "\x8D\x92"=>"\xE7\xA9\x80", + "\x8D\x93"=>"\xE9\x85\xB7", + "\x8D\x94"=>"\xE9\xB5\xA0", + "\x8D\x95"=>"\xE9\xBB\x92", + "\x8D\x96"=>"\xE7\x8D\x84", + "\x8D\x97"=>"\xE6\xBC\x89", + "\x8D\x98"=>"\xE8\x85\xB0", + "\x8D\x99"=>"\xE7\x94\x91", + "\x8D\x9A"=>"\xE5\xBF\xBD", + "\x8D\x9B"=>"\xE6\x83\x9A", + "\x8D\x9C"=>"\xE9\xAA\xA8", + "\x8D\x9D"=>"\xE7\x8B\x9B", + "\x8D\x9E"=>"\xE8\xBE\xBC", + "\x8D\x9F"=>"\xE6\xAD\xA4", + "\x8D\xA0"=>"\xE9\xA0\x83", + "\x8D\xA1"=>"\xE4\xBB\x8A", + "\x8D\xA2"=>"\xE5\x9B\xB0", + "\x8D\xA3"=>"\xE5\x9D\xA4", + "\x8D\xA4"=>"\xE5\xA2\xBE", + "\x8D\xA5"=>"\xE5\xA9\x9A", + "\x8D\xA6"=>"\xE6\x81\xA8", + "\x8D\xA7"=>"\xE6\x87\x87", + "\x8D\xA8"=>"\xE6\x98\x8F", + "\x8D\xA9"=>"\xE6\x98\x86", + "\x8D\xAA"=>"\xE6\xA0\xB9", + "\x8D\xAB"=>"\xE6\xA2\xB1", + "\x8D\xAC"=>"\xE6\xB7\xB7", + "\x8D\xAD"=>"\xE7\x97\x95", + "\x8D\xAE"=>"\xE7\xB4\xBA", + "\x8D\xAF"=>"\xE8\x89\xAE", + "\x8D\xB0"=>"\xE9\xAD\x82", + "\x8D\xB1"=>"\xE4\xBA\x9B", + "\x8D\xB2"=>"\xE4\xBD\x90", + "\x8D\xB3"=>"\xE5\x8F\x89", + "\x8D\xB4"=>"\xE5\x94\x86", + "\x8D\xB5"=>"\xE5\xB5\xAF", + "\x8D\xB6"=>"\xE5\xB7\xA6", + "\x8D\xB7"=>"\xE5\xB7\xAE", + "\x8D\xB8"=>"\xE6\x9F\xBB", + "\x8D\xB9"=>"\xE6\xB2\x99", + "\x8D\xBA"=>"\xE7\x91\xB3", + "\x8D\xBB"=>"\xE7\xA0\x82", + "\x8D\xBC"=>"\xE8\xA9\x90", + "\x8D\xBD"=>"\xE9\x8E\x96", + "\x8D\xBE"=>"\xE8\xA3\x9F", + "\x8D\xBF"=>"\xE5\x9D\x90", + "\x8D\xC0"=>"\xE5\xBA\xA7", + "\x8D\xC1"=>"\xE6\x8C\xAB", + "\x8D\xC2"=>"\xE5\x82\xB5", + "\x8D\xC3"=>"\xE5\x82\xAC", + "\x8D\xC4"=>"\xE5\x86\x8D", + "\x8D\xC5"=>"\xE6\x9C\x80", + "\x8D\xC6"=>"\xE5\x93\x89", + "\x8D\xC7"=>"\xE5\xA1\x9E", + "\x8D\xC8"=>"\xE5\xA6\xBB", + "\x8D\xC9"=>"\xE5\xAE\xB0", + "\x8D\xCA"=>"\xE5\xBD\xA9", + "\x8D\xCB"=>"\xE6\x89\x8D", + "\x8D\xCC"=>"\xE6\x8E\xA1", + "\x8D\xCD"=>"\xE6\xA0\xBD", + "\x8D\xCE"=>"\xE6\xAD\xB3", + "\x8D\xCF"=>"\xE6\xB8\x88", + "\x8D\xD0"=>"\xE7\x81\xBD", + "\x8D\xD1"=>"\xE9\x87\x87", + "\x8D\xD2"=>"\xE7\x8A\x80", + "\x8D\xD3"=>"\xE7\xA0\x95", + "\x8D\xD4"=>"\xE7\xA0\xA6", + "\x8D\xD5"=>"\xE7\xA5\xAD", + "\x8D\xD6"=>"\xE6\x96\x8E", + "\x8D\xD7"=>"\xE7\xB4\xB0", + "\x8D\xD8"=>"\xE8\x8F\x9C", + "\x8D\xD9"=>"\xE8\xA3\x81", + "\x8D\xDA"=>"\xE8\xBC\x89", + "\x8D\xDB"=>"\xE9\x9A\x9B", + "\x8D\xDC"=>"\xE5\x89\xA4", + "\x8D\xDD"=>"\xE5\x9C\xA8", + "\x8D\xDE"=>"\xE6\x9D\x90", + "\x8D\xDF"=>"\xE7\xBD\xAA", + "\x8D\xE0"=>"\xE8\xB2\xA1", + "\x8D\xE1"=>"\xE5\x86\xB4", + "\x8D\xE2"=>"\xE5\x9D\x82", + "\x8D\xE3"=>"\xE9\x98\xAA", + "\x8D\xE4"=>"\xE5\xA0\xBA", + "\x8D\xE5"=>"\xE6\xA6\x8A", + "\x8D\xE6"=>"\xE8\x82\xB4", + "\x8D\xE7"=>"\xE5\x92\xB2", + "\x8D\xE8"=>"\xE5\xB4\x8E", + "\x8D\xE9"=>"\xE5\x9F\xBC", + "\x8D\xEA"=>"\xE7\xA2\x95", + "\x8D\xEB"=>"\xE9\xB7\xBA", + "\x8D\xEC"=>"\xE4\xBD\x9C", + "\x8D\xED"=>"\xE5\x89\x8A", + "\x8D\xEE"=>"\xE5\x92\x8B", + "\x8D\xEF"=>"\xE6\x90\xBE", + "\x8D\xF0"=>"\xE6\x98\xA8", + "\x8D\xF1"=>"\xE6\x9C\x94", + "\x8D\xF2"=>"\xE6\x9F\xB5", + "\x8D\xF3"=>"\xE7\xAA\x84", + "\x8D\xF4"=>"\xE7\xAD\x96", + "\x8D\xF5"=>"\xE7\xB4\xA2", + "\x8D\xF6"=>"\xE9\x8C\xAF", + "\x8D\xF7"=>"\xE6\xA1\x9C", + "\x8D\xF8"=>"\xE9\xAE\xAD", + "\x8D\xF9"=>"\xE7\xAC\xB9", + "\x8D\xFA"=>"\xE5\x8C\x99", + "\x8D\xFB"=>"\xE5\x86\x8A", + "\x8D\xFC"=>"\xE5\x88\xB7", + "\x8E\x40"=>"\xE5\xAF\x9F", + "\x8E\x41"=>"\xE6\x8B\xB6", + "\x8E\x42"=>"\xE6\x92\xAE", + "\x8E\x43"=>"\xE6\x93\xA6", + "\x8E\x44"=>"\xE6\x9C\xAD", + "\x8E\x45"=>"\xE6\xAE\xBA", + "\x8E\x46"=>"\xE8\x96\xA9", + "\x8E\x47"=>"\xE9\x9B\x91", + "\x8E\x48"=>"\xE7\x9A\x90", + "\x8E\x49"=>"\xE9\xAF\x96", + "\x8E\x4A"=>"\xE6\x8D\x8C", + "\x8E\x4B"=>"\xE9\x8C\x86", + "\x8E\x4C"=>"\xE9\xAE\xAB", + "\x8E\x4D"=>"\xE7\x9A\xBF", + "\x8E\x4E"=>"\xE6\x99\x92", + "\x8E\x4F"=>"\xE4\xB8\x89", + "\x8E\x50"=>"\xE5\x82\x98", + "\x8E\x51"=>"\xE5\x8F\x82", + "\x8E\x52"=>"\xE5\xB1\xB1", + "\x8E\x53"=>"\xE6\x83\xA8", + "\x8E\x54"=>"\xE6\x92\x92", + "\x8E\x55"=>"\xE6\x95\xA3", + "\x8E\x56"=>"\xE6\xA1\x9F", + "\x8E\x57"=>"\xE7\x87\xA6", + "\x8E\x58"=>"\xE7\x8F\x8A", + "\x8E\x59"=>"\xE7\x94\xA3", + "\x8E\x5A"=>"\xE7\xAE\x97", + "\x8E\x5B"=>"\xE7\xBA\x82", + "\x8E\x5C"=>"\xE8\x9A\x95", + "\x8E\x5D"=>"\xE8\xAE\x83", + "\x8E\x5E"=>"\xE8\xB3\x9B", + "\x8E\x5F"=>"\xE9\x85\xB8", + "\x8E\x60"=>"\xE9\xA4\x90", + "\x8E\x61"=>"\xE6\x96\xAC", + "\x8E\x62"=>"\xE6\x9A\xAB", + "\x8E\x63"=>"\xE6\xAE\x8B", + "\x8E\x64"=>"\xE4\xBB\x95", + "\x8E\x65"=>"\xE4\xBB\x94", + "\x8E\x66"=>"\xE4\xBC\xBA", + "\x8E\x67"=>"\xE4\xBD\xBF", + "\x8E\x68"=>"\xE5\x88\xBA", + "\x8E\x69"=>"\xE5\x8F\xB8", + "\x8E\x6A"=>"\xE5\x8F\xB2", + "\x8E\x6B"=>"\xE5\x97\xA3", + "\x8E\x6C"=>"\xE5\x9B\x9B", + "\x8E\x6D"=>"\xE5\xA3\xAB", + "\x8E\x6E"=>"\xE5\xA7\x8B", + "\x8E\x6F"=>"\xE5\xA7\x89", + "\x8E\x70"=>"\xE5\xA7\xBF", + "\x8E\x71"=>"\xE5\xAD\x90", + "\x8E\x72"=>"\xE5\xB1\x8D", + "\x8E\x73"=>"\xE5\xB8\x82", + "\x8E\x74"=>"\xE5\xB8\xAB", + "\x8E\x75"=>"\xE5\xBF\x97", + "\x8E\x76"=>"\xE6\x80\x9D", + "\x8E\x77"=>"\xE6\x8C\x87", + "\x8E\x78"=>"\xE6\x94\xAF", + "\x8E\x79"=>"\xE5\xAD\x9C", + "\x8E\x7A"=>"\xE6\x96\xAF", + "\x8E\x7B"=>"\xE6\x96\xBD", + "\x8E\x7C"=>"\xE6\x97\xA8", + "\x8E\x7D"=>"\xE6\x9E\x9D", + "\x8E\x7E"=>"\xE6\xAD\xA2", + "\x8E\x80"=>"\xE6\xAD\xBB", + "\x8E\x81"=>"\xE6\xB0\x8F", + "\x8E\x82"=>"\xE7\x8D\x85", + "\x8E\x83"=>"\xE7\xA5\x89", + "\x8E\x84"=>"\xE7\xA7\x81", + "\x8E\x85"=>"\xE7\xB3\xB8", + "\x8E\x86"=>"\xE7\xB4\x99", + "\x8E\x87"=>"\xE7\xB4\xAB", + "\x8E\x88"=>"\xE8\x82\xA2", + "\x8E\x89"=>"\xE8\x84\x82", + "\x8E\x8A"=>"\xE8\x87\xB3", + "\x8E\x8B"=>"\xE8\xA6\x96", + "\x8E\x8C"=>"\xE8\xA9\x9E", + "\x8E\x8D"=>"\xE8\xA9\xA9", + "\x8E\x8E"=>"\xE8\xA9\xA6", + "\x8E\x8F"=>"\xE8\xAA\x8C", + "\x8E\x90"=>"\xE8\xAB\xAE", + "\x8E\x91"=>"\xE8\xB3\x87", + "\x8E\x92"=>"\xE8\xB3\x9C", + "\x8E\x93"=>"\xE9\x9B\x8C", + "\x8E\x94"=>"\xE9\xA3\xBC", + "\x8E\x95"=>"\xE6\xAD\xAF", + "\x8E\x96"=>"\xE4\xBA\x8B", + "\x8E\x97"=>"\xE4\xBC\xBC", + "\x8E\x98"=>"\xE4\xBE\x8D", + "\x8E\x99"=>"\xE5\x85\x90", + "\x8E\x9A"=>"\xE5\xAD\x97", + "\x8E\x9B"=>"\xE5\xAF\xBA", + "\x8E\x9C"=>"\xE6\x85\x88", + "\x8E\x9D"=>"\xE6\x8C\x81", + "\x8E\x9E"=>"\xE6\x99\x82", + "\x8E\x9F"=>"\xE6\xAC\xA1", + "\x8E\xA0"=>"\xE6\xBB\x8B", + "\x8E\xA1"=>"\xE6\xB2\xBB", + "\x8E\xA2"=>"\xE7\x88\xBE", + "\x8E\xA3"=>"\xE7\x92\xBD", + "\x8E\xA4"=>"\xE7\x97\x94", + "\x8E\xA5"=>"\xE7\xA3\x81", + "\x8E\xA6"=>"\xE7\xA4\xBA", + "\x8E\xA7"=>"\xE8\x80\x8C", + "\x8E\xA8"=>"\xE8\x80\xB3", + "\x8E\xA9"=>"\xE8\x87\xAA", + "\x8E\xAA"=>"\xE8\x92\x94", + "\x8E\xAB"=>"\xE8\xBE\x9E", + "\x8E\xAC"=>"\xE6\xB1\x90", + "\x8E\xAD"=>"\xE9\xB9\xBF", + "\x8E\xAE"=>"\xE5\xBC\x8F", + "\x8E\xAF"=>"\xE8\xAD\x98", + "\x8E\xB0"=>"\xE9\xB4\xAB", + "\x8E\xB1"=>"\xE7\xAB\xBA", + "\x8E\xB2"=>"\xE8\xBB\xB8", + "\x8E\xB3"=>"\xE5\xAE\x8D", + "\x8E\xB4"=>"\xE9\x9B\xAB", + "\x8E\xB5"=>"\xE4\xB8\x83", + "\x8E\xB6"=>"\xE5\x8F\xB1", + "\x8E\xB7"=>"\xE5\x9F\xB7", + "\x8E\xB8"=>"\xE5\xA4\xB1", + "\x8E\xB9"=>"\xE5\xAB\x89", + "\x8E\xBA"=>"\xE5\xAE\xA4", + "\x8E\xBB"=>"\xE6\x82\x89", + "\x8E\xBC"=>"\xE6\xB9\xBF", + "\x8E\xBD"=>"\xE6\xBC\x86", + "\x8E\xBE"=>"\xE7\x96\xBE", + "\x8E\xBF"=>"\xE8\xB3\xAA", + "\x8E\xC0"=>"\xE5\xAE\x9F", + "\x8E\xC1"=>"\xE8\x94\x80", + "\x8E\xC2"=>"\xE7\xAF\xA0", + "\x8E\xC3"=>"\xE5\x81\xB2", + "\x8E\xC4"=>"\xE6\x9F\xB4", + "\x8E\xC5"=>"\xE8\x8A\x9D", + "\x8E\xC6"=>"\xE5\xB1\xA1", + "\x8E\xC7"=>"\xE8\x95\x8A", + "\x8E\xC8"=>"\xE7\xB8\x9E", + "\x8E\xC9"=>"\xE8\x88\x8E", + "\x8E\xCA"=>"\xE5\x86\x99", + "\x8E\xCB"=>"\xE5\xB0\x84", + "\x8E\xCC"=>"\xE6\x8D\xA8", + "\x8E\xCD"=>"\xE8\xB5\xA6", + "\x8E\xCE"=>"\xE6\x96\x9C", + "\x8E\xCF"=>"\xE7\x85\xAE", + "\x8E\xD0"=>"\xE7\xA4\xBE", + "\x8E\xD1"=>"\xE7\xB4\x97", + "\x8E\xD2"=>"\xE8\x80\x85", + "\x8E\xD3"=>"\xE8\xAC\x9D", + "\x8E\xD4"=>"\xE8\xBB\x8A", + "\x8E\xD5"=>"\xE9\x81\xAE", + "\x8E\xD6"=>"\xE8\x9B\x87", + "\x8E\xD7"=>"\xE9\x82\xAA", + "\x8E\xD8"=>"\xE5\x80\x9F", + "\x8E\xD9"=>"\xE5\x8B\xBA", + "\x8E\xDA"=>"\xE5\xB0\xBA", + "\x8E\xDB"=>"\xE6\x9D\x93", + "\x8E\xDC"=>"\xE7\x81\xBC", + "\x8E\xDD"=>"\xE7\x88\xB5", + "\x8E\xDE"=>"\xE9\x85\x8C", + "\x8E\xDF"=>"\xE9\x87\x88", + "\x8E\xE0"=>"\xE9\x8C\xAB", + "\x8E\xE1"=>"\xE8\x8B\xA5", + "\x8E\xE2"=>"\xE5\xAF\x82", + "\x8E\xE3"=>"\xE5\xBC\xB1", + "\x8E\xE4"=>"\xE6\x83\xB9", + "\x8E\xE5"=>"\xE4\xB8\xBB", + "\x8E\xE6"=>"\xE5\x8F\x96", + "\x8E\xE7"=>"\xE5\xAE\x88", + "\x8E\xE8"=>"\xE6\x89\x8B", + "\x8E\xE9"=>"\xE6\x9C\xB1", + "\x8E\xEA"=>"\xE6\xAE\x8A", + "\x8E\xEB"=>"\xE7\x8B\xA9", + "\x8E\xEC"=>"\xE7\x8F\xA0", + "\x8E\xED"=>"\xE7\xA8\xAE", + "\x8E\xEE"=>"\xE8\x85\xAB", + "\x8E\xEF"=>"\xE8\xB6\xA3", + "\x8E\xF0"=>"\xE9\x85\x92", + "\x8E\xF1"=>"\xE9\xA6\x96", + "\x8E\xF2"=>"\xE5\x84\x92", + "\x8E\xF3"=>"\xE5\x8F\x97", + "\x8E\xF4"=>"\xE5\x91\xAA", + "\x8E\xF5"=>"\xE5\xAF\xBF", + "\x8E\xF6"=>"\xE6\x8E\x88", + "\x8E\xF7"=>"\xE6\xA8\xB9", + "\x8E\xF8"=>"\xE7\xB6\xAC", + "\x8E\xF9"=>"\xE9\x9C\x80", + "\x8E\xFA"=>"\xE5\x9B\x9A", + "\x8E\xFB"=>"\xE5\x8F\x8E", + "\x8E\xFC"=>"\xE5\x91\xA8", + "\x8F\x40"=>"\xE5\xAE\x97", + "\x8F\x41"=>"\xE5\xB0\xB1", + "\x8F\x42"=>"\xE5\xB7\x9E", + "\x8F\x43"=>"\xE4\xBF\xAE", + "\x8F\x44"=>"\xE6\x84\x81", + "\x8F\x45"=>"\xE6\x8B\xBE", + "\x8F\x46"=>"\xE6\xB4\xB2", + "\x8F\x47"=>"\xE7\xA7\x80", + "\x8F\x48"=>"\xE7\xA7\x8B", + "\x8F\x49"=>"\xE7\xB5\x82", + "\x8F\x4A"=>"\xE7\xB9\x8D", + "\x8F\x4B"=>"\xE7\xBF\x92", + "\x8F\x4C"=>"\xE8\x87\xAD", + "\x8F\x4D"=>"\xE8\x88\x9F", + "\x8F\x4E"=>"\xE8\x92\x90", + "\x8F\x4F"=>"\xE8\xA1\x86", + "\x8F\x50"=>"\xE8\xA5\xB2", + "\x8F\x51"=>"\xE8\xAE\x90", + "\x8F\x52"=>"\xE8\xB9\xB4", + "\x8F\x53"=>"\xE8\xBC\xAF", + "\x8F\x54"=>"\xE9\x80\xB1", + "\x8F\x55"=>"\xE9\x85\x8B", + "\x8F\x56"=>"\xE9\x85\xAC", + "\x8F\x57"=>"\xE9\x9B\x86", + "\x8F\x58"=>"\xE9\x86\x9C", + "\x8F\x59"=>"\xE4\xBB\x80", + "\x8F\x5A"=>"\xE4\xBD\x8F", + "\x8F\x5B"=>"\xE5\x85\x85", + "\x8F\x5C"=>"\xE5\x8D\x81", + "\x8F\x5D"=>"\xE5\xBE\x93", + "\x8F\x5E"=>"\xE6\x88\x8E", + "\x8F\x5F"=>"\xE6\x9F\x94", + "\x8F\x60"=>"\xE6\xB1\x81", + "\x8F\x61"=>"\xE6\xB8\x8B", + "\x8F\x62"=>"\xE7\x8D\xA3", + "\x8F\x63"=>"\xE7\xB8\xA6", + "\x8F\x64"=>"\xE9\x87\x8D", + "\x8F\x65"=>"\xE9\x8A\x83", + "\x8F\x66"=>"\xE5\x8F\x94", + "\x8F\x67"=>"\xE5\xA4\x99", + "\x8F\x68"=>"\xE5\xAE\xBF", + "\x8F\x69"=>"\xE6\xB7\x91", + "\x8F\x6A"=>"\xE7\xA5\x9D", + "\x8F\x6B"=>"\xE7\xB8\xAE", + "\x8F\x6C"=>"\xE7\xB2\x9B", + "\x8F\x6D"=>"\xE5\xA1\xBE", + "\x8F\x6E"=>"\xE7\x86\x9F", + "\x8F\x6F"=>"\xE5\x87\xBA", + "\x8F\x70"=>"\xE8\xA1\x93", + "\x8F\x71"=>"\xE8\xBF\xB0", + "\x8F\x72"=>"\xE4\xBF\x8A", + "\x8F\x73"=>"\xE5\xB3\xBB", + "\x8F\x74"=>"\xE6\x98\xA5", + "\x8F\x75"=>"\xE7\x9E\xAC", + "\x8F\x76"=>"\xE7\xAB\xA3", + "\x8F\x77"=>"\xE8\x88\x9C", + "\x8F\x78"=>"\xE9\xA7\xBF", + "\x8F\x79"=>"\xE5\x87\x86", + "\x8F\x7A"=>"\xE5\xBE\xAA", + "\x8F\x7B"=>"\xE6\x97\xAC", + "\x8F\x7C"=>"\xE6\xA5\xAF", + "\x8F\x7D"=>"\xE6\xAE\x89", + "\x8F\x7E"=>"\xE6\xB7\xB3", + "\x8F\x80"=>"\xE6\xBA\x96", + "\x8F\x81"=>"\xE6\xBD\xA4", + "\x8F\x82"=>"\xE7\x9B\xBE", + "\x8F\x83"=>"\xE7\xB4\x94", + "\x8F\x84"=>"\xE5\xB7\xA1", + "\x8F\x85"=>"\xE9\x81\xB5", + "\x8F\x86"=>"\xE9\x86\x87", + "\x8F\x87"=>"\xE9\xA0\x86", + "\x8F\x88"=>"\xE5\x87\xA6", + "\x8F\x89"=>"\xE5\x88\x9D", + "\x8F\x8A"=>"\xE6\x89\x80", + "\x8F\x8B"=>"\xE6\x9A\x91", + "\x8F\x8C"=>"\xE6\x9B\x99", + "\x8F\x8D"=>"\xE6\xB8\x9A", + "\x8F\x8E"=>"\xE5\xBA\xB6", + "\x8F\x8F"=>"\xE7\xB7\x92", + "\x8F\x90"=>"\xE7\xBD\xB2", + "\x8F\x91"=>"\xE6\x9B\xB8", + "\x8F\x92"=>"\xE8\x96\xAF", + "\x8F\x93"=>"\xE8\x97\xB7", + "\x8F\x94"=>"\xE8\xAB\xB8", + "\x8F\x95"=>"\xE5\x8A\xA9", + "\x8F\x96"=>"\xE5\x8F\x99", + "\x8F\x97"=>"\xE5\xA5\xB3", + "\x8F\x98"=>"\xE5\xBA\x8F", + "\x8F\x99"=>"\xE5\xBE\x90", + "\x8F\x9A"=>"\xE6\x81\x95", + "\x8F\x9B"=>"\xE9\x8B\xA4", + "\x8F\x9C"=>"\xE9\x99\xA4", + "\x8F\x9D"=>"\xE5\x82\xB7", + "\x8F\x9E"=>"\xE5\x84\x9F", + "\x8F\x9F"=>"\xE5\x8B\x9D", + "\x8F\xA0"=>"\xE5\x8C\xA0", + "\x8F\xA1"=>"\xE5\x8D\x87", + "\x8F\xA2"=>"\xE5\x8F\xAC", + "\x8F\xA3"=>"\xE5\x93\xA8", + "\x8F\xA4"=>"\xE5\x95\x86", + "\x8F\xA5"=>"\xE5\x94\xB1", + "\x8F\xA6"=>"\xE5\x98\x97", + "\x8F\xA7"=>"\xE5\xA5\xA8", + "\x8F\xA8"=>"\xE5\xA6\xBE", + "\x8F\xA9"=>"\xE5\xA8\xBC", + "\x8F\xAA"=>"\xE5\xAE\xB5", + "\x8F\xAB"=>"\xE5\xB0\x86", + "\x8F\xAC"=>"\xE5\xB0\x8F", + "\x8F\xAD"=>"\xE5\xB0\x91", + "\x8F\xAE"=>"\xE5\xB0\x9A", + "\x8F\xAF"=>"\xE5\xBA\x84", + "\x8F\xB0"=>"\xE5\xBA\x8A", + "\x8F\xB1"=>"\xE5\xBB\xA0", + "\x8F\xB2"=>"\xE5\xBD\xB0", + "\x8F\xB3"=>"\xE6\x89\xBF", + "\x8F\xB4"=>"\xE6\x8A\x84", + "\x8F\xB5"=>"\xE6\x8B\x9B", + "\x8F\xB6"=>"\xE6\x8E\x8C", + "\x8F\xB7"=>"\xE6\x8D\xB7", + "\x8F\xB8"=>"\xE6\x98\x87", + "\x8F\xB9"=>"\xE6\x98\x8C", + "\x8F\xBA"=>"\xE6\x98\xAD", + "\x8F\xBB"=>"\xE6\x99\xB6", + "\x8F\xBC"=>"\xE6\x9D\xBE", + "\x8F\xBD"=>"\xE6\xA2\xA2", + "\x8F\xBE"=>"\xE6\xA8\x9F", + "\x8F\xBF"=>"\xE6\xA8\xB5", + "\x8F\xC0"=>"\xE6\xB2\xBC", + "\x8F\xC1"=>"\xE6\xB6\x88", + "\x8F\xC2"=>"\xE6\xB8\x89", + "\x8F\xC3"=>"\xE6\xB9\x98", + "\x8F\xC4"=>"\xE7\x84\xBC", + "\x8F\xC5"=>"\xE7\x84\xA6", + "\x8F\xC6"=>"\xE7\x85\xA7", + "\x8F\xC7"=>"\xE7\x97\x87", + "\x8F\xC8"=>"\xE7\x9C\x81", + "\x8F\xC9"=>"\xE7\xA1\x9D", + "\x8F\xCA"=>"\xE7\xA4\x81", + "\x8F\xCB"=>"\xE7\xA5\xA5", + "\x8F\xCC"=>"\xE7\xA7\xB0", + "\x8F\xCD"=>"\xE7\xAB\xA0", + "\x8F\xCE"=>"\xE7\xAC\x91", + "\x8F\xCF"=>"\xE7\xB2\xA7", + "\x8F\xD0"=>"\xE7\xB4\xB9", + "\x8F\xD1"=>"\xE8\x82\x96", + "\x8F\xD2"=>"\xE8\x8F\x96", + "\x8F\xD3"=>"\xE8\x92\x8B", + "\x8F\xD4"=>"\xE8\x95\x89", + "\x8F\xD5"=>"\xE8\xA1\x9D", + "\x8F\xD6"=>"\xE8\xA3\xB3", + "\x8F\xD7"=>"\xE8\xA8\x9F", + "\x8F\xD8"=>"\xE8\xA8\xBC", + "\x8F\xD9"=>"\xE8\xA9\x94", + "\x8F\xDA"=>"\xE8\xA9\xB3", + "\x8F\xDB"=>"\xE8\xB1\xA1", + "\x8F\xDC"=>"\xE8\xB3\x9E", + "\x8F\xDD"=>"\xE9\x86\xA4", + "\x8F\xDE"=>"\xE9\x89\xA6", + "\x8F\xDF"=>"\xE9\x8D\xBE", + "\x8F\xE0"=>"\xE9\x90\x98", + "\x8F\xE1"=>"\xE9\x9A\x9C", + "\x8F\xE2"=>"\xE9\x9E\x98", + "\x8F\xE3"=>"\xE4\xB8\x8A", + "\x8F\xE4"=>"\xE4\xB8\x88", + "\x8F\xE5"=>"\xE4\xB8\x9E", + "\x8F\xE6"=>"\xE4\xB9\x97", + "\x8F\xE7"=>"\xE5\x86\x97", + "\x8F\xE8"=>"\xE5\x89\xB0", + "\x8F\xE9"=>"\xE5\x9F\x8E", + "\x8F\xEA"=>"\xE5\xA0\xB4", + "\x8F\xEB"=>"\xE5\xA3\x8C", + "\x8F\xEC"=>"\xE5\xAC\xA2", + "\x8F\xED"=>"\xE5\xB8\xB8", + "\x8F\xEE"=>"\xE6\x83\x85", + "\x8F\xEF"=>"\xE6\x93\xBE", + "\x8F\xF0"=>"\xE6\x9D\xA1", + "\x8F\xF1"=>"\xE6\x9D\x96", + "\x8F\xF2"=>"\xE6\xB5\x84", + "\x8F\xF3"=>"\xE7\x8A\xB6", + "\x8F\xF4"=>"\xE7\x95\xB3", + "\x8F\xF5"=>"\xE7\xA9\xA3", + "\x8F\xF6"=>"\xE8\x92\xB8", + "\x8F\xF7"=>"\xE8\xAD\xB2", + "\x8F\xF8"=>"\xE9\x86\xB8", + "\x8F\xF9"=>"\xE9\x8C\xA0", + "\x8F\xFA"=>"\xE5\x98\xB1", + "\x8F\xFB"=>"\xE5\x9F\xB4", + "\x8F\xFC"=>"\xE9\xA3\xBE", + "\x90\x40"=>"\xE6\x8B\xAD", + "\x90\x41"=>"\xE6\xA4\x8D", + "\x90\x42"=>"\xE6\xAE\x96", + "\x90\x43"=>"\xE7\x87\xAD", + "\x90\x44"=>"\xE7\xB9\x94", + "\x90\x45"=>"\xE8\x81\xB7", + "\x90\x46"=>"\xE8\x89\xB2", + "\x90\x47"=>"\xE8\xA7\xA6", + "\x90\x48"=>"\xE9\xA3\x9F", + "\x90\x49"=>"\xE8\x9D\x95", + "\x90\x4A"=>"\xE8\xBE\xB1", + "\x90\x4B"=>"\xE5\xB0\xBB", + "\x90\x4C"=>"\xE4\xBC\xB8", + "\x90\x4D"=>"\xE4\xBF\xA1", + "\x90\x4E"=>"\xE4\xBE\xB5", + "\x90\x4F"=>"\xE5\x94\x87", + "\x90\x50"=>"\xE5\xA8\xA0", + "\x90\x51"=>"\xE5\xAF\x9D", + "\x90\x52"=>"\xE5\xAF\xA9", + "\x90\x53"=>"\xE5\xBF\x83", + "\x90\x54"=>"\xE6\x85\x8E", + "\x90\x55"=>"\xE6\x8C\xAF", + "\x90\x56"=>"\xE6\x96\xB0", + "\x90\x57"=>"\xE6\x99\x8B", + "\x90\x58"=>"\xE6\xA3\xAE", + "\x90\x59"=>"\xE6\xA6\x9B", + "\x90\x5A"=>"\xE6\xB5\xB8", + "\x90\x5B"=>"\xE6\xB7\xB1", + "\x90\x5C"=>"\xE7\x94\xB3", + "\x90\x5D"=>"\xE7\x96\xB9", + "\x90\x5E"=>"\xE7\x9C\x9F", + "\x90\x5F"=>"\xE7\xA5\x9E", + "\x90\x60"=>"\xE7\xA7\xA6", + "\x90\x61"=>"\xE7\xB4\xB3", + "\x90\x62"=>"\xE8\x87\xA3", + "\x90\x63"=>"\xE8\x8A\xAF", + "\x90\x64"=>"\xE8\x96\xAA", + "\x90\x65"=>"\xE8\xA6\xAA", + "\x90\x66"=>"\xE8\xA8\xBA", + "\x90\x67"=>"\xE8\xBA\xAB", + "\x90\x68"=>"\xE8\xBE\x9B", + "\x90\x69"=>"\xE9\x80\xB2", + "\x90\x6A"=>"\xE9\x87\x9D", + "\x90\x6B"=>"\xE9\x9C\x87", + "\x90\x6C"=>"\xE4\xBA\xBA", + "\x90\x6D"=>"\xE4\xBB\x81", + "\x90\x6E"=>"\xE5\x88\x83", + "\x90\x6F"=>"\xE5\xA1\xB5", + "\x90\x70"=>"\xE5\xA3\xAC", + "\x90\x71"=>"\xE5\xB0\x8B", + "\x90\x72"=>"\xE7\x94\x9A", + "\x90\x73"=>"\xE5\xB0\xBD", + "\x90\x74"=>"\xE8\x85\x8E", + "\x90\x75"=>"\xE8\xA8\x8A", + "\x90\x76"=>"\xE8\xBF\x85", + "\x90\x77"=>"\xE9\x99\xA3", + "\x90\x78"=>"\xE9\x9D\xAD", + "\x90\x79"=>"\xE7\xAC\xA5", + "\x90\x7A"=>"\xE8\xAB\x8F", + "\x90\x7B"=>"\xE9\xA0\x88", + "\x90\x7C"=>"\xE9\x85\xA2", + "\x90\x7D"=>"\xE5\x9B\xB3", + "\x90\x7E"=>"\xE5\x8E\xA8", + "\x90\x80"=>"\xE9\x80\x97", + "\x90\x81"=>"\xE5\x90\xB9", + "\x90\x82"=>"\xE5\x9E\x82", + "\x90\x83"=>"\xE5\xB8\xA5", + "\x90\x84"=>"\xE6\x8E\xA8", + "\x90\x85"=>"\xE6\xB0\xB4", + "\x90\x86"=>"\xE7\x82\x8A", + "\x90\x87"=>"\xE7\x9D\xA1", + "\x90\x88"=>"\xE7\xB2\x8B", + "\x90\x89"=>"\xE7\xBF\xA0", + "\x90\x8A"=>"\xE8\xA1\xB0", + "\x90\x8B"=>"\xE9\x81\x82", + "\x90\x8C"=>"\xE9\x85\x94", + "\x90\x8D"=>"\xE9\x8C\x90", + "\x90\x8E"=>"\xE9\x8C\x98", + "\x90\x8F"=>"\xE9\x9A\x8F", + "\x90\x90"=>"\xE7\x91\x9E", + "\x90\x91"=>"\xE9\xAB\x84", + "\x90\x92"=>"\xE5\xB4\x87", + "\x90\x93"=>"\xE5\xB5\xA9", + "\x90\x94"=>"\xE6\x95\xB0", + "\x90\x95"=>"\xE6\x9E\xA2", + "\x90\x96"=>"\xE8\xB6\xA8", + "\x90\x97"=>"\xE9\x9B\x9B", + "\x90\x98"=>"\xE6\x8D\xAE", + "\x90\x99"=>"\xE6\x9D\x89", + "\x90\x9A"=>"\xE6\xA4\x99", + "\x90\x9B"=>"\xE8\x8F\x85", + "\x90\x9C"=>"\xE9\xA0\x97", + "\x90\x9D"=>"\xE9\x9B\x80", + "\x90\x9E"=>"\xE8\xA3\xBE", + "\x90\x9F"=>"\xE6\xBE\x84", + "\x90\xA0"=>"\xE6\x91\xBA", + "\x90\xA1"=>"\xE5\xAF\xB8", + "\x90\xA2"=>"\xE4\xB8\x96", + "\x90\xA3"=>"\xE7\x80\xAC", + "\x90\xA4"=>"\xE7\x95\x9D", + "\x90\xA5"=>"\xE6\x98\xAF", + "\x90\xA6"=>"\xE5\x87\x84", + "\x90\xA7"=>"\xE5\x88\xB6", + "\x90\xA8"=>"\xE5\x8B\xA2", + "\x90\xA9"=>"\xE5\xA7\x93", + "\x90\xAA"=>"\xE5\xBE\x81", + "\x90\xAB"=>"\xE6\x80\xA7", + "\x90\xAC"=>"\xE6\x88\x90", + "\x90\xAD"=>"\xE6\x94\xBF", + "\x90\xAE"=>"\xE6\x95\xB4", + "\x90\xAF"=>"\xE6\x98\x9F", + "\x90\xB0"=>"\xE6\x99\xB4", + "\x90\xB1"=>"\xE6\xA3\xB2", + "\x90\xB2"=>"\xE6\xA0\x96", + "\x90\xB3"=>"\xE6\xAD\xA3", + "\x90\xB4"=>"\xE6\xB8\x85", + "\x90\xB5"=>"\xE7\x89\xB2", + "\x90\xB6"=>"\xE7\x94\x9F", + "\x90\xB7"=>"\xE7\x9B\x9B", + "\x90\xB8"=>"\xE7\xB2\xBE", + "\x90\xB9"=>"\xE8\x81\x96", + "\x90\xBA"=>"\xE5\xA3\xB0", + "\x90\xBB"=>"\xE8\xA3\xBD", + "\x90\xBC"=>"\xE8\xA5\xBF", + "\x90\xBD"=>"\xE8\xAA\xA0", + "\x90\xBE"=>"\xE8\xAA\x93", + "\x90\xBF"=>"\xE8\xAB\x8B", + "\x90\xC0"=>"\xE9\x80\x9D", + "\x90\xC1"=>"\xE9\x86\x92", + "\x90\xC2"=>"\xE9\x9D\x92", + "\x90\xC3"=>"\xE9\x9D\x99", + "\x90\xC4"=>"\xE6\x96\x89", + "\x90\xC5"=>"\xE7\xA8\x8E", + "\x90\xC6"=>"\xE8\x84\x86", + "\x90\xC7"=>"\xE9\x9A\xBB", + "\x90\xC8"=>"\xE5\xB8\xAD", + "\x90\xC9"=>"\xE6\x83\x9C", + "\x90\xCA"=>"\xE6\x88\x9A", + "\x90\xCB"=>"\xE6\x96\xA5", + "\x90\xCC"=>"\xE6\x98\x94", + "\x90\xCD"=>"\xE6\x9E\x90", + "\x90\xCE"=>"\xE7\x9F\xB3", + "\x90\xCF"=>"\xE7\xA9\x8D", + "\x90\xD0"=>"\xE7\xB1\x8D", + "\x90\xD1"=>"\xE7\xB8\xBE", + "\x90\xD2"=>"\xE8\x84\x8A", + "\x90\xD3"=>"\xE8\xB2\xAC", + "\x90\xD4"=>"\xE8\xB5\xA4", + "\x90\xD5"=>"\xE8\xB7\xA1", + "\x90\xD6"=>"\xE8\xB9\x9F", + "\x90\xD7"=>"\xE7\xA2\xA9", + "\x90\xD8"=>"\xE5\x88\x87", + "\x90\xD9"=>"\xE6\x8B\x99", + "\x90\xDA"=>"\xE6\x8E\xA5", + "\x90\xDB"=>"\xE6\x91\x82", + "\x90\xDC"=>"\xE6\x8A\x98", + "\x90\xDD"=>"\xE8\xA8\xAD", + "\x90\xDE"=>"\xE7\xAA\x83", + "\x90\xDF"=>"\xE7\xAF\x80", + "\x90\xE0"=>"\xE8\xAA\xAC", + "\x90\xE1"=>"\xE9\x9B\xAA", + "\x90\xE2"=>"\xE7\xB5\xB6", + "\x90\xE3"=>"\xE8\x88\x8C", + "\x90\xE4"=>"\xE8\x9D\x89", + "\x90\xE5"=>"\xE4\xBB\x99", + "\x90\xE6"=>"\xE5\x85\x88", + "\x90\xE7"=>"\xE5\x8D\x83", + "\x90\xE8"=>"\xE5\x8D\xA0", + "\x90\xE9"=>"\xE5\xAE\xA3", + "\x90\xEA"=>"\xE5\xB0\x82", + "\x90\xEB"=>"\xE5\xB0\x96", + "\x90\xEC"=>"\xE5\xB7\x9D", + "\x90\xED"=>"\xE6\x88\xA6", + "\x90\xEE"=>"\xE6\x89\x87", + "\x90\xEF"=>"\xE6\x92\xB0", + "\x90\xF0"=>"\xE6\xA0\x93", + "\x90\xF1"=>"\xE6\xA0\xB4", + "\x90\xF2"=>"\xE6\xB3\x89", + "\x90\xF3"=>"\xE6\xB5\x85", + "\x90\xF4"=>"\xE6\xB4\x97", + "\x90\xF5"=>"\xE6\x9F\x93", + "\x90\xF6"=>"\xE6\xBD\x9C", + "\x90\xF7"=>"\xE7\x85\x8E", + "\x90\xF8"=>"\xE7\x85\xBD", + "\x90\xF9"=>"\xE6\x97\x8B", + "\x90\xFA"=>"\xE7\xA9\xBF", + "\x90\xFB"=>"\xE7\xAE\xAD", + "\x90\xFC"=>"\xE7\xB7\x9A", + "\x91\x40"=>"\xE7\xB9\x8A", + "\x91\x41"=>"\xE7\xBE\xA8", + "\x91\x42"=>"\xE8\x85\xBA", + "\x91\x43"=>"\xE8\x88\x9B", + "\x91\x44"=>"\xE8\x88\xB9", + "\x91\x45"=>"\xE8\x96\xA6", + "\x91\x46"=>"\xE8\xA9\xAE", + "\x91\x47"=>"\xE8\xB3\x8E", + "\x91\x48"=>"\xE8\xB7\xB5", + "\x91\x49"=>"\xE9\x81\xB8", + "\x91\x4A"=>"\xE9\x81\xB7", + "\x91\x4B"=>"\xE9\x8A\xAD", + "\x91\x4C"=>"\xE9\x8A\x91", + "\x91\x4D"=>"\xE9\x96\x83", + "\x91\x4E"=>"\xE9\xAE\xAE", + "\x91\x4F"=>"\xE5\x89\x8D", + "\x91\x50"=>"\xE5\x96\x84", + "\x91\x51"=>"\xE6\xBC\xB8", + "\x91\x52"=>"\xE7\x84\xB6", + "\x91\x53"=>"\xE5\x85\xA8", + "\x91\x54"=>"\xE7\xA6\x85", + "\x91\x55"=>"\xE7\xB9\x95", + "\x91\x56"=>"\xE8\x86\xB3", + "\x91\x57"=>"\xE7\xB3\x8E", + "\x91\x58"=>"\xE5\x99\x8C", + "\x91\x59"=>"\xE5\xA1\x91", + "\x91\x5A"=>"\xE5\xB2\xA8", + "\x91\x5B"=>"\xE6\x8E\xAA", + "\x91\x5C"=>"\xE6\x9B\xBE", + "\x91\x5D"=>"\xE6\x9B\xBD", + "\x91\x5E"=>"\xE6\xA5\x9A", + "\x91\x5F"=>"\xE7\x8B\x99", + "\x91\x60"=>"\xE7\x96\x8F", + "\x91\x61"=>"\xE7\x96\x8E", + "\x91\x62"=>"\xE7\xA4\x8E", + "\x91\x63"=>"\xE7\xA5\x96", + "\x91\x64"=>"\xE7\xA7\x9F", + "\x91\x65"=>"\xE7\xB2\x97", + "\x91\x66"=>"\xE7\xB4\xA0", + "\x91\x67"=>"\xE7\xB5\x84", + "\x91\x68"=>"\xE8\x98\x87", + "\x91\x69"=>"\xE8\xA8\xB4", + "\x91\x6A"=>"\xE9\x98\xBB", + "\x91\x6B"=>"\xE9\x81\xA1", + "\x91\x6C"=>"\xE9\xBC\xA0", + "\x91\x6D"=>"\xE5\x83\xA7", + "\x91\x6E"=>"\xE5\x89\xB5", + "\x91\x6F"=>"\xE5\x8F\x8C", + "\x91\x70"=>"\xE5\x8F\xA2", + "\x91\x71"=>"\xE5\x80\x89", + "\x91\x72"=>"\xE5\x96\xAA", + "\x91\x73"=>"\xE5\xA3\xAE", + "\x91\x74"=>"\xE5\xA5\x8F", + "\x91\x75"=>"\xE7\x88\xBD", + "\x91\x76"=>"\xE5\xAE\x8B", + "\x91\x77"=>"\xE5\xB1\xA4", + "\x91\x78"=>"\xE5\x8C\x9D", + "\x91\x79"=>"\xE6\x83\xA3", + "\x91\x7A"=>"\xE6\x83\xB3", + "\x91\x7B"=>"\xE6\x8D\x9C", + "\x91\x7C"=>"\xE6\x8E\x83", + "\x91\x7D"=>"\xE6\x8C\xBF", + "\x91\x7E"=>"\xE6\x8E\xBB", + "\x91\x80"=>"\xE6\x93\x8D", + "\x91\x81"=>"\xE6\x97\xA9", + "\x91\x82"=>"\xE6\x9B\xB9", + "\x91\x83"=>"\xE5\xB7\xA3", + "\x91\x84"=>"\xE6\xA7\x8D", + "\x91\x85"=>"\xE6\xA7\xBD", + "\x91\x86"=>"\xE6\xBC\x95", + "\x91\x87"=>"\xE7\x87\xA5", + "\x91\x88"=>"\xE4\xBA\x89", + "\x91\x89"=>"\xE7\x97\xA9", + "\x91\x8A"=>"\xE7\x9B\xB8", + "\x91\x8B"=>"\xE7\xAA\x93", + "\x91\x8C"=>"\xE7\xB3\x9F", + "\x91\x8D"=>"\xE7\xB7\x8F", + "\x91\x8E"=>"\xE7\xB6\x9C", + "\x91\x8F"=>"\xE8\x81\xA1", + "\x91\x90"=>"\xE8\x8D\x89", + "\x91\x91"=>"\xE8\x8D\x98", + "\x91\x92"=>"\xE8\x91\xAC", + "\x91\x93"=>"\xE8\x92\xBC", + "\x91\x94"=>"\xE8\x97\xBB", + "\x91\x95"=>"\xE8\xA3\x85", + "\x91\x96"=>"\xE8\xB5\xB0", + "\x91\x97"=>"\xE9\x80\x81", + "\x91\x98"=>"\xE9\x81\xAD", + "\x91\x99"=>"\xE9\x8E\x97", + "\x91\x9A"=>"\xE9\x9C\x9C", + "\x91\x9B"=>"\xE9\xA8\x92", + "\x91\x9C"=>"\xE5\x83\x8F", + "\x91\x9D"=>"\xE5\xA2\x97", + "\x91\x9E"=>"\xE6\x86\x8E", + "\x91\x9F"=>"\xE8\x87\x93", + "\x91\xA0"=>"\xE8\x94\xB5", + "\x91\xA1"=>"\xE8\xB4\x88", + "\x91\xA2"=>"\xE9\x80\xA0", + "\x91\xA3"=>"\xE4\xBF\x83", + "\x91\xA4"=>"\xE5\x81\xB4", + "\x91\xA5"=>"\xE5\x89\x87", + "\x91\xA6"=>"\xE5\x8D\xB3", + "\x91\xA7"=>"\xE6\x81\xAF", + "\x91\xA8"=>"\xE6\x8D\x89", + "\x91\xA9"=>"\xE6\x9D\x9F", + "\x91\xAA"=>"\xE6\xB8\xAC", + "\x91\xAB"=>"\xE8\xB6\xB3", + "\x91\xAC"=>"\xE9\x80\x9F", + "\x91\xAD"=>"\xE4\xBF\x97", + "\x91\xAE"=>"\xE5\xB1\x9E", + "\x91\xAF"=>"\xE8\xB3\x8A", + "\x91\xB0"=>"\xE6\x97\x8F", + "\x91\xB1"=>"\xE7\xB6\x9A", + "\x91\xB2"=>"\xE5\x8D\x92", + "\x91\xB3"=>"\xE8\xA2\x96", + "\x91\xB4"=>"\xE5\x85\xB6", + "\x91\xB5"=>"\xE6\x8F\x83", + "\x91\xB6"=>"\xE5\xAD\x98", + "\x91\xB7"=>"\xE5\xAD\xAB", + "\x91\xB8"=>"\xE5\xB0\x8A", + "\x91\xB9"=>"\xE6\x90\x8D", + "\x91\xBA"=>"\xE6\x9D\x91", + "\x91\xBB"=>"\xE9\x81\x9C", + "\x91\xBC"=>"\xE4\xBB\x96", + "\x91\xBD"=>"\xE5\xA4\x9A", + "\x91\xBE"=>"\xE5\xA4\xAA", + "\x91\xBF"=>"\xE6\xB1\xB0", + "\x91\xC0"=>"\xE8\xA9\x91", + "\x91\xC1"=>"\xE5\x94\xBE", + "\x91\xC2"=>"\xE5\xA0\x95", + "\x91\xC3"=>"\xE5\xA6\xA5", + "\x91\xC4"=>"\xE6\x83\xB0", + "\x91\xC5"=>"\xE6\x89\x93", + "\x91\xC6"=>"\xE6\x9F\x81", + "\x91\xC7"=>"\xE8\x88\xB5", + "\x91\xC8"=>"\xE6\xA5\x95", + "\x91\xC9"=>"\xE9\x99\x80", + "\x91\xCA"=>"\xE9\xA7\x84", + "\x91\xCB"=>"\xE9\xA8\xA8", + "\x91\xCC"=>"\xE4\xBD\x93", + "\x91\xCD"=>"\xE5\xA0\x86", + "\x91\xCE"=>"\xE5\xAF\xBE", + "\x91\xCF"=>"\xE8\x80\x90", + "\x91\xD0"=>"\xE5\xB2\xB1", + "\x91\xD1"=>"\xE5\xB8\xAF", + "\x91\xD2"=>"\xE5\xBE\x85", + "\x91\xD3"=>"\xE6\x80\xA0", + "\x91\xD4"=>"\xE6\x85\x8B", + "\x91\xD5"=>"\xE6\x88\xB4", + "\x91\xD6"=>"\xE6\x9B\xBF", + "\x91\xD7"=>"\xE6\xB3\xB0", + "\x91\xD8"=>"\xE6\xBB\x9E", + "\x91\xD9"=>"\xE8\x83\x8E", + "\x91\xDA"=>"\xE8\x85\xBF", + "\x91\xDB"=>"\xE8\x8B\x94", + "\x91\xDC"=>"\xE8\xA2\x8B", + "\x91\xDD"=>"\xE8\xB2\xB8", + "\x91\xDE"=>"\xE9\x80\x80", + "\x91\xDF"=>"\xE9\x80\xAE", + "\x91\xE0"=>"\xE9\x9A\x8A", + "\x91\xE1"=>"\xE9\xBB\x9B", + "\x91\xE2"=>"\xE9\xAF\x9B", + "\x91\xE3"=>"\xE4\xBB\xA3", + "\x91\xE4"=>"\xE5\x8F\xB0", + "\x91\xE5"=>"\xE5\xA4\xA7", + "\x91\xE6"=>"\xE7\xAC\xAC", + "\x91\xE7"=>"\xE9\x86\x8D", + "\x91\xE8"=>"\xE9\xA1\x8C", + "\x91\xE9"=>"\xE9\xB7\xB9", + "\x91\xEA"=>"\xE6\xBB\x9D", + "\x91\xEB"=>"\xE7\x80\xA7", + "\x91\xEC"=>"\xE5\x8D\x93", + "\x91\xED"=>"\xE5\x95\x84", + "\x91\xEE"=>"\xE5\xAE\x85", + "\x91\xEF"=>"\xE6\x89\x98", + "\x91\xF0"=>"\xE6\x8A\x9E", + "\x91\xF1"=>"\xE6\x8B\x93", + "\x91\xF2"=>"\xE6\xB2\xA2", + "\x91\xF3"=>"\xE6\xBF\xAF", + "\x91\xF4"=>"\xE7\x90\xA2", + "\x91\xF5"=>"\xE8\xA8\x97", + "\x91\xF6"=>"\xE9\x90\xB8", + "\x91\xF7"=>"\xE6\xBF\x81", + "\x91\xF8"=>"\xE8\xAB\xBE", + "\x91\xF9"=>"\xE8\x8C\xB8", + "\x91\xFA"=>"\xE5\x87\xA7", + "\x91\xFB"=>"\xE8\x9B\xB8", + "\x91\xFC"=>"\xE5\x8F\xAA", + "\x92\x40"=>"\xE5\x8F\xA9", + "\x92\x41"=>"\xE4\xBD\x86", + "\x92\x42"=>"\xE9\x81\x94", + "\x92\x43"=>"\xE8\xBE\xB0", + "\x92\x44"=>"\xE5\xA5\xAA", + "\x92\x45"=>"\xE8\x84\xB1", + "\x92\x46"=>"\xE5\xB7\xBD", + "\x92\x47"=>"\xE7\xAB\xAA", + "\x92\x48"=>"\xE8\xBE\xBF", + "\x92\x49"=>"\xE6\xA3\x9A", + "\x92\x4A"=>"\xE8\xB0\xB7", + "\x92\x4B"=>"\xE7\x8B\xB8", + "\x92\x4C"=>"\xE9\xB1\x88", + "\x92\x4D"=>"\xE6\xA8\xBD", + "\x92\x4E"=>"\xE8\xAA\xB0", + "\x92\x4F"=>"\xE4\xB8\xB9", + "\x92\x50"=>"\xE5\x8D\x98", + "\x92\x51"=>"\xE5\x98\x86", + "\x92\x52"=>"\xE5\x9D\xA6", + "\x92\x53"=>"\xE6\x8B\x85", + "\x92\x54"=>"\xE6\x8E\xA2", + "\x92\x55"=>"\xE6\x97\xA6", + "\x92\x56"=>"\xE6\xAD\x8E", + "\x92\x57"=>"\xE6\xB7\xA1", + "\x92\x58"=>"\xE6\xB9\x9B", + "\x92\x59"=>"\xE7\x82\xAD", + "\x92\x5A"=>"\xE7\x9F\xAD", + "\x92\x5B"=>"\xE7\xAB\xAF", + "\x92\x5C"=>"\xE7\xAE\xAA", + "\x92\x5D"=>"\xE7\xB6\xBB", + "\x92\x5E"=>"\xE8\x80\xBD", + "\x92\x5F"=>"\xE8\x83\x86", + "\x92\x60"=>"\xE8\x9B\x8B", + "\x92\x61"=>"\xE8\xAA\x95", + "\x92\x62"=>"\xE9\x8D\x9B", + "\x92\x63"=>"\xE5\x9B\xA3", + "\x92\x64"=>"\xE5\xA3\x87", + "\x92\x65"=>"\xE5\xBC\xBE", + "\x92\x66"=>"\xE6\x96\xAD", + "\x92\x67"=>"\xE6\x9A\x96", + "\x92\x68"=>"\xE6\xAA\x80", + "\x92\x69"=>"\xE6\xAE\xB5", + "\x92\x6A"=>"\xE7\x94\xB7", + "\x92\x6B"=>"\xE8\xAB\x87", + "\x92\x6C"=>"\xE5\x80\xA4", + "\x92\x6D"=>"\xE7\x9F\xA5", + "\x92\x6E"=>"\xE5\x9C\xB0", + "\x92\x6F"=>"\xE5\xBC\x9B", + "\x92\x70"=>"\xE6\x81\xA5", + "\x92\x71"=>"\xE6\x99\xBA", + "\x92\x72"=>"\xE6\xB1\xA0", + "\x92\x73"=>"\xE7\x97\xB4", + "\x92\x74"=>"\xE7\xA8\x9A", + "\x92\x75"=>"\xE7\xBD\xAE", + "\x92\x76"=>"\xE8\x87\xB4", + "\x92\x77"=>"\xE8\x9C\x98", + "\x92\x78"=>"\xE9\x81\x85", + "\x92\x79"=>"\xE9\xA6\xB3", + "\x92\x7A"=>"\xE7\xAF\x89", + "\x92\x7B"=>"\xE7\x95\x9C", + "\x92\x7C"=>"\xE7\xAB\xB9", + "\x92\x7D"=>"\xE7\xAD\x91", + "\x92\x7E"=>"\xE8\x93\x84", + "\x92\x80"=>"\xE9\x80\x90", + "\x92\x81"=>"\xE7\xA7\xA9", + "\x92\x82"=>"\xE7\xAA\x92", + "\x92\x83"=>"\xE8\x8C\xB6", + "\x92\x84"=>"\xE5\xAB\xA1", + "\x92\x85"=>"\xE7\x9D\x80", + "\x92\x86"=>"\xE4\xB8\xAD", + "\x92\x87"=>"\xE4\xBB\xB2", + "\x92\x88"=>"\xE5\xAE\x99", + "\x92\x89"=>"\xE5\xBF\xA0", + "\x92\x8A"=>"\xE6\x8A\xBD", + "\x92\x8B"=>"\xE6\x98\xBC", + "\x92\x8C"=>"\xE6\x9F\xB1", + "\x92\x8D"=>"\xE6\xB3\xA8", + "\x92\x8E"=>"\xE8\x99\xAB", + "\x92\x8F"=>"\xE8\xA1\xB7", + "\x92\x90"=>"\xE8\xA8\xBB", + "\x92\x91"=>"\xE9\x85\x8E", + "\x92\x92"=>"\xE9\x8B\xB3", + "\x92\x93"=>"\xE9\xA7\x90", + "\x92\x94"=>"\xE6\xA8\x97", + "\x92\x95"=>"\xE7\x80\xA6", + "\x92\x96"=>"\xE7\x8C\xAA", + "\x92\x97"=>"\xE8\x8B\xA7", + "\x92\x98"=>"\xE8\x91\x97", + "\x92\x99"=>"\xE8\xB2\xAF", + "\x92\x9A"=>"\xE4\xB8\x81", + "\x92\x9B"=>"\xE5\x85\x86", + "\x92\x9C"=>"\xE5\x87\x8B", + "\x92\x9D"=>"\xE5\x96\x8B", + "\x92\x9E"=>"\xE5\xAF\xB5", + "\x92\x9F"=>"\xE5\xB8\x96", + "\x92\xA0"=>"\xE5\xB8\xB3", + "\x92\xA1"=>"\xE5\xBA\x81", + "\x92\xA2"=>"\xE5\xBC\x94", + "\x92\xA3"=>"\xE5\xBC\xB5", + "\x92\xA4"=>"\xE5\xBD\xAB", + "\x92\xA5"=>"\xE5\xBE\xB4", + "\x92\xA6"=>"\xE6\x87\xB2", + "\x92\xA7"=>"\xE6\x8C\x91", + "\x92\xA8"=>"\xE6\x9A\xA2", + "\x92\xA9"=>"\xE6\x9C\x9D", + "\x92\xAA"=>"\xE6\xBD\xAE", + "\x92\xAB"=>"\xE7\x89\x92", + "\x92\xAC"=>"\xE7\x94\xBA", + "\x92\xAD"=>"\xE7\x9C\xBA", + "\x92\xAE"=>"\xE8\x81\xB4", + "\x92\xAF"=>"\xE8\x84\xB9", + "\x92\xB0"=>"\xE8\x85\xB8", + "\x92\xB1"=>"\xE8\x9D\xB6", + "\x92\xB2"=>"\xE8\xAA\xBF", + "\x92\xB3"=>"\xE8\xAB\x9C", + "\x92\xB4"=>"\xE8\xB6\x85", + "\x92\xB5"=>"\xE8\xB7\xB3", + "\x92\xB6"=>"\xE9\x8A\x9A", + "\x92\xB7"=>"\xE9\x95\xB7", + "\x92\xB8"=>"\xE9\xA0\x82", + "\x92\xB9"=>"\xE9\xB3\xA5", + "\x92\xBA"=>"\xE5\x8B\x85", + "\x92\xBB"=>"\xE6\x8D\x97", + "\x92\xBC"=>"\xE7\x9B\xB4", + "\x92\xBD"=>"\xE6\x9C\x95", + "\x92\xBE"=>"\xE6\xB2\x88", + "\x92\xBF"=>"\xE7\x8F\x8D", + "\x92\xC0"=>"\xE8\xB3\x83", + "\x92\xC1"=>"\xE9\x8E\xAE", + "\x92\xC2"=>"\xE9\x99\xB3", + "\x92\xC3"=>"\xE6\xB4\xA5", + "\x92\xC4"=>"\xE5\xA2\x9C", + "\x92\xC5"=>"\xE6\xA4\x8E", + "\x92\xC6"=>"\xE6\xA7\x8C", + "\x92\xC7"=>"\xE8\xBF\xBD", + "\x92\xC8"=>"\xE9\x8E\x9A", + "\x92\xC9"=>"\xE7\x97\x9B", + "\x92\xCA"=>"\xE9\x80\x9A", + "\x92\xCB"=>"\xE5\xA1\x9A", + "\x92\xCC"=>"\xE6\xA0\x82", + "\x92\xCD"=>"\xE6\x8E\xB4", + "\x92\xCE"=>"\xE6\xA7\xBB", + "\x92\xCF"=>"\xE4\xBD\x83", + "\x92\xD0"=>"\xE6\xBC\xAC", + "\x92\xD1"=>"\xE6\x9F\x98", + "\x92\xD2"=>"\xE8\xBE\xBB", + "\x92\xD3"=>"\xE8\x94\xA6", + "\x92\xD4"=>"\xE7\xB6\xB4", + "\x92\xD5"=>"\xE9\x8D\x94", + "\x92\xD6"=>"\xE6\xA4\xBF", + "\x92\xD7"=>"\xE6\xBD\xB0", + "\x92\xD8"=>"\xE5\x9D\xAA", + "\x92\xD9"=>"\xE5\xA3\xB7", + "\x92\xDA"=>"\xE5\xAC\xAC", + "\x92\xDB"=>"\xE7\xB4\xAC", + "\x92\xDC"=>"\xE7\x88\xAA", + "\x92\xDD"=>"\xE5\x90\x8A", + "\x92\xDE"=>"\xE9\x87\xA3", + "\x92\xDF"=>"\xE9\xB6\xB4", + "\x92\xE0"=>"\xE4\xBA\xAD", + "\x92\xE1"=>"\xE4\xBD\x8E", + "\x92\xE2"=>"\xE5\x81\x9C", + "\x92\xE3"=>"\xE5\x81\xB5", + "\x92\xE4"=>"\xE5\x89\x83", + "\x92\xE5"=>"\xE8\xB2\x9E", + "\x92\xE6"=>"\xE5\x91\x88", + "\x92\xE7"=>"\xE5\xA0\xA4", + "\x92\xE8"=>"\xE5\xAE\x9A", + "\x92\xE9"=>"\xE5\xB8\x9D", + "\x92\xEA"=>"\xE5\xBA\x95", + "\x92\xEB"=>"\xE5\xBA\xAD", + "\x92\xEC"=>"\xE5\xBB\xB7", + "\x92\xED"=>"\xE5\xBC\x9F", + "\x92\xEE"=>"\xE6\x82\x8C", + "\x92\xEF"=>"\xE6\x8A\xB5", + "\x92\xF0"=>"\xE6\x8C\xBA", + "\x92\xF1"=>"\xE6\x8F\x90", + "\x92\xF2"=>"\xE6\xA2\xAF", + "\x92\xF3"=>"\xE6\xB1\x80", + "\x92\xF4"=>"\xE7\xA2\x87", + "\x92\xF5"=>"\xE7\xA6\x8E", + "\x92\xF6"=>"\xE7\xA8\x8B", + "\x92\xF7"=>"\xE7\xB7\xA0", + "\x92\xF8"=>"\xE8\x89\x87", + "\x92\xF9"=>"\xE8\xA8\x82", + "\x92\xFA"=>"\xE8\xAB\xA6", + "\x92\xFB"=>"\xE8\xB9\x84", + "\x92\xFC"=>"\xE9\x80\x93", + "\x93\x40"=>"\xE9\x82\xB8", + "\x93\x41"=>"\xE9\x84\xAD", + "\x93\x42"=>"\xE9\x87\x98", + "\x93\x43"=>"\xE9\xBC\x8E", + "\x93\x44"=>"\xE6\xB3\xA5", + "\x93\x45"=>"\xE6\x91\x98", + "\x93\x46"=>"\xE6\x93\xA2", + "\x93\x47"=>"\xE6\x95\xB5", + "\x93\x48"=>"\xE6\xBB\xB4", + "\x93\x49"=>"\xE7\x9A\x84", + "\x93\x4A"=>"\xE7\xAC\x9B", + "\x93\x4B"=>"\xE9\x81\xA9", + "\x93\x4C"=>"\xE9\x8F\x91", + "\x93\x4D"=>"\xE6\xBA\xBA", + "\x93\x4E"=>"\xE5\x93\xB2", + "\x93\x4F"=>"\xE5\xBE\xB9", + "\x93\x50"=>"\xE6\x92\xA4", + "\x93\x51"=>"\xE8\xBD\x8D", + "\x93\x52"=>"\xE8\xBF\xAD", + "\x93\x53"=>"\xE9\x89\x84", + "\x93\x54"=>"\xE5\x85\xB8", + "\x93\x55"=>"\xE5\xA1\xAB", + "\x93\x56"=>"\xE5\xA4\xA9", + "\x93\x57"=>"\xE5\xB1\x95", + "\x93\x58"=>"\xE5\xBA\x97", + "\x93\x59"=>"\xE6\xB7\xBB", + "\x93\x5A"=>"\xE7\xBA\x8F", + "\x93\x5B"=>"\xE7\x94\x9C", + "\x93\x5C"=>"\xE8\xB2\xBC", + "\x93\x5D"=>"\xE8\xBB\xA2", + "\x93\x5E"=>"\xE9\xA1\x9B", + "\x93\x5F"=>"\xE7\x82\xB9", + "\x93\x60"=>"\xE4\xBC\x9D", + "\x93\x61"=>"\xE6\xAE\xBF", + "\x93\x62"=>"\xE6\xBE\xB1", + "\x93\x63"=>"\xE7\x94\xB0", + "\x93\x64"=>"\xE9\x9B\xBB", + "\x93\x65"=>"\xE5\x85\x8E", + "\x93\x66"=>"\xE5\x90\x90", + "\x93\x67"=>"\xE5\xA0\xB5", + "\x93\x68"=>"\xE5\xA1\x97", + "\x93\x69"=>"\xE5\xA6\xAC", + "\x93\x6A"=>"\xE5\xB1\xA0", + "\x93\x6B"=>"\xE5\xBE\x92", + "\x93\x6C"=>"\xE6\x96\x97", + "\x93\x6D"=>"\xE6\x9D\x9C", + "\x93\x6E"=>"\xE6\xB8\xA1", + "\x93\x6F"=>"\xE7\x99\xBB", + "\x93\x70"=>"\xE8\x8F\x9F", + "\x93\x71"=>"\xE8\xB3\xAD", + "\x93\x72"=>"\xE9\x80\x94", + "\x93\x73"=>"\xE9\x83\xBD", + "\x93\x74"=>"\xE9\x8D\x8D", + "\x93\x75"=>"\xE7\xA0\xA5", + "\x93\x76"=>"\xE7\xA0\xBA", + "\x93\x77"=>"\xE5\x8A\xAA", + "\x93\x78"=>"\xE5\xBA\xA6", + "\x93\x79"=>"\xE5\x9C\x9F", + "\x93\x7A"=>"\xE5\xA5\xB4", + "\x93\x7B"=>"\xE6\x80\x92", + "\x93\x7C"=>"\xE5\x80\x92", + "\x93\x7D"=>"\xE5\x85\x9A", + "\x93\x7E"=>"\xE5\x86\xAC", + "\x93\x80"=>"\xE5\x87\x8D", + "\x93\x81"=>"\xE5\x88\x80", + "\x93\x82"=>"\xE5\x94\x90", + "\x93\x83"=>"\xE5\xA1\x94", + "\x93\x84"=>"\xE5\xA1\x98", + "\x93\x85"=>"\xE5\xA5\x97", + "\x93\x86"=>"\xE5\xAE\x95", + "\x93\x87"=>"\xE5\xB3\xB6", + "\x93\x88"=>"\xE5\xB6\x8B", + "\x93\x89"=>"\xE6\x82\xBC", + "\x93\x8A"=>"\xE6\x8A\x95", + "\x93\x8B"=>"\xE6\x90\xAD", + "\x93\x8C"=>"\xE6\x9D\xB1", + "\x93\x8D"=>"\xE6\xA1\x83", + "\x93\x8E"=>"\xE6\xA2\xBC", + "\x93\x8F"=>"\xE6\xA3\x9F", + "\x93\x90"=>"\xE7\x9B\x97", + "\x93\x91"=>"\xE6\xB7\x98", + "\x93\x92"=>"\xE6\xB9\xAF", + "\x93\x93"=>"\xE6\xB6\x9B", + "\x93\x94"=>"\xE7\x81\xAF", + "\x93\x95"=>"\xE7\x87\x88", + "\x93\x96"=>"\xE5\xBD\x93", + "\x93\x97"=>"\xE7\x97\x98", + "\x93\x98"=>"\xE7\xA5\xB7", + "\x93\x99"=>"\xE7\xAD\x89", + "\x93\x9A"=>"\xE7\xAD\x94", + "\x93\x9B"=>"\xE7\xAD\x92", + "\x93\x9C"=>"\xE7\xB3\x96", + "\x93\x9D"=>"\xE7\xB5\xB1", + "\x93\x9E"=>"\xE5\x88\xB0", + "\x93\x9F"=>"\xE8\x91\xA3", + "\x93\xA0"=>"\xE8\x95\xA9", + "\x93\xA1"=>"\xE8\x97\xA4", + "\x93\xA2"=>"\xE8\xA8\x8E", + "\x93\xA3"=>"\xE8\xAC\x84", + "\x93\xA4"=>"\xE8\xB1\x86", + "\x93\xA5"=>"\xE8\xB8\x8F", + "\x93\xA6"=>"\xE9\x80\x83", + "\x93\xA7"=>"\xE9\x80\x8F", + "\x93\xA8"=>"\xE9\x90\x99", + "\x93\xA9"=>"\xE9\x99\xB6", + "\x93\xAA"=>"\xE9\xA0\xAD", + "\x93\xAB"=>"\xE9\xA8\xB0", + "\x93\xAC"=>"\xE9\x97\x98", + "\x93\xAD"=>"\xE5\x83\x8D", + "\x93\xAE"=>"\xE5\x8B\x95", + "\x93\xAF"=>"\xE5\x90\x8C", + "\x93\xB0"=>"\xE5\xA0\x82", + "\x93\xB1"=>"\xE5\xB0\x8E", + "\x93\xB2"=>"\xE6\x86\xA7", + "\x93\xB3"=>"\xE6\x92\x9E", + "\x93\xB4"=>"\xE6\xB4\x9E", + "\x93\xB5"=>"\xE7\x9E\xB3", + "\x93\xB6"=>"\xE7\xAB\xA5", + "\x93\xB7"=>"\xE8\x83\xB4", + "\x93\xB8"=>"\xE8\x90\x84", + "\x93\xB9"=>"\xE9\x81\x93", + "\x93\xBA"=>"\xE9\x8A\x85", + "\x93\xBB"=>"\xE5\xB3\xA0", + "\x93\xBC"=>"\xE9\xB4\x87", + "\x93\xBD"=>"\xE5\x8C\xBF", + "\x93\xBE"=>"\xE5\xBE\x97", + "\x93\xBF"=>"\xE5\xBE\xB3", + "\x93\xC0"=>"\xE6\xB6\x9C", + "\x93\xC1"=>"\xE7\x89\xB9", + "\x93\xC2"=>"\xE7\x9D\xA3", + "\x93\xC3"=>"\xE7\xA6\xBF", + "\x93\xC4"=>"\xE7\xAF\xA4", + "\x93\xC5"=>"\xE6\xAF\x92", + "\x93\xC6"=>"\xE7\x8B\xAC", + "\x93\xC7"=>"\xE8\xAA\xAD", + "\x93\xC8"=>"\xE6\xA0\x83", + "\x93\xC9"=>"\xE6\xA9\xA1", + "\x93\xCA"=>"\xE5\x87\xB8", + "\x93\xCB"=>"\xE7\xAA\x81", + "\x93\xCC"=>"\xE6\xA4\xB4", + "\x93\xCD"=>"\xE5\xB1\x8A", + "\x93\xCE"=>"\xE9\xB3\xB6", + "\x93\xCF"=>"\xE8\x8B\xAB", + "\x93\xD0"=>"\xE5\xAF\x85", + "\x93\xD1"=>"\xE9\x85\x89", + "\x93\xD2"=>"\xE7\x80\x9E", + "\x93\xD3"=>"\xE5\x99\xB8", + "\x93\xD4"=>"\xE5\xB1\xAF", + "\x93\xD5"=>"\xE6\x83\x87", + "\x93\xD6"=>"\xE6\x95\xA6", + "\x93\xD7"=>"\xE6\xB2\x8C", + "\x93\xD8"=>"\xE8\xB1\x9A", + "\x93\xD9"=>"\xE9\x81\x81", + "\x93\xDA"=>"\xE9\xA0\x93", + "\x93\xDB"=>"\xE5\x91\x91", + "\x93\xDC"=>"\xE6\x9B\x87", + "\x93\xDD"=>"\xE9\x88\x8D", + "\x93\xDE"=>"\xE5\xA5\x88", + "\x93\xDF"=>"\xE9\x82\xA3", + "\x93\xE0"=>"\xE5\x86\x85", + "\x93\xE1"=>"\xE4\xB9\x8D", + "\x93\xE2"=>"\xE5\x87\xAA", + "\x93\xE3"=>"\xE8\x96\x99", + "\x93\xE4"=>"\xE8\xAC\x8E", + "\x93\xE5"=>"\xE7\x81\x98", + "\x93\xE6"=>"\xE6\x8D\xBA", + "\x93\xE7"=>"\xE9\x8D\x8B", + "\x93\xE8"=>"\xE6\xA5\xA2", + "\x93\xE9"=>"\xE9\xA6\xB4", + "\x93\xEA"=>"\xE7\xB8\x84", + "\x93\xEB"=>"\xE7\x95\xB7", + "\x93\xEC"=>"\xE5\x8D\x97", + "\x93\xED"=>"\xE6\xA5\xA0", + "\x93\xEE"=>"\xE8\xBB\x9F", + "\x93\xEF"=>"\xE9\x9B\xA3", + "\x93\xF0"=>"\xE6\xB1\x9D", + "\x93\xF1"=>"\xE4\xBA\x8C", + "\x93\xF2"=>"\xE5\xB0\xBC", + "\x93\xF3"=>"\xE5\xBC\x90", + "\x93\xF4"=>"\xE8\xBF\xA9", + "\x93\xF5"=>"\xE5\x8C\x82", + "\x93\xF6"=>"\xE8\xB3\x91", + "\x93\xF7"=>"\xE8\x82\x89", + "\x93\xF8"=>"\xE8\x99\xB9", + "\x93\xF9"=>"\xE5\xBB\xBF", + "\x93\xFA"=>"\xE6\x97\xA5", + "\x93\xFB"=>"\xE4\xB9\xB3", + "\x93\xFC"=>"\xE5\x85\xA5", + "\x94\x40"=>"\xE5\xA6\x82", + "\x94\x41"=>"\xE5\xB0\xBF", + "\x94\x42"=>"\xE9\x9F\xAE", + "\x94\x43"=>"\xE4\xBB\xBB", + "\x94\x44"=>"\xE5\xA6\x8A", + "\x94\x45"=>"\xE5\xBF\x8D", + "\x94\x46"=>"\xE8\xAA\x8D", + "\x94\x47"=>"\xE6\xBF\xA1", + "\x94\x48"=>"\xE7\xA6\xB0", + "\x94\x49"=>"\xE7\xA5\xA2", + "\x94\x4A"=>"\xE5\xAF\xA7", + "\x94\x4B"=>"\xE8\x91\xB1", + "\x94\x4C"=>"\xE7\x8C\xAB", + "\x94\x4D"=>"\xE7\x86\xB1", + "\x94\x4E"=>"\xE5\xB9\xB4", + "\x94\x4F"=>"\xE5\xBF\xB5", + "\x94\x50"=>"\xE6\x8D\xBB", + "\x94\x51"=>"\xE6\x92\x9A", + "\x94\x52"=>"\xE7\x87\x83", + "\x94\x53"=>"\xE7\xB2\x98", + "\x94\x54"=>"\xE4\xB9\x83", + "\x94\x55"=>"\xE5\xBB\xBC", + "\x94\x56"=>"\xE4\xB9\x8B", + "\x94\x57"=>"\xE5\x9F\x9C", + "\x94\x58"=>"\xE5\x9A\xA2", + "\x94\x59"=>"\xE6\x82\xA9", + "\x94\x5A"=>"\xE6\xBF\x83", + "\x94\x5B"=>"\xE7\xB4\x8D", + "\x94\x5C"=>"\xE8\x83\xBD", + "\x94\x5D"=>"\xE8\x84\xB3", + "\x94\x5E"=>"\xE8\x86\xBF", + "\x94\x5F"=>"\xE8\xBE\xB2", + "\x94\x60"=>"\xE8\xA6\x97", + "\x94\x61"=>"\xE8\x9A\xA4", + "\x94\x62"=>"\xE5\xB7\xB4", + "\x94\x63"=>"\xE6\x8A\x8A", + "\x94\x64"=>"\xE6\x92\xAD", + "\x94\x65"=>"\xE8\xA6\x87", + "\x94\x66"=>"\xE6\x9D\xB7", + "\x94\x67"=>"\xE6\xB3\xA2", + "\x94\x68"=>"\xE6\xB4\xBE", + "\x94\x69"=>"\xE7\x90\xB6", + "\x94\x6A"=>"\xE7\xA0\xB4", + "\x94\x6B"=>"\xE5\xA9\x86", + "\x94\x6C"=>"\xE7\xBD\xB5", + "\x94\x6D"=>"\xE8\x8A\xAD", + "\x94\x6E"=>"\xE9\xA6\xAC", + "\x94\x6F"=>"\xE4\xBF\xB3", + "\x94\x70"=>"\xE5\xBB\x83", + "\x94\x71"=>"\xE6\x8B\x9D", + "\x94\x72"=>"\xE6\x8E\x92", + "\x94\x73"=>"\xE6\x95\x97", + "\x94\x74"=>"\xE6\x9D\xAF", + "\x94\x75"=>"\xE7\x9B\x83", + "\x94\x76"=>"\xE7\x89\x8C", + "\x94\x77"=>"\xE8\x83\x8C", + "\x94\x78"=>"\xE8\x82\xBA", + "\x94\x79"=>"\xE8\xBC\xA9", + "\x94\x7A"=>"\xE9\x85\x8D", + "\x94\x7B"=>"\xE5\x80\x8D", + "\x94\x7C"=>"\xE5\x9F\xB9", + "\x94\x7D"=>"\xE5\xAA\x92", + "\x94\x7E"=>"\xE6\xA2\x85", + "\x94\x80"=>"\xE6\xA5\xB3", + "\x94\x81"=>"\xE7\x85\xA4", + "\x94\x82"=>"\xE7\x8B\xBD", + "\x94\x83"=>"\xE8\xB2\xB7", + "\x94\x84"=>"\xE5\xA3\xB2", + "\x94\x85"=>"\xE8\xB3\xA0", + "\x94\x86"=>"\xE9\x99\xAA", + "\x94\x87"=>"\xE9\x80\x99", + "\x94\x88"=>"\xE8\x9D\xBF", + "\x94\x89"=>"\xE7\xA7\xA4", + "\x94\x8A"=>"\xE7\x9F\xA7", + "\x94\x8B"=>"\xE8\x90\xA9", + "\x94\x8C"=>"\xE4\xBC\xAF", + "\x94\x8D"=>"\xE5\x89\xA5", + "\x94\x8E"=>"\xE5\x8D\x9A", + "\x94\x8F"=>"\xE6\x8B\x8D", + "\x94\x90"=>"\xE6\x9F\x8F", + "\x94\x91"=>"\xE6\xB3\x8A", + "\x94\x92"=>"\xE7\x99\xBD", + "\x94\x93"=>"\xE7\xAE\x94", + "\x94\x94"=>"\xE7\xB2\x95", + "\x94\x95"=>"\xE8\x88\xB6", + "\x94\x96"=>"\xE8\x96\x84", + "\x94\x97"=>"\xE8\xBF\xAB", + "\x94\x98"=>"\xE6\x9B\x9D", + "\x94\x99"=>"\xE6\xBC\xA0", + "\x94\x9A"=>"\xE7\x88\x86", + "\x94\x9B"=>"\xE7\xB8\x9B", + "\x94\x9C"=>"\xE8\x8E\xAB", + "\x94\x9D"=>"\xE9\xA7\x81", + "\x94\x9E"=>"\xE9\xBA\xA6", + "\x94\x9F"=>"\xE5\x87\xBD", + "\x94\xA0"=>"\xE7\xAE\xB1", + "\x94\xA1"=>"\xE7\xA1\xB2", + "\x94\xA2"=>"\xE7\xAE\xB8", + "\x94\xA3"=>"\xE8\x82\x87", + "\x94\xA4"=>"\xE7\xAD\x88", + "\x94\xA5"=>"\xE6\xAB\xA8", + "\x94\xA6"=>"\xE5\xB9\xA1", + "\x94\xA7"=>"\xE8\x82\x8C", + "\x94\xA8"=>"\xE7\x95\x91", + "\x94\xA9"=>"\xE7\x95\xA0", + "\x94\xAA"=>"\xE5\x85\xAB", + "\x94\xAB"=>"\xE9\x89\xA2", + "\x94\xAC"=>"\xE6\xBA\x8C", + "\x94\xAD"=>"\xE7\x99\xBA", + "\x94\xAE"=>"\xE9\x86\x97", + "\x94\xAF"=>"\xE9\xAB\xAA", + "\x94\xB0"=>"\xE4\xBC\x90", + "\x94\xB1"=>"\xE7\xBD\xB0", + "\x94\xB2"=>"\xE6\x8A\x9C", + "\x94\xB3"=>"\xE7\xAD\x8F", + "\x94\xB4"=>"\xE9\x96\xA5", + "\x94\xB5"=>"\xE9\xB3\xA9", + "\x94\xB6"=>"\xE5\x99\xBA", + "\x94\xB7"=>"\xE5\xA1\x99", + "\x94\xB8"=>"\xE8\x9B\xA4", + "\x94\xB9"=>"\xE9\x9A\xBC", + "\x94\xBA"=>"\xE4\xBC\xB4", + "\x94\xBB"=>"\xE5\x88\xA4", + "\x94\xBC"=>"\xE5\x8D\x8A", + "\x94\xBD"=>"\xE5\x8F\x8D", + "\x94\xBE"=>"\xE5\x8F\x9B", + "\x94\xBF"=>"\xE5\xB8\x86", + "\x94\xC0"=>"\xE6\x90\xAC", + "\x94\xC1"=>"\xE6\x96\x91", + "\x94\xC2"=>"\xE6\x9D\xBF", + "\x94\xC3"=>"\xE6\xB0\xBE", + "\x94\xC4"=>"\xE6\xB1\x8E", + "\x94\xC5"=>"\xE7\x89\x88", + "\x94\xC6"=>"\xE7\x8A\xAF", + "\x94\xC7"=>"\xE7\x8F\xAD", + "\x94\xC8"=>"\xE7\x95\x94", + "\x94\xC9"=>"\xE7\xB9\x81", + "\x94\xCA"=>"\xE8\x88\xAC", + "\x94\xCB"=>"\xE8\x97\xA9", + "\x94\xCC"=>"\xE8\xB2\xA9", + "\x94\xCD"=>"\xE7\xAF\x84", + "\x94\xCE"=>"\xE9\x87\x86", + "\x94\xCF"=>"\xE7\x85\xA9", + "\x94\xD0"=>"\xE9\xA0\x92", + "\x94\xD1"=>"\xE9\xA3\xAF", + "\x94\xD2"=>"\xE6\x8C\xBD", + "\x94\xD3"=>"\xE6\x99\xA9", + "\x94\xD4"=>"\xE7\x95\xAA", + "\x94\xD5"=>"\xE7\x9B\xA4", + "\x94\xD6"=>"\xE7\xA3\x90", + "\x94\xD7"=>"\xE8\x95\x83", + "\x94\xD8"=>"\xE8\x9B\xAE", + "\x94\xD9"=>"\xE5\x8C\xAA", + "\x94\xDA"=>"\xE5\x8D\x91", + "\x94\xDB"=>"\xE5\x90\xA6", + "\x94\xDC"=>"\xE5\xA6\x83", + "\x94\xDD"=>"\xE5\xBA\x87", + "\x94\xDE"=>"\xE5\xBD\xBC", + "\x94\xDF"=>"\xE6\x82\xB2", + "\x94\xE0"=>"\xE6\x89\x89", + "\x94\xE1"=>"\xE6\x89\xB9", + "\x94\xE2"=>"\xE6\x8A\xAB", + "\x94\xE3"=>"\xE6\x96\x90", + "\x94\xE4"=>"\xE6\xAF\x94", + "\x94\xE5"=>"\xE6\xB3\x8C", + "\x94\xE6"=>"\xE7\x96\xB2", + "\x94\xE7"=>"\xE7\x9A\xAE", + "\x94\xE8"=>"\xE7\xA2\x91", + "\x94\xE9"=>"\xE7\xA7\x98", + "\x94\xEA"=>"\xE7\xB7\x8B", + "\x94\xEB"=>"\xE7\xBD\xB7", + "\x94\xEC"=>"\xE8\x82\xA5", + "\x94\xED"=>"\xE8\xA2\xAB", + "\x94\xEE"=>"\xE8\xAA\xB9", + "\x94\xEF"=>"\xE8\xB2\xBB", + "\x94\xF0"=>"\xE9\x81\xBF", + "\x94\xF1"=>"\xE9\x9D\x9E", + "\x94\xF2"=>"\xE9\xA3\x9B", + "\x94\xF3"=>"\xE6\xA8\x8B", + "\x94\xF4"=>"\xE7\xB0\xB8", + "\x94\xF5"=>"\xE5\x82\x99", + "\x94\xF6"=>"\xE5\xB0\xBE", + "\x94\xF7"=>"\xE5\xBE\xAE", + "\x94\xF8"=>"\xE6\x9E\x87", + "\x94\xF9"=>"\xE6\xAF\x98", + "\x94\xFA"=>"\xE7\x90\xB5", + "\x94\xFB"=>"\xE7\x9C\x89", + "\x94\xFC"=>"\xE7\xBE\x8E", + "\x95\x40"=>"\xE9\xBC\xBB", + "\x95\x41"=>"\xE6\x9F\x8A", + "\x95\x42"=>"\xE7\xA8\x97", + "\x95\x43"=>"\xE5\x8C\xB9", + "\x95\x44"=>"\xE7\x96\x8B", + "\x95\x45"=>"\xE9\xAB\xAD", + "\x95\x46"=>"\xE5\xBD\xA6", + "\x95\x47"=>"\xE8\x86\x9D", + "\x95\x48"=>"\xE8\x8F\xB1", + "\x95\x49"=>"\xE8\x82\x98", + "\x95\x4A"=>"\xE5\xBC\xBC", + "\x95\x4B"=>"\xE5\xBF\x85", + "\x95\x4C"=>"\xE7\x95\xA2", + "\x95\x4D"=>"\xE7\xAD\x86", + "\x95\x4E"=>"\xE9\x80\xBC", + "\x95\x4F"=>"\xE6\xA1\xA7", + "\x95\x50"=>"\xE5\xA7\xAB", + "\x95\x51"=>"\xE5\xAA\x9B", + "\x95\x52"=>"\xE7\xB4\x90", + "\x95\x53"=>"\xE7\x99\xBE", + "\x95\x54"=>"\xE8\xAC\xAC", + "\x95\x55"=>"\xE4\xBF\xB5", + "\x95\x56"=>"\xE5\xBD\xAA", + "\x95\x57"=>"\xE6\xA8\x99", + "\x95\x58"=>"\xE6\xB0\xB7", + "\x95\x59"=>"\xE6\xBC\x82", + "\x95\x5A"=>"\xE7\x93\xA2", + "\x95\x5B"=>"\xE7\xA5\xA8", + "\x95\x5C"=>"\xE8\xA1\xA8", + "\x95\x5D"=>"\xE8\xA9\x95", + "\x95\x5E"=>"\xE8\xB1\xB9", + "\x95\x5F"=>"\xE5\xBB\x9F", + "\x95\x60"=>"\xE6\x8F\x8F", + "\x95\x61"=>"\xE7\x97\x85", + "\x95\x62"=>"\xE7\xA7\x92", + "\x95\x63"=>"\xE8\x8B\x97", + "\x95\x64"=>"\xE9\x8C\xA8", + "\x95\x65"=>"\xE9\x8B\xB2", + "\x95\x66"=>"\xE8\x92\x9C", + "\x95\x67"=>"\xE8\x9B\xAD", + "\x95\x68"=>"\xE9\xB0\xAD", + "\x95\x69"=>"\xE5\x93\x81", + "\x95\x6A"=>"\xE5\xBD\xAC", + "\x95\x6B"=>"\xE6\x96\x8C", + "\x95\x6C"=>"\xE6\xB5\x9C", + "\x95\x6D"=>"\xE7\x80\x95", + "\x95\x6E"=>"\xE8\xB2\xA7", + "\x95\x6F"=>"\xE8\xB3\x93", + "\x95\x70"=>"\xE9\xA0\xBB", + "\x95\x71"=>"\xE6\x95\x8F", + "\x95\x72"=>"\xE7\x93\xB6", + "\x95\x73"=>"\xE4\xB8\x8D", + "\x95\x74"=>"\xE4\xBB\x98", + "\x95\x75"=>"\xE5\x9F\xA0", + "\x95\x76"=>"\xE5\xA4\xAB", + "\x95\x77"=>"\xE5\xA9\xA6", + "\x95\x78"=>"\xE5\xAF\x8C", + "\x95\x79"=>"\xE5\x86\xA8", + "\x95\x7A"=>"\xE5\xB8\x83", + "\x95\x7B"=>"\xE5\xBA\x9C", + "\x95\x7C"=>"\xE6\x80\x96", + "\x95\x7D"=>"\xE6\x89\xB6", + "\x95\x7E"=>"\xE6\x95\xB7", + "\x95\x80"=>"\xE6\x96\xA7", + "\x95\x81"=>"\xE6\x99\xAE", + "\x95\x82"=>"\xE6\xB5\xAE", + "\x95\x83"=>"\xE7\x88\xB6", + "\x95\x84"=>"\xE7\xAC\xA6", + "\x95\x85"=>"\xE8\x85\x90", + "\x95\x86"=>"\xE8\x86\x9A", + "\x95\x87"=>"\xE8\x8A\x99", + "\x95\x88"=>"\xE8\xAD\x9C", + "\x95\x89"=>"\xE8\xB2\xA0", + "\x95\x8A"=>"\xE8\xB3\xA6", + "\x95\x8B"=>"\xE8\xB5\xB4", + "\x95\x8C"=>"\xE9\x98\x9C", + "\x95\x8D"=>"\xE9\x99\x84", + "\x95\x8E"=>"\xE4\xBE\xAE", + "\x95\x8F"=>"\xE6\x92\xAB", + "\x95\x90"=>"\xE6\xAD\xA6", + "\x95\x91"=>"\xE8\x88\x9E", + "\x95\x92"=>"\xE8\x91\xA1", + "\x95\x93"=>"\xE8\x95\xAA", + "\x95\x94"=>"\xE9\x83\xA8", + "\x95\x95"=>"\xE5\xB0\x81", + "\x95\x96"=>"\xE6\xA5\x93", + "\x95\x97"=>"\xE9\xA2\xA8", + "\x95\x98"=>"\xE8\x91\xBA", + "\x95\x99"=>"\xE8\x95\x97", + "\x95\x9A"=>"\xE4\xBC\x8F", + "\x95\x9B"=>"\xE5\x89\xAF", + "\x95\x9C"=>"\xE5\xBE\xA9", + "\x95\x9D"=>"\xE5\xB9\x85", + "\x95\x9E"=>"\xE6\x9C\x8D", + "\x95\x9F"=>"\xE7\xA6\x8F", + "\x95\xA0"=>"\xE8\x85\xB9", + "\x95\xA1"=>"\xE8\xA4\x87", + "\x95\xA2"=>"\xE8\xA6\x86", + "\x95\xA3"=>"\xE6\xB7\xB5", + "\x95\xA4"=>"\xE5\xBC\x97", + "\x95\xA5"=>"\xE6\x89\x95", + "\x95\xA6"=>"\xE6\xB2\xB8", + "\x95\xA7"=>"\xE4\xBB\x8F", + "\x95\xA8"=>"\xE7\x89\xA9", + "\x95\xA9"=>"\xE9\xAE\x92", + "\x95\xAA"=>"\xE5\x88\x86", + "\x95\xAB"=>"\xE5\x90\xBB", + "\x95\xAC"=>"\xE5\x99\xB4", + "\x95\xAD"=>"\xE5\xA2\xB3", + "\x95\xAE"=>"\xE6\x86\xA4", + "\x95\xAF"=>"\xE6\x89\xAE", + "\x95\xB0"=>"\xE7\x84\x9A", + "\x95\xB1"=>"\xE5\xA5\xAE", + "\x95\xB2"=>"\xE7\xB2\x89", + "\x95\xB3"=>"\xE7\xB3\x9E", + "\x95\xB4"=>"\xE7\xB4\x9B", + "\x95\xB5"=>"\xE9\x9B\xB0", + "\x95\xB6"=>"\xE6\x96\x87", + "\x95\xB7"=>"\xE8\x81\x9E", + "\x95\xB8"=>"\xE4\xB8\x99", + "\x95\xB9"=>"\xE4\xBD\xB5", + "\x95\xBA"=>"\xE5\x85\xB5", + "\x95\xBB"=>"\xE5\xA1\x80", + "\x95\xBC"=>"\xE5\xB9\xA3", + "\x95\xBD"=>"\xE5\xB9\xB3", + "\x95\xBE"=>"\xE5\xBC\x8A", + "\x95\xBF"=>"\xE6\x9F\x84", + "\x95\xC0"=>"\xE4\xB8\xA6", + "\x95\xC1"=>"\xE8\x94\xBD", + "\x95\xC2"=>"\xE9\x96\x89", + "\x95\xC3"=>"\xE9\x99\x9B", + "\x95\xC4"=>"\xE7\xB1\xB3", + "\x95\xC5"=>"\xE9\xA0\x81", + "\x95\xC6"=>"\xE5\x83\xBB", + "\x95\xC7"=>"\xE5\xA3\x81", + "\x95\xC8"=>"\xE7\x99\x96", + "\x95\xC9"=>"\xE7\xA2\xA7", + "\x95\xCA"=>"\xE5\x88\xA5", + "\x95\xCB"=>"\xE7\x9E\xA5", + "\x95\xCC"=>"\xE8\x94\x91", + "\x95\xCD"=>"\xE7\xAE\x86", + "\x95\xCE"=>"\xE5\x81\x8F", + "\x95\xCF"=>"\xE5\xA4\x89", + "\x95\xD0"=>"\xE7\x89\x87", + "\x95\xD1"=>"\xE7\xAF\x87", + "\x95\xD2"=>"\xE7\xB7\xA8", + "\x95\xD3"=>"\xE8\xBE\xBA", + "\x95\xD4"=>"\xE8\xBF\x94", + "\x95\xD5"=>"\xE9\x81\x8D", + "\x95\xD6"=>"\xE4\xBE\xBF", + "\x95\xD7"=>"\xE5\x8B\x89", + "\x95\xD8"=>"\xE5\xA8\xA9", + "\x95\xD9"=>"\xE5\xBC\x81", + "\x95\xDA"=>"\xE9\x9E\xAD", + "\x95\xDB"=>"\xE4\xBF\x9D", + "\x95\xDC"=>"\xE8\x88\x97", + "\x95\xDD"=>"\xE9\x8B\xAA", + "\x95\xDE"=>"\xE5\x9C\x83", + "\x95\xDF"=>"\xE6\x8D\x95", + "\x95\xE0"=>"\xE6\xAD\xA9", + "\x95\xE1"=>"\xE7\x94\xAB", + "\x95\xE2"=>"\xE8\xA3\x9C", + "\x95\xE3"=>"\xE8\xBC\x94", + "\x95\xE4"=>"\xE7\xA9\x82", + "\x95\xE5"=>"\xE5\x8B\x9F", + "\x95\xE6"=>"\xE5\xA2\x93", + "\x95\xE7"=>"\xE6\x85\x95", + "\x95\xE8"=>"\xE6\x88\x8A", + "\x95\xE9"=>"\xE6\x9A\xAE", + "\x95\xEA"=>"\xE6\xAF\x8D", + "\x95\xEB"=>"\xE7\xB0\xBF", + "\x95\xEC"=>"\xE8\x8F\xA9", + "\x95\xED"=>"\xE5\x80\xA3", + "\x95\xEE"=>"\xE4\xBF\xB8", + "\x95\xEF"=>"\xE5\x8C\x85", + "\x95\xF0"=>"\xE5\x91\x86", + "\x95\xF1"=>"\xE5\xA0\xB1", + "\x95\xF2"=>"\xE5\xA5\x89", + "\x95\xF3"=>"\xE5\xAE\x9D", + "\x95\xF4"=>"\xE5\xB3\xB0", + "\x95\xF5"=>"\xE5\xB3\xAF", + "\x95\xF6"=>"\xE5\xB4\xA9", + "\x95\xF7"=>"\xE5\xBA\x96", + "\x95\xF8"=>"\xE6\x8A\xB1", + "\x95\xF9"=>"\xE6\x8D\xA7", + "\x95\xFA"=>"\xE6\x94\xBE", + "\x95\xFB"=>"\xE6\x96\xB9", + "\x95\xFC"=>"\xE6\x9C\x8B", + "\x96\x40"=>"\xE6\xB3\x95", + "\x96\x41"=>"\xE6\xB3\xA1", + "\x96\x42"=>"\xE7\x83\xB9", + "\x96\x43"=>"\xE7\xA0\xB2", + "\x96\x44"=>"\xE7\xB8\xAB", + "\x96\x45"=>"\xE8\x83\x9E", + "\x96\x46"=>"\xE8\x8A\xB3", + "\x96\x47"=>"\xE8\x90\x8C", + "\x96\x48"=>"\xE8\x93\xAC", + "\x96\x49"=>"\xE8\x9C\x82", + "\x96\x4A"=>"\xE8\xA4\x92", + "\x96\x4B"=>"\xE8\xA8\xAA", + "\x96\x4C"=>"\xE8\xB1\x8A", + "\x96\x4D"=>"\xE9\x82\xA6", + "\x96\x4E"=>"\xE9\x8B\x92", + "\x96\x4F"=>"\xE9\xA3\xBD", + "\x96\x50"=>"\xE9\xB3\xB3", + "\x96\x51"=>"\xE9\xB5\xAC", + "\x96\x52"=>"\xE4\xB9\x8F", + "\x96\x53"=>"\xE4\xBA\xA1", + "\x96\x54"=>"\xE5\x82\x8D", + "\x96\x55"=>"\xE5\x89\x96", + "\x96\x56"=>"\xE5\x9D\x8A", + "\x96\x57"=>"\xE5\xA6\xA8", + "\x96\x58"=>"\xE5\xB8\xBD", + "\x96\x59"=>"\xE5\xBF\x98", + "\x96\x5A"=>"\xE5\xBF\x99", + "\x96\x5B"=>"\xE6\x88\xBF", + "\x96\x5C"=>"\xE6\x9A\xB4", + "\x96\x5D"=>"\xE6\x9C\x9B", + "\x96\x5E"=>"\xE6\x9F\x90", + "\x96\x5F"=>"\xE6\xA3\x92", + "\x96\x60"=>"\xE5\x86\x92", + "\x96\x61"=>"\xE7\xB4\xA1", + "\x96\x62"=>"\xE8\x82\xAA", + "\x96\x63"=>"\xE8\x86\xA8", + "\x96\x64"=>"\xE8\xAC\x80", + "\x96\x65"=>"\xE8\xB2\x8C", + "\x96\x66"=>"\xE8\xB2\xBF", + "\x96\x67"=>"\xE9\x89\xBE", + "\x96\x68"=>"\xE9\x98\xB2", + "\x96\x69"=>"\xE5\x90\xA0", + "\x96\x6A"=>"\xE9\xA0\xAC", + "\x96\x6B"=>"\xE5\x8C\x97", + "\x96\x6C"=>"\xE5\x83\x95", + "\x96\x6D"=>"\xE5\x8D\x9C", + "\x96\x6E"=>"\xE5\xA2\xA8", + "\x96\x6F"=>"\xE6\x92\xB2", + "\x96\x70"=>"\xE6\x9C\xB4", + "\x96\x71"=>"\xE7\x89\xA7", + "\x96\x72"=>"\xE7\x9D\xA6", + "\x96\x73"=>"\xE7\xA9\x86", + "\x96\x74"=>"\xE9\x87\xA6", + "\x96\x75"=>"\xE5\x8B\x83", + "\x96\x76"=>"\xE6\xB2\xA1", + "\x96\x77"=>"\xE6\xAE\x86", + "\x96\x78"=>"\xE5\xA0\x80", + "\x96\x79"=>"\xE5\xB9\x8C", + "\x96\x7A"=>"\xE5\xA5\x94", + "\x96\x7B"=>"\xE6\x9C\xAC", + "\x96\x7C"=>"\xE7\xBF\xBB", + "\x96\x7D"=>"\xE5\x87\xA1", + "\x96\x7E"=>"\xE7\x9B\x86", + "\x96\x80"=>"\xE6\x91\xA9", + "\x96\x81"=>"\xE7\xA3\xA8", + "\x96\x82"=>"\xE9\xAD\x94", + "\x96\x83"=>"\xE9\xBA\xBB", + "\x96\x84"=>"\xE5\x9F\x8B", + "\x96\x85"=>"\xE5\xA6\xB9", + "\x96\x86"=>"\xE6\x98\xA7", + "\x96\x87"=>"\xE6\x9E\x9A", + "\x96\x88"=>"\xE6\xAF\x8E", + "\x96\x89"=>"\xE5\x93\xA9", + "\x96\x8A"=>"\xE6\xA7\x99", + "\x96\x8B"=>"\xE5\xB9\x95", + "\x96\x8C"=>"\xE8\x86\x9C", + "\x96\x8D"=>"\xE6\x9E\x95", + "\x96\x8E"=>"\xE9\xAE\xAA", + "\x96\x8F"=>"\xE6\x9F\xBE", + "\x96\x90"=>"\xE9\xB1\x92", + "\x96\x91"=>"\xE6\xA1\x9D", + "\x96\x92"=>"\xE4\xBA\xA6", + "\x96\x93"=>"\xE4\xBF\xA3", + "\x96\x94"=>"\xE5\x8F\x88", + "\x96\x95"=>"\xE6\x8A\xB9", + "\x96\x96"=>"\xE6\x9C\xAB", + "\x96\x97"=>"\xE6\xB2\xAB", + "\x96\x98"=>"\xE8\xBF\x84", + "\x96\x99"=>"\xE4\xBE\xAD", + "\x96\x9A"=>"\xE7\xB9\xAD", + "\x96\x9B"=>"\xE9\xBA\xBF", + "\x96\x9C"=>"\xE4\xB8\x87", + "\x96\x9D"=>"\xE6\x85\xA2", + "\x96\x9E"=>"\xE6\xBA\x80", + "\x96\x9F"=>"\xE6\xBC\xAB", + "\x96\xA0"=>"\xE8\x94\x93", + "\x96\xA1"=>"\xE5\x91\xB3", + "\x96\xA2"=>"\xE6\x9C\xAA", + "\x96\xA3"=>"\xE9\xAD\x85", + "\x96\xA4"=>"\xE5\xB7\xB3", + "\x96\xA5"=>"\xE7\xAE\x95", + "\x96\xA6"=>"\xE5\xB2\xAC", + "\x96\xA7"=>"\xE5\xAF\x86", + "\x96\xA8"=>"\xE8\x9C\x9C", + "\x96\xA9"=>"\xE6\xB9\x8A", + "\x96\xAA"=>"\xE8\x93\x91", + "\x96\xAB"=>"\xE7\xA8\x94", + "\x96\xAC"=>"\xE8\x84\x88", + "\x96\xAD"=>"\xE5\xA6\x99", + "\x96\xAE"=>"\xE7\xB2\x8D", + "\x96\xAF"=>"\xE6\xB0\x91", + "\x96\xB0"=>"\xE7\x9C\xA0", + "\x96\xB1"=>"\xE5\x8B\x99", + "\x96\xB2"=>"\xE5\xA4\xA2", + "\x96\xB3"=>"\xE7\x84\xA1", + "\x96\xB4"=>"\xE7\x89\x9F", + "\x96\xB5"=>"\xE7\x9F\x9B", + "\x96\xB6"=>"\xE9\x9C\xA7", + "\x96\xB7"=>"\xE9\xB5\xA1", + "\x96\xB8"=>"\xE6\xA4\x8B", + "\x96\xB9"=>"\xE5\xA9\xBF", + "\x96\xBA"=>"\xE5\xA8\x98", + "\x96\xBB"=>"\xE5\x86\xA5", + "\x96\xBC"=>"\xE5\x90\x8D", + "\x96\xBD"=>"\xE5\x91\xBD", + "\x96\xBE"=>"\xE6\x98\x8E", + "\x96\xBF"=>"\xE7\x9B\x9F", + "\x96\xC0"=>"\xE8\xBF\xB7", + "\x96\xC1"=>"\xE9\x8A\x98", + "\x96\xC2"=>"\xE9\xB3\xB4", + "\x96\xC3"=>"\xE5\xA7\xAA", + "\x96\xC4"=>"\xE7\x89\x9D", + "\x96\xC5"=>"\xE6\xBB\x85", + "\x96\xC6"=>"\xE5\x85\x8D", + "\x96\xC7"=>"\xE6\xA3\x89", + "\x96\xC8"=>"\xE7\xB6\xBF", + "\x96\xC9"=>"\xE7\xB7\xAC", + "\x96\xCA"=>"\xE9\x9D\xA2", + "\x96\xCB"=>"\xE9\xBA\xBA", + "\x96\xCC"=>"\xE6\x91\xB8", + "\x96\xCD"=>"\xE6\xA8\xA1", + "\x96\xCE"=>"\xE8\x8C\x82", + "\x96\xCF"=>"\xE5\xA6\x84", + "\x96\xD0"=>"\xE5\xAD\x9F", + "\x96\xD1"=>"\xE6\xAF\x9B", + "\x96\xD2"=>"\xE7\x8C\x9B", + "\x96\xD3"=>"\xE7\x9B\xB2", + "\x96\xD4"=>"\xE7\xB6\xB2", + "\x96\xD5"=>"\xE8\x80\x97", + "\x96\xD6"=>"\xE8\x92\x99", + "\x96\xD7"=>"\xE5\x84\xB2", + "\x96\xD8"=>"\xE6\x9C\xA8", + "\x96\xD9"=>"\xE9\xBB\x99", + "\x96\xDA"=>"\xE7\x9B\xAE", + "\x96\xDB"=>"\xE6\x9D\xA2", + "\x96\xDC"=>"\xE5\x8B\xBF", + "\x96\xDD"=>"\xE9\xA4\x85", + "\x96\xDE"=>"\xE5\xB0\xA4", + "\x96\xDF"=>"\xE6\x88\xBB", + "\x96\xE0"=>"\xE7\xB1\xBE", + "\x96\xE1"=>"\xE8\xB2\xB0", + "\x96\xE2"=>"\xE5\x95\x8F", + "\x96\xE3"=>"\xE6\x82\xB6", + "\x96\xE4"=>"\xE7\xB4\x8B", + "\x96\xE5"=>"\xE9\x96\x80", + "\x96\xE6"=>"\xE5\x8C\x81", + "\x96\xE7"=>"\xE4\xB9\x9F", + "\x96\xE8"=>"\xE5\x86\xB6", + "\x96\xE9"=>"\xE5\xA4\x9C", + "\x96\xEA"=>"\xE7\x88\xBA", + "\x96\xEB"=>"\xE8\x80\xB6", + "\x96\xEC"=>"\xE9\x87\x8E", + "\x96\xED"=>"\xE5\xBC\xA5", + "\x96\xEE"=>"\xE7\x9F\xA2", + "\x96\xEF"=>"\xE5\x8E\x84", + "\x96\xF0"=>"\xE5\xBD\xB9", + "\x96\xF1"=>"\xE7\xB4\x84", + "\x96\xF2"=>"\xE8\x96\xAC", + "\x96\xF3"=>"\xE8\xA8\xB3", + "\x96\xF4"=>"\xE8\xBA\x8D", + "\x96\xF5"=>"\xE9\x9D\x96", + "\x96\xF6"=>"\xE6\x9F\xB3", + "\x96\xF7"=>"\xE8\x96\xAE", + "\x96\xF8"=>"\xE9\x91\x93", + "\x96\xF9"=>"\xE6\x84\x89", + "\x96\xFA"=>"\xE6\x84\x88", + "\x96\xFB"=>"\xE6\xB2\xB9", + "\x96\xFC"=>"\xE7\x99\x92", + "\x97\x40"=>"\xE8\xAB\xAD", + "\x97\x41"=>"\xE8\xBC\xB8", + "\x97\x42"=>"\xE5\x94\xAF", + "\x97\x43"=>"\xE4\xBD\x91", + "\x97\x44"=>"\xE5\x84\xAA", + "\x97\x45"=>"\xE5\x8B\x87", + "\x97\x46"=>"\xE5\x8F\x8B", + "\x97\x47"=>"\xE5\xAE\xA5", + "\x97\x48"=>"\xE5\xB9\xBD", + "\x97\x49"=>"\xE6\x82\xA0", + "\x97\x4A"=>"\xE6\x86\x82", + "\x97\x4B"=>"\xE6\x8F\x96", + "\x97\x4C"=>"\xE6\x9C\x89", + "\x97\x4D"=>"\xE6\x9F\x9A", + "\x97\x4E"=>"\xE6\xB9\xA7", + "\x97\x4F"=>"\xE6\xB6\x8C", + "\x97\x50"=>"\xE7\x8C\xB6", + "\x97\x51"=>"\xE7\x8C\xB7", + "\x97\x52"=>"\xE7\x94\xB1", + "\x97\x53"=>"\xE7\xA5\x90", + "\x97\x54"=>"\xE8\xA3\x95", + "\x97\x55"=>"\xE8\xAA\x98", + "\x97\x56"=>"\xE9\x81\x8A", + "\x97\x57"=>"\xE9\x82\x91", + "\x97\x58"=>"\xE9\x83\xB5", + "\x97\x59"=>"\xE9\x9B\x84", + "\x97\x5A"=>"\xE8\x9E\x8D", + "\x97\x5B"=>"\xE5\xA4\x95", + "\x97\x5C"=>"\xE4\xBA\x88", + "\x97\x5D"=>"\xE4\xBD\x99", + "\x97\x5E"=>"\xE4\xB8\x8E", + "\x97\x5F"=>"\xE8\xAA\x89", + "\x97\x60"=>"\xE8\xBC\xBF", + "\x97\x61"=>"\xE9\xA0\x90", + "\x97\x62"=>"\xE5\x82\xAD", + "\x97\x63"=>"\xE5\xB9\xBC", + "\x97\x64"=>"\xE5\xA6\x96", + "\x97\x65"=>"\xE5\xAE\xB9", + "\x97\x66"=>"\xE5\xBA\xB8", + "\x97\x67"=>"\xE6\x8F\x9A", + "\x97\x68"=>"\xE6\x8F\xBA", + "\x97\x69"=>"\xE6\x93\x81", + "\x97\x6A"=>"\xE6\x9B\x9C", + "\x97\x6B"=>"\xE6\xA5\x8A", + "\x97\x6C"=>"\xE6\xA7\x98", + "\x97\x6D"=>"\xE6\xB4\x8B", + "\x97\x6E"=>"\xE6\xBA\xB6", + "\x97\x6F"=>"\xE7\x86\x94", + "\x97\x70"=>"\xE7\x94\xA8", + "\x97\x71"=>"\xE7\xAA\xAF", + "\x97\x72"=>"\xE7\xBE\x8A", + "\x97\x73"=>"\xE8\x80\x80", + "\x97\x74"=>"\xE8\x91\x89", + "\x97\x75"=>"\xE8\x93\x89", + "\x97\x76"=>"\xE8\xA6\x81", + "\x97\x77"=>"\xE8\xAC\xA1", + "\x97\x78"=>"\xE8\xB8\x8A", + "\x97\x79"=>"\xE9\x81\xA5", + "\x97\x7A"=>"\xE9\x99\xBD", + "\x97\x7B"=>"\xE9\xA4\x8A", + "\x97\x7C"=>"\xE6\x85\xBE", + "\x97\x7D"=>"\xE6\x8A\x91", + "\x97\x7E"=>"\xE6\xAC\xB2", + "\x97\x80"=>"\xE6\xB2\x83", + "\x97\x81"=>"\xE6\xB5\xB4", + "\x97\x82"=>"\xE7\xBF\x8C", + "\x97\x83"=>"\xE7\xBF\xBC", + "\x97\x84"=>"\xE6\xB7\x80", + "\x97\x85"=>"\xE7\xBE\x85", + "\x97\x86"=>"\xE8\x9E\xBA", + "\x97\x87"=>"\xE8\xA3\xB8", + "\x97\x88"=>"\xE6\x9D\xA5", + "\x97\x89"=>"\xE8\x8E\xB1", + "\x97\x8A"=>"\xE9\xA0\xBC", + "\x97\x8B"=>"\xE9\x9B\xB7", + "\x97\x8C"=>"\xE6\xB4\x9B", + "\x97\x8D"=>"\xE7\xB5\xA1", + "\x97\x8E"=>"\xE8\x90\xBD", + "\x97\x8F"=>"\xE9\x85\xAA", + "\x97\x90"=>"\xE4\xB9\xB1", + "\x97\x91"=>"\xE5\x8D\xB5", + "\x97\x92"=>"\xE5\xB5\x90", + "\x97\x93"=>"\xE6\xAC\x84", + "\x97\x94"=>"\xE6\xBF\xAB", + "\x97\x95"=>"\xE8\x97\x8D", + "\x97\x96"=>"\xE8\x98\xAD", + "\x97\x97"=>"\xE8\xA6\xA7", + "\x97\x98"=>"\xE5\x88\xA9", + "\x97\x99"=>"\xE5\x90\x8F", + "\x97\x9A"=>"\xE5\xB1\xA5", + "\x97\x9B"=>"\xE6\x9D\x8E", + "\x97\x9C"=>"\xE6\xA2\xA8", + "\x97\x9D"=>"\xE7\x90\x86", + "\x97\x9E"=>"\xE7\x92\x83", + "\x97\x9F"=>"\xE7\x97\xA2", + "\x97\xA0"=>"\xE8\xA3\x8F", + "\x97\xA1"=>"\xE8\xA3\xA1", + "\x97\xA2"=>"\xE9\x87\x8C", + "\x97\xA3"=>"\xE9\x9B\xA2", + "\x97\xA4"=>"\xE9\x99\xB8", + "\x97\xA5"=>"\xE5\xBE\x8B", + "\x97\xA6"=>"\xE7\x8E\x87", + "\x97\xA7"=>"\xE7\xAB\x8B", + "\x97\xA8"=>"\xE8\x91\x8E", + "\x97\xA9"=>"\xE6\x8E\xA0", + "\x97\xAA"=>"\xE7\x95\xA5", + "\x97\xAB"=>"\xE5\x8A\x89", + "\x97\xAC"=>"\xE6\xB5\x81", + "\x97\xAD"=>"\xE6\xBA\x9C", + "\x97\xAE"=>"\xE7\x90\x89", + "\x97\xAF"=>"\xE7\x95\x99", + "\x97\xB0"=>"\xE7\xA1\xAB", + "\x97\xB1"=>"\xE7\xB2\x92", + "\x97\xB2"=>"\xE9\x9A\x86", + "\x97\xB3"=>"\xE7\xAB\x9C", + "\x97\xB4"=>"\xE9\xBE\x8D", + "\x97\xB5"=>"\xE4\xBE\xB6", + "\x97\xB6"=>"\xE6\x85\xAE", + "\x97\xB7"=>"\xE6\x97\x85", + "\x97\xB8"=>"\xE8\x99\x9C", + "\x97\xB9"=>"\xE4\xBA\x86", + "\x97\xBA"=>"\xE4\xBA\xAE", + "\x97\xBB"=>"\xE5\x83\x9A", + "\x97\xBC"=>"\xE4\xB8\xA1", + "\x97\xBD"=>"\xE5\x87\x8C", + "\x97\xBE"=>"\xE5\xAF\xAE", + "\x97\xBF"=>"\xE6\x96\x99", + "\x97\xC0"=>"\xE6\xA2\x81", + "\x97\xC1"=>"\xE6\xB6\xBC", + "\x97\xC2"=>"\xE7\x8C\x9F", + "\x97\xC3"=>"\xE7\x99\x82", + "\x97\xC4"=>"\xE7\x9E\xAD", + "\x97\xC5"=>"\xE7\xA8\x9C", + "\x97\xC6"=>"\xE7\xB3\xA7", + "\x97\xC7"=>"\xE8\x89\xAF", + "\x97\xC8"=>"\xE8\xAB\x92", + "\x97\xC9"=>"\xE9\x81\xBC", + "\x97\xCA"=>"\xE9\x87\x8F", + "\x97\xCB"=>"\xE9\x99\xB5", + "\x97\xCC"=>"\xE9\xA0\x98", + "\x97\xCD"=>"\xE5\x8A\x9B", + "\x97\xCE"=>"\xE7\xB7\x91", + "\x97\xCF"=>"\xE5\x80\xAB", + "\x97\xD0"=>"\xE5\x8E\x98", + "\x97\xD1"=>"\xE6\x9E\x97", + "\x97\xD2"=>"\xE6\xB7\x8B", + "\x97\xD3"=>"\xE7\x87\x90", + "\x97\xD4"=>"\xE7\x90\xB3", + "\x97\xD5"=>"\xE8\x87\xA8", + "\x97\xD6"=>"\xE8\xBC\xAA", + "\x97\xD7"=>"\xE9\x9A\xA3", + "\x97\xD8"=>"\xE9\xB1\x97", + "\x97\xD9"=>"\xE9\xBA\x9F", + "\x97\xDA"=>"\xE7\x91\xA0", + "\x97\xDB"=>"\xE5\xA1\x81", + "\x97\xDC"=>"\xE6\xB6\x99", + "\x97\xDD"=>"\xE7\xB4\xAF", + "\x97\xDE"=>"\xE9\xA1\x9E", + "\x97\xDF"=>"\xE4\xBB\xA4", + "\x97\xE0"=>"\xE4\xBC\xB6", + "\x97\xE1"=>"\xE4\xBE\x8B", + "\x97\xE2"=>"\xE5\x86\xB7", + "\x97\xE3"=>"\xE5\x8A\xB1", + "\x97\xE4"=>"\xE5\xB6\xBA", + "\x97\xE5"=>"\xE6\x80\x9C", + "\x97\xE6"=>"\xE7\x8E\xB2", + "\x97\xE7"=>"\xE7\xA4\xBC", + "\x97\xE8"=>"\xE8\x8B\x93", + "\x97\xE9"=>"\xE9\x88\xB4", + "\x97\xEA"=>"\xE9\x9A\xB7", + "\x97\xEB"=>"\xE9\x9B\xB6", + "\x97\xEC"=>"\xE9\x9C\x8A", + "\x97\xED"=>"\xE9\xBA\x97", + "\x97\xEE"=>"\xE9\xBD\xA2", + "\x97\xEF"=>"\xE6\x9A\xA6", + "\x97\xF0"=>"\xE6\xAD\xB4", + "\x97\xF1"=>"\xE5\x88\x97", + "\x97\xF2"=>"\xE5\x8A\xA3", + "\x97\xF3"=>"\xE7\x83\x88", + "\x97\xF4"=>"\xE8\xA3\x82", + "\x97\xF5"=>"\xE5\xBB\x89", + "\x97\xF6"=>"\xE6\x81\x8B", + "\x97\xF7"=>"\xE6\x86\x90", + "\x97\xF8"=>"\xE6\xBC\xA3", + "\x97\xF9"=>"\xE7\x85\x89", + "\x97\xFA"=>"\xE7\xB0\xBE", + "\x97\xFB"=>"\xE7\xB7\xB4", + "\x97\xFC"=>"\xE8\x81\xAF", + "\x98\x40"=>"\xE8\x93\xAE", + "\x98\x41"=>"\xE9\x80\xA3", + "\x98\x42"=>"\xE9\x8C\xAC", + "\x98\x43"=>"\xE5\x91\x82", + "\x98\x44"=>"\xE9\xAD\xAF", + "\x98\x45"=>"\xE6\xAB\x93", + "\x98\x46"=>"\xE7\x82\x89", + "\x98\x47"=>"\xE8\xB3\x82", + "\x98\x48"=>"\xE8\xB7\xAF", + "\x98\x49"=>"\xE9\x9C\xB2", + "\x98\x4A"=>"\xE5\x8A\xB4", + "\x98\x4B"=>"\xE5\xA9\x81", + "\x98\x4C"=>"\xE5\xBB\x8A", + "\x98\x4D"=>"\xE5\xBC\x84", + "\x98\x4E"=>"\xE6\x9C\x97", + "\x98\x4F"=>"\xE6\xA5\xBC", + "\x98\x50"=>"\xE6\xA6\x94", + "\x98\x51"=>"\xE6\xB5\xAA", + "\x98\x52"=>"\xE6\xBC\x8F", + "\x98\x53"=>"\xE7\x89\xA2", + "\x98\x54"=>"\xE7\x8B\xBC", + "\x98\x55"=>"\xE7\xAF\xAD", + "\x98\x56"=>"\xE8\x80\x81", + "\x98\x57"=>"\xE8\x81\xBE", + "\x98\x58"=>"\xE8\x9D\x8B", + "\x98\x59"=>"\xE9\x83\x8E", + "\x98\x5A"=>"\xE5\x85\xAD", + "\x98\x5B"=>"\xE9\xBA\x93", + "\x98\x5C"=>"\xE7\xA6\x84", + "\x98\x5D"=>"\xE8\x82\x8B", + "\x98\x5E"=>"\xE9\x8C\xB2", + "\x98\x5F"=>"\xE8\xAB\x96", + "\x98\x60"=>"\xE5\x80\xAD", + "\x98\x61"=>"\xE5\x92\x8C", + "\x98\x62"=>"\xE8\xA9\xB1", + "\x98\x63"=>"\xE6\xAD\xAA", + "\x98\x64"=>"\xE8\xB3\x84", + "\x98\x65"=>"\xE8\x84\x87", + "\x98\x66"=>"\xE6\x83\x91", + "\x98\x67"=>"\xE6\x9E\xA0", + "\x98\x68"=>"\xE9\xB7\xB2", + "\x98\x69"=>"\xE4\xBA\x99", + "\x98\x6A"=>"\xE4\xBA\x98", + "\x98\x6B"=>"\xE9\xB0\x90", + "\x98\x6C"=>"\xE8\xA9\xAB", + "\x98\x6D"=>"\xE8\x97\x81", + "\x98\x6E"=>"\xE8\x95\xA8", + "\x98\x6F"=>"\xE6\xA4\x80", + "\x98\x70"=>"\xE6\xB9\xBE", + "\x98\x71"=>"\xE7\xA2\x97", + "\x98\x72"=>"\xE8\x85\x95", + "\x98\x9F"=>"\xE5\xBC\x8C", + "\x98\xA0"=>"\xE4\xB8\x90", + "\x98\xA1"=>"\xE4\xB8\x95", + "\x98\xA2"=>"\xE4\xB8\xAA", + "\x98\xA3"=>"\xE4\xB8\xB1", + "\x98\xA4"=>"\xE4\xB8\xB6", + "\x98\xA5"=>"\xE4\xB8\xBC", + "\x98\xA6"=>"\xE4\xB8\xBF", + "\x98\xA7"=>"\xE4\xB9\x82", + "\x98\xA8"=>"\xE4\xB9\x96", + "\x98\xA9"=>"\xE4\xB9\x98", + "\x98\xAA"=>"\xE4\xBA\x82", + "\x98\xAB"=>"\xE4\xBA\x85", + "\x98\xAC"=>"\xE8\xB1\xAB", + "\x98\xAD"=>"\xE4\xBA\x8A", + "\x98\xAE"=>"\xE8\x88\x92", + "\x98\xAF"=>"\xE5\xBC\x8D", + "\x98\xB0"=>"\xE4\xBA\x8E", + "\x98\xB1"=>"\xE4\xBA\x9E", + "\x98\xB2"=>"\xE4\xBA\x9F", + "\x98\xB3"=>"\xE4\xBA\xA0", + "\x98\xB4"=>"\xE4\xBA\xA2", + "\x98\xB5"=>"\xE4\xBA\xB0", + "\x98\xB6"=>"\xE4\xBA\xB3", + "\x98\xB7"=>"\xE4\xBA\xB6", + "\x98\xB8"=>"\xE4\xBB\x8E", + "\x98\xB9"=>"\xE4\xBB\x8D", + "\x98\xBA"=>"\xE4\xBB\x84", + "\x98\xBB"=>"\xE4\xBB\x86", + "\x98\xBC"=>"\xE4\xBB\x82", + "\x98\xBD"=>"\xE4\xBB\x97", + "\x98\xBE"=>"\xE4\xBB\x9E", + "\x98\xBF"=>"\xE4\xBB\xAD", + "\x98\xC0"=>"\xE4\xBB\x9F", + "\x98\xC1"=>"\xE4\xBB\xB7", + "\x98\xC2"=>"\xE4\xBC\x89", + "\x98\xC3"=>"\xE4\xBD\x9A", + "\x98\xC4"=>"\xE4\xBC\xB0", + "\x98\xC5"=>"\xE4\xBD\x9B", + "\x98\xC6"=>"\xE4\xBD\x9D", + "\x98\xC7"=>"\xE4\xBD\x97", + "\x98\xC8"=>"\xE4\xBD\x87", + "\x98\xC9"=>"\xE4\xBD\xB6", + "\x98\xCA"=>"\xE4\xBE\x88", + "\x98\xCB"=>"\xE4\xBE\x8F", + "\x98\xCC"=>"\xE4\xBE\x98", + "\x98\xCD"=>"\xE4\xBD\xBB", + "\x98\xCE"=>"\xE4\xBD\xA9", + "\x98\xCF"=>"\xE4\xBD\xB0", + "\x98\xD0"=>"\xE4\xBE\x91", + "\x98\xD1"=>"\xE4\xBD\xAF", + "\x98\xD2"=>"\xE4\xBE\x86", + "\x98\xD3"=>"\xE4\xBE\x96", + "\x98\xD4"=>"\xE5\x84\x98", + "\x98\xD5"=>"\xE4\xBF\x94", + "\x98\xD6"=>"\xE4\xBF\x9F", + "\x98\xD7"=>"\xE4\xBF\x8E", + "\x98\xD8"=>"\xE4\xBF\x98", + "\x98\xD9"=>"\xE4\xBF\x9B", + "\x98\xDA"=>"\xE4\xBF\x91", + "\x98\xDB"=>"\xE4\xBF\x9A", + "\x98\xDC"=>"\xE4\xBF\x90", + "\x98\xDD"=>"\xE4\xBF\xA4", + "\x98\xDE"=>"\xE4\xBF\xA5", + "\x98\xDF"=>"\xE5\x80\x9A", + "\x98\xE0"=>"\xE5\x80\xA8", + "\x98\xE1"=>"\xE5\x80\x94", + "\x98\xE2"=>"\xE5\x80\xAA", + "\x98\xE3"=>"\xE5\x80\xA5", + "\x98\xE4"=>"\xE5\x80\x85", + "\x98\xE5"=>"\xE4\xBC\x9C", + "\x98\xE6"=>"\xE4\xBF\xB6", + "\x98\xE7"=>"\xE5\x80\xA1", + "\x98\xE8"=>"\xE5\x80\xA9", + "\x98\xE9"=>"\xE5\x80\xAC", + "\x98\xEA"=>"\xE4\xBF\xBE", + "\x98\xEB"=>"\xE4\xBF\xAF", + "\x98\xEC"=>"\xE5\x80\x91", + "\x98\xED"=>"\xE5\x80\x86", + "\x98\xEE"=>"\xE5\x81\x83", + "\x98\xEF"=>"\xE5\x81\x87", + "\x98\xF0"=>"\xE6\x9C\x83", + "\x98\xF1"=>"\xE5\x81\x95", + "\x98\xF2"=>"\xE5\x81\x90", + "\x98\xF3"=>"\xE5\x81\x88", + "\x98\xF4"=>"\xE5\x81\x9A", + "\x98\xF5"=>"\xE5\x81\x96", + "\x98\xF6"=>"\xE5\x81\xAC", + "\x98\xF7"=>"\xE5\x81\xB8", + "\x98\xF8"=>"\xE5\x82\x80", + "\x98\xF9"=>"\xE5\x82\x9A", + "\x98\xFA"=>"\xE5\x82\x85", + "\x98\xFB"=>"\xE5\x82\xB4", + "\x98\xFC"=>"\xE5\x82\xB2", + "\x99\x40"=>"\xE5\x83\x89", + "\x99\x41"=>"\xE5\x83\x8A", + "\x99\x42"=>"\xE5\x82\xB3", + "\x99\x43"=>"\xE5\x83\x82", + "\x99\x44"=>"\xE5\x83\x96", + "\x99\x45"=>"\xE5\x83\x9E", + "\x99\x46"=>"\xE5\x83\xA5", + "\x99\x47"=>"\xE5\x83\xAD", + "\x99\x48"=>"\xE5\x83\xA3", + "\x99\x49"=>"\xE5\x83\xAE", + "\x99\x4A"=>"\xE5\x83\xB9", + "\x99\x4B"=>"\xE5\x83\xB5", + "\x99\x4C"=>"\xE5\x84\x89", + "\x99\x4D"=>"\xE5\x84\x81", + "\x99\x4E"=>"\xE5\x84\x82", + "\x99\x4F"=>"\xE5\x84\x96", + "\x99\x50"=>"\xE5\x84\x95", + "\x99\x51"=>"\xE5\x84\x94", + "\x99\x52"=>"\xE5\x84\x9A", + "\x99\x53"=>"\xE5\x84\xA1", + "\x99\x54"=>"\xE5\x84\xBA", + "\x99\x55"=>"\xE5\x84\xB7", + "\x99\x56"=>"\xE5\x84\xBC", + "\x99\x57"=>"\xE5\x84\xBB", + "\x99\x58"=>"\xE5\x84\xBF", + "\x99\x59"=>"\xE5\x85\x80", + "\x99\x5A"=>"\xE5\x85\x92", + "\x99\x5B"=>"\xE5\x85\x8C", + "\x99\x5C"=>"\xE5\x85\x94", + "\x99\x5D"=>"\xE5\x85\xA2", + "\x99\x5E"=>"\xE7\xAB\xB8", + "\x99\x5F"=>"\xE5\x85\xA9", + "\x99\x60"=>"\xE5\x85\xAA", + "\x99\x61"=>"\xE5\x85\xAE", + "\x99\x62"=>"\xE5\x86\x80", + "\x99\x63"=>"\xE5\x86\x82", + "\x99\x64"=>"\xE5\x9B\x98", + "\x99\x65"=>"\xE5\x86\x8C", + "\x99\x66"=>"\xE5\x86\x89", + "\x99\x67"=>"\xE5\x86\x8F", + "\x99\x68"=>"\xE5\x86\x91", + "\x99\x69"=>"\xE5\x86\x93", + "\x99\x6A"=>"\xE5\x86\x95", + "\x99\x6B"=>"\xE5\x86\x96", + "\x99\x6C"=>"\xE5\x86\xA4", + "\x99\x6D"=>"\xE5\x86\xA6", + "\x99\x6E"=>"\xE5\x86\xA2", + "\x99\x6F"=>"\xE5\x86\xA9", + "\x99\x70"=>"\xE5\x86\xAA", + "\x99\x71"=>"\xE5\x86\xAB", + "\x99\x72"=>"\xE5\x86\xB3", + "\x99\x73"=>"\xE5\x86\xB1", + "\x99\x74"=>"\xE5\x86\xB2", + "\x99\x75"=>"\xE5\x86\xB0", + "\x99\x76"=>"\xE5\x86\xB5", + "\x99\x77"=>"\xE5\x86\xBD", + "\x99\x78"=>"\xE5\x87\x85", + "\x99\x79"=>"\xE5\x87\x89", + "\x99\x7A"=>"\xE5\x87\x9B", + "\x99\x7B"=>"\xE5\x87\xA0", + "\x99\x7C"=>"\xE8\x99\x95", + "\x99\x7D"=>"\xE5\x87\xA9", + "\x99\x7E"=>"\xE5\x87\xAD", + "\x99\x80"=>"\xE5\x87\xB0", + "\x99\x81"=>"\xE5\x87\xB5", + "\x99\x82"=>"\xE5\x87\xBE", + "\x99\x83"=>"\xE5\x88\x84", + "\x99\x84"=>"\xE5\x88\x8B", + "\x99\x85"=>"\xE5\x88\x94", + "\x99\x86"=>"\xE5\x88\x8E", + "\x99\x87"=>"\xE5\x88\xA7", + "\x99\x88"=>"\xE5\x88\xAA", + "\x99\x89"=>"\xE5\x88\xAE", + "\x99\x8A"=>"\xE5\x88\xB3", + "\x99\x8B"=>"\xE5\x88\xB9", + "\x99\x8C"=>"\xE5\x89\x8F", + "\x99\x8D"=>"\xE5\x89\x84", + "\x99\x8E"=>"\xE5\x89\x8B", + "\x99\x8F"=>"\xE5\x89\x8C", + "\x99\x90"=>"\xE5\x89\x9E", + "\x99\x91"=>"\xE5\x89\x94", + "\x99\x92"=>"\xE5\x89\xAA", + "\x99\x93"=>"\xE5\x89\xB4", + "\x99\x94"=>"\xE5\x89\xA9", + "\x99\x95"=>"\xE5\x89\xB3", + "\x99\x96"=>"\xE5\x89\xBF", + "\x99\x97"=>"\xE5\x89\xBD", + "\x99\x98"=>"\xE5\x8A\x8D", + "\x99\x99"=>"\xE5\x8A\x94", + "\x99\x9A"=>"\xE5\x8A\x92", + "\x99\x9B"=>"\xE5\x89\xB1", + "\x99\x9C"=>"\xE5\x8A\x88", + "\x99\x9D"=>"\xE5\x8A\x91", + "\x99\x9E"=>"\xE8\xBE\xA8", + "\x99\x9F"=>"\xE8\xBE\xA7", + "\x99\xA0"=>"\xE5\x8A\xAC", + "\x99\xA1"=>"\xE5\x8A\xAD", + "\x99\xA2"=>"\xE5\x8A\xBC", + "\x99\xA3"=>"\xE5\x8A\xB5", + "\x99\xA4"=>"\xE5\x8B\x81", + "\x99\xA5"=>"\xE5\x8B\x8D", + "\x99\xA6"=>"\xE5\x8B\x97", + "\x99\xA7"=>"\xE5\x8B\x9E", + "\x99\xA8"=>"\xE5\x8B\xA3", + "\x99\xA9"=>"\xE5\x8B\xA6", + "\x99\xAA"=>"\xE9\xA3\xAD", + "\x99\xAB"=>"\xE5\x8B\xA0", + "\x99\xAC"=>"\xE5\x8B\xB3", + "\x99\xAD"=>"\xE5\x8B\xB5", + "\x99\xAE"=>"\xE5\x8B\xB8", + "\x99\xAF"=>"\xE5\x8B\xB9", + "\x99\xB0"=>"\xE5\x8C\x86", + "\x99\xB1"=>"\xE5\x8C\x88", + "\x99\xB2"=>"\xE7\x94\xB8", + "\x99\xB3"=>"\xE5\x8C\x8D", + "\x99\xB4"=>"\xE5\x8C\x90", + "\x99\xB5"=>"\xE5\x8C\x8F", + "\x99\xB6"=>"\xE5\x8C\x95", + "\x99\xB7"=>"\xE5\x8C\x9A", + "\x99\xB8"=>"\xE5\x8C\xA3", + "\x99\xB9"=>"\xE5\x8C\xAF", + "\x99\xBA"=>"\xE5\x8C\xB1", + "\x99\xBB"=>"\xE5\x8C\xB3", + "\x99\xBC"=>"\xE5\x8C\xB8", + "\x99\xBD"=>"\xE5\x8D\x80", + "\x99\xBE"=>"\xE5\x8D\x86", + "\x99\xBF"=>"\xE5\x8D\x85", + "\x99\xC0"=>"\xE4\xB8\x97", + "\x99\xC1"=>"\xE5\x8D\x89", + "\x99\xC2"=>"\xE5\x8D\x8D", + "\x99\xC3"=>"\xE5\x87\x96", + "\x99\xC4"=>"\xE5\x8D\x9E", + "\x99\xC5"=>"\xE5\x8D\xA9", + "\x99\xC6"=>"\xE5\x8D\xAE", + "\x99\xC7"=>"\xE5\xA4\x98", + "\x99\xC8"=>"\xE5\x8D\xBB", + "\x99\xC9"=>"\xE5\x8D\xB7", + "\x99\xCA"=>"\xE5\x8E\x82", + "\x99\xCB"=>"\xE5\x8E\x96", + "\x99\xCC"=>"\xE5\x8E\xA0", + "\x99\xCD"=>"\xE5\x8E\xA6", + "\x99\xCE"=>"\xE5\x8E\xA5", + "\x99\xCF"=>"\xE5\x8E\xAE", + "\x99\xD0"=>"\xE5\x8E\xB0", + "\x99\xD1"=>"\xE5\x8E\xB6", + "\x99\xD2"=>"\xE5\x8F\x83", + "\x99\xD3"=>"\xE7\xB0\x92", + "\x99\xD4"=>"\xE9\x9B\x99", + "\x99\xD5"=>"\xE5\x8F\x9F", + "\x99\xD6"=>"\xE6\x9B\xBC", + "\x99\xD7"=>"\xE7\x87\xAE", + "\x99\xD8"=>"\xE5\x8F\xAE", + "\x99\xD9"=>"\xE5\x8F\xA8", + "\x99\xDA"=>"\xE5\x8F\xAD", + "\x99\xDB"=>"\xE5\x8F\xBA", + "\x99\xDC"=>"\xE5\x90\x81", + "\x99\xDD"=>"\xE5\x90\xBD", + "\x99\xDE"=>"\xE5\x91\x80", + "\x99\xDF"=>"\xE5\x90\xAC", + "\x99\xE0"=>"\xE5\x90\xAD", + "\x99\xE1"=>"\xE5\x90\xBC", + "\x99\xE2"=>"\xE5\x90\xAE", + "\x99\xE3"=>"\xE5\x90\xB6", + "\x99\xE4"=>"\xE5\x90\xA9", + "\x99\xE5"=>"\xE5\x90\x9D", + "\x99\xE6"=>"\xE5\x91\x8E", + "\x99\xE7"=>"\xE5\x92\x8F", + "\x99\xE8"=>"\xE5\x91\xB5", + "\x99\xE9"=>"\xE5\x92\x8E", + "\x99\xEA"=>"\xE5\x91\x9F", + "\x99\xEB"=>"\xE5\x91\xB1", + "\x99\xEC"=>"\xE5\x91\xB7", + "\x99\xED"=>"\xE5\x91\xB0", + "\x99\xEE"=>"\xE5\x92\x92", + "\x99\xEF"=>"\xE5\x91\xBB", + "\x99\xF0"=>"\xE5\x92\x80", + "\x99\xF1"=>"\xE5\x91\xB6", + "\x99\xF2"=>"\xE5\x92\x84", + "\x99\xF3"=>"\xE5\x92\x90", + "\x99\xF4"=>"\xE5\x92\x86", + "\x99\xF5"=>"\xE5\x93\x87", + "\x99\xF6"=>"\xE5\x92\xA2", + "\x99\xF7"=>"\xE5\x92\xB8", + "\x99\xF8"=>"\xE5\x92\xA5", + "\x99\xF9"=>"\xE5\x92\xAC", + "\x99\xFA"=>"\xE5\x93\x84", + "\x99\xFB"=>"\xE5\x93\x88", + "\x99\xFC"=>"\xE5\x92\xA8", + "\x9A\x40"=>"\xE5\x92\xAB", + "\x9A\x41"=>"\xE5\x93\x82", + "\x9A\x42"=>"\xE5\x92\xA4", + "\x9A\x43"=>"\xE5\x92\xBE", + "\x9A\x44"=>"\xE5\x92\xBC", + "\x9A\x45"=>"\xE5\x93\x98", + "\x9A\x46"=>"\xE5\x93\xA5", + "\x9A\x47"=>"\xE5\x93\xA6", + "\x9A\x48"=>"\xE5\x94\x8F", + "\x9A\x49"=>"\xE5\x94\x94", + "\x9A\x4A"=>"\xE5\x93\xBD", + "\x9A\x4B"=>"\xE5\x93\xAE", + "\x9A\x4C"=>"\xE5\x93\xAD", + "\x9A\x4D"=>"\xE5\x93\xBA", + "\x9A\x4E"=>"\xE5\x93\xA2", + "\x9A\x4F"=>"\xE5\x94\xB9", + "\x9A\x50"=>"\xE5\x95\x80", + "\x9A\x51"=>"\xE5\x95\xA3", + "\x9A\x52"=>"\xE5\x95\x8C", + "\x9A\x53"=>"\xE5\x94\xAE", + "\x9A\x54"=>"\xE5\x95\x9C", + "\x9A\x55"=>"\xE5\x95\x85", + "\x9A\x56"=>"\xE5\x95\x96", + "\x9A\x57"=>"\xE5\x95\x97", + "\x9A\x58"=>"\xE5\x94\xB8", + "\x9A\x59"=>"\xE5\x94\xB3", + "\x9A\x5A"=>"\xE5\x95\x9D", + "\x9A\x5B"=>"\xE5\x96\x99", + "\x9A\x5C"=>"\xE5\x96\x80", + "\x9A\x5D"=>"\xE5\x92\xAF", + "\x9A\x5E"=>"\xE5\x96\x8A", + "\x9A\x5F"=>"\xE5\x96\x9F", + "\x9A\x60"=>"\xE5\x95\xBB", + "\x9A\x61"=>"\xE5\x95\xBE", + "\x9A\x62"=>"\xE5\x96\x98", + "\x9A\x63"=>"\xE5\x96\x9E", + "\x9A\x64"=>"\xE5\x96\xAE", + "\x9A\x65"=>"\xE5\x95\xBC", + "\x9A\x66"=>"\xE5\x96\x83", + "\x9A\x67"=>"\xE5\x96\xA9", + "\x9A\x68"=>"\xE5\x96\x87", + "\x9A\x69"=>"\xE5\x96\xA8", + "\x9A\x6A"=>"\xE5\x97\x9A", + "\x9A\x6B"=>"\xE5\x97\x85", + "\x9A\x6C"=>"\xE5\x97\x9F", + "\x9A\x6D"=>"\xE5\x97\x84", + "\x9A\x6E"=>"\xE5\x97\x9C", + "\x9A\x6F"=>"\xE5\x97\xA4", + "\x9A\x70"=>"\xE5\x97\x94", + "\x9A\x71"=>"\xE5\x98\x94", + "\x9A\x72"=>"\xE5\x97\xB7", + "\x9A\x73"=>"\xE5\x98\x96", + "\x9A\x74"=>"\xE5\x97\xBE", + "\x9A\x75"=>"\xE5\x97\xBD", + "\x9A\x76"=>"\xE5\x98\x9B", + "\x9A\x77"=>"\xE5\x97\xB9", + "\x9A\x78"=>"\xE5\x99\x8E", + "\x9A\x79"=>"\xE5\x99\x90", + "\x9A\x7A"=>"\xE7\x87\x9F", + "\x9A\x7B"=>"\xE5\x98\xB4", + "\x9A\x7C"=>"\xE5\x98\xB6", + "\x9A\x7D"=>"\xE5\x98\xB2", + "\x9A\x7E"=>"\xE5\x98\xB8", + "\x9A\x80"=>"\xE5\x99\xAB", + "\x9A\x81"=>"\xE5\x99\xA4", + "\x9A\x82"=>"\xE5\x98\xAF", + "\x9A\x83"=>"\xE5\x99\xAC", + "\x9A\x84"=>"\xE5\x99\xAA", + "\x9A\x85"=>"\xE5\x9A\x86", + "\x9A\x86"=>"\xE5\x9A\x80", + "\x9A\x87"=>"\xE5\x9A\x8A", + "\x9A\x88"=>"\xE5\x9A\xA0", + "\x9A\x89"=>"\xE5\x9A\x94", + "\x9A\x8A"=>"\xE5\x9A\x8F", + "\x9A\x8B"=>"\xE5\x9A\xA5", + "\x9A\x8C"=>"\xE5\x9A\xAE", + "\x9A\x8D"=>"\xE5\x9A\xB6", + "\x9A\x8E"=>"\xE5\x9A\xB4", + "\x9A\x8F"=>"\xE5\x9B\x82", + "\x9A\x90"=>"\xE5\x9A\xBC", + "\x9A\x91"=>"\xE5\x9B\x81", + "\x9A\x92"=>"\xE5\x9B\x83", + "\x9A\x93"=>"\xE5\x9B\x80", + "\x9A\x94"=>"\xE5\x9B\x88", + "\x9A\x95"=>"\xE5\x9B\x8E", + "\x9A\x96"=>"\xE5\x9B\x91", + "\x9A\x97"=>"\xE5\x9B\x93", + "\x9A\x98"=>"\xE5\x9B\x97", + "\x9A\x99"=>"\xE5\x9B\xAE", + "\x9A\x9A"=>"\xE5\x9B\xB9", + "\x9A\x9B"=>"\xE5\x9C\x80", + "\x9A\x9C"=>"\xE5\x9B\xBF", + "\x9A\x9D"=>"\xE5\x9C\x84", + "\x9A\x9E"=>"\xE5\x9C\x89", + "\x9A\x9F"=>"\xE5\x9C\x88", + "\x9A\xA0"=>"\xE5\x9C\x8B", + "\x9A\xA1"=>"\xE5\x9C\x8D", + "\x9A\xA2"=>"\xE5\x9C\x93", + "\x9A\xA3"=>"\xE5\x9C\x98", + "\x9A\xA4"=>"\xE5\x9C\x96", + "\x9A\xA5"=>"\xE5\x97\x87", + "\x9A\xA6"=>"\xE5\x9C\x9C", + "\x9A\xA7"=>"\xE5\x9C\xA6", + "\x9A\xA8"=>"\xE5\x9C\xB7", + "\x9A\xA9"=>"\xE5\x9C\xB8", + "\x9A\xAA"=>"\xE5\x9D\x8E", + "\x9A\xAB"=>"\xE5\x9C\xBB", + "\x9A\xAC"=>"\xE5\x9D\x80", + "\x9A\xAD"=>"\xE5\x9D\x8F", + "\x9A\xAE"=>"\xE5\x9D\xA9", + "\x9A\xAF"=>"\xE5\x9F\x80", + "\x9A\xB0"=>"\xE5\x9E\x88", + "\x9A\xB1"=>"\xE5\x9D\xA1", + "\x9A\xB2"=>"\xE5\x9D\xBF", + "\x9A\xB3"=>"\xE5\x9E\x89", + "\x9A\xB4"=>"\xE5\x9E\x93", + "\x9A\xB5"=>"\xE5\x9E\xA0", + "\x9A\xB6"=>"\xE5\x9E\xB3", + "\x9A\xB7"=>"\xE5\x9E\xA4", + "\x9A\xB8"=>"\xE5\x9E\xAA", + "\x9A\xB9"=>"\xE5\x9E\xB0", + "\x9A\xBA"=>"\xE5\x9F\x83", + "\x9A\xBB"=>"\xE5\x9F\x86", + "\x9A\xBC"=>"\xE5\x9F\x94", + "\x9A\xBD"=>"\xE5\x9F\x92", + "\x9A\xBE"=>"\xE5\x9F\x93", + "\x9A\xBF"=>"\xE5\xA0\x8A", + "\x9A\xC0"=>"\xE5\x9F\x96", + "\x9A\xC1"=>"\xE5\x9F\xA3", + "\x9A\xC2"=>"\xE5\xA0\x8B", + "\x9A\xC3"=>"\xE5\xA0\x99", + "\x9A\xC4"=>"\xE5\xA0\x9D", + "\x9A\xC5"=>"\xE5\xA1\xB2", + "\x9A\xC6"=>"\xE5\xA0\xA1", + "\x9A\xC7"=>"\xE5\xA1\xA2", + "\x9A\xC8"=>"\xE5\xA1\x8B", + "\x9A\xC9"=>"\xE5\xA1\xB0", + "\x9A\xCA"=>"\xE6\xAF\x80", + "\x9A\xCB"=>"\xE5\xA1\x92", + "\x9A\xCC"=>"\xE5\xA0\xBD", + "\x9A\xCD"=>"\xE5\xA1\xB9", + "\x9A\xCE"=>"\xE5\xA2\x85", + "\x9A\xCF"=>"\xE5\xA2\xB9", + "\x9A\xD0"=>"\xE5\xA2\x9F", + "\x9A\xD1"=>"\xE5\xA2\xAB", + "\x9A\xD2"=>"\xE5\xA2\xBA", + "\x9A\xD3"=>"\xE5\xA3\x9E", + "\x9A\xD4"=>"\xE5\xA2\xBB", + "\x9A\xD5"=>"\xE5\xA2\xB8", + "\x9A\xD6"=>"\xE5\xA2\xAE", + "\x9A\xD7"=>"\xE5\xA3\x85", + "\x9A\xD8"=>"\xE5\xA3\x93", + "\x9A\xD9"=>"\xE5\xA3\x91", + "\x9A\xDA"=>"\xE5\xA3\x97", + "\x9A\xDB"=>"\xE5\xA3\x99", + "\x9A\xDC"=>"\xE5\xA3\x98", + "\x9A\xDD"=>"\xE5\xA3\xA5", + "\x9A\xDE"=>"\xE5\xA3\x9C", + "\x9A\xDF"=>"\xE5\xA3\xA4", + "\x9A\xE0"=>"\xE5\xA3\x9F", + "\x9A\xE1"=>"\xE5\xA3\xAF", + "\x9A\xE2"=>"\xE5\xA3\xBA", + "\x9A\xE3"=>"\xE5\xA3\xB9", + "\x9A\xE4"=>"\xE5\xA3\xBB", + "\x9A\xE5"=>"\xE5\xA3\xBC", + "\x9A\xE6"=>"\xE5\xA3\xBD", + "\x9A\xE7"=>"\xE5\xA4\x82", + "\x9A\xE8"=>"\xE5\xA4\x8A", + "\x9A\xE9"=>"\xE5\xA4\x90", + "\x9A\xEA"=>"\xE5\xA4\x9B", + "\x9A\xEB"=>"\xE6\xA2\xA6", + "\x9A\xEC"=>"\xE5\xA4\xA5", + "\x9A\xED"=>"\xE5\xA4\xAC", + "\x9A\xEE"=>"\xE5\xA4\xAD", + "\x9A\xEF"=>"\xE5\xA4\xB2", + "\x9A\xF0"=>"\xE5\xA4\xB8", + "\x9A\xF1"=>"\xE5\xA4\xBE", + "\x9A\xF2"=>"\xE7\xAB\x92", + "\x9A\xF3"=>"\xE5\xA5\x95", + "\x9A\xF4"=>"\xE5\xA5\x90", + "\x9A\xF5"=>"\xE5\xA5\x8E", + "\x9A\xF6"=>"\xE5\xA5\x9A", + "\x9A\xF7"=>"\xE5\xA5\x98", + "\x9A\xF8"=>"\xE5\xA5\xA2", + "\x9A\xF9"=>"\xE5\xA5\xA0", + "\x9A\xFA"=>"\xE5\xA5\xA7", + "\x9A\xFB"=>"\xE5\xA5\xAC", + "\x9A\xFC"=>"\xE5\xA5\xA9", + "\x9B\x40"=>"\xE5\xA5\xB8", + "\x9B\x41"=>"\xE5\xA6\x81", + "\x9B\x42"=>"\xE5\xA6\x9D", + "\x9B\x43"=>"\xE4\xBD\x9E", + "\x9B\x44"=>"\xE4\xBE\xAB", + "\x9B\x45"=>"\xE5\xA6\xA3", + "\x9B\x46"=>"\xE5\xA6\xB2", + "\x9B\x47"=>"\xE5\xA7\x86", + "\x9B\x48"=>"\xE5\xA7\xA8", + "\x9B\x49"=>"\xE5\xA7\x9C", + "\x9B\x4A"=>"\xE5\xA6\x8D", + "\x9B\x4B"=>"\xE5\xA7\x99", + "\x9B\x4C"=>"\xE5\xA7\x9A", + "\x9B\x4D"=>"\xE5\xA8\xA5", + "\x9B\x4E"=>"\xE5\xA8\x9F", + "\x9B\x4F"=>"\xE5\xA8\x91", + "\x9B\x50"=>"\xE5\xA8\x9C", + "\x9B\x51"=>"\xE5\xA8\x89", + "\x9B\x52"=>"\xE5\xA8\x9A", + "\x9B\x53"=>"\xE5\xA9\x80", + "\x9B\x54"=>"\xE5\xA9\xAC", + "\x9B\x55"=>"\xE5\xA9\x89", + "\x9B\x56"=>"\xE5\xA8\xB5", + "\x9B\x57"=>"\xE5\xA8\xB6", + "\x9B\x58"=>"\xE5\xA9\xA2", + "\x9B\x59"=>"\xE5\xA9\xAA", + "\x9B\x5A"=>"\xE5\xAA\x9A", + "\x9B\x5B"=>"\xE5\xAA\xBC", + "\x9B\x5C"=>"\xE5\xAA\xBE", + "\x9B\x5D"=>"\xE5\xAB\x8B", + "\x9B\x5E"=>"\xE5\xAB\x82", + "\x9B\x5F"=>"\xE5\xAA\xBD", + "\x9B\x60"=>"\xE5\xAB\xA3", + "\x9B\x61"=>"\xE5\xAB\x97", + "\x9B\x62"=>"\xE5\xAB\xA6", + "\x9B\x63"=>"\xE5\xAB\xA9", + "\x9B\x64"=>"\xE5\xAB\x96", + "\x9B\x65"=>"\xE5\xAB\xBA", + "\x9B\x66"=>"\xE5\xAB\xBB", + "\x9B\x67"=>"\xE5\xAC\x8C", + "\x9B\x68"=>"\xE5\xAC\x8B", + "\x9B\x69"=>"\xE5\xAC\x96", + "\x9B\x6A"=>"\xE5\xAC\xB2", + "\x9B\x6B"=>"\xE5\xAB\x90", + "\x9B\x6C"=>"\xE5\xAC\xAA", + "\x9B\x6D"=>"\xE5\xAC\xB6", + "\x9B\x6E"=>"\xE5\xAC\xBE", + "\x9B\x6F"=>"\xE5\xAD\x83", + "\x9B\x70"=>"\xE5\xAD\x85", + "\x9B\x71"=>"\xE5\xAD\x80", + "\x9B\x72"=>"\xE5\xAD\x91", + "\x9B\x73"=>"\xE5\xAD\x95", + "\x9B\x74"=>"\xE5\xAD\x9A", + "\x9B\x75"=>"\xE5\xAD\x9B", + "\x9B\x76"=>"\xE5\xAD\xA5", + "\x9B\x77"=>"\xE5\xAD\xA9", + "\x9B\x78"=>"\xE5\xAD\xB0", + "\x9B\x79"=>"\xE5\xAD\xB3", + "\x9B\x7A"=>"\xE5\xAD\xB5", + "\x9B\x7B"=>"\xE5\xAD\xB8", + "\x9B\x7C"=>"\xE6\x96\x88", + "\x9B\x7D"=>"\xE5\xAD\xBA", + "\x9B\x7E"=>"\xE5\xAE\x80", + "\x9B\x80"=>"\xE5\xAE\x83", + "\x9B\x81"=>"\xE5\xAE\xA6", + "\x9B\x82"=>"\xE5\xAE\xB8", + "\x9B\x83"=>"\xE5\xAF\x83", + "\x9B\x84"=>"\xE5\xAF\x87", + "\x9B\x85"=>"\xE5\xAF\x89", + "\x9B\x86"=>"\xE5\xAF\x94", + "\x9B\x87"=>"\xE5\xAF\x90", + "\x9B\x88"=>"\xE5\xAF\xA4", + "\x9B\x89"=>"\xE5\xAF\xA6", + "\x9B\x8A"=>"\xE5\xAF\xA2", + "\x9B\x8B"=>"\xE5\xAF\x9E", + "\x9B\x8C"=>"\xE5\xAF\xA5", + "\x9B\x8D"=>"\xE5\xAF\xAB", + "\x9B\x8E"=>"\xE5\xAF\xB0", + "\x9B\x8F"=>"\xE5\xAF\xB6", + "\x9B\x90"=>"\xE5\xAF\xB3", + "\x9B\x91"=>"\xE5\xB0\x85", + "\x9B\x92"=>"\xE5\xB0\x87", + "\x9B\x93"=>"\xE5\xB0\x88", + "\x9B\x94"=>"\xE5\xB0\x8D", + "\x9B\x95"=>"\xE5\xB0\x93", + "\x9B\x96"=>"\xE5\xB0\xA0", + "\x9B\x97"=>"\xE5\xB0\xA2", + "\x9B\x98"=>"\xE5\xB0\xA8", + "\x9B\x99"=>"\xE5\xB0\xB8", + "\x9B\x9A"=>"\xE5\xB0\xB9", + "\x9B\x9B"=>"\xE5\xB1\x81", + "\x9B\x9C"=>"\xE5\xB1\x86", + "\x9B\x9D"=>"\xE5\xB1\x8E", + "\x9B\x9E"=>"\xE5\xB1\x93", + "\x9B\x9F"=>"\xE5\xB1\x90", + "\x9B\xA0"=>"\xE5\xB1\x8F", + "\x9B\xA1"=>"\xE5\xAD\xB1", + "\x9B\xA2"=>"\xE5\xB1\xAC", + "\x9B\xA3"=>"\xE5\xB1\xAE", + "\x9B\xA4"=>"\xE4\xB9\xA2", + "\x9B\xA5"=>"\xE5\xB1\xB6", + "\x9B\xA6"=>"\xE5\xB1\xB9", + "\x9B\xA7"=>"\xE5\xB2\x8C", + "\x9B\xA8"=>"\xE5\xB2\x91", + "\x9B\xA9"=>"\xE5\xB2\x94", + "\x9B\xAA"=>"\xE5\xA6\x9B", + "\x9B\xAB"=>"\xE5\xB2\xAB", + "\x9B\xAC"=>"\xE5\xB2\xBB", + "\x9B\xAD"=>"\xE5\xB2\xB6", + "\x9B\xAE"=>"\xE5\xB2\xBC", + "\x9B\xAF"=>"\xE5\xB2\xB7", + "\x9B\xB0"=>"\xE5\xB3\x85", + "\x9B\xB1"=>"\xE5\xB2\xBE", + "\x9B\xB2"=>"\xE5\xB3\x87", + "\x9B\xB3"=>"\xE5\xB3\x99", + "\x9B\xB4"=>"\xE5\xB3\xA9", + "\x9B\xB5"=>"\xE5\xB3\xBD", + "\x9B\xB6"=>"\xE5\xB3\xBA", + "\x9B\xB7"=>"\xE5\xB3\xAD", + "\x9B\xB8"=>"\xE5\xB6\x8C", + "\x9B\xB9"=>"\xE5\xB3\xAA", + "\x9B\xBA"=>"\xE5\xB4\x8B", + "\x9B\xBB"=>"\xE5\xB4\x95", + "\x9B\xBC"=>"\xE5\xB4\x97", + "\x9B\xBD"=>"\xE5\xB5\x9C", + "\x9B\xBE"=>"\xE5\xB4\x9F", + "\x9B\xBF"=>"\xE5\xB4\x9B", + "\x9B\xC0"=>"\xE5\xB4\x91", + "\x9B\xC1"=>"\xE5\xB4\x94", + "\x9B\xC2"=>"\xE5\xB4\xA2", + "\x9B\xC3"=>"\xE5\xB4\x9A", + "\x9B\xC4"=>"\xE5\xB4\x99", + "\x9B\xC5"=>"\xE5\xB4\x98", + "\x9B\xC6"=>"\xE5\xB5\x8C", + "\x9B\xC7"=>"\xE5\xB5\x92", + "\x9B\xC8"=>"\xE5\xB5\x8E", + "\x9B\xC9"=>"\xE5\xB5\x8B", + "\x9B\xCA"=>"\xE5\xB5\xAC", + "\x9B\xCB"=>"\xE5\xB5\xB3", + "\x9B\xCC"=>"\xE5\xB5\xB6", + "\x9B\xCD"=>"\xE5\xB6\x87", + "\x9B\xCE"=>"\xE5\xB6\x84", + "\x9B\xCF"=>"\xE5\xB6\x82", + "\x9B\xD0"=>"\xE5\xB6\xA2", + "\x9B\xD1"=>"\xE5\xB6\x9D", + "\x9B\xD2"=>"\xE5\xB6\xAC", + "\x9B\xD3"=>"\xE5\xB6\xAE", + "\x9B\xD4"=>"\xE5\xB6\xBD", + "\x9B\xD5"=>"\xE5\xB6\x90", + "\x9B\xD6"=>"\xE5\xB6\xB7", + "\x9B\xD7"=>"\xE5\xB6\xBC", + "\x9B\xD8"=>"\xE5\xB7\x89", + "\x9B\xD9"=>"\xE5\xB7\x8D", + "\x9B\xDA"=>"\xE5\xB7\x93", + "\x9B\xDB"=>"\xE5\xB7\x92", + "\x9B\xDC"=>"\xE5\xB7\x96", + "\x9B\xDD"=>"\xE5\xB7\x9B", + "\x9B\xDE"=>"\xE5\xB7\xAB", + "\x9B\xDF"=>"\xE5\xB7\xB2", + "\x9B\xE0"=>"\xE5\xB7\xB5", + "\x9B\xE1"=>"\xE5\xB8\x8B", + "\x9B\xE2"=>"\xE5\xB8\x9A", + "\x9B\xE3"=>"\xE5\xB8\x99", + "\x9B\xE4"=>"\xE5\xB8\x91", + "\x9B\xE5"=>"\xE5\xB8\x9B", + "\x9B\xE6"=>"\xE5\xB8\xB6", + "\x9B\xE7"=>"\xE5\xB8\xB7", + "\x9B\xE8"=>"\xE5\xB9\x84", + "\x9B\xE9"=>"\xE5\xB9\x83", + "\x9B\xEA"=>"\xE5\xB9\x80", + "\x9B\xEB"=>"\xE5\xB9\x8E", + "\x9B\xEC"=>"\xE5\xB9\x97", + "\x9B\xED"=>"\xE5\xB9\x94", + "\x9B\xEE"=>"\xE5\xB9\x9F", + "\x9B\xEF"=>"\xE5\xB9\xA2", + "\x9B\xF0"=>"\xE5\xB9\xA4", + "\x9B\xF1"=>"\xE5\xB9\x87", + "\x9B\xF2"=>"\xE5\xB9\xB5", + "\x9B\xF3"=>"\xE5\xB9\xB6", + "\x9B\xF4"=>"\xE5\xB9\xBA", + "\x9B\xF5"=>"\xE9\xBA\xBC", + "\x9B\xF6"=>"\xE5\xB9\xBF", + "\x9B\xF7"=>"\xE5\xBA\xA0", + "\x9B\xF8"=>"\xE5\xBB\x81", + "\x9B\xF9"=>"\xE5\xBB\x82", + "\x9B\xFA"=>"\xE5\xBB\x88", + "\x9B\xFB"=>"\xE5\xBB\x90", + "\x9B\xFC"=>"\xE5\xBB\x8F", + "\x9C\x40"=>"\xE5\xBB\x96", + "\x9C\x41"=>"\xE5\xBB\xA3", + "\x9C\x42"=>"\xE5\xBB\x9D", + "\x9C\x43"=>"\xE5\xBB\x9A", + "\x9C\x44"=>"\xE5\xBB\x9B", + "\x9C\x45"=>"\xE5\xBB\xA2", + "\x9C\x46"=>"\xE5\xBB\xA1", + "\x9C\x47"=>"\xE5\xBB\xA8", + "\x9C\x48"=>"\xE5\xBB\xA9", + "\x9C\x49"=>"\xE5\xBB\xAC", + "\x9C\x4A"=>"\xE5\xBB\xB1", + "\x9C\x4B"=>"\xE5\xBB\xB3", + "\x9C\x4C"=>"\xE5\xBB\xB0", + "\x9C\x4D"=>"\xE5\xBB\xB4", + "\x9C\x4E"=>"\xE5\xBB\xB8", + "\x9C\x4F"=>"\xE5\xBB\xBE", + "\x9C\x50"=>"\xE5\xBC\x83", + "\x9C\x51"=>"\xE5\xBC\x89", + "\x9C\x52"=>"\xE5\xBD\x9D", + "\x9C\x53"=>"\xE5\xBD\x9C", + "\x9C\x54"=>"\xE5\xBC\x8B", + "\x9C\x55"=>"\xE5\xBC\x91", + "\x9C\x56"=>"\xE5\xBC\x96", + "\x9C\x57"=>"\xE5\xBC\xA9", + "\x9C\x58"=>"\xE5\xBC\xAD", + "\x9C\x59"=>"\xE5\xBC\xB8", + "\x9C\x5A"=>"\xE5\xBD\x81", + "\x9C\x5B"=>"\xE5\xBD\x88", + "\x9C\x5C"=>"\xE5\xBD\x8C", + "\x9C\x5D"=>"\xE5\xBD\x8E", + "\x9C\x5E"=>"\xE5\xBC\xAF", + "\x9C\x5F"=>"\xE5\xBD\x91", + "\x9C\x60"=>"\xE5\xBD\x96", + "\x9C\x61"=>"\xE5\xBD\x97", + "\x9C\x62"=>"\xE5\xBD\x99", + "\x9C\x63"=>"\xE5\xBD\xA1", + "\x9C\x64"=>"\xE5\xBD\xAD", + "\x9C\x65"=>"\xE5\xBD\xB3", + "\x9C\x66"=>"\xE5\xBD\xB7", + "\x9C\x67"=>"\xE5\xBE\x83", + "\x9C\x68"=>"\xE5\xBE\x82", + "\x9C\x69"=>"\xE5\xBD\xBF", + "\x9C\x6A"=>"\xE5\xBE\x8A", + "\x9C\x6B"=>"\xE5\xBE\x88", + "\x9C\x6C"=>"\xE5\xBE\x91", + "\x9C\x6D"=>"\xE5\xBE\x87", + "\x9C\x6E"=>"\xE5\xBE\x9E", + "\x9C\x6F"=>"\xE5\xBE\x99", + "\x9C\x70"=>"\xE5\xBE\x98", + "\x9C\x71"=>"\xE5\xBE\xA0", + "\x9C\x72"=>"\xE5\xBE\xA8", + "\x9C\x73"=>"\xE5\xBE\xAD", + "\x9C\x74"=>"\xE5\xBE\xBC", + "\x9C\x75"=>"\xE5\xBF\x96", + "\x9C\x76"=>"\xE5\xBF\xBB", + "\x9C\x77"=>"\xE5\xBF\xA4", + "\x9C\x78"=>"\xE5\xBF\xB8", + "\x9C\x79"=>"\xE5\xBF\xB1", + "\x9C\x7A"=>"\xE5\xBF\x9D", + "\x9C\x7B"=>"\xE6\x82\xB3", + "\x9C\x7C"=>"\xE5\xBF\xBF", + "\x9C\x7D"=>"\xE6\x80\xA1", + "\x9C\x7E"=>"\xE6\x81\xA0", + "\x9C\x80"=>"\xE6\x80\x99", + "\x9C\x81"=>"\xE6\x80\x90", + "\x9C\x82"=>"\xE6\x80\xA9", + "\x9C\x83"=>"\xE6\x80\x8E", + "\x9C\x84"=>"\xE6\x80\xB1", + "\x9C\x85"=>"\xE6\x80\x9B", + "\x9C\x86"=>"\xE6\x80\x95", + "\x9C\x87"=>"\xE6\x80\xAB", + "\x9C\x88"=>"\xE6\x80\xA6", + "\x9C\x89"=>"\xE6\x80\x8F", + "\x9C\x8A"=>"\xE6\x80\xBA", + "\x9C\x8B"=>"\xE6\x81\x9A", + "\x9C\x8C"=>"\xE6\x81\x81", + "\x9C\x8D"=>"\xE6\x81\xAA", + "\x9C\x8E"=>"\xE6\x81\xB7", + "\x9C\x8F"=>"\xE6\x81\x9F", + "\x9C\x90"=>"\xE6\x81\x8A", + "\x9C\x91"=>"\xE6\x81\x86", + "\x9C\x92"=>"\xE6\x81\x8D", + "\x9C\x93"=>"\xE6\x81\xA3", + "\x9C\x94"=>"\xE6\x81\x83", + "\x9C\x95"=>"\xE6\x81\xA4", + "\x9C\x96"=>"\xE6\x81\x82", + "\x9C\x97"=>"\xE6\x81\xAC", + "\x9C\x98"=>"\xE6\x81\xAB", + "\x9C\x99"=>"\xE6\x81\x99", + "\x9C\x9A"=>"\xE6\x82\x81", + "\x9C\x9B"=>"\xE6\x82\x8D", + "\x9C\x9C"=>"\xE6\x83\xA7", + "\x9C\x9D"=>"\xE6\x82\x83", + "\x9C\x9E"=>"\xE6\x82\x9A", + "\x9C\x9F"=>"\xE6\x82\x84", + "\x9C\xA0"=>"\xE6\x82\x9B", + "\x9C\xA1"=>"\xE6\x82\x96", + "\x9C\xA2"=>"\xE6\x82\x97", + "\x9C\xA3"=>"\xE6\x82\x92", + "\x9C\xA4"=>"\xE6\x82\xA7", + "\x9C\xA5"=>"\xE6\x82\x8B", + "\x9C\xA6"=>"\xE6\x83\xA1", + "\x9C\xA7"=>"\xE6\x82\xB8", + "\x9C\xA8"=>"\xE6\x83\xA0", + "\x9C\xA9"=>"\xE6\x83\x93", + "\x9C\xAA"=>"\xE6\x82\xB4", + "\x9C\xAB"=>"\xE5\xBF\xB0", + "\x9C\xAC"=>"\xE6\x82\xBD", + "\x9C\xAD"=>"\xE6\x83\x86", + "\x9C\xAE"=>"\xE6\x82\xB5", + "\x9C\xAF"=>"\xE6\x83\x98", + "\x9C\xB0"=>"\xE6\x85\x8D", + "\x9C\xB1"=>"\xE6\x84\x95", + "\x9C\xB2"=>"\xE6\x84\x86", + "\x9C\xB3"=>"\xE6\x83\xB6", + "\x9C\xB4"=>"\xE6\x83\xB7", + "\x9C\xB5"=>"\xE6\x84\x80", + "\x9C\xB6"=>"\xE6\x83\xB4", + "\x9C\xB7"=>"\xE6\x83\xBA", + "\x9C\xB8"=>"\xE6\x84\x83", + "\x9C\xB9"=>"\xE6\x84\xA1", + "\x9C\xBA"=>"\xE6\x83\xBB", + "\x9C\xBB"=>"\xE6\x83\xB1", + "\x9C\xBC"=>"\xE6\x84\x8D", + "\x9C\xBD"=>"\xE6\x84\x8E", + "\x9C\xBE"=>"\xE6\x85\x87", + "\x9C\xBF"=>"\xE6\x84\xBE", + "\x9C\xC0"=>"\xE6\x84\xA8", + "\x9C\xC1"=>"\xE6\x84\xA7", + "\x9C\xC2"=>"\xE6\x85\x8A", + "\x9C\xC3"=>"\xE6\x84\xBF", + "\x9C\xC4"=>"\xE6\x84\xBC", + "\x9C\xC5"=>"\xE6\x84\xAC", + "\x9C\xC6"=>"\xE6\x84\xB4", + "\x9C\xC7"=>"\xE6\x84\xBD", + "\x9C\xC8"=>"\xE6\x85\x82", + "\x9C\xC9"=>"\xE6\x85\x84", + "\x9C\xCA"=>"\xE6\x85\xB3", + "\x9C\xCB"=>"\xE6\x85\xB7", + "\x9C\xCC"=>"\xE6\x85\x98", + "\x9C\xCD"=>"\xE6\x85\x99", + "\x9C\xCE"=>"\xE6\x85\x9A", + "\x9C\xCF"=>"\xE6\x85\xAB", + "\x9C\xD0"=>"\xE6\x85\xB4", + "\x9C\xD1"=>"\xE6\x85\xAF", + "\x9C\xD2"=>"\xE6\x85\xA5", + "\x9C\xD3"=>"\xE6\x85\xB1", + "\x9C\xD4"=>"\xE6\x85\x9F", + "\x9C\xD5"=>"\xE6\x85\x9D", + "\x9C\xD6"=>"\xE6\x85\x93", + "\x9C\xD7"=>"\xE6\x85\xB5", + "\x9C\xD8"=>"\xE6\x86\x99", + "\x9C\xD9"=>"\xE6\x86\x96", + "\x9C\xDA"=>"\xE6\x86\x87", + "\x9C\xDB"=>"\xE6\x86\xAC", + "\x9C\xDC"=>"\xE6\x86\x94", + "\x9C\xDD"=>"\xE6\x86\x9A", + "\x9C\xDE"=>"\xE6\x86\x8A", + "\x9C\xDF"=>"\xE6\x86\x91", + "\x9C\xE0"=>"\xE6\x86\xAB", + "\x9C\xE1"=>"\xE6\x86\xAE", + "\x9C\xE2"=>"\xE6\x87\x8C", + "\x9C\xE3"=>"\xE6\x87\x8A", + "\x9C\xE4"=>"\xE6\x87\x89", + "\x9C\xE5"=>"\xE6\x87\xB7", + "\x9C\xE6"=>"\xE6\x87\x88", + "\x9C\xE7"=>"\xE6\x87\x83", + "\x9C\xE8"=>"\xE6\x87\x86", + "\x9C\xE9"=>"\xE6\x86\xBA", + "\x9C\xEA"=>"\xE6\x87\x8B", + "\x9C\xEB"=>"\xE7\xBD\xB9", + "\x9C\xEC"=>"\xE6\x87\x8D", + "\x9C\xED"=>"\xE6\x87\xA6", + "\x9C\xEE"=>"\xE6\x87\xA3", + "\x9C\xEF"=>"\xE6\x87\xB6", + "\x9C\xF0"=>"\xE6\x87\xBA", + "\x9C\xF1"=>"\xE6\x87\xB4", + "\x9C\xF2"=>"\xE6\x87\xBF", + "\x9C\xF3"=>"\xE6\x87\xBD", + "\x9C\xF4"=>"\xE6\x87\xBC", + "\x9C\xF5"=>"\xE6\x87\xBE", + "\x9C\xF6"=>"\xE6\x88\x80", + "\x9C\xF7"=>"\xE6\x88\x88", + "\x9C\xF8"=>"\xE6\x88\x89", + "\x9C\xF9"=>"\xE6\x88\x8D", + "\x9C\xFA"=>"\xE6\x88\x8C", + "\x9C\xFB"=>"\xE6\x88\x94", + "\x9C\xFC"=>"\xE6\x88\x9B", + "\x9D\x40"=>"\xE6\x88\x9E", + "\x9D\x41"=>"\xE6\x88\xA1", + "\x9D\x42"=>"\xE6\x88\xAA", + "\x9D\x43"=>"\xE6\x88\xAE", + "\x9D\x44"=>"\xE6\x88\xB0", + "\x9D\x45"=>"\xE6\x88\xB2", + "\x9D\x46"=>"\xE6\x88\xB3", + "\x9D\x47"=>"\xE6\x89\x81", + "\x9D\x48"=>"\xE6\x89\x8E", + "\x9D\x49"=>"\xE6\x89\x9E", + "\x9D\x4A"=>"\xE6\x89\xA3", + "\x9D\x4B"=>"\xE6\x89\x9B", + "\x9D\x4C"=>"\xE6\x89\xA0", + "\x9D\x4D"=>"\xE6\x89\xA8", + "\x9D\x4E"=>"\xE6\x89\xBC", + "\x9D\x4F"=>"\xE6\x8A\x82", + "\x9D\x50"=>"\xE6\x8A\x89", + "\x9D\x51"=>"\xE6\x89\xBE", + "\x9D\x52"=>"\xE6\x8A\x92", + "\x9D\x53"=>"\xE6\x8A\x93", + "\x9D\x54"=>"\xE6\x8A\x96", + "\x9D\x55"=>"\xE6\x8B\x94", + "\x9D\x56"=>"\xE6\x8A\x83", + "\x9D\x57"=>"\xE6\x8A\x94", + "\x9D\x58"=>"\xE6\x8B\x97", + "\x9D\x59"=>"\xE6\x8B\x91", + "\x9D\x5A"=>"\xE6\x8A\xBB", + "\x9D\x5B"=>"\xE6\x8B\x8F", + "\x9D\x5C"=>"\xE6\x8B\xBF", + "\x9D\x5D"=>"\xE6\x8B\x86", + "\x9D\x5E"=>"\xE6\x93\x94", + "\x9D\x5F"=>"\xE6\x8B\x88", + "\x9D\x60"=>"\xE6\x8B\x9C", + "\x9D\x61"=>"\xE6\x8B\x8C", + "\x9D\x62"=>"\xE6\x8B\x8A", + "\x9D\x63"=>"\xE6\x8B\x82", + "\x9D\x64"=>"\xE6\x8B\x87", + "\x9D\x65"=>"\xE6\x8A\x9B", + "\x9D\x66"=>"\xE6\x8B\x89", + "\x9D\x67"=>"\xE6\x8C\x8C", + "\x9D\x68"=>"\xE6\x8B\xAE", + "\x9D\x69"=>"\xE6\x8B\xB1", + "\x9D\x6A"=>"\xE6\x8C\xA7", + "\x9D\x6B"=>"\xE6\x8C\x82", + "\x9D\x6C"=>"\xE6\x8C\x88", + "\x9D\x6D"=>"\xE6\x8B\xAF", + "\x9D\x6E"=>"\xE6\x8B\xB5", + "\x9D\x6F"=>"\xE6\x8D\x90", + "\x9D\x70"=>"\xE6\x8C\xBE", + "\x9D\x71"=>"\xE6\x8D\x8D", + "\x9D\x72"=>"\xE6\x90\x9C", + "\x9D\x73"=>"\xE6\x8D\x8F", + "\x9D\x74"=>"\xE6\x8E\x96", + "\x9D\x75"=>"\xE6\x8E\x8E", + "\x9D\x76"=>"\xE6\x8E\x80", + "\x9D\x77"=>"\xE6\x8E\xAB", + "\x9D\x78"=>"\xE6\x8D\xB6", + "\x9D\x79"=>"\xE6\x8E\xA3", + "\x9D\x7A"=>"\xE6\x8E\x8F", + "\x9D\x7B"=>"\xE6\x8E\x89", + "\x9D\x7C"=>"\xE6\x8E\x9F", + "\x9D\x7D"=>"\xE6\x8E\xB5", + "\x9D\x7E"=>"\xE6\x8D\xAB", + "\x9D\x80"=>"\xE6\x8D\xA9", + "\x9D\x81"=>"\xE6\x8E\xBE", + "\x9D\x82"=>"\xE6\x8F\xA9", + "\x9D\x83"=>"\xE6\x8F\x80", + "\x9D\x84"=>"\xE6\x8F\x86", + "\x9D\x85"=>"\xE6\x8F\xA3", + "\x9D\x86"=>"\xE6\x8F\x89", + "\x9D\x87"=>"\xE6\x8F\x92", + "\x9D\x88"=>"\xE6\x8F\xB6", + "\x9D\x89"=>"\xE6\x8F\x84", + "\x9D\x8A"=>"\xE6\x90\x96", + "\x9D\x8B"=>"\xE6\x90\xB4", + "\x9D\x8C"=>"\xE6\x90\x86", + "\x9D\x8D"=>"\xE6\x90\x93", + "\x9D\x8E"=>"\xE6\x90\xA6", + "\x9D\x8F"=>"\xE6\x90\xB6", + "\x9D\x90"=>"\xE6\x94\x9D", + "\x9D\x91"=>"\xE6\x90\x97", + "\x9D\x92"=>"\xE6\x90\xA8", + "\x9D\x93"=>"\xE6\x90\x8F", + "\x9D\x94"=>"\xE6\x91\xA7", + "\x9D\x95"=>"\xE6\x91\xAF", + "\x9D\x96"=>"\xE6\x91\xB6", + "\x9D\x97"=>"\xE6\x91\x8E", + "\x9D\x98"=>"\xE6\x94\xAA", + "\x9D\x99"=>"\xE6\x92\x95", + "\x9D\x9A"=>"\xE6\x92\x93", + "\x9D\x9B"=>"\xE6\x92\xA5", + "\x9D\x9C"=>"\xE6\x92\xA9", + "\x9D\x9D"=>"\xE6\x92\x88", + "\x9D\x9E"=>"\xE6\x92\xBC", + "\x9D\x9F"=>"\xE6\x93\x9A", + "\x9D\xA0"=>"\xE6\x93\x92", + "\x9D\xA1"=>"\xE6\x93\x85", + "\x9D\xA2"=>"\xE6\x93\x87", + "\x9D\xA3"=>"\xE6\x92\xBB", + "\x9D\xA4"=>"\xE6\x93\x98", + "\x9D\xA5"=>"\xE6\x93\x82", + "\x9D\xA6"=>"\xE6\x93\xB1", + "\x9D\xA7"=>"\xE6\x93\xA7", + "\x9D\xA8"=>"\xE8\x88\x89", + "\x9D\xA9"=>"\xE6\x93\xA0", + "\x9D\xAA"=>"\xE6\x93\xA1", + "\x9D\xAB"=>"\xE6\x8A\xAC", + "\x9D\xAC"=>"\xE6\x93\xA3", + "\x9D\xAD"=>"\xE6\x93\xAF", + "\x9D\xAE"=>"\xE6\x94\xAC", + "\x9D\xAF"=>"\xE6\x93\xB6", + "\x9D\xB0"=>"\xE6\x93\xB4", + "\x9D\xB1"=>"\xE6\x93\xB2", + "\x9D\xB2"=>"\xE6\x93\xBA", + "\x9D\xB3"=>"\xE6\x94\x80", + "\x9D\xB4"=>"\xE6\x93\xBD", + "\x9D\xB5"=>"\xE6\x94\x98", + "\x9D\xB6"=>"\xE6\x94\x9C", + "\x9D\xB7"=>"\xE6\x94\x85", + "\x9D\xB8"=>"\xE6\x94\xA4", + "\x9D\xB9"=>"\xE6\x94\xA3", + "\x9D\xBA"=>"\xE6\x94\xAB", + "\x9D\xBB"=>"\xE6\x94\xB4", + "\x9D\xBC"=>"\xE6\x94\xB5", + "\x9D\xBD"=>"\xE6\x94\xB7", + "\x9D\xBE"=>"\xE6\x94\xB6", + "\x9D\xBF"=>"\xE6\x94\xB8", + "\x9D\xC0"=>"\xE7\x95\x8B", + "\x9D\xC1"=>"\xE6\x95\x88", + "\x9D\xC2"=>"\xE6\x95\x96", + "\x9D\xC3"=>"\xE6\x95\x95", + "\x9D\xC4"=>"\xE6\x95\x8D", + "\x9D\xC5"=>"\xE6\x95\x98", + "\x9D\xC6"=>"\xE6\x95\x9E", + "\x9D\xC7"=>"\xE6\x95\x9D", + "\x9D\xC8"=>"\xE6\x95\xB2", + "\x9D\xC9"=>"\xE6\x95\xB8", + "\x9D\xCA"=>"\xE6\x96\x82", + "\x9D\xCB"=>"\xE6\x96\x83", + "\x9D\xCC"=>"\xE8\xAE\x8A", + "\x9D\xCD"=>"\xE6\x96\x9B", + "\x9D\xCE"=>"\xE6\x96\x9F", + "\x9D\xCF"=>"\xE6\x96\xAB", + "\x9D\xD0"=>"\xE6\x96\xB7", + "\x9D\xD1"=>"\xE6\x97\x83", + "\x9D\xD2"=>"\xE6\x97\x86", + "\x9D\xD3"=>"\xE6\x97\x81", + "\x9D\xD4"=>"\xE6\x97\x84", + "\x9D\xD5"=>"\xE6\x97\x8C", + "\x9D\xD6"=>"\xE6\x97\x92", + "\x9D\xD7"=>"\xE6\x97\x9B", + "\x9D\xD8"=>"\xE6\x97\x99", + "\x9D\xD9"=>"\xE6\x97\xA0", + "\x9D\xDA"=>"\xE6\x97\xA1", + "\x9D\xDB"=>"\xE6\x97\xB1", + "\x9D\xDC"=>"\xE6\x9D\xB2", + "\x9D\xDD"=>"\xE6\x98\x8A", + "\x9D\xDE"=>"\xE6\x98\x83", + "\x9D\xDF"=>"\xE6\x97\xBB", + "\x9D\xE0"=>"\xE6\x9D\xB3", + "\x9D\xE1"=>"\xE6\x98\xB5", + "\x9D\xE2"=>"\xE6\x98\xB6", + "\x9D\xE3"=>"\xE6\x98\xB4", + "\x9D\xE4"=>"\xE6\x98\x9C", + "\x9D\xE5"=>"\xE6\x99\x8F", + "\x9D\xE6"=>"\xE6\x99\x84", + "\x9D\xE7"=>"\xE6\x99\x89", + "\x9D\xE8"=>"\xE6\x99\x81", + "\x9D\xE9"=>"\xE6\x99\x9E", + "\x9D\xEA"=>"\xE6\x99\x9D", + "\x9D\xEB"=>"\xE6\x99\xA4", + "\x9D\xEC"=>"\xE6\x99\xA7", + "\x9D\xED"=>"\xE6\x99\xA8", + "\x9D\xEE"=>"\xE6\x99\x9F", + "\x9D\xEF"=>"\xE6\x99\xA2", + "\x9D\xF0"=>"\xE6\x99\xB0", + "\x9D\xF1"=>"\xE6\x9A\x83", + "\x9D\xF2"=>"\xE6\x9A\x88", + "\x9D\xF3"=>"\xE6\x9A\x8E", + "\x9D\xF4"=>"\xE6\x9A\x89", + "\x9D\xF5"=>"\xE6\x9A\x84", + "\x9D\xF6"=>"\xE6\x9A\x98", + "\x9D\xF7"=>"\xE6\x9A\x9D", + "\x9D\xF8"=>"\xE6\x9B\x81", + "\x9D\xF9"=>"\xE6\x9A\xB9", + "\x9D\xFA"=>"\xE6\x9B\x89", + "\x9D\xFB"=>"\xE6\x9A\xBE", + "\x9D\xFC"=>"\xE6\x9A\xBC", + "\x9E\x40"=>"\xE6\x9B\x84", + "\x9E\x41"=>"\xE6\x9A\xB8", + "\x9E\x42"=>"\xE6\x9B\x96", + "\x9E\x43"=>"\xE6\x9B\x9A", + "\x9E\x44"=>"\xE6\x9B\xA0", + "\x9E\x45"=>"\xE6\x98\xBF", + "\x9E\x46"=>"\xE6\x9B\xA6", + "\x9E\x47"=>"\xE6\x9B\xA9", + "\x9E\x48"=>"\xE6\x9B\xB0", + "\x9E\x49"=>"\xE6\x9B\xB5", + "\x9E\x4A"=>"\xE6\x9B\xB7", + "\x9E\x4B"=>"\xE6\x9C\x8F", + "\x9E\x4C"=>"\xE6\x9C\x96", + "\x9E\x4D"=>"\xE6\x9C\x9E", + "\x9E\x4E"=>"\xE6\x9C\xA6", + "\x9E\x4F"=>"\xE6\x9C\xA7", + "\x9E\x50"=>"\xE9\x9C\xB8", + "\x9E\x51"=>"\xE6\x9C\xAE", + "\x9E\x52"=>"\xE6\x9C\xBF", + "\x9E\x53"=>"\xE6\x9C\xB6", + "\x9E\x54"=>"\xE6\x9D\x81", + "\x9E\x55"=>"\xE6\x9C\xB8", + "\x9E\x56"=>"\xE6\x9C\xB7", + "\x9E\x57"=>"\xE6\x9D\x86", + "\x9E\x58"=>"\xE6\x9D\x9E", + "\x9E\x59"=>"\xE6\x9D\xA0", + "\x9E\x5A"=>"\xE6\x9D\x99", + "\x9E\x5B"=>"\xE6\x9D\xA3", + "\x9E\x5C"=>"\xE6\x9D\xA4", + "\x9E\x5D"=>"\xE6\x9E\x89", + "\x9E\x5E"=>"\xE6\x9D\xB0", + "\x9E\x5F"=>"\xE6\x9E\xA9", + "\x9E\x60"=>"\xE6\x9D\xBC", + "\x9E\x61"=>"\xE6\x9D\xAA", + "\x9E\x62"=>"\xE6\x9E\x8C", + "\x9E\x63"=>"\xE6\x9E\x8B", + "\x9E\x64"=>"\xE6\x9E\xA6", + "\x9E\x65"=>"\xE6\x9E\xA1", + "\x9E\x66"=>"\xE6\x9E\x85", + "\x9E\x67"=>"\xE6\x9E\xB7", + "\x9E\x68"=>"\xE6\x9F\xAF", + "\x9E\x69"=>"\xE6\x9E\xB4", + "\x9E\x6A"=>"\xE6\x9F\xAC", + "\x9E\x6B"=>"\xE6\x9E\xB3", + "\x9E\x6C"=>"\xE6\x9F\xA9", + "\x9E\x6D"=>"\xE6\x9E\xB8", + "\x9E\x6E"=>"\xE6\x9F\xA4", + "\x9E\x6F"=>"\xE6\x9F\x9E", + "\x9E\x70"=>"\xE6\x9F\x9D", + "\x9E\x71"=>"\xE6\x9F\xA2", + "\x9E\x72"=>"\xE6\x9F\xAE", + "\x9E\x73"=>"\xE6\x9E\xB9", + "\x9E\x74"=>"\xE6\x9F\x8E", + "\x9E\x75"=>"\xE6\x9F\x86", + "\x9E\x76"=>"\xE6\x9F\xA7", + "\x9E\x77"=>"\xE6\xAA\x9C", + "\x9E\x78"=>"\xE6\xA0\x9E", + "\x9E\x79"=>"\xE6\xA1\x86", + "\x9E\x7A"=>"\xE6\xA0\xA9", + "\x9E\x7B"=>"\xE6\xA1\x80", + "\x9E\x7C"=>"\xE6\xA1\x8D", + "\x9E\x7D"=>"\xE6\xA0\xB2", + "\x9E\x7E"=>"\xE6\xA1\x8E", + "\x9E\x80"=>"\xE6\xA2\xB3", + "\x9E\x81"=>"\xE6\xA0\xAB", + "\x9E\x82"=>"\xE6\xA1\x99", + "\x9E\x83"=>"\xE6\xA1\xA3", + "\x9E\x84"=>"\xE6\xA1\xB7", + "\x9E\x85"=>"\xE6\xA1\xBF", + "\x9E\x86"=>"\xE6\xA2\x9F", + "\x9E\x87"=>"\xE6\xA2\x8F", + "\x9E\x88"=>"\xE6\xA2\xAD", + "\x9E\x89"=>"\xE6\xA2\x94", + "\x9E\x8A"=>"\xE6\xA2\x9D", + "\x9E\x8B"=>"\xE6\xA2\x9B", + "\x9E\x8C"=>"\xE6\xA2\x83", + "\x9E\x8D"=>"\xE6\xAA\xAE", + "\x9E\x8E"=>"\xE6\xA2\xB9", + "\x9E\x8F"=>"\xE6\xA1\xB4", + "\x9E\x90"=>"\xE6\xA2\xB5", + "\x9E\x91"=>"\xE6\xA2\xA0", + "\x9E\x92"=>"\xE6\xA2\xBA", + "\x9E\x93"=>"\xE6\xA4\x8F", + "\x9E\x94"=>"\xE6\xA2\x8D", + "\x9E\x95"=>"\xE6\xA1\xBE", + "\x9E\x96"=>"\xE6\xA4\x81", + "\x9E\x97"=>"\xE6\xA3\x8A", + "\x9E\x98"=>"\xE6\xA4\x88", + "\x9E\x99"=>"\xE6\xA3\x98", + "\x9E\x9A"=>"\xE6\xA4\xA2", + "\x9E\x9B"=>"\xE6\xA4\xA6", + "\x9E\x9C"=>"\xE6\xA3\xA1", + "\x9E\x9D"=>"\xE6\xA4\x8C", + "\x9E\x9E"=>"\xE6\xA3\x8D", + "\x9E\x9F"=>"\xE6\xA3\x94", + "\x9E\xA0"=>"\xE6\xA3\xA7", + "\x9E\xA1"=>"\xE6\xA3\x95", + "\x9E\xA2"=>"\xE6\xA4\xB6", + "\x9E\xA3"=>"\xE6\xA4\x92", + "\x9E\xA4"=>"\xE6\xA4\x84", + "\x9E\xA5"=>"\xE6\xA3\x97", + "\x9E\xA6"=>"\xE6\xA3\xA3", + "\x9E\xA7"=>"\xE6\xA4\xA5", + "\x9E\xA8"=>"\xE6\xA3\xB9", + "\x9E\xA9"=>"\xE6\xA3\xA0", + "\x9E\xAA"=>"\xE6\xA3\xAF", + "\x9E\xAB"=>"\xE6\xA4\xA8", + "\x9E\xAC"=>"\xE6\xA4\xAA", + "\x9E\xAD"=>"\xE6\xA4\x9A", + "\x9E\xAE"=>"\xE6\xA4\xA3", + "\x9E\xAF"=>"\xE6\xA4\xA1", + "\x9E\xB0"=>"\xE6\xA3\x86", + "\x9E\xB1"=>"\xE6\xA5\xB9", + "\x9E\xB2"=>"\xE6\xA5\xB7", + "\x9E\xB3"=>"\xE6\xA5\x9C", + "\x9E\xB4"=>"\xE6\xA5\xB8", + "\x9E\xB5"=>"\xE6\xA5\xAB", + "\x9E\xB6"=>"\xE6\xA5\x94", + "\x9E\xB7"=>"\xE6\xA5\xBE", + "\x9E\xB8"=>"\xE6\xA5\xAE", + "\x9E\xB9"=>"\xE6\xA4\xB9", + "\x9E\xBA"=>"\xE6\xA5\xB4", + "\x9E\xBB"=>"\xE6\xA4\xBD", + "\x9E\xBC"=>"\xE6\xA5\x99", + "\x9E\xBD"=>"\xE6\xA4\xB0", + "\x9E\xBE"=>"\xE6\xA5\xA1", + "\x9E\xBF"=>"\xE6\xA5\x9E", + "\x9E\xC0"=>"\xE6\xA5\x9D", + "\x9E\xC1"=>"\xE6\xA6\x81", + "\x9E\xC2"=>"\xE6\xA5\xAA", + "\x9E\xC3"=>"\xE6\xA6\xB2", + "\x9E\xC4"=>"\xE6\xA6\xAE", + "\x9E\xC5"=>"\xE6\xA7\x90", + "\x9E\xC6"=>"\xE6\xA6\xBF", + "\x9E\xC7"=>"\xE6\xA7\x81", + "\x9E\xC8"=>"\xE6\xA7\x93", + "\x9E\xC9"=>"\xE6\xA6\xBE", + "\x9E\xCA"=>"\xE6\xA7\x8E", + "\x9E\xCB"=>"\xE5\xAF\xA8", + "\x9E\xCC"=>"\xE6\xA7\x8A", + "\x9E\xCD"=>"\xE6\xA7\x9D", + "\x9E\xCE"=>"\xE6\xA6\xBB", + "\x9E\xCF"=>"\xE6\xA7\x83", + "\x9E\xD0"=>"\xE6\xA6\xA7", + "\x9E\xD1"=>"\xE6\xA8\xAE", + "\x9E\xD2"=>"\xE6\xA6\x91", + "\x9E\xD3"=>"\xE6\xA6\xA0", + "\x9E\xD4"=>"\xE6\xA6\x9C", + "\x9E\xD5"=>"\xE6\xA6\x95", + "\x9E\xD6"=>"\xE6\xA6\xB4", + "\x9E\xD7"=>"\xE6\xA7\x9E", + "\x9E\xD8"=>"\xE6\xA7\xA8", + "\x9E\xD9"=>"\xE6\xA8\x82", + "\x9E\xDA"=>"\xE6\xA8\x9B", + "\x9E\xDB"=>"\xE6\xA7\xBF", + "\x9E\xDC"=>"\xE6\xAC\x8A", + "\x9E\xDD"=>"\xE6\xA7\xB9", + "\x9E\xDE"=>"\xE6\xA7\xB2", + "\x9E\xDF"=>"\xE6\xA7\xA7", + "\x9E\xE0"=>"\xE6\xA8\x85", + "\x9E\xE1"=>"\xE6\xA6\xB1", + "\x9E\xE2"=>"\xE6\xA8\x9E", + "\x9E\xE3"=>"\xE6\xA7\xAD", + "\x9E\xE4"=>"\xE6\xA8\x94", + "\x9E\xE5"=>"\xE6\xA7\xAB", + "\x9E\xE6"=>"\xE6\xA8\x8A", + "\x9E\xE7"=>"\xE6\xA8\x92", + "\x9E\xE8"=>"\xE6\xAB\x81", + "\x9E\xE9"=>"\xE6\xA8\xA3", + "\x9E\xEA"=>"\xE6\xA8\x93", + "\x9E\xEB"=>"\xE6\xA9\x84", + "\x9E\xEC"=>"\xE6\xA8\x8C", + "\x9E\xED"=>"\xE6\xA9\xB2", + "\x9E\xEE"=>"\xE6\xA8\xB6", + "\x9E\xEF"=>"\xE6\xA9\xB8", + "\x9E\xF0"=>"\xE6\xA9\x87", + "\x9E\xF1"=>"\xE6\xA9\xA2", + "\x9E\xF2"=>"\xE6\xA9\x99", + "\x9E\xF3"=>"\xE6\xA9\xA6", + "\x9E\xF4"=>"\xE6\xA9\x88", + "\x9E\xF5"=>"\xE6\xA8\xB8", + "\x9E\xF6"=>"\xE6\xA8\xA2", + "\x9E\xF7"=>"\xE6\xAA\x90", + "\x9E\xF8"=>"\xE6\xAA\x8D", + "\x9E\xF9"=>"\xE6\xAA\xA0", + "\x9E\xFA"=>"\xE6\xAA\x84", + "\x9E\xFB"=>"\xE6\xAA\xA2", + "\x9E\xFC"=>"\xE6\xAA\xA3", + "\x9F\x40"=>"\xE6\xAA\x97", + "\x9F\x41"=>"\xE8\x98\x97", + "\x9F\x42"=>"\xE6\xAA\xBB", + "\x9F\x43"=>"\xE6\xAB\x83", + "\x9F\x44"=>"\xE6\xAB\x82", + "\x9F\x45"=>"\xE6\xAA\xB8", + "\x9F\x46"=>"\xE6\xAA\xB3", + "\x9F\x47"=>"\xE6\xAA\xAC", + "\x9F\x48"=>"\xE6\xAB\x9E", + "\x9F\x49"=>"\xE6\xAB\x91", + "\x9F\x4A"=>"\xE6\xAB\x9F", + "\x9F\x4B"=>"\xE6\xAA\xAA", + "\x9F\x4C"=>"\xE6\xAB\x9A", + "\x9F\x4D"=>"\xE6\xAB\xAA", + "\x9F\x4E"=>"\xE6\xAB\xBB", + "\x9F\x4F"=>"\xE6\xAC\x85", + "\x9F\x50"=>"\xE8\x98\x96", + "\x9F\x51"=>"\xE6\xAB\xBA", + "\x9F\x52"=>"\xE6\xAC\x92", + "\x9F\x53"=>"\xE6\xAC\x96", + "\x9F\x54"=>"\xE9\xAC\xB1", + "\x9F\x55"=>"\xE6\xAC\x9F", + "\x9F\x56"=>"\xE6\xAC\xB8", + "\x9F\x57"=>"\xE6\xAC\xB7", + "\x9F\x58"=>"\xE7\x9B\x9C", + "\x9F\x59"=>"\xE6\xAC\xB9", + "\x9F\x5A"=>"\xE9\xA3\xAE", + "\x9F\x5B"=>"\xE6\xAD\x87", + "\x9F\x5C"=>"\xE6\xAD\x83", + "\x9F\x5D"=>"\xE6\xAD\x89", + "\x9F\x5E"=>"\xE6\xAD\x90", + "\x9F\x5F"=>"\xE6\xAD\x99", + "\x9F\x60"=>"\xE6\xAD\x94", + "\x9F\x61"=>"\xE6\xAD\x9B", + "\x9F\x62"=>"\xE6\xAD\x9F", + "\x9F\x63"=>"\xE6\xAD\xA1", + "\x9F\x64"=>"\xE6\xAD\xB8", + "\x9F\x65"=>"\xE6\xAD\xB9", + "\x9F\x66"=>"\xE6\xAD\xBF", + "\x9F\x67"=>"\xE6\xAE\x80", + "\x9F\x68"=>"\xE6\xAE\x84", + "\x9F\x69"=>"\xE6\xAE\x83", + "\x9F\x6A"=>"\xE6\xAE\x8D", + "\x9F\x6B"=>"\xE6\xAE\x98", + "\x9F\x6C"=>"\xE6\xAE\x95", + "\x9F\x6D"=>"\xE6\xAE\x9E", + "\x9F\x6E"=>"\xE6\xAE\xA4", + "\x9F\x6F"=>"\xE6\xAE\xAA", + "\x9F\x70"=>"\xE6\xAE\xAB", + "\x9F\x71"=>"\xE6\xAE\xAF", + "\x9F\x72"=>"\xE6\xAE\xB2", + "\x9F\x73"=>"\xE6\xAE\xB1", + "\x9F\x74"=>"\xE6\xAE\xB3", + "\x9F\x75"=>"\xE6\xAE\xB7", + "\x9F\x76"=>"\xE6\xAE\xBC", + "\x9F\x77"=>"\xE6\xAF\x86", + "\x9F\x78"=>"\xE6\xAF\x8B", + "\x9F\x79"=>"\xE6\xAF\x93", + "\x9F\x7A"=>"\xE6\xAF\x9F", + "\x9F\x7B"=>"\xE6\xAF\xAC", + "\x9F\x7C"=>"\xE6\xAF\xAB", + "\x9F\x7D"=>"\xE6\xAF\xB3", + "\x9F\x7E"=>"\xE6\xAF\xAF", + "\x9F\x80"=>"\xE9\xBA\xBE", + "\x9F\x81"=>"\xE6\xB0\x88", + "\x9F\x82"=>"\xE6\xB0\x93", + "\x9F\x83"=>"\xE6\xB0\x94", + "\x9F\x84"=>"\xE6\xB0\x9B", + "\x9F\x85"=>"\xE6\xB0\xA4", + "\x9F\x86"=>"\xE6\xB0\xA3", + "\x9F\x87"=>"\xE6\xB1\x9E", + "\x9F\x88"=>"\xE6\xB1\x95", + "\x9F\x89"=>"\xE6\xB1\xA2", + "\x9F\x8A"=>"\xE6\xB1\xAA", + "\x9F\x8B"=>"\xE6\xB2\x82", + "\x9F\x8C"=>"\xE6\xB2\x8D", + "\x9F\x8D"=>"\xE6\xB2\x9A", + "\x9F\x8E"=>"\xE6\xB2\x81", + "\x9F\x8F"=>"\xE6\xB2\x9B", + "\x9F\x90"=>"\xE6\xB1\xBE", + "\x9F\x91"=>"\xE6\xB1\xA8", + "\x9F\x92"=>"\xE6\xB1\xB3", + "\x9F\x93"=>"\xE6\xB2\x92", + "\x9F\x94"=>"\xE6\xB2\x90", + "\x9F\x95"=>"\xE6\xB3\x84", + "\x9F\x96"=>"\xE6\xB3\xB1", + "\x9F\x97"=>"\xE6\xB3\x93", + "\x9F\x98"=>"\xE6\xB2\xBD", + "\x9F\x99"=>"\xE6\xB3\x97", + "\x9F\x9A"=>"\xE6\xB3\x85", + "\x9F\x9B"=>"\xE6\xB3\x9D", + "\x9F\x9C"=>"\xE6\xB2\xAE", + "\x9F\x9D"=>"\xE6\xB2\xB1", + "\x9F\x9E"=>"\xE6\xB2\xBE", + "\x9F\x9F"=>"\xE6\xB2\xBA", + "\x9F\xA0"=>"\xE6\xB3\x9B", + "\x9F\xA1"=>"\xE6\xB3\xAF", + "\x9F\xA2"=>"\xE6\xB3\x99", + "\x9F\xA3"=>"\xE6\xB3\xAA", + "\x9F\xA4"=>"\xE6\xB4\x9F", + "\x9F\xA5"=>"\xE8\xA1\x8D", + "\x9F\xA6"=>"\xE6\xB4\xB6", + "\x9F\xA7"=>"\xE6\xB4\xAB", + "\x9F\xA8"=>"\xE6\xB4\xBD", + "\x9F\xA9"=>"\xE6\xB4\xB8", + "\x9F\xAA"=>"\xE6\xB4\x99", + "\x9F\xAB"=>"\xE6\xB4\xB5", + "\x9F\xAC"=>"\xE6\xB4\xB3", + "\x9F\xAD"=>"\xE6\xB4\x92", + "\x9F\xAE"=>"\xE6\xB4\x8C", + "\x9F\xAF"=>"\xE6\xB5\xA3", + "\x9F\xB0"=>"\xE6\xB6\x93", + "\x9F\xB1"=>"\xE6\xB5\xA4", + "\x9F\xB2"=>"\xE6\xB5\x9A", + "\x9F\xB3"=>"\xE6\xB5\xB9", + "\x9F\xB4"=>"\xE6\xB5\x99", + "\x9F\xB5"=>"\xE6\xB6\x8E", + "\x9F\xB6"=>"\xE6\xB6\x95", + "\x9F\xB7"=>"\xE6\xBF\xA4", + "\x9F\xB8"=>"\xE6\xB6\x85", + "\x9F\xB9"=>"\xE6\xB7\xB9", + "\x9F\xBA"=>"\xE6\xB8\x95", + "\x9F\xBB"=>"\xE6\xB8\x8A", + "\x9F\xBC"=>"\xE6\xB6\xB5", + "\x9F\xBD"=>"\xE6\xB7\x87", + "\x9F\xBE"=>"\xE6\xB7\xA6", + "\x9F\xBF"=>"\xE6\xB6\xB8", + "\x9F\xC0"=>"\xE6\xB7\x86", + "\x9F\xC1"=>"\xE6\xB7\xAC", + "\x9F\xC2"=>"\xE6\xB7\x9E", + "\x9F\xC3"=>"\xE6\xB7\x8C", + "\x9F\xC4"=>"\xE6\xB7\xA8", + "\x9F\xC5"=>"\xE6\xB7\x92", + "\x9F\xC6"=>"\xE6\xB7\x85", + "\x9F\xC7"=>"\xE6\xB7\xBA", + "\x9F\xC8"=>"\xE6\xB7\x99", + "\x9F\xC9"=>"\xE6\xB7\xA4", + "\x9F\xCA"=>"\xE6\xB7\x95", + "\x9F\xCB"=>"\xE6\xB7\xAA", + "\x9F\xCC"=>"\xE6\xB7\xAE", + "\x9F\xCD"=>"\xE6\xB8\xAD", + "\x9F\xCE"=>"\xE6\xB9\xAE", + "\x9F\xCF"=>"\xE6\xB8\xAE", + "\x9F\xD0"=>"\xE6\xB8\x99", + "\x9F\xD1"=>"\xE6\xB9\xB2", + "\x9F\xD2"=>"\xE6\xB9\x9F", + "\x9F\xD3"=>"\xE6\xB8\xBE", + "\x9F\xD4"=>"\xE6\xB8\xA3", + "\x9F\xD5"=>"\xE6\xB9\xAB", + "\x9F\xD6"=>"\xE6\xB8\xAB", + "\x9F\xD7"=>"\xE6\xB9\xB6", + "\x9F\xD8"=>"\xE6\xB9\x8D", + "\x9F\xD9"=>"\xE6\xB8\x9F", + "\x9F\xDA"=>"\xE6\xB9\x83", + "\x9F\xDB"=>"\xE6\xB8\xBA", + "\x9F\xDC"=>"\xE6\xB9\x8E", + "\x9F\xDD"=>"\xE6\xB8\xA4", + "\x9F\xDE"=>"\xE6\xBB\xBF", + "\x9F\xDF"=>"\xE6\xB8\x9D", + "\x9F\xE0"=>"\xE6\xB8\xB8", + "\x9F\xE1"=>"\xE6\xBA\x82", + "\x9F\xE2"=>"\xE6\xBA\xAA", + "\x9F\xE3"=>"\xE6\xBA\x98", + "\x9F\xE4"=>"\xE6\xBB\x89", + "\x9F\xE5"=>"\xE6\xBA\xB7", + "\x9F\xE6"=>"\xE6\xBB\x93", + "\x9F\xE7"=>"\xE6\xBA\xBD", + "\x9F\xE8"=>"\xE6\xBA\xAF", + "\x9F\xE9"=>"\xE6\xBB\x84", + "\x9F\xEA"=>"\xE6\xBA\xB2", + "\x9F\xEB"=>"\xE6\xBB\x94", + "\x9F\xEC"=>"\xE6\xBB\x95", + "\x9F\xED"=>"\xE6\xBA\x8F", + "\x9F\xEE"=>"\xE6\xBA\xA5", + "\x9F\xEF"=>"\xE6\xBB\x82", + "\x9F\xF0"=>"\xE6\xBA\x9F", + "\x9F\xF1"=>"\xE6\xBD\x81", + "\x9F\xF2"=>"\xE6\xBC\x91", + "\x9F\xF3"=>"\xE7\x81\x8C", + "\x9F\xF4"=>"\xE6\xBB\xAC", + "\x9F\xF5"=>"\xE6\xBB\xB8", + "\x9F\xF6"=>"\xE6\xBB\xBE", + "\x9F\xF7"=>"\xE6\xBC\xBF", + "\x9F\xF8"=>"\xE6\xBB\xB2", + "\x9F\xF9"=>"\xE6\xBC\xB1", + "\x9F\xFA"=>"\xE6\xBB\xAF", + "\x9F\xFB"=>"\xE6\xBC\xB2", + "\x9F\xFC"=>"\xE6\xBB\x8C", + "\xA1"=>"\xEF\xBD\xA1", + "\xA2"=>"\xEF\xBD\xA2", + "\xA3"=>"\xEF\xBD\xA3", + "\xA4"=>"\xEF\xBD\xA4", + "\xA5"=>"\xEF\xBD\xA5", + "\xA6"=>"\xEF\xBD\xA6", + "\xA7"=>"\xEF\xBD\xA7", + "\xA8"=>"\xEF\xBD\xA8", + "\xA9"=>"\xEF\xBD\xA9", + "\xAA"=>"\xEF\xBD\xAA", + "\xAB"=>"\xEF\xBD\xAB", + "\xAC"=>"\xEF\xBD\xAC", + "\xAD"=>"\xEF\xBD\xAD", + "\xAE"=>"\xEF\xBD\xAE", + "\xAF"=>"\xEF\xBD\xAF", + "\xB0"=>"\xEF\xBD\xB0", + "\xB1"=>"\xEF\xBD\xB1", + "\xB2"=>"\xEF\xBD\xB2", + "\xB3"=>"\xEF\xBD\xB3", + "\xB4"=>"\xEF\xBD\xB4", + "\xB5"=>"\xEF\xBD\xB5", + "\xB6"=>"\xEF\xBD\xB6", + "\xB7"=>"\xEF\xBD\xB7", + "\xB8"=>"\xEF\xBD\xB8", + "\xB9"=>"\xEF\xBD\xB9", + "\xBA"=>"\xEF\xBD\xBA", + "\xBB"=>"\xEF\xBD\xBB", + "\xBC"=>"\xEF\xBD\xBC", + "\xBD"=>"\xEF\xBD\xBD", + "\xBE"=>"\xEF\xBD\xBE", + "\xBF"=>"\xEF\xBD\xBF", + "\xC0"=>"\xEF\xBE\x80", + "\xC1"=>"\xEF\xBE\x81", + "\xC2"=>"\xEF\xBE\x82", + "\xC3"=>"\xEF\xBE\x83", + "\xC4"=>"\xEF\xBE\x84", + "\xC5"=>"\xEF\xBE\x85", + "\xC6"=>"\xEF\xBE\x86", + "\xC7"=>"\xEF\xBE\x87", + "\xC8"=>"\xEF\xBE\x88", + "\xC9"=>"\xEF\xBE\x89", + "\xCA"=>"\xEF\xBE\x8A", + "\xCB"=>"\xEF\xBE\x8B", + "\xCC"=>"\xEF\xBE\x8C", + "\xCD"=>"\xEF\xBE\x8D", + "\xCE"=>"\xEF\xBE\x8E", + "\xCF"=>"\xEF\xBE\x8F", + "\xD0"=>"\xEF\xBE\x90", + "\xD1"=>"\xEF\xBE\x91", + "\xD2"=>"\xEF\xBE\x92", + "\xD3"=>"\xEF\xBE\x93", + "\xD4"=>"\xEF\xBE\x94", + "\xD5"=>"\xEF\xBE\x95", + "\xD6"=>"\xEF\xBE\x96", + "\xD7"=>"\xEF\xBE\x97", + "\xD8"=>"\xEF\xBE\x98", + "\xD9"=>"\xEF\xBE\x99", + "\xDA"=>"\xEF\xBE\x9A", + "\xDB"=>"\xEF\xBE\x9B", + "\xDC"=>"\xEF\xBE\x9C", + "\xDD"=>"\xEF\xBE\x9D", + "\xDE"=>"\xEF\xBE\x9E", + "\xDF"=>"\xEF\xBE\x9F", + "\xE0\x40"=>"\xE6\xBC\xBE", + "\xE0\x41"=>"\xE6\xBC\x93", + "\xE0\x42"=>"\xE6\xBB\xB7", + "\xE0\x43"=>"\xE6\xBE\x86", + "\xE0\x44"=>"\xE6\xBD\xBA", + "\xE0\x45"=>"\xE6\xBD\xB8", + "\xE0\x46"=>"\xE6\xBE\x81", + "\xE0\x47"=>"\xE6\xBE\x80", + "\xE0\x48"=>"\xE6\xBD\xAF", + "\xE0\x49"=>"\xE6\xBD\x9B", + "\xE0\x4A"=>"\xE6\xBF\xB3", + "\xE0\x4B"=>"\xE6\xBD\xAD", + "\xE0\x4C"=>"\xE6\xBE\x82", + "\xE0\x4D"=>"\xE6\xBD\xBC", + "\xE0\x4E"=>"\xE6\xBD\x98", + "\xE0\x4F"=>"\xE6\xBE\x8E", + "\xE0\x50"=>"\xE6\xBE\x91", + "\xE0\x51"=>"\xE6\xBF\x82", + "\xE0\x52"=>"\xE6\xBD\xA6", + "\xE0\x53"=>"\xE6\xBE\xB3", + "\xE0\x54"=>"\xE6\xBE\xA3", + "\xE0\x55"=>"\xE6\xBE\xA1", + "\xE0\x56"=>"\xE6\xBE\xA4", + "\xE0\x57"=>"\xE6\xBE\xB9", + "\xE0\x58"=>"\xE6\xBF\x86", + "\xE0\x59"=>"\xE6\xBE\xAA", + "\xE0\x5A"=>"\xE6\xBF\x9F", + "\xE0\x5B"=>"\xE6\xBF\x95", + "\xE0\x5C"=>"\xE6\xBF\xAC", + "\xE0\x5D"=>"\xE6\xBF\x94", + "\xE0\x5E"=>"\xE6\xBF\x98", + "\xE0\x5F"=>"\xE6\xBF\xB1", + "\xE0\x60"=>"\xE6\xBF\xAE", + "\xE0\x61"=>"\xE6\xBF\x9B", + "\xE0\x62"=>"\xE7\x80\x89", + "\xE0\x63"=>"\xE7\x80\x8B", + "\xE0\x64"=>"\xE6\xBF\xBA", + "\xE0\x65"=>"\xE7\x80\x91", + "\xE0\x66"=>"\xE7\x80\x81", + "\xE0\x67"=>"\xE7\x80\x8F", + "\xE0\x68"=>"\xE6\xBF\xBE", + "\xE0\x69"=>"\xE7\x80\x9B", + "\xE0\x6A"=>"\xE7\x80\x9A", + "\xE0\x6B"=>"\xE6\xBD\xB4", + "\xE0\x6C"=>"\xE7\x80\x9D", + "\xE0\x6D"=>"\xE7\x80\x98", + "\xE0\x6E"=>"\xE7\x80\x9F", + "\xE0\x6F"=>"\xE7\x80\xB0", + "\xE0\x70"=>"\xE7\x80\xBE", + "\xE0\x71"=>"\xE7\x80\xB2", + "\xE0\x72"=>"\xE7\x81\x91", + "\xE0\x73"=>"\xE7\x81\xA3", + "\xE0\x74"=>"\xE7\x82\x99", + "\xE0\x75"=>"\xE7\x82\x92", + "\xE0\x76"=>"\xE7\x82\xAF", + "\xE0\x77"=>"\xE7\x83\xB1", + "\xE0\x78"=>"\xE7\x82\xAC", + "\xE0\x79"=>"\xE7\x82\xB8", + "\xE0\x7A"=>"\xE7\x82\xB3", + "\xE0\x7B"=>"\xE7\x82\xAE", + "\xE0\x7C"=>"\xE7\x83\x9F", + "\xE0\x7D"=>"\xE7\x83\x8B", + "\xE0\x7E"=>"\xE7\x83\x9D", + "\xE0\x80"=>"\xE7\x83\x99", + "\xE0\x81"=>"\xE7\x84\x89", + "\xE0\x82"=>"\xE7\x83\xBD", + "\xE0\x83"=>"\xE7\x84\x9C", + "\xE0\x84"=>"\xE7\x84\x99", + "\xE0\x85"=>"\xE7\x85\xA5", + "\xE0\x86"=>"\xE7\x85\x95", + "\xE0\x87"=>"\xE7\x86\x88", + "\xE0\x88"=>"\xE7\x85\xA6", + "\xE0\x89"=>"\xE7\x85\xA2", + "\xE0\x8A"=>"\xE7\x85\x8C", + "\xE0\x8B"=>"\xE7\x85\x96", + "\xE0\x8C"=>"\xE7\x85\xAC", + "\xE0\x8D"=>"\xE7\x86\x8F", + "\xE0\x8E"=>"\xE7\x87\xBB", + "\xE0\x8F"=>"\xE7\x86\x84", + "\xE0\x90"=>"\xE7\x86\x95", + "\xE0\x91"=>"\xE7\x86\xA8", + "\xE0\x92"=>"\xE7\x86\xAC", + "\xE0\x93"=>"\xE7\x87\x97", + "\xE0\x94"=>"\xE7\x86\xB9", + "\xE0\x95"=>"\xE7\x86\xBE", + "\xE0\x96"=>"\xE7\x87\x92", + "\xE0\x97"=>"\xE7\x87\x89", + "\xE0\x98"=>"\xE7\x87\x94", + "\xE0\x99"=>"\xE7\x87\x8E", + "\xE0\x9A"=>"\xE7\x87\xA0", + "\xE0\x9B"=>"\xE7\x87\xAC", + "\xE0\x9C"=>"\xE7\x87\xA7", + "\xE0\x9D"=>"\xE7\x87\xB5", + "\xE0\x9E"=>"\xE7\x87\xBC", + "\xE0\x9F"=>"\xE7\x87\xB9", + "\xE0\xA0"=>"\xE7\x87\xBF", + "\xE0\xA1"=>"\xE7\x88\x8D", + "\xE0\xA2"=>"\xE7\x88\x90", + "\xE0\xA3"=>"\xE7\x88\x9B", + "\xE0\xA4"=>"\xE7\x88\xA8", + "\xE0\xA5"=>"\xE7\x88\xAD", + "\xE0\xA6"=>"\xE7\x88\xAC", + "\xE0\xA7"=>"\xE7\x88\xB0", + "\xE0\xA8"=>"\xE7\x88\xB2", + "\xE0\xA9"=>"\xE7\x88\xBB", + "\xE0\xAA"=>"\xE7\x88\xBC", + "\xE0\xAB"=>"\xE7\x88\xBF", + "\xE0\xAC"=>"\xE7\x89\x80", + "\xE0\xAD"=>"\xE7\x89\x86", + "\xE0\xAE"=>"\xE7\x89\x8B", + "\xE0\xAF"=>"\xE7\x89\x98", + "\xE0\xB0"=>"\xE7\x89\xB4", + "\xE0\xB1"=>"\xE7\x89\xBE", + "\xE0\xB2"=>"\xE7\x8A\x82", + "\xE0\xB3"=>"\xE7\x8A\x81", + "\xE0\xB4"=>"\xE7\x8A\x87", + "\xE0\xB5"=>"\xE7\x8A\x92", + "\xE0\xB6"=>"\xE7\x8A\x96", + "\xE0\xB7"=>"\xE7\x8A\xA2", + "\xE0\xB8"=>"\xE7\x8A\xA7", + "\xE0\xB9"=>"\xE7\x8A\xB9", + "\xE0\xBA"=>"\xE7\x8A\xB2", + "\xE0\xBB"=>"\xE7\x8B\x83", + "\xE0\xBC"=>"\xE7\x8B\x86", + "\xE0\xBD"=>"\xE7\x8B\x84", + "\xE0\xBE"=>"\xE7\x8B\x8E", + "\xE0\xBF"=>"\xE7\x8B\x92", + "\xE0\xC0"=>"\xE7\x8B\xA2", + "\xE0\xC1"=>"\xE7\x8B\xA0", + "\xE0\xC2"=>"\xE7\x8B\xA1", + "\xE0\xC3"=>"\xE7\x8B\xB9", + "\xE0\xC4"=>"\xE7\x8B\xB7", + "\xE0\xC5"=>"\xE5\x80\x8F", + "\xE0\xC6"=>"\xE7\x8C\x97", + "\xE0\xC7"=>"\xE7\x8C\x8A", + "\xE0\xC8"=>"\xE7\x8C\x9C", + "\xE0\xC9"=>"\xE7\x8C\x96", + "\xE0\xCA"=>"\xE7\x8C\x9D", + "\xE0\xCB"=>"\xE7\x8C\xB4", + "\xE0\xCC"=>"\xE7\x8C\xAF", + "\xE0\xCD"=>"\xE7\x8C\xA9", + "\xE0\xCE"=>"\xE7\x8C\xA5", + "\xE0\xCF"=>"\xE7\x8C\xBE", + "\xE0\xD0"=>"\xE7\x8D\x8E", + "\xE0\xD1"=>"\xE7\x8D\x8F", + "\xE0\xD2"=>"\xE9\xBB\x98", + "\xE0\xD3"=>"\xE7\x8D\x97", + "\xE0\xD4"=>"\xE7\x8D\xAA", + "\xE0\xD5"=>"\xE7\x8D\xA8", + "\xE0\xD6"=>"\xE7\x8D\xB0", + "\xE0\xD7"=>"\xE7\x8D\xB8", + "\xE0\xD8"=>"\xE7\x8D\xB5", + "\xE0\xD9"=>"\xE7\x8D\xBB", + "\xE0\xDA"=>"\xE7\x8D\xBA", + "\xE0\xDB"=>"\xE7\x8F\x88", + "\xE0\xDC"=>"\xE7\x8E\xB3", + "\xE0\xDD"=>"\xE7\x8F\x8E", + "\xE0\xDE"=>"\xE7\x8E\xBB", + "\xE0\xDF"=>"\xE7\x8F\x80", + "\xE0\xE0"=>"\xE7\x8F\xA5", + "\xE0\xE1"=>"\xE7\x8F\xAE", + "\xE0\xE2"=>"\xE7\x8F\x9E", + "\xE0\xE3"=>"\xE7\x92\xA2", + "\xE0\xE4"=>"\xE7\x90\x85", + "\xE0\xE5"=>"\xE7\x91\xAF", + "\xE0\xE6"=>"\xE7\x90\xA5", + "\xE0\xE7"=>"\xE7\x8F\xB8", + "\xE0\xE8"=>"\xE7\x90\xB2", + "\xE0\xE9"=>"\xE7\x90\xBA", + "\xE0\xEA"=>"\xE7\x91\x95", + "\xE0\xEB"=>"\xE7\x90\xBF", + "\xE0\xEC"=>"\xE7\x91\x9F", + "\xE0\xED"=>"\xE7\x91\x99", + "\xE0\xEE"=>"\xE7\x91\x81", + "\xE0\xEF"=>"\xE7\x91\x9C", + "\xE0\xF0"=>"\xE7\x91\xA9", + "\xE0\xF1"=>"\xE7\x91\xB0", + "\xE0\xF2"=>"\xE7\x91\xA3", + "\xE0\xF3"=>"\xE7\x91\xAA", + "\xE0\xF4"=>"\xE7\x91\xB6", + "\xE0\xF5"=>"\xE7\x91\xBE", + "\xE0\xF6"=>"\xE7\x92\x8B", + "\xE0\xF7"=>"\xE7\x92\x9E", + "\xE0\xF8"=>"\xE7\x92\xA7", + "\xE0\xF9"=>"\xE7\x93\x8A", + "\xE0\xFA"=>"\xE7\x93\x8F", + "\xE0\xFB"=>"\xE7\x93\x94", + "\xE0\xFC"=>"\xE7\x8F\xB1", + "\xE1\x40"=>"\xE7\x93\xA0", + "\xE1\x41"=>"\xE7\x93\xA3", + "\xE1\x42"=>"\xE7\x93\xA7", + "\xE1\x43"=>"\xE7\x93\xA9", + "\xE1\x44"=>"\xE7\x93\xAE", + "\xE1\x45"=>"\xE7\x93\xB2", + "\xE1\x46"=>"\xE7\x93\xB0", + "\xE1\x47"=>"\xE7\x93\xB1", + "\xE1\x48"=>"\xE7\x93\xB8", + "\xE1\x49"=>"\xE7\x93\xB7", + "\xE1\x4A"=>"\xE7\x94\x84", + "\xE1\x4B"=>"\xE7\x94\x83", + "\xE1\x4C"=>"\xE7\x94\x85", + "\xE1\x4D"=>"\xE7\x94\x8C", + "\xE1\x4E"=>"\xE7\x94\x8E", + "\xE1\x4F"=>"\xE7\x94\x8D", + "\xE1\x50"=>"\xE7\x94\x95", + "\xE1\x51"=>"\xE7\x94\x93", + "\xE1\x52"=>"\xE7\x94\x9E", + "\xE1\x53"=>"\xE7\x94\xA6", + "\xE1\x54"=>"\xE7\x94\xAC", + "\xE1\x55"=>"\xE7\x94\xBC", + "\xE1\x56"=>"\xE7\x95\x84", + "\xE1\x57"=>"\xE7\x95\x8D", + "\xE1\x58"=>"\xE7\x95\x8A", + "\xE1\x59"=>"\xE7\x95\x89", + "\xE1\x5A"=>"\xE7\x95\x9B", + "\xE1\x5B"=>"\xE7\x95\x86", + "\xE1\x5C"=>"\xE7\x95\x9A", + "\xE1\x5D"=>"\xE7\x95\xA9", + "\xE1\x5E"=>"\xE7\x95\xA4", + "\xE1\x5F"=>"\xE7\x95\xA7", + "\xE1\x60"=>"\xE7\x95\xAB", + "\xE1\x61"=>"\xE7\x95\xAD", + "\xE1\x62"=>"\xE7\x95\xB8", + "\xE1\x63"=>"\xE7\x95\xB6", + "\xE1\x64"=>"\xE7\x96\x86", + "\xE1\x65"=>"\xE7\x96\x87", + "\xE1\x66"=>"\xE7\x95\xB4", + "\xE1\x67"=>"\xE7\x96\x8A", + "\xE1\x68"=>"\xE7\x96\x89", + "\xE1\x69"=>"\xE7\x96\x82", + "\xE1\x6A"=>"\xE7\x96\x94", + "\xE1\x6B"=>"\xE7\x96\x9A", + "\xE1\x6C"=>"\xE7\x96\x9D", + "\xE1\x6D"=>"\xE7\x96\xA5", + "\xE1\x6E"=>"\xE7\x96\xA3", + "\xE1\x6F"=>"\xE7\x97\x82", + "\xE1\x70"=>"\xE7\x96\xB3", + "\xE1\x71"=>"\xE7\x97\x83", + "\xE1\x72"=>"\xE7\x96\xB5", + "\xE1\x73"=>"\xE7\x96\xBD", + "\xE1\x74"=>"\xE7\x96\xB8", + "\xE1\x75"=>"\xE7\x96\xBC", + "\xE1\x76"=>"\xE7\x96\xB1", + "\xE1\x77"=>"\xE7\x97\x8D", + "\xE1\x78"=>"\xE7\x97\x8A", + "\xE1\x79"=>"\xE7\x97\x92", + "\xE1\x7A"=>"\xE7\x97\x99", + "\xE1\x7B"=>"\xE7\x97\xA3", + "\xE1\x7C"=>"\xE7\x97\x9E", + "\xE1\x7D"=>"\xE7\x97\xBE", + "\xE1\x7E"=>"\xE7\x97\xBF", + "\xE1\x80"=>"\xE7\x97\xBC", + "\xE1\x81"=>"\xE7\x98\x81", + "\xE1\x82"=>"\xE7\x97\xB0", + "\xE1\x83"=>"\xE7\x97\xBA", + "\xE1\x84"=>"\xE7\x97\xB2", + "\xE1\x85"=>"\xE7\x97\xB3", + "\xE1\x86"=>"\xE7\x98\x8B", + "\xE1\x87"=>"\xE7\x98\x8D", + "\xE1\x88"=>"\xE7\x98\x89", + "\xE1\x89"=>"\xE7\x98\x9F", + "\xE1\x8A"=>"\xE7\x98\xA7", + "\xE1\x8B"=>"\xE7\x98\xA0", + "\xE1\x8C"=>"\xE7\x98\xA1", + "\xE1\x8D"=>"\xE7\x98\xA2", + "\xE1\x8E"=>"\xE7\x98\xA4", + "\xE1\x8F"=>"\xE7\x98\xB4", + "\xE1\x90"=>"\xE7\x98\xB0", + "\xE1\x91"=>"\xE7\x98\xBB", + "\xE1\x92"=>"\xE7\x99\x87", + "\xE1\x93"=>"\xE7\x99\x88", + "\xE1\x94"=>"\xE7\x99\x86", + "\xE1\x95"=>"\xE7\x99\x9C", + "\xE1\x96"=>"\xE7\x99\x98", + "\xE1\x97"=>"\xE7\x99\xA1", + "\xE1\x98"=>"\xE7\x99\xA2", + "\xE1\x99"=>"\xE7\x99\xA8", + "\xE1\x9A"=>"\xE7\x99\xA9", + "\xE1\x9B"=>"\xE7\x99\xAA", + "\xE1\x9C"=>"\xE7\x99\xA7", + "\xE1\x9D"=>"\xE7\x99\xAC", + "\xE1\x9E"=>"\xE7\x99\xB0", + "\xE1\x9F"=>"\xE7\x99\xB2", + "\xE1\xA0"=>"\xE7\x99\xB6", + "\xE1\xA1"=>"\xE7\x99\xB8", + "\xE1\xA2"=>"\xE7\x99\xBC", + "\xE1\xA3"=>"\xE7\x9A\x80", + "\xE1\xA4"=>"\xE7\x9A\x83", + "\xE1\xA5"=>"\xE7\x9A\x88", + "\xE1\xA6"=>"\xE7\x9A\x8B", + "\xE1\xA7"=>"\xE7\x9A\x8E", + "\xE1\xA8"=>"\xE7\x9A\x96", + "\xE1\xA9"=>"\xE7\x9A\x93", + "\xE1\xAA"=>"\xE7\x9A\x99", + "\xE1\xAB"=>"\xE7\x9A\x9A", + "\xE1\xAC"=>"\xE7\x9A\xB0", + "\xE1\xAD"=>"\xE7\x9A\xB4", + "\xE1\xAE"=>"\xE7\x9A\xB8", + "\xE1\xAF"=>"\xE7\x9A\xB9", + "\xE1\xB0"=>"\xE7\x9A\xBA", + "\xE1\xB1"=>"\xE7\x9B\x82", + "\xE1\xB2"=>"\xE7\x9B\x8D", + "\xE1\xB3"=>"\xE7\x9B\x96", + "\xE1\xB4"=>"\xE7\x9B\x92", + "\xE1\xB5"=>"\xE7\x9B\x9E", + "\xE1\xB6"=>"\xE7\x9B\xA1", + "\xE1\xB7"=>"\xE7\x9B\xA5", + "\xE1\xB8"=>"\xE7\x9B\xA7", + "\xE1\xB9"=>"\xE7\x9B\xAA", + "\xE1\xBA"=>"\xE8\x98\xAF", + "\xE1\xBB"=>"\xE7\x9B\xBB", + "\xE1\xBC"=>"\xE7\x9C\x88", + "\xE1\xBD"=>"\xE7\x9C\x87", + "\xE1\xBE"=>"\xE7\x9C\x84", + "\xE1\xBF"=>"\xE7\x9C\xA9", + "\xE1\xC0"=>"\xE7\x9C\xA4", + "\xE1\xC1"=>"\xE7\x9C\x9E", + "\xE1\xC2"=>"\xE7\x9C\xA5", + "\xE1\xC3"=>"\xE7\x9C\xA6", + "\xE1\xC4"=>"\xE7\x9C\x9B", + "\xE1\xC5"=>"\xE7\x9C\xB7", + "\xE1\xC6"=>"\xE7\x9C\xB8", + "\xE1\xC7"=>"\xE7\x9D\x87", + "\xE1\xC8"=>"\xE7\x9D\x9A", + "\xE1\xC9"=>"\xE7\x9D\xA8", + "\xE1\xCA"=>"\xE7\x9D\xAB", + "\xE1\xCB"=>"\xE7\x9D\x9B", + "\xE1\xCC"=>"\xE7\x9D\xA5", + "\xE1\xCD"=>"\xE7\x9D\xBF", + "\xE1\xCE"=>"\xE7\x9D\xBE", + "\xE1\xCF"=>"\xE7\x9D\xB9", + "\xE1\xD0"=>"\xE7\x9E\x8E", + "\xE1\xD1"=>"\xE7\x9E\x8B", + "\xE1\xD2"=>"\xE7\x9E\x91", + "\xE1\xD3"=>"\xE7\x9E\xA0", + "\xE1\xD4"=>"\xE7\x9E\x9E", + "\xE1\xD5"=>"\xE7\x9E\xB0", + "\xE1\xD6"=>"\xE7\x9E\xB6", + "\xE1\xD7"=>"\xE7\x9E\xB9", + "\xE1\xD8"=>"\xE7\x9E\xBF", + "\xE1\xD9"=>"\xE7\x9E\xBC", + "\xE1\xDA"=>"\xE7\x9E\xBD", + "\xE1\xDB"=>"\xE7\x9E\xBB", + "\xE1\xDC"=>"\xE7\x9F\x87", + "\xE1\xDD"=>"\xE7\x9F\x8D", + "\xE1\xDE"=>"\xE7\x9F\x97", + "\xE1\xDF"=>"\xE7\x9F\x9A", + "\xE1\xE0"=>"\xE7\x9F\x9C", + "\xE1\xE1"=>"\xE7\x9F\xA3", + "\xE1\xE2"=>"\xE7\x9F\xAE", + "\xE1\xE3"=>"\xE7\x9F\xBC", + "\xE1\xE4"=>"\xE7\xA0\x8C", + "\xE1\xE5"=>"\xE7\xA0\x92", + "\xE1\xE6"=>"\xE7\xA4\xA6", + "\xE1\xE7"=>"\xE7\xA0\xA0", + "\xE1\xE8"=>"\xE7\xA4\xAA", + "\xE1\xE9"=>"\xE7\xA1\x85", + "\xE1\xEA"=>"\xE7\xA2\x8E", + "\xE1\xEB"=>"\xE7\xA1\xB4", + "\xE1\xEC"=>"\xE7\xA2\x86", + "\xE1\xED"=>"\xE7\xA1\xBC", + "\xE1\xEE"=>"\xE7\xA2\x9A", + "\xE1\xEF"=>"\xE7\xA2\x8C", + "\xE1\xF0"=>"\xE7\xA2\xA3", + "\xE1\xF1"=>"\xE7\xA2\xB5", + "\xE1\xF2"=>"\xE7\xA2\xAA", + "\xE1\xF3"=>"\xE7\xA2\xAF", + "\xE1\xF4"=>"\xE7\xA3\x91", + "\xE1\xF5"=>"\xE7\xA3\x86", + "\xE1\xF6"=>"\xE7\xA3\x8B", + "\xE1\xF7"=>"\xE7\xA3\x94", + "\xE1\xF8"=>"\xE7\xA2\xBE", + "\xE1\xF9"=>"\xE7\xA2\xBC", + "\xE1\xFA"=>"\xE7\xA3\x85", + "\xE1\xFB"=>"\xE7\xA3\x8A", + "\xE1\xFC"=>"\xE7\xA3\xAC", + "\xE2\x40"=>"\xE7\xA3\xA7", + "\xE2\x41"=>"\xE7\xA3\x9A", + "\xE2\x42"=>"\xE7\xA3\xBD", + "\xE2\x43"=>"\xE7\xA3\xB4", + "\xE2\x44"=>"\xE7\xA4\x87", + "\xE2\x45"=>"\xE7\xA4\x92", + "\xE2\x46"=>"\xE7\xA4\x91", + "\xE2\x47"=>"\xE7\xA4\x99", + "\xE2\x48"=>"\xE7\xA4\xAC", + "\xE2\x49"=>"\xE7\xA4\xAB", + "\xE2\x4A"=>"\xE7\xA5\x80", + "\xE2\x4B"=>"\xE7\xA5\xA0", + "\xE2\x4C"=>"\xE7\xA5\x97", + "\xE2\x4D"=>"\xE7\xA5\x9F", + "\xE2\x4E"=>"\xE7\xA5\x9A", + "\xE2\x4F"=>"\xE7\xA5\x95", + "\xE2\x50"=>"\xE7\xA5\x93", + "\xE2\x51"=>"\xE7\xA5\xBA", + "\xE2\x52"=>"\xE7\xA5\xBF", + "\xE2\x53"=>"\xE7\xA6\x8A", + "\xE2\x54"=>"\xE7\xA6\x9D", + "\xE2\x55"=>"\xE7\xA6\xA7", + "\xE2\x56"=>"\xE9\xBD\x8B", + "\xE2\x57"=>"\xE7\xA6\xAA", + "\xE2\x58"=>"\xE7\xA6\xAE", + "\xE2\x59"=>"\xE7\xA6\xB3", + "\xE2\x5A"=>"\xE7\xA6\xB9", + "\xE2\x5B"=>"\xE7\xA6\xBA", + "\xE2\x5C"=>"\xE7\xA7\x89", + "\xE2\x5D"=>"\xE7\xA7\x95", + "\xE2\x5E"=>"\xE7\xA7\xA7", + "\xE2\x5F"=>"\xE7\xA7\xAC", + "\xE2\x60"=>"\xE7\xA7\xA1", + "\xE2\x61"=>"\xE7\xA7\xA3", + "\xE2\x62"=>"\xE7\xA8\x88", + "\xE2\x63"=>"\xE7\xA8\x8D", + "\xE2\x64"=>"\xE7\xA8\x98", + "\xE2\x65"=>"\xE7\xA8\x99", + "\xE2\x66"=>"\xE7\xA8\xA0", + "\xE2\x67"=>"\xE7\xA8\x9F", + "\xE2\x68"=>"\xE7\xA6\x80", + "\xE2\x69"=>"\xE7\xA8\xB1", + "\xE2\x6A"=>"\xE7\xA8\xBB", + "\xE2\x6B"=>"\xE7\xA8\xBE", + "\xE2\x6C"=>"\xE7\xA8\xB7", + "\xE2\x6D"=>"\xE7\xA9\x83", + "\xE2\x6E"=>"\xE7\xA9\x97", + "\xE2\x6F"=>"\xE7\xA9\x89", + "\xE2\x70"=>"\xE7\xA9\xA1", + "\xE2\x71"=>"\xE7\xA9\xA2", + "\xE2\x72"=>"\xE7\xA9\xA9", + "\xE2\x73"=>"\xE9\xBE\x9D", + "\xE2\x74"=>"\xE7\xA9\xB0", + "\xE2\x75"=>"\xE7\xA9\xB9", + "\xE2\x76"=>"\xE7\xA9\xBD", + "\xE2\x77"=>"\xE7\xAA\x88", + "\xE2\x78"=>"\xE7\xAA\x97", + "\xE2\x79"=>"\xE7\xAA\x95", + "\xE2\x7A"=>"\xE7\xAA\x98", + "\xE2\x7B"=>"\xE7\xAA\x96", + "\xE2\x7C"=>"\xE7\xAA\xA9", + "\xE2\x7D"=>"\xE7\xAB\x88", + "\xE2\x7E"=>"\xE7\xAA\xB0", + "\xE2\x80"=>"\xE7\xAA\xB6", + "\xE2\x81"=>"\xE7\xAB\x85", + "\xE2\x82"=>"\xE7\xAB\x84", + "\xE2\x83"=>"\xE7\xAA\xBF", + "\xE2\x84"=>"\xE9\x82\x83", + "\xE2\x85"=>"\xE7\xAB\x87", + "\xE2\x86"=>"\xE7\xAB\x8A", + "\xE2\x87"=>"\xE7\xAB\x8D", + "\xE2\x88"=>"\xE7\xAB\x8F", + "\xE2\x89"=>"\xE7\xAB\x95", + "\xE2\x8A"=>"\xE7\xAB\x93", + "\xE2\x8B"=>"\xE7\xAB\x99", + "\xE2\x8C"=>"\xE7\xAB\x9A", + "\xE2\x8D"=>"\xE7\xAB\x9D", + "\xE2\x8E"=>"\xE7\xAB\xA1", + "\xE2\x8F"=>"\xE7\xAB\xA2", + "\xE2\x90"=>"\xE7\xAB\xA6", + "\xE2\x91"=>"\xE7\xAB\xAD", + "\xE2\x92"=>"\xE7\xAB\xB0", + "\xE2\x93"=>"\xE7\xAC\x82", + "\xE2\x94"=>"\xE7\xAC\x8F", + "\xE2\x95"=>"\xE7\xAC\x8A", + "\xE2\x96"=>"\xE7\xAC\x86", + "\xE2\x97"=>"\xE7\xAC\xB3", + "\xE2\x98"=>"\xE7\xAC\x98", + "\xE2\x99"=>"\xE7\xAC\x99", + "\xE2\x9A"=>"\xE7\xAC\x9E", + "\xE2\x9B"=>"\xE7\xAC\xB5", + "\xE2\x9C"=>"\xE7\xAC\xA8", + "\xE2\x9D"=>"\xE7\xAC\xB6", + "\xE2\x9E"=>"\xE7\xAD\x90", + "\xE2\x9F"=>"\xE7\xAD\xBA", + "\xE2\xA0"=>"\xE7\xAC\x84", + "\xE2\xA1"=>"\xE7\xAD\x8D", + "\xE2\xA2"=>"\xE7\xAC\x8B", + "\xE2\xA3"=>"\xE7\xAD\x8C", + "\xE2\xA4"=>"\xE7\xAD\x85", + "\xE2\xA5"=>"\xE7\xAD\xB5", + "\xE2\xA6"=>"\xE7\xAD\xA5", + "\xE2\xA7"=>"\xE7\xAD\xB4", + "\xE2\xA8"=>"\xE7\xAD\xA7", + "\xE2\xA9"=>"\xE7\xAD\xB0", + "\xE2\xAA"=>"\xE7\xAD\xB1", + "\xE2\xAB"=>"\xE7\xAD\xAC", + "\xE2\xAC"=>"\xE7\xAD\xAE", + "\xE2\xAD"=>"\xE7\xAE\x9D", + "\xE2\xAE"=>"\xE7\xAE\x98", + "\xE2\xAF"=>"\xE7\xAE\x9F", + "\xE2\xB0"=>"\xE7\xAE\x8D", + "\xE2\xB1"=>"\xE7\xAE\x9C", + "\xE2\xB2"=>"\xE7\xAE\x9A", + "\xE2\xB3"=>"\xE7\xAE\x8B", + "\xE2\xB4"=>"\xE7\xAE\x92", + "\xE2\xB5"=>"\xE7\xAE\x8F", + "\xE2\xB6"=>"\xE7\xAD\x9D", + "\xE2\xB7"=>"\xE7\xAE\x99", + "\xE2\xB8"=>"\xE7\xAF\x8B", + "\xE2\xB9"=>"\xE7\xAF\x81", + "\xE2\xBA"=>"\xE7\xAF\x8C", + "\xE2\xBB"=>"\xE7\xAF\x8F", + "\xE2\xBC"=>"\xE7\xAE\xB4", + "\xE2\xBD"=>"\xE7\xAF\x86", + "\xE2\xBE"=>"\xE7\xAF\x9D", + "\xE2\xBF"=>"\xE7\xAF\xA9", + "\xE2\xC0"=>"\xE7\xB0\x91", + "\xE2\xC1"=>"\xE7\xB0\x94", + "\xE2\xC2"=>"\xE7\xAF\xA6", + "\xE2\xC3"=>"\xE7\xAF\xA5", + "\xE2\xC4"=>"\xE7\xB1\xA0", + "\xE2\xC5"=>"\xE7\xB0\x80", + "\xE2\xC6"=>"\xE7\xB0\x87", + "\xE2\xC7"=>"\xE7\xB0\x93", + "\xE2\xC8"=>"\xE7\xAF\xB3", + "\xE2\xC9"=>"\xE7\xAF\xB7", + "\xE2\xCA"=>"\xE7\xB0\x97", + "\xE2\xCB"=>"\xE7\xB0\x8D", + "\xE2\xCC"=>"\xE7\xAF\xB6", + "\xE2\xCD"=>"\xE7\xB0\xA3", + "\xE2\xCE"=>"\xE7\xB0\xA7", + "\xE2\xCF"=>"\xE7\xB0\xAA", + "\xE2\xD0"=>"\xE7\xB0\x9F", + "\xE2\xD1"=>"\xE7\xB0\xB7", + "\xE2\xD2"=>"\xE7\xB0\xAB", + "\xE2\xD3"=>"\xE7\xB0\xBD", + "\xE2\xD4"=>"\xE7\xB1\x8C", + "\xE2\xD5"=>"\xE7\xB1\x83", + "\xE2\xD6"=>"\xE7\xB1\x94", + "\xE2\xD7"=>"\xE7\xB1\x8F", + "\xE2\xD8"=>"\xE7\xB1\x80", + "\xE2\xD9"=>"\xE7\xB1\x90", + "\xE2\xDA"=>"\xE7\xB1\x98", + "\xE2\xDB"=>"\xE7\xB1\x9F", + "\xE2\xDC"=>"\xE7\xB1\xA4", + "\xE2\xDD"=>"\xE7\xB1\x96", + "\xE2\xDE"=>"\xE7\xB1\xA5", + "\xE2\xDF"=>"\xE7\xB1\xAC", + "\xE2\xE0"=>"\xE7\xB1\xB5", + "\xE2\xE1"=>"\xE7\xB2\x83", + "\xE2\xE2"=>"\xE7\xB2\x90", + "\xE2\xE3"=>"\xE7\xB2\xA4", + "\xE2\xE4"=>"\xE7\xB2\xAD", + "\xE2\xE5"=>"\xE7\xB2\xA2", + "\xE2\xE6"=>"\xE7\xB2\xAB", + "\xE2\xE7"=>"\xE7\xB2\xA1", + "\xE2\xE8"=>"\xE7\xB2\xA8", + "\xE2\xE9"=>"\xE7\xB2\xB3", + "\xE2\xEA"=>"\xE7\xB2\xB2", + "\xE2\xEB"=>"\xE7\xB2\xB1", + "\xE2\xEC"=>"\xE7\xB2\xAE", + "\xE2\xED"=>"\xE7\xB2\xB9", + "\xE2\xEE"=>"\xE7\xB2\xBD", + "\xE2\xEF"=>"\xE7\xB3\x80", + "\xE2\xF0"=>"\xE7\xB3\x85", + "\xE2\xF1"=>"\xE7\xB3\x82", + "\xE2\xF2"=>"\xE7\xB3\x98", + "\xE2\xF3"=>"\xE7\xB3\x92", + "\xE2\xF4"=>"\xE7\xB3\x9C", + "\xE2\xF5"=>"\xE7\xB3\xA2", + "\xE2\xF6"=>"\xE9\xAC\xBB", + "\xE2\xF7"=>"\xE7\xB3\xAF", + "\xE2\xF8"=>"\xE7\xB3\xB2", + "\xE2\xF9"=>"\xE7\xB3\xB4", + "\xE2\xFA"=>"\xE7\xB3\xB6", + "\xE2\xFB"=>"\xE7\xB3\xBA", + "\xE2\xFC"=>"\xE7\xB4\x86", + "\xE3\x40"=>"\xE7\xB4\x82", + "\xE3\x41"=>"\xE7\xB4\x9C", + "\xE3\x42"=>"\xE7\xB4\x95", + "\xE3\x43"=>"\xE7\xB4\x8A", + "\xE3\x44"=>"\xE7\xB5\x85", + "\xE3\x45"=>"\xE7\xB5\x8B", + "\xE3\x46"=>"\xE7\xB4\xAE", + "\xE3\x47"=>"\xE7\xB4\xB2", + "\xE3\x48"=>"\xE7\xB4\xBF", + "\xE3\x49"=>"\xE7\xB4\xB5", + "\xE3\x4A"=>"\xE7\xB5\x86", + "\xE3\x4B"=>"\xE7\xB5\xB3", + "\xE3\x4C"=>"\xE7\xB5\x96", + "\xE3\x4D"=>"\xE7\xB5\x8E", + "\xE3\x4E"=>"\xE7\xB5\xB2", + "\xE3\x4F"=>"\xE7\xB5\xA8", + "\xE3\x50"=>"\xE7\xB5\xAE", + "\xE3\x51"=>"\xE7\xB5\x8F", + "\xE3\x52"=>"\xE7\xB5\xA3", + "\xE3\x53"=>"\xE7\xB6\x93", + "\xE3\x54"=>"\xE7\xB6\x89", + "\xE3\x55"=>"\xE7\xB5\x9B", + "\xE3\x56"=>"\xE7\xB6\x8F", + "\xE3\x57"=>"\xE7\xB5\xBD", + "\xE3\x58"=>"\xE7\xB6\x9B", + "\xE3\x59"=>"\xE7\xB6\xBA", + "\xE3\x5A"=>"\xE7\xB6\xAE", + "\xE3\x5B"=>"\xE7\xB6\xA3", + "\xE3\x5C"=>"\xE7\xB6\xB5", + "\xE3\x5D"=>"\xE7\xB7\x87", + "\xE3\x5E"=>"\xE7\xB6\xBD", + "\xE3\x5F"=>"\xE7\xB6\xAB", + "\xE3\x60"=>"\xE7\xB8\xBD", + "\xE3\x61"=>"\xE7\xB6\xA2", + "\xE3\x62"=>"\xE7\xB6\xAF", + "\xE3\x63"=>"\xE7\xB7\x9C", + "\xE3\x64"=>"\xE7\xB6\xB8", + "\xE3\x65"=>"\xE7\xB6\x9F", + "\xE3\x66"=>"\xE7\xB6\xB0", + "\xE3\x67"=>"\xE7\xB7\x98", + "\xE3\x68"=>"\xE7\xB7\x9D", + "\xE3\x69"=>"\xE7\xB7\xA4", + "\xE3\x6A"=>"\xE7\xB7\x9E", + "\xE3\x6B"=>"\xE7\xB7\xBB", + "\xE3\x6C"=>"\xE7\xB7\xB2", + "\xE3\x6D"=>"\xE7\xB7\xA1", + "\xE3\x6E"=>"\xE7\xB8\x85", + "\xE3\x6F"=>"\xE7\xB8\x8A", + "\xE3\x70"=>"\xE7\xB8\xA3", + "\xE3\x71"=>"\xE7\xB8\xA1", + "\xE3\x72"=>"\xE7\xB8\x92", + "\xE3\x73"=>"\xE7\xB8\xB1", + "\xE3\x74"=>"\xE7\xB8\x9F", + "\xE3\x75"=>"\xE7\xB8\x89", + "\xE3\x76"=>"\xE7\xB8\x8B", + "\xE3\x77"=>"\xE7\xB8\xA2", + "\xE3\x78"=>"\xE7\xB9\x86", + "\xE3\x79"=>"\xE7\xB9\xA6", + "\xE3\x7A"=>"\xE7\xB8\xBB", + "\xE3\x7B"=>"\xE7\xB8\xB5", + "\xE3\x7C"=>"\xE7\xB8\xB9", + "\xE3\x7D"=>"\xE7\xB9\x83", + "\xE3\x7E"=>"\xE7\xB8\xB7", + "\xE3\x80"=>"\xE7\xB8\xB2", + "\xE3\x81"=>"\xE7\xB8\xBA", + "\xE3\x82"=>"\xE7\xB9\xA7", + "\xE3\x83"=>"\xE7\xB9\x9D", + "\xE3\x84"=>"\xE7\xB9\x96", + "\xE3\x85"=>"\xE7\xB9\x9E", + "\xE3\x86"=>"\xE7\xB9\x99", + "\xE3\x87"=>"\xE7\xB9\x9A", + "\xE3\x88"=>"\xE7\xB9\xB9", + "\xE3\x89"=>"\xE7\xB9\xAA", + "\xE3\x8A"=>"\xE7\xB9\xA9", + "\xE3\x8B"=>"\xE7\xB9\xBC", + "\xE3\x8C"=>"\xE7\xB9\xBB", + "\xE3\x8D"=>"\xE7\xBA\x83", + "\xE3\x8E"=>"\xE7\xB7\x95", + "\xE3\x8F"=>"\xE7\xB9\xBD", + "\xE3\x90"=>"\xE8\xBE\xAE", + "\xE3\x91"=>"\xE7\xB9\xBF", + "\xE3\x92"=>"\xE7\xBA\x88", + "\xE3\x93"=>"\xE7\xBA\x89", + "\xE3\x94"=>"\xE7\xBA\x8C", + "\xE3\x95"=>"\xE7\xBA\x92", + "\xE3\x96"=>"\xE7\xBA\x90", + "\xE3\x97"=>"\xE7\xBA\x93", + "\xE3\x98"=>"\xE7\xBA\x94", + "\xE3\x99"=>"\xE7\xBA\x96", + "\xE3\x9A"=>"\xE7\xBA\x8E", + "\xE3\x9B"=>"\xE7\xBA\x9B", + "\xE3\x9C"=>"\xE7\xBA\x9C", + "\xE3\x9D"=>"\xE7\xBC\xB8", + "\xE3\x9E"=>"\xE7\xBC\xBA", + "\xE3\x9F"=>"\xE7\xBD\x85", + "\xE3\xA0"=>"\xE7\xBD\x8C", + "\xE3\xA1"=>"\xE7\xBD\x8D", + "\xE3\xA2"=>"\xE7\xBD\x8E", + "\xE3\xA3"=>"\xE7\xBD\x90", + "\xE3\xA4"=>"\xE7\xBD\x91", + "\xE3\xA5"=>"\xE7\xBD\x95", + "\xE3\xA6"=>"\xE7\xBD\x94", + "\xE3\xA7"=>"\xE7\xBD\x98", + "\xE3\xA8"=>"\xE7\xBD\x9F", + "\xE3\xA9"=>"\xE7\xBD\xA0", + "\xE3\xAA"=>"\xE7\xBD\xA8", + "\xE3\xAB"=>"\xE7\xBD\xA9", + "\xE3\xAC"=>"\xE7\xBD\xA7", + "\xE3\xAD"=>"\xE7\xBD\xB8", + "\xE3\xAE"=>"\xE7\xBE\x82", + "\xE3\xAF"=>"\xE7\xBE\x86", + "\xE3\xB0"=>"\xE7\xBE\x83", + "\xE3\xB1"=>"\xE7\xBE\x88", + "\xE3\xB2"=>"\xE7\xBE\x87", + "\xE3\xB3"=>"\xE7\xBE\x8C", + "\xE3\xB4"=>"\xE7\xBE\x94", + "\xE3\xB5"=>"\xE7\xBE\x9E", + "\xE3\xB6"=>"\xE7\xBE\x9D", + "\xE3\xB7"=>"\xE7\xBE\x9A", + "\xE3\xB8"=>"\xE7\xBE\xA3", + "\xE3\xB9"=>"\xE7\xBE\xAF", + "\xE3\xBA"=>"\xE7\xBE\xB2", + "\xE3\xBB"=>"\xE7\xBE\xB9", + "\xE3\xBC"=>"\xE7\xBE\xAE", + "\xE3\xBD"=>"\xE7\xBE\xB6", + "\xE3\xBE"=>"\xE7\xBE\xB8", + "\xE3\xBF"=>"\xE8\xAD\xB1", + "\xE3\xC0"=>"\xE7\xBF\x85", + "\xE3\xC1"=>"\xE7\xBF\x86", + "\xE3\xC2"=>"\xE7\xBF\x8A", + "\xE3\xC3"=>"\xE7\xBF\x95", + "\xE3\xC4"=>"\xE7\xBF\x94", + "\xE3\xC5"=>"\xE7\xBF\xA1", + "\xE3\xC6"=>"\xE7\xBF\xA6", + "\xE3\xC7"=>"\xE7\xBF\xA9", + "\xE3\xC8"=>"\xE7\xBF\xB3", + "\xE3\xC9"=>"\xE7\xBF\xB9", + "\xE3\xCA"=>"\xE9\xA3\x9C", + "\xE3\xCB"=>"\xE8\x80\x86", + "\xE3\xCC"=>"\xE8\x80\x84", + "\xE3\xCD"=>"\xE8\x80\x8B", + "\xE3\xCE"=>"\xE8\x80\x92", + "\xE3\xCF"=>"\xE8\x80\x98", + "\xE3\xD0"=>"\xE8\x80\x99", + "\xE3\xD1"=>"\xE8\x80\x9C", + "\xE3\xD2"=>"\xE8\x80\xA1", + "\xE3\xD3"=>"\xE8\x80\xA8", + "\xE3\xD4"=>"\xE8\x80\xBF", + "\xE3\xD5"=>"\xE8\x80\xBB", + "\xE3\xD6"=>"\xE8\x81\x8A", + "\xE3\xD7"=>"\xE8\x81\x86", + "\xE3\xD8"=>"\xE8\x81\x92", + "\xE3\xD9"=>"\xE8\x81\x98", + "\xE3\xDA"=>"\xE8\x81\x9A", + "\xE3\xDB"=>"\xE8\x81\x9F", + "\xE3\xDC"=>"\xE8\x81\xA2", + "\xE3\xDD"=>"\xE8\x81\xA8", + "\xE3\xDE"=>"\xE8\x81\xB3", + "\xE3\xDF"=>"\xE8\x81\xB2", + "\xE3\xE0"=>"\xE8\x81\xB0", + "\xE3\xE1"=>"\xE8\x81\xB6", + "\xE3\xE2"=>"\xE8\x81\xB9", + "\xE3\xE3"=>"\xE8\x81\xBD", + "\xE3\xE4"=>"\xE8\x81\xBF", + "\xE3\xE5"=>"\xE8\x82\x84", + "\xE3\xE6"=>"\xE8\x82\x86", + "\xE3\xE7"=>"\xE8\x82\x85", + "\xE3\xE8"=>"\xE8\x82\x9B", + "\xE3\xE9"=>"\xE8\x82\x93", + "\xE3\xEA"=>"\xE8\x82\x9A", + "\xE3\xEB"=>"\xE8\x82\xAD", + "\xE3\xEC"=>"\xE5\x86\x90", + "\xE3\xED"=>"\xE8\x82\xAC", + "\xE3\xEE"=>"\xE8\x83\x9B", + "\xE3\xEF"=>"\xE8\x83\xA5", + "\xE3\xF0"=>"\xE8\x83\x99", + "\xE3\xF1"=>"\xE8\x83\x9D", + "\xE3\xF2"=>"\xE8\x83\x84", + "\xE3\xF3"=>"\xE8\x83\x9A", + "\xE3\xF4"=>"\xE8\x83\x96", + "\xE3\xF5"=>"\xE8\x84\x89", + "\xE3\xF6"=>"\xE8\x83\xAF", + "\xE3\xF7"=>"\xE8\x83\xB1", + "\xE3\xF8"=>"\xE8\x84\x9B", + "\xE3\xF9"=>"\xE8\x84\xA9", + "\xE3\xFA"=>"\xE8\x84\xA3", + "\xE3\xFB"=>"\xE8\x84\xAF", + "\xE3\xFC"=>"\xE8\x85\x8B", + "\xE4\x40"=>"\xE9\x9A\x8B", + "\xE4\x41"=>"\xE8\x85\x86", + "\xE4\x42"=>"\xE8\x84\xBE", + "\xE4\x43"=>"\xE8\x85\x93", + "\xE4\x44"=>"\xE8\x85\x91", + "\xE4\x45"=>"\xE8\x83\xBC", + "\xE4\x46"=>"\xE8\x85\xB1", + "\xE4\x47"=>"\xE8\x85\xAE", + "\xE4\x48"=>"\xE8\x85\xA5", + "\xE4\x49"=>"\xE8\x85\xA6", + "\xE4\x4A"=>"\xE8\x85\xB4", + "\xE4\x4B"=>"\xE8\x86\x83", + "\xE4\x4C"=>"\xE8\x86\x88", + "\xE4\x4D"=>"\xE8\x86\x8A", + "\xE4\x4E"=>"\xE8\x86\x80", + "\xE4\x4F"=>"\xE8\x86\x82", + "\xE4\x50"=>"\xE8\x86\xA0", + "\xE4\x51"=>"\xE8\x86\x95", + "\xE4\x52"=>"\xE8\x86\xA4", + "\xE4\x53"=>"\xE8\x86\xA3", + "\xE4\x54"=>"\xE8\x85\x9F", + "\xE4\x55"=>"\xE8\x86\x93", + "\xE4\x56"=>"\xE8\x86\xA9", + "\xE4\x57"=>"\xE8\x86\xB0", + "\xE4\x58"=>"\xE8\x86\xB5", + "\xE4\x59"=>"\xE8\x86\xBE", + "\xE4\x5A"=>"\xE8\x86\xB8", + "\xE4\x5B"=>"\xE8\x86\xBD", + "\xE4\x5C"=>"\xE8\x87\x80", + "\xE4\x5D"=>"\xE8\x87\x82", + "\xE4\x5E"=>"\xE8\x86\xBA", + "\xE4\x5F"=>"\xE8\x87\x89", + "\xE4\x60"=>"\xE8\x87\x8D", + "\xE4\x61"=>"\xE8\x87\x91", + "\xE4\x62"=>"\xE8\x87\x99", + "\xE4\x63"=>"\xE8\x87\x98", + "\xE4\x64"=>"\xE8\x87\x88", + "\xE4\x65"=>"\xE8\x87\x9A", + "\xE4\x66"=>"\xE8\x87\x9F", + "\xE4\x67"=>"\xE8\x87\xA0", + "\xE4\x68"=>"\xE8\x87\xA7", + "\xE4\x69"=>"\xE8\x87\xBA", + "\xE4\x6A"=>"\xE8\x87\xBB", + "\xE4\x6B"=>"\xE8\x87\xBE", + "\xE4\x6C"=>"\xE8\x88\x81", + "\xE4\x6D"=>"\xE8\x88\x82", + "\xE4\x6E"=>"\xE8\x88\x85", + "\xE4\x6F"=>"\xE8\x88\x87", + "\xE4\x70"=>"\xE8\x88\x8A", + "\xE4\x71"=>"\xE8\x88\x8D", + "\xE4\x72"=>"\xE8\x88\x90", + "\xE4\x73"=>"\xE8\x88\x96", + "\xE4\x74"=>"\xE8\x88\xA9", + "\xE4\x75"=>"\xE8\x88\xAB", + "\xE4\x76"=>"\xE8\x88\xB8", + "\xE4\x77"=>"\xE8\x88\xB3", + "\xE4\x78"=>"\xE8\x89\x80", + "\xE4\x79"=>"\xE8\x89\x99", + "\xE4\x7A"=>"\xE8\x89\x98", + "\xE4\x7B"=>"\xE8\x89\x9D", + "\xE4\x7C"=>"\xE8\x89\x9A", + "\xE4\x7D"=>"\xE8\x89\x9F", + "\xE4\x7E"=>"\xE8\x89\xA4", + "\xE4\x80"=>"\xE8\x89\xA2", + "\xE4\x81"=>"\xE8\x89\xA8", + "\xE4\x82"=>"\xE8\x89\xAA", + "\xE4\x83"=>"\xE8\x89\xAB", + "\xE4\x84"=>"\xE8\x88\xAE", + "\xE4\x85"=>"\xE8\x89\xB1", + "\xE4\x86"=>"\xE8\x89\xB7", + "\xE4\x87"=>"\xE8\x89\xB8", + "\xE4\x88"=>"\xE8\x89\xBE", + "\xE4\x89"=>"\xE8\x8A\x8D", + "\xE4\x8A"=>"\xE8\x8A\x92", + "\xE4\x8B"=>"\xE8\x8A\xAB", + "\xE4\x8C"=>"\xE8\x8A\x9F", + "\xE4\x8D"=>"\xE8\x8A\xBB", + "\xE4\x8E"=>"\xE8\x8A\xAC", + "\xE4\x8F"=>"\xE8\x8B\xA1", + "\xE4\x90"=>"\xE8\x8B\xA3", + "\xE4\x91"=>"\xE8\x8B\x9F", + "\xE4\x92"=>"\xE8\x8B\x92", + "\xE4\x93"=>"\xE8\x8B\xB4", + "\xE4\x94"=>"\xE8\x8B\xB3", + "\xE4\x95"=>"\xE8\x8B\xBA", + "\xE4\x96"=>"\xE8\x8E\x93", + "\xE4\x97"=>"\xE8\x8C\x83", + "\xE4\x98"=>"\xE8\x8B\xBB", + "\xE4\x99"=>"\xE8\x8B\xB9", + "\xE4\x9A"=>"\xE8\x8B\x9E", + "\xE4\x9B"=>"\xE8\x8C\x86", + "\xE4\x9C"=>"\xE8\x8B\x9C", + "\xE4\x9D"=>"\xE8\x8C\x89", + "\xE4\x9E"=>"\xE8\x8B\x99", + "\xE4\x9F"=>"\xE8\x8C\xB5", + "\xE4\xA0"=>"\xE8\x8C\xB4", + "\xE4\xA1"=>"\xE8\x8C\x96", + "\xE4\xA2"=>"\xE8\x8C\xB2", + "\xE4\xA3"=>"\xE8\x8C\xB1", + "\xE4\xA4"=>"\xE8\x8D\x80", + "\xE4\xA5"=>"\xE8\x8C\xB9", + "\xE4\xA6"=>"\xE8\x8D\x90", + "\xE4\xA7"=>"\xE8\x8D\x85", + "\xE4\xA8"=>"\xE8\x8C\xAF", + "\xE4\xA9"=>"\xE8\x8C\xAB", + "\xE4\xAA"=>"\xE8\x8C\x97", + "\xE4\xAB"=>"\xE8\x8C\x98", + "\xE4\xAC"=>"\xE8\x8E\x85", + "\xE4\xAD"=>"\xE8\x8E\x9A", + "\xE4\xAE"=>"\xE8\x8E\xAA", + "\xE4\xAF"=>"\xE8\x8E\x9F", + "\xE4\xB0"=>"\xE8\x8E\xA2", + "\xE4\xB1"=>"\xE8\x8E\x96", + "\xE4\xB2"=>"\xE8\x8C\xA3", + "\xE4\xB3"=>"\xE8\x8E\x8E", + "\xE4\xB4"=>"\xE8\x8E\x87", + "\xE4\xB5"=>"\xE8\x8E\x8A", + "\xE4\xB6"=>"\xE8\x8D\xBC", + "\xE4\xB7"=>"\xE8\x8E\xB5", + "\xE4\xB8"=>"\xE8\x8D\xB3", + "\xE4\xB9"=>"\xE8\x8D\xB5", + "\xE4\xBA"=>"\xE8\x8E\xA0", + "\xE4\xBB"=>"\xE8\x8E\x89", + "\xE4\xBC"=>"\xE8\x8E\xA8", + "\xE4\xBD"=>"\xE8\x8F\xB4", + "\xE4\xBE"=>"\xE8\x90\x93", + "\xE4\xBF"=>"\xE8\x8F\xAB", + "\xE4\xC0"=>"\xE8\x8F\x8E", + "\xE4\xC1"=>"\xE8\x8F\xBD", + "\xE4\xC2"=>"\xE8\x90\x83", + "\xE4\xC3"=>"\xE8\x8F\x98", + "\xE4\xC4"=>"\xE8\x90\x8B", + "\xE4\xC5"=>"\xE8\x8F\x81", + "\xE4\xC6"=>"\xE8\x8F\xB7", + "\xE4\xC7"=>"\xE8\x90\x87", + "\xE4\xC8"=>"\xE8\x8F\xA0", + "\xE4\xC9"=>"\xE8\x8F\xB2", + "\xE4\xCA"=>"\xE8\x90\x8D", + "\xE4\xCB"=>"\xE8\x90\xA2", + "\xE4\xCC"=>"\xE8\x90\xA0", + "\xE4\xCD"=>"\xE8\x8E\xBD", + "\xE4\xCE"=>"\xE8\x90\xB8", + "\xE4\xCF"=>"\xE8\x94\x86", + "\xE4\xD0"=>"\xE8\x8F\xBB", + "\xE4\xD1"=>"\xE8\x91\xAD", + "\xE4\xD2"=>"\xE8\x90\xAA", + "\xE4\xD3"=>"\xE8\x90\xBC", + "\xE4\xD4"=>"\xE8\x95\x9A", + "\xE4\xD5"=>"\xE8\x92\x84", + "\xE4\xD6"=>"\xE8\x91\xB7", + "\xE4\xD7"=>"\xE8\x91\xAB", + "\xE4\xD8"=>"\xE8\x92\xAD", + "\xE4\xD9"=>"\xE8\x91\xAE", + "\xE4\xDA"=>"\xE8\x92\x82", + "\xE4\xDB"=>"\xE8\x91\xA9", + "\xE4\xDC"=>"\xE8\x91\x86", + "\xE4\xDD"=>"\xE8\x90\xAC", + "\xE4\xDE"=>"\xE8\x91\xAF", + "\xE4\xDF"=>"\xE8\x91\xB9", + "\xE4\xE0"=>"\xE8\x90\xB5", + "\xE4\xE1"=>"\xE8\x93\x8A", + "\xE4\xE2"=>"\xE8\x91\xA2", + "\xE4\xE3"=>"\xE8\x92\xB9", + "\xE4\xE4"=>"\xE8\x92\xBF", + "\xE4\xE5"=>"\xE8\x92\x9F", + "\xE4\xE6"=>"\xE8\x93\x99", + "\xE4\xE7"=>"\xE8\x93\x8D", + "\xE4\xE8"=>"\xE8\x92\xBB", + "\xE4\xE9"=>"\xE8\x93\x9A", + "\xE4\xEA"=>"\xE8\x93\x90", + "\xE4\xEB"=>"\xE8\x93\x81", + "\xE4\xEC"=>"\xE8\x93\x86", + "\xE4\xED"=>"\xE8\x93\x96", + "\xE4\xEE"=>"\xE8\x92\xA1", + "\xE4\xEF"=>"\xE8\x94\xA1", + "\xE4\xF0"=>"\xE8\x93\xBF", + "\xE4\xF1"=>"\xE8\x93\xB4", + "\xE4\xF2"=>"\xE8\x94\x97", + "\xE4\xF3"=>"\xE8\x94\x98", + "\xE4\xF4"=>"\xE8\x94\xAC", + "\xE4\xF5"=>"\xE8\x94\x9F", + "\xE4\xF6"=>"\xE8\x94\x95", + "\xE4\xF7"=>"\xE8\x94\x94", + "\xE4\xF8"=>"\xE8\x93\xBC", + "\xE4\xF9"=>"\xE8\x95\x80", + "\xE4\xFA"=>"\xE8\x95\xA3", + "\xE4\xFB"=>"\xE8\x95\x98", + "\xE4\xFC"=>"\xE8\x95\x88", + "\xE5\x40"=>"\xE8\x95\x81", + "\xE5\x41"=>"\xE8\x98\x82", + "\xE5\x42"=>"\xE8\x95\x8B", + "\xE5\x43"=>"\xE8\x95\x95", + "\xE5\x44"=>"\xE8\x96\x80", + "\xE5\x45"=>"\xE8\x96\xA4", + "\xE5\x46"=>"\xE8\x96\x88", + "\xE5\x47"=>"\xE8\x96\x91", + "\xE5\x48"=>"\xE8\x96\x8A", + "\xE5\x49"=>"\xE8\x96\xA8", + "\xE5\x4A"=>"\xE8\x95\xAD", + "\xE5\x4B"=>"\xE8\x96\x94", + "\xE5\x4C"=>"\xE8\x96\x9B", + "\xE5\x4D"=>"\xE8\x97\xAA", + "\xE5\x4E"=>"\xE8\x96\x87", + "\xE5\x4F"=>"\xE8\x96\x9C", + "\xE5\x50"=>"\xE8\x95\xB7", + "\xE5\x51"=>"\xE8\x95\xBE", + "\xE5\x52"=>"\xE8\x96\x90", + "\xE5\x53"=>"\xE8\x97\x89", + "\xE5\x54"=>"\xE8\x96\xBA", + "\xE5\x55"=>"\xE8\x97\x8F", + "\xE5\x56"=>"\xE8\x96\xB9", + "\xE5\x57"=>"\xE8\x97\x90", + "\xE5\x58"=>"\xE8\x97\x95", + "\xE5\x59"=>"\xE8\x97\x9D", + "\xE5\x5A"=>"\xE8\x97\xA5", + "\xE5\x5B"=>"\xE8\x97\x9C", + "\xE5\x5C"=>"\xE8\x97\xB9", + "\xE5\x5D"=>"\xE8\x98\x8A", + "\xE5\x5E"=>"\xE8\x98\x93", + "\xE5\x5F"=>"\xE8\x98\x8B", + "\xE5\x60"=>"\xE8\x97\xBE", + "\xE5\x61"=>"\xE8\x97\xBA", + "\xE5\x62"=>"\xE8\x98\x86", + "\xE5\x63"=>"\xE8\x98\xA2", + "\xE5\x64"=>"\xE8\x98\x9A", + "\xE5\x65"=>"\xE8\x98\xB0", + "\xE5\x66"=>"\xE8\x98\xBF", + "\xE5\x67"=>"\xE8\x99\x8D", + "\xE5\x68"=>"\xE4\xB9\x95", + "\xE5\x69"=>"\xE8\x99\x94", + "\xE5\x6A"=>"\xE8\x99\x9F", + "\xE5\x6B"=>"\xE8\x99\xA7", + "\xE5\x6C"=>"\xE8\x99\xB1", + "\xE5\x6D"=>"\xE8\x9A\x93", + "\xE5\x6E"=>"\xE8\x9A\xA3", + "\xE5\x6F"=>"\xE8\x9A\xA9", + "\xE5\x70"=>"\xE8\x9A\xAA", + "\xE5\x71"=>"\xE8\x9A\x8B", + "\xE5\x72"=>"\xE8\x9A\x8C", + "\xE5\x73"=>"\xE8\x9A\xB6", + "\xE5\x74"=>"\xE8\x9A\xAF", + "\xE5\x75"=>"\xE8\x9B\x84", + "\xE5\x76"=>"\xE8\x9B\x86", + "\xE5\x77"=>"\xE8\x9A\xB0", + "\xE5\x78"=>"\xE8\x9B\x89", + "\xE5\x79"=>"\xE8\xA0\xA3", + "\xE5\x7A"=>"\xE8\x9A\xAB", + "\xE5\x7B"=>"\xE8\x9B\x94", + "\xE5\x7C"=>"\xE8\x9B\x9E", + "\xE5\x7D"=>"\xE8\x9B\xA9", + "\xE5\x7E"=>"\xE8\x9B\xAC", + "\xE5\x80"=>"\xE8\x9B\x9F", + "\xE5\x81"=>"\xE8\x9B\x9B", + "\xE5\x82"=>"\xE8\x9B\xAF", + "\xE5\x83"=>"\xE8\x9C\x92", + "\xE5\x84"=>"\xE8\x9C\x86", + "\xE5\x85"=>"\xE8\x9C\x88", + "\xE5\x86"=>"\xE8\x9C\x80", + "\xE5\x87"=>"\xE8\x9C\x83", + "\xE5\x88"=>"\xE8\x9B\xBB", + "\xE5\x89"=>"\xE8\x9C\x91", + "\xE5\x8A"=>"\xE8\x9C\x89", + "\xE5\x8B"=>"\xE8\x9C\x8D", + "\xE5\x8C"=>"\xE8\x9B\xB9", + "\xE5\x8D"=>"\xE8\x9C\x8A", + "\xE5\x8E"=>"\xE8\x9C\xB4", + "\xE5\x8F"=>"\xE8\x9C\xBF", + "\xE5\x90"=>"\xE8\x9C\xB7", + "\xE5\x91"=>"\xE8\x9C\xBB", + "\xE5\x92"=>"\xE8\x9C\xA5", + "\xE5\x93"=>"\xE8\x9C\xA9", + "\xE5\x94"=>"\xE8\x9C\x9A", + "\xE5\x95"=>"\xE8\x9D\xA0", + "\xE5\x96"=>"\xE8\x9D\x9F", + "\xE5\x97"=>"\xE8\x9D\xB8", + "\xE5\x98"=>"\xE8\x9D\x8C", + "\xE5\x99"=>"\xE8\x9D\x8E", + "\xE5\x9A"=>"\xE8\x9D\xB4", + "\xE5\x9B"=>"\xE8\x9D\x97", + "\xE5\x9C"=>"\xE8\x9D\xA8", + "\xE5\x9D"=>"\xE8\x9D\xAE", + "\xE5\x9E"=>"\xE8\x9D\x99", + "\xE5\x9F"=>"\xE8\x9D\x93", + "\xE5\xA0"=>"\xE8\x9D\xA3", + "\xE5\xA1"=>"\xE8\x9D\xAA", + "\xE5\xA2"=>"\xE8\xA0\x85", + "\xE5\xA3"=>"\xE8\x9E\xA2", + "\xE5\xA4"=>"\xE8\x9E\x9F", + "\xE5\xA5"=>"\xE8\x9E\x82", + "\xE5\xA6"=>"\xE8\x9E\xAF", + "\xE5\xA7"=>"\xE8\x9F\x8B", + "\xE5\xA8"=>"\xE8\x9E\xBD", + "\xE5\xA9"=>"\xE8\x9F\x80", + "\xE5\xAA"=>"\xE8\x9F\x90", + "\xE5\xAB"=>"\xE9\x9B\x96", + "\xE5\xAC"=>"\xE8\x9E\xAB", + "\xE5\xAD"=>"\xE8\x9F\x84", + "\xE5\xAE"=>"\xE8\x9E\xB3", + "\xE5\xAF"=>"\xE8\x9F\x87", + "\xE5\xB0"=>"\xE8\x9F\x86", + "\xE5\xB1"=>"\xE8\x9E\xBB", + "\xE5\xB2"=>"\xE8\x9F\xAF", + "\xE5\xB3"=>"\xE8\x9F\xB2", + "\xE5\xB4"=>"\xE8\x9F\xA0", + "\xE5\xB5"=>"\xE8\xA0\x8F", + "\xE5\xB6"=>"\xE8\xA0\x8D", + "\xE5\xB7"=>"\xE8\x9F\xBE", + "\xE5\xB8"=>"\xE8\x9F\xB6", + "\xE5\xB9"=>"\xE8\x9F\xB7", + "\xE5\xBA"=>"\xE8\xA0\x8E", + "\xE5\xBB"=>"\xE8\x9F\x92", + "\xE5\xBC"=>"\xE8\xA0\x91", + "\xE5\xBD"=>"\xE8\xA0\x96", + "\xE5\xBE"=>"\xE8\xA0\x95", + "\xE5\xBF"=>"\xE8\xA0\xA2", + "\xE5\xC0"=>"\xE8\xA0\xA1", + "\xE5\xC1"=>"\xE8\xA0\xB1", + "\xE5\xC2"=>"\xE8\xA0\xB6", + "\xE5\xC3"=>"\xE8\xA0\xB9", + "\xE5\xC4"=>"\xE8\xA0\xA7", + "\xE5\xC5"=>"\xE8\xA0\xBB", + "\xE5\xC6"=>"\xE8\xA1\x84", + "\xE5\xC7"=>"\xE8\xA1\x82", + "\xE5\xC8"=>"\xE8\xA1\x92", + "\xE5\xC9"=>"\xE8\xA1\x99", + "\xE5\xCA"=>"\xE8\xA1\x9E", + "\xE5\xCB"=>"\xE8\xA1\xA2", + "\xE5\xCC"=>"\xE8\xA1\xAB", + "\xE5\xCD"=>"\xE8\xA2\x81", + "\xE5\xCE"=>"\xE8\xA1\xBE", + "\xE5\xCF"=>"\xE8\xA2\x9E", + "\xE5\xD0"=>"\xE8\xA1\xB5", + "\xE5\xD1"=>"\xE8\xA1\xBD", + "\xE5\xD2"=>"\xE8\xA2\xB5", + "\xE5\xD3"=>"\xE8\xA1\xB2", + "\xE5\xD4"=>"\xE8\xA2\x82", + "\xE5\xD5"=>"\xE8\xA2\x97", + "\xE5\xD6"=>"\xE8\xA2\x92", + "\xE5\xD7"=>"\xE8\xA2\xAE", + "\xE5\xD8"=>"\xE8\xA2\x99", + "\xE5\xD9"=>"\xE8\xA2\xA2", + "\xE5\xDA"=>"\xE8\xA2\x8D", + "\xE5\xDB"=>"\xE8\xA2\xA4", + "\xE5\xDC"=>"\xE8\xA2\xB0", + "\xE5\xDD"=>"\xE8\xA2\xBF", + "\xE5\xDE"=>"\xE8\xA2\xB1", + "\xE5\xDF"=>"\xE8\xA3\x83", + "\xE5\xE0"=>"\xE8\xA3\x84", + "\xE5\xE1"=>"\xE8\xA3\x94", + "\xE5\xE2"=>"\xE8\xA3\x98", + "\xE5\xE3"=>"\xE8\xA3\x99", + "\xE5\xE4"=>"\xE8\xA3\x9D", + "\xE5\xE5"=>"\xE8\xA3\xB9", + "\xE5\xE6"=>"\xE8\xA4\x82", + "\xE5\xE7"=>"\xE8\xA3\xBC", + "\xE5\xE8"=>"\xE8\xA3\xB4", + "\xE5\xE9"=>"\xE8\xA3\xA8", + "\xE5\xEA"=>"\xE8\xA3\xB2", + "\xE5\xEB"=>"\xE8\xA4\x84", + "\xE5\xEC"=>"\xE8\xA4\x8C", + "\xE5\xED"=>"\xE8\xA4\x8A", + "\xE5\xEE"=>"\xE8\xA4\x93", + "\xE5\xEF"=>"\xE8\xA5\x83", + "\xE5\xF0"=>"\xE8\xA4\x9E", + "\xE5\xF1"=>"\xE8\xA4\xA5", + "\xE5\xF2"=>"\xE8\xA4\xAA", + "\xE5\xF3"=>"\xE8\xA4\xAB", + "\xE5\xF4"=>"\xE8\xA5\x81", + "\xE5\xF5"=>"\xE8\xA5\x84", + "\xE5\xF6"=>"\xE8\xA4\xBB", + "\xE5\xF7"=>"\xE8\xA4\xB6", + "\xE5\xF8"=>"\xE8\xA4\xB8", + "\xE5\xF9"=>"\xE8\xA5\x8C", + "\xE5\xFA"=>"\xE8\xA4\x9D", + "\xE5\xFB"=>"\xE8\xA5\xA0", + "\xE5\xFC"=>"\xE8\xA5\x9E", + "\xE6\x40"=>"\xE8\xA5\xA6", + "\xE6\x41"=>"\xE8\xA5\xA4", + "\xE6\x42"=>"\xE8\xA5\xAD", + "\xE6\x43"=>"\xE8\xA5\xAA", + "\xE6\x44"=>"\xE8\xA5\xAF", + "\xE6\x45"=>"\xE8\xA5\xB4", + "\xE6\x46"=>"\xE8\xA5\xB7", + "\xE6\x47"=>"\xE8\xA5\xBE", + "\xE6\x48"=>"\xE8\xA6\x83", + "\xE6\x49"=>"\xE8\xA6\x88", + "\xE6\x4A"=>"\xE8\xA6\x8A", + "\xE6\x4B"=>"\xE8\xA6\x93", + "\xE6\x4C"=>"\xE8\xA6\x98", + "\xE6\x4D"=>"\xE8\xA6\xA1", + "\xE6\x4E"=>"\xE8\xA6\xA9", + "\xE6\x4F"=>"\xE8\xA6\xA6", + "\xE6\x50"=>"\xE8\xA6\xAC", + "\xE6\x51"=>"\xE8\xA6\xAF", + "\xE6\x52"=>"\xE8\xA6\xB2", + "\xE6\x53"=>"\xE8\xA6\xBA", + "\xE6\x54"=>"\xE8\xA6\xBD", + "\xE6\x55"=>"\xE8\xA6\xBF", + "\xE6\x56"=>"\xE8\xA7\x80", + "\xE6\x57"=>"\xE8\xA7\x9A", + "\xE6\x58"=>"\xE8\xA7\x9C", + "\xE6\x59"=>"\xE8\xA7\x9D", + "\xE6\x5A"=>"\xE8\xA7\xA7", + "\xE6\x5B"=>"\xE8\xA7\xB4", + "\xE6\x5C"=>"\xE8\xA7\xB8", + "\xE6\x5D"=>"\xE8\xA8\x83", + "\xE6\x5E"=>"\xE8\xA8\x96", + "\xE6\x5F"=>"\xE8\xA8\x90", + "\xE6\x60"=>"\xE8\xA8\x8C", + "\xE6\x61"=>"\xE8\xA8\x9B", + "\xE6\x62"=>"\xE8\xA8\x9D", + "\xE6\x63"=>"\xE8\xA8\xA5", + "\xE6\x64"=>"\xE8\xA8\xB6", + "\xE6\x65"=>"\xE8\xA9\x81", + "\xE6\x66"=>"\xE8\xA9\x9B", + "\xE6\x67"=>"\xE8\xA9\x92", + "\xE6\x68"=>"\xE8\xA9\x86", + "\xE6\x69"=>"\xE8\xA9\x88", + "\xE6\x6A"=>"\xE8\xA9\xBC", + "\xE6\x6B"=>"\xE8\xA9\xAD", + "\xE6\x6C"=>"\xE8\xA9\xAC", + "\xE6\x6D"=>"\xE8\xA9\xA2", + "\xE6\x6E"=>"\xE8\xAA\x85", + "\xE6\x6F"=>"\xE8\xAA\x82", + "\xE6\x70"=>"\xE8\xAA\x84", + "\xE6\x71"=>"\xE8\xAA\xA8", + "\xE6\x72"=>"\xE8\xAA\xA1", + "\xE6\x73"=>"\xE8\xAA\x91", + "\xE6\x74"=>"\xE8\xAA\xA5", + "\xE6\x75"=>"\xE8\xAA\xA6", + "\xE6\x76"=>"\xE8\xAA\x9A", + "\xE6\x77"=>"\xE8\xAA\xA3", + "\xE6\x78"=>"\xE8\xAB\x84", + "\xE6\x79"=>"\xE8\xAB\x8D", + "\xE6\x7A"=>"\xE8\xAB\x82", + "\xE6\x7B"=>"\xE8\xAB\x9A", + "\xE6\x7C"=>"\xE8\xAB\xAB", + "\xE6\x7D"=>"\xE8\xAB\xB3", + "\xE6\x7E"=>"\xE8\xAB\xA7", + "\xE6\x80"=>"\xE8\xAB\xA4", + "\xE6\x81"=>"\xE8\xAB\xB1", + "\xE6\x82"=>"\xE8\xAC\x94", + "\xE6\x83"=>"\xE8\xAB\xA0", + "\xE6\x84"=>"\xE8\xAB\xA2", + "\xE6\x85"=>"\xE8\xAB\xB7", + "\xE6\x86"=>"\xE8\xAB\x9E", + "\xE6\x87"=>"\xE8\xAB\x9B", + "\xE6\x88"=>"\xE8\xAC\x8C", + "\xE6\x89"=>"\xE8\xAC\x87", + "\xE6\x8A"=>"\xE8\xAC\x9A", + "\xE6\x8B"=>"\xE8\xAB\xA1", + "\xE6\x8C"=>"\xE8\xAC\x96", + "\xE6\x8D"=>"\xE8\xAC\x90", + "\xE6\x8E"=>"\xE8\xAC\x97", + "\xE6\x8F"=>"\xE8\xAC\xA0", + "\xE6\x90"=>"\xE8\xAC\xB3", + "\xE6\x91"=>"\xE9\x9E\xAB", + "\xE6\x92"=>"\xE8\xAC\xA6", + "\xE6\x93"=>"\xE8\xAC\xAB", + "\xE6\x94"=>"\xE8\xAC\xBE", + "\xE6\x95"=>"\xE8\xAC\xA8", + "\xE6\x96"=>"\xE8\xAD\x81", + "\xE6\x97"=>"\xE8\xAD\x8C", + "\xE6\x98"=>"\xE8\xAD\x8F", + "\xE6\x99"=>"\xE8\xAD\x8E", + "\xE6\x9A"=>"\xE8\xAD\x89", + "\xE6\x9B"=>"\xE8\xAD\x96", + "\xE6\x9C"=>"\xE8\xAD\x9B", + "\xE6\x9D"=>"\xE8\xAD\x9A", + "\xE6\x9E"=>"\xE8\xAD\xAB", + "\xE6\x9F"=>"\xE8\xAD\x9F", + "\xE6\xA0"=>"\xE8\xAD\xAC", + "\xE6\xA1"=>"\xE8\xAD\xAF", + "\xE6\xA2"=>"\xE8\xAD\xB4", + "\xE6\xA3"=>"\xE8\xAD\xBD", + "\xE6\xA4"=>"\xE8\xAE\x80", + "\xE6\xA5"=>"\xE8\xAE\x8C", + "\xE6\xA6"=>"\xE8\xAE\x8E", + "\xE6\xA7"=>"\xE8\xAE\x92", + "\xE6\xA8"=>"\xE8\xAE\x93", + "\xE6\xA9"=>"\xE8\xAE\x96", + "\xE6\xAA"=>"\xE8\xAE\x99", + "\xE6\xAB"=>"\xE8\xAE\x9A", + "\xE6\xAC"=>"\xE8\xB0\xBA", + "\xE6\xAD"=>"\xE8\xB1\x81", + "\xE6\xAE"=>"\xE8\xB0\xBF", + "\xE6\xAF"=>"\xE8\xB1\x88", + "\xE6\xB0"=>"\xE8\xB1\x8C", + "\xE6\xB1"=>"\xE8\xB1\x8E", + "\xE6\xB2"=>"\xE8\xB1\x90", + "\xE6\xB3"=>"\xE8\xB1\x95", + "\xE6\xB4"=>"\xE8\xB1\xA2", + "\xE6\xB5"=>"\xE8\xB1\xAC", + "\xE6\xB6"=>"\xE8\xB1\xB8", + "\xE6\xB7"=>"\xE8\xB1\xBA", + "\xE6\xB8"=>"\xE8\xB2\x82", + "\xE6\xB9"=>"\xE8\xB2\x89", + "\xE6\xBA"=>"\xE8\xB2\x85", + "\xE6\xBB"=>"\xE8\xB2\x8A", + "\xE6\xBC"=>"\xE8\xB2\x8D", + "\xE6\xBD"=>"\xE8\xB2\x8E", + "\xE6\xBE"=>"\xE8\xB2\x94", + "\xE6\xBF"=>"\xE8\xB1\xBC", + "\xE6\xC0"=>"\xE8\xB2\x98", + "\xE6\xC1"=>"\xE6\x88\x9D", + "\xE6\xC2"=>"\xE8\xB2\xAD", + "\xE6\xC3"=>"\xE8\xB2\xAA", + "\xE6\xC4"=>"\xE8\xB2\xBD", + "\xE6\xC5"=>"\xE8\xB2\xB2", + "\xE6\xC6"=>"\xE8\xB2\xB3", + "\xE6\xC7"=>"\xE8\xB2\xAE", + "\xE6\xC8"=>"\xE8\xB2\xB6", + "\xE6\xC9"=>"\xE8\xB3\x88", + "\xE6\xCA"=>"\xE8\xB3\x81", + "\xE6\xCB"=>"\xE8\xB3\xA4", + "\xE6\xCC"=>"\xE8\xB3\xA3", + "\xE6\xCD"=>"\xE8\xB3\x9A", + "\xE6\xCE"=>"\xE8\xB3\xBD", + "\xE6\xCF"=>"\xE8\xB3\xBA", + "\xE6\xD0"=>"\xE8\xB3\xBB", + "\xE6\xD1"=>"\xE8\xB4\x84", + "\xE6\xD2"=>"\xE8\xB4\x85", + "\xE6\xD3"=>"\xE8\xB4\x8A", + "\xE6\xD4"=>"\xE8\xB4\x87", + "\xE6\xD5"=>"\xE8\xB4\x8F", + "\xE6\xD6"=>"\xE8\xB4\x8D", + "\xE6\xD7"=>"\xE8\xB4\x90", + "\xE6\xD8"=>"\xE9\xBD\x8E", + "\xE6\xD9"=>"\xE8\xB4\x93", + "\xE6\xDA"=>"\xE8\xB3\x8D", + "\xE6\xDB"=>"\xE8\xB4\x94", + "\xE6\xDC"=>"\xE8\xB4\x96", + "\xE6\xDD"=>"\xE8\xB5\xA7", + "\xE6\xDE"=>"\xE8\xB5\xAD", + "\xE6\xDF"=>"\xE8\xB5\xB1", + "\xE6\xE0"=>"\xE8\xB5\xB3", + "\xE6\xE1"=>"\xE8\xB6\x81", + "\xE6\xE2"=>"\xE8\xB6\x99", + "\xE6\xE3"=>"\xE8\xB7\x82", + "\xE6\xE4"=>"\xE8\xB6\xBE", + "\xE6\xE5"=>"\xE8\xB6\xBA", + "\xE6\xE6"=>"\xE8\xB7\x8F", + "\xE6\xE7"=>"\xE8\xB7\x9A", + "\xE6\xE8"=>"\xE8\xB7\x96", + "\xE6\xE9"=>"\xE8\xB7\x8C", + "\xE6\xEA"=>"\xE8\xB7\x9B", + "\xE6\xEB"=>"\xE8\xB7\x8B", + "\xE6\xEC"=>"\xE8\xB7\xAA", + "\xE6\xED"=>"\xE8\xB7\xAB", + "\xE6\xEE"=>"\xE8\xB7\x9F", + "\xE6\xEF"=>"\xE8\xB7\xA3", + "\xE6\xF0"=>"\xE8\xB7\xBC", + "\xE6\xF1"=>"\xE8\xB8\x88", + "\xE6\xF2"=>"\xE8\xB8\x89", + "\xE6\xF3"=>"\xE8\xB7\xBF", + "\xE6\xF4"=>"\xE8\xB8\x9D", + "\xE6\xF5"=>"\xE8\xB8\x9E", + "\xE6\xF6"=>"\xE8\xB8\x90", + "\xE6\xF7"=>"\xE8\xB8\x9F", + "\xE6\xF8"=>"\xE8\xB9\x82", + "\xE6\xF9"=>"\xE8\xB8\xB5", + "\xE6\xFA"=>"\xE8\xB8\xB0", + "\xE6\xFB"=>"\xE8\xB8\xB4", + "\xE6\xFC"=>"\xE8\xB9\x8A", + "\xE7\x40"=>"\xE8\xB9\x87", + "\xE7\x41"=>"\xE8\xB9\x89", + "\xE7\x42"=>"\xE8\xB9\x8C", + "\xE7\x43"=>"\xE8\xB9\x90", + "\xE7\x44"=>"\xE8\xB9\x88", + "\xE7\x45"=>"\xE8\xB9\x99", + "\xE7\x46"=>"\xE8\xB9\xA4", + "\xE7\x47"=>"\xE8\xB9\xA0", + "\xE7\x48"=>"\xE8\xB8\xAA", + "\xE7\x49"=>"\xE8\xB9\xA3", + "\xE7\x4A"=>"\xE8\xB9\x95", + "\xE7\x4B"=>"\xE8\xB9\xB6", + "\xE7\x4C"=>"\xE8\xB9\xB2", + "\xE7\x4D"=>"\xE8\xB9\xBC", + "\xE7\x4E"=>"\xE8\xBA\x81", + "\xE7\x4F"=>"\xE8\xBA\x87", + "\xE7\x50"=>"\xE8\xBA\x85", + "\xE7\x51"=>"\xE8\xBA\x84", + "\xE7\x52"=>"\xE8\xBA\x8B", + "\xE7\x53"=>"\xE8\xBA\x8A", + "\xE7\x54"=>"\xE8\xBA\x93", + "\xE7\x55"=>"\xE8\xBA\x91", + "\xE7\x56"=>"\xE8\xBA\x94", + "\xE7\x57"=>"\xE8\xBA\x99", + "\xE7\x58"=>"\xE8\xBA\xAA", + "\xE7\x59"=>"\xE8\xBA\xA1", + "\xE7\x5A"=>"\xE8\xBA\xAC", + "\xE7\x5B"=>"\xE8\xBA\xB0", + "\xE7\x5C"=>"\xE8\xBB\x86", + "\xE7\x5D"=>"\xE8\xBA\xB1", + "\xE7\x5E"=>"\xE8\xBA\xBE", + "\xE7\x5F"=>"\xE8\xBB\x85", + "\xE7\x60"=>"\xE8\xBB\x88", + "\xE7\x61"=>"\xE8\xBB\x8B", + "\xE7\x62"=>"\xE8\xBB\x9B", + "\xE7\x63"=>"\xE8\xBB\xA3", + "\xE7\x64"=>"\xE8\xBB\xBC", + "\xE7\x65"=>"\xE8\xBB\xBB", + "\xE7\x66"=>"\xE8\xBB\xAB", + "\xE7\x67"=>"\xE8\xBB\xBE", + "\xE7\x68"=>"\xE8\xBC\x8A", + "\xE7\x69"=>"\xE8\xBC\x85", + "\xE7\x6A"=>"\xE8\xBC\x95", + "\xE7\x6B"=>"\xE8\xBC\x92", + "\xE7\x6C"=>"\xE8\xBC\x99", + "\xE7\x6D"=>"\xE8\xBC\x93", + "\xE7\x6E"=>"\xE8\xBC\x9C", + "\xE7\x6F"=>"\xE8\xBC\x9F", + "\xE7\x70"=>"\xE8\xBC\x9B", + "\xE7\x71"=>"\xE8\xBC\x8C", + "\xE7\x72"=>"\xE8\xBC\xA6", + "\xE7\x73"=>"\xE8\xBC\xB3", + "\xE7\x74"=>"\xE8\xBC\xBB", + "\xE7\x75"=>"\xE8\xBC\xB9", + "\xE7\x76"=>"\xE8\xBD\x85", + "\xE7\x77"=>"\xE8\xBD\x82", + "\xE7\x78"=>"\xE8\xBC\xBE", + "\xE7\x79"=>"\xE8\xBD\x8C", + "\xE7\x7A"=>"\xE8\xBD\x89", + "\xE7\x7B"=>"\xE8\xBD\x86", + "\xE7\x7C"=>"\xE8\xBD\x8E", + "\xE7\x7D"=>"\xE8\xBD\x97", + "\xE7\x7E"=>"\xE8\xBD\x9C", + "\xE7\x80"=>"\xE8\xBD\xA2", + "\xE7\x81"=>"\xE8\xBD\xA3", + "\xE7\x82"=>"\xE8\xBD\xA4", + "\xE7\x83"=>"\xE8\xBE\x9C", + "\xE7\x84"=>"\xE8\xBE\x9F", + "\xE7\x85"=>"\xE8\xBE\xA3", + "\xE7\x86"=>"\xE8\xBE\xAD", + "\xE7\x87"=>"\xE8\xBE\xAF", + "\xE7\x88"=>"\xE8\xBE\xB7", + "\xE7\x89"=>"\xE8\xBF\x9A", + "\xE7\x8A"=>"\xE8\xBF\xA5", + "\xE7\x8B"=>"\xE8\xBF\xA2", + "\xE7\x8C"=>"\xE8\xBF\xAA", + "\xE7\x8D"=>"\xE8\xBF\xAF", + "\xE7\x8E"=>"\xE9\x82\x87", + "\xE7\x8F"=>"\xE8\xBF\xB4", + "\xE7\x90"=>"\xE9\x80\x85", + "\xE7\x91"=>"\xE8\xBF\xB9", + "\xE7\x92"=>"\xE8\xBF\xBA", + "\xE7\x93"=>"\xE9\x80\x91", + "\xE7\x94"=>"\xE9\x80\x95", + "\xE7\x95"=>"\xE9\x80\xA1", + "\xE7\x96"=>"\xE9\x80\x8D", + "\xE7\x97"=>"\xE9\x80\x9E", + "\xE7\x98"=>"\xE9\x80\x96", + "\xE7\x99"=>"\xE9\x80\x8B", + "\xE7\x9A"=>"\xE9\x80\xA7", + "\xE7\x9B"=>"\xE9\x80\xB6", + "\xE7\x9C"=>"\xE9\x80\xB5", + "\xE7\x9D"=>"\xE9\x80\xB9", + "\xE7\x9E"=>"\xE8\xBF\xB8", + "\xE7\x9F"=>"\xE9\x81\x8F", + "\xE7\xA0"=>"\xE9\x81\x90", + "\xE7\xA1"=>"\xE9\x81\x91", + "\xE7\xA2"=>"\xE9\x81\x92", + "\xE7\xA3"=>"\xE9\x80\x8E", + "\xE7\xA4"=>"\xE9\x81\x89", + "\xE7\xA5"=>"\xE9\x80\xBE", + "\xE7\xA6"=>"\xE9\x81\x96", + "\xE7\xA7"=>"\xE9\x81\x98", + "\xE7\xA8"=>"\xE9\x81\x9E", + "\xE7\xA9"=>"\xE9\x81\xA8", + "\xE7\xAA"=>"\xE9\x81\xAF", + "\xE7\xAB"=>"\xE9\x81\xB6", + "\xE7\xAC"=>"\xE9\x9A\xA8", + "\xE7\xAD"=>"\xE9\x81\xB2", + "\xE7\xAE"=>"\xE9\x82\x82", + "\xE7\xAF"=>"\xE9\x81\xBD", + "\xE7\xB0"=>"\xE9\x82\x81", + "\xE7\xB1"=>"\xE9\x82\x80", + "\xE7\xB2"=>"\xE9\x82\x8A", + "\xE7\xB3"=>"\xE9\x82\x89", + "\xE7\xB4"=>"\xE9\x82\x8F", + "\xE7\xB5"=>"\xE9\x82\xA8", + "\xE7\xB6"=>"\xE9\x82\xAF", + "\xE7\xB7"=>"\xE9\x82\xB1", + "\xE7\xB8"=>"\xE9\x82\xB5", + "\xE7\xB9"=>"\xE9\x83\xA2", + "\xE7\xBA"=>"\xE9\x83\xA4", + "\xE7\xBB"=>"\xE6\x89\x88", + "\xE7\xBC"=>"\xE9\x83\x9B", + "\xE7\xBD"=>"\xE9\x84\x82", + "\xE7\xBE"=>"\xE9\x84\x92", + "\xE7\xBF"=>"\xE9\x84\x99", + "\xE7\xC0"=>"\xE9\x84\xB2", + "\xE7\xC1"=>"\xE9\x84\xB0", + "\xE7\xC2"=>"\xE9\x85\x8A", + "\xE7\xC3"=>"\xE9\x85\x96", + "\xE7\xC4"=>"\xE9\x85\x98", + "\xE7\xC5"=>"\xE9\x85\xA3", + "\xE7\xC6"=>"\xE9\x85\xA5", + "\xE7\xC7"=>"\xE9\x85\xA9", + "\xE7\xC8"=>"\xE9\x85\xB3", + "\xE7\xC9"=>"\xE9\x85\xB2", + "\xE7\xCA"=>"\xE9\x86\x8B", + "\xE7\xCB"=>"\xE9\x86\x89", + "\xE7\xCC"=>"\xE9\x86\x82", + "\xE7\xCD"=>"\xE9\x86\xA2", + "\xE7\xCE"=>"\xE9\x86\xAB", + "\xE7\xCF"=>"\xE9\x86\xAF", + "\xE7\xD0"=>"\xE9\x86\xAA", + "\xE7\xD1"=>"\xE9\x86\xB5", + "\xE7\xD2"=>"\xE9\x86\xB4", + "\xE7\xD3"=>"\xE9\x86\xBA", + "\xE7\xD4"=>"\xE9\x87\x80", + "\xE7\xD5"=>"\xE9\x87\x81", + "\xE7\xD6"=>"\xE9\x87\x89", + "\xE7\xD7"=>"\xE9\x87\x8B", + "\xE7\xD8"=>"\xE9\x87\x90", + "\xE7\xD9"=>"\xE9\x87\x96", + "\xE7\xDA"=>"\xE9\x87\x9F", + "\xE7\xDB"=>"\xE9\x87\xA1", + "\xE7\xDC"=>"\xE9\x87\x9B", + "\xE7\xDD"=>"\xE9\x87\xBC", + "\xE7\xDE"=>"\xE9\x87\xB5", + "\xE7\xDF"=>"\xE9\x87\xB6", + "\xE7\xE0"=>"\xE9\x88\x9E", + "\xE7\xE1"=>"\xE9\x87\xBF", + "\xE7\xE2"=>"\xE9\x88\x94", + "\xE7\xE3"=>"\xE9\x88\xAC", + "\xE7\xE4"=>"\xE9\x88\x95", + "\xE7\xE5"=>"\xE9\x88\x91", + "\xE7\xE6"=>"\xE9\x89\x9E", + "\xE7\xE7"=>"\xE9\x89\x97", + "\xE7\xE8"=>"\xE9\x89\x85", + "\xE7\xE9"=>"\xE9\x89\x89", + "\xE7\xEA"=>"\xE9\x89\xA4", + "\xE7\xEB"=>"\xE9\x89\x88", + "\xE7\xEC"=>"\xE9\x8A\x95", + "\xE7\xED"=>"\xE9\x88\xBF", + "\xE7\xEE"=>"\xE9\x89\x8B", + "\xE7\xEF"=>"\xE9\x89\x90", + "\xE7\xF0"=>"\xE9\x8A\x9C", + "\xE7\xF1"=>"\xE9\x8A\x96", + "\xE7\xF2"=>"\xE9\x8A\x93", + "\xE7\xF3"=>"\xE9\x8A\x9B", + "\xE7\xF4"=>"\xE9\x89\x9A", + "\xE7\xF5"=>"\xE9\x8B\x8F", + "\xE7\xF6"=>"\xE9\x8A\xB9", + "\xE7\xF7"=>"\xE9\x8A\xB7", + "\xE7\xF8"=>"\xE9\x8B\xA9", + "\xE7\xF9"=>"\xE9\x8C\x8F", + "\xE7\xFA"=>"\xE9\x8B\xBA", + "\xE7\xFB"=>"\xE9\x8D\x84", + "\xE7\xFC"=>"\xE9\x8C\xAE", + "\xE8\x40"=>"\xE9\x8C\x99", + "\xE8\x41"=>"\xE9\x8C\xA2", + "\xE8\x42"=>"\xE9\x8C\x9A", + "\xE8\x43"=>"\xE9\x8C\xA3", + "\xE8\x44"=>"\xE9\x8C\xBA", + "\xE8\x45"=>"\xE9\x8C\xB5", + "\xE8\x46"=>"\xE9\x8C\xBB", + "\xE8\x47"=>"\xE9\x8D\x9C", + "\xE8\x48"=>"\xE9\x8D\xA0", + "\xE8\x49"=>"\xE9\x8D\xBC", + "\xE8\x4A"=>"\xE9\x8D\xAE", + "\xE8\x4B"=>"\xE9\x8D\x96", + "\xE8\x4C"=>"\xE9\x8E\xB0", + "\xE8\x4D"=>"\xE9\x8E\xAC", + "\xE8\x4E"=>"\xE9\x8E\xAD", + "\xE8\x4F"=>"\xE9\x8E\x94", + "\xE8\x50"=>"\xE9\x8E\xB9", + "\xE8\x51"=>"\xE9\x8F\x96", + "\xE8\x52"=>"\xE9\x8F\x97", + "\xE8\x53"=>"\xE9\x8F\xA8", + "\xE8\x54"=>"\xE9\x8F\xA5", + "\xE8\x55"=>"\xE9\x8F\x98", + "\xE8\x56"=>"\xE9\x8F\x83", + "\xE8\x57"=>"\xE9\x8F\x9D", + "\xE8\x58"=>"\xE9\x8F\x90", + "\xE8\x59"=>"\xE9\x8F\x88", + "\xE8\x5A"=>"\xE9\x8F\xA4", + "\xE8\x5B"=>"\xE9\x90\x9A", + "\xE8\x5C"=>"\xE9\x90\x94", + "\xE8\x5D"=>"\xE9\x90\x93", + "\xE8\x5E"=>"\xE9\x90\x83", + "\xE8\x5F"=>"\xE9\x90\x87", + "\xE8\x60"=>"\xE9\x90\x90", + "\xE8\x61"=>"\xE9\x90\xB6", + "\xE8\x62"=>"\xE9\x90\xAB", + "\xE8\x63"=>"\xE9\x90\xB5", + "\xE8\x64"=>"\xE9\x90\xA1", + "\xE8\x65"=>"\xE9\x90\xBA", + "\xE8\x66"=>"\xE9\x91\x81", + "\xE8\x67"=>"\xE9\x91\x92", + "\xE8\x68"=>"\xE9\x91\x84", + "\xE8\x69"=>"\xE9\x91\x9B", + "\xE8\x6A"=>"\xE9\x91\xA0", + "\xE8\x6B"=>"\xE9\x91\xA2", + "\xE8\x6C"=>"\xE9\x91\x9E", + "\xE8\x6D"=>"\xE9\x91\xAA", + "\xE8\x6E"=>"\xE9\x88\xA9", + "\xE8\x6F"=>"\xE9\x91\xB0", + "\xE8\x70"=>"\xE9\x91\xB5", + "\xE8\x71"=>"\xE9\x91\xB7", + "\xE8\x72"=>"\xE9\x91\xBD", + "\xE8\x73"=>"\xE9\x91\x9A", + "\xE8\x74"=>"\xE9\x91\xBC", + "\xE8\x75"=>"\xE9\x91\xBE", + "\xE8\x76"=>"\xE9\x92\x81", + "\xE8\x77"=>"\xE9\x91\xBF", + "\xE8\x78"=>"\xE9\x96\x82", + "\xE8\x79"=>"\xE9\x96\x87", + "\xE8\x7A"=>"\xE9\x96\x8A", + "\xE8\x7B"=>"\xE9\x96\x94", + "\xE8\x7C"=>"\xE9\x96\x96", + "\xE8\x7D"=>"\xE9\x96\x98", + "\xE8\x7E"=>"\xE9\x96\x99", + "\xE8\x80"=>"\xE9\x96\xA0", + "\xE8\x81"=>"\xE9\x96\xA8", + "\xE8\x82"=>"\xE9\x96\xA7", + "\xE8\x83"=>"\xE9\x96\xAD", + "\xE8\x84"=>"\xE9\x96\xBC", + "\xE8\x85"=>"\xE9\x96\xBB", + "\xE8\x86"=>"\xE9\x96\xB9", + "\xE8\x87"=>"\xE9\x96\xBE", + "\xE8\x88"=>"\xE9\x97\x8A", + "\xE8\x89"=>"\xE6\xBF\xB6", + "\xE8\x8A"=>"\xE9\x97\x83", + "\xE8\x8B"=>"\xE9\x97\x8D", + "\xE8\x8C"=>"\xE9\x97\x8C", + "\xE8\x8D"=>"\xE9\x97\x95", + "\xE8\x8E"=>"\xE9\x97\x94", + "\xE8\x8F"=>"\xE9\x97\x96", + "\xE8\x90"=>"\xE9\x97\x9C", + "\xE8\x91"=>"\xE9\x97\xA1", + "\xE8\x92"=>"\xE9\x97\xA5", + "\xE8\x93"=>"\xE9\x97\xA2", + "\xE8\x94"=>"\xE9\x98\xA1", + "\xE8\x95"=>"\xE9\x98\xA8", + "\xE8\x96"=>"\xE9\x98\xAE", + "\xE8\x97"=>"\xE9\x98\xAF", + "\xE8\x98"=>"\xE9\x99\x82", + "\xE8\x99"=>"\xE9\x99\x8C", + "\xE8\x9A"=>"\xE9\x99\x8F", + "\xE8\x9B"=>"\xE9\x99\x8B", + "\xE8\x9C"=>"\xE9\x99\xB7", + "\xE8\x9D"=>"\xE9\x99\x9C", + "\xE8\x9E"=>"\xE9\x99\x9E", + "\xE8\x9F"=>"\xE9\x99\x9D", + "\xE8\xA0"=>"\xE9\x99\x9F", + "\xE8\xA1"=>"\xE9\x99\xA6", + "\xE8\xA2"=>"\xE9\x99\xB2", + "\xE8\xA3"=>"\xE9\x99\xAC", + "\xE8\xA4"=>"\xE9\x9A\x8D", + "\xE8\xA5"=>"\xE9\x9A\x98", + "\xE8\xA6"=>"\xE9\x9A\x95", + "\xE8\xA7"=>"\xE9\x9A\x97", + "\xE8\xA8"=>"\xE9\x9A\xAA", + "\xE8\xA9"=>"\xE9\x9A\xA7", + "\xE8\xAA"=>"\xE9\x9A\xB1", + "\xE8\xAB"=>"\xE9\x9A\xB2", + "\xE8\xAC"=>"\xE9\x9A\xB0", + "\xE8\xAD"=>"\xE9\x9A\xB4", + "\xE8\xAE"=>"\xE9\x9A\xB6", + "\xE8\xAF"=>"\xE9\x9A\xB8", + "\xE8\xB0"=>"\xE9\x9A\xB9", + "\xE8\xB1"=>"\xE9\x9B\x8E", + "\xE8\xB2"=>"\xE9\x9B\x8B", + "\xE8\xB3"=>"\xE9\x9B\x89", + "\xE8\xB4"=>"\xE9\x9B\x8D", + "\xE8\xB5"=>"\xE8\xA5\x8D", + "\xE8\xB6"=>"\xE9\x9B\x9C", + "\xE8\xB7"=>"\xE9\x9C\x8D", + "\xE8\xB8"=>"\xE9\x9B\x95", + "\xE8\xB9"=>"\xE9\x9B\xB9", + "\xE8\xBA"=>"\xE9\x9C\x84", + "\xE8\xBB"=>"\xE9\x9C\x86", + "\xE8\xBC"=>"\xE9\x9C\x88", + "\xE8\xBD"=>"\xE9\x9C\x93", + "\xE8\xBE"=>"\xE9\x9C\x8E", + "\xE8\xBF"=>"\xE9\x9C\x91", + "\xE8\xC0"=>"\xE9\x9C\x8F", + "\xE8\xC1"=>"\xE9\x9C\x96", + "\xE8\xC2"=>"\xE9\x9C\x99", + "\xE8\xC3"=>"\xE9\x9C\xA4", + "\xE8\xC4"=>"\xE9\x9C\xAA", + "\xE8\xC5"=>"\xE9\x9C\xB0", + "\xE8\xC6"=>"\xE9\x9C\xB9", + "\xE8\xC7"=>"\xE9\x9C\xBD", + "\xE8\xC8"=>"\xE9\x9C\xBE", + "\xE8\xC9"=>"\xE9\x9D\x84", + "\xE8\xCA"=>"\xE9\x9D\x86", + "\xE8\xCB"=>"\xE9\x9D\x88", + "\xE8\xCC"=>"\xE9\x9D\x82", + "\xE8\xCD"=>"\xE9\x9D\x89", + "\xE8\xCE"=>"\xE9\x9D\x9C", + "\xE8\xCF"=>"\xE9\x9D\xA0", + "\xE8\xD0"=>"\xE9\x9D\xA4", + "\xE8\xD1"=>"\xE9\x9D\xA6", + "\xE8\xD2"=>"\xE9\x9D\xA8", + "\xE8\xD3"=>"\xE5\x8B\x92", + "\xE8\xD4"=>"\xE9\x9D\xAB", + "\xE8\xD5"=>"\xE9\x9D\xB1", + "\xE8\xD6"=>"\xE9\x9D\xB9", + "\xE8\xD7"=>"\xE9\x9E\x85", + "\xE8\xD8"=>"\xE9\x9D\xBC", + "\xE8\xD9"=>"\xE9\x9E\x81", + "\xE8\xDA"=>"\xE9\x9D\xBA", + "\xE8\xDB"=>"\xE9\x9E\x86", + "\xE8\xDC"=>"\xE9\x9E\x8B", + "\xE8\xDD"=>"\xE9\x9E\x8F", + "\xE8\xDE"=>"\xE9\x9E\x90", + "\xE8\xDF"=>"\xE9\x9E\x9C", + "\xE8\xE0"=>"\xE9\x9E\xA8", + "\xE8\xE1"=>"\xE9\x9E\xA6", + "\xE8\xE2"=>"\xE9\x9E\xA3", + "\xE8\xE3"=>"\xE9\x9E\xB3", + "\xE8\xE4"=>"\xE9\x9E\xB4", + "\xE8\xE5"=>"\xE9\x9F\x83", + "\xE8\xE6"=>"\xE9\x9F\x86", + "\xE8\xE7"=>"\xE9\x9F\x88", + "\xE8\xE8"=>"\xE9\x9F\x8B", + "\xE8\xE9"=>"\xE9\x9F\x9C", + "\xE8\xEA"=>"\xE9\x9F\xAD", + "\xE8\xEB"=>"\xE9\xBD\x8F", + "\xE8\xEC"=>"\xE9\x9F\xB2", + "\xE8\xED"=>"\xE7\xAB\x9F", + "\xE8\xEE"=>"\xE9\x9F\xB6", + "\xE8\xEF"=>"\xE9\x9F\xB5", + "\xE8\xF0"=>"\xE9\xA0\x8F", + "\xE8\xF1"=>"\xE9\xA0\x8C", + "\xE8\xF2"=>"\xE9\xA0\xB8", + "\xE8\xF3"=>"\xE9\xA0\xA4", + "\xE8\xF4"=>"\xE9\xA0\xA1", + "\xE8\xF5"=>"\xE9\xA0\xB7", + "\xE8\xF6"=>"\xE9\xA0\xBD", + "\xE8\xF7"=>"\xE9\xA1\x86", + "\xE8\xF8"=>"\xE9\xA1\x8F", + "\xE8\xF9"=>"\xE9\xA1\x8B", + "\xE8\xFA"=>"\xE9\xA1\xAB", + "\xE8\xFB"=>"\xE9\xA1\xAF", + "\xE8\xFC"=>"\xE9\xA1\xB0", + "\xE9\x40"=>"\xE9\xA1\xB1", + "\xE9\x41"=>"\xE9\xA1\xB4", + "\xE9\x42"=>"\xE9\xA1\xB3", + "\xE9\x43"=>"\xE9\xA2\xAA", + "\xE9\x44"=>"\xE9\xA2\xAF", + "\xE9\x45"=>"\xE9\xA2\xB1", + "\xE9\x46"=>"\xE9\xA2\xB6", + "\xE9\x47"=>"\xE9\xA3\x84", + "\xE9\x48"=>"\xE9\xA3\x83", + "\xE9\x49"=>"\xE9\xA3\x86", + "\xE9\x4A"=>"\xE9\xA3\xA9", + "\xE9\x4B"=>"\xE9\xA3\xAB", + "\xE9\x4C"=>"\xE9\xA4\x83", + "\xE9\x4D"=>"\xE9\xA4\x89", + "\xE9\x4E"=>"\xE9\xA4\x92", + "\xE9\x4F"=>"\xE9\xA4\x94", + "\xE9\x50"=>"\xE9\xA4\x98", + "\xE9\x51"=>"\xE9\xA4\xA1", + "\xE9\x52"=>"\xE9\xA4\x9D", + "\xE9\x53"=>"\xE9\xA4\x9E", + "\xE9\x54"=>"\xE9\xA4\xA4", + "\xE9\x55"=>"\xE9\xA4\xA0", + "\xE9\x56"=>"\xE9\xA4\xAC", + "\xE9\x57"=>"\xE9\xA4\xAE", + "\xE9\x58"=>"\xE9\xA4\xBD", + "\xE9\x59"=>"\xE9\xA4\xBE", + "\xE9\x5A"=>"\xE9\xA5\x82", + "\xE9\x5B"=>"\xE9\xA5\x89", + "\xE9\x5C"=>"\xE9\xA5\x85", + "\xE9\x5D"=>"\xE9\xA5\x90", + "\xE9\x5E"=>"\xE9\xA5\x8B", + "\xE9\x5F"=>"\xE9\xA5\x91", + "\xE9\x60"=>"\xE9\xA5\x92", + "\xE9\x61"=>"\xE9\xA5\x8C", + "\xE9\x62"=>"\xE9\xA5\x95", + "\xE9\x63"=>"\xE9\xA6\x97", + "\xE9\x64"=>"\xE9\xA6\x98", + "\xE9\x65"=>"\xE9\xA6\xA5", + "\xE9\x66"=>"\xE9\xA6\xAD", + "\xE9\x67"=>"\xE9\xA6\xAE", + "\xE9\x68"=>"\xE9\xA6\xBC", + "\xE9\x69"=>"\xE9\xA7\x9F", + "\xE9\x6A"=>"\xE9\xA7\x9B", + "\xE9\x6B"=>"\xE9\xA7\x9D", + "\xE9\x6C"=>"\xE9\xA7\x98", + "\xE9\x6D"=>"\xE9\xA7\x91", + "\xE9\x6E"=>"\xE9\xA7\xAD", + "\xE9\x6F"=>"\xE9\xA7\xAE", + "\xE9\x70"=>"\xE9\xA7\xB1", + "\xE9\x71"=>"\xE9\xA7\xB2", + "\xE9\x72"=>"\xE9\xA7\xBB", + "\xE9\x73"=>"\xE9\xA7\xB8", + "\xE9\x74"=>"\xE9\xA8\x81", + "\xE9\x75"=>"\xE9\xA8\x8F", + "\xE9\x76"=>"\xE9\xA8\x85", + "\xE9\x77"=>"\xE9\xA7\xA2", + "\xE9\x78"=>"\xE9\xA8\x99", + "\xE9\x79"=>"\xE9\xA8\xAB", + "\xE9\x7A"=>"\xE9\xA8\xB7", + "\xE9\x7B"=>"\xE9\xA9\x85", + "\xE9\x7C"=>"\xE9\xA9\x82", + "\xE9\x7D"=>"\xE9\xA9\x80", + "\xE9\x7E"=>"\xE9\xA9\x83", + "\xE9\x80"=>"\xE9\xA8\xBE", + "\xE9\x81"=>"\xE9\xA9\x95", + "\xE9\x82"=>"\xE9\xA9\x8D", + "\xE9\x83"=>"\xE9\xA9\x9B", + "\xE9\x84"=>"\xE9\xA9\x97", + "\xE9\x85"=>"\xE9\xA9\x9F", + "\xE9\x86"=>"\xE9\xA9\xA2", + "\xE9\x87"=>"\xE9\xA9\xA5", + "\xE9\x88"=>"\xE9\xA9\xA4", + "\xE9\x89"=>"\xE9\xA9\xA9", + "\xE9\x8A"=>"\xE9\xA9\xAB", + "\xE9\x8B"=>"\xE9\xA9\xAA", + "\xE9\x8C"=>"\xE9\xAA\xAD", + "\xE9\x8D"=>"\xE9\xAA\xB0", + "\xE9\x8E"=>"\xE9\xAA\xBC", + "\xE9\x8F"=>"\xE9\xAB\x80", + "\xE9\x90"=>"\xE9\xAB\x8F", + "\xE9\x91"=>"\xE9\xAB\x91", + "\xE9\x92"=>"\xE9\xAB\x93", + "\xE9\x93"=>"\xE9\xAB\x94", + "\xE9\x94"=>"\xE9\xAB\x9E", + "\xE9\x95"=>"\xE9\xAB\x9F", + "\xE9\x96"=>"\xE9\xAB\xA2", + "\xE9\x97"=>"\xE9\xAB\xA3", + "\xE9\x98"=>"\xE9\xAB\xA6", + "\xE9\x99"=>"\xE9\xAB\xAF", + "\xE9\x9A"=>"\xE9\xAB\xAB", + "\xE9\x9B"=>"\xE9\xAB\xAE", + "\xE9\x9C"=>"\xE9\xAB\xB4", + "\xE9\x9D"=>"\xE9\xAB\xB1", + "\xE9\x9E"=>"\xE9\xAB\xB7", + "\xE9\x9F"=>"\xE9\xAB\xBB", + "\xE9\xA0"=>"\xE9\xAC\x86", + "\xE9\xA1"=>"\xE9\xAC\x98", + "\xE9\xA2"=>"\xE9\xAC\x9A", + "\xE9\xA3"=>"\xE9\xAC\x9F", + "\xE9\xA4"=>"\xE9\xAC\xA2", + "\xE9\xA5"=>"\xE9\xAC\xA3", + "\xE9\xA6"=>"\xE9\xAC\xA5", + "\xE9\xA7"=>"\xE9\xAC\xA7", + "\xE9\xA8"=>"\xE9\xAC\xA8", + "\xE9\xA9"=>"\xE9\xAC\xA9", + "\xE9\xAA"=>"\xE9\xAC\xAA", + "\xE9\xAB"=>"\xE9\xAC\xAE", + "\xE9\xAC"=>"\xE9\xAC\xAF", + "\xE9\xAD"=>"\xE9\xAC\xB2", + "\xE9\xAE"=>"\xE9\xAD\x84", + "\xE9\xAF"=>"\xE9\xAD\x83", + "\xE9\xB0"=>"\xE9\xAD\x8F", + "\xE9\xB1"=>"\xE9\xAD\x8D", + "\xE9\xB2"=>"\xE9\xAD\x8E", + "\xE9\xB3"=>"\xE9\xAD\x91", + "\xE9\xB4"=>"\xE9\xAD\x98", + "\xE9\xB5"=>"\xE9\xAD\xB4", + "\xE9\xB6"=>"\xE9\xAE\x93", + "\xE9\xB7"=>"\xE9\xAE\x83", + "\xE9\xB8"=>"\xE9\xAE\x91", + "\xE9\xB9"=>"\xE9\xAE\x96", + "\xE9\xBA"=>"\xE9\xAE\x97", + "\xE9\xBB"=>"\xE9\xAE\x9F", + "\xE9\xBC"=>"\xE9\xAE\xA0", + "\xE9\xBD"=>"\xE9\xAE\xA8", + "\xE9\xBE"=>"\xE9\xAE\xB4", + "\xE9\xBF"=>"\xE9\xAF\x80", + "\xE9\xC0"=>"\xE9\xAF\x8A", + "\xE9\xC1"=>"\xE9\xAE\xB9", + "\xE9\xC2"=>"\xE9\xAF\x86", + "\xE9\xC3"=>"\xE9\xAF\x8F", + "\xE9\xC4"=>"\xE9\xAF\x91", + "\xE9\xC5"=>"\xE9\xAF\x92", + "\xE9\xC6"=>"\xE9\xAF\xA3", + "\xE9\xC7"=>"\xE9\xAF\xA2", + "\xE9\xC8"=>"\xE9\xAF\xA4", + "\xE9\xC9"=>"\xE9\xAF\x94", + "\xE9\xCA"=>"\xE9\xAF\xA1", + "\xE9\xCB"=>"\xE9\xB0\xBA", + "\xE9\xCC"=>"\xE9\xAF\xB2", + "\xE9\xCD"=>"\xE9\xAF\xB1", + "\xE9\xCE"=>"\xE9\xAF\xB0", + "\xE9\xCF"=>"\xE9\xB0\x95", + "\xE9\xD0"=>"\xE9\xB0\x94", + "\xE9\xD1"=>"\xE9\xB0\x89", + "\xE9\xD2"=>"\xE9\xB0\x93", + "\xE9\xD3"=>"\xE9\xB0\x8C", + "\xE9\xD4"=>"\xE9\xB0\x86", + "\xE9\xD5"=>"\xE9\xB0\x88", + "\xE9\xD6"=>"\xE9\xB0\x92", + "\xE9\xD7"=>"\xE9\xB0\x8A", + "\xE9\xD8"=>"\xE9\xB0\x84", + "\xE9\xD9"=>"\xE9\xB0\xAE", + "\xE9\xDA"=>"\xE9\xB0\x9B", + "\xE9\xDB"=>"\xE9\xB0\xA5", + "\xE9\xDC"=>"\xE9\xB0\xA4", + "\xE9\xDD"=>"\xE9\xB0\xA1", + "\xE9\xDE"=>"\xE9\xB0\xB0", + "\xE9\xDF"=>"\xE9\xB1\x87", + "\xE9\xE0"=>"\xE9\xB0\xB2", + "\xE9\xE1"=>"\xE9\xB1\x86", + "\xE9\xE2"=>"\xE9\xB0\xBE", + "\xE9\xE3"=>"\xE9\xB1\x9A", + "\xE9\xE4"=>"\xE9\xB1\xA0", + "\xE9\xE5"=>"\xE9\xB1\xA7", + "\xE9\xE6"=>"\xE9\xB1\xB6", + "\xE9\xE7"=>"\xE9\xB1\xB8", + "\xE9\xE8"=>"\xE9\xB3\xA7", + "\xE9\xE9"=>"\xE9\xB3\xAC", + "\xE9\xEA"=>"\xE9\xB3\xB0", + "\xE9\xEB"=>"\xE9\xB4\x89", + "\xE9\xEC"=>"\xE9\xB4\x88", + "\xE9\xED"=>"\xE9\xB3\xAB", + "\xE9\xEE"=>"\xE9\xB4\x83", + "\xE9\xEF"=>"\xE9\xB4\x86", + "\xE9\xF0"=>"\xE9\xB4\xAA", + "\xE9\xF1"=>"\xE9\xB4\xA6", + "\xE9\xF2"=>"\xE9\xB6\xAF", + "\xE9\xF3"=>"\xE9\xB4\xA3", + "\xE9\xF4"=>"\xE9\xB4\x9F", + "\xE9\xF5"=>"\xE9\xB5\x84", + "\xE9\xF6"=>"\xE9\xB4\x95", + "\xE9\xF7"=>"\xE9\xB4\x92", + "\xE9\xF8"=>"\xE9\xB5\x81", + "\xE9\xF9"=>"\xE9\xB4\xBF", + "\xE9\xFA"=>"\xE9\xB4\xBE", + "\xE9\xFB"=>"\xE9\xB5\x86", + "\xE9\xFC"=>"\xE9\xB5\x88", + "\xEA\x40"=>"\xE9\xB5\x9D", + "\xEA\x41"=>"\xE9\xB5\x9E", + "\xEA\x42"=>"\xE9\xB5\xA4", + "\xEA\x43"=>"\xE9\xB5\x91", + "\xEA\x44"=>"\xE9\xB5\x90", + "\xEA\x45"=>"\xE9\xB5\x99", + "\xEA\x46"=>"\xE9\xB5\xB2", + "\xEA\x47"=>"\xE9\xB6\x89", + "\xEA\x48"=>"\xE9\xB6\x87", + "\xEA\x49"=>"\xE9\xB6\xAB", + "\xEA\x4A"=>"\xE9\xB5\xAF", + "\xEA\x4B"=>"\xE9\xB5\xBA", + "\xEA\x4C"=>"\xE9\xB6\x9A", + "\xEA\x4D"=>"\xE9\xB6\xA4", + "\xEA\x4E"=>"\xE9\xB6\xA9", + "\xEA\x4F"=>"\xE9\xB6\xB2", + "\xEA\x50"=>"\xE9\xB7\x84", + "\xEA\x51"=>"\xE9\xB7\x81", + "\xEA\x52"=>"\xE9\xB6\xBB", + "\xEA\x53"=>"\xE9\xB6\xB8", + "\xEA\x54"=>"\xE9\xB6\xBA", + "\xEA\x55"=>"\xE9\xB7\x86", + "\xEA\x56"=>"\xE9\xB7\x8F", + "\xEA\x57"=>"\xE9\xB7\x82", + "\xEA\x58"=>"\xE9\xB7\x99", + "\xEA\x59"=>"\xE9\xB7\x93", + "\xEA\x5A"=>"\xE9\xB7\xB8", + "\xEA\x5B"=>"\xE9\xB7\xA6", + "\xEA\x5C"=>"\xE9\xB7\xAD", + "\xEA\x5D"=>"\xE9\xB7\xAF", + "\xEA\x5E"=>"\xE9\xB7\xBD", + "\xEA\x5F"=>"\xE9\xB8\x9A", + "\xEA\x60"=>"\xE9\xB8\x9B", + "\xEA\x61"=>"\xE9\xB8\x9E", + "\xEA\x62"=>"\xE9\xB9\xB5", + "\xEA\x63"=>"\xE9\xB9\xB9", + "\xEA\x64"=>"\xE9\xB9\xBD", + "\xEA\x65"=>"\xE9\xBA\x81", + "\xEA\x66"=>"\xE9\xBA\x88", + "\xEA\x67"=>"\xE9\xBA\x8B", + "\xEA\x68"=>"\xE9\xBA\x8C", + "\xEA\x69"=>"\xE9\xBA\x92", + "\xEA\x6A"=>"\xE9\xBA\x95", + "\xEA\x6B"=>"\xE9\xBA\x91", + "\xEA\x6C"=>"\xE9\xBA\x9D", + "\xEA\x6D"=>"\xE9\xBA\xA5", + "\xEA\x6E"=>"\xE9\xBA\xA9", + "\xEA\x6F"=>"\xE9\xBA\xB8", + "\xEA\x70"=>"\xE9\xBA\xAA", + "\xEA\x71"=>"\xE9\xBA\xAD", + "\xEA\x72"=>"\xE9\x9D\xA1", + "\xEA\x73"=>"\xE9\xBB\x8C", + "\xEA\x74"=>"\xE9\xBB\x8E", + "\xEA\x75"=>"\xE9\xBB\x8F", + "\xEA\x76"=>"\xE9\xBB\x90", + "\xEA\x77"=>"\xE9\xBB\x94", + "\xEA\x78"=>"\xE9\xBB\x9C", + "\xEA\x79"=>"\xE9\xBB\x9E", + "\xEA\x7A"=>"\xE9\xBB\x9D", + "\xEA\x7B"=>"\xE9\xBB\xA0", + "\xEA\x7C"=>"\xE9\xBB\xA5", + "\xEA\x7D"=>"\xE9\xBB\xA8", + "\xEA\x7E"=>"\xE9\xBB\xAF", + "\xEA\x80"=>"\xE9\xBB\xB4", + "\xEA\x81"=>"\xE9\xBB\xB6", + "\xEA\x82"=>"\xE9\xBB\xB7", + "\xEA\x83"=>"\xE9\xBB\xB9", + "\xEA\x84"=>"\xE9\xBB\xBB", + "\xEA\x85"=>"\xE9\xBB\xBC", + "\xEA\x86"=>"\xE9\xBB\xBD", + "\xEA\x87"=>"\xE9\xBC\x87", + "\xEA\x88"=>"\xE9\xBC\x88", + "\xEA\x89"=>"\xE7\x9A\xB7", + "\xEA\x8A"=>"\xE9\xBC\x95", + "\xEA\x8B"=>"\xE9\xBC\xA1", + "\xEA\x8C"=>"\xE9\xBC\xAC", + "\xEA\x8D"=>"\xE9\xBC\xBE", + "\xEA\x8E"=>"\xE9\xBD\x8A", + "\xEA\x8F"=>"\xE9\xBD\x92", + "\xEA\x90"=>"\xE9\xBD\x94", + "\xEA\x91"=>"\xE9\xBD\xA3", + "\xEA\x92"=>"\xE9\xBD\x9F", + "\xEA\x93"=>"\xE9\xBD\xA0", + "\xEA\x94"=>"\xE9\xBD\xA1", + "\xEA\x95"=>"\xE9\xBD\xA6", + "\xEA\x96"=>"\xE9\xBD\xA7", + "\xEA\x97"=>"\xE9\xBD\xAC", + "\xEA\x98"=>"\xE9\xBD\xAA", + "\xEA\x99"=>"\xE9\xBD\xB7", + "\xEA\x9A"=>"\xE9\xBD\xB2", + "\xEA\x9B"=>"\xE9\xBD\xB6", + "\xEA\x9C"=>"\xE9\xBE\x95", + "\xEA\x9D"=>"\xE9\xBE\x9C", + "\xEA\x9E"=>"\xE9\xBE\xA0", + "\xEA\x9F"=>"\xE5\xA0\xAF", + "\xEA\xA0"=>"\xE6\xA7\x87", + "\xEA\xA1"=>"\xE9\x81\x99", + "\xEA\xA2"=>"\xE7\x91\xA4", + "\xEA\xA3"=>"\xE5\x87\x9C", + "\xEA\xA4"=>"\xE7\x86\x99" + ); + return strtr($string, $transform); +} + +function euc_kr($string) +{ + static $transform = array( + "\x5c" => "\xE2\x82\xA9", // KX X 1001 + "\x81\x41" => "\xEA\xB0\x82", + "\x81\x42" => "\xEA\xB0\x83", + "\x81\x43" => "\xEA\xB0\x85", + "\x81\x44" => "\xEA\xB0\x86", + "\x81\x45" => "\xEA\xB0\x8B", + "\x81\x46" => "\xEA\xB0\x8C", + "\x81\x47" => "\xEA\xB0\x8D", + "\x81\x48" => "\xEA\xB0\x8E", + "\x81\x49" => "\xEA\xB0\x8F", + "\x81\x4A" => "\xEA\xB0\x98", + "\x81\x4B" => "\xEA\xB0\x9E", + "\x81\x4C" => "\xEA\xB0\x9F", + "\x81\x4D" => "\xEA\xB0\xA1", + "\x81\x4E" => "\xEA\xB0\xA2", + "\x81\x4F" => "\xEA\xB0\xA3", + "\x81\x50" => "\xEA\xB0\xA5", + "\x81\x51" => "\xEA\xB0\xA6", + "\x81\x52" => "\xEA\xB0\xA7", + "\x81\x53" => "\xEA\xB0\xA8", + "\x81\x54" => "\xEA\xB0\xA9", + "\x81\x55" => "\xEA\xB0\xAA", + "\x81\x56" => "\xEA\xB0\xAB", + "\x81\x57" => "\xEA\xB0\xAE", + "\x81\x58" => "\xEA\xB0\xB2", + "\x81\x59" => "\xEA\xB0\xB3", + "\x81\x5A" => "\xEA\xB0\xB4", + "\x81\x61" => "\xEA\xB0\xB5", + "\x81\x62" => "\xEA\xB0\xB6", + "\x81\x63" => "\xEA\xB0\xB7", + "\x81\x64" => "\xEA\xB0\xBA", + "\x81\x65" => "\xEA\xB0\xBB", + "\x81\x66" => "\xEA\xB0\xBD", + "\x81\x67" => "\xEA\xB0\xBE", + "\x81\x68" => "\xEA\xB0\xBF", + "\x81\x69" => "\xEA\xB1\x81", + "\x81\x6A" => "\xEA\xB1\x82", + "\x81\x6B" => "\xEA\xB1\x83", + "\x81\x6C" => "\xEA\xB1\x84", + "\x81\x6D" => "\xEA\xB1\x85", + "\x81\x6E" => "\xEA\xB1\x86", + "\x81\x6F" => "\xEA\xB1\x87", + "\x81\x70" => "\xEA\xB1\x88", + "\x81\x71" => "\xEA\xB1\x89", + "\x81\x72" => "\xEA\xB1\x8A", + "\x81\x73" => "\xEA\xB1\x8C", + "\x81\x74" => "\xEA\xB1\x8E", + "\x81\x75" => "\xEA\xB1\x8F", + "\x81\x76" => "\xEA\xB1\x90", + "\x81\x77" => "\xEA\xB1\x91", + "\x81\x78" => "\xEA\xB1\x92", + "\x81\x79" => "\xEA\xB1\x93", + "\x81\x7A" => "\xEA\xB1\x95", + "\x81\x81" => "\xEA\xB1\x96", + "\x81\x82" => "\xEA\xB1\x97", + "\x81\x83" => "\xEA\xB1\x99", + "\x81\x84" => "\xEA\xB1\x9A", + "\x81\x85" => "\xEA\xB1\x9B", + "\x81\x86" => "\xEA\xB1\x9D", + "\x81\x87" => "\xEA\xB1\x9E", + "\x81\x88" => "\xEA\xB1\x9F", + "\x81\x89" => "\xEA\xB1\xA0", + "\x81\x8A" => "\xEA\xB1\xA1", + "\x81\x8B" => "\xEA\xB1\xA2", + "\x81\x8C" => "\xEA\xB1\xA3", + "\x81\x8D" => "\xEA\xB1\xA4", + "\x81\x8E" => "\xEA\xB1\xA5", + "\x81\x8F" => "\xEA\xB1\xA6", + "\x81\x90" => "\xEA\xB1\xA7", + "\x81\x91" => "\xEA\xB1\xA8", + "\x81\x92" => "\xEA\xB1\xA9", + "\x81\x93" => "\xEA\xB1\xAA", + "\x81\x94" => "\xEA\xB1\xAB", + "\x81\x95" => "\xEA\xB1\xAC", + "\x81\x96" => "\xEA\xB1\xAD", + "\x81\x97" => "\xEA\xB1\xAE", + "\x81\x98" => "\xEA\xB1\xAF", + "\x81\x99" => "\xEA\xB1\xB2", + "\x81\x9A" => "\xEA\xB1\xB3", + "\x81\x9B" => "\xEA\xB1\xB5", + "\x81\x9C" => "\xEA\xB1\xB6", + "\x81\x9D" => "\xEA\xB1\xB9", + "\x81\x9E" => "\xEA\xB1\xBB", + "\x81\x9F" => "\xEA\xB1\xBC", + "\x81\xA0" => "\xEA\xB1\xBD", + "\x81\xA1" => "\xEA\xB1\xBE", + "\x81\xA2" => "\xEA\xB1\xBF", + "\x81\xA3" => "\xEA\xB2\x82", + "\x81\xA4" => "\xEA\xB2\x87", + "\x81\xA5" => "\xEA\xB2\x88", + "\x81\xA6" => "\xEA\xB2\x8D", + "\x81\xA7" => "\xEA\xB2\x8E", + "\x81\xA8" => "\xEA\xB2\x8F", + "\x81\xA9" => "\xEA\xB2\x91", + "\x81\xAA" => "\xEA\xB2\x92", + "\x81\xAB" => "\xEA\xB2\x93", + "\x81\xAC" => "\xEA\xB2\x95", + "\x81\xAD" => "\xEA\xB2\x96", + "\x81\xAE" => "\xEA\xB2\x97", + "\x81\xAF" => "\xEA\xB2\x98", + "\x81\xB0" => "\xEA\xB2\x99", + "\x81\xB1" => "\xEA\xB2\x9A", + "\x81\xB2" => "\xEA\xB2\x9B", + "\x81\xB3" => "\xEA\xB2\x9E", + "\x81\xB4" => "\xEA\xB2\xA2", + "\x81\xB5" => "\xEA\xB2\xA3", + "\x81\xB6" => "\xEA\xB2\xA4", + "\x81\xB7" => "\xEA\xB2\xA5", + "\x81\xB8" => "\xEA\xB2\xA6", + "\x81\xB9" => "\xEA\xB2\xA7", + "\x81\xBA" => "\xEA\xB2\xAB", + "\x81\xBB" => "\xEA\xB2\xAD", + "\x81\xBC" => "\xEA\xB2\xAE", + "\x81\xBD" => "\xEA\xB2\xB1", + "\x81\xBE" => "\xEA\xB2\xB2", + "\x81\xBF" => "\xEA\xB2\xB3", + "\x81\xC0" => "\xEA\xB2\xB4", + "\x81\xC1" => "\xEA\xB2\xB5", + "\x81\xC2" => "\xEA\xB2\xB6", + "\x81\xC3" => "\xEA\xB2\xB7", + "\x81\xC4" => "\xEA\xB2\xBA", + "\x81\xC5" => "\xEA\xB2\xBE", + "\x81\xC6" => "\xEA\xB2\xBF", + "\x81\xC7" => "\xEA\xB3\x80", + "\x81\xC8" => "\xEA\xB3\x82", + "\x81\xC9" => "\xEA\xB3\x83", + "\x81\xCA" => "\xEA\xB3\x85", + "\x81\xCB" => "\xEA\xB3\x86", + "\x81\xCC" => "\xEA\xB3\x87", + "\x81\xCD" => "\xEA\xB3\x89", + "\x81\xCE" => "\xEA\xB3\x8A", + "\x81\xCF" => "\xEA\xB3\x8B", + "\x81\xD0" => "\xEA\xB3\x8D", + "\x81\xD1" => "\xEA\xB3\x8E", + "\x81\xD2" => "\xEA\xB3\x8F", + "\x81\xD3" => "\xEA\xB3\x90", + "\x81\xD4" => "\xEA\xB3\x91", + "\x81\xD5" => "\xEA\xB3\x92", + "\x81\xD6" => "\xEA\xB3\x93", + "\x81\xD7" => "\xEA\xB3\x94", + "\x81\xD8" => "\xEA\xB3\x96", + "\x81\xD9" => "\xEA\xB3\x98", + "\x81\xDA" => "\xEA\xB3\x99", + "\x81\xDB" => "\xEA\xB3\x9A", + "\x81\xDC" => "\xEA\xB3\x9B", + "\x81\xDD" => "\xEA\xB3\x9C", + "\x81\xDE" => "\xEA\xB3\x9D", + "\x81\xDF" => "\xEA\xB3\x9E", + "\x81\xE0" => "\xEA\xB3\x9F", + "\x81\xE1" => "\xEA\xB3\xA2", + "\x81\xE2" => "\xEA\xB3\xA3", + "\x81\xE3" => "\xEA\xB3\xA5", + "\x81\xE4" => "\xEA\xB3\xA6", + "\x81\xE5" => "\xEA\xB3\xA9", + "\x81\xE6" => "\xEA\xB3\xAB", + "\x81\xE7" => "\xEA\xB3\xAD", + "\x81\xE8" => "\xEA\xB3\xAE", + "\x81\xE9" => "\xEA\xB3\xB2", + "\x81\xEA" => "\xEA\xB3\xB4", + "\x81\xEB" => "\xEA\xB3\xB7", + "\x81\xEC" => "\xEA\xB3\xB8", + "\x81\xED" => "\xEA\xB3\xB9", + "\x81\xEE" => "\xEA\xB3\xBA", + "\x81\xEF" => "\xEA\xB3\xBB", + "\x81\xF0" => "\xEA\xB3\xBE", + "\x81\xF1" => "\xEA\xB3\xBF", + "\x81\xF2" => "\xEA\xB4\x81", + "\x81\xF3" => "\xEA\xB4\x82", + "\x81\xF4" => "\xEA\xB4\x83", + "\x81\xF5" => "\xEA\xB4\x85", + "\x81\xF6" => "\xEA\xB4\x87", + "\x81\xF7" => "\xEA\xB4\x88", + "\x81\xF8" => "\xEA\xB4\x89", + "\x81\xF9" => "\xEA\xB4\x8A", + "\x81\xFA" => "\xEA\xB4\x8B", + "\x81\xFB" => "\xEA\xB4\x8E", + "\x81\xFC" => "\xEA\xB4\x90", + "\x81\xFD" => "\xEA\xB4\x92", + "\x81\xFE" => "\xEA\xB4\x93", + "\x82\x41" => "\xEA\xB4\x94", + "\x82\x42" => "\xEA\xB4\x95", + "\x82\x43" => "\xEA\xB4\x96", + "\x82\x44" => "\xEA\xB4\x97", + "\x82\x45" => "\xEA\xB4\x99", + "\x82\x46" => "\xEA\xB4\x9A", + "\x82\x47" => "\xEA\xB4\x9B", + "\x82\x48" => "\xEA\xB4\x9D", + "\x82\x49" => "\xEA\xB4\x9E", + "\x82\x4A" => "\xEA\xB4\x9F", + "\x82\x4B" => "\xEA\xB4\xA1", + "\x82\x4C" => "\xEA\xB4\xA2", + "\x82\x4D" => "\xEA\xB4\xA3", + "\x82\x4E" => "\xEA\xB4\xA4", + "\x82\x4F" => "\xEA\xB4\xA5", + "\x82\x50" => "\xEA\xB4\xA6", + "\x82\x51" => "\xEA\xB4\xA7", + "\x82\x52" => "\xEA\xB4\xA8", + "\x82\x53" => "\xEA\xB4\xAA", + "\x82\x54" => "\xEA\xB4\xAB", + "\x82\x55" => "\xEA\xB4\xAE", + "\x82\x56" => "\xEA\xB4\xAF", + "\x82\x57" => "\xEA\xB4\xB0", + "\x82\x58" => "\xEA\xB4\xB1", + "\x82\x59" => "\xEA\xB4\xB2", + "\x82\x5A" => "\xEA\xB4\xB3", + "\x82\x61" => "\xEA\xB4\xB6", + "\x82\x62" => "\xEA\xB4\xB7", + "\x82\x63" => "\xEA\xB4\xB9", + "\x82\x64" => "\xEA\xB4\xBA", + "\x82\x65" => "\xEA\xB4\xBB", + "\x82\x66" => "\xEA\xB4\xBD", + "\x82\x67" => "\xEA\xB4\xBE", + "\x82\x68" => "\xEA\xB4\xBF", + "\x82\x69" => "\xEA\xB5\x80", + "\x82\x6A" => "\xEA\xB5\x81", + "\x82\x6B" => "\xEA\xB5\x82", + "\x82\x6C" => "\xEA\xB5\x83", + "\x82\x6D" => "\xEA\xB5\x86", + "\x82\x6E" => "\xEA\xB5\x88", + "\x82\x6F" => "\xEA\xB5\x8A", + "\x82\x70" => "\xEA\xB5\x8B", + "\x82\x71" => "\xEA\xB5\x8C", + "\x82\x72" => "\xEA\xB5\x8D", + "\x82\x73" => "\xEA\xB5\x8E", + "\x82\x74" => "\xEA\xB5\x8F", + "\x82\x75" => "\xEA\xB5\x91", + "\x82\x76" => "\xEA\xB5\x92", + "\x82\x77" => "\xEA\xB5\x93", + "\x82\x78" => "\xEA\xB5\x95", + "\x82\x79" => "\xEA\xB5\x96", + "\x82\x7A" => "\xEA\xB5\x97", + "\x82\x81" => "\xEA\xB5\x99", + "\x82\x82" => "\xEA\xB5\x9A", + "\x82\x83" => "\xEA\xB5\x9B", + "\x82\x84" => "\xEA\xB5\x9C", + "\x82\x85" => "\xEA\xB5\x9D", + "\x82\x86" => "\xEA\xB5\x9E", + "\x82\x87" => "\xEA\xB5\x9F", + "\x82\x88" => "\xEA\xB5\xA0", + "\x82\x89" => "\xEA\xB5\xA2", + "\x82\x8A" => "\xEA\xB5\xA4", + "\x82\x8B" => "\xEA\xB5\xA5", + "\x82\x8C" => "\xEA\xB5\xA6", + "\x82\x8D" => "\xEA\xB5\xA7", + "\x82\x8E" => "\xEA\xB5\xA8", + "\x82\x8F" => "\xEA\xB5\xA9", + "\x82\x90" => "\xEA\xB5\xAA", + "\x82\x91" => "\xEA\xB5\xAB", + "\x82\x92" => "\xEA\xB5\xAE", + "\x82\x93" => "\xEA\xB5\xAF", + "\x82\x94" => "\xEA\xB5\xB1", + "\x82\x95" => "\xEA\xB5\xB2", + "\x82\x96" => "\xEA\xB5\xB7", + "\x82\x97" => "\xEA\xB5\xB8", + "\x82\x98" => "\xEA\xB5\xB9", + "\x82\x99" => "\xEA\xB5\xBA", + "\x82\x9A" => "\xEA\xB5\xBE", + "\x82\x9B" => "\xEA\xB6\x80", + "\x82\x9C" => "\xEA\xB6\x83", + "\x82\x9D" => "\xEA\xB6\x84", + "\x82\x9E" => "\xEA\xB6\x85", + "\x82\x9F" => "\xEA\xB6\x86", + "\x82\xA0" => "\xEA\xB6\x87", + "\x82\xA1" => "\xEA\xB6\x8A", + "\x82\xA2" => "\xEA\xB6\x8B", + "\x82\xA3" => "\xEA\xB6\x8D", + "\x82\xA4" => "\xEA\xB6\x8E", + "\x82\xA5" => "\xEA\xB6\x8F", + "\x82\xA6" => "\xEA\xB6\x91", + "\x82\xA7" => "\xEA\xB6\x92", + "\x82\xA8" => "\xEA\xB6\x93", + "\x82\xA9" => "\xEA\xB6\x94", + "\x82\xAA" => "\xEA\xB6\x95", + "\x82\xAB" => "\xEA\xB6\x96", + "\x82\xAC" => "\xEA\xB6\x97", + "\x82\xAD" => "\xEA\xB6\x98", + "\x82\xAE" => "\xEA\xB6\x99", + "\x82\xAF" => "\xEA\xB6\x9A", + "\x82\xB0" => "\xEA\xB6\x9B", + "\x82\xB1" => "\xEA\xB6\x9E", + "\x82\xB2" => "\xEA\xB6\x9F", + "\x82\xB3" => "\xEA\xB6\xA0", + "\x82\xB4" => "\xEA\xB6\xA1", + "\x82\xB5" => "\xEA\xB6\xA2", + "\x82\xB6" => "\xEA\xB6\xA3", + "\x82\xB7" => "\xEA\xB6\xA5", + "\x82\xB8" => "\xEA\xB6\xA6", + "\x82\xB9" => "\xEA\xB6\xA7", + "\x82\xBA" => "\xEA\xB6\xA8", + "\x82\xBB" => "\xEA\xB6\xA9", + "\x82\xBC" => "\xEA\xB6\xAA", + "\x82\xBD" => "\xEA\xB6\xAB", + "\x82\xBE" => "\xEA\xB6\xAC", + "\x82\xBF" => "\xEA\xB6\xAD", + "\x82\xC0" => "\xEA\xB6\xAE", + "\x82\xC1" => "\xEA\xB6\xAF", + "\x82\xC2" => "\xEA\xB6\xB0", + "\x82\xC3" => "\xEA\xB6\xB1", + "\x82\xC4" => "\xEA\xB6\xB2", + "\x82\xC5" => "\xEA\xB6\xB3", + "\x82\xC6" => "\xEA\xB6\xB4", + "\x82\xC7" => "\xEA\xB6\xB5", + "\x82\xC8" => "\xEA\xB6\xB6", + "\x82\xC9" => "\xEA\xB6\xB8", + "\x82\xCA" => "\xEA\xB6\xB9", + "\x82\xCB" => "\xEA\xB6\xBA", + "\x82\xCC" => "\xEA\xB6\xBB", + "\x82\xCD" => "\xEA\xB6\xBC", + "\x82\xCE" => "\xEA\xB6\xBD", + "\x82\xCF" => "\xEA\xB6\xBE", + "\x82\xD0" => "\xEA\xB6\xBF", + "\x82\xD1" => "\xEA\xB7\x82", + "\x82\xD2" => "\xEA\xB7\x83", + "\x82\xD3" => "\xEA\xB7\x85", + "\x82\xD4" => "\xEA\xB7\x86", + "\x82\xD5" => "\xEA\xB7\x87", + "\x82\xD6" => "\xEA\xB7\x89", + "\x82\xD7" => "\xEA\xB7\x8A", + "\x82\xD8" => "\xEA\xB7\x8B", + "\x82\xD9" => "\xEA\xB7\x8C", + "\x82\xDA" => "\xEA\xB7\x8D", + "\x82\xDB" => "\xEA\xB7\x8E", + "\x82\xDC" => "\xEA\xB7\x8F", + "\x82\xDD" => "\xEA\xB7\x92", + "\x82\xDE" => "\xEA\xB7\x94", + "\x82\xDF" => "\xEA\xB7\x95", + "\x82\xE0" => "\xEA\xB7\x96", + "\x82\xE1" => "\xEA\xB7\x97", + "\x82\xE2" => "\xEA\xB7\x98", + "\x82\xE3" => "\xEA\xB7\x99", + "\x82\xE4" => "\xEA\xB7\x9A", + "\x82\xE5" => "\xEA\xB7\x9B", + "\x82\xE6" => "\xEA\xB7\x9D", + "\x82\xE7" => "\xEA\xB7\x9E", + "\x82\xE8" => "\xEA\xB7\x9F", + "\x82\xE9" => "\xEA\xB7\xA1", + "\x82\xEA" => "\xEA\xB7\xA2", + "\x82\xEB" => "\xEA\xB7\xA3", + "\x82\xEC" => "\xEA\xB7\xA5", + "\x82\xED" => "\xEA\xB7\xA6", + "\x82\xEE" => "\xEA\xB7\xA7", + "\x82\xEF" => "\xEA\xB7\xA8", + "\x82\xF0" => "\xEA\xB7\xA9", + "\x82\xF1" => "\xEA\xB7\xAA", + "\x82\xF2" => "\xEA\xB7\xAB", + "\x82\xF3" => "\xEA\xB7\xAC", + "\x82\xF4" => "\xEA\xB7\xAD", + "\x82\xF5" => "\xEA\xB7\xAE", + "\x82\xF6" => "\xEA\xB7\xAF", + "\x82\xF7" => "\xEA\xB7\xB0", + "\x82\xF8" => "\xEA\xB7\xB1", + "\x82\xF9" => "\xEA\xB7\xB2", + "\x82\xFA" => "\xEA\xB7\xB3", + "\x82\xFB" => "\xEA\xB7\xB4", + "\x82\xFC" => "\xEA\xB7\xB5", + "\x82\xFD" => "\xEA\xB7\xB6", + "\x82\xFE" => "\xEA\xB7\xB7", + "\x83\x41" => "\xEA\xB7\xBA", + "\x83\x42" => "\xEA\xB7\xBB", + "\x83\x43" => "\xEA\xB7\xBD", + "\x83\x44" => "\xEA\xB7\xBE", + "\x83\x45" => "\xEA\xB8\x82", + "\x83\x46" => "\xEA\xB8\x83", + "\x83\x47" => "\xEA\xB8\x84", + "\x83\x48" => "\xEA\xB8\x85", + "\x83\x49" => "\xEA\xB8\x86", + "\x83\x4A" => "\xEA\xB8\x87", + "\x83\x4B" => "\xEA\xB8\x8A", + "\x83\x4C" => "\xEA\xB8\x8C", + "\x83\x4D" => "\xEA\xB8\x8E", + "\x83\x4E" => "\xEA\xB8\x8F", + "\x83\x4F" => "\xEA\xB8\x90", + "\x83\x50" => "\xEA\xB8\x91", + "\x83\x51" => "\xEA\xB8\x92", + "\x83\x52" => "\xEA\xB8\x93", + "\x83\x53" => "\xEA\xB8\x95", + "\x83\x54" => "\xEA\xB8\x96", + "\x83\x55" => "\xEA\xB8\x97", + "\x83\x56" => "\xEA\xB8\x98", + "\x83\x57" => "\xEA\xB8\x99", + "\x83\x58" => "\xEA\xB8\x9A", + "\x83\x59" => "\xEA\xB8\x9B", + "\x83\x5A" => "\xEA\xB8\x9C", + "\x83\x61" => "\xEA\xB8\x9D", + "\x83\x62" => "\xEA\xB8\x9E", + "\x83\x63" => "\xEA\xB8\x9F", + "\x83\x64" => "\xEA\xB8\xA0", + "\x83\x65" => "\xEA\xB8\xA1", + "\x83\x66" => "\xEA\xB8\xA2", + "\x83\x67" => "\xEA\xB8\xA3", + "\x83\x68" => "\xEA\xB8\xA4", + "\x83\x69" => "\xEA\xB8\xA5", + "\x83\x6A" => "\xEA\xB8\xA6", + "\x83\x6B" => "\xEA\xB8\xA7", + "\x83\x6C" => "\xEA\xB8\xA8", + "\x83\x6D" => "\xEA\xB8\xA9", + "\x83\x6E" => "\xEA\xB8\xAA", + "\x83\x6F" => "\xEA\xB8\xAB", + "\x83\x70" => "\xEA\xB8\xAC", + "\x83\x71" => "\xEA\xB8\xAD", + "\x83\x72" => "\xEA\xB8\xAE", + "\x83\x73" => "\xEA\xB8\xAF", + "\x83\x74" => "\xEA\xB8\xB2", + "\x83\x75" => "\xEA\xB8\xB3", + "\x83\x76" => "\xEA\xB8\xB5", + "\x83\x77" => "\xEA\xB8\xB6", + "\x83\x78" => "\xEA\xB8\xB9", + "\x83\x79" => "\xEA\xB8\xBB", + "\x83\x7A" => "\xEA\xB8\xBC", + "\x83\x81" => "\xEA\xB8\xBD", + "\x83\x82" => "\xEA\xB8\xBE", + "\x83\x83" => "\xEA\xB8\xBF", + "\x83\x84" => "\xEA\xB9\x82", + "\x83\x85" => "\xEA\xB9\x84", + "\x83\x86" => "\xEA\xB9\x87", + "\x83\x87" => "\xEA\xB9\x88", + "\x83\x88" => "\xEA\xB9\x89", + "\x83\x89" => "\xEA\xB9\x8B", + "\x83\x8A" => "\xEA\xB9\x8F", + "\x83\x8B" => "\xEA\xB9\x91", + "\x83\x8C" => "\xEA\xB9\x92", + "\x83\x8D" => "\xEA\xB9\x93", + "\x83\x8E" => "\xEA\xB9\x95", + "\x83\x8F" => "\xEA\xB9\x97", + "\x83\x90" => "\xEA\xB9\x98", + "\x83\x91" => "\xEA\xB9\x99", + "\x83\x92" => "\xEA\xB9\x9A", + "\x83\x93" => "\xEA\xB9\x9B", + "\x83\x94" => "\xEA\xB9\x9E", + "\x83\x95" => "\xEA\xB9\xA2", + "\x83\x96" => "\xEA\xB9\xA3", + "\x83\x97" => "\xEA\xB9\xA4", + "\x83\x98" => "\xEA\xB9\xA6", + "\x83\x99" => "\xEA\xB9\xA7", + "\x83\x9A" => "\xEA\xB9\xAA", + "\x83\x9B" => "\xEA\xB9\xAB", + "\x83\x9C" => "\xEA\xB9\xAD", + "\x83\x9D" => "\xEA\xB9\xAE", + "\x83\x9E" => "\xEA\xB9\xAF", + "\x83\x9F" => "\xEA\xB9\xB1", + "\x83\xA0" => "\xEA\xB9\xB2", + "\x83\xA1" => "\xEA\xB9\xB3", + "\x83\xA2" => "\xEA\xB9\xB4", + "\x83\xA3" => "\xEA\xB9\xB5", + "\x83\xA4" => "\xEA\xB9\xB6", + "\x83\xA5" => "\xEA\xB9\xB7", + "\x83\xA6" => "\xEA\xB9\xBA", + "\x83\xA7" => "\xEA\xB9\xBE", + "\x83\xA8" => "\xEA\xB9\xBF", + "\x83\xA9" => "\xEA\xBA\x80", + "\x83\xAA" => "\xEA\xBA\x81", + "\x83\xAB" => "\xEA\xBA\x82", + "\x83\xAC" => "\xEA\xBA\x83", + "\x83\xAD" => "\xEA\xBA\x86", + "\x83\xAE" => "\xEA\xBA\x87", + "\x83\xAF" => "\xEA\xBA\x88", + "\x83\xB0" => "\xEA\xBA\x89", + "\x83\xB1" => "\xEA\xBA\x8A", + "\x83\xB2" => "\xEA\xBA\x8B", + "\x83\xB3" => "\xEA\xBA\x8D", + "\x83\xB4" => "\xEA\xBA\x8E", + "\x83\xB5" => "\xEA\xBA\x8F", + "\x83\xB6" => "\xEA\xBA\x90", + "\x83\xB7" => "\xEA\xBA\x91", + "\x83\xB8" => "\xEA\xBA\x92", + "\x83\xB9" => "\xEA\xBA\x93", + "\x83\xBA" => "\xEA\xBA\x94", + "\x83\xBB" => "\xEA\xBA\x95", + "\x83\xBC" => "\xEA\xBA\x96", + "\x83\xBD" => "\xEA\xBA\x97", + "\x83\xBE" => "\xEA\xBA\x98", + "\x83\xBF" => "\xEA\xBA\x99", + "\x83\xC0" => "\xEA\xBA\x9A", + "\x83\xC1" => "\xEA\xBA\x9B", + "\x83\xC2" => "\xEA\xBA\x9C", + "\x83\xC3" => "\xEA\xBA\x9D", + "\x83\xC4" => "\xEA\xBA\x9E", + "\x83\xC5" => "\xEA\xBA\x9F", + "\x83\xC6" => "\xEA\xBA\xA0", + "\x83\xC7" => "\xEA\xBA\xA1", + "\x83\xC8" => "\xEA\xBA\xA2", + "\x83\xC9" => "\xEA\xBA\xA3", + "\x83\xCA" => "\xEA\xBA\xA4", + "\x83\xCB" => "\xEA\xBA\xA5", + "\x83\xCC" => "\xEA\xBA\xA6", + "\x83\xCD" => "\xEA\xBA\xA7", + "\x83\xCE" => "\xEA\xBA\xA8", + "\x83\xCF" => "\xEA\xBA\xA9", + "\x83\xD0" => "\xEA\xBA\xAA", + "\x83\xD1" => "\xEA\xBA\xAB", + "\x83\xD2" => "\xEA\xBA\xAC", + "\x83\xD3" => "\xEA\xBA\xAD", + "\x83\xD4" => "\xEA\xBA\xAE", + "\x83\xD5" => "\xEA\xBA\xAF", + "\x83\xD6" => "\xEA\xBA\xB0", + "\x83\xD7" => "\xEA\xBA\xB1", + "\x83\xD8" => "\xEA\xBA\xB2", + "\x83\xD9" => "\xEA\xBA\xB3", + "\x83\xDA" => "\xEA\xBA\xB4", + "\x83\xDB" => "\xEA\xBA\xB5", + "\x83\xDC" => "\xEA\xBA\xB6", + "\x83\xDD" => "\xEA\xBA\xB7", + "\x83\xDE" => "\xEA\xBA\xB8", + "\x83\xDF" => "\xEA\xBA\xB9", + "\x83\xE0" => "\xEA\xBA\xBA", + "\x83\xE1" => "\xEA\xBA\xBB", + "\x83\xE2" => "\xEA\xBA\xBF", + "\x83\xE3" => "\xEA\xBB\x81", + "\x83\xE4" => "\xEA\xBB\x82", + "\x83\xE5" => "\xEA\xBB\x83", + "\x83\xE6" => "\xEA\xBB\x85", + "\x83\xE7" => "\xEA\xBB\x86", + "\x83\xE8" => "\xEA\xBB\x87", + "\x83\xE9" => "\xEA\xBB\x88", + "\x83\xEA" => "\xEA\xBB\x89", + "\x83\xEB" => "\xEA\xBB\x8A", + "\x83\xEC" => "\xEA\xBB\x8B", + "\x83\xED" => "\xEA\xBB\x8E", + "\x83\xEE" => "\xEA\xBB\x92", + "\x83\xEF" => "\xEA\xBB\x93", + "\x83\xF0" => "\xEA\xBB\x94", + "\x83\xF1" => "\xEA\xBB\x95", + "\x83\xF2" => "\xEA\xBB\x96", + "\x83\xF3" => "\xEA\xBB\x97", + "\x83\xF4" => "\xEA\xBB\x9A", + "\x83\xF5" => "\xEA\xBB\x9B", + "\x83\xF6" => "\xEA\xBB\x9D", + "\x83\xF7" => "\xEA\xBB\x9E", + "\x83\xF8" => "\xEA\xBB\x9F", + "\x83\xF9" => "\xEA\xBB\xA0", + "\x83\xFA" => "\xEA\xBB\xA1", + "\x83\xFB" => "\xEA\xBB\xA2", + "\x83\xFC" => "\xEA\xBB\xA3", + "\x83\xFD" => "\xEA\xBB\xA4", + "\x83\xFE" => "\xEA\xBB\xA5", + "\x84\x41" => "\xEA\xBB\xA6", + "\x84\x42" => "\xEA\xBB\xA7", + "\x84\x43" => "\xEA\xBB\xA9", + "\x84\x44" => "\xEA\xBB\xAA", + "\x84\x45" => "\xEA\xBB\xAC", + "\x84\x46" => "\xEA\xBB\xAE", + "\x84\x47" => "\xEA\xBB\xAF", + "\x84\x48" => "\xEA\xBB\xB0", + "\x84\x49" => "\xEA\xBB\xB1", + "\x84\x4A" => "\xEA\xBB\xB2", + "\x84\x4B" => "\xEA\xBB\xB3", + "\x84\x4C" => "\xEA\xBB\xB5", + "\x84\x4D" => "\xEA\xBB\xB6", + "\x84\x4E" => "\xEA\xBB\xB7", + "\x84\x4F" => "\xEA\xBB\xB9", + "\x84\x50" => "\xEA\xBB\xBA", + "\x84\x51" => "\xEA\xBB\xBB", + "\x84\x52" => "\xEA\xBB\xBD", + "\x84\x53" => "\xEA\xBB\xBE", + "\x84\x54" => "\xEA\xBB\xBF", + "\x84\x55" => "\xEA\xBC\x80", + "\x84\x56" => "\xEA\xBC\x81", + "\x84\x57" => "\xEA\xBC\x82", + "\x84\x58" => "\xEA\xBC\x83", + "\x84\x59" => "\xEA\xBC\x84", + "\x84\x5A" => "\xEA\xBC\x85", + "\x84\x61" => "\xEA\xBC\x86", + "\x84\x62" => "\xEA\xBC\x89", + "\x84\x63" => "\xEA\xBC\x8A", + "\x84\x64" => "\xEA\xBC\x8B", + "\x84\x65" => "\xEA\xBC\x8C", + "\x84\x66" => "\xEA\xBC\x8E", + "\x84\x67" => "\xEA\xBC\x8F", + "\x84\x68" => "\xEA\xBC\x91", + "\x84\x69" => "\xEA\xBC\x92", + "\x84\x6A" => "\xEA\xBC\x93", + "\x84\x6B" => "\xEA\xBC\x94", + "\x84\x6C" => "\xEA\xBC\x95", + "\x84\x6D" => "\xEA\xBC\x96", + "\x84\x6E" => "\xEA\xBC\x97", + "\x84\x6F" => "\xEA\xBC\x98", + "\x84\x70" => "\xEA\xBC\x99", + "\x84\x71" => "\xEA\xBC\x9A", + "\x84\x72" => "\xEA\xBC\x9B", + "\x84\x73" => "\xEA\xBC\x9C", + "\x84\x74" => "\xEA\xBC\x9D", + "\x84\x75" => "\xEA\xBC\x9E", + "\x84\x76" => "\xEA\xBC\x9F", + "\x84\x77" => "\xEA\xBC\xA0", + "\x84\x78" => "\xEA\xBC\xA1", + "\x84\x79" => "\xEA\xBC\xA2", + "\x84\x7A" => "\xEA\xBC\xA3", + "\x84\x81" => "\xEA\xBC\xA4", + "\x84\x82" => "\xEA\xBC\xA5", + "\x84\x83" => "\xEA\xBC\xA6", + "\x84\x84" => "\xEA\xBC\xA7", + "\x84\x85" => "\xEA\xBC\xA8", + "\x84\x86" => "\xEA\xBC\xA9", + "\x84\x87" => "\xEA\xBC\xAA", + "\x84\x88" => "\xEA\xBC\xAB", + "\x84\x89" => "\xEA\xBC\xAE", + "\x84\x8A" => "\xEA\xBC\xAF", + "\x84\x8B" => "\xEA\xBC\xB1", + "\x84\x8C" => "\xEA\xBC\xB3", + "\x84\x8D" => "\xEA\xBC\xB5", + "\x84\x8E" => "\xEA\xBC\xB6", + "\x84\x8F" => "\xEA\xBC\xB7", + "\x84\x90" => "\xEA\xBC\xB8", + "\x84\x91" => "\xEA\xBC\xB9", + "\x84\x92" => "\xEA\xBC\xBA", + "\x84\x93" => "\xEA\xBC\xBB", + "\x84\x94" => "\xEA\xBC\xBE", + "\x84\x95" => "\xEA\xBD\x80", + "\x84\x96" => "\xEA\xBD\x84", + "\x84\x97" => "\xEA\xBD\x85", + "\x84\x98" => "\xEA\xBD\x86", + "\x84\x99" => "\xEA\xBD\x87", + "\x84\x9A" => "\xEA\xBD\x8A", + "\x84\x9B" => "\xEA\xBD\x8B", + "\x84\x9C" => "\xEA\xBD\x8C", + "\x84\x9D" => "\xEA\xBD\x8D", + "\x84\x9E" => "\xEA\xBD\x8E", + "\x84\x9F" => "\xEA\xBD\x8F", + "\x84\xA0" => "\xEA\xBD\x91", + "\x84\xA1" => "\xEA\xBD\x92", + "\x84\xA2" => "\xEA\xBD\x93", + "\x84\xA3" => "\xEA\xBD\x94", + "\x84\xA4" => "\xEA\xBD\x95", + "\x84\xA5" => "\xEA\xBD\x96", + "\x84\xA6" => "\xEA\xBD\x97", + "\x84\xA7" => "\xEA\xBD\x98", + "\x84\xA8" => "\xEA\xBD\x99", + "\x84\xA9" => "\xEA\xBD\x9A", + "\x84\xAA" => "\xEA\xBD\x9B", + "\x84\xAB" => "\xEA\xBD\x9E", + "\x84\xAC" => "\xEA\xBD\x9F", + "\x84\xAD" => "\xEA\xBD\xA0", + "\x84\xAE" => "\xEA\xBD\xA1", + "\x84\xAF" => "\xEA\xBD\xA2", + "\x84\xB0" => "\xEA\xBD\xA3", + "\x84\xB1" => "\xEA\xBD\xA6", + "\x84\xB2" => "\xEA\xBD\xA7", + "\x84\xB3" => "\xEA\xBD\xA8", + "\x84\xB4" => "\xEA\xBD\xA9", + "\x84\xB5" => "\xEA\xBD\xAA", + "\x84\xB6" => "\xEA\xBD\xAB", + "\x84\xB7" => "\xEA\xBD\xAC", + "\x84\xB8" => "\xEA\xBD\xAD", + "\x84\xB9" => "\xEA\xBD\xAE", + "\x84\xBA" => "\xEA\xBD\xAF", + "\x84\xBB" => "\xEA\xBD\xB0", + "\x84\xBC" => "\xEA\xBD\xB1", + "\x84\xBD" => "\xEA\xBD\xB2", + "\x84\xBE" => "\xEA\xBD\xB3", + "\x84\xBF" => "\xEA\xBD\xB4", + "\x84\xC0" => "\xEA\xBD\xB5", + "\x84\xC1" => "\xEA\xBD\xB6", + "\x84\xC2" => "\xEA\xBD\xB7", + "\x84\xC3" => "\xEA\xBD\xB8", + "\x84\xC4" => "\xEA\xBD\xBA", + "\x84\xC5" => "\xEA\xBD\xBB", + "\x84\xC6" => "\xEA\xBD\xBC", + "\x84\xC7" => "\xEA\xBD\xBD", + "\x84\xC8" => "\xEA\xBD\xBE", + "\x84\xC9" => "\xEA\xBD\xBF", + "\x84\xCA" => "\xEA\xBE\x81", + "\x84\xCB" => "\xEA\xBE\x82", + "\x84\xCC" => "\xEA\xBE\x83", + "\x84\xCD" => "\xEA\xBE\x85", + "\x84\xCE" => "\xEA\xBE\x86", + "\x84\xCF" => "\xEA\xBE\x87", + "\x84\xD0" => "\xEA\xBE\x89", + "\x84\xD1" => "\xEA\xBE\x8A", + "\x84\xD2" => "\xEA\xBE\x8B", + "\x84\xD3" => "\xEA\xBE\x8C", + "\x84\xD4" => "\xEA\xBE\x8D", + "\x84\xD5" => "\xEA\xBE\x8E", + "\x84\xD6" => "\xEA\xBE\x8F", + "\x84\xD7" => "\xEA\xBE\x92", + "\x84\xD8" => "\xEA\xBE\x93", + "\x84\xD9" => "\xEA\xBE\x94", + "\x84\xDA" => "\xEA\xBE\x96", + "\x84\xDB" => "\xEA\xBE\x97", + "\x84\xDC" => "\xEA\xBE\x98", + "\x84\xDD" => "\xEA\xBE\x99", + "\x84\xDE" => "\xEA\xBE\x9A", + "\x84\xDF" => "\xEA\xBE\x9B", + "\x84\xE0" => "\xEA\xBE\x9D", + "\x84\xE1" => "\xEA\xBE\x9E", + "\x84\xE2" => "\xEA\xBE\x9F", + "\x84\xE3" => "\xEA\xBE\xA0", + "\x84\xE4" => "\xEA\xBE\xA1", + "\x84\xE5" => "\xEA\xBE\xA2", + "\x84\xE6" => "\xEA\xBE\xA3", + "\x84\xE7" => "\xEA\xBE\xA4", + "\x84\xE8" => "\xEA\xBE\xA5", + "\x84\xE9" => "\xEA\xBE\xA6", + "\x84\xEA" => "\xEA\xBE\xA7", + "\x84\xEB" => "\xEA\xBE\xA8", + "\x84\xEC" => "\xEA\xBE\xA9", + "\x84\xED" => "\xEA\xBE\xAA", + "\x84\xEE" => "\xEA\xBE\xAB", + "\x84\xEF" => "\xEA\xBE\xAC", + "\x84\xF0" => "\xEA\xBE\xAD", + "\x84\xF1" => "\xEA\xBE\xAE", + "\x84\xF2" => "\xEA\xBE\xAF", + "\x84\xF3" => "\xEA\xBE\xB0", + "\x84\xF4" => "\xEA\xBE\xB1", + "\x84\xF5" => "\xEA\xBE\xB2", + "\x84\xF6" => "\xEA\xBE\xB3", + "\x84\xF7" => "\xEA\xBE\xB4", + "\x84\xF8" => "\xEA\xBE\xB5", + "\x84\xF9" => "\xEA\xBE\xB6", + "\x84\xFA" => "\xEA\xBE\xB7", + "\x84\xFB" => "\xEA\xBE\xBA", + "\x84\xFC" => "\xEA\xBE\xBB", + "\x84\xFD" => "\xEA\xBE\xBD", + "\x84\xFE" => "\xEA\xBE\xBE", + "\x85\x41" => "\xEA\xBE\xBF", + "\x85\x42" => "\xEA\xBF\x81", + "\x85\x43" => "\xEA\xBF\x82", + "\x85\x44" => "\xEA\xBF\x83", + "\x85\x45" => "\xEA\xBF\x84", + "\x85\x46" => "\xEA\xBF\x85", + "\x85\x47" => "\xEA\xBF\x86", + "\x85\x48" => "\xEA\xBF\x8A", + "\x85\x49" => "\xEA\xBF\x8C", + "\x85\x4A" => "\xEA\xBF\x8F", + "\x85\x4B" => "\xEA\xBF\x90", + "\x85\x4C" => "\xEA\xBF\x91", + "\x85\x4D" => "\xEA\xBF\x92", + "\x85\x4E" => "\xEA\xBF\x93", + "\x85\x4F" => "\xEA\xBF\x95", + "\x85\x50" => "\xEA\xBF\x96", + "\x85\x51" => "\xEA\xBF\x97", + "\x85\x52" => "\xEA\xBF\x98", + "\x85\x53" => "\xEA\xBF\x99", + "\x85\x54" => "\xEA\xBF\x9A", + "\x85\x55" => "\xEA\xBF\x9B", + "\x85\x56" => "\xEA\xBF\x9D", + "\x85\x57" => "\xEA\xBF\x9E", + "\x85\x58" => "\xEA\xBF\x9F", + "\x85\x59" => "\xEA\xBF\xA0", + "\x85\x5A" => "\xEA\xBF\xA1", + "\x85\x61" => "\xEA\xBF\xA2", + "\x85\x62" => "\xEA\xBF\xA3", + "\x85\x63" => "\xEA\xBF\xA4", + "\x85\x64" => "\xEA\xBF\xA5", + "\x85\x65" => "\xEA\xBF\xA6", + "\x85\x66" => "\xEA\xBF\xA7", + "\x85\x67" => "\xEA\xBF\xAA", + "\x85\x68" => "\xEA\xBF\xAB", + "\x85\x69" => "\xEA\xBF\xAC", + "\x85\x6A" => "\xEA\xBF\xAD", + "\x85\x6B" => "\xEA\xBF\xAE", + "\x85\x6C" => "\xEA\xBF\xAF", + "\x85\x6D" => "\xEA\xBF\xB2", + "\x85\x6E" => "\xEA\xBF\xB3", + "\x85\x6F" => "\xEA\xBF\xB5", + "\x85\x70" => "\xEA\xBF\xB6", + "\x85\x71" => "\xEA\xBF\xB7", + "\x85\x72" => "\xEA\xBF\xB9", + "\x85\x73" => "\xEA\xBF\xBA", + "\x85\x74" => "\xEA\xBF\xBB", + "\x85\x75" => "\xEA\xBF\xBC", + "\x85\x76" => "\xEA\xBF\xBD", + "\x85\x77" => "\xEA\xBF\xBE", + "\x85\x78" => "\xEA\xBF\xBF", + "\x85\x79" => "\xEB\x80\x82", + "\x85\x7A" => "\xEB\x80\x83", + "\x85\x81" => "\xEB\x80\x85", + "\x85\x82" => "\xEB\x80\x86", + "\x85\x83" => "\xEB\x80\x87", + "\x85\x84" => "\xEB\x80\x88", + "\x85\x85" => "\xEB\x80\x89", + "\x85\x86" => "\xEB\x80\x8A", + "\x85\x87" => "\xEB\x80\x8B", + "\x85\x88" => "\xEB\x80\x8D", + "\x85\x89" => "\xEB\x80\x8E", + "\x85\x8A" => "\xEB\x80\x8F", + "\x85\x8B" => "\xEB\x80\x91", + "\x85\x8C" => "\xEB\x80\x92", + "\x85\x8D" => "\xEB\x80\x93", + "\x85\x8E" => "\xEB\x80\x95", + "\x85\x8F" => "\xEB\x80\x96", + "\x85\x90" => "\xEB\x80\x97", + "\x85\x91" => "\xEB\x80\x98", + "\x85\x92" => "\xEB\x80\x99", + "\x85\x93" => "\xEB\x80\x9A", + "\x85\x94" => "\xEB\x80\x9B", + "\x85\x95" => "\xEB\x80\x9E", + "\x85\x96" => "\xEB\x80\x9F", + "\x85\x97" => "\xEB\x80\xA0", + "\x85\x98" => "\xEB\x80\xA1", + "\x85\x99" => "\xEB\x80\xA2", + "\x85\x9A" => "\xEB\x80\xA3", + "\x85\x9B" => "\xEB\x80\xA4", + "\x85\x9C" => "\xEB\x80\xA5", + "\x85\x9D" => "\xEB\x80\xA6", + "\x85\x9E" => "\xEB\x80\xA7", + "\x85\x9F" => "\xEB\x80\xA9", + "\x85\xA0" => "\xEB\x80\xAA", + "\x85\xA1" => "\xEB\x80\xAB", + "\x85\xA2" => "\xEB\x80\xAC", + "\x85\xA3" => "\xEB\x80\xAD", + "\x85\xA4" => "\xEB\x80\xAE", + "\x85\xA5" => "\xEB\x80\xAF", + "\x85\xA6" => "\xEB\x80\xB0", + "\x85\xA7" => "\xEB\x80\xB1", + "\x85\xA8" => "\xEB\x80\xB2", + "\x85\xA9" => "\xEB\x80\xB3", + "\x85\xAA" => "\xEB\x80\xB4", + "\x85\xAB" => "\xEB\x80\xB5", + "\x85\xAC" => "\xEB\x80\xB6", + "\x85\xAD" => "\xEB\x80\xB7", + "\x85\xAE" => "\xEB\x80\xB8", + "\x85\xAF" => "\xEB\x80\xB9", + "\x85\xB0" => "\xEB\x80\xBA", + "\x85\xB1" => "\xEB\x80\xBB", + "\x85\xB2" => "\xEB\x80\xBC", + "\x85\xB3" => "\xEB\x80\xBD", + "\x85\xB4" => "\xEB\x80\xBE", + "\x85\xB5" => "\xEB\x80\xBF", + "\x85\xB6" => "\xEB\x81\x80", + "\x85\xB7" => "\xEB\x81\x81", + "\x85\xB8" => "\xEB\x81\x82", + "\x85\xB9" => "\xEB\x81\x83", + "\x85\xBA" => "\xEB\x81\x86", + "\x85\xBB" => "\xEB\x81\x87", + "\x85\xBC" => "\xEB\x81\x89", + "\x85\xBD" => "\xEB\x81\x8B", + "\x85\xBE" => "\xEB\x81\x8D", + "\x85\xBF" => "\xEB\x81\x8F", + "\x85\xC0" => "\xEB\x81\x90", + "\x85\xC1" => "\xEB\x81\x91", + "\x85\xC2" => "\xEB\x81\x92", + "\x85\xC3" => "\xEB\x81\x96", + "\x85\xC4" => "\xEB\x81\x98", + "\x85\xC5" => "\xEB\x81\x9A", + "\x85\xC6" => "\xEB\x81\x9B", + "\x85\xC7" => "\xEB\x81\x9C", + "\x85\xC8" => "\xEB\x81\x9E", + "\x85\xC9" => "\xEB\x81\x9F", + "\x85\xCA" => "\xEB\x81\xA0", + "\x85\xCB" => "\xEB\x81\xA1", + "\x85\xCC" => "\xEB\x81\xA2", + "\x85\xCD" => "\xEB\x81\xA3", + "\x85\xCE" => "\xEB\x81\xA4", + "\x85\xCF" => "\xEB\x81\xA5", + "\x85\xD0" => "\xEB\x81\xA6", + "\x85\xD1" => "\xEB\x81\xA7", + "\x85\xD2" => "\xEB\x81\xA8", + "\x85\xD3" => "\xEB\x81\xA9", + "\x85\xD4" => "\xEB\x81\xAA", + "\x85\xD5" => "\xEB\x81\xAB", + "\x85\xD6" => "\xEB\x81\xAC", + "\x85\xD7" => "\xEB\x81\xAD", + "\x85\xD8" => "\xEB\x81\xAE", + "\x85\xD9" => "\xEB\x81\xAF", + "\x85\xDA" => "\xEB\x81\xB0", + "\x85\xDB" => "\xEB\x81\xB1", + "\x85\xDC" => "\xEB\x81\xB2", + "\x85\xDD" => "\xEB\x81\xB3", + "\x85\xDE" => "\xEB\x81\xB4", + "\x85\xDF" => "\xEB\x81\xB5", + "\x85\xE0" => "\xEB\x81\xB6", + "\x85\xE1" => "\xEB\x81\xB7", + "\x85\xE2" => "\xEB\x81\xB8", + "\x85\xE3" => "\xEB\x81\xB9", + "\x85\xE4" => "\xEB\x81\xBA", + "\x85\xE5" => "\xEB\x81\xBB", + "\x85\xE6" => "\xEB\x81\xBE", + "\x85\xE7" => "\xEB\x81\xBF", + "\x85\xE8" => "\xEB\x82\x81", + "\x85\xE9" => "\xEB\x82\x82", + "\x85\xEA" => "\xEB\x82\x83", + "\x85\xEB" => "\xEB\x82\x85", + "\x85\xEC" => "\xEB\x82\x86", + "\x85\xED" => "\xEB\x82\x87", + "\x85\xEE" => "\xEB\x82\x88", + "\x85\xEF" => "\xEB\x82\x89", + "\x85\xF0" => "\xEB\x82\x8A", + "\x85\xF1" => "\xEB\x82\x8B", + "\x85\xF2" => "\xEB\x82\x8E", + "\x85\xF3" => "\xEB\x82\x90", + "\x85\xF4" => "\xEB\x82\x92", + "\x85\xF5" => "\xEB\x82\x93", + "\x85\xF6" => "\xEB\x82\x94", + "\x85\xF7" => "\xEB\x82\x95", + "\x85\xF8" => "\xEB\x82\x96", + "\x85\xF9" => "\xEB\x82\x97", + "\x85\xFA" => "\xEB\x82\x9B", + "\x85\xFB" => "\xEB\x82\x9D", + "\x85\xFC" => "\xEB\x82\x9E", + "\x85\xFD" => "\xEB\x82\xA3", + "\x85\xFE" => "\xEB\x82\xA4", + "\x86\x41" => "\xEB\x82\xA5", + "\x86\x42" => "\xEB\x82\xA6", + "\x86\x43" => "\xEB\x82\xA7", + "\x86\x44" => "\xEB\x82\xAA", + "\x86\x45" => "\xEB\x82\xB0", + "\x86\x46" => "\xEB\x82\xB2", + "\x86\x47" => "\xEB\x82\xB6", + "\x86\x48" => "\xEB\x82\xB7", + "\x86\x49" => "\xEB\x82\xB9", + "\x86\x4A" => "\xEB\x82\xBA", + "\x86\x4B" => "\xEB\x82\xBB", + "\x86\x4C" => "\xEB\x82\xBD", + "\x86\x4D" => "\xEB\x82\xBE", + "\x86\x4E" => "\xEB\x82\xBF", + "\x86\x4F" => "\xEB\x83\x80", + "\x86\x50" => "\xEB\x83\x81", + "\x86\x51" => "\xEB\x83\x82", + "\x86\x52" => "\xEB\x83\x83", + "\x86\x53" => "\xEB\x83\x86", + "\x86\x54" => "\xEB\x83\x8A", + "\x86\x55" => "\xEB\x83\x8B", + "\x86\x56" => "\xEB\x83\x8C", + "\x86\x57" => "\xEB\x83\x8D", + "\x86\x58" => "\xEB\x83\x8E", + "\x86\x59" => "\xEB\x83\x8F", + "\x86\x5A" => "\xEB\x83\x92", + "\x86\x61" => "\xEB\x83\x93", + "\x86\x62" => "\xEB\x83\x95", + "\x86\x63" => "\xEB\x83\x96", + "\x86\x64" => "\xEB\x83\x97", + "\x86\x65" => "\xEB\x83\x99", + "\x86\x66" => "\xEB\x83\x9A", + "\x86\x67" => "\xEB\x83\x9B", + "\x86\x68" => "\xEB\x83\x9C", + "\x86\x69" => "\xEB\x83\x9D", + "\x86\x6A" => "\xEB\x83\x9E", + "\x86\x6B" => "\xEB\x83\x9F", + "\x86\x6C" => "\xEB\x83\xA1", + "\x86\x6D" => "\xEB\x83\xA2", + "\x86\x6E" => "\xEB\x83\xA3", + "\x86\x6F" => "\xEB\x83\xA4", + "\x86\x70" => "\xEB\x83\xA6", + "\x86\x71" => "\xEB\x83\xA7", + "\x86\x72" => "\xEB\x83\xA8", + "\x86\x73" => "\xEB\x83\xA9", + "\x86\x74" => "\xEB\x83\xAA", + "\x86\x75" => "\xEB\x83\xAB", + "\x86\x76" => "\xEB\x83\xAC", + "\x86\x77" => "\xEB\x83\xAD", + "\x86\x78" => "\xEB\x83\xAE", + "\x86\x79" => "\xEB\x83\xAF", + "\x86\x7A" => "\xEB\x83\xB0", + "\x86\x81" => "\xEB\x83\xB1", + "\x86\x82" => "\xEB\x83\xB2", + "\x86\x83" => "\xEB\x83\xB3", + "\x86\x84" => "\xEB\x83\xB4", + "\x86\x85" => "\xEB\x83\xB5", + "\x86\x86" => "\xEB\x83\xB6", + "\x86\x87" => "\xEB\x83\xB7", + "\x86\x88" => "\xEB\x83\xB8", + "\x86\x89" => "\xEB\x83\xB9", + "\x86\x8A" => "\xEB\x83\xBA", + "\x86\x8B" => "\xEB\x83\xBB", + "\x86\x8C" => "\xEB\x83\xBC", + "\x86\x8D" => "\xEB\x83\xBD", + "\x86\x8E" => "\xEB\x83\xBE", + "\x86\x8F" => "\xEB\x83\xBF", + "\x86\x90" => "\xEB\x84\x80", + "\x86\x91" => "\xEB\x84\x81", + "\x86\x92" => "\xEB\x84\x82", + "\x86\x93" => "\xEB\x84\x83", + "\x86\x94" => "\xEB\x84\x84", + "\x86\x95" => "\xEB\x84\x85", + "\x86\x96" => "\xEB\x84\x86", + "\x86\x97" => "\xEB\x84\x87", + "\x86\x98" => "\xEB\x84\x8A", + "\x86\x99" => "\xEB\x84\x8D", + "\x86\x9A" => "\xEB\x84\x8E", + "\x86\x9B" => "\xEB\x84\x8F", + "\x86\x9C" => "\xEB\x84\x91", + "\x86\x9D" => "\xEB\x84\x94", + "\x86\x9E" => "\xEB\x84\x95", + "\x86\x9F" => "\xEB\x84\x96", + "\x86\xA0" => "\xEB\x84\x97", + "\x86\xA1" => "\xEB\x84\x9A", + "\x86\xA2" => "\xEB\x84\x9E", + "\x86\xA3" => "\xEB\x84\x9F", + "\x86\xA4" => "\xEB\x84\xA0", + "\x86\xA5" => "\xEB\x84\xA1", + "\x86\xA6" => "\xEB\x84\xA2", + "\x86\xA7" => "\xEB\x84\xA6", + "\x86\xA8" => "\xEB\x84\xA7", + "\x86\xA9" => "\xEB\x84\xA9", + "\x86\xAA" => "\xEB\x84\xAA", + "\x86\xAB" => "\xEB\x84\xAB", + "\x86\xAC" => "\xEB\x84\xAD", + "\x86\xAD" => "\xEB\x84\xAE", + "\x86\xAE" => "\xEB\x84\xAF", + "\x86\xAF" => "\xEB\x84\xB0", + "\x86\xB0" => "\xEB\x84\xB1", + "\x86\xB1" => "\xEB\x84\xB2", + "\x86\xB2" => "\xEB\x84\xB3", + "\x86\xB3" => "\xEB\x84\xB6", + "\x86\xB4" => "\xEB\x84\xBA", + "\x86\xB5" => "\xEB\x84\xBB", + "\x86\xB6" => "\xEB\x84\xBC", + "\x86\xB7" => "\xEB\x84\xBD", + "\x86\xB8" => "\xEB\x84\xBE", + "\x86\xB9" => "\xEB\x84\xBF", + "\x86\xBA" => "\xEB\x85\x82", + "\x86\xBB" => "\xEB\x85\x83", + "\x86\xBC" => "\xEB\x85\x85", + "\x86\xBD" => "\xEB\x85\x86", + "\x86\xBE" => "\xEB\x85\x87", + "\x86\xBF" => "\xEB\x85\x89", + "\x86\xC0" => "\xEB\x85\x8A", + "\x86\xC1" => "\xEB\x85\x8B", + "\x86\xC2" => "\xEB\x85\x8C", + "\x86\xC3" => "\xEB\x85\x8D", + "\x86\xC4" => "\xEB\x85\x8E", + "\x86\xC5" => "\xEB\x85\x8F", + "\x86\xC6" => "\xEB\x85\x92", + "\x86\xC7" => "\xEB\x85\x93", + "\x86\xC8" => "\xEB\x85\x96", + "\x86\xC9" => "\xEB\x85\x97", + "\x86\xCA" => "\xEB\x85\x99", + "\x86\xCB" => "\xEB\x85\x9A", + "\x86\xCC" => "\xEB\x85\x9B", + "\x86\xCD" => "\xEB\x85\x9D", + "\x86\xCE" => "\xEB\x85\x9E", + "\x86\xCF" => "\xEB\x85\x9F", + "\x86\xD0" => "\xEB\x85\xA1", + "\x86\xD1" => "\xEB\x85\xA2", + "\x86\xD2" => "\xEB\x85\xA3", + "\x86\xD3" => "\xEB\x85\xA4", + "\x86\xD4" => "\xEB\x85\xA5", + "\x86\xD5" => "\xEB\x85\xA6", + "\x86\xD6" => "\xEB\x85\xA7", + "\x86\xD7" => "\xEB\x85\xA8", + "\x86\xD8" => "\xEB\x85\xA9", + "\x86\xD9" => "\xEB\x85\xAA", + "\x86\xDA" => "\xEB\x85\xAB", + "\x86\xDB" => "\xEB\x85\xAC", + "\x86\xDC" => "\xEB\x85\xAD", + "\x86\xDD" => "\xEB\x85\xAE", + "\x86\xDE" => "\xEB\x85\xAF", + "\x86\xDF" => "\xEB\x85\xB0", + "\x86\xE0" => "\xEB\x85\xB1", + "\x86\xE1" => "\xEB\x85\xB2", + "\x86\xE2" => "\xEB\x85\xB3", + "\x86\xE3" => "\xEB\x85\xB4", + "\x86\xE4" => "\xEB\x85\xB5", + "\x86\xE5" => "\xEB\x85\xB6", + "\x86\xE6" => "\xEB\x85\xB7", + "\x86\xE7" => "\xEB\x85\xBA", + "\x86\xE8" => "\xEB\x85\xBB", + "\x86\xE9" => "\xEB\x85\xBD", + "\x86\xEA" => "\xEB\x85\xBE", + "\x86\xEB" => "\xEB\x85\xBF", + "\x86\xEC" => "\xEB\x86\x81", + "\x86\xED" => "\xEB\x86\x83", + "\x86\xEE" => "\xEB\x86\x84", + "\x86\xEF" => "\xEB\x86\x85", + "\x86\xF0" => "\xEB\x86\x86", + "\x86\xF1" => "\xEB\x86\x87", + "\x86\xF2" => "\xEB\x86\x8A", + "\x86\xF3" => "\xEB\x86\x8C", + "\x86\xF4" => "\xEB\x86\x8E", + "\x86\xF5" => "\xEB\x86\x8F", + "\x86\xF6" => "\xEB\x86\x90", + "\x86\xF7" => "\xEB\x86\x91", + "\x86\xF8" => "\xEB\x86\x95", + "\x86\xF9" => "\xEB\x86\x96", + "\x86\xFA" => "\xEB\x86\x97", + "\x86\xFB" => "\xEB\x86\x99", + "\x86\xFC" => "\xEB\x86\x9A", + "\x86\xFD" => "\xEB\x86\x9B", + "\x86\xFE" => "\xEB\x86\x9D", + "\x87\x41" => "\xEB\x86\x9E", + "\x87\x42" => "\xEB\x86\x9F", + "\x87\x43" => "\xEB\x86\xA0", + "\x87\x44" => "\xEB\x86\xA1", + "\x87\x45" => "\xEB\x86\xA2", + "\x87\x46" => "\xEB\x86\xA3", + "\x87\x47" => "\xEB\x86\xA4", + "\x87\x48" => "\xEB\x86\xA5", + "\x87\x49" => "\xEB\x86\xA6", + "\x87\x4A" => "\xEB\x86\xA7", + "\x87\x4B" => "\xEB\x86\xA9", + "\x87\x4C" => "\xEB\x86\xAA", + "\x87\x4D" => "\xEB\x86\xAB", + "\x87\x4E" => "\xEB\x86\xAC", + "\x87\x4F" => "\xEB\x86\xAD", + "\x87\x50" => "\xEB\x86\xAE", + "\x87\x51" => "\xEB\x86\xAF", + "\x87\x52" => "\xEB\x86\xB0", + "\x87\x53" => "\xEB\x86\xB1", + "\x87\x54" => "\xEB\x86\xB2", + "\x87\x55" => "\xEB\x86\xB3", + "\x87\x56" => "\xEB\x86\xB4", + "\x87\x57" => "\xEB\x86\xB5", + "\x87\x58" => "\xEB\x86\xB6", + "\x87\x59" => "\xEB\x86\xB7", + "\x87\x5A" => "\xEB\x86\xB8", + "\x87\x61" => "\xEB\x86\xB9", + "\x87\x62" => "\xEB\x86\xBA", + "\x87\x63" => "\xEB\x86\xBB", + "\x87\x64" => "\xEB\x86\xBC", + "\x87\x65" => "\xEB\x86\xBD", + "\x87\x66" => "\xEB\x86\xBE", + "\x87\x67" => "\xEB\x86\xBF", + "\x87\x68" => "\xEB\x87\x80", + "\x87\x69" => "\xEB\x87\x81", + "\x87\x6A" => "\xEB\x87\x82", + "\x87\x6B" => "\xEB\x87\x83", + "\x87\x6C" => "\xEB\x87\x84", + "\x87\x6D" => "\xEB\x87\x85", + "\x87\x6E" => "\xEB\x87\x86", + "\x87\x6F" => "\xEB\x87\x87", + "\x87\x70" => "\xEB\x87\x88", + "\x87\x71" => "\xEB\x87\x89", + "\x87\x72" => "\xEB\x87\x8A", + "\x87\x73" => "\xEB\x87\x8B", + "\x87\x74" => "\xEB\x87\x8D", + "\x87\x75" => "\xEB\x87\x8E", + "\x87\x76" => "\xEB\x87\x8F", + "\x87\x77" => "\xEB\x87\x91", + "\x87\x78" => "\xEB\x87\x92", + "\x87\x79" => "\xEB\x87\x93", + "\x87\x7A" => "\xEB\x87\x95", + "\x87\x81" => "\xEB\x87\x96", + "\x87\x82" => "\xEB\x87\x97", + "\x87\x83" => "\xEB\x87\x98", + "\x87\x84" => "\xEB\x87\x99", + "\x87\x85" => "\xEB\x87\x9A", + "\x87\x86" => "\xEB\x87\x9B", + "\x87\x87" => "\xEB\x87\x9E", + "\x87\x88" => "\xEB\x87\xA0", + "\x87\x89" => "\xEB\x87\xA1", + "\x87\x8A" => "\xEB\x87\xA2", + "\x87\x8B" => "\xEB\x87\xA3", + "\x87\x8C" => "\xEB\x87\xA4", + "\x87\x8D" => "\xEB\x87\xA5", + "\x87\x8E" => "\xEB\x87\xA6", + "\x87\x8F" => "\xEB\x87\xA7", + "\x87\x90" => "\xEB\x87\xAA", + "\x87\x91" => "\xEB\x87\xAB", + "\x87\x92" => "\xEB\x87\xAD", + "\x87\x93" => "\xEB\x87\xAE", + "\x87\x94" => "\xEB\x87\xAF", + "\x87\x95" => "\xEB\x87\xB1", + "\x87\x96" => "\xEB\x87\xB2", + "\x87\x97" => "\xEB\x87\xB3", + "\x87\x98" => "\xEB\x87\xB4", + "\x87\x99" => "\xEB\x87\xB5", + "\x87\x9A" => "\xEB\x87\xB6", + "\x87\x9B" => "\xEB\x87\xB7", + "\x87\x9C" => "\xEB\x87\xB8", + "\x87\x9D" => "\xEB\x87\xBA", + "\x87\x9E" => "\xEB\x87\xBC", + "\x87\x9F" => "\xEB\x87\xBE", + "\x87\xA0" => "\xEB\x87\xBF", + "\x87\xA1" => "\xEB\x88\x80", + "\x87\xA2" => "\xEB\x88\x81", + "\x87\xA3" => "\xEB\x88\x82", + "\x87\xA4" => "\xEB\x88\x83", + "\x87\xA5" => "\xEB\x88\x86", + "\x87\xA6" => "\xEB\x88\x87", + "\x87\xA7" => "\xEB\x88\x89", + "\x87\xA8" => "\xEB\x88\x8A", + "\x87\xA9" => "\xEB\x88\x8D", + "\x87\xAA" => "\xEB\x88\x8E", + "\x87\xAB" => "\xEB\x88\x8F", + "\x87\xAC" => "\xEB\x88\x90", + "\x87\xAD" => "\xEB\x88\x91", + "\x87\xAE" => "\xEB\x88\x92", + "\x87\xAF" => "\xEB\x88\x93", + "\x87\xB0" => "\xEB\x88\x96", + "\x87\xB1" => "\xEB\x88\x98", + "\x87\xB2" => "\xEB\x88\x9A", + "\x87\xB3" => "\xEB\x88\x9B", + "\x87\xB4" => "\xEB\x88\x9C", + "\x87\xB5" => "\xEB\x88\x9D", + "\x87\xB6" => "\xEB\x88\x9E", + "\x87\xB7" => "\xEB\x88\x9F", + "\x87\xB8" => "\xEB\x88\xA1", + "\x87\xB9" => "\xEB\x88\xA2", + "\x87\xBA" => "\xEB\x88\xA3", + "\x87\xBB" => "\xEB\x88\xA4", + "\x87\xBC" => "\xEB\x88\xA5", + "\x87\xBD" => "\xEB\x88\xA6", + "\x87\xBE" => "\xEB\x88\xA7", + "\x87\xBF" => "\xEB\x88\xA8", + "\x87\xC0" => "\xEB\x88\xA9", + "\x87\xC1" => "\xEB\x88\xAA", + "\x87\xC2" => "\xEB\x88\xAB", + "\x87\xC3" => "\xEB\x88\xAC", + "\x87\xC4" => "\xEB\x88\xAD", + "\x87\xC5" => "\xEB\x88\xAE", + "\x87\xC6" => "\xEB\x88\xAF", + "\x87\xC7" => "\xEB\x88\xB0", + "\x87\xC8" => "\xEB\x88\xB1", + "\x87\xC9" => "\xEB\x88\xB2", + "\x87\xCA" => "\xEB\x88\xB3", + "\x87\xCB" => "\xEB\x88\xB5", + "\x87\xCC" => "\xEB\x88\xB6", + "\x87\xCD" => "\xEB\x88\xB7", + "\x87\xCE" => "\xEB\x88\xB8", + "\x87\xCF" => "\xEB\x88\xB9", + "\x87\xD0" => "\xEB\x88\xBA", + "\x87\xD1" => "\xEB\x88\xBB", + "\x87\xD2" => "\xEB\x88\xBD", + "\x87\xD3" => "\xEB\x88\xBE", + "\x87\xD4" => "\xEB\x88\xBF", + "\x87\xD5" => "\xEB\x89\x80", + "\x87\xD6" => "\xEB\x89\x81", + "\x87\xD7" => "\xEB\x89\x82", + "\x87\xD8" => "\xEB\x89\x83", + "\x87\xD9" => "\xEB\x89\x84", + "\x87\xDA" => "\xEB\x89\x85", + "\x87\xDB" => "\xEB\x89\x86", + "\x87\xDC" => "\xEB\x89\x87", + "\x87\xDD" => "\xEB\x89\x88", + "\x87\xDE" => "\xEB\x89\x89", + "\x87\xDF" => "\xEB\x89\x8A", + "\x87\xE0" => "\xEB\x89\x8B", + "\x87\xE1" => "\xEB\x89\x8C", + "\x87\xE2" => "\xEB\x89\x8D", + "\x87\xE3" => "\xEB\x89\x8E", + "\x87\xE4" => "\xEB\x89\x8F", + "\x87\xE5" => "\xEB\x89\x90", + "\x87\xE6" => "\xEB\x89\x91", + "\x87\xE7" => "\xEB\x89\x92", + "\x87\xE8" => "\xEB\x89\x93", + "\x87\xE9" => "\xEB\x89\x94", + "\x87\xEA" => "\xEB\x89\x95", + "\x87\xEB" => "\xEB\x89\x96", + "\x87\xEC" => "\xEB\x89\x97", + "\x87\xED" => "\xEB\x89\x99", + "\x87\xEE" => "\xEB\x89\x9A", + "\x87\xEF" => "\xEB\x89\x9B", + "\x87\xF0" => "\xEB\x89\x9D", + "\x87\xF1" => "\xEB\x89\x9E", + "\x87\xF2" => "\xEB\x89\x9F", + "\x87\xF3" => "\xEB\x89\xA1", + "\x87\xF4" => "\xEB\x89\xA2", + "\x87\xF5" => "\xEB\x89\xA3", + "\x87\xF6" => "\xEB\x89\xA4", + "\x87\xF7" => "\xEB\x89\xA5", + "\x87\xF8" => "\xEB\x89\xA6", + "\x87\xF9" => "\xEB\x89\xA7", + "\x87\xFA" => "\xEB\x89\xAA", + "\x87\xFB" => "\xEB\x89\xAB", + "\x87\xFC" => "\xEB\x89\xAC", + "\x87\xFD" => "\xEB\x89\xAD", + "\x87\xFE" => "\xEB\x89\xAE", + "\x88\x41" => "\xEB\x89\xAF", + "\x88\x42" => "\xEB\x89\xB0", + "\x88\x43" => "\xEB\x89\xB1", + "\x88\x44" => "\xEB\x89\xB2", + "\x88\x45" => "\xEB\x89\xB3", + "\x88\x46" => "\xEB\x89\xB6", + "\x88\x47" => "\xEB\x89\xB7", + "\x88\x48" => "\xEB\x89\xB8", + "\x88\x49" => "\xEB\x89\xB9", + "\x88\x4A" => "\xEB\x89\xBA", + "\x88\x4B" => "\xEB\x89\xBB", + "\x88\x4C" => "\xEB\x89\xBD", + "\x88\x4D" => "\xEB\x89\xBE", + "\x88\x4E" => "\xEB\x89\xBF", + "\x88\x4F" => "\xEB\x8A\x80", + "\x88\x50" => "\xEB\x8A\x81", + "\x88\x51" => "\xEB\x8A\x82", + "\x88\x52" => "\xEB\x8A\x83", + "\x88\x53" => "\xEB\x8A\x86", + "\x88\x54" => "\xEB\x8A\x87", + "\x88\x55" => "\xEB\x8A\x88", + "\x88\x56" => "\xEB\x8A\x8A", + "\x88\x57" => "\xEB\x8A\x8B", + "\x88\x58" => "\xEB\x8A\x8C", + "\x88\x59" => "\xEB\x8A\x8D", + "\x88\x5A" => "\xEB\x8A\x8E", + "\x88\x61" => "\xEB\x8A\x8F", + "\x88\x62" => "\xEB\x8A\x92", + "\x88\x63" => "\xEB\x8A\x93", + "\x88\x64" => "\xEB\x8A\x95", + "\x88\x65" => "\xEB\x8A\x96", + "\x88\x66" => "\xEB\x8A\x97", + "\x88\x67" => "\xEB\x8A\x9B", + "\x88\x68" => "\xEB\x8A\x9C", + "\x88\x69" => "\xEB\x8A\x9D", + "\x88\x6A" => "\xEB\x8A\x9E", + "\x88\x6B" => "\xEB\x8A\x9F", + "\x88\x6C" => "\xEB\x8A\xA2", + "\x88\x6D" => "\xEB\x8A\xA4", + "\x88\x6E" => "\xEB\x8A\xA7", + "\x88\x6F" => "\xEB\x8A\xA8", + "\x88\x70" => "\xEB\x8A\xA9", + "\x88\x71" => "\xEB\x8A\xAB", + "\x88\x72" => "\xEB\x8A\xAD", + "\x88\x73" => "\xEB\x8A\xAE", + "\x88\x74" => "\xEB\x8A\xAF", + "\x88\x75" => "\xEB\x8A\xB1", + "\x88\x76" => "\xEB\x8A\xB2", + "\x88\x77" => "\xEB\x8A\xB3", + "\x88\x78" => "\xEB\x8A\xB5", + "\x88\x79" => "\xEB\x8A\xB6", + "\x88\x7A" => "\xEB\x8A\xB7", + "\x88\x81" => "\xEB\x8A\xB8", + "\x88\x82" => "\xEB\x8A\xB9", + "\x88\x83" => "\xEB\x8A\xBA", + "\x88\x84" => "\xEB\x8A\xBB", + "\x88\x85" => "\xEB\x8A\xBC", + "\x88\x86" => "\xEB\x8A\xBD", + "\x88\x87" => "\xEB\x8A\xBE", + "\x88\x88" => "\xEB\x8A\xBF", + "\x88\x89" => "\xEB\x8B\x80", + "\x88\x8A" => "\xEB\x8B\x81", + "\x88\x8B" => "\xEB\x8B\x82", + "\x88\x8C" => "\xEB\x8B\x83", + "\x88\x8D" => "\xEB\x8B\x84", + "\x88\x8E" => "\xEB\x8B\x85", + "\x88\x8F" => "\xEB\x8B\x86", + "\x88\x90" => "\xEB\x8B\x87", + "\x88\x91" => "\xEB\x8B\x8A", + "\x88\x92" => "\xEB\x8B\x8B", + "\x88\x93" => "\xEB\x8B\x8D", + "\x88\x94" => "\xEB\x8B\x8E", + "\x88\x95" => "\xEB\x8B\x8F", + "\x88\x96" => "\xEB\x8B\x91", + "\x88\x97" => "\xEB\x8B\x93", + "\x88\x98" => "\xEB\x8B\x94", + "\x88\x99" => "\xEB\x8B\x95", + "\x88\x9A" => "\xEB\x8B\x96", + "\x88\x9B" => "\xEB\x8B\x97", + "\x88\x9C" => "\xEB\x8B\x9A", + "\x88\x9D" => "\xEB\x8B\x9C", + "\x88\x9E" => "\xEB\x8B\x9E", + "\x88\x9F" => "\xEB\x8B\x9F", + "\x88\xA0" => "\xEB\x8B\xA0", + "\x88\xA1" => "\xEB\x8B\xA1", + "\x88\xA2" => "\xEB\x8B\xA3", + "\x88\xA3" => "\xEB\x8B\xA7", + "\x88\xA4" => "\xEB\x8B\xA9", + "\x88\xA5" => "\xEB\x8B\xAA", + "\x88\xA6" => "\xEB\x8B\xB0", + "\x88\xA7" => "\xEB\x8B\xB1", + "\x88\xA8" => "\xEB\x8B\xB2", + "\x88\xA9" => "\xEB\x8B\xB6", + "\x88\xAA" => "\xEB\x8B\xBC", + "\x88\xAB" => "\xEB\x8B\xBD", + "\x88\xAC" => "\xEB\x8B\xBE", + "\x88\xAD" => "\xEB\x8C\x82", + "\x88\xAE" => "\xEB\x8C\x83", + "\x88\xAF" => "\xEB\x8C\x85", + "\x88\xB0" => "\xEB\x8C\x86", + "\x88\xB1" => "\xEB\x8C\x87", + "\x88\xB2" => "\xEB\x8C\x89", + "\x88\xB3" => "\xEB\x8C\x8A", + "\x88\xB4" => "\xEB\x8C\x8B", + "\x88\xB5" => "\xEB\x8C\x8C", + "\x88\xB6" => "\xEB\x8C\x8D", + "\x88\xB7" => "\xEB\x8C\x8E", + "\x88\xB8" => "\xEB\x8C\x8F", + "\x88\xB9" => "\xEB\x8C\x92", + "\x88\xBA" => "\xEB\x8C\x96", + "\x88\xBB" => "\xEB\x8C\x97", + "\x88\xBC" => "\xEB\x8C\x98", + "\x88\xBD" => "\xEB\x8C\x99", + "\x88\xBE" => "\xEB\x8C\x9A", + "\x88\xBF" => "\xEB\x8C\x9B", + "\x88\xC0" => "\xEB\x8C\x9D", + "\x88\xC1" => "\xEB\x8C\x9E", + "\x88\xC2" => "\xEB\x8C\x9F", + "\x88\xC3" => "\xEB\x8C\xA0", + "\x88\xC4" => "\xEB\x8C\xA1", + "\x88\xC5" => "\xEB\x8C\xA2", + "\x88\xC6" => "\xEB\x8C\xA3", + "\x88\xC7" => "\xEB\x8C\xA4", + "\x88\xC8" => "\xEB\x8C\xA5", + "\x88\xC9" => "\xEB\x8C\xA6", + "\x88\xCA" => "\xEB\x8C\xA7", + "\x88\xCB" => "\xEB\x8C\xA8", + "\x88\xCC" => "\xEB\x8C\xA9", + "\x88\xCD" => "\xEB\x8C\xAA", + "\x88\xCE" => "\xEB\x8C\xAB", + "\x88\xCF" => "\xEB\x8C\xAC", + "\x88\xD0" => "\xEB\x8C\xAD", + "\x88\xD1" => "\xEB\x8C\xAE", + "\x88\xD2" => "\xEB\x8C\xAF", + "\x88\xD3" => "\xEB\x8C\xB0", + "\x88\xD4" => "\xEB\x8C\xB1", + "\x88\xD5" => "\xEB\x8C\xB2", + "\x88\xD6" => "\xEB\x8C\xB3", + "\x88\xD7" => "\xEB\x8C\xB4", + "\x88\xD8" => "\xEB\x8C\xB5", + "\x88\xD9" => "\xEB\x8C\xB6", + "\x88\xDA" => "\xEB\x8C\xB7", + "\x88\xDB" => "\xEB\x8C\xB8", + "\x88\xDC" => "\xEB\x8C\xB9", + "\x88\xDD" => "\xEB\x8C\xBA", + "\x88\xDE" => "\xEB\x8C\xBB", + "\x88\xDF" => "\xEB\x8C\xBC", + "\x88\xE0" => "\xEB\x8C\xBD", + "\x88\xE1" => "\xEB\x8C\xBE", + "\x88\xE2" => "\xEB\x8C\xBF", + "\x88\xE3" => "\xEB\x8D\x80", + "\x88\xE4" => "\xEB\x8D\x81", + "\x88\xE5" => "\xEB\x8D\x82", + "\x88\xE6" => "\xEB\x8D\x83", + "\x88\xE7" => "\xEB\x8D\x84", + "\x88\xE8" => "\xEB\x8D\x85", + "\x88\xE9" => "\xEB\x8D\x86", + "\x88\xEA" => "\xEB\x8D\x87", + "\x88\xEB" => "\xEB\x8D\x88", + "\x88\xEC" => "\xEB\x8D\x89", + "\x88\xED" => "\xEB\x8D\x8A", + "\x88\xEE" => "\xEB\x8D\x8B", + "\x88\xEF" => "\xEB\x8D\x8C", + "\x88\xF0" => "\xEB\x8D\x8D", + "\x88\xF1" => "\xEB\x8D\x8E", + "\x88\xF2" => "\xEB\x8D\x8F", + "\x88\xF3" => "\xEB\x8D\x90", + "\x88\xF4" => "\xEB\x8D\x91", + "\x88\xF5" => "\xEB\x8D\x92", + "\x88\xF6" => "\xEB\x8D\x93", + "\x88\xF7" => "\xEB\x8D\x97", + "\x88\xF8" => "\xEB\x8D\x99", + "\x88\xF9" => "\xEB\x8D\x9A", + "\x88\xFA" => "\xEB\x8D\x9D", + "\x88\xFB" => "\xEB\x8D\xA0", + "\x88\xFC" => "\xEB\x8D\xA1", + "\x88\xFD" => "\xEB\x8D\xA2", + "\x88\xFE" => "\xEB\x8D\xA3", + "\x89\x41" => "\xEB\x8D\xA6", + "\x89\x42" => "\xEB\x8D\xA8", + "\x89\x43" => "\xEB\x8D\xAA", + "\x89\x44" => "\xEB\x8D\xAC", + "\x89\x45" => "\xEB\x8D\xAD", + "\x89\x46" => "\xEB\x8D\xAF", + "\x89\x47" => "\xEB\x8D\xB2", + "\x89\x48" => "\xEB\x8D\xB3", + "\x89\x49" => "\xEB\x8D\xB5", + "\x89\x4A" => "\xEB\x8D\xB6", + "\x89\x4B" => "\xEB\x8D\xB7", + "\x89\x4C" => "\xEB\x8D\xB9", + "\x89\x4D" => "\xEB\x8D\xBA", + "\x89\x4E" => "\xEB\x8D\xBB", + "\x89\x4F" => "\xEB\x8D\xBC", + "\x89\x50" => "\xEB\x8D\xBD", + "\x89\x51" => "\xEB\x8D\xBE", + "\x89\x52" => "\xEB\x8D\xBF", + "\x89\x53" => "\xEB\x8E\x82", + "\x89\x54" => "\xEB\x8E\x86", + "\x89\x55" => "\xEB\x8E\x87", + "\x89\x56" => "\xEB\x8E\x88", + "\x89\x57" => "\xEB\x8E\x89", + "\x89\x58" => "\xEB\x8E\x8A", + "\x89\x59" => "\xEB\x8E\x8B", + "\x89\x5A" => "\xEB\x8E\x8D", + "\x89\x61" => "\xEB\x8E\x8E", + "\x89\x62" => "\xEB\x8E\x8F", + "\x89\x63" => "\xEB\x8E\x91", + "\x89\x64" => "\xEB\x8E\x92", + "\x89\x65" => "\xEB\x8E\x93", + "\x89\x66" => "\xEB\x8E\x95", + "\x89\x67" => "\xEB\x8E\x96", + "\x89\x68" => "\xEB\x8E\x97", + "\x89\x69" => "\xEB\x8E\x98", + "\x89\x6A" => "\xEB\x8E\x99", + "\x89\x6B" => "\xEB\x8E\x9A", + "\x89\x6C" => "\xEB\x8E\x9B", + "\x89\x6D" => "\xEB\x8E\x9C", + "\x89\x6E" => "\xEB\x8E\x9D", + "\x89\x6F" => "\xEB\x8E\x9E", + "\x89\x70" => "\xEB\x8E\x9F", + "\x89\x71" => "\xEB\x8E\xA2", + "\x89\x72" => "\xEB\x8E\xA3", + "\x89\x73" => "\xEB\x8E\xA4", + "\x89\x74" => "\xEB\x8E\xA5", + "\x89\x75" => "\xEB\x8E\xA6", + "\x89\x76" => "\xEB\x8E\xA7", + "\x89\x77" => "\xEB\x8E\xA9", + "\x89\x78" => "\xEB\x8E\xAA", + "\x89\x79" => "\xEB\x8E\xAB", + "\x89\x7A" => "\xEB\x8E\xAD", + "\x89\x81" => "\xEB\x8E\xAE", + "\x89\x82" => "\xEB\x8E\xAF", + "\x89\x83" => "\xEB\x8E\xB0", + "\x89\x84" => "\xEB\x8E\xB1", + "\x89\x85" => "\xEB\x8E\xB2", + "\x89\x86" => "\xEB\x8E\xB3", + "\x89\x87" => "\xEB\x8E\xB4", + "\x89\x88" => "\xEB\x8E\xB5", + "\x89\x89" => "\xEB\x8E\xB6", + "\x89\x8A" => "\xEB\x8E\xB7", + "\x89\x8B" => "\xEB\x8E\xB8", + "\x89\x8C" => "\xEB\x8E\xB9", + "\x89\x8D" => "\xEB\x8E\xBA", + "\x89\x8E" => "\xEB\x8E\xBB", + "\x89\x8F" => "\xEB\x8E\xBC", + "\x89\x90" => "\xEB\x8E\xBD", + "\x89\x91" => "\xEB\x8E\xBE", + "\x89\x92" => "\xEB\x8E\xBF", + "\x89\x93" => "\xEB\x8F\x80", + "\x89\x94" => "\xEB\x8F\x81", + "\x89\x95" => "\xEB\x8F\x82", + "\x89\x96" => "\xEB\x8F\x83", + "\x89\x97" => "\xEB\x8F\x86", + "\x89\x98" => "\xEB\x8F\x87", + "\x89\x99" => "\xEB\x8F\x89", + "\x89\x9A" => "\xEB\x8F\x8A", + "\x89\x9B" => "\xEB\x8F\x8D", + "\x89\x9C" => "\xEB\x8F\x8F", + "\x89\x9D" => "\xEB\x8F\x91", + "\x89\x9E" => "\xEB\x8F\x92", + "\x89\x9F" => "\xEB\x8F\x93", + "\x89\xA0" => "\xEB\x8F\x96", + "\x89\xA1" => "\xEB\x8F\x98", + "\x89\xA2" => "\xEB\x8F\x9A", + "\x89\xA3" => "\xEB\x8F\x9C", + "\x89\xA4" => "\xEB\x8F\x9E", + "\x89\xA5" => "\xEB\x8F\x9F", + "\x89\xA6" => "\xEB\x8F\xA1", + "\x89\xA7" => "\xEB\x8F\xA2", + "\x89\xA8" => "\xEB\x8F\xA3", + "\x89\xA9" => "\xEB\x8F\xA5", + "\x89\xAA" => "\xEB\x8F\xA6", + "\x89\xAB" => "\xEB\x8F\xA7", + "\x89\xAC" => "\xEB\x8F\xA9", + "\x89\xAD" => "\xEB\x8F\xAA", + "\x89\xAE" => "\xEB\x8F\xAB", + "\x89\xAF" => "\xEB\x8F\xAC", + "\x89\xB0" => "\xEB\x8F\xAD", + "\x89\xB1" => "\xEB\x8F\xAE", + "\x89\xB2" => "\xEB\x8F\xAF", + "\x89\xB3" => "\xEB\x8F\xB0", + "\x89\xB4" => "\xEB\x8F\xB1", + "\x89\xB5" => "\xEB\x8F\xB2", + "\x89\xB6" => "\xEB\x8F\xB3", + "\x89\xB7" => "\xEB\x8F\xB4", + "\x89\xB8" => "\xEB\x8F\xB5", + "\x89\xB9" => "\xEB\x8F\xB6", + "\x89\xBA" => "\xEB\x8F\xB7", + "\x89\xBB" => "\xEB\x8F\xB8", + "\x89\xBC" => "\xEB\x8F\xB9", + "\x89\xBD" => "\xEB\x8F\xBA", + "\x89\xBE" => "\xEB\x8F\xBB", + "\x89\xBF" => "\xEB\x8F\xBD", + "\x89\xC0" => "\xEB\x8F\xBE", + "\x89\xC1" => "\xEB\x8F\xBF", + "\x89\xC2" => "\xEB\x90\x80", + "\x89\xC3" => "\xEB\x90\x81", + "\x89\xC4" => "\xEB\x90\x82", + "\x89\xC5" => "\xEB\x90\x83", + "\x89\xC6" => "\xEB\x90\x84", + "\x89\xC7" => "\xEB\x90\x85", + "\x89\xC8" => "\xEB\x90\x86", + "\x89\xC9" => "\xEB\x90\x87", + "\x89\xCA" => "\xEB\x90\x88", + "\x89\xCB" => "\xEB\x90\x89", + "\x89\xCC" => "\xEB\x90\x8A", + "\x89\xCD" => "\xEB\x90\x8B", + "\x89\xCE" => "\xEB\x90\x8C", + "\x89\xCF" => "\xEB\x90\x8D", + "\x89\xD0" => "\xEB\x90\x8E", + "\x89\xD1" => "\xEB\x90\x8F", + "\x89\xD2" => "\xEB\x90\x91", + "\x89\xD3" => "\xEB\x90\x92", + "\x89\xD4" => "\xEB\x90\x93", + "\x89\xD5" => "\xEB\x90\x94", + "\x89\xD6" => "\xEB\x90\x95", + "\x89\xD7" => "\xEB\x90\x96", + "\x89\xD8" => "\xEB\x90\x97", + "\x89\xD9" => "\xEB\x90\x99", + "\x89\xDA" => "\xEB\x90\x9A", + "\x89\xDB" => "\xEB\x90\x9B", + "\x89\xDC" => "\xEB\x90\x9D", + "\x89\xDD" => "\xEB\x90\x9E", + "\x89\xDE" => "\xEB\x90\x9F", + "\x89\xDF" => "\xEB\x90\xA1", + "\x89\xE0" => "\xEB\x90\xA2", + "\x89\xE1" => "\xEB\x90\xA3", + "\x89\xE2" => "\xEB\x90\xA4", + "\x89\xE3" => "\xEB\x90\xA5", + "\x89\xE4" => "\xEB\x90\xA6", + "\x89\xE5" => "\xEB\x90\xA7", + "\x89\xE6" => "\xEB\x90\xAA", + "\x89\xE7" => "\xEB\x90\xAC", + "\x89\xE8" => "\xEB\x90\xAD", + "\x89\xE9" => "\xEB\x90\xAE", + "\x89\xEA" => "\xEB\x90\xAF", + "\x89\xEB" => "\xEB\x90\xB0", + "\x89\xEC" => "\xEB\x90\xB1", + "\x89\xED" => "\xEB\x90\xB2", + "\x89\xEE" => "\xEB\x90\xB3", + "\x89\xEF" => "\xEB\x90\xB5", + "\x89\xF0" => "\xEB\x90\xB6", + "\x89\xF1" => "\xEB\x90\xB7", + "\x89\xF2" => "\xEB\x90\xB8", + "\x89\xF3" => "\xEB\x90\xB9", + "\x89\xF4" => "\xEB\x90\xBA", + "\x89\xF5" => "\xEB\x90\xBB", + "\x89\xF6" => "\xEB\x90\xBC", + "\x89\xF7" => "\xEB\x90\xBD", + "\x89\xF8" => "\xEB\x90\xBE", + "\x89\xF9" => "\xEB\x90\xBF", + "\x89\xFA" => "\xEB\x91\x80", + "\x89\xFB" => "\xEB\x91\x81", + "\x89\xFC" => "\xEB\x91\x82", + "\x89\xFD" => "\xEB\x91\x83", + "\x89\xFE" => "\xEB\x91\x84", + "\x8A\x41" => "\xEB\x91\x85", + "\x8A\x42" => "\xEB\x91\x86", + "\x8A\x43" => "\xEB\x91\x87", + "\x8A\x44" => "\xEB\x91\x88", + "\x8A\x45" => "\xEB\x91\x89", + "\x8A\x46" => "\xEB\x91\x8A", + "\x8A\x47" => "\xEB\x91\x8B", + "\x8A\x48" => "\xEB\x91\x8C", + "\x8A\x49" => "\xEB\x91\x8D", + "\x8A\x4A" => "\xEB\x91\x8E", + "\x8A\x4B" => "\xEB\x91\x8F", + "\x8A\x4C" => "\xEB\x91\x92", + "\x8A\x4D" => "\xEB\x91\x93", + "\x8A\x4E" => "\xEB\x91\x95", + "\x8A\x4F" => "\xEB\x91\x96", + "\x8A\x50" => "\xEB\x91\x97", + "\x8A\x51" => "\xEB\x91\x99", + "\x8A\x52" => "\xEB\x91\x9A", + "\x8A\x53" => "\xEB\x91\x9B", + "\x8A\x54" => "\xEB\x91\x9C", + "\x8A\x55" => "\xEB\x91\x9D", + "\x8A\x56" => "\xEB\x91\x9E", + "\x8A\x57" => "\xEB\x91\x9F", + "\x8A\x58" => "\xEB\x91\xA2", + "\x8A\x59" => "\xEB\x91\xA4", + "\x8A\x5A" => "\xEB\x91\xA6", + "\x8A\x61" => "\xEB\x91\xA7", + "\x8A\x62" => "\xEB\x91\xA8", + "\x8A\x63" => "\xEB\x91\xA9", + "\x8A\x64" => "\xEB\x91\xAA", + "\x8A\x65" => "\xEB\x91\xAB", + "\x8A\x66" => "\xEB\x91\xAD", + "\x8A\x67" => "\xEB\x91\xAE", + "\x8A\x68" => "\xEB\x91\xAF", + "\x8A\x69" => "\xEB\x91\xB0", + "\x8A\x6A" => "\xEB\x91\xB1", + "\x8A\x6B" => "\xEB\x91\xB2", + "\x8A\x6C" => "\xEB\x91\xB3", + "\x8A\x6D" => "\xEB\x91\xB4", + "\x8A\x6E" => "\xEB\x91\xB5", + "\x8A\x6F" => "\xEB\x91\xB6", + "\x8A\x70" => "\xEB\x91\xB7", + "\x8A\x71" => "\xEB\x91\xB8", + "\x8A\x72" => "\xEB\x91\xB9", + "\x8A\x73" => "\xEB\x91\xBA", + "\x8A\x74" => "\xEB\x91\xBB", + "\x8A\x75" => "\xEB\x91\xBC", + "\x8A\x76" => "\xEB\x91\xBD", + "\x8A\x77" => "\xEB\x91\xBE", + "\x8A\x78" => "\xEB\x91\xBF", + "\x8A\x79" => "\xEB\x92\x81", + "\x8A\x7A" => "\xEB\x92\x82", + "\x8A\x81" => "\xEB\x92\x83", + "\x8A\x82" => "\xEB\x92\x84", + "\x8A\x83" => "\xEB\x92\x85", + "\x8A\x84" => "\xEB\x92\x86", + "\x8A\x85" => "\xEB\x92\x87", + "\x8A\x86" => "\xEB\x92\x89", + "\x8A\x87" => "\xEB\x92\x8A", + "\x8A\x88" => "\xEB\x92\x8B", + "\x8A\x89" => "\xEB\x92\x8C", + "\x8A\x8A" => "\xEB\x92\x8D", + "\x8A\x8B" => "\xEB\x92\x8E", + "\x8A\x8C" => "\xEB\x92\x8F", + "\x8A\x8D" => "\xEB\x92\x90", + "\x8A\x8E" => "\xEB\x92\x91", + "\x8A\x8F" => "\xEB\x92\x92", + "\x8A\x90" => "\xEB\x92\x93", + "\x8A\x91" => "\xEB\x92\x94", + "\x8A\x92" => "\xEB\x92\x95", + "\x8A\x93" => "\xEB\x92\x96", + "\x8A\x94" => "\xEB\x92\x97", + "\x8A\x95" => "\xEB\x92\x98", + "\x8A\x96" => "\xEB\x92\x99", + "\x8A\x97" => "\xEB\x92\x9A", + "\x8A\x98" => "\xEB\x92\x9B", + "\x8A\x99" => "\xEB\x92\x9C", + "\x8A\x9A" => "\xEB\x92\x9E", + "\x8A\x9B" => "\xEB\x92\x9F", + "\x8A\x9C" => "\xEB\x92\xA0", + "\x8A\x9D" => "\xEB\x92\xA1", + "\x8A\x9E" => "\xEB\x92\xA2", + "\x8A\x9F" => "\xEB\x92\xA3", + "\x8A\xA0" => "\xEB\x92\xA5", + "\x8A\xA1" => "\xEB\x92\xA6", + "\x8A\xA2" => "\xEB\x92\xA7", + "\x8A\xA3" => "\xEB\x92\xA9", + "\x8A\xA4" => "\xEB\x92\xAA", + "\x8A\xA5" => "\xEB\x92\xAB", + "\x8A\xA6" => "\xEB\x92\xAD", + "\x8A\xA7" => "\xEB\x92\xAE", + "\x8A\xA8" => "\xEB\x92\xAF", + "\x8A\xA9" => "\xEB\x92\xB0", + "\x8A\xAA" => "\xEB\x92\xB1", + "\x8A\xAB" => "\xEB\x92\xB2", + "\x8A\xAC" => "\xEB\x92\xB3", + "\x8A\xAD" => "\xEB\x92\xB4", + "\x8A\xAE" => "\xEB\x92\xB6", + "\x8A\xAF" => "\xEB\x92\xB8", + "\x8A\xB0" => "\xEB\x92\xBA", + "\x8A\xB1" => "\xEB\x92\xBB", + "\x8A\xB2" => "\xEB\x92\xBC", + "\x8A\xB3" => "\xEB\x92\xBD", + "\x8A\xB4" => "\xEB\x92\xBE", + "\x8A\xB5" => "\xEB\x92\xBF", + "\x8A\xB6" => "\xEB\x93\x81", + "\x8A\xB7" => "\xEB\x93\x82", + "\x8A\xB8" => "\xEB\x93\x83", + "\x8A\xB9" => "\xEB\x93\x85", + "\x8A\xBA" => "\xEB\x93\x86", + "\x8A\xBB" => "\xEB\x93\x87", + "\x8A\xBC" => "\xEB\x93\x89", + "\x8A\xBD" => "\xEB\x93\x8A", + "\x8A\xBE" => "\xEB\x93\x8B", + "\x8A\xBF" => "\xEB\x93\x8C", + "\x8A\xC0" => "\xEB\x93\x8D", + "\x8A\xC1" => "\xEB\x93\x8E", + "\x8A\xC2" => "\xEB\x93\x8F", + "\x8A\xC3" => "\xEB\x93\x91", + "\x8A\xC4" => "\xEB\x93\x92", + "\x8A\xC5" => "\xEB\x93\x93", + "\x8A\xC6" => "\xEB\x93\x94", + "\x8A\xC7" => "\xEB\x93\x96", + "\x8A\xC8" => "\xEB\x93\x97", + "\x8A\xC9" => "\xEB\x93\x98", + "\x8A\xCA" => "\xEB\x93\x99", + "\x8A\xCB" => "\xEB\x93\x9A", + "\x8A\xCC" => "\xEB\x93\x9B", + "\x8A\xCD" => "\xEB\x93\x9E", + "\x8A\xCE" => "\xEB\x93\x9F", + "\x8A\xCF" => "\xEB\x93\xA1", + "\x8A\xD0" => "\xEB\x93\xA2", + "\x8A\xD1" => "\xEB\x93\xA5", + "\x8A\xD2" => "\xEB\x93\xA7", + "\x8A\xD3" => "\xEB\x93\xA8", + "\x8A\xD4" => "\xEB\x93\xA9", + "\x8A\xD5" => "\xEB\x93\xAA", + "\x8A\xD6" => "\xEB\x93\xAB", + "\x8A\xD7" => "\xEB\x93\xAE", + "\x8A\xD8" => "\xEB\x93\xB0", + "\x8A\xD9" => "\xEB\x93\xB2", + "\x8A\xDA" => "\xEB\x93\xB3", + "\x8A\xDB" => "\xEB\x93\xB4", + "\x8A\xDC" => "\xEB\x93\xB5", + "\x8A\xDD" => "\xEB\x93\xB6", + "\x8A\xDE" => "\xEB\x93\xB7", + "\x8A\xDF" => "\xEB\x93\xB9", + "\x8A\xE0" => "\xEB\x93\xBA", + "\x8A\xE1" => "\xEB\x93\xBB", + "\x8A\xE2" => "\xEB\x93\xBC", + "\x8A\xE3" => "\xEB\x93\xBD", + "\x8A\xE4" => "\xEB\x93\xBE", + "\x8A\xE5" => "\xEB\x93\xBF", + "\x8A\xE6" => "\xEB\x94\x80", + "\x8A\xE7" => "\xEB\x94\x81", + "\x8A\xE8" => "\xEB\x94\x82", + "\x8A\xE9" => "\xEB\x94\x83", + "\x8A\xEA" => "\xEB\x94\x84", + "\x8A\xEB" => "\xEB\x94\x85", + "\x8A\xEC" => "\xEB\x94\x86", + "\x8A\xED" => "\xEB\x94\x87", + "\x8A\xEE" => "\xEB\x94\x88", + "\x8A\xEF" => "\xEB\x94\x89", + "\x8A\xF0" => "\xEB\x94\x8A", + "\x8A\xF1" => "\xEB\x94\x8B", + "\x8A\xF2" => "\xEB\x94\x8C", + "\x8A\xF3" => "\xEB\x94\x8D", + "\x8A\xF4" => "\xEB\x94\x8E", + "\x8A\xF5" => "\xEB\x94\x8F", + "\x8A\xF6" => "\xEB\x94\x90", + "\x8A\xF7" => "\xEB\x94\x91", + "\x8A\xF8" => "\xEB\x94\x92", + "\x8A\xF9" => "\xEB\x94\x93", + "\x8A\xFA" => "\xEB\x94\x96", + "\x8A\xFB" => "\xEB\x94\x97", + "\x8A\xFC" => "\xEB\x94\x99", + "\x8A\xFD" => "\xEB\x94\x9A", + "\x8A\xFE" => "\xEB\x94\x9D", + "\x8B\x41" => "\xEB\x94\x9E", + "\x8B\x42" => "\xEB\x94\x9F", + "\x8B\x43" => "\xEB\x94\xA0", + "\x8B\x44" => "\xEB\x94\xA1", + "\x8B\x45" => "\xEB\x94\xA2", + "\x8B\x46" => "\xEB\x94\xA3", + "\x8B\x47" => "\xEB\x94\xA6", + "\x8B\x48" => "\xEB\x94\xAB", + "\x8B\x49" => "\xEB\x94\xAC", + "\x8B\x4A" => "\xEB\x94\xAD", + "\x8B\x4B" => "\xEB\x94\xAE", + "\x8B\x4C" => "\xEB\x94\xAF", + "\x8B\x4D" => "\xEB\x94\xB2", + "\x8B\x4E" => "\xEB\x94\xB3", + "\x8B\x4F" => "\xEB\x94\xB5", + "\x8B\x50" => "\xEB\x94\xB6", + "\x8B\x51" => "\xEB\x94\xB7", + "\x8B\x52" => "\xEB\x94\xB9", + "\x8B\x53" => "\xEB\x94\xBA", + "\x8B\x54" => "\xEB\x94\xBB", + "\x8B\x55" => "\xEB\x94\xBC", + "\x8B\x56" => "\xEB\x94\xBD", + "\x8B\x57" => "\xEB\x94\xBE", + "\x8B\x58" => "\xEB\x94\xBF", + "\x8B\x59" => "\xEB\x95\x82", + "\x8B\x5A" => "\xEB\x95\x86", + "\x8B\x61" => "\xEB\x95\x87", + "\x8B\x62" => "\xEB\x95\x88", + "\x8B\x63" => "\xEB\x95\x89", + "\x8B\x64" => "\xEB\x95\x8A", + "\x8B\x65" => "\xEB\x95\x8E", + "\x8B\x66" => "\xEB\x95\x8F", + "\x8B\x67" => "\xEB\x95\x91", + "\x8B\x68" => "\xEB\x95\x92", + "\x8B\x69" => "\xEB\x95\x93", + "\x8B\x6A" => "\xEB\x95\x95", + "\x8B\x6B" => "\xEB\x95\x96", + "\x8B\x6C" => "\xEB\x95\x97", + "\x8B\x6D" => "\xEB\x95\x98", + "\x8B\x6E" => "\xEB\x95\x99", + "\x8B\x6F" => "\xEB\x95\x9A", + "\x8B\x70" => "\xEB\x95\x9B", + "\x8B\x71" => "\xEB\x95\x9E", + "\x8B\x72" => "\xEB\x95\xA2", + "\x8B\x73" => "\xEB\x95\xA3", + "\x8B\x74" => "\xEB\x95\xA4", + "\x8B\x75" => "\xEB\x95\xA5", + "\x8B\x76" => "\xEB\x95\xA6", + "\x8B\x77" => "\xEB\x95\xA7", + "\x8B\x78" => "\xEB\x95\xA8", + "\x8B\x79" => "\xEB\x95\xA9", + "\x8B\x7A" => "\xEB\x95\xAA", + "\x8B\x81" => "\xEB\x95\xAB", + "\x8B\x82" => "\xEB\x95\xAC", + "\x8B\x83" => "\xEB\x95\xAD", + "\x8B\x84" => "\xEB\x95\xAE", + "\x8B\x85" => "\xEB\x95\xAF", + "\x8B\x86" => "\xEB\x95\xB0", + "\x8B\x87" => "\xEB\x95\xB1", + "\x8B\x88" => "\xEB\x95\xB2", + "\x8B\x89" => "\xEB\x95\xB3", + "\x8B\x8A" => "\xEB\x95\xB4", + "\x8B\x8B" => "\xEB\x95\xB5", + "\x8B\x8C" => "\xEB\x95\xB6", + "\x8B\x8D" => "\xEB\x95\xB7", + "\x8B\x8E" => "\xEB\x95\xB8", + "\x8B\x8F" => "\xEB\x95\xB9", + "\x8B\x90" => "\xEB\x95\xBA", + "\x8B\x91" => "\xEB\x95\xBB", + "\x8B\x92" => "\xEB\x95\xBC", + "\x8B\x93" => "\xEB\x95\xBD", + "\x8B\x94" => "\xEB\x95\xBE", + "\x8B\x95" => "\xEB\x95\xBF", + "\x8B\x96" => "\xEB\x96\x80", + "\x8B\x97" => "\xEB\x96\x81", + "\x8B\x98" => "\xEB\x96\x82", + "\x8B\x99" => "\xEB\x96\x83", + "\x8B\x9A" => "\xEB\x96\x84", + "\x8B\x9B" => "\xEB\x96\x85", + "\x8B\x9C" => "\xEB\x96\x86", + "\x8B\x9D" => "\xEB\x96\x87", + "\x8B\x9E" => "\xEB\x96\x88", + "\x8B\x9F" => "\xEB\x96\x89", + "\x8B\xA0" => "\xEB\x96\x8A", + "\x8B\xA1" => "\xEB\x96\x8B", + "\x8B\xA2" => "\xEB\x96\x8C", + "\x8B\xA3" => "\xEB\x96\x8D", + "\x8B\xA4" => "\xEB\x96\x8E", + "\x8B\xA5" => "\xEB\x96\x8F", + "\x8B\xA6" => "\xEB\x96\x90", + "\x8B\xA7" => "\xEB\x96\x91", + "\x8B\xA8" => "\xEB\x96\x92", + "\x8B\xA9" => "\xEB\x96\x93", + "\x8B\xAA" => "\xEB\x96\x94", + "\x8B\xAB" => "\xEB\x96\x95", + "\x8B\xAC" => "\xEB\x96\x96", + "\x8B\xAD" => "\xEB\x96\x97", + "\x8B\xAE" => "\xEB\x96\x98", + "\x8B\xAF" => "\xEB\x96\x99", + "\x8B\xB0" => "\xEB\x96\x9A", + "\x8B\xB1" => "\xEB\x96\x9B", + "\x8B\xB2" => "\xEB\x96\x9C", + "\x8B\xB3" => "\xEB\x96\x9D", + "\x8B\xB4" => "\xEB\x96\x9E", + "\x8B\xB5" => "\xEB\x96\x9F", + "\x8B\xB6" => "\xEB\x96\xA2", + "\x8B\xB7" => "\xEB\x96\xA3", + "\x8B\xB8" => "\xEB\x96\xA5", + "\x8B\xB9" => "\xEB\x96\xA6", + "\x8B\xBA" => "\xEB\x96\xA7", + "\x8B\xBB" => "\xEB\x96\xA9", + "\x8B\xBC" => "\xEB\x96\xAC", + "\x8B\xBD" => "\xEB\x96\xAD", + "\x8B\xBE" => "\xEB\x96\xAE", + "\x8B\xBF" => "\xEB\x96\xAF", + "\x8B\xC0" => "\xEB\x96\xB2", + "\x8B\xC1" => "\xEB\x96\xB6", + "\x8B\xC2" => "\xEB\x96\xB7", + "\x8B\xC3" => "\xEB\x96\xB8", + "\x8B\xC4" => "\xEB\x96\xB9", + "\x8B\xC5" => "\xEB\x96\xBA", + "\x8B\xC6" => "\xEB\x96\xBE", + "\x8B\xC7" => "\xEB\x96\xBF", + "\x8B\xC8" => "\xEB\x97\x81", + "\x8B\xC9" => "\xEB\x97\x82", + "\x8B\xCA" => "\xEB\x97\x83", + "\x8B\xCB" => "\xEB\x97\x85", + "\x8B\xCC" => "\xEB\x97\x86", + "\x8B\xCD" => "\xEB\x97\x87", + "\x8B\xCE" => "\xEB\x97\x88", + "\x8B\xCF" => "\xEB\x97\x89", + "\x8B\xD0" => "\xEB\x97\x8A", + "\x8B\xD1" => "\xEB\x97\x8B", + "\x8B\xD2" => "\xEB\x97\x8E", + "\x8B\xD3" => "\xEB\x97\x92", + "\x8B\xD4" => "\xEB\x97\x93", + "\x8B\xD5" => "\xEB\x97\x94", + "\x8B\xD6" => "\xEB\x97\x95", + "\x8B\xD7" => "\xEB\x97\x96", + "\x8B\xD8" => "\xEB\x97\x97", + "\x8B\xD9" => "\xEB\x97\x99", + "\x8B\xDA" => "\xEB\x97\x9A", + "\x8B\xDB" => "\xEB\x97\x9B", + "\x8B\xDC" => "\xEB\x97\x9C", + "\x8B\xDD" => "\xEB\x97\x9D", + "\x8B\xDE" => "\xEB\x97\x9E", + "\x8B\xDF" => "\xEB\x97\x9F", + "\x8B\xE0" => "\xEB\x97\xA0", + "\x8B\xE1" => "\xEB\x97\xA1", + "\x8B\xE2" => "\xEB\x97\xA2", + "\x8B\xE3" => "\xEB\x97\xA3", + "\x8B\xE4" => "\xEB\x97\xA4", + "\x8B\xE5" => "\xEB\x97\xA5", + "\x8B\xE6" => "\xEB\x97\xA6", + "\x8B\xE7" => "\xEB\x97\xA7", + "\x8B\xE8" => "\xEB\x97\xA8", + "\x8B\xE9" => "\xEB\x97\xA9", + "\x8B\xEA" => "\xEB\x97\xAA", + "\x8B\xEB" => "\xEB\x97\xAB", + "\x8B\xEC" => "\xEB\x97\xAD", + "\x8B\xED" => "\xEB\x97\xAE", + "\x8B\xEE" => "\xEB\x97\xAF", + "\x8B\xEF" => "\xEB\x97\xB0", + "\x8B\xF0" => "\xEB\x97\xB1", + "\x8B\xF1" => "\xEB\x97\xB2", + "\x8B\xF2" => "\xEB\x97\xB3", + "\x8B\xF3" => "\xEB\x97\xB4", + "\x8B\xF4" => "\xEB\x97\xB5", + "\x8B\xF5" => "\xEB\x97\xB6", + "\x8B\xF6" => "\xEB\x97\xB7", + "\x8B\xF7" => "\xEB\x97\xB8", + "\x8B\xF8" => "\xEB\x97\xB9", + "\x8B\xF9" => "\xEB\x97\xBA", + "\x8B\xFA" => "\xEB\x97\xBB", + "\x8B\xFB" => "\xEB\x97\xBC", + "\x8B\xFC" => "\xEB\x97\xBD", + "\x8B\xFD" => "\xEB\x97\xBE", + "\x8B\xFE" => "\xEB\x97\xBF", + "\x8C\x41" => "\xEB\x98\x80", + "\x8C\x42" => "\xEB\x98\x81", + "\x8C\x43" => "\xEB\x98\x82", + "\x8C\x44" => "\xEB\x98\x83", + "\x8C\x45" => "\xEB\x98\x84", + "\x8C\x46" => "\xEB\x98\x85", + "\x8C\x47" => "\xEB\x98\x86", + "\x8C\x48" => "\xEB\x98\x87", + "\x8C\x49" => "\xEB\x98\x88", + "\x8C\x4A" => "\xEB\x98\x89", + "\x8C\x4B" => "\xEB\x98\x8A", + "\x8C\x4C" => "\xEB\x98\x8B", + "\x8C\x4D" => "\xEB\x98\x8C", + "\x8C\x4E" => "\xEB\x98\x8D", + "\x8C\x4F" => "\xEB\x98\x8E", + "\x8C\x50" => "\xEB\x98\x8F", + "\x8C\x51" => "\xEB\x98\x92", + "\x8C\x52" => "\xEB\x98\x93", + "\x8C\x53" => "\xEB\x98\x95", + "\x8C\x54" => "\xEB\x98\x96", + "\x8C\x55" => "\xEB\x98\x97", + "\x8C\x56" => "\xEB\x98\x99", + "\x8C\x57" => "\xEB\x98\x9A", + "\x8C\x58" => "\xEB\x98\x9B", + "\x8C\x59" => "\xEB\x98\x9C", + "\x8C\x5A" => "\xEB\x98\x9D", + "\x8C\x61" => "\xEB\x98\x9E", + "\x8C\x62" => "\xEB\x98\x9F", + "\x8C\x63" => "\xEB\x98\xA0", + "\x8C\x64" => "\xEB\x98\xA1", + "\x8C\x65" => "\xEB\x98\xA2", + "\x8C\x66" => "\xEB\x98\xA3", + "\x8C\x67" => "\xEB\x98\xA4", + "\x8C\x68" => "\xEB\x98\xA6", + "\x8C\x69" => "\xEB\x98\xA7", + "\x8C\x6A" => "\xEB\x98\xA8", + "\x8C\x6B" => "\xEB\x98\xA9", + "\x8C\x6C" => "\xEB\x98\xAA", + "\x8C\x6D" => "\xEB\x98\xAB", + "\x8C\x6E" => "\xEB\x98\xAD", + "\x8C\x6F" => "\xEB\x98\xAE", + "\x8C\x70" => "\xEB\x98\xAF", + "\x8C\x71" => "\xEB\x98\xB0", + "\x8C\x72" => "\xEB\x98\xB1", + "\x8C\x73" => "\xEB\x98\xB2", + "\x8C\x74" => "\xEB\x98\xB3", + "\x8C\x75" => "\xEB\x98\xB5", + "\x8C\x76" => "\xEB\x98\xB6", + "\x8C\x77" => "\xEB\x98\xB7", + "\x8C\x78" => "\xEB\x98\xB8", + "\x8C\x79" => "\xEB\x98\xB9", + "\x8C\x7A" => "\xEB\x98\xBA", + "\x8C\x81" => "\xEB\x98\xBB", + "\x8C\x82" => "\xEB\x98\xBC", + "\x8C\x83" => "\xEB\x98\xBD", + "\x8C\x84" => "\xEB\x98\xBE", + "\x8C\x85" => "\xEB\x98\xBF", + "\x8C\x86" => "\xEB\x99\x80", + "\x8C\x87" => "\xEB\x99\x81", + "\x8C\x88" => "\xEB\x99\x82", + "\x8C\x89" => "\xEB\x99\x83", + "\x8C\x8A" => "\xEB\x99\x84", + "\x8C\x8B" => "\xEB\x99\x85", + "\x8C\x8C" => "\xEB\x99\x86", + "\x8C\x8D" => "\xEB\x99\x87", + "\x8C\x8E" => "\xEB\x99\x89", + "\x8C\x8F" => "\xEB\x99\x8A", + "\x8C\x90" => "\xEB\x99\x8B", + "\x8C\x91" => "\xEB\x99\x8C", + "\x8C\x92" => "\xEB\x99\x8D", + "\x8C\x93" => "\xEB\x99\x8E", + "\x8C\x94" => "\xEB\x99\x8F", + "\x8C\x95" => "\xEB\x99\x90", + "\x8C\x96" => "\xEB\x99\x91", + "\x8C\x97" => "\xEB\x99\x92", + "\x8C\x98" => "\xEB\x99\x93", + "\x8C\x99" => "\xEB\x99\x94", + "\x8C\x9A" => "\xEB\x99\x95", + "\x8C\x9B" => "\xEB\x99\x96", + "\x8C\x9C" => "\xEB\x99\x97", + "\x8C\x9D" => "\xEB\x99\x98", + "\x8C\x9E" => "\xEB\x99\x99", + "\x8C\x9F" => "\xEB\x99\x9A", + "\x8C\xA0" => "\xEB\x99\x9B", + "\x8C\xA1" => "\xEB\x99\x9C", + "\x8C\xA2" => "\xEB\x99\x9D", + "\x8C\xA3" => "\xEB\x99\x9E", + "\x8C\xA4" => "\xEB\x99\x9F", + "\x8C\xA5" => "\xEB\x99\xA0", + "\x8C\xA6" => "\xEB\x99\xA1", + "\x8C\xA7" => "\xEB\x99\xA2", + "\x8C\xA8" => "\xEB\x99\xA3", + "\x8C\xA9" => "\xEB\x99\xA5", + "\x8C\xAA" => "\xEB\x99\xA6", + "\x8C\xAB" => "\xEB\x99\xA7", + "\x8C\xAC" => "\xEB\x99\xA9", + "\x8C\xAD" => "\xEB\x99\xAA", + "\x8C\xAE" => "\xEB\x99\xAB", + "\x8C\xAF" => "\xEB\x99\xAC", + "\x8C\xB0" => "\xEB\x99\xAD", + "\x8C\xB1" => "\xEB\x99\xAE", + "\x8C\xB2" => "\xEB\x99\xAF", + "\x8C\xB3" => "\xEB\x99\xB0", + "\x8C\xB4" => "\xEB\x99\xB1", + "\x8C\xB5" => "\xEB\x99\xB2", + "\x8C\xB6" => "\xEB\x99\xB3", + "\x8C\xB7" => "\xEB\x99\xB4", + "\x8C\xB8" => "\xEB\x99\xB5", + "\x8C\xB9" => "\xEB\x99\xB6", + "\x8C\xBA" => "\xEB\x99\xB7", + "\x8C\xBB" => "\xEB\x99\xB8", + "\x8C\xBC" => "\xEB\x99\xB9", + "\x8C\xBD" => "\xEB\x99\xBA", + "\x8C\xBE" => "\xEB\x99\xBB", + "\x8C\xBF" => "\xEB\x99\xBC", + "\x8C\xC0" => "\xEB\x99\xBD", + "\x8C\xC1" => "\xEB\x99\xBE", + "\x8C\xC2" => "\xEB\x99\xBF", + "\x8C\xC3" => "\xEB\x9A\x80", + "\x8C\xC4" => "\xEB\x9A\x81", + "\x8C\xC5" => "\xEB\x9A\x82", + "\x8C\xC6" => "\xEB\x9A\x83", + "\x8C\xC7" => "\xEB\x9A\x84", + "\x8C\xC8" => "\xEB\x9A\x85", + "\x8C\xC9" => "\xEB\x9A\x86", + "\x8C\xCA" => "\xEB\x9A\x87", + "\x8C\xCB" => "\xEB\x9A\x88", + "\x8C\xCC" => "\xEB\x9A\x89", + "\x8C\xCD" => "\xEB\x9A\x8A", + "\x8C\xCE" => "\xEB\x9A\x8B", + "\x8C\xCF" => "\xEB\x9A\x8C", + "\x8C\xD0" => "\xEB\x9A\x8D", + "\x8C\xD1" => "\xEB\x9A\x8E", + "\x8C\xD2" => "\xEB\x9A\x8F", + "\x8C\xD3" => "\xEB\x9A\x90", + "\x8C\xD4" => "\xEB\x9A\x91", + "\x8C\xD5" => "\xEB\x9A\x92", + "\x8C\xD6" => "\xEB\x9A\x93", + "\x8C\xD7" => "\xEB\x9A\x94", + "\x8C\xD8" => "\xEB\x9A\x95", + "\x8C\xD9" => "\xEB\x9A\x96", + "\x8C\xDA" => "\xEB\x9A\x97", + "\x8C\xDB" => "\xEB\x9A\x98", + "\x8C\xDC" => "\xEB\x9A\x99", + "\x8C\xDD" => "\xEB\x9A\x9A", + "\x8C\xDE" => "\xEB\x9A\x9B", + "\x8C\xDF" => "\xEB\x9A\x9E", + "\x8C\xE0" => "\xEB\x9A\x9F", + "\x8C\xE1" => "\xEB\x9A\xA1", + "\x8C\xE2" => "\xEB\x9A\xA2", + "\x8C\xE3" => "\xEB\x9A\xA3", + "\x8C\xE4" => "\xEB\x9A\xA5", + "\x8C\xE5" => "\xEB\x9A\xA6", + "\x8C\xE6" => "\xEB\x9A\xA7", + "\x8C\xE7" => "\xEB\x9A\xA8", + "\x8C\xE8" => "\xEB\x9A\xA9", + "\x8C\xE9" => "\xEB\x9A\xAA", + "\x8C\xEA" => "\xEB\x9A\xAD", + "\x8C\xEB" => "\xEB\x9A\xAE", + "\x8C\xEC" => "\xEB\x9A\xAF", + "\x8C\xED" => "\xEB\x9A\xB0", + "\x8C\xEE" => "\xEB\x9A\xB2", + "\x8C\xEF" => "\xEB\x9A\xB3", + "\x8C\xF0" => "\xEB\x9A\xB4", + "\x8C\xF1" => "\xEB\x9A\xB5", + "\x8C\xF2" => "\xEB\x9A\xB6", + "\x8C\xF3" => "\xEB\x9A\xB7", + "\x8C\xF4" => "\xEB\x9A\xB8", + "\x8C\xF5" => "\xEB\x9A\xB9", + "\x8C\xF6" => "\xEB\x9A\xBA", + "\x8C\xF7" => "\xEB\x9A\xBB", + "\x8C\xF8" => "\xEB\x9A\xBC", + "\x8C\xF9" => "\xEB\x9A\xBD", + "\x8C\xFA" => "\xEB\x9A\xBE", + "\x8C\xFB" => "\xEB\x9A\xBF", + "\x8C\xFC" => "\xEB\x9B\x80", + "\x8C\xFD" => "\xEB\x9B\x81", + "\x8C\xFE" => "\xEB\x9B\x82", + "\x8D\x41" => "\xEB\x9B\x83", + "\x8D\x42" => "\xEB\x9B\x84", + "\x8D\x43" => "\xEB\x9B\x85", + "\x8D\x44" => "\xEB\x9B\x86", + "\x8D\x45" => "\xEB\x9B\x87", + "\x8D\x46" => "\xEB\x9B\x88", + "\x8D\x47" => "\xEB\x9B\x89", + "\x8D\x48" => "\xEB\x9B\x8A", + "\x8D\x49" => "\xEB\x9B\x8B", + "\x8D\x4A" => "\xEB\x9B\x8C", + "\x8D\x4B" => "\xEB\x9B\x8D", + "\x8D\x4C" => "\xEB\x9B\x8E", + "\x8D\x4D" => "\xEB\x9B\x8F", + "\x8D\x4E" => "\xEB\x9B\x90", + "\x8D\x4F" => "\xEB\x9B\x91", + "\x8D\x50" => "\xEB\x9B\x92", + "\x8D\x51" => "\xEB\x9B\x93", + "\x8D\x52" => "\xEB\x9B\x95", + "\x8D\x53" => "\xEB\x9B\x96", + "\x8D\x54" => "\xEB\x9B\x97", + "\x8D\x55" => "\xEB\x9B\x98", + "\x8D\x56" => "\xEB\x9B\x99", + "\x8D\x57" => "\xEB\x9B\x9A", + "\x8D\x58" => "\xEB\x9B\x9B", + "\x8D\x59" => "\xEB\x9B\x9C", + "\x8D\x5A" => "\xEB\x9B\x9D", + "\x8D\x61" => "\xEB\x9B\x9E", + "\x8D\x62" => "\xEB\x9B\x9F", + "\x8D\x63" => "\xEB\x9B\xA0", + "\x8D\x64" => "\xEB\x9B\xA1", + "\x8D\x65" => "\xEB\x9B\xA2", + "\x8D\x66" => "\xEB\x9B\xA3", + "\x8D\x67" => "\xEB\x9B\xA4", + "\x8D\x68" => "\xEB\x9B\xA5", + "\x8D\x69" => "\xEB\x9B\xA6", + "\x8D\x6A" => "\xEB\x9B\xA7", + "\x8D\x6B" => "\xEB\x9B\xA8", + "\x8D\x6C" => "\xEB\x9B\xA9", + "\x8D\x6D" => "\xEB\x9B\xAA", + "\x8D\x6E" => "\xEB\x9B\xAB", + "\x8D\x6F" => "\xEB\x9B\xAC", + "\x8D\x70" => "\xEB\x9B\xAD", + "\x8D\x71" => "\xEB\x9B\xAE", + "\x8D\x72" => "\xEB\x9B\xAF", + "\x8D\x73" => "\xEB\x9B\xB1", + "\x8D\x74" => "\xEB\x9B\xB2", + "\x8D\x75" => "\xEB\x9B\xB3", + "\x8D\x76" => "\xEB\x9B\xB5", + "\x8D\x77" => "\xEB\x9B\xB6", + "\x8D\x78" => "\xEB\x9B\xB7", + "\x8D\x79" => "\xEB\x9B\xB9", + "\x8D\x7A" => "\xEB\x9B\xBA", + "\x8D\x81" => "\xEB\x9B\xBB", + "\x8D\x82" => "\xEB\x9B\xBC", + "\x8D\x83" => "\xEB\x9B\xBD", + "\x8D\x84" => "\xEB\x9B\xBE", + "\x8D\x85" => "\xEB\x9B\xBF", + "\x8D\x86" => "\xEB\x9C\x82", + "\x8D\x87" => "\xEB\x9C\x83", + "\x8D\x88" => "\xEB\x9C\x84", + "\x8D\x89" => "\xEB\x9C\x86", + "\x8D\x8A" => "\xEB\x9C\x87", + "\x8D\x8B" => "\xEB\x9C\x88", + "\x8D\x8C" => "\xEB\x9C\x89", + "\x8D\x8D" => "\xEB\x9C\x8A", + "\x8D\x8E" => "\xEB\x9C\x8B", + "\x8D\x8F" => "\xEB\x9C\x8C", + "\x8D\x90" => "\xEB\x9C\x8D", + "\x8D\x91" => "\xEB\x9C\x8E", + "\x8D\x92" => "\xEB\x9C\x8F", + "\x8D\x93" => "\xEB\x9C\x90", + "\x8D\x94" => "\xEB\x9C\x91", + "\x8D\x95" => "\xEB\x9C\x92", + "\x8D\x96" => "\xEB\x9C\x93", + "\x8D\x97" => "\xEB\x9C\x94", + "\x8D\x98" => "\xEB\x9C\x95", + "\x8D\x99" => "\xEB\x9C\x96", + "\x8D\x9A" => "\xEB\x9C\x97", + "\x8D\x9B" => "\xEB\x9C\x98", + "\x8D\x9C" => "\xEB\x9C\x99", + "\x8D\x9D" => "\xEB\x9C\x9A", + "\x8D\x9E" => "\xEB\x9C\x9B", + "\x8D\x9F" => "\xEB\x9C\x9C", + "\x8D\xA0" => "\xEB\x9C\x9D", + "\x8D\xA1" => "\xEB\x9C\x9E", + "\x8D\xA2" => "\xEB\x9C\x9F", + "\x8D\xA3" => "\xEB\x9C\xA0", + "\x8D\xA4" => "\xEB\x9C\xA1", + "\x8D\xA5" => "\xEB\x9C\xA2", + "\x8D\xA6" => "\xEB\x9C\xA3", + "\x8D\xA7" => "\xEB\x9C\xA4", + "\x8D\xA8" => "\xEB\x9C\xA5", + "\x8D\xA9" => "\xEB\x9C\xA6", + "\x8D\xAA" => "\xEB\x9C\xA7", + "\x8D\xAB" => "\xEB\x9C\xAA", + "\x8D\xAC" => "\xEB\x9C\xAB", + "\x8D\xAD" => "\xEB\x9C\xAD", + "\x8D\xAE" => "\xEB\x9C\xAE", + "\x8D\xAF" => "\xEB\x9C\xB1", + "\x8D\xB0" => "\xEB\x9C\xB2", + "\x8D\xB1" => "\xEB\x9C\xB3", + "\x8D\xB2" => "\xEB\x9C\xB4", + "\x8D\xB3" => "\xEB\x9C\xB5", + "\x8D\xB4" => "\xEB\x9C\xB6", + "\x8D\xB5" => "\xEB\x9C\xB7", + "\x8D\xB6" => "\xEB\x9C\xBA", + "\x8D\xB7" => "\xEB\x9C\xBC", + "\x8D\xB8" => "\xEB\x9C\xBD", + "\x8D\xB9" => "\xEB\x9C\xBE", + "\x8D\xBA" => "\xEB\x9C\xBF", + "\x8D\xBB" => "\xEB\x9D\x80", + "\x8D\xBC" => "\xEB\x9D\x81", + "\x8D\xBD" => "\xEB\x9D\x82", + "\x8D\xBE" => "\xEB\x9D\x83", + "\x8D\xBF" => "\xEB\x9D\x85", + "\x8D\xC0" => "\xEB\x9D\x86", + "\x8D\xC1" => "\xEB\x9D\x87", + "\x8D\xC2" => "\xEB\x9D\x89", + "\x8D\xC3" => "\xEB\x9D\x8A", + "\x8D\xC4" => "\xEB\x9D\x8B", + "\x8D\xC5" => "\xEB\x9D\x8D", + "\x8D\xC6" => "\xEB\x9D\x8E", + "\x8D\xC7" => "\xEB\x9D\x8F", + "\x8D\xC8" => "\xEB\x9D\x90", + "\x8D\xC9" => "\xEB\x9D\x91", + "\x8D\xCA" => "\xEB\x9D\x92", + "\x8D\xCB" => "\xEB\x9D\x93", + "\x8D\xCC" => "\xEB\x9D\x96", + "\x8D\xCD" => "\xEB\x9D\x97", + "\x8D\xCE" => "\xEB\x9D\x98", + "\x8D\xCF" => "\xEB\x9D\x99", + "\x8D\xD0" => "\xEB\x9D\x9A", + "\x8D\xD1" => "\xEB\x9D\x9B", + "\x8D\xD2" => "\xEB\x9D\x9C", + "\x8D\xD3" => "\xEB\x9D\x9D", + "\x8D\xD4" => "\xEB\x9D\x9E", + "\x8D\xD5" => "\xEB\x9D\x9F", + "\x8D\xD6" => "\xEB\x9D\xA1", + "\x8D\xD7" => "\xEB\x9D\xA2", + "\x8D\xD8" => "\xEB\x9D\xA3", + "\x8D\xD9" => "\xEB\x9D\xA5", + "\x8D\xDA" => "\xEB\x9D\xA6", + "\x8D\xDB" => "\xEB\x9D\xA7", + "\x8D\xDC" => "\xEB\x9D\xA9", + "\x8D\xDD" => "\xEB\x9D\xAA", + "\x8D\xDE" => "\xEB\x9D\xAB", + "\x8D\xDF" => "\xEB\x9D\xAC", + "\x8D\xE0" => "\xEB\x9D\xAD", + "\x8D\xE1" => "\xEB\x9D\xAE", + "\x8D\xE2" => "\xEB\x9D\xAF", + "\x8D\xE3" => "\xEB\x9D\xB2", + "\x8D\xE4" => "\xEB\x9D\xB4", + "\x8D\xE5" => "\xEB\x9D\xB6", + "\x8D\xE6" => "\xEB\x9D\xB7", + "\x8D\xE7" => "\xEB\x9D\xB8", + "\x8D\xE8" => "\xEB\x9D\xB9", + "\x8D\xE9" => "\xEB\x9D\xBA", + "\x8D\xEA" => "\xEB\x9D\xBB", + "\x8D\xEB" => "\xEB\x9D\xBE", + "\x8D\xEC" => "\xEB\x9D\xBF", + "\x8D\xED" => "\xEB\x9E\x81", + "\x8D\xEE" => "\xEB\x9E\x82", + "\x8D\xEF" => "\xEB\x9E\x83", + "\x8D\xF0" => "\xEB\x9E\x85", + "\x8D\xF1" => "\xEB\x9E\x86", + "\x8D\xF2" => "\xEB\x9E\x87", + "\x8D\xF3" => "\xEB\x9E\x88", + "\x8D\xF4" => "\xEB\x9E\x89", + "\x8D\xF5" => "\xEB\x9E\x8A", + "\x8D\xF6" => "\xEB\x9E\x8B", + "\x8D\xF7" => "\xEB\x9E\x8E", + "\x8D\xF8" => "\xEB\x9E\x93", + "\x8D\xF9" => "\xEB\x9E\x94", + "\x8D\xFA" => "\xEB\x9E\x95", + "\x8D\xFB" => "\xEB\x9E\x9A", + "\x8D\xFC" => "\xEB\x9E\x9B", + "\x8D\xFD" => "\xEB\x9E\x9D", + "\x8D\xFE" => "\xEB\x9E\x9E", + "\x8E\x41" => "\xEB\x9E\x9F", + "\x8E\x42" => "\xEB\x9E\xA1", + "\x8E\x43" => "\xEB\x9E\xA2", + "\x8E\x44" => "\xEB\x9E\xA3", + "\x8E\x45" => "\xEB\x9E\xA4", + "\x8E\x46" => "\xEB\x9E\xA5", + "\x8E\x47" => "\xEB\x9E\xA6", + "\x8E\x48" => "\xEB\x9E\xA7", + "\x8E\x49" => "\xEB\x9E\xAA", + "\x8E\x4A" => "\xEB\x9E\xAE", + "\x8E\x4B" => "\xEB\x9E\xAF", + "\x8E\x4C" => "\xEB\x9E\xB0", + "\x8E\x4D" => "\xEB\x9E\xB1", + "\x8E\x4E" => "\xEB\x9E\xB2", + "\x8E\x4F" => "\xEB\x9E\xB3", + "\x8E\x50" => "\xEB\x9E\xB6", + "\x8E\x51" => "\xEB\x9E\xB7", + "\x8E\x52" => "\xEB\x9E\xB9", + "\x8E\x53" => "\xEB\x9E\xBA", + "\x8E\x54" => "\xEB\x9E\xBB", + "\x8E\x55" => "\xEB\x9E\xBC", + "\x8E\x56" => "\xEB\x9E\xBD", + "\x8E\x57" => "\xEB\x9E\xBE", + "\x8E\x58" => "\xEB\x9E\xBF", + "\x8E\x59" => "\xEB\x9F\x80", + "\x8E\x5A" => "\xEB\x9F\x81", + "\x8E\x61" => "\xEB\x9F\x82", + "\x8E\x62" => "\xEB\x9F\x83", + "\x8E\x63" => "\xEB\x9F\x84", + "\x8E\x64" => "\xEB\x9F\x85", + "\x8E\x65" => "\xEB\x9F\x86", + "\x8E\x66" => "\xEB\x9F\x88", + "\x8E\x67" => "\xEB\x9F\x8A", + "\x8E\x68" => "\xEB\x9F\x8B", + "\x8E\x69" => "\xEB\x9F\x8C", + "\x8E\x6A" => "\xEB\x9F\x8D", + "\x8E\x6B" => "\xEB\x9F\x8E", + "\x8E\x6C" => "\xEB\x9F\x8F", + "\x8E\x6D" => "\xEB\x9F\x90", + "\x8E\x6E" => "\xEB\x9F\x91", + "\x8E\x6F" => "\xEB\x9F\x92", + "\x8E\x70" => "\xEB\x9F\x93", + "\x8E\x71" => "\xEB\x9F\x94", + "\x8E\x72" => "\xEB\x9F\x95", + "\x8E\x73" => "\xEB\x9F\x96", + "\x8E\x74" => "\xEB\x9F\x97", + "\x8E\x75" => "\xEB\x9F\x98", + "\x8E\x76" => "\xEB\x9F\x99", + "\x8E\x77" => "\xEB\x9F\x9A", + "\x8E\x78" => "\xEB\x9F\x9B", + "\x8E\x79" => "\xEB\x9F\x9C", + "\x8E\x7A" => "\xEB\x9F\x9D", + "\x8E\x81" => "\xEB\x9F\x9E", + "\x8E\x82" => "\xEB\x9F\x9F", + "\x8E\x83" => "\xEB\x9F\xA0", + "\x8E\x84" => "\xEB\x9F\xA1", + "\x8E\x85" => "\xEB\x9F\xA2", + "\x8E\x86" => "\xEB\x9F\xA3", + "\x8E\x87" => "\xEB\x9F\xA4", + "\x8E\x88" => "\xEB\x9F\xA5", + "\x8E\x89" => "\xEB\x9F\xA6", + "\x8E\x8A" => "\xEB\x9F\xA7", + "\x8E\x8B" => "\xEB\x9F\xA8", + "\x8E\x8C" => "\xEB\x9F\xA9", + "\x8E\x8D" => "\xEB\x9F\xAA", + "\x8E\x8E" => "\xEB\x9F\xAB", + "\x8E\x8F" => "\xEB\x9F\xAE", + "\x8E\x90" => "\xEB\x9F\xAF", + "\x8E\x91" => "\xEB\x9F\xB1", + "\x8E\x92" => "\xEB\x9F\xB2", + "\x8E\x93" => "\xEB\x9F\xB3", + "\x8E\x94" => "\xEB\x9F\xB5", + "\x8E\x95" => "\xEB\x9F\xB6", + "\x8E\x96" => "\xEB\x9F\xB7", + "\x8E\x97" => "\xEB\x9F\xB8", + "\x8E\x98" => "\xEB\x9F\xB9", + "\x8E\x99" => "\xEB\x9F\xBA", + "\x8E\x9A" => "\xEB\x9F\xBB", + "\x8E\x9B" => "\xEB\x9F\xBE", + "\x8E\x9C" => "\xEB\xA0\x82", + "\x8E\x9D" => "\xEB\xA0\x83", + "\x8E\x9E" => "\xEB\xA0\x84", + "\x8E\x9F" => "\xEB\xA0\x85", + "\x8E\xA0" => "\xEB\xA0\x86", + "\x8E\xA1" => "\xEB\xA0\x8A", + "\x8E\xA2" => "\xEB\xA0\x8B", + "\x8E\xA3" => "\xEB\xA0\x8D", + "\x8E\xA4" => "\xEB\xA0\x8E", + "\x8E\xA5" => "\xEB\xA0\x8F", + "\x8E\xA6" => "\xEB\xA0\x91", + "\x8E\xA7" => "\xEB\xA0\x92", + "\x8E\xA8" => "\xEB\xA0\x93", + "\x8E\xA9" => "\xEB\xA0\x94", + "\x8E\xAA" => "\xEB\xA0\x95", + "\x8E\xAB" => "\xEB\xA0\x96", + "\x8E\xAC" => "\xEB\xA0\x97", + "\x8E\xAD" => "\xEB\xA0\x9A", + "\x8E\xAE" => "\xEB\xA0\x9C", + "\x8E\xAF" => "\xEB\xA0\x9E", + "\x8E\xB0" => "\xEB\xA0\x9F", + "\x8E\xB1" => "\xEB\xA0\xA0", + "\x8E\xB2" => "\xEB\xA0\xA1", + "\x8E\xB3" => "\xEB\xA0\xA2", + "\x8E\xB4" => "\xEB\xA0\xA3", + "\x8E\xB5" => "\xEB\xA0\xA6", + "\x8E\xB6" => "\xEB\xA0\xA7", + "\x8E\xB7" => "\xEB\xA0\xA9", + "\x8E\xB8" => "\xEB\xA0\xAA", + "\x8E\xB9" => "\xEB\xA0\xAB", + "\x8E\xBA" => "\xEB\xA0\xAD", + "\x8E\xBB" => "\xEB\xA0\xAE", + "\x8E\xBC" => "\xEB\xA0\xAF", + "\x8E\xBD" => "\xEB\xA0\xB0", + "\x8E\xBE" => "\xEB\xA0\xB1", + "\x8E\xBF" => "\xEB\xA0\xB2", + "\x8E\xC0" => "\xEB\xA0\xB3", + "\x8E\xC1" => "\xEB\xA0\xB6", + "\x8E\xC2" => "\xEB\xA0\xBA", + "\x8E\xC3" => "\xEB\xA0\xBB", + "\x8E\xC4" => "\xEB\xA0\xBC", + "\x8E\xC5" => "\xEB\xA0\xBD", + "\x8E\xC6" => "\xEB\xA0\xBE", + "\x8E\xC7" => "\xEB\xA0\xBF", + "\x8E\xC8" => "\xEB\xA1\x81", + "\x8E\xC9" => "\xEB\xA1\x82", + "\x8E\xCA" => "\xEB\xA1\x83", + "\x8E\xCB" => "\xEB\xA1\x85", + "\x8E\xCC" => "\xEB\xA1\x86", + "\x8E\xCD" => "\xEB\xA1\x87", + "\x8E\xCE" => "\xEB\xA1\x88", + "\x8E\xCF" => "\xEB\xA1\x89", + "\x8E\xD0" => "\xEB\xA1\x8A", + "\x8E\xD1" => "\xEB\xA1\x8B", + "\x8E\xD2" => "\xEB\xA1\x8C", + "\x8E\xD3" => "\xEB\xA1\x8D", + "\x8E\xD4" => "\xEB\xA1\x8E", + "\x8E\xD5" => "\xEB\xA1\x8F", + "\x8E\xD6" => "\xEB\xA1\x90", + "\x8E\xD7" => "\xEB\xA1\x92", + "\x8E\xD8" => "\xEB\xA1\x94", + "\x8E\xD9" => "\xEB\xA1\x95", + "\x8E\xDA" => "\xEB\xA1\x96", + "\x8E\xDB" => "\xEB\xA1\x97", + "\x8E\xDC" => "\xEB\xA1\x98", + "\x8E\xDD" => "\xEB\xA1\x99", + "\x8E\xDE" => "\xEB\xA1\x9A", + "\x8E\xDF" => "\xEB\xA1\x9B", + "\x8E\xE0" => "\xEB\xA1\x9E", + "\x8E\xE1" => "\xEB\xA1\x9F", + "\x8E\xE2" => "\xEB\xA1\xA1", + "\x8E\xE3" => "\xEB\xA1\xA2", + "\x8E\xE4" => "\xEB\xA1\xA3", + "\x8E\xE5" => "\xEB\xA1\xA5", + "\x8E\xE6" => "\xEB\xA1\xA6", + "\x8E\xE7" => "\xEB\xA1\xA7", + "\x8E\xE8" => "\xEB\xA1\xA8", + "\x8E\xE9" => "\xEB\xA1\xA9", + "\x8E\xEA" => "\xEB\xA1\xAA", + "\x8E\xEB" => "\xEB\xA1\xAB", + "\x8E\xEC" => "\xEB\xA1\xAE", + "\x8E\xED" => "\xEB\xA1\xB0", + "\x8E\xEE" => "\xEB\xA1\xB2", + "\x8E\xEF" => "\xEB\xA1\xB3", + "\x8E\xF0" => "\xEB\xA1\xB4", + "\x8E\xF1" => "\xEB\xA1\xB5", + "\x8E\xF2" => "\xEB\xA1\xB6", + "\x8E\xF3" => "\xEB\xA1\xB7", + "\x8E\xF4" => "\xEB\xA1\xB9", + "\x8E\xF5" => "\xEB\xA1\xBA", + "\x8E\xF6" => "\xEB\xA1\xBB", + "\x8E\xF7" => "\xEB\xA1\xBD", + "\x8E\xF8" => "\xEB\xA1\xBE", + "\x8E\xF9" => "\xEB\xA1\xBF", + "\x8E\xFA" => "\xEB\xA2\x80", + "\x8E\xFB" => "\xEB\xA2\x81", + "\x8E\xFC" => "\xEB\xA2\x82", + "\x8E\xFD" => "\xEB\xA2\x83", + "\x8E\xFE" => "\xEB\xA2\x84", + "\x8F\x41" => "\xEB\xA2\x85", + "\x8F\x42" => "\xEB\xA2\x86", + "\x8F\x43" => "\xEB\xA2\x87", + "\x8F\x44" => "\xEB\xA2\x88", + "\x8F\x45" => "\xEB\xA2\x89", + "\x8F\x46" => "\xEB\xA2\x8A", + "\x8F\x47" => "\xEB\xA2\x8B", + "\x8F\x48" => "\xEB\xA2\x8C", + "\x8F\x49" => "\xEB\xA2\x8E", + "\x8F\x4A" => "\xEB\xA2\x8F", + "\x8F\x4B" => "\xEB\xA2\x90", + "\x8F\x4C" => "\xEB\xA2\x91", + "\x8F\x4D" => "\xEB\xA2\x92", + "\x8F\x4E" => "\xEB\xA2\x93", + "\x8F\x4F" => "\xEB\xA2\x94", + "\x8F\x50" => "\xEB\xA2\x95", + "\x8F\x51" => "\xEB\xA2\x96", + "\x8F\x52" => "\xEB\xA2\x97", + "\x8F\x53" => "\xEB\xA2\x98", + "\x8F\x54" => "\xEB\xA2\x99", + "\x8F\x55" => "\xEB\xA2\x9A", + "\x8F\x56" => "\xEB\xA2\x9B", + "\x8F\x57" => "\xEB\xA2\x9C", + "\x8F\x58" => "\xEB\xA2\x9D", + "\x8F\x59" => "\xEB\xA2\x9E", + "\x8F\x5A" => "\xEB\xA2\x9F", + "\x8F\x61" => "\xEB\xA2\xA0", + "\x8F\x62" => "\xEB\xA2\xA1", + "\x8F\x63" => "\xEB\xA2\xA2", + "\x8F\x64" => "\xEB\xA2\xA3", + "\x8F\x65" => "\xEB\xA2\xA4", + "\x8F\x66" => "\xEB\xA2\xA5", + "\x8F\x67" => "\xEB\xA2\xA6", + "\x8F\x68" => "\xEB\xA2\xA7", + "\x8F\x69" => "\xEB\xA2\xA9", + "\x8F\x6A" => "\xEB\xA2\xAA", + "\x8F\x6B" => "\xEB\xA2\xAB", + "\x8F\x6C" => "\xEB\xA2\xAC", + "\x8F\x6D" => "\xEB\xA2\xAD", + "\x8F\x6E" => "\xEB\xA2\xAE", + "\x8F\x6F" => "\xEB\xA2\xAF", + "\x8F\x70" => "\xEB\xA2\xB1", + "\x8F\x71" => "\xEB\xA2\xB2", + "\x8F\x72" => "\xEB\xA2\xB3", + "\x8F\x73" => "\xEB\xA2\xB5", + "\x8F\x74" => "\xEB\xA2\xB6", + "\x8F\x75" => "\xEB\xA2\xB7", + "\x8F\x76" => "\xEB\xA2\xB9", + "\x8F\x77" => "\xEB\xA2\xBA", + "\x8F\x78" => "\xEB\xA2\xBB", + "\x8F\x79" => "\xEB\xA2\xBC", + "\x8F\x7A" => "\xEB\xA2\xBD", + "\x8F\x81" => "\xEB\xA2\xBE", + "\x8F\x82" => "\xEB\xA2\xBF", + "\x8F\x83" => "\xEB\xA3\x82", + "\x8F\x84" => "\xEB\xA3\x84", + "\x8F\x85" => "\xEB\xA3\x86", + "\x8F\x86" => "\xEB\xA3\x87", + "\x8F\x87" => "\xEB\xA3\x88", + "\x8F\x88" => "\xEB\xA3\x89", + "\x8F\x89" => "\xEB\xA3\x8A", + "\x8F\x8A" => "\xEB\xA3\x8B", + "\x8F\x8B" => "\xEB\xA3\x8D", + "\x8F\x8C" => "\xEB\xA3\x8E", + "\x8F\x8D" => "\xEB\xA3\x8F", + "\x8F\x8E" => "\xEB\xA3\x91", + "\x8F\x8F" => "\xEB\xA3\x92", + "\x8F\x90" => "\xEB\xA3\x93", + "\x8F\x91" => "\xEB\xA3\x95", + "\x8F\x92" => "\xEB\xA3\x96", + "\x8F\x93" => "\xEB\xA3\x97", + "\x8F\x94" => "\xEB\xA3\x98", + "\x8F\x95" => "\xEB\xA3\x99", + "\x8F\x96" => "\xEB\xA3\x9A", + "\x8F\x97" => "\xEB\xA3\x9B", + "\x8F\x98" => "\xEB\xA3\x9C", + "\x8F\x99" => "\xEB\xA3\x9E", + "\x8F\x9A" => "\xEB\xA3\xA0", + "\x8F\x9B" => "\xEB\xA3\xA2", + "\x8F\x9C" => "\xEB\xA3\xA3", + "\x8F\x9D" => "\xEB\xA3\xA4", + "\x8F\x9E" => "\xEB\xA3\xA5", + "\x8F\x9F" => "\xEB\xA3\xA6", + "\x8F\xA0" => "\xEB\xA3\xA7", + "\x8F\xA1" => "\xEB\xA3\xAA", + "\x8F\xA2" => "\xEB\xA3\xAB", + "\x8F\xA3" => "\xEB\xA3\xAD", + "\x8F\xA4" => "\xEB\xA3\xAE", + "\x8F\xA5" => "\xEB\xA3\xAF", + "\x8F\xA6" => "\xEB\xA3\xB1", + "\x8F\xA7" => "\xEB\xA3\xB2", + "\x8F\xA8" => "\xEB\xA3\xB3", + "\x8F\xA9" => "\xEB\xA3\xB4", + "\x8F\xAA" => "\xEB\xA3\xB5", + "\x8F\xAB" => "\xEB\xA3\xB6", + "\x8F\xAC" => "\xEB\xA3\xB7", + "\x8F\xAD" => "\xEB\xA3\xBA", + "\x8F\xAE" => "\xEB\xA3\xBC", + "\x8F\xAF" => "\xEB\xA3\xBE", + "\x8F\xB0" => "\xEB\xA3\xBF", + "\x8F\xB1" => "\xEB\xA4\x80", + "\x8F\xB2" => "\xEB\xA4\x81", + "\x8F\xB3" => "\xEB\xA4\x82", + "\x8F\xB4" => "\xEB\xA4\x83", + "\x8F\xB5" => "\xEB\xA4\x85", + "\x8F\xB6" => "\xEB\xA4\x86", + "\x8F\xB7" => "\xEB\xA4\x87", + "\x8F\xB8" => "\xEB\xA4\x88", + "\x8F\xB9" => "\xEB\xA4\x89", + "\x8F\xBA" => "\xEB\xA4\x8A", + "\x8F\xBB" => "\xEB\xA4\x8B", + "\x8F\xBC" => "\xEB\xA4\x8C", + "\x8F\xBD" => "\xEB\xA4\x8D", + "\x8F\xBE" => "\xEB\xA4\x8E", + "\x8F\xBF" => "\xEB\xA4\x8F", + "\x8F\xC0" => "\xEB\xA4\x90", + "\x8F\xC1" => "\xEB\xA4\x91", + "\x8F\xC2" => "\xEB\xA4\x92", + "\x8F\xC3" => "\xEB\xA4\x93", + "\x8F\xC4" => "\xEB\xA4\x94", + "\x8F\xC5" => "\xEB\xA4\x95", + "\x8F\xC6" => "\xEB\xA4\x96", + "\x8F\xC7" => "\xEB\xA4\x97", + "\x8F\xC8" => "\xEB\xA4\x99", + "\x8F\xC9" => "\xEB\xA4\x9A", + "\x8F\xCA" => "\xEB\xA4\x9B", + "\x8F\xCB" => "\xEB\xA4\x9C", + "\x8F\xCC" => "\xEB\xA4\x9D", + "\x8F\xCD" => "\xEB\xA4\x9E", + "\x8F\xCE" => "\xEB\xA4\x9F", + "\x8F\xCF" => "\xEB\xA4\xA1", + "\x8F\xD0" => "\xEB\xA4\xA2", + "\x8F\xD1" => "\xEB\xA4\xA3", + "\x8F\xD2" => "\xEB\xA4\xA4", + "\x8F\xD3" => "\xEB\xA4\xA5", + "\x8F\xD4" => "\xEB\xA4\xA6", + "\x8F\xD5" => "\xEB\xA4\xA7", + "\x8F\xD6" => "\xEB\xA4\xA8", + "\x8F\xD7" => "\xEB\xA4\xA9", + "\x8F\xD8" => "\xEB\xA4\xAA", + "\x8F\xD9" => "\xEB\xA4\xAB", + "\x8F\xDA" => "\xEB\xA4\xAC", + "\x8F\xDB" => "\xEB\xA4\xAD", + "\x8F\xDC" => "\xEB\xA4\xAE", + "\x8F\xDD" => "\xEB\xA4\xAF", + "\x8F\xDE" => "\xEB\xA4\xB0", + "\x8F\xDF" => "\xEB\xA4\xB1", + "\x8F\xE0" => "\xEB\xA4\xB2", + "\x8F\xE1" => "\xEB\xA4\xB3", + "\x8F\xE2" => "\xEB\xA4\xB4", + "\x8F\xE3" => "\xEB\xA4\xB5", + "\x8F\xE4" => "\xEB\xA4\xB6", + "\x8F\xE5" => "\xEB\xA4\xB7", + "\x8F\xE6" => "\xEB\xA4\xB8", + "\x8F\xE7" => "\xEB\xA4\xB9", + "\x8F\xE8" => "\xEB\xA4\xBA", + "\x8F\xE9" => "\xEB\xA4\xBB", + "\x8F\xEA" => "\xEB\xA4\xBE", + "\x8F\xEB" => "\xEB\xA4\xBF", + "\x8F\xEC" => "\xEB\xA5\x81", + "\x8F\xED" => "\xEB\xA5\x82", + "\x8F\xEE" => "\xEB\xA5\x83", + "\x8F\xEF" => "\xEB\xA5\x85", + "\x8F\xF0" => "\xEB\xA5\x86", + "\x8F\xF1" => "\xEB\xA5\x87", + "\x8F\xF2" => "\xEB\xA5\x88", + "\x8F\xF3" => "\xEB\xA5\x89", + "\x8F\xF4" => "\xEB\xA5\x8A", + "\x8F\xF5" => "\xEB\xA5\x8B", + "\x8F\xF6" => "\xEB\xA5\x8D", + "\x8F\xF7" => "\xEB\xA5\x8E", + "\x8F\xF8" => "\xEB\xA5\x90", + "\x8F\xF9" => "\xEB\xA5\x92", + "\x8F\xFA" => "\xEB\xA5\x93", + "\x8F\xFB" => "\xEB\xA5\x94", + "\x8F\xFC" => "\xEB\xA5\x95", + "\x8F\xFD" => "\xEB\xA5\x96", + "\x8F\xFE" => "\xEB\xA5\x97", + "\x90\x41" => "\xEB\xA5\x9A", + "\x90\x42" => "\xEB\xA5\x9B", + "\x90\x43" => "\xEB\xA5\x9D", + "\x90\x44" => "\xEB\xA5\x9E", + "\x90\x45" => "\xEB\xA5\x9F", + "\x90\x46" => "\xEB\xA5\xA1", + "\x90\x47" => "\xEB\xA5\xA2", + "\x90\x48" => "\xEB\xA5\xA3", + "\x90\x49" => "\xEB\xA5\xA4", + "\x90\x4A" => "\xEB\xA5\xA5", + "\x90\x4B" => "\xEB\xA5\xA6", + "\x90\x4C" => "\xEB\xA5\xA7", + "\x90\x4D" => "\xEB\xA5\xAA", + "\x90\x4E" => "\xEB\xA5\xAC", + "\x90\x4F" => "\xEB\xA5\xAE", + "\x90\x50" => "\xEB\xA5\xAF", + "\x90\x51" => "\xEB\xA5\xB0", + "\x90\x52" => "\xEB\xA5\xB1", + "\x90\x53" => "\xEB\xA5\xB2", + "\x90\x54" => "\xEB\xA5\xB3", + "\x90\x55" => "\xEB\xA5\xB6", + "\x90\x56" => "\xEB\xA5\xB7", + "\x90\x57" => "\xEB\xA5\xB9", + "\x90\x58" => "\xEB\xA5\xBA", + "\x90\x59" => "\xEB\xA5\xBB", + "\x90\x5A" => "\xEB\xA5\xBD", + "\x90\x61" => "\xEB\xA5\xBE", + "\x90\x62" => "\xEB\xA5\xBF", + "\x90\x63" => "\xEB\xA6\x80", + "\x90\x64" => "\xEB\xA6\x81", + "\x90\x65" => "\xEB\xA6\x82", + "\x90\x66" => "\xEB\xA6\x83", + "\x90\x67" => "\xEB\xA6\x86", + "\x90\x68" => "\xEB\xA6\x88", + "\x90\x69" => "\xEB\xA6\x8B", + "\x90\x6A" => "\xEB\xA6\x8C", + "\x90\x6B" => "\xEB\xA6\x8F", + "\x90\x6C" => "\xEB\xA6\x90", + "\x90\x6D" => "\xEB\xA6\x91", + "\x90\x6E" => "\xEB\xA6\x92", + "\x90\x6F" => "\xEB\xA6\x93", + "\x90\x70" => "\xEB\xA6\x94", + "\x90\x71" => "\xEB\xA6\x95", + "\x90\x72" => "\xEB\xA6\x96", + "\x90\x73" => "\xEB\xA6\x97", + "\x90\x74" => "\xEB\xA6\x98", + "\x90\x75" => "\xEB\xA6\x99", + "\x90\x76" => "\xEB\xA6\x9A", + "\x90\x77" => "\xEB\xA6\x9B", + "\x90\x78" => "\xEB\xA6\x9C", + "\x90\x79" => "\xEB\xA6\x9D", + "\x90\x7A" => "\xEB\xA6\x9E", + "\x90\x81" => "\xEB\xA6\x9F", + "\x90\x82" => "\xEB\xA6\xA0", + "\x90\x83" => "\xEB\xA6\xA1", + "\x90\x84" => "\xEB\xA6\xA2", + "\x90\x85" => "\xEB\xA6\xA3", + "\x90\x86" => "\xEB\xA6\xA4", + "\x90\x87" => "\xEB\xA6\xA5", + "\x90\x88" => "\xEB\xA6\xA6", + "\x90\x89" => "\xEB\xA6\xA7", + "\x90\x8A" => "\xEB\xA6\xA8", + "\x90\x8B" => "\xEB\xA6\xA9", + "\x90\x8C" => "\xEB\xA6\xAA", + "\x90\x8D" => "\xEB\xA6\xAB", + "\x90\x8E" => "\xEB\xA6\xAE", + "\x90\x8F" => "\xEB\xA6\xAF", + "\x90\x90" => "\xEB\xA6\xB1", + "\x90\x91" => "\xEB\xA6\xB2", + "\x90\x92" => "\xEB\xA6\xB3", + "\x90\x93" => "\xEB\xA6\xB5", + "\x90\x94" => "\xEB\xA6\xB6", + "\x90\x95" => "\xEB\xA6\xB7", + "\x90\x96" => "\xEB\xA6\xB8", + "\x90\x97" => "\xEB\xA6\xB9", + "\x90\x98" => "\xEB\xA6\xBA", + "\x90\x99" => "\xEB\xA6\xBB", + "\x90\x9A" => "\xEB\xA6\xBE", + "\x90\x9B" => "\xEB\xA7\x80", + "\x90\x9C" => "\xEB\xA7\x82", + "\x90\x9D" => "\xEB\xA7\x83", + "\x90\x9E" => "\xEB\xA7\x84", + "\x90\x9F" => "\xEB\xA7\x85", + "\x90\xA0" => "\xEB\xA7\x86", + "\x90\xA1" => "\xEB\xA7\x87", + "\x90\xA2" => "\xEB\xA7\x8A", + "\x90\xA3" => "\xEB\xA7\x8B", + "\x90\xA4" => "\xEB\xA7\x8D", + "\x90\xA5" => "\xEB\xA7\x93", + "\x90\xA6" => "\xEB\xA7\x94", + "\x90\xA7" => "\xEB\xA7\x95", + "\x90\xA8" => "\xEB\xA7\x96", + "\x90\xA9" => "\xEB\xA7\x97", + "\x90\xAA" => "\xEB\xA7\x9A", + "\x90\xAB" => "\xEB\xA7\x9C", + "\x90\xAC" => "\xEB\xA7\x9F", + "\x90\xAD" => "\xEB\xA7\xA0", + "\x90\xAE" => "\xEB\xA7\xA2", + "\x90\xAF" => "\xEB\xA7\xA6", + "\x90\xB0" => "\xEB\xA7\xA7", + "\x90\xB1" => "\xEB\xA7\xA9", + "\x90\xB2" => "\xEB\xA7\xAA", + "\x90\xB3" => "\xEB\xA7\xAB", + "\x90\xB4" => "\xEB\xA7\xAD", + "\x90\xB5" => "\xEB\xA7\xAE", + "\x90\xB6" => "\xEB\xA7\xAF", + "\x90\xB7" => "\xEB\xA7\xB0", + "\x90\xB8" => "\xEB\xA7\xB1", + "\x90\xB9" => "\xEB\xA7\xB2", + "\x90\xBA" => "\xEB\xA7\xB3", + "\x90\xBB" => "\xEB\xA7\xB6", + "\x90\xBC" => "\xEB\xA7\xBB", + "\x90\xBD" => "\xEB\xA7\xBC", + "\x90\xBE" => "\xEB\xA7\xBD", + "\x90\xBF" => "\xEB\xA7\xBE", + "\x90\xC0" => "\xEB\xA7\xBF", + "\x90\xC1" => "\xEB\xA8\x82", + "\x90\xC2" => "\xEB\xA8\x83", + "\x90\xC3" => "\xEB\xA8\x84", + "\x90\xC4" => "\xEB\xA8\x85", + "\x90\xC5" => "\xEB\xA8\x86", + "\x90\xC6" => "\xEB\xA8\x87", + "\x90\xC7" => "\xEB\xA8\x89", + "\x90\xC8" => "\xEB\xA8\x8A", + "\x90\xC9" => "\xEB\xA8\x8B", + "\x90\xCA" => "\xEB\xA8\x8C", + "\x90\xCB" => "\xEB\xA8\x8D", + "\x90\xCC" => "\xEB\xA8\x8E", + "\x90\xCD" => "\xEB\xA8\x8F", + "\x90\xCE" => "\xEB\xA8\x90", + "\x90\xCF" => "\xEB\xA8\x91", + "\x90\xD0" => "\xEB\xA8\x92", + "\x90\xD1" => "\xEB\xA8\x93", + "\x90\xD2" => "\xEB\xA8\x94", + "\x90\xD3" => "\xEB\xA8\x96", + "\x90\xD4" => "\xEB\xA8\x97", + "\x90\xD5" => "\xEB\xA8\x98", + "\x90\xD6" => "\xEB\xA8\x99", + "\x90\xD7" => "\xEB\xA8\x9A", + "\x90\xD8" => "\xEB\xA8\x9B", + "\x90\xD9" => "\xEB\xA8\x9C", + "\x90\xDA" => "\xEB\xA8\x9D", + "\x90\xDB" => "\xEB\xA8\x9E", + "\x90\xDC" => "\xEB\xA8\x9F", + "\x90\xDD" => "\xEB\xA8\xA0", + "\x90\xDE" => "\xEB\xA8\xA1", + "\x90\xDF" => "\xEB\xA8\xA2", + "\x90\xE0" => "\xEB\xA8\xA3", + "\x90\xE1" => "\xEB\xA8\xA4", + "\x90\xE2" => "\xEB\xA8\xA5", + "\x90\xE3" => "\xEB\xA8\xA6", + "\x90\xE4" => "\xEB\xA8\xA7", + "\x90\xE5" => "\xEB\xA8\xA8", + "\x90\xE6" => "\xEB\xA8\xA9", + "\x90\xE7" => "\xEB\xA8\xAA", + "\x90\xE8" => "\xEB\xA8\xAB", + "\x90\xE9" => "\xEB\xA8\xAC", + "\x90\xEA" => "\xEB\xA8\xAD", + "\x90\xEB" => "\xEB\xA8\xAE", + "\x90\xEC" => "\xEB\xA8\xAF", + "\x90\xED" => "\xEB\xA8\xB0", + "\x90\xEE" => "\xEB\xA8\xB1", + "\x90\xEF" => "\xEB\xA8\xB2", + "\x90\xF0" => "\xEB\xA8\xB3", + "\x90\xF1" => "\xEB\xA8\xB4", + "\x90\xF2" => "\xEB\xA8\xB5", + "\x90\xF3" => "\xEB\xA8\xB6", + "\x90\xF4" => "\xEB\xA8\xB7", + "\x90\xF5" => "\xEB\xA8\xBA", + "\x90\xF6" => "\xEB\xA8\xBB", + "\x90\xF7" => "\xEB\xA8\xBD", + "\x90\xF8" => "\xEB\xA8\xBE", + "\x90\xF9" => "\xEB\xA8\xBF", + "\x90\xFA" => "\xEB\xA9\x81", + "\x90\xFB" => "\xEB\xA9\x83", + "\x90\xFC" => "\xEB\xA9\x84", + "\x90\xFD" => "\xEB\xA9\x85", + "\x90\xFE" => "\xEB\xA9\x86", + "\x91\x41" => "\xEB\xA9\x87", + "\x91\x42" => "\xEB\xA9\x8A", + "\x91\x43" => "\xEB\xA9\x8C", + "\x91\x44" => "\xEB\xA9\x8F", + "\x91\x45" => "\xEB\xA9\x90", + "\x91\x46" => "\xEB\xA9\x91", + "\x91\x47" => "\xEB\xA9\x92", + "\x91\x48" => "\xEB\xA9\x96", + "\x91\x49" => "\xEB\xA9\x97", + "\x91\x4A" => "\xEB\xA9\x99", + "\x91\x4B" => "\xEB\xA9\x9A", + "\x91\x4C" => "\xEB\xA9\x9B", + "\x91\x4D" => "\xEB\xA9\x9D", + "\x91\x4E" => "\xEB\xA9\x9E", + "\x91\x4F" => "\xEB\xA9\x9F", + "\x91\x50" => "\xEB\xA9\xA0", + "\x91\x51" => "\xEB\xA9\xA1", + "\x91\x52" => "\xEB\xA9\xA2", + "\x91\x53" => "\xEB\xA9\xA3", + "\x91\x54" => "\xEB\xA9\xA6", + "\x91\x55" => "\xEB\xA9\xAA", + "\x91\x56" => "\xEB\xA9\xAB", + "\x91\x57" => "\xEB\xA9\xAC", + "\x91\x58" => "\xEB\xA9\xAD", + "\x91\x59" => "\xEB\xA9\xAE", + "\x91\x5A" => "\xEB\xA9\xAF", + "\x91\x61" => "\xEB\xA9\xB2", + "\x91\x62" => "\xEB\xA9\xB3", + "\x91\x63" => "\xEB\xA9\xB5", + "\x91\x64" => "\xEB\xA9\xB6", + "\x91\x65" => "\xEB\xA9\xB7", + "\x91\x66" => "\xEB\xA9\xB9", + "\x91\x67" => "\xEB\xA9\xBA", + "\x91\x68" => "\xEB\xA9\xBB", + "\x91\x69" => "\xEB\xA9\xBC", + "\x91\x6A" => "\xEB\xA9\xBD", + "\x91\x6B" => "\xEB\xA9\xBE", + "\x91\x6C" => "\xEB\xA9\xBF", + "\x91\x6D" => "\xEB\xAA\x80", + "\x91\x6E" => "\xEB\xAA\x81", + "\x91\x6F" => "\xEB\xAA\x82", + "\x91\x70" => "\xEB\xAA\x86", + "\x91\x71" => "\xEB\xAA\x88", + "\x91\x72" => "\xEB\xAA\x89", + "\x91\x73" => "\xEB\xAA\x8A", + "\x91\x74" => "\xEB\xAA\x8B", + "\x91\x75" => "\xEB\xAA\x8D", + "\x91\x76" => "\xEB\xAA\x8E", + "\x91\x77" => "\xEB\xAA\x8F", + "\x91\x78" => "\xEB\xAA\x90", + "\x91\x79" => "\xEB\xAA\x91", + "\x91\x7A" => "\xEB\xAA\x92", + "\x91\x81" => "\xEB\xAA\x93", + "\x91\x82" => "\xEB\xAA\x94", + "\x91\x83" => "\xEB\xAA\x95", + "\x91\x84" => "\xEB\xAA\x96", + "\x91\x85" => "\xEB\xAA\x97", + "\x91\x86" => "\xEB\xAA\x98", + "\x91\x87" => "\xEB\xAA\x99", + "\x91\x88" => "\xEB\xAA\x9A", + "\x91\x89" => "\xEB\xAA\x9B", + "\x91\x8A" => "\xEB\xAA\x9C", + "\x91\x8B" => "\xEB\xAA\x9D", + "\x91\x8C" => "\xEB\xAA\x9E", + "\x91\x8D" => "\xEB\xAA\x9F", + "\x91\x8E" => "\xEB\xAA\xA0", + "\x91\x8F" => "\xEB\xAA\xA1", + "\x91\x90" => "\xEB\xAA\xA2", + "\x91\x91" => "\xEB\xAA\xA3", + "\x91\x92" => "\xEB\xAA\xA4", + "\x91\x93" => "\xEB\xAA\xA5", + "\x91\x94" => "\xEB\xAA\xA6", + "\x91\x95" => "\xEB\xAA\xA7", + "\x91\x96" => "\xEB\xAA\xAA", + "\x91\x97" => "\xEB\xAA\xAD", + "\x91\x98" => "\xEB\xAA\xAE", + "\x91\x99" => "\xEB\xAA\xAF", + "\x91\x9A" => "\xEB\xAA\xB1", + "\x91\x9B" => "\xEB\xAA\xB3", + "\x91\x9C" => "\xEB\xAA\xB4", + "\x91\x9D" => "\xEB\xAA\xB5", + "\x91\x9E" => "\xEB\xAA\xB6", + "\x91\x9F" => "\xEB\xAA\xB7", + "\x91\xA0" => "\xEB\xAA\xBA", + "\x91\xA1" => "\xEB\xAA\xBC", + "\x91\xA2" => "\xEB\xAA\xBE", + "\x91\xA3" => "\xEB\xAA\xBF", + "\x91\xA4" => "\xEB\xAB\x80", + "\x91\xA5" => "\xEB\xAB\x81", + "\x91\xA6" => "\xEB\xAB\x82", + "\x91\xA7" => "\xEB\xAB\x83", + "\x91\xA8" => "\xEB\xAB\x85", + "\x91\xA9" => "\xEB\xAB\x86", + "\x91\xAA" => "\xEB\xAB\x87", + "\x91\xAB" => "\xEB\xAB\x89", + "\x91\xAC" => "\xEB\xAB\x8A", + "\x91\xAD" => "\xEB\xAB\x8B", + "\x91\xAE" => "\xEB\xAB\x8C", + "\x91\xAF" => "\xEB\xAB\x8D", + "\x91\xB0" => "\xEB\xAB\x8E", + "\x91\xB1" => "\xEB\xAB\x8F", + "\x91\xB2" => "\xEB\xAB\x90", + "\x91\xB3" => "\xEB\xAB\x91", + "\x91\xB4" => "\xEB\xAB\x92", + "\x91\xB5" => "\xEB\xAB\x93", + "\x91\xB6" => "\xEB\xAB\x94", + "\x91\xB7" => "\xEB\xAB\x95", + "\x91\xB8" => "\xEB\xAB\x96", + "\x91\xB9" => "\xEB\xAB\x97", + "\x91\xBA" => "\xEB\xAB\x9A", + "\x91\xBB" => "\xEB\xAB\x9B", + "\x91\xBC" => "\xEB\xAB\x9C", + "\x91\xBD" => "\xEB\xAB\x9D", + "\x91\xBE" => "\xEB\xAB\x9E", + "\x91\xBF" => "\xEB\xAB\x9F", + "\x91\xC0" => "\xEB\xAB\xA0", + "\x91\xC1" => "\xEB\xAB\xA1", + "\x91\xC2" => "\xEB\xAB\xA2", + "\x91\xC3" => "\xEB\xAB\xA3", + "\x91\xC4" => "\xEB\xAB\xA4", + "\x91\xC5" => "\xEB\xAB\xA5", + "\x91\xC6" => "\xEB\xAB\xA6", + "\x91\xC7" => "\xEB\xAB\xA7", + "\x91\xC8" => "\xEB\xAB\xA8", + "\x91\xC9" => "\xEB\xAB\xA9", + "\x91\xCA" => "\xEB\xAB\xAA", + "\x91\xCB" => "\xEB\xAB\xAB", + "\x91\xCC" => "\xEB\xAB\xAC", + "\x91\xCD" => "\xEB\xAB\xAD", + "\x91\xCE" => "\xEB\xAB\xAE", + "\x91\xCF" => "\xEB\xAB\xAF", + "\x91\xD0" => "\xEB\xAB\xB0", + "\x91\xD1" => "\xEB\xAB\xB1", + "\x91\xD2" => "\xEB\xAB\xB2", + "\x91\xD3" => "\xEB\xAB\xB3", + "\x91\xD4" => "\xEB\xAB\xB4", + "\x91\xD5" => "\xEB\xAB\xB5", + "\x91\xD6" => "\xEB\xAB\xB6", + "\x91\xD7" => "\xEB\xAB\xB7", + "\x91\xD8" => "\xEB\xAB\xB8", + "\x91\xD9" => "\xEB\xAB\xB9", + "\x91\xDA" => "\xEB\xAB\xBA", + "\x91\xDB" => "\xEB\xAB\xBB", + "\x91\xDC" => "\xEB\xAB\xBD", + "\x91\xDD" => "\xEB\xAB\xBE", + "\x91\xDE" => "\xEB\xAB\xBF", + "\x91\xDF" => "\xEB\xAC\x81", + "\x91\xE0" => "\xEB\xAC\x82", + "\x91\xE1" => "\xEB\xAC\x83", + "\x91\xE2" => "\xEB\xAC\x85", + "\x91\xE3" => "\xEB\xAC\x86", + "\x91\xE4" => "\xEB\xAC\x87", + "\x91\xE5" => "\xEB\xAC\x88", + "\x91\xE6" => "\xEB\xAC\x89", + "\x91\xE7" => "\xEB\xAC\x8A", + "\x91\xE8" => "\xEB\xAC\x8B", + "\x91\xE9" => "\xEB\xAC\x8C", + "\x91\xEA" => "\xEB\xAC\x8E", + "\x91\xEB" => "\xEB\xAC\x90", + "\x91\xEC" => "\xEB\xAC\x92", + "\x91\xED" => "\xEB\xAC\x93", + "\x91\xEE" => "\xEB\xAC\x94", + "\x91\xEF" => "\xEB\xAC\x95", + "\x91\xF0" => "\xEB\xAC\x96", + "\x91\xF1" => "\xEB\xAC\x97", + "\x91\xF2" => "\xEB\xAC\x99", + "\x91\xF3" => "\xEB\xAC\x9A", + "\x91\xF4" => "\xEB\xAC\x9B", + "\x91\xF5" => "\xEB\xAC\x9D", + "\x91\xF6" => "\xEB\xAC\x9E", + "\x91\xF7" => "\xEB\xAC\x9F", + "\x91\xF8" => "\xEB\xAC\xA1", + "\x91\xF9" => "\xEB\xAC\xA2", + "\x91\xFA" => "\xEB\xAC\xA3", + "\x91\xFB" => "\xEB\xAC\xA4", + "\x91\xFC" => "\xEB\xAC\xA5", + "\x91\xFD" => "\xEB\xAC\xA6", + "\x91\xFE" => "\xEB\xAC\xA7", + "\x92\x41" => "\xEB\xAC\xA8", + "\x92\x42" => "\xEB\xAC\xAA", + "\x92\x43" => "\xEB\xAC\xAC", + "\x92\x44" => "\xEB\xAC\xAD", + "\x92\x45" => "\xEB\xAC\xAE", + "\x92\x46" => "\xEB\xAC\xAF", + "\x92\x47" => "\xEB\xAC\xB0", + "\x92\x48" => "\xEB\xAC\xB1", + "\x92\x49" => "\xEB\xAC\xB2", + "\x92\x4A" => "\xEB\xAC\xB3", + "\x92\x4B" => "\xEB\xAC\xB7", + "\x92\x4C" => "\xEB\xAC\xB9", + "\x92\x4D" => "\xEB\xAC\xBA", + "\x92\x4E" => "\xEB\xAC\xBF", + "\x92\x4F" => "\xEB\xAD\x80", + "\x92\x50" => "\xEB\xAD\x81", + "\x92\x51" => "\xEB\xAD\x82", + "\x92\x52" => "\xEB\xAD\x83", + "\x92\x53" => "\xEB\xAD\x86", + "\x92\x54" => "\xEB\xAD\x88", + "\x92\x55" => "\xEB\xAD\x8A", + "\x92\x56" => "\xEB\xAD\x8B", + "\x92\x57" => "\xEB\xAD\x8C", + "\x92\x58" => "\xEB\xAD\x8E", + "\x92\x59" => "\xEB\xAD\x91", + "\x92\x5A" => "\xEB\xAD\x92", + "\x92\x61" => "\xEB\xAD\x93", + "\x92\x62" => "\xEB\xAD\x95", + "\x92\x63" => "\xEB\xAD\x96", + "\x92\x64" => "\xEB\xAD\x97", + "\x92\x65" => "\xEB\xAD\x99", + "\x92\x66" => "\xEB\xAD\x9A", + "\x92\x67" => "\xEB\xAD\x9B", + "\x92\x68" => "\xEB\xAD\x9C", + "\x92\x69" => "\xEB\xAD\x9D", + "\x92\x6A" => "\xEB\xAD\x9E", + "\x92\x6B" => "\xEB\xAD\x9F", + "\x92\x6C" => "\xEB\xAD\xA0", + "\x92\x6D" => "\xEB\xAD\xA2", + "\x92\x6E" => "\xEB\xAD\xA4", + "\x92\x6F" => "\xEB\xAD\xA5", + "\x92\x70" => "\xEB\xAD\xA6", + "\x92\x71" => "\xEB\xAD\xA7", + "\x92\x72" => "\xEB\xAD\xA8", + "\x92\x73" => "\xEB\xAD\xA9", + "\x92\x74" => "\xEB\xAD\xAA", + "\x92\x75" => "\xEB\xAD\xAB", + "\x92\x76" => "\xEB\xAD\xAD", + "\x92\x77" => "\xEB\xAD\xAE", + "\x92\x78" => "\xEB\xAD\xAF", + "\x92\x79" => "\xEB\xAD\xB0", + "\x92\x7A" => "\xEB\xAD\xB1", + "\x92\x81" => "\xEB\xAD\xB2", + "\x92\x82" => "\xEB\xAD\xB3", + "\x92\x83" => "\xEB\xAD\xB4", + "\x92\x84" => "\xEB\xAD\xB5", + "\x92\x85" => "\xEB\xAD\xB6", + "\x92\x86" => "\xEB\xAD\xB7", + "\x92\x87" => "\xEB\xAD\xB8", + "\x92\x88" => "\xEB\xAD\xB9", + "\x92\x89" => "\xEB\xAD\xBA", + "\x92\x8A" => "\xEB\xAD\xBB", + "\x92\x8B" => "\xEB\xAD\xBC", + "\x92\x8C" => "\xEB\xAD\xBD", + "\x92\x8D" => "\xEB\xAD\xBE", + "\x92\x8E" => "\xEB\xAD\xBF", + "\x92\x8F" => "\xEB\xAE\x80", + "\x92\x90" => "\xEB\xAE\x81", + "\x92\x91" => "\xEB\xAE\x82", + "\x92\x92" => "\xEB\xAE\x83", + "\x92\x93" => "\xEB\xAE\x84", + "\x92\x94" => "\xEB\xAE\x85", + "\x92\x95" => "\xEB\xAE\x86", + "\x92\x96" => "\xEB\xAE\x87", + "\x92\x97" => "\xEB\xAE\x89", + "\x92\x98" => "\xEB\xAE\x8A", + "\x92\x99" => "\xEB\xAE\x8B", + "\x92\x9A" => "\xEB\xAE\x8D", + "\x92\x9B" => "\xEB\xAE\x8E", + "\x92\x9C" => "\xEB\xAE\x8F", + "\x92\x9D" => "\xEB\xAE\x91", + "\x92\x9E" => "\xEB\xAE\x92", + "\x92\x9F" => "\xEB\xAE\x93", + "\x92\xA0" => "\xEB\xAE\x94", + "\x92\xA1" => "\xEB\xAE\x95", + "\x92\xA2" => "\xEB\xAE\x96", + "\x92\xA3" => "\xEB\xAE\x97", + "\x92\xA4" => "\xEB\xAE\x98", + "\x92\xA5" => "\xEB\xAE\x99", + "\x92\xA6" => "\xEB\xAE\x9A", + "\x92\xA7" => "\xEB\xAE\x9B", + "\x92\xA8" => "\xEB\xAE\x9C", + "\x92\xA9" => "\xEB\xAE\x9D", + "\x92\xAA" => "\xEB\xAE\x9E", + "\x92\xAB" => "\xEB\xAE\x9F", + "\x92\xAC" => "\xEB\xAE\xA0", + "\x92\xAD" => "\xEB\xAE\xA1", + "\x92\xAE" => "\xEB\xAE\xA2", + "\x92\xAF" => "\xEB\xAE\xA3", + "\x92\xB0" => "\xEB\xAE\xA5", + "\x92\xB1" => "\xEB\xAE\xA6", + "\x92\xB2" => "\xEB\xAE\xA7", + "\x92\xB3" => "\xEB\xAE\xA9", + "\x92\xB4" => "\xEB\xAE\xAA", + "\x92\xB5" => "\xEB\xAE\xAB", + "\x92\xB6" => "\xEB\xAE\xAD", + "\x92\xB7" => "\xEB\xAE\xAE", + "\x92\xB8" => "\xEB\xAE\xAF", + "\x92\xB9" => "\xEB\xAE\xB0", + "\x92\xBA" => "\xEB\xAE\xB1", + "\x92\xBB" => "\xEB\xAE\xB2", + "\x92\xBC" => "\xEB\xAE\xB3", + "\x92\xBD" => "\xEB\xAE\xB5", + "\x92\xBE" => "\xEB\xAE\xB6", + "\x92\xBF" => "\xEB\xAE\xB8", + "\x92\xC0" => "\xEB\xAE\xB9", + "\x92\xC1" => "\xEB\xAE\xBA", + "\x92\xC2" => "\xEB\xAE\xBB", + "\x92\xC3" => "\xEB\xAE\xBC", + "\x92\xC4" => "\xEB\xAE\xBD", + "\x92\xC5" => "\xEB\xAE\xBE", + "\x92\xC6" => "\xEB\xAE\xBF", + "\x92\xC7" => "\xEB\xAF\x81", + "\x92\xC8" => "\xEB\xAF\x82", + "\x92\xC9" => "\xEB\xAF\x83", + "\x92\xCA" => "\xEB\xAF\x85", + "\x92\xCB" => "\xEB\xAF\x86", + "\x92\xCC" => "\xEB\xAF\x87", + "\x92\xCD" => "\xEB\xAF\x89", + "\x92\xCE" => "\xEB\xAF\x8A", + "\x92\xCF" => "\xEB\xAF\x8B", + "\x92\xD0" => "\xEB\xAF\x8C", + "\x92\xD1" => "\xEB\xAF\x8D", + "\x92\xD2" => "\xEB\xAF\x8E", + "\x92\xD3" => "\xEB\xAF\x8F", + "\x92\xD4" => "\xEB\xAF\x91", + "\x92\xD5" => "\xEB\xAF\x92", + "\x92\xD6" => "\xEB\xAF\x94", + "\x92\xD7" => "\xEB\xAF\x95", + "\x92\xD8" => "\xEB\xAF\x96", + "\x92\xD9" => "\xEB\xAF\x97", + "\x92\xDA" => "\xEB\xAF\x98", + "\x92\xDB" => "\xEB\xAF\x99", + "\x92\xDC" => "\xEB\xAF\x9A", + "\x92\xDD" => "\xEB\xAF\x9B", + "\x92\xDE" => "\xEB\xAF\x9C", + "\x92\xDF" => "\xEB\xAF\x9D", + "\x92\xE0" => "\xEB\xAF\x9E", + "\x92\xE1" => "\xEB\xAF\x9F", + "\x92\xE2" => "\xEB\xAF\xA0", + "\x92\xE3" => "\xEB\xAF\xA1", + "\x92\xE4" => "\xEB\xAF\xA2", + "\x92\xE5" => "\xEB\xAF\xA3", + "\x92\xE6" => "\xEB\xAF\xA4", + "\x92\xE7" => "\xEB\xAF\xA5", + "\x92\xE8" => "\xEB\xAF\xA6", + "\x92\xE9" => "\xEB\xAF\xA7", + "\x92\xEA" => "\xEB\xAF\xA8", + "\x92\xEB" => "\xEB\xAF\xA9", + "\x92\xEC" => "\xEB\xAF\xAA", + "\x92\xED" => "\xEB\xAF\xAB", + "\x92\xEE" => "\xEB\xAF\xAC", + "\x92\xEF" => "\xEB\xAF\xAD", + "\x92\xF0" => "\xEB\xAF\xAE", + "\x92\xF1" => "\xEB\xAF\xAF", + "\x92\xF2" => "\xEB\xAF\xB0", + "\x92\xF3" => "\xEB\xAF\xB1", + "\x92\xF4" => "\xEB\xAF\xB2", + "\x92\xF5" => "\xEB\xAF\xB3", + "\x92\xF6" => "\xEB\xAF\xB4", + "\x92\xF7" => "\xEB\xAF\xB5", + "\x92\xF8" => "\xEB\xAF\xB6", + "\x92\xF9" => "\xEB\xAF\xB7", + "\x92\xFA" => "\xEB\xAF\xBA", + "\x92\xFB" => "\xEB\xAF\xBB", + "\x92\xFC" => "\xEB\xAF\xBD", + "\x92\xFD" => "\xEB\xAF\xBE", + "\x92\xFE" => "\xEB\xB0\x81", + "\x93\x41" => "\xEB\xB0\x83", + "\x93\x42" => "\xEB\xB0\x84", + "\x93\x43" => "\xEB\xB0\x85", + "\x93\x44" => "\xEB\xB0\x86", + "\x93\x45" => "\xEB\xB0\x87", + "\x93\x46" => "\xEB\xB0\x8A", + "\x93\x47" => "\xEB\xB0\x8E", + "\x93\x48" => "\xEB\xB0\x90", + "\x93\x49" => "\xEB\xB0\x92", + "\x93\x4A" => "\xEB\xB0\x93", + "\x93\x4B" => "\xEB\xB0\x99", + "\x93\x4C" => "\xEB\xB0\x9A", + "\x93\x4D" => "\xEB\xB0\xA0", + "\x93\x4E" => "\xEB\xB0\xA1", + "\x93\x4F" => "\xEB\xB0\xA2", + "\x93\x50" => "\xEB\xB0\xA3", + "\x93\x51" => "\xEB\xB0\xA6", + "\x93\x52" => "\xEB\xB0\xA8", + "\x93\x53" => "\xEB\xB0\xAA", + "\x93\x54" => "\xEB\xB0\xAB", + "\x93\x55" => "\xEB\xB0\xAC", + "\x93\x56" => "\xEB\xB0\xAE", + "\x93\x57" => "\xEB\xB0\xAF", + "\x93\x58" => "\xEB\xB0\xB2", + "\x93\x59" => "\xEB\xB0\xB3", + "\x93\x5A" => "\xEB\xB0\xB5", + "\x93\x61" => "\xEB\xB0\xB6", + "\x93\x62" => "\xEB\xB0\xB7", + "\x93\x63" => "\xEB\xB0\xB9", + "\x93\x64" => "\xEB\xB0\xBA", + "\x93\x65" => "\xEB\xB0\xBB", + "\x93\x66" => "\xEB\xB0\xBC", + "\x93\x67" => "\xEB\xB0\xBD", + "\x93\x68" => "\xEB\xB0\xBE", + "\x93\x69" => "\xEB\xB0\xBF", + "\x93\x6A" => "\xEB\xB1\x82", + "\x93\x6B" => "\xEB\xB1\x86", + "\x93\x6C" => "\xEB\xB1\x87", + "\x93\x6D" => "\xEB\xB1\x88", + "\x93\x6E" => "\xEB\xB1\x8A", + "\x93\x6F" => "\xEB\xB1\x8B", + "\x93\x70" => "\xEB\xB1\x8E", + "\x93\x71" => "\xEB\xB1\x8F", + "\x93\x72" => "\xEB\xB1\x91", + "\x93\x73" => "\xEB\xB1\x92", + "\x93\x74" => "\xEB\xB1\x93", + "\x93\x75" => "\xEB\xB1\x94", + "\x93\x76" => "\xEB\xB1\x95", + "\x93\x77" => "\xEB\xB1\x96", + "\x93\x78" => "\xEB\xB1\x97", + "\x93\x79" => "\xEB\xB1\x98", + "\x93\x7A" => "\xEB\xB1\x99", + "\x93\x81" => "\xEB\xB1\x9A", + "\x93\x82" => "\xEB\xB1\x9B", + "\x93\x83" => "\xEB\xB1\x9C", + "\x93\x84" => "\xEB\xB1\x9E", + "\x93\x85" => "\xEB\xB1\x9F", + "\x93\x86" => "\xEB\xB1\xA0", + "\x93\x87" => "\xEB\xB1\xA1", + "\x93\x88" => "\xEB\xB1\xA2", + "\x93\x89" => "\xEB\xB1\xA3", + "\x93\x8A" => "\xEB\xB1\xA4", + "\x93\x8B" => "\xEB\xB1\xA5", + "\x93\x8C" => "\xEB\xB1\xA6", + "\x93\x8D" => "\xEB\xB1\xA7", + "\x93\x8E" => "\xEB\xB1\xA8", + "\x93\x8F" => "\xEB\xB1\xA9", + "\x93\x90" => "\xEB\xB1\xAA", + "\x93\x91" => "\xEB\xB1\xAB", + "\x93\x92" => "\xEB\xB1\xAC", + "\x93\x93" => "\xEB\xB1\xAD", + "\x93\x94" => "\xEB\xB1\xAE", + "\x93\x95" => "\xEB\xB1\xAF", + "\x93\x96" => "\xEB\xB1\xB0", + "\x93\x97" => "\xEB\xB1\xB1", + "\x93\x98" => "\xEB\xB1\xB2", + "\x93\x99" => "\xEB\xB1\xB3", + "\x93\x9A" => "\xEB\xB1\xB4", + "\x93\x9B" => "\xEB\xB1\xB5", + "\x93\x9C" => "\xEB\xB1\xB6", + "\x93\x9D" => "\xEB\xB1\xB7", + "\x93\x9E" => "\xEB\xB1\xB8", + "\x93\x9F" => "\xEB\xB1\xB9", + "\x93\xA0" => "\xEB\xB1\xBA", + "\x93\xA1" => "\xEB\xB1\xBB", + "\x93\xA2" => "\xEB\xB1\xBC", + "\x93\xA3" => "\xEB\xB1\xBD", + "\x93\xA4" => "\xEB\xB1\xBE", + "\x93\xA5" => "\xEB\xB1\xBF", + "\x93\xA6" => "\xEB\xB2\x80", + "\x93\xA7" => "\xEB\xB2\x81", + "\x93\xA8" => "\xEB\xB2\x82", + "\x93\xA9" => "\xEB\xB2\x83", + "\x93\xAA" => "\xEB\xB2\x86", + "\x93\xAB" => "\xEB\xB2\x87", + "\x93\xAC" => "\xEB\xB2\x89", + "\x93\xAD" => "\xEB\xB2\x8A", + "\x93\xAE" => "\xEB\xB2\x8D", + "\x93\xAF" => "\xEB\xB2\x8F", + "\x93\xB0" => "\xEB\xB2\x90", + "\x93\xB1" => "\xEB\xB2\x91", + "\x93\xB2" => "\xEB\xB2\x92", + "\x93\xB3" => "\xEB\xB2\x93", + "\x93\xB4" => "\xEB\xB2\x96", + "\x93\xB5" => "\xEB\xB2\x98", + "\x93\xB6" => "\xEB\xB2\x9B", + "\x93\xB7" => "\xEB\xB2\x9C", + "\x93\xB8" => "\xEB\xB2\x9D", + "\x93\xB9" => "\xEB\xB2\x9E", + "\x93\xBA" => "\xEB\xB2\x9F", + "\x93\xBB" => "\xEB\xB2\xA2", + "\x93\xBC" => "\xEB\xB2\xA3", + "\x93\xBD" => "\xEB\xB2\xA5", + "\x93\xBE" => "\xEB\xB2\xA6", + "\x93\xBF" => "\xEB\xB2\xA9", + "\x93\xC0" => "\xEB\xB2\xAA", + "\x93\xC1" => "\xEB\xB2\xAB", + "\x93\xC2" => "\xEB\xB2\xAC", + "\x93\xC3" => "\xEB\xB2\xAD", + "\x93\xC4" => "\xEB\xB2\xAE", + "\x93\xC5" => "\xEB\xB2\xAF", + "\x93\xC6" => "\xEB\xB2\xB2", + "\x93\xC7" => "\xEB\xB2\xB6", + "\x93\xC8" => "\xEB\xB2\xB7", + "\x93\xC9" => "\xEB\xB2\xB8", + "\x93\xCA" => "\xEB\xB2\xB9", + "\x93\xCB" => "\xEB\xB2\xBA", + "\x93\xCC" => "\xEB\xB2\xBB", + "\x93\xCD" => "\xEB\xB2\xBE", + "\x93\xCE" => "\xEB\xB2\xBF", + "\x93\xCF" => "\xEB\xB3\x81", + "\x93\xD0" => "\xEB\xB3\x82", + "\x93\xD1" => "\xEB\xB3\x83", + "\x93\xD2" => "\xEB\xB3\x85", + "\x93\xD3" => "\xEB\xB3\x86", + "\x93\xD4" => "\xEB\xB3\x87", + "\x93\xD5" => "\xEB\xB3\x88", + "\x93\xD6" => "\xEB\xB3\x89", + "\x93\xD7" => "\xEB\xB3\x8A", + "\x93\xD8" => "\xEB\xB3\x8B", + "\x93\xD9" => "\xEB\xB3\x8C", + "\x93\xDA" => "\xEB\xB3\x8E", + "\x93\xDB" => "\xEB\xB3\x92", + "\x93\xDC" => "\xEB\xB3\x93", + "\x93\xDD" => "\xEB\xB3\x94", + "\x93\xDE" => "\xEB\xB3\x96", + "\x93\xDF" => "\xEB\xB3\x97", + "\x93\xE0" => "\xEB\xB3\x99", + "\x93\xE1" => "\xEB\xB3\x9A", + "\x93\xE2" => "\xEB\xB3\x9B", + "\x93\xE3" => "\xEB\xB3\x9D", + "\x93\xE4" => "\xEB\xB3\x9E", + "\x93\xE5" => "\xEB\xB3\x9F", + "\x93\xE6" => "\xEB\xB3\xA0", + "\x93\xE7" => "\xEB\xB3\xA1", + "\x93\xE8" => "\xEB\xB3\xA2", + "\x93\xE9" => "\xEB\xB3\xA3", + "\x93\xEA" => "\xEB\xB3\xA4", + "\x93\xEB" => "\xEB\xB3\xA5", + "\x93\xEC" => "\xEB\xB3\xA6", + "\x93\xED" => "\xEB\xB3\xA7", + "\x93\xEE" => "\xEB\xB3\xA8", + "\x93\xEF" => "\xEB\xB3\xA9", + "\x93\xF0" => "\xEB\xB3\xAA", + "\x93\xF1" => "\xEB\xB3\xAB", + "\x93\xF2" => "\xEB\xB3\xAC", + "\x93\xF3" => "\xEB\xB3\xAD", + "\x93\xF4" => "\xEB\xB3\xAE", + "\x93\xF5" => "\xEB\xB3\xAF", + "\x93\xF6" => "\xEB\xB3\xB0", + "\x93\xF7" => "\xEB\xB3\xB1", + "\x93\xF8" => "\xEB\xB3\xB2", + "\x93\xF9" => "\xEB\xB3\xB3", + "\x93\xFA" => "\xEB\xB3\xB7", + "\x93\xFB" => "\xEB\xB3\xB9", + "\x93\xFC" => "\xEB\xB3\xBA", + "\x93\xFD" => "\xEB\xB3\xBB", + "\x93\xFE" => "\xEB\xB3\xBD", + "\x94\x41" => "\xEB\xB3\xBE", + "\x94\x42" => "\xEB\xB3\xBF", + "\x94\x43" => "\xEB\xB4\x80", + "\x94\x44" => "\xEB\xB4\x81", + "\x94\x45" => "\xEB\xB4\x82", + "\x94\x46" => "\xEB\xB4\x83", + "\x94\x47" => "\xEB\xB4\x86", + "\x94\x48" => "\xEB\xB4\x88", + "\x94\x49" => "\xEB\xB4\x8A", + "\x94\x4A" => "\xEB\xB4\x8B", + "\x94\x4B" => "\xEB\xB4\x8C", + "\x94\x4C" => "\xEB\xB4\x8D", + "\x94\x4D" => "\xEB\xB4\x8E", + "\x94\x4E" => "\xEB\xB4\x8F", + "\x94\x4F" => "\xEB\xB4\x91", + "\x94\x50" => "\xEB\xB4\x92", + "\x94\x51" => "\xEB\xB4\x93", + "\x94\x52" => "\xEB\xB4\x95", + "\x94\x53" => "\xEB\xB4\x96", + "\x94\x54" => "\xEB\xB4\x97", + "\x94\x55" => "\xEB\xB4\x98", + "\x94\x56" => "\xEB\xB4\x99", + "\x94\x57" => "\xEB\xB4\x9A", + "\x94\x58" => "\xEB\xB4\x9B", + "\x94\x59" => "\xEB\xB4\x9C", + "\x94\x5A" => "\xEB\xB4\x9D", + "\x94\x61" => "\xEB\xB4\x9E", + "\x94\x62" => "\xEB\xB4\x9F", + "\x94\x63" => "\xEB\xB4\xA0", + "\x94\x64" => "\xEB\xB4\xA1", + "\x94\x65" => "\xEB\xB4\xA2", + "\x94\x66" => "\xEB\xB4\xA3", + "\x94\x67" => "\xEB\xB4\xA5", + "\x94\x68" => "\xEB\xB4\xA6", + "\x94\x69" => "\xEB\xB4\xA7", + "\x94\x6A" => "\xEB\xB4\xA8", + "\x94\x6B" => "\xEB\xB4\xA9", + "\x94\x6C" => "\xEB\xB4\xAA", + "\x94\x6D" => "\xEB\xB4\xAB", + "\x94\x6E" => "\xEB\xB4\xAD", + "\x94\x6F" => "\xEB\xB4\xAE", + "\x94\x70" => "\xEB\xB4\xAF", + "\x94\x71" => "\xEB\xB4\xB0", + "\x94\x72" => "\xEB\xB4\xB1", + "\x94\x73" => "\xEB\xB4\xB2", + "\x94\x74" => "\xEB\xB4\xB3", + "\x94\x75" => "\xEB\xB4\xB4", + "\x94\x76" => "\xEB\xB4\xB5", + "\x94\x77" => "\xEB\xB4\xB6", + "\x94\x78" => "\xEB\xB4\xB7", + "\x94\x79" => "\xEB\xB4\xB8", + "\x94\x7A" => "\xEB\xB4\xB9", + "\x94\x81" => "\xEB\xB4\xBA", + "\x94\x82" => "\xEB\xB4\xBB", + "\x94\x83" => "\xEB\xB4\xBC", + "\x94\x84" => "\xEB\xB4\xBD", + "\x94\x85" => "\xEB\xB4\xBE", + "\x94\x86" => "\xEB\xB4\xBF", + "\x94\x87" => "\xEB\xB5\x81", + "\x94\x88" => "\xEB\xB5\x82", + "\x94\x89" => "\xEB\xB5\x83", + "\x94\x8A" => "\xEB\xB5\x84", + "\x94\x8B" => "\xEB\xB5\x85", + "\x94\x8C" => "\xEB\xB5\x86", + "\x94\x8D" => "\xEB\xB5\x87", + "\x94\x8E" => "\xEB\xB5\x8A", + "\x94\x8F" => "\xEB\xB5\x8B", + "\x94\x90" => "\xEB\xB5\x8D", + "\x94\x91" => "\xEB\xB5\x8E", + "\x94\x92" => "\xEB\xB5\x8F", + "\x94\x93" => "\xEB\xB5\x91", + "\x94\x94" => "\xEB\xB5\x92", + "\x94\x95" => "\xEB\xB5\x93", + "\x94\x96" => "\xEB\xB5\x94", + "\x94\x97" => "\xEB\xB5\x95", + "\x94\x98" => "\xEB\xB5\x96", + "\x94\x99" => "\xEB\xB5\x97", + "\x94\x9A" => "\xEB\xB5\x9A", + "\x94\x9B" => "\xEB\xB5\x9B", + "\x94\x9C" => "\xEB\xB5\x9C", + "\x94\x9D" => "\xEB\xB5\x9D", + "\x94\x9E" => "\xEB\xB5\x9E", + "\x94\x9F" => "\xEB\xB5\x9F", + "\x94\xA0" => "\xEB\xB5\xA0", + "\x94\xA1" => "\xEB\xB5\xA1", + "\x94\xA2" => "\xEB\xB5\xA2", + "\x94\xA3" => "\xEB\xB5\xA3", + "\x94\xA4" => "\xEB\xB5\xA5", + "\x94\xA5" => "\xEB\xB5\xA6", + "\x94\xA6" => "\xEB\xB5\xA7", + "\x94\xA7" => "\xEB\xB5\xA9", + "\x94\xA8" => "\xEB\xB5\xAA", + "\x94\xA9" => "\xEB\xB5\xAB", + "\x94\xAA" => "\xEB\xB5\xAC", + "\x94\xAB" => "\xEB\xB5\xAD", + "\x94\xAC" => "\xEB\xB5\xAE", + "\x94\xAD" => "\xEB\xB5\xAF", + "\x94\xAE" => "\xEB\xB5\xB0", + "\x94\xAF" => "\xEB\xB5\xB1", + "\x94\xB0" => "\xEB\xB5\xB2", + "\x94\xB1" => "\xEB\xB5\xB3", + "\x94\xB2" => "\xEB\xB5\xB4", + "\x94\xB3" => "\xEB\xB5\xB5", + "\x94\xB4" => "\xEB\xB5\xB6", + "\x94\xB5" => "\xEB\xB5\xB7", + "\x94\xB6" => "\xEB\xB5\xB8", + "\x94\xB7" => "\xEB\xB5\xB9", + "\x94\xB8" => "\xEB\xB5\xBA", + "\x94\xB9" => "\xEB\xB5\xBB", + "\x94\xBA" => "\xEB\xB5\xBC", + "\x94\xBB" => "\xEB\xB5\xBD", + "\x94\xBC" => "\xEB\xB5\xBE", + "\x94\xBD" => "\xEB\xB5\xBF", + "\x94\xBE" => "\xEB\xB6\x82", + "\x94\xBF" => "\xEB\xB6\x83", + "\x94\xC0" => "\xEB\xB6\x85", + "\x94\xC1" => "\xEB\xB6\x86", + "\x94\xC2" => "\xEB\xB6\x8B", + "\x94\xC3" => "\xEB\xB6\x8C", + "\x94\xC4" => "\xEB\xB6\x8D", + "\x94\xC5" => "\xEB\xB6\x8E", + "\x94\xC6" => "\xEB\xB6\x8F", + "\x94\xC7" => "\xEB\xB6\x92", + "\x94\xC8" => "\xEB\xB6\x94", + "\x94\xC9" => "\xEB\xB6\x96", + "\x94\xCA" => "\xEB\xB6\x97", + "\x94\xCB" => "\xEB\xB6\x98", + "\x94\xCC" => "\xEB\xB6\x9B", + "\x94\xCD" => "\xEB\xB6\x9D", + "\x94\xCE" => "\xEB\xB6\x9E", + "\x94\xCF" => "\xEB\xB6\x9F", + "\x94\xD0" => "\xEB\xB6\xA0", + "\x94\xD1" => "\xEB\xB6\xA1", + "\x94\xD2" => "\xEB\xB6\xA2", + "\x94\xD3" => "\xEB\xB6\xA3", + "\x94\xD4" => "\xEB\xB6\xA5", + "\x94\xD5" => "\xEB\xB6\xA6", + "\x94\xD6" => "\xEB\xB6\xA7", + "\x94\xD7" => "\xEB\xB6\xA8", + "\x94\xD8" => "\xEB\xB6\xA9", + "\x94\xD9" => "\xEB\xB6\xAA", + "\x94\xDA" => "\xEB\xB6\xAB", + "\x94\xDB" => "\xEB\xB6\xAC", + "\x94\xDC" => "\xEB\xB6\xAD", + "\x94\xDD" => "\xEB\xB6\xAE", + "\x94\xDE" => "\xEB\xB6\xAF", + "\x94\xDF" => "\xEB\xB6\xB1", + "\x94\xE0" => "\xEB\xB6\xB2", + "\x94\xE1" => "\xEB\xB6\xB3", + "\x94\xE2" => "\xEB\xB6\xB4", + "\x94\xE3" => "\xEB\xB6\xB5", + "\x94\xE4" => "\xEB\xB6\xB6", + "\x94\xE5" => "\xEB\xB6\xB7", + "\x94\xE6" => "\xEB\xB6\xB9", + "\x94\xE7" => "\xEB\xB6\xBA", + "\x94\xE8" => "\xEB\xB6\xBB", + "\x94\xE9" => "\xEB\xB6\xBC", + "\x94\xEA" => "\xEB\xB6\xBD", + "\x94\xEB" => "\xEB\xB6\xBE", + "\x94\xEC" => "\xEB\xB6\xBF", + "\x94\xED" => "\xEB\xB7\x80", + "\x94\xEE" => "\xEB\xB7\x81", + "\x94\xEF" => "\xEB\xB7\x82", + "\x94\xF0" => "\xEB\xB7\x83", + "\x94\xF1" => "\xEB\xB7\x84", + "\x94\xF2" => "\xEB\xB7\x85", + "\x94\xF3" => "\xEB\xB7\x86", + "\x94\xF4" => "\xEB\xB7\x87", + "\x94\xF5" => "\xEB\xB7\x88", + "\x94\xF6" => "\xEB\xB7\x89", + "\x94\xF7" => "\xEB\xB7\x8A", + "\x94\xF8" => "\xEB\xB7\x8B", + "\x94\xF9" => "\xEB\xB7\x8C", + "\x94\xFA" => "\xEB\xB7\x8D", + "\x94\xFB" => "\xEB\xB7\x8E", + "\x94\xFC" => "\xEB\xB7\x8F", + "\x94\xFD" => "\xEB\xB7\x90", + "\x94\xFE" => "\xEB\xB7\x91", + "\x95\x41" => "\xEB\xB7\x92", + "\x95\x42" => "\xEB\xB7\x93", + "\x95\x43" => "\xEB\xB7\x96", + "\x95\x44" => "\xEB\xB7\x97", + "\x95\x45" => "\xEB\xB7\x99", + "\x95\x46" => "\xEB\xB7\x9A", + "\x95\x47" => "\xEB\xB7\x9B", + "\x95\x48" => "\xEB\xB7\x9D", + "\x95\x49" => "\xEB\xB7\x9E", + "\x95\x4A" => "\xEB\xB7\x9F", + "\x95\x4B" => "\xEB\xB7\xA0", + "\x95\x4C" => "\xEB\xB7\xA1", + "\x95\x4D" => "\xEB\xB7\xA2", + "\x95\x4E" => "\xEB\xB7\xA3", + "\x95\x4F" => "\xEB\xB7\xA4", + "\x95\x50" => "\xEB\xB7\xA5", + "\x95\x51" => "\xEB\xB7\xA6", + "\x95\x52" => "\xEB\xB7\xA7", + "\x95\x53" => "\xEB\xB7\xA8", + "\x95\x54" => "\xEB\xB7\xAA", + "\x95\x55" => "\xEB\xB7\xAB", + "\x95\x56" => "\xEB\xB7\xAC", + "\x95\x57" => "\xEB\xB7\xAD", + "\x95\x58" => "\xEB\xB7\xAE", + "\x95\x59" => "\xEB\xB7\xAF", + "\x95\x5A" => "\xEB\xB7\xB1", + "\x95\x61" => "\xEB\xB7\xB2", + "\x95\x62" => "\xEB\xB7\xB3", + "\x95\x63" => "\xEB\xB7\xB5", + "\x95\x64" => "\xEB\xB7\xB6", + "\x95\x65" => "\xEB\xB7\xB7", + "\x95\x66" => "\xEB\xB7\xB9", + "\x95\x67" => "\xEB\xB7\xBA", + "\x95\x68" => "\xEB\xB7\xBB", + "\x95\x69" => "\xEB\xB7\xBC", + "\x95\x6A" => "\xEB\xB7\xBD", + "\x95\x6B" => "\xEB\xB7\xBE", + "\x95\x6C" => "\xEB\xB7\xBF", + "\x95\x6D" => "\xEB\xB8\x81", + "\x95\x6E" => "\xEB\xB8\x82", + "\x95\x6F" => "\xEB\xB8\x84", + "\x95\x70" => "\xEB\xB8\x86", + "\x95\x71" => "\xEB\xB8\x87", + "\x95\x72" => "\xEB\xB8\x88", + "\x95\x73" => "\xEB\xB8\x89", + "\x95\x74" => "\xEB\xB8\x8A", + "\x95\x75" => "\xEB\xB8\x8B", + "\x95\x76" => "\xEB\xB8\x8E", + "\x95\x77" => "\xEB\xB8\x8F", + "\x95\x78" => "\xEB\xB8\x91", + "\x95\x79" => "\xEB\xB8\x92", + "\x95\x7A" => "\xEB\xB8\x93", + "\x95\x81" => "\xEB\xB8\x95", + "\x95\x82" => "\xEB\xB8\x96", + "\x95\x83" => "\xEB\xB8\x97", + "\x95\x84" => "\xEB\xB8\x98", + "\x95\x85" => "\xEB\xB8\x99", + "\x95\x86" => "\xEB\xB8\x9A", + "\x95\x87" => "\xEB\xB8\x9B", + "\x95\x88" => "\xEB\xB8\x9E", + "\x95\x89" => "\xEB\xB8\xA0", + "\x95\x8A" => "\xEB\xB8\xA1", + "\x95\x8B" => "\xEB\xB8\xA2", + "\x95\x8C" => "\xEB\xB8\xA3", + "\x95\x8D" => "\xEB\xB8\xA4", + "\x95\x8E" => "\xEB\xB8\xA5", + "\x95\x8F" => "\xEB\xB8\xA6", + "\x95\x90" => "\xEB\xB8\xA7", + "\x95\x91" => "\xEB\xB8\xA8", + "\x95\x92" => "\xEB\xB8\xA9", + "\x95\x93" => "\xEB\xB8\xAA", + "\x95\x94" => "\xEB\xB8\xAB", + "\x95\x95" => "\xEB\xB8\xAC", + "\x95\x96" => "\xEB\xB8\xAD", + "\x95\x97" => "\xEB\xB8\xAE", + "\x95\x98" => "\xEB\xB8\xAF", + "\x95\x99" => "\xEB\xB8\xB0", + "\x95\x9A" => "\xEB\xB8\xB1", + "\x95\x9B" => "\xEB\xB8\xB2", + "\x95\x9C" => "\xEB\xB8\xB3", + "\x95\x9D" => "\xEB\xB8\xB4", + "\x95\x9E" => "\xEB\xB8\xB5", + "\x95\x9F" => "\xEB\xB8\xB6", + "\x95\xA0" => "\xEB\xB8\xB7", + "\x95\xA1" => "\xEB\xB8\xB8", + "\x95\xA2" => "\xEB\xB8\xB9", + "\x95\xA3" => "\xEB\xB8\xBA", + "\x95\xA4" => "\xEB\xB8\xBB", + "\x95\xA5" => "\xEB\xB8\xBC", + "\x95\xA6" => "\xEB\xB8\xBD", + "\x95\xA7" => "\xEB\xB8\xBE", + "\x95\xA8" => "\xEB\xB8\xBF", + "\x95\xA9" => "\xEB\xB9\x80", + "\x95\xAA" => "\xEB\xB9\x81", + "\x95\xAB" => "\xEB\xB9\x82", + "\x95\xAC" => "\xEB\xB9\x83", + "\x95\xAD" => "\xEB\xB9\x86", + "\x95\xAE" => "\xEB\xB9\x87", + "\x95\xAF" => "\xEB\xB9\x89", + "\x95\xB0" => "\xEB\xB9\x8A", + "\x95\xB1" => "\xEB\xB9\x8B", + "\x95\xB2" => "\xEB\xB9\x8D", + "\x95\xB3" => "\xEB\xB9\x8F", + "\x95\xB4" => "\xEB\xB9\x90", + "\x95\xB5" => "\xEB\xB9\x91", + "\x95\xB6" => "\xEB\xB9\x92", + "\x95\xB7" => "\xEB\xB9\x93", + "\x95\xB8" => "\xEB\xB9\x96", + "\x95\xB9" => "\xEB\xB9\x98", + "\x95\xBA" => "\xEB\xB9\x9C", + "\x95\xBB" => "\xEB\xB9\x9D", + "\x95\xBC" => "\xEB\xB9\x9E", + "\x95\xBD" => "\xEB\xB9\x9F", + "\x95\xBE" => "\xEB\xB9\xA2", + "\x95\xBF" => "\xEB\xB9\xA3", + "\x95\xC0" => "\xEB\xB9\xA5", + "\x95\xC1" => "\xEB\xB9\xA6", + "\x95\xC2" => "\xEB\xB9\xA7", + "\x95\xC3" => "\xEB\xB9\xA9", + "\x95\xC4" => "\xEB\xB9\xAB", + "\x95\xC5" => "\xEB\xB9\xAC", + "\x95\xC6" => "\xEB\xB9\xAD", + "\x95\xC7" => "\xEB\xB9\xAE", + "\x95\xC8" => "\xEB\xB9\xAF", + "\x95\xC9" => "\xEB\xB9\xB2", + "\x95\xCA" => "\xEB\xB9\xB6", + "\x95\xCB" => "\xEB\xB9\xB7", + "\x95\xCC" => "\xEB\xB9\xB8", + "\x95\xCD" => "\xEB\xB9\xB9", + "\x95\xCE" => "\xEB\xB9\xBA", + "\x95\xCF" => "\xEB\xB9\xBE", + "\x95\xD0" => "\xEB\xB9\xBF", + "\x95\xD1" => "\xEB\xBA\x81", + "\x95\xD2" => "\xEB\xBA\x82", + "\x95\xD3" => "\xEB\xBA\x83", + "\x95\xD4" => "\xEB\xBA\x85", + "\x95\xD5" => "\xEB\xBA\x86", + "\x95\xD6" => "\xEB\xBA\x87", + "\x95\xD7" => "\xEB\xBA\x88", + "\x95\xD8" => "\xEB\xBA\x89", + "\x95\xD9" => "\xEB\xBA\x8A", + "\x95\xDA" => "\xEB\xBA\x8B", + "\x95\xDB" => "\xEB\xBA\x8E", + "\x95\xDC" => "\xEB\xBA\x92", + "\x95\xDD" => "\xEB\xBA\x93", + "\x95\xDE" => "\xEB\xBA\x94", + "\x95\xDF" => "\xEB\xBA\x95", + "\x95\xE0" => "\xEB\xBA\x96", + "\x95\xE1" => "\xEB\xBA\x97", + "\x95\xE2" => "\xEB\xBA\x9A", + "\x95\xE3" => "\xEB\xBA\x9B", + "\x95\xE4" => "\xEB\xBA\x9C", + "\x95\xE5" => "\xEB\xBA\x9D", + "\x95\xE6" => "\xEB\xBA\x9E", + "\x95\xE7" => "\xEB\xBA\x9F", + "\x95\xE8" => "\xEB\xBA\xA0", + "\x95\xE9" => "\xEB\xBA\xA1", + "\x95\xEA" => "\xEB\xBA\xA2", + "\x95\xEB" => "\xEB\xBA\xA3", + "\x95\xEC" => "\xEB\xBA\xA4", + "\x95\xED" => "\xEB\xBA\xA5", + "\x95\xEE" => "\xEB\xBA\xA6", + "\x95\xEF" => "\xEB\xBA\xA7", + "\x95\xF0" => "\xEB\xBA\xA9", + "\x95\xF1" => "\xEB\xBA\xAA", + "\x95\xF2" => "\xEB\xBA\xAB", + "\x95\xF3" => "\xEB\xBA\xAC", + "\x95\xF4" => "\xEB\xBA\xAD", + "\x95\xF5" => "\xEB\xBA\xAE", + "\x95\xF6" => "\xEB\xBA\xAF", + "\x95\xF7" => "\xEB\xBA\xB0", + "\x95\xF8" => "\xEB\xBA\xB1", + "\x95\xF9" => "\xEB\xBA\xB2", + "\x95\xFA" => "\xEB\xBA\xB3", + "\x95\xFB" => "\xEB\xBA\xB4", + "\x95\xFC" => "\xEB\xBA\xB5", + "\x95\xFD" => "\xEB\xBA\xB6", + "\x95\xFE" => "\xEB\xBA\xB7", + "\x96\x41" => "\xEB\xBA\xB8", + "\x96\x42" => "\xEB\xBA\xB9", + "\x96\x43" => "\xEB\xBA\xBA", + "\x96\x44" => "\xEB\xBA\xBB", + "\x96\x45" => "\xEB\xBA\xBC", + "\x96\x46" => "\xEB\xBA\xBD", + "\x96\x47" => "\xEB\xBA\xBE", + "\x96\x48" => "\xEB\xBA\xBF", + "\x96\x49" => "\xEB\xBB\x80", + "\x96\x4A" => "\xEB\xBB\x81", + "\x96\x4B" => "\xEB\xBB\x82", + "\x96\x4C" => "\xEB\xBB\x83", + "\x96\x4D" => "\xEB\xBB\x84", + "\x96\x4E" => "\xEB\xBB\x85", + "\x96\x4F" => "\xEB\xBB\x86", + "\x96\x50" => "\xEB\xBB\x87", + "\x96\x51" => "\xEB\xBB\x88", + "\x96\x52" => "\xEB\xBB\x89", + "\x96\x53" => "\xEB\xBB\x8A", + "\x96\x54" => "\xEB\xBB\x8B", + "\x96\x55" => "\xEB\xBB\x8C", + "\x96\x56" => "\xEB\xBB\x8D", + "\x96\x57" => "\xEB\xBB\x8E", + "\x96\x58" => "\xEB\xBB\x8F", + "\x96\x59" => "\xEB\xBB\x92", + "\x96\x5A" => "\xEB\xBB\x93", + "\x96\x61" => "\xEB\xBB\x95", + "\x96\x62" => "\xEB\xBB\x96", + "\x96\x63" => "\xEB\xBB\x99", + "\x96\x64" => "\xEB\xBB\x9A", + "\x96\x65" => "\xEB\xBB\x9B", + "\x96\x66" => "\xEB\xBB\x9C", + "\x96\x67" => "\xEB\xBB\x9D", + "\x96\x68" => "\xEB\xBB\x9E", + "\x96\x69" => "\xEB\xBB\x9F", + "\x96\x6A" => "\xEB\xBB\xA1", + "\x96\x6B" => "\xEB\xBB\xA2", + "\x96\x6C" => "\xEB\xBB\xA6", + "\x96\x6D" => "\xEB\xBB\xA7", + "\x96\x6E" => "\xEB\xBB\xA8", + "\x96\x6F" => "\xEB\xBB\xA9", + "\x96\x70" => "\xEB\xBB\xAA", + "\x96\x71" => "\xEB\xBB\xAB", + "\x96\x72" => "\xEB\xBB\xAD", + "\x96\x73" => "\xEB\xBB\xAE", + "\x96\x74" => "\xEB\xBB\xAF", + "\x96\x75" => "\xEB\xBB\xB0", + "\x96\x76" => "\xEB\xBB\xB1", + "\x96\x77" => "\xEB\xBB\xB2", + "\x96\x78" => "\xEB\xBB\xB3", + "\x96\x79" => "\xEB\xBB\xB4", + "\x96\x7A" => "\xEB\xBB\xB5", + "\x96\x81" => "\xEB\xBB\xB6", + "\x96\x82" => "\xEB\xBB\xB7", + "\x96\x83" => "\xEB\xBB\xB8", + "\x96\x84" => "\xEB\xBB\xB9", + "\x96\x85" => "\xEB\xBB\xBA", + "\x96\x86" => "\xEB\xBB\xBB", + "\x96\x87" => "\xEB\xBB\xBC", + "\x96\x88" => "\xEB\xBB\xBD", + "\x96\x89" => "\xEB\xBB\xBE", + "\x96\x8A" => "\xEB\xBB\xBF", + "\x96\x8B" => "\xEB\xBC\x80", + "\x96\x8C" => "\xEB\xBC\x82", + "\x96\x8D" => "\xEB\xBC\x83", + "\x96\x8E" => "\xEB\xBC\x84", + "\x96\x8F" => "\xEB\xBC\x85", + "\x96\x90" => "\xEB\xBC\x86", + "\x96\x91" => "\xEB\xBC\x87", + "\x96\x92" => "\xEB\xBC\x8A", + "\x96\x93" => "\xEB\xBC\x8B", + "\x96\x94" => "\xEB\xBC\x8C", + "\x96\x95" => "\xEB\xBC\x8D", + "\x96\x96" => "\xEB\xBC\x8E", + "\x96\x97" => "\xEB\xBC\x8F", + "\x96\x98" => "\xEB\xBC\x90", + "\x96\x99" => "\xEB\xBC\x91", + "\x96\x9A" => "\xEB\xBC\x92", + "\x96\x9B" => "\xEB\xBC\x93", + "\x96\x9C" => "\xEB\xBC\x94", + "\x96\x9D" => "\xEB\xBC\x95", + "\x96\x9E" => "\xEB\xBC\x96", + "\x96\x9F" => "\xEB\xBC\x97", + "\x96\xA0" => "\xEB\xBC\x9A", + "\x96\xA1" => "\xEB\xBC\x9E", + "\x96\xA2" => "\xEB\xBC\x9F", + "\x96\xA3" => "\xEB\xBC\xA0", + "\x96\xA4" => "\xEB\xBC\xA1", + "\x96\xA5" => "\xEB\xBC\xA2", + "\x96\xA6" => "\xEB\xBC\xA3", + "\x96\xA7" => "\xEB\xBC\xA4", + "\x96\xA8" => "\xEB\xBC\xA5", + "\x96\xA9" => "\xEB\xBC\xA6", + "\x96\xAA" => "\xEB\xBC\xA7", + "\x96\xAB" => "\xEB\xBC\xA8", + "\x96\xAC" => "\xEB\xBC\xA9", + "\x96\xAD" => "\xEB\xBC\xAA", + "\x96\xAE" => "\xEB\xBC\xAB", + "\x96\xAF" => "\xEB\xBC\xAC", + "\x96\xB0" => "\xEB\xBC\xAD", + "\x96\xB1" => "\xEB\xBC\xAE", + "\x96\xB2" => "\xEB\xBC\xAF", + "\x96\xB3" => "\xEB\xBC\xB0", + "\x96\xB4" => "\xEB\xBC\xB1", + "\x96\xB5" => "\xEB\xBC\xB2", + "\x96\xB6" => "\xEB\xBC\xB3", + "\x96\xB7" => "\xEB\xBC\xB4", + "\x96\xB8" => "\xEB\xBC\xB5", + "\x96\xB9" => "\xEB\xBC\xB6", + "\x96\xBA" => "\xEB\xBC\xB7", + "\x96\xBB" => "\xEB\xBC\xB8", + "\x96\xBC" => "\xEB\xBC\xB9", + "\x96\xBD" => "\xEB\xBC\xBA", + "\x96\xBE" => "\xEB\xBC\xBB", + "\x96\xBF" => "\xEB\xBC\xBC", + "\x96\xC0" => "\xEB\xBC\xBD", + "\x96\xC1" => "\xEB\xBC\xBE", + "\x96\xC2" => "\xEB\xBC\xBF", + "\x96\xC3" => "\xEB\xBD\x82", + "\x96\xC4" => "\xEB\xBD\x83", + "\x96\xC5" => "\xEB\xBD\x85", + "\x96\xC6" => "\xEB\xBD\x86", + "\x96\xC7" => "\xEB\xBD\x87", + "\x96\xC8" => "\xEB\xBD\x89", + "\x96\xC9" => "\xEB\xBD\x8A", + "\x96\xCA" => "\xEB\xBD\x8B", + "\x96\xCB" => "\xEB\xBD\x8C", + "\x96\xCC" => "\xEB\xBD\x8D", + "\x96\xCD" => "\xEB\xBD\x8E", + "\x96\xCE" => "\xEB\xBD\x8F", + "\x96\xCF" => "\xEB\xBD\x92", + "\x96\xD0" => "\xEB\xBD\x93", + "\x96\xD1" => "\xEB\xBD\x94", + "\x96\xD2" => "\xEB\xBD\x96", + "\x96\xD3" => "\xEB\xBD\x97", + "\x96\xD4" => "\xEB\xBD\x98", + "\x96\xD5" => "\xEB\xBD\x99", + "\x96\xD6" => "\xEB\xBD\x9A", + "\x96\xD7" => "\xEB\xBD\x9B", + "\x96\xD8" => "\xEB\xBD\x9C", + "\x96\xD9" => "\xEB\xBD\x9D", + "\x96\xDA" => "\xEB\xBD\x9E", + "\x96\xDB" => "\xEB\xBD\x9F", + "\x96\xDC" => "\xEB\xBD\xA0", + "\x96\xDD" => "\xEB\xBD\xA1", + "\x96\xDE" => "\xEB\xBD\xA2", + "\x96\xDF" => "\xEB\xBD\xA3", + "\x96\xE0" => "\xEB\xBD\xA4", + "\x96\xE1" => "\xEB\xBD\xA5", + "\x96\xE2" => "\xEB\xBD\xA6", + "\x96\xE3" => "\xEB\xBD\xA7", + "\x96\xE4" => "\xEB\xBD\xA8", + "\x96\xE5" => "\xEB\xBD\xA9", + "\x96\xE6" => "\xEB\xBD\xAA", + "\x96\xE7" => "\xEB\xBD\xAB", + "\x96\xE8" => "\xEB\xBD\xAC", + "\x96\xE9" => "\xEB\xBD\xAD", + "\x96\xEA" => "\xEB\xBD\xAE", + "\x96\xEB" => "\xEB\xBD\xAF", + "\x96\xEC" => "\xEB\xBD\xB0", + "\x96\xED" => "\xEB\xBD\xB1", + "\x96\xEE" => "\xEB\xBD\xB2", + "\x96\xEF" => "\xEB\xBD\xB3", + "\x96\xF0" => "\xEB\xBD\xB4", + "\x96\xF1" => "\xEB\xBD\xB5", + "\x96\xF2" => "\xEB\xBD\xB6", + "\x96\xF3" => "\xEB\xBD\xB7", + "\x96\xF4" => "\xEB\xBD\xB8", + "\x96\xF5" => "\xEB\xBD\xB9", + "\x96\xF6" => "\xEB\xBD\xBA", + "\x96\xF7" => "\xEB\xBD\xBB", + "\x96\xF8" => "\xEB\xBD\xBC", + "\x96\xF9" => "\xEB\xBD\xBD", + "\x96\xFA" => "\xEB\xBD\xBE", + "\x96\xFB" => "\xEB\xBD\xBF", + "\x96\xFC" => "\xEB\xBE\x80", + "\x96\xFD" => "\xEB\xBE\x81", + "\x96\xFE" => "\xEB\xBE\x82", + "\x97\x41" => "\xEB\xBE\x83", + "\x97\x42" => "\xEB\xBE\x84", + "\x97\x43" => "\xEB\xBE\x85", + "\x97\x44" => "\xEB\xBE\x86", + "\x97\x45" => "\xEB\xBE\x87", + "\x97\x46" => "\xEB\xBE\x88", + "\x97\x47" => "\xEB\xBE\x89", + "\x97\x48" => "\xEB\xBE\x8A", + "\x97\x49" => "\xEB\xBE\x8B", + "\x97\x4A" => "\xEB\xBE\x8C", + "\x97\x4B" => "\xEB\xBE\x8D", + "\x97\x4C" => "\xEB\xBE\x8E", + "\x97\x4D" => "\xEB\xBE\x8F", + "\x97\x4E" => "\xEB\xBE\x90", + "\x97\x4F" => "\xEB\xBE\x91", + "\x97\x50" => "\xEB\xBE\x92", + "\x97\x51" => "\xEB\xBE\x93", + "\x97\x52" => "\xEB\xBE\x95", + "\x97\x53" => "\xEB\xBE\x96", + "\x97\x54" => "\xEB\xBE\x97", + "\x97\x55" => "\xEB\xBE\x98", + "\x97\x56" => "\xEB\xBE\x99", + "\x97\x57" => "\xEB\xBE\x9A", + "\x97\x58" => "\xEB\xBE\x9B", + "\x97\x59" => "\xEB\xBE\x9C", + "\x97\x5A" => "\xEB\xBE\x9D", + "\x97\x61" => "\xEB\xBE\x9E", + "\x97\x62" => "\xEB\xBE\x9F", + "\x97\x63" => "\xEB\xBE\xA0", + "\x97\x64" => "\xEB\xBE\xA1", + "\x97\x65" => "\xEB\xBE\xA2", + "\x97\x66" => "\xEB\xBE\xA3", + "\x97\x67" => "\xEB\xBE\xA4", + "\x97\x68" => "\xEB\xBE\xA5", + "\x97\x69" => "\xEB\xBE\xA6", + "\x97\x6A" => "\xEB\xBE\xA7", + "\x97\x6B" => "\xEB\xBE\xA8", + "\x97\x6C" => "\xEB\xBE\xA9", + "\x97\x6D" => "\xEB\xBE\xAA", + "\x97\x6E" => "\xEB\xBE\xAB", + "\x97\x6F" => "\xEB\xBE\xAC", + "\x97\x70" => "\xEB\xBE\xAD", + "\x97\x71" => "\xEB\xBE\xAE", + "\x97\x72" => "\xEB\xBE\xAF", + "\x97\x73" => "\xEB\xBE\xB1", + "\x97\x74" => "\xEB\xBE\xB2", + "\x97\x75" => "\xEB\xBE\xB3", + "\x97\x76" => "\xEB\xBE\xB4", + "\x97\x77" => "\xEB\xBE\xB5", + "\x97\x78" => "\xEB\xBE\xB6", + "\x97\x79" => "\xEB\xBE\xB7", + "\x97\x7A" => "\xEB\xBE\xB8", + "\x97\x81" => "\xEB\xBE\xB9", + "\x97\x82" => "\xEB\xBE\xBA", + "\x97\x83" => "\xEB\xBE\xBB", + "\x97\x84" => "\xEB\xBE\xBC", + "\x97\x85" => "\xEB\xBE\xBD", + "\x97\x86" => "\xEB\xBE\xBE", + "\x97\x87" => "\xEB\xBE\xBF", + "\x97\x88" => "\xEB\xBF\x80", + "\x97\x89" => "\xEB\xBF\x81", + "\x97\x8A" => "\xEB\xBF\x82", + "\x97\x8B" => "\xEB\xBF\x83", + "\x97\x8C" => "\xEB\xBF\x84", + "\x97\x8D" => "\xEB\xBF\x86", + "\x97\x8E" => "\xEB\xBF\x87", + "\x97\x8F" => "\xEB\xBF\x88", + "\x97\x90" => "\xEB\xBF\x89", + "\x97\x91" => "\xEB\xBF\x8A", + "\x97\x92" => "\xEB\xBF\x8B", + "\x97\x93" => "\xEB\xBF\x8E", + "\x97\x94" => "\xEB\xBF\x8F", + "\x97\x95" => "\xEB\xBF\x91", + "\x97\x96" => "\xEB\xBF\x92", + "\x97\x97" => "\xEB\xBF\x93", + "\x97\x98" => "\xEB\xBF\x95", + "\x97\x99" => "\xEB\xBF\x96", + "\x97\x9A" => "\xEB\xBF\x97", + "\x97\x9B" => "\xEB\xBF\x98", + "\x97\x9C" => "\xEB\xBF\x99", + "\x97\x9D" => "\xEB\xBF\x9A", + "\x97\x9E" => "\xEB\xBF\x9B", + "\x97\x9F" => "\xEB\xBF\x9D", + "\x97\xA0" => "\xEB\xBF\x9E", + "\x97\xA1" => "\xEB\xBF\xA0", + "\x97\xA2" => "\xEB\xBF\xA2", + "\x97\xA3" => "\xEB\xBF\xA3", + "\x97\xA4" => "\xEB\xBF\xA4", + "\x97\xA5" => "\xEB\xBF\xA5", + "\x97\xA6" => "\xEB\xBF\xA6", + "\x97\xA7" => "\xEB\xBF\xA7", + "\x97\xA8" => "\xEB\xBF\xA8", + "\x97\xA9" => "\xEB\xBF\xA9", + "\x97\xAA" => "\xEB\xBF\xAA", + "\x97\xAB" => "\xEB\xBF\xAB", + "\x97\xAC" => "\xEB\xBF\xAC", + "\x97\xAD" => "\xEB\xBF\xAD", + "\x97\xAE" => "\xEB\xBF\xAE", + "\x97\xAF" => "\xEB\xBF\xAF", + "\x97\xB0" => "\xEB\xBF\xB0", + "\x97\xB1" => "\xEB\xBF\xB1", + "\x97\xB2" => "\xEB\xBF\xB2", + "\x97\xB3" => "\xEB\xBF\xB3", + "\x97\xB4" => "\xEB\xBF\xB4", + "\x97\xB5" => "\xEB\xBF\xB5", + "\x97\xB6" => "\xEB\xBF\xB6", + "\x97\xB7" => "\xEB\xBF\xB7", + "\x97\xB8" => "\xEB\xBF\xB8", + "\x97\xB9" => "\xEB\xBF\xB9", + "\x97\xBA" => "\xEB\xBF\xBA", + "\x97\xBB" => "\xEB\xBF\xBB", + "\x97\xBC" => "\xEB\xBF\xBC", + "\x97\xBD" => "\xEB\xBF\xBD", + "\x97\xBE" => "\xEB\xBF\xBE", + "\x97\xBF" => "\xEB\xBF\xBF", + "\x97\xC0" => "\xEC\x80\x80", + "\x97\xC1" => "\xEC\x80\x81", + "\x97\xC2" => "\xEC\x80\x82", + "\x97\xC3" => "\xEC\x80\x83", + "\x97\xC4" => "\xEC\x80\x84", + "\x97\xC5" => "\xEC\x80\x85", + "\x97\xC6" => "\xEC\x80\x86", + "\x97\xC7" => "\xEC\x80\x87", + "\x97\xC8" => "\xEC\x80\x88", + "\x97\xC9" => "\xEC\x80\x89", + "\x97\xCA" => "\xEC\x80\x8A", + "\x97\xCB" => "\xEC\x80\x8B", + "\x97\xCC" => "\xEC\x80\x8C", + "\x97\xCD" => "\xEC\x80\x8D", + "\x97\xCE" => "\xEC\x80\x8E", + "\x97\xCF" => "\xEC\x80\x8F", + "\x97\xD0" => "\xEC\x80\x90", + "\x97\xD1" => "\xEC\x80\x91", + "\x97\xD2" => "\xEC\x80\x92", + "\x97\xD3" => "\xEC\x80\x93", + "\x97\xD4" => "\xEC\x80\x94", + "\x97\xD5" => "\xEC\x80\x95", + "\x97\xD6" => "\xEC\x80\x96", + "\x97\xD7" => "\xEC\x80\x97", + "\x97\xD8" => "\xEC\x80\x98", + "\x97\xD9" => "\xEC\x80\x99", + "\x97\xDA" => "\xEC\x80\x9A", + "\x97\xDB" => "\xEC\x80\x9B", + "\x97\xDC" => "\xEC\x80\x9C", + "\x97\xDD" => "\xEC\x80\x9D", + "\x97\xDE" => "\xEC\x80\x9E", + "\x97\xDF" => "\xEC\x80\x9F", + "\x97\xE0" => "\xEC\x80\xA0", + "\x97\xE1" => "\xEC\x80\xA1", + "\x97\xE2" => "\xEC\x80\xA2", + "\x97\xE3" => "\xEC\x80\xA3", + "\x97\xE4" => "\xEC\x80\xA4", + "\x97\xE5" => "\xEC\x80\xA5", + "\x97\xE6" => "\xEC\x80\xA6", + "\x97\xE7" => "\xEC\x80\xA7", + "\x97\xE8" => "\xEC\x80\xA8", + "\x97\xE9" => "\xEC\x80\xA9", + "\x97\xEA" => "\xEC\x80\xAA", + "\x97\xEB" => "\xEC\x80\xAB", + "\x97\xEC" => "\xEC\x80\xAC", + "\x97\xED" => "\xEC\x80\xAD", + "\x97\xEE" => "\xEC\x80\xAE", + "\x97\xEF" => "\xEC\x80\xAF", + "\x97\xF0" => "\xEC\x80\xB0", + "\x97\xF1" => "\xEC\x80\xB1", + "\x97\xF2" => "\xEC\x80\xB2", + "\x97\xF3" => "\xEC\x80\xB3", + "\x97\xF4" => "\xEC\x80\xB4", + "\x97\xF5" => "\xEC\x80\xB5", + "\x97\xF6" => "\xEC\x80\xB6", + "\x97\xF7" => "\xEC\x80\xB7", + "\x97\xF8" => "\xEC\x80\xB8", + "\x97\xF9" => "\xEC\x80\xB9", + "\x97\xFA" => "\xEC\x80\xBA", + "\x97\xFB" => "\xEC\x80\xBB", + "\x97\xFC" => "\xEC\x80\xBD", + "\x97\xFD" => "\xEC\x80\xBE", + "\x97\xFE" => "\xEC\x80\xBF", + "\x98\x41" => "\xEC\x81\x80", + "\x98\x42" => "\xEC\x81\x81", + "\x98\x43" => "\xEC\x81\x82", + "\x98\x44" => "\xEC\x81\x83", + "\x98\x45" => "\xEC\x81\x84", + "\x98\x46" => "\xEC\x81\x85", + "\x98\x47" => "\xEC\x81\x86", + "\x98\x48" => "\xEC\x81\x87", + "\x98\x49" => "\xEC\x81\x88", + "\x98\x4A" => "\xEC\x81\x89", + "\x98\x4B" => "\xEC\x81\x8A", + "\x98\x4C" => "\xEC\x81\x8B", + "\x98\x4D" => "\xEC\x81\x8C", + "\x98\x4E" => "\xEC\x81\x8D", + "\x98\x4F" => "\xEC\x81\x8E", + "\x98\x50" => "\xEC\x81\x8F", + "\x98\x51" => "\xEC\x81\x90", + "\x98\x52" => "\xEC\x81\x92", + "\x98\x53" => "\xEC\x81\x93", + "\x98\x54" => "\xEC\x81\x94", + "\x98\x55" => "\xEC\x81\x95", + "\x98\x56" => "\xEC\x81\x96", + "\x98\x57" => "\xEC\x81\x97", + "\x98\x58" => "\xEC\x81\x99", + "\x98\x59" => "\xEC\x81\x9A", + "\x98\x5A" => "\xEC\x81\x9B", + "\x98\x61" => "\xEC\x81\x9D", + "\x98\x62" => "\xEC\x81\x9E", + "\x98\x63" => "\xEC\x81\x9F", + "\x98\x64" => "\xEC\x81\xA1", + "\x98\x65" => "\xEC\x81\xA2", + "\x98\x66" => "\xEC\x81\xA3", + "\x98\x67" => "\xEC\x81\xA4", + "\x98\x68" => "\xEC\x81\xA5", + "\x98\x69" => "\xEC\x81\xA6", + "\x98\x6A" => "\xEC\x81\xA7", + "\x98\x6B" => "\xEC\x81\xAA", + "\x98\x6C" => "\xEC\x81\xAB", + "\x98\x6D" => "\xEC\x81\xAC", + "\x98\x6E" => "\xEC\x81\xAD", + "\x98\x6F" => "\xEC\x81\xAE", + "\x98\x70" => "\xEC\x81\xAF", + "\x98\x71" => "\xEC\x81\xB0", + "\x98\x72" => "\xEC\x81\xB1", + "\x98\x73" => "\xEC\x81\xB2", + "\x98\x74" => "\xEC\x81\xB3", + "\x98\x75" => "\xEC\x81\xB4", + "\x98\x76" => "\xEC\x81\xB5", + "\x98\x77" => "\xEC\x81\xB6", + "\x98\x78" => "\xEC\x81\xB7", + "\x98\x79" => "\xEC\x81\xB8", + "\x98\x7A" => "\xEC\x81\xB9", + "\x98\x81" => "\xEC\x81\xBA", + "\x98\x82" => "\xEC\x81\xBB", + "\x98\x83" => "\xEC\x81\xBC", + "\x98\x84" => "\xEC\x81\xBD", + "\x98\x85" => "\xEC\x81\xBE", + "\x98\x86" => "\xEC\x81\xBF", + "\x98\x87" => "\xEC\x82\x80", + "\x98\x88" => "\xEC\x82\x81", + "\x98\x89" => "\xEC\x82\x82", + "\x98\x8A" => "\xEC\x82\x83", + "\x98\x8B" => "\xEC\x82\x84", + "\x98\x8C" => "\xEC\x82\x85", + "\x98\x8D" => "\xEC\x82\x86", + "\x98\x8E" => "\xEC\x82\x87", + "\x98\x8F" => "\xEC\x82\x88", + "\x98\x90" => "\xEC\x82\x89", + "\x98\x91" => "\xEC\x82\x8A", + "\x98\x92" => "\xEC\x82\x8B", + "\x98\x93" => "\xEC\x82\x8C", + "\x98\x94" => "\xEC\x82\x8D", + "\x98\x95" => "\xEC\x82\x8E", + "\x98\x96" => "\xEC\x82\x8F", + "\x98\x97" => "\xEC\x82\x92", + "\x98\x98" => "\xEC\x82\x93", + "\x98\x99" => "\xEC\x82\x95", + "\x98\x9A" => "\xEC\x82\x96", + "\x98\x9B" => "\xEC\x82\x97", + "\x98\x9C" => "\xEC\x82\x99", + "\x98\x9D" => "\xEC\x82\x9A", + "\x98\x9E" => "\xEC\x82\x9B", + "\x98\x9F" => "\xEC\x82\x9C", + "\x98\xA0" => "\xEC\x82\x9D", + "\x98\xA1" => "\xEC\x82\x9E", + "\x98\xA2" => "\xEC\x82\x9F", + "\x98\xA3" => "\xEC\x82\xA2", + "\x98\xA4" => "\xEC\x82\xA4", + "\x98\xA5" => "\xEC\x82\xA6", + "\x98\xA6" => "\xEC\x82\xA7", + "\x98\xA7" => "\xEC\x82\xA8", + "\x98\xA8" => "\xEC\x82\xA9", + "\x98\xA9" => "\xEC\x82\xAA", + "\x98\xAA" => "\xEC\x82\xAB", + "\x98\xAB" => "\xEC\x82\xAE", + "\x98\xAC" => "\xEC\x82\xB1", + "\x98\xAD" => "\xEC\x82\xB2", + "\x98\xAE" => "\xEC\x82\xB7", + "\x98\xAF" => "\xEC\x82\xB8", + "\x98\xB0" => "\xEC\x82\xB9", + "\x98\xB1" => "\xEC\x82\xBA", + "\x98\xB2" => "\xEC\x82\xBB", + "\x98\xB3" => "\xEC\x82\xBE", + "\x98\xB4" => "\xEC\x83\x82", + "\x98\xB5" => "\xEC\x83\x83", + "\x98\xB6" => "\xEC\x83\x84", + "\x98\xB7" => "\xEC\x83\x86", + "\x98\xB8" => "\xEC\x83\x87", + "\x98\xB9" => "\xEC\x83\x8A", + "\x98\xBA" => "\xEC\x83\x8B", + "\x98\xBB" => "\xEC\x83\x8D", + "\x98\xBC" => "\xEC\x83\x8E", + "\x98\xBD" => "\xEC\x83\x8F", + "\x98\xBE" => "\xEC\x83\x91", + "\x98\xBF" => "\xEC\x83\x92", + "\x98\xC0" => "\xEC\x83\x93", + "\x98\xC1" => "\xEC\x83\x94", + "\x98\xC2" => "\xEC\x83\x95", + "\x98\xC3" => "\xEC\x83\x96", + "\x98\xC4" => "\xEC\x83\x97", + "\x98\xC5" => "\xEC\x83\x9A", + "\x98\xC6" => "\xEC\x83\x9E", + "\x98\xC7" => "\xEC\x83\x9F", + "\x98\xC8" => "\xEC\x83\xA0", + "\x98\xC9" => "\xEC\x83\xA1", + "\x98\xCA" => "\xEC\x83\xA2", + "\x98\xCB" => "\xEC\x83\xA3", + "\x98\xCC" => "\xEC\x83\xA6", + "\x98\xCD" => "\xEC\x83\xA7", + "\x98\xCE" => "\xEC\x83\xA9", + "\x98\xCF" => "\xEC\x83\xAA", + "\x98\xD0" => "\xEC\x83\xAB", + "\x98\xD1" => "\xEC\x83\xAD", + "\x98\xD2" => "\xEC\x83\xAE", + "\x98\xD3" => "\xEC\x83\xAF", + "\x98\xD4" => "\xEC\x83\xB0", + "\x98\xD5" => "\xEC\x83\xB1", + "\x98\xD6" => "\xEC\x83\xB2", + "\x98\xD7" => "\xEC\x83\xB3", + "\x98\xD8" => "\xEC\x83\xB6", + "\x98\xD9" => "\xEC\x83\xB8", + "\x98\xDA" => "\xEC\x83\xBA", + "\x98\xDB" => "\xEC\x83\xBB", + "\x98\xDC" => "\xEC\x83\xBC", + "\x98\xDD" => "\xEC\x83\xBD", + "\x98\xDE" => "\xEC\x83\xBE", + "\x98\xDF" => "\xEC\x83\xBF", + "\x98\xE0" => "\xEC\x84\x81", + "\x98\xE1" => "\xEC\x84\x82", + "\x98\xE2" => "\xEC\x84\x83", + "\x98\xE3" => "\xEC\x84\x85", + "\x98\xE4" => "\xEC\x84\x86", + "\x98\xE5" => "\xEC\x84\x87", + "\x98\xE6" => "\xEC\x84\x89", + "\x98\xE7" => "\xEC\x84\x8A", + "\x98\xE8" => "\xEC\x84\x8B", + "\x98\xE9" => "\xEC\x84\x8C", + "\x98\xEA" => "\xEC\x84\x8D", + "\x98\xEB" => "\xEC\x84\x8E", + "\x98\xEC" => "\xEC\x84\x8F", + "\x98\xED" => "\xEC\x84\x91", + "\x98\xEE" => "\xEC\x84\x92", + "\x98\xEF" => "\xEC\x84\x93", + "\x98\xF0" => "\xEC\x84\x94", + "\x98\xF1" => "\xEC\x84\x96", + "\x98\xF2" => "\xEC\x84\x97", + "\x98\xF3" => "\xEC\x84\x98", + "\x98\xF4" => "\xEC\x84\x99", + "\x98\xF5" => "\xEC\x84\x9A", + "\x98\xF6" => "\xEC\x84\x9B", + "\x98\xF7" => "\xEC\x84\xA1", + "\x98\xF8" => "\xEC\x84\xA2", + "\x98\xF9" => "\xEC\x84\xA5", + "\x98\xFA" => "\xEC\x84\xA8", + "\x98\xFB" => "\xEC\x84\xA9", + "\x98\xFC" => "\xEC\x84\xAA", + "\x98\xFD" => "\xEC\x84\xAB", + "\x98\xFE" => "\xEC\x84\xAE", + "\x99\x41" => "\xEC\x84\xB2", + "\x99\x42" => "\xEC\x84\xB3", + "\x99\x43" => "\xEC\x84\xB4", + "\x99\x44" => "\xEC\x84\xB5", + "\x99\x45" => "\xEC\x84\xB7", + "\x99\x46" => "\xEC\x84\xBA", + "\x99\x47" => "\xEC\x84\xBB", + "\x99\x48" => "\xEC\x84\xBD", + "\x99\x49" => "\xEC\x84\xBE", + "\x99\x4A" => "\xEC\x84\xBF", + "\x99\x4B" => "\xEC\x85\x81", + "\x99\x4C" => "\xEC\x85\x82", + "\x99\x4D" => "\xEC\x85\x83", + "\x99\x4E" => "\xEC\x85\x84", + "\x99\x4F" => "\xEC\x85\x85", + "\x99\x50" => "\xEC\x85\x86", + "\x99\x51" => "\xEC\x85\x87", + "\x99\x52" => "\xEC\x85\x8A", + "\x99\x53" => "\xEC\x85\x8E", + "\x99\x54" => "\xEC\x85\x8F", + "\x99\x55" => "\xEC\x85\x90", + "\x99\x56" => "\xEC\x85\x91", + "\x99\x57" => "\xEC\x85\x92", + "\x99\x58" => "\xEC\x85\x93", + "\x99\x59" => "\xEC\x85\x96", + "\x99\x5A" => "\xEC\x85\x97", + "\x99\x61" => "\xEC\x85\x99", + "\x99\x62" => "\xEC\x85\x9A", + "\x99\x63" => "\xEC\x85\x9B", + "\x99\x64" => "\xEC\x85\x9D", + "\x99\x65" => "\xEC\x85\x9E", + "\x99\x66" => "\xEC\x85\x9F", + "\x99\x67" => "\xEC\x85\xA0", + "\x99\x68" => "\xEC\x85\xA1", + "\x99\x69" => "\xEC\x85\xA2", + "\x99\x6A" => "\xEC\x85\xA3", + "\x99\x6B" => "\xEC\x85\xA6", + "\x99\x6C" => "\xEC\x85\xAA", + "\x99\x6D" => "\xEC\x85\xAB", + "\x99\x6E" => "\xEC\x85\xAC", + "\x99\x6F" => "\xEC\x85\xAD", + "\x99\x70" => "\xEC\x85\xAE", + "\x99\x71" => "\xEC\x85\xAF", + "\x99\x72" => "\xEC\x85\xB1", + "\x99\x73" => "\xEC\x85\xB2", + "\x99\x74" => "\xEC\x85\xB3", + "\x99\x75" => "\xEC\x85\xB5", + "\x99\x76" => "\xEC\x85\xB6", + "\x99\x77" => "\xEC\x85\xB7", + "\x99\x78" => "\xEC\x85\xB9", + "\x99\x79" => "\xEC\x85\xBA", + "\x99\x7A" => "\xEC\x85\xBB", + "\x99\x81" => "\xEC\x85\xBC", + "\x99\x82" => "\xEC\x85\xBD", + "\x99\x83" => "\xEC\x85\xBE", + "\x99\x84" => "\xEC\x85\xBF", + "\x99\x85" => "\xEC\x86\x80", + "\x99\x86" => "\xEC\x86\x81", + "\x99\x87" => "\xEC\x86\x82", + "\x99\x88" => "\xEC\x86\x83", + "\x99\x89" => "\xEC\x86\x84", + "\x99\x8A" => "\xEC\x86\x86", + "\x99\x8B" => "\xEC\x86\x87", + "\x99\x8C" => "\xEC\x86\x88", + "\x99\x8D" => "\xEC\x86\x89", + "\x99\x8E" => "\xEC\x86\x8A", + "\x99\x8F" => "\xEC\x86\x8B", + "\x99\x90" => "\xEC\x86\x8F", + "\x99\x91" => "\xEC\x86\x91", + "\x99\x92" => "\xEC\x86\x92", + "\x99\x93" => "\xEC\x86\x93", + "\x99\x94" => "\xEC\x86\x95", + "\x99\x95" => "\xEC\x86\x97", + "\x99\x96" => "\xEC\x86\x98", + "\x99\x97" => "\xEC\x86\x99", + "\x99\x98" => "\xEC\x86\x9A", + "\x99\x99" => "\xEC\x86\x9B", + "\x99\x9A" => "\xEC\x86\x9E", + "\x99\x9B" => "\xEC\x86\xA0", + "\x99\x9C" => "\xEC\x86\xA2", + "\x99\x9D" => "\xEC\x86\xA3", + "\x99\x9E" => "\xEC\x86\xA4", + "\x99\x9F" => "\xEC\x86\xA6", + "\x99\xA0" => "\xEC\x86\xA7", + "\x99\xA1" => "\xEC\x86\xAA", + "\x99\xA2" => "\xEC\x86\xAB", + "\x99\xA3" => "\xEC\x86\xAD", + "\x99\xA4" => "\xEC\x86\xAE", + "\x99\xA5" => "\xEC\x86\xAF", + "\x99\xA6" => "\xEC\x86\xB1", + "\x99\xA7" => "\xEC\x86\xB2", + "\x99\xA8" => "\xEC\x86\xB3", + "\x99\xA9" => "\xEC\x86\xB4", + "\x99\xAA" => "\xEC\x86\xB5", + "\x99\xAB" => "\xEC\x86\xB6", + "\x99\xAC" => "\xEC\x86\xB7", + "\x99\xAD" => "\xEC\x86\xB8", + "\x99\xAE" => "\xEC\x86\xB9", + "\x99\xAF" => "\xEC\x86\xBA", + "\x99\xB0" => "\xEC\x86\xBB", + "\x99\xB1" => "\xEC\x86\xBC", + "\x99\xB2" => "\xEC\x86\xBE", + "\x99\xB3" => "\xEC\x86\xBF", + "\x99\xB4" => "\xEC\x87\x80", + "\x99\xB5" => "\xEC\x87\x81", + "\x99\xB6" => "\xEC\x87\x82", + "\x99\xB7" => "\xEC\x87\x83", + "\x99\xB8" => "\xEC\x87\x85", + "\x99\xB9" => "\xEC\x87\x86", + "\x99\xBA" => "\xEC\x87\x87", + "\x99\xBB" => "\xEC\x87\x89", + "\x99\xBC" => "\xEC\x87\x8A", + "\x99\xBD" => "\xEC\x87\x8B", + "\x99\xBE" => "\xEC\x87\x8D", + "\x99\xBF" => "\xEC\x87\x8E", + "\x99\xC0" => "\xEC\x87\x8F", + "\x99\xC1" => "\xEC\x87\x90", + "\x99\xC2" => "\xEC\x87\x91", + "\x99\xC3" => "\xEC\x87\x92", + "\x99\xC4" => "\xEC\x87\x93", + "\x99\xC5" => "\xEC\x87\x95", + "\x99\xC6" => "\xEC\x87\x96", + "\x99\xC7" => "\xEC\x87\x99", + "\x99\xC8" => "\xEC\x87\x9A", + "\x99\xC9" => "\xEC\x87\x9B", + "\x99\xCA" => "\xEC\x87\x9C", + "\x99\xCB" => "\xEC\x87\x9D", + "\x99\xCC" => "\xEC\x87\x9E", + "\x99\xCD" => "\xEC\x87\x9F", + "\x99\xCE" => "\xEC\x87\xA1", + "\x99\xCF" => "\xEC\x87\xA2", + "\x99\xD0" => "\xEC\x87\xA3", + "\x99\xD1" => "\xEC\x87\xA5", + "\x99\xD2" => "\xEC\x87\xA6", + "\x99\xD3" => "\xEC\x87\xA7", + "\x99\xD4" => "\xEC\x87\xA9", + "\x99\xD5" => "\xEC\x87\xAA", + "\x99\xD6" => "\xEC\x87\xAB", + "\x99\xD7" => "\xEC\x87\xAC", + "\x99\xD8" => "\xEC\x87\xAD", + "\x99\xD9" => "\xEC\x87\xAE", + "\x99\xDA" => "\xEC\x87\xAF", + "\x99\xDB" => "\xEC\x87\xB2", + "\x99\xDC" => "\xEC\x87\xB4", + "\x99\xDD" => "\xEC\x87\xB5", + "\x99\xDE" => "\xEC\x87\xB6", + "\x99\xDF" => "\xEC\x87\xB7", + "\x99\xE0" => "\xEC\x87\xB8", + "\x99\xE1" => "\xEC\x87\xB9", + "\x99\xE2" => "\xEC\x87\xBA", + "\x99\xE3" => "\xEC\x87\xBB", + "\x99\xE4" => "\xEC\x87\xBE", + "\x99\xE5" => "\xEC\x87\xBF", + "\x99\xE6" => "\xEC\x88\x81", + "\x99\xE7" => "\xEC\x88\x82", + "\x99\xE8" => "\xEC\x88\x83", + "\x99\xE9" => "\xEC\x88\x85", + "\x99\xEA" => "\xEC\x88\x86", + "\x99\xEB" => "\xEC\x88\x87", + "\x99\xEC" => "\xEC\x88\x88", + "\x99\xED" => "\xEC\x88\x89", + "\x99\xEE" => "\xEC\x88\x8A", + "\x99\xEF" => "\xEC\x88\x8B", + "\x99\xF0" => "\xEC\x88\x8E", + "\x99\xF1" => "\xEC\x88\x90", + "\x99\xF2" => "\xEC\x88\x92", + "\x99\xF3" => "\xEC\x88\x93", + "\x99\xF4" => "\xEC\x88\x94", + "\x99\xF5" => "\xEC\x88\x95", + "\x99\xF6" => "\xEC\x88\x96", + "\x99\xF7" => "\xEC\x88\x97", + "\x99\xF8" => "\xEC\x88\x9A", + "\x99\xF9" => "\xEC\x88\x9B", + "\x99\xFA" => "\xEC\x88\x9D", + "\x99\xFB" => "\xEC\x88\x9E", + "\x99\xFC" => "\xEC\x88\xA1", + "\x99\xFD" => "\xEC\x88\xA2", + "\x99\xFE" => "\xEC\x88\xA3", + "\x9A\x41" => "\xEC\x88\xA4", + "\x9A\x42" => "\xEC\x88\xA5", + "\x9A\x43" => "\xEC\x88\xA6", + "\x9A\x44" => "\xEC\x88\xA7", + "\x9A\x45" => "\xEC\x88\xAA", + "\x9A\x46" => "\xEC\x88\xAC", + "\x9A\x47" => "\xEC\x88\xAE", + "\x9A\x48" => "\xEC\x88\xB0", + "\x9A\x49" => "\xEC\x88\xB3", + "\x9A\x4A" => "\xEC\x88\xB5", + "\x9A\x4B" => "\xEC\x88\xB6", + "\x9A\x4C" => "\xEC\x88\xB7", + "\x9A\x4D" => "\xEC\x88\xB8", + "\x9A\x4E" => "\xEC\x88\xB9", + "\x9A\x4F" => "\xEC\x88\xBA", + "\x9A\x50" => "\xEC\x88\xBB", + "\x9A\x51" => "\xEC\x88\xBC", + "\x9A\x52" => "\xEC\x88\xBD", + "\x9A\x53" => "\xEC\x88\xBE", + "\x9A\x54" => "\xEC\x88\xBF", + "\x9A\x55" => "\xEC\x89\x80", + "\x9A\x56" => "\xEC\x89\x81", + "\x9A\x57" => "\xEC\x89\x82", + "\x9A\x58" => "\xEC\x89\x83", + "\x9A\x59" => "\xEC\x89\x84", + "\x9A\x5A" => "\xEC\x89\x85", + "\x9A\x61" => "\xEC\x89\x86", + "\x9A\x62" => "\xEC\x89\x87", + "\x9A\x63" => "\xEC\x89\x89", + "\x9A\x64" => "\xEC\x89\x8A", + "\x9A\x65" => "\xEC\x89\x8B", + "\x9A\x66" => "\xEC\x89\x8C", + "\x9A\x67" => "\xEC\x89\x8D", + "\x9A\x68" => "\xEC\x89\x8E", + "\x9A\x69" => "\xEC\x89\x8F", + "\x9A\x6A" => "\xEC\x89\x92", + "\x9A\x6B" => "\xEC\x89\x93", + "\x9A\x6C" => "\xEC\x89\x95", + "\x9A\x6D" => "\xEC\x89\x96", + "\x9A\x6E" => "\xEC\x89\x97", + "\x9A\x6F" => "\xEC\x89\x99", + "\x9A\x70" => "\xEC\x89\x9A", + "\x9A\x71" => "\xEC\x89\x9B", + "\x9A\x72" => "\xEC\x89\x9C", + "\x9A\x73" => "\xEC\x89\x9D", + "\x9A\x74" => "\xEC\x89\x9E", + "\x9A\x75" => "\xEC\x89\x9F", + "\x9A\x76" => "\xEC\x89\xA1", + "\x9A\x77" => "\xEC\x89\xA2", + "\x9A\x78" => "\xEC\x89\xA3", + "\x9A\x79" => "\xEC\x89\xA4", + "\x9A\x7A" => "\xEC\x89\xA6", + "\x9A\x81" => "\xEC\x89\xA7", + "\x9A\x82" => "\xEC\x89\xA8", + "\x9A\x83" => "\xEC\x89\xA9", + "\x9A\x84" => "\xEC\x89\xAA", + "\x9A\x85" => "\xEC\x89\xAB", + "\x9A\x86" => "\xEC\x89\xAE", + "\x9A\x87" => "\xEC\x89\xAF", + "\x9A\x88" => "\xEC\x89\xB1", + "\x9A\x89" => "\xEC\x89\xB2", + "\x9A\x8A" => "\xEC\x89\xB3", + "\x9A\x8B" => "\xEC\x89\xB5", + "\x9A\x8C" => "\xEC\x89\xB6", + "\x9A\x8D" => "\xEC\x89\xB7", + "\x9A\x8E" => "\xEC\x89\xB8", + "\x9A\x8F" => "\xEC\x89\xB9", + "\x9A\x90" => "\xEC\x89\xBA", + "\x9A\x91" => "\xEC\x89\xBB", + "\x9A\x92" => "\xEC\x89\xBE", + "\x9A\x93" => "\xEC\x8A\x80", + "\x9A\x94" => "\xEC\x8A\x82", + "\x9A\x95" => "\xEC\x8A\x83", + "\x9A\x96" => "\xEC\x8A\x84", + "\x9A\x97" => "\xEC\x8A\x85", + "\x9A\x98" => "\xEC\x8A\x86", + "\x9A\x99" => "\xEC\x8A\x87", + "\x9A\x9A" => "\xEC\x8A\x8A", + "\x9A\x9B" => "\xEC\x8A\x8B", + "\x9A\x9C" => "\xEC\x8A\x8C", + "\x9A\x9D" => "\xEC\x8A\x8D", + "\x9A\x9E" => "\xEC\x8A\x8E", + "\x9A\x9F" => "\xEC\x8A\x8F", + "\x9A\xA0" => "\xEC\x8A\x91", + "\x9A\xA1" => "\xEC\x8A\x92", + "\x9A\xA2" => "\xEC\x8A\x93", + "\x9A\xA3" => "\xEC\x8A\x94", + "\x9A\xA4" => "\xEC\x8A\x95", + "\x9A\xA5" => "\xEC\x8A\x96", + "\x9A\xA6" => "\xEC\x8A\x97", + "\x9A\xA7" => "\xEC\x8A\x99", + "\x9A\xA8" => "\xEC\x8A\x9A", + "\x9A\xA9" => "\xEC\x8A\x9C", + "\x9A\xAA" => "\xEC\x8A\x9E", + "\x9A\xAB" => "\xEC\x8A\x9F", + "\x9A\xAC" => "\xEC\x8A\xA0", + "\x9A\xAD" => "\xEC\x8A\xA1", + "\x9A\xAE" => "\xEC\x8A\xA2", + "\x9A\xAF" => "\xEC\x8A\xA3", + "\x9A\xB0" => "\xEC\x8A\xA6", + "\x9A\xB1" => "\xEC\x8A\xA7", + "\x9A\xB2" => "\xEC\x8A\xA9", + "\x9A\xB3" => "\xEC\x8A\xAA", + "\x9A\xB4" => "\xEC\x8A\xAB", + "\x9A\xB5" => "\xEC\x8A\xAE", + "\x9A\xB6" => "\xEC\x8A\xAF", + "\x9A\xB7" => "\xEC\x8A\xB0", + "\x9A\xB8" => "\xEC\x8A\xB1", + "\x9A\xB9" => "\xEC\x8A\xB2", + "\x9A\xBA" => "\xEC\x8A\xB3", + "\x9A\xBB" => "\xEC\x8A\xB6", + "\x9A\xBC" => "\xEC\x8A\xB8", + "\x9A\xBD" => "\xEC\x8A\xBA", + "\x9A\xBE" => "\xEC\x8A\xBB", + "\x9A\xBF" => "\xEC\x8A\xBC", + "\x9A\xC0" => "\xEC\x8A\xBD", + "\x9A\xC1" => "\xEC\x8A\xBE", + "\x9A\xC2" => "\xEC\x8A\xBF", + "\x9A\xC3" => "\xEC\x8B\x80", + "\x9A\xC4" => "\xEC\x8B\x81", + "\x9A\xC5" => "\xEC\x8B\x82", + "\x9A\xC6" => "\xEC\x8B\x83", + "\x9A\xC7" => "\xEC\x8B\x84", + "\x9A\xC8" => "\xEC\x8B\x85", + "\x9A\xC9" => "\xEC\x8B\x86", + "\x9A\xCA" => "\xEC\x8B\x87", + "\x9A\xCB" => "\xEC\x8B\x88", + "\x9A\xCC" => "\xEC\x8B\x89", + "\x9A\xCD" => "\xEC\x8B\x8A", + "\x9A\xCE" => "\xEC\x8B\x8B", + "\x9A\xCF" => "\xEC\x8B\x8C", + "\x9A\xD0" => "\xEC\x8B\x8D", + "\x9A\xD1" => "\xEC\x8B\x8E", + "\x9A\xD2" => "\xEC\x8B\x8F", + "\x9A\xD3" => "\xEC\x8B\x90", + "\x9A\xD4" => "\xEC\x8B\x91", + "\x9A\xD5" => "\xEC\x8B\x92", + "\x9A\xD6" => "\xEC\x8B\x93", + "\x9A\xD7" => "\xEC\x8B\x94", + "\x9A\xD8" => "\xEC\x8B\x95", + "\x9A\xD9" => "\xEC\x8B\x96", + "\x9A\xDA" => "\xEC\x8B\x97", + "\x9A\xDB" => "\xEC\x8B\x98", + "\x9A\xDC" => "\xEC\x8B\x99", + "\x9A\xDD" => "\xEC\x8B\x9A", + "\x9A\xDE" => "\xEC\x8B\x9B", + "\x9A\xDF" => "\xEC\x8B\x9E", + "\x9A\xE0" => "\xEC\x8B\x9F", + "\x9A\xE1" => "\xEC\x8B\xA1", + "\x9A\xE2" => "\xEC\x8B\xA2", + "\x9A\xE3" => "\xEC\x8B\xA5", + "\x9A\xE4" => "\xEC\x8B\xA6", + "\x9A\xE5" => "\xEC\x8B\xA7", + "\x9A\xE6" => "\xEC\x8B\xA8", + "\x9A\xE7" => "\xEC\x8B\xA9", + "\x9A\xE8" => "\xEC\x8B\xAA", + "\x9A\xE9" => "\xEC\x8B\xAE", + "\x9A\xEA" => "\xEC\x8B\xB0", + "\x9A\xEB" => "\xEC\x8B\xB2", + "\x9A\xEC" => "\xEC\x8B\xB3", + "\x9A\xED" => "\xEC\x8B\xB4", + "\x9A\xEE" => "\xEC\x8B\xB5", + "\x9A\xEF" => "\xEC\x8B\xB7", + "\x9A\xF0" => "\xEC\x8B\xBA", + "\x9A\xF1" => "\xEC\x8B\xBD", + "\x9A\xF2" => "\xEC\x8B\xBE", + "\x9A\xF3" => "\xEC\x8B\xBF", + "\x9A\xF4" => "\xEC\x8C\x81", + "\x9A\xF5" => "\xEC\x8C\x82", + "\x9A\xF6" => "\xEC\x8C\x83", + "\x9A\xF7" => "\xEC\x8C\x84", + "\x9A\xF8" => "\xEC\x8C\x85", + "\x9A\xF9" => "\xEC\x8C\x86", + "\x9A\xFA" => "\xEC\x8C\x87", + "\x9A\xFB" => "\xEC\x8C\x8A", + "\x9A\xFC" => "\xEC\x8C\x8B", + "\x9A\xFD" => "\xEC\x8C\x8E", + "\x9A\xFE" => "\xEC\x8C\x8F", + "\x9B\x41" => "\xEC\x8C\x90", + "\x9B\x42" => "\xEC\x8C\x91", + "\x9B\x43" => "\xEC\x8C\x92", + "\x9B\x44" => "\xEC\x8C\x96", + "\x9B\x45" => "\xEC\x8C\x97", + "\x9B\x46" => "\xEC\x8C\x99", + "\x9B\x47" => "\xEC\x8C\x9A", + "\x9B\x48" => "\xEC\x8C\x9B", + "\x9B\x49" => "\xEC\x8C\x9D", + "\x9B\x4A" => "\xEC\x8C\x9E", + "\x9B\x4B" => "\xEC\x8C\x9F", + "\x9B\x4C" => "\xEC\x8C\xA0", + "\x9B\x4D" => "\xEC\x8C\xA1", + "\x9B\x4E" => "\xEC\x8C\xA2", + "\x9B\x4F" => "\xEC\x8C\xA3", + "\x9B\x50" => "\xEC\x8C\xA6", + "\x9B\x51" => "\xEC\x8C\xA7", + "\x9B\x52" => "\xEC\x8C\xAA", + "\x9B\x53" => "\xEC\x8C\xAB", + "\x9B\x54" => "\xEC\x8C\xAC", + "\x9B\x55" => "\xEC\x8C\xAD", + "\x9B\x56" => "\xEC\x8C\xAE", + "\x9B\x57" => "\xEC\x8C\xAF", + "\x9B\x58" => "\xEC\x8C\xB0", + "\x9B\x59" => "\xEC\x8C\xB1", + "\x9B\x5A" => "\xEC\x8C\xB2", + "\x9B\x61" => "\xEC\x8C\xB3", + "\x9B\x62" => "\xEC\x8C\xB4", + "\x9B\x63" => "\xEC\x8C\xB5", + "\x9B\x64" => "\xEC\x8C\xB6", + "\x9B\x65" => "\xEC\x8C\xB7", + "\x9B\x66" => "\xEC\x8C\xB8", + "\x9B\x67" => "\xEC\x8C\xB9", + "\x9B\x68" => "\xEC\x8C\xBA", + "\x9B\x69" => "\xEC\x8C\xBB", + "\x9B\x6A" => "\xEC\x8C\xBC", + "\x9B\x6B" => "\xEC\x8C\xBD", + "\x9B\x6C" => "\xEC\x8C\xBE", + "\x9B\x6D" => "\xEC\x8C\xBF", + "\x9B\x6E" => "\xEC\x8D\x80", + "\x9B\x6F" => "\xEC\x8D\x81", + "\x9B\x70" => "\xEC\x8D\x82", + "\x9B\x71" => "\xEC\x8D\x83", + "\x9B\x72" => "\xEC\x8D\x84", + "\x9B\x73" => "\xEC\x8D\x86", + "\x9B\x74" => "\xEC\x8D\x87", + "\x9B\x75" => "\xEC\x8D\x88", + "\x9B\x76" => "\xEC\x8D\x89", + "\x9B\x77" => "\xEC\x8D\x8A", + "\x9B\x78" => "\xEC\x8D\x8B", + "\x9B\x79" => "\xEC\x8D\x8C", + "\x9B\x7A" => "\xEC\x8D\x8D", + "\x9B\x81" => "\xEC\x8D\x8E", + "\x9B\x82" => "\xEC\x8D\x8F", + "\x9B\x83" => "\xEC\x8D\x90", + "\x9B\x84" => "\xEC\x8D\x91", + "\x9B\x85" => "\xEC\x8D\x92", + "\x9B\x86" => "\xEC\x8D\x93", + "\x9B\x87" => "\xEC\x8D\x94", + "\x9B\x88" => "\xEC\x8D\x95", + "\x9B\x89" => "\xEC\x8D\x96", + "\x9B\x8A" => "\xEC\x8D\x97", + "\x9B\x8B" => "\xEC\x8D\x98", + "\x9B\x8C" => "\xEC\x8D\x99", + "\x9B\x8D" => "\xEC\x8D\x9A", + "\x9B\x8E" => "\xEC\x8D\x9B", + "\x9B\x8F" => "\xEC\x8D\x9C", + "\x9B\x90" => "\xEC\x8D\x9D", + "\x9B\x91" => "\xEC\x8D\x9E", + "\x9B\x92" => "\xEC\x8D\x9F", + "\x9B\x93" => "\xEC\x8D\xA0", + "\x9B\x94" => "\xEC\x8D\xA1", + "\x9B\x95" => "\xEC\x8D\xA2", + "\x9B\x96" => "\xEC\x8D\xA3", + "\x9B\x97" => "\xEC\x8D\xA4", + "\x9B\x98" => "\xEC\x8D\xA5", + "\x9B\x99" => "\xEC\x8D\xA6", + "\x9B\x9A" => "\xEC\x8D\xA7", + "\x9B\x9B" => "\xEC\x8D\xAA", + "\x9B\x9C" => "\xEC\x8D\xAB", + "\x9B\x9D" => "\xEC\x8D\xAD", + "\x9B\x9E" => "\xEC\x8D\xAE", + "\x9B\x9F" => "\xEC\x8D\xAF", + "\x9B\xA0" => "\xEC\x8D\xB1", + "\x9B\xA1" => "\xEC\x8D\xB3", + "\x9B\xA2" => "\xEC\x8D\xB4", + "\x9B\xA3" => "\xEC\x8D\xB5", + "\x9B\xA4" => "\xEC\x8D\xB6", + "\x9B\xA5" => "\xEC\x8D\xB7", + "\x9B\xA6" => "\xEC\x8D\xBA", + "\x9B\xA7" => "\xEC\x8D\xBB", + "\x9B\xA8" => "\xEC\x8D\xBE", + "\x9B\xA9" => "\xEC\x8D\xBF", + "\x9B\xAA" => "\xEC\x8E\x80", + "\x9B\xAB" => "\xEC\x8E\x81", + "\x9B\xAC" => "\xEC\x8E\x82", + "\x9B\xAD" => "\xEC\x8E\x83", + "\x9B\xAE" => "\xEC\x8E\x85", + "\x9B\xAF" => "\xEC\x8E\x86", + "\x9B\xB0" => "\xEC\x8E\x87", + "\x9B\xB1" => "\xEC\x8E\x89", + "\x9B\xB2" => "\xEC\x8E\x8A", + "\x9B\xB3" => "\xEC\x8E\x8B", + "\x9B\xB4" => "\xEC\x8E\x8D", + "\x9B\xB5" => "\xEC\x8E\x8E", + "\x9B\xB6" => "\xEC\x8E\x8F", + "\x9B\xB7" => "\xEC\x8E\x90", + "\x9B\xB8" => "\xEC\x8E\x91", + "\x9B\xB9" => "\xEC\x8E\x92", + "\x9B\xBA" => "\xEC\x8E\x93", + "\x9B\xBB" => "\xEC\x8E\x94", + "\x9B\xBC" => "\xEC\x8E\x95", + "\x9B\xBD" => "\xEC\x8E\x96", + "\x9B\xBE" => "\xEC\x8E\x97", + "\x9B\xBF" => "\xEC\x8E\x98", + "\x9B\xC0" => "\xEC\x8E\x99", + "\x9B\xC1" => "\xEC\x8E\x9A", + "\x9B\xC2" => "\xEC\x8E\x9B", + "\x9B\xC3" => "\xEC\x8E\x9C", + "\x9B\xC4" => "\xEC\x8E\x9D", + "\x9B\xC5" => "\xEC\x8E\x9E", + "\x9B\xC6" => "\xEC\x8E\x9F", + "\x9B\xC7" => "\xEC\x8E\xA0", + "\x9B\xC8" => "\xEC\x8E\xA1", + "\x9B\xC9" => "\xEC\x8E\xA2", + "\x9B\xCA" => "\xEC\x8E\xA3", + "\x9B\xCB" => "\xEC\x8E\xA4", + "\x9B\xCC" => "\xEC\x8E\xA5", + "\x9B\xCD" => "\xEC\x8E\xA6", + "\x9B\xCE" => "\xEC\x8E\xA7", + "\x9B\xCF" => "\xEC\x8E\xA8", + "\x9B\xD0" => "\xEC\x8E\xA9", + "\x9B\xD1" => "\xEC\x8E\xAA", + "\x9B\xD2" => "\xEC\x8E\xAB", + "\x9B\xD3" => "\xEC\x8E\xAC", + "\x9B\xD4" => "\xEC\x8E\xAD", + "\x9B\xD5" => "\xEC\x8E\xAE", + "\x9B\xD6" => "\xEC\x8E\xAF", + "\x9B\xD7" => "\xEC\x8E\xB0", + "\x9B\xD8" => "\xEC\x8E\xB1", + "\x9B\xD9" => "\xEC\x8E\xB2", + "\x9B\xDA" => "\xEC\x8E\xB3", + "\x9B\xDB" => "\xEC\x8E\xB4", + "\x9B\xDC" => "\xEC\x8E\xB5", + "\x9B\xDD" => "\xEC\x8E\xB6", + "\x9B\xDE" => "\xEC\x8E\xB7", + "\x9B\xDF" => "\xEC\x8E\xB8", + "\x9B\xE0" => "\xEC\x8E\xB9", + "\x9B\xE1" => "\xEC\x8E\xBA", + "\x9B\xE2" => "\xEC\x8E\xBB", + "\x9B\xE3" => "\xEC\x8E\xBC", + "\x9B\xE4" => "\xEC\x8E\xBD", + "\x9B\xE5" => "\xEC\x8E\xBE", + "\x9B\xE6" => "\xEC\x8E\xBF", + "\x9B\xE7" => "\xEC\x8F\x81", + "\x9B\xE8" => "\xEC\x8F\x82", + "\x9B\xE9" => "\xEC\x8F\x83", + "\x9B\xEA" => "\xEC\x8F\x84", + "\x9B\xEB" => "\xEC\x8F\x85", + "\x9B\xEC" => "\xEC\x8F\x86", + "\x9B\xED" => "\xEC\x8F\x87", + "\x9B\xEE" => "\xEC\x8F\x88", + "\x9B\xEF" => "\xEC\x8F\x89", + "\x9B\xF0" => "\xEC\x8F\x8A", + "\x9B\xF1" => "\xEC\x8F\x8B", + "\x9B\xF2" => "\xEC\x8F\x8C", + "\x9B\xF3" => "\xEC\x8F\x8D", + "\x9B\xF4" => "\xEC\x8F\x8E", + "\x9B\xF5" => "\xEC\x8F\x8F", + "\x9B\xF6" => "\xEC\x8F\x90", + "\x9B\xF7" => "\xEC\x8F\x91", + "\x9B\xF8" => "\xEC\x8F\x92", + "\x9B\xF9" => "\xEC\x8F\x93", + "\x9B\xFA" => "\xEC\x8F\x94", + "\x9B\xFB" => "\xEC\x8F\x95", + "\x9B\xFC" => "\xEC\x8F\x96", + "\x9B\xFD" => "\xEC\x8F\x97", + "\x9B\xFE" => "\xEC\x8F\x9A", + "\x9C\x41" => "\xEC\x8F\x9B", + "\x9C\x42" => "\xEC\x8F\x9D", + "\x9C\x43" => "\xEC\x8F\x9E", + "\x9C\x44" => "\xEC\x8F\xA1", + "\x9C\x45" => "\xEC\x8F\xA3", + "\x9C\x46" => "\xEC\x8F\xA4", + "\x9C\x47" => "\xEC\x8F\xA5", + "\x9C\x48" => "\xEC\x8F\xA6", + "\x9C\x49" => "\xEC\x8F\xA7", + "\x9C\x4A" => "\xEC\x8F\xAA", + "\x9C\x4B" => "\xEC\x8F\xAB", + "\x9C\x4C" => "\xEC\x8F\xAC", + "\x9C\x4D" => "\xEC\x8F\xAE", + "\x9C\x4E" => "\xEC\x8F\xAF", + "\x9C\x4F" => "\xEC\x8F\xB0", + "\x9C\x50" => "\xEC\x8F\xB1", + "\x9C\x51" => "\xEC\x8F\xB2", + "\x9C\x52" => "\xEC\x8F\xB3", + "\x9C\x53" => "\xEC\x8F\xB6", + "\x9C\x54" => "\xEC\x8F\xB7", + "\x9C\x55" => "\xEC\x8F\xB9", + "\x9C\x56" => "\xEC\x8F\xBA", + "\x9C\x57" => "\xEC\x8F\xBB", + "\x9C\x58" => "\xEC\x8F\xBC", + "\x9C\x59" => "\xEC\x8F\xBD", + "\x9C\x5A" => "\xEC\x8F\xBE", + "\x9C\x61" => "\xEC\x8F\xBF", + "\x9C\x62" => "\xEC\x90\x80", + "\x9C\x63" => "\xEC\x90\x81", + "\x9C\x64" => "\xEC\x90\x82", + "\x9C\x65" => "\xEC\x90\x83", + "\x9C\x66" => "\xEC\x90\x84", + "\x9C\x67" => "\xEC\x90\x85", + "\x9C\x68" => "\xEC\x90\x86", + "\x9C\x69" => "\xEC\x90\x87", + "\x9C\x6A" => "\xEC\x90\x89", + "\x9C\x6B" => "\xEC\x90\x8A", + "\x9C\x6C" => "\xEC\x90\x8B", + "\x9C\x6D" => "\xEC\x90\x8C", + "\x9C\x6E" => "\xEC\x90\x8D", + "\x9C\x6F" => "\xEC\x90\x8E", + "\x9C\x70" => "\xEC\x90\x8F", + "\x9C\x71" => "\xEC\x90\x91", + "\x9C\x72" => "\xEC\x90\x92", + "\x9C\x73" => "\xEC\x90\x93", + "\x9C\x74" => "\xEC\x90\x94", + "\x9C\x75" => "\xEC\x90\x95", + "\x9C\x76" => "\xEC\x90\x96", + "\x9C\x77" => "\xEC\x90\x97", + "\x9C\x78" => "\xEC\x90\x98", + "\x9C\x79" => "\xEC\x90\x99", + "\x9C\x7A" => "\xEC\x90\x9A", + "\x9C\x81" => "\xEC\x90\x9B", + "\x9C\x82" => "\xEC\x90\x9C", + "\x9C\x83" => "\xEC\x90\x9D", + "\x9C\x84" => "\xEC\x90\x9E", + "\x9C\x85" => "\xEC\x90\x9F", + "\x9C\x86" => "\xEC\x90\xA0", + "\x9C\x87" => "\xEC\x90\xA1", + "\x9C\x88" => "\xEC\x90\xA2", + "\x9C\x89" => "\xEC\x90\xA3", + "\x9C\x8A" => "\xEC\x90\xA5", + "\x9C\x8B" => "\xEC\x90\xA6", + "\x9C\x8C" => "\xEC\x90\xA7", + "\x9C\x8D" => "\xEC\x90\xA8", + "\x9C\x8E" => "\xEC\x90\xA9", + "\x9C\x8F" => "\xEC\x90\xAA", + "\x9C\x90" => "\xEC\x90\xAB", + "\x9C\x91" => "\xEC\x90\xAD", + "\x9C\x92" => "\xEC\x90\xAE", + "\x9C\x93" => "\xEC\x90\xAF", + "\x9C\x94" => "\xEC\x90\xB1", + "\x9C\x95" => "\xEC\x90\xB2", + "\x9C\x96" => "\xEC\x90\xB3", + "\x9C\x97" => "\xEC\x90\xB5", + "\x9C\x98" => "\xEC\x90\xB6", + "\x9C\x99" => "\xEC\x90\xB7", + "\x9C\x9A" => "\xEC\x90\xB8", + "\x9C\x9B" => "\xEC\x90\xB9", + "\x9C\x9C" => "\xEC\x90\xBA", + "\x9C\x9D" => "\xEC\x90\xBB", + "\x9C\x9E" => "\xEC\x90\xBE", + "\x9C\x9F" => "\xEC\x90\xBF", + "\x9C\xA0" => "\xEC\x91\x80", + "\x9C\xA1" => "\xEC\x91\x81", + "\x9C\xA2" => "\xEC\x91\x82", + "\x9C\xA3" => "\xEC\x91\x83", + "\x9C\xA4" => "\xEC\x91\x84", + "\x9C\xA5" => "\xEC\x91\x85", + "\x9C\xA6" => "\xEC\x91\x86", + "\x9C\xA7" => "\xEC\x91\x87", + "\x9C\xA8" => "\xEC\x91\x89", + "\x9C\xA9" => "\xEC\x91\x8A", + "\x9C\xAA" => "\xEC\x91\x8B", + "\x9C\xAB" => "\xEC\x91\x8C", + "\x9C\xAC" => "\xEC\x91\x8D", + "\x9C\xAD" => "\xEC\x91\x8E", + "\x9C\xAE" => "\xEC\x91\x8F", + "\x9C\xAF" => "\xEC\x91\x90", + "\x9C\xB0" => "\xEC\x91\x91", + "\x9C\xB1" => "\xEC\x91\x92", + "\x9C\xB2" => "\xEC\x91\x93", + "\x9C\xB3" => "\xEC\x91\x94", + "\x9C\xB4" => "\xEC\x91\x95", + "\x9C\xB5" => "\xEC\x91\x96", + "\x9C\xB6" => "\xEC\x91\x97", + "\x9C\xB7" => "\xEC\x91\x98", + "\x9C\xB8" => "\xEC\x91\x99", + "\x9C\xB9" => "\xEC\x91\x9A", + "\x9C\xBA" => "\xEC\x91\x9B", + "\x9C\xBB" => "\xEC\x91\x9C", + "\x9C\xBC" => "\xEC\x91\x9D", + "\x9C\xBD" => "\xEC\x91\x9E", + "\x9C\xBE" => "\xEC\x91\x9F", + "\x9C\xBF" => "\xEC\x91\xA0", + "\x9C\xC0" => "\xEC\x91\xA1", + "\x9C\xC1" => "\xEC\x91\xA2", + "\x9C\xC2" => "\xEC\x91\xA3", + "\x9C\xC3" => "\xEC\x91\xA6", + "\x9C\xC4" => "\xEC\x91\xA7", + "\x9C\xC5" => "\xEC\x91\xA9", + "\x9C\xC6" => "\xEC\x91\xAA", + "\x9C\xC7" => "\xEC\x91\xAB", + "\x9C\xC8" => "\xEC\x91\xAD", + "\x9C\xC9" => "\xEC\x91\xAE", + "\x9C\xCA" => "\xEC\x91\xAF", + "\x9C\xCB" => "\xEC\x91\xB0", + "\x9C\xCC" => "\xEC\x91\xB1", + "\x9C\xCD" => "\xEC\x91\xB2", + "\x9C\xCE" => "\xEC\x91\xB3", + "\x9C\xCF" => "\xEC\x91\xB6", + "\x9C\xD0" => "\xEC\x91\xB7", + "\x9C\xD1" => "\xEC\x91\xB8", + "\x9C\xD2" => "\xEC\x91\xBA", + "\x9C\xD3" => "\xEC\x91\xBB", + "\x9C\xD4" => "\xEC\x91\xBC", + "\x9C\xD5" => "\xEC\x91\xBD", + "\x9C\xD6" => "\xEC\x91\xBE", + "\x9C\xD7" => "\xEC\x91\xBF", + "\x9C\xD8" => "\xEC\x92\x81", + "\x9C\xD9" => "\xEC\x92\x82", + "\x9C\xDA" => "\xEC\x92\x83", + "\x9C\xDB" => "\xEC\x92\x84", + "\x9C\xDC" => "\xEC\x92\x85", + "\x9C\xDD" => "\xEC\x92\x86", + "\x9C\xDE" => "\xEC\x92\x87", + "\x9C\xDF" => "\xEC\x92\x88", + "\x9C\xE0" => "\xEC\x92\x89", + "\x9C\xE1" => "\xEC\x92\x8A", + "\x9C\xE2" => "\xEC\x92\x8B", + "\x9C\xE3" => "\xEC\x92\x8C", + "\x9C\xE4" => "\xEC\x92\x8D", + "\x9C\xE5" => "\xEC\x92\x8E", + "\x9C\xE6" => "\xEC\x92\x8F", + "\x9C\xE7" => "\xEC\x92\x90", + "\x9C\xE8" => "\xEC\x92\x91", + "\x9C\xE9" => "\xEC\x92\x92", + "\x9C\xEA" => "\xEC\x92\x93", + "\x9C\xEB" => "\xEC\x92\x95", + "\x9C\xEC" => "\xEC\x92\x96", + "\x9C\xED" => "\xEC\x92\x97", + "\x9C\xEE" => "\xEC\x92\x98", + "\x9C\xEF" => "\xEC\x92\x99", + "\x9C\xF0" => "\xEC\x92\x9A", + "\x9C\xF1" => "\xEC\x92\x9B", + "\x9C\xF2" => "\xEC\x92\x9D", + "\x9C\xF3" => "\xEC\x92\x9E", + "\x9C\xF4" => "\xEC\x92\x9F", + "\x9C\xF5" => "\xEC\x92\xA0", + "\x9C\xF6" => "\xEC\x92\xA1", + "\x9C\xF7" => "\xEC\x92\xA2", + "\x9C\xF8" => "\xEC\x92\xA3", + "\x9C\xF9" => "\xEC\x92\xA4", + "\x9C\xFA" => "\xEC\x92\xA5", + "\x9C\xFB" => "\xEC\x92\xA6", + "\x9C\xFC" => "\xEC\x92\xA7", + "\x9C\xFD" => "\xEC\x92\xA8", + "\x9C\xFE" => "\xEC\x92\xA9", + "\x9D\x41" => "\xEC\x92\xAA", + "\x9D\x42" => "\xEC\x92\xAB", + "\x9D\x43" => "\xEC\x92\xAC", + "\x9D\x44" => "\xEC\x92\xAD", + "\x9D\x45" => "\xEC\x92\xAE", + "\x9D\x46" => "\xEC\x92\xAF", + "\x9D\x47" => "\xEC\x92\xB0", + "\x9D\x48" => "\xEC\x92\xB1", + "\x9D\x49" => "\xEC\x92\xB2", + "\x9D\x4A" => "\xEC\x92\xB3", + "\x9D\x4B" => "\xEC\x92\xB4", + "\x9D\x4C" => "\xEC\x92\xB5", + "\x9D\x4D" => "\xEC\x92\xB6", + "\x9D\x4E" => "\xEC\x92\xB7", + "\x9D\x4F" => "\xEC\x92\xB9", + "\x9D\x50" => "\xEC\x92\xBA", + "\x9D\x51" => "\xEC\x92\xBB", + "\x9D\x52" => "\xEC\x92\xBD", + "\x9D\x53" => "\xEC\x92\xBE", + "\x9D\x54" => "\xEC\x92\xBF", + "\x9D\x55" => "\xEC\x93\x80", + "\x9D\x56" => "\xEC\x93\x81", + "\x9D\x57" => "\xEC\x93\x82", + "\x9D\x58" => "\xEC\x93\x83", + "\x9D\x59" => "\xEC\x93\x84", + "\x9D\x5A" => "\xEC\x93\x85", + "\x9D\x61" => "\xEC\x93\x86", + "\x9D\x62" => "\xEC\x93\x87", + "\x9D\x63" => "\xEC\x93\x88", + "\x9D\x64" => "\xEC\x93\x89", + "\x9D\x65" => "\xEC\x93\x8A", + "\x9D\x66" => "\xEC\x93\x8B", + "\x9D\x67" => "\xEC\x93\x8C", + "\x9D\x68" => "\xEC\x93\x8D", + "\x9D\x69" => "\xEC\x93\x8E", + "\x9D\x6A" => "\xEC\x93\x8F", + "\x9D\x6B" => "\xEC\x93\x90", + "\x9D\x6C" => "\xEC\x93\x91", + "\x9D\x6D" => "\xEC\x93\x92", + "\x9D\x6E" => "\xEC\x93\x93", + "\x9D\x6F" => "\xEC\x93\x94", + "\x9D\x70" => "\xEC\x93\x95", + "\x9D\x71" => "\xEC\x93\x96", + "\x9D\x72" => "\xEC\x93\x97", + "\x9D\x73" => "\xEC\x93\x98", + "\x9D\x74" => "\xEC\x93\x99", + "\x9D\x75" => "\xEC\x93\x9A", + "\x9D\x76" => "\xEC\x93\x9B", + "\x9D\x77" => "\xEC\x93\x9C", + "\x9D\x78" => "\xEC\x93\x9D", + "\x9D\x79" => "\xEC\x93\x9E", + "\x9D\x7A" => "\xEC\x93\x9F", + "\x9D\x81" => "\xEC\x93\xA0", + "\x9D\x82" => "\xEC\x93\xA1", + "\x9D\x83" => "\xEC\x93\xA2", + "\x9D\x84" => "\xEC\x93\xA3", + "\x9D\x85" => "\xEC\x93\xA4", + "\x9D\x86" => "\xEC\x93\xA5", + "\x9D\x87" => "\xEC\x93\xA6", + "\x9D\x88" => "\xEC\x93\xA7", + "\x9D\x89" => "\xEC\x93\xA8", + "\x9D\x8A" => "\xEC\x93\xAA", + "\x9D\x8B" => "\xEC\x93\xAB", + "\x9D\x8C" => "\xEC\x93\xAC", + "\x9D\x8D" => "\xEC\x93\xAD", + "\x9D\x8E" => "\xEC\x93\xAE", + "\x9D\x8F" => "\xEC\x93\xAF", + "\x9D\x90" => "\xEC\x93\xB2", + "\x9D\x91" => "\xEC\x93\xB3", + "\x9D\x92" => "\xEC\x93\xB5", + "\x9D\x93" => "\xEC\x93\xB6", + "\x9D\x94" => "\xEC\x93\xB7", + "\x9D\x95" => "\xEC\x93\xB9", + "\x9D\x96" => "\xEC\x93\xBB", + "\x9D\x97" => "\xEC\x93\xBC", + "\x9D\x98" => "\xEC\x93\xBD", + "\x9D\x99" => "\xEC\x93\xBE", + "\x9D\x9A" => "\xEC\x94\x82", + "\x9D\x9B" => "\xEC\x94\x83", + "\x9D\x9C" => "\xEC\x94\x84", + "\x9D\x9D" => "\xEC\x94\x85", + "\x9D\x9E" => "\xEC\x94\x86", + "\x9D\x9F" => "\xEC\x94\x87", + "\x9D\xA0" => "\xEC\x94\x88", + "\x9D\xA1" => "\xEC\x94\x89", + "\x9D\xA2" => "\xEC\x94\x8A", + "\x9D\xA3" => "\xEC\x94\x8B", + "\x9D\xA4" => "\xEC\x94\x8D", + "\x9D\xA5" => "\xEC\x94\x8E", + "\x9D\xA6" => "\xEC\x94\x8F", + "\x9D\xA7" => "\xEC\x94\x91", + "\x9D\xA8" => "\xEC\x94\x92", + "\x9D\xA9" => "\xEC\x94\x93", + "\x9D\xAA" => "\xEC\x94\x95", + "\x9D\xAB" => "\xEC\x94\x96", + "\x9D\xAC" => "\xEC\x94\x97", + "\x9D\xAD" => "\xEC\x94\x98", + "\x9D\xAE" => "\xEC\x94\x99", + "\x9D\xAF" => "\xEC\x94\x9A", + "\x9D\xB0" => "\xEC\x94\x9B", + "\x9D\xB1" => "\xEC\x94\x9D", + "\x9D\xB2" => "\xEC\x94\x9E", + "\x9D\xB3" => "\xEC\x94\x9F", + "\x9D\xB4" => "\xEC\x94\xA0", + "\x9D\xB5" => "\xEC\x94\xA1", + "\x9D\xB6" => "\xEC\x94\xA2", + "\x9D\xB7" => "\xEC\x94\xA3", + "\x9D\xB8" => "\xEC\x94\xA4", + "\x9D\xB9" => "\xEC\x94\xA5", + "\x9D\xBA" => "\xEC\x94\xA6", + "\x9D\xBB" => "\xEC\x94\xA7", + "\x9D\xBC" => "\xEC\x94\xAA", + "\x9D\xBD" => "\xEC\x94\xAB", + "\x9D\xBE" => "\xEC\x94\xAD", + "\x9D\xBF" => "\xEC\x94\xAE", + "\x9D\xC0" => "\xEC\x94\xAF", + "\x9D\xC1" => "\xEC\x94\xB1", + "\x9D\xC2" => "\xEC\x94\xB2", + "\x9D\xC3" => "\xEC\x94\xB3", + "\x9D\xC4" => "\xEC\x94\xB4", + "\x9D\xC5" => "\xEC\x94\xB5", + "\x9D\xC6" => "\xEC\x94\xB6", + "\x9D\xC7" => "\xEC\x94\xB7", + "\x9D\xC8" => "\xEC\x94\xBA", + "\x9D\xC9" => "\xEC\x94\xBC", + "\x9D\xCA" => "\xEC\x94\xBE", + "\x9D\xCB" => "\xEC\x94\xBF", + "\x9D\xCC" => "\xEC\x95\x80", + "\x9D\xCD" => "\xEC\x95\x81", + "\x9D\xCE" => "\xEC\x95\x82", + "\x9D\xCF" => "\xEC\x95\x83", + "\x9D\xD0" => "\xEC\x95\x86", + "\x9D\xD1" => "\xEC\x95\x87", + "\x9D\xD2" => "\xEC\x95\x8B", + "\x9D\xD3" => "\xEC\x95\x8F", + "\x9D\xD4" => "\xEC\x95\x90", + "\x9D\xD5" => "\xEC\x95\x91", + "\x9D\xD6" => "\xEC\x95\x92", + "\x9D\xD7" => "\xEC\x95\x96", + "\x9D\xD8" => "\xEC\x95\x9A", + "\x9D\xD9" => "\xEC\x95\x9B", + "\x9D\xDA" => "\xEC\x95\x9C", + "\x9D\xDB" => "\xEC\x95\x9F", + "\x9D\xDC" => "\xEC\x95\xA2", + "\x9D\xDD" => "\xEC\x95\xA3", + "\x9D\xDE" => "\xEC\x95\xA5", + "\x9D\xDF" => "\xEC\x95\xA6", + "\x9D\xE0" => "\xEC\x95\xA7", + "\x9D\xE1" => "\xEC\x95\xA9", + "\x9D\xE2" => "\xEC\x95\xAA", + "\x9D\xE3" => "\xEC\x95\xAB", + "\x9D\xE4" => "\xEC\x95\xAC", + "\x9D\xE5" => "\xEC\x95\xAD", + "\x9D\xE6" => "\xEC\x95\xAE", + "\x9D\xE7" => "\xEC\x95\xAF", + "\x9D\xE8" => "\xEC\x95\xB2", + "\x9D\xE9" => "\xEC\x95\xB6", + "\x9D\xEA" => "\xEC\x95\xB7", + "\x9D\xEB" => "\xEC\x95\xB8", + "\x9D\xEC" => "\xEC\x95\xB9", + "\x9D\xED" => "\xEC\x95\xBA", + "\x9D\xEE" => "\xEC\x95\xBB", + "\x9D\xEF" => "\xEC\x95\xBE", + "\x9D\xF0" => "\xEC\x95\xBF", + "\x9D\xF1" => "\xEC\x96\x81", + "\x9D\xF2" => "\xEC\x96\x82", + "\x9D\xF3" => "\xEC\x96\x83", + "\x9D\xF4" => "\xEC\x96\x85", + "\x9D\xF5" => "\xEC\x96\x86", + "\x9D\xF6" => "\xEC\x96\x88", + "\x9D\xF7" => "\xEC\x96\x89", + "\x9D\xF8" => "\xEC\x96\x8A", + "\x9D\xF9" => "\xEC\x96\x8B", + "\x9D\xFA" => "\xEC\x96\x8E", + "\x9D\xFB" => "\xEC\x96\x90", + "\x9D\xFC" => "\xEC\x96\x92", + "\x9D\xFD" => "\xEC\x96\x93", + "\x9D\xFE" => "\xEC\x96\x94", + "\x9E\x41" => "\xEC\x96\x96", + "\x9E\x42" => "\xEC\x96\x99", + "\x9E\x43" => "\xEC\x96\x9A", + "\x9E\x44" => "\xEC\x96\x9B", + "\x9E\x45" => "\xEC\x96\x9D", + "\x9E\x46" => "\xEC\x96\x9E", + "\x9E\x47" => "\xEC\x96\x9F", + "\x9E\x48" => "\xEC\x96\xA1", + "\x9E\x49" => "\xEC\x96\xA2", + "\x9E\x4A" => "\xEC\x96\xA3", + "\x9E\x4B" => "\xEC\x96\xA4", + "\x9E\x4C" => "\xEC\x96\xA5", + "\x9E\x4D" => "\xEC\x96\xA6", + "\x9E\x4E" => "\xEC\x96\xA7", + "\x9E\x4F" => "\xEC\x96\xA8", + "\x9E\x50" => "\xEC\x96\xAA", + "\x9E\x51" => "\xEC\x96\xAB", + "\x9E\x52" => "\xEC\x96\xAC", + "\x9E\x53" => "\xEC\x96\xAD", + "\x9E\x54" => "\xEC\x96\xAE", + "\x9E\x55" => "\xEC\x96\xAF", + "\x9E\x56" => "\xEC\x96\xB0", + "\x9E\x57" => "\xEC\x96\xB1", + "\x9E\x58" => "\xEC\x96\xB2", + "\x9E\x59" => "\xEC\x96\xB3", + "\x9E\x5A" => "\xEC\x96\xB6", + "\x9E\x61" => "\xEC\x96\xB7", + "\x9E\x62" => "\xEC\x96\xBA", + "\x9E\x63" => "\xEC\x96\xBF", + "\x9E\x64" => "\xEC\x97\x80", + "\x9E\x65" => "\xEC\x97\x81", + "\x9E\x66" => "\xEC\x97\x82", + "\x9E\x67" => "\xEC\x97\x83", + "\x9E\x68" => "\xEC\x97\x8B", + "\x9E\x69" => "\xEC\x97\x8D", + "\x9E\x6A" => "\xEC\x97\x8F", + "\x9E\x6B" => "\xEC\x97\x92", + "\x9E\x6C" => "\xEC\x97\x93", + "\x9E\x6D" => "\xEC\x97\x95", + "\x9E\x6E" => "\xEC\x97\x96", + "\x9E\x6F" => "\xEC\x97\x97", + "\x9E\x70" => "\xEC\x97\x99", + "\x9E\x71" => "\xEC\x97\x9A", + "\x9E\x72" => "\xEC\x97\x9B", + "\x9E\x73" => "\xEC\x97\x9C", + "\x9E\x74" => "\xEC\x97\x9D", + "\x9E\x75" => "\xEC\x97\x9E", + "\x9E\x76" => "\xEC\x97\x9F", + "\x9E\x77" => "\xEC\x97\xA2", + "\x9E\x78" => "\xEC\x97\xA4", + "\x9E\x79" => "\xEC\x97\xA6", + "\x9E\x7A" => "\xEC\x97\xA7", + "\x9E\x81" => "\xEC\x97\xA8", + "\x9E\x82" => "\xEC\x97\xA9", + "\x9E\x83" => "\xEC\x97\xAA", + "\x9E\x84" => "\xEC\x97\xAB", + "\x9E\x85" => "\xEC\x97\xAF", + "\x9E\x86" => "\xEC\x97\xB1", + "\x9E\x87" => "\xEC\x97\xB2", + "\x9E\x88" => "\xEC\x97\xB3", + "\x9E\x89" => "\xEC\x97\xB5", + "\x9E\x8A" => "\xEC\x97\xB8", + "\x9E\x8B" => "\xEC\x97\xB9", + "\x9E\x8C" => "\xEC\x97\xBA", + "\x9E\x8D" => "\xEC\x97\xBB", + "\x9E\x8E" => "\xEC\x98\x82", + "\x9E\x8F" => "\xEC\x98\x83", + "\x9E\x90" => "\xEC\x98\x84", + "\x9E\x91" => "\xEC\x98\x89", + "\x9E\x92" => "\xEC\x98\x8A", + "\x9E\x93" => "\xEC\x98\x8B", + "\x9E\x94" => "\xEC\x98\x8D", + "\x9E\x95" => "\xEC\x98\x8E", + "\x9E\x96" => "\xEC\x98\x8F", + "\x9E\x97" => "\xEC\x98\x91", + "\x9E\x98" => "\xEC\x98\x92", + "\x9E\x99" => "\xEC\x98\x93", + "\x9E\x9A" => "\xEC\x98\x94", + "\x9E\x9B" => "\xEC\x98\x95", + "\x9E\x9C" => "\xEC\x98\x96", + "\x9E\x9D" => "\xEC\x98\x97", + "\x9E\x9E" => "\xEC\x98\x9A", + "\x9E\x9F" => "\xEC\x98\x9D", + "\x9E\xA0" => "\xEC\x98\x9E", + "\x9E\xA1" => "\xEC\x98\x9F", + "\x9E\xA2" => "\xEC\x98\xA0", + "\x9E\xA3" => "\xEC\x98\xA1", + "\x9E\xA4" => "\xEC\x98\xA2", + "\x9E\xA5" => "\xEC\x98\xA3", + "\x9E\xA6" => "\xEC\x98\xA6", + "\x9E\xA7" => "\xEC\x98\xA7", + "\x9E\xA8" => "\xEC\x98\xA9", + "\x9E\xA9" => "\xEC\x98\xAA", + "\x9E\xAA" => "\xEC\x98\xAB", + "\x9E\xAB" => "\xEC\x98\xAF", + "\x9E\xAC" => "\xEC\x98\xB1", + "\x9E\xAD" => "\xEC\x98\xB2", + "\x9E\xAE" => "\xEC\x98\xB6", + "\x9E\xAF" => "\xEC\x98\xB8", + "\x9E\xB0" => "\xEC\x98\xBA", + "\x9E\xB1" => "\xEC\x98\xBC", + "\x9E\xB2" => "\xEC\x98\xBD", + "\x9E\xB3" => "\xEC\x98\xBE", + "\x9E\xB4" => "\xEC\x98\xBF", + "\x9E\xB5" => "\xEC\x99\x82", + "\x9E\xB6" => "\xEC\x99\x83", + "\x9E\xB7" => "\xEC\x99\x85", + "\x9E\xB8" => "\xEC\x99\x86", + "\x9E\xB9" => "\xEC\x99\x87", + "\x9E\xBA" => "\xEC\x99\x89", + "\x9E\xBB" => "\xEC\x99\x8A", + "\x9E\xBC" => "\xEC\x99\x8B", + "\x9E\xBD" => "\xEC\x99\x8C", + "\x9E\xBE" => "\xEC\x99\x8D", + "\x9E\xBF" => "\xEC\x99\x8E", + "\x9E\xC0" => "\xEC\x99\x8F", + "\x9E\xC1" => "\xEC\x99\x92", + "\x9E\xC2" => "\xEC\x99\x96", + "\x9E\xC3" => "\xEC\x99\x97", + "\x9E\xC4" => "\xEC\x99\x98", + "\x9E\xC5" => "\xEC\x99\x99", + "\x9E\xC6" => "\xEC\x99\x9A", + "\x9E\xC7" => "\xEC\x99\x9B", + "\x9E\xC8" => "\xEC\x99\x9E", + "\x9E\xC9" => "\xEC\x99\x9F", + "\x9E\xCA" => "\xEC\x99\xA1", + "\x9E\xCB" => "\xEC\x99\xA2", + "\x9E\xCC" => "\xEC\x99\xA3", + "\x9E\xCD" => "\xEC\x99\xA4", + "\x9E\xCE" => "\xEC\x99\xA5", + "\x9E\xCF" => "\xEC\x99\xA6", + "\x9E\xD0" => "\xEC\x99\xA7", + "\x9E\xD1" => "\xEC\x99\xA8", + "\x9E\xD2" => "\xEC\x99\xA9", + "\x9E\xD3" => "\xEC\x99\xAA", + "\x9E\xD4" => "\xEC\x99\xAB", + "\x9E\xD5" => "\xEC\x99\xAD", + "\x9E\xD6" => "\xEC\x99\xAE", + "\x9E\xD7" => "\xEC\x99\xB0", + "\x9E\xD8" => "\xEC\x99\xB2", + "\x9E\xD9" => "\xEC\x99\xB3", + "\x9E\xDA" => "\xEC\x99\xB4", + "\x9E\xDB" => "\xEC\x99\xB5", + "\x9E\xDC" => "\xEC\x99\xB6", + "\x9E\xDD" => "\xEC\x99\xB7", + "\x9E\xDE" => "\xEC\x99\xBA", + "\x9E\xDF" => "\xEC\x99\xBB", + "\x9E\xE0" => "\xEC\x99\xBD", + "\x9E\xE1" => "\xEC\x99\xBE", + "\x9E\xE2" => "\xEC\x99\xBF", + "\x9E\xE3" => "\xEC\x9A\x81", + "\x9E\xE4" => "\xEC\x9A\x82", + "\x9E\xE5" => "\xEC\x9A\x83", + "\x9E\xE6" => "\xEC\x9A\x84", + "\x9E\xE7" => "\xEC\x9A\x85", + "\x9E\xE8" => "\xEC\x9A\x86", + "\x9E\xE9" => "\xEC\x9A\x87", + "\x9E\xEA" => "\xEC\x9A\x8A", + "\x9E\xEB" => "\xEC\x9A\x8C", + "\x9E\xEC" => "\xEC\x9A\x8E", + "\x9E\xED" => "\xEC\x9A\x8F", + "\x9E\xEE" => "\xEC\x9A\x90", + "\x9E\xEF" => "\xEC\x9A\x91", + "\x9E\xF0" => "\xEC\x9A\x92", + "\x9E\xF1" => "\xEC\x9A\x93", + "\x9E\xF2" => "\xEC\x9A\x96", + "\x9E\xF3" => "\xEC\x9A\x97", + "\x9E\xF4" => "\xEC\x9A\x99", + "\x9E\xF5" => "\xEC\x9A\x9A", + "\x9E\xF6" => "\xEC\x9A\x9B", + "\x9E\xF7" => "\xEC\x9A\x9D", + "\x9E\xF8" => "\xEC\x9A\x9E", + "\x9E\xF9" => "\xEC\x9A\x9F", + "\x9E\xFA" => "\xEC\x9A\xA0", + "\x9E\xFB" => "\xEC\x9A\xA1", + "\x9E\xFC" => "\xEC\x9A\xA2", + "\x9E\xFD" => "\xEC\x9A\xA3", + "\x9E\xFE" => "\xEC\x9A\xA6", + "\x9F\x41" => "\xEC\x9A\xA8", + "\x9F\x42" => "\xEC\x9A\xAA", + "\x9F\x43" => "\xEC\x9A\xAB", + "\x9F\x44" => "\xEC\x9A\xAC", + "\x9F\x45" => "\xEC\x9A\xAD", + "\x9F\x46" => "\xEC\x9A\xAE", + "\x9F\x47" => "\xEC\x9A\xAF", + "\x9F\x48" => "\xEC\x9A\xB2", + "\x9F\x49" => "\xEC\x9A\xB3", + "\x9F\x4A" => "\xEC\x9A\xB5", + "\x9F\x4B" => "\xEC\x9A\xB6", + "\x9F\x4C" => "\xEC\x9A\xB7", + "\x9F\x4D" => "\xEC\x9A\xBB", + "\x9F\x4E" => "\xEC\x9A\xBC", + "\x9F\x4F" => "\xEC\x9A\xBD", + "\x9F\x50" => "\xEC\x9A\xBE", + "\x9F\x51" => "\xEC\x9A\xBF", + "\x9F\x52" => "\xEC\x9B\x82", + "\x9F\x53" => "\xEC\x9B\x84", + "\x9F\x54" => "\xEC\x9B\x86", + "\x9F\x55" => "\xEC\x9B\x87", + "\x9F\x56" => "\xEC\x9B\x88", + "\x9F\x57" => "\xEC\x9B\x89", + "\x9F\x58" => "\xEC\x9B\x8A", + "\x9F\x59" => "\xEC\x9B\x8B", + "\x9F\x5A" => "\xEC\x9B\x8E", + "\x9F\x61" => "\xEC\x9B\x8F", + "\x9F\x62" => "\xEC\x9B\x91", + "\x9F\x63" => "\xEC\x9B\x92", + "\x9F\x64" => "\xEC\x9B\x93", + "\x9F\x65" => "\xEC\x9B\x95", + "\x9F\x66" => "\xEC\x9B\x96", + "\x9F\x67" => "\xEC\x9B\x97", + "\x9F\x68" => "\xEC\x9B\x98", + "\x9F\x69" => "\xEC\x9B\x99", + "\x9F\x6A" => "\xEC\x9B\x9A", + "\x9F\x6B" => "\xEC\x9B\x9B", + "\x9F\x6C" => "\xEC\x9B\x9E", + "\x9F\x6D" => "\xEC\x9B\x9F", + "\x9F\x6E" => "\xEC\x9B\xA2", + "\x9F\x6F" => "\xEC\x9B\xA3", + "\x9F\x70" => "\xEC\x9B\xA4", + "\x9F\x71" => "\xEC\x9B\xA5", + "\x9F\x72" => "\xEC\x9B\xA6", + "\x9F\x73" => "\xEC\x9B\xA7", + "\x9F\x74" => "\xEC\x9B\xAA", + "\x9F\x75" => "\xEC\x9B\xAB", + "\x9F\x76" => "\xEC\x9B\xAD", + "\x9F\x77" => "\xEC\x9B\xAE", + "\x9F\x78" => "\xEC\x9B\xAF", + "\x9F\x79" => "\xEC\x9B\xB1", + "\x9F\x7A" => "\xEC\x9B\xB2", + "\x9F\x81" => "\xEC\x9B\xB3", + "\x9F\x82" => "\xEC\x9B\xB4", + "\x9F\x83" => "\xEC\x9B\xB5", + "\x9F\x84" => "\xEC\x9B\xB6", + "\x9F\x85" => "\xEC\x9B\xB7", + "\x9F\x86" => "\xEC\x9B\xBA", + "\x9F\x87" => "\xEC\x9B\xBB", + "\x9F\x88" => "\xEC\x9B\xBC", + "\x9F\x89" => "\xEC\x9B\xBE", + "\x9F\x8A" => "\xEC\x9B\xBF", + "\x9F\x8B" => "\xEC\x9C\x80", + "\x9F\x8C" => "\xEC\x9C\x81", + "\x9F\x8D" => "\xEC\x9C\x82", + "\x9F\x8E" => "\xEC\x9C\x83", + "\x9F\x8F" => "\xEC\x9C\x86", + "\x9F\x90" => "\xEC\x9C\x87", + "\x9F\x91" => "\xEC\x9C\x89", + "\x9F\x92" => "\xEC\x9C\x8A", + "\x9F\x93" => "\xEC\x9C\x8B", + "\x9F\x94" => "\xEC\x9C\x8D", + "\x9F\x95" => "\xEC\x9C\x8E", + "\x9F\x96" => "\xEC\x9C\x8F", + "\x9F\x97" => "\xEC\x9C\x90", + "\x9F\x98" => "\xEC\x9C\x91", + "\x9F\x99" => "\xEC\x9C\x92", + "\x9F\x9A" => "\xEC\x9C\x93", + "\x9F\x9B" => "\xEC\x9C\x96", + "\x9F\x9C" => "\xEC\x9C\x98", + "\x9F\x9D" => "\xEC\x9C\x9A", + "\x9F\x9E" => "\xEC\x9C\x9B", + "\x9F\x9F" => "\xEC\x9C\x9C", + "\x9F\xA0" => "\xEC\x9C\x9D", + "\x9F\xA1" => "\xEC\x9C\x9E", + "\x9F\xA2" => "\xEC\x9C\x9F", + "\x9F\xA3" => "\xEC\x9C\xA2", + "\x9F\xA4" => "\xEC\x9C\xA3", + "\x9F\xA5" => "\xEC\x9C\xA5", + "\x9F\xA6" => "\xEC\x9C\xA6", + "\x9F\xA7" => "\xEC\x9C\xA7", + "\x9F\xA8" => "\xEC\x9C\xA9", + "\x9F\xA9" => "\xEC\x9C\xAA", + "\x9F\xAA" => "\xEC\x9C\xAB", + "\x9F\xAB" => "\xEC\x9C\xAC", + "\x9F\xAC" => "\xEC\x9C\xAD", + "\x9F\xAD" => "\xEC\x9C\xAE", + "\x9F\xAE" => "\xEC\x9C\xAF", + "\x9F\xAF" => "\xEC\x9C\xB2", + "\x9F\xB0" => "\xEC\x9C\xB4", + "\x9F\xB1" => "\xEC\x9C\xB6", + "\x9F\xB2" => "\xEC\x9C\xB8", + "\x9F\xB3" => "\xEC\x9C\xB9", + "\x9F\xB4" => "\xEC\x9C\xBA", + "\x9F\xB5" => "\xEC\x9C\xBB", + "\x9F\xB6" => "\xEC\x9C\xBE", + "\x9F\xB7" => "\xEC\x9C\xBF", + "\x9F\xB8" => "\xEC\x9D\x81", + "\x9F\xB9" => "\xEC\x9D\x82", + "\x9F\xBA" => "\xEC\x9D\x83", + "\x9F\xBB" => "\xEC\x9D\x85", + "\x9F\xBC" => "\xEC\x9D\x86", + "\x9F\xBD" => "\xEC\x9D\x87", + "\x9F\xBE" => "\xEC\x9D\x88", + "\x9F\xBF" => "\xEC\x9D\x89", + "\x9F\xC0" => "\xEC\x9D\x8B", + "\x9F\xC1" => "\xEC\x9D\x8E", + "\x9F\xC2" => "\xEC\x9D\x90", + "\x9F\xC3" => "\xEC\x9D\x99", + "\x9F\xC4" => "\xEC\x9D\x9A", + "\x9F\xC5" => "\xEC\x9D\x9B", + "\x9F\xC6" => "\xEC\x9D\x9D", + "\x9F\xC7" => "\xEC\x9D\x9E", + "\x9F\xC8" => "\xEC\x9D\x9F", + "\x9F\xC9" => "\xEC\x9D\xA1", + "\x9F\xCA" => "\xEC\x9D\xA2", + "\x9F\xCB" => "\xEC\x9D\xA3", + "\x9F\xCC" => "\xEC\x9D\xA4", + "\x9F\xCD" => "\xEC\x9D\xA5", + "\x9F\xCE" => "\xEC\x9D\xA6", + "\x9F\xCF" => "\xEC\x9D\xA7", + "\x9F\xD0" => "\xEC\x9D\xA9", + "\x9F\xD1" => "\xEC\x9D\xAA", + "\x9F\xD2" => "\xEC\x9D\xAC", + "\x9F\xD3" => "\xEC\x9D\xAD", + "\x9F\xD4" => "\xEC\x9D\xAE", + "\x9F\xD5" => "\xEC\x9D\xAF", + "\x9F\xD6" => "\xEC\x9D\xB0", + "\x9F\xD7" => "\xEC\x9D\xB1", + "\x9F\xD8" => "\xEC\x9D\xB2", + "\x9F\xD9" => "\xEC\x9D\xB3", + "\x9F\xDA" => "\xEC\x9D\xB6", + "\x9F\xDB" => "\xEC\x9D\xB7", + "\x9F\xDC" => "\xEC\x9D\xB9", + "\x9F\xDD" => "\xEC\x9D\xBA", + "\x9F\xDE" => "\xEC\x9D\xBB", + "\x9F\xDF" => "\xEC\x9D\xBF", + "\x9F\xE0" => "\xEC\x9E\x80", + "\x9F\xE1" => "\xEC\x9E\x81", + "\x9F\xE2" => "\xEC\x9E\x82", + "\x9F\xE3" => "\xEC\x9E\x86", + "\x9F\xE4" => "\xEC\x9E\x8B", + "\x9F\xE5" => "\xEC\x9E\x8C", + "\x9F\xE6" => "\xEC\x9E\x8D", + "\x9F\xE7" => "\xEC\x9E\x8F", + "\x9F\xE8" => "\xEC\x9E\x92", + "\x9F\xE9" => "\xEC\x9E\x93", + "\x9F\xEA" => "\xEC\x9E\x95", + "\x9F\xEB" => "\xEC\x9E\x99", + "\x9F\xEC" => "\xEC\x9E\x9B", + "\x9F\xED" => "\xEC\x9E\x9C", + "\x9F\xEE" => "\xEC\x9E\x9D", + "\x9F\xEF" => "\xEC\x9E\x9E", + "\x9F\xF0" => "\xEC\x9E\x9F", + "\x9F\xF1" => "\xEC\x9E\xA2", + "\x9F\xF2" => "\xEC\x9E\xA7", + "\x9F\xF3" => "\xEC\x9E\xA8", + "\x9F\xF4" => "\xEC\x9E\xA9", + "\x9F\xF5" => "\xEC\x9E\xAA", + "\x9F\xF6" => "\xEC\x9E\xAB", + "\x9F\xF7" => "\xEC\x9E\xAE", + "\x9F\xF8" => "\xEC\x9E\xAF", + "\x9F\xF9" => "\xEC\x9E\xB1", + "\x9F\xFA" => "\xEC\x9E\xB2", + "\x9F\xFB" => "\xEC\x9E\xB3", + "\x9F\xFC" => "\xEC\x9E\xB5", + "\x9F\xFD" => "\xEC\x9E\xB6", + "\x9F\xFE" => "\xEC\x9E\xB7", + "\xA0\x41" => "\xEC\x9E\xB8", + "\xA0\x42" => "\xEC\x9E\xB9", + "\xA0\x43" => "\xEC\x9E\xBA", + "\xA0\x44" => "\xEC\x9E\xBB", + "\xA0\x45" => "\xEC\x9E\xBE", + "\xA0\x46" => "\xEC\x9F\x82", + "\xA0\x47" => "\xEC\x9F\x83", + "\xA0\x48" => "\xEC\x9F\x84", + "\xA0\x49" => "\xEC\x9F\x85", + "\xA0\x4A" => "\xEC\x9F\x86", + "\xA0\x4B" => "\xEC\x9F\x87", + "\xA0\x4C" => "\xEC\x9F\x8A", + "\xA0\x4D" => "\xEC\x9F\x8B", + "\xA0\x4E" => "\xEC\x9F\x8D", + "\xA0\x4F" => "\xEC\x9F\x8F", + "\xA0\x50" => "\xEC\x9F\x91", + "\xA0\x51" => "\xEC\x9F\x92", + "\xA0\x52" => "\xEC\x9F\x93", + "\xA0\x53" => "\xEC\x9F\x94", + "\xA0\x54" => "\xEC\x9F\x95", + "\xA0\x55" => "\xEC\x9F\x96", + "\xA0\x56" => "\xEC\x9F\x97", + "\xA0\x57" => "\xEC\x9F\x99", + "\xA0\x58" => "\xEC\x9F\x9A", + "\xA0\x59" => "\xEC\x9F\x9B", + "\xA0\x5A" => "\xEC\x9F\x9C", + "\xA0\x61" => "\xEC\x9F\x9E", + "\xA0\x62" => "\xEC\x9F\x9F", + "\xA0\x63" => "\xEC\x9F\xA0", + "\xA0\x64" => "\xEC\x9F\xA1", + "\xA0\x65" => "\xEC\x9F\xA2", + "\xA0\x66" => "\xEC\x9F\xA3", + "\xA0\x67" => "\xEC\x9F\xA5", + "\xA0\x68" => "\xEC\x9F\xA6", + "\xA0\x69" => "\xEC\x9F\xA7", + "\xA0\x6A" => "\xEC\x9F\xA9", + "\xA0\x6B" => "\xEC\x9F\xAA", + "\xA0\x6C" => "\xEC\x9F\xAB", + "\xA0\x6D" => "\xEC\x9F\xAD", + "\xA0\x6E" => "\xEC\x9F\xAE", + "\xA0\x6F" => "\xEC\x9F\xAF", + "\xA0\x70" => "\xEC\x9F\xB0", + "\xA0\x71" => "\xEC\x9F\xB1", + "\xA0\x72" => "\xEC\x9F\xB2", + "\xA0\x73" => "\xEC\x9F\xB3", + "\xA0\x74" => "\xEC\x9F\xB4", + "\xA0\x75" => "\xEC\x9F\xB5", + "\xA0\x76" => "\xEC\x9F\xB6", + "\xA0\x77" => "\xEC\x9F\xB7", + "\xA0\x78" => "\xEC\x9F\xB8", + "\xA0\x79" => "\xEC\x9F\xB9", + "\xA0\x7A" => "\xEC\x9F\xBA", + "\xA0\x81" => "\xEC\x9F\xBB", + "\xA0\x82" => "\xEC\x9F\xBC", + "\xA0\x83" => "\xEC\x9F\xBD", + "\xA0\x84" => "\xEC\x9F\xBE", + "\xA0\x85" => "\xEC\x9F\xBF", + "\xA0\x86" => "\xEC\xA0\x82", + "\xA0\x87" => "\xEC\xA0\x83", + "\xA0\x88" => "\xEC\xA0\x85", + "\xA0\x89" => "\xEC\xA0\x86", + "\xA0\x8A" => "\xEC\xA0\x87", + "\xA0\x8B" => "\xEC\xA0\x89", + "\xA0\x8C" => "\xEC\xA0\x8B", + "\xA0\x8D" => "\xEC\xA0\x8C", + "\xA0\x8E" => "\xEC\xA0\x8D", + "\xA0\x8F" => "\xEC\xA0\x8E", + "\xA0\x90" => "\xEC\xA0\x8F", + "\xA0\x91" => "\xEC\xA0\x92", + "\xA0\x92" => "\xEC\xA0\x94", + "\xA0\x93" => "\xEC\xA0\x97", + "\xA0\x94" => "\xEC\xA0\x98", + "\xA0\x95" => "\xEC\xA0\x99", + "\xA0\x96" => "\xEC\xA0\x9A", + "\xA0\x97" => "\xEC\xA0\x9B", + "\xA0\x98" => "\xEC\xA0\x9E", + "\xA0\x99" => "\xEC\xA0\x9F", + "\xA0\x9A" => "\xEC\xA0\xA1", + "\xA0\x9B" => "\xEC\xA0\xA2", + "\xA0\x9C" => "\xEC\xA0\xA3", + "\xA0\x9D" => "\xEC\xA0\xA5", + "\xA0\x9E" => "\xEC\xA0\xA6", + "\xA0\x9F" => "\xEC\xA0\xA7", + "\xA0\xA0" => "\xEC\xA0\xA8", + "\xA0\xA1" => "\xEC\xA0\xA9", + "\xA0\xA2" => "\xEC\xA0\xAA", + "\xA0\xA3" => "\xEC\xA0\xAB", + "\xA0\xA4" => "\xEC\xA0\xAE", + "\xA0\xA5" => "\xEC\xA0\xB0", + "\xA0\xA6" => "\xEC\xA0\xB2", + "\xA0\xA7" => "\xEC\xA0\xB3", + "\xA0\xA8" => "\xEC\xA0\xB4", + "\xA0\xA9" => "\xEC\xA0\xB5", + "\xA0\xAA" => "\xEC\xA0\xB6", + "\xA0\xAB" => "\xEC\xA0\xB7", + "\xA0\xAC" => "\xEC\xA0\xB9", + "\xA0\xAD" => "\xEC\xA0\xBA", + "\xA0\xAE" => "\xEC\xA0\xBB", + "\xA0\xAF" => "\xEC\xA0\xBD", + "\xA0\xB0" => "\xEC\xA0\xBE", + "\xA0\xB1" => "\xEC\xA0\xBF", + "\xA0\xB2" => "\xEC\xA1\x81", + "\xA0\xB3" => "\xEC\xA1\x82", + "\xA0\xB4" => "\xEC\xA1\x83", + "\xA0\xB5" => "\xEC\xA1\x84", + "\xA0\xB6" => "\xEC\xA1\x85", + "\xA0\xB7" => "\xEC\xA1\x86", + "\xA0\xB8" => "\xEC\xA1\x87", + "\xA0\xB9" => "\xEC\xA1\x8A", + "\xA0\xBA" => "\xEC\xA1\x8B", + "\xA0\xBB" => "\xEC\xA1\x8E", + "\xA0\xBC" => "\xEC\xA1\x8F", + "\xA0\xBD" => "\xEC\xA1\x90", + "\xA0\xBE" => "\xEC\xA1\x91", + "\xA0\xBF" => "\xEC\xA1\x92", + "\xA0\xC0" => "\xEC\xA1\x93", + "\xA0\xC1" => "\xEC\xA1\x95", + "\xA0\xC2" => "\xEC\xA1\x96", + "\xA0\xC3" => "\xEC\xA1\x97", + "\xA0\xC4" => "\xEC\xA1\x98", + "\xA0\xC5" => "\xEC\xA1\x99", + "\xA0\xC6" => "\xEC\xA1\x9A", + "\xA0\xC7" => "\xEC\xA1\x9B", + "\xA0\xC8" => "\xEC\xA1\x9C", + "\xA0\xC9" => "\xEC\xA1\x9D", + "\xA0\xCA" => "\xEC\xA1\x9E", + "\xA0\xCB" => "\xEC\xA1\x9F", + "\xA0\xCC" => "\xEC\xA1\xA0", + "\xA0\xCD" => "\xEC\xA1\xA1", + "\xA0\xCE" => "\xEC\xA1\xA2", + "\xA0\xCF" => "\xEC\xA1\xA3", + "\xA0\xD0" => "\xEC\xA1\xA4", + "\xA0\xD1" => "\xEC\xA1\xA5", + "\xA0\xD2" => "\xEC\xA1\xA6", + "\xA0\xD3" => "\xEC\xA1\xA7", + "\xA0\xD4" => "\xEC\xA1\xA8", + "\xA0\xD5" => "\xEC\xA1\xA9", + "\xA0\xD6" => "\xEC\xA1\xAA", + "\xA0\xD7" => "\xEC\xA1\xAB", + "\xA0\xD8" => "\xEC\xA1\xAC", + "\xA0\xD9" => "\xEC\xA1\xAD", + "\xA0\xDA" => "\xEC\xA1\xAE", + "\xA0\xDB" => "\xEC\xA1\xAF", + "\xA0\xDC" => "\xEC\xA1\xB2", + "\xA0\xDD" => "\xEC\xA1\xB3", + "\xA0\xDE" => "\xEC\xA1\xB5", + "\xA0\xDF" => "\xEC\xA1\xB6", + "\xA0\xE0" => "\xEC\xA1\xB7", + "\xA0\xE1" => "\xEC\xA1\xB9", + "\xA0\xE2" => "\xEC\xA1\xBB", + "\xA0\xE3" => "\xEC\xA1\xBC", + "\xA0\xE4" => "\xEC\xA1\xBD", + "\xA0\xE5" => "\xEC\xA1\xBE", + "\xA0\xE6" => "\xEC\xA1\xBF", + "\xA0\xE7" => "\xEC\xA2\x82", + "\xA0\xE8" => "\xEC\xA2\x84", + "\xA0\xE9" => "\xEC\xA2\x88", + "\xA0\xEA" => "\xEC\xA2\x89", + "\xA0\xEB" => "\xEC\xA2\x8A", + "\xA0\xEC" => "\xEC\xA2\x8E", + "\xA0\xED" => "\xEC\xA2\x8F", + "\xA0\xEE" => "\xEC\xA2\x90", + "\xA0\xEF" => "\xEC\xA2\x91", + "\xA0\xF0" => "\xEC\xA2\x92", + "\xA0\xF1" => "\xEC\xA2\x93", + "\xA0\xF2" => "\xEC\xA2\x95", + "\xA0\xF3" => "\xEC\xA2\x96", + "\xA0\xF4" => "\xEC\xA2\x97", + "\xA0\xF5" => "\xEC\xA2\x98", + "\xA0\xF6" => "\xEC\xA2\x99", + "\xA0\xF7" => "\xEC\xA2\x9A", + "\xA0\xF8" => "\xEC\xA2\x9B", + "\xA0\xF9" => "\xEC\xA2\x9C", + "\xA0\xFA" => "\xEC\xA2\x9E", + "\xA0\xFB" => "\xEC\xA2\xA0", + "\xA0\xFC" => "\xEC\xA2\xA2", + "\xA0\xFD" => "\xEC\xA2\xA3", + "\xA0\xFE" => "\xEC\xA2\xA4", + "\xA1\x41" => "\xEC\xA2\xA5", + "\xA1\x42" => "\xEC\xA2\xA6", + "\xA1\x43" => "\xEC\xA2\xA7", + "\xA1\x44" => "\xEC\xA2\xA9", + "\xA1\x45" => "\xEC\xA2\xAA", + "\xA1\x46" => "\xEC\xA2\xAB", + "\xA1\x47" => "\xEC\xA2\xAC", + "\xA1\x48" => "\xEC\xA2\xAD", + "\xA1\x49" => "\xEC\xA2\xAE", + "\xA1\x4A" => "\xEC\xA2\xAF", + "\xA1\x4B" => "\xEC\xA2\xB0", + "\xA1\x4C" => "\xEC\xA2\xB1", + "\xA1\x4D" => "\xEC\xA2\xB2", + "\xA1\x4E" => "\xEC\xA2\xB3", + "\xA1\x4F" => "\xEC\xA2\xB4", + "\xA1\x50" => "\xEC\xA2\xB5", + "\xA1\x51" => "\xEC\xA2\xB6", + "\xA1\x52" => "\xEC\xA2\xB7", + "\xA1\x53" => "\xEC\xA2\xB8", + "\xA1\x54" => "\xEC\xA2\xB9", + "\xA1\x55" => "\xEC\xA2\xBA", + "\xA1\x56" => "\xEC\xA2\xBB", + "\xA1\x57" => "\xEC\xA2\xBE", + "\xA1\x58" => "\xEC\xA2\xBF", + "\xA1\x59" => "\xEC\xA3\x80", + "\xA1\x5A" => "\xEC\xA3\x81", + "\xA1\x61" => "\xEC\xA3\x82", + "\xA1\x62" => "\xEC\xA3\x83", + "\xA1\x63" => "\xEC\xA3\x85", + "\xA1\x64" => "\xEC\xA3\x86", + "\xA1\x65" => "\xEC\xA3\x87", + "\xA1\x66" => "\xEC\xA3\x89", + "\xA1\x67" => "\xEC\xA3\x8A", + "\xA1\x68" => "\xEC\xA3\x8B", + "\xA1\x69" => "\xEC\xA3\x8D", + "\xA1\x6A" => "\xEC\xA3\x8E", + "\xA1\x6B" => "\xEC\xA3\x8F", + "\xA1\x6C" => "\xEC\xA3\x90", + "\xA1\x6D" => "\xEC\xA3\x91", + "\xA1\x6E" => "\xEC\xA3\x92", + "\xA1\x6F" => "\xEC\xA3\x93", + "\xA1\x70" => "\xEC\xA3\x96", + "\xA1\x71" => "\xEC\xA3\x98", + "\xA1\x72" => "\xEC\xA3\x9A", + "\xA1\x73" => "\xEC\xA3\x9B", + "\xA1\x74" => "\xEC\xA3\x9C", + "\xA1\x75" => "\xEC\xA3\x9D", + "\xA1\x76" => "\xEC\xA3\x9E", + "\xA1\x77" => "\xEC\xA3\x9F", + "\xA1\x78" => "\xEC\xA3\xA2", + "\xA1\x79" => "\xEC\xA3\xA3", + "\xA1\x7A" => "\xEC\xA3\xA5", + "\xA1\x81" => "\xEC\xA3\xA6", + "\xA1\x82" => "\xEC\xA3\xA7", + "\xA1\x83" => "\xEC\xA3\xA8", + "\xA1\x84" => "\xEC\xA3\xA9", + "\xA1\x85" => "\xEC\xA3\xAA", + "\xA1\x86" => "\xEC\xA3\xAB", + "\xA1\x87" => "\xEC\xA3\xAC", + "\xA1\x88" => "\xEC\xA3\xAD", + "\xA1\x89" => "\xEC\xA3\xAE", + "\xA1\x8A" => "\xEC\xA3\xAF", + "\xA1\x8B" => "\xEC\xA3\xB0", + "\xA1\x8C" => "\xEC\xA3\xB1", + "\xA1\x8D" => "\xEC\xA3\xB2", + "\xA1\x8E" => "\xEC\xA3\xB3", + "\xA1\x8F" => "\xEC\xA3\xB4", + "\xA1\x90" => "\xEC\xA3\xB6", + "\xA1\x91" => "\xEC\xA3\xB7", + "\xA1\x92" => "\xEC\xA3\xB8", + "\xA1\x93" => "\xEC\xA3\xB9", + "\xA1\x94" => "\xEC\xA3\xBA", + "\xA1\x95" => "\xEC\xA3\xBB", + "\xA1\x96" => "\xEC\xA3\xBE", + "\xA1\x97" => "\xEC\xA3\xBF", + "\xA1\x98" => "\xEC\xA4\x81", + "\xA1\x99" => "\xEC\xA4\x82", + "\xA1\x9A" => "\xEC\xA4\x83", + "\xA1\x9B" => "\xEC\xA4\x87", + "\xA1\x9C" => "\xEC\xA4\x88", + "\xA1\x9D" => "\xEC\xA4\x89", + "\xA1\x9E" => "\xEC\xA4\x8A", + "\xA1\x9F" => "\xEC\xA4\x8B", + "\xA1\xA0" => "\xEC\xA4\x8E", + "\xA1\xA1" => "\xE3\x80\x80", + "\xA1\xA2" => "\xE3\x80\x81", + "\xA1\xA3" => "\xE3\x80\x82", + "\xA1\xA4" => "\xC2\xB7", + "\xA1\xA5" => "\xE2\x80\xA5", + "\xA1\xA6" => "\xE2\x80\xA6", + "\xA1\xA7" => "\xC2\xA8", + "\xA1\xA8" => "\xE3\x80\x83", + "\xA1\xA9" => "\xC2\xAD", + "\xA1\xAA" => "\xE2\x80\x95", + "\xA1\xAB" => "\xE2\x88\xA5", + "\xA1\xAC" => "\xEF\xBC\xBC", + "\xA1\xAD" => "\xE2\x88\xBC", + "\xA1\xAE" => "\xE2\x80\x98", + "\xA1\xAF" => "\xE2\x80\x99", + "\xA1\xB0" => "\xE2\x80\x9C", + "\xA1\xB1" => "\xE2\x80\x9D", + "\xA1\xB2" => "\xE3\x80\x94", + "\xA1\xB3" => "\xE3\x80\x95", + "\xA1\xB4" => "\xE3\x80\x88", + "\xA1\xB5" => "\xE3\x80\x89", + "\xA1\xB6" => "\xE3\x80\x8A", + "\xA1\xB7" => "\xE3\x80\x8B", + "\xA1\xB8" => "\xE3\x80\x8C", + "\xA1\xB9" => "\xE3\x80\x8D", + "\xA1\xBA" => "\xE3\x80\x8E", + "\xA1\xBB" => "\xE3\x80\x8F", + "\xA1\xBC" => "\xE3\x80\x90", + "\xA1\xBD" => "\xE3\x80\x91", + "\xA1\xBE" => "\xC2\xB1", + "\xA1\xBF" => "\xC3\x97", + "\xA1\xC0" => "\xC3\xB7", + "\xA1\xC1" => "\xE2\x89\xA0", + "\xA1\xC2" => "\xE2\x89\xA4", + "\xA1\xC3" => "\xE2\x89\xA5", + "\xA1\xC4" => "\xE2\x88\x9E", + "\xA1\xC5" => "\xE2\x88\xB4", + "\xA1\xC6" => "\xC2\xB0", + "\xA1\xC7" => "\xE2\x80\xB2", + "\xA1\xC8" => "\xE2\x80\xB3", + "\xA1\xC9" => "\xE2\x84\x83", + "\xA1\xCA" => "\xE2\x84\xAB", + "\xA1\xCB" => "\xEF\xBF\xA0", + "\xA1\xCC" => "\xEF\xBF\xA1", + "\xA1\xCD" => "\xEF\xBF\xA5", + "\xA1\xCE" => "\xE2\x99\x82", + "\xA1\xCF" => "\xE2\x99\x80", + "\xA1\xD0" => "\xE2\x88\xA0", + "\xA1\xD1" => "\xE2\x8A\xA5", + "\xA1\xD2" => "\xE2\x8C\x92", + "\xA1\xD3" => "\xE2\x88\x82", + "\xA1\xD4" => "\xE2\x88\x87", + "\xA1\xD5" => "\xE2\x89\xA1", + "\xA1\xD6" => "\xE2\x89\x92", + "\xA1\xD7" => "\xC2\xA7", + "\xA1\xD8" => "\xE2\x80\xBB", + "\xA1\xD9" => "\xE2\x98\x86", + "\xA1\xDA" => "\xE2\x98\x85", + "\xA1\xDB" => "\xE2\x97\x8B", + "\xA1\xDC" => "\xE2\x97\x8F", + "\xA1\xDD" => "\xE2\x97\x8E", + "\xA1\xDE" => "\xE2\x97\x87", + "\xA1\xDF" => "\xE2\x97\x86", + "\xA1\xE0" => "\xE2\x96\xA1", + "\xA1\xE1" => "\xE2\x96\xA0", + "\xA1\xE2" => "\xE2\x96\xB3", + "\xA1\xE3" => "\xE2\x96\xB2", + "\xA1\xE4" => "\xE2\x96\xBD", + "\xA1\xE5" => "\xE2\x96\xBC", + "\xA1\xE6" => "\xE2\x86\x92", + "\xA1\xE7" => "\xE2\x86\x90", + "\xA1\xE8" => "\xE2\x86\x91", + "\xA1\xE9" => "\xE2\x86\x93", + "\xA1\xEA" => "\xE2\x86\x94", + "\xA1\xEB" => "\xE3\x80\x93", + "\xA1\xEC" => "\xE2\x89\xAA", + "\xA1\xED" => "\xE2\x89\xAB", + "\xA1\xEE" => "\xE2\x88\x9A", + "\xA1\xEF" => "\xE2\x88\xBD", + "\xA1\xF0" => "\xE2\x88\x9D", + "\xA1\xF1" => "\xE2\x88\xB5", + "\xA1\xF2" => "\xE2\x88\xAB", + "\xA1\xF3" => "\xE2\x88\xAC", + "\xA1\xF4" => "\xE2\x88\x88", + "\xA1\xF5" => "\xE2\x88\x8B", + "\xA1\xF6" => "\xE2\x8A\x86", + "\xA1\xF7" => "\xE2\x8A\x87", + "\xA1\xF8" => "\xE2\x8A\x82", + "\xA1\xF9" => "\xE2\x8A\x83", + "\xA1\xFA" => "\xE2\x88\xAA", + "\xA1\xFB" => "\xE2\x88\xA9", + "\xA1\xFC" => "\xE2\x88\xA7", + "\xA1\xFD" => "\xE2\x88\xA8", + "\xA1\xFE" => "\xEF\xBF\xA2", + "\xA2\x41" => "\xEC\xA4\x90", + "\xA2\x42" => "\xEC\xA4\x92", + "\xA2\x43" => "\xEC\xA4\x93", + "\xA2\x44" => "\xEC\xA4\x94", + "\xA2\x45" => "\xEC\xA4\x95", + "\xA2\x46" => "\xEC\xA4\x96", + "\xA2\x47" => "\xEC\xA4\x97", + "\xA2\x48" => "\xEC\xA4\x99", + "\xA2\x49" => "\xEC\xA4\x9A", + "\xA2\x4A" => "\xEC\xA4\x9B", + "\xA2\x4B" => "\xEC\xA4\x9C", + "\xA2\x4C" => "\xEC\xA4\x9D", + "\xA2\x4D" => "\xEC\xA4\x9E", + "\xA2\x4E" => "\xEC\xA4\x9F", + "\xA2\x4F" => "\xEC\xA4\xA0", + "\xA2\x50" => "\xEC\xA4\xA1", + "\xA2\x51" => "\xEC\xA4\xA2", + "\xA2\x52" => "\xEC\xA4\xA3", + "\xA2\x53" => "\xEC\xA4\xA4", + "\xA2\x54" => "\xEC\xA4\xA5", + "\xA2\x55" => "\xEC\xA4\xA6", + "\xA2\x56" => "\xEC\xA4\xA7", + "\xA2\x57" => "\xEC\xA4\xA8", + "\xA2\x58" => "\xEC\xA4\xA9", + "\xA2\x59" => "\xEC\xA4\xAA", + "\xA2\x5A" => "\xEC\xA4\xAB", + "\xA2\x61" => "\xEC\xA4\xAD", + "\xA2\x62" => "\xEC\xA4\xAE", + "\xA2\x63" => "\xEC\xA4\xAF", + "\xA2\x64" => "\xEC\xA4\xB0", + "\xA2\x65" => "\xEC\xA4\xB1", + "\xA2\x66" => "\xEC\xA4\xB2", + "\xA2\x67" => "\xEC\xA4\xB3", + "\xA2\x68" => "\xEC\xA4\xB5", + "\xA2\x69" => "\xEC\xA4\xB6", + "\xA2\x6A" => "\xEC\xA4\xB7", + "\xA2\x6B" => "\xEC\xA4\xB8", + "\xA2\x6C" => "\xEC\xA4\xB9", + "\xA2\x6D" => "\xEC\xA4\xBA", + "\xA2\x6E" => "\xEC\xA4\xBB", + "\xA2\x6F" => "\xEC\xA4\xBC", + "\xA2\x70" => "\xEC\xA4\xBD", + "\xA2\x71" => "\xEC\xA4\xBE", + "\xA2\x72" => "\xEC\xA4\xBF", + "\xA2\x73" => "\xEC\xA5\x80", + "\xA2\x74" => "\xEC\xA5\x81", + "\xA2\x75" => "\xEC\xA5\x82", + "\xA2\x76" => "\xEC\xA5\x83", + "\xA2\x77" => "\xEC\xA5\x84", + "\xA2\x78" => "\xEC\xA5\x85", + "\xA2\x79" => "\xEC\xA5\x86", + "\xA2\x7A" => "\xEC\xA5\x87", + "\xA2\x81" => "\xEC\xA5\x88", + "\xA2\x82" => "\xEC\xA5\x89", + "\xA2\x83" => "\xEC\xA5\x8A", + "\xA2\x84" => "\xEC\xA5\x8B", + "\xA2\x85" => "\xEC\xA5\x8C", + "\xA2\x86" => "\xEC\xA5\x8D", + "\xA2\x87" => "\xEC\xA5\x8E", + "\xA2\x88" => "\xEC\xA5\x8F", + "\xA2\x89" => "\xEC\xA5\x92", + "\xA2\x8A" => "\xEC\xA5\x93", + "\xA2\x8B" => "\xEC\xA5\x95", + "\xA2\x8C" => "\xEC\xA5\x96", + "\xA2\x8D" => "\xEC\xA5\x97", + "\xA2\x8E" => "\xEC\xA5\x99", + "\xA2\x8F" => "\xEC\xA5\x9A", + "\xA2\x90" => "\xEC\xA5\x9B", + "\xA2\x91" => "\xEC\xA5\x9C", + "\xA2\x92" => "\xEC\xA5\x9D", + "\xA2\x93" => "\xEC\xA5\x9E", + "\xA2\x94" => "\xEC\xA5\x9F", + "\xA2\x95" => "\xEC\xA5\xA2", + "\xA2\x96" => "\xEC\xA5\xA4", + "\xA2\x97" => "\xEC\xA5\xA5", + "\xA2\x98" => "\xEC\xA5\xA6", + "\xA2\x99" => "\xEC\xA5\xA7", + "\xA2\x9A" => "\xEC\xA5\xA8", + "\xA2\x9B" => "\xEC\xA5\xA9", + "\xA2\x9C" => "\xEC\xA5\xAA", + "\xA2\x9D" => "\xEC\xA5\xAB", + "\xA2\x9E" => "\xEC\xA5\xAD", + "\xA2\x9F" => "\xEC\xA5\xAE", + "\xA2\xA0" => "\xEC\xA5\xAF", + "\xA2\xA1" => "\xE2\x87\x92", + "\xA2\xA2" => "\xE2\x87\x94", + "\xA2\xA3" => "\xE2\x88\x80", + "\xA2\xA4" => "\xE2\x88\x83", + "\xA2\xA5" => "\xC2\xB4", + "\xA2\xA6" => "\xEF\xBD\x9E", + "\xA2\xA7" => "\xCB\x87", + "\xA2\xA8" => "\xCB\x98", + "\xA2\xA9" => "\xCB\x9D", + "\xA2\xAA" => "\xCB\x9A", + "\xA2\xAB" => "\xCB\x99", + "\xA2\xAC" => "\xC2\xB8", + "\xA2\xAD" => "\xCB\x9B", + "\xA2\xAE" => "\xC2\xA1", + "\xA2\xAF" => "\xC2\xBF", + "\xA2\xB0" => "\xCB\x90", + "\xA2\xB1" => "\xE2\x88\xAE", + "\xA2\xB2" => "\xE2\x88\x91", + "\xA2\xB3" => "\xE2\x88\x8F", + "\xA2\xB4" => "\xC2\xA4", + "\xA2\xB5" => "\xE2\x84\x89", + "\xA2\xB6" => "\xE2\x80\xB0", + "\xA2\xB7" => "\xE2\x97\x81", + "\xA2\xB8" => "\xE2\x97\x80", + "\xA2\xB9" => "\xE2\x96\xB7", + "\xA2\xBA" => "\xE2\x96\xB6", + "\xA2\xBB" => "\xE2\x99\xA4", + "\xA2\xBC" => "\xE2\x99\xA0", + "\xA2\xBD" => "\xE2\x99\xA1", + "\xA2\xBE" => "\xE2\x99\xA5", + "\xA2\xBF" => "\xE2\x99\xA7", + "\xA2\xC0" => "\xE2\x99\xA3", + "\xA2\xC1" => "\xE2\x8A\x99", + "\xA2\xC2" => "\xE2\x97\x88", + "\xA2\xC3" => "\xE2\x96\xA3", + "\xA2\xC4" => "\xE2\x97\x90", + "\xA2\xC5" => "\xE2\x97\x91", + "\xA2\xC6" => "\xE2\x96\x92", + "\xA2\xC7" => "\xE2\x96\xA4", + "\xA2\xC8" => "\xE2\x96\xA5", + "\xA2\xC9" => "\xE2\x96\xA8", + "\xA2\xCA" => "\xE2\x96\xA7", + "\xA2\xCB" => "\xE2\x96\xA6", + "\xA2\xCC" => "\xE2\x96\xA9", + "\xA2\xCD" => "\xE2\x99\xA8", + "\xA2\xCE" => "\xE2\x98\x8F", + "\xA2\xCF" => "\xE2\x98\x8E", + "\xA2\xD0" => "\xE2\x98\x9C", + "\xA2\xD1" => "\xE2\x98\x9E", + "\xA2\xD2" => "\xC2\xB6", + "\xA2\xD3" => "\xE2\x80\xA0", + "\xA2\xD4" => "\xE2\x80\xA1", + "\xA2\xD5" => "\xE2\x86\x95", + "\xA2\xD6" => "\xE2\x86\x97", + "\xA2\xD7" => "\xE2\x86\x99", + "\xA2\xD8" => "\xE2\x86\x96", + "\xA2\xD9" => "\xE2\x86\x98", + "\xA2\xDA" => "\xE2\x99\xAD", + "\xA2\xDB" => "\xE2\x99\xA9", + "\xA2\xDC" => "\xE2\x99\xAA", + "\xA2\xDD" => "\xE2\x99\xAC", + "\xA2\xDE" => "\xE3\x89\xBF", + "\xA2\xDF" => "\xE3\x88\x9C", + "\xA2\xE0" => "\xE2\x84\x96", + "\xA2\xE1" => "\xE3\x8F\x87", + "\xA2\xE2" => "\xE2\x84\xA2", + "\xA2\xE3" => "\xE3\x8F\x82", + "\xA2\xE4" => "\xE3\x8F\x98", + "\xA2\xE5" => "\xE2\x84\xA1", + "\xA3\x41" => "\xEC\xA5\xB1", + "\xA3\x42" => "\xEC\xA5\xB2", + "\xA3\x43" => "\xEC\xA5\xB3", + "\xA3\x44" => "\xEC\xA5\xB5", + "\xA3\x45" => "\xEC\xA5\xB6", + "\xA3\x46" => "\xEC\xA5\xB7", + "\xA3\x47" => "\xEC\xA5\xB8", + "\xA3\x48" => "\xEC\xA5\xB9", + "\xA3\x49" => "\xEC\xA5\xBA", + "\xA3\x4A" => "\xEC\xA5\xBB", + "\xA3\x4B" => "\xEC\xA5\xBD", + "\xA3\x4C" => "\xEC\xA5\xBE", + "\xA3\x4D" => "\xEC\xA5\xBF", + "\xA3\x4E" => "\xEC\xA6\x80", + "\xA3\x4F" => "\xEC\xA6\x81", + "\xA3\x50" => "\xEC\xA6\x82", + "\xA3\x51" => "\xEC\xA6\x83", + "\xA3\x52" => "\xEC\xA6\x84", + "\xA3\x53" => "\xEC\xA6\x85", + "\xA3\x54" => "\xEC\xA6\x86", + "\xA3\x55" => "\xEC\xA6\x87", + "\xA3\x56" => "\xEC\xA6\x8A", + "\xA3\x57" => "\xEC\xA6\x8B", + "\xA3\x58" => "\xEC\xA6\x8D", + "\xA3\x59" => "\xEC\xA6\x8E", + "\xA3\x5A" => "\xEC\xA6\x8F", + "\xA3\x61" => "\xEC\xA6\x91", + "\xA3\x62" => "\xEC\xA6\x92", + "\xA3\x63" => "\xEC\xA6\x93", + "\xA3\x64" => "\xEC\xA6\x94", + "\xA3\x65" => "\xEC\xA6\x95", + "\xA3\x66" => "\xEC\xA6\x96", + "\xA3\x67" => "\xEC\xA6\x97", + "\xA3\x68" => "\xEC\xA6\x9A", + "\xA3\x69" => "\xEC\xA6\x9C", + "\xA3\x6A" => "\xEC\xA6\x9E", + "\xA3\x6B" => "\xEC\xA6\x9F", + "\xA3\x6C" => "\xEC\xA6\xA0", + "\xA3\x6D" => "\xEC\xA6\xA1", + "\xA3\x6E" => "\xEC\xA6\xA2", + "\xA3\x6F" => "\xEC\xA6\xA3", + "\xA3\x70" => "\xEC\xA6\xA4", + "\xA3\x71" => "\xEC\xA6\xA5", + "\xA3\x72" => "\xEC\xA6\xA6", + "\xA3\x73" => "\xEC\xA6\xA7", + "\xA3\x74" => "\xEC\xA6\xA8", + "\xA3\x75" => "\xEC\xA6\xA9", + "\xA3\x76" => "\xEC\xA6\xAA", + "\xA3\x77" => "\xEC\xA6\xAB", + "\xA3\x78" => "\xEC\xA6\xAC", + "\xA3\x79" => "\xEC\xA6\xAD", + "\xA3\x7A" => "\xEC\xA6\xAE", + "\xA3\x81" => "\xEC\xA6\xAF", + "\xA3\x82" => "\xEC\xA6\xB0", + "\xA3\x83" => "\xEC\xA6\xB1", + "\xA3\x84" => "\xEC\xA6\xB2", + "\xA3\x85" => "\xEC\xA6\xB3", + "\xA3\x86" => "\xEC\xA6\xB4", + "\xA3\x87" => "\xEC\xA6\xB5", + "\xA3\x88" => "\xEC\xA6\xB6", + "\xA3\x89" => "\xEC\xA6\xB7", + "\xA3\x8A" => "\xEC\xA6\xB8", + "\xA3\x8B" => "\xEC\xA6\xB9", + "\xA3\x8C" => "\xEC\xA6\xBA", + "\xA3\x8D" => "\xEC\xA6\xBB", + "\xA3\x8E" => "\xEC\xA6\xBC", + "\xA3\x8F" => "\xEC\xA6\xBD", + "\xA3\x90" => "\xEC\xA6\xBE", + "\xA3\x91" => "\xEC\xA6\xBF", + "\xA3\x92" => "\xEC\xA7\x82", + "\xA3\x93" => "\xEC\xA7\x83", + "\xA3\x94" => "\xEC\xA7\x85", + "\xA3\x95" => "\xEC\xA7\x86", + "\xA3\x96" => "\xEC\xA7\x89", + "\xA3\x97" => "\xEC\xA7\x8B", + "\xA3\x98" => "\xEC\xA7\x8C", + "\xA3\x99" => "\xEC\xA7\x8D", + "\xA3\x9A" => "\xEC\xA7\x8E", + "\xA3\x9B" => "\xEC\xA7\x8F", + "\xA3\x9C" => "\xEC\xA7\x92", + "\xA3\x9D" => "\xEC\xA7\x94", + "\xA3\x9E" => "\xEC\xA7\x97", + "\xA3\x9F" => "\xEC\xA7\x98", + "\xA3\xA0" => "\xEC\xA7\x9B", + "\xA3\xA1" => "\xEF\xBC\x81", + "\xA3\xA2" => "\xEF\xBC\x82", + "\xA3\xA3" => "\xEF\xBC\x83", + "\xA3\xA4" => "\xEF\xBC\x84", + "\xA3\xA5" => "\xEF\xBC\x85", + "\xA3\xA6" => "\xEF\xBC\x86", + "\xA3\xA7" => "\xEF\xBC\x87", + "\xA3\xA8" => "\xEF\xBC\x88", + "\xA3\xA9" => "\xEF\xBC\x89", + "\xA3\xAA" => "\xEF\xBC\x8A", + "\xA3\xAB" => "\xEF\xBC\x8B", + "\xA3\xAC" => "\xEF\xBC\x8C", + "\xA3\xAD" => "\xEF\xBC\x8D", + "\xA3\xAE" => "\xEF\xBC\x8E", + "\xA3\xAF" => "\xEF\xBC\x8F", + "\xA3\xB0" => "\xEF\xBC\x90", + "\xA3\xB1" => "\xEF\xBC\x91", + "\xA3\xB2" => "\xEF\xBC\x92", + "\xA3\xB3" => "\xEF\xBC\x93", + "\xA3\xB4" => "\xEF\xBC\x94", + "\xA3\xB5" => "\xEF\xBC\x95", + "\xA3\xB6" => "\xEF\xBC\x96", + "\xA3\xB7" => "\xEF\xBC\x97", + "\xA3\xB8" => "\xEF\xBC\x98", + "\xA3\xB9" => "\xEF\xBC\x99", + "\xA3\xBA" => "\xEF\xBC\x9A", + "\xA3\xBB" => "\xEF\xBC\x9B", + "\xA3\xBC" => "\xEF\xBC\x9C", + "\xA3\xBD" => "\xEF\xBC\x9D", + "\xA3\xBE" => "\xEF\xBC\x9E", + "\xA3\xBF" => "\xEF\xBC\x9F", + "\xA3\xC0" => "\xEF\xBC\xA0", + "\xA3\xC1" => "\xEF\xBC\xA1", + "\xA3\xC2" => "\xEF\xBC\xA2", + "\xA3\xC3" => "\xEF\xBC\xA3", + "\xA3\xC4" => "\xEF\xBC\xA4", + "\xA3\xC5" => "\xEF\xBC\xA5", + "\xA3\xC6" => "\xEF\xBC\xA6", + "\xA3\xC7" => "\xEF\xBC\xA7", + "\xA3\xC8" => "\xEF\xBC\xA8", + "\xA3\xC9" => "\xEF\xBC\xA9", + "\xA3\xCA" => "\xEF\xBC\xAA", + "\xA3\xCB" => "\xEF\xBC\xAB", + "\xA3\xCC" => "\xEF\xBC\xAC", + "\xA3\xCD" => "\xEF\xBC\xAD", + "\xA3\xCE" => "\xEF\xBC\xAE", + "\xA3\xCF" => "\xEF\xBC\xAF", + "\xA3\xD0" => "\xEF\xBC\xB0", + "\xA3\xD1" => "\xEF\xBC\xB1", + "\xA3\xD2" => "\xEF\xBC\xB2", + "\xA3\xD3" => "\xEF\xBC\xB3", + "\xA3\xD4" => "\xEF\xBC\xB4", + "\xA3\xD5" => "\xEF\xBC\xB5", + "\xA3\xD6" => "\xEF\xBC\xB6", + "\xA3\xD7" => "\xEF\xBC\xB7", + "\xA3\xD8" => "\xEF\xBC\xB8", + "\xA3\xD9" => "\xEF\xBC\xB9", + "\xA3\xDA" => "\xEF\xBC\xBA", + "\xA3\xDB" => "\xEF\xBC\xBB", + "\xA3\xDC" => "\xEF\xBF\xA6", + "\xA3\xDD" => "\xEF\xBC\xBD", + "\xA3\xDE" => "\xEF\xBC\xBE", + "\xA3\xDF" => "\xEF\xBC\xBF", + "\xA3\xE0" => "\xEF\xBD\x80", + "\xA3\xE1" => "\xEF\xBD\x81", + "\xA3\xE2" => "\xEF\xBD\x82", + "\xA3\xE3" => "\xEF\xBD\x83", + "\xA3\xE4" => "\xEF\xBD\x84", + "\xA3\xE5" => "\xEF\xBD\x85", + "\xA3\xE6" => "\xEF\xBD\x86", + "\xA3\xE7" => "\xEF\xBD\x87", + "\xA3\xE8" => "\xEF\xBD\x88", + "\xA3\xE9" => "\xEF\xBD\x89", + "\xA3\xEA" => "\xEF\xBD\x8A", + "\xA3\xEB" => "\xEF\xBD\x8B", + "\xA3\xEC" => "\xEF\xBD\x8C", + "\xA3\xED" => "\xEF\xBD\x8D", + "\xA3\xEE" => "\xEF\xBD\x8E", + "\xA3\xEF" => "\xEF\xBD\x8F", + "\xA3\xF0" => "\xEF\xBD\x90", + "\xA3\xF1" => "\xEF\xBD\x91", + "\xA3\xF2" => "\xEF\xBD\x92", + "\xA3\xF3" => "\xEF\xBD\x93", + "\xA3\xF4" => "\xEF\xBD\x94", + "\xA3\xF5" => "\xEF\xBD\x95", + "\xA3\xF6" => "\xEF\xBD\x96", + "\xA3\xF7" => "\xEF\xBD\x97", + "\xA3\xF8" => "\xEF\xBD\x98", + "\xA3\xF9" => "\xEF\xBD\x99", + "\xA3\xFA" => "\xEF\xBD\x9A", + "\xA3\xFB" => "\xEF\xBD\x9B", + "\xA3\xFC" => "\xEF\xBD\x9C", + "\xA3\xFD" => "\xEF\xBD\x9D", + "\xA3\xFE" => "\xEF\xBF\xA3", + "\xA4\x41" => "\xEC\xA7\x9E", + "\xA4\x42" => "\xEC\xA7\x9F", + "\xA4\x43" => "\xEC\xA7\xA1", + "\xA4\x44" => "\xEC\xA7\xA3", + "\xA4\x45" => "\xEC\xA7\xA5", + "\xA4\x46" => "\xEC\xA7\xA6", + "\xA4\x47" => "\xEC\xA7\xA8", + "\xA4\x48" => "\xEC\xA7\xA9", + "\xA4\x49" => "\xEC\xA7\xAA", + "\xA4\x4A" => "\xEC\xA7\xAB", + "\xA4\x4B" => "\xEC\xA7\xAE", + "\xA4\x4C" => "\xEC\xA7\xB2", + "\xA4\x4D" => "\xEC\xA7\xB3", + "\xA4\x4E" => "\xEC\xA7\xB4", + "\xA4\x4F" => "\xEC\xA7\xB5", + "\xA4\x50" => "\xEC\xA7\xB6", + "\xA4\x51" => "\xEC\xA7\xB7", + "\xA4\x52" => "\xEC\xA7\xBA", + "\xA4\x53" => "\xEC\xA7\xBB", + "\xA4\x54" => "\xEC\xA7\xBD", + "\xA4\x55" => "\xEC\xA7\xBE", + "\xA4\x56" => "\xEC\xA7\xBF", + "\xA4\x57" => "\xEC\xA8\x81", + "\xA4\x58" => "\xEC\xA8\x82", + "\xA4\x59" => "\xEC\xA8\x83", + "\xA4\x5A" => "\xEC\xA8\x84", + "\xA4\x61" => "\xEC\xA8\x85", + "\xA4\x62" => "\xEC\xA8\x86", + "\xA4\x63" => "\xEC\xA8\x87", + "\xA4\x64" => "\xEC\xA8\x8A", + "\xA4\x65" => "\xEC\xA8\x8E", + "\xA4\x66" => "\xEC\xA8\x8F", + "\xA4\x67" => "\xEC\xA8\x90", + "\xA4\x68" => "\xEC\xA8\x91", + "\xA4\x69" => "\xEC\xA8\x92", + "\xA4\x6A" => "\xEC\xA8\x93", + "\xA4\x6B" => "\xEC\xA8\x95", + "\xA4\x6C" => "\xEC\xA8\x96", + "\xA4\x6D" => "\xEC\xA8\x97", + "\xA4\x6E" => "\xEC\xA8\x99", + "\xA4\x6F" => "\xEC\xA8\x9A", + "\xA4\x70" => "\xEC\xA8\x9B", + "\xA4\x71" => "\xEC\xA8\x9C", + "\xA4\x72" => "\xEC\xA8\x9D", + "\xA4\x73" => "\xEC\xA8\x9E", + "\xA4\x74" => "\xEC\xA8\x9F", + "\xA4\x75" => "\xEC\xA8\xA0", + "\xA4\x76" => "\xEC\xA8\xA1", + "\xA4\x77" => "\xEC\xA8\xA2", + "\xA4\x78" => "\xEC\xA8\xA3", + "\xA4\x79" => "\xEC\xA8\xA4", + "\xA4\x7A" => "\xEC\xA8\xA5", + "\xA4\x81" => "\xEC\xA8\xA6", + "\xA4\x82" => "\xEC\xA8\xA7", + "\xA4\x83" => "\xEC\xA8\xA8", + "\xA4\x84" => "\xEC\xA8\xAA", + "\xA4\x85" => "\xEC\xA8\xAB", + "\xA4\x86" => "\xEC\xA8\xAC", + "\xA4\x87" => "\xEC\xA8\xAD", + "\xA4\x88" => "\xEC\xA8\xAE", + "\xA4\x89" => "\xEC\xA8\xAF", + "\xA4\x8A" => "\xEC\xA8\xB0", + "\xA4\x8B" => "\xEC\xA8\xB1", + "\xA4\x8C" => "\xEC\xA8\xB2", + "\xA4\x8D" => "\xEC\xA8\xB3", + "\xA4\x8E" => "\xEC\xA8\xB4", + "\xA4\x8F" => "\xEC\xA8\xB5", + "\xA4\x90" => "\xEC\xA8\xB6", + "\xA4\x91" => "\xEC\xA8\xB7", + "\xA4\x92" => "\xEC\xA8\xB8", + "\xA4\x93" => "\xEC\xA8\xB9", + "\xA4\x94" => "\xEC\xA8\xBA", + "\xA4\x95" => "\xEC\xA8\xBB", + "\xA4\x96" => "\xEC\xA8\xBC", + "\xA4\x97" => "\xEC\xA8\xBD", + "\xA4\x98" => "\xEC\xA8\xBE", + "\xA4\x99" => "\xEC\xA8\xBF", + "\xA4\x9A" => "\xEC\xA9\x80", + "\xA4\x9B" => "\xEC\xA9\x81", + "\xA4\x9C" => "\xEC\xA9\x82", + "\xA4\x9D" => "\xEC\xA9\x83", + "\xA4\x9E" => "\xEC\xA9\x84", + "\xA4\x9F" => "\xEC\xA9\x85", + "\xA4\xA0" => "\xEC\xA9\x86", + "\xA4\xA1" => "\xE3\x84\xB1", + "\xA4\xA2" => "\xE3\x84\xB2", + "\xA4\xA3" => "\xE3\x84\xB3", + "\xA4\xA4" => "\xE3\x84\xB4", + "\xA4\xA5" => "\xE3\x84\xB5", + "\xA4\xA6" => "\xE3\x84\xB6", + "\xA4\xA7" => "\xE3\x84\xB7", + "\xA4\xA8" => "\xE3\x84\xB8", + "\xA4\xA9" => "\xE3\x84\xB9", + "\xA4\xAA" => "\xE3\x84\xBA", + "\xA4\xAB" => "\xE3\x84\xBB", + "\xA4\xAC" => "\xE3\x84\xBC", + "\xA4\xAD" => "\xE3\x84\xBD", + "\xA4\xAE" => "\xE3\x84\xBE", + "\xA4\xAF" => "\xE3\x84\xBF", + "\xA4\xB0" => "\xE3\x85\x80", + "\xA4\xB1" => "\xE3\x85\x81", + "\xA4\xB2" => "\xE3\x85\x82", + "\xA4\xB3" => "\xE3\x85\x83", + "\xA4\xB4" => "\xE3\x85\x84", + "\xA4\xB5" => "\xE3\x85\x85", + "\xA4\xB6" => "\xE3\x85\x86", + "\xA4\xB7" => "\xE3\x85\x87", + "\xA4\xB8" => "\xE3\x85\x88", + "\xA4\xB9" => "\xE3\x85\x89", + "\xA4\xBA" => "\xE3\x85\x8A", + "\xA4\xBB" => "\xE3\x85\x8B", + "\xA4\xBC" => "\xE3\x85\x8C", + "\xA4\xBD" => "\xE3\x85\x8D", + "\xA4\xBE" => "\xE3\x85\x8E", + "\xA4\xBF" => "\xE3\x85\x8F", + "\xA4\xC0" => "\xE3\x85\x90", + "\xA4\xC1" => "\xE3\x85\x91", + "\xA4\xC2" => "\xE3\x85\x92", + "\xA4\xC3" => "\xE3\x85\x93", + "\xA4\xC4" => "\xE3\x85\x94", + "\xA4\xC5" => "\xE3\x85\x95", + "\xA4\xC6" => "\xE3\x85\x96", + "\xA4\xC7" => "\xE3\x85\x97", + "\xA4\xC8" => "\xE3\x85\x98", + "\xA4\xC9" => "\xE3\x85\x99", + "\xA4\xCA" => "\xE3\x85\x9A", + "\xA4\xCB" => "\xE3\x85\x9B", + "\xA4\xCC" => "\xE3\x85\x9C", + "\xA4\xCD" => "\xE3\x85\x9D", + "\xA4\xCE" => "\xE3\x85\x9E", + "\xA4\xCF" => "\xE3\x85\x9F", + "\xA4\xD0" => "\xE3\x85\xA0", + "\xA4\xD1" => "\xE3\x85\xA1", + "\xA4\xD2" => "\xE3\x85\xA2", + "\xA4\xD3" => "\xE3\x85\xA3", + "\xA4\xD4" => "\xE3\x85\xA4", + "\xA4\xD5" => "\xE3\x85\xA5", + "\xA4\xD6" => "\xE3\x85\xA6", + "\xA4\xD7" => "\xE3\x85\xA7", + "\xA4\xD8" => "\xE3\x85\xA8", + "\xA4\xD9" => "\xE3\x85\xA9", + "\xA4\xDA" => "\xE3\x85\xAA", + "\xA4\xDB" => "\xE3\x85\xAB", + "\xA4\xDC" => "\xE3\x85\xAC", + "\xA4\xDD" => "\xE3\x85\xAD", + "\xA4\xDE" => "\xE3\x85\xAE", + "\xA4\xDF" => "\xE3\x85\xAF", + "\xA4\xE0" => "\xE3\x85\xB0", + "\xA4\xE1" => "\xE3\x85\xB1", + "\xA4\xE2" => "\xE3\x85\xB2", + "\xA4\xE3" => "\xE3\x85\xB3", + "\xA4\xE4" => "\xE3\x85\xB4", + "\xA4\xE5" => "\xE3\x85\xB5", + "\xA4\xE6" => "\xE3\x85\xB6", + "\xA4\xE7" => "\xE3\x85\xB7", + "\xA4\xE8" => "\xE3\x85\xB8", + "\xA4\xE9" => "\xE3\x85\xB9", + "\xA4\xEA" => "\xE3\x85\xBA", + "\xA4\xEB" => "\xE3\x85\xBB", + "\xA4\xEC" => "\xE3\x85\xBC", + "\xA4\xED" => "\xE3\x85\xBD", + "\xA4\xEE" => "\xE3\x85\xBE", + "\xA4\xEF" => "\xE3\x85\xBF", + "\xA4\xF0" => "\xE3\x86\x80", + "\xA4\xF1" => "\xE3\x86\x81", + "\xA4\xF2" => "\xE3\x86\x82", + "\xA4\xF3" => "\xE3\x86\x83", + "\xA4\xF4" => "\xE3\x86\x84", + "\xA4\xF5" => "\xE3\x86\x85", + "\xA4\xF6" => "\xE3\x86\x86", + "\xA4\xF7" => "\xE3\x86\x87", + "\xA4\xF8" => "\xE3\x86\x88", + "\xA4\xF9" => "\xE3\x86\x89", + "\xA4\xFA" => "\xE3\x86\x8A", + "\xA4\xFB" => "\xE3\x86\x8B", + "\xA4\xFC" => "\xE3\x86\x8C", + "\xA4\xFD" => "\xE3\x86\x8D", + "\xA4\xFE" => "\xE3\x86\x8E", + "\xA5\x41" => "\xEC\xA9\x87", + "\xA5\x42" => "\xEC\xA9\x88", + "\xA5\x43" => "\xEC\xA9\x89", + "\xA5\x44" => "\xEC\xA9\x8A", + "\xA5\x45" => "\xEC\xA9\x8B", + "\xA5\x46" => "\xEC\xA9\x8E", + "\xA5\x47" => "\xEC\xA9\x8F", + "\xA5\x48" => "\xEC\xA9\x91", + "\xA5\x49" => "\xEC\xA9\x92", + "\xA5\x4A" => "\xEC\xA9\x93", + "\xA5\x4B" => "\xEC\xA9\x95", + "\xA5\x4C" => "\xEC\xA9\x96", + "\xA5\x4D" => "\xEC\xA9\x97", + "\xA5\x4E" => "\xEC\xA9\x98", + "\xA5\x4F" => "\xEC\xA9\x99", + "\xA5\x50" => "\xEC\xA9\x9A", + "\xA5\x51" => "\xEC\xA9\x9B", + "\xA5\x52" => "\xEC\xA9\x9E", + "\xA5\x53" => "\xEC\xA9\xA2", + "\xA5\x54" => "\xEC\xA9\xA3", + "\xA5\x55" => "\xEC\xA9\xA4", + "\xA5\x56" => "\xEC\xA9\xA5", + "\xA5\x57" => "\xEC\xA9\xA6", + "\xA5\x58" => "\xEC\xA9\xA7", + "\xA5\x59" => "\xEC\xA9\xA9", + "\xA5\x5A" => "\xEC\xA9\xAA", + "\xA5\x61" => "\xEC\xA9\xAB", + "\xA5\x62" => "\xEC\xA9\xAC", + "\xA5\x63" => "\xEC\xA9\xAD", + "\xA5\x64" => "\xEC\xA9\xAE", + "\xA5\x65" => "\xEC\xA9\xAF", + "\xA5\x66" => "\xEC\xA9\xB0", + "\xA5\x67" => "\xEC\xA9\xB1", + "\xA5\x68" => "\xEC\xA9\xB2", + "\xA5\x69" => "\xEC\xA9\xB3", + "\xA5\x6A" => "\xEC\xA9\xB4", + "\xA5\x6B" => "\xEC\xA9\xB5", + "\xA5\x6C" => "\xEC\xA9\xB6", + "\xA5\x6D" => "\xEC\xA9\xB7", + "\xA5\x6E" => "\xEC\xA9\xB8", + "\xA5\x6F" => "\xEC\xA9\xB9", + "\xA5\x70" => "\xEC\xA9\xBA", + "\xA5\x71" => "\xEC\xA9\xBB", + "\xA5\x72" => "\xEC\xA9\xBC", + "\xA5\x73" => "\xEC\xA9\xBE", + "\xA5\x74" => "\xEC\xA9\xBF", + "\xA5\x75" => "\xEC\xAA\x80", + "\xA5\x76" => "\xEC\xAA\x81", + "\xA5\x77" => "\xEC\xAA\x82", + "\xA5\x78" => "\xEC\xAA\x83", + "\xA5\x79" => "\xEC\xAA\x85", + "\xA5\x7A" => "\xEC\xAA\x86", + "\xA5\x81" => "\xEC\xAA\x87", + "\xA5\x82" => "\xEC\xAA\x88", + "\xA5\x83" => "\xEC\xAA\x89", + "\xA5\x84" => "\xEC\xAA\x8A", + "\xA5\x85" => "\xEC\xAA\x8B", + "\xA5\x86" => "\xEC\xAA\x8C", + "\xA5\x87" => "\xEC\xAA\x8D", + "\xA5\x88" => "\xEC\xAA\x8E", + "\xA5\x89" => "\xEC\xAA\x8F", + "\xA5\x8A" => "\xEC\xAA\x90", + "\xA5\x8B" => "\xEC\xAA\x91", + "\xA5\x8C" => "\xEC\xAA\x92", + "\xA5\x8D" => "\xEC\xAA\x93", + "\xA5\x8E" => "\xEC\xAA\x94", + "\xA5\x8F" => "\xEC\xAA\x95", + "\xA5\x90" => "\xEC\xAA\x96", + "\xA5\x91" => "\xEC\xAA\x97", + "\xA5\x92" => "\xEC\xAA\x99", + "\xA5\x93" => "\xEC\xAA\x9A", + "\xA5\x94" => "\xEC\xAA\x9B", + "\xA5\x95" => "\xEC\xAA\x9C", + "\xA5\x96" => "\xEC\xAA\x9D", + "\xA5\x97" => "\xEC\xAA\x9E", + "\xA5\x98" => "\xEC\xAA\x9F", + "\xA5\x99" => "\xEC\xAA\xA0", + "\xA5\x9A" => "\xEC\xAA\xA1", + "\xA5\x9B" => "\xEC\xAA\xA2", + "\xA5\x9C" => "\xEC\xAA\xA3", + "\xA5\x9D" => "\xEC\xAA\xA4", + "\xA5\x9E" => "\xEC\xAA\xA5", + "\xA5\x9F" => "\xEC\xAA\xA6", + "\xA5\xA0" => "\xEC\xAA\xA7", + "\xA5\xA1" => "\xE2\x85\xB0", + "\xA5\xA2" => "\xE2\x85\xB1", + "\xA5\xA3" => "\xE2\x85\xB2", + "\xA5\xA4" => "\xE2\x85\xB3", + "\xA5\xA5" => "\xE2\x85\xB4", + "\xA5\xA6" => "\xE2\x85\xB5", + "\xA5\xA7" => "\xE2\x85\xB6", + "\xA5\xA8" => "\xE2\x85\xB7", + "\xA5\xA9" => "\xE2\x85\xB8", + "\xA5\xAA" => "\xE2\x85\xB9", + "\xA5\xB0" => "\xE2\x85\xA0", + "\xA5\xB1" => "\xE2\x85\xA1", + "\xA5\xB2" => "\xE2\x85\xA2", + "\xA5\xB3" => "\xE2\x85\xA3", + "\xA5\xB4" => "\xE2\x85\xA4", + "\xA5\xB5" => "\xE2\x85\xA5", + "\xA5\xB6" => "\xE2\x85\xA6", + "\xA5\xB7" => "\xE2\x85\xA7", + "\xA5\xB8" => "\xE2\x85\xA8", + "\xA5\xB9" => "\xE2\x85\xA9", + "\xA5\xC1" => "\xCE\x91", + "\xA5\xC2" => "\xCE\x92", + "\xA5\xC3" => "\xCE\x93", + "\xA5\xC4" => "\xCE\x94", + "\xA5\xC5" => "\xCE\x95", + "\xA5\xC6" => "\xCE\x96", + "\xA5\xC7" => "\xCE\x97", + "\xA5\xC8" => "\xCE\x98", + "\xA5\xC9" => "\xCE\x99", + "\xA5\xCA" => "\xCE\x9A", + "\xA5\xCB" => "\xCE\x9B", + "\xA5\xCC" => "\xCE\x9C", + "\xA5\xCD" => "\xCE\x9D", + "\xA5\xCE" => "\xCE\x9E", + "\xA5\xCF" => "\xCE\x9F", + "\xA5\xD0" => "\xCE\xA0", + "\xA5\xD1" => "\xCE\xA1", + "\xA5\xD2" => "\xCE\xA3", + "\xA5\xD3" => "\xCE\xA4", + "\xA5\xD4" => "\xCE\xA5", + "\xA5\xD5" => "\xCE\xA6", + "\xA5\xD6" => "\xCE\xA7", + "\xA5\xD7" => "\xCE\xA8", + "\xA5\xD8" => "\xCE\xA9", + "\xA5\xE1" => "\xCE\xB1", + "\xA5\xE2" => "\xCE\xB2", + "\xA5\xE3" => "\xCE\xB3", + "\xA5\xE4" => "\xCE\xB4", + "\xA5\xE5" => "\xCE\xB5", + "\xA5\xE6" => "\xCE\xB6", + "\xA5\xE7" => "\xCE\xB7", + "\xA5\xE8" => "\xCE\xB8", + "\xA5\xE9" => "\xCE\xB9", + "\xA5\xEA" => "\xCE\xBA", + "\xA5\xEB" => "\xCE\xBB", + "\xA5\xEC" => "\xCE\xBC", + "\xA5\xED" => "\xCE\xBD", + "\xA5\xEE" => "\xCE\xBE", + "\xA5\xEF" => "\xCE\xBF", + "\xA5\xF0" => "\xCF\x80", + "\xA5\xF1" => "\xCF\x81", + "\xA5\xF2" => "\xCF\x83", + "\xA5\xF3" => "\xCF\x84", + "\xA5\xF4" => "\xCF\x85", + "\xA5\xF5" => "\xCF\x86", + "\xA5\xF6" => "\xCF\x87", + "\xA5\xF7" => "\xCF\x88", + "\xA5\xF8" => "\xCF\x89", + "\xA6\x41" => "\xEC\xAA\xA8", + "\xA6\x42" => "\xEC\xAA\xA9", + "\xA6\x43" => "\xEC\xAA\xAA", + "\xA6\x44" => "\xEC\xAA\xAB", + "\xA6\x45" => "\xEC\xAA\xAC", + "\xA6\x46" => "\xEC\xAA\xAD", + "\xA6\x47" => "\xEC\xAA\xAE", + "\xA6\x48" => "\xEC\xAA\xAF", + "\xA6\x49" => "\xEC\xAA\xB0", + "\xA6\x4A" => "\xEC\xAA\xB1", + "\xA6\x4B" => "\xEC\xAA\xB2", + "\xA6\x4C" => "\xEC\xAA\xB3", + "\xA6\x4D" => "\xEC\xAA\xB4", + "\xA6\x4E" => "\xEC\xAA\xB5", + "\xA6\x4F" => "\xEC\xAA\xB6", + "\xA6\x50" => "\xEC\xAA\xB7", + "\xA6\x51" => "\xEC\xAA\xB8", + "\xA6\x52" => "\xEC\xAA\xB9", + "\xA6\x53" => "\xEC\xAA\xBA", + "\xA6\x54" => "\xEC\xAA\xBB", + "\xA6\x55" => "\xEC\xAA\xBE", + "\xA6\x56" => "\xEC\xAA\xBF", + "\xA6\x57" => "\xEC\xAB\x81", + "\xA6\x58" => "\xEC\xAB\x82", + "\xA6\x59" => "\xEC\xAB\x83", + "\xA6\x5A" => "\xEC\xAB\x85", + "\xA6\x61" => "\xEC\xAB\x86", + "\xA6\x62" => "\xEC\xAB\x87", + "\xA6\x63" => "\xEC\xAB\x88", + "\xA6\x64" => "\xEC\xAB\x89", + "\xA6\x65" => "\xEC\xAB\x8A", + "\xA6\x66" => "\xEC\xAB\x8B", + "\xA6\x67" => "\xEC\xAB\x8E", + "\xA6\x68" => "\xEC\xAB\x90", + "\xA6\x69" => "\xEC\xAB\x92", + "\xA6\x6A" => "\xEC\xAB\x94", + "\xA6\x6B" => "\xEC\xAB\x95", + "\xA6\x6C" => "\xEC\xAB\x96", + "\xA6\x6D" => "\xEC\xAB\x97", + "\xA6\x6E" => "\xEC\xAB\x9A", + "\xA6\x6F" => "\xEC\xAB\x9B", + "\xA6\x70" => "\xEC\xAB\x9C", + "\xA6\x71" => "\xEC\xAB\x9D", + "\xA6\x72" => "\xEC\xAB\x9E", + "\xA6\x73" => "\xEC\xAB\x9F", + "\xA6\x74" => "\xEC\xAB\xA1", + "\xA6\x75" => "\xEC\xAB\xA2", + "\xA6\x76" => "\xEC\xAB\xA3", + "\xA6\x77" => "\xEC\xAB\xA4", + "\xA6\x78" => "\xEC\xAB\xA5", + "\xA6\x79" => "\xEC\xAB\xA6", + "\xA6\x7A" => "\xEC\xAB\xA7", + "\xA6\x81" => "\xEC\xAB\xA8", + "\xA6\x82" => "\xEC\xAB\xA9", + "\xA6\x83" => "\xEC\xAB\xAA", + "\xA6\x84" => "\xEC\xAB\xAB", + "\xA6\x85" => "\xEC\xAB\xAD", + "\xA6\x86" => "\xEC\xAB\xAE", + "\xA6\x87" => "\xEC\xAB\xAF", + "\xA6\x88" => "\xEC\xAB\xB0", + "\xA6\x89" => "\xEC\xAB\xB1", + "\xA6\x8A" => "\xEC\xAB\xB2", + "\xA6\x8B" => "\xEC\xAB\xB3", + "\xA6\x8C" => "\xEC\xAB\xB5", + "\xA6\x8D" => "\xEC\xAB\xB6", + "\xA6\x8E" => "\xEC\xAB\xB7", + "\xA6\x8F" => "\xEC\xAB\xB8", + "\xA6\x90" => "\xEC\xAB\xB9", + "\xA6\x91" => "\xEC\xAB\xBA", + "\xA6\x92" => "\xEC\xAB\xBB", + "\xA6\x93" => "\xEC\xAB\xBC", + "\xA6\x94" => "\xEC\xAB\xBD", + "\xA6\x95" => "\xEC\xAB\xBE", + "\xA6\x96" => "\xEC\xAB\xBF", + "\xA6\x97" => "\xEC\xAC\x80", + "\xA6\x98" => "\xEC\xAC\x81", + "\xA6\x99" => "\xEC\xAC\x82", + "\xA6\x9A" => "\xEC\xAC\x83", + "\xA6\x9B" => "\xEC\xAC\x84", + "\xA6\x9C" => "\xEC\xAC\x85", + "\xA6\x9D" => "\xEC\xAC\x86", + "\xA6\x9E" => "\xEC\xAC\x87", + "\xA6\x9F" => "\xEC\xAC\x89", + "\xA6\xA0" => "\xEC\xAC\x8A", + "\xA6\xA1" => "\xE2\x94\x80", + "\xA6\xA2" => "\xE2\x94\x82", + "\xA6\xA3" => "\xE2\x94\x8C", + "\xA6\xA4" => "\xE2\x94\x90", + "\xA6\xA5" => "\xE2\x94\x98", + "\xA6\xA6" => "\xE2\x94\x94", + "\xA6\xA7" => "\xE2\x94\x9C", + "\xA6\xA8" => "\xE2\x94\xAC", + "\xA6\xA9" => "\xE2\x94\xA4", + "\xA6\xAA" => "\xE2\x94\xB4", + "\xA6\xAB" => "\xE2\x94\xBC", + "\xA6\xAC" => "\xE2\x94\x81", + "\xA6\xAD" => "\xE2\x94\x83", + "\xA6\xAE" => "\xE2\x94\x8F", + "\xA6\xAF" => "\xE2\x94\x93", + "\xA6\xB0" => "\xE2\x94\x9B", + "\xA6\xB1" => "\xE2\x94\x97", + "\xA6\xB2" => "\xE2\x94\xA3", + "\xA6\xB3" => "\xE2\x94\xB3", + "\xA6\xB4" => "\xE2\x94\xAB", + "\xA6\xB5" => "\xE2\x94\xBB", + "\xA6\xB6" => "\xE2\x95\x8B", + "\xA6\xB7" => "\xE2\x94\xA0", + "\xA6\xB8" => "\xE2\x94\xAF", + "\xA6\xB9" => "\xE2\x94\xA8", + "\xA6\xBA" => "\xE2\x94\xB7", + "\xA6\xBB" => "\xE2\x94\xBF", + "\xA6\xBC" => "\xE2\x94\x9D", + "\xA6\xBD" => "\xE2\x94\xB0", + "\xA6\xBE" => "\xE2\x94\xA5", + "\xA6\xBF" => "\xE2\x94\xB8", + "\xA6\xC0" => "\xE2\x95\x82", + "\xA6\xC1" => "\xE2\x94\x92", + "\xA6\xC2" => "\xE2\x94\x91", + "\xA6\xC3" => "\xE2\x94\x9A", + "\xA6\xC4" => "\xE2\x94\x99", + "\xA6\xC5" => "\xE2\x94\x96", + "\xA6\xC6" => "\xE2\x94\x95", + "\xA6\xC7" => "\xE2\x94\x8E", + "\xA6\xC8" => "\xE2\x94\x8D", + "\xA6\xC9" => "\xE2\x94\x9E", + "\xA6\xCA" => "\xE2\x94\x9F", + "\xA6\xCB" => "\xE2\x94\xA1", + "\xA6\xCC" => "\xE2\x94\xA2", + "\xA6\xCD" => "\xE2\x94\xA6", + "\xA6\xCE" => "\xE2\x94\xA7", + "\xA6\xCF" => "\xE2\x94\xA9", + "\xA6\xD0" => "\xE2\x94\xAA", + "\xA6\xD1" => "\xE2\x94\xAD", + "\xA6\xD2" => "\xE2\x94\xAE", + "\xA6\xD3" => "\xE2\x94\xB1", + "\xA6\xD4" => "\xE2\x94\xB2", + "\xA6\xD5" => "\xE2\x94\xB5", + "\xA6\xD6" => "\xE2\x94\xB6", + "\xA6\xD7" => "\xE2\x94\xB9", + "\xA6\xD8" => "\xE2\x94\xBA", + "\xA6\xD9" => "\xE2\x94\xBD", + "\xA6\xDA" => "\xE2\x94\xBE", + "\xA6\xDB" => "\xE2\x95\x80", + "\xA6\xDC" => "\xE2\x95\x81", + "\xA6\xDD" => "\xE2\x95\x83", + "\xA6\xDE" => "\xE2\x95\x84", + "\xA6\xDF" => "\xE2\x95\x85", + "\xA6\xE0" => "\xE2\x95\x86", + "\xA6\xE1" => "\xE2\x95\x87", + "\xA6\xE2" => "\xE2\x95\x88", + "\xA6\xE3" => "\xE2\x95\x89", + "\xA6\xE4" => "\xE2\x95\x8A", + "\xA7\x41" => "\xEC\xAC\x8B", + "\xA7\x42" => "\xEC\xAC\x8C", + "\xA7\x43" => "\xEC\xAC\x8D", + "\xA7\x44" => "\xEC\xAC\x8E", + "\xA7\x45" => "\xEC\xAC\x8F", + "\xA7\x46" => "\xEC\xAC\x91", + "\xA7\x47" => "\xEC\xAC\x92", + "\xA7\x48" => "\xEC\xAC\x93", + "\xA7\x49" => "\xEC\xAC\x95", + "\xA7\x4A" => "\xEC\xAC\x96", + "\xA7\x4B" => "\xEC\xAC\x97", + "\xA7\x4C" => "\xEC\xAC\x99", + "\xA7\x4D" => "\xEC\xAC\x9A", + "\xA7\x4E" => "\xEC\xAC\x9B", + "\xA7\x4F" => "\xEC\xAC\x9C", + "\xA7\x50" => "\xEC\xAC\x9D", + "\xA7\x51" => "\xEC\xAC\x9E", + "\xA7\x52" => "\xEC\xAC\x9F", + "\xA7\x53" => "\xEC\xAC\xA2", + "\xA7\x54" => "\xEC\xAC\xA3", + "\xA7\x55" => "\xEC\xAC\xA4", + "\xA7\x56" => "\xEC\xAC\xA5", + "\xA7\x57" => "\xEC\xAC\xA6", + "\xA7\x58" => "\xEC\xAC\xA7", + "\xA7\x59" => "\xEC\xAC\xA8", + "\xA7\x5A" => "\xEC\xAC\xA9", + "\xA7\x61" => "\xEC\xAC\xAA", + "\xA7\x62" => "\xEC\xAC\xAB", + "\xA7\x63" => "\xEC\xAC\xAC", + "\xA7\x64" => "\xEC\xAC\xAD", + "\xA7\x65" => "\xEC\xAC\xAE", + "\xA7\x66" => "\xEC\xAC\xAF", + "\xA7\x67" => "\xEC\xAC\xB0", + "\xA7\x68" => "\xEC\xAC\xB1", + "\xA7\x69" => "\xEC\xAC\xB2", + "\xA7\x6A" => "\xEC\xAC\xB3", + "\xA7\x6B" => "\xEC\xAC\xB4", + "\xA7\x6C" => "\xEC\xAC\xB5", + "\xA7\x6D" => "\xEC\xAC\xB6", + "\xA7\x6E" => "\xEC\xAC\xB7", + "\xA7\x6F" => "\xEC\xAC\xB8", + "\xA7\x70" => "\xEC\xAC\xB9", + "\xA7\x71" => "\xEC\xAC\xBA", + "\xA7\x72" => "\xEC\xAC\xBB", + "\xA7\x73" => "\xEC\xAC\xBC", + "\xA7\x74" => "\xEC\xAC\xBD", + "\xA7\x75" => "\xEC\xAC\xBE", + "\xA7\x76" => "\xEC\xAC\xBF", + "\xA7\x77" => "\xEC\xAD\x80", + "\xA7\x78" => "\xEC\xAD\x82", + "\xA7\x79" => "\xEC\xAD\x83", + "\xA7\x7A" => "\xEC\xAD\x84", + "\xA7\x81" => "\xEC\xAD\x85", + "\xA7\x82" => "\xEC\xAD\x86", + "\xA7\x83" => "\xEC\xAD\x87", + "\xA7\x84" => "\xEC\xAD\x8A", + "\xA7\x85" => "\xEC\xAD\x8B", + "\xA7\x86" => "\xEC\xAD\x8D", + "\xA7\x87" => "\xEC\xAD\x8E", + "\xA7\x88" => "\xEC\xAD\x8F", + "\xA7\x89" => "\xEC\xAD\x91", + "\xA7\x8A" => "\xEC\xAD\x92", + "\xA7\x8B" => "\xEC\xAD\x93", + "\xA7\x8C" => "\xEC\xAD\x94", + "\xA7\x8D" => "\xEC\xAD\x95", + "\xA7\x8E" => "\xEC\xAD\x96", + "\xA7\x8F" => "\xEC\xAD\x97", + "\xA7\x90" => "\xEC\xAD\x9A", + "\xA7\x91" => "\xEC\xAD\x9B", + "\xA7\x92" => "\xEC\xAD\x9C", + "\xA7\x93" => "\xEC\xAD\x9E", + "\xA7\x94" => "\xEC\xAD\x9F", + "\xA7\x95" => "\xEC\xAD\xA0", + "\xA7\x96" => "\xEC\xAD\xA1", + "\xA7\x97" => "\xEC\xAD\xA2", + "\xA7\x98" => "\xEC\xAD\xA3", + "\xA7\x99" => "\xEC\xAD\xA5", + "\xA7\x9A" => "\xEC\xAD\xA6", + "\xA7\x9B" => "\xEC\xAD\xA7", + "\xA7\x9C" => "\xEC\xAD\xA8", + "\xA7\x9D" => "\xEC\xAD\xA9", + "\xA7\x9E" => "\xEC\xAD\xAA", + "\xA7\x9F" => "\xEC\xAD\xAB", + "\xA7\xA0" => "\xEC\xAD\xAC", + "\xA7\xA1" => "\xE3\x8E\x95", + "\xA7\xA2" => "\xE3\x8E\x96", + "\xA7\xA3" => "\xE3\x8E\x97", + "\xA7\xA4" => "\xE2\x84\x93", + "\xA7\xA5" => "\xE3\x8E\x98", + "\xA7\xA6" => "\xE3\x8F\x84", + "\xA7\xA7" => "\xE3\x8E\xA3", + "\xA7\xA8" => "\xE3\x8E\xA4", + "\xA7\xA9" => "\xE3\x8E\xA5", + "\xA7\xAA" => "\xE3\x8E\xA6", + "\xA7\xAB" => "\xE3\x8E\x99", + "\xA7\xAC" => "\xE3\x8E\x9A", + "\xA7\xAD" => "\xE3\x8E\x9B", + "\xA7\xAE" => "\xE3\x8E\x9C", + "\xA7\xAF" => "\xE3\x8E\x9D", + "\xA7\xB0" => "\xE3\x8E\x9E", + "\xA7\xB1" => "\xE3\x8E\x9F", + "\xA7\xB2" => "\xE3\x8E\xA0", + "\xA7\xB3" => "\xE3\x8E\xA1", + "\xA7\xB4" => "\xE3\x8E\xA2", + "\xA7\xB5" => "\xE3\x8F\x8A", + "\xA7\xB6" => "\xE3\x8E\x8D", + "\xA7\xB7" => "\xE3\x8E\x8E", + "\xA7\xB8" => "\xE3\x8E\x8F", + "\xA7\xB9" => "\xE3\x8F\x8F", + "\xA7\xBA" => "\xE3\x8E\x88", + "\xA7\xBB" => "\xE3\x8E\x89", + "\xA7\xBC" => "\xE3\x8F\x88", + "\xA7\xBD" => "\xE3\x8E\xA7", + "\xA7\xBE" => "\xE3\x8E\xA8", + "\xA7\xBF" => "\xE3\x8E\xB0", + "\xA7\xC0" => "\xE3\x8E\xB1", + "\xA7\xC1" => "\xE3\x8E\xB2", + "\xA7\xC2" => "\xE3\x8E\xB3", + "\xA7\xC3" => "\xE3\x8E\xB4", + "\xA7\xC4" => "\xE3\x8E\xB5", + "\xA7\xC5" => "\xE3\x8E\xB6", + "\xA7\xC6" => "\xE3\x8E\xB7", + "\xA7\xC7" => "\xE3\x8E\xB8", + "\xA7\xC8" => "\xE3\x8E\xB9", + "\xA7\xC9" => "\xE3\x8E\x80", + "\xA7\xCA" => "\xE3\x8E\x81", + "\xA7\xCB" => "\xE3\x8E\x82", + "\xA7\xCC" => "\xE3\x8E\x83", + "\xA7\xCD" => "\xE3\x8E\x84", + "\xA7\xCE" => "\xE3\x8E\xBA", + "\xA7\xCF" => "\xE3\x8E\xBB", + "\xA7\xD0" => "\xE3\x8E\xBC", + "\xA7\xD1" => "\xE3\x8E\xBD", + "\xA7\xD2" => "\xE3\x8E\xBE", + "\xA7\xD3" => "\xE3\x8E\xBF", + "\xA7\xD4" => "\xE3\x8E\x90", + "\xA7\xD5" => "\xE3\x8E\x91", + "\xA7\xD6" => "\xE3\x8E\x92", + "\xA7\xD7" => "\xE3\x8E\x93", + "\xA7\xD8" => "\xE3\x8E\x94", + "\xA7\xD9" => "\xE2\x84\xA6", + "\xA7\xDA" => "\xE3\x8F\x80", + "\xA7\xDB" => "\xE3\x8F\x81", + "\xA7\xDC" => "\xE3\x8E\x8A", + "\xA7\xDD" => "\xE3\x8E\x8B", + "\xA7\xDE" => "\xE3\x8E\x8C", + "\xA7\xDF" => "\xE3\x8F\x96", + "\xA7\xE0" => "\xE3\x8F\x85", + "\xA7\xE1" => "\xE3\x8E\xAD", + "\xA7\xE2" => "\xE3\x8E\xAE", + "\xA7\xE3" => "\xE3\x8E\xAF", + "\xA7\xE4" => "\xE3\x8F\x9B", + "\xA7\xE5" => "\xE3\x8E\xA9", + "\xA7\xE6" => "\xE3\x8E\xAA", + "\xA7\xE7" => "\xE3\x8E\xAB", + "\xA7\xE8" => "\xE3\x8E\xAC", + "\xA7\xE9" => "\xE3\x8F\x9D", + "\xA7\xEA" => "\xE3\x8F\x90", + "\xA7\xEB" => "\xE3\x8F\x93", + "\xA7\xEC" => "\xE3\x8F\x83", + "\xA7\xED" => "\xE3\x8F\x89", + "\xA7\xEE" => "\xE3\x8F\x9C", + "\xA7\xEF" => "\xE3\x8F\x86", + "\xA8\x41" => "\xEC\xAD\xAD", + "\xA8\x42" => "\xEC\xAD\xAE", + "\xA8\x43" => "\xEC\xAD\xAF", + "\xA8\x44" => "\xEC\xAD\xB0", + "\xA8\x45" => "\xEC\xAD\xB1", + "\xA8\x46" => "\xEC\xAD\xB2", + "\xA8\x47" => "\xEC\xAD\xB3", + "\xA8\x48" => "\xEC\xAD\xB4", + "\xA8\x49" => "\xEC\xAD\xB5", + "\xA8\x4A" => "\xEC\xAD\xB6", + "\xA8\x4B" => "\xEC\xAD\xB7", + "\xA8\x4C" => "\xEC\xAD\xBA", + "\xA8\x4D" => "\xEC\xAD\xBB", + "\xA8\x4E" => "\xEC\xAD\xBC", + "\xA8\x4F" => "\xEC\xAD\xBD", + "\xA8\x50" => "\xEC\xAD\xBE", + "\xA8\x51" => "\xEC\xAD\xBF", + "\xA8\x52" => "\xEC\xAE\x80", + "\xA8\x53" => "\xEC\xAE\x81", + "\xA8\x54" => "\xEC\xAE\x82", + "\xA8\x55" => "\xEC\xAE\x83", + "\xA8\x56" => "\xEC\xAE\x84", + "\xA8\x57" => "\xEC\xAE\x85", + "\xA8\x58" => "\xEC\xAE\x86", + "\xA8\x59" => "\xEC\xAE\x87", + "\xA8\x5A" => "\xEC\xAE\x88", + "\xA8\x61" => "\xEC\xAE\x89", + "\xA8\x62" => "\xEC\xAE\x8A", + "\xA8\x63" => "\xEC\xAE\x8B", + "\xA8\x64" => "\xEC\xAE\x8C", + "\xA8\x65" => "\xEC\xAE\x8D", + "\xA8\x66" => "\xEC\xAE\x8E", + "\xA8\x67" => "\xEC\xAE\x8F", + "\xA8\x68" => "\xEC\xAE\x90", + "\xA8\x69" => "\xEC\xAE\x91", + "\xA8\x6A" => "\xEC\xAE\x92", + "\xA8\x6B" => "\xEC\xAE\x93", + "\xA8\x6C" => "\xEC\xAE\x94", + "\xA8\x6D" => "\xEC\xAE\x95", + "\xA8\x6E" => "\xEC\xAE\x96", + "\xA8\x6F" => "\xEC\xAE\x97", + "\xA8\x70" => "\xEC\xAE\x98", + "\xA8\x71" => "\xEC\xAE\x99", + "\xA8\x72" => "\xEC\xAE\x9A", + "\xA8\x73" => "\xEC\xAE\x9B", + "\xA8\x74" => "\xEC\xAE\x9D", + "\xA8\x75" => "\xEC\xAE\x9E", + "\xA8\x76" => "\xEC\xAE\x9F", + "\xA8\x77" => "\xEC\xAE\xA0", + "\xA8\x78" => "\xEC\xAE\xA1", + "\xA8\x79" => "\xEC\xAE\xA2", + "\xA8\x7A" => "\xEC\xAE\xA3", + "\xA8\x81" => "\xEC\xAE\xA4", + "\xA8\x82" => "\xEC\xAE\xA5", + "\xA8\x83" => "\xEC\xAE\xA6", + "\xA8\x84" => "\xEC\xAE\xA7", + "\xA8\x85" => "\xEC\xAE\xA8", + "\xA8\x86" => "\xEC\xAE\xA9", + "\xA8\x87" => "\xEC\xAE\xAA", + "\xA8\x88" => "\xEC\xAE\xAB", + "\xA8\x89" => "\xEC\xAE\xAC", + "\xA8\x8A" => "\xEC\xAE\xAD", + "\xA8\x8B" => "\xEC\xAE\xAE", + "\xA8\x8C" => "\xEC\xAE\xAF", + "\xA8\x8D" => "\xEC\xAE\xB0", + "\xA8\x8E" => "\xEC\xAE\xB1", + "\xA8\x8F" => "\xEC\xAE\xB2", + "\xA8\x90" => "\xEC\xAE\xB3", + "\xA8\x91" => "\xEC\xAE\xB4", + "\xA8\x92" => "\xEC\xAE\xB5", + "\xA8\x93" => "\xEC\xAE\xB6", + "\xA8\x94" => "\xEC\xAE\xB7", + "\xA8\x95" => "\xEC\xAE\xB9", + "\xA8\x96" => "\xEC\xAE\xBA", + "\xA8\x97" => "\xEC\xAE\xBB", + "\xA8\x98" => "\xEC\xAE\xBC", + "\xA8\x99" => "\xEC\xAE\xBD", + "\xA8\x9A" => "\xEC\xAE\xBE", + "\xA8\x9B" => "\xEC\xAE\xBF", + "\xA8\x9C" => "\xEC\xAF\x80", + "\xA8\x9D" => "\xEC\xAF\x81", + "\xA8\x9E" => "\xEC\xAF\x82", + "\xA8\x9F" => "\xEC\xAF\x83", + "\xA8\xA0" => "\xEC\xAF\x84", + "\xA8\xA1" => "\xC3\x86", + "\xA8\xA2" => "\xC3\x90", + "\xA8\xA3" => "\xC2\xAA", + "\xA8\xA4" => "\xC4\xA6", + "\xA8\xA6" => "\xC4\xB2", + "\xA8\xA8" => "\xC4\xBF", + "\xA8\xA9" => "\xC5\x81", + "\xA8\xAA" => "\xC3\x98", + "\xA8\xAB" => "\xC5\x92", + "\xA8\xAC" => "\xC2\xBA", + "\xA8\xAD" => "\xC3\x9E", + "\xA8\xAE" => "\xC5\xA6", + "\xA8\xAF" => "\xC5\x8A", + "\xA8\xB1" => "\xE3\x89\xA0", + "\xA8\xB2" => "\xE3\x89\xA1", + "\xA8\xB3" => "\xE3\x89\xA2", + "\xA8\xB4" => "\xE3\x89\xA3", + "\xA8\xB5" => "\xE3\x89\xA4", + "\xA8\xB6" => "\xE3\x89\xA5", + "\xA8\xB7" => "\xE3\x89\xA6", + "\xA8\xB8" => "\xE3\x89\xA7", + "\xA8\xB9" => "\xE3\x89\xA8", + "\xA8\xBA" => "\xE3\x89\xA9", + "\xA8\xBB" => "\xE3\x89\xAA", + "\xA8\xBC" => "\xE3\x89\xAB", + "\xA8\xBD" => "\xE3\x89\xAC", + "\xA8\xBE" => "\xE3\x89\xAD", + "\xA8\xBF" => "\xE3\x89\xAE", + "\xA8\xC0" => "\xE3\x89\xAF", + "\xA8\xC1" => "\xE3\x89\xB0", + "\xA8\xC2" => "\xE3\x89\xB1", + "\xA8\xC3" => "\xE3\x89\xB2", + "\xA8\xC4" => "\xE3\x89\xB3", + "\xA8\xC5" => "\xE3\x89\xB4", + "\xA8\xC6" => "\xE3\x89\xB5", + "\xA8\xC7" => "\xE3\x89\xB6", + "\xA8\xC8" => "\xE3\x89\xB7", + "\xA8\xC9" => "\xE3\x89\xB8", + "\xA8\xCA" => "\xE3\x89\xB9", + "\xA8\xCB" => "\xE3\x89\xBA", + "\xA8\xCC" => "\xE3\x89\xBB", + "\xA8\xCD" => "\xE2\x93\x90", + "\xA8\xCE" => "\xE2\x93\x91", + "\xA8\xCF" => "\xE2\x93\x92", + "\xA8\xD0" => "\xE2\x93\x93", + "\xA8\xD1" => "\xE2\x93\x94", + "\xA8\xD2" => "\xE2\x93\x95", + "\xA8\xD3" => "\xE2\x93\x96", + "\xA8\xD4" => "\xE2\x93\x97", + "\xA8\xD5" => "\xE2\x93\x98", + "\xA8\xD6" => "\xE2\x93\x99", + "\xA8\xD7" => "\xE2\x93\x9A", + "\xA8\xD8" => "\xE2\x93\x9B", + "\xA8\xD9" => "\xE2\x93\x9C", + "\xA8\xDA" => "\xE2\x93\x9D", + "\xA8\xDB" => "\xE2\x93\x9E", + "\xA8\xDC" => "\xE2\x93\x9F", + "\xA8\xDD" => "\xE2\x93\xA0", + "\xA8\xDE" => "\xE2\x93\xA1", + "\xA8\xDF" => "\xE2\x93\xA2", + "\xA8\xE0" => "\xE2\x93\xA3", + "\xA8\xE1" => "\xE2\x93\xA4", + "\xA8\xE2" => "\xE2\x93\xA5", + "\xA8\xE3" => "\xE2\x93\xA6", + "\xA8\xE4" => "\xE2\x93\xA7", + "\xA8\xE5" => "\xE2\x93\xA8", + "\xA8\xE6" => "\xE2\x93\xA9", + "\xA8\xE7" => "\xE2\x91\xA0", + "\xA8\xE8" => "\xE2\x91\xA1", + "\xA8\xE9" => "\xE2\x91\xA2", + "\xA8\xEA" => "\xE2\x91\xA3", + "\xA8\xEB" => "\xE2\x91\xA4", + "\xA8\xEC" => "\xE2\x91\xA5", + "\xA8\xED" => "\xE2\x91\xA6", + "\xA8\xEE" => "\xE2\x91\xA7", + "\xA8\xEF" => "\xE2\x91\xA8", + "\xA8\xF0" => "\xE2\x91\xA9", + "\xA8\xF1" => "\xE2\x91\xAA", + "\xA8\xF2" => "\xE2\x91\xAB", + "\xA8\xF3" => "\xE2\x91\xAC", + "\xA8\xF4" => "\xE2\x91\xAD", + "\xA8\xF5" => "\xE2\x91\xAE", + "\xA8\xF6" => "\xC2\xBD", + "\xA8\xF7" => "\xE2\x85\x93", + "\xA8\xF8" => "\xE2\x85\x94", + "\xA8\xF9" => "\xC2\xBC", + "\xA8\xFA" => "\xC2\xBE", + "\xA8\xFB" => "\xE2\x85\x9B", + "\xA8\xFC" => "\xE2\x85\x9C", + "\xA8\xFD" => "\xE2\x85\x9D", + "\xA8\xFE" => "\xE2\x85\x9E", + "\xA9\x41" => "\xEC\xAF\x85", + "\xA9\x42" => "\xEC\xAF\x86", + "\xA9\x43" => "\xEC\xAF\x87", + "\xA9\x44" => "\xEC\xAF\x88", + "\xA9\x45" => "\xEC\xAF\x89", + "\xA9\x46" => "\xEC\xAF\x8A", + "\xA9\x47" => "\xEC\xAF\x8B", + "\xA9\x48" => "\xEC\xAF\x8C", + "\xA9\x49" => "\xEC\xAF\x8D", + "\xA9\x4A" => "\xEC\xAF\x8E", + "\xA9\x4B" => "\xEC\xAF\x8F", + "\xA9\x4C" => "\xEC\xAF\x90", + "\xA9\x4D" => "\xEC\xAF\x91", + "\xA9\x4E" => "\xEC\xAF\x92", + "\xA9\x4F" => "\xEC\xAF\x93", + "\xA9\x50" => "\xEC\xAF\x95", + "\xA9\x51" => "\xEC\xAF\x96", + "\xA9\x52" => "\xEC\xAF\x97", + "\xA9\x53" => "\xEC\xAF\x98", + "\xA9\x54" => "\xEC\xAF\x99", + "\xA9\x55" => "\xEC\xAF\x9A", + "\xA9\x56" => "\xEC\xAF\x9B", + "\xA9\x57" => "\xEC\xAF\x9C", + "\xA9\x58" => "\xEC\xAF\x9D", + "\xA9\x59" => "\xEC\xAF\x9E", + "\xA9\x5A" => "\xEC\xAF\x9F", + "\xA9\x61" => "\xEC\xAF\xA0", + "\xA9\x62" => "\xEC\xAF\xA1", + "\xA9\x63" => "\xEC\xAF\xA2", + "\xA9\x64" => "\xEC\xAF\xA3", + "\xA9\x65" => "\xEC\xAF\xA5", + "\xA9\x66" => "\xEC\xAF\xA6", + "\xA9\x67" => "\xEC\xAF\xA8", + "\xA9\x68" => "\xEC\xAF\xAA", + "\xA9\x69" => "\xEC\xAF\xAB", + "\xA9\x6A" => "\xEC\xAF\xAC", + "\xA9\x6B" => "\xEC\xAF\xAD", + "\xA9\x6C" => "\xEC\xAF\xAE", + "\xA9\x6D" => "\xEC\xAF\xAF", + "\xA9\x6E" => "\xEC\xAF\xB0", + "\xA9\x6F" => "\xEC\xAF\xB1", + "\xA9\x70" => "\xEC\xAF\xB2", + "\xA9\x71" => "\xEC\xAF\xB3", + "\xA9\x72" => "\xEC\xAF\xB4", + "\xA9\x73" => "\xEC\xAF\xB5", + "\xA9\x74" => "\xEC\xAF\xB6", + "\xA9\x75" => "\xEC\xAF\xB7", + "\xA9\x76" => "\xEC\xAF\xB8", + "\xA9\x77" => "\xEC\xAF\xB9", + "\xA9\x78" => "\xEC\xAF\xBA", + "\xA9\x79" => "\xEC\xAF\xBB", + "\xA9\x7A" => "\xEC\xAF\xBC", + "\xA9\x81" => "\xEC\xAF\xBD", + "\xA9\x82" => "\xEC\xAF\xBE", + "\xA9\x83" => "\xEC\xAF\xBF", + "\xA9\x84" => "\xEC\xB0\x80", + "\xA9\x85" => "\xEC\xB0\x81", + "\xA9\x86" => "\xEC\xB0\x82", + "\xA9\x87" => "\xEC\xB0\x83", + "\xA9\x88" => "\xEC\xB0\x84", + "\xA9\x89" => "\xEC\xB0\x85", + "\xA9\x8A" => "\xEC\xB0\x86", + "\xA9\x8B" => "\xEC\xB0\x87", + "\xA9\x8C" => "\xEC\xB0\x88", + "\xA9\x8D" => "\xEC\xB0\x89", + "\xA9\x8E" => "\xEC\xB0\x8A", + "\xA9\x8F" => "\xEC\xB0\x8B", + "\xA9\x90" => "\xEC\xB0\x8E", + "\xA9\x91" => "\xEC\xB0\x8F", + "\xA9\x92" => "\xEC\xB0\x91", + "\xA9\x93" => "\xEC\xB0\x92", + "\xA9\x94" => "\xEC\xB0\x93", + "\xA9\x95" => "\xEC\xB0\x95", + "\xA9\x96" => "\xEC\xB0\x96", + "\xA9\x97" => "\xEC\xB0\x97", + "\xA9\x98" => "\xEC\xB0\x98", + "\xA9\x99" => "\xEC\xB0\x99", + "\xA9\x9A" => "\xEC\xB0\x9A", + "\xA9\x9B" => "\xEC\xB0\x9B", + "\xA9\x9C" => "\xEC\xB0\x9E", + "\xA9\x9D" => "\xEC\xB0\x9F", + "\xA9\x9E" => "\xEC\xB0\xA0", + "\xA9\x9F" => "\xEC\xB0\xA3", + "\xA9\xA0" => "\xEC\xB0\xA4", + "\xA9\xA1" => "\xC3\xA6", + "\xA9\xA2" => "\xC4\x91", + "\xA9\xA3" => "\xC3\xB0", + "\xA9\xA4" => "\xC4\xA7", + "\xA9\xA5" => "\xC4\xB1", + "\xA9\xA6" => "\xC4\xB3", + "\xA9\xA7" => "\xC4\xB8", + "\xA9\xA8" => "\xC5\x80", + "\xA9\xA9" => "\xC5\x82", + "\xA9\xAA" => "\xC3\xB8", + "\xA9\xAB" => "\xC5\x93", + "\xA9\xAC" => "\xC3\x9F", + "\xA9\xAD" => "\xC3\xBE", + "\xA9\xAE" => "\xC5\xA7", + "\xA9\xAF" => "\xC5\x8B", + "\xA9\xB0" => "\xC5\x89", + "\xA9\xB1" => "\xE3\x88\x80", + "\xA9\xB2" => "\xE3\x88\x81", + "\xA9\xB3" => "\xE3\x88\x82", + "\xA9\xB4" => "\xE3\x88\x83", + "\xA9\xB5" => "\xE3\x88\x84", + "\xA9\xB6" => "\xE3\x88\x85", + "\xA9\xB7" => "\xE3\x88\x86", + "\xA9\xB8" => "\xE3\x88\x87", + "\xA9\xB9" => "\xE3\x88\x88", + "\xA9\xBA" => "\xE3\x88\x89", + "\xA9\xBB" => "\xE3\x88\x8A", + "\xA9\xBC" => "\xE3\x88\x8B", + "\xA9\xBD" => "\xE3\x88\x8C", + "\xA9\xBE" => "\xE3\x88\x8D", + "\xA9\xBF" => "\xE3\x88\x8E", + "\xA9\xC0" => "\xE3\x88\x8F", + "\xA9\xC1" => "\xE3\x88\x90", + "\xA9\xC2" => "\xE3\x88\x91", + "\xA9\xC3" => "\xE3\x88\x92", + "\xA9\xC4" => "\xE3\x88\x93", + "\xA9\xC5" => "\xE3\x88\x94", + "\xA9\xC6" => "\xE3\x88\x95", + "\xA9\xC7" => "\xE3\x88\x96", + "\xA9\xC8" => "\xE3\x88\x97", + "\xA9\xC9" => "\xE3\x88\x98", + "\xA9\xCA" => "\xE3\x88\x99", + "\xA9\xCB" => "\xE3\x88\x9A", + "\xA9\xCC" => "\xE3\x88\x9B", + "\xA9\xCD" => "\xE2\x92\x9C", + "\xA9\xCE" => "\xE2\x92\x9D", + "\xA9\xCF" => "\xE2\x92\x9E", + "\xA9\xD0" => "\xE2\x92\x9F", + "\xA9\xD1" => "\xE2\x92\xA0", + "\xA9\xD2" => "\xE2\x92\xA1", + "\xA9\xD3" => "\xE2\x92\xA2", + "\xA9\xD4" => "\xE2\x92\xA3", + "\xA9\xD5" => "\xE2\x92\xA4", + "\xA9\xD6" => "\xE2\x92\xA5", + "\xA9\xD7" => "\xE2\x92\xA6", + "\xA9\xD8" => "\xE2\x92\xA7", + "\xA9\xD9" => "\xE2\x92\xA8", + "\xA9\xDA" => "\xE2\x92\xA9", + "\xA9\xDB" => "\xE2\x92\xAA", + "\xA9\xDC" => "\xE2\x92\xAB", + "\xA9\xDD" => "\xE2\x92\xAC", + "\xA9\xDE" => "\xE2\x92\xAD", + "\xA9\xDF" => "\xE2\x92\xAE", + "\xA9\xE0" => "\xE2\x92\xAF", + "\xA9\xE1" => "\xE2\x92\xB0", + "\xA9\xE2" => "\xE2\x92\xB1", + "\xA9\xE3" => "\xE2\x92\xB2", + "\xA9\xE4" => "\xE2\x92\xB3", + "\xA9\xE5" => "\xE2\x92\xB4", + "\xA9\xE6" => "\xE2\x92\xB5", + "\xA9\xE7" => "\xE2\x91\xB4", + "\xA9\xE8" => "\xE2\x91\xB5", + "\xA9\xE9" => "\xE2\x91\xB6", + "\xA9\xEA" => "\xE2\x91\xB7", + "\xA9\xEB" => "\xE2\x91\xB8", + "\xA9\xEC" => "\xE2\x91\xB9", + "\xA9\xED" => "\xE2\x91\xBA", + "\xA9\xEE" => "\xE2\x91\xBB", + "\xA9\xEF" => "\xE2\x91\xBC", + "\xA9\xF0" => "\xE2\x91\xBD", + "\xA9\xF1" => "\xE2\x91\xBE", + "\xA9\xF2" => "\xE2\x91\xBF", + "\xA9\xF3" => "\xE2\x92\x80", + "\xA9\xF4" => "\xE2\x92\x81", + "\xA9\xF5" => "\xE2\x92\x82", + "\xA9\xF6" => "\xC2\xB9", + "\xA9\xF7" => "\xC2\xB2", + "\xA9\xF8" => "\xC2\xB3", + "\xA9\xF9" => "\xE2\x81\xB4", + "\xA9\xFA" => "\xE2\x81\xBF", + "\xA9\xFB" => "\xE2\x82\x81", + "\xA9\xFC" => "\xE2\x82\x82", + "\xA9\xFD" => "\xE2\x82\x83", + "\xA9\xFE" => "\xE2\x82\x84", + "\xAA\x41" => "\xEC\xB0\xA5", + "\xAA\x42" => "\xEC\xB0\xA6", + "\xAA\x43" => "\xEC\xB0\xAA", + "\xAA\x44" => "\xEC\xB0\xAB", + "\xAA\x45" => "\xEC\xB0\xAD", + "\xAA\x46" => "\xEC\xB0\xAF", + "\xAA\x47" => "\xEC\xB0\xB1", + "\xAA\x48" => "\xEC\xB0\xB2", + "\xAA\x49" => "\xEC\xB0\xB3", + "\xAA\x4A" => "\xEC\xB0\xB4", + "\xAA\x4B" => "\xEC\xB0\xB5", + "\xAA\x4C" => "\xEC\xB0\xB6", + "\xAA\x4D" => "\xEC\xB0\xB7", + "\xAA\x4E" => "\xEC\xB0\xBA", + "\xAA\x4F" => "\xEC\xB0\xBF", + "\xAA\x50" => "\xEC\xB1\x80", + "\xAA\x51" => "\xEC\xB1\x81", + "\xAA\x52" => "\xEC\xB1\x82", + "\xAA\x53" => "\xEC\xB1\x83", + "\xAA\x54" => "\xEC\xB1\x86", + "\xAA\x55" => "\xEC\xB1\x87", + "\xAA\x56" => "\xEC\xB1\x89", + "\xAA\x57" => "\xEC\xB1\x8A", + "\xAA\x58" => "\xEC\xB1\x8B", + "\xAA\x59" => "\xEC\xB1\x8D", + "\xAA\x5A" => "\xEC\xB1\x8E", + "\xAA\x61" => "\xEC\xB1\x8F", + "\xAA\x62" => "\xEC\xB1\x90", + "\xAA\x63" => "\xEC\xB1\x91", + "\xAA\x64" => "\xEC\xB1\x92", + "\xAA\x65" => "\xEC\xB1\x93", + "\xAA\x66" => "\xEC\xB1\x96", + "\xAA\x67" => "\xEC\xB1\x9A", + "\xAA\x68" => "\xEC\xB1\x9B", + "\xAA\x69" => "\xEC\xB1\x9C", + "\xAA\x6A" => "\xEC\xB1\x9D", + "\xAA\x6B" => "\xEC\xB1\x9E", + "\xAA\x6C" => "\xEC\xB1\x9F", + "\xAA\x6D" => "\xEC\xB1\xA1", + "\xAA\x6E" => "\xEC\xB1\xA2", + "\xAA\x6F" => "\xEC\xB1\xA3", + "\xAA\x70" => "\xEC\xB1\xA5", + "\xAA\x71" => "\xEC\xB1\xA7", + "\xAA\x72" => "\xEC\xB1\xA9", + "\xAA\x73" => "\xEC\xB1\xAA", + "\xAA\x74" => "\xEC\xB1\xAB", + "\xAA\x75" => "\xEC\xB1\xAC", + "\xAA\x76" => "\xEC\xB1\xAD", + "\xAA\x77" => "\xEC\xB1\xAE", + "\xAA\x78" => "\xEC\xB1\xAF", + "\xAA\x79" => "\xEC\xB1\xB1", + "\xAA\x7A" => "\xEC\xB1\xB2", + "\xAA\x81" => "\xEC\xB1\xB3", + "\xAA\x82" => "\xEC\xB1\xB4", + "\xAA\x83" => "\xEC\xB1\xB6", + "\xAA\x84" => "\xEC\xB1\xB7", + "\xAA\x85" => "\xEC\xB1\xB8", + "\xAA\x86" => "\xEC\xB1\xB9", + "\xAA\x87" => "\xEC\xB1\xBA", + "\xAA\x88" => "\xEC\xB1\xBB", + "\xAA\x89" => "\xEC\xB1\xBC", + "\xAA\x8A" => "\xEC\xB1\xBD", + "\xAA\x8B" => "\xEC\xB1\xBE", + "\xAA\x8C" => "\xEC\xB1\xBF", + "\xAA\x8D" => "\xEC\xB2\x80", + "\xAA\x8E" => "\xEC\xB2\x81", + "\xAA\x8F" => "\xEC\xB2\x82", + "\xAA\x90" => "\xEC\xB2\x83", + "\xAA\x91" => "\xEC\xB2\x84", + "\xAA\x92" => "\xEC\xB2\x85", + "\xAA\x93" => "\xEC\xB2\x86", + "\xAA\x94" => "\xEC\xB2\x87", + "\xAA\x95" => "\xEC\xB2\x88", + "\xAA\x96" => "\xEC\xB2\x89", + "\xAA\x97" => "\xEC\xB2\x8A", + "\xAA\x98" => "\xEC\xB2\x8B", + "\xAA\x99" => "\xEC\xB2\x8C", + "\xAA\x9A" => "\xEC\xB2\x8D", + "\xAA\x9B" => "\xEC\xB2\x8E", + "\xAA\x9C" => "\xEC\xB2\x8F", + "\xAA\x9D" => "\xEC\xB2\x90", + "\xAA\x9E" => "\xEC\xB2\x91", + "\xAA\x9F" => "\xEC\xB2\x92", + "\xAA\xA0" => "\xEC\xB2\x93", + "\xAA\xA1" => "\xE3\x81\x81", + "\xAA\xA2" => "\xE3\x81\x82", + "\xAA\xA3" => "\xE3\x81\x83", + "\xAA\xA4" => "\xE3\x81\x84", + "\xAA\xA5" => "\xE3\x81\x85", + "\xAA\xA6" => "\xE3\x81\x86", + "\xAA\xA7" => "\xE3\x81\x87", + "\xAA\xA8" => "\xE3\x81\x88", + "\xAA\xA9" => "\xE3\x81\x89", + "\xAA\xAA" => "\xE3\x81\x8A", + "\xAA\xAB" => "\xE3\x81\x8B", + "\xAA\xAC" => "\xE3\x81\x8C", + "\xAA\xAD" => "\xE3\x81\x8D", + "\xAA\xAE" => "\xE3\x81\x8E", + "\xAA\xAF" => "\xE3\x81\x8F", + "\xAA\xB0" => "\xE3\x81\x90", + "\xAA\xB1" => "\xE3\x81\x91", + "\xAA\xB2" => "\xE3\x81\x92", + "\xAA\xB3" => "\xE3\x81\x93", + "\xAA\xB4" => "\xE3\x81\x94", + "\xAA\xB5" => "\xE3\x81\x95", + "\xAA\xB6" => "\xE3\x81\x96", + "\xAA\xB7" => "\xE3\x81\x97", + "\xAA\xB8" => "\xE3\x81\x98", + "\xAA\xB9" => "\xE3\x81\x99", + "\xAA\xBA" => "\xE3\x81\x9A", + "\xAA\xBB" => "\xE3\x81\x9B", + "\xAA\xBC" => "\xE3\x81\x9C", + "\xAA\xBD" => "\xE3\x81\x9D", + "\xAA\xBE" => "\xE3\x81\x9E", + "\xAA\xBF" => "\xE3\x81\x9F", + "\xAA\xC0" => "\xE3\x81\xA0", + "\xAA\xC1" => "\xE3\x81\xA1", + "\xAA\xC2" => "\xE3\x81\xA2", + "\xAA\xC3" => "\xE3\x81\xA3", + "\xAA\xC4" => "\xE3\x81\xA4", + "\xAA\xC5" => "\xE3\x81\xA5", + "\xAA\xC6" => "\xE3\x81\xA6", + "\xAA\xC7" => "\xE3\x81\xA7", + "\xAA\xC8" => "\xE3\x81\xA8", + "\xAA\xC9" => "\xE3\x81\xA9", + "\xAA\xCA" => "\xE3\x81\xAA", + "\xAA\xCB" => "\xE3\x81\xAB", + "\xAA\xCC" => "\xE3\x81\xAC", + "\xAA\xCD" => "\xE3\x81\xAD", + "\xAA\xCE" => "\xE3\x81\xAE", + "\xAA\xCF" => "\xE3\x81\xAF", + "\xAA\xD0" => "\xE3\x81\xB0", + "\xAA\xD1" => "\xE3\x81\xB1", + "\xAA\xD2" => "\xE3\x81\xB2", + "\xAA\xD3" => "\xE3\x81\xB3", + "\xAA\xD4" => "\xE3\x81\xB4", + "\xAA\xD5" => "\xE3\x81\xB5", + "\xAA\xD6" => "\xE3\x81\xB6", + "\xAA\xD7" => "\xE3\x81\xB7", + "\xAA\xD8" => "\xE3\x81\xB8", + "\xAA\xD9" => "\xE3\x81\xB9", + "\xAA\xDA" => "\xE3\x81\xBA", + "\xAA\xDB" => "\xE3\x81\xBB", + "\xAA\xDC" => "\xE3\x81\xBC", + "\xAA\xDD" => "\xE3\x81\xBD", + "\xAA\xDE" => "\xE3\x81\xBE", + "\xAA\xDF" => "\xE3\x81\xBF", + "\xAA\xE0" => "\xE3\x82\x80", + "\xAA\xE1" => "\xE3\x82\x81", + "\xAA\xE2" => "\xE3\x82\x82", + "\xAA\xE3" => "\xE3\x82\x83", + "\xAA\xE4" => "\xE3\x82\x84", + "\xAA\xE5" => "\xE3\x82\x85", + "\xAA\xE6" => "\xE3\x82\x86", + "\xAA\xE7" => "\xE3\x82\x87", + "\xAA\xE8" => "\xE3\x82\x88", + "\xAA\xE9" => "\xE3\x82\x89", + "\xAA\xEA" => "\xE3\x82\x8A", + "\xAA\xEB" => "\xE3\x82\x8B", + "\xAA\xEC" => "\xE3\x82\x8C", + "\xAA\xED" => "\xE3\x82\x8D", + "\xAA\xEE" => "\xE3\x82\x8E", + "\xAA\xEF" => "\xE3\x82\x8F", + "\xAA\xF0" => "\xE3\x82\x90", + "\xAA\xF1" => "\xE3\x82\x91", + "\xAA\xF2" => "\xE3\x82\x92", + "\xAA\xF3" => "\xE3\x82\x93", + "\xAB\x41" => "\xEC\xB2\x94", + "\xAB\x42" => "\xEC\xB2\x95", + "\xAB\x43" => "\xEC\xB2\x96", + "\xAB\x44" => "\xEC\xB2\x97", + "\xAB\x45" => "\xEC\xB2\x9A", + "\xAB\x46" => "\xEC\xB2\x9B", + "\xAB\x47" => "\xEC\xB2\x9D", + "\xAB\x48" => "\xEC\xB2\x9E", + "\xAB\x49" => "\xEC\xB2\x9F", + "\xAB\x4A" => "\xEC\xB2\xA1", + "\xAB\x4B" => "\xEC\xB2\xA2", + "\xAB\x4C" => "\xEC\xB2\xA3", + "\xAB\x4D" => "\xEC\xB2\xA4", + "\xAB\x4E" => "\xEC\xB2\xA5", + "\xAB\x4F" => "\xEC\xB2\xA6", + "\xAB\x50" => "\xEC\xB2\xA7", + "\xAB\x51" => "\xEC\xB2\xAA", + "\xAB\x52" => "\xEC\xB2\xAE", + "\xAB\x53" => "\xEC\xB2\xAF", + "\xAB\x54" => "\xEC\xB2\xB0", + "\xAB\x55" => "\xEC\xB2\xB1", + "\xAB\x56" => "\xEC\xB2\xB2", + "\xAB\x57" => "\xEC\xB2\xB3", + "\xAB\x58" => "\xEC\xB2\xB6", + "\xAB\x59" => "\xEC\xB2\xB7", + "\xAB\x5A" => "\xEC\xB2\xB9", + "\xAB\x61" => "\xEC\xB2\xBA", + "\xAB\x62" => "\xEC\xB2\xBB", + "\xAB\x63" => "\xEC\xB2\xBD", + "\xAB\x64" => "\xEC\xB2\xBE", + "\xAB\x65" => "\xEC\xB2\xBF", + "\xAB\x66" => "\xEC\xB3\x80", + "\xAB\x67" => "\xEC\xB3\x81", + "\xAB\x68" => "\xEC\xB3\x82", + "\xAB\x69" => "\xEC\xB3\x83", + "\xAB\x6A" => "\xEC\xB3\x86", + "\xAB\x6B" => "\xEC\xB3\x88", + "\xAB\x6C" => "\xEC\xB3\x8A", + "\xAB\x6D" => "\xEC\xB3\x8B", + "\xAB\x6E" => "\xEC\xB3\x8C", + "\xAB\x6F" => "\xEC\xB3\x8D", + "\xAB\x70" => "\xEC\xB3\x8E", + "\xAB\x71" => "\xEC\xB3\x8F", + "\xAB\x72" => "\xEC\xB3\x91", + "\xAB\x73" => "\xEC\xB3\x92", + "\xAB\x74" => "\xEC\xB3\x93", + "\xAB\x75" => "\xEC\xB3\x95", + "\xAB\x76" => "\xEC\xB3\x96", + "\xAB\x77" => "\xEC\xB3\x97", + "\xAB\x78" => "\xEC\xB3\x98", + "\xAB\x79" => "\xEC\xB3\x99", + "\xAB\x7A" => "\xEC\xB3\x9A", + "\xAB\x81" => "\xEC\xB3\x9B", + "\xAB\x82" => "\xEC\xB3\x9C", + "\xAB\x83" => "\xEC\xB3\x9D", + "\xAB\x84" => "\xEC\xB3\x9E", + "\xAB\x85" => "\xEC\xB3\x9F", + "\xAB\x86" => "\xEC\xB3\xA0", + "\xAB\x87" => "\xEC\xB3\xA1", + "\xAB\x88" => "\xEC\xB3\xA2", + "\xAB\x89" => "\xEC\xB3\xA3", + "\xAB\x8A" => "\xEC\xB3\xA5", + "\xAB\x8B" => "\xEC\xB3\xA6", + "\xAB\x8C" => "\xEC\xB3\xA7", + "\xAB\x8D" => "\xEC\xB3\xA8", + "\xAB\x8E" => "\xEC\xB3\xA9", + "\xAB\x8F" => "\xEC\xB3\xAA", + "\xAB\x90" => "\xEC\xB3\xAB", + "\xAB\x91" => "\xEC\xB3\xAD", + "\xAB\x92" => "\xEC\xB3\xAE", + "\xAB\x93" => "\xEC\xB3\xAF", + "\xAB\x94" => "\xEC\xB3\xB1", + "\xAB\x95" => "\xEC\xB3\xB2", + "\xAB\x96" => "\xEC\xB3\xB3", + "\xAB\x97" => "\xEC\xB3\xB4", + "\xAB\x98" => "\xEC\xB3\xB5", + "\xAB\x99" => "\xEC\xB3\xB6", + "\xAB\x9A" => "\xEC\xB3\xB7", + "\xAB\x9B" => "\xEC\xB3\xB8", + "\xAB\x9C" => "\xEC\xB3\xB9", + "\xAB\x9D" => "\xEC\xB3\xBA", + "\xAB\x9E" => "\xEC\xB3\xBB", + "\xAB\x9F" => "\xEC\xB3\xBC", + "\xAB\xA0" => "\xEC\xB3\xBD", + "\xAB\xA1" => "\xE3\x82\xA1", + "\xAB\xA2" => "\xE3\x82\xA2", + "\xAB\xA3" => "\xE3\x82\xA3", + "\xAB\xA4" => "\xE3\x82\xA4", + "\xAB\xA5" => "\xE3\x82\xA5", + "\xAB\xA6" => "\xE3\x82\xA6", + "\xAB\xA7" => "\xE3\x82\xA7", + "\xAB\xA8" => "\xE3\x82\xA8", + "\xAB\xA9" => "\xE3\x82\xA9", + "\xAB\xAA" => "\xE3\x82\xAA", + "\xAB\xAB" => "\xE3\x82\xAB", + "\xAB\xAC" => "\xE3\x82\xAC", + "\xAB\xAD" => "\xE3\x82\xAD", + "\xAB\xAE" => "\xE3\x82\xAE", + "\xAB\xAF" => "\xE3\x82\xAF", + "\xAB\xB0" => "\xE3\x82\xB0", + "\xAB\xB1" => "\xE3\x82\xB1", + "\xAB\xB2" => "\xE3\x82\xB2", + "\xAB\xB3" => "\xE3\x82\xB3", + "\xAB\xB4" => "\xE3\x82\xB4", + "\xAB\xB5" => "\xE3\x82\xB5", + "\xAB\xB6" => "\xE3\x82\xB6", + "\xAB\xB7" => "\xE3\x82\xB7", + "\xAB\xB8" => "\xE3\x82\xB8", + "\xAB\xB9" => "\xE3\x82\xB9", + "\xAB\xBA" => "\xE3\x82\xBA", + "\xAB\xBB" => "\xE3\x82\xBB", + "\xAB\xBC" => "\xE3\x82\xBC", + "\xAB\xBD" => "\xE3\x82\xBD", + "\xAB\xBE" => "\xE3\x82\xBE", + "\xAB\xBF" => "\xE3\x82\xBF", + "\xAB\xC0" => "\xE3\x83\x80", + "\xAB\xC1" => "\xE3\x83\x81", + "\xAB\xC2" => "\xE3\x83\x82", + "\xAB\xC3" => "\xE3\x83\x83", + "\xAB\xC4" => "\xE3\x83\x84", + "\xAB\xC5" => "\xE3\x83\x85", + "\xAB\xC6" => "\xE3\x83\x86", + "\xAB\xC7" => "\xE3\x83\x87", + "\xAB\xC8" => "\xE3\x83\x88", + "\xAB\xC9" => "\xE3\x83\x89", + "\xAB\xCA" => "\xE3\x83\x8A", + "\xAB\xCB" => "\xE3\x83\x8B", + "\xAB\xCC" => "\xE3\x83\x8C", + "\xAB\xCD" => "\xE3\x83\x8D", + "\xAB\xCE" => "\xE3\x83\x8E", + "\xAB\xCF" => "\xE3\x83\x8F", + "\xAB\xD0" => "\xE3\x83\x90", + "\xAB\xD1" => "\xE3\x83\x91", + "\xAB\xD2" => "\xE3\x83\x92", + "\xAB\xD3" => "\xE3\x83\x93", + "\xAB\xD4" => "\xE3\x83\x94", + "\xAB\xD5" => "\xE3\x83\x95", + "\xAB\xD6" => "\xE3\x83\x96", + "\xAB\xD7" => "\xE3\x83\x97", + "\xAB\xD8" => "\xE3\x83\x98", + "\xAB\xD9" => "\xE3\x83\x99", + "\xAB\xDA" => "\xE3\x83\x9A", + "\xAB\xDB" => "\xE3\x83\x9B", + "\xAB\xDC" => "\xE3\x83\x9C", + "\xAB\xDD" => "\xE3\x83\x9D", + "\xAB\xDE" => "\xE3\x83\x9E", + "\xAB\xDF" => "\xE3\x83\x9F", + "\xAB\xE0" => "\xE3\x83\xA0", + "\xAB\xE1" => "\xE3\x83\xA1", + "\xAB\xE2" => "\xE3\x83\xA2", + "\xAB\xE3" => "\xE3\x83\xA3", + "\xAB\xE4" => "\xE3\x83\xA4", + "\xAB\xE5" => "\xE3\x83\xA5", + "\xAB\xE6" => "\xE3\x83\xA6", + "\xAB\xE7" => "\xE3\x83\xA7", + "\xAB\xE8" => "\xE3\x83\xA8", + "\xAB\xE9" => "\xE3\x83\xA9", + "\xAB\xEA" => "\xE3\x83\xAA", + "\xAB\xEB" => "\xE3\x83\xAB", + "\xAB\xEC" => "\xE3\x83\xAC", + "\xAB\xED" => "\xE3\x83\xAD", + "\xAB\xEE" => "\xE3\x83\xAE", + "\xAB\xEF" => "\xE3\x83\xAF", + "\xAB\xF0" => "\xE3\x83\xB0", + "\xAB\xF1" => "\xE3\x83\xB1", + "\xAB\xF2" => "\xE3\x83\xB2", + "\xAB\xF3" => "\xE3\x83\xB3", + "\xAB\xF4" => "\xE3\x83\xB4", + "\xAB\xF5" => "\xE3\x83\xB5", + "\xAB\xF6" => "\xE3\x83\xB6", + "\xAC\x41" => "\xEC\xB3\xBE", + "\xAC\x42" => "\xEC\xB3\xBF", + "\xAC\x43" => "\xEC\xB4\x80", + "\xAC\x44" => "\xEC\xB4\x82", + "\xAC\x45" => "\xEC\xB4\x83", + "\xAC\x46" => "\xEC\xB4\x84", + "\xAC\x47" => "\xEC\xB4\x85", + "\xAC\x48" => "\xEC\xB4\x86", + "\xAC\x49" => "\xEC\xB4\x87", + "\xAC\x4A" => "\xEC\xB4\x8A", + "\xAC\x4B" => "\xEC\xB4\x8B", + "\xAC\x4C" => "\xEC\xB4\x8D", + "\xAC\x4D" => "\xEC\xB4\x8E", + "\xAC\x4E" => "\xEC\xB4\x8F", + "\xAC\x4F" => "\xEC\xB4\x91", + "\xAC\x50" => "\xEC\xB4\x92", + "\xAC\x51" => "\xEC\xB4\x93", + "\xAC\x52" => "\xEC\xB4\x94", + "\xAC\x53" => "\xEC\xB4\x95", + "\xAC\x54" => "\xEC\xB4\x96", + "\xAC\x55" => "\xEC\xB4\x97", + "\xAC\x56" => "\xEC\xB4\x9A", + "\xAC\x57" => "\xEC\xB4\x9C", + "\xAC\x58" => "\xEC\xB4\x9E", + "\xAC\x59" => "\xEC\xB4\x9F", + "\xAC\x5A" => "\xEC\xB4\xA0", + "\xAC\x61" => "\xEC\xB4\xA1", + "\xAC\x62" => "\xEC\xB4\xA2", + "\xAC\x63" => "\xEC\xB4\xA3", + "\xAC\x64" => "\xEC\xB4\xA5", + "\xAC\x65" => "\xEC\xB4\xA6", + "\xAC\x66" => "\xEC\xB4\xA7", + "\xAC\x67" => "\xEC\xB4\xA9", + "\xAC\x68" => "\xEC\xB4\xAA", + "\xAC\x69" => "\xEC\xB4\xAB", + "\xAC\x6A" => "\xEC\xB4\xAD", + "\xAC\x6B" => "\xEC\xB4\xAE", + "\xAC\x6C" => "\xEC\xB4\xAF", + "\xAC\x6D" => "\xEC\xB4\xB0", + "\xAC\x6E" => "\xEC\xB4\xB1", + "\xAC\x6F" => "\xEC\xB4\xB2", + "\xAC\x70" => "\xEC\xB4\xB3", + "\xAC\x71" => "\xEC\xB4\xB4", + "\xAC\x72" => "\xEC\xB4\xB5", + "\xAC\x73" => "\xEC\xB4\xB6", + "\xAC\x74" => "\xEC\xB4\xB7", + "\xAC\x75" => "\xEC\xB4\xB8", + "\xAC\x76" => "\xEC\xB4\xBA", + "\xAC\x77" => "\xEC\xB4\xBB", + "\xAC\x78" => "\xEC\xB4\xBC", + "\xAC\x79" => "\xEC\xB4\xBD", + "\xAC\x7A" => "\xEC\xB4\xBE", + "\xAC\x81" => "\xEC\xB4\xBF", + "\xAC\x82" => "\xEC\xB5\x80", + "\xAC\x83" => "\xEC\xB5\x81", + "\xAC\x84" => "\xEC\xB5\x82", + "\xAC\x85" => "\xEC\xB5\x83", + "\xAC\x86" => "\xEC\xB5\x84", + "\xAC\x87" => "\xEC\xB5\x85", + "\xAC\x88" => "\xEC\xB5\x86", + "\xAC\x89" => "\xEC\xB5\x87", + "\xAC\x8A" => "\xEC\xB5\x88", + "\xAC\x8B" => "\xEC\xB5\x89", + "\xAC\x8C" => "\xEC\xB5\x8A", + "\xAC\x8D" => "\xEC\xB5\x8B", + "\xAC\x8E" => "\xEC\xB5\x8C", + "\xAC\x8F" => "\xEC\xB5\x8D", + "\xAC\x90" => "\xEC\xB5\x8E", + "\xAC\x91" => "\xEC\xB5\x8F", + "\xAC\x92" => "\xEC\xB5\x90", + "\xAC\x93" => "\xEC\xB5\x91", + "\xAC\x94" => "\xEC\xB5\x92", + "\xAC\x95" => "\xEC\xB5\x93", + "\xAC\x96" => "\xEC\xB5\x94", + "\xAC\x97" => "\xEC\xB5\x95", + "\xAC\x98" => "\xEC\xB5\x96", + "\xAC\x99" => "\xEC\xB5\x97", + "\xAC\x9A" => "\xEC\xB5\x98", + "\xAC\x9B" => "\xEC\xB5\x99", + "\xAC\x9C" => "\xEC\xB5\x9A", + "\xAC\x9D" => "\xEC\xB5\x9B", + "\xAC\x9E" => "\xEC\xB5\x9D", + "\xAC\x9F" => "\xEC\xB5\x9E", + "\xAC\xA0" => "\xEC\xB5\x9F", + "\xAC\xA1" => "\xD0\x90", + "\xAC\xA2" => "\xD0\x91", + "\xAC\xA3" => "\xD0\x92", + "\xAC\xA4" => "\xD0\x93", + "\xAC\xA5" => "\xD0\x94", + "\xAC\xA6" => "\xD0\x95", + "\xAC\xA7" => "\xD0\x81", + "\xAC\xA8" => "\xD0\x96", + "\xAC\xA9" => "\xD0\x97", + "\xAC\xAA" => "\xD0\x98", + "\xAC\xAB" => "\xD0\x99", + "\xAC\xAC" => "\xD0\x9A", + "\xAC\xAD" => "\xD0\x9B", + "\xAC\xAE" => "\xD0\x9C", + "\xAC\xAF" => "\xD0\x9D", + "\xAC\xB0" => "\xD0\x9E", + "\xAC\xB1" => "\xD0\x9F", + "\xAC\xB2" => "\xD0\xA0", + "\xAC\xB3" => "\xD0\xA1", + "\xAC\xB4" => "\xD0\xA2", + "\xAC\xB5" => "\xD0\xA3", + "\xAC\xB6" => "\xD0\xA4", + "\xAC\xB7" => "\xD0\xA5", + "\xAC\xB8" => "\xD0\xA6", + "\xAC\xB9" => "\xD0\xA7", + "\xAC\xBA" => "\xD0\xA8", + "\xAC\xBB" => "\xD0\xA9", + "\xAC\xBC" => "\xD0\xAA", + "\xAC\xBD" => "\xD0\xAB", + "\xAC\xBE" => "\xD0\xAC", + "\xAC\xBF" => "\xD0\xAD", + "\xAC\xC0" => "\xD0\xAE", + "\xAC\xC1" => "\xD0\xAF", + "\xAC\xD1" => "\xD0\xB0", + "\xAC\xD2" => "\xD0\xB1", + "\xAC\xD3" => "\xD0\xB2", + "\xAC\xD4" => "\xD0\xB3", + "\xAC\xD5" => "\xD0\xB4", + "\xAC\xD6" => "\xD0\xB5", + "\xAC\xD7" => "\xD1\x91", + "\xAC\xD8" => "\xD0\xB6", + "\xAC\xD9" => "\xD0\xB7", + "\xAC\xDA" => "\xD0\xB8", + "\xAC\xDB" => "\xD0\xB9", + "\xAC\xDC" => "\xD0\xBA", + "\xAC\xDD" => "\xD0\xBB", + "\xAC\xDE" => "\xD0\xBC", + "\xAC\xDF" => "\xD0\xBD", + "\xAC\xE0" => "\xD0\xBE", + "\xAC\xE1" => "\xD0\xBF", + "\xAC\xE2" => "\xD1\x80", + "\xAC\xE3" => "\xD1\x81", + "\xAC\xE4" => "\xD1\x82", + "\xAC\xE5" => "\xD1\x83", + "\xAC\xE6" => "\xD1\x84", + "\xAC\xE7" => "\xD1\x85", + "\xAC\xE8" => "\xD1\x86", + "\xAC\xE9" => "\xD1\x87", + "\xAC\xEA" => "\xD1\x88", + "\xAC\xEB" => "\xD1\x89", + "\xAC\xEC" => "\xD1\x8A", + "\xAC\xED" => "\xD1\x8B", + "\xAC\xEE" => "\xD1\x8C", + "\xAC\xEF" => "\xD1\x8D", + "\xAC\xF0" => "\xD1\x8E", + "\xAC\xF1" => "\xD1\x8F", + "\xAD\x41" => "\xEC\xB5\xA1", + "\xAD\x42" => "\xEC\xB5\xA2", + "\xAD\x43" => "\xEC\xB5\xA3", + "\xAD\x44" => "\xEC\xB5\xA5", + "\xAD\x45" => "\xEC\xB5\xA6", + "\xAD\x46" => "\xEC\xB5\xA7", + "\xAD\x47" => "\xEC\xB5\xA8", + "\xAD\x48" => "\xEC\xB5\xA9", + "\xAD\x49" => "\xEC\xB5\xAA", + "\xAD\x4A" => "\xEC\xB5\xAB", + "\xAD\x4B" => "\xEC\xB5\xAE", + "\xAD\x4C" => "\xEC\xB5\xB0", + "\xAD\x4D" => "\xEC\xB5\xB2", + "\xAD\x4E" => "\xEC\xB5\xB3", + "\xAD\x4F" => "\xEC\xB5\xB4", + "\xAD\x50" => "\xEC\xB5\xB5", + "\xAD\x51" => "\xEC\xB5\xB6", + "\xAD\x52" => "\xEC\xB5\xB7", + "\xAD\x53" => "\xEC\xB5\xB9", + "\xAD\x54" => "\xEC\xB5\xBA", + "\xAD\x55" => "\xEC\xB5\xBB", + "\xAD\x56" => "\xEC\xB5\xBC", + "\xAD\x57" => "\xEC\xB5\xBD", + "\xAD\x58" => "\xEC\xB5\xBE", + "\xAD\x59" => "\xEC\xB5\xBF", + "\xAD\x5A" => "\xEC\xB6\x80", + "\xAD\x61" => "\xEC\xB6\x81", + "\xAD\x62" => "\xEC\xB6\x82", + "\xAD\x63" => "\xEC\xB6\x83", + "\xAD\x64" => "\xEC\xB6\x84", + "\xAD\x65" => "\xEC\xB6\x85", + "\xAD\x66" => "\xEC\xB6\x86", + "\xAD\x67" => "\xEC\xB6\x87", + "\xAD\x68" => "\xEC\xB6\x89", + "\xAD\x69" => "\xEC\xB6\x8A", + "\xAD\x6A" => "\xEC\xB6\x8B", + "\xAD\x6B" => "\xEC\xB6\x8C", + "\xAD\x6C" => "\xEC\xB6\x8D", + "\xAD\x6D" => "\xEC\xB6\x8E", + "\xAD\x6E" => "\xEC\xB6\x8F", + "\xAD\x6F" => "\xEC\xB6\x90", + "\xAD\x70" => "\xEC\xB6\x91", + "\xAD\x71" => "\xEC\xB6\x92", + "\xAD\x72" => "\xEC\xB6\x93", + "\xAD\x73" => "\xEC\xB6\x96", + "\xAD\x74" => "\xEC\xB6\x97", + "\xAD\x75" => "\xEC\xB6\x99", + "\xAD\x76" => "\xEC\xB6\x9A", + "\xAD\x77" => "\xEC\xB6\x9B", + "\xAD\x78" => "\xEC\xB6\x9D", + "\xAD\x79" => "\xEC\xB6\x9E", + "\xAD\x7A" => "\xEC\xB6\x9F", + "\xAD\x81" => "\xEC\xB6\xA0", + "\xAD\x82" => "\xEC\xB6\xA1", + "\xAD\x83" => "\xEC\xB6\xA2", + "\xAD\x84" => "\xEC\xB6\xA3", + "\xAD\x85" => "\xEC\xB6\xA6", + "\xAD\x86" => "\xEC\xB6\xA8", + "\xAD\x87" => "\xEC\xB6\xAA", + "\xAD\x88" => "\xEC\xB6\xAB", + "\xAD\x89" => "\xEC\xB6\xAC", + "\xAD\x8A" => "\xEC\xB6\xAD", + "\xAD\x8B" => "\xEC\xB6\xAE", + "\xAD\x8C" => "\xEC\xB6\xAF", + "\xAD\x8D" => "\xEC\xB6\xB1", + "\xAD\x8E" => "\xEC\xB6\xB2", + "\xAD\x8F" => "\xEC\xB6\xB3", + "\xAD\x90" => "\xEC\xB6\xB4", + "\xAD\x91" => "\xEC\xB6\xB5", + "\xAD\x92" => "\xEC\xB6\xB6", + "\xAD\x93" => "\xEC\xB6\xB7", + "\xAD\x94" => "\xEC\xB6\xB8", + "\xAD\x95" => "\xEC\xB6\xB9", + "\xAD\x96" => "\xEC\xB6\xBA", + "\xAD\x97" => "\xEC\xB6\xBB", + "\xAD\x98" => "\xEC\xB6\xBC", + "\xAD\x99" => "\xEC\xB6\xBD", + "\xAD\x9A" => "\xEC\xB6\xBE", + "\xAD\x9B" => "\xEC\xB6\xBF", + "\xAD\x9C" => "\xEC\xB7\x80", + "\xAD\x9D" => "\xEC\xB7\x81", + "\xAD\x9E" => "\xEC\xB7\x82", + "\xAD\x9F" => "\xEC\xB7\x83", + "\xAD\xA0" => "\xEC\xB7\x85", + "\xAE\x41" => "\xEC\xB7\x86", + "\xAE\x42" => "\xEC\xB7\x87", + "\xAE\x43" => "\xEC\xB7\x88", + "\xAE\x44" => "\xEC\xB7\x89", + "\xAE\x45" => "\xEC\xB7\x8A", + "\xAE\x46" => "\xEC\xB7\x8B", + "\xAE\x47" => "\xEC\xB7\x8D", + "\xAE\x48" => "\xEC\xB7\x8E", + "\xAE\x49" => "\xEC\xB7\x8F", + "\xAE\x4A" => "\xEC\xB7\x91", + "\xAE\x4B" => "\xEC\xB7\x92", + "\xAE\x4C" => "\xEC\xB7\x93", + "\xAE\x4D" => "\xEC\xB7\x94", + "\xAE\x4E" => "\xEC\xB7\x95", + "\xAE\x4F" => "\xEC\xB7\x96", + "\xAE\x50" => "\xEC\xB7\x97", + "\xAE\x51" => "\xEC\xB7\x98", + "\xAE\x52" => "\xEC\xB7\x99", + "\xAE\x53" => "\xEC\xB7\x9A", + "\xAE\x54" => "\xEC\xB7\x9B", + "\xAE\x55" => "\xEC\xB7\x9C", + "\xAE\x56" => "\xEC\xB7\x9D", + "\xAE\x57" => "\xEC\xB7\x9E", + "\xAE\x58" => "\xEC\xB7\x9F", + "\xAE\x59" => "\xEC\xB7\xA0", + "\xAE\x5A" => "\xEC\xB7\xA1", + "\xAE\x61" => "\xEC\xB7\xA2", + "\xAE\x62" => "\xEC\xB7\xA3", + "\xAE\x63" => "\xEC\xB7\xA4", + "\xAE\x64" => "\xEC\xB7\xA5", + "\xAE\x65" => "\xEC\xB7\xA6", + "\xAE\x66" => "\xEC\xB7\xA7", + "\xAE\x67" => "\xEC\xB7\xA9", + "\xAE\x68" => "\xEC\xB7\xAA", + "\xAE\x69" => "\xEC\xB7\xAB", + "\xAE\x6A" => "\xEC\xB7\xAD", + "\xAE\x6B" => "\xEC\xB7\xAE", + "\xAE\x6C" => "\xEC\xB7\xAF", + "\xAE\x6D" => "\xEC\xB7\xB1", + "\xAE\x6E" => "\xEC\xB7\xB2", + "\xAE\x6F" => "\xEC\xB7\xB3", + "\xAE\x70" => "\xEC\xB7\xB4", + "\xAE\x71" => "\xEC\xB7\xB5", + "\xAE\x72" => "\xEC\xB7\xB6", + "\xAE\x73" => "\xEC\xB7\xB7", + "\xAE\x74" => "\xEC\xB7\xBA", + "\xAE\x75" => "\xEC\xB7\xBC", + "\xAE\x76" => "\xEC\xB7\xBE", + "\xAE\x77" => "\xEC\xB7\xBF", + "\xAE\x78" => "\xEC\xB8\x80", + "\xAE\x79" => "\xEC\xB8\x81", + "\xAE\x7A" => "\xEC\xB8\x82", + "\xAE\x81" => "\xEC\xB8\x83", + "\xAE\x82" => "\xEC\xB8\x85", + "\xAE\x83" => "\xEC\xB8\x86", + "\xAE\x84" => "\xEC\xB8\x87", + "\xAE\x85" => "\xEC\xB8\x89", + "\xAE\x86" => "\xEC\xB8\x8A", + "\xAE\x87" => "\xEC\xB8\x8B", + "\xAE\x88" => "\xEC\xB8\x8D", + "\xAE\x89" => "\xEC\xB8\x8E", + "\xAE\x8A" => "\xEC\xB8\x8F", + "\xAE\x8B" => "\xEC\xB8\x90", + "\xAE\x8C" => "\xEC\xB8\x91", + "\xAE\x8D" => "\xEC\xB8\x92", + "\xAE\x8E" => "\xEC\xB8\x93", + "\xAE\x8F" => "\xEC\xB8\x95", + "\xAE\x90" => "\xEC\xB8\x96", + "\xAE\x91" => "\xEC\xB8\x97", + "\xAE\x92" => "\xEC\xB8\x98", + "\xAE\x93" => "\xEC\xB8\x9A", + "\xAE\x94" => "\xEC\xB8\x9B", + "\xAE\x95" => "\xEC\xB8\x9C", + "\xAE\x96" => "\xEC\xB8\x9D", + "\xAE\x97" => "\xEC\xB8\x9E", + "\xAE\x98" => "\xEC\xB8\x9F", + "\xAE\x99" => "\xEC\xB8\xA2", + "\xAE\x9A" => "\xEC\xB8\xA3", + "\xAE\x9B" => "\xEC\xB8\xA5", + "\xAE\x9C" => "\xEC\xB8\xA6", + "\xAE\x9D" => "\xEC\xB8\xA7", + "\xAE\x9E" => "\xEC\xB8\xA9", + "\xAE\x9F" => "\xEC\xB8\xAA", + "\xAE\xA0" => "\xEC\xB8\xAB", + "\xAF\x41" => "\xEC\xB8\xAC", + "\xAF\x42" => "\xEC\xB8\xAD", + "\xAF\x43" => "\xEC\xB8\xAE", + "\xAF\x44" => "\xEC\xB8\xAF", + "\xAF\x45" => "\xEC\xB8\xB2", + "\xAF\x46" => "\xEC\xB8\xB4", + "\xAF\x47" => "\xEC\xB8\xB6", + "\xAF\x48" => "\xEC\xB8\xB7", + "\xAF\x49" => "\xEC\xB8\xB8", + "\xAF\x4A" => "\xEC\xB8\xB9", + "\xAF\x4B" => "\xEC\xB8\xBA", + "\xAF\x4C" => "\xEC\xB8\xBB", + "\xAF\x4D" => "\xEC\xB8\xBC", + "\xAF\x4E" => "\xEC\xB8\xBD", + "\xAF\x4F" => "\xEC\xB8\xBE", + "\xAF\x50" => "\xEC\xB8\xBF", + "\xAF\x51" => "\xEC\xB9\x80", + "\xAF\x52" => "\xEC\xB9\x81", + "\xAF\x53" => "\xEC\xB9\x82", + "\xAF\x54" => "\xEC\xB9\x83", + "\xAF\x55" => "\xEC\xB9\x84", + "\xAF\x56" => "\xEC\xB9\x85", + "\xAF\x57" => "\xEC\xB9\x86", + "\xAF\x58" => "\xEC\xB9\x87", + "\xAF\x59" => "\xEC\xB9\x88", + "\xAF\x5A" => "\xEC\xB9\x89", + "\xAF\x61" => "\xEC\xB9\x8A", + "\xAF\x62" => "\xEC\xB9\x8B", + "\xAF\x63" => "\xEC\xB9\x8C", + "\xAF\x64" => "\xEC\xB9\x8D", + "\xAF\x65" => "\xEC\xB9\x8E", + "\xAF\x66" => "\xEC\xB9\x8F", + "\xAF\x67" => "\xEC\xB9\x90", + "\xAF\x68" => "\xEC\xB9\x91", + "\xAF\x69" => "\xEC\xB9\x92", + "\xAF\x6A" => "\xEC\xB9\x93", + "\xAF\x6B" => "\xEC\xB9\x94", + "\xAF\x6C" => "\xEC\xB9\x95", + "\xAF\x6D" => "\xEC\xB9\x96", + "\xAF\x6E" => "\xEC\xB9\x97", + "\xAF\x6F" => "\xEC\xB9\x9A", + "\xAF\x70" => "\xEC\xB9\x9B", + "\xAF\x71" => "\xEC\xB9\x9D", + "\xAF\x72" => "\xEC\xB9\x9E", + "\xAF\x73" => "\xEC\xB9\xA2", + "\xAF\x74" => "\xEC\xB9\xA3", + "\xAF\x75" => "\xEC\xB9\xA4", + "\xAF\x76" => "\xEC\xB9\xA5", + "\xAF\x77" => "\xEC\xB9\xA6", + "\xAF\x78" => "\xEC\xB9\xA7", + "\xAF\x79" => "\xEC\xB9\xAA", + "\xAF\x7A" => "\xEC\xB9\xAC", + "\xAF\x81" => "\xEC\xB9\xAE", + "\xAF\x82" => "\xEC\xB9\xAF", + "\xAF\x83" => "\xEC\xB9\xB0", + "\xAF\x84" => "\xEC\xB9\xB1", + "\xAF\x85" => "\xEC\xB9\xB2", + "\xAF\x86" => "\xEC\xB9\xB3", + "\xAF\x87" => "\xEC\xB9\xB6", + "\xAF\x88" => "\xEC\xB9\xB7", + "\xAF\x89" => "\xEC\xB9\xB9", + "\xAF\x8A" => "\xEC\xB9\xBA", + "\xAF\x8B" => "\xEC\xB9\xBB", + "\xAF\x8C" => "\xEC\xB9\xBD", + "\xAF\x8D" => "\xEC\xB9\xBE", + "\xAF\x8E" => "\xEC\xB9\xBF", + "\xAF\x8F" => "\xEC\xBA\x80", + "\xAF\x90" => "\xEC\xBA\x81", + "\xAF\x91" => "\xEC\xBA\x82", + "\xAF\x92" => "\xEC\xBA\x83", + "\xAF\x93" => "\xEC\xBA\x86", + "\xAF\x94" => "\xEC\xBA\x88", + "\xAF\x95" => "\xEC\xBA\x8A", + "\xAF\x96" => "\xEC\xBA\x8B", + "\xAF\x97" => "\xEC\xBA\x8C", + "\xAF\x98" => "\xEC\xBA\x8D", + "\xAF\x99" => "\xEC\xBA\x8E", + "\xAF\x9A" => "\xEC\xBA\x8F", + "\xAF\x9B" => "\xEC\xBA\x92", + "\xAF\x9C" => "\xEC\xBA\x93", + "\xAF\x9D" => "\xEC\xBA\x95", + "\xAF\x9E" => "\xEC\xBA\x96", + "\xAF\x9F" => "\xEC\xBA\x97", + "\xAF\xA0" => "\xEC\xBA\x99", + "\xB0\x41" => "\xEC\xBA\x9A", + "\xB0\x42" => "\xEC\xBA\x9B", + "\xB0\x43" => "\xEC\xBA\x9C", + "\xB0\x44" => "\xEC\xBA\x9D", + "\xB0\x45" => "\xEC\xBA\x9E", + "\xB0\x46" => "\xEC\xBA\x9F", + "\xB0\x47" => "\xEC\xBA\xA2", + "\xB0\x48" => "\xEC\xBA\xA6", + "\xB0\x49" => "\xEC\xBA\xA7", + "\xB0\x4A" => "\xEC\xBA\xA8", + "\xB0\x4B" => "\xEC\xBA\xA9", + "\xB0\x4C" => "\xEC\xBA\xAA", + "\xB0\x4D" => "\xEC\xBA\xAB", + "\xB0\x4E" => "\xEC\xBA\xAE", + "\xB0\x4F" => "\xEC\xBA\xAF", + "\xB0\x50" => "\xEC\xBA\xB0", + "\xB0\x51" => "\xEC\xBA\xB1", + "\xB0\x52" => "\xEC\xBA\xB2", + "\xB0\x53" => "\xEC\xBA\xB3", + "\xB0\x54" => "\xEC\xBA\xB4", + "\xB0\x55" => "\xEC\xBA\xB5", + "\xB0\x56" => "\xEC\xBA\xB6", + "\xB0\x57" => "\xEC\xBA\xB7", + "\xB0\x58" => "\xEC\xBA\xB8", + "\xB0\x59" => "\xEC\xBA\xB9", + "\xB0\x5A" => "\xEC\xBA\xBA", + "\xB0\x61" => "\xEC\xBA\xBB", + "\xB0\x62" => "\xEC\xBA\xBC", + "\xB0\x63" => "\xEC\xBA\xBD", + "\xB0\x64" => "\xEC\xBA\xBE", + "\xB0\x65" => "\xEC\xBA\xBF", + "\xB0\x66" => "\xEC\xBB\x80", + "\xB0\x67" => "\xEC\xBB\x82", + "\xB0\x68" => "\xEC\xBB\x83", + "\xB0\x69" => "\xEC\xBB\x84", + "\xB0\x6A" => "\xEC\xBB\x85", + "\xB0\x6B" => "\xEC\xBB\x86", + "\xB0\x6C" => "\xEC\xBB\x87", + "\xB0\x6D" => "\xEC\xBB\x88", + "\xB0\x6E" => "\xEC\xBB\x89", + "\xB0\x6F" => "\xEC\xBB\x8A", + "\xB0\x70" => "\xEC\xBB\x8B", + "\xB0\x71" => "\xEC\xBB\x8C", + "\xB0\x72" => "\xEC\xBB\x8D", + "\xB0\x73" => "\xEC\xBB\x8E", + "\xB0\x74" => "\xEC\xBB\x8F", + "\xB0\x75" => "\xEC\xBB\x90", + "\xB0\x76" => "\xEC\xBB\x91", + "\xB0\x77" => "\xEC\xBB\x92", + "\xB0\x78" => "\xEC\xBB\x93", + "\xB0\x79" => "\xEC\xBB\x94", + "\xB0\x7A" => "\xEC\xBB\x95", + "\xB0\x81" => "\xEC\xBB\x96", + "\xB0\x82" => "\xEC\xBB\x97", + "\xB0\x83" => "\xEC\xBB\x98", + "\xB0\x84" => "\xEC\xBB\x99", + "\xB0\x85" => "\xEC\xBB\x9A", + "\xB0\x86" => "\xEC\xBB\x9B", + "\xB0\x87" => "\xEC\xBB\x9C", + "\xB0\x88" => "\xEC\xBB\x9D", + "\xB0\x89" => "\xEC\xBB\x9E", + "\xB0\x8A" => "\xEC\xBB\x9F", + "\xB0\x8B" => "\xEC\xBB\xA0", + "\xB0\x8C" => "\xEC\xBB\xA1", + "\xB0\x8D" => "\xEC\xBB\xA2", + "\xB0\x8E" => "\xEC\xBB\xA3", + "\xB0\x8F" => "\xEC\xBB\xA6", + "\xB0\x90" => "\xEC\xBB\xA7", + "\xB0\x91" => "\xEC\xBB\xA9", + "\xB0\x92" => "\xEC\xBB\xAA", + "\xB0\x93" => "\xEC\xBB\xAD", + "\xB0\x94" => "\xEC\xBB\xAE", + "\xB0\x95" => "\xEC\xBB\xAF", + "\xB0\x96" => "\xEC\xBB\xB0", + "\xB0\x97" => "\xEC\xBB\xB1", + "\xB0\x98" => "\xEC\xBB\xB2", + "\xB0\x99" => "\xEC\xBB\xB3", + "\xB0\x9A" => "\xEC\xBB\xB6", + "\xB0\x9B" => "\xEC\xBB\xBA", + "\xB0\x9C" => "\xEC\xBB\xBB", + "\xB0\x9D" => "\xEC\xBB\xBC", + "\xB0\x9E" => "\xEC\xBB\xBD", + "\xB0\x9F" => "\xEC\xBB\xBE", + "\xB0\xA0" => "\xEC\xBB\xBF", + "\xB0\xA1" => "\xEA\xB0\x80", + "\xB0\xA2" => "\xEA\xB0\x81", + "\xB0\xA3" => "\xEA\xB0\x84", + "\xB0\xA4" => "\xEA\xB0\x87", + "\xB0\xA5" => "\xEA\xB0\x88", + "\xB0\xA6" => "\xEA\xB0\x89", + "\xB0\xA7" => "\xEA\xB0\x8A", + "\xB0\xA8" => "\xEA\xB0\x90", + "\xB0\xA9" => "\xEA\xB0\x91", + "\xB0\xAA" => "\xEA\xB0\x92", + "\xB0\xAB" => "\xEA\xB0\x93", + "\xB0\xAC" => "\xEA\xB0\x94", + "\xB0\xAD" => "\xEA\xB0\x95", + "\xB0\xAE" => "\xEA\xB0\x96", + "\xB0\xAF" => "\xEA\xB0\x97", + "\xB0\xB0" => "\xEA\xB0\x99", + "\xB0\xB1" => "\xEA\xB0\x9A", + "\xB0\xB2" => "\xEA\xB0\x9B", + "\xB0\xB3" => "\xEA\xB0\x9C", + "\xB0\xB4" => "\xEA\xB0\x9D", + "\xB0\xB5" => "\xEA\xB0\xA0", + "\xB0\xB6" => "\xEA\xB0\xA4", + "\xB0\xB7" => "\xEA\xB0\xAC", + "\xB0\xB8" => "\xEA\xB0\xAD", + "\xB0\xB9" => "\xEA\xB0\xAF", + "\xB0\xBA" => "\xEA\xB0\xB0", + "\xB0\xBB" => "\xEA\xB0\xB1", + "\xB0\xBC" => "\xEA\xB0\xB8", + "\xB0\xBD" => "\xEA\xB0\xB9", + "\xB0\xBE" => "\xEA\xB0\xBC", + "\xB0\xBF" => "\xEA\xB1\x80", + "\xB0\xC0" => "\xEA\xB1\x8B", + "\xB0\xC1" => "\xEA\xB1\x8D", + "\xB0\xC2" => "\xEA\xB1\x94", + "\xB0\xC3" => "\xEA\xB1\x98", + "\xB0\xC4" => "\xEA\xB1\x9C", + "\xB0\xC5" => "\xEA\xB1\xB0", + "\xB0\xC6" => "\xEA\xB1\xB1", + "\xB0\xC7" => "\xEA\xB1\xB4", + "\xB0\xC8" => "\xEA\xB1\xB7", + "\xB0\xC9" => "\xEA\xB1\xB8", + "\xB0\xCA" => "\xEA\xB1\xBA", + "\xB0\xCB" => "\xEA\xB2\x80", + "\xB0\xCC" => "\xEA\xB2\x81", + "\xB0\xCD" => "\xEA\xB2\x83", + "\xB0\xCE" => "\xEA\xB2\x84", + "\xB0\xCF" => "\xEA\xB2\x85", + "\xB0\xD0" => "\xEA\xB2\x86", + "\xB0\xD1" => "\xEA\xB2\x89", + "\xB0\xD2" => "\xEA\xB2\x8A", + "\xB0\xD3" => "\xEA\xB2\x8B", + "\xB0\xD4" => "\xEA\xB2\x8C", + "\xB0\xD5" => "\xEA\xB2\x90", + "\xB0\xD6" => "\xEA\xB2\x94", + "\xB0\xD7" => "\xEA\xB2\x9C", + "\xB0\xD8" => "\xEA\xB2\x9D", + "\xB0\xD9" => "\xEA\xB2\x9F", + "\xB0\xDA" => "\xEA\xB2\xA0", + "\xB0\xDB" => "\xEA\xB2\xA1", + "\xB0\xDC" => "\xEA\xB2\xA8", + "\xB0\xDD" => "\xEA\xB2\xA9", + "\xB0\xDE" => "\xEA\xB2\xAA", + "\xB0\xDF" => "\xEA\xB2\xAC", + "\xB0\xE0" => "\xEA\xB2\xAF", + "\xB0\xE1" => "\xEA\xB2\xB0", + "\xB0\xE2" => "\xEA\xB2\xB8", + "\xB0\xE3" => "\xEA\xB2\xB9", + "\xB0\xE4" => "\xEA\xB2\xBB", + "\xB0\xE5" => "\xEA\xB2\xBC", + "\xB0\xE6" => "\xEA\xB2\xBD", + "\xB0\xE7" => "\xEA\xB3\x81", + "\xB0\xE8" => "\xEA\xB3\x84", + "\xB0\xE9" => "\xEA\xB3\x88", + "\xB0\xEA" => "\xEA\xB3\x8C", + "\xB0\xEB" => "\xEA\xB3\x95", + "\xB0\xEC" => "\xEA\xB3\x97", + "\xB0\xED" => "\xEA\xB3\xA0", + "\xB0\xEE" => "\xEA\xB3\xA1", + "\xB0\xEF" => "\xEA\xB3\xA4", + "\xB0\xF0" => "\xEA\xB3\xA7", + "\xB0\xF1" => "\xEA\xB3\xA8", + "\xB0\xF2" => "\xEA\xB3\xAA", + "\xB0\xF3" => "\xEA\xB3\xAC", + "\xB0\xF4" => "\xEA\xB3\xAF", + "\xB0\xF5" => "\xEA\xB3\xB0", + "\xB0\xF6" => "\xEA\xB3\xB1", + "\xB0\xF7" => "\xEA\xB3\xB3", + "\xB0\xF8" => "\xEA\xB3\xB5", + "\xB0\xF9" => "\xEA\xB3\xB6", + "\xB0\xFA" => "\xEA\xB3\xBC", + "\xB0\xFB" => "\xEA\xB3\xBD", + "\xB0\xFC" => "\xEA\xB4\x80", + "\xB0\xFD" => "\xEA\xB4\x84", + "\xB0\xFE" => "\xEA\xB4\x86", + "\xB1\x41" => "\xEC\xBC\x82", + "\xB1\x42" => "\xEC\xBC\x83", + "\xB1\x43" => "\xEC\xBC\x85", + "\xB1\x44" => "\xEC\xBC\x86", + "\xB1\x45" => "\xEC\xBC\x87", + "\xB1\x46" => "\xEC\xBC\x89", + "\xB1\x47" => "\xEC\xBC\x8A", + "\xB1\x48" => "\xEC\xBC\x8B", + "\xB1\x49" => "\xEC\xBC\x8C", + "\xB1\x4A" => "\xEC\xBC\x8D", + "\xB1\x4B" => "\xEC\xBC\x8E", + "\xB1\x4C" => "\xEC\xBC\x8F", + "\xB1\x4D" => "\xEC\xBC\x92", + "\xB1\x4E" => "\xEC\xBC\x94", + "\xB1\x4F" => "\xEC\xBC\x96", + "\xB1\x50" => "\xEC\xBC\x97", + "\xB1\x51" => "\xEC\xBC\x98", + "\xB1\x52" => "\xEC\xBC\x99", + "\xB1\x53" => "\xEC\xBC\x9A", + "\xB1\x54" => "\xEC\xBC\x9B", + "\xB1\x55" => "\xEC\xBC\x9D", + "\xB1\x56" => "\xEC\xBC\x9E", + "\xB1\x57" => "\xEC\xBC\x9F", + "\xB1\x58" => "\xEC\xBC\xA1", + "\xB1\x59" => "\xEC\xBC\xA2", + "\xB1\x5A" => "\xEC\xBC\xA3", + "\xB1\x61" => "\xEC\xBC\xA5", + "\xB1\x62" => "\xEC\xBC\xA6", + "\xB1\x63" => "\xEC\xBC\xA7", + "\xB1\x64" => "\xEC\xBC\xA8", + "\xB1\x65" => "\xEC\xBC\xA9", + "\xB1\x66" => "\xEC\xBC\xAA", + "\xB1\x67" => "\xEC\xBC\xAB", + "\xB1\x68" => "\xEC\xBC\xAE", + "\xB1\x69" => "\xEC\xBC\xB2", + "\xB1\x6A" => "\xEC\xBC\xB3", + "\xB1\x6B" => "\xEC\xBC\xB4", + "\xB1\x6C" => "\xEC\xBC\xB5", + "\xB1\x6D" => "\xEC\xBC\xB6", + "\xB1\x6E" => "\xEC\xBC\xB7", + "\xB1\x6F" => "\xEC\xBC\xB9", + "\xB1\x70" => "\xEC\xBC\xBA", + "\xB1\x71" => "\xEC\xBC\xBB", + "\xB1\x72" => "\xEC\xBC\xBC", + "\xB1\x73" => "\xEC\xBC\xBD", + "\xB1\x74" => "\xEC\xBC\xBE", + "\xB1\x75" => "\xEC\xBC\xBF", + "\xB1\x76" => "\xEC\xBD\x80", + "\xB1\x77" => "\xEC\xBD\x81", + "\xB1\x78" => "\xEC\xBD\x82", + "\xB1\x79" => "\xEC\xBD\x83", + "\xB1\x7A" => "\xEC\xBD\x84", + "\xB1\x81" => "\xEC\xBD\x85", + "\xB1\x82" => "\xEC\xBD\x86", + "\xB1\x83" => "\xEC\xBD\x87", + "\xB1\x84" => "\xEC\xBD\x88", + "\xB1\x85" => "\xEC\xBD\x89", + "\xB1\x86" => "\xEC\xBD\x8A", + "\xB1\x87" => "\xEC\xBD\x8B", + "\xB1\x88" => "\xEC\xBD\x8C", + "\xB1\x89" => "\xEC\xBD\x8D", + "\xB1\x8A" => "\xEC\xBD\x8E", + "\xB1\x8B" => "\xEC\xBD\x8F", + "\xB1\x8C" => "\xEC\xBD\x90", + "\xB1\x8D" => "\xEC\xBD\x91", + "\xB1\x8E" => "\xEC\xBD\x92", + "\xB1\x8F" => "\xEC\xBD\x93", + "\xB1\x90" => "\xEC\xBD\x96", + "\xB1\x91" => "\xEC\xBD\x97", + "\xB1\x92" => "\xEC\xBD\x99", + "\xB1\x93" => "\xEC\xBD\x9A", + "\xB1\x94" => "\xEC\xBD\x9B", + "\xB1\x95" => "\xEC\xBD\x9D", + "\xB1\x96" => "\xEC\xBD\x9E", + "\xB1\x97" => "\xEC\xBD\x9F", + "\xB1\x98" => "\xEC\xBD\xA0", + "\xB1\x99" => "\xEC\xBD\xA1", + "\xB1\x9A" => "\xEC\xBD\xA2", + "\xB1\x9B" => "\xEC\xBD\xA3", + "\xB1\x9C" => "\xEC\xBD\xA6", + "\xB1\x9D" => "\xEC\xBD\xA8", + "\xB1\x9E" => "\xEC\xBD\xAA", + "\xB1\x9F" => "\xEC\xBD\xAB", + "\xB1\xA0" => "\xEC\xBD\xAC", + "\xB1\xA1" => "\xEA\xB4\x8C", + "\xB1\xA2" => "\xEA\xB4\x8D", + "\xB1\xA3" => "\xEA\xB4\x8F", + "\xB1\xA4" => "\xEA\xB4\x91", + "\xB1\xA5" => "\xEA\xB4\x98", + "\xB1\xA6" => "\xEA\xB4\x9C", + "\xB1\xA7" => "\xEA\xB4\xA0", + "\xB1\xA8" => "\xEA\xB4\xA9", + "\xB1\xA9" => "\xEA\xB4\xAC", + "\xB1\xAA" => "\xEA\xB4\xAD", + "\xB1\xAB" => "\xEA\xB4\xB4", + "\xB1\xAC" => "\xEA\xB4\xB5", + "\xB1\xAD" => "\xEA\xB4\xB8", + "\xB1\xAE" => "\xEA\xB4\xBC", + "\xB1\xAF" => "\xEA\xB5\x84", + "\xB1\xB0" => "\xEA\xB5\x85", + "\xB1\xB1" => "\xEA\xB5\x87", + "\xB1\xB2" => "\xEA\xB5\x89", + "\xB1\xB3" => "\xEA\xB5\x90", + "\xB1\xB4" => "\xEA\xB5\x94", + "\xB1\xB5" => "\xEA\xB5\x98", + "\xB1\xB6" => "\xEA\xB5\xA1", + "\xB1\xB7" => "\xEA\xB5\xA3", + "\xB1\xB8" => "\xEA\xB5\xAC", + "\xB1\xB9" => "\xEA\xB5\xAD", + "\xB1\xBA" => "\xEA\xB5\xB0", + "\xB1\xBB" => "\xEA\xB5\xB3", + "\xB1\xBC" => "\xEA\xB5\xB4", + "\xB1\xBD" => "\xEA\xB5\xB5", + "\xB1\xBE" => "\xEA\xB5\xB6", + "\xB1\xBF" => "\xEA\xB5\xBB", + "\xB1\xC0" => "\xEA\xB5\xBC", + "\xB1\xC1" => "\xEA\xB5\xBD", + "\xB1\xC2" => "\xEA\xB5\xBF", + "\xB1\xC3" => "\xEA\xB6\x81", + "\xB1\xC4" => "\xEA\xB6\x82", + "\xB1\xC5" => "\xEA\xB6\x88", + "\xB1\xC6" => "\xEA\xB6\x89", + "\xB1\xC7" => "\xEA\xB6\x8C", + "\xB1\xC8" => "\xEA\xB6\x90", + "\xB1\xC9" => "\xEA\xB6\x9C", + "\xB1\xCA" => "\xEA\xB6\x9D", + "\xB1\xCB" => "\xEA\xB6\xA4", + "\xB1\xCC" => "\xEA\xB6\xB7", + "\xB1\xCD" => "\xEA\xB7\x80", + "\xB1\xCE" => "\xEA\xB7\x81", + "\xB1\xCF" => "\xEA\xB7\x84", + "\xB1\xD0" => "\xEA\xB7\x88", + "\xB1\xD1" => "\xEA\xB7\x90", + "\xB1\xD2" => "\xEA\xB7\x91", + "\xB1\xD3" => "\xEA\xB7\x93", + "\xB1\xD4" => "\xEA\xB7\x9C", + "\xB1\xD5" => "\xEA\xB7\xA0", + "\xB1\xD6" => "\xEA\xB7\xA4", + "\xB1\xD7" => "\xEA\xB7\xB8", + "\xB1\xD8" => "\xEA\xB7\xB9", + "\xB1\xD9" => "\xEA\xB7\xBC", + "\xB1\xDA" => "\xEA\xB7\xBF", + "\xB1\xDB" => "\xEA\xB8\x80", + "\xB1\xDC" => "\xEA\xB8\x81", + "\xB1\xDD" => "\xEA\xB8\x88", + "\xB1\xDE" => "\xEA\xB8\x89", + "\xB1\xDF" => "\xEA\xB8\x8B", + "\xB1\xE0" => "\xEA\xB8\x8D", + "\xB1\xE1" => "\xEA\xB8\x94", + "\xB1\xE2" => "\xEA\xB8\xB0", + "\xB1\xE3" => "\xEA\xB8\xB1", + "\xB1\xE4" => "\xEA\xB8\xB4", + "\xB1\xE5" => "\xEA\xB8\xB7", + "\xB1\xE6" => "\xEA\xB8\xB8", + "\xB1\xE7" => "\xEA\xB8\xBA", + "\xB1\xE8" => "\xEA\xB9\x80", + "\xB1\xE9" => "\xEA\xB9\x81", + "\xB1\xEA" => "\xEA\xB9\x83", + "\xB1\xEB" => "\xEA\xB9\x85", + "\xB1\xEC" => "\xEA\xB9\x86", + "\xB1\xED" => "\xEA\xB9\x8A", + "\xB1\xEE" => "\xEA\xB9\x8C", + "\xB1\xEF" => "\xEA\xB9\x8D", + "\xB1\xF0" => "\xEA\xB9\x8E", + "\xB1\xF1" => "\xEA\xB9\x90", + "\xB1\xF2" => "\xEA\xB9\x94", + "\xB1\xF3" => "\xEA\xB9\x96", + "\xB1\xF4" => "\xEA\xB9\x9C", + "\xB1\xF5" => "\xEA\xB9\x9D", + "\xB1\xF6" => "\xEA\xB9\x9F", + "\xB1\xF7" => "\xEA\xB9\xA0", + "\xB1\xF8" => "\xEA\xB9\xA1", + "\xB1\xF9" => "\xEA\xB9\xA5", + "\xB1\xFA" => "\xEA\xB9\xA8", + "\xB1\xFB" => "\xEA\xB9\xA9", + "\xB1\xFC" => "\xEA\xB9\xAC", + "\xB1\xFD" => "\xEA\xB9\xB0", + "\xB1\xFE" => "\xEA\xB9\xB8", + "\xB2\x41" => "\xEC\xBD\xAD", + "\xB2\x42" => "\xEC\xBD\xAE", + "\xB2\x43" => "\xEC\xBD\xAF", + "\xB2\x44" => "\xEC\xBD\xB2", + "\xB2\x45" => "\xEC\xBD\xB3", + "\xB2\x46" => "\xEC\xBD\xB5", + "\xB2\x47" => "\xEC\xBD\xB6", + "\xB2\x48" => "\xEC\xBD\xB7", + "\xB2\x49" => "\xEC\xBD\xB9", + "\xB2\x4A" => "\xEC\xBD\xBA", + "\xB2\x4B" => "\xEC\xBD\xBB", + "\xB2\x4C" => "\xEC\xBD\xBC", + "\xB2\x4D" => "\xEC\xBD\xBD", + "\xB2\x4E" => "\xEC\xBD\xBE", + "\xB2\x4F" => "\xEC\xBD\xBF", + "\xB2\x50" => "\xEC\xBE\x81", + "\xB2\x51" => "\xEC\xBE\x82", + "\xB2\x52" => "\xEC\xBE\x83", + "\xB2\x53" => "\xEC\xBE\x84", + "\xB2\x54" => "\xEC\xBE\x86", + "\xB2\x55" => "\xEC\xBE\x87", + "\xB2\x56" => "\xEC\xBE\x88", + "\xB2\x57" => "\xEC\xBE\x89", + "\xB2\x58" => "\xEC\xBE\x8A", + "\xB2\x59" => "\xEC\xBE\x8B", + "\xB2\x5A" => "\xEC\xBE\x8D", + "\xB2\x61" => "\xEC\xBE\x8E", + "\xB2\x62" => "\xEC\xBE\x8F", + "\xB2\x63" => "\xEC\xBE\x90", + "\xB2\x64" => "\xEC\xBE\x91", + "\xB2\x65" => "\xEC\xBE\x92", + "\xB2\x66" => "\xEC\xBE\x93", + "\xB2\x67" => "\xEC\xBE\x94", + "\xB2\x68" => "\xEC\xBE\x95", + "\xB2\x69" => "\xEC\xBE\x96", + "\xB2\x6A" => "\xEC\xBE\x97", + "\xB2\x6B" => "\xEC\xBE\x98", + "\xB2\x6C" => "\xEC\xBE\x99", + "\xB2\x6D" => "\xEC\xBE\x9A", + "\xB2\x6E" => "\xEC\xBE\x9B", + "\xB2\x6F" => "\xEC\xBE\x9C", + "\xB2\x70" => "\xEC\xBE\x9D", + "\xB2\x71" => "\xEC\xBE\x9E", + "\xB2\x72" => "\xEC\xBE\x9F", + "\xB2\x73" => "\xEC\xBE\xA0", + "\xB2\x74" => "\xEC\xBE\xA2", + "\xB2\x75" => "\xEC\xBE\xA3", + "\xB2\x76" => "\xEC\xBE\xA4", + "\xB2\x77" => "\xEC\xBE\xA5", + "\xB2\x78" => "\xEC\xBE\xA6", + "\xB2\x79" => "\xEC\xBE\xA7", + "\xB2\x7A" => "\xEC\xBE\xA9", + "\xB2\x81" => "\xEC\xBE\xAA", + "\xB2\x82" => "\xEC\xBE\xAB", + "\xB2\x83" => "\xEC\xBE\xAC", + "\xB2\x84" => "\xEC\xBE\xAD", + "\xB2\x85" => "\xEC\xBE\xAE", + "\xB2\x86" => "\xEC\xBE\xAF", + "\xB2\x87" => "\xEC\xBE\xB1", + "\xB2\x88" => "\xEC\xBE\xB2", + "\xB2\x89" => "\xEC\xBE\xB3", + "\xB2\x8A" => "\xEC\xBE\xB4", + "\xB2\x8B" => "\xEC\xBE\xB5", + "\xB2\x8C" => "\xEC\xBE\xB6", + "\xB2\x8D" => "\xEC\xBE\xB7", + "\xB2\x8E" => "\xEC\xBE\xB8", + "\xB2\x8F" => "\xEC\xBE\xB9", + "\xB2\x90" => "\xEC\xBE\xBA", + "\xB2\x91" => "\xEC\xBE\xBB", + "\xB2\x92" => "\xEC\xBE\xBC", + "\xB2\x93" => "\xEC\xBE\xBD", + "\xB2\x94" => "\xEC\xBE\xBE", + "\xB2\x95" => "\xEC\xBE\xBF", + "\xB2\x96" => "\xEC\xBF\x80", + "\xB2\x97" => "\xEC\xBF\x81", + "\xB2\x98" => "\xEC\xBF\x82", + "\xB2\x99" => "\xEC\xBF\x83", + "\xB2\x9A" => "\xEC\xBF\x85", + "\xB2\x9B" => "\xEC\xBF\x86", + "\xB2\x9C" => "\xEC\xBF\x87", + "\xB2\x9D" => "\xEC\xBF\x88", + "\xB2\x9E" => "\xEC\xBF\x89", + "\xB2\x9F" => "\xEC\xBF\x8A", + "\xB2\xA0" => "\xEC\xBF\x8B", + "\xB2\xA1" => "\xEA\xB9\xB9", + "\xB2\xA2" => "\xEA\xB9\xBB", + "\xB2\xA3" => "\xEA\xB9\xBC", + "\xB2\xA4" => "\xEA\xB9\xBD", + "\xB2\xA5" => "\xEA\xBA\x84", + "\xB2\xA6" => "\xEA\xBA\x85", + "\xB2\xA7" => "\xEA\xBA\x8C", + "\xB2\xA8" => "\xEA\xBA\xBC", + "\xB2\xA9" => "\xEA\xBA\xBD", + "\xB2\xAA" => "\xEA\xBA\xBE", + "\xB2\xAB" => "\xEA\xBB\x80", + "\xB2\xAC" => "\xEA\xBB\x84", + "\xB2\xAD" => "\xEA\xBB\x8C", + "\xB2\xAE" => "\xEA\xBB\x8D", + "\xB2\xAF" => "\xEA\xBB\x8F", + "\xB2\xB0" => "\xEA\xBB\x90", + "\xB2\xB1" => "\xEA\xBB\x91", + "\xB2\xB2" => "\xEA\xBB\x98", + "\xB2\xB3" => "\xEA\xBB\x99", + "\xB2\xB4" => "\xEA\xBB\x9C", + "\xB2\xB5" => "\xEA\xBB\xA8", + "\xB2\xB6" => "\xEA\xBB\xAB", + "\xB2\xB7" => "\xEA\xBB\xAD", + "\xB2\xB8" => "\xEA\xBB\xB4", + "\xB2\xB9" => "\xEA\xBB\xB8", + "\xB2\xBA" => "\xEA\xBB\xBC", + "\xB2\xBB" => "\xEA\xBC\x87", + "\xB2\xBC" => "\xEA\xBC\x88", + "\xB2\xBD" => "\xEA\xBC\x8D", + "\xB2\xBE" => "\xEA\xBC\x90", + "\xB2\xBF" => "\xEA\xBC\xAC", + "\xB2\xC0" => "\xEA\xBC\xAD", + "\xB2\xC1" => "\xEA\xBC\xB0", + "\xB2\xC2" => "\xEA\xBC\xB2", + "\xB2\xC3" => "\xEA\xBC\xB4", + "\xB2\xC4" => "\xEA\xBC\xBC", + "\xB2\xC5" => "\xEA\xBC\xBD", + "\xB2\xC6" => "\xEA\xBC\xBF", + "\xB2\xC7" => "\xEA\xBD\x81", + "\xB2\xC8" => "\xEA\xBD\x82", + "\xB2\xC9" => "\xEA\xBD\x83", + "\xB2\xCA" => "\xEA\xBD\x88", + "\xB2\xCB" => "\xEA\xBD\x89", + "\xB2\xCC" => "\xEA\xBD\x90", + "\xB2\xCD" => "\xEA\xBD\x9C", + "\xB2\xCE" => "\xEA\xBD\x9D", + "\xB2\xCF" => "\xEA\xBD\xA4", + "\xB2\xD0" => "\xEA\xBD\xA5", + "\xB2\xD1" => "\xEA\xBD\xB9", + "\xB2\xD2" => "\xEA\xBE\x80", + "\xB2\xD3" => "\xEA\xBE\x84", + "\xB2\xD4" => "\xEA\xBE\x88", + "\xB2\xD5" => "\xEA\xBE\x90", + "\xB2\xD6" => "\xEA\xBE\x91", + "\xB2\xD7" => "\xEA\xBE\x95", + "\xB2\xD8" => "\xEA\xBE\x9C", + "\xB2\xD9" => "\xEA\xBE\xB8", + "\xB2\xDA" => "\xEA\xBE\xB9", + "\xB2\xDB" => "\xEA\xBE\xBC", + "\xB2\xDC" => "\xEA\xBF\x80", + "\xB2\xDD" => "\xEA\xBF\x87", + "\xB2\xDE" => "\xEA\xBF\x88", + "\xB2\xDF" => "\xEA\xBF\x89", + "\xB2\xE0" => "\xEA\xBF\x8B", + "\xB2\xE1" => "\xEA\xBF\x8D", + "\xB2\xE2" => "\xEA\xBF\x8E", + "\xB2\xE3" => "\xEA\xBF\x94", + "\xB2\xE4" => "\xEA\xBF\x9C", + "\xB2\xE5" => "\xEA\xBF\xA8", + "\xB2\xE6" => "\xEA\xBF\xA9", + "\xB2\xE7" => "\xEA\xBF\xB0", + "\xB2\xE8" => "\xEA\xBF\xB1", + "\xB2\xE9" => "\xEA\xBF\xB4", + "\xB2\xEA" => "\xEA\xBF\xB8", + "\xB2\xEB" => "\xEB\x80\x80", + "\xB2\xEC" => "\xEB\x80\x81", + "\xB2\xED" => "\xEB\x80\x84", + "\xB2\xEE" => "\xEB\x80\x8C", + "\xB2\xEF" => "\xEB\x80\x90", + "\xB2\xF0" => "\xEB\x80\x94", + "\xB2\xF1" => "\xEB\x80\x9C", + "\xB2\xF2" => "\xEB\x80\x9D", + "\xB2\xF3" => "\xEB\x80\xA8", + "\xB2\xF4" => "\xEB\x81\x84", + "\xB2\xF5" => "\xEB\x81\x85", + "\xB2\xF6" => "\xEB\x81\x88", + "\xB2\xF7" => "\xEB\x81\x8A", + "\xB2\xF8" => "\xEB\x81\x8C", + "\xB2\xF9" => "\xEB\x81\x8E", + "\xB2\xFA" => "\xEB\x81\x93", + "\xB2\xFB" => "\xEB\x81\x94", + "\xB2\xFC" => "\xEB\x81\x95", + "\xB2\xFD" => "\xEB\x81\x97", + "\xB2\xFE" => "\xEB\x81\x99", + "\xB3\x41" => "\xEC\xBF\x8C", + "\xB3\x42" => "\xEC\xBF\x8D", + "\xB3\x43" => "\xEC\xBF\x8E", + "\xB3\x44" => "\xEC\xBF\x8F", + "\xB3\x45" => "\xEC\xBF\x90", + "\xB3\x46" => "\xEC\xBF\x91", + "\xB3\x47" => "\xEC\xBF\x92", + "\xB3\x48" => "\xEC\xBF\x93", + "\xB3\x49" => "\xEC\xBF\x94", + "\xB3\x4A" => "\xEC\xBF\x95", + "\xB3\x4B" => "\xEC\xBF\x96", + "\xB3\x4C" => "\xEC\xBF\x97", + "\xB3\x4D" => "\xEC\xBF\x98", + "\xB3\x4E" => "\xEC\xBF\x99", + "\xB3\x4F" => "\xEC\xBF\x9A", + "\xB3\x50" => "\xEC\xBF\x9B", + "\xB3\x51" => "\xEC\xBF\x9C", + "\xB3\x52" => "\xEC\xBF\x9D", + "\xB3\x53" => "\xEC\xBF\x9E", + "\xB3\x54" => "\xEC\xBF\x9F", + "\xB3\x55" => "\xEC\xBF\xA2", + "\xB3\x56" => "\xEC\xBF\xA3", + "\xB3\x57" => "\xEC\xBF\xA5", + "\xB3\x58" => "\xEC\xBF\xA6", + "\xB3\x59" => "\xEC\xBF\xA7", + "\xB3\x5A" => "\xEC\xBF\xA9", + "\xB3\x61" => "\xEC\xBF\xAA", + "\xB3\x62" => "\xEC\xBF\xAB", + "\xB3\x63" => "\xEC\xBF\xAC", + "\xB3\x64" => "\xEC\xBF\xAD", + "\xB3\x65" => "\xEC\xBF\xAE", + "\xB3\x66" => "\xEC\xBF\xAF", + "\xB3\x67" => "\xEC\xBF\xB2", + "\xB3\x68" => "\xEC\xBF\xB4", + "\xB3\x69" => "\xEC\xBF\xB6", + "\xB3\x6A" => "\xEC\xBF\xB7", + "\xB3\x6B" => "\xEC\xBF\xB8", + "\xB3\x6C" => "\xEC\xBF\xB9", + "\xB3\x6D" => "\xEC\xBF\xBA", + "\xB3\x6E" => "\xEC\xBF\xBB", + "\xB3\x6F" => "\xEC\xBF\xBD", + "\xB3\x70" => "\xEC\xBF\xBE", + "\xB3\x71" => "\xEC\xBF\xBF", + "\xB3\x72" => "\xED\x80\x81", + "\xB3\x73" => "\xED\x80\x82", + "\xB3\x74" => "\xED\x80\x83", + "\xB3\x75" => "\xED\x80\x85", + "\xB3\x76" => "\xED\x80\x86", + "\xB3\x77" => "\xED\x80\x87", + "\xB3\x78" => "\xED\x80\x88", + "\xB3\x79" => "\xED\x80\x89", + "\xB3\x7A" => "\xED\x80\x8A", + "\xB3\x81" => "\xED\x80\x8B", + "\xB3\x82" => "\xED\x80\x8C", + "\xB3\x83" => "\xED\x80\x8D", + "\xB3\x84" => "\xED\x80\x8E", + "\xB3\x85" => "\xED\x80\x8F", + "\xB3\x86" => "\xED\x80\x90", + "\xB3\x87" => "\xED\x80\x92", + "\xB3\x88" => "\xED\x80\x93", + "\xB3\x89" => "\xED\x80\x94", + "\xB3\x8A" => "\xED\x80\x95", + "\xB3\x8B" => "\xED\x80\x96", + "\xB3\x8C" => "\xED\x80\x97", + "\xB3\x8D" => "\xED\x80\x99", + "\xB3\x8E" => "\xED\x80\x9A", + "\xB3\x8F" => "\xED\x80\x9B", + "\xB3\x90" => "\xED\x80\x9C", + "\xB3\x91" => "\xED\x80\x9D", + "\xB3\x92" => "\xED\x80\x9E", + "\xB3\x93" => "\xED\x80\x9F", + "\xB3\x94" => "\xED\x80\xA0", + "\xB3\x95" => "\xED\x80\xA1", + "\xB3\x96" => "\xED\x80\xA2", + "\xB3\x97" => "\xED\x80\xA3", + "\xB3\x98" => "\xED\x80\xA4", + "\xB3\x99" => "\xED\x80\xA5", + "\xB3\x9A" => "\xED\x80\xA6", + "\xB3\x9B" => "\xED\x80\xA7", + "\xB3\x9C" => "\xED\x80\xA8", + "\xB3\x9D" => "\xED\x80\xA9", + "\xB3\x9E" => "\xED\x80\xAA", + "\xB3\x9F" => "\xED\x80\xAB", + "\xB3\xA0" => "\xED\x80\xAC", + "\xB3\xA1" => "\xEB\x81\x9D", + "\xB3\xA2" => "\xEB\x81\xBC", + "\xB3\xA3" => "\xEB\x81\xBD", + "\xB3\xA4" => "\xEB\x82\x80", + "\xB3\xA5" => "\xEB\x82\x84", + "\xB3\xA6" => "\xEB\x82\x8C", + "\xB3\xA7" => "\xEB\x82\x8D", + "\xB3\xA8" => "\xEB\x82\x8F", + "\xB3\xA9" => "\xEB\x82\x91", + "\xB3\xAA" => "\xEB\x82\x98", + "\xB3\xAB" => "\xEB\x82\x99", + "\xB3\xAC" => "\xEB\x82\x9A", + "\xB3\xAD" => "\xEB\x82\x9C", + "\xB3\xAE" => "\xEB\x82\x9F", + "\xB3\xAF" => "\xEB\x82\xA0", + "\xB3\xB0" => "\xEB\x82\xA1", + "\xB3\xB1" => "\xEB\x82\xA2", + "\xB3\xB2" => "\xEB\x82\xA8", + "\xB3\xB3" => "\xEB\x82\xA9", + "\xB3\xB4" => "\xEB\x82\xAB", + "\xB3\xB5" => "\xEB\x82\xAC", + "\xB3\xB6" => "\xEB\x82\xAD", + "\xB3\xB7" => "\xEB\x82\xAE", + "\xB3\xB8" => "\xEB\x82\xAF", + "\xB3\xB9" => "\xEB\x82\xB1", + "\xB3\xBA" => "\xEB\x82\xB3", + "\xB3\xBB" => "\xEB\x82\xB4", + "\xB3\xBC" => "\xEB\x82\xB5", + "\xB3\xBD" => "\xEB\x82\xB8", + "\xB3\xBE" => "\xEB\x82\xBC", + "\xB3\xBF" => "\xEB\x83\x84", + "\xB3\xC0" => "\xEB\x83\x85", + "\xB3\xC1" => "\xEB\x83\x87", + "\xB3\xC2" => "\xEB\x83\x88", + "\xB3\xC3" => "\xEB\x83\x89", + "\xB3\xC4" => "\xEB\x83\x90", + "\xB3\xC5" => "\xEB\x83\x91", + "\xB3\xC6" => "\xEB\x83\x94", + "\xB3\xC7" => "\xEB\x83\x98", + "\xB3\xC8" => "\xEB\x83\xA0", + "\xB3\xC9" => "\xEB\x83\xA5", + "\xB3\xCA" => "\xEB\x84\x88", + "\xB3\xCB" => "\xEB\x84\x89", + "\xB3\xCC" => "\xEB\x84\x8B", + "\xB3\xCD" => "\xEB\x84\x8C", + "\xB3\xCE" => "\xEB\x84\x90", + "\xB3\xCF" => "\xEB\x84\x92", + "\xB3\xD0" => "\xEB\x84\x93", + "\xB3\xD1" => "\xEB\x84\x98", + "\xB3\xD2" => "\xEB\x84\x99", + "\xB3\xD3" => "\xEB\x84\x9B", + "\xB3\xD4" => "\xEB\x84\x9C", + "\xB3\xD5" => "\xEB\x84\x9D", + "\xB3\xD6" => "\xEB\x84\xA3", + "\xB3\xD7" => "\xEB\x84\xA4", + "\xB3\xD8" => "\xEB\x84\xA5", + "\xB3\xD9" => "\xEB\x84\xA8", + "\xB3\xDA" => "\xEB\x84\xAC", + "\xB3\xDB" => "\xEB\x84\xB4", + "\xB3\xDC" => "\xEB\x84\xB5", + "\xB3\xDD" => "\xEB\x84\xB7", + "\xB3\xDE" => "\xEB\x84\xB8", + "\xB3\xDF" => "\xEB\x84\xB9", + "\xB3\xE0" => "\xEB\x85\x80", + "\xB3\xE1" => "\xEB\x85\x81", + "\xB3\xE2" => "\xEB\x85\x84", + "\xB3\xE3" => "\xEB\x85\x88", + "\xB3\xE4" => "\xEB\x85\x90", + "\xB3\xE5" => "\xEB\x85\x91", + "\xB3\xE6" => "\xEB\x85\x94", + "\xB3\xE7" => "\xEB\x85\x95", + "\xB3\xE8" => "\xEB\x85\x98", + "\xB3\xE9" => "\xEB\x85\x9C", + "\xB3\xEA" => "\xEB\x85\xA0", + "\xB3\xEB" => "\xEB\x85\xB8", + "\xB3\xEC" => "\xEB\x85\xB9", + "\xB3\xED" => "\xEB\x85\xBC", + "\xB3\xEE" => "\xEB\x86\x80", + "\xB3\xEF" => "\xEB\x86\x82", + "\xB3\xF0" => "\xEB\x86\x88", + "\xB3\xF1" => "\xEB\x86\x89", + "\xB3\xF2" => "\xEB\x86\x8B", + "\xB3\xF3" => "\xEB\x86\x8D", + "\xB3\xF4" => "\xEB\x86\x92", + "\xB3\xF5" => "\xEB\x86\x93", + "\xB3\xF6" => "\xEB\x86\x94", + "\xB3\xF7" => "\xEB\x86\x98", + "\xB3\xF8" => "\xEB\x86\x9C", + "\xB3\xF9" => "\xEB\x86\xA8", + "\xB3\xFA" => "\xEB\x87\x8C", + "\xB3\xFB" => "\xEB\x87\x90", + "\xB3\xFC" => "\xEB\x87\x94", + "\xB3\xFD" => "\xEB\x87\x9C", + "\xB3\xFE" => "\xEB\x87\x9D", + "\xB4\x41" => "\xED\x80\xAE", + "\xB4\x42" => "\xED\x80\xAF", + "\xB4\x43" => "\xED\x80\xB0", + "\xB4\x44" => "\xED\x80\xB1", + "\xB4\x45" => "\xED\x80\xB2", + "\xB4\x46" => "\xED\x80\xB3", + "\xB4\x47" => "\xED\x80\xB6", + "\xB4\x48" => "\xED\x80\xB7", + "\xB4\x49" => "\xED\x80\xB9", + "\xB4\x4A" => "\xED\x80\xBA", + "\xB4\x4B" => "\xED\x80\xBB", + "\xB4\x4C" => "\xED\x80\xBD", + "\xB4\x4D" => "\xED\x80\xBE", + "\xB4\x4E" => "\xED\x80\xBF", + "\xB4\x4F" => "\xED\x81\x80", + "\xB4\x50" => "\xED\x81\x81", + "\xB4\x51" => "\xED\x81\x82", + "\xB4\x52" => "\xED\x81\x83", + "\xB4\x53" => "\xED\x81\x86", + "\xB4\x54" => "\xED\x81\x88", + "\xB4\x55" => "\xED\x81\x8A", + "\xB4\x56" => "\xED\x81\x8B", + "\xB4\x57" => "\xED\x81\x8C", + "\xB4\x58" => "\xED\x81\x8D", + "\xB4\x59" => "\xED\x81\x8E", + "\xB4\x5A" => "\xED\x81\x8F", + "\xB4\x61" => "\xED\x81\x91", + "\xB4\x62" => "\xED\x81\x92", + "\xB4\x63" => "\xED\x81\x93", + "\xB4\x64" => "\xED\x81\x95", + "\xB4\x65" => "\xED\x81\x96", + "\xB4\x66" => "\xED\x81\x97", + "\xB4\x67" => "\xED\x81\x99", + "\xB4\x68" => "\xED\x81\x9A", + "\xB4\x69" => "\xED\x81\x9B", + "\xB4\x6A" => "\xED\x81\x9C", + "\xB4\x6B" => "\xED\x81\x9D", + "\xB4\x6C" => "\xED\x81\x9E", + "\xB4\x6D" => "\xED\x81\x9F", + "\xB4\x6E" => "\xED\x81\xA1", + "\xB4\x6F" => "\xED\x81\xA2", + "\xB4\x70" => "\xED\x81\xA3", + "\xB4\x71" => "\xED\x81\xA4", + "\xB4\x72" => "\xED\x81\xA5", + "\xB4\x73" => "\xED\x81\xA6", + "\xB4\x74" => "\xED\x81\xA7", + "\xB4\x75" => "\xED\x81\xA8", + "\xB4\x76" => "\xED\x81\xA9", + "\xB4\x77" => "\xED\x81\xAA", + "\xB4\x78" => "\xED\x81\xAB", + "\xB4\x79" => "\xED\x81\xAE", + "\xB4\x7A" => "\xED\x81\xAF", + "\xB4\x81" => "\xED\x81\xB1", + "\xB4\x82" => "\xED\x81\xB2", + "\xB4\x83" => "\xED\x81\xB3", + "\xB4\x84" => "\xED\x81\xB5", + "\xB4\x85" => "\xED\x81\xB6", + "\xB4\x86" => "\xED\x81\xB7", + "\xB4\x87" => "\xED\x81\xB8", + "\xB4\x88" => "\xED\x81\xB9", + "\xB4\x89" => "\xED\x81\xBA", + "\xB4\x8A" => "\xED\x81\xBB", + "\xB4\x8B" => "\xED\x81\xBE", + "\xB4\x8C" => "\xED\x81\xBF", + "\xB4\x8D" => "\xED\x82\x80", + "\xB4\x8E" => "\xED\x82\x82", + "\xB4\x8F" => "\xED\x82\x83", + "\xB4\x90" => "\xED\x82\x84", + "\xB4\x91" => "\xED\x82\x85", + "\xB4\x92" => "\xED\x82\x86", + "\xB4\x93" => "\xED\x82\x87", + "\xB4\x94" => "\xED\x82\x88", + "\xB4\x95" => "\xED\x82\x89", + "\xB4\x96" => "\xED\x82\x8A", + "\xB4\x97" => "\xED\x82\x8B", + "\xB4\x98" => "\xED\x82\x8C", + "\xB4\x99" => "\xED\x82\x8D", + "\xB4\x9A" => "\xED\x82\x8E", + "\xB4\x9B" => "\xED\x82\x8F", + "\xB4\x9C" => "\xED\x82\x90", + "\xB4\x9D" => "\xED\x82\x91", + "\xB4\x9E" => "\xED\x82\x92", + "\xB4\x9F" => "\xED\x82\x93", + "\xB4\xA0" => "\xED\x82\x94", + "\xB4\xA1" => "\xEB\x87\x9F", + "\xB4\xA2" => "\xEB\x87\xA8", + "\xB4\xA3" => "\xEB\x87\xA9", + "\xB4\xA4" => "\xEB\x87\xAC", + "\xB4\xA5" => "\xEB\x87\xB0", + "\xB4\xA6" => "\xEB\x87\xB9", + "\xB4\xA7" => "\xEB\x87\xBB", + "\xB4\xA8" => "\xEB\x87\xBD", + "\xB4\xA9" => "\xEB\x88\x84", + "\xB4\xAA" => "\xEB\x88\x85", + "\xB4\xAB" => "\xEB\x88\x88", + "\xB4\xAC" => "\xEB\x88\x8B", + "\xB4\xAD" => "\xEB\x88\x8C", + "\xB4\xAE" => "\xEB\x88\x94", + "\xB4\xAF" => "\xEB\x88\x95", + "\xB4\xB0" => "\xEB\x88\x97", + "\xB4\xB1" => "\xEB\x88\x99", + "\xB4\xB2" => "\xEB\x88\xA0", + "\xB4\xB3" => "\xEB\x88\xB4", + "\xB4\xB4" => "\xEB\x88\xBC", + "\xB4\xB5" => "\xEB\x89\x98", + "\xB4\xB6" => "\xEB\x89\x9C", + "\xB4\xB7" => "\xEB\x89\xA0", + "\xB4\xB8" => "\xEB\x89\xA8", + "\xB4\xB9" => "\xEB\x89\xA9", + "\xB4\xBA" => "\xEB\x89\xB4", + "\xB4\xBB" => "\xEB\x89\xB5", + "\xB4\xBC" => "\xEB\x89\xBC", + "\xB4\xBD" => "\xEB\x8A\x84", + "\xB4\xBE" => "\xEB\x8A\x85", + "\xB4\xBF" => "\xEB\x8A\x89", + "\xB4\xC0" => "\xEB\x8A\x90", + "\xB4\xC1" => "\xEB\x8A\x91", + "\xB4\xC2" => "\xEB\x8A\x94", + "\xB4\xC3" => "\xEB\x8A\x98", + "\xB4\xC4" => "\xEB\x8A\x99", + "\xB4\xC5" => "\xEB\x8A\x9A", + "\xB4\xC6" => "\xEB\x8A\xA0", + "\xB4\xC7" => "\xEB\x8A\xA1", + "\xB4\xC8" => "\xEB\x8A\xA3", + "\xB4\xC9" => "\xEB\x8A\xA5", + "\xB4\xCA" => "\xEB\x8A\xA6", + "\xB4\xCB" => "\xEB\x8A\xAA", + "\xB4\xCC" => "\xEB\x8A\xAC", + "\xB4\xCD" => "\xEB\x8A\xB0", + "\xB4\xCE" => "\xEB\x8A\xB4", + "\xB4\xCF" => "\xEB\x8B\x88", + "\xB4\xD0" => "\xEB\x8B\x89", + "\xB4\xD1" => "\xEB\x8B\x8C", + "\xB4\xD2" => "\xEB\x8B\x90", + "\xB4\xD3" => "\xEB\x8B\x92", + "\xB4\xD4" => "\xEB\x8B\x98", + "\xB4\xD5" => "\xEB\x8B\x99", + "\xB4\xD6" => "\xEB\x8B\x9B", + "\xB4\xD7" => "\xEB\x8B\x9D", + "\xB4\xD8" => "\xEB\x8B\xA2", + "\xB4\xD9" => "\xEB\x8B\xA4", + "\xB4\xDA" => "\xEB\x8B\xA5", + "\xB4\xDB" => "\xEB\x8B\xA6", + "\xB4\xDC" => "\xEB\x8B\xA8", + "\xB4\xDD" => "\xEB\x8B\xAB", + "\xB4\xDE" => "\xEB\x8B\xAC", + "\xB4\xDF" => "\xEB\x8B\xAD", + "\xB4\xE0" => "\xEB\x8B\xAE", + "\xB4\xE1" => "\xEB\x8B\xAF", + "\xB4\xE2" => "\xEB\x8B\xB3", + "\xB4\xE3" => "\xEB\x8B\xB4", + "\xB4\xE4" => "\xEB\x8B\xB5", + "\xB4\xE5" => "\xEB\x8B\xB7", + "\xB4\xE6" => "\xEB\x8B\xB8", + "\xB4\xE7" => "\xEB\x8B\xB9", + "\xB4\xE8" => "\xEB\x8B\xBA", + "\xB4\xE9" => "\xEB\x8B\xBB", + "\xB4\xEA" => "\xEB\x8B\xBF", + "\xB4\xEB" => "\xEB\x8C\x80", + "\xB4\xEC" => "\xEB\x8C\x81", + "\xB4\xED" => "\xEB\x8C\x84", + "\xB4\xEE" => "\xEB\x8C\x88", + "\xB4\xEF" => "\xEB\x8C\x90", + "\xB4\xF0" => "\xEB\x8C\x91", + "\xB4\xF1" => "\xEB\x8C\x93", + "\xB4\xF2" => "\xEB\x8C\x94", + "\xB4\xF3" => "\xEB\x8C\x95", + "\xB4\xF4" => "\xEB\x8C\x9C", + "\xB4\xF5" => "\xEB\x8D\x94", + "\xB4\xF6" => "\xEB\x8D\x95", + "\xB4\xF7" => "\xEB\x8D\x96", + "\xB4\xF8" => "\xEB\x8D\x98", + "\xB4\xF9" => "\xEB\x8D\x9B", + "\xB4\xFA" => "\xEB\x8D\x9C", + "\xB4\xFB" => "\xEB\x8D\x9E", + "\xB4\xFC" => "\xEB\x8D\x9F", + "\xB4\xFD" => "\xEB\x8D\xA4", + "\xB4\xFE" => "\xEB\x8D\xA5", + "\xB5\x41" => "\xED\x82\x95", + "\xB5\x42" => "\xED\x82\x96", + "\xB5\x43" => "\xED\x82\x97", + "\xB5\x44" => "\xED\x82\x98", + "\xB5\x45" => "\xED\x82\x99", + "\xB5\x46" => "\xED\x82\x9A", + "\xB5\x47" => "\xED\x82\x9B", + "\xB5\x48" => "\xED\x82\x9C", + "\xB5\x49" => "\xED\x82\x9D", + "\xB5\x4A" => "\xED\x82\x9E", + "\xB5\x4B" => "\xED\x82\x9F", + "\xB5\x4C" => "\xED\x82\xA0", + "\xB5\x4D" => "\xED\x82\xA1", + "\xB5\x4E" => "\xED\x82\xA2", + "\xB5\x4F" => "\xED\x82\xA3", + "\xB5\x50" => "\xED\x82\xA6", + "\xB5\x51" => "\xED\x82\xA7", + "\xB5\x52" => "\xED\x82\xA9", + "\xB5\x53" => "\xED\x82\xAA", + "\xB5\x54" => "\xED\x82\xAB", + "\xB5\x55" => "\xED\x82\xAD", + "\xB5\x56" => "\xED\x82\xAE", + "\xB5\x57" => "\xED\x82\xAF", + "\xB5\x58" => "\xED\x82\xB0", + "\xB5\x59" => "\xED\x82\xB1", + "\xB5\x5A" => "\xED\x82\xB2", + "\xB5\x61" => "\xED\x82\xB3", + "\xB5\x62" => "\xED\x82\xB6", + "\xB5\x63" => "\xED\x82\xB8", + "\xB5\x64" => "\xED\x82\xBA", + "\xB5\x65" => "\xED\x82\xBB", + "\xB5\x66" => "\xED\x82\xBC", + "\xB5\x67" => "\xED\x82\xBD", + "\xB5\x68" => "\xED\x82\xBE", + "\xB5\x69" => "\xED\x82\xBF", + "\xB5\x6A" => "\xED\x83\x82", + "\xB5\x6B" => "\xED\x83\x83", + "\xB5\x6C" => "\xED\x83\x85", + "\xB5\x6D" => "\xED\x83\x86", + "\xB5\x6E" => "\xED\x83\x87", + "\xB5\x6F" => "\xED\x83\x8A", + "\xB5\x70" => "\xED\x83\x8B", + "\xB5\x71" => "\xED\x83\x8C", + "\xB5\x72" => "\xED\x83\x8D", + "\xB5\x73" => "\xED\x83\x8E", + "\xB5\x74" => "\xED\x83\x8F", + "\xB5\x75" => "\xED\x83\x92", + "\xB5\x76" => "\xED\x83\x96", + "\xB5\x77" => "\xED\x83\x97", + "\xB5\x78" => "\xED\x83\x98", + "\xB5\x79" => "\xED\x83\x99", + "\xB5\x7A" => "\xED\x83\x9A", + "\xB5\x81" => "\xED\x83\x9B", + "\xB5\x82" => "\xED\x83\x9E", + "\xB5\x83" => "\xED\x83\x9F", + "\xB5\x84" => "\xED\x83\xA1", + "\xB5\x85" => "\xED\x83\xA2", + "\xB5\x86" => "\xED\x83\xA3", + "\xB5\x87" => "\xED\x83\xA5", + "\xB5\x88" => "\xED\x83\xA6", + "\xB5\x89" => "\xED\x83\xA7", + "\xB5\x8A" => "\xED\x83\xA8", + "\xB5\x8B" => "\xED\x83\xA9", + "\xB5\x8C" => "\xED\x83\xAA", + "\xB5\x8D" => "\xED\x83\xAB", + "\xB5\x8E" => "\xED\x83\xAE", + "\xB5\x8F" => "\xED\x83\xB2", + "\xB5\x90" => "\xED\x83\xB3", + "\xB5\x91" => "\xED\x83\xB4", + "\xB5\x92" => "\xED\x83\xB5", + "\xB5\x93" => "\xED\x83\xB6", + "\xB5\x94" => "\xED\x83\xB7", + "\xB5\x95" => "\xED\x83\xB9", + "\xB5\x96" => "\xED\x83\xBA", + "\xB5\x97" => "\xED\x83\xBB", + "\xB5\x98" => "\xED\x83\xBC", + "\xB5\x99" => "\xED\x83\xBD", + "\xB5\x9A" => "\xED\x83\xBE", + "\xB5\x9B" => "\xED\x83\xBF", + "\xB5\x9C" => "\xED\x84\x80", + "\xB5\x9D" => "\xED\x84\x81", + "\xB5\x9E" => "\xED\x84\x82", + "\xB5\x9F" => "\xED\x84\x83", + "\xB5\xA0" => "\xED\x84\x84", + "\xB5\xA1" => "\xEB\x8D\xA7", + "\xB5\xA2" => "\xEB\x8D\xA9", + "\xB5\xA3" => "\xEB\x8D\xAB", + "\xB5\xA4" => "\xEB\x8D\xAE", + "\xB5\xA5" => "\xEB\x8D\xB0", + "\xB5\xA6" => "\xEB\x8D\xB1", + "\xB5\xA7" => "\xEB\x8D\xB4", + "\xB5\xA8" => "\xEB\x8D\xB8", + "\xB5\xA9" => "\xEB\x8E\x80", + "\xB5\xAA" => "\xEB\x8E\x81", + "\xB5\xAB" => "\xEB\x8E\x83", + "\xB5\xAC" => "\xEB\x8E\x84", + "\xB5\xAD" => "\xEB\x8E\x85", + "\xB5\xAE" => "\xEB\x8E\x8C", + "\xB5\xAF" => "\xEB\x8E\x90", + "\xB5\xB0" => "\xEB\x8E\x94", + "\xB5\xB1" => "\xEB\x8E\xA0", + "\xB5\xB2" => "\xEB\x8E\xA1", + "\xB5\xB3" => "\xEB\x8E\xA8", + "\xB5\xB4" => "\xEB\x8E\xAC", + "\xB5\xB5" => "\xEB\x8F\x84", + "\xB5\xB6" => "\xEB\x8F\x85", + "\xB5\xB7" => "\xEB\x8F\x88", + "\xB5\xB8" => "\xEB\x8F\x8B", + "\xB5\xB9" => "\xEB\x8F\x8C", + "\xB5\xBA" => "\xEB\x8F\x8E", + "\xB5\xBB" => "\xEB\x8F\x90", + "\xB5\xBC" => "\xEB\x8F\x94", + "\xB5\xBD" => "\xEB\x8F\x95", + "\xB5\xBE" => "\xEB\x8F\x97", + "\xB5\xBF" => "\xEB\x8F\x99", + "\xB5\xC0" => "\xEB\x8F\x9B", + "\xB5\xC1" => "\xEB\x8F\x9D", + "\xB5\xC2" => "\xEB\x8F\xA0", + "\xB5\xC3" => "\xEB\x8F\xA4", + "\xB5\xC4" => "\xEB\x8F\xA8", + "\xB5\xC5" => "\xEB\x8F\xBC", + "\xB5\xC6" => "\xEB\x90\x90", + "\xB5\xC7" => "\xEB\x90\x98", + "\xB5\xC8" => "\xEB\x90\x9C", + "\xB5\xC9" => "\xEB\x90\xA0", + "\xB5\xCA" => "\xEB\x90\xA8", + "\xB5\xCB" => "\xEB\x90\xA9", + "\xB5\xCC" => "\xEB\x90\xAB", + "\xB5\xCD" => "\xEB\x90\xB4", + "\xB5\xCE" => "\xEB\x91\x90", + "\xB5\xCF" => "\xEB\x91\x91", + "\xB5\xD0" => "\xEB\x91\x94", + "\xB5\xD1" => "\xEB\x91\x98", + "\xB5\xD2" => "\xEB\x91\xA0", + "\xB5\xD3" => "\xEB\x91\xA1", + "\xB5\xD4" => "\xEB\x91\xA3", + "\xB5\xD5" => "\xEB\x91\xA5", + "\xB5\xD6" => "\xEB\x91\xAC", + "\xB5\xD7" => "\xEB\x92\x80", + "\xB5\xD8" => "\xEB\x92\x88", + "\xB5\xD9" => "\xEB\x92\x9D", + "\xB5\xDA" => "\xEB\x92\xA4", + "\xB5\xDB" => "\xEB\x92\xA8", + "\xB5\xDC" => "\xEB\x92\xAC", + "\xB5\xDD" => "\xEB\x92\xB5", + "\xB5\xDE" => "\xEB\x92\xB7", + "\xB5\xDF" => "\xEB\x92\xB9", + "\xB5\xE0" => "\xEB\x93\x80", + "\xB5\xE1" => "\xEB\x93\x84", + "\xB5\xE2" => "\xEB\x93\x88", + "\xB5\xE3" => "\xEB\x93\x90", + "\xB5\xE4" => "\xEB\x93\x95", + "\xB5\xE5" => "\xEB\x93\x9C", + "\xB5\xE6" => "\xEB\x93\x9D", + "\xB5\xE7" => "\xEB\x93\xA0", + "\xB5\xE8" => "\xEB\x93\xA3", + "\xB5\xE9" => "\xEB\x93\xA4", + "\xB5\xEA" => "\xEB\x93\xA6", + "\xB5\xEB" => "\xEB\x93\xAC", + "\xB5\xEC" => "\xEB\x93\xAD", + "\xB5\xED" => "\xEB\x93\xAF", + "\xB5\xEE" => "\xEB\x93\xB1", + "\xB5\xEF" => "\xEB\x93\xB8", + "\xB5\xF0" => "\xEB\x94\x94", + "\xB5\xF1" => "\xEB\x94\x95", + "\xB5\xF2" => "\xEB\x94\x98", + "\xB5\xF3" => "\xEB\x94\x9B", + "\xB5\xF4" => "\xEB\x94\x9C", + "\xB5\xF5" => "\xEB\x94\xA4", + "\xB5\xF6" => "\xEB\x94\xA5", + "\xB5\xF7" => "\xEB\x94\xA7", + "\xB5\xF8" => "\xEB\x94\xA8", + "\xB5\xF9" => "\xEB\x94\xA9", + "\xB5\xFA" => "\xEB\x94\xAA", + "\xB5\xFB" => "\xEB\x94\xB0", + "\xB5\xFC" => "\xEB\x94\xB1", + "\xB5\xFD" => "\xEB\x94\xB4", + "\xB5\xFE" => "\xEB\x94\xB8", + "\xB6\x41" => "\xED\x84\x85", + "\xB6\x42" => "\xED\x84\x86", + "\xB6\x43" => "\xED\x84\x87", + "\xB6\x44" => "\xED\x84\x88", + "\xB6\x45" => "\xED\x84\x89", + "\xB6\x46" => "\xED\x84\x8A", + "\xB6\x47" => "\xED\x84\x8B", + "\xB6\x48" => "\xED\x84\x8C", + "\xB6\x49" => "\xED\x84\x8E", + "\xB6\x4A" => "\xED\x84\x8F", + "\xB6\x4B" => "\xED\x84\x90", + "\xB6\x4C" => "\xED\x84\x91", + "\xB6\x4D" => "\xED\x84\x92", + "\xB6\x4E" => "\xED\x84\x93", + "\xB6\x4F" => "\xED\x84\x94", + "\xB6\x50" => "\xED\x84\x95", + "\xB6\x51" => "\xED\x84\x96", + "\xB6\x52" => "\xED\x84\x97", + "\xB6\x53" => "\xED\x84\x98", + "\xB6\x54" => "\xED\x84\x99", + "\xB6\x55" => "\xED\x84\x9A", + "\xB6\x56" => "\xED\x84\x9B", + "\xB6\x57" => "\xED\x84\x9C", + "\xB6\x58" => "\xED\x84\x9D", + "\xB6\x59" => "\xED\x84\x9E", + "\xB6\x5A" => "\xED\x84\x9F", + "\xB6\x61" => "\xED\x84\xA0", + "\xB6\x62" => "\xED\x84\xA1", + "\xB6\x63" => "\xED\x84\xA2", + "\xB6\x64" => "\xED\x84\xA3", + "\xB6\x65" => "\xED\x84\xA4", + "\xB6\x66" => "\xED\x84\xA5", + "\xB6\x67" => "\xED\x84\xA6", + "\xB6\x68" => "\xED\x84\xA7", + "\xB6\x69" => "\xED\x84\xA8", + "\xB6\x6A" => "\xED\x84\xA9", + "\xB6\x6B" => "\xED\x84\xAA", + "\xB6\x6C" => "\xED\x84\xAB", + "\xB6\x6D" => "\xED\x84\xAC", + "\xB6\x6E" => "\xED\x84\xAD", + "\xB6\x6F" => "\xED\x84\xAE", + "\xB6\x70" => "\xED\x84\xAF", + "\xB6\x71" => "\xED\x84\xB2", + "\xB6\x72" => "\xED\x84\xB3", + "\xB6\x73" => "\xED\x84\xB5", + "\xB6\x74" => "\xED\x84\xB6", + "\xB6\x75" => "\xED\x84\xB7", + "\xB6\x76" => "\xED\x84\xB9", + "\xB6\x77" => "\xED\x84\xBB", + "\xB6\x78" => "\xED\x84\xBC", + "\xB6\x79" => "\xED\x84\xBD", + "\xB6\x7A" => "\xED\x84\xBE", + "\xB6\x81" => "\xED\x84\xBF", + "\xB6\x82" => "\xED\x85\x82", + "\xB6\x83" => "\xED\x85\x86", + "\xB6\x84" => "\xED\x85\x87", + "\xB6\x85" => "\xED\x85\x88", + "\xB6\x86" => "\xED\x85\x89", + "\xB6\x87" => "\xED\x85\x8A", + "\xB6\x88" => "\xED\x85\x8B", + "\xB6\x89" => "\xED\x85\x8E", + "\xB6\x8A" => "\xED\x85\x8F", + "\xB6\x8B" => "\xED\x85\x91", + "\xB6\x8C" => "\xED\x85\x92", + "\xB6\x8D" => "\xED\x85\x93", + "\xB6\x8E" => "\xED\x85\x95", + "\xB6\x8F" => "\xED\x85\x96", + "\xB6\x90" => "\xED\x85\x97", + "\xB6\x91" => "\xED\x85\x98", + "\xB6\x92" => "\xED\x85\x99", + "\xB6\x93" => "\xED\x85\x9A", + "\xB6\x94" => "\xED\x85\x9B", + "\xB6\x95" => "\xED\x85\x9E", + "\xB6\x96" => "\xED\x85\xA0", + "\xB6\x97" => "\xED\x85\xA2", + "\xB6\x98" => "\xED\x85\xA3", + "\xB6\x99" => "\xED\x85\xA4", + "\xB6\x9A" => "\xED\x85\xA5", + "\xB6\x9B" => "\xED\x85\xA6", + "\xB6\x9C" => "\xED\x85\xA7", + "\xB6\x9D" => "\xED\x85\xA9", + "\xB6\x9E" => "\xED\x85\xAA", + "\xB6\x9F" => "\xED\x85\xAB", + "\xB6\xA0" => "\xED\x85\xAD", + "\xB6\xA1" => "\xEB\x95\x80", + "\xB6\xA2" => "\xEB\x95\x81", + "\xB6\xA3" => "\xEB\x95\x83", + "\xB6\xA4" => "\xEB\x95\x84", + "\xB6\xA5" => "\xEB\x95\x85", + "\xB6\xA6" => "\xEB\x95\x8B", + "\xB6\xA7" => "\xEB\x95\x8C", + "\xB6\xA8" => "\xEB\x95\x8D", + "\xB6\xA9" => "\xEB\x95\x90", + "\xB6\xAA" => "\xEB\x95\x94", + "\xB6\xAB" => "\xEB\x95\x9C", + "\xB6\xAC" => "\xEB\x95\x9D", + "\xB6\xAD" => "\xEB\x95\x9F", + "\xB6\xAE" => "\xEB\x95\xA0", + "\xB6\xAF" => "\xEB\x95\xA1", + "\xB6\xB0" => "\xEB\x96\xA0", + "\xB6\xB1" => "\xEB\x96\xA1", + "\xB6\xB2" => "\xEB\x96\xA4", + "\xB6\xB3" => "\xEB\x96\xA8", + "\xB6\xB4" => "\xEB\x96\xAA", + "\xB6\xB5" => "\xEB\x96\xAB", + "\xB6\xB6" => "\xEB\x96\xB0", + "\xB6\xB7" => "\xEB\x96\xB1", + "\xB6\xB8" => "\xEB\x96\xB3", + "\xB6\xB9" => "\xEB\x96\xB4", + "\xB6\xBA" => "\xEB\x96\xB5", + "\xB6\xBB" => "\xEB\x96\xBB", + "\xB6\xBC" => "\xEB\x96\xBC", + "\xB6\xBD" => "\xEB\x96\xBD", + "\xB6\xBE" => "\xEB\x97\x80", + "\xB6\xBF" => "\xEB\x97\x84", + "\xB6\xC0" => "\xEB\x97\x8C", + "\xB6\xC1" => "\xEB\x97\x8D", + "\xB6\xC2" => "\xEB\x97\x8F", + "\xB6\xC3" => "\xEB\x97\x90", + "\xB6\xC4" => "\xEB\x97\x91", + "\xB6\xC5" => "\xEB\x97\x98", + "\xB6\xC6" => "\xEB\x97\xAC", + "\xB6\xC7" => "\xEB\x98\x90", + "\xB6\xC8" => "\xEB\x98\x91", + "\xB6\xC9" => "\xEB\x98\x94", + "\xB6\xCA" => "\xEB\x98\x98", + "\xB6\xCB" => "\xEB\x98\xA5", + "\xB6\xCC" => "\xEB\x98\xAC", + "\xB6\xCD" => "\xEB\x98\xB4", + "\xB6\xCE" => "\xEB\x99\x88", + "\xB6\xCF" => "\xEB\x99\xA4", + "\xB6\xD0" => "\xEB\x99\xA8", + "\xB6\xD1" => "\xEB\x9A\x9C", + "\xB6\xD2" => "\xEB\x9A\x9D", + "\xB6\xD3" => "\xEB\x9A\xA0", + "\xB6\xD4" => "\xEB\x9A\xA4", + "\xB6\xD5" => "\xEB\x9A\xAB", + "\xB6\xD6" => "\xEB\x9A\xAC", + "\xB6\xD7" => "\xEB\x9A\xB1", + "\xB6\xD8" => "\xEB\x9B\x94", + "\xB6\xD9" => "\xEB\x9B\xB0", + "\xB6\xDA" => "\xEB\x9B\xB4", + "\xB6\xDB" => "\xEB\x9B\xB8", + "\xB6\xDC" => "\xEB\x9C\x80", + "\xB6\xDD" => "\xEB\x9C\x81", + "\xB6\xDE" => "\xEB\x9C\x85", + "\xB6\xDF" => "\xEB\x9C\xA8", + "\xB6\xE0" => "\xEB\x9C\xA9", + "\xB6\xE1" => "\xEB\x9C\xAC", + "\xB6\xE2" => "\xEB\x9C\xAF", + "\xB6\xE3" => "\xEB\x9C\xB0", + "\xB6\xE4" => "\xEB\x9C\xB8", + "\xB6\xE5" => "\xEB\x9C\xB9", + "\xB6\xE6" => "\xEB\x9C\xBB", + "\xB6\xE7" => "\xEB\x9D\x84", + "\xB6\xE8" => "\xEB\x9D\x88", + "\xB6\xE9" => "\xEB\x9D\x8C", + "\xB6\xEA" => "\xEB\x9D\x94", + "\xB6\xEB" => "\xEB\x9D\x95", + "\xB6\xEC" => "\xEB\x9D\xA0", + "\xB6\xED" => "\xEB\x9D\xA4", + "\xB6\xEE" => "\xEB\x9D\xA8", + "\xB6\xEF" => "\xEB\x9D\xB0", + "\xB6\xF0" => "\xEB\x9D\xB1", + "\xB6\xF1" => "\xEB\x9D\xB3", + "\xB6\xF2" => "\xEB\x9D\xB5", + "\xB6\xF3" => "\xEB\x9D\xBC", + "\xB6\xF4" => "\xEB\x9D\xBD", + "\xB6\xF5" => "\xEB\x9E\x80", + "\xB6\xF6" => "\xEB\x9E\x84", + "\xB6\xF7" => "\xEB\x9E\x8C", + "\xB6\xF8" => "\xEB\x9E\x8D", + "\xB6\xF9" => "\xEB\x9E\x8F", + "\xB6\xFA" => "\xEB\x9E\x90", + "\xB6\xFB" => "\xEB\x9E\x91", + "\xB6\xFC" => "\xEB\x9E\x92", + "\xB6\xFD" => "\xEB\x9E\x96", + "\xB6\xFE" => "\xEB\x9E\x97", + "\xB7\x41" => "\xED\x85\xAE", + "\xB7\x42" => "\xED\x85\xAF", + "\xB7\x43" => "\xED\x85\xB0", + "\xB7\x44" => "\xED\x85\xB1", + "\xB7\x45" => "\xED\x85\xB2", + "\xB7\x46" => "\xED\x85\xB3", + "\xB7\x47" => "\xED\x85\xB4", + "\xB7\x48" => "\xED\x85\xB5", + "\xB7\x49" => "\xED\x85\xB6", + "\xB7\x4A" => "\xED\x85\xB7", + "\xB7\x4B" => "\xED\x85\xB8", + "\xB7\x4C" => "\xED\x85\xB9", + "\xB7\x4D" => "\xED\x85\xBA", + "\xB7\x4E" => "\xED\x85\xBB", + "\xB7\x4F" => "\xED\x85\xBD", + "\xB7\x50" => "\xED\x85\xBE", + "\xB7\x51" => "\xED\x85\xBF", + "\xB7\x52" => "\xED\x86\x80", + "\xB7\x53" => "\xED\x86\x81", + "\xB7\x54" => "\xED\x86\x82", + "\xB7\x55" => "\xED\x86\x83", + "\xB7\x56" => "\xED\x86\x85", + "\xB7\x57" => "\xED\x86\x86", + "\xB7\x58" => "\xED\x86\x87", + "\xB7\x59" => "\xED\x86\x89", + "\xB7\x5A" => "\xED\x86\x8A", + "\xB7\x61" => "\xED\x86\x8B", + "\xB7\x62" => "\xED\x86\x8C", + "\xB7\x63" => "\xED\x86\x8D", + "\xB7\x64" => "\xED\x86\x8E", + "\xB7\x65" => "\xED\x86\x8F", + "\xB7\x66" => "\xED\x86\x90", + "\xB7\x67" => "\xED\x86\x91", + "\xB7\x68" => "\xED\x86\x92", + "\xB7\x69" => "\xED\x86\x93", + "\xB7\x6A" => "\xED\x86\x94", + "\xB7\x6B" => "\xED\x86\x95", + "\xB7\x6C" => "\xED\x86\x96", + "\xB7\x6D" => "\xED\x86\x97", + "\xB7\x6E" => "\xED\x86\x98", + "\xB7\x6F" => "\xED\x86\x99", + "\xB7\x70" => "\xED\x86\x9A", + "\xB7\x71" => "\xED\x86\x9B", + "\xB7\x72" => "\xED\x86\x9C", + "\xB7\x73" => "\xED\x86\x9D", + "\xB7\x74" => "\xED\x86\x9E", + "\xB7\x75" => "\xED\x86\x9F", + "\xB7\x76" => "\xED\x86\xA2", + "\xB7\x77" => "\xED\x86\xA3", + "\xB7\x78" => "\xED\x86\xA5", + "\xB7\x79" => "\xED\x86\xA6", + "\xB7\x7A" => "\xED\x86\xA7", + "\xB7\x81" => "\xED\x86\xA9", + "\xB7\x82" => "\xED\x86\xAA", + "\xB7\x83" => "\xED\x86\xAB", + "\xB7\x84" => "\xED\x86\xAC", + "\xB7\x85" => "\xED\x86\xAD", + "\xB7\x86" => "\xED\x86\xAE", + "\xB7\x87" => "\xED\x86\xAF", + "\xB7\x88" => "\xED\x86\xB2", + "\xB7\x89" => "\xED\x86\xB4", + "\xB7\x8A" => "\xED\x86\xB6", + "\xB7\x8B" => "\xED\x86\xB7", + "\xB7\x8C" => "\xED\x86\xB8", + "\xB7\x8D" => "\xED\x86\xB9", + "\xB7\x8E" => "\xED\x86\xBB", + "\xB7\x8F" => "\xED\x86\xBD", + "\xB7\x90" => "\xED\x86\xBE", + "\xB7\x91" => "\xED\x86\xBF", + "\xB7\x92" => "\xED\x87\x81", + "\xB7\x93" => "\xED\x87\x82", + "\xB7\x94" => "\xED\x87\x83", + "\xB7\x95" => "\xED\x87\x84", + "\xB7\x96" => "\xED\x87\x85", + "\xB7\x97" => "\xED\x87\x86", + "\xB7\x98" => "\xED\x87\x87", + "\xB7\x99" => "\xED\x87\x88", + "\xB7\x9A" => "\xED\x87\x89", + "\xB7\x9B" => "\xED\x87\x8A", + "\xB7\x9C" => "\xED\x87\x8B", + "\xB7\x9D" => "\xED\x87\x8C", + "\xB7\x9E" => "\xED\x87\x8D", + "\xB7\x9F" => "\xED\x87\x8E", + "\xB7\xA0" => "\xED\x87\x8F", + "\xB7\xA1" => "\xEB\x9E\x98", + "\xB7\xA2" => "\xEB\x9E\x99", + "\xB7\xA3" => "\xEB\x9E\x9C", + "\xB7\xA4" => "\xEB\x9E\xA0", + "\xB7\xA5" => "\xEB\x9E\xA8", + "\xB7\xA6" => "\xEB\x9E\xA9", + "\xB7\xA7" => "\xEB\x9E\xAB", + "\xB7\xA8" => "\xEB\x9E\xAC", + "\xB7\xA9" => "\xEB\x9E\xAD", + "\xB7\xAA" => "\xEB\x9E\xB4", + "\xB7\xAB" => "\xEB\x9E\xB5", + "\xB7\xAC" => "\xEB\x9E\xB8", + "\xB7\xAD" => "\xEB\x9F\x87", + "\xB7\xAE" => "\xEB\x9F\x89", + "\xB7\xAF" => "\xEB\x9F\xAC", + "\xB7\xB0" => "\xEB\x9F\xAD", + "\xB7\xB1" => "\xEB\x9F\xB0", + "\xB7\xB2" => "\xEB\x9F\xB4", + "\xB7\xB3" => "\xEB\x9F\xBC", + "\xB7\xB4" => "\xEB\x9F\xBD", + "\xB7\xB5" => "\xEB\x9F\xBF", + "\xB7\xB6" => "\xEB\xA0\x80", + "\xB7\xB7" => "\xEB\xA0\x81", + "\xB7\xB8" => "\xEB\xA0\x87", + "\xB7\xB9" => "\xEB\xA0\x88", + "\xB7\xBA" => "\xEB\xA0\x89", + "\xB7\xBB" => "\xEB\xA0\x8C", + "\xB7\xBC" => "\xEB\xA0\x90", + "\xB7\xBD" => "\xEB\xA0\x98", + "\xB7\xBE" => "\xEB\xA0\x99", + "\xB7\xBF" => "\xEB\xA0\x9B", + "\xB7\xC0" => "\xEB\xA0\x9D", + "\xB7\xC1" => "\xEB\xA0\xA4", + "\xB7\xC2" => "\xEB\xA0\xA5", + "\xB7\xC3" => "\xEB\xA0\xA8", + "\xB7\xC4" => "\xEB\xA0\xAC", + "\xB7\xC5" => "\xEB\xA0\xB4", + "\xB7\xC6" => "\xEB\xA0\xB5", + "\xB7\xC7" => "\xEB\xA0\xB7", + "\xB7\xC8" => "\xEB\xA0\xB8", + "\xB7\xC9" => "\xEB\xA0\xB9", + "\xB7\xCA" => "\xEB\xA1\x80", + "\xB7\xCB" => "\xEB\xA1\x84", + "\xB7\xCC" => "\xEB\xA1\x91", + "\xB7\xCD" => "\xEB\xA1\x93", + "\xB7\xCE" => "\xEB\xA1\x9C", + "\xB7\xCF" => "\xEB\xA1\x9D", + "\xB7\xD0" => "\xEB\xA1\xA0", + "\xB7\xD1" => "\xEB\xA1\xA4", + "\xB7\xD2" => "\xEB\xA1\xAC", + "\xB7\xD3" => "\xEB\xA1\xAD", + "\xB7\xD4" => "\xEB\xA1\xAF", + "\xB7\xD5" => "\xEB\xA1\xB1", + "\xB7\xD6" => "\xEB\xA1\xB8", + "\xB7\xD7" => "\xEB\xA1\xBC", + "\xB7\xD8" => "\xEB\xA2\x8D", + "\xB7\xD9" => "\xEB\xA2\xA8", + "\xB7\xDA" => "\xEB\xA2\xB0", + "\xB7\xDB" => "\xEB\xA2\xB4", + "\xB7\xDC" => "\xEB\xA2\xB8", + "\xB7\xDD" => "\xEB\xA3\x80", + "\xB7\xDE" => "\xEB\xA3\x81", + "\xB7\xDF" => "\xEB\xA3\x83", + "\xB7\xE0" => "\xEB\xA3\x85", + "\xB7\xE1" => "\xEB\xA3\x8C", + "\xB7\xE2" => "\xEB\xA3\x90", + "\xB7\xE3" => "\xEB\xA3\x94", + "\xB7\xE4" => "\xEB\xA3\x9D", + "\xB7\xE5" => "\xEB\xA3\x9F", + "\xB7\xE6" => "\xEB\xA3\xA1", + "\xB7\xE7" => "\xEB\xA3\xA8", + "\xB7\xE8" => "\xEB\xA3\xA9", + "\xB7\xE9" => "\xEB\xA3\xAC", + "\xB7\xEA" => "\xEB\xA3\xB0", + "\xB7\xEB" => "\xEB\xA3\xB8", + "\xB7\xEC" => "\xEB\xA3\xB9", + "\xB7\xED" => "\xEB\xA3\xBB", + "\xB7\xEE" => "\xEB\xA3\xBD", + "\xB7\xEF" => "\xEB\xA4\x84", + "\xB7\xF0" => "\xEB\xA4\x98", + "\xB7\xF1" => "\xEB\xA4\xA0", + "\xB7\xF2" => "\xEB\xA4\xBC", + "\xB7\xF3" => "\xEB\xA4\xBD", + "\xB7\xF4" => "\xEB\xA5\x80", + "\xB7\xF5" => "\xEB\xA5\x84", + "\xB7\xF6" => "\xEB\xA5\x8C", + "\xB7\xF7" => "\xEB\xA5\x8F", + "\xB7\xF8" => "\xEB\xA5\x91", + "\xB7\xF9" => "\xEB\xA5\x98", + "\xB7\xFA" => "\xEB\xA5\x99", + "\xB7\xFB" => "\xEB\xA5\x9C", + "\xB7\xFC" => "\xEB\xA5\xA0", + "\xB7\xFD" => "\xEB\xA5\xA8", + "\xB7\xFE" => "\xEB\xA5\xA9", + "\xB8\x41" => "\xED\x87\x90", + "\xB8\x42" => "\xED\x87\x91", + "\xB8\x43" => "\xED\x87\x92", + "\xB8\x44" => "\xED\x87\x93", + "\xB8\x45" => "\xED\x87\x94", + "\xB8\x46" => "\xED\x87\x95", + "\xB8\x47" => "\xED\x87\x96", + "\xB8\x48" => "\xED\x87\x97", + "\xB8\x49" => "\xED\x87\x99", + "\xB8\x4A" => "\xED\x87\x9A", + "\xB8\x4B" => "\xED\x87\x9B", + "\xB8\x4C" => "\xED\x87\x9C", + "\xB8\x4D" => "\xED\x87\x9D", + "\xB8\x4E" => "\xED\x87\x9E", + "\xB8\x4F" => "\xED\x87\x9F", + "\xB8\x50" => "\xED\x87\xA0", + "\xB8\x51" => "\xED\x87\xA1", + "\xB8\x52" => "\xED\x87\xA2", + "\xB8\x53" => "\xED\x87\xA3", + "\xB8\x54" => "\xED\x87\xA4", + "\xB8\x55" => "\xED\x87\xA5", + "\xB8\x56" => "\xED\x87\xA6", + "\xB8\x57" => "\xED\x87\xA7", + "\xB8\x58" => "\xED\x87\xA8", + "\xB8\x59" => "\xED\x87\xA9", + "\xB8\x5A" => "\xED\x87\xAA", + "\xB8\x61" => "\xED\x87\xAB", + "\xB8\x62" => "\xED\x87\xAC", + "\xB8\x63" => "\xED\x87\xAD", + "\xB8\x64" => "\xED\x87\xAE", + "\xB8\x65" => "\xED\x87\xAF", + "\xB8\x66" => "\xED\x87\xB0", + "\xB8\x67" => "\xED\x87\xB1", + "\xB8\x68" => "\xED\x87\xB2", + "\xB8\x69" => "\xED\x87\xB3", + "\xB8\x6A" => "\xED\x87\xB5", + "\xB8\x6B" => "\xED\x87\xB6", + "\xB8\x6C" => "\xED\x87\xB7", + "\xB8\x6D" => "\xED\x87\xB9", + "\xB8\x6E" => "\xED\x87\xBA", + "\xB8\x6F" => "\xED\x87\xBB", + "\xB8\x70" => "\xED\x87\xBC", + "\xB8\x71" => "\xED\x87\xBD", + "\xB8\x72" => "\xED\x87\xBE", + "\xB8\x73" => "\xED\x87\xBF", + "\xB8\x74" => "\xED\x88\x80", + "\xB8\x75" => "\xED\x88\x81", + "\xB8\x76" => "\xED\x88\x82", + "\xB8\x77" => "\xED\x88\x83", + "\xB8\x78" => "\xED\x88\x84", + "\xB8\x79" => "\xED\x88\x85", + "\xB8\x7A" => "\xED\x88\x86", + "\xB8\x81" => "\xED\x88\x88", + "\xB8\x82" => "\xED\x88\x8A", + "\xB8\x83" => "\xED\x88\x8B", + "\xB8\x84" => "\xED\x88\x8C", + "\xB8\x85" => "\xED\x88\x8D", + "\xB8\x86" => "\xED\x88\x8E", + "\xB8\x87" => "\xED\x88\x8F", + "\xB8\x88" => "\xED\x88\x91", + "\xB8\x89" => "\xED\x88\x92", + "\xB8\x8A" => "\xED\x88\x93", + "\xB8\x8B" => "\xED\x88\x94", + "\xB8\x8C" => "\xED\x88\x95", + "\xB8\x8D" => "\xED\x88\x96", + "\xB8\x8E" => "\xED\x88\x97", + "\xB8\x8F" => "\xED\x88\x98", + "\xB8\x90" => "\xED\x88\x99", + "\xB8\x91" => "\xED\x88\x9A", + "\xB8\x92" => "\xED\x88\x9B", + "\xB8\x93" => "\xED\x88\x9C", + "\xB8\x94" => "\xED\x88\x9D", + "\xB8\x95" => "\xED\x88\x9E", + "\xB8\x96" => "\xED\x88\x9F", + "\xB8\x97" => "\xED\x88\xA0", + "\xB8\x98" => "\xED\x88\xA1", + "\xB8\x99" => "\xED\x88\xA2", + "\xB8\x9A" => "\xED\x88\xA3", + "\xB8\x9B" => "\xED\x88\xA4", + "\xB8\x9C" => "\xED\x88\xA5", + "\xB8\x9D" => "\xED\x88\xA6", + "\xB8\x9E" => "\xED\x88\xA7", + "\xB8\x9F" => "\xED\x88\xA8", + "\xB8\xA0" => "\xED\x88\xA9", + "\xB8\xA1" => "\xEB\xA5\xAB", + "\xB8\xA2" => "\xEB\xA5\xAD", + "\xB8\xA3" => "\xEB\xA5\xB4", + "\xB8\xA4" => "\xEB\xA5\xB5", + "\xB8\xA5" => "\xEB\xA5\xB8", + "\xB8\xA6" => "\xEB\xA5\xBC", + "\xB8\xA7" => "\xEB\xA6\x84", + "\xB8\xA8" => "\xEB\xA6\x85", + "\xB8\xA9" => "\xEB\xA6\x87", + "\xB8\xAA" => "\xEB\xA6\x89", + "\xB8\xAB" => "\xEB\xA6\x8A", + "\xB8\xAC" => "\xEB\xA6\x8D", + "\xB8\xAD" => "\xEB\xA6\x8E", + "\xB8\xAE" => "\xEB\xA6\xAC", + "\xB8\xAF" => "\xEB\xA6\xAD", + "\xB8\xB0" => "\xEB\xA6\xB0", + "\xB8\xB1" => "\xEB\xA6\xB4", + "\xB8\xB2" => "\xEB\xA6\xBC", + "\xB8\xB3" => "\xEB\xA6\xBD", + "\xB8\xB4" => "\xEB\xA6\xBF", + "\xB8\xB5" => "\xEB\xA7\x81", + "\xB8\xB6" => "\xEB\xA7\x88", + "\xB8\xB7" => "\xEB\xA7\x89", + "\xB8\xB8" => "\xEB\xA7\x8C", + "\xB8\xB9" => "\xEB\xA7\x8E", + "\xB8\xBA" => "\xEB\xA7\x8F", + "\xB8\xBB" => "\xEB\xA7\x90", + "\xB8\xBC" => "\xEB\xA7\x91", + "\xB8\xBD" => "\xEB\xA7\x92", + "\xB8\xBE" => "\xEB\xA7\x98", + "\xB8\xBF" => "\xEB\xA7\x99", + "\xB8\xC0" => "\xEB\xA7\x9B", + "\xB8\xC1" => "\xEB\xA7\x9D", + "\xB8\xC2" => "\xEB\xA7\x9E", + "\xB8\xC3" => "\xEB\xA7\xA1", + "\xB8\xC4" => "\xEB\xA7\xA3", + "\xB8\xC5" => "\xEB\xA7\xA4", + "\xB8\xC6" => "\xEB\xA7\xA5", + "\xB8\xC7" => "\xEB\xA7\xA8", + "\xB8\xC8" => "\xEB\xA7\xAC", + "\xB8\xC9" => "\xEB\xA7\xB4", + "\xB8\xCA" => "\xEB\xA7\xB5", + "\xB8\xCB" => "\xEB\xA7\xB7", + "\xB8\xCC" => "\xEB\xA7\xB8", + "\xB8\xCD" => "\xEB\xA7\xB9", + "\xB8\xCE" => "\xEB\xA7\xBA", + "\xB8\xCF" => "\xEB\xA8\x80", + "\xB8\xD0" => "\xEB\xA8\x81", + "\xB8\xD1" => "\xEB\xA8\x88", + "\xB8\xD2" => "\xEB\xA8\x95", + "\xB8\xD3" => "\xEB\xA8\xB8", + "\xB8\xD4" => "\xEB\xA8\xB9", + "\xB8\xD5" => "\xEB\xA8\xBC", + "\xB8\xD6" => "\xEB\xA9\x80", + "\xB8\xD7" => "\xEB\xA9\x82", + "\xB8\xD8" => "\xEB\xA9\x88", + "\xB8\xD9" => "\xEB\xA9\x89", + "\xB8\xDA" => "\xEB\xA9\x8B", + "\xB8\xDB" => "\xEB\xA9\x8D", + "\xB8\xDC" => "\xEB\xA9\x8E", + "\xB8\xDD" => "\xEB\xA9\x93", + "\xB8\xDE" => "\xEB\xA9\x94", + "\xB8\xDF" => "\xEB\xA9\x95", + "\xB8\xE0" => "\xEB\xA9\x98", + "\xB8\xE1" => "\xEB\xA9\x9C", + "\xB8\xE2" => "\xEB\xA9\xA4", + "\xB8\xE3" => "\xEB\xA9\xA5", + "\xB8\xE4" => "\xEB\xA9\xA7", + "\xB8\xE5" => "\xEB\xA9\xA8", + "\xB8\xE6" => "\xEB\xA9\xA9", + "\xB8\xE7" => "\xEB\xA9\xB0", + "\xB8\xE8" => "\xEB\xA9\xB1", + "\xB8\xE9" => "\xEB\xA9\xB4", + "\xB8\xEA" => "\xEB\xA9\xB8", + "\xB8\xEB" => "\xEB\xAA\x83", + "\xB8\xEC" => "\xEB\xAA\x84", + "\xB8\xED" => "\xEB\xAA\x85", + "\xB8\xEE" => "\xEB\xAA\x87", + "\xB8\xEF" => "\xEB\xAA\x8C", + "\xB8\xF0" => "\xEB\xAA\xA8", + "\xB8\xF1" => "\xEB\xAA\xA9", + "\xB8\xF2" => "\xEB\xAA\xAB", + "\xB8\xF3" => "\xEB\xAA\xAC", + "\xB8\xF4" => "\xEB\xAA\xB0", + "\xB8\xF5" => "\xEB\xAA\xB2", + "\xB8\xF6" => "\xEB\xAA\xB8", + "\xB8\xF7" => "\xEB\xAA\xB9", + "\xB8\xF8" => "\xEB\xAA\xBB", + "\xB8\xF9" => "\xEB\xAA\xBD", + "\xB8\xFA" => "\xEB\xAB\x84", + "\xB8\xFB" => "\xEB\xAB\x88", + "\xB8\xFC" => "\xEB\xAB\x98", + "\xB8\xFD" => "\xEB\xAB\x99", + "\xB8\xFE" => "\xEB\xAB\xBC", + "\xB9\x41" => "\xED\x88\xAA", + "\xB9\x42" => "\xED\x88\xAB", + "\xB9\x43" => "\xED\x88\xAE", + "\xB9\x44" => "\xED\x88\xAF", + "\xB9\x45" => "\xED\x88\xB1", + "\xB9\x46" => "\xED\x88\xB2", + "\xB9\x47" => "\xED\x88\xB3", + "\xB9\x48" => "\xED\x88\xB5", + "\xB9\x49" => "\xED\x88\xB6", + "\xB9\x4A" => "\xED\x88\xB7", + "\xB9\x4B" => "\xED\x88\xB8", + "\xB9\x4C" => "\xED\x88\xB9", + "\xB9\x4D" => "\xED\x88\xBA", + "\xB9\x4E" => "\xED\x88\xBB", + "\xB9\x4F" => "\xED\x88\xBE", + "\xB9\x50" => "\xED\x89\x80", + "\xB9\x51" => "\xED\x89\x82", + "\xB9\x52" => "\xED\x89\x83", + "\xB9\x53" => "\xED\x89\x84", + "\xB9\x54" => "\xED\x89\x85", + "\xB9\x55" => "\xED\x89\x86", + "\xB9\x56" => "\xED\x89\x87", + "\xB9\x57" => "\xED\x89\x89", + "\xB9\x58" => "\xED\x89\x8A", + "\xB9\x59" => "\xED\x89\x8B", + "\xB9\x5A" => "\xED\x89\x8C", + "\xB9\x61" => "\xED\x89\x8D", + "\xB9\x62" => "\xED\x89\x8E", + "\xB9\x63" => "\xED\x89\x8F", + "\xB9\x64" => "\xED\x89\x90", + "\xB9\x65" => "\xED\x89\x91", + "\xB9\x66" => "\xED\x89\x92", + "\xB9\x67" => "\xED\x89\x93", + "\xB9\x68" => "\xED\x89\x94", + "\xB9\x69" => "\xED\x89\x95", + "\xB9\x6A" => "\xED\x89\x96", + "\xB9\x6B" => "\xED\x89\x97", + "\xB9\x6C" => "\xED\x89\x98", + "\xB9\x6D" => "\xED\x89\x99", + "\xB9\x6E" => "\xED\x89\x9A", + "\xB9\x6F" => "\xED\x89\x9B", + "\xB9\x70" => "\xED\x89\x9D", + "\xB9\x71" => "\xED\x89\x9E", + "\xB9\x72" => "\xED\x89\x9F", + "\xB9\x73" => "\xED\x89\xA0", + "\xB9\x74" => "\xED\x89\xA1", + "\xB9\x75" => "\xED\x89\xA2", + "\xB9\x76" => "\xED\x89\xA3", + "\xB9\x77" => "\xED\x89\xA5", + "\xB9\x78" => "\xED\x89\xA6", + "\xB9\x79" => "\xED\x89\xA7", + "\xB9\x7A" => "\xED\x89\xA8", + "\xB9\x81" => "\xED\x89\xA9", + "\xB9\x82" => "\xED\x89\xAA", + "\xB9\x83" => "\xED\x89\xAB", + "\xB9\x84" => "\xED\x89\xAC", + "\xB9\x85" => "\xED\x89\xAD", + "\xB9\x86" => "\xED\x89\xAE", + "\xB9\x87" => "\xED\x89\xAF", + "\xB9\x88" => "\xED\x89\xB0", + "\xB9\x89" => "\xED\x89\xB1", + "\xB9\x8A" => "\xED\x89\xB2", + "\xB9\x8B" => "\xED\x89\xB3", + "\xB9\x8C" => "\xED\x89\xB4", + "\xB9\x8D" => "\xED\x89\xB5", + "\xB9\x8E" => "\xED\x89\xB6", + "\xB9\x8F" => "\xED\x89\xB7", + "\xB9\x90" => "\xED\x89\xB8", + "\xB9\x91" => "\xED\x89\xB9", + "\xB9\x92" => "\xED\x89\xBA", + "\xB9\x93" => "\xED\x89\xBB", + "\xB9\x94" => "\xED\x89\xBC", + "\xB9\x95" => "\xED\x89\xBD", + "\xB9\x96" => "\xED\x89\xBE", + "\xB9\x97" => "\xED\x89\xBF", + "\xB9\x98" => "\xED\x8A\x82", + "\xB9\x99" => "\xED\x8A\x83", + "\xB9\x9A" => "\xED\x8A\x85", + "\xB9\x9B" => "\xED\x8A\x86", + "\xB9\x9C" => "\xED\x8A\x87", + "\xB9\x9D" => "\xED\x8A\x89", + "\xB9\x9E" => "\xED\x8A\x8A", + "\xB9\x9F" => "\xED\x8A\x8B", + "\xB9\xA0" => "\xED\x8A\x8C", + "\xB9\xA1" => "\xEB\xAC\x80", + "\xB9\xA2" => "\xEB\xAC\x84", + "\xB9\xA3" => "\xEB\xAC\x8D", + "\xB9\xA4" => "\xEB\xAC\x8F", + "\xB9\xA5" => "\xEB\xAC\x91", + "\xB9\xA6" => "\xEB\xAC\x98", + "\xB9\xA7" => "\xEB\xAC\x9C", + "\xB9\xA8" => "\xEB\xAC\xA0", + "\xB9\xA9" => "\xEB\xAC\xA9", + "\xB9\xAA" => "\xEB\xAC\xAB", + "\xB9\xAB" => "\xEB\xAC\xB4", + "\xB9\xAC" => "\xEB\xAC\xB5", + "\xB9\xAD" => "\xEB\xAC\xB6", + "\xB9\xAE" => "\xEB\xAC\xB8", + "\xB9\xAF" => "\xEB\xAC\xBB", + "\xB9\xB0" => "\xEB\xAC\xBC", + "\xB9\xB1" => "\xEB\xAC\xBD", + "\xB9\xB2" => "\xEB\xAC\xBE", + "\xB9\xB3" => "\xEB\xAD\x84", + "\xB9\xB4" => "\xEB\xAD\x85", + "\xB9\xB5" => "\xEB\xAD\x87", + "\xB9\xB6" => "\xEB\xAD\x89", + "\xB9\xB7" => "\xEB\xAD\x8D", + "\xB9\xB8" => "\xEB\xAD\x8F", + "\xB9\xB9" => "\xEB\xAD\x90", + "\xB9\xBA" => "\xEB\xAD\x94", + "\xB9\xBB" => "\xEB\xAD\x98", + "\xB9\xBC" => "\xEB\xAD\xA1", + "\xB9\xBD" => "\xEB\xAD\xA3", + "\xB9\xBE" => "\xEB\xAD\xAC", + "\xB9\xBF" => "\xEB\xAE\x88", + "\xB9\xC0" => "\xEB\xAE\x8C", + "\xB9\xC1" => "\xEB\xAE\x90", + "\xB9\xC2" => "\xEB\xAE\xA4", + "\xB9\xC3" => "\xEB\xAE\xA8", + "\xB9\xC4" => "\xEB\xAE\xAC", + "\xB9\xC5" => "\xEB\xAE\xB4", + "\xB9\xC6" => "\xEB\xAE\xB7", + "\xB9\xC7" => "\xEB\xAF\x80", + "\xB9\xC8" => "\xEB\xAF\x84", + "\xB9\xC9" => "\xEB\xAF\x88", + "\xB9\xCA" => "\xEB\xAF\x90", + "\xB9\xCB" => "\xEB\xAF\x93", + "\xB9\xCC" => "\xEB\xAF\xB8", + "\xB9\xCD" => "\xEB\xAF\xB9", + "\xB9\xCE" => "\xEB\xAF\xBC", + "\xB9\xCF" => "\xEB\xAF\xBF", + "\xB9\xD0" => "\xEB\xB0\x80", + "\xB9\xD1" => "\xEB\xB0\x82", + "\xB9\xD2" => "\xEB\xB0\x88", + "\xB9\xD3" => "\xEB\xB0\x89", + "\xB9\xD4" => "\xEB\xB0\x8B", + "\xB9\xD5" => "\xEB\xB0\x8C", + "\xB9\xD6" => "\xEB\xB0\x8D", + "\xB9\xD7" => "\xEB\xB0\x8F", + "\xB9\xD8" => "\xEB\xB0\x91", + "\xB9\xD9" => "\xEB\xB0\x94", + "\xB9\xDA" => "\xEB\xB0\x95", + "\xB9\xDB" => "\xEB\xB0\x96", + "\xB9\xDC" => "\xEB\xB0\x97", + "\xB9\xDD" => "\xEB\xB0\x98", + "\xB9\xDE" => "\xEB\xB0\x9B", + "\xB9\xDF" => "\xEB\xB0\x9C", + "\xB9\xE0" => "\xEB\xB0\x9D", + "\xB9\xE1" => "\xEB\xB0\x9E", + "\xB9\xE2" => "\xEB\xB0\x9F", + "\xB9\xE3" => "\xEB\xB0\xA4", + "\xB9\xE4" => "\xEB\xB0\xA5", + "\xB9\xE5" => "\xEB\xB0\xA7", + "\xB9\xE6" => "\xEB\xB0\xA9", + "\xB9\xE7" => "\xEB\xB0\xAD", + "\xB9\xE8" => "\xEB\xB0\xB0", + "\xB9\xE9" => "\xEB\xB0\xB1", + "\xB9\xEA" => "\xEB\xB0\xB4", + "\xB9\xEB" => "\xEB\xB0\xB8", + "\xB9\xEC" => "\xEB\xB1\x80", + "\xB9\xED" => "\xEB\xB1\x81", + "\xB9\xEE" => "\xEB\xB1\x83", + "\xB9\xEF" => "\xEB\xB1\x84", + "\xB9\xF0" => "\xEB\xB1\x85", + "\xB9\xF1" => "\xEB\xB1\x89", + "\xB9\xF2" => "\xEB\xB1\x8C", + "\xB9\xF3" => "\xEB\xB1\x8D", + "\xB9\xF4" => "\xEB\xB1\x90", + "\xB9\xF5" => "\xEB\xB1\x9D", + "\xB9\xF6" => "\xEB\xB2\x84", + "\xB9\xF7" => "\xEB\xB2\x85", + "\xB9\xF8" => "\xEB\xB2\x88", + "\xB9\xF9" => "\xEB\xB2\x8B", + "\xB9\xFA" => "\xEB\xB2\x8C", + "\xB9\xFB" => "\xEB\xB2\x8E", + "\xB9\xFC" => "\xEB\xB2\x94", + "\xB9\xFD" => "\xEB\xB2\x95", + "\xB9\xFE" => "\xEB\xB2\x97", + "\xBA\x41" => "\xED\x8A\x8D", + "\xBA\x42" => "\xED\x8A\x8E", + "\xBA\x43" => "\xED\x8A\x8F", + "\xBA\x44" => "\xED\x8A\x92", + "\xBA\x45" => "\xED\x8A\x93", + "\xBA\x46" => "\xED\x8A\x94", + "\xBA\x47" => "\xED\x8A\x96", + "\xBA\x48" => "\xED\x8A\x97", + "\xBA\x49" => "\xED\x8A\x98", + "\xBA\x4A" => "\xED\x8A\x99", + "\xBA\x4B" => "\xED\x8A\x9A", + "\xBA\x4C" => "\xED\x8A\x9B", + "\xBA\x4D" => "\xED\x8A\x9D", + "\xBA\x4E" => "\xED\x8A\x9E", + "\xBA\x4F" => "\xED\x8A\x9F", + "\xBA\x50" => "\xED\x8A\xA1", + "\xBA\x51" => "\xED\x8A\xA2", + "\xBA\x52" => "\xED\x8A\xA3", + "\xBA\x53" => "\xED\x8A\xA5", + "\xBA\x54" => "\xED\x8A\xA6", + "\xBA\x55" => "\xED\x8A\xA7", + "\xBA\x56" => "\xED\x8A\xA8", + "\xBA\x57" => "\xED\x8A\xA9", + "\xBA\x58" => "\xED\x8A\xAA", + "\xBA\x59" => "\xED\x8A\xAB", + "\xBA\x5A" => "\xED\x8A\xAD", + "\xBA\x61" => "\xED\x8A\xAE", + "\xBA\x62" => "\xED\x8A\xAF", + "\xBA\x63" => "\xED\x8A\xB0", + "\xBA\x64" => "\xED\x8A\xB2", + "\xBA\x65" => "\xED\x8A\xB3", + "\xBA\x66" => "\xED\x8A\xB4", + "\xBA\x67" => "\xED\x8A\xB5", + "\xBA\x68" => "\xED\x8A\xB6", + "\xBA\x69" => "\xED\x8A\xB7", + "\xBA\x6A" => "\xED\x8A\xBA", + "\xBA\x6B" => "\xED\x8A\xBB", + "\xBA\x6C" => "\xED\x8A\xBD", + "\xBA\x6D" => "\xED\x8A\xBE", + "\xBA\x6E" => "\xED\x8B\x81", + "\xBA\x6F" => "\xED\x8B\x83", + "\xBA\x70" => "\xED\x8B\x84", + "\xBA\x71" => "\xED\x8B\x85", + "\xBA\x72" => "\xED\x8B\x86", + "\xBA\x73" => "\xED\x8B\x87", + "\xBA\x74" => "\xED\x8B\x8A", + "\xBA\x75" => "\xED\x8B\x8C", + "\xBA\x76" => "\xED\x8B\x8D", + "\xBA\x77" => "\xED\x8B\x8E", + "\xBA\x78" => "\xED\x8B\x8F", + "\xBA\x79" => "\xED\x8B\x90", + "\xBA\x7A" => "\xED\x8B\x91", + "\xBA\x81" => "\xED\x8B\x92", + "\xBA\x82" => "\xED\x8B\x93", + "\xBA\x83" => "\xED\x8B\x95", + "\xBA\x84" => "\xED\x8B\x96", + "\xBA\x85" => "\xED\x8B\x97", + "\xBA\x86" => "\xED\x8B\x99", + "\xBA\x87" => "\xED\x8B\x9A", + "\xBA\x88" => "\xED\x8B\x9B", + "\xBA\x89" => "\xED\x8B\x9D", + "\xBA\x8A" => "\xED\x8B\x9E", + "\xBA\x8B" => "\xED\x8B\x9F", + "\xBA\x8C" => "\xED\x8B\xA0", + "\xBA\x8D" => "\xED\x8B\xA1", + "\xBA\x8E" => "\xED\x8B\xA2", + "\xBA\x8F" => "\xED\x8B\xA3", + "\xBA\x90" => "\xED\x8B\xA6", + "\xBA\x91" => "\xED\x8B\xA7", + "\xBA\x92" => "\xED\x8B\xA8", + "\xBA\x93" => "\xED\x8B\xA9", + "\xBA\x94" => "\xED\x8B\xAA", + "\xBA\x95" => "\xED\x8B\xAB", + "\xBA\x96" => "\xED\x8B\xAC", + "\xBA\x97" => "\xED\x8B\xAD", + "\xBA\x98" => "\xED\x8B\xAE", + "\xBA\x99" => "\xED\x8B\xAF", + "\xBA\x9A" => "\xED\x8B\xB2", + "\xBA\x9B" => "\xED\x8B\xB3", + "\xBA\x9C" => "\xED\x8B\xB5", + "\xBA\x9D" => "\xED\x8B\xB6", + "\xBA\x9E" => "\xED\x8B\xB7", + "\xBA\x9F" => "\xED\x8B\xB9", + "\xBA\xA0" => "\xED\x8B\xBA", + "\xBA\xA1" => "\xEB\xB2\x99", + "\xBA\xA2" => "\xEB\xB2\x9A", + "\xBA\xA3" => "\xEB\xB2\xA0", + "\xBA\xA4" => "\xEB\xB2\xA1", + "\xBA\xA5" => "\xEB\xB2\xA4", + "\xBA\xA6" => "\xEB\xB2\xA7", + "\xBA\xA7" => "\xEB\xB2\xA8", + "\xBA\xA8" => "\xEB\xB2\xB0", + "\xBA\xA9" => "\xEB\xB2\xB1", + "\xBA\xAA" => "\xEB\xB2\xB3", + "\xBA\xAB" => "\xEB\xB2\xB4", + "\xBA\xAC" => "\xEB\xB2\xB5", + "\xBA\xAD" => "\xEB\xB2\xBC", + "\xBA\xAE" => "\xEB\xB2\xBD", + "\xBA\xAF" => "\xEB\xB3\x80", + "\xBA\xB0" => "\xEB\xB3\x84", + "\xBA\xB1" => "\xEB\xB3\x8D", + "\xBA\xB2" => "\xEB\xB3\x8F", + "\xBA\xB3" => "\xEB\xB3\x90", + "\xBA\xB4" => "\xEB\xB3\x91", + "\xBA\xB5" => "\xEB\xB3\x95", + "\xBA\xB6" => "\xEB\xB3\x98", + "\xBA\xB7" => "\xEB\xB3\x9C", + "\xBA\xB8" => "\xEB\xB3\xB4", + "\xBA\xB9" => "\xEB\xB3\xB5", + "\xBA\xBA" => "\xEB\xB3\xB6", + "\xBA\xBB" => "\xEB\xB3\xB8", + "\xBA\xBC" => "\xEB\xB3\xBC", + "\xBA\xBD" => "\xEB\xB4\x84", + "\xBA\xBE" => "\xEB\xB4\x85", + "\xBA\xBF" => "\xEB\xB4\x87", + "\xBA\xC0" => "\xEB\xB4\x89", + "\xBA\xC1" => "\xEB\xB4\x90", + "\xBA\xC2" => "\xEB\xB4\x94", + "\xBA\xC3" => "\xEB\xB4\xA4", + "\xBA\xC4" => "\xEB\xB4\xAC", + "\xBA\xC5" => "\xEB\xB5\x80", + "\xBA\xC6" => "\xEB\xB5\x88", + "\xBA\xC7" => "\xEB\xB5\x89", + "\xBA\xC8" => "\xEB\xB5\x8C", + "\xBA\xC9" => "\xEB\xB5\x90", + "\xBA\xCA" => "\xEB\xB5\x98", + "\xBA\xCB" => "\xEB\xB5\x99", + "\xBA\xCC" => "\xEB\xB5\xA4", + "\xBA\xCD" => "\xEB\xB5\xA8", + "\xBA\xCE" => "\xEB\xB6\x80", + "\xBA\xCF" => "\xEB\xB6\x81", + "\xBA\xD0" => "\xEB\xB6\x84", + "\xBA\xD1" => "\xEB\xB6\x87", + "\xBA\xD2" => "\xEB\xB6\x88", + "\xBA\xD3" => "\xEB\xB6\x89", + "\xBA\xD4" => "\xEB\xB6\x8A", + "\xBA\xD5" => "\xEB\xB6\x90", + "\xBA\xD6" => "\xEB\xB6\x91", + "\xBA\xD7" => "\xEB\xB6\x93", + "\xBA\xD8" => "\xEB\xB6\x95", + "\xBA\xD9" => "\xEB\xB6\x99", + "\xBA\xDA" => "\xEB\xB6\x9A", + "\xBA\xDB" => "\xEB\xB6\x9C", + "\xBA\xDC" => "\xEB\xB6\xA4", + "\xBA\xDD" => "\xEB\xB6\xB0", + "\xBA\xDE" => "\xEB\xB6\xB8", + "\xBA\xDF" => "\xEB\xB7\x94", + "\xBA\xE0" => "\xEB\xB7\x95", + "\xBA\xE1" => "\xEB\xB7\x98", + "\xBA\xE2" => "\xEB\xB7\x9C", + "\xBA\xE3" => "\xEB\xB7\xA9", + "\xBA\xE4" => "\xEB\xB7\xB0", + "\xBA\xE5" => "\xEB\xB7\xB4", + "\xBA\xE6" => "\xEB\xB7\xB8", + "\xBA\xE7" => "\xEB\xB8\x80", + "\xBA\xE8" => "\xEB\xB8\x83", + "\xBA\xE9" => "\xEB\xB8\x85", + "\xBA\xEA" => "\xEB\xB8\x8C", + "\xBA\xEB" => "\xEB\xB8\x8D", + "\xBA\xEC" => "\xEB\xB8\x90", + "\xBA\xED" => "\xEB\xB8\x94", + "\xBA\xEE" => "\xEB\xB8\x9C", + "\xBA\xEF" => "\xEB\xB8\x9D", + "\xBA\xF0" => "\xEB\xB8\x9F", + "\xBA\xF1" => "\xEB\xB9\x84", + "\xBA\xF2" => "\xEB\xB9\x85", + "\xBA\xF3" => "\xEB\xB9\x88", + "\xBA\xF4" => "\xEB\xB9\x8C", + "\xBA\xF5" => "\xEB\xB9\x8E", + "\xBA\xF6" => "\xEB\xB9\x94", + "\xBA\xF7" => "\xEB\xB9\x95", + "\xBA\xF8" => "\xEB\xB9\x97", + "\xBA\xF9" => "\xEB\xB9\x99", + "\xBA\xFA" => "\xEB\xB9\x9A", + "\xBA\xFB" => "\xEB\xB9\x9B", + "\xBA\xFC" => "\xEB\xB9\xA0", + "\xBA\xFD" => "\xEB\xB9\xA1", + "\xBA\xFE" => "\xEB\xB9\xA4", + "\xBB\x41" => "\xED\x8B\xBB", + "\xBB\x42" => "\xED\x8B\xBC", + "\xBB\x43" => "\xED\x8B\xBD", + "\xBB\x44" => "\xED\x8B\xBE", + "\xBB\x45" => "\xED\x8B\xBF", + "\xBB\x46" => "\xED\x8C\x82", + "\xBB\x47" => "\xED\x8C\x84", + "\xBB\x48" => "\xED\x8C\x86", + "\xBB\x49" => "\xED\x8C\x87", + "\xBB\x4A" => "\xED\x8C\x88", + "\xBB\x4B" => "\xED\x8C\x89", + "\xBB\x4C" => "\xED\x8C\x8A", + "\xBB\x4D" => "\xED\x8C\x8B", + "\xBB\x4E" => "\xED\x8C\x8F", + "\xBB\x4F" => "\xED\x8C\x91", + "\xBB\x50" => "\xED\x8C\x92", + "\xBB\x51" => "\xED\x8C\x93", + "\xBB\x52" => "\xED\x8C\x95", + "\xBB\x53" => "\xED\x8C\x97", + "\xBB\x54" => "\xED\x8C\x98", + "\xBB\x55" => "\xED\x8C\x99", + "\xBB\x56" => "\xED\x8C\x9A", + "\xBB\x57" => "\xED\x8C\x9B", + "\xBB\x58" => "\xED\x8C\x9E", + "\xBB\x59" => "\xED\x8C\xA2", + "\xBB\x5A" => "\xED\x8C\xA3", + "\xBB\x61" => "\xED\x8C\xA4", + "\xBB\x62" => "\xED\x8C\xA6", + "\xBB\x63" => "\xED\x8C\xA7", + "\xBB\x64" => "\xED\x8C\xAA", + "\xBB\x65" => "\xED\x8C\xAB", + "\xBB\x66" => "\xED\x8C\xAD", + "\xBB\x67" => "\xED\x8C\xAE", + "\xBB\x68" => "\xED\x8C\xAF", + "\xBB\x69" => "\xED\x8C\xB1", + "\xBB\x6A" => "\xED\x8C\xB2", + "\xBB\x6B" => "\xED\x8C\xB3", + "\xBB\x6C" => "\xED\x8C\xB4", + "\xBB\x6D" => "\xED\x8C\xB5", + "\xBB\x6E" => "\xED\x8C\xB6", + "\xBB\x6F" => "\xED\x8C\xB7", + "\xBB\x70" => "\xED\x8C\xBA", + "\xBB\x71" => "\xED\x8C\xBE", + "\xBB\x72" => "\xED\x8C\xBF", + "\xBB\x73" => "\xED\x8D\x80", + "\xBB\x74" => "\xED\x8D\x81", + "\xBB\x75" => "\xED\x8D\x82", + "\xBB\x76" => "\xED\x8D\x83", + "\xBB\x77" => "\xED\x8D\x86", + "\xBB\x78" => "\xED\x8D\x87", + "\xBB\x79" => "\xED\x8D\x88", + "\xBB\x7A" => "\xED\x8D\x89", + "\xBB\x81" => "\xED\x8D\x8A", + "\xBB\x82" => "\xED\x8D\x8B", + "\xBB\x83" => "\xED\x8D\x8C", + "\xBB\x84" => "\xED\x8D\x8D", + "\xBB\x85" => "\xED\x8D\x8E", + "\xBB\x86" => "\xED\x8D\x8F", + "\xBB\x87" => "\xED\x8D\x90", + "\xBB\x88" => "\xED\x8D\x91", + "\xBB\x89" => "\xED\x8D\x92", + "\xBB\x8A" => "\xED\x8D\x93", + "\xBB\x8B" => "\xED\x8D\x94", + "\xBB\x8C" => "\xED\x8D\x95", + "\xBB\x8D" => "\xED\x8D\x96", + "\xBB\x8E" => "\xED\x8D\x97", + "\xBB\x8F" => "\xED\x8D\x98", + "\xBB\x90" => "\xED\x8D\x99", + "\xBB\x91" => "\xED\x8D\x9A", + "\xBB\x92" => "\xED\x8D\x9B", + "\xBB\x93" => "\xED\x8D\x9C", + "\xBB\x94" => "\xED\x8D\x9D", + "\xBB\x95" => "\xED\x8D\x9E", + "\xBB\x96" => "\xED\x8D\x9F", + "\xBB\x97" => "\xED\x8D\xA0", + "\xBB\x98" => "\xED\x8D\xA1", + "\xBB\x99" => "\xED\x8D\xA2", + "\xBB\x9A" => "\xED\x8D\xA3", + "\xBB\x9B" => "\xED\x8D\xA4", + "\xBB\x9C" => "\xED\x8D\xA5", + "\xBB\x9D" => "\xED\x8D\xA6", + "\xBB\x9E" => "\xED\x8D\xA7", + "\xBB\x9F" => "\xED\x8D\xA8", + "\xBB\xA0" => "\xED\x8D\xA9", + "\xBB\xA1" => "\xEB\xB9\xA8", + "\xBB\xA2" => "\xEB\xB9\xAA", + "\xBB\xA3" => "\xEB\xB9\xB0", + "\xBB\xA4" => "\xEB\xB9\xB1", + "\xBB\xA5" => "\xEB\xB9\xB3", + "\xBB\xA6" => "\xEB\xB9\xB4", + "\xBB\xA7" => "\xEB\xB9\xB5", + "\xBB\xA8" => "\xEB\xB9\xBB", + "\xBB\xA9" => "\xEB\xB9\xBC", + "\xBB\xAA" => "\xEB\xB9\xBD", + "\xBB\xAB" => "\xEB\xBA\x80", + "\xBB\xAC" => "\xEB\xBA\x84", + "\xBB\xAD" => "\xEB\xBA\x8C", + "\xBB\xAE" => "\xEB\xBA\x8D", + "\xBB\xAF" => "\xEB\xBA\x8F", + "\xBB\xB0" => "\xEB\xBA\x90", + "\xBB\xB1" => "\xEB\xBA\x91", + "\xBB\xB2" => "\xEB\xBA\x98", + "\xBB\xB3" => "\xEB\xBA\x99", + "\xBB\xB4" => "\xEB\xBA\xA8", + "\xBB\xB5" => "\xEB\xBB\x90", + "\xBB\xB6" => "\xEB\xBB\x91", + "\xBB\xB7" => "\xEB\xBB\x94", + "\xBB\xB8" => "\xEB\xBB\x97", + "\xBB\xB9" => "\xEB\xBB\x98", + "\xBB\xBA" => "\xEB\xBB\xA0", + "\xBB\xBB" => "\xEB\xBB\xA3", + "\xBB\xBC" => "\xEB\xBB\xA4", + "\xBB\xBD" => "\xEB\xBB\xA5", + "\xBB\xBE" => "\xEB\xBB\xAC", + "\xBB\xBF" => "\xEB\xBC\x81", + "\xBB\xC0" => "\xEB\xBC\x88", + "\xBB\xC1" => "\xEB\xBC\x89", + "\xBB\xC2" => "\xEB\xBC\x98", + "\xBB\xC3" => "\xEB\xBC\x99", + "\xBB\xC4" => "\xEB\xBC\x9B", + "\xBB\xC5" => "\xEB\xBC\x9C", + "\xBB\xC6" => "\xEB\xBC\x9D", + "\xBB\xC7" => "\xEB\xBD\x80", + "\xBB\xC8" => "\xEB\xBD\x81", + "\xBB\xC9" => "\xEB\xBD\x84", + "\xBB\xCA" => "\xEB\xBD\x88", + "\xBB\xCB" => "\xEB\xBD\x90", + "\xBB\xCC" => "\xEB\xBD\x91", + "\xBB\xCD" => "\xEB\xBD\x95", + "\xBB\xCE" => "\xEB\xBE\x94", + "\xBB\xCF" => "\xEB\xBE\xB0", + "\xBB\xD0" => "\xEB\xBF\x85", + "\xBB\xD1" => "\xEB\xBF\x8C", + "\xBB\xD2" => "\xEB\xBF\x8D", + "\xBB\xD3" => "\xEB\xBF\x90", + "\xBB\xD4" => "\xEB\xBF\x94", + "\xBB\xD5" => "\xEB\xBF\x9C", + "\xBB\xD6" => "\xEB\xBF\x9F", + "\xBB\xD7" => "\xEB\xBF\xA1", + "\xBB\xD8" => "\xEC\x80\xBC", + "\xBB\xD9" => "\xEC\x81\x91", + "\xBB\xDA" => "\xEC\x81\x98", + "\xBB\xDB" => "\xEC\x81\x9C", + "\xBB\xDC" => "\xEC\x81\xA0", + "\xBB\xDD" => "\xEC\x81\xA8", + "\xBB\xDE" => "\xEC\x81\xA9", + "\xBB\xDF" => "\xEC\x82\x90", + "\xBB\xE0" => "\xEC\x82\x91", + "\xBB\xE1" => "\xEC\x82\x94", + "\xBB\xE2" => "\xEC\x82\x98", + "\xBB\xE3" => "\xEC\x82\xA0", + "\xBB\xE4" => "\xEC\x82\xA1", + "\xBB\xE5" => "\xEC\x82\xA3", + "\xBB\xE6" => "\xEC\x82\xA5", + "\xBB\xE7" => "\xEC\x82\xAC", + "\xBB\xE8" => "\xEC\x82\xAD", + "\xBB\xE9" => "\xEC\x82\xAF", + "\xBB\xEA" => "\xEC\x82\xB0", + "\xBB\xEB" => "\xEC\x82\xB3", + "\xBB\xEC" => "\xEC\x82\xB4", + "\xBB\xED" => "\xEC\x82\xB5", + "\xBB\xEE" => "\xEC\x82\xB6", + "\xBB\xEF" => "\xEC\x82\xBC", + "\xBB\xF0" => "\xEC\x82\xBD", + "\xBB\xF1" => "\xEC\x82\xBF", + "\xBB\xF2" => "\xEC\x83\x80", + "\xBB\xF3" => "\xEC\x83\x81", + "\xBB\xF4" => "\xEC\x83\x85", + "\xBB\xF5" => "\xEC\x83\x88", + "\xBB\xF6" => "\xEC\x83\x89", + "\xBB\xF7" => "\xEC\x83\x8C", + "\xBB\xF8" => "\xEC\x83\x90", + "\xBB\xF9" => "\xEC\x83\x98", + "\xBB\xFA" => "\xEC\x83\x99", + "\xBB\xFB" => "\xEC\x83\x9B", + "\xBB\xFC" => "\xEC\x83\x9C", + "\xBB\xFD" => "\xEC\x83\x9D", + "\xBB\xFE" => "\xEC\x83\xA4", + "\xBC\x41" => "\xED\x8D\xAA", + "\xBC\x42" => "\xED\x8D\xAB", + "\xBC\x43" => "\xED\x8D\xAC", + "\xBC\x44" => "\xED\x8D\xAD", + "\xBC\x45" => "\xED\x8D\xAE", + "\xBC\x46" => "\xED\x8D\xAF", + "\xBC\x47" => "\xED\x8D\xB0", + "\xBC\x48" => "\xED\x8D\xB1", + "\xBC\x49" => "\xED\x8D\xB2", + "\xBC\x4A" => "\xED\x8D\xB3", + "\xBC\x4B" => "\xED\x8D\xB4", + "\xBC\x4C" => "\xED\x8D\xB5", + "\xBC\x4D" => "\xED\x8D\xB6", + "\xBC\x4E" => "\xED\x8D\xB7", + "\xBC\x4F" => "\xED\x8D\xB8", + "\xBC\x50" => "\xED\x8D\xB9", + "\xBC\x51" => "\xED\x8D\xBA", + "\xBC\x52" => "\xED\x8D\xBB", + "\xBC\x53" => "\xED\x8D\xBE", + "\xBC\x54" => "\xED\x8D\xBF", + "\xBC\x55" => "\xED\x8E\x81", + "\xBC\x56" => "\xED\x8E\x82", + "\xBC\x57" => "\xED\x8E\x83", + "\xBC\x58" => "\xED\x8E\x85", + "\xBC\x59" => "\xED\x8E\x86", + "\xBC\x5A" => "\xED\x8E\x87", + "\xBC\x61" => "\xED\x8E\x88", + "\xBC\x62" => "\xED\x8E\x89", + "\xBC\x63" => "\xED\x8E\x8A", + "\xBC\x64" => "\xED\x8E\x8B", + "\xBC\x65" => "\xED\x8E\x8E", + "\xBC\x66" => "\xED\x8E\x92", + "\xBC\x67" => "\xED\x8E\x93", + "\xBC\x68" => "\xED\x8E\x94", + "\xBC\x69" => "\xED\x8E\x95", + "\xBC\x6A" => "\xED\x8E\x96", + "\xBC\x6B" => "\xED\x8E\x97", + "\xBC\x6C" => "\xED\x8E\x9A", + "\xBC\x6D" => "\xED\x8E\x9B", + "\xBC\x6E" => "\xED\x8E\x9D", + "\xBC\x6F" => "\xED\x8E\x9E", + "\xBC\x70" => "\xED\x8E\x9F", + "\xBC\x71" => "\xED\x8E\xA1", + "\xBC\x72" => "\xED\x8E\xA2", + "\xBC\x73" => "\xED\x8E\xA3", + "\xBC\x74" => "\xED\x8E\xA4", + "\xBC\x75" => "\xED\x8E\xA5", + "\xBC\x76" => "\xED\x8E\xA6", + "\xBC\x77" => "\xED\x8E\xA7", + "\xBC\x78" => "\xED\x8E\xAA", + "\xBC\x79" => "\xED\x8E\xAC", + "\xBC\x7A" => "\xED\x8E\xAE", + "\xBC\x81" => "\xED\x8E\xAF", + "\xBC\x82" => "\xED\x8E\xB0", + "\xBC\x83" => "\xED\x8E\xB1", + "\xBC\x84" => "\xED\x8E\xB2", + "\xBC\x85" => "\xED\x8E\xB3", + "\xBC\x86" => "\xED\x8E\xB5", + "\xBC\x87" => "\xED\x8E\xB6", + "\xBC\x88" => "\xED\x8E\xB7", + "\xBC\x89" => "\xED\x8E\xB9", + "\xBC\x8A" => "\xED\x8E\xBA", + "\xBC\x8B" => "\xED\x8E\xBB", + "\xBC\x8C" => "\xED\x8E\xBD", + "\xBC\x8D" => "\xED\x8E\xBE", + "\xBC\x8E" => "\xED\x8E\xBF", + "\xBC\x8F" => "\xED\x8F\x80", + "\xBC\x90" => "\xED\x8F\x81", + "\xBC\x91" => "\xED\x8F\x82", + "\xBC\x92" => "\xED\x8F\x83", + "\xBC\x93" => "\xED\x8F\x86", + "\xBC\x94" => "\xED\x8F\x87", + "\xBC\x95" => "\xED\x8F\x8A", + "\xBC\x96" => "\xED\x8F\x8B", + "\xBC\x97" => "\xED\x8F\x8C", + "\xBC\x98" => "\xED\x8F\x8D", + "\xBC\x99" => "\xED\x8F\x8E", + "\xBC\x9A" => "\xED\x8F\x8F", + "\xBC\x9B" => "\xED\x8F\x91", + "\xBC\x9C" => "\xED\x8F\x92", + "\xBC\x9D" => "\xED\x8F\x93", + "\xBC\x9E" => "\xED\x8F\x94", + "\xBC\x9F" => "\xED\x8F\x95", + "\xBC\xA0" => "\xED\x8F\x96", + "\xBC\xA1" => "\xEC\x83\xA5", + "\xBC\xA2" => "\xEC\x83\xA8", + "\xBC\xA3" => "\xEC\x83\xAC", + "\xBC\xA4" => "\xEC\x83\xB4", + "\xBC\xA5" => "\xEC\x83\xB5", + "\xBC\xA6" => "\xEC\x83\xB7", + "\xBC\xA7" => "\xEC\x83\xB9", + "\xBC\xA8" => "\xEC\x84\x80", + "\xBC\xA9" => "\xEC\x84\x84", + "\xBC\xAA" => "\xEC\x84\x88", + "\xBC\xAB" => "\xEC\x84\x90", + "\xBC\xAC" => "\xEC\x84\x95", + "\xBC\xAD" => "\xEC\x84\x9C", + "\xBC\xAE" => "\xEC\x84\x9D", + "\xBC\xAF" => "\xEC\x84\x9E", + "\xBC\xB0" => "\xEC\x84\x9F", + "\xBC\xB1" => "\xEC\x84\xA0", + "\xBC\xB2" => "\xEC\x84\xA3", + "\xBC\xB3" => "\xEC\x84\xA4", + "\xBC\xB4" => "\xEC\x84\xA6", + "\xBC\xB5" => "\xEC\x84\xA7", + "\xBC\xB6" => "\xEC\x84\xAC", + "\xBC\xB7" => "\xEC\x84\xAD", + "\xBC\xB8" => "\xEC\x84\xAF", + "\xBC\xB9" => "\xEC\x84\xB0", + "\xBC\xBA" => "\xEC\x84\xB1", + "\xBC\xBB" => "\xEC\x84\xB6", + "\xBC\xBC" => "\xEC\x84\xB8", + "\xBC\xBD" => "\xEC\x84\xB9", + "\xBC\xBE" => "\xEC\x84\xBC", + "\xBC\xBF" => "\xEC\x85\x80", + "\xBC\xC0" => "\xEC\x85\x88", + "\xBC\xC1" => "\xEC\x85\x89", + "\xBC\xC2" => "\xEC\x85\x8B", + "\xBC\xC3" => "\xEC\x85\x8C", + "\xBC\xC4" => "\xEC\x85\x8D", + "\xBC\xC5" => "\xEC\x85\x94", + "\xBC\xC6" => "\xEC\x85\x95", + "\xBC\xC7" => "\xEC\x85\x98", + "\xBC\xC8" => "\xEC\x85\x9C", + "\xBC\xC9" => "\xEC\x85\xA4", + "\xBC\xCA" => "\xEC\x85\xA5", + "\xBC\xCB" => "\xEC\x85\xA7", + "\xBC\xCC" => "\xEC\x85\xA8", + "\xBC\xCD" => "\xEC\x85\xA9", + "\xBC\xCE" => "\xEC\x85\xB0", + "\xBC\xCF" => "\xEC\x85\xB4", + "\xBC\xD0" => "\xEC\x85\xB8", + "\xBC\xD1" => "\xEC\x86\x85", + "\xBC\xD2" => "\xEC\x86\x8C", + "\xBC\xD3" => "\xEC\x86\x8D", + "\xBC\xD4" => "\xEC\x86\x8E", + "\xBC\xD5" => "\xEC\x86\x90", + "\xBC\xD6" => "\xEC\x86\x94", + "\xBC\xD7" => "\xEC\x86\x96", + "\xBC\xD8" => "\xEC\x86\x9C", + "\xBC\xD9" => "\xEC\x86\x9D", + "\xBC\xDA" => "\xEC\x86\x9F", + "\xBC\xDB" => "\xEC\x86\xA1", + "\xBC\xDC" => "\xEC\x86\xA5", + "\xBC\xDD" => "\xEC\x86\xA8", + "\xBC\xDE" => "\xEC\x86\xA9", + "\xBC\xDF" => "\xEC\x86\xAC", + "\xBC\xE0" => "\xEC\x86\xB0", + "\xBC\xE1" => "\xEC\x86\xBD", + "\xBC\xE2" => "\xEC\x87\x84", + "\xBC\xE3" => "\xEC\x87\x88", + "\xBC\xE4" => "\xEC\x87\x8C", + "\xBC\xE5" => "\xEC\x87\x94", + "\xBC\xE6" => "\xEC\x87\x97", + "\xBC\xE7" => "\xEC\x87\x98", + "\xBC\xE8" => "\xEC\x87\xA0", + "\xBC\xE9" => "\xEC\x87\xA4", + "\xBC\xEA" => "\xEC\x87\xA8", + "\xBC\xEB" => "\xEC\x87\xB0", + "\xBC\xEC" => "\xEC\x87\xB1", + "\xBC\xED" => "\xEC\x87\xB3", + "\xBC\xEE" => "\xEC\x87\xBC", + "\xBC\xEF" => "\xEC\x87\xBD", + "\xBC\xF0" => "\xEC\x88\x80", + "\xBC\xF1" => "\xEC\x88\x84", + "\xBC\xF2" => "\xEC\x88\x8C", + "\xBC\xF3" => "\xEC\x88\x8D", + "\xBC\xF4" => "\xEC\x88\x8F", + "\xBC\xF5" => "\xEC\x88\x91", + "\xBC\xF6" => "\xEC\x88\x98", + "\xBC\xF7" => "\xEC\x88\x99", + "\xBC\xF8" => "\xEC\x88\x9C", + "\xBC\xF9" => "\xEC\x88\x9F", + "\xBC\xFA" => "\xEC\x88\xA0", + "\xBC\xFB" => "\xEC\x88\xA8", + "\xBC\xFC" => "\xEC\x88\xA9", + "\xBC\xFD" => "\xEC\x88\xAB", + "\xBC\xFE" => "\xEC\x88\xAD", + "\xBD\x41" => "\xED\x8F\x97", + "\xBD\x42" => "\xED\x8F\x99", + "\xBD\x43" => "\xED\x8F\x9A", + "\xBD\x44" => "\xED\x8F\x9B", + "\xBD\x45" => "\xED\x8F\x9C", + "\xBD\x46" => "\xED\x8F\x9D", + "\xBD\x47" => "\xED\x8F\x9E", + "\xBD\x48" => "\xED\x8F\x9F", + "\xBD\x49" => "\xED\x8F\xA0", + "\xBD\x4A" => "\xED\x8F\xA2", + "\xBD\x4B" => "\xED\x8F\xA4", + "\xBD\x4C" => "\xED\x8F\xA5", + "\xBD\x4D" => "\xED\x8F\xA6", + "\xBD\x4E" => "\xED\x8F\xA7", + "\xBD\x4F" => "\xED\x8F\xA8", + "\xBD\x50" => "\xED\x8F\xA9", + "\xBD\x51" => "\xED\x8F\xAA", + "\xBD\x52" => "\xED\x8F\xAB", + "\xBD\x53" => "\xED\x8F\xAE", + "\xBD\x54" => "\xED\x8F\xAF", + "\xBD\x55" => "\xED\x8F\xB1", + "\xBD\x56" => "\xED\x8F\xB2", + "\xBD\x57" => "\xED\x8F\xB3", + "\xBD\x58" => "\xED\x8F\xB5", + "\xBD\x59" => "\xED\x8F\xB6", + "\xBD\x5A" => "\xED\x8F\xB7", + "\xBD\x61" => "\xED\x8F\xB8", + "\xBD\x62" => "\xED\x8F\xB9", + "\xBD\x63" => "\xED\x8F\xBA", + "\xBD\x64" => "\xED\x8F\xBB", + "\xBD\x65" => "\xED\x8F\xBE", + "\xBD\x66" => "\xED\x90\x80", + "\xBD\x67" => "\xED\x90\x82", + "\xBD\x68" => "\xED\x90\x83", + "\xBD\x69" => "\xED\x90\x84", + "\xBD\x6A" => "\xED\x90\x85", + "\xBD\x6B" => "\xED\x90\x86", + "\xBD\x6C" => "\xED\x90\x87", + "\xBD\x6D" => "\xED\x90\x89", + "\xBD\x6E" => "\xED\x90\x8A", + "\xBD\x6F" => "\xED\x90\x8B", + "\xBD\x70" => "\xED\x90\x8C", + "\xBD\x71" => "\xED\x90\x8D", + "\xBD\x72" => "\xED\x90\x8E", + "\xBD\x73" => "\xED\x90\x8F", + "\xBD\x74" => "\xED\x90\x90", + "\xBD\x75" => "\xED\x90\x91", + "\xBD\x76" => "\xED\x90\x92", + "\xBD\x77" => "\xED\x90\x93", + "\xBD\x78" => "\xED\x90\x94", + "\xBD\x79" => "\xED\x90\x95", + "\xBD\x7A" => "\xED\x90\x96", + "\xBD\x81" => "\xED\x90\x97", + "\xBD\x82" => "\xED\x90\x98", + "\xBD\x83" => "\xED\x90\x99", + "\xBD\x84" => "\xED\x90\x9A", + "\xBD\x85" => "\xED\x90\x9B", + "\xBD\x86" => "\xED\x90\x9C", + "\xBD\x87" => "\xED\x90\x9E", + "\xBD\x88" => "\xED\x90\x9F", + "\xBD\x89" => "\xED\x90\xA0", + "\xBD\x8A" => "\xED\x90\xA1", + "\xBD\x8B" => "\xED\x90\xA2", + "\xBD\x8C" => "\xED\x90\xA3", + "\xBD\x8D" => "\xED\x90\xA4", + "\xBD\x8E" => "\xED\x90\xA5", + "\xBD\x8F" => "\xED\x90\xA6", + "\xBD\x90" => "\xED\x90\xA7", + "\xBD\x91" => "\xED\x90\xA8", + "\xBD\x92" => "\xED\x90\xA9", + "\xBD\x93" => "\xED\x90\xAA", + "\xBD\x94" => "\xED\x90\xAB", + "\xBD\x95" => "\xED\x90\xAC", + "\xBD\x96" => "\xED\x90\xAD", + "\xBD\x97" => "\xED\x90\xAE", + "\xBD\x98" => "\xED\x90\xAF", + "\xBD\x99" => "\xED\x90\xB0", + "\xBD\x9A" => "\xED\x90\xB1", + "\xBD\x9B" => "\xED\x90\xB2", + "\xBD\x9C" => "\xED\x90\xB3", + "\xBD\x9D" => "\xED\x90\xB4", + "\xBD\x9E" => "\xED\x90\xB5", + "\xBD\x9F" => "\xED\x90\xB6", + "\xBD\xA0" => "\xED\x90\xB7", + "\xBD\xA1" => "\xEC\x88\xAF", + "\xBD\xA2" => "\xEC\x88\xB1", + "\xBD\xA3" => "\xEC\x88\xB2", + "\xBD\xA4" => "\xEC\x88\xB4", + "\xBD\xA5" => "\xEC\x89\x88", + "\xBD\xA6" => "\xEC\x89\x90", + "\xBD\xA7" => "\xEC\x89\x91", + "\xBD\xA8" => "\xEC\x89\x94", + "\xBD\xA9" => "\xEC\x89\x98", + "\xBD\xAA" => "\xEC\x89\xA0", + "\xBD\xAB" => "\xEC\x89\xA5", + "\xBD\xAC" => "\xEC\x89\xAC", + "\xBD\xAD" => "\xEC\x89\xAD", + "\xBD\xAE" => "\xEC\x89\xB0", + "\xBD\xAF" => "\xEC\x89\xB4", + "\xBD\xB0" => "\xEC\x89\xBC", + "\xBD\xB1" => "\xEC\x89\xBD", + "\xBD\xB2" => "\xEC\x89\xBF", + "\xBD\xB3" => "\xEC\x8A\x81", + "\xBD\xB4" => "\xEC\x8A\x88", + "\xBD\xB5" => "\xEC\x8A\x89", + "\xBD\xB6" => "\xEC\x8A\x90", + "\xBD\xB7" => "\xEC\x8A\x98", + "\xBD\xB8" => "\xEC\x8A\x9B", + "\xBD\xB9" => "\xEC\x8A\x9D", + "\xBD\xBA" => "\xEC\x8A\xA4", + "\xBD\xBB" => "\xEC\x8A\xA5", + "\xBD\xBC" => "\xEC\x8A\xA8", + "\xBD\xBD" => "\xEC\x8A\xAC", + "\xBD\xBE" => "\xEC\x8A\xAD", + "\xBD\xBF" => "\xEC\x8A\xB4", + "\xBD\xC0" => "\xEC\x8A\xB5", + "\xBD\xC1" => "\xEC\x8A\xB7", + "\xBD\xC2" => "\xEC\x8A\xB9", + "\xBD\xC3" => "\xEC\x8B\x9C", + "\xBD\xC4" => "\xEC\x8B\x9D", + "\xBD\xC5" => "\xEC\x8B\xA0", + "\xBD\xC6" => "\xEC\x8B\xA3", + "\xBD\xC7" => "\xEC\x8B\xA4", + "\xBD\xC8" => "\xEC\x8B\xAB", + "\xBD\xC9" => "\xEC\x8B\xAC", + "\xBD\xCA" => "\xEC\x8B\xAD", + "\xBD\xCB" => "\xEC\x8B\xAF", + "\xBD\xCC" => "\xEC\x8B\xB1", + "\xBD\xCD" => "\xEC\x8B\xB6", + "\xBD\xCE" => "\xEC\x8B\xB8", + "\xBD\xCF" => "\xEC\x8B\xB9", + "\xBD\xD0" => "\xEC\x8B\xBB", + "\xBD\xD1" => "\xEC\x8B\xBC", + "\xBD\xD2" => "\xEC\x8C\x80", + "\xBD\xD3" => "\xEC\x8C\x88", + "\xBD\xD4" => "\xEC\x8C\x89", + "\xBD\xD5" => "\xEC\x8C\x8C", + "\xBD\xD6" => "\xEC\x8C\x8D", + "\xBD\xD7" => "\xEC\x8C\x93", + "\xBD\xD8" => "\xEC\x8C\x94", + "\xBD\xD9" => "\xEC\x8C\x95", + "\xBD\xDA" => "\xEC\x8C\x98", + "\xBD\xDB" => "\xEC\x8C\x9C", + "\xBD\xDC" => "\xEC\x8C\xA4", + "\xBD\xDD" => "\xEC\x8C\xA5", + "\xBD\xDE" => "\xEC\x8C\xA8", + "\xBD\xDF" => "\xEC\x8C\xA9", + "\xBD\xE0" => "\xEC\x8D\x85", + "\xBD\xE1" => "\xEC\x8D\xA8", + "\xBD\xE2" => "\xEC\x8D\xA9", + "\xBD\xE3" => "\xEC\x8D\xAC", + "\xBD\xE4" => "\xEC\x8D\xB0", + "\xBD\xE5" => "\xEC\x8D\xB2", + "\xBD\xE6" => "\xEC\x8D\xB8", + "\xBD\xE7" => "\xEC\x8D\xB9", + "\xBD\xE8" => "\xEC\x8D\xBC", + "\xBD\xE9" => "\xEC\x8D\xBD", + "\xBD\xEA" => "\xEC\x8E\x84", + "\xBD\xEB" => "\xEC\x8E\x88", + "\xBD\xEC" => "\xEC\x8E\x8C", + "\xBD\xED" => "\xEC\x8F\x80", + "\xBD\xEE" => "\xEC\x8F\x98", + "\xBD\xEF" => "\xEC\x8F\x99", + "\xBD\xF0" => "\xEC\x8F\x9C", + "\xBD\xF1" => "\xEC\x8F\x9F", + "\xBD\xF2" => "\xEC\x8F\xA0", + "\xBD\xF3" => "\xEC\x8F\xA2", + "\xBD\xF4" => "\xEC\x8F\xA8", + "\xBD\xF5" => "\xEC\x8F\xA9", + "\xBD\xF6" => "\xEC\x8F\xAD", + "\xBD\xF7" => "\xEC\x8F\xB4", + "\xBD\xF8" => "\xEC\x8F\xB5", + "\xBD\xF9" => "\xEC\x8F\xB8", + "\xBD\xFA" => "\xEC\x90\x88", + "\xBD\xFB" => "\xEC\x90\x90", + "\xBD\xFC" => "\xEC\x90\xA4", + "\xBD\xFD" => "\xEC\x90\xAC", + "\xBD\xFE" => "\xEC\x90\xB0", + "\xBE\x41" => "\xED\x90\xB8", + "\xBE\x42" => "\xED\x90\xB9", + "\xBE\x43" => "\xED\x90\xBA", + "\xBE\x44" => "\xED\x90\xBB", + "\xBE\x45" => "\xED\x90\xBC", + "\xBE\x46" => "\xED\x90\xBD", + "\xBE\x47" => "\xED\x90\xBE", + "\xBE\x48" => "\xED\x90\xBF", + "\xBE\x49" => "\xED\x91\x81", + "\xBE\x4A" => "\xED\x91\x82", + "\xBE\x4B" => "\xED\x91\x83", + "\xBE\x4C" => "\xED\x91\x85", + "\xBE\x4D" => "\xED\x91\x86", + "\xBE\x4E" => "\xED\x91\x87", + "\xBE\x4F" => "\xED\x91\x88", + "\xBE\x50" => "\xED\x91\x89", + "\xBE\x51" => "\xED\x91\x8A", + "\xBE\x52" => "\xED\x91\x8B", + "\xBE\x53" => "\xED\x91\x8C", + "\xBE\x54" => "\xED\x91\x8D", + "\xBE\x55" => "\xED\x91\x8E", + "\xBE\x56" => "\xED\x91\x8F", + "\xBE\x57" => "\xED\x91\x90", + "\xBE\x58" => "\xED\x91\x91", + "\xBE\x59" => "\xED\x91\x92", + "\xBE\x5A" => "\xED\x91\x93", + "\xBE\x61" => "\xED\x91\x94", + "\xBE\x62" => "\xED\x91\x95", + "\xBE\x63" => "\xED\x91\x96", + "\xBE\x64" => "\xED\x91\x97", + "\xBE\x65" => "\xED\x91\x98", + "\xBE\x66" => "\xED\x91\x99", + "\xBE\x67" => "\xED\x91\x9A", + "\xBE\x68" => "\xED\x91\x9B", + "\xBE\x69" => "\xED\x91\x9D", + "\xBE\x6A" => "\xED\x91\x9E", + "\xBE\x6B" => "\xED\x91\x9F", + "\xBE\x6C" => "\xED\x91\xA1", + "\xBE\x6D" => "\xED\x91\xA2", + "\xBE\x6E" => "\xED\x91\xA3", + "\xBE\x6F" => "\xED\x91\xA5", + "\xBE\x70" => "\xED\x91\xA6", + "\xBE\x71" => "\xED\x91\xA7", + "\xBE\x72" => "\xED\x91\xA8", + "\xBE\x73" => "\xED\x91\xA9", + "\xBE\x74" => "\xED\x91\xAA", + "\xBE\x75" => "\xED\x91\xAB", + "\xBE\x76" => "\xED\x91\xAC", + "\xBE\x77" => "\xED\x91\xAE", + "\xBE\x78" => "\xED\x91\xB0", + "\xBE\x79" => "\xED\x91\xB1", + "\xBE\x7A" => "\xED\x91\xB2", + "\xBE\x81" => "\xED\x91\xB3", + "\xBE\x82" => "\xED\x91\xB4", + "\xBE\x83" => "\xED\x91\xB5", + "\xBE\x84" => "\xED\x91\xB6", + "\xBE\x85" => "\xED\x91\xB7", + "\xBE\x86" => "\xED\x91\xBA", + "\xBE\x87" => "\xED\x91\xBB", + "\xBE\x88" => "\xED\x91\xBD", + "\xBE\x89" => "\xED\x91\xBE", + "\xBE\x8A" => "\xED\x92\x81", + "\xBE\x8B" => "\xED\x92\x83", + "\xBE\x8C" => "\xED\x92\x84", + "\xBE\x8D" => "\xED\x92\x85", + "\xBE\x8E" => "\xED\x92\x86", + "\xBE\x8F" => "\xED\x92\x87", + "\xBE\x90" => "\xED\x92\x8A", + "\xBE\x91" => "\xED\x92\x8C", + "\xBE\x92" => "\xED\x92\x8E", + "\xBE\x93" => "\xED\x92\x8F", + "\xBE\x94" => "\xED\x92\x90", + "\xBE\x95" => "\xED\x92\x91", + "\xBE\x96" => "\xED\x92\x92", + "\xBE\x97" => "\xED\x92\x93", + "\xBE\x98" => "\xED\x92\x95", + "\xBE\x99" => "\xED\x92\x96", + "\xBE\x9A" => "\xED\x92\x97", + "\xBE\x9B" => "\xED\x92\x98", + "\xBE\x9C" => "\xED\x92\x99", + "\xBE\x9D" => "\xED\x92\x9A", + "\xBE\x9E" => "\xED\x92\x9B", + "\xBE\x9F" => "\xED\x92\x9C", + "\xBE\xA0" => "\xED\x92\x9D", + "\xBE\xA1" => "\xEC\x90\xB4", + "\xBE\xA2" => "\xEC\x90\xBC", + "\xBE\xA3" => "\xEC\x90\xBD", + "\xBE\xA4" => "\xEC\x91\x88", + "\xBE\xA5" => "\xEC\x91\xA4", + "\xBE\xA6" => "\xEC\x91\xA5", + "\xBE\xA7" => "\xEC\x91\xA8", + "\xBE\xA8" => "\xEC\x91\xAC", + "\xBE\xA9" => "\xEC\x91\xB4", + "\xBE\xAA" => "\xEC\x91\xB5", + "\xBE\xAB" => "\xEC\x91\xB9", + "\xBE\xAC" => "\xEC\x92\x80", + "\xBE\xAD" => "\xEC\x92\x94", + "\xBE\xAE" => "\xEC\x92\x9C", + "\xBE\xAF" => "\xEC\x92\xB8", + "\xBE\xB0" => "\xEC\x92\xBC", + "\xBE\xB1" => "\xEC\x93\xA9", + "\xBE\xB2" => "\xEC\x93\xB0", + "\xBE\xB3" => "\xEC\x93\xB1", + "\xBE\xB4" => "\xEC\x93\xB4", + "\xBE\xB5" => "\xEC\x93\xB8", + "\xBE\xB6" => "\xEC\x93\xBA", + "\xBE\xB7" => "\xEC\x93\xBF", + "\xBE\xB8" => "\xEC\x94\x80", + "\xBE\xB9" => "\xEC\x94\x81", + "\xBE\xBA" => "\xEC\x94\x8C", + "\xBE\xBB" => "\xEC\x94\x90", + "\xBE\xBC" => "\xEC\x94\x94", + "\xBE\xBD" => "\xEC\x94\x9C", + "\xBE\xBE" => "\xEC\x94\xA8", + "\xBE\xBF" => "\xEC\x94\xA9", + "\xBE\xC0" => "\xEC\x94\xAC", + "\xBE\xC1" => "\xEC\x94\xB0", + "\xBE\xC2" => "\xEC\x94\xB8", + "\xBE\xC3" => "\xEC\x94\xB9", + "\xBE\xC4" => "\xEC\x94\xBB", + "\xBE\xC5" => "\xEC\x94\xBD", + "\xBE\xC6" => "\xEC\x95\x84", + "\xBE\xC7" => "\xEC\x95\x85", + "\xBE\xC8" => "\xEC\x95\x88", + "\xBE\xC9" => "\xEC\x95\x89", + "\xBE\xCA" => "\xEC\x95\x8A", + "\xBE\xCB" => "\xEC\x95\x8C", + "\xBE\xCC" => "\xEC\x95\x8D", + "\xBE\xCD" => "\xEC\x95\x8E", + "\xBE\xCE" => "\xEC\x95\x93", + "\xBE\xCF" => "\xEC\x95\x94", + "\xBE\xD0" => "\xEC\x95\x95", + "\xBE\xD1" => "\xEC\x95\x97", + "\xBE\xD2" => "\xEC\x95\x98", + "\xBE\xD3" => "\xEC\x95\x99", + "\xBE\xD4" => "\xEC\x95\x9D", + "\xBE\xD5" => "\xEC\x95\x9E", + "\xBE\xD6" => "\xEC\x95\xA0", + "\xBE\xD7" => "\xEC\x95\xA1", + "\xBE\xD8" => "\xEC\x95\xA4", + "\xBE\xD9" => "\xEC\x95\xA8", + "\xBE\xDA" => "\xEC\x95\xB0", + "\xBE\xDB" => "\xEC\x95\xB1", + "\xBE\xDC" => "\xEC\x95\xB3", + "\xBE\xDD" => "\xEC\x95\xB4", + "\xBE\xDE" => "\xEC\x95\xB5", + "\xBE\xDF" => "\xEC\x95\xBC", + "\xBE\xE0" => "\xEC\x95\xBD", + "\xBE\xE1" => "\xEC\x96\x80", + "\xBE\xE2" => "\xEC\x96\x84", + "\xBE\xE3" => "\xEC\x96\x87", + "\xBE\xE4" => "\xEC\x96\x8C", + "\xBE\xE5" => "\xEC\x96\x8D", + "\xBE\xE6" => "\xEC\x96\x8F", + "\xBE\xE7" => "\xEC\x96\x91", + "\xBE\xE8" => "\xEC\x96\x95", + "\xBE\xE9" => "\xEC\x96\x97", + "\xBE\xEA" => "\xEC\x96\x98", + "\xBE\xEB" => "\xEC\x96\x9C", + "\xBE\xEC" => "\xEC\x96\xA0", + "\xBE\xED" => "\xEC\x96\xA9", + "\xBE\xEE" => "\xEC\x96\xB4", + "\xBE\xEF" => "\xEC\x96\xB5", + "\xBE\xF0" => "\xEC\x96\xB8", + "\xBE\xF1" => "\xEC\x96\xB9", + "\xBE\xF2" => "\xEC\x96\xBB", + "\xBE\xF3" => "\xEC\x96\xBC", + "\xBE\xF4" => "\xEC\x96\xBD", + "\xBE\xF5" => "\xEC\x96\xBE", + "\xBE\xF6" => "\xEC\x97\x84", + "\xBE\xF7" => "\xEC\x97\x85", + "\xBE\xF8" => "\xEC\x97\x86", + "\xBE\xF9" => "\xEC\x97\x87", + "\xBE\xFA" => "\xEC\x97\x88", + "\xBE\xFB" => "\xEC\x97\x89", + "\xBE\xFC" => "\xEC\x97\x8A", + "\xBE\xFD" => "\xEC\x97\x8C", + "\xBE\xFE" => "\xEC\x97\x8E", + "\xBF\x41" => "\xED\x92\x9E", + "\xBF\x42" => "\xED\x92\x9F", + "\xBF\x43" => "\xED\x92\xA0", + "\xBF\x44" => "\xED\x92\xA1", + "\xBF\x45" => "\xED\x92\xA2", + "\xBF\x46" => "\xED\x92\xA3", + "\xBF\x47" => "\xED\x92\xA4", + "\xBF\x48" => "\xED\x92\xA5", + "\xBF\x49" => "\xED\x92\xA6", + "\xBF\x4A" => "\xED\x92\xA7", + "\xBF\x4B" => "\xED\x92\xA8", + "\xBF\x4C" => "\xED\x92\xAA", + "\xBF\x4D" => "\xED\x92\xAB", + "\xBF\x4E" => "\xED\x92\xAC", + "\xBF\x4F" => "\xED\x92\xAD", + "\xBF\x50" => "\xED\x92\xAE", + "\xBF\x51" => "\xED\x92\xAF", + "\xBF\x52" => "\xED\x92\xB0", + "\xBF\x53" => "\xED\x92\xB1", + "\xBF\x54" => "\xED\x92\xB2", + "\xBF\x55" => "\xED\x92\xB3", + "\xBF\x56" => "\xED\x92\xB4", + "\xBF\x57" => "\xED\x92\xB5", + "\xBF\x58" => "\xED\x92\xB6", + "\xBF\x59" => "\xED\x92\xB7", + "\xBF\x5A" => "\xED\x92\xB8", + "\xBF\x61" => "\xED\x92\xB9", + "\xBF\x62" => "\xED\x92\xBA", + "\xBF\x63" => "\xED\x92\xBB", + "\xBF\x64" => "\xED\x92\xBC", + "\xBF\x65" => "\xED\x92\xBD", + "\xBF\x66" => "\xED\x92\xBE", + "\xBF\x67" => "\xED\x92\xBF", + "\xBF\x68" => "\xED\x93\x80", + "\xBF\x69" => "\xED\x93\x81", + "\xBF\x6A" => "\xED\x93\x82", + "\xBF\x6B" => "\xED\x93\x83", + "\xBF\x6C" => "\xED\x93\x84", + "\xBF\x6D" => "\xED\x93\x85", + "\xBF\x6E" => "\xED\x93\x86", + "\xBF\x6F" => "\xED\x93\x87", + "\xBF\x70" => "\xED\x93\x88", + "\xBF\x71" => "\xED\x93\x89", + "\xBF\x72" => "\xED\x93\x8A", + "\xBF\x73" => "\xED\x93\x8B", + "\xBF\x74" => "\xED\x93\x8D", + "\xBF\x75" => "\xED\x93\x8E", + "\xBF\x76" => "\xED\x93\x8F", + "\xBF\x77" => "\xED\x93\x91", + "\xBF\x78" => "\xED\x93\x92", + "\xBF\x79" => "\xED\x93\x93", + "\xBF\x7A" => "\xED\x93\x95", + "\xBF\x81" => "\xED\x93\x96", + "\xBF\x82" => "\xED\x93\x97", + "\xBF\x83" => "\xED\x93\x98", + "\xBF\x84" => "\xED\x93\x99", + "\xBF\x85" => "\xED\x93\x9A", + "\xBF\x86" => "\xED\x93\x9B", + "\xBF\x87" => "\xED\x93\x9D", + "\xBF\x88" => "\xED\x93\x9E", + "\xBF\x89" => "\xED\x93\xA0", + "\xBF\x8A" => "\xED\x93\xA1", + "\xBF\x8B" => "\xED\x93\xA2", + "\xBF\x8C" => "\xED\x93\xA3", + "\xBF\x8D" => "\xED\x93\xA4", + "\xBF\x8E" => "\xED\x93\xA5", + "\xBF\x8F" => "\xED\x93\xA6", + "\xBF\x90" => "\xED\x93\xA7", + "\xBF\x91" => "\xED\x93\xA9", + "\xBF\x92" => "\xED\x93\xAA", + "\xBF\x93" => "\xED\x93\xAB", + "\xBF\x94" => "\xED\x93\xAD", + "\xBF\x95" => "\xED\x93\xAE", + "\xBF\x96" => "\xED\x93\xAF", + "\xBF\x97" => "\xED\x93\xB1", + "\xBF\x98" => "\xED\x93\xB2", + "\xBF\x99" => "\xED\x93\xB3", + "\xBF\x9A" => "\xED\x93\xB4", + "\xBF\x9B" => "\xED\x93\xB5", + "\xBF\x9C" => "\xED\x93\xB6", + "\xBF\x9D" => "\xED\x93\xB7", + "\xBF\x9E" => "\xED\x93\xB9", + "\xBF\x9F" => "\xED\x93\xBA", + "\xBF\xA0" => "\xED\x93\xBC", + "\xBF\xA1" => "\xEC\x97\x90", + "\xBF\xA2" => "\xEC\x97\x91", + "\xBF\xA3" => "\xEC\x97\x94", + "\xBF\xA4" => "\xEC\x97\x98", + "\xBF\xA5" => "\xEC\x97\xA0", + "\xBF\xA6" => "\xEC\x97\xA1", + "\xBF\xA7" => "\xEC\x97\xA3", + "\xBF\xA8" => "\xEC\x97\xA5", + "\xBF\xA9" => "\xEC\x97\xAC", + "\xBF\xAA" => "\xEC\x97\xAD", + "\xBF\xAB" => "\xEC\x97\xAE", + "\xBF\xAC" => "\xEC\x97\xB0", + "\xBF\xAD" => "\xEC\x97\xB4", + "\xBF\xAE" => "\xEC\x97\xB6", + "\xBF\xAF" => "\xEC\x97\xB7", + "\xBF\xB0" => "\xEC\x97\xBC", + "\xBF\xB1" => "\xEC\x97\xBD", + "\xBF\xB2" => "\xEC\x97\xBE", + "\xBF\xB3" => "\xEC\x97\xBF", + "\xBF\xB4" => "\xEC\x98\x80", + "\xBF\xB5" => "\xEC\x98\x81", + "\xBF\xB6" => "\xEC\x98\x85", + "\xBF\xB7" => "\xEC\x98\x86", + "\xBF\xB8" => "\xEC\x98\x87", + "\xBF\xB9" => "\xEC\x98\x88", + "\xBF\xBA" => "\xEC\x98\x8C", + "\xBF\xBB" => "\xEC\x98\x90", + "\xBF\xBC" => "\xEC\x98\x98", + "\xBF\xBD" => "\xEC\x98\x99", + "\xBF\xBE" => "\xEC\x98\x9B", + "\xBF\xBF" => "\xEC\x98\x9C", + "\xBF\xC0" => "\xEC\x98\xA4", + "\xBF\xC1" => "\xEC\x98\xA5", + "\xBF\xC2" => "\xEC\x98\xA8", + "\xBF\xC3" => "\xEC\x98\xAC", + "\xBF\xC4" => "\xEC\x98\xAD", + "\xBF\xC5" => "\xEC\x98\xAE", + "\xBF\xC6" => "\xEC\x98\xB0", + "\xBF\xC7" => "\xEC\x98\xB3", + "\xBF\xC8" => "\xEC\x98\xB4", + "\xBF\xC9" => "\xEC\x98\xB5", + "\xBF\xCA" => "\xEC\x98\xB7", + "\xBF\xCB" => "\xEC\x98\xB9", + "\xBF\xCC" => "\xEC\x98\xBB", + "\xBF\xCD" => "\xEC\x99\x80", + "\xBF\xCE" => "\xEC\x99\x81", + "\xBF\xCF" => "\xEC\x99\x84", + "\xBF\xD0" => "\xEC\x99\x88", + "\xBF\xD1" => "\xEC\x99\x90", + "\xBF\xD2" => "\xEC\x99\x91", + "\xBF\xD3" => "\xEC\x99\x93", + "\xBF\xD4" => "\xEC\x99\x94", + "\xBF\xD5" => "\xEC\x99\x95", + "\xBF\xD6" => "\xEC\x99\x9C", + "\xBF\xD7" => "\xEC\x99\x9D", + "\xBF\xD8" => "\xEC\x99\xA0", + "\xBF\xD9" => "\xEC\x99\xAC", + "\xBF\xDA" => "\xEC\x99\xAF", + "\xBF\xDB" => "\xEC\x99\xB1", + "\xBF\xDC" => "\xEC\x99\xB8", + "\xBF\xDD" => "\xEC\x99\xB9", + "\xBF\xDE" => "\xEC\x99\xBC", + "\xBF\xDF" => "\xEC\x9A\x80", + "\xBF\xE0" => "\xEC\x9A\x88", + "\xBF\xE1" => "\xEC\x9A\x89", + "\xBF\xE2" => "\xEC\x9A\x8B", + "\xBF\xE3" => "\xEC\x9A\x8D", + "\xBF\xE4" => "\xEC\x9A\x94", + "\xBF\xE5" => "\xEC\x9A\x95", + "\xBF\xE6" => "\xEC\x9A\x98", + "\xBF\xE7" => "\xEC\x9A\x9C", + "\xBF\xE8" => "\xEC\x9A\xA4", + "\xBF\xE9" => "\xEC\x9A\xA5", + "\xBF\xEA" => "\xEC\x9A\xA7", + "\xBF\xEB" => "\xEC\x9A\xA9", + "\xBF\xEC" => "\xEC\x9A\xB0", + "\xBF\xED" => "\xEC\x9A\xB1", + "\xBF\xEE" => "\xEC\x9A\xB4", + "\xBF\xEF" => "\xEC\x9A\xB8", + "\xBF\xF0" => "\xEC\x9A\xB9", + "\xBF\xF1" => "\xEC\x9A\xBA", + "\xBF\xF2" => "\xEC\x9B\x80", + "\xBF\xF3" => "\xEC\x9B\x81", + "\xBF\xF4" => "\xEC\x9B\x83", + "\xBF\xF5" => "\xEC\x9B\x85", + "\xBF\xF6" => "\xEC\x9B\x8C", + "\xBF\xF7" => "\xEC\x9B\x8D", + "\xBF\xF8" => "\xEC\x9B\x90", + "\xBF\xF9" => "\xEC\x9B\x94", + "\xBF\xFA" => "\xEC\x9B\x9C", + "\xBF\xFB" => "\xEC\x9B\x9D", + "\xBF\xFC" => "\xEC\x9B\xA0", + "\xBF\xFD" => "\xEC\x9B\xA1", + "\xBF\xFE" => "\xEC\x9B\xA8", + "\xC0\x41" => "\xED\x93\xBE", + "\xC0\x42" => "\xED\x93\xBF", + "\xC0\x43" => "\xED\x94\x80", + "\xC0\x44" => "\xED\x94\x81", + "\xC0\x45" => "\xED\x94\x82", + "\xC0\x46" => "\xED\x94\x83", + "\xC0\x47" => "\xED\x94\x85", + "\xC0\x48" => "\xED\x94\x86", + "\xC0\x49" => "\xED\x94\x87", + "\xC0\x4A" => "\xED\x94\x89", + "\xC0\x4B" => "\xED\x94\x8A", + "\xC0\x4C" => "\xED\x94\x8B", + "\xC0\x4D" => "\xED\x94\x8D", + "\xC0\x4E" => "\xED\x94\x8E", + "\xC0\x4F" => "\xED\x94\x8F", + "\xC0\x50" => "\xED\x94\x90", + "\xC0\x51" => "\xED\x94\x91", + "\xC0\x52" => "\xED\x94\x92", + "\xC0\x53" => "\xED\x94\x93", + "\xC0\x54" => "\xED\x94\x96", + "\xC0\x55" => "\xED\x94\x98", + "\xC0\x56" => "\xED\x94\x99", + "\xC0\x57" => "\xED\x94\x9A", + "\xC0\x58" => "\xED\x94\x9B", + "\xC0\x59" => "\xED\x94\x9C", + "\xC0\x5A" => "\xED\x94\x9D", + "\xC0\x61" => "\xED\x94\x9E", + "\xC0\x62" => "\xED\x94\x9F", + "\xC0\x63" => "\xED\x94\xA0", + "\xC0\x64" => "\xED\x94\xA1", + "\xC0\x65" => "\xED\x94\xA2", + "\xC0\x66" => "\xED\x94\xA3", + "\xC0\x67" => "\xED\x94\xA4", + "\xC0\x68" => "\xED\x94\xA5", + "\xC0\x69" => "\xED\x94\xA6", + "\xC0\x6A" => "\xED\x94\xA7", + "\xC0\x6B" => "\xED\x94\xA8", + "\xC0\x6C" => "\xED\x94\xA9", + "\xC0\x6D" => "\xED\x94\xAA", + "\xC0\x6E" => "\xED\x94\xAB", + "\xC0\x6F" => "\xED\x94\xAC", + "\xC0\x70" => "\xED\x94\xAD", + "\xC0\x71" => "\xED\x94\xAE", + "\xC0\x72" => "\xED\x94\xAF", + "\xC0\x73" => "\xED\x94\xB0", + "\xC0\x74" => "\xED\x94\xB1", + "\xC0\x75" => "\xED\x94\xB2", + "\xC0\x76" => "\xED\x94\xB3", + "\xC0\x77" => "\xED\x94\xB4", + "\xC0\x78" => "\xED\x94\xB5", + "\xC0\x79" => "\xED\x94\xB6", + "\xC0\x7A" => "\xED\x94\xB7", + "\xC0\x81" => "\xED\x94\xB8", + "\xC0\x82" => "\xED\x94\xB9", + "\xC0\x83" => "\xED\x94\xBA", + "\xC0\x84" => "\xED\x94\xBB", + "\xC0\x85" => "\xED\x94\xBE", + "\xC0\x86" => "\xED\x94\xBF", + "\xC0\x87" => "\xED\x95\x81", + "\xC0\x88" => "\xED\x95\x82", + "\xC0\x89" => "\xED\x95\x83", + "\xC0\x8A" => "\xED\x95\x85", + "\xC0\x8B" => "\xED\x95\x86", + "\xC0\x8C" => "\xED\x95\x87", + "\xC0\x8D" => "\xED\x95\x88", + "\xC0\x8E" => "\xED\x95\x89", + "\xC0\x8F" => "\xED\x95\x8A", + "\xC0\x90" => "\xED\x95\x8B", + "\xC0\x91" => "\xED\x95\x8E", + "\xC0\x92" => "\xED\x95\x90", + "\xC0\x93" => "\xED\x95\x92", + "\xC0\x94" => "\xED\x95\x93", + "\xC0\x95" => "\xED\x95\x94", + "\xC0\x96" => "\xED\x95\x95", + "\xC0\x97" => "\xED\x95\x96", + "\xC0\x98" => "\xED\x95\x97", + "\xC0\x99" => "\xED\x95\x9A", + "\xC0\x9A" => "\xED\x95\x9B", + "\xC0\x9B" => "\xED\x95\x9D", + "\xC0\x9C" => "\xED\x95\x9E", + "\xC0\x9D" => "\xED\x95\x9F", + "\xC0\x9E" => "\xED\x95\xA1", + "\xC0\x9F" => "\xED\x95\xA2", + "\xC0\xA0" => "\xED\x95\xA3", + "\xC0\xA1" => "\xEC\x9B\xA9", + "\xC0\xA2" => "\xEC\x9B\xAC", + "\xC0\xA3" => "\xEC\x9B\xB0", + "\xC0\xA4" => "\xEC\x9B\xB8", + "\xC0\xA5" => "\xEC\x9B\xB9", + "\xC0\xA6" => "\xEC\x9B\xBD", + "\xC0\xA7" => "\xEC\x9C\x84", + "\xC0\xA8" => "\xEC\x9C\x85", + "\xC0\xA9" => "\xEC\x9C\x88", + "\xC0\xAA" => "\xEC\x9C\x8C", + "\xC0\xAB" => "\xEC\x9C\x94", + "\xC0\xAC" => "\xEC\x9C\x95", + "\xC0\xAD" => "\xEC\x9C\x97", + "\xC0\xAE" => "\xEC\x9C\x99", + "\xC0\xAF" => "\xEC\x9C\xA0", + "\xC0\xB0" => "\xEC\x9C\xA1", + "\xC0\xB1" => "\xEC\x9C\xA4", + "\xC0\xB2" => "\xEC\x9C\xA8", + "\xC0\xB3" => "\xEC\x9C\xB0", + "\xC0\xB4" => "\xEC\x9C\xB1", + "\xC0\xB5" => "\xEC\x9C\xB3", + "\xC0\xB6" => "\xEC\x9C\xB5", + "\xC0\xB7" => "\xEC\x9C\xB7", + "\xC0\xB8" => "\xEC\x9C\xBC", + "\xC0\xB9" => "\xEC\x9C\xBD", + "\xC0\xBA" => "\xEC\x9D\x80", + "\xC0\xBB" => "\xEC\x9D\x84", + "\xC0\xBC" => "\xEC\x9D\x8A", + "\xC0\xBD" => "\xEC\x9D\x8C", + "\xC0\xBE" => "\xEC\x9D\x8D", + "\xC0\xBF" => "\xEC\x9D\x8F", + "\xC0\xC0" => "\xEC\x9D\x91", + "\xC0\xC1" => "\xEC\x9D\x92", + "\xC0\xC2" => "\xEC\x9D\x93", + "\xC0\xC3" => "\xEC\x9D\x94", + "\xC0\xC4" => "\xEC\x9D\x95", + "\xC0\xC5" => "\xEC\x9D\x96", + "\xC0\xC6" => "\xEC\x9D\x97", + "\xC0\xC7" => "\xEC\x9D\x98", + "\xC0\xC8" => "\xEC\x9D\x9C", + "\xC0\xC9" => "\xEC\x9D\xA0", + "\xC0\xCA" => "\xEC\x9D\xA8", + "\xC0\xCB" => "\xEC\x9D\xAB", + "\xC0\xCC" => "\xEC\x9D\xB4", + "\xC0\xCD" => "\xEC\x9D\xB5", + "\xC0\xCE" => "\xEC\x9D\xB8", + "\xC0\xCF" => "\xEC\x9D\xBC", + "\xC0\xD0" => "\xEC\x9D\xBD", + "\xC0\xD1" => "\xEC\x9D\xBE", + "\xC0\xD2" => "\xEC\x9E\x83", + "\xC0\xD3" => "\xEC\x9E\x84", + "\xC0\xD4" => "\xEC\x9E\x85", + "\xC0\xD5" => "\xEC\x9E\x87", + "\xC0\xD6" => "\xEC\x9E\x88", + "\xC0\xD7" => "\xEC\x9E\x89", + "\xC0\xD8" => "\xEC\x9E\x8A", + "\xC0\xD9" => "\xEC\x9E\x8E", + "\xC0\xDA" => "\xEC\x9E\x90", + "\xC0\xDB" => "\xEC\x9E\x91", + "\xC0\xDC" => "\xEC\x9E\x94", + "\xC0\xDD" => "\xEC\x9E\x96", + "\xC0\xDE" => "\xEC\x9E\x97", + "\xC0\xDF" => "\xEC\x9E\x98", + "\xC0\xE0" => "\xEC\x9E\x9A", + "\xC0\xE1" => "\xEC\x9E\xA0", + "\xC0\xE2" => "\xEC\x9E\xA1", + "\xC0\xE3" => "\xEC\x9E\xA3", + "\xC0\xE4" => "\xEC\x9E\xA4", + "\xC0\xE5" => "\xEC\x9E\xA5", + "\xC0\xE6" => "\xEC\x9E\xA6", + "\xC0\xE7" => "\xEC\x9E\xAC", + "\xC0\xE8" => "\xEC\x9E\xAD", + "\xC0\xE9" => "\xEC\x9E\xB0", + "\xC0\xEA" => "\xEC\x9E\xB4", + "\xC0\xEB" => "\xEC\x9E\xBC", + "\xC0\xEC" => "\xEC\x9E\xBD", + "\xC0\xED" => "\xEC\x9E\xBF", + "\xC0\xEE" => "\xEC\x9F\x80", + "\xC0\xEF" => "\xEC\x9F\x81", + "\xC0\xF0" => "\xEC\x9F\x88", + "\xC0\xF1" => "\xEC\x9F\x89", + "\xC0\xF2" => "\xEC\x9F\x8C", + "\xC0\xF3" => "\xEC\x9F\x8E", + "\xC0\xF4" => "\xEC\x9F\x90", + "\xC0\xF5" => "\xEC\x9F\x98", + "\xC0\xF6" => "\xEC\x9F\x9D", + "\xC0\xF7" => "\xEC\x9F\xA4", + "\xC0\xF8" => "\xEC\x9F\xA8", + "\xC0\xF9" => "\xEC\x9F\xAC", + "\xC0\xFA" => "\xEC\xA0\x80", + "\xC0\xFB" => "\xEC\xA0\x81", + "\xC0\xFC" => "\xEC\xA0\x84", + "\xC0\xFD" => "\xEC\xA0\x88", + "\xC0\xFE" => "\xEC\xA0\x8A", + "\xC1\x41" => "\xED\x95\xA4", + "\xC1\x42" => "\xED\x95\xA6", + "\xC1\x43" => "\xED\x95\xA7", + "\xC1\x44" => "\xED\x95\xAA", + "\xC1\x45" => "\xED\x95\xAC", + "\xC1\x46" => "\xED\x95\xAE", + "\xC1\x47" => "\xED\x95\xAF", + "\xC1\x48" => "\xED\x95\xB0", + "\xC1\x49" => "\xED\x95\xB1", + "\xC1\x4A" => "\xED\x95\xB2", + "\xC1\x4B" => "\xED\x95\xB3", + "\xC1\x4C" => "\xED\x95\xB6", + "\xC1\x4D" => "\xED\x95\xB7", + "\xC1\x4E" => "\xED\x95\xB9", + "\xC1\x4F" => "\xED\x95\xBA", + "\xC1\x50" => "\xED\x95\xBB", + "\xC1\x51" => "\xED\x95\xBD", + "\xC1\x52" => "\xED\x95\xBE", + "\xC1\x53" => "\xED\x95\xBF", + "\xC1\x54" => "\xED\x96\x80", + "\xC1\x55" => "\xED\x96\x81", + "\xC1\x56" => "\xED\x96\x82", + "\xC1\x57" => "\xED\x96\x83", + "\xC1\x58" => "\xED\x96\x86", + "\xC1\x59" => "\xED\x96\x8A", + "\xC1\x5A" => "\xED\x96\x8B", + "\xC1\x61" => "\xED\x96\x8C", + "\xC1\x62" => "\xED\x96\x8D", + "\xC1\x63" => "\xED\x96\x8E", + "\xC1\x64" => "\xED\x96\x8F", + "\xC1\x65" => "\xED\x96\x91", + "\xC1\x66" => "\xED\x96\x92", + "\xC1\x67" => "\xED\x96\x93", + "\xC1\x68" => "\xED\x96\x94", + "\xC1\x69" => "\xED\x96\x95", + "\xC1\x6A" => "\xED\x96\x96", + "\xC1\x6B" => "\xED\x96\x97", + "\xC1\x6C" => "\xED\x96\x98", + "\xC1\x6D" => "\xED\x96\x99", + "\xC1\x6E" => "\xED\x96\x9A", + "\xC1\x6F" => "\xED\x96\x9B", + "\xC1\x70" => "\xED\x96\x9C", + "\xC1\x71" => "\xED\x96\x9D", + "\xC1\x72" => "\xED\x96\x9E", + "\xC1\x73" => "\xED\x96\x9F", + "\xC1\x74" => "\xED\x96\xA0", + "\xC1\x75" => "\xED\x96\xA1", + "\xC1\x76" => "\xED\x96\xA2", + "\xC1\x77" => "\xED\x96\xA3", + "\xC1\x78" => "\xED\x96\xA4", + "\xC1\x79" => "\xED\x96\xA6", + "\xC1\x7A" => "\xED\x96\xA7", + "\xC1\x81" => "\xED\x96\xA8", + "\xC1\x82" => "\xED\x96\xA9", + "\xC1\x83" => "\xED\x96\xAA", + "\xC1\x84" => "\xED\x96\xAB", + "\xC1\x85" => "\xED\x96\xAC", + "\xC1\x86" => "\xED\x96\xAD", + "\xC1\x87" => "\xED\x96\xAE", + "\xC1\x88" => "\xED\x96\xAF", + "\xC1\x89" => "\xED\x96\xB0", + "\xC1\x8A" => "\xED\x96\xB1", + "\xC1\x8B" => "\xED\x96\xB2", + "\xC1\x8C" => "\xED\x96\xB3", + "\xC1\x8D" => "\xED\x96\xB4", + "\xC1\x8E" => "\xED\x96\xB5", + "\xC1\x8F" => "\xED\x96\xB6", + "\xC1\x90" => "\xED\x96\xB7", + "\xC1\x91" => "\xED\x96\xB8", + "\xC1\x92" => "\xED\x96\xB9", + "\xC1\x93" => "\xED\x96\xBA", + "\xC1\x94" => "\xED\x96\xBB", + "\xC1\x95" => "\xED\x96\xBC", + "\xC1\x96" => "\xED\x96\xBD", + "\xC1\x97" => "\xED\x96\xBE", + "\xC1\x98" => "\xED\x96\xBF", + "\xC1\x99" => "\xED\x97\x80", + "\xC1\x9A" => "\xED\x97\x81", + "\xC1\x9B" => "\xED\x97\x82", + "\xC1\x9C" => "\xED\x97\x83", + "\xC1\x9D" => "\xED\x97\x84", + "\xC1\x9E" => "\xED\x97\x85", + "\xC1\x9F" => "\xED\x97\x86", + "\xC1\xA0" => "\xED\x97\x87", + "\xC1\xA1" => "\xEC\xA0\x90", + "\xC1\xA2" => "\xEC\xA0\x91", + "\xC1\xA3" => "\xEC\xA0\x93", + "\xC1\xA4" => "\xEC\xA0\x95", + "\xC1\xA5" => "\xEC\xA0\x96", + "\xC1\xA6" => "\xEC\xA0\x9C", + "\xC1\xA7" => "\xEC\xA0\x9D", + "\xC1\xA8" => "\xEC\xA0\xA0", + "\xC1\xA9" => "\xEC\xA0\xA4", + "\xC1\xAA" => "\xEC\xA0\xAC", + "\xC1\xAB" => "\xEC\xA0\xAD", + "\xC1\xAC" => "\xEC\xA0\xAF", + "\xC1\xAD" => "\xEC\xA0\xB1", + "\xC1\xAE" => "\xEC\xA0\xB8", + "\xC1\xAF" => "\xEC\xA0\xBC", + "\xC1\xB0" => "\xEC\xA1\x80", + "\xC1\xB1" => "\xEC\xA1\x88", + "\xC1\xB2" => "\xEC\xA1\x89", + "\xC1\xB3" => "\xEC\xA1\x8C", + "\xC1\xB4" => "\xEC\xA1\x8D", + "\xC1\xB5" => "\xEC\xA1\x94", + "\xC1\xB6" => "\xEC\xA1\xB0", + "\xC1\xB7" => "\xEC\xA1\xB1", + "\xC1\xB8" => "\xEC\xA1\xB4", + "\xC1\xB9" => "\xEC\xA1\xB8", + "\xC1\xBA" => "\xEC\xA1\xBA", + "\xC1\xBB" => "\xEC\xA2\x80", + "\xC1\xBC" => "\xEC\xA2\x81", + "\xC1\xBD" => "\xEC\xA2\x83", + "\xC1\xBE" => "\xEC\xA2\x85", + "\xC1\xBF" => "\xEC\xA2\x86", + "\xC1\xC0" => "\xEC\xA2\x87", + "\xC1\xC1" => "\xEC\xA2\x8B", + "\xC1\xC2" => "\xEC\xA2\x8C", + "\xC1\xC3" => "\xEC\xA2\x8D", + "\xC1\xC4" => "\xEC\xA2\x94", + "\xC1\xC5" => "\xEC\xA2\x9D", + "\xC1\xC6" => "\xEC\xA2\x9F", + "\xC1\xC7" => "\xEC\xA2\xA1", + "\xC1\xC8" => "\xEC\xA2\xA8", + "\xC1\xC9" => "\xEC\xA2\xBC", + "\xC1\xCA" => "\xEC\xA2\xBD", + "\xC1\xCB" => "\xEC\xA3\x84", + "\xC1\xCC" => "\xEC\xA3\x88", + "\xC1\xCD" => "\xEC\xA3\x8C", + "\xC1\xCE" => "\xEC\xA3\x94", + "\xC1\xCF" => "\xEC\xA3\x95", + "\xC1\xD0" => "\xEC\xA3\x97", + "\xC1\xD1" => "\xEC\xA3\x99", + "\xC1\xD2" => "\xEC\xA3\xA0", + "\xC1\xD3" => "\xEC\xA3\xA1", + "\xC1\xD4" => "\xEC\xA3\xA4", + "\xC1\xD5" => "\xEC\xA3\xB5", + "\xC1\xD6" => "\xEC\xA3\xBC", + "\xC1\xD7" => "\xEC\xA3\xBD", + "\xC1\xD8" => "\xEC\xA4\x80", + "\xC1\xD9" => "\xEC\xA4\x84", + "\xC1\xDA" => "\xEC\xA4\x85", + "\xC1\xDB" => "\xEC\xA4\x86", + "\xC1\xDC" => "\xEC\xA4\x8C", + "\xC1\xDD" => "\xEC\xA4\x8D", + "\xC1\xDE" => "\xEC\xA4\x8F", + "\xC1\xDF" => "\xEC\xA4\x91", + "\xC1\xE0" => "\xEC\xA4\x98", + "\xC1\xE1" => "\xEC\xA4\xAC", + "\xC1\xE2" => "\xEC\xA4\xB4", + "\xC1\xE3" => "\xEC\xA5\x90", + "\xC1\xE4" => "\xEC\xA5\x91", + "\xC1\xE5" => "\xEC\xA5\x94", + "\xC1\xE6" => "\xEC\xA5\x98", + "\xC1\xE7" => "\xEC\xA5\xA0", + "\xC1\xE8" => "\xEC\xA5\xA1", + "\xC1\xE9" => "\xEC\xA5\xA3", + "\xC1\xEA" => "\xEC\xA5\xAC", + "\xC1\xEB" => "\xEC\xA5\xB0", + "\xC1\xEC" => "\xEC\xA5\xB4", + "\xC1\xED" => "\xEC\xA5\xBC", + "\xC1\xEE" => "\xEC\xA6\x88", + "\xC1\xEF" => "\xEC\xA6\x89", + "\xC1\xF0" => "\xEC\xA6\x8C", + "\xC1\xF1" => "\xEC\xA6\x90", + "\xC1\xF2" => "\xEC\xA6\x98", + "\xC1\xF3" => "\xEC\xA6\x99", + "\xC1\xF4" => "\xEC\xA6\x9B", + "\xC1\xF5" => "\xEC\xA6\x9D", + "\xC1\xF6" => "\xEC\xA7\x80", + "\xC1\xF7" => "\xEC\xA7\x81", + "\xC1\xF8" => "\xEC\xA7\x84", + "\xC1\xF9" => "\xEC\xA7\x87", + "\xC1\xFA" => "\xEC\xA7\x88", + "\xC1\xFB" => "\xEC\xA7\x8A", + "\xC1\xFC" => "\xEC\xA7\x90", + "\xC1\xFD" => "\xEC\xA7\x91", + "\xC1\xFE" => "\xEC\xA7\x93", + "\xC2\x41" => "\xED\x97\x8A", + "\xC2\x42" => "\xED\x97\x8B", + "\xC2\x43" => "\xED\x97\x8D", + "\xC2\x44" => "\xED\x97\x8E", + "\xC2\x45" => "\xED\x97\x8F", + "\xC2\x46" => "\xED\x97\x91", + "\xC2\x47" => "\xED\x97\x93", + "\xC2\x48" => "\xED\x97\x94", + "\xC2\x49" => "\xED\x97\x95", + "\xC2\x4A" => "\xED\x97\x96", + "\xC2\x4B" => "\xED\x97\x97", + "\xC2\x4C" => "\xED\x97\x9A", + "\xC2\x4D" => "\xED\x97\x9C", + "\xC2\x4E" => "\xED\x97\x9E", + "\xC2\x4F" => "\xED\x97\x9F", + "\xC2\x50" => "\xED\x97\xA0", + "\xC2\x51" => "\xED\x97\xA1", + "\xC2\x52" => "\xED\x97\xA2", + "\xC2\x53" => "\xED\x97\xA3", + "\xC2\x54" => "\xED\x97\xA6", + "\xC2\x55" => "\xED\x97\xA7", + "\xC2\x56" => "\xED\x97\xA9", + "\xC2\x57" => "\xED\x97\xAA", + "\xC2\x58" => "\xED\x97\xAB", + "\xC2\x59" => "\xED\x97\xAD", + "\xC2\x5A" => "\xED\x97\xAE", + "\xC2\x61" => "\xED\x97\xAF", + "\xC2\x62" => "\xED\x97\xB0", + "\xC2\x63" => "\xED\x97\xB1", + "\xC2\x64" => "\xED\x97\xB2", + "\xC2\x65" => "\xED\x97\xB3", + "\xC2\x66" => "\xED\x97\xB6", + "\xC2\x67" => "\xED\x97\xB8", + "\xC2\x68" => "\xED\x97\xBA", + "\xC2\x69" => "\xED\x97\xBB", + "\xC2\x6A" => "\xED\x97\xBC", + "\xC2\x6B" => "\xED\x97\xBD", + "\xC2\x6C" => "\xED\x97\xBE", + "\xC2\x6D" => "\xED\x97\xBF", + "\xC2\x6E" => "\xED\x98\x82", + "\xC2\x6F" => "\xED\x98\x83", + "\xC2\x70" => "\xED\x98\x85", + "\xC2\x71" => "\xED\x98\x86", + "\xC2\x72" => "\xED\x98\x87", + "\xC2\x73" => "\xED\x98\x89", + "\xC2\x74" => "\xED\x98\x8A", + "\xC2\x75" => "\xED\x98\x8B", + "\xC2\x76" => "\xED\x98\x8C", + "\xC2\x77" => "\xED\x98\x8D", + "\xC2\x78" => "\xED\x98\x8E", + "\xC2\x79" => "\xED\x98\x8F", + "\xC2\x7A" => "\xED\x98\x92", + "\xC2\x81" => "\xED\x98\x96", + "\xC2\x82" => "\xED\x98\x97", + "\xC2\x83" => "\xED\x98\x98", + "\xC2\x84" => "\xED\x98\x99", + "\xC2\x85" => "\xED\x98\x9A", + "\xC2\x86" => "\xED\x98\x9B", + "\xC2\x87" => "\xED\x98\x9D", + "\xC2\x88" => "\xED\x98\x9E", + "\xC2\x89" => "\xED\x98\x9F", + "\xC2\x8A" => "\xED\x98\xA1", + "\xC2\x8B" => "\xED\x98\xA2", + "\xC2\x8C" => "\xED\x98\xA3", + "\xC2\x8D" => "\xED\x98\xA5", + "\xC2\x8E" => "\xED\x98\xA6", + "\xC2\x8F" => "\xED\x98\xA7", + "\xC2\x90" => "\xED\x98\xA8", + "\xC2\x91" => "\xED\x98\xA9", + "\xC2\x92" => "\xED\x98\xAA", + "\xC2\x93" => "\xED\x98\xAB", + "\xC2\x94" => "\xED\x98\xAC", + "\xC2\x95" => "\xED\x98\xAE", + "\xC2\x96" => "\xED\x98\xAF", + "\xC2\x97" => "\xED\x98\xB0", + "\xC2\x98" => "\xED\x98\xB1", + "\xC2\x99" => "\xED\x98\xB2", + "\xC2\x9A" => "\xED\x98\xB3", + "\xC2\x9B" => "\xED\x98\xB4", + "\xC2\x9C" => "\xED\x98\xB5", + "\xC2\x9D" => "\xED\x98\xB6", + "\xC2\x9E" => "\xED\x98\xB7", + "\xC2\x9F" => "\xED\x98\xBA", + "\xC2\xA0" => "\xED\x98\xBB", + "\xC2\xA1" => "\xEC\xA7\x95", + "\xC2\xA2" => "\xEC\xA7\x96", + "\xC2\xA3" => "\xEC\xA7\x99", + "\xC2\xA4" => "\xEC\xA7\x9A", + "\xC2\xA5" => "\xEC\xA7\x9C", + "\xC2\xA6" => "\xEC\xA7\x9D", + "\xC2\xA7" => "\xEC\xA7\xA0", + "\xC2\xA8" => "\xEC\xA7\xA2", + "\xC2\xA9" => "\xEC\xA7\xA4", + "\xC2\xAA" => "\xEC\xA7\xA7", + "\xC2\xAB" => "\xEC\xA7\xAC", + "\xC2\xAC" => "\xEC\xA7\xAD", + "\xC2\xAD" => "\xEC\xA7\xAF", + "\xC2\xAE" => "\xEC\xA7\xB0", + "\xC2\xAF" => "\xEC\xA7\xB1", + "\xC2\xB0" => "\xEC\xA7\xB8", + "\xC2\xB1" => "\xEC\xA7\xB9", + "\xC2\xB2" => "\xEC\xA7\xBC", + "\xC2\xB3" => "\xEC\xA8\x80", + "\xC2\xB4" => "\xEC\xA8\x88", + "\xC2\xB5" => "\xEC\xA8\x89", + "\xC2\xB6" => "\xEC\xA8\x8B", + "\xC2\xB7" => "\xEC\xA8\x8C", + "\xC2\xB8" => "\xEC\xA8\x8D", + "\xC2\xB9" => "\xEC\xA8\x94", + "\xC2\xBA" => "\xEC\xA8\x98", + "\xC2\xBB" => "\xEC\xA8\xA9", + "\xC2\xBC" => "\xEC\xA9\x8C", + "\xC2\xBD" => "\xEC\xA9\x8D", + "\xC2\xBE" => "\xEC\xA9\x90", + "\xC2\xBF" => "\xEC\xA9\x94", + "\xC2\xC0" => "\xEC\xA9\x9C", + "\xC2\xC1" => "\xEC\xA9\x9D", + "\xC2\xC2" => "\xEC\xA9\x9F", + "\xC2\xC3" => "\xEC\xA9\xA0", + "\xC2\xC4" => "\xEC\xA9\xA1", + "\xC2\xC5" => "\xEC\xA9\xA8", + "\xC2\xC6" => "\xEC\xA9\xBD", + "\xC2\xC7" => "\xEC\xAA\x84", + "\xC2\xC8" => "\xEC\xAA\x98", + "\xC2\xC9" => "\xEC\xAA\xBC", + "\xC2\xCA" => "\xEC\xAA\xBD", + "\xC2\xCB" => "\xEC\xAB\x80", + "\xC2\xCC" => "\xEC\xAB\x84", + "\xC2\xCD" => "\xEC\xAB\x8C", + "\xC2\xCE" => "\xEC\xAB\x8D", + "\xC2\xCF" => "\xEC\xAB\x8F", + "\xC2\xD0" => "\xEC\xAB\x91", + "\xC2\xD1" => "\xEC\xAB\x93", + "\xC2\xD2" => "\xEC\xAB\x98", + "\xC2\xD3" => "\xEC\xAB\x99", + "\xC2\xD4" => "\xEC\xAB\xA0", + "\xC2\xD5" => "\xEC\xAB\xAC", + "\xC2\xD6" => "\xEC\xAB\xB4", + "\xC2\xD7" => "\xEC\xAC\x88", + "\xC2\xD8" => "\xEC\xAC\x90", + "\xC2\xD9" => "\xEC\xAC\x94", + "\xC2\xDA" => "\xEC\xAC\x98", + "\xC2\xDB" => "\xEC\xAC\xA0", + "\xC2\xDC" => "\xEC\xAC\xA1", + "\xC2\xDD" => "\xEC\xAD\x81", + "\xC2\xDE" => "\xEC\xAD\x88", + "\xC2\xDF" => "\xEC\xAD\x89", + "\xC2\xE0" => "\xEC\xAD\x8C", + "\xC2\xE1" => "\xEC\xAD\x90", + "\xC2\xE2" => "\xEC\xAD\x98", + "\xC2\xE3" => "\xEC\xAD\x99", + "\xC2\xE4" => "\xEC\xAD\x9D", + "\xC2\xE5" => "\xEC\xAD\xA4", + "\xC2\xE6" => "\xEC\xAD\xB8", + "\xC2\xE7" => "\xEC\xAD\xB9", + "\xC2\xE8" => "\xEC\xAE\x9C", + "\xC2\xE9" => "\xEC\xAE\xB8", + "\xC2\xEA" => "\xEC\xAF\x94", + "\xC2\xEB" => "\xEC\xAF\xA4", + "\xC2\xEC" => "\xEC\xAF\xA7", + "\xC2\xED" => "\xEC\xAF\xA9", + "\xC2\xEE" => "\xEC\xB0\x8C", + "\xC2\xEF" => "\xEC\xB0\x8D", + "\xC2\xF0" => "\xEC\xB0\x90", + "\xC2\xF1" => "\xEC\xB0\x94", + "\xC2\xF2" => "\xEC\xB0\x9C", + "\xC2\xF3" => "\xEC\xB0\x9D", + "\xC2\xF4" => "\xEC\xB0\xA1", + "\xC2\xF5" => "\xEC\xB0\xA2", + "\xC2\xF6" => "\xEC\xB0\xA7", + "\xC2\xF7" => "\xEC\xB0\xA8", + "\xC2\xF8" => "\xEC\xB0\xA9", + "\xC2\xF9" => "\xEC\xB0\xAC", + "\xC2\xFA" => "\xEC\xB0\xAE", + "\xC2\xFB" => "\xEC\xB0\xB0", + "\xC2\xFC" => "\xEC\xB0\xB8", + "\xC2\xFD" => "\xEC\xB0\xB9", + "\xC2\xFE" => "\xEC\xB0\xBB", + "\xC3\x41" => "\xED\x98\xBD", + "\xC3\x42" => "\xED\x98\xBE", + "\xC3\x43" => "\xED\x98\xBF", + "\xC3\x44" => "\xED\x99\x81", + "\xC3\x45" => "\xED\x99\x82", + "\xC3\x46" => "\xED\x99\x83", + "\xC3\x47" => "\xED\x99\x84", + "\xC3\x48" => "\xED\x99\x86", + "\xC3\x49" => "\xED\x99\x87", + "\xC3\x4A" => "\xED\x99\x8A", + "\xC3\x4B" => "\xED\x99\x8C", + "\xC3\x4C" => "\xED\x99\x8E", + "\xC3\x4D" => "\xED\x99\x8F", + "\xC3\x4E" => "\xED\x99\x90", + "\xC3\x4F" => "\xED\x99\x92", + "\xC3\x50" => "\xED\x99\x93", + "\xC3\x51" => "\xED\x99\x96", + "\xC3\x52" => "\xED\x99\x97", + "\xC3\x53" => "\xED\x99\x99", + "\xC3\x54" => "\xED\x99\x9A", + "\xC3\x55" => "\xED\x99\x9B", + "\xC3\x56" => "\xED\x99\x9D", + "\xC3\x57" => "\xED\x99\x9E", + "\xC3\x58" => "\xED\x99\x9F", + "\xC3\x59" => "\xED\x99\xA0", + "\xC3\x5A" => "\xED\x99\xA1", + "\xC3\x61" => "\xED\x99\xA2", + "\xC3\x62" => "\xED\x99\xA3", + "\xC3\x63" => "\xED\x99\xA4", + "\xC3\x64" => "\xED\x99\xA5", + "\xC3\x65" => "\xED\x99\xA6", + "\xC3\x66" => "\xED\x99\xA8", + "\xC3\x67" => "\xED\x99\xAA", + "\xC3\x68" => "\xED\x99\xAB", + "\xC3\x69" => "\xED\x99\xAC", + "\xC3\x6A" => "\xED\x99\xAD", + "\xC3\x6B" => "\xED\x99\xAE", + "\xC3\x6C" => "\xED\x99\xAF", + "\xC3\x6D" => "\xED\x99\xB2", + "\xC3\x6E" => "\xED\x99\xB3", + "\xC3\x6F" => "\xED\x99\xB5", + "\xC3\x70" => "\xED\x99\xB6", + "\xC3\x71" => "\xED\x99\xB7", + "\xC3\x72" => "\xED\x99\xB8", + "\xC3\x73" => "\xED\x99\xB9", + "\xC3\x74" => "\xED\x99\xBA", + "\xC3\x75" => "\xED\x99\xBB", + "\xC3\x76" => "\xED\x99\xBC", + "\xC3\x77" => "\xED\x99\xBD", + "\xC3\x78" => "\xED\x99\xBE", + "\xC3\x79" => "\xED\x99\xBF", + "\xC3\x7A" => "\xED\x9A\x80", + "\xC3\x81" => "\xED\x9A\x81", + "\xC3\x82" => "\xED\x9A\x82", + "\xC3\x83" => "\xED\x9A\x84", + "\xC3\x84" => "\xED\x9A\x86", + "\xC3\x85" => "\xED\x9A\x87", + "\xC3\x86" => "\xED\x9A\x88", + "\xC3\x87" => "\xED\x9A\x89", + "\xC3\x88" => "\xED\x9A\x8A", + "\xC3\x89" => "\xED\x9A\x8B", + "\xC3\x8A" => "\xED\x9A\x8E", + "\xC3\x8B" => "\xED\x9A\x8F", + "\xC3\x8C" => "\xED\x9A\x91", + "\xC3\x8D" => "\xED\x9A\x92", + "\xC3\x8E" => "\xED\x9A\x93", + "\xC3\x8F" => "\xED\x9A\x95", + "\xC3\x90" => "\xED\x9A\x96", + "\xC3\x91" => "\xED\x9A\x97", + "\xC3\x92" => "\xED\x9A\x98", + "\xC3\x93" => "\xED\x9A\x99", + "\xC3\x94" => "\xED\x9A\x9A", + "\xC3\x95" => "\xED\x9A\x9B", + "\xC3\x96" => "\xED\x9A\x9C", + "\xC3\x97" => "\xED\x9A\x9E", + "\xC3\x98" => "\xED\x9A\xA0", + "\xC3\x99" => "\xED\x9A\xA2", + "\xC3\x9A" => "\xED\x9A\xA3", + "\xC3\x9B" => "\xED\x9A\xA4", + "\xC3\x9C" => "\xED\x9A\xA5", + "\xC3\x9D" => "\xED\x9A\xA6", + "\xC3\x9E" => "\xED\x9A\xA7", + "\xC3\x9F" => "\xED\x9A\xA9", + "\xC3\xA0" => "\xED\x9A\xAA", + "\xC3\xA1" => "\xEC\xB0\xBC", + "\xC3\xA2" => "\xEC\xB0\xBD", + "\xC3\xA3" => "\xEC\xB0\xBE", + "\xC3\xA4" => "\xEC\xB1\x84", + "\xC3\xA5" => "\xEC\xB1\x85", + "\xC3\xA6" => "\xEC\xB1\x88", + "\xC3\xA7" => "\xEC\xB1\x8C", + "\xC3\xA8" => "\xEC\xB1\x94", + "\xC3\xA9" => "\xEC\xB1\x95", + "\xC3\xAA" => "\xEC\xB1\x97", + "\xC3\xAB" => "\xEC\xB1\x98", + "\xC3\xAC" => "\xEC\xB1\x99", + "\xC3\xAD" => "\xEC\xB1\xA0", + "\xC3\xAE" => "\xEC\xB1\xA4", + "\xC3\xAF" => "\xEC\xB1\xA6", + "\xC3\xB0" => "\xEC\xB1\xA8", + "\xC3\xB1" => "\xEC\xB1\xB0", + "\xC3\xB2" => "\xEC\xB1\xB5", + "\xC3\xB3" => "\xEC\xB2\x98", + "\xC3\xB4" => "\xEC\xB2\x99", + "\xC3\xB5" => "\xEC\xB2\x9C", + "\xC3\xB6" => "\xEC\xB2\xA0", + "\xC3\xB7" => "\xEC\xB2\xA8", + "\xC3\xB8" => "\xEC\xB2\xA9", + "\xC3\xB9" => "\xEC\xB2\xAB", + "\xC3\xBA" => "\xEC\xB2\xAC", + "\xC3\xBB" => "\xEC\xB2\xAD", + "\xC3\xBC" => "\xEC\xB2\xB4", + "\xC3\xBD" => "\xEC\xB2\xB5", + "\xC3\xBE" => "\xEC\xB2\xB8", + "\xC3\xBF" => "\xEC\xB2\xBC", + "\xC3\xC0" => "\xEC\xB3\x84", + "\xC3\xC1" => "\xEC\xB3\x85", + "\xC3\xC2" => "\xEC\xB3\x87", + "\xC3\xC3" => "\xEC\xB3\x89", + "\xC3\xC4" => "\xEC\xB3\x90", + "\xC3\xC5" => "\xEC\xB3\x94", + "\xC3\xC6" => "\xEC\xB3\xA4", + "\xC3\xC7" => "\xEC\xB3\xAC", + "\xC3\xC8" => "\xEC\xB3\xB0", + "\xC3\xC9" => "\xEC\xB4\x81", + "\xC3\xCA" => "\xEC\xB4\x88", + "\xC3\xCB" => "\xEC\xB4\x89", + "\xC3\xCC" => "\xEC\xB4\x8C", + "\xC3\xCD" => "\xEC\xB4\x90", + "\xC3\xCE" => "\xEC\xB4\x98", + "\xC3\xCF" => "\xEC\xB4\x99", + "\xC3\xD0" => "\xEC\xB4\x9B", + "\xC3\xD1" => "\xEC\xB4\x9D", + "\xC3\xD2" => "\xEC\xB4\xA4", + "\xC3\xD3" => "\xEC\xB4\xA8", + "\xC3\xD4" => "\xEC\xB4\xAC", + "\xC3\xD5" => "\xEC\xB4\xB9", + "\xC3\xD6" => "\xEC\xB5\x9C", + "\xC3\xD7" => "\xEC\xB5\xA0", + "\xC3\xD8" => "\xEC\xB5\xA4", + "\xC3\xD9" => "\xEC\xB5\xAC", + "\xC3\xDA" => "\xEC\xB5\xAD", + "\xC3\xDB" => "\xEC\xB5\xAF", + "\xC3\xDC" => "\xEC\xB5\xB1", + "\xC3\xDD" => "\xEC\xB5\xB8", + "\xC3\xDE" => "\xEC\xB6\x88", + "\xC3\xDF" => "\xEC\xB6\x94", + "\xC3\xE0" => "\xEC\xB6\x95", + "\xC3\xE1" => "\xEC\xB6\x98", + "\xC3\xE2" => "\xEC\xB6\x9C", + "\xC3\xE3" => "\xEC\xB6\xA4", + "\xC3\xE4" => "\xEC\xB6\xA5", + "\xC3\xE5" => "\xEC\xB6\xA7", + "\xC3\xE6" => "\xEC\xB6\xA9", + "\xC3\xE7" => "\xEC\xB6\xB0", + "\xC3\xE8" => "\xEC\xB7\x84", + "\xC3\xE9" => "\xEC\xB7\x8C", + "\xC3\xEA" => "\xEC\xB7\x90", + "\xC3\xEB" => "\xEC\xB7\xA8", + "\xC3\xEC" => "\xEC\xB7\xAC", + "\xC3\xED" => "\xEC\xB7\xB0", + "\xC3\xEE" => "\xEC\xB7\xB8", + "\xC3\xEF" => "\xEC\xB7\xB9", + "\xC3\xF0" => "\xEC\xB7\xBB", + "\xC3\xF1" => "\xEC\xB7\xBD", + "\xC3\xF2" => "\xEC\xB8\x84", + "\xC3\xF3" => "\xEC\xB8\x88", + "\xC3\xF4" => "\xEC\xB8\x8C", + "\xC3\xF5" => "\xEC\xB8\x94", + "\xC3\xF6" => "\xEC\xB8\x99", + "\xC3\xF7" => "\xEC\xB8\xA0", + "\xC3\xF8" => "\xEC\xB8\xA1", + "\xC3\xF9" => "\xEC\xB8\xA4", + "\xC3\xFA" => "\xEC\xB8\xA8", + "\xC3\xFB" => "\xEC\xB8\xB0", + "\xC3\xFC" => "\xEC\xB8\xB1", + "\xC3\xFD" => "\xEC\xB8\xB3", + "\xC3\xFE" => "\xEC\xB8\xB5", + "\xC4\x41" => "\xED\x9A\xAB", + "\xC4\x42" => "\xED\x9A\xAD", + "\xC4\x43" => "\xED\x9A\xAE", + "\xC4\x44" => "\xED\x9A\xAF", + "\xC4\x45" => "\xED\x9A\xB1", + "\xC4\x46" => "\xED\x9A\xB2", + "\xC4\x47" => "\xED\x9A\xB3", + "\xC4\x48" => "\xED\x9A\xB4", + "\xC4\x49" => "\xED\x9A\xB5", + "\xC4\x4A" => "\xED\x9A\xB6", + "\xC4\x4B" => "\xED\x9A\xB7", + "\xC4\x4C" => "\xED\x9A\xB8", + "\xC4\x4D" => "\xED\x9A\xBA", + "\xC4\x4E" => "\xED\x9A\xBC", + "\xC4\x4F" => "\xED\x9A\xBD", + "\xC4\x50" => "\xED\x9A\xBE", + "\xC4\x51" => "\xED\x9A\xBF", + "\xC4\x52" => "\xED\x9B\x80", + "\xC4\x53" => "\xED\x9B\x81", + "\xC4\x54" => "\xED\x9B\x82", + "\xC4\x55" => "\xED\x9B\x83", + "\xC4\x56" => "\xED\x9B\x86", + "\xC4\x57" => "\xED\x9B\x87", + "\xC4\x58" => "\xED\x9B\x89", + "\xC4\x59" => "\xED\x9B\x8A", + "\xC4\x5A" => "\xED\x9B\x8B", + "\xC4\x61" => "\xED\x9B\x8D", + "\xC4\x62" => "\xED\x9B\x8E", + "\xC4\x63" => "\xED\x9B\x8F", + "\xC4\x64" => "\xED\x9B\x90", + "\xC4\x65" => "\xED\x9B\x92", + "\xC4\x66" => "\xED\x9B\x93", + "\xC4\x67" => "\xED\x9B\x95", + "\xC4\x68" => "\xED\x9B\x96", + "\xC4\x69" => "\xED\x9B\x98", + "\xC4\x6A" => "\xED\x9B\x9A", + "\xC4\x6B" => "\xED\x9B\x9B", + "\xC4\x6C" => "\xED\x9B\x9C", + "\xC4\x6D" => "\xED\x9B\x9D", + "\xC4\x6E" => "\xED\x9B\x9E", + "\xC4\x6F" => "\xED\x9B\x9F", + "\xC4\x70" => "\xED\x9B\xA1", + "\xC4\x71" => "\xED\x9B\xA2", + "\xC4\x72" => "\xED\x9B\xA3", + "\xC4\x73" => "\xED\x9B\xA5", + "\xC4\x74" => "\xED\x9B\xA6", + "\xC4\x75" => "\xED\x9B\xA7", + "\xC4\x76" => "\xED\x9B\xA9", + "\xC4\x77" => "\xED\x9B\xAA", + "\xC4\x78" => "\xED\x9B\xAB", + "\xC4\x79" => "\xED\x9B\xAC", + "\xC4\x7A" => "\xED\x9B\xAD", + "\xC4\x81" => "\xED\x9B\xAE", + "\xC4\x82" => "\xED\x9B\xAF", + "\xC4\x83" => "\xED\x9B\xB1", + "\xC4\x84" => "\xED\x9B\xB2", + "\xC4\x85" => "\xED\x9B\xB3", + "\xC4\x86" => "\xED\x9B\xB4", + "\xC4\x87" => "\xED\x9B\xB6", + "\xC4\x88" => "\xED\x9B\xB7", + "\xC4\x89" => "\xED\x9B\xB8", + "\xC4\x8A" => "\xED\x9B\xB9", + "\xC4\x8B" => "\xED\x9B\xBA", + "\xC4\x8C" => "\xED\x9B\xBB", + "\xC4\x8D" => "\xED\x9B\xBE", + "\xC4\x8E" => "\xED\x9B\xBF", + "\xC4\x8F" => "\xED\x9C\x81", + "\xC4\x90" => "\xED\x9C\x82", + "\xC4\x91" => "\xED\x9C\x83", + "\xC4\x92" => "\xED\x9C\x85", + "\xC4\x93" => "\xED\x9C\x86", + "\xC4\x94" => "\xED\x9C\x87", + "\xC4\x95" => "\xED\x9C\x88", + "\xC4\x96" => "\xED\x9C\x89", + "\xC4\x97" => "\xED\x9C\x8A", + "\xC4\x98" => "\xED\x9C\x8B", + "\xC4\x99" => "\xED\x9C\x8C", + "\xC4\x9A" => "\xED\x9C\x8D", + "\xC4\x9B" => "\xED\x9C\x8E", + "\xC4\x9C" => "\xED\x9C\x8F", + "\xC4\x9D" => "\xED\x9C\x90", + "\xC4\x9E" => "\xED\x9C\x92", + "\xC4\x9F" => "\xED\x9C\x93", + "\xC4\xA0" => "\xED\x9C\x94", + "\xC4\xA1" => "\xEC\xB9\x98", + "\xC4\xA2" => "\xEC\xB9\x99", + "\xC4\xA3" => "\xEC\xB9\x9C", + "\xC4\xA4" => "\xEC\xB9\x9F", + "\xC4\xA5" => "\xEC\xB9\xA0", + "\xC4\xA6" => "\xEC\xB9\xA1", + "\xC4\xA7" => "\xEC\xB9\xA8", + "\xC4\xA8" => "\xEC\xB9\xA9", + "\xC4\xA9" => "\xEC\xB9\xAB", + "\xC4\xAA" => "\xEC\xB9\xAD", + "\xC4\xAB" => "\xEC\xB9\xB4", + "\xC4\xAC" => "\xEC\xB9\xB5", + "\xC4\xAD" => "\xEC\xB9\xB8", + "\xC4\xAE" => "\xEC\xB9\xBC", + "\xC4\xAF" => "\xEC\xBA\x84", + "\xC4\xB0" => "\xEC\xBA\x85", + "\xC4\xB1" => "\xEC\xBA\x87", + "\xC4\xB2" => "\xEC\xBA\x89", + "\xC4\xB3" => "\xEC\xBA\x90", + "\xC4\xB4" => "\xEC\xBA\x91", + "\xC4\xB5" => "\xEC\xBA\x94", + "\xC4\xB6" => "\xEC\xBA\x98", + "\xC4\xB7" => "\xEC\xBA\xA0", + "\xC4\xB8" => "\xEC\xBA\xA1", + "\xC4\xB9" => "\xEC\xBA\xA3", + "\xC4\xBA" => "\xEC\xBA\xA4", + "\xC4\xBB" => "\xEC\xBA\xA5", + "\xC4\xBC" => "\xEC\xBA\xAC", + "\xC4\xBD" => "\xEC\xBA\xAD", + "\xC4\xBE" => "\xEC\xBB\x81", + "\xC4\xBF" => "\xEC\xBB\xA4", + "\xC4\xC0" => "\xEC\xBB\xA5", + "\xC4\xC1" => "\xEC\xBB\xA8", + "\xC4\xC2" => "\xEC\xBB\xAB", + "\xC4\xC3" => "\xEC\xBB\xAC", + "\xC4\xC4" => "\xEC\xBB\xB4", + "\xC4\xC5" => "\xEC\xBB\xB5", + "\xC4\xC6" => "\xEC\xBB\xB7", + "\xC4\xC7" => "\xEC\xBB\xB8", + "\xC4\xC8" => "\xEC\xBB\xB9", + "\xC4\xC9" => "\xEC\xBC\x80", + "\xC4\xCA" => "\xEC\xBC\x81", + "\xC4\xCB" => "\xEC\xBC\x84", + "\xC4\xCC" => "\xEC\xBC\x88", + "\xC4\xCD" => "\xEC\xBC\x90", + "\xC4\xCE" => "\xEC\xBC\x91", + "\xC4\xCF" => "\xEC\xBC\x93", + "\xC4\xD0" => "\xEC\xBC\x95", + "\xC4\xD1" => "\xEC\xBC\x9C", + "\xC4\xD2" => "\xEC\xBC\xA0", + "\xC4\xD3" => "\xEC\xBC\xA4", + "\xC4\xD4" => "\xEC\xBC\xAC", + "\xC4\xD5" => "\xEC\xBC\xAD", + "\xC4\xD6" => "\xEC\xBC\xAF", + "\xC4\xD7" => "\xEC\xBC\xB0", + "\xC4\xD8" => "\xEC\xBC\xB1", + "\xC4\xD9" => "\xEC\xBC\xB8", + "\xC4\xDA" => "\xEC\xBD\x94", + "\xC4\xDB" => "\xEC\xBD\x95", + "\xC4\xDC" => "\xEC\xBD\x98", + "\xC4\xDD" => "\xEC\xBD\x9C", + "\xC4\xDE" => "\xEC\xBD\xA4", + "\xC4\xDF" => "\xEC\xBD\xA5", + "\xC4\xE0" => "\xEC\xBD\xA7", + "\xC4\xE1" => "\xEC\xBD\xA9", + "\xC4\xE2" => "\xEC\xBD\xB0", + "\xC4\xE3" => "\xEC\xBD\xB1", + "\xC4\xE4" => "\xEC\xBD\xB4", + "\xC4\xE5" => "\xEC\xBD\xB8", + "\xC4\xE6" => "\xEC\xBE\x80", + "\xC4\xE7" => "\xEC\xBE\x85", + "\xC4\xE8" => "\xEC\xBE\x8C", + "\xC4\xE9" => "\xEC\xBE\xA1", + "\xC4\xEA" => "\xEC\xBE\xA8", + "\xC4\xEB" => "\xEC\xBE\xB0", + "\xC4\xEC" => "\xEC\xBF\x84", + "\xC4\xED" => "\xEC\xBF\xA0", + "\xC4\xEE" => "\xEC\xBF\xA1", + "\xC4\xEF" => "\xEC\xBF\xA4", + "\xC4\xF0" => "\xEC\xBF\xA8", + "\xC4\xF1" => "\xEC\xBF\xB0", + "\xC4\xF2" => "\xEC\xBF\xB1", + "\xC4\xF3" => "\xEC\xBF\xB3", + "\xC4\xF4" => "\xEC\xBF\xB5", + "\xC4\xF5" => "\xEC\xBF\xBC", + "\xC4\xF6" => "\xED\x80\x80", + "\xC4\xF7" => "\xED\x80\x84", + "\xC4\xF8" => "\xED\x80\x91", + "\xC4\xF9" => "\xED\x80\x98", + "\xC4\xFA" => "\xED\x80\xAD", + "\xC4\xFB" => "\xED\x80\xB4", + "\xC4\xFC" => "\xED\x80\xB5", + "\xC4\xFD" => "\xED\x80\xB8", + "\xC4\xFE" => "\xED\x80\xBC", + "\xC5\x41" => "\xED\x9C\x95", + "\xC5\x42" => "\xED\x9C\x96", + "\xC5\x43" => "\xED\x9C\x97", + "\xC5\x44" => "\xED\x9C\x9A", + "\xC5\x45" => "\xED\x9C\x9B", + "\xC5\x46" => "\xED\x9C\x9D", + "\xC5\x47" => "\xED\x9C\x9E", + "\xC5\x48" => "\xED\x9C\x9F", + "\xC5\x49" => "\xED\x9C\xA1", + "\xC5\x4A" => "\xED\x9C\xA2", + "\xC5\x4B" => "\xED\x9C\xA3", + "\xC5\x4C" => "\xED\x9C\xA4", + "\xC5\x4D" => "\xED\x9C\xA5", + "\xC5\x4E" => "\xED\x9C\xA6", + "\xC5\x4F" => "\xED\x9C\xA7", + "\xC5\x50" => "\xED\x9C\xAA", + "\xC5\x51" => "\xED\x9C\xAC", + "\xC5\x52" => "\xED\x9C\xAE", + "\xC5\x53" => "\xED\x9C\xAF", + "\xC5\x54" => "\xED\x9C\xB0", + "\xC5\x55" => "\xED\x9C\xB1", + "\xC5\x56" => "\xED\x9C\xB2", + "\xC5\x57" => "\xED\x9C\xB3", + "\xC5\x58" => "\xED\x9C\xB6", + "\xC5\x59" => "\xED\x9C\xB7", + "\xC5\x5A" => "\xED\x9C\xB9", + "\xC5\x61" => "\xED\x9C\xBA", + "\xC5\x62" => "\xED\x9C\xBB", + "\xC5\x63" => "\xED\x9C\xBD", + "\xC5\x64" => "\xED\x9C\xBE", + "\xC5\x65" => "\xED\x9C\xBF", + "\xC5\x66" => "\xED\x9D\x80", + "\xC5\x67" => "\xED\x9D\x81", + "\xC5\x68" => "\xED\x9D\x82", + "\xC5\x69" => "\xED\x9D\x83", + "\xC5\x6A" => "\xED\x9D\x85", + "\xC5\x6B" => "\xED\x9D\x86", + "\xC5\x6C" => "\xED\x9D\x88", + "\xC5\x6D" => "\xED\x9D\x8A", + "\xC5\x6E" => "\xED\x9D\x8B", + "\xC5\x6F" => "\xED\x9D\x8C", + "\xC5\x70" => "\xED\x9D\x8D", + "\xC5\x71" => "\xED\x9D\x8E", + "\xC5\x72" => "\xED\x9D\x8F", + "\xC5\x73" => "\xED\x9D\x92", + "\xC5\x74" => "\xED\x9D\x93", + "\xC5\x75" => "\xED\x9D\x95", + "\xC5\x76" => "\xED\x9D\x9A", + "\xC5\x77" => "\xED\x9D\x9B", + "\xC5\x78" => "\xED\x9D\x9C", + "\xC5\x79" => "\xED\x9D\x9D", + "\xC5\x7A" => "\xED\x9D\x9E", + "\xC5\x81" => "\xED\x9D\x9F", + "\xC5\x82" => "\xED\x9D\xA2", + "\xC5\x83" => "\xED\x9D\xA4", + "\xC5\x84" => "\xED\x9D\xA6", + "\xC5\x85" => "\xED\x9D\xA7", + "\xC5\x86" => "\xED\x9D\xA8", + "\xC5\x87" => "\xED\x9D\xAA", + "\xC5\x88" => "\xED\x9D\xAB", + "\xC5\x89" => "\xED\x9D\xAD", + "\xC5\x8A" => "\xED\x9D\xAE", + "\xC5\x8B" => "\xED\x9D\xAF", + "\xC5\x8C" => "\xED\x9D\xB1", + "\xC5\x8D" => "\xED\x9D\xB2", + "\xC5\x8E" => "\xED\x9D\xB3", + "\xC5\x8F" => "\xED\x9D\xB5", + "\xC5\x90" => "\xED\x9D\xB6", + "\xC5\x91" => "\xED\x9D\xB7", + "\xC5\x92" => "\xED\x9D\xB8", + "\xC5\x93" => "\xED\x9D\xB9", + "\xC5\x94" => "\xED\x9D\xBA", + "\xC5\x95" => "\xED\x9D\xBB", + "\xC5\x96" => "\xED\x9D\xBE", + "\xC5\x97" => "\xED\x9D\xBF", + "\xC5\x98" => "\xED\x9E\x80", + "\xC5\x99" => "\xED\x9E\x82", + "\xC5\x9A" => "\xED\x9E\x83", + "\xC5\x9B" => "\xED\x9E\x84", + "\xC5\x9C" => "\xED\x9E\x85", + "\xC5\x9D" => "\xED\x9E\x86", + "\xC5\x9E" => "\xED\x9E\x87", + "\xC5\x9F" => "\xED\x9E\x8A", + "\xC5\xA0" => "\xED\x9E\x8B", + "\xC5\xA1" => "\xED\x81\x84", + "\xC5\xA2" => "\xED\x81\x85", + "\xC5\xA3" => "\xED\x81\x87", + "\xC5\xA4" => "\xED\x81\x89", + "\xC5\xA5" => "\xED\x81\x90", + "\xC5\xA6" => "\xED\x81\x94", + "\xC5\xA7" => "\xED\x81\x98", + "\xC5\xA8" => "\xED\x81\xA0", + "\xC5\xA9" => "\xED\x81\xAC", + "\xC5\xAA" => "\xED\x81\xAD", + "\xC5\xAB" => "\xED\x81\xB0", + "\xC5\xAC" => "\xED\x81\xB4", + "\xC5\xAD" => "\xED\x81\xBC", + "\xC5\xAE" => "\xED\x81\xBD", + "\xC5\xAF" => "\xED\x82\x81", + "\xC5\xB0" => "\xED\x82\xA4", + "\xC5\xB1" => "\xED\x82\xA5", + "\xC5\xB2" => "\xED\x82\xA8", + "\xC5\xB3" => "\xED\x82\xAC", + "\xC5\xB4" => "\xED\x82\xB4", + "\xC5\xB5" => "\xED\x82\xB5", + "\xC5\xB6" => "\xED\x82\xB7", + "\xC5\xB7" => "\xED\x82\xB9", + "\xC5\xB8" => "\xED\x83\x80", + "\xC5\xB9" => "\xED\x83\x81", + "\xC5\xBA" => "\xED\x83\x84", + "\xC5\xBB" => "\xED\x83\x88", + "\xC5\xBC" => "\xED\x83\x89", + "\xC5\xBD" => "\xED\x83\x90", + "\xC5\xBE" => "\xED\x83\x91", + "\xC5\xBF" => "\xED\x83\x93", + "\xC5\xC0" => "\xED\x83\x94", + "\xC5\xC1" => "\xED\x83\x95", + "\xC5\xC2" => "\xED\x83\x9C", + "\xC5\xC3" => "\xED\x83\x9D", + "\xC5\xC4" => "\xED\x83\xA0", + "\xC5\xC5" => "\xED\x83\xA4", + "\xC5\xC6" => "\xED\x83\xAC", + "\xC5\xC7" => "\xED\x83\xAD", + "\xC5\xC8" => "\xED\x83\xAF", + "\xC5\xC9" => "\xED\x83\xB0", + "\xC5\xCA" => "\xED\x83\xB1", + "\xC5\xCB" => "\xED\x83\xB8", + "\xC5\xCC" => "\xED\x84\x8D", + "\xC5\xCD" => "\xED\x84\xB0", + "\xC5\xCE" => "\xED\x84\xB1", + "\xC5\xCF" => "\xED\x84\xB4", + "\xC5\xD0" => "\xED\x84\xB8", + "\xC5\xD1" => "\xED\x84\xBA", + "\xC5\xD2" => "\xED\x85\x80", + "\xC5\xD3" => "\xED\x85\x81", + "\xC5\xD4" => "\xED\x85\x83", + "\xC5\xD5" => "\xED\x85\x84", + "\xC5\xD6" => "\xED\x85\x85", + "\xC5\xD7" => "\xED\x85\x8C", + "\xC5\xD8" => "\xED\x85\x8D", + "\xC5\xD9" => "\xED\x85\x90", + "\xC5\xDA" => "\xED\x85\x94", + "\xC5\xDB" => "\xED\x85\x9C", + "\xC5\xDC" => "\xED\x85\x9D", + "\xC5\xDD" => "\xED\x85\x9F", + "\xC5\xDE" => "\xED\x85\xA1", + "\xC5\xDF" => "\xED\x85\xA8", + "\xC5\xE0" => "\xED\x85\xAC", + "\xC5\xE1" => "\xED\x85\xBC", + "\xC5\xE2" => "\xED\x86\x84", + "\xC5\xE3" => "\xED\x86\x88", + "\xC5\xE4" => "\xED\x86\xA0", + "\xC5\xE5" => "\xED\x86\xA1", + "\xC5\xE6" => "\xED\x86\xA4", + "\xC5\xE7" => "\xED\x86\xA8", + "\xC5\xE8" => "\xED\x86\xB0", + "\xC5\xE9" => "\xED\x86\xB1", + "\xC5\xEA" => "\xED\x86\xB3", + "\xC5\xEB" => "\xED\x86\xB5", + "\xC5\xEC" => "\xED\x86\xBA", + "\xC5\xED" => "\xED\x86\xBC", + "\xC5\xEE" => "\xED\x87\x80", + "\xC5\xEF" => "\xED\x87\x98", + "\xC5\xF0" => "\xED\x87\xB4", + "\xC5\xF1" => "\xED\x87\xB8", + "\xC5\xF2" => "\xED\x88\x87", + "\xC5\xF3" => "\xED\x88\x89", + "\xC5\xF4" => "\xED\x88\x90", + "\xC5\xF5" => "\xED\x88\xAC", + "\xC5\xF6" => "\xED\x88\xAD", + "\xC5\xF7" => "\xED\x88\xB0", + "\xC5\xF8" => "\xED\x88\xB4", + "\xC5\xF9" => "\xED\x88\xBC", + "\xC5\xFA" => "\xED\x88\xBD", + "\xC5\xFB" => "\xED\x88\xBF", + "\xC5\xFC" => "\xED\x89\x81", + "\xC5\xFD" => "\xED\x89\x88", + "\xC5\xFE" => "\xED\x89\x9C", + "\xC6\x41" => "\xED\x9E\x8D", + "\xC6\x42" => "\xED\x9E\x8E", + "\xC6\x43" => "\xED\x9E\x8F", + "\xC6\x44" => "\xED\x9E\x91", + "\xC6\x45" => "\xED\x9E\x92", + "\xC6\x46" => "\xED\x9E\x93", + "\xC6\x47" => "\xED\x9E\x94", + "\xC6\x48" => "\xED\x9E\x95", + "\xC6\x49" => "\xED\x9E\x96", + "\xC6\x4A" => "\xED\x9E\x97", + "\xC6\x4B" => "\xED\x9E\x9A", + "\xC6\x4C" => "\xED\x9E\x9C", + "\xC6\x4D" => "\xED\x9E\x9E", + "\xC6\x4E" => "\xED\x9E\x9F", + "\xC6\x4F" => "\xED\x9E\xA0", + "\xC6\x50" => "\xED\x9E\xA1", + "\xC6\x51" => "\xED\x9E\xA2", + "\xC6\x52" => "\xED\x9E\xA3", + "\xC6\xA1" => "\xED\x89\xA4", + "\xC6\xA2" => "\xED\x8A\x80", + "\xC6\xA3" => "\xED\x8A\x81", + "\xC6\xA4" => "\xED\x8A\x84", + "\xC6\xA5" => "\xED\x8A\x88", + "\xC6\xA6" => "\xED\x8A\x90", + "\xC6\xA7" => "\xED\x8A\x91", + "\xC6\xA8" => "\xED\x8A\x95", + "\xC6\xA9" => "\xED\x8A\x9C", + "\xC6\xAA" => "\xED\x8A\xA0", + "\xC6\xAB" => "\xED\x8A\xA4", + "\xC6\xAC" => "\xED\x8A\xAC", + "\xC6\xAD" => "\xED\x8A\xB1", + "\xC6\xAE" => "\xED\x8A\xB8", + "\xC6\xAF" => "\xED\x8A\xB9", + "\xC6\xB0" => "\xED\x8A\xBC", + "\xC6\xB1" => "\xED\x8A\xBF", + "\xC6\xB2" => "\xED\x8B\x80", + "\xC6\xB3" => "\xED\x8B\x82", + "\xC6\xB4" => "\xED\x8B\x88", + "\xC6\xB5" => "\xED\x8B\x89", + "\xC6\xB6" => "\xED\x8B\x8B", + "\xC6\xB7" => "\xED\x8B\x94", + "\xC6\xB8" => "\xED\x8B\x98", + "\xC6\xB9" => "\xED\x8B\x9C", + "\xC6\xBA" => "\xED\x8B\xA4", + "\xC6\xBB" => "\xED\x8B\xA5", + "\xC6\xBC" => "\xED\x8B\xB0", + "\xC6\xBD" => "\xED\x8B\xB1", + "\xC6\xBE" => "\xED\x8B\xB4", + "\xC6\xBF" => "\xED\x8B\xB8", + "\xC6\xC0" => "\xED\x8C\x80", + "\xC6\xC1" => "\xED\x8C\x81", + "\xC6\xC2" => "\xED\x8C\x83", + "\xC6\xC3" => "\xED\x8C\x85", + "\xC6\xC4" => "\xED\x8C\x8C", + "\xC6\xC5" => "\xED\x8C\x8D", + "\xC6\xC6" => "\xED\x8C\x8E", + "\xC6\xC7" => "\xED\x8C\x90", + "\xC6\xC8" => "\xED\x8C\x94", + "\xC6\xC9" => "\xED\x8C\x96", + "\xC6\xCA" => "\xED\x8C\x9C", + "\xC6\xCB" => "\xED\x8C\x9D", + "\xC6\xCC" => "\xED\x8C\x9F", + "\xC6\xCD" => "\xED\x8C\xA0", + "\xC6\xCE" => "\xED\x8C\xA1", + "\xC6\xCF" => "\xED\x8C\xA5", + "\xC6\xD0" => "\xED\x8C\xA8", + "\xC6\xD1" => "\xED\x8C\xA9", + "\xC6\xD2" => "\xED\x8C\xAC", + "\xC6\xD3" => "\xED\x8C\xB0", + "\xC6\xD4" => "\xED\x8C\xB8", + "\xC6\xD5" => "\xED\x8C\xB9", + "\xC6\xD6" => "\xED\x8C\xBB", + "\xC6\xD7" => "\xED\x8C\xBC", + "\xC6\xD8" => "\xED\x8C\xBD", + "\xC6\xD9" => "\xED\x8D\x84", + "\xC6\xDA" => "\xED\x8D\x85", + "\xC6\xDB" => "\xED\x8D\xBC", + "\xC6\xDC" => "\xED\x8D\xBD", + "\xC6\xDD" => "\xED\x8E\x80", + "\xC6\xDE" => "\xED\x8E\x84", + "\xC6\xDF" => "\xED\x8E\x8C", + "\xC6\xE0" => "\xED\x8E\x8D", + "\xC6\xE1" => "\xED\x8E\x8F", + "\xC6\xE2" => "\xED\x8E\x90", + "\xC6\xE3" => "\xED\x8E\x91", + "\xC6\xE4" => "\xED\x8E\x98", + "\xC6\xE5" => "\xED\x8E\x99", + "\xC6\xE6" => "\xED\x8E\x9C", + "\xC6\xE7" => "\xED\x8E\xA0", + "\xC6\xE8" => "\xED\x8E\xA8", + "\xC6\xE9" => "\xED\x8E\xA9", + "\xC6\xEA" => "\xED\x8E\xAB", + "\xC6\xEB" => "\xED\x8E\xAD", + "\xC6\xEC" => "\xED\x8E\xB4", + "\xC6\xED" => "\xED\x8E\xB8", + "\xC6\xEE" => "\xED\x8E\xBC", + "\xC6\xEF" => "\xED\x8F\x84", + "\xC6\xF0" => "\xED\x8F\x85", + "\xC6\xF1" => "\xED\x8F\x88", + "\xC6\xF2" => "\xED\x8F\x89", + "\xC6\xF3" => "\xED\x8F\x90", + "\xC6\xF4" => "\xED\x8F\x98", + "\xC6\xF5" => "\xED\x8F\xA1", + "\xC6\xF6" => "\xED\x8F\xA3", + "\xC6\xF7" => "\xED\x8F\xAC", + "\xC6\xF8" => "\xED\x8F\xAD", + "\xC6\xF9" => "\xED\x8F\xB0", + "\xC6\xFA" => "\xED\x8F\xB4", + "\xC6\xFB" => "\xED\x8F\xBC", + "\xC6\xFC" => "\xED\x8F\xBD", + "\xC6\xFD" => "\xED\x8F\xBF", + "\xC6\xFE" => "\xED\x90\x81", + "\xC7\xA1" => "\xED\x90\x88", + "\xC7\xA2" => "\xED\x90\x9D", + "\xC7\xA3" => "\xED\x91\x80", + "\xC7\xA4" => "\xED\x91\x84", + "\xC7\xA5" => "\xED\x91\x9C", + "\xC7\xA6" => "\xED\x91\xA0", + "\xC7\xA7" => "\xED\x91\xA4", + "\xC7\xA8" => "\xED\x91\xAD", + "\xC7\xA9" => "\xED\x91\xAF", + "\xC7\xAA" => "\xED\x91\xB8", + "\xC7\xAB" => "\xED\x91\xB9", + "\xC7\xAC" => "\xED\x91\xBC", + "\xC7\xAD" => "\xED\x91\xBF", + "\xC7\xAE" => "\xED\x92\x80", + "\xC7\xAF" => "\xED\x92\x82", + "\xC7\xB0" => "\xED\x92\x88", + "\xC7\xB1" => "\xED\x92\x89", + "\xC7\xB2" => "\xED\x92\x8B", + "\xC7\xB3" => "\xED\x92\x8D", + "\xC7\xB4" => "\xED\x92\x94", + "\xC7\xB5" => "\xED\x92\xA9", + "\xC7\xB6" => "\xED\x93\x8C", + "\xC7\xB7" => "\xED\x93\x90", + "\xC7\xB8" => "\xED\x93\x94", + "\xC7\xB9" => "\xED\x93\x9C", + "\xC7\xBA" => "\xED\x93\x9F", + "\xC7\xBB" => "\xED\x93\xA8", + "\xC7\xBC" => "\xED\x93\xAC", + "\xC7\xBD" => "\xED\x93\xB0", + "\xC7\xBE" => "\xED\x93\xB8", + "\xC7\xBF" => "\xED\x93\xBB", + "\xC7\xC0" => "\xED\x93\xBD", + "\xC7\xC1" => "\xED\x94\x84", + "\xC7\xC2" => "\xED\x94\x88", + "\xC7\xC3" => "\xED\x94\x8C", + "\xC7\xC4" => "\xED\x94\x94", + "\xC7\xC5" => "\xED\x94\x95", + "\xC7\xC6" => "\xED\x94\x97", + "\xC7\xC7" => "\xED\x94\xBC", + "\xC7\xC8" => "\xED\x94\xBD", + "\xC7\xC9" => "\xED\x95\x80", + "\xC7\xCA" => "\xED\x95\x84", + "\xC7\xCB" => "\xED\x95\x8C", + "\xC7\xCC" => "\xED\x95\x8D", + "\xC7\xCD" => "\xED\x95\x8F", + "\xC7\xCE" => "\xED\x95\x91", + "\xC7\xCF" => "\xED\x95\x98", + "\xC7\xD0" => "\xED\x95\x99", + "\xC7\xD1" => "\xED\x95\x9C", + "\xC7\xD2" => "\xED\x95\xA0", + "\xC7\xD3" => "\xED\x95\xA5", + "\xC7\xD4" => "\xED\x95\xA8", + "\xC7\xD5" => "\xED\x95\xA9", + "\xC7\xD6" => "\xED\x95\xAB", + "\xC7\xD7" => "\xED\x95\xAD", + "\xC7\xD8" => "\xED\x95\xB4", + "\xC7\xD9" => "\xED\x95\xB5", + "\xC7\xDA" => "\xED\x95\xB8", + "\xC7\xDB" => "\xED\x95\xBC", + "\xC7\xDC" => "\xED\x96\x84", + "\xC7\xDD" => "\xED\x96\x85", + "\xC7\xDE" => "\xED\x96\x87", + "\xC7\xDF" => "\xED\x96\x88", + "\xC7\xE0" => "\xED\x96\x89", + "\xC7\xE1" => "\xED\x96\x90", + "\xC7\xE2" => "\xED\x96\xA5", + "\xC7\xE3" => "\xED\x97\x88", + "\xC7\xE4" => "\xED\x97\x89", + "\xC7\xE5" => "\xED\x97\x8C", + "\xC7\xE6" => "\xED\x97\x90", + "\xC7\xE7" => "\xED\x97\x92", + "\xC7\xE8" => "\xED\x97\x98", + "\xC7\xE9" => "\xED\x97\x99", + "\xC7\xEA" => "\xED\x97\x9B", + "\xC7\xEB" => "\xED\x97\x9D", + "\xC7\xEC" => "\xED\x97\xA4", + "\xC7\xED" => "\xED\x97\xA5", + "\xC7\xEE" => "\xED\x97\xA8", + "\xC7\xEF" => "\xED\x97\xAC", + "\xC7\xF0" => "\xED\x97\xB4", + "\xC7\xF1" => "\xED\x97\xB5", + "\xC7\xF2" => "\xED\x97\xB7", + "\xC7\xF3" => "\xED\x97\xB9", + "\xC7\xF4" => "\xED\x98\x80", + "\xC7\xF5" => "\xED\x98\x81", + "\xC7\xF6" => "\xED\x98\x84", + "\xC7\xF7" => "\xED\x98\x88", + "\xC7\xF8" => "\xED\x98\x90", + "\xC7\xF9" => "\xED\x98\x91", + "\xC7\xFA" => "\xED\x98\x93", + "\xC7\xFB" => "\xED\x98\x94", + "\xC7\xFC" => "\xED\x98\x95", + "\xC7\xFD" => "\xED\x98\x9C", + "\xC7\xFE" => "\xED\x98\xA0", + "\xC8\xA1" => "\xED\x98\xA4", + "\xC8\xA2" => "\xED\x98\xAD", + "\xC8\xA3" => "\xED\x98\xB8", + "\xC8\xA4" => "\xED\x98\xB9", + "\xC8\xA5" => "\xED\x98\xBC", + "\xC8\xA6" => "\xED\x99\x80", + "\xC8\xA7" => "\xED\x99\x85", + "\xC8\xA8" => "\xED\x99\x88", + "\xC8\xA9" => "\xED\x99\x89", + "\xC8\xAA" => "\xED\x99\x8B", + "\xC8\xAB" => "\xED\x99\x8D", + "\xC8\xAC" => "\xED\x99\x91", + "\xC8\xAD" => "\xED\x99\x94", + "\xC8\xAE" => "\xED\x99\x95", + "\xC8\xAF" => "\xED\x99\x98", + "\xC8\xB0" => "\xED\x99\x9C", + "\xC8\xB1" => "\xED\x99\xA7", + "\xC8\xB2" => "\xED\x99\xA9", + "\xC8\xB3" => "\xED\x99\xB0", + "\xC8\xB4" => "\xED\x99\xB1", + "\xC8\xB5" => "\xED\x99\xB4", + "\xC8\xB6" => "\xED\x9A\x83", + "\xC8\xB7" => "\xED\x9A\x85", + "\xC8\xB8" => "\xED\x9A\x8C", + "\xC8\xB9" => "\xED\x9A\x8D", + "\xC8\xBA" => "\xED\x9A\x90", + "\xC8\xBB" => "\xED\x9A\x94", + "\xC8\xBC" => "\xED\x9A\x9D", + "\xC8\xBD" => "\xED\x9A\x9F", + "\xC8\xBE" => "\xED\x9A\xA1", + "\xC8\xBF" => "\xED\x9A\xA8", + "\xC8\xC0" => "\xED\x9A\xAC", + "\xC8\xC1" => "\xED\x9A\xB0", + "\xC8\xC2" => "\xED\x9A\xB9", + "\xC8\xC3" => "\xED\x9A\xBB", + "\xC8\xC4" => "\xED\x9B\x84", + "\xC8\xC5" => "\xED\x9B\x85", + "\xC8\xC6" => "\xED\x9B\x88", + "\xC8\xC7" => "\xED\x9B\x8C", + "\xC8\xC8" => "\xED\x9B\x91", + "\xC8\xC9" => "\xED\x9B\x94", + "\xC8\xCA" => "\xED\x9B\x97", + "\xC8\xCB" => "\xED\x9B\x99", + "\xC8\xCC" => "\xED\x9B\xA0", + "\xC8\xCD" => "\xED\x9B\xA4", + "\xC8\xCE" => "\xED\x9B\xA8", + "\xC8\xCF" => "\xED\x9B\xB0", + "\xC8\xD0" => "\xED\x9B\xB5", + "\xC8\xD1" => "\xED\x9B\xBC", + "\xC8\xD2" => "\xED\x9B\xBD", + "\xC8\xD3" => "\xED\x9C\x80", + "\xC8\xD4" => "\xED\x9C\x84", + "\xC8\xD5" => "\xED\x9C\x91", + "\xC8\xD6" => "\xED\x9C\x98", + "\xC8\xD7" => "\xED\x9C\x99", + "\xC8\xD8" => "\xED\x9C\x9C", + "\xC8\xD9" => "\xED\x9C\xA0", + "\xC8\xDA" => "\xED\x9C\xA8", + "\xC8\xDB" => "\xED\x9C\xA9", + "\xC8\xDC" => "\xED\x9C\xAB", + "\xC8\xDD" => "\xED\x9C\xAD", + "\xC8\xDE" => "\xED\x9C\xB4", + "\xC8\xDF" => "\xED\x9C\xB5", + "\xC8\xE0" => "\xED\x9C\xB8", + "\xC8\xE1" => "\xED\x9C\xBC", + "\xC8\xE2" => "\xED\x9D\x84", + "\xC8\xE3" => "\xED\x9D\x87", + "\xC8\xE4" => "\xED\x9D\x89", + "\xC8\xE5" => "\xED\x9D\x90", + "\xC8\xE6" => "\xED\x9D\x91", + "\xC8\xE7" => "\xED\x9D\x94", + "\xC8\xE8" => "\xED\x9D\x96", + "\xC8\xE9" => "\xED\x9D\x97", + "\xC8\xEA" => "\xED\x9D\x98", + "\xC8\xEB" => "\xED\x9D\x99", + "\xC8\xEC" => "\xED\x9D\xA0", + "\xC8\xED" => "\xED\x9D\xA1", + "\xC8\xEE" => "\xED\x9D\xA3", + "\xC8\xEF" => "\xED\x9D\xA5", + "\xC8\xF0" => "\xED\x9D\xA9", + "\xC8\xF1" => "\xED\x9D\xAC", + "\xC8\xF2" => "\xED\x9D\xB0", + "\xC8\xF3" => "\xED\x9D\xB4", + "\xC8\xF4" => "\xED\x9D\xBC", + "\xC8\xF5" => "\xED\x9D\xBD", + "\xC8\xF6" => "\xED\x9E\x81", + "\xC8\xF7" => "\xED\x9E\x88", + "\xC8\xF8" => "\xED\x9E\x89", + "\xC8\xF9" => "\xED\x9E\x8C", + "\xC8\xFA" => "\xED\x9E\x90", + "\xC8\xFB" => "\xED\x9E\x98", + "\xC8\xFC" => "\xED\x9E\x99", + "\xC8\xFD" => "\xED\x9E\x9B", + "\xC8\xFE" => "\xED\x9E\x9D", + "\xCA\xA1" => "\xE4\xBC\xBD", + "\xCA\xA2" => "\xE4\xBD\xB3", + "\xCA\xA3" => "\xE5\x81\x87", + "\xCA\xA4" => "\xE5\x83\xB9", + "\xCA\xA5" => "\xE5\x8A\xA0", + "\xCA\xA6" => "\xE5\x8F\xAF", + "\xCA\xA7" => "\xE5\x91\xB5", + "\xCA\xA8" => "\xE5\x93\xA5", + "\xCA\xA9" => "\xE5\x98\x89", + "\xCA\xAA" => "\xE5\xAB\x81", + "\xCA\xAB" => "\xE5\xAE\xB6", + "\xCA\xAC" => "\xE6\x9A\x87", + "\xCA\xAD" => "\xE6\x9E\xB6", + "\xCA\xAE" => "\xE6\x9E\xB7", + "\xCA\xAF" => "\xE6\x9F\xAF", + "\xCA\xB0" => "\xE6\xAD\x8C", + "\xCA\xB1" => "\xE7\x8F\x82", + "\xCA\xB2" => "\xE7\x97\x82", + "\xCA\xB3" => "\xE7\xA8\xBC", + "\xCA\xB4" => "\xE8\x8B\x9B", + "\xCA\xB5" => "\xE8\x8C\x84", + "\xCA\xB6" => "\xE8\xA1\x97", + "\xCA\xB7" => "\xE8\xA2\x88", + "\xCA\xB8" => "\xE8\xA8\xB6", + "\xCA\xB9" => "\xE8\xB3\x88", + "\xCA\xBA" => "\xE8\xB7\x8F", + "\xCA\xBB" => "\xE8\xBB\xBB", + "\xCA\xBC" => "\xE8\xBF\xA6", + "\xCA\xBD" => "\xE9\xA7\x95", + "\xCA\xBE" => "\xE5\x88\xBB", + "\xCA\xBF" => "\xE5\x8D\xB4", + "\xCA\xC0" => "\xE5\x90\x84", + "\xCA\xC1" => "\xE6\x81\xAA", + "\xCA\xC2" => "\xE6\x85\xA4", + "\xCA\xC3" => "\xE6\xAE\xBC", + "\xCA\xC4" => "\xE7\x8F\x8F", + "\xCA\xC5" => "\xE8\x84\x9A", + "\xCA\xC6" => "\xE8\xA6\xBA", + "\xCA\xC7" => "\xE8\xA7\x92", + "\xCA\xC8" => "\xE9\x96\xA3", + "\xCA\xC9" => "\xE4\xBE\x83", + "\xCA\xCA" => "\xE5\x88\x8A", + "\xCA\xCB" => "\xE5\xA2\xBE", + "\xCA\xCC" => "\xE5\xA5\xB8", + "\xCA\xCD" => "\xE5\xA7\xA6", + "\xCA\xCE" => "\xE5\xB9\xB2", + "\xCA\xCF" => "\xE5\xB9\xB9", + "\xCA\xD0" => "\xE6\x87\x87", + "\xCA\xD1" => "\xE6\x8F\x80", + "\xCA\xD2" => "\xE6\x9D\x86", + "\xCA\xD3" => "\xE6\x9F\xAC", + "\xCA\xD4" => "\xE6\xA1\xBF", + "\xCA\xD5" => "\xE6\xBE\x97", + "\xCA\xD6" => "\xE7\x99\x8E", + "\xCA\xD7" => "\xE7\x9C\x8B", + "\xCA\xD8" => "\xE7\xA3\xB5", + "\xCA\xD9" => "\xE7\xA8\x88", + "\xCA\xDA" => "\xE7\xAB\xBF", + "\xCA\xDB" => "\xE7\xB0\xA1", + "\xCA\xDC" => "\xE8\x82\x9D", + "\xCA\xDD" => "\xE8\x89\xAE", + "\xCA\xDE" => "\xE8\x89\xB1", + "\xCA\xDF" => "\xE8\xAB\xAB", + "\xCA\xE0" => "\xE9\x96\x93", + "\xCA\xE1" => "\xE4\xB9\xAB", + "\xCA\xE2" => "\xE5\x96\x9D", + "\xCA\xE3" => "\xE6\x9B\xB7", + "\xCA\xE4" => "\xE6\xB8\xB4", + "\xCA\xE5" => "\xE7\xA2\xA3", + "\xCA\xE6" => "\xE7\xAB\xAD", + "\xCA\xE7" => "\xE8\x91\x9B", + "\xCA\xE8" => "\xE8\xA4\x90", + "\xCA\xE9" => "\xE8\x9D\x8E", + "\xCA\xEA" => "\xE9\x9E\xA8", + "\xCA\xEB" => "\xE5\x8B\x98", + "\xCA\xEC" => "\xE5\x9D\x8E", + "\xCA\xED" => "\xE5\xA0\xAA", + "\xCA\xEE" => "\xE5\xB5\x8C", + "\xCA\xEF" => "\xE6\x84\x9F", + "\xCA\xF0" => "\xE6\x86\xBE", + "\xCA\xF1" => "\xE6\x88\xA1", + "\xCA\xF2" => "\xE6\x95\xA2", + "\xCA\xF3" => "\xE6\x9F\x91", + "\xCA\xF4" => "\xE6\xA9\x84", + "\xCA\xF5" => "\xE6\xB8\x9B", + "\xCA\xF6" => "\xE7\x94\x98", + "\xCA\xF7" => "\xE7\x96\xB3", + "\xCA\xF8" => "\xE7\x9B\xA3", + "\xCA\xF9" => "\xE7\x9E\xB0", + "\xCA\xFA" => "\xE7\xB4\xBA", + "\xCA\xFB" => "\xE9\x82\xAF", + "\xCA\xFC" => "\xE9\x91\x91", + "\xCA\xFD" => "\xE9\x91\x92", + "\xCA\xFE" => "\xE9\xBE\x95", + "\xCB\xA1" => "\xE5\x8C\xA3", + "\xCB\xA2" => "\xE5\xB2\xAC", + "\xCB\xA3" => "\xE7\x94\xB2", + "\xCB\xA4" => "\xE8\x83\x9B", + "\xCB\xA5" => "\xE9\x89\x80", + "\xCB\xA6" => "\xE9\x96\x98", + "\xCB\xA7" => "\xE5\x89\x9B", + "\xCB\xA8" => "\xE5\xA0\x88", + "\xCB\xA9" => "\xE5\xA7\x9C", + "\xCB\xAA" => "\xE5\xB2\xA1", + "\xCB\xAB" => "\xE5\xB4\x97", + "\xCB\xAC" => "\xE5\xBA\xB7", + "\xCB\xAD" => "\xE5\xBC\xBA", + "\xCB\xAE" => "\xE5\xBD\x8A", + "\xCB\xAF" => "\xE6\x85\xB7", + "\xCB\xB0" => "\xE6\xB1\x9F", + "\xCB\xB1" => "\xE7\x95\xBA", + "\xCB\xB2" => "\xE7\x96\x86", + "\xCB\xB3" => "\xE7\xB3\xA0", + "\xCB\xB4" => "\xE7\xB5\xB3", + "\xCB\xB5" => "\xE7\xB6\xB1", + "\xCB\xB6" => "\xE7\xBE\x8C", + "\xCB\xB7" => "\xE8\x85\x94", + "\xCB\xB8" => "\xE8\x88\xA1", + "\xCB\xB9" => "\xE8\x96\x91", + "\xCB\xBA" => "\xE8\xA5\x81", + "\xCB\xBB" => "\xE8\xAC\x9B", + "\xCB\xBC" => "\xE9\x8B\xBC", + "\xCB\xBD" => "\xE9\x99\x8D", + "\xCB\xBE" => "\xE9\xB1\x87", + "\xCB\xBF" => "\xE4\xBB\x8B", + "\xCB\xC0" => "\xE4\xBB\xB7", + "\xCB\xC1" => "\xE5\x80\x8B", + "\xCB\xC2" => "\xE5\x87\xB1", + "\xCB\xC3" => "\xE5\xA1\x8F", + "\xCB\xC4" => "\xE6\x84\xB7", + "\xCB\xC5" => "\xE6\x84\xBE", + "\xCB\xC6" => "\xE6\x85\xA8", + "\xCB\xC7" => "\xE6\x94\xB9", + "\xCB\xC8" => "\xE6\xA7\xAA", + "\xCB\xC9" => "\xE6\xBC\x91", + "\xCB\xCA" => "\xE7\x96\xA5", + "\xCB\xCB" => "\xE7\x9A\x86", + "\xCB\xCC" => "\xE7\x9B\x96", + "\xCB\xCD" => "\xE7\xAE\x87", + "\xCB\xCE" => "\xE8\x8A\xA5", + "\xCB\xCF" => "\xE8\x93\x8B", + "\xCB\xD0" => "\xEF\xA4\x80", + "\xCB\xD1" => "\xE9\x8E\xA7", + "\xCB\xD2" => "\xE9\x96\x8B", + "\xCB\xD3" => "\xE5\x96\x80", + "\xCB\xD4" => "\xE5\xAE\xA2", + "\xCB\xD5" => "\xE5\x9D\x91", + "\xCB\xD6" => "\xEF\xA4\x81", + "\xCB\xD7" => "\xE7\xB2\xB3", + "\xCB\xD8" => "\xE7\xBE\xB9", + "\xCB\xD9" => "\xE9\x86\xB5", + "\xCB\xDA" => "\xE5\x80\xA8", + "\xCB\xDB" => "\xE5\x8E\xBB", + "\xCB\xDC" => "\xE5\xB1\x85", + "\xCB\xDD" => "\xE5\xB7\xA8", + "\xCB\xDE" => "\xE6\x8B\x92", + "\xCB\xDF" => "\xE6\x8D\xAE", + "\xCB\xE0" => "\xE6\x93\x9A", + "\xCB\xE1" => "\xE6\x93\xA7", + "\xCB\xE2" => "\xE6\xB8\xA0", + "\xCB\xE3" => "\xE7\x82\xAC", + "\xCB\xE4" => "\xE7\xA5\x9B", + "\xCB\xE5" => "\xE8\xB7\x9D", + "\xCB\xE6" => "\xE8\xB8\x9E", + "\xCB\xE7" => "\xEF\xA4\x82", + "\xCB\xE8" => "\xE9\x81\xBD", + "\xCB\xE9" => "\xE9\x89\x85", + "\xCB\xEA" => "\xE9\x8B\xB8", + "\xCB\xEB" => "\xE4\xB9\xBE", + "\xCB\xEC" => "\xE4\xBB\xB6", + "\xCB\xED" => "\xE5\x81\xA5", + "\xCB\xEE" => "\xE5\xB7\xBE", + "\xCB\xEF" => "\xE5\xBB\xBA", + "\xCB\xF0" => "\xE6\x84\x86", + "\xCB\xF1" => "\xE6\xA5\x97", + "\xCB\xF2" => "\xE8\x85\xB1", + "\xCB\xF3" => "\xE8\x99\x94", + "\xCB\xF4" => "\xE8\xB9\x87", + "\xCB\xF5" => "\xE9\x8D\xB5", + "\xCB\xF6" => "\xE9\xA8\xAB", + "\xCB\xF7" => "\xE4\xB9\x9E", + "\xCB\xF8" => "\xE5\x82\x91", + "\xCB\xF9" => "\xE6\x9D\xB0", + "\xCB\xFA" => "\xE6\xA1\x80", + "\xCB\xFB" => "\xE5\x84\x89", + "\xCB\xFC" => "\xE5\x8A\x8D", + "\xCB\xFD" => "\xE5\x8A\x92", + "\xCB\xFE" => "\xE6\xAA\xA2", + "\xCC\xA1" => "\xE7\x9E\xBC", + "\xCC\xA2" => "\xE9\x88\x90", + "\xCC\xA3" => "\xE9\xBB\x94", + "\xCC\xA4" => "\xE5\x8A\xAB", + "\xCC\xA5" => "\xE6\x80\xAF", + "\xCC\xA6" => "\xE8\xBF\xB2", + "\xCC\xA7" => "\xE5\x81\x88", + "\xCC\xA8" => "\xE6\x86\xA9", + "\xCC\xA9" => "\xE6\x8F\xAD", + "\xCC\xAA" => "\xE6\x93\x8A", + "\xCC\xAB" => "\xE6\xA0\xBC", + "\xCC\xAC" => "\xE6\xAA\x84", + "\xCC\xAD" => "\xE6\xBF\x80", + "\xCC\xAE" => "\xE8\x86\x88", + "\xCC\xAF" => "\xE8\xA6\xA1", + "\xCC\xB0" => "\xE9\x9A\x94", + "\xCC\xB1" => "\xE5\xA0\x85", + "\xCC\xB2" => "\xE7\x89\xBD", + "\xCC\xB3" => "\xE7\x8A\xAC", + "\xCC\xB4" => "\xE7\x94\x84", + "\xCC\xB5" => "\xE7\xB5\xB9", + "\xCC\xB6" => "\xE7\xB9\xAD", + "\xCC\xB7" => "\xE8\x82\xA9", + "\xCC\xB8" => "\xE8\xA6\x8B", + "\xCC\xB9" => "\xE8\xAD\xB4", + "\xCC\xBA" => "\xE9\x81\xA3", + "\xCC\xBB" => "\xE9\xB5\x91", + "\xCC\xBC" => "\xE6\x8A\x89", + "\xCC\xBD" => "\xE6\xB1\xBA", + "\xCC\xBE" => "\xE6\xBD\x94", + "\xCC\xBF" => "\xE7\xB5\x90", + "\xCC\xC0" => "\xE7\xBC\xBA", + "\xCC\xC1" => "\xE8\xA8\xA3", + "\xCC\xC2" => "\xE5\x85\xBC", + "\xCC\xC3" => "\xE6\x85\x8A", + "\xCC\xC4" => "\xE7\xAE\x9D", + "\xCC\xC5" => "\xE8\xAC\x99", + "\xCC\xC6" => "\xE9\x89\x97", + "\xCC\xC7" => "\xE9\x8E\x8C", + "\xCC\xC8" => "\xE4\xBA\xAC", + "\xCC\xC9" => "\xE4\xBF\x93", + "\xCC\xCA" => "\xE5\x80\x9E", + "\xCC\xCB" => "\xE5\x82\xBE", + "\xCC\xCC" => "\xE5\x84\x86", + "\xCC\xCD" => "\xE5\x8B\x81", + "\xCC\xCE" => "\xE5\x8B\x8D", + "\xCC\xCF" => "\xE5\x8D\xBF", + "\xCC\xD0" => "\xE5\x9D\xB0", + "\xCC\xD1" => "\xE5\xA2\x83", + "\xCC\xD2" => "\xE5\xBA\x9A", + "\xCC\xD3" => "\xE5\xBE\x91", + "\xCC\xD4" => "\xE6\x85\xB6", + "\xCC\xD5" => "\xE6\x86\xAC", + "\xCC\xD6" => "\xE6\x93\x8E", + "\xCC\xD7" => "\xE6\x95\xAC", + "\xCC\xD8" => "\xE6\x99\xAF", + "\xCC\xD9" => "\xE6\x9A\xBB", + "\xCC\xDA" => "\xE6\x9B\xB4", + "\xCC\xDB" => "\xE6\xA2\x97", + "\xCC\xDC" => "\xE6\xB6\x87", + "\xCC\xDD" => "\xE7\x82\x85", + "\xCC\xDE" => "\xE7\x83\xB1", + "\xCC\xDF" => "\xE7\x92\x9F", + "\xCC\xE0" => "\xE7\x92\xA5", + "\xCC\xE1" => "\xE7\x93\x8A", + "\xCC\xE2" => "\xE7\x97\x99", + "\xCC\xE3" => "\xE7\xA1\xAC", + "\xCC\xE4" => "\xE7\xA3\xAC", + "\xCC\xE5" => "\xE7\xAB\x9F", + "\xCC\xE6" => "\xE7\xAB\xB6", + "\xCC\xE7" => "\xE7\xB5\x85", + "\xCC\xE8" => "\xE7\xB6\x93", + "\xCC\xE9" => "\xE8\x80\x95", + "\xCC\xEA" => "\xE8\x80\xBF", + "\xCC\xEB" => "\xE8\x84\x9B", + "\xCC\xEC" => "\xE8\x8E\x96", + "\xCC\xED" => "\xE8\xAD\xA6", + "\xCC\xEE" => "\xE8\xBC\x95", + "\xCC\xEF" => "\xE9\x80\x95", + "\xCC\xF0" => "\xE9\x8F\xA1", + "\xCC\xF1" => "\xE9\xA0\x83", + "\xCC\xF2" => "\xE9\xA0\xB8", + "\xCC\xF3" => "\xE9\xA9\x9A", + "\xCC\xF4" => "\xE9\xAF\xA8", + "\xCC\xF5" => "\xE4\xBF\x82", + "\xCC\xF6" => "\xE5\x95\x93", + "\xCC\xF7" => "\xE5\xA0\xBA", + "\xCC\xF8" => "\xE5\xA5\x91", + "\xCC\xF9" => "\xE5\xAD\xA3", + "\xCC\xFA" => "\xE5\xB1\x86", + "\xCC\xFB" => "\xE6\x82\xB8", + "\xCC\xFC" => "\xE6\x88\x92", + "\xCC\xFD" => "\xE6\xA1\x82", + "\xCC\xFE" => "\xE6\xA2\xB0", + "\xCD\xA1" => "\xE6\xA3\xA8", + "\xCD\xA2" => "\xE6\xBA\xAA", + "\xCD\xA3" => "\xE7\x95\x8C", + "\xCD\xA4" => "\xE7\x99\xB8", + "\xCD\xA5" => "\xE7\xA3\x8E", + "\xCD\xA6" => "\xE7\xA8\xBD", + "\xCD\xA7" => "\xE7\xB3\xBB", + "\xCD\xA8" => "\xE7\xB9\xAB", + "\xCD\xA9" => "\xE7\xB9\xBC", + "\xCD\xAA" => "\xE8\xA8\x88", + "\xCD\xAB" => "\xE8\xAA\xA1", + "\xCD\xAC" => "\xE8\xB0\xBF", + "\xCD\xAD" => "\xE9\x9A\x8E", + "\xCD\xAE" => "\xE9\xB7\x84", + "\xCD\xAF" => "\xE5\x8F\xA4", + "\xCD\xB0" => "\xE5\x8F\xA9", + "\xCD\xB1" => "\xE5\x91\x8A", + "\xCD\xB2" => "\xE5\x91\xB1", + "\xCD\xB3" => "\xE5\x9B\xBA", + "\xCD\xB4" => "\xE5\xA7\x91", + "\xCD\xB5" => "\xE5\xAD\xA4", + "\xCD\xB6" => "\xE5\xB0\xBB", + "\xCD\xB7" => "\xE5\xBA\xAB", + "\xCD\xB8" => "\xE6\x8B\xB7", + "\xCD\xB9" => "\xE6\x94\xB7", + "\xCD\xBA" => "\xE6\x95\x85", + "\xCD\xBB" => "\xE6\x95\xB2", + "\xCD\xBC" => "\xE6\x9A\xA0", + "\xCD\xBD" => "\xE6\x9E\xAF", + "\xCD\xBE" => "\xE6\xA7\x81", + "\xCD\xBF" => "\xE6\xB2\xBD", + "\xCD\xC0" => "\xE7\x97\xBC", + "\xCD\xC1" => "\xE7\x9A\x90", + "\xCD\xC2" => "\xE7\x9D\xBE", + "\xCD\xC3" => "\xE7\xA8\xBF", + "\xCD\xC4" => "\xE7\xBE\x94", + "\xCD\xC5" => "\xE8\x80\x83", + "\xCD\xC6" => "\xE8\x82\xA1", + "\xCD\xC7" => "\xE8\x86\x8F", + "\xCD\xC8" => "\xE8\x8B\xA6", + "\xCD\xC9" => "\xE8\x8B\xBD", + "\xCD\xCA" => "\xE8\x8F\xB0", + "\xCD\xCB" => "\xE8\x97\x81", + "\xCD\xCC" => "\xE8\xA0\xB1", + "\xCD\xCD" => "\xE8\xA2\xB4", + "\xCD\xCE" => "\xE8\xAA\xA5", + "\xCD\xCF" => "\xEF\xA4\x83", + "\xCD\xD0" => "\xE8\xBE\x9C", + "\xCD\xD1" => "\xE9\x8C\xAE", + "\xCD\xD2" => "\xE9\x9B\x87", + "\xCD\xD3" => "\xE9\xA1\xA7", + "\xCD\xD4" => "\xE9\xAB\x98", + "\xCD\xD5" => "\xE9\xBC\x93", + "\xCD\xD6" => "\xE5\x93\xAD", + "\xCD\xD7" => "\xE6\x96\x9B", + "\xCD\xD8" => "\xE6\x9B\xB2", + "\xCD\xD9" => "\xE6\xA2\x8F", + "\xCD\xDA" => "\xE7\xA9\x80", + "\xCD\xDB" => "\xE8\xB0\xB7", + "\xCD\xDC" => "\xE9\xB5\xA0", + "\xCD\xDD" => "\xE5\x9B\xB0", + "\xCD\xDE" => "\xE5\x9D\xA4", + "\xCD\xDF" => "\xE5\xB4\x91", + "\xCD\xE0" => "\xE6\x98\x86", + "\xCD\xE1" => "\xE6\xA2\xB1", + "\xCD\xE2" => "\xE6\xA3\x8D", + "\xCD\xE3" => "\xE6\xBB\xBE", + "\xCD\xE4" => "\xE7\x90\xA8", + "\xCD\xE5" => "\xE8\xA2\x9E", + "\xCD\xE6" => "\xE9\xAF\xA4", + "\xCD\xE7" => "\xE6\xB1\xA8", + "\xCD\xE8" => "\xEF\xA4\x84", + "\xCD\xE9" => "\xE9\xAA\xA8", + "\xCD\xEA" => "\xE4\xBE\x9B", + "\xCD\xEB" => "\xE5\x85\xAC", + "\xCD\xEC" => "\xE5\x85\xB1", + "\xCD\xED" => "\xE5\x8A\x9F", + "\xCD\xEE" => "\xE5\xAD\x94", + "\xCD\xEF" => "\xE5\xB7\xA5", + "\xCD\xF0" => "\xE6\x81\x90", + "\xCD\xF1" => "\xE6\x81\xAD", + "\xCD\xF2" => "\xE6\x8B\xB1", + "\xCD\xF3" => "\xE6\x8E\xA7", + "\xCD\xF4" => "\xE6\x94\xBB", + "\xCD\xF5" => "\xE7\x8F\x99", + "\xCD\xF6" => "\xE7\xA9\xBA", + "\xCD\xF7" => "\xE8\x9A\xA3", + "\xCD\xF8" => "\xE8\xB2\xA2", + "\xCD\xF9" => "\xE9\x9E\x8F", + "\xCD\xFA" => "\xE4\xB8\xB2", + "\xCD\xFB" => "\xE5\xAF\xA1", + "\xCD\xFC" => "\xE6\x88\x88", + "\xCD\xFD" => "\xE6\x9E\x9C", + "\xCD\xFE" => "\xE7\x93\x9C", + "\xCE\xA1" => "\xE7\xA7\x91", + "\xCE\xA2" => "\xE8\x8F\x93", + "\xCE\xA3" => "\xE8\xAA\x87", + "\xCE\xA4" => "\xE8\xAA\xB2", + "\xCE\xA5" => "\xE8\xB7\xA8", + "\xCE\xA6" => "\xE9\x81\x8E", + "\xCE\xA7" => "\xE9\x8D\x8B", + "\xCE\xA8" => "\xE9\xA1\x86", + "\xCE\xA9" => "\xE5\xBB\x93", + "\xCE\xAA" => "\xE6\xA7\xA8", + "\xCE\xAB" => "\xE8\x97\xBF", + "\xCE\xAC" => "\xE9\x83\xAD", + "\xCE\xAD" => "\xEF\xA4\x85", + "\xCE\xAE" => "\xE5\x86\xA0", + "\xCE\xAF" => "\xE5\xAE\x98", + "\xCE\xB0" => "\xE5\xAF\xAC", + "\xCE\xB1" => "\xE6\x85\xA3", + "\xCE\xB2" => "\xE6\xA3\xBA", + "\xCE\xB3" => "\xE6\xAC\xBE", + "\xCE\xB4" => "\xE7\x81\x8C", + "\xCE\xB5" => "\xE7\x90\xAF", + "\xCE\xB6" => "\xE7\x93\x98", + "\xCE\xB7" => "\xE7\xAE\xA1", + "\xCE\xB8" => "\xE7\xBD\x90", + "\xCE\xB9" => "\xE8\x8F\x85", + "\xCE\xBA" => "\xE8\xA7\x80", + "\xCE\xBB" => "\xE8\xB2\xAB", + "\xCE\xBC" => "\xE9\x97\x9C", + "\xCE\xBD" => "\xE9\xA4\xA8", + "\xCE\xBE" => "\xE5\x88\xAE", + "\xCE\xBF" => "\xE6\x81\x9D", + "\xCE\xC0" => "\xE6\x8B\xAC", + "\xCE\xC1" => "\xE9\x80\x82", + "\xCE\xC2" => "\xE4\xBE\x8A", + "\xCE\xC3" => "\xE5\x85\x89", + "\xCE\xC4" => "\xE5\x8C\xA1", + "\xCE\xC5" => "\xE5\xA3\x99", + "\xCE\xC6" => "\xE5\xBB\xA3", + "\xCE\xC7" => "\xE6\x9B\xA0", + "\xCE\xC8" => "\xE6\xB4\xB8", + "\xCE\xC9" => "\xE7\x82\x9A", + "\xCE\xCA" => "\xE7\x8B\x82", + "\xCE\xCB" => "\xE7\x8F\x96", + "\xCE\xCC" => "\xE7\xAD\x90", + "\xCE\xCD" => "\xE8\x83\xB1", + "\xCE\xCE" => "\xE9\x91\x9B", + "\xCE\xCF" => "\xE5\x8D\xA6", + "\xCE\xD0" => "\xE6\x8E\x9B", + "\xCE\xD1" => "\xE7\xBD\xAB", + "\xCE\xD2" => "\xE4\xB9\x96", + "\xCE\xD3" => "\xE5\x82\x80", + "\xCE\xD4" => "\xE5\xA1\x8A", + "\xCE\xD5" => "\xE5\xA3\x9E", + "\xCE\xD6" => "\xE6\x80\xAA", + "\xCE\xD7" => "\xE6\x84\xA7", + "\xCE\xD8" => "\xE6\x8B\x90", + "\xCE\xD9" => "\xE6\xA7\x90", + "\xCE\xDA" => "\xE9\xAD\x81", + "\xCE\xDB" => "\xE5\xAE\x8F", + "\xCE\xDC" => "\xE7\xB4\x98", + "\xCE\xDD" => "\xE8\x82\xB1", + "\xCE\xDE" => "\xE8\xBD\x9F", + "\xCE\xDF" => "\xE4\xBA\xA4", + "\xCE\xE0" => "\xE5\x83\x91", + "\xCE\xE1" => "\xE5\x92\xAC", + "\xCE\xE2" => "\xE5\x96\xAC", + "\xCE\xE3" => "\xE5\xAC\x8C", + "\xCE\xE4" => "\xE5\xB6\xA0", + "\xCE\xE5" => "\xE5\xB7\xA7", + "\xCE\xE6" => "\xE6\x94\xAA", + "\xCE\xE7" => "\xE6\x95\x8E", + "\xCE\xE8" => "\xE6\xA0\xA1", + "\xCE\xE9" => "\xE6\xA9\x8B", + "\xCE\xEA" => "\xE7\x8B\xA1", + "\xCE\xEB" => "\xE7\x9A\x8E", + "\xCE\xEC" => "\xE7\x9F\xAF", + "\xCE\xED" => "\xE7\xB5\x9E", + "\xCE\xEE" => "\xE7\xBF\xB9", + "\xCE\xEF" => "\xE8\x86\xA0", + "\xCE\xF0" => "\xE8\x95\x8E", + "\xCE\xF1" => "\xE8\x9B\x9F", + "\xCE\xF2" => "\xE8\xBC\x83", + "\xCE\xF3" => "\xE8\xBD\x8E", + "\xCE\xF4" => "\xE9\x83\x8A", + "\xCE\xF5" => "\xE9\xA4\x83", + "\xCE\xF6" => "\xE9\xA9\x95", + "\xCE\xF7" => "\xE9\xAE\xAB", + "\xCE\xF8" => "\xE4\xB8\x98", + "\xCE\xF9" => "\xE4\xB9\x85", + "\xCE\xFA" => "\xE4\xB9\x9D", + "\xCE\xFB" => "\xE4\xBB\x87", + "\xCE\xFC" => "\xE4\xBF\xB1", + "\xCE\xFD" => "\xE5\x85\xB7", + "\xCE\xFE" => "\xE5\x8B\xBE", + "\xCF\xA1" => "\xE5\x8D\x80", + "\xCF\xA2" => "\xE5\x8F\xA3", + "\xCF\xA3" => "\xE5\x8F\xA5", + "\xCF\xA4" => "\xE5\x92\x8E", + "\xCF\xA5" => "\xE5\x98\x94", + "\xCF\xA6" => "\xE5\x9D\xB5", + "\xCF\xA7" => "\xE5\x9E\xA2", + "\xCF\xA8" => "\xE5\xAF\x87", + "\xCF\xA9" => "\xE5\xB6\x87", + "\xCF\xAA" => "\xE5\xBB\x90", + "\xCF\xAB" => "\xE6\x87\xBC", + "\xCF\xAC" => "\xE6\x8B\x98", + "\xCF\xAD" => "\xE6\x95\x91", + "\xCF\xAE" => "\xE6\x9E\xB8", + "\xCF\xAF" => "\xE6\x9F\xA9", + "\xCF\xB0" => "\xE6\xA7\x8B", + "\xCF\xB1" => "\xE6\xAD\x90", + "\xCF\xB2" => "\xE6\xAF\x86", + "\xCF\xB3" => "\xE6\xAF\xAC", + "\xCF\xB4" => "\xE6\xB1\x82", + "\xCF\xB5" => "\xE6\xBA\x9D", + "\xCF\xB6" => "\xE7\x81\xB8", + "\xCF\xB7" => "\xE7\x8B\x97", + "\xCF\xB8" => "\xE7\x8E\x96", + "\xCF\xB9" => "\xE7\x90\x83", + "\xCF\xBA" => "\xE7\x9E\xBF", + "\xCF\xBB" => "\xE7\x9F\xA9", + "\xCF\xBC" => "\xE7\xA9\xB6", + "\xCF\xBD" => "\xE7\xB5\xBF", + "\xCF\xBE" => "\xE8\x80\x89", + "\xCF\xBF" => "\xE8\x87\xBC", + "\xCF\xC0" => "\xE8\x88\x85", + "\xCF\xC1" => "\xE8\x88\x8A", + "\xCF\xC2" => "\xE8\x8B\x9F", + "\xCF\xC3" => "\xE8\xA1\xA2", + "\xCF\xC4" => "\xE8\xAC\xB3", + "\xCF\xC5" => "\xE8\xB3\xBC", + "\xCF\xC6" => "\xE8\xBB\x80", + "\xCF\xC7" => "\xE9\x80\x91", + "\xCF\xC8" => "\xE9\x82\xB1", + "\xCF\xC9" => "\xE9\x89\xA4", + "\xCF\xCA" => "\xE9\x8A\xB6", + "\xCF\xCB" => "\xE9\xA7\x92", + "\xCF\xCC" => "\xE9\xA9\x85", + "\xCF\xCD" => "\xE9\xB3\xA9", + "\xCF\xCE" => "\xE9\xB7\x97", + "\xCF\xCF" => "\xE9\xBE\x9C", + "\xCF\xD0" => "\xE5\x9C\x8B", + "\xCF\xD1" => "\xE5\xB1\x80", + "\xCF\xD2" => "\xE8\x8F\x8A", + "\xCF\xD3" => "\xE9\x9E\xA0", + "\xCF\xD4" => "\xE9\x9E\xAB", + "\xCF\xD5" => "\xE9\xBA\xB4", + "\xCF\xD6" => "\xE5\x90\x9B", + "\xCF\xD7" => "\xE7\xAA\x98", + "\xCF\xD8" => "\xE7\xBE\xA4", + "\xCF\xD9" => "\xE8\xA3\x99", + "\xCF\xDA" => "\xE8\xBB\x8D", + "\xCF\xDB" => "\xE9\x83\xA1", + "\xCF\xDC" => "\xE5\xA0\x80", + "\xCF\xDD" => "\xE5\xB1\x88", + "\xCF\xDE" => "\xE6\x8E\x98", + "\xCF\xDF" => "\xE7\xAA\x9F", + "\xCF\xE0" => "\xE5\xAE\xAE", + "\xCF\xE1" => "\xE5\xBC\x93", + "\xCF\xE2" => "\xE7\xA9\xB9", + "\xCF\xE3" => "\xE7\xAA\xAE", + "\xCF\xE4" => "\xE8\x8A\x8E", + "\xCF\xE5" => "\xE8\xBA\xAC", + "\xCF\xE6" => "\xE5\x80\xA6", + "\xCF\xE7" => "\xE5\x88\xB8", + "\xCF\xE8" => "\xE5\x8B\xB8", + "\xCF\xE9" => "\xE5\x8D\xB7", + "\xCF\xEA" => "\xE5\x9C\x88", + "\xCF\xEB" => "\xE6\x8B\xB3", + "\xCF\xEC" => "\xE6\x8D\xB2", + "\xCF\xED" => "\xE6\xAC\x8A", + "\xCF\xEE" => "\xE6\xB7\x83", + "\xCF\xEF" => "\xE7\x9C\xB7", + "\xCF\xF0" => "\xE5\x8E\xA5", + "\xCF\xF1" => "\xE7\x8D\x97", + "\xCF\xF2" => "\xE8\x95\xA8", + "\xCF\xF3" => "\xE8\xB9\xB6", + "\xCF\xF4" => "\xE9\x97\x95", + "\xCF\xF5" => "\xE6\x9C\xBA", + "\xCF\xF6" => "\xE6\xAB\x83", + "\xCF\xF7" => "\xE6\xBD\xB0", + "\xCF\xF8" => "\xE8\xA9\xAD", + "\xCF\xF9" => "\xE8\xBB\x8C", + "\xCF\xFA" => "\xE9\xA5\x8B", + "\xCF\xFB" => "\xEF\xA4\x86", + "\xCF\xFC" => "\xE6\x99\xB7", + "\xCF\xFD" => "\xE6\xAD\xB8", + "\xCF\xFE" => "\xE8\xB2\xB4", + "\xD0\xA1" => "\xE9\xAC\xBC", + "\xD0\xA2" => "\xEF\xA4\x87", + "\xD0\xA3" => "\xE5\x8F\xAB", + "\xD0\xA4" => "\xE5\x9C\xAD", + "\xD0\xA5" => "\xE5\xA5\x8E", + "\xD0\xA6" => "\xE6\x8F\x86", + "\xD0\xA7" => "\xE6\xA7\xBB", + "\xD0\xA8" => "\xE7\x8F\xAA", + "\xD0\xA9" => "\xE7\xA1\x85", + "\xD0\xAA" => "\xE7\xAA\xBA", + "\xD0\xAB" => "\xE7\xAB\x85", + "\xD0\xAC" => "\xE7\xB3\xBE", + "\xD0\xAD" => "\xE8\x91\xB5", + "\xD0\xAE" => "\xE8\xA6\x8F", + "\xD0\xAF" => "\xE8\xB5\xB3", + "\xD0\xB0" => "\xE9\x80\xB5", + "\xD0\xB1" => "\xE9\x96\xA8", + "\xD0\xB2" => "\xE5\x8B\xBB", + "\xD0\xB3" => "\xE5\x9D\x87", + "\xD0\xB4" => "\xE7\x95\x87", + "\xD0\xB5" => "\xE7\xAD\xA0", + "\xD0\xB6" => "\xE8\x8F\x8C", + "\xD0\xB7" => "\xE9\x88\x9E", + "\xD0\xB8" => "\xEF\xA4\x88", + "\xD0\xB9" => "\xE6\xA9\x98", + "\xD0\xBA" => "\xE5\x85\x8B", + "\xD0\xBB" => "\xE5\x89\x8B", + "\xD0\xBC" => "\xE5\x8A\x87", + "\xD0\xBD" => "\xE6\x88\x9F", + "\xD0\xBE" => "\xE6\xA3\x98", + "\xD0\xBF" => "\xE6\xA5\xB5", + "\xD0\xC0" => "\xE9\x9A\x99", + "\xD0\xC1" => "\xE5\x83\x85", + "\xD0\xC2" => "\xE5\x8A\xA4", + "\xD0\xC3" => "\xE5\x8B\xA4", + "\xD0\xC4" => "\xE6\x87\x83", + "\xD0\xC5" => "\xE6\x96\xA4", + "\xD0\xC6" => "\xE6\xA0\xB9", + "\xD0\xC7" => "\xE6\xA7\xBF", + "\xD0\xC8" => "\xE7\x91\xBE", + "\xD0\xC9" => "\xE7\xAD\x8B", + "\xD0\xCA" => "\xE8\x8A\xB9", + "\xD0\xCB" => "\xE8\x8F\xAB", + "\xD0\xCC" => "\xE8\xA6\xB2", + "\xD0\xCD" => "\xE8\xAC\xB9", + "\xD0\xCE" => "\xE8\xBF\x91", + "\xD0\xCF" => "\xE9\xA5\x89", + "\xD0\xD0" => "\xEF\xA4\x89", + "\xD0\xD1" => "\xE4\xBB\x8A", + "\xD0\xD2" => "\xE5\xA6\x97", + "\xD0\xD3" => "\xE6\x93\x92", + "\xD0\xD4" => "\xE6\x98\x91", + "\xD0\xD5" => "\xE6\xAA\x8E", + "\xD0\xD6" => "\xE7\x90\xB4", + "\xD0\xD7" => "\xE7\xA6\x81", + "\xD0\xD8" => "\xE7\xA6\xBD", + "\xD0\xD9" => "\xE8\x8A\xA9", + "\xD0\xDA" => "\xE8\xA1\xBE", + "\xD0\xDB" => "\xE8\xA1\xBF", + "\xD0\xDC" => "\xE8\xA5\x9F", + "\xD0\xDD" => "\xEF\xA4\x8A", + "\xD0\xDE" => "\xE9\x8C\xA6", + "\xD0\xDF" => "\xE4\xBC\x8B", + "\xD0\xE0" => "\xE5\x8F\x8A", + "\xD0\xE1" => "\xE6\x80\xA5", + "\xD0\xE2" => "\xE6\x89\xB1", + "\xD0\xE3" => "\xE6\xB1\xB2", + "\xD0\xE4" => "\xE7\xB4\x9A", + "\xD0\xE5" => "\xE7\xB5\xA6", + "\xD0\xE6" => "\xE4\xBA\x98", + "\xD0\xE7" => "\xE5\x85\xA2", + "\xD0\xE8" => "\xE7\x9F\x9C", + "\xD0\xE9" => "\xE8\x82\xAF", + "\xD0\xEA" => "\xE4\xBC\x81", + "\xD0\xEB" => "\xE4\xBC\x8E", + "\xD0\xEC" => "\xE5\x85\xB6", + "\xD0\xED" => "\xE5\x86\x80", + "\xD0\xEE" => "\xE5\x97\x9C", + "\xD0\xEF" => "\xE5\x99\xA8", + "\xD0\xF0" => "\xE5\x9C\xBB", + "\xD0\xF1" => "\xE5\x9F\xBA", + "\xD0\xF2" => "\xE5\x9F\xBC", + "\xD0\xF3" => "\xE5\xA4\x94", + "\xD0\xF4" => "\xE5\xA5\x87", + "\xD0\xF5" => "\xE5\xA6\x93", + "\xD0\xF6" => "\xE5\xAF\x84", + "\xD0\xF7" => "\xE5\xB2\x90", + "\xD0\xF8" => "\xE5\xB4\x8E", + "\xD0\xF9" => "\xE5\xB7\xB1", + "\xD0\xFA" => "\xE5\xB9\xBE", + "\xD0\xFB" => "\xE5\xBF\x8C", + "\xD0\xFC" => "\xE6\x8A\x80", + "\xD0\xFD" => "\xE6\x97\x97", + "\xD0\xFE" => "\xE6\x97\xA3", + "\xD1\xA1" => "\xE6\x9C\x9E", + "\xD1\xA2" => "\xE6\x9C\x9F", + "\xD1\xA3" => "\xE6\x9D\x9E", + "\xD1\xA4" => "\xE6\xA3\x8B", + "\xD1\xA5" => "\xE6\xA3\x84", + "\xD1\xA6" => "\xE6\xA9\x9F", + "\xD1\xA7" => "\xE6\xAC\xBA", + "\xD1\xA8" => "\xE6\xB0\xA3", + "\xD1\xA9" => "\xE6\xB1\xBD", + "\xD1\xAA" => "\xE6\xB2\x82", + "\xD1\xAB" => "\xE6\xB7\x87", + "\xD1\xAC" => "\xE7\x8E\x98", + "\xD1\xAD" => "\xE7\x90\xA6", + "\xD1\xAE" => "\xE7\x90\xAA", + "\xD1\xAF" => "\xE7\x92\x82", + "\xD1\xB0" => "\xE7\x92\xA3", + "\xD1\xB1" => "\xE7\x95\xB8", + "\xD1\xB2" => "\xE7\x95\xBF", + "\xD1\xB3" => "\xE7\xA2\x81", + "\xD1\xB4" => "\xE7\xA3\xAF", + "\xD1\xB5" => "\xE7\xA5\x81", + "\xD1\xB6" => "\xE7\xA5\x87", + "\xD1\xB7" => "\xE7\xA5\x88", + "\xD1\xB8" => "\xE7\xA5\xBA", + "\xD1\xB9" => "\xE7\xAE\x95", + "\xD1\xBA" => "\xE7\xB4\x80", + "\xD1\xBB" => "\xE7\xB6\xBA", + "\xD1\xBC" => "\xE7\xBE\x88", + "\xD1\xBD" => "\xE8\x80\x86", + "\xD1\xBE" => "\xE8\x80\xAD", + "\xD1\xBF" => "\xE8\x82\x8C", + "\xD1\xC0" => "\xE8\xA8\x98", + "\xD1\xC1" => "\xE8\xAD\x8F", + "\xD1\xC2" => "\xE8\xB1\x88", + "\xD1\xC3" => "\xE8\xB5\xB7", + "\xD1\xC4" => "\xE9\x8C\xA1", + "\xD1\xC5" => "\xE9\x8C\xA4", + "\xD1\xC6" => "\xE9\xA3\xA2", + "\xD1\xC7" => "\xE9\xA5\x91", + "\xD1\xC8" => "\xE9\xA8\x8E", + "\xD1\xC9" => "\xE9\xA8\x8F", + "\xD1\xCA" => "\xE9\xA9\xA5", + "\xD1\xCB" => "\xE9\xBA\x92", + "\xD1\xCC" => "\xE7\xB7\x8A", + "\xD1\xCD" => "\xE4\xBD\xB6", + "\xD1\xCE" => "\xE5\x90\x89", + "\xD1\xCF" => "\xE6\x8B\xAE", + "\xD1\xD0" => "\xE6\xA1\x94", + "\xD1\xD1" => "\xE9\x87\x91", + "\xD1\xD2" => "\xE5\x96\xAB", + "\xD1\xD3" => "\xE5\x84\xBA", + "\xD1\xD4" => "\xEF\xA4\x8B", + "\xD1\xD5" => "\xEF\xA4\x8C", + "\xD1\xD6" => "\xE5\xA8\x9C", + "\xD1\xD7" => "\xE6\x87\xA6", + "\xD1\xD8" => "\xEF\xA4\x8D", + "\xD1\xD9" => "\xE6\x8B\x8F", + "\xD1\xDA" => "\xE6\x8B\xBF", + "\xD1\xDB" => "\xEF\xA4\x8E", + "\xD1\xDC" => "\xEF\xA4\x8F", + "\xD1\xDD" => "\xEF\xA4\x90", + "\xD1\xDE" => "\xEF\xA4\x91", + "\xD1\xDF" => "\xEF\xA4\x92", + "\xD1\xE0" => "\xEF\xA4\x93", + "\xD1\xE1" => "\xE9\x82\xA3", + "\xD1\xE2" => "\xEF\xA4\x94", + "\xD1\xE3" => "\xEF\xA4\x95", + "\xD1\xE4" => "\xEF\xA4\x96", + "\xD1\xE5" => "\xEF\xA4\x97", + "\xD1\xE6" => "\xEF\xA4\x98", + "\xD1\xE7" => "\xE8\xAB\xBE", + "\xD1\xE8" => "\xEF\xA4\x99", + "\xD1\xE9" => "\xEF\xA4\x9A", + "\xD1\xEA" => "\xEF\xA4\x9B", + "\xD1\xEB" => "\xEF\xA4\x9C", + "\xD1\xEC" => "\xE6\x9A\x96", + "\xD1\xED" => "\xEF\xA4\x9D", + "\xD1\xEE" => "\xE7\x85\x96", + "\xD1\xEF" => "\xEF\xA4\x9E", + "\xD1\xF0" => "\xEF\xA4\x9F", + "\xD1\xF1" => "\xE9\x9B\xA3", + "\xD1\xF2" => "\xEF\xA4\xA0", + "\xD1\xF3" => "\xE6\x8D\x8F", + "\xD1\xF4" => "\xE6\x8D\xBA", + "\xD1\xF5" => "\xE5\x8D\x97", + "\xD1\xF6" => "\xEF\xA4\xA1", + "\xD1\xF7" => "\xE6\x9E\x8F", + "\xD1\xF8" => "\xE6\xA5\xA0", + "\xD1\xF9" => "\xE6\xB9\xB3", + "\xD1\xFA" => "\xEF\xA4\xA2", + "\xD1\xFB" => "\xE7\x94\xB7", + "\xD1\xFC" => "\xEF\xA4\xA3", + "\xD1\xFD" => "\xEF\xA4\xA4", + "\xD1\xFE" => "\xEF\xA4\xA5", + "\xD2\xA1" => "\xE7\xB4\x8D", + "\xD2\xA2" => "\xEF\xA4\xA6", + "\xD2\xA3" => "\xEF\xA4\xA7", + "\xD2\xA4" => "\xE8\xA1\xB2", + "\xD2\xA5" => "\xE5\x9B\x8A", + "\xD2\xA6" => "\xE5\xA8\x98", + "\xD2\xA7" => "\xEF\xA4\xA8", + "\xD2\xA8" => "\xEF\xA4\xA9", + "\xD2\xA9" => "\xEF\xA4\xAA", + "\xD2\xAA" => "\xEF\xA4\xAB", + "\xD2\xAB" => "\xEF\xA4\xAC", + "\xD2\xAC" => "\xE4\xB9\x83", + "\xD2\xAD" => "\xEF\xA4\xAD", + "\xD2\xAE" => "\xE5\x85\xA7", + "\xD2\xAF" => "\xE5\xA5\x88", + "\xD2\xB0" => "\xE6\x9F\xB0", + "\xD2\xB1" => "\xE8\x80\x90", + "\xD2\xB2" => "\xEF\xA4\xAE", + "\xD2\xB3" => "\xE5\xA5\xB3", + "\xD2\xB4" => "\xE5\xB9\xB4", + "\xD2\xB5" => "\xE6\x92\x9A", + "\xD2\xB6" => "\xE7\xA7\x8A", + "\xD2\xB7" => "\xE5\xBF\xB5", + "\xD2\xB8" => "\xE6\x81\xAC", + "\xD2\xB9" => "\xE6\x8B\x88", + "\xD2\xBA" => "\xE6\x8D\xBB", + "\xD2\xBB" => "\xE5\xAF\xA7", + "\xD2\xBC" => "\xE5\xAF\x97", + "\xD2\xBD" => "\xE5\x8A\xAA", + "\xD2\xBE" => "\xEF\xA4\xAF", + "\xD2\xBF" => "\xE5\xA5\xB4", + "\xD2\xC0" => "\xE5\xBC\xA9", + "\xD2\xC1" => "\xE6\x80\x92", + "\xD2\xC2" => "\xEF\xA4\xB0", + "\xD2\xC3" => "\xEF\xA4\xB1", + "\xD2\xC4" => "\xEF\xA4\xB2", + "\xD2\xC5" => "\xE7\x91\x99", + "\xD2\xC6" => "\xEF\xA4\xB3", + "\xD2\xC7" => "\xEF\xA4\xB4", + "\xD2\xC8" => "\xEF\xA4\xB5", + "\xD2\xC9" => "\xEF\xA4\xB6", + "\xD2\xCA" => "\xEF\xA4\xB7", + "\xD2\xCB" => "\xEF\xA4\xB8", + "\xD2\xCC" => "\xE9\xA7\x91", + "\xD2\xCD" => "\xEF\xA4\xB9", + "\xD2\xCE" => "\xEF\xA4\xBA", + "\xD2\xCF" => "\xEF\xA4\xBB", + "\xD2\xD0" => "\xEF\xA4\xBC", + "\xD2\xD1" => "\xEF\xA4\xBD", + "\xD2\xD2" => "\xEF\xA4\xBE", + "\xD2\xD3" => "\xEF\xA4\xBF", + "\xD2\xD4" => "\xEF\xA5\x80", + "\xD2\xD5" => "\xEF\xA5\x81", + "\xD2\xD6" => "\xEF\xA5\x82", + "\xD2\xD7" => "\xEF\xA5\x83", + "\xD2\xD8" => "\xE6\xBF\x83", + "\xD2\xD9" => "\xEF\xA5\x84", + "\xD2\xDA" => "\xEF\xA5\x85", + "\xD2\xDB" => "\xE8\x86\xBF", + "\xD2\xDC" => "\xE8\xBE\xB2", + "\xD2\xDD" => "\xE6\x83\xB1", + "\xD2\xDE" => "\xEF\xA5\x86", + "\xD2\xDF" => "\xEF\xA5\x87", + "\xD2\xE0" => "\xE8\x85\xA6", + "\xD2\xE1" => "\xEF\xA5\x88", + "\xD2\xE2" => "\xEF\xA5\x89", + "\xD2\xE3" => "\xE5\xB0\xBF", + "\xD2\xE4" => "\xEF\xA5\x8A", + "\xD2\xE5" => "\xEF\xA5\x8B", + "\xD2\xE6" => "\xEF\xA5\x8C", + "\xD2\xE7" => "\xEF\xA5\x8D", + "\xD2\xE8" => "\xEF\xA5\x8E", + "\xD2\xE9" => "\xEF\xA5\x8F", + "\xD2\xEA" => "\xEF\xA5\x90", + "\xD2\xEB" => "\xEF\xA5\x91", + "\xD2\xEC" => "\xE5\xAB\xA9", + "\xD2\xED" => "\xE8\xA8\xA5", + "\xD2\xEE" => "\xE6\x9D\xBB", + "\xD2\xEF" => "\xE7\xB4\x90", + "\xD2\xF0" => "\xEF\xA5\x92", + "\xD2\xF1" => "\xEF\xA5\x93", + "\xD2\xF2" => "\xEF\xA5\x94", + "\xD2\xF3" => "\xEF\xA5\x95", + "\xD2\xF4" => "\xEF\xA5\x96", + "\xD2\xF5" => "\xEF\xA5\x97", + "\xD2\xF6" => "\xE8\x83\xBD", + "\xD2\xF7" => "\xEF\xA5\x98", + "\xD2\xF8" => "\xEF\xA5\x99", + "\xD2\xF9" => "\xE5\xB0\xBC", + "\xD2\xFA" => "\xE6\xB3\xA5", + "\xD2\xFB" => "\xE5\x8C\xBF", + "\xD2\xFC" => "\xE6\xBA\xBA", + "\xD2\xFD" => "\xE5\xA4\x9A", + "\xD2\xFE" => "\xE8\x8C\xB6", + "\xD3\xA1" => "\xE4\xB8\xB9", + "\xD3\xA2" => "\xE4\xBA\xB6", + "\xD3\xA3" => "\xE4\xBD\x86", + "\xD3\xA4" => "\xE5\x96\xAE", + "\xD3\xA5" => "\xE5\x9C\x98", + "\xD3\xA6" => "\xE5\xA3\x87", + "\xD3\xA7" => "\xE5\xBD\x96", + "\xD3\xA8" => "\xE6\x96\xB7", + "\xD3\xA9" => "\xE6\x97\xA6", + "\xD3\xAA" => "\xE6\xAA\x80", + "\xD3\xAB" => "\xE6\xAE\xB5", + "\xD3\xAC" => "\xE6\xB9\x8D", + "\xD3\xAD" => "\xE7\x9F\xAD", + "\xD3\xAE" => "\xE7\xAB\xAF", + "\xD3\xAF" => "\xE7\xB0\x9E", + "\xD3\xB0" => "\xE7\xB7\x9E", + "\xD3\xB1" => "\xE8\x9B\x8B", + "\xD3\xB2" => "\xE8\xA2\x92", + "\xD3\xB3" => "\xE9\x84\xB2", + "\xD3\xB4" => "\xE9\x8D\x9B", + "\xD3\xB5" => "\xE6\x92\xBB", + "\xD3\xB6" => "\xE6\xBE\xBE", + "\xD3\xB7" => "\xE7\x8D\xBA", + "\xD3\xB8" => "\xE7\x96\xB8", + "\xD3\xB9" => "\xE9\x81\x94", + "\xD3\xBA" => "\xE5\x95\x96", + "\xD3\xBB" => "\xE5\x9D\x8D", + "\xD3\xBC" => "\xE6\x86\xBA", + "\xD3\xBD" => "\xE6\x93\x94", + "\xD3\xBE" => "\xE6\x9B\x87", + "\xD3\xBF" => "\xE6\xB7\xA1", + "\xD3\xC0" => "\xE6\xB9\x9B", + "\xD3\xC1" => "\xE6\xBD\xAD", + "\xD3\xC2" => "\xE6\xBE\xB9", + "\xD3\xC3" => "\xE7\x97\xB0", + "\xD3\xC4" => "\xE8\x81\x83", + "\xD3\xC5" => "\xE8\x86\xBD", + "\xD3\xC6" => "\xE8\x95\x81", + "\xD3\xC7" => "\xE8\xA6\x83", + "\xD3\xC8" => "\xE8\xAB\x87", + "\xD3\xC9" => "\xE8\xAD\x9A", + "\xD3\xCA" => "\xE9\x8C\x9F", + "\xD3\xCB" => "\xE6\xB2\x93", + "\xD3\xCC" => "\xE7\x95\x93", + "\xD3\xCD" => "\xE7\xAD\x94", + "\xD3\xCE" => "\xE8\xB8\x8F", + "\xD3\xCF" => "\xE9\x81\x9D", + "\xD3\xD0" => "\xE5\x94\x90", + "\xD3\xD1" => "\xE5\xA0\x82", + "\xD3\xD2" => "\xE5\xA1\x98", + "\xD3\xD3" => "\xE5\xB9\xA2", + "\xD3\xD4" => "\xE6\x88\x87", + "\xD3\xD5" => "\xE6\x92\x9E", + "\xD3\xD6" => "\xE6\xA3\xA0", + "\xD3\xD7" => "\xE7\x95\xB6", + "\xD3\xD8" => "\xE7\xB3\x96", + "\xD3\xD9" => "\xE8\x9E\xB3", + "\xD3\xDA" => "\xE9\xBB\xA8", + "\xD3\xDB" => "\xE4\xBB\xA3", + "\xD3\xDC" => "\xE5\x9E\x88", + "\xD3\xDD" => "\xE5\x9D\xAE", + "\xD3\xDE" => "\xE5\xA4\xA7", + "\xD3\xDF" => "\xE5\xB0\x8D", + "\xD3\xE0" => "\xE5\xB2\xB1", + "\xD3\xE1" => "\xE5\xB8\xB6", + "\xD3\xE2" => "\xE5\xBE\x85", + "\xD3\xE3" => "\xE6\x88\xB4", + "\xD3\xE4" => "\xE6\x93\xA1", + "\xD3\xE5" => "\xE7\x8E\xB3", + "\xD3\xE6" => "\xE8\x87\xBA", + "\xD3\xE7" => "\xE8\xA2\x8B", + "\xD3\xE8" => "\xE8\xB2\xB8", + "\xD3\xE9" => "\xE9\x9A\x8A", + "\xD3\xEA" => "\xE9\xBB\x9B", + "\xD3\xEB" => "\xE5\xAE\x85", + "\xD3\xEC" => "\xE5\xBE\xB7", + "\xD3\xED" => "\xE6\x82\xB3", + "\xD3\xEE" => "\xE5\x80\x92", + "\xD3\xEF" => "\xE5\x88\x80", + "\xD3\xF0" => "\xE5\x88\xB0", + "\xD3\xF1" => "\xE5\x9C\x96", + "\xD3\xF2" => "\xE5\xA0\xB5", + "\xD3\xF3" => "\xE5\xA1\x97", + "\xD3\xF4" => "\xE5\xB0\x8E", + "\xD3\xF5" => "\xE5\xB1\xA0", + "\xD3\xF6" => "\xE5\xB3\xB6", + "\xD3\xF7" => "\xE5\xB6\x8B", + "\xD3\xF8" => "\xE5\xBA\xA6", + "\xD3\xF9" => "\xE5\xBE\x92", + "\xD3\xFA" => "\xE6\x82\xBC", + "\xD3\xFB" => "\xE6\x8C\x91", + "\xD3\xFC" => "\xE6\x8E\x89", + "\xD3\xFD" => "\xE6\x90\x97", + "\xD3\xFE" => "\xE6\xA1\x83", + "\xD4\xA1" => "\xE6\xA3\xB9", + "\xD4\xA2" => "\xE6\xAB\x82", + "\xD4\xA3" => "\xE6\xB7\x98", + "\xD4\xA4" => "\xE6\xB8\xA1", + "\xD4\xA5" => "\xE6\xBB\x94", + "\xD4\xA6" => "\xE6\xBF\xA4", + "\xD4\xA7" => "\xE7\x87\xBE", + "\xD4\xA8" => "\xE7\x9B\x9C", + "\xD4\xA9" => "\xE7\x9D\xB9", + "\xD4\xAA" => "\xE7\xA6\xB1", + "\xD4\xAB" => "\xE7\xA8\xBB", + "\xD4\xAC" => "\xE8\x90\x84", + "\xD4\xAD" => "\xE8\xA6\xA9", + "\xD4\xAE" => "\xE8\xB3\xAD", + "\xD4\xAF" => "\xE8\xB7\xB3", + "\xD4\xB0" => "\xE8\xB9\x88", + "\xD4\xB1" => "\xE9\x80\x83", + "\xD4\xB2" => "\xE9\x80\x94", + "\xD4\xB3" => "\xE9\x81\x93", + "\xD4\xB4" => "\xE9\x83\xBD", + "\xD4\xB5" => "\xE9\x8D\x8D", + "\xD4\xB6" => "\xE9\x99\xB6", + "\xD4\xB7" => "\xE9\x9F\x9C", + "\xD4\xB8" => "\xE6\xAF\x92", + "\xD4\xB9" => "\xE7\x80\x86", + "\xD4\xBA" => "\xE7\x89\x98", + "\xD4\xBB" => "\xE7\x8A\xA2", + "\xD4\xBC" => "\xE7\x8D\xA8", + "\xD4\xBD" => "\xE7\x9D\xA3", + "\xD4\xBE" => "\xE7\xA6\xBF", + "\xD4\xBF" => "\xE7\xAF\xA4", + "\xD4\xC0" => "\xE7\xBA\x9B", + "\xD4\xC1" => "\xE8\xAE\x80", + "\xD4\xC2" => "\xE5\xA2\xA9", + "\xD4\xC3" => "\xE6\x83\x87", + "\xD4\xC4" => "\xE6\x95\xA6", + "\xD4\xC5" => "\xE6\x97\xBD", + "\xD4\xC6" => "\xE6\x9A\xBE", + "\xD4\xC7" => "\xE6\xB2\x8C", + "\xD4\xC8" => "\xE7\x84\x9E", + "\xD4\xC9" => "\xE7\x87\x89", + "\xD4\xCA" => "\xE8\xB1\x9A", + "\xD4\xCB" => "\xE9\xA0\x93", + "\xD4\xCC" => "\xE4\xB9\xAD", + "\xD4\xCD" => "\xE7\xAA\x81", + "\xD4\xCE" => "\xE4\xBB\x9D", + "\xD4\xCF" => "\xE5\x86\xAC", + "\xD4\xD0" => "\xE5\x87\x8D", + "\xD4\xD1" => "\xE5\x8B\x95", + "\xD4\xD2" => "\xE5\x90\x8C", + "\xD4\xD3" => "\xE6\x86\xA7", + "\xD4\xD4" => "\xE6\x9D\xB1", + "\xD4\xD5" => "\xE6\xA1\x90", + "\xD4\xD6" => "\xE6\xA3\x9F", + "\xD4\xD7" => "\xE6\xB4\x9E", + "\xD4\xD8" => "\xE6\xBD\xBC", + "\xD4\xD9" => "\xE7\x96\xBC", + "\xD4\xDA" => "\xE7\x9E\xB3", + "\xD4\xDB" => "\xE7\xAB\xA5", + "\xD4\xDC" => "\xE8\x83\xB4", + "\xD4\xDD" => "\xE8\x91\xA3", + "\xD4\xDE" => "\xE9\x8A\x85", + "\xD4\xDF" => "\xE5\x85\x9C", + "\xD4\xE0" => "\xE6\x96\x97", + "\xD4\xE1" => "\xE6\x9D\x9C", + "\xD4\xE2" => "\xE6\x9E\x93", + "\xD4\xE3" => "\xE7\x97\x98", + "\xD4\xE4" => "\xE7\xAB\x87", + "\xD4\xE5" => "\xE8\x8D\xB3", + "\xD4\xE6" => "\xEF\xA5\x9A", + "\xD4\xE7" => "\xE8\xB1\x86", + "\xD4\xE8" => "\xE9\x80\x97", + "\xD4\xE9" => "\xE9\xA0\xAD", + "\xD4\xEA" => "\xE5\xB1\xAF", + "\xD4\xEB" => "\xE8\x87\x80", + "\xD4\xEC" => "\xE8\x8A\x9A", + "\xD4\xED" => "\xE9\x81\x81", + "\xD4\xEE" => "\xE9\x81\xAF", + "\xD4\xEF" => "\xE9\x88\x8D", + "\xD4\xF0" => "\xE5\xBE\x97", + "\xD4\xF1" => "\xE5\xB6\x9D", + "\xD4\xF2" => "\xE6\xA9\x99", + "\xD4\xF3" => "\xE7\x87\x88", + "\xD4\xF4" => "\xE7\x99\xBB", + "\xD4\xF5" => "\xE7\xAD\x89", + "\xD4\xF6" => "\xE8\x97\xA4", + "\xD4\xF7" => "\xE8\xAC\x84", + "\xD4\xF8" => "\xE9\x84\xA7", + "\xD4\xF9" => "\xE9\xA8\xB0", + "\xD4\xFA" => "\xE5\x96\x87", + "\xD4\xFB" => "\xE6\x87\xB6", + "\xD4\xFC" => "\xEF\xA5\x9B", + "\xD4\xFD" => "\xE7\x99\xA9", + "\xD4\xFE" => "\xE7\xBE\x85", + "\xD5\xA1" => "\xE8\x98\xBF", + "\xD5\xA2" => "\xE8\x9E\xBA", + "\xD5\xA3" => "\xE8\xA3\xB8", + "\xD5\xA4" => "\xE9\x82\x8F", + "\xD5\xA5" => "\xEF\xA5\x9C", + "\xD5\xA6" => "\xE6\xB4\x9B", + "\xD5\xA7" => "\xE7\x83\x99", + "\xD5\xA8" => "\xE7\x8F\x9E", + "\xD5\xA9" => "\xE7\xB5\xA1", + "\xD5\xAA" => "\xE8\x90\xBD", + "\xD5\xAB" => "\xEF\xA5\x9D", + "\xD5\xAC" => "\xE9\x85\xAA", + "\xD5\xAD" => "\xE9\xA7\xB1", + "\xD5\xAE" => "\xEF\xA5\x9E", + "\xD5\xAF" => "\xE4\xBA\x82", + "\xD5\xB0" => "\xE5\x8D\xB5", + "\xD5\xB1" => "\xE6\xAC\x84", + "\xD5\xB2" => "\xE6\xAC\x92", + "\xD5\xB3" => "\xE7\x80\xBE", + "\xD5\xB4" => "\xE7\x88\x9B", + "\xD5\xB5" => "\xE8\x98\xAD", + "\xD5\xB6" => "\xE9\xB8\x9E", + "\xD5\xB7" => "\xE5\x89\x8C", + "\xD5\xB8" => "\xE8\xBE\xA3", + "\xD5\xB9" => "\xE5\xB5\x90", + "\xD5\xBA" => "\xE6\x93\xA5", + "\xD5\xBB" => "\xE6\x94\xAC", + "\xD5\xBC" => "\xE6\xAC\x96", + "\xD5\xBD" => "\xE6\xBF\xAB", + "\xD5\xBE" => "\xE7\xB1\x83", + "\xD5\xBF" => "\xE7\xBA\x9C", + "\xD5\xC0" => "\xE8\x97\x8D", + "\xD5\xC1" => "\xE8\xA5\xA4", + "\xD5\xC2" => "\xE8\xA6\xBD", + "\xD5\xC3" => "\xE6\x8B\x89", + "\xD5\xC4" => "\xE8\x87\x98", + "\xD5\xC5" => "\xE8\xA0\x9F", + "\xD5\xC6" => "\xE5\xBB\x8A", + "\xD5\xC7" => "\xE6\x9C\x97", + "\xD5\xC8" => "\xE6\xB5\xAA", + "\xD5\xC9" => "\xE7\x8B\xBC", + "\xD5\xCA" => "\xE7\x90\x85", + "\xD5\xCB" => "\xE7\x91\xAF", + "\xD5\xCC" => "\xE8\x9E\x82", + "\xD5\xCD" => "\xE9\x83\x9E", + "\xD5\xCE" => "\xE4\xBE\x86", + "\xD5\xCF" => "\xE5\xB4\x8D", + "\xD5\xD0" => "\xE5\xBE\xA0", + "\xD5\xD1" => "\xE8\x90\x8A", + "\xD5\xD2" => "\xE5\x86\xB7", + "\xD5\xD3" => "\xE6\x8E\xA0", + "\xD5\xD4" => "\xE7\x95\xA5", + "\xD5\xD5" => "\xE4\xBA\xAE", + "\xD5\xD6" => "\xE5\x80\x86", + "\xD5\xD7" => "\xE5\x85\xA9", + "\xD5\xD8" => "\xE5\x87\x89", + "\xD5\xD9" => "\xE6\xA2\x81", + "\xD5\xDA" => "\xE6\xA8\x91", + "\xD5\xDB" => "\xE7\xB2\xAE", + "\xD5\xDC" => "\xE7\xB2\xB1", + "\xD5\xDD" => "\xE7\xB3\xA7", + "\xD5\xDE" => "\xE8\x89\xAF", + "\xD5\xDF" => "\xE8\xAB\x92", + "\xD5\xE0" => "\xE8\xBC\x9B", + "\xD5\xE1" => "\xE9\x87\x8F", + "\xD5\xE2" => "\xE4\xBE\xB6", + "\xD5\xE3" => "\xE5\x84\xB7", + "\xD5\xE4" => "\xE5\x8B\xB5", + "\xD5\xE5" => "\xE5\x91\x82", + "\xD5\xE6" => "\xE5\xBB\xAC", + "\xD5\xE7" => "\xE6\x85\xAE", + "\xD5\xE8" => "\xE6\x88\xBE", + "\xD5\xE9" => "\xE6\x97\x85", + "\xD5\xEA" => "\xE6\xAB\x9A", + "\xD5\xEB" => "\xE6\xBF\xBE", + "\xD5\xEC" => "\xE7\xA4\xAA", + "\xD5\xED" => "\xE8\x97\x9C", + "\xD5\xEE" => "\xE8\xA0\xA3", + "\xD5\xEF" => "\xE9\x96\xAD", + "\xD5\xF0" => "\xE9\xA9\xA2", + "\xD5\xF1" => "\xE9\xA9\xAA", + "\xD5\xF2" => "\xE9\xBA\x97", + "\xD5\xF3" => "\xE9\xBB\x8E", + "\xD5\xF4" => "\xE5\x8A\x9B", + "\xD5\xF5" => "\xE6\x9B\x86", + "\xD5\xF6" => "\xE6\xAD\xB7", + "\xD5\xF7" => "\xE7\x80\x9D", + "\xD5\xF8" => "\xE7\xA4\xAB", + "\xD5\xF9" => "\xE8\xBD\xA2", + "\xD5\xFA" => "\xE9\x9D\x82", + "\xD5\xFB" => "\xE6\x86\x90", + "\xD5\xFC" => "\xE6\x88\x80", + "\xD5\xFD" => "\xE6\x94\xA3", + "\xD5\xFE" => "\xE6\xBC\xA3", + "\xD6\xA1" => "\xE7\x85\x89", + "\xD6\xA2" => "\xE7\x92\x89", + "\xD6\xA3" => "\xE7\xB7\xB4", + "\xD6\xA4" => "\xE8\x81\xAF", + "\xD6\xA5" => "\xE8\x93\xAE", + "\xD6\xA6" => "\xE8\xBC\xA6", + "\xD6\xA7" => "\xE9\x80\xA3", + "\xD6\xA8" => "\xE9\x8D\x8A", + "\xD6\xA9" => "\xE5\x86\xBD", + "\xD6\xAA" => "\xE5\x88\x97", + "\xD6\xAB" => "\xE5\x8A\xA3", + "\xD6\xAC" => "\xE6\xB4\x8C", + "\xD6\xAD" => "\xE7\x83\x88", + "\xD6\xAE" => "\xE8\xA3\x82", + "\xD6\xAF" => "\xE5\xBB\x89", + "\xD6\xB0" => "\xE6\x96\x82", + "\xD6\xB1" => "\xE6\xAE\xAE", + "\xD6\xB2" => "\xE6\xBF\x82", + "\xD6\xB3" => "\xE7\xB0\xBE", + "\xD6\xB4" => "\xE7\x8D\xB5", + "\xD6\xB5" => "\xE4\xBB\xA4", + "\xD6\xB6" => "\xE4\xBC\xB6", + "\xD6\xB7" => "\xE5\x9B\xB9", + "\xD6\xB8" => "\xEF\xA5\x9F", + "\xD6\xB9" => "\xE5\xB2\xBA", + "\xD6\xBA" => "\xE5\xB6\xBA", + "\xD6\xBB" => "\xE6\x80\x9C", + "\xD6\xBC" => "\xE7\x8E\xB2", + "\xD6\xBD" => "\xE7\xAC\xAD", + "\xD6\xBE" => "\xE7\xBE\x9A", + "\xD6\xBF" => "\xE7\xBF\x8E", + "\xD6\xC0" => "\xE8\x81\x86", + "\xD6\xC1" => "\xE9\x80\x9E", + "\xD6\xC2" => "\xE9\x88\xB4", + "\xD6\xC3" => "\xE9\x9B\xB6", + "\xD6\xC4" => "\xE9\x9D\x88", + "\xD6\xC5" => "\xE9\xA0\x98", + "\xD6\xC6" => "\xE9\xBD\xA1", + "\xD6\xC7" => "\xE4\xBE\x8B", + "\xD6\xC8" => "\xE6\xBE\xA7", + "\xD6\xC9" => "\xE7\xA6\xAE", + "\xD6\xCA" => "\xE9\x86\xB4", + "\xD6\xCB" => "\xE9\x9A\xB7", + "\xD6\xCC" => "\xE5\x8B\x9E", + "\xD6\xCD" => "\xEF\xA5\xA0", + "\xD6\xCE" => "\xE6\x92\x88", + "\xD6\xCF" => "\xE6\x93\x84", + "\xD6\xD0" => "\xE6\xAB\x93", + "\xD6\xD1" => "\xE6\xBD\x9E", + "\xD6\xD2" => "\xE7\x80\x98", + "\xD6\xD3" => "\xE7\x88\x90", + "\xD6\xD4" => "\xE7\x9B\xA7", + "\xD6\xD5" => "\xE8\x80\x81", + "\xD6\xD6" => "\xE8\x98\x86", + "\xD6\xD7" => "\xE8\x99\x9C", + "\xD6\xD8" => "\xE8\xB7\xAF", + "\xD6\xD9" => "\xE8\xBC\x85", + "\xD6\xDA" => "\xE9\x9C\xB2", + "\xD6\xDB" => "\xE9\xAD\xAF", + "\xD6\xDC" => "\xE9\xB7\xBA", + "\xD6\xDD" => "\xE9\xB9\xB5", + "\xD6\xDE" => "\xE7\xA2\x8C", + "\xD6\xDF" => "\xE7\xA5\xBF", + "\xD6\xE0" => "\xE7\xB6\xA0", + "\xD6\xE1" => "\xE8\x8F\x89", + "\xD6\xE2" => "\xE9\x8C\x84", + "\xD6\xE3" => "\xE9\xB9\xBF", + "\xD6\xE4" => "\xE9\xBA\x93", + "\xD6\xE5" => "\xE8\xAB\x96", + "\xD6\xE6" => "\xE5\xA3\x9F", + "\xD6\xE7" => "\xE5\xBC\x84", + "\xD6\xE8" => "\xE6\x9C\xA7", + "\xD6\xE9" => "\xE7\x80\xA7", + "\xD6\xEA" => "\xE7\x93\x8F", + "\xD6\xEB" => "\xE7\xB1\xA0", + "\xD6\xEC" => "\xE8\x81\xBE", + "\xD6\xED" => "\xE5\x84\xA1", + "\xD6\xEE" => "\xE7\x80\xA8", + "\xD6\xEF" => "\xE7\x89\xA2", + "\xD6\xF0" => "\xE7\xA3\x8A", + "\xD6\xF1" => "\xE8\xB3\x82", + "\xD6\xF2" => "\xE8\xB3\x9A", + "\xD6\xF3" => "\xE8\xB3\xB4", + "\xD6\xF4" => "\xE9\x9B\xB7", + "\xD6\xF5" => "\xE4\xBA\x86", + "\xD6\xF6" => "\xE5\x83\x9A", + "\xD6\xF7" => "\xE5\xAF\xAE", + "\xD6\xF8" => "\xE5\xBB\x96", + "\xD6\xF9" => "\xE6\x96\x99", + "\xD6\xFA" => "\xE7\x87\x8E", + "\xD6\xFB" => "\xE7\x99\x82", + "\xD6\xFC" => "\xE7\x9E\xAD", + "\xD6\xFD" => "\xE8\x81\x8A", + "\xD6\xFE" => "\xE8\x93\xBC", + "\xD7\xA1" => "\xE9\x81\xBC", + "\xD7\xA2" => "\xE9\xAC\xA7", + "\xD7\xA3" => "\xE9\xBE\x8D", + "\xD7\xA4" => "\xE5\xA3\x98", + "\xD7\xA5" => "\xE5\xA9\x81", + "\xD7\xA6" => "\xE5\xB1\xA2", + "\xD7\xA7" => "\xE6\xA8\x93", + "\xD7\xA8" => "\xE6\xB7\x9A", + "\xD7\xA9" => "\xE6\xBC\x8F", + "\xD7\xAA" => "\xE7\x98\xBB", + "\xD7\xAB" => "\xE7\xB4\xAF", + "\xD7\xAC" => "\xE7\xB8\xB7", + "\xD7\xAD" => "\xE8\x94\x9E", + "\xD7\xAE" => "\xE8\xA4\xB8", + "\xD7\xAF" => "\xE9\x8F\xA4", + "\xD7\xB0" => "\xE9\x99\x8B", + "\xD7\xB1" => "\xE5\x8A\x89", + "\xD7\xB2" => "\xE6\x97\x92", + "\xD7\xB3" => "\xE6\x9F\xB3", + "\xD7\xB4" => "\xE6\xA6\xB4", + "\xD7\xB5" => "\xE6\xB5\x81", + "\xD7\xB6" => "\xE6\xBA\x9C", + "\xD7\xB7" => "\xE7\x80\x8F", + "\xD7\xB8" => "\xE7\x90\x89", + "\xD7\xB9" => "\xE7\x91\xA0", + "\xD7\xBA" => "\xE7\x95\x99", + "\xD7\xBB" => "\xE7\x98\xA4", + "\xD7\xBC" => "\xE7\xA1\xAB", + "\xD7\xBD" => "\xE8\xAC\xAC", + "\xD7\xBE" => "\xE9\xA1\x9E", + "\xD7\xBF" => "\xE5\x85\xAD", + "\xD7\xC0" => "\xE6\x88\xAE", + "\xD7\xC1" => "\xE9\x99\xB8", + "\xD7\xC2" => "\xE4\xBE\x96", + "\xD7\xC3" => "\xE5\x80\xAB", + "\xD7\xC4" => "\xE5\xB4\x99", + "\xD7\xC5" => "\xE6\xB7\xAA", + "\xD7\xC6" => "\xE7\xB6\xB8", + "\xD7\xC7" => "\xE8\xBC\xAA", + "\xD7\xC8" => "\xE5\xBE\x8B", + "\xD7\xC9" => "\xE6\x85\x84", + "\xD7\xCA" => "\xE6\xA0\x97", + "\xD7\xCB" => "\xEF\xA5\xA1", + "\xD7\xCC" => "\xE9\x9A\x86", + "\xD7\xCD" => "\xE5\x8B\x92", + "\xD7\xCE" => "\xE8\x82\x8B", + "\xD7\xCF" => "\xE5\x87\x9C", + "\xD7\xD0" => "\xE5\x87\x8C", + "\xD7\xD1" => "\xE6\xA5\x9E", + "\xD7\xD2" => "\xE7\xA8\x9C", + "\xD7\xD3" => "\xE7\xB6\xBE", + "\xD7\xD4" => "\xE8\x8F\xB1", + "\xD7\xD5" => "\xE9\x99\xB5", + "\xD7\xD6" => "\xE4\xBF\x9A", + "\xD7\xD7" => "\xE5\x88\xA9", + "\xD7\xD8" => "\xE5\x8E\x98", + "\xD7\xD9" => "\xE5\x90\x8F", + "\xD7\xDA" => "\xE5\x94\x8E", + "\xD7\xDB" => "\xE5\xB1\xA5", + "\xD7\xDC" => "\xE6\x82\xA7", + "\xD7\xDD" => "\xE6\x9D\x8E", + "\xD7\xDE" => "\xE6\xA2\xA8", + "\xD7\xDF" => "\xE6\xB5\xAC", + "\xD7\xE0" => "\xE7\x8A\x81", + "\xD7\xE1" => "\xE7\x8B\xB8", + "\xD7\xE2" => "\xE7\x90\x86", + "\xD7\xE3" => "\xE7\x92\x83", + "\xD7\xE4" => "\xEF\xA5\xA2", + "\xD7\xE5" => "\xE7\x97\xA2", + "\xD7\xE6" => "\xE7\xB1\xAC", + "\xD7\xE7" => "\xE7\xBD\xB9", + "\xD7\xE8" => "\xE7\xBE\xB8", + "\xD7\xE9" => "\xE8\x8E\x89", + "\xD7\xEA" => "\xE8\xA3\x8F", + "\xD7\xEB" => "\xE8\xA3\xA1", + "\xD7\xEC" => "\xE9\x87\x8C", + "\xD7\xED" => "\xE9\x87\x90", + "\xD7\xEE" => "\xE9\x9B\xA2", + "\xD7\xEF" => "\xE9\xAF\x89", + "\xD7\xF0" => "\xE5\x90\x9D", + "\xD7\xF1" => "\xE6\xBD\xBE", + "\xD7\xF2" => "\xE7\x87\x90", + "\xD7\xF3" => "\xE7\x92\x98", + "\xD7\xF4" => "\xE8\x97\xBA", + "\xD7\xF5" => "\xE8\xBA\xAA", + "\xD7\xF6" => "\xE9\x9A\xA3", + "\xD7\xF7" => "\xE9\xB1\x97", + "\xD7\xF8" => "\xE9\xBA\x9F", + "\xD7\xF9" => "\xE6\x9E\x97", + "\xD7\xFA" => "\xE6\xB7\x8B", + "\xD7\xFB" => "\xE7\x90\xB3", + "\xD7\xFC" => "\xE8\x87\xA8", + "\xD7\xFD" => "\xE9\x9C\x96", + "\xD7\xFE" => "\xE7\xA0\xAC", + "\xD8\xA1" => "\xE7\xAB\x8B", + "\xD8\xA2" => "\xE7\xAC\xA0", + "\xD8\xA3" => "\xE7\xB2\x92", + "\xD8\xA4" => "\xE6\x91\xA9", + "\xD8\xA5" => "\xE7\x91\xAA", + "\xD8\xA6" => "\xE7\x97\xB2", + "\xD8\xA7" => "\xE7\xA2\xBC", + "\xD8\xA8" => "\xE7\xA3\xA8", + "\xD8\xA9" => "\xE9\xA6\xAC", + "\xD8\xAA" => "\xE9\xAD\x94", + "\xD8\xAB" => "\xE9\xBA\xBB", + "\xD8\xAC" => "\xE5\xAF\x9E", + "\xD8\xAD" => "\xE5\xB9\x95", + "\xD8\xAE" => "\xE6\xBC\xA0", + "\xD8\xAF" => "\xE8\x86\x9C", + "\xD8\xB0" => "\xE8\x8E\xAB", + "\xD8\xB1" => "\xE9\x82\x88", + "\xD8\xB2" => "\xE4\xB8\x87", + "\xD8\xB3" => "\xE5\x8D\x8D", + "\xD8\xB4" => "\xE5\xA8\xA9", + "\xD8\xB5" => "\xE5\xB7\x92", + "\xD8\xB6" => "\xE5\xBD\x8E", + "\xD8\xB7" => "\xE6\x85\xA2", + "\xD8\xB8" => "\xE6\x8C\xBD", + "\xD8\xB9" => "\xE6\x99\xA9", + "\xD8\xBA" => "\xE6\x9B\xBC", + "\xD8\xBB" => "\xE6\xBB\xBF", + "\xD8\xBC" => "\xE6\xBC\xAB", + "\xD8\xBD" => "\xE7\x81\xA3", + "\xD8\xBE" => "\xE7\x9E\x9E", + "\xD8\xBF" => "\xE8\x90\xAC", + "\xD8\xC0" => "\xE8\x94\x93", + "\xD8\xC1" => "\xE8\xA0\xBB", + "\xD8\xC2" => "\xE8\xBC\x93", + "\xD8\xC3" => "\xE9\xA5\x85", + "\xD8\xC4" => "\xE9\xB0\xBB", + "\xD8\xC5" => "\xE5\x94\x9C", + "\xD8\xC6" => "\xE6\x8A\xB9", + "\xD8\xC7" => "\xE6\x9C\xAB", + "\xD8\xC8" => "\xE6\xB2\xAB", + "\xD8\xC9" => "\xE8\x8C\x89", + "\xD8\xCA" => "\xE8\xA5\xAA", + "\xD8\xCB" => "\xE9\x9D\xBA", + "\xD8\xCC" => "\xE4\xBA\xA1", + "\xD8\xCD" => "\xE5\xA6\x84", + "\xD8\xCE" => "\xE5\xBF\x98", + "\xD8\xCF" => "\xE5\xBF\x99", + "\xD8\xD0" => "\xE6\x9C\x9B", + "\xD8\xD1" => "\xE7\xB6\xB2", + "\xD8\xD2" => "\xE7\xBD\x94", + "\xD8\xD3" => "\xE8\x8A\x92", + "\xD8\xD4" => "\xE8\x8C\xAB", + "\xD8\xD5" => "\xE8\x8E\xBD", + "\xD8\xD6" => "\xE8\xBC\x9E", + "\xD8\xD7" => "\xE9\x82\x99", + "\xD8\xD8" => "\xE5\x9F\x8B", + "\xD8\xD9" => "\xE5\xA6\xB9", + "\xD8\xDA" => "\xE5\xAA\x92", + "\xD8\xDB" => "\xE5\xAF\x90", + "\xD8\xDC" => "\xE6\x98\xA7", + "\xD8\xDD" => "\xE6\x9E\x9A", + "\xD8\xDE" => "\xE6\xA2\x85", + "\xD8\xDF" => "\xE6\xAF\x8F", + "\xD8\xE0" => "\xE7\x85\xA4", + "\xD8\xE1" => "\xE7\xBD\xB5", + "\xD8\xE2" => "\xE8\xB2\xB7", + "\xD8\xE3" => "\xE8\xB3\xA3", + "\xD8\xE4" => "\xE9\x82\x81", + "\xD8\xE5" => "\xE9\xAD\x85", + "\xD8\xE6" => "\xE8\x84\x88", + "\xD8\xE7" => "\xE8\xB2\x8A", + "\xD8\xE8" => "\xE9\x99\x8C", + "\xD8\xE9" => "\xE9\xA9\x80", + "\xD8\xEA" => "\xE9\xBA\xA5", + "\xD8\xEB" => "\xE5\xAD\x9F", + "\xD8\xEC" => "\xE6\xB0\x93", + "\xD8\xED" => "\xE7\x8C\x9B", + "\xD8\xEE" => "\xE7\x9B\xB2", + "\xD8\xEF" => "\xE7\x9B\x9F", + "\xD8\xF0" => "\xE8\x90\x8C", + "\xD8\xF1" => "\xE5\x86\xAA", + "\xD8\xF2" => "\xE8\xA6\x93", + "\xD8\xF3" => "\xE5\x85\x8D", + "\xD8\xF4" => "\xE5\x86\x95", + "\xD8\xF5" => "\xE5\x8B\x89", + "\xD8\xF6" => "\xE6\xA3\x89", + "\xD8\xF7" => "\xE6\xB2\x94", + "\xD8\xF8" => "\xE7\x9C\x84", + "\xD8\xF9" => "\xE7\x9C\xA0", + "\xD8\xFA" => "\xE7\xB6\xBF", + "\xD8\xFB" => "\xE7\xB7\xAC", + "\xD8\xFC" => "\xE9\x9D\xA2", + "\xD8\xFD" => "\xE9\xBA\xB5", + "\xD8\xFE" => "\xE6\xBB\x85", + "\xD9\xA1" => "\xE8\x94\x91", + "\xD9\xA2" => "\xE5\x86\xA5", + "\xD9\xA3" => "\xE5\x90\x8D", + "\xD9\xA4" => "\xE5\x91\xBD", + "\xD9\xA5" => "\xE6\x98\x8E", + "\xD9\xA6" => "\xE6\x9A\x9D", + "\xD9\xA7" => "\xE6\xA4\xA7", + "\xD9\xA8" => "\xE6\xBA\x9F", + "\xD9\xA9" => "\xE7\x9A\xBF", + "\xD9\xAA" => "\xE7\x9E\x91", + "\xD9\xAB" => "\xE8\x8C\x97", + "\xD9\xAC" => "\xE8\x93\x82", + "\xD9\xAD" => "\xE8\x9E\x9F", + "\xD9\xAE" => "\xE9\x85\xA9", + "\xD9\xAF" => "\xE9\x8A\x98", + "\xD9\xB0" => "\xE9\xB3\xB4", + "\xD9\xB1" => "\xE8\xA2\x82", + "\xD9\xB2" => "\xE4\xBE\xAE", + "\xD9\xB3" => "\xE5\x86\x92", + "\xD9\xB4" => "\xE5\x8B\x9F", + "\xD9\xB5" => "\xE5\xA7\x86", + "\xD9\xB6" => "\xE5\xB8\xBD", + "\xD9\xB7" => "\xE6\x85\x95", + "\xD9\xB8" => "\xE6\x91\xB8", + "\xD9\xB9" => "\xE6\x91\xB9", + "\xD9\xBA" => "\xE6\x9A\xAE", + "\xD9\xBB" => "\xE6\x9F\x90", + "\xD9\xBC" => "\xE6\xA8\xA1", + "\xD9\xBD" => "\xE6\xAF\x8D", + "\xD9\xBE" => "\xE6\xAF\x9B", + "\xD9\xBF" => "\xE7\x89\x9F", + "\xD9\xC0" => "\xE7\x89\xA1", + "\xD9\xC1" => "\xE7\x91\x81", + "\xD9\xC2" => "\xE7\x9C\xB8", + "\xD9\xC3" => "\xE7\x9F\x9B", + "\xD9\xC4" => "\xE8\x80\x97", + "\xD9\xC5" => "\xE8\x8A\xBC", + "\xD9\xC6" => "\xE8\x8C\x85", + "\xD9\xC7" => "\xE8\xAC\x80", + "\xD9\xC8" => "\xE8\xAC\xA8", + "\xD9\xC9" => "\xE8\xB2\x8C", + "\xD9\xCA" => "\xE6\x9C\xA8", + "\xD9\xCB" => "\xE6\xB2\x90", + "\xD9\xCC" => "\xE7\x89\xA7", + "\xD9\xCD" => "\xE7\x9B\xAE", + "\xD9\xCE" => "\xE7\x9D\xA6", + "\xD9\xCF" => "\xE7\xA9\x86", + "\xD9\xD0" => "\xE9\xB6\xA9", + "\xD9\xD1" => "\xE6\xAD\xBF", + "\xD9\xD2" => "\xE6\xB2\x92", + "\xD9\xD3" => "\xE5\xA4\xA2", + "\xD9\xD4" => "\xE6\x9C\xA6", + "\xD9\xD5" => "\xE8\x92\x99", + "\xD9\xD6" => "\xE5\x8D\xAF", + "\xD9\xD7" => "\xE5\xA2\x93", + "\xD9\xD8" => "\xE5\xA6\x99", + "\xD9\xD9" => "\xE5\xBB\x9F", + "\xD9\xDA" => "\xE6\x8F\x8F", + "\xD9\xDB" => "\xE6\x98\xB4", + "\xD9\xDC" => "\xE6\x9D\xB3", + "\xD9\xDD" => "\xE6\xB8\xBA", + "\xD9\xDE" => "\xE7\x8C\xAB", + "\xD9\xDF" => "\xE7\xAB\x97", + "\xD9\xE0" => "\xE8\x8B\x97", + "\xD9\xE1" => "\xE9\x8C\xA8", + "\xD9\xE2" => "\xE5\x8B\x99", + "\xD9\xE3" => "\xE5\xB7\xAB", + "\xD9\xE4" => "\xE6\x86\xAE", + "\xD9\xE5" => "\xE6\x87\x8B", + "\xD9\xE6" => "\xE6\x88\x8A", + "\xD9\xE7" => "\xE6\x8B\x87", + "\xD9\xE8" => "\xE6\x92\xAB", + "\xD9\xE9" => "\xE6\x97\xA0", + "\xD9\xEA" => "\xE6\xA5\x99", + "\xD9\xEB" => "\xE6\xAD\xA6", + "\xD9\xEC" => "\xE6\xAF\x8B", + "\xD9\xED" => "\xE7\x84\xA1", + "\xD9\xEE" => "\xE7\x8F\xB7", + "\xD9\xEF" => "\xE7\x95\x9D", + "\xD9\xF0" => "\xE7\xB9\x86", + "\xD9\xF1" => "\xE8\x88\x9E", + "\xD9\xF2" => "\xE8\x8C\x82", + "\xD9\xF3" => "\xE8\x95\xAA", + "\xD9\xF4" => "\xE8\xAA\xA3", + "\xD9\xF5" => "\xE8\xB2\xBF", + "\xD9\xF6" => "\xE9\x9C\xA7", + "\xD9\xF7" => "\xE9\xB5\xA1", + "\xD9\xF8" => "\xE5\xA2\xA8", + "\xD9\xF9" => "\xE9\xBB\x98", + "\xD9\xFA" => "\xE5\x80\x91", + "\xD9\xFB" => "\xE5\x88\x8E", + "\xD9\xFC" => "\xE5\x90\xBB", + "\xD9\xFD" => "\xE5\x95\x8F", + "\xD9\xFE" => "\xE6\x96\x87", + "\xDA\xA1" => "\xE6\xB1\xB6", + "\xDA\xA2" => "\xE7\xB4\x8A", + "\xDA\xA3" => "\xE7\xB4\x8B", + "\xDA\xA4" => "\xE8\x81\x9E", + "\xDA\xA5" => "\xE8\x9A\x8A", + "\xDA\xA6" => "\xE9\x96\x80", + "\xDA\xA7" => "\xE9\x9B\xAF", + "\xDA\xA8" => "\xE5\x8B\xBF", + "\xDA\xA9" => "\xE6\xB2\x95", + "\xDA\xAA" => "\xE7\x89\xA9", + "\xDA\xAB" => "\xE5\x91\xB3", + "\xDA\xAC" => "\xE5\xAA\x9A", + "\xDA\xAD" => "\xE5\xB0\xBE", + "\xDA\xAE" => "\xE5\xB5\x8B", + "\xDA\xAF" => "\xE5\xBD\x8C", + "\xDA\xB0" => "\xE5\xBE\xAE", + "\xDA\xB1" => "\xE6\x9C\xAA", + "\xDA\xB2" => "\xE6\xA2\xB6", + "\xDA\xB3" => "\xE6\xA5\xA3", + "\xDA\xB4" => "\xE6\xB8\xBC", + "\xDA\xB5" => "\xE6\xB9\x84", + "\xDA\xB6" => "\xE7\x9C\x89", + "\xDA\xB7" => "\xE7\xB1\xB3", + "\xDA\xB8" => "\xE7\xBE\x8E", + "\xDA\xB9" => "\xE8\x96\x87", + "\xDA\xBA" => "\xE8\xAC\x8E", + "\xDA\xBB" => "\xE8\xBF\xB7", + "\xDA\xBC" => "\xE9\x9D\xA1", + "\xDA\xBD" => "\xE9\xBB\xB4", + "\xDA\xBE" => "\xE5\xB2\xB7", + "\xDA\xBF" => "\xE6\x82\xB6", + "\xDA\xC0" => "\xE6\x84\x8D", + "\xDA\xC1" => "\xE6\x86\xAB", + "\xDA\xC2" => "\xE6\x95\x8F", + "\xDA\xC3" => "\xE6\x97\xBB", + "\xDA\xC4" => "\xE6\x97\xBC", + "\xDA\xC5" => "\xE6\xB0\x91", + "\xDA\xC6" => "\xE6\xB3\xAF", + "\xDA\xC7" => "\xE7\x8E\x9F", + "\xDA\xC8" => "\xE7\x8F\x89", + "\xDA\xC9" => "\xE7\xB7\xA1", + "\xDA\xCA" => "\xE9\x96\x94", + "\xDA\xCB" => "\xE5\xAF\x86", + "\xDA\xCC" => "\xE8\x9C\x9C", + "\xDA\xCD" => "\xE8\xAC\x90", + "\xDA\xCE" => "\xE5\x89\x9D", + "\xDA\xCF" => "\xE5\x8D\x9A", + "\xDA\xD0" => "\xE6\x8B\x8D", + "\xDA\xD1" => "\xE6\x90\x8F", + "\xDA\xD2" => "\xE6\x92\xB2", + "\xDA\xD3" => "\xE6\x9C\xB4", + "\xDA\xD4" => "\xE6\xA8\xB8", + "\xDA\xD5" => "\xE6\xB3\x8A", + "\xDA\xD6" => "\xE7\x8F\x80", + "\xDA\xD7" => "\xE7\x92\x9E", + "\xDA\xD8" => "\xE7\xAE\x94", + "\xDA\xD9" => "\xE7\xB2\x95", + "\xDA\xDA" => "\xE7\xB8\x9B", + "\xDA\xDB" => "\xE8\x86\x8A", + "\xDA\xDC" => "\xE8\x88\xB6", + "\xDA\xDD" => "\xE8\x96\x84", + "\xDA\xDE" => "\xE8\xBF\xAB", + "\xDA\xDF" => "\xE9\x9B\xB9", + "\xDA\xE0" => "\xE9\xA7\x81", + "\xDA\xE1" => "\xE4\xBC\xB4", + "\xDA\xE2" => "\xE5\x8D\x8A", + "\xDA\xE3" => "\xE5\x8F\x8D", + "\xDA\xE4" => "\xE5\x8F\x9B", + "\xDA\xE5" => "\xE6\x8B\x8C", + "\xDA\xE6" => "\xE6\x90\xAC", + "\xDA\xE7" => "\xE6\x94\x80", + "\xDA\xE8" => "\xE6\x96\x91", + "\xDA\xE9" => "\xE6\xA7\x83", + "\xDA\xEA" => "\xE6\xB3\xAE", + "\xDA\xEB" => "\xE6\xBD\x98", + "\xDA\xEC" => "\xE7\x8F\xAD", + "\xDA\xED" => "\xE7\x95\x94", + "\xDA\xEE" => "\xE7\x98\xA2", + "\xDA\xEF" => "\xE7\x9B\xA4", + "\xDA\xF0" => "\xE7\x9B\xBC", + "\xDA\xF1" => "\xE7\xA3\x90", + "\xDA\xF2" => "\xE7\xA3\xBB", + "\xDA\xF3" => "\xE7\xA4\xAC", + "\xDA\xF4" => "\xE7\xB5\x86", + "\xDA\xF5" => "\xE8\x88\xAC", + "\xDA\xF6" => "\xE8\x9F\xA0", + "\xDA\xF7" => "\xE8\xBF\x94", + "\xDA\xF8" => "\xE9\xA0\x92", + "\xDA\xF9" => "\xE9\xA3\xAF", + "\xDA\xFA" => "\xE5\x8B\x83", + "\xDA\xFB" => "\xE6\x8B\x94", + "\xDA\xFC" => "\xE6\x92\xA5", + "\xDA\xFD" => "\xE6\xB8\xA4", + "\xDA\xFE" => "\xE6\xBD\x91", + "\xDB\xA1" => "\xE7\x99\xBC", + "\xDB\xA2" => "\xE8\xB7\x8B", + "\xDB\xA3" => "\xE9\x86\xB1", + "\xDB\xA4" => "\xE9\x89\xA2", + "\xDB\xA5" => "\xE9\xAB\xAE", + "\xDB\xA6" => "\xE9\xAD\x83", + "\xDB\xA7" => "\xE5\x80\xA3", + "\xDB\xA8" => "\xE5\x82\x8D", + "\xDB\xA9" => "\xE5\x9D\x8A", + "\xDB\xAA" => "\xE5\xA6\xA8", + "\xDB\xAB" => "\xE5\xB0\xA8", + "\xDB\xAC" => "\xE5\xB9\x87", + "\xDB\xAD" => "\xE5\xBD\xB7", + "\xDB\xAE" => "\xE6\x88\xBF", + "\xDB\xAF" => "\xE6\x94\xBE", + "\xDB\xB0" => "\xE6\x96\xB9", + "\xDB\xB1" => "\xE6\x97\x81", + "\xDB\xB2" => "\xE6\x98\x89", + "\xDB\xB3" => "\xE6\x9E\x8B", + "\xDB\xB4" => "\xE6\xA6\x9C", + "\xDB\xB5" => "\xE6\xBB\x82", + "\xDB\xB6" => "\xE7\xA3\x85", + "\xDB\xB7" => "\xE7\xB4\xA1", + "\xDB\xB8" => "\xE8\x82\xAA", + "\xDB\xB9" => "\xE8\x86\x80", + "\xDB\xBA" => "\xE8\x88\xAB", + "\xDB\xBB" => "\xE8\x8A\xB3", + "\xDB\xBC" => "\xE8\x92\xA1", + "\xDB\xBD" => "\xE8\x9A\x8C", + "\xDB\xBE" => "\xE8\xA8\xAA", + "\xDB\xBF" => "\xE8\xAC\x97", + "\xDB\xC0" => "\xE9\x82\xA6", + "\xDB\xC1" => "\xE9\x98\xB2", + "\xDB\xC2" => "\xE9\xBE\x90", + "\xDB\xC3" => "\xE5\x80\x8D", + "\xDB\xC4" => "\xE4\xBF\xB3", + "\xDB\xC5" => "\xEF\xA5\xA3", + "\xDB\xC6" => "\xE5\x9F\xB9", + "\xDB\xC7" => "\xE5\xBE\x98", + "\xDB\xC8" => "\xE6\x8B\x9C", + "\xDB\xC9" => "\xE6\x8E\x92", + "\xDB\xCA" => "\xE6\x9D\xAF", + "\xDB\xCB" => "\xE6\xB9\x83", + "\xDB\xCC" => "\xE7\x84\x99", + "\xDB\xCD" => "\xE7\x9B\x83", + "\xDB\xCE" => "\xE8\x83\x8C", + "\xDB\xCF" => "\xE8\x83\x9A", + "\xDB\xD0" => "\xE8\xA3\xB4", + "\xDB\xD1" => "\xE8\xA3\xB5", + "\xDB\xD2" => "\xE8\xA4\x99", + "\xDB\xD3" => "\xE8\xB3\xA0", + "\xDB\xD4" => "\xE8\xBC\xA9", + "\xDB\xD5" => "\xE9\x85\x8D", + "\xDB\xD6" => "\xE9\x99\xAA", + "\xDB\xD7" => "\xE4\xBC\xAF", + "\xDB\xD8" => "\xE4\xBD\xB0", + "\xDB\xD9" => "\xE5\xB8\x9B", + "\xDB\xDA" => "\xE6\x9F\x8F", + "\xDB\xDB" => "\xE6\xA0\xA2", + "\xDB\xDC" => "\xE7\x99\xBD", + "\xDB\xDD" => "\xE7\x99\xBE", + "\xDB\xDE" => "\xE9\xAD\x84", + "\xDB\xDF" => "\xE5\xB9\xA1", + "\xDB\xE0" => "\xE6\xA8\x8A", + "\xDB\xE1" => "\xE7\x85\xA9", + "\xDB\xE2" => "\xE7\x87\x94", + "\xDB\xE3" => "\xE7\x95\xAA", + "\xDB\xE4" => "\xEF\xA5\xA4", + "\xDB\xE5" => "\xE7\xB9\x81", + "\xDB\xE6" => "\xE8\x95\x83", + "\xDB\xE7" => "\xE8\x97\xA9", + "\xDB\xE8" => "\xE9\xA3\x9C", + "\xDB\xE9" => "\xE4\xBC\x90", + "\xDB\xEA" => "\xE7\xAD\x8F", + "\xDB\xEB" => "\xE7\xBD\xB0", + "\xDB\xEC" => "\xE9\x96\xA5", + "\xDB\xED" => "\xE5\x87\xA1", + "\xDB\xEE" => "\xE5\xB8\x86", + "\xDB\xEF" => "\xE6\xA2\xB5", + "\xDB\xF0" => "\xE6\xB0\xBE", + "\xDB\xF1" => "\xE6\xB1\x8E", + "\xDB\xF2" => "\xE6\xB3\x9B", + "\xDB\xF3" => "\xE7\x8A\xAF", + "\xDB\xF4" => "\xE7\xAF\x84", + "\xDB\xF5" => "\xE8\x8C\x83", + "\xDB\xF6" => "\xE6\xB3\x95", + "\xDB\xF7" => "\xE7\x90\xBA", + "\xDB\xF8" => "\xE5\x83\xBB", + "\xDB\xF9" => "\xE5\x8A\x88", + "\xDB\xFA" => "\xE5\xA3\x81", + "\xDB\xFB" => "\xE6\x93\x98", + "\xDB\xFC" => "\xE6\xAA\x97", + "\xDB\xFD" => "\xE7\x92\xA7", + "\xDB\xFE" => "\xE7\x99\x96", + "\xDC\xA1" => "\xE7\xA2\xA7", + "\xDC\xA2" => "\xE8\x98\x97", + "\xDC\xA3" => "\xE9\x97\xA2", + "\xDC\xA4" => "\xE9\x9C\xB9", + "\xDC\xA5" => "\xEF\xA5\xA5", + "\xDC\xA6" => "\xE5\x8D\x9E", + "\xDC\xA7" => "\xE5\xBC\x81", + "\xDC\xA8" => "\xE8\xAE\x8A", + "\xDC\xA9" => "\xE8\xBE\xA8", + "\xDC\xAA" => "\xE8\xBE\xAF", + "\xDC\xAB" => "\xE9\x82\x8A", + "\xDC\xAC" => "\xE5\x88\xA5", + "\xDC\xAD" => "\xE7\x9E\xA5", + "\xDC\xAE" => "\xE9\xB1\x89", + "\xDC\xAF" => "\xE9\xBC\x88", + "\xDC\xB0" => "\xE4\xB8\x99", + "\xDC\xB1" => "\xE5\x80\x82", + "\xDC\xB2" => "\xE5\x85\xB5", + "\xDC\xB3" => "\xE5\xB1\x9B", + "\xDC\xB4" => "\xE5\xB9\xB7", + "\xDC\xB5" => "\xE6\x98\x9E", + "\xDC\xB6" => "\xE6\x98\xBA", + "\xDC\xB7" => "\xE6\x9F\x84", + "\xDC\xB8" => "\xE6\xA3\x85", + "\xDC\xB9" => "\xE7\x82\xB3", + "\xDC\xBA" => "\xE7\x94\x81", + "\xDC\xBB" => "\xE7\x97\x85", + "\xDC\xBC" => "\xE7\xA7\x89", + "\xDC\xBD" => "\xE7\xAB\x9D", + "\xDC\xBE" => "\xE8\xBC\xA7", + "\xDC\xBF" => "\xE9\xA4\xA0", + "\xDC\xC0" => "\xE9\xA8\x88", + "\xDC\xC1" => "\xE4\xBF\x9D", + "\xDC\xC2" => "\xE5\xA0\xA1", + "\xDC\xC3" => "\xE5\xA0\xB1", + "\xDC\xC4" => "\xE5\xAF\xB6", + "\xDC\xC5" => "\xE6\x99\xAE", + "\xDC\xC6" => "\xE6\xAD\xA5", + "\xDC\xC7" => "\xE6\xB4\x91", + "\xDC\xC8" => "\xE6\xB9\xBA", + "\xDC\xC9" => "\xE6\xBD\xBD", + "\xDC\xCA" => "\xE7\x8F\xA4", + "\xDC\xCB" => "\xE7\x94\xAB", + "\xDC\xCC" => "\xE8\x8F\xA9", + "\xDC\xCD" => "\xE8\xA3\x9C", + "\xDC\xCE" => "\xE8\xA4\x93", + "\xDC\xCF" => "\xE8\xAD\x9C", + "\xDC\xD0" => "\xE8\xBC\x94", + "\xDC\xD1" => "\xE4\xBC\x8F", + "\xDC\xD2" => "\xE5\x83\x95", + "\xDC\xD3" => "\xE5\x8C\x90", + "\xDC\xD4" => "\xE5\x8D\x9C", + "\xDC\xD5" => "\xE5\xAE\x93", + "\xDC\xD6" => "\xE5\xBE\xA9", + "\xDC\xD7" => "\xE6\x9C\x8D", + "\xDC\xD8" => "\xE7\xA6\x8F", + "\xDC\xD9" => "\xE8\x85\xB9", + "\xDC\xDA" => "\xE8\x8C\xAF", + "\xDC\xDB" => "\xE8\x94\x94", + "\xDC\xDC" => "\xE8\xA4\x87", + "\xDC\xDD" => "\xE8\xA6\x86", + "\xDC\xDE" => "\xE8\xBC\xB9", + "\xDC\xDF" => "\xE8\xBC\xBB", + "\xDC\xE0" => "\xE9\xA6\xA5", + "\xDC\xE1" => "\xE9\xB0\x92", + "\xDC\xE2" => "\xE6\x9C\xAC", + "\xDC\xE3" => "\xE4\xB9\xB6", + "\xDC\xE4" => "\xE4\xBF\xB8", + "\xDC\xE5" => "\xE5\xA5\x89", + "\xDC\xE6" => "\xE5\xB0\x81", + "\xDC\xE7" => "\xE5\xB3\xAF", + "\xDC\xE8" => "\xE5\xB3\xB0", + "\xDC\xE9" => "\xE6\x8D\xA7", + "\xDC\xEA" => "\xE6\xA3\x92", + "\xDC\xEB" => "\xE7\x83\xBD", + "\xDC\xEC" => "\xE7\x86\xA2", + "\xDC\xED" => "\xE7\x90\xAB", + "\xDC\xEE" => "\xE7\xB8\xAB", + "\xDC\xEF" => "\xE8\x93\xAC", + "\xDC\xF0" => "\xE8\x9C\x82", + "\xDC\xF1" => "\xE9\x80\xA2", + "\xDC\xF2" => "\xE9\x8B\x92", + "\xDC\xF3" => "\xE9\xB3\xB3", + "\xDC\xF4" => "\xE4\xB8\x8D", + "\xDC\xF5" => "\xE4\xBB\x98", + "\xDC\xF6" => "\xE4\xBF\xAF", + "\xDC\xF7" => "\xE5\x82\x85", + "\xDC\xF8" => "\xE5\x89\x96", + "\xDC\xF9" => "\xE5\x89\xAF", + "\xDC\xFA" => "\xE5\x90\xA6", + "\xDC\xFB" => "\xE5\x92\x90", + "\xDC\xFC" => "\xE5\x9F\xA0", + "\xDC\xFD" => "\xE5\xA4\xAB", + "\xDC\xFE" => "\xE5\xA9\xA6", + "\xDD\xA1" => "\xE5\xAD\x9A", + "\xDD\xA2" => "\xE5\xAD\xB5", + "\xDD\xA3" => "\xE5\xAF\x8C", + "\xDD\xA4" => "\xE5\xBA\x9C", + "\xDD\xA5" => "\xEF\xA5\xA6", + "\xDD\xA6" => "\xE6\x89\xB6", + "\xDD\xA7" => "\xE6\x95\xB7", + "\xDD\xA8" => "\xE6\x96\xA7", + "\xDD\xA9" => "\xE6\xB5\xAE", + "\xDD\xAA" => "\xE6\xBA\xA5", + "\xDD\xAB" => "\xE7\x88\xB6", + "\xDD\xAC" => "\xE7\xAC\xA6", + "\xDD\xAD" => "\xE7\xB0\xBF", + "\xDD\xAE" => "\xE7\xBC\xB6", + "\xDD\xAF" => "\xE8\x85\x90", + "\xDD\xB0" => "\xE8\x85\x91", + "\xDD\xB1" => "\xE8\x86\x9A", + "\xDD\xB2" => "\xE8\x89\x80", + "\xDD\xB3" => "\xE8\x8A\x99", + "\xDD\xB4" => "\xE8\x8E\xA9", + "\xDD\xB5" => "\xE8\xA8\x83", + "\xDD\xB6" => "\xE8\xB2\xA0", + "\xDD\xB7" => "\xE8\xB3\xA6", + "\xDD\xB8" => "\xE8\xB3\xBB", + "\xDD\xB9" => "\xE8\xB5\xB4", + "\xDD\xBA" => "\xE8\xB6\xBA", + "\xDD\xBB" => "\xE9\x83\xA8", + "\xDD\xBC" => "\xE9\x87\x9C", + "\xDD\xBD" => "\xE9\x98\x9C", + "\xDD\xBE" => "\xE9\x99\x84", + "\xDD\xBF" => "\xE9\xA7\x99", + "\xDD\xC0" => "\xE9\xB3\xA7", + "\xDD\xC1" => "\xE5\x8C\x97", + "\xDD\xC2" => "\xE5\x88\x86", + "\xDD\xC3" => "\xE5\x90\xA9", + "\xDD\xC4" => "\xE5\x99\xB4", + "\xDD\xC5" => "\xE5\xA2\xB3", + "\xDD\xC6" => "\xE5\xA5\x94", + "\xDD\xC7" => "\xE5\xA5\xAE", + "\xDD\xC8" => "\xE5\xBF\xBF", + "\xDD\xC9" => "\xE6\x86\xA4", + "\xDD\xCA" => "\xE6\x89\xAE", + "\xDD\xCB" => "\xE6\x98\x90", + "\xDD\xCC" => "\xE6\xB1\xBE", + "\xDD\xCD" => "\xE7\x84\x9A", + "\xDD\xCE" => "\xE7\x9B\x86", + "\xDD\xCF" => "\xE7\xB2\x89", + "\xDD\xD0" => "\xE7\xB3\x9E", + "\xDD\xD1" => "\xE7\xB4\x9B", + "\xDD\xD2" => "\xE8\x8A\xAC", + "\xDD\xD3" => "\xE8\xB3\x81", + "\xDD\xD4" => "\xE9\x9B\xB0", + "\xDD\xD5" => "\xEF\xA5\xA7", + "\xDD\xD6" => "\xE4\xBD\x9B", + "\xDD\xD7" => "\xE5\xBC\x97", + "\xDD\xD8" => "\xE5\xBD\xBF", + "\xDD\xD9" => "\xE6\x8B\x82", + "\xDD\xDA" => "\xE5\xB4\xA9", + "\xDD\xDB" => "\xE6\x9C\x8B", + "\xDD\xDC" => "\xE6\xA3\x9A", + "\xDD\xDD" => "\xE7\xA1\xBC", + "\xDD\xDE" => "\xE7\xB9\x83", + "\xDD\xDF" => "\xE9\xB5\xAC", + "\xDD\xE0" => "\xE4\xB8\x95", + "\xDD\xE1" => "\xE5\x82\x99", + "\xDD\xE2" => "\xE5\x8C\x95", + "\xDD\xE3" => "\xE5\x8C\xAA", + "\xDD\xE4" => "\xE5\x8D\x91", + "\xDD\xE5" => "\xE5\xA6\x83", + "\xDD\xE6" => "\xE5\xA9\xA2", + "\xDD\xE7" => "\xE5\xBA\x87", + "\xDD\xE8" => "\xE6\x82\xB2", + "\xDD\xE9" => "\xE6\x86\x8A", + "\xDD\xEA" => "\xE6\x89\x89", + "\xDD\xEB" => "\xE6\x89\xB9", + "\xDD\xEC" => "\xE6\x96\x90", + "\xDD\xED" => "\xE6\x9E\x87", + "\xDD\xEE" => "\xE6\xA6\xA7", + "\xDD\xEF" => "\xE6\xAF\x94", + "\xDD\xF0" => "\xE6\xAF\x96", + "\xDD\xF1" => "\xE6\xAF\x97", + "\xDD\xF2" => "\xE6\xAF\x98", + "\xDD\xF3" => "\xE6\xB2\xB8", + "\xDD\xF4" => "\xEF\xA5\xA8", + "\xDD\xF5" => "\xE7\x90\xB5", + "\xDD\xF6" => "\xE7\x97\xBA", + "\xDD\xF7" => "\xE7\xA0\x92", + "\xDD\xF8" => "\xE7\xA2\x91", + "\xDD\xF9" => "\xE7\xA7\x95", + "\xDD\xFA" => "\xE7\xA7\x98", + "\xDD\xFB" => "\xE7\xB2\x83", + "\xDD\xFC" => "\xE7\xB7\x8B", + "\xDD\xFD" => "\xE7\xBF\xA1", + "\xDD\xFE" => "\xE8\x82\xA5", + "\xDE\xA1" => "\xE8\x84\xBE", + "\xDE\xA2" => "\xE8\x87\x82", + "\xDE\xA3" => "\xE8\x8F\xB2", + "\xDE\xA4" => "\xE8\x9C\x9A", + "\xDE\xA5" => "\xE8\xA3\xA8", + "\xDE\xA6" => "\xE8\xAA\xB9", + "\xDE\xA7" => "\xE8\xAD\xAC", + "\xDE\xA8" => "\xE8\xB2\xBB", + "\xDE\xA9" => "\xE9\x84\x99", + "\xDE\xAA" => "\xE9\x9D\x9E", + "\xDE\xAB" => "\xE9\xA3\x9B", + "\xDE\xAC" => "\xE9\xBC\xBB", + "\xDE\xAD" => "\xE5\x9A\xAC", + "\xDE\xAE" => "\xE5\xAC\xAA", + "\xDE\xAF" => "\xE5\xBD\xAC", + "\xDE\xB0" => "\xE6\x96\x8C", + "\xDE\xB1" => "\xE6\xAA\xB3", + "\xDE\xB2" => "\xE6\xAE\xAF", + "\xDE\xB3" => "\xE6\xB5\x9C", + "\xDE\xB4" => "\xE6\xBF\xB1", + "\xDE\xB5" => "\xE7\x80\x95", + "\xDE\xB6" => "\xE7\x89\x9D", + "\xDE\xB7" => "\xE7\x8E\xAD", + "\xDE\xB8" => "\xE8\xB2\xA7", + "\xDE\xB9" => "\xE8\xB3\x93", + "\xDE\xBA" => "\xE9\xA0\xBB", + "\xDE\xBB" => "\xE6\x86\x91", + "\xDE\xBC" => "\xE6\xB0\xB7", + "\xDE\xBD" => "\xE8\x81\x98", + "\xDE\xBE" => "\xE9\xA8\x81", + "\xDE\xBF" => "\xE4\xB9\x8D", + "\xDE\xC0" => "\xE4\xBA\x8B", + "\xDE\xC1" => "\xE4\xBA\x9B", + "\xDE\xC2" => "\xE4\xBB\x95", + "\xDE\xC3" => "\xE4\xBC\xBA", + "\xDE\xC4" => "\xE4\xBC\xBC", + "\xDE\xC5" => "\xE4\xBD\xBF", + "\xDE\xC6" => "\xE4\xBF\x9F", + "\xDE\xC7" => "\xE5\x83\xBF", + "\xDE\xC8" => "\xE5\x8F\xB2", + "\xDE\xC9" => "\xE5\x8F\xB8", + "\xDE\xCA" => "\xE5\x94\x86", + "\xDE\xCB" => "\xE5\x97\xA3", + "\xDE\xCC" => "\xE5\x9B\x9B", + "\xDE\xCD" => "\xE5\xA3\xAB", + "\xDE\xCE" => "\xE5\xA5\xA2", + "\xDE\xCF" => "\xE5\xA8\x91", + "\xDE\xD0" => "\xE5\xAF\xAB", + "\xDE\xD1" => "\xE5\xAF\xBA", + "\xDE\xD2" => "\xE5\xB0\x84", + "\xDE\xD3" => "\xE5\xB7\xB3", + "\xDE\xD4" => "\xE5\xB8\xAB", + "\xDE\xD5" => "\xE5\xBE\x99", + "\xDE\xD6" => "\xE6\x80\x9D", + "\xDE\xD7" => "\xE6\x8D\xA8", + "\xDE\xD8" => "\xE6\x96\x9C", + "\xDE\xD9" => "\xE6\x96\xAF", + "\xDE\xDA" => "\xE6\x9F\xB6", + "\xDE\xDB" => "\xE6\x9F\xBB", + "\xDE\xDC" => "\xE6\xA2\xAD", + "\xDE\xDD" => "\xE6\xAD\xBB", + "\xDE\xDE" => "\xE6\xB2\x99", + "\xDE\xDF" => "\xE6\xB3\x97", + "\xDE\xE0" => "\xE6\xB8\xA3", + "\xDE\xE1" => "\xE7\x80\x89", + "\xDE\xE2" => "\xE7\x8D\x85", + "\xDE\xE3" => "\xE7\xA0\x82", + "\xDE\xE4" => "\xE7\xA4\xBE", + "\xDE\xE5" => "\xE7\xA5\x80", + "\xDE\xE6" => "\xE7\xA5\xA0", + "\xDE\xE7" => "\xE7\xA7\x81", + "\xDE\xE8" => "\xE7\xAF\xA9", + "\xDE\xE9" => "\xE7\xB4\x97", + "\xDE\xEA" => "\xE7\xB5\xB2", + "\xDE\xEB" => "\xE8\x82\x86", + "\xDE\xEC" => "\xE8\x88\x8D", + "\xDE\xED" => "\xE8\x8E\x8E", + "\xDE\xEE" => "\xE8\x93\x91", + "\xDE\xEF" => "\xE8\x9B\x87", + "\xDE\xF0" => "\xE8\xA3\x9F", + "\xDE\xF1" => "\xE8\xA9\x90", + "\xDE\xF2" => "\xE8\xA9\x9E", + "\xDE\xF3" => "\xE8\xAC\x9D", + "\xDE\xF4" => "\xE8\xB3\x9C", + "\xDE\xF5" => "\xE8\xB5\xA6", + "\xDE\xF6" => "\xE8\xBE\xAD", + "\xDE\xF7" => "\xE9\x82\xAA", + "\xDE\xF8" => "\xE9\xA3\xBC", + "\xDE\xF9" => "\xE9\xA7\x9F", + "\xDE\xFA" => "\xE9\xBA\x9D", + "\xDE\xFB" => "\xE5\x89\x8A", + "\xDE\xFC" => "\xEF\xA5\xA9", + "\xDE\xFD" => "\xE6\x9C\x94", + "\xDE\xFE" => "\xEF\xA5\xAA", + "\xDF\xA1" => "\xE5\x82\x98", + "\xDF\xA2" => "\xE5\x88\xAA", + "\xDF\xA3" => "\xE5\xB1\xB1", + "\xDF\xA4" => "\xE6\x95\xA3", + "\xDF\xA5" => "\xE6\xB1\x95", + "\xDF\xA6" => "\xE7\x8F\x8A", + "\xDF\xA7" => "\xE7\x94\xA3", + "\xDF\xA8" => "\xE7\x96\x9D", + "\xDF\xA9" => "\xE7\xAE\x97", + "\xDF\xAA" => "\xE8\x92\x9C", + "\xDF\xAB" => "\xE9\x85\xB8", + "\xDF\xAC" => "\xE9\x9C\xB0", + "\xDF\xAD" => "\xE4\xB9\xB7", + "\xDF\xAE" => "\xE6\x92\x92", + "\xDF\xAF" => "\xE6\xAE\xBA", + "\xDF\xB0" => "\xE7\x85\x9E", + "\xDF\xB1" => "\xE8\x96\xA9", + "\xDF\xB2" => "\xE4\xB8\x89", + "\xDF\xB3" => "\xEF\xA5\xAB", + "\xDF\xB4" => "\xE6\x9D\x89", + "\xDF\xB5" => "\xE6\xA3\xAE", + "\xDF\xB6" => "\xE6\xB8\x97", + "\xDF\xB7" => "\xE8\x8A\x9F", + "\xDF\xB8" => "\xE8\x94\x98", + "\xDF\xB9" => "\xE8\xA1\xAB", + "\xDF\xBA" => "\xE6\x8F\xB7", + "\xDF\xBB" => "\xE6\xBE\x81", + "\xDF\xBC" => "\xE9\x88\x92", + "\xDF\xBD" => "\xE9\xA2\xAF", + "\xDF\xBE" => "\xE4\xB8\x8A", + "\xDF\xBF" => "\xE5\x82\xB7", + "\xDF\xC0" => "\xE5\x83\x8F", + "\xDF\xC1" => "\xE5\x84\x9F", + "\xDF\xC2" => "\xE5\x95\x86", + "\xDF\xC3" => "\xE5\x96\xAA", + "\xDF\xC4" => "\xE5\x98\x97", + "\xDF\xC5" => "\xE5\xAD\x80", + "\xDF\xC6" => "\xE5\xB0\x99", + "\xDF\xC7" => "\xE5\xB3\xA0", + "\xDF\xC8" => "\xE5\xB8\xB8", + "\xDF\xC9" => "\xE5\xBA\x8A", + "\xDF\xCA" => "\xE5\xBA\xA0", + "\xDF\xCB" => "\xE5\xBB\x82", + "\xDF\xCC" => "\xE6\x83\xB3", + "\xDF\xCD" => "\xE6\xA1\x91", + "\xDF\xCE" => "\xE6\xA9\xA1", + "\xDF\xCF" => "\xE6\xB9\x98", + "\xDF\xD0" => "\xE7\x88\xBD", + "\xDF\xD1" => "\xE7\x89\x80", + "\xDF\xD2" => "\xE7\x8B\x80", + "\xDF\xD3" => "\xE7\x9B\xB8", + "\xDF\xD4" => "\xE7\xA5\xA5", + "\xDF\xD5" => "\xE7\xAE\xB1", + "\xDF\xD6" => "\xE7\xBF\x94", + "\xDF\xD7" => "\xE8\xA3\xB3", + "\xDF\xD8" => "\xE8\xA7\xB4", + "\xDF\xD9" => "\xE8\xA9\xB3", + "\xDF\xDA" => "\xE8\xB1\xA1", + "\xDF\xDB" => "\xE8\xB3\x9E", + "\xDF\xDC" => "\xE9\x9C\x9C", + "\xDF\xDD" => "\xE5\xA1\x9E", + "\xDF\xDE" => "\xE7\x92\xBD", + "\xDF\xDF" => "\xE8\xB3\xBD", + "\xDF\xE0" => "\xE5\x97\x87", + "\xDF\xE1" => "\xEF\xA5\xAC", + "\xDF\xE2" => "\xE7\xA9\xA1", + "\xDF\xE3" => "\xE7\xB4\xA2", + "\xDF\xE4" => "\xE8\x89\xB2", + "\xDF\xE5" => "\xE7\x89\xB2", + "\xDF\xE6" => "\xE7\x94\x9F", + "\xDF\xE7" => "\xE7\x94\xA5", + "\xDF\xE8" => "\xEF\xA5\xAD", + "\xDF\xE9" => "\xE7\xAC\x99", + "\xDF\xEA" => "\xE5\xA2\x85", + "\xDF\xEB" => "\xE5\xA3\xBB", + "\xDF\xEC" => "\xE5\xB6\xBC", + "\xDF\xED" => "\xE5\xBA\x8F", + "\xDF\xEE" => "\xE5\xBA\xB6", + "\xDF\xEF" => "\xE5\xBE\x90", + "\xDF\xF0" => "\xE6\x81\x95", + "\xDF\xF1" => "\xE6\x8A\x92", + "\xDF\xF2" => "\xE6\x8D\xBF", + "\xDF\xF3" => "\xE6\x95\x8D", + "\xDF\xF4" => "\xE6\x9A\x91", + "\xDF\xF5" => "\xE6\x9B\x99", + "\xDF\xF6" => "\xE6\x9B\xB8", + "\xDF\xF7" => "\xE6\xA0\x96", + "\xDF\xF8" => "\xE6\xA3\xB2", + "\xDF\xF9" => "\xE7\x8A\x80", + "\xDF\xFA" => "\xE7\x91\x9E", + "\xDF\xFB" => "\xE7\xAD\xAE", + "\xDF\xFC" => "\xE7\xB5\xAE", + "\xDF\xFD" => "\xE7\xB7\x96", + "\xDF\xFE" => "\xE7\xBD\xB2", + "\xE0\xA1" => "\xE8\x83\xA5", + "\xE0\xA2" => "\xE8\x88\x92", + "\xE0\xA3" => "\xE8\x96\xAF", + "\xE0\xA4" => "\xE8\xA5\xBF", + "\xE0\xA5" => "\xE8\xAA\x93", + "\xE0\xA6" => "\xE9\x80\x9D", + "\xE0\xA7" => "\xE9\x8B\xA4", + "\xE0\xA8" => "\xE9\xBB\x8D", + "\xE0\xA9" => "\xE9\xBC\xA0", + "\xE0\xAA" => "\xE5\xA4\x95", + "\xE0\xAB" => "\xE5\xA5\xAD", + "\xE0\xAC" => "\xE5\xB8\xAD", + "\xE0\xAD" => "\xE6\x83\x9C", + "\xE0\xAE" => "\xE6\x98\x94", + "\xE0\xAF" => "\xE6\x99\xB3", + "\xE0\xB0" => "\xE6\x9E\x90", + "\xE0\xB1" => "\xE6\xB1\x90", + "\xE0\xB2" => "\xE6\xB7\x85", + "\xE0\xB3" => "\xE6\xBD\x9F", + "\xE0\xB4" => "\xE7\x9F\xB3", + "\xE0\xB5" => "\xE7\xA2\xA9", + "\xE0\xB6" => "\xE8\x93\x86", + "\xE0\xB7" => "\xE9\x87\x8B", + "\xE0\xB8" => "\xE9\x8C\xAB", + "\xE0\xB9" => "\xE4\xBB\x99", + "\xE0\xBA" => "\xE5\x83\x8A", + "\xE0\xBB" => "\xE5\x85\x88", + "\xE0\xBC" => "\xE5\x96\x84", + "\xE0\xBD" => "\xE5\xAC\x8B", + "\xE0\xBE" => "\xE5\xAE\xA3", + "\xE0\xBF" => "\xE6\x89\x87", + "\xE0\xC0" => "\xE6\x95\xBE", + "\xE0\xC1" => "\xE6\x97\x8B", + "\xE0\xC2" => "\xE6\xB8\xB2", + "\xE0\xC3" => "\xE7\x85\xBD", + "\xE0\xC4" => "\xE7\x90\x81", + "\xE0\xC5" => "\xE7\x91\x84", + "\xE0\xC6" => "\xE7\x92\x87", + "\xE0\xC7" => "\xE7\x92\xBF", + "\xE0\xC8" => "\xE7\x99\xAC", + "\xE0\xC9" => "\xE7\xA6\xAA", + "\xE0\xCA" => "\xE7\xB7\x9A", + "\xE0\xCB" => "\xE7\xB9\x95", + "\xE0\xCC" => "\xE7\xBE\xA8", + "\xE0\xCD" => "\xE8\x85\xBA", + "\xE0\xCE" => "\xE8\x86\xB3", + "\xE0\xCF" => "\xE8\x88\xB9", + "\xE0\xD0" => "\xE8\x98\x9A", + "\xE0\xD1" => "\xE8\x9F\xAC", + "\xE0\xD2" => "\xE8\xA9\xB5", + "\xE0\xD3" => "\xE8\xB7\xA3", + "\xE0\xD4" => "\xE9\x81\xB8", + "\xE0\xD5" => "\xE9\x8A\x91", + "\xE0\xD6" => "\xE9\x90\xA5", + "\xE0\xD7" => "\xE9\xA5\x8D", + "\xE0\xD8" => "\xE9\xAE\xAE", + "\xE0\xD9" => "\xE5\x8D\xA8", + "\xE0\xDA" => "\xE5\xB1\x91", + "\xE0\xDB" => "\xE6\xA5\x94", + "\xE0\xDC" => "\xE6\xB3\x84", + "\xE0\xDD" => "\xE6\xB4\xA9", + "\xE0\xDE" => "\xE6\xB8\xAB", + "\xE0\xDF" => "\xE8\x88\x8C", + "\xE0\xE0" => "\xE8\x96\x9B", + "\xE0\xE1" => "\xE8\xA4\xBB", + "\xE0\xE2" => "\xE8\xA8\xAD", + "\xE0\xE3" => "\xE8\xAA\xAA", + "\xE0\xE4" => "\xE9\x9B\xAA", + "\xE0\xE5" => "\xE9\xBD\xA7", + "\xE0\xE6" => "\xE5\x89\xA1", + "\xE0\xE7" => "\xE6\x9A\xB9", + "\xE0\xE8" => "\xE6\xAE\xB2", + "\xE0\xE9" => "\xE7\xBA\x96", + "\xE0\xEA" => "\xE8\x9F\xBE", + "\xE0\xEB" => "\xE8\xB4\x8D", + "\xE0\xEC" => "\xE9\x96\x83", + "\xE0\xED" => "\xE9\x99\x9D", + "\xE0\xEE" => "\xE6\x94\x9D", + "\xE0\xEF" => "\xE6\xB6\x89", + "\xE0\xF0" => "\xE7\x87\xAE", + "\xE0\xF1" => "\xEF\xA5\xAE", + "\xE0\xF2" => "\xE5\x9F\x8E", + "\xE0\xF3" => "\xE5\xA7\x93", + "\xE0\xF4" => "\xE5\xAE\xAC", + "\xE0\xF5" => "\xE6\x80\xA7", + "\xE0\xF6" => "\xE6\x83\xBA", + "\xE0\xF7" => "\xE6\x88\x90", + "\xE0\xF8" => "\xE6\x98\x9F", + "\xE0\xF9" => "\xE6\x99\x9F", + "\xE0\xFA" => "\xE7\x8C\xA9", + "\xE0\xFB" => "\xE7\x8F\xB9", + "\xE0\xFC" => "\xE7\x9B\x9B", + "\xE0\xFD" => "\xE7\x9C\x81", + "\xE0\xFE" => "\xE7\xAD\xAC", + "\xE1\xA1" => "\xE8\x81\x96", + "\xE1\xA2" => "\xE8\x81\xB2", + "\xE1\xA3" => "\xE8\x85\xA5", + "\xE1\xA4" => "\xE8\xAA\xA0", + "\xE1\xA5" => "\xE9\x86\x92", + "\xE1\xA6" => "\xE4\xB8\x96", + "\xE1\xA7" => "\xE5\x8B\xA2", + "\xE1\xA8" => "\xE6\xAD\xB2", + "\xE1\xA9" => "\xE6\xB4\x97", + "\xE1\xAA" => "\xE7\xA8\x85", + "\xE1\xAB" => "\xE7\xAC\xB9", + "\xE1\xAC" => "\xE7\xB4\xB0", + "\xE1\xAD" => "\xEF\xA5\xAF", + "\xE1\xAE" => "\xE8\xB2\xB0", + "\xE1\xAF" => "\xE5\x8F\xAC", + "\xE1\xB0" => "\xE5\x98\xAF", + "\xE1\xB1" => "\xE5\xA1\x91", + "\xE1\xB2" => "\xE5\xAE\xB5", + "\xE1\xB3" => "\xE5\xB0\x8F", + "\xE1\xB4" => "\xE5\xB0\x91", + "\xE1\xB5" => "\xE5\xB7\xA2", + "\xE1\xB6" => "\xE6\x89\x80", + "\xE1\xB7" => "\xE6\x8E\x83", + "\xE1\xB8" => "\xE6\x90\x94", + "\xE1\xB9" => "\xE6\x98\xAD", + "\xE1\xBA" => "\xE6\xA2\xB3", + "\xE1\xBB" => "\xE6\xB2\xBC", + "\xE1\xBC" => "\xE6\xB6\x88", + "\xE1\xBD" => "\xE6\xBA\xAF", + "\xE1\xBE" => "\xE7\x80\x9F", + "\xE1\xBF" => "\xE7\x82\xA4", + "\xE1\xC0" => "\xE7\x87\x92", + "\xE1\xC1" => "\xE7\x94\xA6", + "\xE1\xC2" => "\xE7\x96\x8F", + "\xE1\xC3" => "\xE7\x96\x8E", + "\xE1\xC4" => "\xE7\x98\x99", + "\xE1\xC5" => "\xE7\xAC\x91", + "\xE1\xC6" => "\xE7\xAF\xA0", + "\xE1\xC7" => "\xE7\xB0\xAB", + "\xE1\xC8" => "\xE7\xB4\xA0", + "\xE1\xC9" => "\xE7\xB4\xB9", + "\xE1\xCA" => "\xE8\x94\xAC", + "\xE1\xCB" => "\xE8\x95\xAD", + "\xE1\xCC" => "\xE8\x98\x87", + "\xE1\xCD" => "\xE8\xA8\xB4", + "\xE1\xCE" => "\xE9\x80\x8D", + "\xE1\xCF" => "\xE9\x81\xA1", + "\xE1\xD0" => "\xE9\x82\xB5", + "\xE1\xD1" => "\xE9\x8A\xB7", + "\xE1\xD2" => "\xE9\x9F\xB6", + "\xE1\xD3" => "\xE9\xA8\xB7", + "\xE1\xD4" => "\xE4\xBF\x97", + "\xE1\xD5" => "\xE5\xB1\xAC", + "\xE1\xD6" => "\xE6\x9D\x9F", + "\xE1\xD7" => "\xE6\xB6\x91", + "\xE1\xD8" => "\xE7\xB2\x9F", + "\xE1\xD9" => "\xE7\xBA\x8C", + "\xE1\xDA" => "\xE8\xAC\x96", + "\xE1\xDB" => "\xE8\xB4\x96", + "\xE1\xDC" => "\xE9\x80\x9F", + "\xE1\xDD" => "\xE5\xAD\xAB", + "\xE1\xDE" => "\xE5\xB7\xBD", + "\xE1\xDF" => "\xE6\x90\x8D", + "\xE1\xE0" => "\xE8\x93\x80", + "\xE1\xE1" => "\xE9\x81\x9C", + "\xE1\xE2" => "\xE9\xA3\xA1", + "\xE1\xE3" => "\xE7\x8E\x87", + "\xE1\xE4" => "\xE5\xAE\x8B", + "\xE1\xE5" => "\xE6\x82\x9A", + "\xE1\xE6" => "\xE6\x9D\xBE", + "\xE1\xE7" => "\xE6\xB7\x9E", + "\xE1\xE8" => "\xE8\xA8\x9F", + "\xE1\xE9" => "\xE8\xAA\xA6", + "\xE1\xEA" => "\xE9\x80\x81", + "\xE1\xEB" => "\xE9\xA0\x8C", + "\xE1\xEC" => "\xE5\x88\xB7", + "\xE1\xED" => "\xEF\xA5\xB0", + "\xE1\xEE" => "\xE7\x81\x91", + "\xE1\xEF" => "\xE7\xA2\x8E", + "\xE1\xF0" => "\xE9\x8E\x96", + "\xE1\xF1" => "\xE8\xA1\xB0", + "\xE1\xF2" => "\xE9\x87\x97", + "\xE1\xF3" => "\xE4\xBF\xAE", + "\xE1\xF4" => "\xE5\x8F\x97", + "\xE1\xF5" => "\xE5\x97\xBD", + "\xE1\xF6" => "\xE5\x9B\x9A", + "\xE1\xF7" => "\xE5\x9E\x82", + "\xE1\xF8" => "\xE5\xA3\xBD", + "\xE1\xF9" => "\xE5\xAB\x82", + "\xE1\xFA" => "\xE5\xAE\x88", + "\xE1\xFB" => "\xE5\xB2\xAB", + "\xE1\xFC" => "\xE5\xB3\x80", + "\xE1\xFD" => "\xE5\xB8\xA5", + "\xE1\xFE" => "\xE6\x84\x81", + "\xE2\xA1" => "\xE6\x88\x8D", + "\xE2\xA2" => "\xE6\x89\x8B", + "\xE2\xA3" => "\xE6\x8E\x88", + "\xE2\xA4" => "\xE6\x90\x9C", + "\xE2\xA5" => "\xE6\x94\xB6", + "\xE2\xA6" => "\xE6\x95\xB8", + "\xE2\xA7" => "\xE6\xA8\xB9", + "\xE2\xA8" => "\xE6\xAE\x8A", + "\xE2\xA9" => "\xE6\xB0\xB4", + "\xE2\xAA" => "\xE6\xB4\x99", + "\xE2\xAB" => "\xE6\xBC\xB1", + "\xE2\xAC" => "\xE7\x87\xA7", + "\xE2\xAD" => "\xE7\x8B\xA9", + "\xE2\xAE" => "\xE7\x8D\xB8", + "\xE2\xAF" => "\xE7\x90\x87", + "\xE2\xB0" => "\xE7\x92\xB2", + "\xE2\xB1" => "\xE7\x98\xA6", + "\xE2\xB2" => "\xE7\x9D\xA1", + "\xE2\xB3" => "\xE7\xA7\x80", + "\xE2\xB4" => "\xE7\xA9\x97", + "\xE2\xB5" => "\xE7\xAB\xAA", + "\xE2\xB6" => "\xE7\xB2\xB9", + "\xE2\xB7" => "\xE7\xB6\x8F", + "\xE2\xB8" => "\xE7\xB6\xAC", + "\xE2\xB9" => "\xE7\xB9\xA1", + "\xE2\xBA" => "\xE7\xBE\x9E", + "\xE2\xBB" => "\xE8\x84\xA9", + "\xE2\xBC" => "\xE8\x8C\xB1", + "\xE2\xBD" => "\xE8\x92\x90", + "\xE2\xBE" => "\xE8\x93\x9A", + "\xE2\xBF" => "\xE8\x97\xAA", + "\xE2\xC0" => "\xE8\xA2\x96", + "\xE2\xC1" => "\xE8\xAA\xB0", + "\xE2\xC2" => "\xE8\xAE\x90", + "\xE2\xC3" => "\xE8\xBC\xB8", + "\xE2\xC4" => "\xE9\x81\x82", + "\xE2\xC5" => "\xE9\x82\x83", + "\xE2\xC6" => "\xE9\x85\xAC", + "\xE2\xC7" => "\xE9\x8A\x96", + "\xE2\xC8" => "\xE9\x8A\xB9", + "\xE2\xC9" => "\xE9\x9A\x8B", + "\xE2\xCA" => "\xE9\x9A\xA7", + "\xE2\xCB" => "\xE9\x9A\xA8", + "\xE2\xCC" => "\xE9\x9B\x96", + "\xE2\xCD" => "\xE9\x9C\x80", + "\xE2\xCE" => "\xE9\xA0\x88", + "\xE2\xCF" => "\xE9\xA6\x96", + "\xE2\xD0" => "\xE9\xAB\x93", + "\xE2\xD1" => "\xE9\xAC\x9A", + "\xE2\xD2" => "\xE5\x8F\x94", + "\xE2\xD3" => "\xE5\xA1\xBE", + "\xE2\xD4" => "\xE5\xA4\x99", + "\xE2\xD5" => "\xE5\xAD\xB0", + "\xE2\xD6" => "\xE5\xAE\xBF", + "\xE2\xD7" => "\xE6\xB7\x91", + "\xE2\xD8" => "\xE6\xBD\x9A", + "\xE2\xD9" => "\xE7\x86\x9F", + "\xE2\xDA" => "\xE7\x90\xA1", + "\xE2\xDB" => "\xE7\x92\xB9", + "\xE2\xDC" => "\xE8\x82\x85", + "\xE2\xDD" => "\xE8\x8F\xBD", + "\xE2\xDE" => "\xE5\xB7\xA1", + "\xE2\xDF" => "\xE5\xBE\x87", + "\xE2\xE0" => "\xE5\xBE\xAA", + "\xE2\xE1" => "\xE6\x81\x82", + "\xE2\xE2" => "\xE6\x97\xAC", + "\xE2\xE3" => "\xE6\xA0\x92", + "\xE2\xE4" => "\xE6\xA5\xAF", + "\xE2\xE5" => "\xE6\xA9\x93", + "\xE2\xE6" => "\xE6\xAE\x89", + "\xE2\xE7" => "\xE6\xB4\xB5", + "\xE2\xE8" => "\xE6\xB7\xB3", + "\xE2\xE9" => "\xE7\x8F\xA3", + "\xE2\xEA" => "\xE7\x9B\xBE", + "\xE2\xEB" => "\xE7\x9E\xAC", + "\xE2\xEC" => "\xE7\xAD\x8D", + "\xE2\xED" => "\xE7\xB4\x94", + "\xE2\xEE" => "\xE8\x84\xA3", + "\xE2\xEF" => "\xE8\x88\x9C", + "\xE2\xF0" => "\xE8\x8D\x80", + "\xE2\xF1" => "\xE8\x93\xB4", + "\xE2\xF2" => "\xE8\x95\xA3", + "\xE2\xF3" => "\xE8\xA9\xA2", + "\xE2\xF4" => "\xE8\xAB\x84", + "\xE2\xF5" => "\xE9\x86\x87", + "\xE2\xF6" => "\xE9\x8C\x9E", + "\xE2\xF7" => "\xE9\xA0\x86", + "\xE2\xF8" => "\xE9\xA6\xB4", + "\xE2\xF9" => "\xE6\x88\x8C", + "\xE2\xFA" => "\xE8\xA1\x93", + "\xE2\xFB" => "\xE8\xBF\xB0", + "\xE2\xFC" => "\xE9\x89\xA5", + "\xE2\xFD" => "\xE5\xB4\x87", + "\xE2\xFE" => "\xE5\xB4\xA7", + "\xE3\xA1" => "\xE5\xB5\xA9", + "\xE3\xA2" => "\xE7\x91\x9F", + "\xE3\xA3" => "\xE8\x86\x9D", + "\xE3\xA4" => "\xE8\x9D\xA8", + "\xE3\xA5" => "\xE6\xBF\x95", + "\xE3\xA6" => "\xE6\x8B\xBE", + "\xE3\xA7" => "\xE7\xBF\x92", + "\xE3\xA8" => "\xE8\xA4\xB6", + "\xE3\xA9" => "\xE8\xA5\xB2", + "\xE3\xAA" => "\xE4\xB8\x9E", + "\xE3\xAB" => "\xE4\xB9\x98", + "\xE3\xAC" => "\xE5\x83\xA7", + "\xE3\xAD" => "\xE5\x8B\x9D", + "\xE3\xAE" => "\xE5\x8D\x87", + "\xE3\xAF" => "\xE6\x89\xBF", + "\xE3\xB0" => "\xE6\x98\x87", + "\xE3\xB1" => "\xE7\xB9\xA9", + "\xE3\xB2" => "\xE8\xA0\x85", + "\xE3\xB3" => "\xE9\x99\x9E", + "\xE3\xB4" => "\xE4\xBE\x8D", + "\xE3\xB5" => "\xE5\x8C\x99", + "\xE3\xB6" => "\xE5\x98\xB6", + "\xE3\xB7" => "\xE5\xA7\x8B", + "\xE3\xB8" => "\xE5\xAA\xA4", + "\xE3\xB9" => "\xE5\xB0\xB8", + "\xE3\xBA" => "\xE5\xB1\x8E", + "\xE3\xBB" => "\xE5\xB1\x8D", + "\xE3\xBC" => "\xE5\xB8\x82", + "\xE3\xBD" => "\xE5\xBC\x91", + "\xE3\xBE" => "\xE6\x81\x83", + "\xE3\xBF" => "\xE6\x96\xBD", + "\xE3\xC0" => "\xE6\x98\xAF", + "\xE3\xC1" => "\xE6\x99\x82", + "\xE3\xC2" => "\xE6\x9E\xBE", + "\xE3\xC3" => "\xE6\x9F\xB4", + "\xE3\xC4" => "\xE7\x8C\x9C", + "\xE3\xC5" => "\xE7\x9F\xA2", + "\xE3\xC6" => "\xE7\xA4\xBA", + "\xE3\xC7" => "\xE7\xBF\x85", + "\xE3\xC8" => "\xE8\x92\x94", + "\xE3\xC9" => "\xE8\x93\x8D", + "\xE3\xCA" => "\xE8\xA6\x96", + "\xE3\xCB" => "\xE8\xA9\xA6", + "\xE3\xCC" => "\xE8\xA9\xA9", + "\xE3\xCD" => "\xE8\xAB\xA1", + "\xE3\xCE" => "\xE8\xB1\x95", + "\xE3\xCF" => "\xE8\xB1\xBA", + "\xE3\xD0" => "\xE5\x9F\xB4", + "\xE3\xD1" => "\xE5\xAF\x94", + "\xE3\xD2" => "\xE5\xBC\x8F", + "\xE3\xD3" => "\xE6\x81\xAF", + "\xE3\xD4" => "\xE6\x8B\xAD", + "\xE3\xD5" => "\xE6\xA4\x8D", + "\xE3\xD6" => "\xE6\xAE\x96", + "\xE3\xD7" => "\xE6\xB9\x9C", + "\xE3\xD8" => "\xE7\x86\x84", + "\xE3\xD9" => "\xE7\xAF\x92", + "\xE3\xDA" => "\xE8\x9D\x95", + "\xE3\xDB" => "\xE8\xAD\x98", + "\xE3\xDC" => "\xE8\xBB\xBE", + "\xE3\xDD" => "\xE9\xA3\x9F", + "\xE3\xDE" => "\xE9\xA3\xBE", + "\xE3\xDF" => "\xE4\xBC\xB8", + "\xE3\xE0" => "\xE4\xBE\x81", + "\xE3\xE1" => "\xE4\xBF\xA1", + "\xE3\xE2" => "\xE5\x91\xBB", + "\xE3\xE3" => "\xE5\xA8\xA0", + "\xE3\xE4" => "\xE5\xAE\xB8", + "\xE3\xE5" => "\xE6\x84\xBC", + "\xE3\xE6" => "\xE6\x96\xB0", + "\xE3\xE7" => "\xE6\x99\xA8", + "\xE3\xE8" => "\xE7\x87\xBC", + "\xE3\xE9" => "\xE7\x94\xB3", + "\xE3\xEA" => "\xE7\xA5\x9E", + "\xE3\xEB" => "\xE7\xB4\xB3", + "\xE3\xEC" => "\xE8\x85\x8E", + "\xE3\xED" => "\xE8\x87\xA3", + "\xE3\xEE" => "\xE8\x8E\x98", + "\xE3\xEF" => "\xE8\x96\xAA", + "\xE3\xF0" => "\xE8\x97\x8E", + "\xE3\xF1" => "\xE8\x9C\x83", + "\xE3\xF2" => "\xE8\xA8\x8A", + "\xE3\xF3" => "\xE8\xBA\xAB", + "\xE3\xF4" => "\xE8\xBE\x9B", + "\xE3\xF5" => "\xEF\xA5\xB1", + "\xE3\xF6" => "\xE8\xBF\x85", + "\xE3\xF7" => "\xE5\xA4\xB1", + "\xE3\xF8" => "\xE5\xAE\xA4", + "\xE3\xF9" => "\xE5\xAF\xA6", + "\xE3\xFA" => "\xE6\x82\x89", + "\xE3\xFB" => "\xE5\xAF\xA9", + "\xE3\xFC" => "\xE5\xB0\x8B", + "\xE3\xFD" => "\xE5\xBF\x83", + "\xE3\xFE" => "\xE6\xB2\x81", + "\xE4\xA1" => "\xEF\xA5\xB2", + "\xE4\xA2" => "\xE6\xB7\xB1", + "\xE4\xA3" => "\xE7\x80\x8B", + "\xE4\xA4" => "\xE7\x94\x9A", + "\xE4\xA5" => "\xE8\x8A\xAF", + "\xE4\xA6" => "\xE8\xAB\xB6", + "\xE4\xA7" => "\xE4\xBB\x80", + "\xE4\xA8" => "\xE5\x8D\x81", + "\xE4\xA9" => "\xEF\xA5\xB3", + "\xE4\xAA" => "\xE9\x9B\x99", + "\xE4\xAB" => "\xE6\xB0\x8F", + "\xE4\xAC" => "\xE4\xBA\x9E", + "\xE4\xAD" => "\xE4\xBF\x84", + "\xE4\xAE" => "\xE5\x85\x92", + "\xE4\xAF" => "\xE5\x95\x9E", + "\xE4\xB0" => "\xE5\xA8\xA5", + "\xE4\xB1" => "\xE5\xB3\xA8", + "\xE4\xB2" => "\xE6\x88\x91", + "\xE4\xB3" => "\xE7\x89\x99", + "\xE4\xB4" => "\xE8\x8A\xBD", + "\xE4\xB5" => "\xE8\x8E\xAA", + "\xE4\xB6" => "\xE8\x9B\xBE", + "\xE4\xB7" => "\xE8\xA1\x99", + "\xE4\xB8" => "\xE8\xA8\x9D", + "\xE4\xB9" => "\xE9\x98\xBF", + "\xE4\xBA" => "\xE9\x9B\x85", + "\xE4\xBB" => "\xE9\xA4\x93", + "\xE4\xBC" => "\xE9\xB4\x89", + "\xE4\xBD" => "\xE9\xB5\x9D", + "\xE4\xBE" => "\xE5\xA0\x8A", + "\xE4\xBF" => "\xE5\xB2\xB3", + "\xE4\xC0" => "\xE5\xB6\xBD", + "\xE4\xC1" => "\xE5\xB9\x84", + "\xE4\xC2" => "\xE6\x83\xA1", + "\xE4\xC3" => "\xE6\x84\x95", + "\xE4\xC4" => "\xE6\x8F\xA1", + "\xE4\xC5" => "\xE6\xA8\x82", + "\xE4\xC6" => "\xE6\xB8\xA5", + "\xE4\xC7" => "\xE9\x84\x82", + "\xE4\xC8" => "\xE9\x8D\x94", + "\xE4\xC9" => "\xE9\xA1\x8E", + "\xE4\xCA" => "\xE9\xB0\x90", + "\xE4\xCB" => "\xE9\xBD\xB7", + "\xE4\xCC" => "\xE5\xAE\x89", + "\xE4\xCD" => "\xE5\xB2\xB8", + "\xE4\xCE" => "\xE6\x8C\x89", + "\xE4\xCF" => "\xE6\x99\x8F", + "\xE4\xD0" => "\xE6\xA1\x88", + "\xE4\xD1" => "\xE7\x9C\xBC", + "\xE4\xD2" => "\xE9\x9B\x81", + "\xE4\xD3" => "\xE9\x9E\x8D", + "\xE4\xD4" => "\xE9\xA1\x94", + "\xE4\xD5" => "\xE9\xAE\x9F", + "\xE4\xD6" => "\xE6\x96\xA1", + "\xE4\xD7" => "\xE8\xAC\x81", + "\xE4\xD8" => "\xE8\xBB\x8B", + "\xE4\xD9" => "\xE9\x96\xBC", + "\xE4\xDA" => "\xE5\x94\xB5", + "\xE4\xDB" => "\xE5\xB2\xA9", + "\xE4\xDC" => "\xE5\xB7\x96", + "\xE4\xDD" => "\xE5\xBA\xB5", + "\xE4\xDE" => "\xE6\x9A\x97", + "\xE4\xDF" => "\xE7\x99\x8C", + "\xE4\xE0" => "\xE8\x8F\xB4", + "\xE4\xE1" => "\xE9\x97\x87", + "\xE4\xE2" => "\xE5\xA3\x93", + "\xE4\xE3" => "\xE6\x8A\xBC", + "\xE4\xE4" => "\xE7\x8B\x8E", + "\xE4\xE5" => "\xE9\xB4\xA8", + "\xE4\xE6" => "\xE4\xBB\xB0", + "\xE4\xE7" => "\xE5\xA4\xAE", + "\xE4\xE8" => "\xE6\x80\x8F", + "\xE4\xE9" => "\xE6\x98\xBB", + "\xE4\xEA" => "\xE6\xAE\x83", + "\xE4\xEB" => "\xE7\xA7\xA7", + "\xE4\xEC" => "\xE9\xB4\xA6", + "\xE4\xED" => "\xE5\x8E\x93", + "\xE4\xEE" => "\xE5\x93\x80", + "\xE4\xEF" => "\xE5\x9F\x83", + "\xE4\xF0" => "\xE5\xB4\x96", + "\xE4\xF1" => "\xE6\x84\x9B", + "\xE4\xF2" => "\xE6\x9B\x96", + "\xE4\xF3" => "\xE6\xB6\xAF", + "\xE4\xF4" => "\xE7\xA2\x8D", + "\xE4\xF5" => "\xE8\x89\xBE", + "\xE4\xF6" => "\xE9\x9A\x98", + "\xE4\xF7" => "\xE9\x9D\x84", + "\xE4\xF8" => "\xE5\x8E\x84", + "\xE4\xF9" => "\xE6\x89\xBC", + "\xE4\xFA" => "\xE6\x8E\x96", + "\xE4\xFB" => "\xE6\xB6\xB2", + "\xE4\xFC" => "\xE7\xB8\x8A", + "\xE4\xFD" => "\xE8\x85\x8B", + "\xE4\xFE" => "\xE9\xA1\x8D", + "\xE5\xA1" => "\xE6\xAB\xBB", + "\xE5\xA2" => "\xE7\xBD\x8C", + "\xE5\xA3" => "\xE9\xB6\xAF", + "\xE5\xA4" => "\xE9\xB8\x9A", + "\xE5\xA5" => "\xE4\xB9\x9F", + "\xE5\xA6" => "\xE5\x80\xBB", + "\xE5\xA7" => "\xE5\x86\xB6", + "\xE5\xA8" => "\xE5\xA4\x9C", + "\xE5\xA9" => "\xE6\x83\xB9", + "\xE5\xAA" => "\xE6\x8F\xB6", + "\xE5\xAB" => "\xE6\xA4\xB0", + "\xE5\xAC" => "\xE7\x88\xBA", + "\xE5\xAD" => "\xE8\x80\xB6", + "\xE5\xAE" => "\xEF\xA5\xB4", + "\xE5\xAF" => "\xE9\x87\x8E", + "\xE5\xB0" => "\xE5\xBC\xB1", + "\xE5\xB1" => "\xEF\xA5\xB5", + "\xE5\xB2" => "\xEF\xA5\xB6", + "\xE5\xB3" => "\xE7\xB4\x84", + "\xE5\xB4" => "\xE8\x8B\xA5", + "\xE5\xB5" => "\xE8\x91\xAF", + "\xE5\xB6" => "\xE8\x92\xBB", + "\xE5\xB7" => "\xE8\x97\xA5", + "\xE5\xB8" => "\xE8\xBA\x8D", + "\xE5\xB9" => "\xEF\xA5\xB7", + "\xE5\xBA" => "\xE4\xBD\xAF", + "\xE5\xBB" => "\xEF\xA5\xB8", + "\xE5\xBC" => "\xEF\xA5\xB9", + "\xE5\xBD" => "\xE5\xA3\xA4", + "\xE5\xBE" => "\xE5\xAD\x83", + "\xE5\xBF" => "\xE6\x81\x99", + "\xE5\xC0" => "\xE6\x8F\x9A", + "\xE5\xC1" => "\xE6\x94\x98", + "\xE5\xC2" => "\xE6\x95\xAD", + "\xE5\xC3" => "\xE6\x9A\x98", + "\xE5\xC4" => "\xEF\xA5\xBA", + "\xE5\xC5" => "\xE6\xA5\x8A", + "\xE5\xC6" => "\xE6\xA8\xA3", + "\xE5\xC7" => "\xE6\xB4\x8B", + "\xE5\xC8" => "\xE7\x80\x81", + "\xE5\xC9" => "\xE7\x85\xAC", + "\xE5\xCA" => "\xE7\x97\x92", + "\xE5\xCB" => "\xE7\x98\x8D", + "\xE5\xCC" => "\xE7\xA6\xB3", + "\xE5\xCD" => "\xE7\xA9\xB0", + "\xE5\xCE" => "\xEF\xA5\xBB", + "\xE5\xCF" => "\xE7\xBE\x8A", + "\xE5\xD0" => "\xEF\xA5\xBC", + "\xE5\xD1" => "\xE8\xA5\x84", + "\xE5\xD2" => "\xEF\xA5\xBD", + "\xE5\xD3" => "\xE8\xAE\x93", + "\xE5\xD4" => "\xE9\x87\x80", + "\xE5\xD5" => "\xE9\x99\xBD", + "\xE5\xD6" => "\xEF\xA5\xBE", + "\xE5\xD7" => "\xE9\xA4\x8A", + "\xE5\xD8" => "\xE5\x9C\x84", + "\xE5\xD9" => "\xE5\xBE\xA1", + "\xE5\xDA" => "\xE6\x96\xBC", + "\xE5\xDB" => "\xE6\xBC\x81", + "\xE5\xDC" => "\xE7\x98\x80", + "\xE5\xDD" => "\xE7\xA6\xA6", + "\xE5\xDE" => "\xE8\xAA\x9E", + "\xE5\xDF" => "\xE9\xA6\xAD", + "\xE5\xE0" => "\xE9\xAD\x9A", + "\xE5\xE1" => "\xE9\xBD\xAC", + "\xE5\xE2" => "\xE5\x84\x84", + "\xE5\xE3" => "\xE6\x86\xB6", + "\xE5\xE4" => "\xE6\x8A\x91", + "\xE5\xE5" => "\xE6\xAA\x8D", + "\xE5\xE6" => "\xE8\x87\x86", + "\xE5\xE7" => "\xE5\x81\x83", + "\xE5\xE8" => "\xE5\xA0\xB0", + "\xE5\xE9" => "\xE5\xBD\xA6", + "\xE5\xEA" => "\xE7\x84\x89", + "\xE5\xEB" => "\xE8\xA8\x80", + "\xE5\xEC" => "\xE8\xAB\xBA", + "\xE5\xED" => "\xE5\xAD\xBC", + "\xE5\xEE" => "\xE8\x98\x96", + "\xE5\xEF" => "\xE4\xBF\xBA", + "\xE5\xF0" => "\xE5\x84\xBC", + "\xE5\xF1" => "\xE5\x9A\xB4", + "\xE5\xF2" => "\xE5\xA5\x84", + "\xE5\xF3" => "\xE6\x8E\xA9", + "\xE5\xF4" => "\xE6\xB7\xB9", + "\xE5\xF5" => "\xE5\xB6\xAA", + "\xE5\xF6" => "\xE6\xA5\xAD", + "\xE5\xF7" => "\xE5\x86\x86", + "\xE5\xF8" => "\xE4\xBA\x88", + "\xE5\xF9" => "\xE4\xBD\x99", + "\xE5\xFA" => "\xEF\xA5\xBF", + "\xE5\xFB" => "\xEF\xA6\x80", + "\xE5\xFC" => "\xEF\xA6\x81", + "\xE5\xFD" => "\xE5\xA6\x82", + "\xE5\xFE" => "\xEF\xA6\x82", + "\xE6\xA1" => "\xEF\xA6\x83", + "\xE6\xA2" => "\xE6\xAD\x9F", + "\xE6\xA3" => "\xE6\xB1\x9D", + "\xE6\xA4" => "\xEF\xA6\x84", + "\xE6\xA5" => "\xE7\x92\xB5", + "\xE6\xA6" => "\xE7\xA4\x96", + "\xE6\xA7" => "\xEF\xA6\x85", + "\xE6\xA8" => "\xE8\x88\x87", + "\xE6\xA9" => "\xE8\x89\x85", + "\xE6\xAA" => "\xE8\x8C\xB9", + "\xE6\xAB" => "\xE8\xBC\xBF", + "\xE6\xAC" => "\xE8\xBD\x9D", + "\xE6\xAD" => "\xEF\xA6\x86", + "\xE6\xAE" => "\xE9\xA4\x98", + "\xE6\xAF" => "\xEF\xA6\x87", + "\xE6\xB0" => "\xEF\xA6\x88", + "\xE6\xB1" => "\xEF\xA6\x89", + "\xE6\xB2" => "\xE4\xBA\xA6", + "\xE6\xB3" => "\xEF\xA6\x8A", + "\xE6\xB4" => "\xE5\x9F\x9F", + "\xE6\xB5" => "\xE5\xBD\xB9", + "\xE6\xB6" => "\xE6\x98\x93", + "\xE6\xB7" => "\xEF\xA6\x8B", + "\xE6\xB8" => "\xEF\xA6\x8C", + "\xE6\xB9" => "\xE7\x96\xAB", + "\xE6\xBA" => "\xE7\xB9\xB9", + "\xE6\xBB" => "\xE8\xAD\xAF", + "\xE6\xBC" => "\xEF\xA6\x8D", + "\xE6\xBD" => "\xE9\x80\x86", + "\xE6\xBE" => "\xE9\xA9\x9B", + "\xE6\xBF" => "\xE5\x9A\xA5", + "\xE6\xC0" => "\xE5\xA0\xA7", + "\xE6\xC1" => "\xE5\xA7\xB8", + "\xE6\xC2" => "\xE5\xA8\x9F", + "\xE6\xC3" => "\xE5\xAE\xB4", + "\xE6\xC4" => "\xEF\xA6\x8E", + "\xE6\xC5" => "\xE5\xBB\xB6", + "\xE6\xC6" => "\xEF\xA6\x8F", + "\xE6\xC7" => "\xEF\xA6\x90", + "\xE6\xC8" => "\xE6\x8D\x90", + "\xE6\xC9" => "\xE6\x8C\xBB", + "\xE6\xCA" => "\xEF\xA6\x91", + "\xE6\xCB" => "\xE6\xA4\xBD", + "\xE6\xCC" => "\xE6\xB2\x87", + "\xE6\xCD" => "\xE6\xB2\xBF", + "\xE6\xCE" => "\xE6\xB6\x8E", + "\xE6\xCF" => "\xE6\xB6\x93", + "\xE6\xD0" => "\xE6\xB7\xB5", + "\xE6\xD1" => "\xE6\xBC\x94", + "\xE6\xD2" => "\xEF\xA6\x92", + "\xE6\xD3" => "\xE7\x83\x9F", + "\xE6\xD4" => "\xE7\x84\xB6", + "\xE6\xD5" => "\xE7\x85\x99", + "\xE6\xD6" => "\xEF\xA6\x93", + "\xE6\xD7" => "\xE7\x87\x83", + "\xE6\xD8" => "\xE7\x87\x95", + "\xE6\xD9" => "\xEF\xA6\x94", + "\xE6\xDA" => "\xE7\xA1\x8F", + "\xE6\xDB" => "\xE7\xA1\xAF", + "\xE6\xDC" => "\xEF\xA6\x95", + "\xE6\xDD" => "\xE7\xAD\xB5", + "\xE6\xDE" => "\xE7\xB7\xA3", + "\xE6\xDF" => "\xEF\xA6\x96", + "\xE6\xE0" => "\xE7\xB8\xAF", + "\xE6\xE1" => "\xEF\xA6\x97", + "\xE6\xE2" => "\xE8\xA1\x8D", + "\xE6\xE3" => "\xE8\xBB\x9F", + "\xE6\xE4" => "\xEF\xA6\x98", + "\xE6\xE5" => "\xEF\xA6\x99", + "\xE6\xE6" => "\xEF\xA6\x9A", + "\xE6\xE7" => "\xE9\x89\x9B", + "\xE6\xE8" => "\xEF\xA6\x9B", + "\xE6\xE9" => "\xE9\xB3\xB6", + "\xE6\xEA" => "\xEF\xA6\x9C", + "\xE6\xEB" => "\xEF\xA6\x9D", + "\xE6\xEC" => "\xEF\xA6\x9E", + "\xE6\xED" => "\xE6\x82\x85", + "\xE6\xEE" => "\xE6\xB6\x85", + "\xE6\xEF" => "\xEF\xA6\x9F", + "\xE6\xF0" => "\xE7\x86\xB1", + "\xE6\xF1" => "\xEF\xA6\xA0", + "\xE6\xF2" => "\xEF\xA6\xA1", + "\xE6\xF3" => "\xE9\x96\xB1", + "\xE6\xF4" => "\xE5\x8E\xAD", + "\xE6\xF5" => "\xEF\xA6\xA2", + "\xE6\xF6" => "\xEF\xA6\xA3", + "\xE6\xF7" => "\xEF\xA6\xA4", + "\xE6\xF8" => "\xE6\x9F\x93", + "\xE6\xF9" => "\xEF\xA6\xA5", + "\xE6\xFA" => "\xE7\x82\x8E", + "\xE6\xFB" => "\xE7\x84\xB0", + "\xE6\xFC" => "\xE7\x90\xB0", + "\xE6\xFD" => "\xE8\x89\xB6", + "\xE6\xFE" => "\xE8\x8B\x92", + "\xE7\xA1" => "\xEF\xA6\xA6", + "\xE7\xA2" => "\xE9\x96\xBB", + "\xE7\xA3" => "\xE9\xAB\xA5", + "\xE7\xA4" => "\xE9\xB9\xBD", + "\xE7\xA5" => "\xE6\x9B\x84", + "\xE7\xA6" => "\xEF\xA6\xA7", + "\xE7\xA7" => "\xE7\x87\x81", + "\xE7\xA8" => "\xE8\x91\x89", + "\xE7\xA9" => "\xEF\xA6\xA8", + "\xE7\xAA" => "\xEF\xA6\xA9", + "\xE7\xAB" => "\xE5\xA1\x8B", + "\xE7\xAC" => "\xEF\xA6\xAA", + "\xE7\xAD" => "\xEF\xA6\xAB", + "\xE7\xAE" => "\xE5\xB6\xB8", + "\xE7\xAF" => "\xE5\xBD\xB1", + "\xE7\xB0" => "\xEF\xA6\xAC", + "\xE7\xB1" => "\xE6\x98\xA0", + "\xE7\xB2" => "\xE6\x9A\x8E", + "\xE7\xB3" => "\xE6\xA5\xB9", + "\xE7\xB4" => "\xE6\xA6\xAE", + "\xE7\xB5" => "\xE6\xB0\xB8", + "\xE7\xB6" => "\xE6\xB3\xB3", + "\xE7\xB7" => "\xE6\xB8\xB6", + "\xE7\xB8" => "\xE6\xBD\x81", + "\xE7\xB9" => "\xE6\xBF\x9A", + "\xE7\xBA" => "\xE7\x80\x9B", + "\xE7\xBB" => "\xE7\x80\xAF", + "\xE7\xBC" => "\xE7\x85\x90", + "\xE7\xBD" => "\xE7\x87\x9F", + "\xE7\xBE" => "\xE7\x8D\xB0", + "\xE7\xBF" => "\xEF\xA6\xAD", + "\xE7\xC0" => "\xE7\x91\x9B", + "\xE7\xC1" => "\xEF\xA6\xAE", + "\xE7\xC2" => "\xE7\x93\x94", + "\xE7\xC3" => "\xE7\x9B\x88", + "\xE7\xC4" => "\xE7\xA9\x8E", + "\xE7\xC5" => "\xE7\xBA\x93", + "\xE7\xC6" => "\xEF\xA6\xAF", + "\xE7\xC7" => "\xEF\xA6\xB0", + "\xE7\xC8" => "\xE8\x8B\xB1", + "\xE7\xC9" => "\xE8\xA9\xA0", + "\xE7\xCA" => "\xE8\xBF\x8E", + "\xE7\xCB" => "\xEF\xA6\xB1", + "\xE7\xCC" => "\xE9\x8D\x88", + "\xE7\xCD" => "\xEF\xA6\xB2", + "\xE7\xCE" => "\xE9\x9C\x99", + "\xE7\xCF" => "\xEF\xA6\xB3", + "\xE7\xD0" => "\xEF\xA6\xB4", + "\xE7\xD1" => "\xE4\xB9\x82", + "\xE7\xD2" => "\xE5\x80\xAA", + "\xE7\xD3" => "\xEF\xA6\xB5", + "\xE7\xD4" => "\xE5\x88\x88", + "\xE7\xD5" => "\xE5\x8F\xA1", + "\xE7\xD6" => "\xE6\x9B\xB3", + "\xE7\xD7" => "\xE6\xB1\xAD", + "\xE7\xD8" => "\xE6\xBF\x8A", + "\xE7\xD9" => "\xE7\x8C\x8A", + "\xE7\xDA" => "\xE7\x9D\xBF", + "\xE7\xDB" => "\xE7\xA9\xA2", + "\xE7\xDC" => "\xE8\x8A\xAE", + "\xE7\xDD" => "\xE8\x97\x9D", + "\xE7\xDE" => "\xE8\x98\x82", + "\xE7\xDF" => "\xEF\xA6\xB6", + "\xE7\xE0" => "\xE8\xA3\x94", + "\xE7\xE1" => "\xE8\xA9\xA3", + "\xE7\xE2" => "\xE8\xAD\xBD", + "\xE7\xE3" => "\xE8\xB1\xAB", + "\xE7\xE4" => "\xEF\xA6\xB7", + "\xE7\xE5" => "\xE9\x8A\xB3", + "\xE7\xE6" => "\xEF\xA6\xB8", + "\xE7\xE7" => "\xE9\x9C\x93", + "\xE7\xE8" => "\xE9\xA0\x90", + "\xE7\xE9" => "\xE4\xBA\x94", + "\xE7\xEA" => "\xE4\xBC\x8D", + "\xE7\xEB" => "\xE4\xBF\x89", + "\xE7\xEC" => "\xE5\x82\xB2", + "\xE7\xED" => "\xE5\x8D\x88", + "\xE7\xEE" => "\xE5\x90\xBE", + "\xE7\xEF" => "\xE5\x90\xB3", + "\xE7\xF0" => "\xE5\x97\x9A", + "\xE7\xF1" => "\xE5\xA1\xA2", + "\xE7\xF2" => "\xE5\xA2\xBA", + "\xE7\xF3" => "\xE5\xA5\xA7", + "\xE7\xF4" => "\xE5\xA8\x9B", + "\xE7\xF5" => "\xE5\xAF\xA4", + "\xE7\xF6" => "\xE6\x82\x9F", + "\xE7\xF7" => "\xEF\xA6\xB9", + "\xE7\xF8" => "\xE6\x87\x8A", + "\xE7\xF9" => "\xE6\x95\x96", + "\xE7\xFA" => "\xE6\x97\xBF", + "\xE7\xFB" => "\xE6\x99\xA4", + "\xE7\xFC" => "\xE6\xA2\xA7", + "\xE7\xFD" => "\xE6\xB1\x9A", + "\xE7\xFE" => "\xE6\xBE\xB3", + "\xE8\xA1" => "\xE7\x83\x8F", + "\xE8\xA2" => "\xE7\x86\xAC", + "\xE8\xA3" => "\xE7\x8D\x92", + "\xE8\xA4" => "\xE7\xAD\xBD", + "\xE8\xA5" => "\xE8\x9C\x88", + "\xE8\xA6" => "\xE8\xAA\xA4", + "\xE8\xA7" => "\xE9\xB0\xB2", + "\xE8\xA8" => "\xE9\xBC\x87", + "\xE8\xA9" => "\xE5\xB1\x8B", + "\xE8\xAA" => "\xE6\xB2\x83", + "\xE8\xAB" => "\xE7\x8D\x84", + "\xE8\xAC" => "\xE7\x8E\x89", + "\xE8\xAD" => "\xE9\x88\xBA", + "\xE8\xAE" => "\xE6\xBA\xAB", + "\xE8\xAF" => "\xE7\x91\xA5", + "\xE8\xB0" => "\xE7\x98\x9F", + "\xE8\xB1" => "\xE7\xA9\xA9", + "\xE8\xB2" => "\xE7\xB8\x95", + "\xE8\xB3" => "\xE8\x98\x8A", + "\xE8\xB4" => "\xE5\x85\x80", + "\xE8\xB5" => "\xE5\xA3\x85", + "\xE8\xB6" => "\xE6\x93\x81", + "\xE8\xB7" => "\xE7\x93\xAE", + "\xE8\xB8" => "\xE7\x94\x95", + "\xE8\xB9" => "\xE7\x99\xB0", + "\xE8\xBA" => "\xE7\xBF\x81", + "\xE8\xBB" => "\xE9\x82\x95", + "\xE8\xBC" => "\xE9\x9B\x8D", + "\xE8\xBD" => "\xE9\xA5\x94", + "\xE8\xBE" => "\xE6\xB8\xA6", + "\xE8\xBF" => "\xE7\x93\xA6", + "\xE8\xC0" => "\xE7\xAA\xA9", + "\xE8\xC1" => "\xE7\xAA\xAA", + "\xE8\xC2" => "\xE8\x87\xA5", + "\xE8\xC3" => "\xE8\x9B\x99", + "\xE8\xC4" => "\xE8\x9D\xB8", + "\xE8\xC5" => "\xE8\xA8\x9B", + "\xE8\xC6" => "\xE5\xA9\x89", + "\xE8\xC7" => "\xE5\xAE\x8C", + "\xE8\xC8" => "\xE5\xAE\x9B", + "\xE8\xC9" => "\xE6\xA2\xA1", + "\xE8\xCA" => "\xE6\xA4\x80", + "\xE8\xCB" => "\xE6\xB5\xA3", + "\xE8\xCC" => "\xE7\x8E\xA9", + "\xE8\xCD" => "\xE7\x90\x93", + "\xE8\xCE" => "\xE7\x90\xAC", + "\xE8\xCF" => "\xE7\xA2\x97", + "\xE8\xD0" => "\xE7\xB7\xA9", + "\xE8\xD1" => "\xE7\xBF\xAB", + "\xE8\xD2" => "\xE8\x84\x98", + "\xE8\xD3" => "\xE8\x85\x95", + "\xE8\xD4" => "\xE8\x8E\x9E", + "\xE8\xD5" => "\xE8\xB1\x8C", + "\xE8\xD6" => "\xE9\x98\xAE", + "\xE8\xD7" => "\xE9\xA0\x91", + "\xE8\xD8" => "\xE6\x9B\xB0", + "\xE8\xD9" => "\xE5\xBE\x80", + "\xE8\xDA" => "\xE6\x97\xBA", + "\xE8\xDB" => "\xE6\x9E\x89", + "\xE8\xDC" => "\xE6\xB1\xAA", + "\xE8\xDD" => "\xE7\x8E\x8B", + "\xE8\xDE" => "\xE5\x80\xAD", + "\xE8\xDF" => "\xE5\xA8\x83", + "\xE8\xE0" => "\xE6\xAD\xAA", + "\xE8\xE1" => "\xE7\x9F\xAE", + "\xE8\xE2" => "\xE5\xA4\x96", + "\xE8\xE3" => "\xE5\xB5\xAC", + "\xE8\xE4" => "\xE5\xB7\x8D", + "\xE8\xE5" => "\xE7\x8C\xA5", + "\xE8\xE6" => "\xE7\x95\x8F", + "\xE8\xE7" => "\xEF\xA6\xBA", + "\xE8\xE8" => "\xEF\xA6\xBB", + "\xE8\xE9" => "\xE5\x83\xA5", + "\xE8\xEA" => "\xE5\x87\xB9", + "\xE8\xEB" => "\xE5\xA0\xAF", + "\xE8\xEC" => "\xE5\xA4\xAD", + "\xE8\xED" => "\xE5\xA6\x96", + "\xE8\xEE" => "\xE5\xA7\x9A", + "\xE8\xEF" => "\xE5\xAF\xA5", + "\xE8\xF0" => "\xEF\xA6\xBC", + "\xE8\xF1" => "\xEF\xA6\xBD", + "\xE8\xF2" => "\xE5\xB6\xA2", + "\xE8\xF3" => "\xE6\x8B\x97", + "\xE8\xF4" => "\xE6\x90\x96", + "\xE8\xF5" => "\xE6\x92\x93", + "\xE8\xF6" => "\xE6\x93\xBE", + "\xE8\xF7" => "\xEF\xA6\xBE", + "\xE8\xF8" => "\xE6\x9B\x9C", + "\xE8\xF9" => "\xEF\xA6\xBF", + "\xE8\xFA" => "\xE6\xA9\x88", + "\xE8\xFB" => "\xEF\xA7\x80", + "\xE8\xFC" => "\xE7\x87\xBF", + "\xE8\xFD" => "\xE7\x91\xA4", + "\xE8\xFE" => "\xEF\xA7\x81", + "\xE9\xA1" => "\xE7\xAA\x88", + "\xE9\xA2" => "\xE7\xAA\xAF", + "\xE9\xA3" => "\xE7\xB9\x87", + "\xE9\xA4" => "\xE7\xB9\x9E", + "\xE9\xA5" => "\xE8\x80\x80", + "\xE9\xA6" => "\xE8\x85\xB0", + "\xE9\xA7" => "\xEF\xA7\x82", + "\xE9\xA8" => "\xE8\x9F\xAF", + "\xE9\xA9" => "\xE8\xA6\x81", + "\xE9\xAA" => "\xE8\xAC\xA0", + "\xE9\xAB" => "\xE9\x81\x99", + "\xE9\xAC" => "\xEF\xA7\x83", + "\xE9\xAD" => "\xE9\x82\x80", + "\xE9\xAE" => "\xE9\xA5\x92", + "\xE9\xAF" => "\xE6\x85\xBE", + "\xE9\xB0" => "\xE6\xAC\xB2", + "\xE9\xB1" => "\xE6\xB5\xB4", + "\xE9\xB2" => "\xE7\xB8\x9F", + "\xE9\xB3" => "\xE8\xA4\xA5", + "\xE9\xB4" => "\xE8\xBE\xB1", + "\xE9\xB5" => "\xE4\xBF\x91", + "\xE9\xB6" => "\xE5\x82\xAD", + "\xE9\xB7" => "\xE5\x86\x97", + "\xE9\xB8" => "\xE5\x8B\x87", + "\xE9\xB9" => "\xE5\x9F\x87", + "\xE9\xBA" => "\xE5\xA2\x89", + "\xE9\xBB" => "\xE5\xAE\xB9", + "\xE9\xBC" => "\xE5\xBA\xB8", + "\xE9\xBD" => "\xE6\x85\x82", + "\xE9\xBE" => "\xE6\xA6\x95", + "\xE9\xBF" => "\xE6\xB6\x8C", + "\xE9\xC0" => "\xE6\xB9\xA7", + "\xE9\xC1" => "\xE6\xBA\xB6", + "\xE9\xC2" => "\xE7\x86\x94", + "\xE9\xC3" => "\xE7\x91\xA2", + "\xE9\xC4" => "\xE7\x94\xA8", + "\xE9\xC5" => "\xE7\x94\xAC", + "\xE9\xC6" => "\xE8\x81\xB3", + "\xE9\xC7" => "\xE8\x8C\xB8", + "\xE9\xC8" => "\xE8\x93\x89", + "\xE9\xC9" => "\xE8\xB8\x8A", + "\xE9\xCA" => "\xE9\x8E\x94", + "\xE9\xCB" => "\xE9\x8F\x9E", + "\xE9\xCC" => "\xEF\xA7\x84", + "\xE9\xCD" => "\xE4\xBA\x8E", + "\xE9\xCE" => "\xE4\xBD\x91", + "\xE9\xCF" => "\xE5\x81\xB6", + "\xE9\xD0" => "\xE5\x84\xAA", + "\xE9\xD1" => "\xE5\x8F\x88", + "\xE9\xD2" => "\xE5\x8F\x8B", + "\xE9\xD3" => "\xE5\x8F\xB3", + "\xE9\xD4" => "\xE5\xAE\x87", + "\xE9\xD5" => "\xE5\xAF\x93", + "\xE9\xD6" => "\xE5\xB0\xA4", + "\xE9\xD7" => "\xE6\x84\x9A", + "\xE9\xD8" => "\xE6\x86\x82", + "\xE9\xD9" => "\xE6\x97\xB4", + "\xE9\xDA" => "\xE7\x89\x9B", + "\xE9\xDB" => "\xE7\x8E\x97", + "\xE9\xDC" => "\xE7\x91\x80", + "\xE9\xDD" => "\xE7\x9B\x82", + "\xE9\xDE" => "\xE7\xA5\x90", + "\xE9\xDF" => "\xE7\xA6\x91", + "\xE9\xE0" => "\xE7\xA6\xB9", + "\xE9\xE1" => "\xE7\xB4\x86", + "\xE9\xE2" => "\xE7\xBE\xBD", + "\xE9\xE3" => "\xE8\x8A\x8B", + "\xE9\xE4" => "\xE8\x97\x95", + "\xE9\xE5" => "\xE8\x99\x9E", + "\xE9\xE6" => "\xE8\xBF\x82", + "\xE9\xE7" => "\xE9\x81\x87", + "\xE9\xE8" => "\xE9\x83\xB5", + "\xE9\xE9" => "\xE9\x87\xAA", + "\xE9\xEA" => "\xE9\x9A\x85", + "\xE9\xEB" => "\xE9\x9B\xA8", + "\xE9\xEC" => "\xE9\x9B\xA9", + "\xE9\xED" => "\xE5\x8B\x96", + "\xE9\xEE" => "\xE5\xBD\xA7", + "\xE9\xEF" => "\xE6\x97\xAD", + "\xE9\xF0" => "\xE6\x98\xB1", + "\xE9\xF1" => "\xE6\xA0\xAF", + "\xE9\xF2" => "\xE7\x85\x9C", + "\xE9\xF3" => "\xE7\xA8\xB6", + "\xE9\xF4" => "\xE9\x83\x81", + "\xE9\xF5" => "\xE9\xA0\x8A", + "\xE9\xF6" => "\xE4\xBA\x91", + "\xE9\xF7" => "\xEF\xA7\x85", + "\xE9\xF8" => "\xE6\xA9\x92", + "\xE9\xF9" => "\xE6\xAE\x9E", + "\xE9\xFA" => "\xE6\xBE\x90", + "\xE9\xFB" => "\xE7\x86\x89", + "\xE9\xFC" => "\xE8\x80\x98", + "\xE9\xFD" => "\xE8\x8A\xB8", + "\xE9\xFE" => "\xE8\x95\x93", + "\xEA\xA1" => "\xE9\x81\x8B", + "\xEA\xA2" => "\xE9\x9A\x95", + "\xEA\xA3" => "\xE9\x9B\xB2", + "\xEA\xA4" => "\xE9\x9F\xBB", + "\xEA\xA5" => "\xE8\x94\x9A", + "\xEA\xA6" => "\xE9\xAC\xB1", + "\xEA\xA7" => "\xE4\xBA\x90", + "\xEA\xA8" => "\xE7\x86\x8A", + "\xEA\xA9" => "\xE9\x9B\x84", + "\xEA\xAA" => "\xE5\x85\x83", + "\xEA\xAB" => "\xE5\x8E\x9F", + "\xEA\xAC" => "\xE5\x93\xA1", + "\xEA\xAD" => "\xE5\x9C\x93", + "\xEA\xAE" => "\xE5\x9C\x92", + "\xEA\xAF" => "\xE5\x9E\xA3", + "\xEA\xB0" => "\xE5\xAA\x9B", + "\xEA\xB1" => "\xE5\xAB\x84", + "\xEA\xB2" => "\xE5\xAF\x83", + "\xEA\xB3" => "\xE6\x80\xA8", + "\xEA\xB4" => "\xE6\x84\xBF", + "\xEA\xB5" => "\xE6\x8F\xB4", + "\xEA\xB6" => "\xE6\xB2\x85", + "\xEA\xB7" => "\xE6\xB4\xB9", + "\xEA\xB8" => "\xE6\xB9\xB2", + "\xEA\xB9" => "\xE6\xBA\x90", + "\xEA\xBA" => "\xE7\x88\xB0", + "\xEA\xBB" => "\xE7\x8C\xBF", + "\xEA\xBC" => "\xE7\x91\x97", + "\xEA\xBD" => "\xE8\x8B\x91", + "\xEA\xBE" => "\xE8\xA2\x81", + "\xEA\xBF" => "\xE8\xBD\x85", + "\xEA\xC0" => "\xE9\x81\xA0", + "\xEA\xC1" => "\xEF\xA7\x86", + "\xEA\xC2" => "\xE9\x99\xA2", + "\xEA\xC3" => "\xE9\xA1\x98", + "\xEA\xC4" => "\xE9\xB4\x9B", + "\xEA\xC5" => "\xE6\x9C\x88", + "\xEA\xC6" => "\xE8\xB6\x8A", + "\xEA\xC7" => "\xE9\x89\x9E", + "\xEA\xC8" => "\xE4\xBD\x8D", + "\xEA\xC9" => "\xE5\x81\x89", + "\xEA\xCA" => "\xE5\x83\x9E", + "\xEA\xCB" => "\xE5\x8D\xB1", + "\xEA\xCC" => "\xE5\x9C\x8D", + "\xEA\xCD" => "\xE5\xA7\x94", + "\xEA\xCE" => "\xE5\xA8\x81", + "\xEA\xCF" => "\xE5\xB0\x89", + "\xEA\xD0" => "\xE6\x85\xB0", + "\xEA\xD1" => "\xE6\x9A\x90", + "\xEA\xD2" => "\xE6\xB8\xAD", + "\xEA\xD3" => "\xE7\x88\xB2", + "\xEA\xD4" => "\xE7\x91\x8B", + "\xEA\xD5" => "\xE7\xB7\xAF", + "\xEA\xD6" => "\xE8\x83\x83", + "\xEA\xD7" => "\xE8\x90\x8E", + "\xEA\xD8" => "\xE8\x91\xA6", + "\xEA\xD9" => "\xE8\x94\xBF", + "\xEA\xDA" => "\xE8\x9D\x9F", + "\xEA\xDB" => "\xE8\xA1\x9B", + "\xEA\xDC" => "\xE8\xA4\x98", + "\xEA\xDD" => "\xE8\xAC\x82", + "\xEA\xDE" => "\xE9\x81\x95", + "\xEA\xDF" => "\xE9\x9F\x8B", + "\xEA\xE0" => "\xE9\xAD\x8F", + "\xEA\xE1" => "\xE4\xB9\xB3", + "\xEA\xE2" => "\xE4\xBE\x91", + "\xEA\xE3" => "\xE5\x84\x92", + "\xEA\xE4" => "\xE5\x85\xAA", + "\xEA\xE5" => "\xEF\xA7\x87", + "\xEA\xE6" => "\xE5\x94\xAF", + "\xEA\xE7" => "\xE5\x96\xA9", + "\xEA\xE8" => "\xE5\xAD\xBA", + "\xEA\xE9" => "\xE5\xAE\xA5", + "\xEA\xEA" => "\xE5\xB9\xBC", + "\xEA\xEB" => "\xE5\xB9\xBD", + "\xEA\xEC" => "\xE5\xBA\xBE", + "\xEA\xED" => "\xE6\x82\xA0", + "\xEA\xEE" => "\xE6\x83\x9F", + "\xEA\xEF" => "\xE6\x84\x88", + "\xEA\xF0" => "\xE6\x84\x89", + "\xEA\xF1" => "\xE6\x8F\x84", + "\xEA\xF2" => "\xE6\x94\xB8", + "\xEA\xF3" => "\xE6\x9C\x89", + "\xEA\xF4" => "\xEF\xA7\x88", + "\xEA\xF5" => "\xE6\x9F\x94", + "\xEA\xF6" => "\xE6\x9F\x9A", + "\xEA\xF7" => "\xEF\xA7\x89", + "\xEA\xF8" => "\xE6\xA5\xA1", + "\xEA\xF9" => "\xE6\xA5\xA2", + "\xEA\xFA" => "\xE6\xB2\xB9", + "\xEA\xFB" => "\xE6\xB4\xA7", + "\xEA\xFC" => "\xEF\xA7\x8A", + "\xEA\xFD" => "\xE6\xB8\xB8", + "\xEA\xFE" => "\xEF\xA7\x8B", + "\xEB\xA1" => "\xE6\xBF\xA1", + "\xEB\xA2" => "\xE7\x8C\xB6", + "\xEB\xA3" => "\xE7\x8C\xB7", + "\xEB\xA4" => "\xEF\xA7\x8C", + "\xEB\xA5" => "\xE7\x91\x9C", + "\xEB\xA6" => "\xE7\x94\xB1", + "\xEB\xA7" => "\xEF\xA7\x8D", + "\xEB\xA8" => "\xE7\x99\x92", + "\xEB\xA9" => "\xEF\xA7\x8E", + "\xEB\xAA" => "\xEF\xA7\x8F", + "\xEB\xAB" => "\xE7\xB6\xAD", + "\xEB\xAC" => "\xE8\x87\xBE", + "\xEB\xAD" => "\xE8\x90\xB8", + "\xEB\xAE" => "\xE8\xA3\x95", + "\xEB\xAF" => "\xE8\xAA\x98", + "\xEB\xB0" => "\xE8\xAB\x9B", + "\xEB\xB1" => "\xE8\xAB\xAD", + "\xEB\xB2" => "\xE8\xB8\xB0", + "\xEB\xB3" => "\xE8\xB9\x82", + "\xEB\xB4" => "\xE9\x81\x8A", + "\xEB\xB5" => "\xE9\x80\xBE", + "\xEB\xB6" => "\xE9\x81\xBA", + "\xEB\xB7" => "\xE9\x85\x89", + "\xEB\xB8" => "\xE9\x87\x89", + "\xEB\xB9" => "\xE9\x8D\xAE", + "\xEB\xBA" => "\xEF\xA7\x90", + "\xEB\xBB" => "\xEF\xA7\x91", + "\xEB\xBC" => "\xE5\xA0\x89", + "\xEB\xBD" => "\xEF\xA7\x92", + "\xEB\xBE" => "\xE6\xAF\x93", + "\xEB\xBF" => "\xE8\x82\x89", + "\xEB\xC0" => "\xE8\x82\xB2", + "\xEB\xC1" => "\xEF\xA7\x93", + "\xEB\xC2" => "\xEF\xA7\x94", + "\xEB\xC3" => "\xE5\x85\x81", + "\xEB\xC4" => "\xE5\xA5\xAB", + "\xEB\xC5" => "\xE5\xB0\xB9", + "\xEB\xC6" => "\xEF\xA7\x95", + "\xEB\xC7" => "\xEF\xA7\x96", + "\xEB\xC8" => "\xE6\xBD\xA4", + "\xEB\xC9" => "\xE7\x8E\xA7", + "\xEB\xCA" => "\xE8\x83\xA4", + "\xEB\xCB" => "\xE8\xB4\x87", + "\xEB\xCC" => "\xEF\xA7\x97", + "\xEB\xCD" => "\xE9\x88\x97", + "\xEB\xCE" => "\xE9\x96\x8F", + "\xEB\xCF" => "\xEF\xA7\x98", + "\xEB\xD0" => "\xEF\xA7\x99", + "\xEB\xD1" => "\xEF\xA7\x9A", + "\xEB\xD2" => "\xEF\xA7\x9B", + "\xEB\xD3" => "\xE8\x81\xBF", + "\xEB\xD4" => "\xE6\x88\x8E", + "\xEB\xD5" => "\xE7\x80\x9C", + "\xEB\xD6" => "\xE7\xB5\xA8", + "\xEB\xD7" => "\xE8\x9E\x8D", + "\xEB\xD8" => "\xEF\xA7\x9C", + "\xEB\xD9" => "\xE5\x9E\xA0", + "\xEB\xDA" => "\xE6\x81\xA9", + "\xEB\xDB" => "\xE6\x85\x87", + "\xEB\xDC" => "\xE6\xAE\xB7", + "\xEB\xDD" => "\xE8\xAA\xBE", + "\xEB\xDE" => "\xE9\x8A\x80", + "\xEB\xDF" => "\xE9\x9A\xB1", + "\xEB\xE0" => "\xE4\xB9\x99", + "\xEB\xE1" => "\xE5\x90\x9F", + "\xEB\xE2" => "\xE6\xB7\xAB", + "\xEB\xE3" => "\xE8\x94\xAD", + "\xEB\xE4" => "\xE9\x99\xB0", + "\xEB\xE5" => "\xE9\x9F\xB3", + "\xEB\xE6" => "\xE9\xA3\xAE", + "\xEB\xE7" => "\xE6\x8F\x96", + "\xEB\xE8" => "\xE6\xB3\xA3", + "\xEB\xE9" => "\xE9\x82\x91", + "\xEB\xEA" => "\xE5\x87\x9D", + "\xEB\xEB" => "\xE6\x87\x89", + "\xEB\xEC" => "\xE8\x86\xBA", + "\xEB\xED" => "\xE9\xB7\xB9", + "\xEB\xEE" => "\xE4\xBE\x9D", + "\xEB\xEF" => "\xE5\x80\x9A", + "\xEB\xF0" => "\xE5\x84\x80", + "\xEB\xF1" => "\xE5\xAE\x9C", + "\xEB\xF2" => "\xE6\x84\x8F", + "\xEB\xF3" => "\xE6\x87\xBF", + "\xEB\xF4" => "\xE6\x93\xAC", + "\xEB\xF5" => "\xE6\xA4\x85", + "\xEB\xF6" => "\xE6\xAF\x85", + "\xEB\xF7" => "\xE7\x96\x91", + "\xEB\xF8" => "\xE7\x9F\xA3", + "\xEB\xF9" => "\xE7\xBE\xA9", + "\xEB\xFA" => "\xE8\x89\xA4", + "\xEB\xFB" => "\xE8\x96\x8F", + "\xEB\xFC" => "\xE8\x9F\xBB", + "\xEB\xFD" => "\xE8\xA1\xA3", + "\xEB\xFE" => "\xE8\xAA\xBC", + "\xEC\xA1" => "\xE8\xAD\xB0", + "\xEC\xA2" => "\xE9\x86\xAB", + "\xEC\xA3" => "\xE4\xBA\x8C", + "\xEC\xA4" => "\xE4\xBB\xA5", + "\xEC\xA5" => "\xE4\xBC\x8A", + "\xEC\xA6" => "\xEF\xA7\x9D", + "\xEC\xA7" => "\xEF\xA7\x9E", + "\xEC\xA8" => "\xE5\xA4\xB7", + "\xEC\xA9" => "\xE5\xA7\xA8", + "\xEC\xAA" => "\xEF\xA7\x9F", + "\xEC\xAB" => "\xE5\xB7\xB2", + "\xEC\xAC" => "\xE5\xBC\x9B", + "\xEC\xAD" => "\xE5\xBD\x9B", + "\xEC\xAE" => "\xE6\x80\xA1", + "\xEC\xAF" => "\xEF\xA7\xA0", + "\xEC\xB0" => "\xEF\xA7\xA1", + "\xEC\xB1" => "\xEF\xA7\xA2", + "\xEC\xB2" => "\xEF\xA7\xA3", + "\xEC\xB3" => "\xE7\x88\xBE", + "\xEC\xB4" => "\xE7\x8F\xA5", + "\xEC\xB5" => "\xEF\xA7\xA4", + "\xEC\xB6" => "\xE7\x95\xB0", + "\xEC\xB7" => "\xE7\x97\x8D", + "\xEC\xB8" => "\xEF\xA7\xA5", + "\xEC\xB9" => "\xE7\xA7\xBB", + "\xEC\xBA" => "\xEF\xA7\xA6", + "\xEC\xBB" => "\xE8\x80\x8C", + "\xEC\xBC" => "\xE8\x80\xB3", + "\xEC\xBD" => "\xE8\x82\x84", + "\xEC\xBE" => "\xE8\x8B\xA1", + "\xEC\xBF" => "\xE8\x8D\x91", + "\xEC\xC0" => "\xEF\xA7\xA7", + "\xEC\xC1" => "\xEF\xA7\xA8", + "\xEC\xC2" => "\xE8\xB2\xBD", + "\xEC\xC3" => "\xE8\xB2\xB3", + "\xEC\xC4" => "\xE9\x82\x87", + "\xEC\xC5" => "\xEF\xA7\xA9", + "\xEC\xC6" => "\xEF\xA7\xAA", + "\xEC\xC7" => "\xE9\xA3\xB4", + "\xEC\xC8" => "\xE9\xA4\x8C", + "\xEC\xC9" => "\xEF\xA7\xAB", + "\xEC\xCA" => "\xEF\xA7\xAC", + "\xEC\xCB" => "\xE7\x80\xB7", + "\xEC\xCC" => "\xE7\x9B\x8A", + "\xEC\xCD" => "\xE7\xBF\x8A", + "\xEC\xCE" => "\xE7\xBF\x8C", + "\xEC\xCF" => "\xE7\xBF\xBC", + "\xEC\xD0" => "\xE8\xAC\x9A", + "\xEC\xD1" => "\xE4\xBA\xBA", + "\xEC\xD2" => "\xE4\xBB\x81", + "\xEC\xD3" => "\xE5\x88\x83", + "\xEC\xD4" => "\xE5\x8D\xB0", + "\xEC\xD5" => "\xEF\xA7\xAD", + "\xEC\xD6" => "\xE5\x92\xBD", + "\xEC\xD7" => "\xE5\x9B\xA0", + "\xEC\xD8" => "\xE5\xA7\xBB", + "\xEC\xD9" => "\xE5\xAF\x85", + "\xEC\xDA" => "\xE5\xBC\x95", + "\xEC\xDB" => "\xE5\xBF\x8D", + "\xEC\xDC" => "\xE6\xB9\xAE", + "\xEC\xDD" => "\xEF\xA7\xAE", + "\xEC\xDE" => "\xEF\xA7\xAF", + "\xEC\xDF" => "\xE7\xB5\xAA", + "\xEC\xE0" => "\xE8\x8C\xB5", + "\xEC\xE1" => "\xEF\xA7\xB0", + "\xEC\xE2" => "\xE8\x9A\x93", + "\xEC\xE3" => "\xE8\xAA\x8D", + "\xEC\xE4" => "\xEF\xA7\xB1", + "\xEC\xE5" => "\xE9\x9D\xAD", + "\xEC\xE6" => "\xE9\x9D\xB7", + "\xEC\xE7" => "\xEF\xA7\xB2", + "\xEC\xE8" => "\xEF\xA7\xB3", + "\xEC\xE9" => "\xE4\xB8\x80", + "\xEC\xEA" => "\xE4\xBD\x9A", + "\xEC\xEB" => "\xE4\xBD\xBE", + "\xEC\xEC" => "\xE5\xA3\xB9", + "\xEC\xED" => "\xE6\x97\xA5", + "\xEC\xEE" => "\xE6\xBA\xA2", + "\xEC\xEF" => "\xE9\x80\xB8", + "\xEC\xF0" => "\xE9\x8E\xB0", + "\xEC\xF1" => "\xE9\xA6\xB9", + "\xEC\xF2" => "\xE4\xBB\xBB", + "\xEC\xF3" => "\xE5\xA3\xAC", + "\xEC\xF4" => "\xE5\xA6\x8A", + "\xEC\xF5" => "\xE5\xA7\x99", + "\xEC\xF6" => "\xE6\x81\x81", + "\xEC\xF7" => "\xEF\xA7\xB4", + "\xEC\xF8" => "\xEF\xA7\xB5", + "\xEC\xF9" => "\xE7\xA8\x94", + "\xEC\xFA" => "\xEF\xA7\xB6", + "\xEC\xFB" => "\xE8\x8D\x8F", + "\xEC\xFC" => "\xE8\xB3\x83", + "\xEC\xFD" => "\xE5\x85\xA5", + "\xEC\xFE" => "\xE5\x8D\x84", + "\xED\xA1" => "\xEF\xA7\xB7", + "\xED\xA2" => "\xEF\xA7\xB8", + "\xED\xA3" => "\xEF\xA7\xB9", + "\xED\xA4" => "\xE4\xBB\x8D", + "\xED\xA5" => "\xE5\x89\xA9", + "\xED\xA6" => "\xE5\xAD\x95", + "\xED\xA7" => "\xE8\x8A\xBF", + "\xED\xA8" => "\xE4\xBB\x94", + "\xED\xA9" => "\xE5\x88\xBA", + "\xED\xAA" => "\xE5\x92\xA8", + "\xED\xAB" => "\xE5\xA7\x89", + "\xED\xAC" => "\xE5\xA7\xBF", + "\xED\xAD" => "\xE5\xAD\x90", + "\xED\xAE" => "\xE5\xAD\x97", + "\xED\xAF" => "\xE5\xAD\x9C", + "\xED\xB0" => "\xE6\x81\xA3", + "\xED\xB1" => "\xE6\x85\x88", + "\xED\xB2" => "\xE6\xBB\x8B", + "\xED\xB3" => "\xE7\x82\x99", + "\xED\xB4" => "\xE7\x85\xAE", + "\xED\xB5" => "\xE7\x8E\x86", + "\xED\xB6" => "\xE7\x93\xB7", + "\xED\xB7" => "\xE7\x96\xB5", + "\xED\xB8" => "\xE7\xA3\x81", + "\xED\xB9" => "\xE7\xB4\xAB", + "\xED\xBA" => "\xE8\x80\x85", + "\xED\xBB" => "\xE8\x87\xAA", + "\xED\xBC" => "\xE8\x8C\xA8", + "\xED\xBD" => "\xE8\x94\x97", + "\xED\xBE" => "\xE8\x97\x89", + "\xED\xBF" => "\xE8\xAB\xAE", + "\xED\xC0" => "\xE8\xB3\x87", + "\xED\xC1" => "\xE9\x9B\x8C", + "\xED\xC2" => "\xE4\xBD\x9C", + "\xED\xC3" => "\xE5\x8B\xBA", + "\xED\xC4" => "\xE5\x9A\xBC", + "\xED\xC5" => "\xE6\x96\xAB", + "\xED\xC6" => "\xE6\x98\xA8", + "\xED\xC7" => "\xE7\x81\xBC", + "\xED\xC8" => "\xE7\x82\xB8", + "\xED\xC9" => "\xE7\x88\xB5", + "\xED\xCA" => "\xE7\xB6\xBD", + "\xED\xCB" => "\xE8\x8A\x8D", + "\xED\xCC" => "\xE9\x85\x8C", + "\xED\xCD" => "\xE9\x9B\x80", + "\xED\xCE" => "\xE9\xB5\xB2", + "\xED\xCF" => "\xE5\xAD\xB1", + "\xED\xD0" => "\xE6\xA3\xA7", + "\xED\xD1" => "\xE6\xAE\x98", + "\xED\xD2" => "\xE6\xBD\xBA", + "\xED\xD3" => "\xE7\x9B\x9E", + "\xED\xD4" => "\xE5\xB2\x91", + "\xED\xD5" => "\xE6\x9A\xAB", + "\xED\xD6" => "\xE6\xBD\x9B", + "\xED\xD7" => "\xE7\xAE\xB4", + "\xED\xD8" => "\xE7\xB0\xAA", + "\xED\xD9" => "\xE8\xA0\xB6", + "\xED\xDA" => "\xE9\x9B\x9C", + "\xED\xDB" => "\xE4\xB8\x88", + "\xED\xDC" => "\xE4\xBB\x97", + "\xED\xDD" => "\xE5\x8C\xA0", + "\xED\xDE" => "\xE5\xA0\xB4", + "\xED\xDF" => "\xE5\xA2\xBB", + "\xED\xE0" => "\xE5\xA3\xAF", + "\xED\xE1" => "\xE5\xA5\xAC", + "\xED\xE2" => "\xE5\xB0\x87", + "\xED\xE3" => "\xE5\xB8\xB3", + "\xED\xE4" => "\xE5\xBA\x84", + "\xED\xE5" => "\xE5\xBC\xB5", + "\xED\xE6" => "\xE6\x8E\x8C", + "\xED\xE7" => "\xE6\x9A\xB2", + "\xED\xE8" => "\xE6\x9D\x96", + "\xED\xE9" => "\xE6\xA8\x9F", + "\xED\xEA" => "\xE6\xAA\xA3", + "\xED\xEB" => "\xE6\xAC\x8C", + "\xED\xEC" => "\xE6\xBC\xBF", + "\xED\xED" => "\xE7\x89\x86", + "\xED\xEE" => "\xEF\xA7\xBA", + "\xED\xEF" => "\xE7\x8D\x90", + "\xED\xF0" => "\xE7\x92\x8B", + "\xED\xF1" => "\xE7\xAB\xA0", + "\xED\xF2" => "\xE7\xB2\xA7", + "\xED\xF3" => "\xE8\x85\xB8", + "\xED\xF4" => "\xE8\x87\x9F", + "\xED\xF5" => "\xE8\x87\xA7", + "\xED\xF6" => "\xE8\x8E\x8A", + "\xED\xF7" => "\xE8\x91\xAC", + "\xED\xF8" => "\xE8\x94\xA3", + "\xED\xF9" => "\xE8\x96\x94", + "\xED\xFA" => "\xE8\x97\x8F", + "\xED\xFB" => "\xE8\xA3\x9D", + "\xED\xFC" => "\xE8\xB4\x93", + "\xED\xFD" => "\xE9\x86\xAC", + "\xED\xFE" => "\xE9\x95\xB7", + "\xEE\xA1" => "\xE9\x9A\x9C", + "\xEE\xA2" => "\xE5\x86\x8D", + "\xEE\xA3" => "\xE5\x93\x89", + "\xEE\xA4" => "\xE5\x9C\xA8", + "\xEE\xA5" => "\xE5\xAE\xB0", + "\xEE\xA6" => "\xE6\x89\x8D", + "\xEE\xA7" => "\xE6\x9D\x90", + "\xEE\xA8" => "\xE6\xA0\xBD", + "\xEE\xA9" => "\xE6\xA2\x93", + "\xEE\xAA" => "\xE6\xB8\xBD", + "\xEE\xAB" => "\xE6\xBB\x93", + "\xEE\xAC" => "\xE7\x81\xBD", + "\xEE\xAD" => "\xE7\xB8\xA1", + "\xEE\xAE" => "\xE8\xA3\x81", + "\xEE\xAF" => "\xE8\xB2\xA1", + "\xEE\xB0" => "\xE8\xBC\x89", + "\xEE\xB1" => "\xE9\xBD\x8B", + "\xEE\xB2" => "\xE9\xBD\x8E", + "\xEE\xB3" => "\xE7\x88\xAD", + "\xEE\xB4" => "\xE7\xAE\x8F", + "\xEE\xB5" => "\xE8\xAB\x8D", + "\xEE\xB6" => "\xE9\x8C\x9A", + "\xEE\xB7" => "\xE4\xBD\x87", + "\xEE\xB8" => "\xE4\xBD\x8E", + "\xEE\xB9" => "\xE5\x84\xB2", + "\xEE\xBA" => "\xE5\x92\x80", + "\xEE\xBB" => "\xE5\xA7\x90", + "\xEE\xBC" => "\xE5\xBA\x95", + "\xEE\xBD" => "\xE6\x8A\xB5", + "\xEE\xBE" => "\xE6\x9D\xB5", + "\xEE\xBF" => "\xE6\xA5\xAE", + "\xEE\xC0" => "\xE6\xA8\x97", + "\xEE\xC1" => "\xE6\xB2\xAE", + "\xEE\xC2" => "\xE6\xB8\x9A", + "\xEE\xC3" => "\xE7\x8B\x99", + "\xEE\xC4" => "\xE7\x8C\xAA", + "\xEE\xC5" => "\xE7\x96\xBD", + "\xEE\xC6" => "\xE7\xAE\xB8", + "\xEE\xC7" => "\xE7\xB4\xB5", + "\xEE\xC8" => "\xE8\x8B\xA7", + "\xEE\xC9" => "\xE8\x8F\xB9", + "\xEE\xCA" => "\xE8\x91\x97", + "\xEE\xCB" => "\xE8\x97\xB7", + "\xEE\xCC" => "\xE8\xA9\x9B", + "\xEE\xCD" => "\xE8\xB2\xAF", + "\xEE\xCE" => "\xE8\xBA\x87", + "\xEE\xCF" => "\xE9\x80\x99", + "\xEE\xD0" => "\xE9\x82\xB8", + "\xEE\xD1" => "\xE9\x9B\x8E", + "\xEE\xD2" => "\xE9\xBD\x9F", + "\xEE\xD3" => "\xE5\x8B\xA3", + "\xEE\xD4" => "\xE5\x90\x8A", + "\xEE\xD5" => "\xE5\xAB\xA1", + "\xEE\xD6" => "\xE5\xAF\x82", + "\xEE\xD7" => "\xE6\x91\x98", + "\xEE\xD8" => "\xE6\x95\xB5", + "\xEE\xD9" => "\xE6\xBB\xB4", + "\xEE\xDA" => "\xE7\x8B\x84", + "\xEE\xDB" => "\xEF\xA7\xBB", + "\xEE\xDC" => "\xE7\x9A\x84", + "\xEE\xDD" => "\xE7\xA9\x8D", + "\xEE\xDE" => "\xE7\xAC\x9B", + "\xEE\xDF" => "\xE7\xB1\x8D", + "\xEE\xE0" => "\xE7\xB8\xBE", + "\xEE\xE1" => "\xE7\xBF\x9F", + "\xEE\xE2" => "\xE8\x8D\xBB", + "\xEE\xE3" => "\xE8\xAC\xAB", + "\xEE\xE4" => "\xE8\xB3\x8A", + "\xEE\xE5" => "\xE8\xB5\xA4", + "\xEE\xE6" => "\xE8\xB7\xA1", + "\xEE\xE7" => "\xE8\xB9\x9F", + "\xEE\xE8" => "\xE8\xBF\xAA", + "\xEE\xE9" => "\xE8\xBF\xB9", + "\xEE\xEA" => "\xE9\x81\xA9", + "\xEE\xEB" => "\xE9\x8F\x91", + "\xEE\xEC" => "\xE4\xBD\x83", + "\xEE\xED" => "\xE4\xBD\xBA", + "\xEE\xEE" => "\xE5\x82\xB3", + "\xEE\xEF" => "\xE5\x85\xA8", + "\xEE\xF0" => "\xE5\x85\xB8", + "\xEE\xF1" => "\xE5\x89\x8D", + "\xEE\xF2" => "\xE5\x89\xAA", + "\xEE\xF3" => "\xE5\xA1\xA1", + "\xEE\xF4" => "\xE5\xA1\xBC", + "\xEE\xF5" => "\xE5\xA5\xA0", + "\xEE\xF6" => "\xE5\xB0\x88", + "\xEE\xF7" => "\xE5\xB1\x95", + "\xEE\xF8" => "\xE5\xBB\x9B", + "\xEE\xF9" => "\xE6\x82\x9B", + "\xEE\xFA" => "\xE6\x88\xB0", + "\xEE\xFB" => "\xE6\xA0\x93", + "\xEE\xFC" => "\xE6\xAE\xBF", + "\xEE\xFD" => "\xE6\xB0\x88", + "\xEE\xFE" => "\xE6\xBE\xB1", + "\xEF\xA1" => "\xE7\x85\x8E", + "\xEF\xA2" => "\xE7\x90\xA0", + "\xEF\xA3" => "\xE7\x94\xB0", + "\xEF\xA4" => "\xE7\x94\xB8", + "\xEF\xA5" => "\xE7\x95\x91", + "\xEF\xA6" => "\xE7\x99\xB2", + "\xEF\xA7" => "\xE7\xAD\x8C", + "\xEF\xA8" => "\xE7\xAE\x8B", + "\xEF\xA9" => "\xE7\xAE\xAD", + "\xEF\xAA" => "\xE7\xAF\x86", + "\xEF\xAB" => "\xE7\xBA\x8F", + "\xEF\xAC" => "\xE8\xA9\xAE", + "\xEF\xAD" => "\xE8\xBC\xBE", + "\xEF\xAE" => "\xE8\xBD\x89", + "\xEF\xAF" => "\xE9\x88\xBF", + "\xEF\xB0" => "\xE9\x8A\x93", + "\xEF\xB1" => "\xE9\x8C\xA2", + "\xEF\xB2" => "\xE9\x90\xAB", + "\xEF\xB3" => "\xE9\x9B\xBB", + "\xEF\xB4" => "\xE9\xA1\x9A", + "\xEF\xB5" => "\xE9\xA1\xAB", + "\xEF\xB6" => "\xE9\xA4\x9E", + "\xEF\xB7" => "\xE5\x88\x87", + "\xEF\xB8" => "\xE6\x88\xAA", + "\xEF\xB9" => "\xE6\x8A\x98", + "\xEF\xBA" => "\xE6\xB5\x99", + "\xEF\xBB" => "\xE7\x99\xA4", + "\xEF\xBC" => "\xE7\xAB\x8A", + "\xEF\xBD" => "\xE7\xAF\x80", + "\xEF\xBE" => "\xE7\xB5\xB6", + "\xEF\xBF" => "\xE5\x8D\xA0", + "\xEF\xC0" => "\xE5\xB2\xBE", + "\xEF\xC1" => "\xE5\xBA\x97", + "\xEF\xC2" => "\xE6\xBC\xB8", + "\xEF\xC3" => "\xE7\x82\xB9", + "\xEF\xC4" => "\xE7\xB2\x98", + "\xEF\xC5" => "\xE9\x9C\x91", + "\xEF\xC6" => "\xE9\xAE\x8E", + "\xEF\xC7" => "\xE9\xBB\x9E", + "\xEF\xC8" => "\xE6\x8E\xA5", + "\xEF\xC9" => "\xE6\x91\xBA", + "\xEF\xCA" => "\xE8\x9D\xB6", + "\xEF\xCB" => "\xE4\xB8\x81", + "\xEF\xCC" => "\xE4\xBA\x95", + "\xEF\xCD" => "\xE4\xBA\xAD", + "\xEF\xCE" => "\xE5\x81\x9C", + "\xEF\xCF" => "\xE5\x81\xB5", + "\xEF\xD0" => "\xE5\x91\x88", + "\xEF\xD1" => "\xE5\xA7\x83", + "\xEF\xD2" => "\xE5\xAE\x9A", + "\xEF\xD3" => "\xE5\xB9\x80", + "\xEF\xD4" => "\xE5\xBA\xAD", + "\xEF\xD5" => "\xE5\xBB\xB7", + "\xEF\xD6" => "\xE5\xBE\x81", + "\xEF\xD7" => "\xE6\x83\x85", + "\xEF\xD8" => "\xE6\x8C\xBA", + "\xEF\xD9" => "\xE6\x94\xBF", + "\xEF\xDA" => "\xE6\x95\xB4", + "\xEF\xDB" => "\xE6\x97\x8C", + "\xEF\xDC" => "\xE6\x99\xB6", + "\xEF\xDD" => "\xE6\x99\xB8", + "\xEF\xDE" => "\xE6\x9F\xBE", + "\xEF\xDF" => "\xE6\xA5\xA8", + "\xEF\xE0" => "\xE6\xAA\x89", + "\xEF\xE1" => "\xE6\xAD\xA3", + "\xEF\xE2" => "\xE6\xB1\x80", + "\xEF\xE3" => "\xE6\xB7\x80", + "\xEF\xE4" => "\xE6\xB7\xA8", + "\xEF\xE5" => "\xE6\xB8\x9F", + "\xEF\xE6" => "\xE6\xB9\x9E", + "\xEF\xE7" => "\xE7\x80\x9E", + "\xEF\xE8" => "\xE7\x82\xA1", + "\xEF\xE9" => "\xE7\x8E\x8E", + "\xEF\xEA" => "\xE7\x8F\xBD", + "\xEF\xEB" => "\xE7\x94\xBA", + "\xEF\xEC" => "\xE7\x9D\x9B", + "\xEF\xED" => "\xE7\xA2\x87", + "\xEF\xEE" => "\xE7\xA6\x8E", + "\xEF\xEF" => "\xE7\xA8\x8B", + "\xEF\xF0" => "\xE7\xA9\xBD", + "\xEF\xF1" => "\xE7\xB2\xBE", + "\xEF\xF2" => "\xE7\xB6\x8E", + "\xEF\xF3" => "\xE8\x89\x87", + "\xEF\xF4" => "\xE8\xA8\x82", + "\xEF\xF5" => "\xE8\xAB\xAA", + "\xEF\xF6" => "\xE8\xB2\x9E", + "\xEF\xF7" => "\xE9\x84\xAD", + "\xEF\xF8" => "\xE9\x85\x8A", + "\xEF\xF9" => "\xE9\x87\x98", + "\xEF\xFA" => "\xE9\x89\xA6", + "\xEF\xFB" => "\xE9\x8B\x8C", + "\xEF\xFC" => "\xE9\x8C\xA0", + "\xEF\xFD" => "\xE9\x9C\x86", + "\xEF\xFE" => "\xE9\x9D\x96", + "\xF0\xA1" => "\xE9\x9D\x9C", + "\xF0\xA2" => "\xE9\xA0\x82", + "\xF0\xA3" => "\xE9\xBC\x8E", + "\xF0\xA4" => "\xE5\x88\xB6", + "\xF0\xA5" => "\xE5\x8A\x91", + "\xF0\xA6" => "\xE5\x95\xBC", + "\xF0\xA7" => "\xE5\xA0\xA4", + "\xF0\xA8" => "\xE5\xB8\x9D", + "\xF0\xA9" => "\xE5\xBC\x9F", + "\xF0\xAA" => "\xE6\x82\x8C", + "\xF0\xAB" => "\xE6\x8F\x90", + "\xF0\xAC" => "\xE6\xA2\xAF", + "\xF0\xAD" => "\xE6\xBF\x9F", + "\xF0\xAE" => "\xE7\xA5\xAD", + "\xF0\xAF" => "\xE7\xAC\xAC", + "\xF0\xB0" => "\xE8\x87\x8D", + "\xF0\xB1" => "\xE8\x96\xBA", + "\xF0\xB2" => "\xE8\xA3\xBD", + "\xF0\xB3" => "\xE8\xAB\xB8", + "\xF0\xB4" => "\xE8\xB9\x84", + "\xF0\xB5" => "\xE9\x86\x8D", + "\xF0\xB6" => "\xE9\x99\xA4", + "\xF0\xB7" => "\xE9\x9A\x9B", + "\xF0\xB8" => "\xE9\x9C\xBD", + "\xF0\xB9" => "\xE9\xA1\x8C", + "\xF0\xBA" => "\xE9\xBD\x8A", + "\xF0\xBB" => "\xE4\xBF\x8E", + "\xF0\xBC" => "\xE5\x85\x86", + "\xF0\xBD" => "\xE5\x87\x8B", + "\xF0\xBE" => "\xE5\x8A\xA9", + "\xF0\xBF" => "\xE5\x98\xB2", + "\xF0\xC0" => "\xE5\xBC\x94", + "\xF0\xC1" => "\xE5\xBD\xAB", + "\xF0\xC2" => "\xE6\x8E\xAA", + "\xF0\xC3" => "\xE6\x93\x8D", + "\xF0\xC4" => "\xE6\x97\xA9", + "\xF0\xC5" => "\xE6\x99\x81", + "\xF0\xC6" => "\xE6\x9B\xBA", + "\xF0\xC7" => "\xE6\x9B\xB9", + "\xF0\xC8" => "\xE6\x9C\x9D", + "\xF0\xC9" => "\xE6\xA2\x9D", + "\xF0\xCA" => "\xE6\xA3\x97", + "\xF0\xCB" => "\xE6\xA7\xBD", + "\xF0\xCC" => "\xE6\xBC\x95", + "\xF0\xCD" => "\xE6\xBD\xAE", + "\xF0\xCE" => "\xE7\x85\xA7", + "\xF0\xCF" => "\xE7\x87\xA5", + "\xF0\xD0" => "\xE7\x88\xAA", + "\xF0\xD1" => "\xE7\x92\xAA", + "\xF0\xD2" => "\xE7\x9C\xBA", + "\xF0\xD3" => "\xE7\xA5\x96", + "\xF0\xD4" => "\xE7\xA5\x9A", + "\xF0\xD5" => "\xE7\xA7\x9F", + "\xF0\xD6" => "\xE7\xA8\xA0", + "\xF0\xD7" => "\xE7\xAA\x95", + "\xF0\xD8" => "\xE7\xB2\x97", + "\xF0\xD9" => "\xE7\xB3\x9F", + "\xF0\xDA" => "\xE7\xB5\x84", + "\xF0\xDB" => "\xE7\xB9\xB0", + "\xF0\xDC" => "\xE8\x82\x87", + "\xF0\xDD" => "\xE8\x97\xBB", + "\xF0\xDE" => "\xE8\x9A\xA4", + "\xF0\xDF" => "\xE8\xA9\x94", + "\xF0\xE0" => "\xE8\xAA\xBF", + "\xF0\xE1" => "\xE8\xB6\x99", + "\xF0\xE2" => "\xE8\xBA\x81", + "\xF0\xE3" => "\xE9\x80\xA0", + "\xF0\xE4" => "\xE9\x81\xAD", + "\xF0\xE5" => "\xE9\x87\xA3", + "\xF0\xE6" => "\xE9\x98\xBB", + "\xF0\xE7" => "\xE9\x9B\x95", + "\xF0\xE8" => "\xE9\xB3\xA5", + "\xF0\xE9" => "\xE6\x97\x8F", + "\xF0\xEA" => "\xE7\xB0\x87", + "\xF0\xEB" => "\xE8\xB6\xB3", + "\xF0\xEC" => "\xE9\x8F\x83", + "\xF0\xED" => "\xE5\xAD\x98", + "\xF0\xEE" => "\xE5\xB0\x8A", + "\xF0\xEF" => "\xE5\x8D\x92", + "\xF0\xF0" => "\xE6\x8B\x99", + "\xF0\xF1" => "\xE7\x8C\x9D", + "\xF0\xF2" => "\xE5\x80\xA7", + "\xF0\xF3" => "\xE5\xAE\x97", + "\xF0\xF4" => "\xE5\xBE\x9E", + "\xF0\xF5" => "\xE6\x82\xB0", + "\xF0\xF6" => "\xE6\x85\xAB", + "\xF0\xF7" => "\xE6\xA3\x95", + "\xF0\xF8" => "\xE6\xB7\x99", + "\xF0\xF9" => "\xE7\x90\xAE", + "\xF0\xFA" => "\xE7\xA8\xAE", + "\xF0\xFB" => "\xE7\xB5\x82", + "\xF0\xFC" => "\xE7\xB6\x9C", + "\xF0\xFD" => "\xE7\xB8\xB1", + "\xF0\xFE" => "\xE8\x85\xAB", + "\xF1\xA1" => "\xE8\xB8\xAA", + "\xF1\xA2" => "\xE8\xB8\xB5", + "\xF1\xA3" => "\xE9\x8D\xBE", + "\xF1\xA4" => "\xE9\x90\x98", + "\xF1\xA5" => "\xE4\xBD\x90", + "\xF1\xA6" => "\xE5\x9D\x90", + "\xF1\xA7" => "\xE5\xB7\xA6", + "\xF1\xA8" => "\xE5\xBA\xA7", + "\xF1\xA9" => "\xE6\x8C\xAB", + "\xF1\xAA" => "\xE7\xBD\xAA", + "\xF1\xAB" => "\xE4\xB8\xBB", + "\xF1\xAC" => "\xE4\xBD\x8F", + "\xF1\xAD" => "\xE4\xBE\x8F", + "\xF1\xAE" => "\xE5\x81\x9A", + "\xF1\xAF" => "\xE5\xA7\x9D", + "\xF1\xB0" => "\xE8\x83\x84", + "\xF1\xB1" => "\xE5\x91\xAA", + "\xF1\xB2" => "\xE5\x91\xA8", + "\xF1\xB3" => "\xE5\x97\xBE", + "\xF1\xB4" => "\xE5\xA5\x8F", + "\xF1\xB5" => "\xE5\xAE\x99", + "\xF1\xB6" => "\xE5\xB7\x9E", + "\xF1\xB7" => "\xE5\xBB\x9A", + "\xF1\xB8" => "\xE6\x99\x9D", + "\xF1\xB9" => "\xE6\x9C\xB1", + "\xF1\xBA" => "\xE6\x9F\xB1", + "\xF1\xBB" => "\xE6\xA0\xAA", + "\xF1\xBC" => "\xE6\xB3\xA8", + "\xF1\xBD" => "\xE6\xB4\xB2", + "\xF1\xBE" => "\xE6\xB9\x8A", + "\xF1\xBF" => "\xE6\xBE\x8D", + "\xF1\xC0" => "\xE7\x82\xB7", + "\xF1\xC1" => "\xE7\x8F\xA0", + "\xF1\xC2" => "\xE7\x96\x87", + "\xF1\xC3" => "\xE7\xB1\x8C", + "\xF1\xC4" => "\xE7\xB4\x82", + "\xF1\xC5" => "\xE7\xB4\xAC", + "\xF1\xC6" => "\xE7\xB6\xA2", + "\xF1\xC7" => "\xE8\x88\x9F", + "\xF1\xC8" => "\xE8\x9B\x9B", + "\xF1\xC9" => "\xE8\xA8\xBB", + "\xF1\xCA" => "\xE8\xAA\x85", + "\xF1\xCB" => "\xE8\xB5\xB0", + "\xF1\xCC" => "\xE8\xBA\x8A", + "\xF1\xCD" => "\xE8\xBC\xB3", + "\xF1\xCE" => "\xE9\x80\xB1", + "\xF1\xCF" => "\xE9\x85\x8E", + "\xF1\xD0" => "\xE9\x85\x92", + "\xF1\xD1" => "\xE9\x91\x84", + "\xF1\xD2" => "\xE9\xA7\x90", + "\xF1\xD3" => "\xE7\xAB\xB9", + "\xF1\xD4" => "\xE7\xB2\xA5", + "\xF1\xD5" => "\xE4\xBF\x8A", + "\xF1\xD6" => "\xE5\x84\x81", + "\xF1\xD7" => "\xE5\x87\x86", + "\xF1\xD8" => "\xE5\x9F\x88", + "\xF1\xD9" => "\xE5\xAF\xAF", + "\xF1\xDA" => "\xE5\xB3\xBB", + "\xF1\xDB" => "\xE6\x99\x99", + "\xF1\xDC" => "\xE6\xA8\xBD", + "\xF1\xDD" => "\xE6\xB5\x9A", + "\xF1\xDE" => "\xE6\xBA\x96", + "\xF1\xDF" => "\xE6\xBF\xAC", + "\xF1\xE0" => "\xE7\x84\x8C", + "\xF1\xE1" => "\xE7\x95\xAF", + "\xF1\xE2" => "\xE7\xAB\xA3", + "\xF1\xE3" => "\xE8\xA0\xA2", + "\xF1\xE4" => "\xE9\x80\xA1", + "\xF1\xE5" => "\xE9\x81\xB5", + "\xF1\xE6" => "\xE9\x9B\x8B", + "\xF1\xE7" => "\xE9\xA7\xBF", + "\xF1\xE8" => "\xE8\x8C\x81", + "\xF1\xE9" => "\xE4\xB8\xAD", + "\xF1\xEA" => "\xE4\xBB\xB2", + "\xF1\xEB" => "\xE8\xA1\x86", + "\xF1\xEC" => "\xE9\x87\x8D", + "\xF1\xED" => "\xE5\x8D\xBD", + "\xF1\xEE" => "\xE6\xAB\x9B", + "\xF1\xEF" => "\xE6\xA5\xAB", + "\xF1\xF0" => "\xE6\xB1\x81", + "\xF1\xF1" => "\xE8\x91\xBA", + "\xF1\xF2" => "\xE5\xA2\x9E", + "\xF1\xF3" => "\xE6\x86\x8E", + "\xF1\xF4" => "\xE6\x9B\xBE", + "\xF1\xF5" => "\xE6\x8B\xAF", + "\xF1\xF6" => "\xE7\x83\x9D", + "\xF1\xF7" => "\xE7\x94\x91", + "\xF1\xF8" => "\xE7\x97\x87", + "\xF1\xF9" => "\xE7\xB9\x92", + "\xF1\xFA" => "\xE8\x92\xB8", + "\xF1\xFB" => "\xE8\xAD\x89", + "\xF1\xFC" => "\xE8\xB4\x88", + "\xF1\xFD" => "\xE4\xB9\x8B", + "\xF1\xFE" => "\xE5\x8F\xAA", + "\xF2\xA1" => "\xE5\x92\xAB", + "\xF2\xA2" => "\xE5\x9C\xB0", + "\xF2\xA3" => "\xE5\x9D\x80", + "\xF2\xA4" => "\xE5\xBF\x97", + "\xF2\xA5" => "\xE6\x8C\x81", + "\xF2\xA6" => "\xE6\x8C\x87", + "\xF2\xA7" => "\xE6\x91\xAF", + "\xF2\xA8" => "\xE6\x94\xAF", + "\xF2\xA9" => "\xE6\x97\xA8", + "\xF2\xAA" => "\xE6\x99\xBA", + "\xF2\xAB" => "\xE6\x9E\x9D", + "\xF2\xAC" => "\xE6\x9E\xB3", + "\xF2\xAD" => "\xE6\xAD\xA2", + "\xF2\xAE" => "\xE6\xB1\xA0", + "\xF2\xAF" => "\xE6\xB2\x9A", + "\xF2\xB0" => "\xE6\xBC\xAC", + "\xF2\xB1" => "\xE7\x9F\xA5", + "\xF2\xB2" => "\xE7\xA0\xA5", + "\xF2\xB3" => "\xE7\xA5\x89", + "\xF2\xB4" => "\xE7\xA5\x97", + "\xF2\xB5" => "\xE7\xB4\x99", + "\xF2\xB6" => "\xE8\x82\xA2", + "\xF2\xB7" => "\xE8\x84\x82", + "\xF2\xB8" => "\xE8\x87\xB3", + "\xF2\xB9" => "\xE8\x8A\x9D", + "\xF2\xBA" => "\xE8\x8A\xB7", + "\xF2\xBB" => "\xE8\x9C\x98", + "\xF2\xBC" => "\xE8\xAA\x8C", + "\xF2\xBD" => "\xEF\xA7\xBC", + "\xF2\xBE" => "\xE8\xB4\x84", + "\xF2\xBF" => "\xE8\xB6\xBE", + "\xF2\xC0" => "\xE9\x81\xB2", + "\xF2\xC1" => "\xE7\x9B\xB4", + "\xF2\xC2" => "\xE7\xA8\x99", + "\xF2\xC3" => "\xE7\xA8\xB7", + "\xF2\xC4" => "\xE7\xB9\x94", + "\xF2\xC5" => "\xE8\x81\xB7", + "\xF2\xC6" => "\xE5\x94\x87", + "\xF2\xC7" => "\xE5\x97\x94", + "\xF2\xC8" => "\xE5\xA1\xB5", + "\xF2\xC9" => "\xE6\x8C\xAF", + "\xF2\xCA" => "\xE6\x90\xA2", + "\xF2\xCB" => "\xE6\x99\x89", + "\xF2\xCC" => "\xE6\x99\x8B", + "\xF2\xCD" => "\xE6\xA1\xAD", + "\xF2\xCE" => "\xE6\xA6\x9B", + "\xF2\xCF" => "\xE6\xAE\x84", + "\xF2\xD0" => "\xE6\xB4\xA5", + "\xF2\xD1" => "\xE6\xBA\xB1", + "\xF2\xD2" => "\xE7\x8F\x8D", + "\xF2\xD3" => "\xE7\x91\xA8", + "\xF2\xD4" => "\xE7\x92\xA1", + "\xF2\xD5" => "\xE7\x95\x9B", + "\xF2\xD6" => "\xE7\x96\xB9", + "\xF2\xD7" => "\xE7\x9B\xA1", + "\xF2\xD8" => "\xE7\x9C\x9E", + "\xF2\xD9" => "\xE7\x9E\x8B", + "\xF2\xDA" => "\xE7\xA7\xA6", + "\xF2\xDB" => "\xE7\xB8\x89", + "\xF2\xDC" => "\xE7\xB8\x9D", + "\xF2\xDD" => "\xE8\x87\xBB", + "\xF2\xDE" => "\xE8\x94\xAF", + "\xF2\xDF" => "\xE8\xA2\x97", + "\xF2\xE0" => "\xE8\xA8\xBA", + "\xF2\xE1" => "\xE8\xB3\x91", + "\xF2\xE2" => "\xE8\xBB\xAB", + "\xF2\xE3" => "\xE8\xBE\xB0", + "\xF2\xE4" => "\xE9\x80\xB2", + "\xF2\xE5" => "\xE9\x8E\xAD", + "\xF2\xE6" => "\xE9\x99\xA3", + "\xF2\xE7" => "\xE9\x99\xB3", + "\xF2\xE8" => "\xE9\x9C\x87", + "\xF2\xE9" => "\xE4\xBE\x84", + "\xF2\xEA" => "\xE5\x8F\xB1", + "\xF2\xEB" => "\xE5\xA7\xAA", + "\xF2\xEC" => "\xE5\xAB\x89", + "\xF2\xED" => "\xE5\xB8\x99", + "\xF2\xEE" => "\xE6\xA1\x8E", + "\xF2\xEF" => "\xE7\x93\x86", + "\xF2\xF0" => "\xE7\x96\xBE", + "\xF2\xF1" => "\xE7\xA7\xA9", + "\xF2\xF2" => "\xE7\xAA\x92", + "\xF2\xF3" => "\xE8\x86\xA3", + "\xF2\xF4" => "\xE8\x9B\xAD", + "\xF2\xF5" => "\xE8\xB3\xAA", + "\xF2\xF6" => "\xE8\xB7\x8C", + "\xF2\xF7" => "\xE8\xBF\xAD", + "\xF2\xF8" => "\xE6\x96\x9F", + "\xF2\xF9" => "\xE6\x9C\x95", + "\xF2\xFA" => "\xEF\xA7\xBD", + "\xF2\xFB" => "\xE5\x9F\xB7", + "\xF2\xFC" => "\xE6\xBD\x97", + "\xF2\xFD" => "\xE7\xB7\x9D", + "\xF2\xFE" => "\xE8\xBC\xAF", + "\xF3\xA1" => "\xE9\x8F\xB6", + "\xF3\xA2" => "\xE9\x9B\x86", + "\xF3\xA3" => "\xE5\xBE\xB5", + "\xF3\xA4" => "\xE6\x87\xB2", + "\xF3\xA5" => "\xE6\xBE\x84", + "\xF3\xA6" => "\xE4\xB8\x94", + "\xF3\xA7" => "\xE4\xBE\x98", + "\xF3\xA8" => "\xE5\x80\x9F", + "\xF3\xA9" => "\xE5\x8F\x89", + "\xF3\xAA" => "\xE5\x97\x9F", + "\xF3\xAB" => "\xE5\xB5\xAF", + "\xF3\xAC" => "\xE5\xB7\xAE", + "\xF3\xAD" => "\xE6\xAC\xA1", + "\xF3\xAE" => "\xE6\xAD\xA4", + "\xF3\xAF" => "\xE7\xA3\x8B", + "\xF3\xB0" => "\xE7\xAE\x9A", + "\xF3\xB1" => "\xEF\xA7\xBE", + "\xF3\xB2" => "\xE8\xB9\x89", + "\xF3\xB3" => "\xE8\xBB\x8A", + "\xF3\xB4" => "\xE9\x81\xAE", + "\xF3\xB5" => "\xE6\x8D\x89", + "\xF3\xB6" => "\xE6\x90\xBE", + "\xF3\xB7" => "\xE7\x9D\x80", + "\xF3\xB8" => "\xE7\xAA\x84", + "\xF3\xB9" => "\xE9\x8C\xAF", + "\xF3\xBA" => "\xE9\x91\xBF", + "\xF3\xBB" => "\xE9\xBD\xAA", + "\xF3\xBC" => "\xE6\x92\xB0", + "\xF3\xBD" => "\xE6\xBE\xAF", + "\xF3\xBE" => "\xE7\x87\xA6", + "\xF3\xBF" => "\xE7\x92\xA8", + "\xF3\xC0" => "\xE7\x93\x9A", + "\xF3\xC1" => "\xE7\xAB\x84", + "\xF3\xC2" => "\xE7\xB0\x92", + "\xF3\xC3" => "\xE7\xBA\x82", + "\xF3\xC4" => "\xE7\xB2\xB2", + "\xF3\xC5" => "\xE7\xBA\x98", + "\xF3\xC6" => "\xE8\xAE\x9A", + "\xF3\xC7" => "\xE8\xB4\x8A", + "\xF3\xC8" => "\xE9\x91\xBD", + "\xF3\xC9" => "\xE9\xA4\x90", + "\xF3\xCA" => "\xE9\xA5\x8C", + "\xF3\xCB" => "\xE5\x88\xB9", + "\xF3\xCC" => "\xE5\xAF\x9F", + "\xF3\xCD" => "\xE6\x93\xA6", + "\xF3\xCE" => "\xE6\x9C\xAD", + "\xF3\xCF" => "\xE7\xB4\xAE", + "\xF3\xD0" => "\xE5\x83\xAD", + "\xF3\xD1" => "\xE5\x8F\x83", + "\xF3\xD2" => "\xE5\xA1\xB9", + "\xF3\xD3" => "\xE6\x85\x98", + "\xF3\xD4" => "\xE6\x85\x99", + "\xF3\xD5" => "\xE6\x87\xBA", + "\xF3\xD6" => "\xE6\x96\xAC", + "\xF3\xD7" => "\xE7\xAB\x99", + "\xF3\xD8" => "\xE8\xAE\x92", + "\xF3\xD9" => "\xE8\xAE\x96", + "\xF3\xDA" => "\xE5\x80\x89", + "\xF3\xDB" => "\xE5\x80\xA1", + "\xF3\xDC" => "\xE5\x89\xB5", + "\xF3\xDD" => "\xE5\x94\xB1", + "\xF3\xDE" => "\xE5\xA8\xBC", + "\xF3\xDF" => "\xE5\xBB\xA0", + "\xF3\xE0" => "\xE5\xBD\xB0", + "\xF3\xE1" => "\xE6\x84\xB4", + "\xF3\xE2" => "\xE6\x95\x9E", + "\xF3\xE3" => "\xE6\x98\x8C", + "\xF3\xE4" => "\xE6\x98\xB6", + "\xF3\xE5" => "\xE6\x9A\xA2", + "\xF3\xE6" => "\xE6\xA7\x8D", + "\xF3\xE7" => "\xE6\xBB\x84", + "\xF3\xE8" => "\xE6\xBC\xB2", + "\xF3\xE9" => "\xE7\x8C\x96", + "\xF3\xEA" => "\xE7\x98\xA1", + "\xF3\xEB" => "\xE7\xAA\x93", + "\xF3\xEC" => "\xE8\x84\xB9", + "\xF3\xED" => "\xE8\x89\x99", + "\xF3\xEE" => "\xE8\x8F\x96", + "\xF3\xEF" => "\xE8\x92\xBC", + "\xF3\xF0" => "\xE5\x82\xB5", + "\xF3\xF1" => "\xE5\x9F\xB0", + "\xF3\xF2" => "\xE5\xAF\x80", + "\xF3\xF3" => "\xE5\xAF\xA8", + "\xF3\xF4" => "\xE5\xBD\xA9", + "\xF3\xF5" => "\xE6\x8E\xA1", + "\xF3\xF6" => "\xE7\xA0\xA6", + "\xF3\xF7" => "\xE7\xB6\xB5", + "\xF3\xF8" => "\xE8\x8F\x9C", + "\xF3\xF9" => "\xE8\x94\xA1", + "\xF3\xFA" => "\xE9\x87\x87", + "\xF3\xFB" => "\xE9\x87\xB5", + "\xF3\xFC" => "\xE5\x86\x8A", + "\xF3\xFD" => "\xE6\x9F\xB5", + "\xF3\xFE" => "\xE7\xAD\x96", + "\xF4\xA1" => "\xE8\xB2\xAC", + "\xF4\xA2" => "\xE5\x87\x84", + "\xF4\xA3" => "\xE5\xA6\xBB", + "\xF4\xA4" => "\xE6\x82\xBD", + "\xF4\xA5" => "\xE8\x99\x95", + "\xF4\xA6" => "\xE5\x80\x9C", + "\xF4\xA7" => "\xEF\xA7\xBF", + "\xF4\xA8" => "\xE5\x89\x94", + "\xF4\xA9" => "\xE5\xB0\xBA", + "\xF4\xAA" => "\xE6\x85\xBD", + "\xF4\xAB" => "\xE6\x88\x9A", + "\xF4\xAC" => "\xE6\x8B\x93", + "\xF4\xAD" => "\xE6\x93\xB2", + "\xF4\xAE" => "\xE6\x96\xA5", + "\xF4\xAF" => "\xE6\xBB\x8C", + "\xF4\xB0" => "\xE7\x98\xA0", + "\xF4\xB1" => "\xE8\x84\x8A", + "\xF4\xB2" => "\xE8\xB9\xA0", + "\xF4\xB3" => "\xE9\x99\x9F", + "\xF4\xB4" => "\xE9\x9A\xBB", + "\xF4\xB5" => "\xE4\xBB\x9F", + "\xF4\xB6" => "\xE5\x8D\x83", + "\xF4\xB7" => "\xE5\x96\x98", + "\xF4\xB8" => "\xE5\xA4\xA9", + "\xF4\xB9" => "\xE5\xB7\x9D", + "\xF4\xBA" => "\xE6\x93\x85", + "\xF4\xBB" => "\xE6\xB3\x89", + "\xF4\xBC" => "\xE6\xB7\xBA", + "\xF4\xBD" => "\xE7\x8E\x94", + "\xF4\xBE" => "\xE7\xA9\xBF", + "\xF4\xBF" => "\xE8\x88\x9B", + "\xF4\xC0" => "\xE8\x96\xA6", + "\xF4\xC1" => "\xE8\xB3\xA4", + "\xF4\xC2" => "\xE8\xB8\x90", + "\xF4\xC3" => "\xE9\x81\xB7", + "\xF4\xC4" => "\xE9\x87\xA7", + "\xF4\xC5" => "\xE9\x97\xA1", + "\xF4\xC6" => "\xE9\x98\xA1", + "\xF4\xC7" => "\xE9\x9F\x86", + "\xF4\xC8" => "\xE5\x87\xB8", + "\xF4\xC9" => "\xE5\x93\xB2", + "\xF4\xCA" => "\xE5\x96\x86", + "\xF4\xCB" => "\xE5\xBE\xB9", + "\xF4\xCC" => "\xE6\x92\xA4", + "\xF4\xCD" => "\xE6\xBE\x88", + "\xF4\xCE" => "\xE7\xB6\xB4", + "\xF4\xCF" => "\xE8\xBC\x9F", + "\xF4\xD0" => "\xE8\xBD\x8D", + "\xF4\xD1" => "\xE9\x90\xB5", + "\xF4\xD2" => "\xE5\x83\x89", + "\xF4\xD3" => "\xE5\xB0\x96", + "\xF4\xD4" => "\xE6\xB2\xBE", + "\xF4\xD5" => "\xE6\xB7\xBB", + "\xF4\xD6" => "\xE7\x94\x9B", + "\xF4\xD7" => "\xE7\x9E\xBB", + "\xF4\xD8" => "\xE7\xB0\xBD", + "\xF4\xD9" => "\xE7\xB1\xA4", + "\xF4\xDA" => "\xE8\xA9\xB9", + "\xF4\xDB" => "\xE8\xAB\x82", + "\xF4\xDC" => "\xE5\xA0\x9E", + "\xF4\xDD" => "\xE5\xA6\xBE", + "\xF4\xDE" => "\xE5\xB8\x96", + "\xF4\xDF" => "\xE6\x8D\xB7", + "\xF4\xE0" => "\xE7\x89\x92", + "\xF4\xE1" => "\xE7\x96\x8A", + "\xF4\xE2" => "\xE7\x9D\xAB", + "\xF4\xE3" => "\xE8\xAB\x9C", + "\xF4\xE4" => "\xE8\xB2\xBC", + "\xF4\xE5" => "\xE8\xBC\x92", + "\xF4\xE6" => "\xE5\xBB\xB3", + "\xF4\xE7" => "\xE6\x99\xB4", + "\xF4\xE8" => "\xE6\xB7\xB8", + "\xF4\xE9" => "\xE8\x81\xBD", + "\xF4\xEA" => "\xE8\x8F\x81", + "\xF4\xEB" => "\xE8\xAB\x8B", + "\xF4\xEC" => "\xE9\x9D\x91", + "\xF4\xED" => "\xE9\xAF\x96", + "\xF4\xEE" => "\xEF\xA8\x80", + "\xF4\xEF" => "\xE5\x89\x83", + "\xF4\xF0" => "\xE6\x9B\xBF", + "\xF4\xF1" => "\xE6\xB6\x95", + "\xF4\xF2" => "\xE6\xBB\xAF", + "\xF4\xF3" => "\xE7\xB7\xA0", + "\xF4\xF4" => "\xE8\xAB\xA6", + "\xF4\xF5" => "\xE9\x80\xAE", + "\xF4\xF6" => "\xE9\x81\x9E", + "\xF4\xF7" => "\xE9\xAB\x94", + "\xF4\xF8" => "\xE5\x88\x9D", + "\xF4\xF9" => "\xE5\x89\xBF", + "\xF4\xFA" => "\xE5\x93\xA8", + "\xF4\xFB" => "\xE6\x86\x94", + "\xF4\xFC" => "\xE6\x8A\x84", + "\xF4\xFD" => "\xE6\x8B\x9B", + "\xF4\xFE" => "\xE6\xA2\xA2", + "\xF5\xA1" => "\xE6\xA4\x92", + "\xF5\xA2" => "\xE6\xA5\x9A", + "\xF5\xA3" => "\xE6\xA8\xB5", + "\xF5\xA4" => "\xE7\x82\x92", + "\xF5\xA5" => "\xE7\x84\xA6", + "\xF5\xA6" => "\xE7\xA1\x9D", + "\xF5\xA7" => "\xE7\xA4\x81", + "\xF5\xA8" => "\xE7\xA4\x8E", + "\xF5\xA9" => "\xE7\xA7\x92", + "\xF5\xAA" => "\xE7\xA8\x8D", + "\xF5\xAB" => "\xE8\x82\x96", + "\xF5\xAC" => "\xE8\x89\xB8", + "\xF5\xAD" => "\xE8\x8B\x95", + "\xF5\xAE" => "\xE8\x8D\x89", + "\xF5\xAF" => "\xE8\x95\x89", + "\xF5\xB0" => "\xE8\xB2\x82", + "\xF5\xB1" => "\xE8\xB6\x85", + "\xF5\xB2" => "\xE9\x85\xA2", + "\xF5\xB3" => "\xE9\x86\x8B", + "\xF5\xB4" => "\xE9\x86\xAE", + "\xF5\xB5" => "\xE4\xBF\x83", + "\xF5\xB6" => "\xE5\x9B\x91", + "\xF5\xB7" => "\xE7\x87\xAD", + "\xF5\xB8" => "\xE7\x9F\x97", + "\xF5\xB9" => "\xE8\x9C\x80", + "\xF5\xBA" => "\xE8\xA7\xB8", + "\xF5\xBB" => "\xE5\xAF\xB8", + "\xF5\xBC" => "\xE5\xBF\x96", + "\xF5\xBD" => "\xE6\x9D\x91", + "\xF5\xBE" => "\xE9\x82\xA8", + "\xF5\xBF" => "\xE5\x8F\xA2", + "\xF5\xC0" => "\xE5\xA1\x9A", + "\xF5\xC1" => "\xE5\xAF\xB5", + "\xF5\xC2" => "\xE6\x82\xA4", + "\xF5\xC3" => "\xE6\x86\x81", + "\xF5\xC4" => "\xE6\x91\xA0", + "\xF5\xC5" => "\xE7\xB8\xBD", + "\xF5\xC6" => "\xE8\x81\xB0", + "\xF5\xC7" => "\xE8\x94\xA5", + "\xF5\xC8" => "\xE9\x8A\x83", + "\xF5\xC9" => "\xE6\x92\xAE", + "\xF5\xCA" => "\xE5\x82\xAC", + "\xF5\xCB" => "\xE5\xB4\x94", + "\xF5\xCC" => "\xE6\x9C\x80", + "\xF5\xCD" => "\xE5\xA2\x9C", + "\xF5\xCE" => "\xE6\x8A\xBD", + "\xF5\xCF" => "\xE6\x8E\xA8", + "\xF5\xD0" => "\xE6\xA4\x8E", + "\xF5\xD1" => "\xE6\xA5\xB8", + "\xF5\xD2" => "\xE6\xA8\x9E", + "\xF5\xD3" => "\xE6\xB9\xAB", + "\xF5\xD4" => "\xE7\x9A\xBA", + "\xF5\xD5" => "\xE7\xA7\x8B", + "\xF5\xD6" => "\xE8\x8A\xBB", + "\xF5\xD7" => "\xE8\x90\xA9", + "\xF5\xD8" => "\xE8\xAB\x8F", + "\xF5\xD9" => "\xE8\xB6\xA8", + "\xF5\xDA" => "\xE8\xBF\xBD", + "\xF5\xDB" => "\xE9\x84\x92", + "\xF5\xDC" => "\xE9\x85\x8B", + "\xF5\xDD" => "\xE9\x86\x9C", + "\xF5\xDE" => "\xE9\x8C\x90", + "\xF5\xDF" => "\xE9\x8C\x98", + "\xF5\xE0" => "\xE9\x8E\x9A", + "\xF5\xE1" => "\xE9\x9B\x9B", + "\xF5\xE2" => "\xE9\xA8\xB6", + "\xF5\xE3" => "\xE9\xB0\x8D", + "\xF5\xE4" => "\xE4\xB8\x91", + "\xF5\xE5" => "\xE7\x95\x9C", + "\xF5\xE6" => "\xE7\xA5\x9D", + "\xF5\xE7" => "\xE7\xAB\xBA", + "\xF5\xE8" => "\xE7\xAD\x91", + "\xF5\xE9" => "\xE7\xAF\x89", + "\xF5\xEA" => "\xE7\xB8\xAE", + "\xF5\xEB" => "\xE8\x93\x84", + "\xF5\xEC" => "\xE8\xB9\x99", + "\xF5\xED" => "\xE8\xB9\xB4", + "\xF5\xEE" => "\xE8\xBB\xB8", + "\xF5\xEF" => "\xE9\x80\x90", + "\xF5\xF0" => "\xE6\x98\xA5", + "\xF5\xF1" => "\xE6\xA4\xBF", + "\xF5\xF2" => "\xE7\x91\x83", + "\xF5\xF3" => "\xE5\x87\xBA", + "\xF5\xF4" => "\xE6\x9C\xAE", + "\xF5\xF5" => "\xE9\xBB\x9C", + "\xF5\xF6" => "\xE5\x85\x85", + "\xF5\xF7" => "\xE5\xBF\xA0", + "\xF5\xF8" => "\xE6\xB2\x96", + "\xF5\xF9" => "\xE8\x9F\xB2", + "\xF5\xFA" => "\xE8\xA1\x9D", + "\xF5\xFB" => "\xE8\xA1\xB7", + "\xF5\xFC" => "\xE6\x82\xB4", + "\xF5\xFD" => "\xE8\x86\xB5", + "\xF5\xFE" => "\xE8\x90\x83", + "\xF6\xA1" => "\xE8\xB4\x85", + "\xF6\xA2" => "\xE5\x8F\x96", + "\xF6\xA3" => "\xE5\x90\xB9", + "\xF6\xA4" => "\xE5\x98\xB4", + "\xF6\xA5" => "\xE5\xA8\xB6", + "\xF6\xA6" => "\xE5\xB0\xB1", + "\xF6\xA7" => "\xE7\x82\x8A", + "\xF6\xA8" => "\xE7\xBF\xA0", + "\xF6\xA9" => "\xE8\x81\x9A", + "\xF6\xAA" => "\xE8\x84\x86", + "\xF6\xAB" => "\xE8\x87\xAD", + "\xF6\xAC" => "\xE8\xB6\xA3", + "\xF6\xAD" => "\xE9\x86\x89", + "\xF6\xAE" => "\xE9\xA9\x9F", + "\xF6\xAF" => "\xE9\xB7\xB2", + "\xF6\xB0" => "\xE5\x81\xB4", + "\xF6\xB1" => "\xE4\xBB\x84", + "\xF6\xB2" => "\xE5\x8E\xA0", + "\xF6\xB3" => "\xE6\x83\xBB", + "\xF6\xB4" => "\xE6\xB8\xAC", + "\xF6\xB5" => "\xE5\xB1\xA4", + "\xF6\xB6" => "\xE4\xBE\x88", + "\xF6\xB7" => "\xE5\x80\xA4", + "\xF6\xB8" => "\xE5\x97\xA4", + "\xF6\xB9" => "\xE5\xB3\x99", + "\xF6\xBA" => "\xE5\xB9\x9F", + "\xF6\xBB" => "\xE6\x81\xA5", + "\xF6\xBC" => "\xE6\xA2\x94", + "\xF6\xBD" => "\xE6\xB2\xBB", + "\xF6\xBE" => "\xE6\xB7\x84", + "\xF6\xBF" => "\xE7\x86\xBE", + "\xF6\xC0" => "\xE7\x97\x94", + "\xF6\xC1" => "\xE7\x97\xB4", + "\xF6\xC2" => "\xE7\x99\xA1", + "\xF6\xC3" => "\xE7\xA8\x9A", + "\xF6\xC4" => "\xE7\xA9\x89", + "\xF6\xC5" => "\xE7\xB7\x87", + "\xF6\xC6" => "\xE7\xB7\xBB", + "\xF6\xC7" => "\xE7\xBD\xAE", + "\xF6\xC8" => "\xE8\x87\xB4", + "\xF6\xC9" => "\xE8\x9A\xA9", + "\xF6\xCA" => "\xE8\xBC\x9C", + "\xF6\xCB" => "\xE9\x9B\x89", + "\xF6\xCC" => "\xE9\xA6\xB3", + "\xF6\xCD" => "\xE9\xBD\x92", + "\xF6\xCE" => "\xE5\x89\x87", + "\xF6\xCF" => "\xE5\x8B\x85", + "\xF6\xD0" => "\xE9\xA3\xAD", + "\xF6\xD1" => "\xE8\xA6\xAA", + "\xF6\xD2" => "\xE4\xB8\x83", + "\xF6\xD3" => "\xE6\x9F\x92", + "\xF6\xD4" => "\xE6\xBC\x86", + "\xF6\xD5" => "\xE4\xBE\xB5", + "\xF6\xD6" => "\xE5\xAF\xA2", + "\xF6\xD7" => "\xE6\x9E\x95", + "\xF6\xD8" => "\xE6\xB2\x88", + "\xF6\xD9" => "\xE6\xB5\xB8", + "\xF6\xDA" => "\xE7\x90\x9B", + "\xF6\xDB" => "\xE7\xA0\xA7", + "\xF6\xDC" => "\xE9\x87\x9D", + "\xF6\xDD" => "\xE9\x8D\xBC", + "\xF6\xDE" => "\xE8\x9F\x84", + "\xF6\xDF" => "\xE7\xA7\xA4", + "\xF6\xE0" => "\xE7\xA8\xB1", + "\xF6\xE1" => "\xE5\xBF\xAB", + "\xF6\xE2" => "\xE4\xBB\x96", + "\xF6\xE3" => "\xE5\x92\xA4", + "\xF6\xE4" => "\xE5\x94\xBE", + "\xF6\xE5" => "\xE5\xA2\xAE", + "\xF6\xE6" => "\xE5\xA6\xA5", + "\xF6\xE7" => "\xE6\x83\xB0", + "\xF6\xE8" => "\xE6\x89\x93", + "\xF6\xE9" => "\xE6\x8B\x96", + "\xF6\xEA" => "\xE6\x9C\xB6", + "\xF6\xEB" => "\xE6\xA5\x95", + "\xF6\xEC" => "\xE8\x88\xB5", + "\xF6\xED" => "\xE9\x99\x80", + "\xF6\xEE" => "\xE9\xA6\xB1", + "\xF6\xEF" => "\xE9\xA7\x9D", + "\xF6\xF0" => "\xE5\x80\xAC", + "\xF6\xF1" => "\xE5\x8D\x93", + "\xF6\xF2" => "\xE5\x95\x84", + "\xF6\xF3" => "\xE5\x9D\xBC", + "\xF6\xF4" => "\xEF\xA8\x81", + "\xF6\xF5" => "\xE6\x89\x98", + "\xF6\xF6" => "\xEF\xA8\x82", + "\xF6\xF7" => "\xE6\x93\xA2", + "\xF6\xF8" => "\xE6\x99\xAB", + "\xF6\xF9" => "\xE6\x9F\x9D", + "\xF6\xFA" => "\xE6\xBF\x81", + "\xF6\xFB" => "\xE6\xBF\xAF", + "\xF6\xFC" => "\xE7\x90\xA2", + "\xF6\xFD" => "\xE7\x90\xB8", + "\xF6\xFE" => "\xE8\xA8\x97", + "\xF7\xA1" => "\xE9\x90\xB8", + "\xF7\xA2" => "\xE5\x91\x91", + "\xF7\xA3" => "\xE5\x98\x86", + "\xF7\xA4" => "\xE5\x9D\xA6", + "\xF7\xA5" => "\xE5\xBD\x88", + "\xF7\xA6" => "\xE6\x86\x9A", + "\xF7\xA7" => "\xE6\xAD\x8E", + "\xF7\xA8" => "\xE7\x81\x98", + "\xF7\xA9" => "\xE7\x82\xAD", + "\xF7\xAA" => "\xE7\xB6\xBB", + "\xF7\xAB" => "\xE8\xAA\x95", + "\xF7\xAC" => "\xE5\xA5\xAA", + "\xF7\xAD" => "\xE8\x84\xAB", + "\xF7\xAE" => "\xE6\x8E\xA2", + "\xF7\xAF" => "\xE7\x9C\x88", + "\xF7\xB0" => "\xE8\x80\xBD", + "\xF7\xB1" => "\xE8\xB2\xAA", + "\xF7\xB2" => "\xE5\xA1\x94", + "\xF7\xB3" => "\xE6\x90\xAD", + "\xF7\xB4" => "\xE6\xA6\xBB", + "\xF7\xB5" => "\xE5\xAE\x95", + "\xF7\xB6" => "\xE5\xB8\x91", + "\xF7\xB7" => "\xE6\xB9\xAF", + "\xF7\xB8" => "\xEF\xA8\x83", + "\xF7\xB9" => "\xE8\x95\xA9", + "\xF7\xBA" => "\xE5\x85\x8C", + "\xF7\xBB" => "\xE5\x8F\xB0", + "\xF7\xBC" => "\xE5\xA4\xAA", + "\xF7\xBD" => "\xE6\x80\xA0", + "\xF7\xBE" => "\xE6\x85\x8B", + "\xF7\xBF" => "\xE6\xAE\x86", + "\xF7\xC0" => "\xE6\xB1\xB0", + "\xF7\xC1" => "\xE6\xB3\xB0", + "\xF7\xC2" => "\xE7\xAC\x9E", + "\xF7\xC3" => "\xE8\x83\x8E", + "\xF7\xC4" => "\xE8\x8B\x94", + "\xF7\xC5" => "\xE8\xB7\x86", + "\xF7\xC6" => "\xE9\x82\xB0", + "\xF7\xC7" => "\xE9\xA2\xB1", + "\xF7\xC8" => "\xEF\xA8\x84", + "\xF7\xC9" => "\xE6\x93\x87", + "\xF7\xCA" => "\xE6\xBE\xA4", + "\xF7\xCB" => "\xE6\x92\x91", + "\xF7\xCC" => "\xE6\x94\x84", + "\xF7\xCD" => "\xE5\x85\x8E", + "\xF7\xCE" => "\xE5\x90\x90", + "\xF7\xCF" => "\xE5\x9C\x9F", + "\xF7\xD0" => "\xE8\xA8\x8E", + "\xF7\xD1" => "\xE6\x85\x9F", + "\xF7\xD2" => "\xE6\xA1\xB6", + "\xF7\xD3" => "\xEF\xA8\x85", + "\xF7\xD4" => "\xE7\x97\x9B", + "\xF7\xD5" => "\xE7\xAD\x92", + "\xF7\xD6" => "\xE7\xB5\xB1", + "\xF7\xD7" => "\xE9\x80\x9A", + "\xF7\xD8" => "\xE5\xA0\x86", + "\xF7\xD9" => "\xE6\xA7\x8C", + "\xF7\xDA" => "\xE8\x85\xBF", + "\xF7\xDB" => "\xE8\xA4\xAA", + "\xF7\xDC" => "\xE9\x80\x80", + "\xF7\xDD" => "\xE9\xA0\xB9", + "\xF7\xDE" => "\xE5\x81\xB8", + "\xF7\xDF" => "\xE5\xA5\x97", + "\xF7\xE0" => "\xE5\xA6\xAC", + "\xF7\xE1" => "\xE6\x8A\x95", + "\xF7\xE2" => "\xE9\x80\x8F", + "\xF7\xE3" => "\xE9\xAC\xAA", + "\xF7\xE4" => "\xE6\x85\x9D", + "\xF7\xE5" => "\xE7\x89\xB9", + "\xF7\xE6" => "\xE9\x97\x96", + "\xF7\xE7" => "\xE5\x9D\xA1", + "\xF7\xE8" => "\xE5\xA9\x86", + "\xF7\xE9" => "\xE5\xB7\xB4", + "\xF7\xEA" => "\xE6\x8A\x8A", + "\xF7\xEB" => "\xE6\x92\xAD", + "\xF7\xEC" => "\xE6\x93\xBA", + "\xF7\xED" => "\xE6\x9D\xB7", + "\xF7\xEE" => "\xE6\xB3\xA2", + "\xF7\xEF" => "\xE6\xB4\xBE", + "\xF7\xF0" => "\xE7\x88\xAC", + "\xF7\xF1" => "\xE7\x90\xB6", + "\xF7\xF2" => "\xE7\xA0\xB4", + "\xF7\xF3" => "\xE7\xBD\xB7", + "\xF7\xF4" => "\xE8\x8A\xAD", + "\xF7\xF5" => "\xE8\xB7\x9B", + "\xF7\xF6" => "\xE9\xA0\x97", + "\xF7\xF7" => "\xE5\x88\xA4", + "\xF7\xF8" => "\xE5\x9D\x82", + "\xF7\xF9" => "\xE6\x9D\xBF", + "\xF7\xFA" => "\xE7\x89\x88", + "\xF7\xFB" => "\xE7\x93\xA3", + "\xF7\xFC" => "\xE8\xB2\xA9", + "\xF7\xFD" => "\xE8\xBE\xA6", + "\xF7\xFE" => "\xE9\x88\x91", + "\xF8\xA1" => "\xE9\x98\xAA", + "\xF8\xA2" => "\xE5\x85\xAB", + "\xF8\xA3" => "\xE5\x8F\xAD", + "\xF8\xA4" => "\xE6\x8D\x8C", + "\xF8\xA5" => "\xE4\xBD\xA9", + "\xF8\xA6" => "\xE5\x94\x84", + "\xF8\xA7" => "\xE6\x82\x96", + "\xF8\xA8" => "\xE6\x95\x97", + "\xF8\xA9" => "\xE6\xB2\x9B", + "\xF8\xAA" => "\xE6\xB5\xBF", + "\xF8\xAB" => "\xE7\x89\x8C", + "\xF8\xAC" => "\xE7\x8B\xBD", + "\xF8\xAD" => "\xE7\xA8\x97", + "\xF8\xAE" => "\xE8\xA6\x87", + "\xF8\xAF" => "\xE8\xB2\x9D", + "\xF8\xB0" => "\xE5\xBD\xAD", + "\xF8\xB1" => "\xE6\xBE\x8E", + "\xF8\xB2" => "\xE7\x83\xB9", + "\xF8\xB3" => "\xE8\x86\xA8", + "\xF8\xB4" => "\xE6\x84\x8E", + "\xF8\xB5" => "\xE4\xBE\xBF", + "\xF8\xB6" => "\xE5\x81\x8F", + "\xF8\xB7" => "\xE6\x89\x81", + "\xF8\xB8" => "\xE7\x89\x87", + "\xF8\xB9" => "\xE7\xAF\x87", + "\xF8\xBA" => "\xE7\xB7\xA8", + "\xF8\xBB" => "\xE7\xBF\xA9", + "\xF8\xBC" => "\xE9\x81\x8D", + "\xF8\xBD" => "\xE9\x9E\xAD", + "\xF8\xBE" => "\xE9\xA8\x99", + "\xF8\xBF" => "\xE8\xB2\xB6", + "\xF8\xC0" => "\xE5\x9D\xAA", + "\xF8\xC1" => "\xE5\xB9\xB3", + "\xF8\xC2" => "\xE6\x9E\xB0", + "\xF8\xC3" => "\xE8\x90\x8D", + "\xF8\xC4" => "\xE8\xA9\x95", + "\xF8\xC5" => "\xE5\x90\xA0", + "\xF8\xC6" => "\xE5\xAC\x96", + "\xF8\xC7" => "\xE5\xB9\xA3", + "\xF8\xC8" => "\xE5\xBB\xA2", + "\xF8\xC9" => "\xE5\xBC\x8A", + "\xF8\xCA" => "\xE6\x96\x83", + "\xF8\xCB" => "\xE8\x82\xBA", + "\xF8\xCC" => "\xE8\x94\xBD", + "\xF8\xCD" => "\xE9\x96\x89", + "\xF8\xCE" => "\xE9\x99\x9B", + "\xF8\xCF" => "\xE4\xBD\x88", + "\xF8\xD0" => "\xE5\x8C\x85", + "\xF8\xD1" => "\xE5\x8C\x8D", + "\xF8\xD2" => "\xE5\x8C\x8F", + "\xF8\xD3" => "\xE5\x92\x86", + "\xF8\xD4" => "\xE5\x93\xBA", + "\xF8\xD5" => "\xE5\x9C\x83", + "\xF8\xD6" => "\xE5\xB8\x83", + "\xF8\xD7" => "\xE6\x80\x96", + "\xF8\xD8" => "\xE6\x8A\x9B", + "\xF8\xD9" => "\xE6\x8A\xB1", + "\xF8\xDA" => "\xE6\x8D\x95", + "\xF8\xDB" => "\xEF\xA8\x86", + "\xF8\xDC" => "\xE6\xB3\xA1", + "\xF8\xDD" => "\xE6\xB5\xA6", + "\xF8\xDE" => "\xE7\x96\xB1", + "\xF8\xDF" => "\xE7\xA0\xB2", + "\xF8\xE0" => "\xE8\x83\x9E", + "\xF8\xE1" => "\xE8\x84\xAF", + "\xF8\xE2" => "\xE8\x8B\x9E", + "\xF8\xE3" => "\xE8\x91\xA1", + "\xF8\xE4" => "\xE8\x92\xB2", + "\xF8\xE5" => "\xE8\xA2\x8D", + "\xF8\xE6" => "\xE8\xA4\x92", + "\xF8\xE7" => "\xE9\x80\x8B", + "\xF8\xE8" => "\xE9\x8B\xAA", + "\xF8\xE9" => "\xE9\xA3\xBD", + "\xF8\xEA" => "\xE9\xAE\x91", + "\xF8\xEB" => "\xE5\xB9\x85", + "\xF8\xEC" => "\xE6\x9A\xB4", + "\xF8\xED" => "\xE6\x9B\x9D", + "\xF8\xEE" => "\xE7\x80\x91", + "\xF8\xEF" => "\xE7\x88\x86", + "\xF8\xF0" => "\xEF\xA8\x87", + "\xF8\xF1" => "\xE4\xBF\xB5", + "\xF8\xF2" => "\xE5\x89\xBD", + "\xF8\xF3" => "\xE5\xBD\xAA", + "\xF8\xF4" => "\xE6\x85\x93", + "\xF8\xF5" => "\xE6\x9D\x93", + "\xF8\xF6" => "\xE6\xA8\x99", + "\xF8\xF7" => "\xE6\xBC\x82", + "\xF8\xF8" => "\xE7\x93\xA2", + "\xF8\xF9" => "\xE7\xA5\xA8", + "\xF8\xFA" => "\xE8\xA1\xA8", + "\xF8\xFB" => "\xE8\xB1\xB9", + "\xF8\xFC" => "\xE9\xA3\x87", + "\xF8\xFD" => "\xE9\xA3\x84", + "\xF8\xFE" => "\xE9\xA9\x83", + "\xF9\xA1" => "\xE5\x93\x81", + "\xF9\xA2" => "\xE7\xA8\x9F", + "\xF9\xA3" => "\xE6\xA5\x93", + "\xF9\xA4" => "\xE8\xAB\xB7", + "\xF9\xA5" => "\xE8\xB1\x8A", + "\xF9\xA6" => "\xE9\xA2\xA8", + "\xF9\xA7" => "\xE9\xA6\xAE", + "\xF9\xA8" => "\xE5\xBD\xBC", + "\xF9\xA9" => "\xE6\x8A\xAB", + "\xF9\xAA" => "\xE7\x96\xB2", + "\xF9\xAB" => "\xE7\x9A\xAE", + "\xF9\xAC" => "\xE8\xA2\xAB", + "\xF9\xAD" => "\xE9\x81\xBF", + "\xF9\xAE" => "\xE9\x99\x82", + "\xF9\xAF" => "\xE5\x8C\xB9", + "\xF9\xB0" => "\xE5\xBC\xBC", + "\xF9\xB1" => "\xE5\xBF\x85", + "\xF9\xB2" => "\xE6\xB3\x8C", + "\xF9\xB3" => "\xE7\x8F\x8C", + "\xF9\xB4" => "\xE7\x95\xA2", + "\xF9\xB5" => "\xE7\x96\x8B", + "\xF9\xB6" => "\xE7\xAD\x86", + "\xF9\xB7" => "\xE8\x8B\xBE", + "\xF9\xB8" => "\xE9\xA6\x9D", + "\xF9\xB9" => "\xE4\xB9\x8F", + "\xF9\xBA" => "\xE9\x80\xBC", + "\xF9\xBB" => "\xE4\xB8\x8B", + "\xF9\xBC" => "\xE4\xBD\x95", + "\xF9\xBD" => "\xE5\x8E\xA6", + "\xF9\xBE" => "\xE5\xA4\x8F", + "\xF9\xBF" => "\xE5\xBB\x88", + "\xF9\xC0" => "\xE6\x98\xB0", + "\xF9\xC1" => "\xE6\xB2\xB3", + "\xF9\xC2" => "\xE7\x91\x95", + "\xF9\xC3" => "\xE8\x8D\xB7", + "\xF9\xC4" => "\xE8\x9D\xA6", + "\xF9\xC5" => "\xE8\xB3\x80", + "\xF9\xC6" => "\xE9\x81\x90", + "\xF9\xC7" => "\xE9\x9C\x9E", + "\xF9\xC8" => "\xE9\xB0\x95", + "\xF9\xC9" => "\xE5\xA3\x91", + "\xF9\xCA" => "\xE5\xAD\xB8", + "\xF9\xCB" => "\xE8\x99\x90", + "\xF9\xCC" => "\xE8\xAC\x94", + "\xF9\xCD" => "\xE9\xB6\xB4", + "\xF9\xCE" => "\xE5\xAF\x92", + "\xF9\xCF" => "\xE6\x81\xA8", + "\xF9\xD0" => "\xE6\x82\x8D", + "\xF9\xD1" => "\xE6\x97\xB1", + "\xF9\xD2" => "\xE6\xB1\x97", + "\xF9\xD3" => "\xE6\xBC\xA2", + "\xF9\xD4" => "\xE6\xBE\xA3", + "\xF9\xD5" => "\xE7\x80\x9A", + "\xF9\xD6" => "\xE7\xBD\x95", + "\xF9\xD7" => "\xE7\xBF\xB0", + "\xF9\xD8" => "\xE9\x96\x91", + "\xF9\xD9" => "\xE9\x96\x92", + "\xF9\xDA" => "\xE9\x99\x90", + "\xF9\xDB" => "\xE9\x9F\x93", + "\xF9\xDC" => "\xE5\x89\xB2", + "\xF9\xDD" => "\xE8\xBD\x84", + "\xF9\xDE" => "\xE5\x87\xBD", + "\xF9\xDF" => "\xE5\x90\xAB", + "\xF9\xE0" => "\xE5\x92\xB8", + "\xF9\xE1" => "\xE5\x95\xA3", + "\xF9\xE2" => "\xE5\x96\x8A", + "\xF9\xE3" => "\xE6\xAA\xBB", + "\xF9\xE4" => "\xE6\xB6\xB5", + "\xF9\xE5" => "\xE7\xB7\x98", + "\xF9\xE6" => "\xE8\x89\xA6", + "\xF9\xE7" => "\xE9\x8A\x9C", + "\xF9\xE8" => "\xE9\x99\xB7", + "\xF9\xE9" => "\xE9\xB9\xB9", + "\xF9\xEA" => "\xE5\x90\x88", + "\xF9\xEB" => "\xE5\x93\x88", + "\xF9\xEC" => "\xE7\x9B\x92", + "\xF9\xED" => "\xE8\x9B\xA4", + "\xF9\xEE" => "\xE9\x96\xA4", + "\xF9\xEF" => "\xE9\x97\x94", + "\xF9\xF0" => "\xE9\x99\x9C", + "\xF9\xF1" => "\xE4\xBA\xA2", + "\xF9\xF2" => "\xE4\xBC\x89", + "\xF9\xF3" => "\xE5\xA7\xAE", + "\xF9\xF4" => "\xE5\xAB\xA6", + "\xF9\xF5" => "\xE5\xB7\xB7", + "\xF9\xF6" => "\xE6\x81\x92", + "\xF9\xF7" => "\xE6\x8A\x97", + "\xF9\xF8" => "\xE6\x9D\xAD", + "\xF9\xF9" => "\xE6\xA1\x81", + "\xF9\xFA" => "\xE6\xB2\x86", + "\xF9\xFB" => "\xE6\xB8\xAF", + "\xF9\xFC" => "\xE7\xBC\xB8", + "\xF9\xFD" => "\xE8\x82\x9B", + "\xF9\xFE" => "\xE8\x88\xAA", + "\xFA\xA1" => "\xEF\xA8\x88", + "\xFA\xA2" => "\xEF\xA8\x89", + "\xFA\xA3" => "\xE9\xA0\x85", + "\xFA\xA4" => "\xE4\xBA\xA5", + "\xFA\xA5" => "\xE5\x81\x95", + "\xFA\xA6" => "\xE5\x92\xB3", + "\xFA\xA7" => "\xE5\x9E\x93", + "\xFA\xA8" => "\xE5\xA5\x9A", + "\xFA\xA9" => "\xE5\xAD\xA9", + "\xFA\xAA" => "\xE5\xAE\xB3", + "\xFA\xAB" => "\xE6\x87\x88", + "\xFA\xAC" => "\xE6\xA5\xB7", + "\xFA\xAD" => "\xE6\xB5\xB7", + "\xFA\xAE" => "\xE7\x80\xA3", + "\xFA\xAF" => "\xE8\x9F\xB9", + "\xFA\xB0" => "\xE8\xA7\xA3", + "\xFA\xB1" => "\xE8\xA9\xB2", + "\xFA\xB2" => "\xE8\xAB\xA7", + "\xFA\xB3" => "\xE9\x82\x82", + "\xFA\xB4" => "\xE9\xA7\xAD", + "\xFA\xB5" => "\xE9\xAA\xB8", + "\xFA\xB6" => "\xE5\x8A\xBE", + "\xFA\xB7" => "\xE6\xA0\xB8", + "\xFA\xB8" => "\xE5\x80\x96", + "\xFA\xB9" => "\xE5\xB9\xB8", + "\xFA\xBA" => "\xE6\x9D\x8F", + "\xFA\xBB" => "\xE8\x8D\x87", + "\xFA\xBC" => "\xE8\xA1\x8C", + "\xFA\xBD" => "\xE4\xBA\xAB", + "\xFA\xBE" => "\xE5\x90\x91", + "\xFA\xBF" => "\xE5\x9A\xAE", + "\xFA\xC0" => "\xE7\x8F\xA6", + "\xFA\xC1" => "\xE9\x84\x95", + "\xFA\xC2" => "\xE9\x9F\xBF", + "\xFA\xC3" => "\xE9\xA4\x89", + "\xFA\xC4" => "\xE9\xA5\x97", + "\xFA\xC5" => "\xE9\xA6\x99", + "\xFA\xC6" => "\xE5\x99\x93", + "\xFA\xC7" => "\xE5\xA2\x9F", + "\xFA\xC8" => "\xE8\x99\x9B", + "\xFA\xC9" => "\xE8\xA8\xB1", + "\xFA\xCA" => "\xE6\x86\xB2", + "\xFA\xCB" => "\xE6\xAB\xB6", + "\xFA\xCC" => "\xE7\x8D\xBB", + "\xFA\xCD" => "\xE8\xBB\x92", + "\xFA\xCE" => "\xE6\xAD\x87", + "\xFA\xCF" => "\xE9\x9A\xAA", + "\xFA\xD0" => "\xE9\xA9\x97", + "\xFA\xD1" => "\xE5\xA5\x95", + "\xFA\xD2" => "\xE7\x88\x80", + "\xFA\xD3" => "\xE8\xB5\xAB", + "\xFA\xD4" => "\xE9\x9D\xA9", + "\xFA\xD5" => "\xE4\xBF\x94", + "\xFA\xD6" => "\xE5\xB3\xB4", + "\xFA\xD7" => "\xE5\xBC\xA6", + "\xFA\xD8" => "\xE6\x87\xB8", + "\xFA\xD9" => "\xE6\x99\x9B", + "\xFA\xDA" => "\xE6\xB3\xAB", + "\xFA\xDB" => "\xE7\x82\xAB", + "\xFA\xDC" => "\xE7\x8E\x84", + "\xFA\xDD" => "\xE7\x8E\xB9", + "\xFA\xDE" => "\xE7\x8F\xBE", + "\xFA\xDF" => "\xE7\x9C\xA9", + "\xFA\xE0" => "\xE7\x9D\x8D", + "\xFA\xE1" => "\xE7\xB5\x83", + "\xFA\xE2" => "\xE7\xB5\xA2", + "\xFA\xE3" => "\xE7\xB8\xA3", + "\xFA\xE4" => "\xE8\x88\xB7", + "\xFA\xE5" => "\xE8\xA1\x92", + "\xFA\xE6" => "\xEF\xA8\x8A", + "\xFA\xE7" => "\xE8\xB3\xA2", + "\xFA\xE8" => "\xE9\x89\x89", + "\xFA\xE9" => "\xE9\xA1\xAF", + "\xFA\xEA" => "\xE5\xAD\x91", + "\xFA\xEB" => "\xE7\xA9\xB4", + "\xFA\xEC" => "\xE8\xA1\x80", + "\xFA\xED" => "\xE9\xA0\x81", + "\xFA\xEE" => "\xE5\xAB\x8C", + "\xFA\xEF" => "\xE4\xBF\xA0", + "\xFA\xF0" => "\xE5\x8D\x94", + "\xFA\xF1" => "\xE5\xA4\xBE", + "\xFA\xF2" => "\xE5\xB3\xBD", + "\xFA\xF3" => "\xE6\x8C\xBE", + "\xFA\xF4" => "\xE6\xB5\xB9", + "\xFA\xF5" => "\xE7\x8B\xB9", + "\xFA\xF6" => "\xE8\x84\x85", + "\xFA\xF7" => "\xE8\x84\x87", + "\xFA\xF8" => "\xE8\x8E\xA2", + "\xFA\xF9" => "\xE9\x8B\x8F", + "\xFA\xFA" => "\xE9\xA0\xB0", + "\xFA\xFB" => "\xE4\xBA\xA8", + "\xFA\xFC" => "\xE5\x85\x84", + "\xFA\xFD" => "\xE5\x88\x91", + "\xFA\xFE" => "\xE5\x9E\x8B", + "\xFB\xA1" => "\xE5\xBD\xA2", + "\xFB\xA2" => "\xE6\xB3\x82", + "\xFB\xA3" => "\xE6\xBB\x8E", + "\xFB\xA4" => "\xE7\x80\x85", + "\xFB\xA5" => "\xE7\x81\x90", + "\xFB\xA6" => "\xE7\x82\xAF", + "\xFB\xA7" => "\xE7\x86\x92", + "\xFB\xA8" => "\xE7\x8F\xA9", + "\xFB\xA9" => "\xE7\x91\xA9", + "\xFB\xAA" => "\xE8\x8D\x8A", + "\xFB\xAB" => "\xE8\x9E\xA2", + "\xFB\xAC" => "\xE8\xA1\xA1", + "\xFB\xAD" => "\xE9\x80\x88", + "\xFB\xAE" => "\xE9\x82\xA2", + "\xFB\xAF" => "\xE9\x8E\xA3", + "\xFB\xB0" => "\xE9\xA6\xA8", + "\xFB\xB1" => "\xE5\x85\xAE", + "\xFB\xB2" => "\xE5\xBD\x97", + "\xFB\xB3" => "\xE6\x83\xA0", + "\xFB\xB4" => "\xE6\x85\xA7", + "\xFB\xB5" => "\xE6\x9A\xB3", + "\xFB\xB6" => "\xE8\x95\x99", + "\xFB\xB7" => "\xE8\xB9\x8A", + "\xFB\xB8" => "\xE9\x86\xAF", + "\xFB\xB9" => "\xE9\x9E\x8B", + "\xFB\xBA" => "\xE4\xB9\x8E", + "\xFB\xBB" => "\xE4\xBA\x92", + "\xFB\xBC" => "\xE5\x91\xBC", + "\xFB\xBD" => "\xE5\xA3\x95", + "\xFB\xBE" => "\xE5\xA3\xBA", + "\xFB\xBF" => "\xE5\xA5\xBD", + "\xFB\xC0" => "\xE5\xB2\xB5", + "\xFB\xC1" => "\xE5\xBC\xA7", + "\xFB\xC2" => "\xE6\x88\xB6", + "\xFB\xC3" => "\xE6\x89\x88", + "\xFB\xC4" => "\xE6\x98\x8A", + "\xFB\xC5" => "\xE6\x99\xA7", + "\xFB\xC6" => "\xE6\xAF\xAB", + "\xFB\xC7" => "\xE6\xB5\xA9", + "\xFB\xC8" => "\xE6\xB7\x8F", + "\xFB\xC9" => "\xE6\xB9\x96", + "\xFB\xCA" => "\xE6\xBB\xB8", + "\xFB\xCB" => "\xE6\xBE\x94", + "\xFB\xCC" => "\xE6\xBF\xA0", + "\xFB\xCD" => "\xE6\xBF\xA9", + "\xFB\xCE" => "\xE7\x81\x9D", + "\xFB\xCF" => "\xE7\x8B\x90", + "\xFB\xD0" => "\xE7\x90\xA5", + "\xFB\xD1" => "\xE7\x91\x9A", + "\xFB\xD2" => "\xE7\x93\xA0", + "\xFB\xD3" => "\xE7\x9A\x93", + "\xFB\xD4" => "\xE7\xA5\x9C", + "\xFB\xD5" => "\xE7\xB3\x8A", + "\xFB\xD6" => "\xE7\xB8\x9E", + "\xFB\xD7" => "\xE8\x83\xA1", + "\xFB\xD8" => "\xE8\x8A\xA6", + "\xFB\xD9" => "\xE8\x91\xAB", + "\xFB\xDA" => "\xE8\x92\xBF", + "\xFB\xDB" => "\xE8\x99\x8E", + "\xFB\xDC" => "\xE8\x99\x9F", + "\xFB\xDD" => "\xE8\x9D\xB4", + "\xFB\xDE" => "\xE8\xAD\xB7", + "\xFB\xDF" => "\xE8\xB1\xAA", + "\xFB\xE0" => "\xE9\x8E\xAC", + "\xFB\xE1" => "\xE9\xA0\x80", + "\xFB\xE2" => "\xE9\xA1\xA5", + "\xFB\xE3" => "\xE6\x83\x91", + "\xFB\xE4" => "\xE6\x88\x96", + "\xFB\xE5" => "\xE9\x85\xB7", + "\xFB\xE6" => "\xE5\xA9\x9A", + "\xFB\xE7" => "\xE6\x98\x8F", + "\xFB\xE8" => "\xE6\xB7\xB7", + "\xFB\xE9" => "\xE6\xB8\xBE", + "\xFB\xEA" => "\xE7\x90\xBF", + "\xFB\xEB" => "\xE9\xAD\x82", + "\xFB\xEC" => "\xE5\xBF\xBD", + "\xFB\xED" => "\xE6\x83\x9A", + "\xFB\xEE" => "\xE7\xAC\x8F", + "\xFB\xEF" => "\xE5\x93\x84", + "\xFB\xF0" => "\xE5\xBC\x98", + "\xFB\xF1" => "\xE6\xB1\x9E", + "\xFB\xF2" => "\xE6\xB3\x93", + "\xFB\xF3" => "\xE6\xB4\xAA", + "\xFB\xF4" => "\xE7\x83\x98", + "\xFB\xF5" => "\xE7\xB4\x85", + "\xFB\xF6" => "\xE8\x99\xB9", + "\xFB\xF7" => "\xE8\xA8\x8C", + "\xFB\xF8" => "\xE9\xB4\xBB", + "\xFB\xF9" => "\xE5\x8C\x96", + "\xFB\xFA" => "\xE5\x92\x8C", + "\xFB\xFB" => "\xE5\xAC\x85", + "\xFB\xFC" => "\xE6\xA8\xBA", + "\xFB\xFD" => "\xE7\x81\xAB", + "\xFB\xFE" => "\xE7\x95\xB5", + "\xFC\xA1" => "\xE7\xA6\x8D", + "\xFC\xA2" => "\xE7\xA6\xBE", + "\xFC\xA3" => "\xE8\x8A\xB1", + "\xFC\xA4" => "\xE8\x8F\xAF", + "\xFC\xA5" => "\xE8\xA9\xB1", + "\xFC\xA6" => "\xE8\xAD\x81", + "\xFC\xA7" => "\xE8\xB2\xA8", + "\xFC\xA8" => "\xE9\x9D\xB4", + "\xFC\xA9" => "\xEF\xA8\x8B", + "\xFC\xAA" => "\xE6\x93\xB4", + "\xFC\xAB" => "\xE6\x94\xAB", + "\xFC\xAC" => "\xE7\xA2\xBA", + "\xFC\xAD" => "\xE7\xA2\xBB", + "\xFC\xAE" => "\xE7\xA9\xAB", + "\xFC\xAF" => "\xE4\xB8\xB8", + "\xFC\xB0" => "\xE5\x96\x9A", + "\xFC\xB1" => "\xE5\xA5\x90", + "\xFC\xB2" => "\xE5\xAE\xA6", + "\xFC\xB3" => "\xE5\xB9\xBB", + "\xFC\xB4" => "\xE6\x82\xA3", + "\xFC\xB5" => "\xE6\x8F\x9B", + "\xFC\xB6" => "\xE6\xAD\xA1", + "\xFC\xB7" => "\xE6\x99\xA5", + "\xFC\xB8" => "\xE6\xA1\x93", + "\xFC\xB9" => "\xE6\xB8\x99", + "\xFC\xBA" => "\xE7\x85\xA5", + "\xFC\xBB" => "\xE7\x92\xB0", + "\xFC\xBC" => "\xE7\xB4\x88", + "\xFC\xBD" => "\xE9\x82\x84", + "\xFC\xBE" => "\xE9\xA9\xA9", + "\xFC\xBF" => "\xE9\xB0\xA5", + "\xFC\xC0" => "\xE6\xB4\xBB", + "\xFC\xC1" => "\xE6\xBB\x91", + "\xFC\xC2" => "\xE7\x8C\xBE", + "\xFC\xC3" => "\xE8\xB1\x81", + "\xFC\xC4" => "\xE9\x97\x8A", + "\xFC\xC5" => "\xE5\x87\xB0", + "\xFC\xC6" => "\xE5\xB9\x8C", + "\xFC\xC7" => "\xE5\xBE\xA8", + "\xFC\xC8" => "\xE6\x81\x8D", + "\xFC\xC9" => "\xE6\x83\xB6", + "\xFC\xCA" => "\xE6\x84\xB0", + "\xFC\xCB" => "\xE6\x85\x8C", + "\xFC\xCC" => "\xE6\x99\x83", + "\xFC\xCD" => "\xE6\x99\x84", + "\xFC\xCE" => "\xE6\xA6\xA5", + "\xFC\xCF" => "\xE6\xB3\x81", + "\xFC\xD0" => "\xE6\xB9\x9F", + "\xFC\xD1" => "\xE6\xBB\x89", + "\xFC\xD2" => "\xE6\xBD\xA2", + "\xFC\xD3" => "\xE7\x85\x8C", + "\xFC\xD4" => "\xE7\x92\x9C", + "\xFC\xD5" => "\xE7\x9A\x87", + "\xFC\xD6" => "\xE7\xAF\x81", + "\xFC\xD7" => "\xE7\xB0\xA7", + "\xFC\xD8" => "\xE8\x8D\x92", + "\xFC\xD9" => "\xE8\x9D\x97", + "\xFC\xDA" => "\xE9\x81\x91", + "\xFC\xDB" => "\xE9\x9A\x8D", + "\xFC\xDC" => "\xE9\xBB\x83", + "\xFC\xDD" => "\xE5\x8C\xAF", + "\xFC\xDE" => "\xE5\x9B\x9E", + "\xFC\xDF" => "\xE5\xBB\xBB", + "\xFC\xE0" => "\xE5\xBE\x8A", + "\xFC\xE1" => "\xE6\x81\xA2", + "\xFC\xE2" => "\xE6\x82\x94", + "\xFC\xE3" => "\xE6\x87\xB7", + "\xFC\xE4" => "\xE6\x99\xA6", + "\xFC\xE5" => "\xE6\x9C\x83", + "\xFC\xE6" => "\xE6\xAA\x9C", + "\xFC\xE7" => "\xE6\xB7\xAE", + "\xFC\xE8" => "\xE6\xBE\xAE", + "\xFC\xE9" => "\xE7\x81\xB0", + "\xFC\xEA" => "\xE7\x8D\xAA", + "\xFC\xEB" => "\xE7\xB9\xAA", + "\xFC\xEC" => "\xE8\x86\xBE", + "\xFC\xED" => "\xE8\x8C\xB4", + "\xFC\xEE" => "\xE8\x9B\x94", + "\xFC\xEF" => "\xE8\xAA\xA8", + "\xFC\xF0" => "\xE8\xB3\x84", + "\xFC\xF1" => "\xE5\x8A\x83", + "\xFC\xF2" => "\xE7\x8D\xB2", + "\xFC\xF3" => "\xE5\xAE\x96", + "\xFC\xF4" => "\xE6\xA9\xAB", + "\xFC\xF5" => "\xE9\x90\x84", + "\xFC\xF6" => "\xE5\x93\xAE", + "\xFC\xF7" => "\xE5\x9A\x86", + "\xFC\xF8" => "\xE5\xAD\x9D", + "\xFC\xF9" => "\xE6\x95\x88", + "\xFC\xFA" => "\xE6\x96\x85", + "\xFC\xFB" => "\xE6\x9B\x89", + "\xFC\xFC" => "\xE6\xA2\x9F", + "\xFC\xFD" => "\xE6\xB6\x8D", + "\xFC\xFE" => "\xE6\xB7\x86", + "\xFD\xA1" => "\xE7\x88\xBB", + "\xFD\xA2" => "\xE8\x82\xB4", + "\xFD\xA3" => "\xE9\x85\xB5", + "\xFD\xA4" => "\xE9\xA9\x8D", + "\xFD\xA5" => "\xE4\xBE\xAF", + "\xFD\xA6" => "\xE5\x80\x99", + "\xFD\xA7" => "\xE5\x8E\x9A", + "\xFD\xA8" => "\xE5\x90\x8E", + "\xFD\xA9" => "\xE5\x90\xBC", + "\xFD\xAA" => "\xE5\x96\x89", + "\xFD\xAB" => "\xE5\x97\x85", + "\xFD\xAC" => "\xE5\xB8\xBF", + "\xFD\xAD" => "\xE5\xBE\x8C", + "\xFD\xAE" => "\xE6\x9C\xBD", + "\xFD\xAF" => "\xE7\x85\xA6", + "\xFD\xB0" => "\xE7\x8F\x9D", + "\xFD\xB1" => "\xE9\x80\x85", + "\xFD\xB2" => "\xE5\x8B\x9B", + "\xFD\xB3" => "\xE5\x8B\xB3", + "\xFD\xB4" => "\xE5\xA1\xA4", + "\xFD\xB5" => "\xE5\xA3\x8E", + "\xFD\xB6" => "\xE7\x84\x84", + "\xFD\xB7" => "\xE7\x86\x8F", + "\xFD\xB8" => "\xE7\x87\xBB", + "\xFD\xB9" => "\xE8\x96\xB0", + "\xFD\xBA" => "\xE8\xA8\x93", + "\xFD\xBB" => "\xE6\x9A\x88", + "\xFD\xBC" => "\xE8\x96\xA8", + "\xFD\xBD" => "\xE5\x96\xA7", + "\xFD\xBE" => "\xE6\x9A\x84", + "\xFD\xBF" => "\xE7\x85\x8A", + "\xFD\xC0" => "\xE8\x90\xB1", + "\xFD\xC1" => "\xE5\x8D\x89", + "\xFD\xC2" => "\xE5\x96\x99", + "\xFD\xC3" => "\xE6\xAF\x81", + "\xFD\xC4" => "\xE5\xBD\x99", + "\xFD\xC5" => "\xE5\xBE\xBD", + "\xFD\xC6" => "\xE6\x8F\xAE", + "\xFD\xC7" => "\xE6\x9A\x89", + "\xFD\xC8" => "\xE7\x85\x87", + "\xFD\xC9" => "\xE8\xAB\xB1", + "\xFD\xCA" => "\xE8\xBC\x9D", + "\xFD\xCB" => "\xE9\xBA\xBE", + "\xFD\xCC" => "\xE4\xBC\x91", + "\xFD\xCD" => "\xE6\x90\xBA", + "\xFD\xCE" => "\xE7\x83\x8B", + "\xFD\xCF" => "\xE7\x95\xA6", + "\xFD\xD0" => "\xE8\x99\xA7", + "\xFD\xD1" => "\xE6\x81\xA4", + "\xFD\xD2" => "\xE8\xAD\x8E", + "\xFD\xD3" => "\xE9\xB7\xB8", + "\xFD\xD4" => "\xE5\x85\x87", + "\xFD\xD5" => "\xE5\x87\xB6", + "\xFD\xD6" => "\xE5\x8C\x88", + "\xFD\xD7" => "\xE6\xB4\xB6", + "\xFD\xD8" => "\xE8\x83\xB8", + "\xFD\xD9" => "\xE9\xBB\x91", + "\xFD\xDA" => "\xE6\x98\x95", + "\xFD\xDB" => "\xE6\xAC\xA3", + "\xFD\xDC" => "\xE7\x82\x98", + "\xFD\xDD" => "\xE7\x97\x95", + "\xFD\xDE" => "\xE5\x90\x83", + "\xFD\xDF" => "\xE5\xB1\xB9", + "\xFD\xE0" => "\xE7\xB4\x87", + "\xFD\xE1" => "\xE8\xA8\x96", + "\xFD\xE2" => "\xE6\xAC\xA0", + "\xFD\xE3" => "\xE6\xAC\xBD", + "\xFD\xE4" => "\xE6\xAD\x86", + "\xFD\xE5" => "\xE5\x90\xB8", + "\xFD\xE6" => "\xE6\x81\xB0", + "\xFD\xE7" => "\xE6\xB4\xBD", + "\xFD\xE8" => "\xE7\xBF\x95", + "\xFD\xE9" => "\xE8\x88\x88", + "\xFD\xEA" => "\xE5\x83\x96", + "\xFD\xEB" => "\xE5\x87\x9E", + "\xFD\xEC" => "\xE5\x96\x9C", + "\xFD\xED" => "\xE5\x99\xAB", + "\xFD\xEE" => "\xE5\x9B\x8D", + "\xFD\xEF" => "\xE5\xA7\xAC", + "\xFD\xF0" => "\xE5\xAC\x89", + "\xFD\xF1" => "\xE5\xB8\x8C", + "\xFD\xF2" => "\xE6\x86\x99", + "\xFD\xF3" => "\xE6\x86\x98", + "\xFD\xF4" => "\xE6\x88\xB1", + "\xFD\xF5" => "\xE6\x99\x9E", + "\xFD\xF6" => "\xE6\x9B\xA6", + "\xFD\xF7" => "\xE7\x86\x99", + "\xFD\xF8" => "\xE7\x86\xB9", + "\xFD\xF9" => "\xE7\x86\xBA", + "\xFD\xFA" => "\xE7\x8A\xA7", + "\xFD\xFB" => "\xE7\xA6\xA7", + "\xFD\xFC" => "\xE7\xA8\x80", + "\xFD\xFD" => "\xE7\xBE\xB2", + "\xFD\xFE" => "\xE8\xA9\xB0", + ); + return strtr($string, $transform); +} + +function big5($string) +{ + static $transform = array( + "\xA1\x40" => "\xE3\x80\x80", + "\xA1\x41" => "\xEF\xBC\x8C", + "\xA1\x42" => "\xE3\x80\x81", + "\xA1\x43" => "\xE3\x80\x82", + "\xA1\x44" => "\xEF\xBC\x8E", + "\xA1\x45" => "\xE2\x80\xA2", + "\xA1\x46" => "\xEF\xBC\x9B", + "\xA1\x47" => "\xEF\xBC\x9A", + "\xA1\x48" => "\xEF\xBC\x9F", + "\xA1\x49" => "\xEF\xBC\x81", + "\xA1\x4A" => "\xEF\xB8\xB0", + "\xA1\x4B" => "\xE2\x80\xA6", + "\xA1\x4C" => "\xE2\x80\xA5", + "\xA1\x4D" => "\xEF\xB9\x90", + "\xA1\x4E" => "\xEF\xBD\xA4", + "\xA1\x4F" => "\xEF\xB9\x92", + "\xA1\x50" => "\xC2\xB7", + "\xA1\x51" => "\xEF\xB9\x94", + "\xA1\x52" => "\xEF\xB9\x95", + "\xA1\x53" => "\xEF\xB9\x96", + "\xA1\x54" => "\xEF\xB9\x97", + "\xA1\x55" => "\xEF\xBD\x9C", + "\xA1\x56" => "\xE2\x80\x93", + "\xA1\x57" => "\xEF\xB8\xB1", + "\xA1\x58" => "\xE2\x80\x94", + "\xA1\x59" => "\xEF\xB8\xB3", + "\xA1\x5A" => "\xEF\xBF\xBD", + "\xA1\x5B" => "\xEF\xB8\xB4", + "\xA1\x5C" => "\xEF\xB9\x8F", + "\xA1\x5D" => "\xEF\xBC\x88", + "\xA1\x5E" => "\xEF\xBC\x89", + "\xA1\x5F" => "\xEF\xB8\xB5", + "\xA1\x60" => "\xEF\xB8\xB6", + "\xA1\x61" => "\xEF\xBD\x9B", + "\xA1\x62" => "\xEF\xBD\x9D", + "\xA1\x63" => "\xEF\xB8\xB7", + "\xA1\x64" => "\xEF\xB8\xB8", + "\xA1\x65" => "\xE3\x80\x94", + "\xA1\x66" => "\xE3\x80\x95", + "\xA1\x67" => "\xEF\xB8\xB9", + "\xA1\x68" => "\xEF\xB8\xBA", + "\xA1\x69" => "\xE3\x80\x90", + "\xA1\x6A" => "\xE3\x80\x91", + "\xA1\x6B" => "\xEF\xB8\xBB", + "\xA1\x6C" => "\xEF\xB8\xBC", + "\xA1\x6D" => "\xE3\x80\x8A", + "\xA1\x6E" => "\xE3\x80\x8B", + "\xA1\x6F" => "\xEF\xB8\xBD", + "\xA1\x70" => "\xEF\xB8\xBE", + "\xA1\x71" => "\xE3\x80\x88", + "\xA1\x72" => "\xE3\x80\x89", + "\xA1\x73" => "\xEF\xB8\xBF", + "\xA1\x74" => "\xEF\xB9\x80", + "\xA1\x75" => "\xE3\x80\x8C", + "\xA1\x76" => "\xE3\x80\x8D", + "\xA1\x77" => "\xEF\xB9\x81", + "\xA1\x78" => "\xEF\xB9\x82", + "\xA1\x79" => "\xE3\x80\x8E", + "\xA1\x7A" => "\xE3\x80\x8F", + "\xA1\x7B" => "\xEF\xB9\x83", + "\xA1\x7C" => "\xEF\xB9\x84", + "\xA1\x7D" => "\xEF\xB9\x99", + "\xA1\x7E" => "\xEF\xB9\x9A", + "\xA1\xA1" => "\xEF\xB9\x9B", + "\xA1\xA2" => "\xEF\xB9\x9C", + "\xA1\xA3" => "\xEF\xB9\x9D", + "\xA1\xA4" => "\xEF\xB9\x9E", + "\xA1\xA5" => "\xE2\x80\x98", + "\xA1\xA6" => "\xE2\x80\x99", + "\xA1\xA7" => "\xE2\x80\x9C", + "\xA1\xA8" => "\xE2\x80\x9D", + "\xA1\xA9" => "\xE3\x80\x9D", + "\xA1\xAA" => "\xE3\x80\x9E", + "\xA1\xAB" => "\xE2\x80\xB5", + "\xA1\xAC" => "\xE2\x80\xB2", + "\xA1\xAD" => "\xEF\xBC\x83", + "\xA1\xAE" => "\xEF\xBC\x86", + "\xA1\xAF" => "\xEF\xBC\x8A", + "\xA1\xB0" => "\xE2\x80\xBB", + "\xA1\xB1" => "\xC2\xA7", + "\xA1\xB2" => "\xE3\x80\x83", + "\xA1\xB3" => "\xE2\x97\x8B", + "\xA1\xB4" => "\xE2\x97\x8F", + "\xA1\xB5" => "\xE2\x96\xB3", + "\xA1\xB6" => "\xE2\x96\xB2", + "\xA1\xB7" => "\xE2\x97\x8E", + "\xA1\xB8" => "\xE2\x98\x86", + "\xA1\xB9" => "\xE2\x98\x85", + "\xA1\xBA" => "\xE2\x97\x87", + "\xA1\xBB" => "\xE2\x97\x86", + "\xA1\xBC" => "\xE2\x96\xA1", + "\xA1\xBD" => "\xE2\x96\xA0", + "\xA1\xBE" => "\xE2\x96\xBD", + "\xA1\xBF" => "\xE2\x96\xBC", + "\xA1\xC0" => "\xE3\x8A\xA3", + "\xA1\xC1" => "\xE2\x84\x85", + "\xA1\xC2" => "\xE2\x80\xBE", + "\xA1\xC3" => "\xEF\xBF\xBD", + "\xA1\xC4" => "\xEF\xBC\xBF", + "\xA1\xC5" => "\xEF\xBF\xBD", + "\xA1\xC6" => "\xEF\xB9\x89", + "\xA1\xC7" => "\xEF\xB9\x8A", + "\xA1\xC8" => "\xEF\xB9\x8D", + "\xA1\xC9" => "\xEF\xB9\x8E", + "\xA1\xCA" => "\xEF\xB9\x8B", + "\xA1\xCB" => "\xEF\xB9\x8C", + "\xA1\xCC" => "\xEF\xB9\x9F", + "\xA1\xCD" => "\xEF\xB9\xA0", + "\xA1\xCE" => "\xEF\xB9\xA1", + "\xA1\xCF" => "\xEF\xBC\x8B", + "\xA1\xD0" => "\xEF\xBC\x8D", + "\xA1\xD1" => "\xC3\x97", + "\xA1\xD2" => "\xC3\xB7", + "\xA1\xD3" => "\xC2\xB1", + "\xA1\xD4" => "\xE2\x88\x9A", + "\xA1\xD5" => "\xEF\xBC\x9C", + "\xA1\xD6" => "\xEF\xBC\x9E", + "\xA1\xD7" => "\xEF\xBC\x9D", + "\xA1\xD8" => "\xE2\x89\xA6", + "\xA1\xD9" => "\xE2\x89\xA7", + "\xA1\xDA" => "\xE2\x89\xA0", + "\xA1\xDB" => "\xE2\x88\x9E", + "\xA1\xDC" => "\xE2\x89\x92", + "\xA1\xDD" => "\xE2\x89\xA1", + "\xA1\xDE" => "\xEF\xB9\xA2", + "\xA1\xDF" => "\xEF\xB9\xA3", + "\xA1\xE0" => "\xEF\xB9\xA4", + "\xA1\xE1" => "\xEF\xB9\xA5", + "\xA1\xE2" => "\xEF\xB9\xA6", + "\xA1\xE3" => "\xE2\x88\xBC", + "\xA1\xE4" => "\xE2\x88\xA9", + "\xA1\xE5" => "\xE2\x88\xAA", + "\xA1\xE6" => "\xE2\x8A\xA5", + "\xA1\xE7" => "\xE2\x88\xA0", + "\xA1\xE8" => "\xE2\x88\x9F", + "\xA1\xE9" => "\xE2\x8A\xBF", + "\xA1\xEA" => "\xE3\x8F\x92", + "\xA1\xEB" => "\xE3\x8F\x91", + "\xA1\xEC" => "\xE2\x88\xAB", + "\xA1\xED" => "\xE2\x88\xAE", + "\xA1\xEE" => "\xE2\x88\xB5", + "\xA1\xEF" => "\xE2\x88\xB4", + "\xA1\xF0" => "\xE2\x99\x80", + "\xA1\xF1" => "\xE2\x99\x82", + "\xA1\xF2" => "\xE2\x99\x81", + "\xA1\xF3" => "\xE2\x98\x89", + "\xA1\xF4" => "\xE2\x86\x91", + "\xA1\xF5" => "\xE2\x86\x93", + "\xA1\xF6" => "\xE2\x86\x90", + "\xA1\xF7" => "\xE2\x86\x92", + "\xA1\xF8" => "\xE2\x86\x96", + "\xA1\xF9" => "\xE2\x86\x97", + "\xA1\xFA" => "\xE2\x86\x99", + "\xA1\xFB" => "\xE2\x86\x98", + "\xA1\xFC" => "\xE2\x88\xA5", + "\xA1\xFD" => "\xE2\x88\xA3", + "\xA1\xFE" => "\xEF\xBF\xBD", + "\xA2\x40" => "\xEF\xBF\xBD", + "\xA2\x41" => "\xEF\xBC\x8F", + "\xA2\x42" => "\xEF\xBC\xBC", + "\xA2\x43" => "\xEF\xBC\x84", + "\xA2\x44" => "\xC2\xA5", + "\xA2\x45" => "\xE3\x80\x92", + "\xA2\x46" => "\xC2\xA2", + "\xA2\x47" => "\xC2\xA3", + "\xA2\x48" => "\xEF\xBC\x85", + "\xA2\x49" => "\xEF\xBC\xA0", + "\xA2\x4A" => "\xE2\x84\x83", + "\xA2\x4B" => "\xE2\x84\x89", + "\xA2\x4C" => "\xEF\xB9\xA9", + "\xA2\x4D" => "\xEF\xB9\xAA", + "\xA2\x4E" => "\xEF\xB9\xAB", + "\xA2\x4F" => "\xE3\x8F\x95", + "\xA2\x50" => "\xE3\x8E\x9C", + "\xA2\x51" => "\xE3\x8E\x9D", + "\xA2\x52" => "\xE3\x8E\x9E", + "\xA2\x53" => "\xE3\x8F\x8E", + "\xA2\x54" => "\xE3\x8E\xA1", + "\xA2\x55" => "\xE3\x8E\x8E", + "\xA2\x56" => "\xE3\x8E\x8F", + "\xA2\x57" => "\xE3\x8F\x84", + "\xA2\x58" => "\xC2\xB0", + "\xA2\x59" => "\xE5\x85\x99", + "\xA2\x5A" => "\xE5\x85\x9B", + "\xA2\x5B" => "\xE5\x85\x9E", + "\xA2\x5C" => "\xE5\x85\x9D", + "\xA2\x5D" => "\xE5\x85\xA1", + "\xA2\x5E" => "\xE5\x85\xA3", + "\xA2\x5F" => "\xE5\x97\xA7", + "\xA2\x60" => "\xE7\x93\xA9", + "\xA2\x61" => "\xE7\xB3\x8E", + "\xA2\x62" => "\xE2\x96\x81", + "\xA2\x63" => "\xE2\x96\x82", + "\xA2\x64" => "\xE2\x96\x83", + "\xA2\x65" => "\xE2\x96\x84", + "\xA2\x66" => "\xE2\x96\x85", + "\xA2\x67" => "\xE2\x96\x86", + "\xA2\x68" => "\xE2\x96\x87", + "\xA2\x69" => "\xE2\x96\x88", + "\xA2\x6A" => "\xE2\x96\x8F", + "\xA2\x6B" => "\xE2\x96\x8E", + "\xA2\x6C" => "\xE2\x96\x8D", + "\xA2\x6D" => "\xE2\x96\x8C", + "\xA2\x6E" => "\xE2\x96\x8B", + "\xA2\x6F" => "\xE2\x96\x8A", + "\xA2\x70" => "\xE2\x96\x89", + "\xA2\x71" => "\xE2\x94\xBC", + "\xA2\x72" => "\xE2\x94\xB4", + "\xA2\x73" => "\xE2\x94\xAC", + "\xA2\x74" => "\xE2\x94\xA4", + "\xA2\x75" => "\xE2\x94\x9C", + "\xA2\x76" => "\xE2\x96\x94", + "\xA2\x77" => "\xE2\x94\x80", + "\xA2\x78" => "\xE2\x94\x82", + "\xA2\x79" => "\xE2\x96\x95", + "\xA2\x7A" => "\xE2\x94\x8C", + "\xA2\x7B" => "\xE2\x94\x90", + "\xA2\x7C" => "\xE2\x94\x94", + "\xA2\x7D" => "\xE2\x94\x98", + "\xA2\x7E" => "\xE2\x95\xAD", + "\xA2\xA1" => "\xE2\x95\xAE", + "\xA2\xA2" => "\xE2\x95\xB0", + "\xA2\xA3" => "\xE2\x95\xAF", + "\xA2\xA4" => "\xE2\x95\x90", + "\xA2\xA5" => "\xE2\x95\x9E", + "\xA2\xA6" => "\xE2\x95\xAA", + "\xA2\xA7" => "\xE2\x95\xA1", + "\xA2\xA8" => "\xE2\x97\xA2", + "\xA2\xA9" => "\xE2\x97\xA3", + "\xA2\xAA" => "\xE2\x97\xA5", + "\xA2\xAB" => "\xE2\x97\xA4", + "\xA2\xAC" => "\xE2\x95\xB1", + "\xA2\xAD" => "\xE2\x95\xB2", + "\xA2\xAE" => "\xE2\x95\xB3", + "\xA2\xAF" => "\xEF\xBC\x90", + "\xA2\xB0" => "\xEF\xBC\x91", + "\xA2\xB1" => "\xEF\xBC\x92", + "\xA2\xB2" => "\xEF\xBC\x93", + "\xA2\xB3" => "\xEF\xBC\x94", + "\xA2\xB4" => "\xEF\xBC\x95", + "\xA2\xB5" => "\xEF\xBC\x96", + "\xA2\xB6" => "\xEF\xBC\x97", + "\xA2\xB7" => "\xEF\xBC\x98", + "\xA2\xB8" => "\xEF\xBC\x99", + "\xA2\xB9" => "\xE2\x85\xA0", + "\xA2\xBA" => "\xE2\x85\xA1", + "\xA2\xBB" => "\xE2\x85\xA2", + "\xA2\xBC" => "\xE2\x85\xA3", + "\xA2\xBD" => "\xE2\x85\xA4", + "\xA2\xBE" => "\xE2\x85\xA5", + "\xA2\xBF" => "\xE2\x85\xA6", + "\xA2\xC0" => "\xE2\x85\xA7", + "\xA2\xC1" => "\xE2\x85\xA8", + "\xA2\xC2" => "\xE2\x85\xA9", + "\xA2\xC3" => "\xE3\x80\xA1", + "\xA2\xC4" => "\xE3\x80\xA2", + "\xA2\xC5" => "\xE3\x80\xA3", + "\xA2\xC6" => "\xE3\x80\xA4", + "\xA2\xC7" => "\xE3\x80\xA5", + "\xA2\xC8" => "\xE3\x80\xA6", + "\xA2\xC9" => "\xE3\x80\xA7", + "\xA2\xCA" => "\xE3\x80\xA8", + "\xA2\xCB" => "\xE3\x80\xA9", + "\xA2\xCC" => "\xEF\xBF\xBD", + "\xA2\xCD" => "\xE5\x8D\x84", + "\xA2\xCE" => "\xEF\xBF\xBD", + "\xA2\xCF" => "\xEF\xBC\xA1", + "\xA2\xD0" => "\xEF\xBC\xA2", + "\xA2\xD1" => "\xEF\xBC\xA3", + "\xA2\xD2" => "\xEF\xBC\xA4", + "\xA2\xD3" => "\xEF\xBC\xA5", + "\xA2\xD4" => "\xEF\xBC\xA6", + "\xA2\xD5" => "\xEF\xBC\xA7", + "\xA2\xD6" => "\xEF\xBC\xA8", + "\xA2\xD7" => "\xEF\xBC\xA9", + "\xA2\xD8" => "\xEF\xBC\xAA", + "\xA2\xD9" => "\xEF\xBC\xAB", + "\xA2\xDA" => "\xEF\xBC\xAC", + "\xA2\xDB" => "\xEF\xBC\xAD", + "\xA2\xDC" => "\xEF\xBC\xAE", + "\xA2\xDD" => "\xEF\xBC\xAF", + "\xA2\xDE" => "\xEF\xBC\xB0", + "\xA2\xDF" => "\xEF\xBC\xB1", + "\xA2\xE0" => "\xEF\xBC\xB2", + "\xA2\xE1" => "\xEF\xBC\xB3", + "\xA2\xE2" => "\xEF\xBC\xB4", + "\xA2\xE3" => "\xEF\xBC\xB5", + "\xA2\xE4" => "\xEF\xBC\xB6", + "\xA2\xE5" => "\xEF\xBC\xB7", + "\xA2\xE6" => "\xEF\xBC\xB8", + "\xA2\xE7" => "\xEF\xBC\xB9", + "\xA2\xE8" => "\xEF\xBC\xBA", + "\xA2\xE9" => "\xEF\xBD\x81", + "\xA2\xEA" => "\xEF\xBD\x82", + "\xA2\xEB" => "\xEF\xBD\x83", + "\xA2\xEC" => "\xEF\xBD\x84", + "\xA2\xED" => "\xEF\xBD\x85", + "\xA2\xEE" => "\xEF\xBD\x86", + "\xA2\xEF" => "\xEF\xBD\x87", + "\xA2\xF0" => "\xEF\xBD\x88", + "\xA2\xF1" => "\xEF\xBD\x89", + "\xA2\xF2" => "\xEF\xBD\x8A", + "\xA2\xF3" => "\xEF\xBD\x8B", + "\xA2\xF4" => "\xEF\xBD\x8C", + "\xA2\xF5" => "\xEF\xBD\x8D", + "\xA2\xF6" => "\xEF\xBD\x8E", + "\xA2\xF7" => "\xEF\xBD\x8F", + "\xA2\xF8" => "\xEF\xBD\x90", + "\xA2\xF9" => "\xEF\xBD\x91", + "\xA2\xFA" => "\xEF\xBD\x92", + "\xA2\xFB" => "\xEF\xBD\x93", + "\xA2\xFC" => "\xEF\xBD\x94", + "\xA2\xFD" => "\xEF\xBD\x95", + "\xA2\xFE" => "\xEF\xBD\x96", + "\xA3\x40" => "\xEF\xBD\x97", + "\xA3\x41" => "\xEF\xBD\x98", + "\xA3\x42" => "\xEF\xBD\x99", + "\xA3\x43" => "\xEF\xBD\x9A", + "\xA3\x44" => "\xCE\x91", + "\xA3\x45" => "\xCE\x92", + "\xA3\x46" => "\xCE\x93", + "\xA3\x47" => "\xCE\x94", + "\xA3\x48" => "\xCE\x95", + "\xA3\x49" => "\xCE\x96", + "\xA3\x4A" => "\xCE\x97", + "\xA3\x4B" => "\xCE\x98", + "\xA3\x4C" => "\xCE\x99", + "\xA3\x4D" => "\xCE\x9A", + "\xA3\x4E" => "\xCE\x9B", + "\xA3\x4F" => "\xCE\x9C", + "\xA3\x50" => "\xCE\x9D", + "\xA3\x51" => "\xCE\x9E", + "\xA3\x52" => "\xCE\x9F", + "\xA3\x53" => "\xCE\xA0", + "\xA3\x54" => "\xCE\xA1", + "\xA3\x55" => "\xCE\xA3", + "\xA3\x56" => "\xCE\xA4", + "\xA3\x57" => "\xCE\xA5", + "\xA3\x58" => "\xCE\xA6", + "\xA3\x59" => "\xCE\xA7", + "\xA3\x5A" => "\xCE\xA8", + "\xA3\x5B" => "\xCE\xA9", + "\xA3\x5C" => "\xCE\xB1", + "\xA3\x5D" => "\xCE\xB2", + "\xA3\x5E" => "\xCE\xB3", + "\xA3\x5F" => "\xCE\xB4", + "\xA3\x60" => "\xCE\xB5", + "\xA3\x61" => "\xCE\xB6", + "\xA3\x62" => "\xCE\xB7", + "\xA3\x63" => "\xCE\xB8", + "\xA3\x64" => "\xCE\xB9", + "\xA3\x65" => "\xCE\xBA", + "\xA3\x66" => "\xCE\xBB", + "\xA3\x67" => "\xCE\xBC", + "\xA3\x68" => "\xCE\xBD", + "\xA3\x69" => "\xCE\xBE", + "\xA3\x6A" => "\xCE\xBF", + "\xA3\x6B" => "\xCF\x80", + "\xA3\x6C" => "\xCF\x81", + "\xA3\x6D" => "\xCF\x83", + "\xA3\x6E" => "\xCF\x84", + "\xA3\x6F" => "\xCF\x85", + "\xA3\x70" => "\xCF\x86", + "\xA3\x71" => "\xCF\x87", + "\xA3\x72" => "\xCF\x88", + "\xA3\x73" => "\xCF\x89", + "\xA3\x74" => "\xE3\x84\x85", + "\xA3\x75" => "\xE3\x84\x86", + "\xA3\x76" => "\xE3\x84\x87", + "\xA3\x77" => "\xE3\x84\x88", + "\xA3\x78" => "\xE3\x84\x89", + "\xA3\x79" => "\xE3\x84\x8A", + "\xA3\x7A" => "\xE3\x84\x8B", + "\xA3\x7B" => "\xE3\x84\x8C", + "\xA3\x7C" => "\xE3\x84\x8D", + "\xA3\x7D" => "\xE3\x84\x8E", + "\xA3\x7E" => "\xE3\x84\x8F", + "\xA3\xA1" => "\xE3\x84\x90", + "\xA3\xA2" => "\xE3\x84\x91", + "\xA3\xA3" => "\xE3\x84\x92", + "\xA3\xA4" => "\xE3\x84\x93", + "\xA3\xA5" => "\xE3\x84\x94", + "\xA3\xA6" => "\xE3\x84\x95", + "\xA3\xA7" => "\xE3\x84\x96", + "\xA3\xA8" => "\xE3\x84\x97", + "\xA3\xA9" => "\xE3\x84\x98", + "\xA3\xAA" => "\xE3\x84\x99", + "\xA3\xAB" => "\xE3\x84\x9A", + "\xA3\xAC" => "\xE3\x84\x9B", + "\xA3\xAD" => "\xE3\x84\x9C", + "\xA3\xAE" => "\xE3\x84\x9D", + "\xA3\xAF" => "\xE3\x84\x9E", + "\xA3\xB0" => "\xE3\x84\x9F", + "\xA3\xB1" => "\xE3\x84\xA0", + "\xA3\xB2" => "\xE3\x84\xA1", + "\xA3\xB3" => "\xE3\x84\xA2", + "\xA3\xB4" => "\xE3\x84\xA3", + "\xA3\xB5" => "\xE3\x84\xA4", + "\xA3\xB6" => "\xE3\x84\xA5", + "\xA3\xB7" => "\xE3\x84\xA6", + "\xA3\xB8" => "\xE3\x84\xA7", + "\xA3\xB9" => "\xE3\x84\xA8", + "\xA3\xBA" => "\xE3\x84\xA9", + "\xA3\xBB" => "\xCB\x99", + "\xA3\xBC" => "\xCB\x89", + "\xA3\xBD" => "\xCB\x8A", + "\xA3\xBE" => "\xCB\x87", + "\xA3\xBF" => "\xCB\x8B", + "\xA4\x40" => "\xE4\xB8\x80", + "\xA4\x41" => "\xE4\xB9\x99", + "\xA4\x42" => "\xE4\xB8\x81", + "\xA4\x43" => "\xE4\xB8\x83", + "\xA4\x44" => "\xE4\xB9\x83", + "\xA4\x45" => "\xE4\xB9\x9D", + "\xA4\x46" => "\xE4\xBA\x86", + "\xA4\x47" => "\xE4\xBA\x8C", + "\xA4\x48" => "\xE4\xBA\xBA", + "\xA4\x49" => "\xE5\x84\xBF", + "\xA4\x4A" => "\xE5\x85\xA5", + "\xA4\x4B" => "\xE5\x85\xAB", + "\xA4\x4C" => "\xE5\x87\xA0", + "\xA4\x4D" => "\xE5\x88\x80", + "\xA4\x4E" => "\xE5\x88\x81", + "\xA4\x4F" => "\xE5\x8A\x9B", + "\xA4\x50" => "\xE5\x8C\x95", + "\xA4\x51" => "\xE5\x8D\x81", + "\xA4\x52" => "\xE5\x8D\x9C", + "\xA4\x53" => "\xE5\x8F\x88", + "\xA4\x54" => "\xE4\xB8\x89", + "\xA4\x55" => "\xE4\xB8\x8B", + "\xA4\x56" => "\xE4\xB8\x88", + "\xA4\x57" => "\xE4\xB8\x8A", + "\xA4\x58" => "\xE4\xB8\xAB", + "\xA4\x59" => "\xE4\xB8\xB8", + "\xA4\x5A" => "\xE5\x87\xA1", + "\xA4\x5B" => "\xE4\xB9\x85", + "\xA4\x5C" => "\xE4\xB9\x88", + "\xA4\x5D" => "\xE4\xB9\x9F", + "\xA4\x5E" => "\xE4\xB9\x9E", + "\xA4\x5F" => "\xE4\xBA\x8E", + "\xA4\x60" => "\xE4\xBA\xA1", + "\xA4\x61" => "\xE5\x85\x80", + "\xA4\x62" => "\xE5\x88\x83", + "\xA4\x63" => "\xE5\x8B\xBA", + "\xA4\x64" => "\xE5\x8D\x83", + "\xA4\x65" => "\xE5\x8F\x89", + "\xA4\x66" => "\xE5\x8F\xA3", + "\xA4\x67" => "\xE5\x9C\x9F", + "\xA4\x68" => "\xE5\xA3\xAB", + "\xA4\x69" => "\xE5\xA4\x95", + "\xA4\x6A" => "\xE5\xA4\xA7", + "\xA4\x6B" => "\xE5\xA5\xB3", + "\xA4\x6C" => "\xE5\xAD\x90", + "\xA4\x6D" => "\xE5\xAD\x91", + "\xA4\x6E" => "\xE5\xAD\x93", + "\xA4\x6F" => "\xE5\xAF\xB8", + "\xA4\x70" => "\xE5\xB0\x8F", + "\xA4\x71" => "\xE5\xB0\xA2", + "\xA4\x72" => "\xE5\xB0\xB8", + "\xA4\x73" => "\xE5\xB1\xB1", + "\xA4\x74" => "\xE5\xB7\x9D", + "\xA4\x75" => "\xE5\xB7\xA5", + "\xA4\x76" => "\xE5\xB7\xB1", + "\xA4\x77" => "\xE5\xB7\xB2", + "\xA4\x78" => "\xE5\xB7\xB3", + "\xA4\x79" => "\xE5\xB7\xBE", + "\xA4\x7A" => "\xE5\xB9\xB2", + "\xA4\x7B" => "\xE5\xBB\xBE", + "\xA4\x7C" => "\xE5\xBC\x8B", + "\xA4\x7D" => "\xE5\xBC\x93", + "\xA4\x7E" => "\xE6\x89\x8D", + "\xA4\xA1" => "\xE4\xB8\x91", + "\xA4\xA2" => "\xE4\xB8\x90", + "\xA4\xA3" => "\xE4\xB8\x8D", + "\xA4\xA4" => "\xE4\xB8\xAD", + "\xA4\xA5" => "\xE4\xB8\xB0", + "\xA4\xA6" => "\xE4\xB8\xB9", + "\xA4\xA7" => "\xE4\xB9\x8B", + "\xA4\xA8" => "\xE5\xB0\xB9", + "\xA4\xA9" => "\xE4\xBA\x88", + "\xA4\xAA" => "\xE4\xBA\x91", + "\xA4\xAB" => "\xE4\xBA\x95", + "\xA4\xAC" => "\xE4\xBA\x92", + "\xA4\xAD" => "\xE4\xBA\x94", + "\xA4\xAE" => "\xE4\xBA\xA2", + "\xA4\xAF" => "\xE4\xBB\x81", + "\xA4\xB0" => "\xE4\xBB\x80", + "\xA4\xB1" => "\xE4\xBB\x83", + "\xA4\xB2" => "\xE4\xBB\x86", + "\xA4\xB3" => "\xE4\xBB\x87", + "\xA4\xB4" => "\xE4\xBB\x8D", + "\xA4\xB5" => "\xE4\xBB\x8A", + "\xA4\xB6" => "\xE4\xBB\x8B", + "\xA4\xB7" => "\xE4\xBB\x84", + "\xA4\xB8" => "\xE5\x85\x83", + "\xA4\xB9" => "\xE5\x85\x81", + "\xA4\xBA" => "\xE5\x85\xA7", + "\xA4\xBB" => "\xE5\x85\xAD", + "\xA4\xBC" => "\xE5\x85\xAE", + "\xA4\xBD" => "\xE5\x85\xAC", + "\xA4\xBE" => "\xE5\x86\x97", + "\xA4\xBF" => "\xE5\x87\xB6", + "\xA4\xC0" => "\xE5\x88\x86", + "\xA4\xC1" => "\xE5\x88\x87", + "\xA4\xC2" => "\xE5\x88\x88", + "\xA4\xC3" => "\xE5\x8B\xBB", + "\xA4\xC4" => "\xE5\x8B\xBE", + "\xA4\xC5" => "\xE5\x8B\xBF", + "\xA4\xC6" => "\xE5\x8C\x96", + "\xA4\xC7" => "\xE5\x8C\xB9", + "\xA4\xC8" => "\xE5\x8D\x88", + "\xA4\xC9" => "\xE5\x8D\x87", + "\xA4\xCA" => "\xE5\x8D\x85", + "\xA4\xCB" => "\xE5\x8D\x9E", + "\xA4\xCC" => "\xE5\x8E\x84", + "\xA4\xCD" => "\xE5\x8F\x8B", + "\xA4\xCE" => "\xE5\x8F\x8A", + "\xA4\xCF" => "\xE5\x8F\x8D", + "\xA4\xD0" => "\xE5\xA3\xAC", + "\xA4\xD1" => "\xE5\xA4\xA9", + "\xA4\xD2" => "\xE5\xA4\xAB", + "\xA4\xD3" => "\xE5\xA4\xAA", + "\xA4\xD4" => "\xE5\xA4\xAD", + "\xA4\xD5" => "\xE5\xAD\x94", + "\xA4\xD6" => "\xE5\xB0\x91", + "\xA4\xD7" => "\xE5\xB0\xA4", + "\xA4\xD8" => "\xE5\xB0\xBA", + "\xA4\xD9" => "\xE5\xB1\xAF", + "\xA4\xDA" => "\xE5\xB7\xB4", + "\xA4\xDB" => "\xE5\xB9\xBB", + "\xA4\xDC" => "\xE5\xBB\xBF", + "\xA4\xDD" => "\xE5\xBC\x94", + "\xA4\xDE" => "\xE5\xBC\x95", + "\xA4\xDF" => "\xE5\xBF\x83", + "\xA4\xE0" => "\xE6\x88\x88", + "\xA4\xE1" => "\xE6\x88\xB6", + "\xA4\xE2" => "\xE6\x89\x8B", + "\xA4\xE3" => "\xE6\x89\x8E", + "\xA4\xE4" => "\xE6\x94\xAF", + "\xA4\xE5" => "\xE6\x96\x87", + "\xA4\xE6" => "\xE6\x96\x97", + "\xA4\xE7" => "\xE6\x96\xA4", + "\xA4\xE8" => "\xE6\x96\xB9", + "\xA4\xE9" => "\xE6\x97\xA5", + "\xA4\xEA" => "\xE6\x9B\xB0", + "\xA4\xEB" => "\xE6\x9C\x88", + "\xA4\xEC" => "\xE6\x9C\xA8", + "\xA4\xED" => "\xE6\xAC\xA0", + "\xA4\xEE" => "\xE6\xAD\xA2", + "\xA4\xEF" => "\xE6\xAD\xB9", + "\xA4\xF0" => "\xE6\xAF\x8B", + "\xA4\xF1" => "\xE6\xAF\x94", + "\xA4\xF2" => "\xE6\xAF\x9B", + "\xA4\xF3" => "\xE6\xB0\x8F", + "\xA4\xF4" => "\xE6\xB0\xB4", + "\xA4\xF5" => "\xE7\x81\xAB", + "\xA4\xF6" => "\xE7\x88\xAA", + "\xA4\xF7" => "\xE7\x88\xB6", + "\xA4\xF8" => "\xE7\x88\xBB", + "\xA4\xF9" => "\xE7\x89\x87", + "\xA4\xFA" => "\xE7\x89\x99", + "\xA4\xFB" => "\xE7\x89\x9B", + "\xA4\xFC" => "\xE7\x8A\xAC", + "\xA4\xFD" => "\xE7\x8E\x8B", + "\xA4\xFE" => "\xE4\xB8\x99", + "\xA5\x40" => "\xE4\xB8\x96", + "\xA5\x41" => "\xE4\xB8\x95", + "\xA5\x42" => "\xE4\xB8\x94", + "\xA5\x43" => "\xE4\xB8\x98", + "\xA5\x44" => "\xE4\xB8\xBB", + "\xA5\x45" => "\xE4\xB9\x8D", + "\xA5\x46" => "\xE4\xB9\x8F", + "\xA5\x47" => "\xE4\xB9\x8E", + "\xA5\x48" => "\xE4\xBB\xA5", + "\xA5\x49" => "\xE4\xBB\x98", + "\xA5\x4A" => "\xE4\xBB\x94", + "\xA5\x4B" => "\xE4\xBB\x95", + "\xA5\x4C" => "\xE4\xBB\x96", + "\xA5\x4D" => "\xE4\xBB\x97", + "\xA5\x4E" => "\xE4\xBB\xA3", + "\xA5\x4F" => "\xE4\xBB\xA4", + "\xA5\x50" => "\xE4\xBB\x99", + "\xA5\x51" => "\xE4\xBB\x9E", + "\xA5\x52" => "\xE5\x85\x85", + "\xA5\x53" => "\xE5\x85\x84", + "\xA5\x54" => "\xE5\x86\x89", + "\xA5\x55" => "\xE5\x86\x8A", + "\xA5\x56" => "\xE5\x86\xAC", + "\xA5\x57" => "\xE5\x87\xB9", + "\xA5\x58" => "\xE5\x87\xBA", + "\xA5\x59" => "\xE5\x87\xB8", + "\xA5\x5A" => "\xE5\x88\x8A", + "\xA5\x5B" => "\xE5\x8A\xA0", + "\xA5\x5C" => "\xE5\x8A\x9F", + "\xA5\x5D" => "\xE5\x8C\x85", + "\xA5\x5E" => "\xE5\x8C\x86", + "\xA5\x5F" => "\xE5\x8C\x97", + "\xA5\x60" => "\xE5\x8C\x9D", + "\xA5\x61" => "\xE4\xBB\x9F", + "\xA5\x62" => "\xE5\x8D\x8A", + "\xA5\x63" => "\xE5\x8D\x89", + "\xA5\x64" => "\xE5\x8D\xA1", + "\xA5\x65" => "\xE5\x8D\xA0", + "\xA5\x66" => "\xE5\x8D\xAF", + "\xA5\x67" => "\xE5\x8D\xAE", + "\xA5\x68" => "\xE5\x8E\xBB", + "\xA5\x69" => "\xE5\x8F\xAF", + "\xA5\x6A" => "\xE5\x8F\xA4", + "\xA5\x6B" => "\xE5\x8F\xB3", + "\xA5\x6C" => "\xE5\x8F\xAC", + "\xA5\x6D" => "\xE5\x8F\xAE", + "\xA5\x6E" => "\xE5\x8F\xA9", + "\xA5\x6F" => "\xE5\x8F\xA8", + "\xA5\x70" => "\xE5\x8F\xBC", + "\xA5\x71" => "\xE5\x8F\xB8", + "\xA5\x72" => "\xE5\x8F\xB5", + "\xA5\x73" => "\xE5\x8F\xAB", + "\xA5\x74" => "\xE5\x8F\xA6", + "\xA5\x75" => "\xE5\x8F\xAA", + "\xA5\x76" => "\xE5\x8F\xB2", + "\xA5\x77" => "\xE5\x8F\xB1", + "\xA5\x78" => "\xE5\x8F\xB0", + "\xA5\x79" => "\xE5\x8F\xA5", + "\xA5\x7A" => "\xE5\x8F\xAD", + "\xA5\x7B" => "\xE5\x8F\xBB", + "\xA5\x7C" => "\xE5\x9B\x9B", + "\xA5\x7D" => "\xE5\x9B\x9A", + "\xA5\x7E" => "\xE5\xA4\x96", + "\xA5\xA1" => "\xE5\xA4\xAE", + "\xA5\xA2" => "\xE5\xA4\xB1", + "\xA5\xA3" => "\xE5\xA5\xB4", + "\xA5\xA4" => "\xE5\xA5\xB6", + "\xA5\xA5" => "\xE5\xAD\x95", + "\xA5\xA6" => "\xE5\xAE\x83", + "\xA5\xA7" => "\xE5\xB0\xBC", + "\xA5\xA8" => "\xE5\xB7\xA8", + "\xA5\xA9" => "\xE5\xB7\xA7", + "\xA5\xAA" => "\xE5\xB7\xA6", + "\xA5\xAB" => "\xE5\xB8\x82", + "\xA5\xAC" => "\xE5\xB8\x83", + "\xA5\xAD" => "\xE5\xB9\xB3", + "\xA5\xAE" => "\xE5\xB9\xBC", + "\xA5\xAF" => "\xE5\xBC\x81", + "\xA5\xB0" => "\xE5\xBC\x98", + "\xA5\xB1" => "\xE5\xBC\x97", + "\xA5\xB2" => "\xE5\xBF\x85", + "\xA5\xB3" => "\xE6\x88\x8A", + "\xA5\xB4" => "\xE6\x89\x93", + "\xA5\xB5" => "\xE6\x89\x94", + "\xA5\xB6" => "\xE6\x89\x92", + "\xA5\xB7" => "\xE6\x89\x91", + "\xA5\xB8" => "\xE6\x96\xA5", + "\xA5\xB9" => "\xE6\x97\xA6", + "\xA5\xBA" => "\xE6\x9C\xAE", + "\xA5\xBB" => "\xE6\x9C\xAC", + "\xA5\xBC" => "\xE6\x9C\xAA", + "\xA5\xBD" => "\xE6\x9C\xAB", + "\xA5\xBE" => "\xE6\x9C\xAD", + "\xA5\xBF" => "\xE6\xAD\xA3", + "\xA5\xC0" => "\xE6\xAF\x8D", + "\xA5\xC1" => "\xE6\xB0\x91", + "\xA5\xC2" => "\xE6\xB0\x90", + "\xA5\xC3" => "\xE6\xB0\xB8", + "\xA5\xC4" => "\xE6\xB1\x81", + "\xA5\xC5" => "\xE6\xB1\x80", + "\xA5\xC6" => "\xE6\xB0\xBE", + "\xA5\xC7" => "\xE7\x8A\xAF", + "\xA5\xC8" => "\xE7\x8E\x84", + "\xA5\xC9" => "\xE7\x8E\x89", + "\xA5\xCA" => "\xE7\x93\x9C", + "\xA5\xCB" => "\xE7\x93\xA6", + "\xA5\xCC" => "\xE7\x94\x98", + "\xA5\xCD" => "\xE7\x94\x9F", + "\xA5\xCE" => "\xE7\x94\xA8", + "\xA5\xCF" => "\xE7\x94\xA9", + "\xA5\xD0" => "\xE7\x94\xB0", + "\xA5\xD1" => "\xE7\x94\xB1", + "\xA5\xD2" => "\xE7\x94\xB2", + "\xA5\xD3" => "\xE7\x94\xB3", + "\xA5\xD4" => "\xE7\x96\x8B", + "\xA5\xD5" => "\xE7\x99\xBD", + "\xA5\xD6" => "\xE7\x9A\xAE", + "\xA5\xD7" => "\xE7\x9A\xBF", + "\xA5\xD8" => "\xE7\x9B\xAE", + "\xA5\xD9" => "\xE7\x9F\x9B", + "\xA5\xDA" => "\xE7\x9F\xA2", + "\xA5\xDB" => "\xE7\x9F\xB3", + "\xA5\xDC" => "\xE7\xA4\xBA", + "\xA5\xDD" => "\xE7\xA6\xBE", + "\xA5\xDE" => "\xE7\xA9\xB4", + "\xA5\xDF" => "\xE7\xAB\x8B", + "\xA5\xE0" => "\xE4\xB8\x9E", + "\xA5\xE1" => "\xE4\xB8\x9F", + "\xA5\xE2" => "\xE4\xB9\x92", + "\xA5\xE3" => "\xE4\xB9\x93", + "\xA5\xE4" => "\xE4\xB9\xA9", + "\xA5\xE5" => "\xE4\xBA\x99", + "\xA5\xE6" => "\xE4\xBA\xA4", + "\xA5\xE7" => "\xE4\xBA\xA6", + "\xA5\xE8" => "\xE4\xBA\xA5", + "\xA5\xE9" => "\xE4\xBB\xBF", + "\xA5\xEA" => "\xE4\xBC\x89", + "\xA5\xEB" => "\xE4\xBC\x99", + "\xA5\xEC" => "\xE4\xBC\x8A", + "\xA5\xED" => "\xE4\xBC\x95", + "\xA5\xEE" => "\xE4\xBC\x8D", + "\xA5\xEF" => "\xE4\xBC\x90", + "\xA5\xF0" => "\xE4\xBC\x91", + "\xA5\xF1" => "\xE4\xBC\x8F", + "\xA5\xF2" => "\xE4\xBB\xB2", + "\xA5\xF3" => "\xE4\xBB\xB6", + "\xA5\xF4" => "\xE4\xBB\xBB", + "\xA5\xF5" => "\xE4\xBB\xB0", + "\xA5\xF6" => "\xE4\xBB\xB3", + "\xA5\xF7" => "\xE4\xBB\xBD", + "\xA5\xF8" => "\xE4\xBC\x81", + "\xA5\xF9" => "\xE4\xBC\x8B", + "\xA5\xFA" => "\xE5\x85\x89", + "\xA5\xFB" => "\xE5\x85\x87", + "\xA5\xFC" => "\xE5\x85\x86", + "\xA5\xFD" => "\xE5\x85\x88", + "\xA5\xFE" => "\xE5\x85\xA8", + "\xA6\x40" => "\xE5\x85\xB1", + "\xA6\x41" => "\xE5\x86\x8D", + "\xA6\x42" => "\xE5\x86\xB0", + "\xA6\x43" => "\xE5\x88\x97", + "\xA6\x44" => "\xE5\x88\x91", + "\xA6\x45" => "\xE5\x88\x92", + "\xA6\x46" => "\xE5\x88\x8E", + "\xA6\x47" => "\xE5\x88\x96", + "\xA6\x48" => "\xE5\x8A\xA3", + "\xA6\x49" => "\xE5\x8C\x88", + "\xA6\x4A" => "\xE5\x8C\xA1", + "\xA6\x4B" => "\xE5\x8C\xA0", + "\xA6\x4C" => "\xE5\x8D\xB0", + "\xA6\x4D" => "\xE5\x8D\xB1", + "\xA6\x4E" => "\xE5\x90\x89", + "\xA6\x4F" => "\xE5\x90\x8F", + "\xA6\x50" => "\xE5\x90\x8C", + "\xA6\x51" => "\xE5\x90\x8A", + "\xA6\x52" => "\xE5\x90\x90", + "\xA6\x53" => "\xE5\x90\x81", + "\xA6\x54" => "\xE5\x90\x8B", + "\xA6\x55" => "\xE5\x90\x84", + "\xA6\x56" => "\xE5\x90\x91", + "\xA6\x57" => "\xE5\x90\x8D", + "\xA6\x58" => "\xE5\x90\x88", + "\xA6\x59" => "\xE5\x90\x83", + "\xA6\x5A" => "\xE5\x90\x8E", + "\xA6\x5B" => "\xE5\x90\x86", + "\xA6\x5C" => "\xE5\x90\x92", + "\xA6\x5D" => "\xE5\x9B\xA0", + "\xA6\x5E" => "\xE5\x9B\x9E", + "\xA6\x5F" => "\xE5\x9B\x9D", + "\xA6\x60" => "\xE5\x9C\xB3", + "\xA6\x61" => "\xE5\x9C\xB0", + "\xA6\x62" => "\xE5\x9C\xA8", + "\xA6\x63" => "\xE5\x9C\xAD", + "\xA6\x64" => "\xE5\x9C\xAC", + "\xA6\x65" => "\xE5\x9C\xAF", + "\xA6\x66" => "\xE5\x9C\xA9", + "\xA6\x67" => "\xE5\xA4\x99", + "\xA6\x68" => "\xE5\xA4\x9A", + "\xA6\x69" => "\xE5\xA4\xB7", + "\xA6\x6A" => "\xE5\xA4\xB8", + "\xA6\x6B" => "\xE5\xA6\x84", + "\xA6\x6C" => "\xE5\xA5\xB8", + "\xA6\x6D" => "\xE5\xA6\x83", + "\xA6\x6E" => "\xE5\xA5\xBD", + "\xA6\x6F" => "\xE5\xA5\xB9", + "\xA6\x70" => "\xE5\xA6\x82", + "\xA6\x71" => "\xE5\xA6\x81", + "\xA6\x72" => "\xE5\xAD\x97", + "\xA6\x73" => "\xE5\xAD\x98", + "\xA6\x74" => "\xE5\xAE\x87", + "\xA6\x75" => "\xE5\xAE\x88", + "\xA6\x76" => "\xE5\xAE\x85", + "\xA6\x77" => "\xE5\xAE\x89", + "\xA6\x78" => "\xE5\xAF\xBA", + "\xA6\x79" => "\xE5\xB0\x96", + "\xA6\x7A" => "\xE5\xB1\xB9", + "\xA6\x7B" => "\xE5\xB7\x9E", + "\xA6\x7C" => "\xE5\xB8\x86", + "\xA6\x7D" => "\xE5\xB9\xB6", + "\xA6\x7E" => "\xE5\xB9\xB4", + "\xA6\xA1" => "\xE5\xBC\x8F", + "\xA6\xA2" => "\xE5\xBC\x9B", + "\xA6\xA3" => "\xE5\xBF\x99", + "\xA6\xA4" => "\xE5\xBF\x96", + "\xA6\xA5" => "\xE6\x88\x8E", + "\xA6\xA6" => "\xE6\x88\x8C", + "\xA6\xA7" => "\xE6\x88\x8D", + "\xA6\xA8" => "\xE6\x88\x90", + "\xA6\xA9" => "\xE6\x89\xA3", + "\xA6\xAA" => "\xE6\x89\x9B", + "\xA6\xAB" => "\xE6\x89\x98", + "\xA6\xAC" => "\xE6\x94\xB6", + "\xA6\xAD" => "\xE6\x97\xA9", + "\xA6\xAE" => "\xE6\x97\xA8", + "\xA6\xAF" => "\xE6\x97\xAC", + "\xA6\xB0" => "\xE6\x97\xAD", + "\xA6\xB1" => "\xE6\x9B\xB2", + "\xA6\xB2" => "\xE6\x9B\xB3", + "\xA6\xB3" => "\xE6\x9C\x89", + "\xA6\xB4" => "\xE6\x9C\xBD", + "\xA6\xB5" => "\xE6\x9C\xB4", + "\xA6\xB6" => "\xE6\x9C\xB1", + "\xA6\xB7" => "\xE6\x9C\xB5", + "\xA6\xB8" => "\xE6\xAC\xA1", + "\xA6\xB9" => "\xE6\xAD\xA4", + "\xA6\xBA" => "\xE6\xAD\xBB", + "\xA6\xBB" => "\xE6\xB0\x96", + "\xA6\xBC" => "\xE6\xB1\x9D", + "\xA6\xBD" => "\xE6\xB1\x97", + "\xA6\xBE" => "\xE6\xB1\x99", + "\xA6\xBF" => "\xE6\xB1\x9F", + "\xA6\xC0" => "\xE6\xB1\xA0", + "\xA6\xC1" => "\xE6\xB1\x90", + "\xA6\xC2" => "\xE6\xB1\x95", + "\xA6\xC3" => "\xE6\xB1\xA1", + "\xA6\xC4" => "\xE6\xB1\x9B", + "\xA6\xC5" => "\xE6\xB1\x8D", + "\xA6\xC6" => "\xE6\xB1\x8E", + "\xA6\xC7" => "\xE7\x81\xB0", + "\xA6\xC8" => "\xE7\x89\x9F", + "\xA6\xC9" => "\xE7\x89\x9D", + "\xA6\xCA" => "\xE7\x99\xBE", + "\xA6\xCB" => "\xE7\xAB\xB9", + "\xA6\xCC" => "\xE7\xB1\xB3", + "\xA6\xCD" => "\xE7\xB3\xB8", + "\xA6\xCE" => "\xE7\xBC\xB6", + "\xA6\xCF" => "\xE7\xBE\x8A", + "\xA6\xD0" => "\xE7\xBE\xBD", + "\xA6\xD1" => "\xE8\x80\x81", + "\xA6\xD2" => "\xE8\x80\x83", + "\xA6\xD3" => "\xE8\x80\x8C", + "\xA6\xD4" => "\xE8\x80\x92", + "\xA6\xD5" => "\xE8\x80\xB3", + "\xA6\xD6" => "\xE8\x81\xBF", + "\xA6\xD7" => "\xE8\x82\x89", + "\xA6\xD8" => "\xE8\x82\x8B", + "\xA6\xD9" => "\xE8\x82\x8C", + "\xA6\xDA" => "\xE8\x87\xA3", + "\xA6\xDB" => "\xE8\x87\xAA", + "\xA6\xDC" => "\xE8\x87\xB3", + "\xA6\xDD" => "\xE8\x87\xBC", + "\xA6\xDE" => "\xE8\x88\x8C", + "\xA6\xDF" => "\xE8\x88\x9B", + "\xA6\xE0" => "\xE8\x88\x9F", + "\xA6\xE1" => "\xE8\x89\xAE", + "\xA6\xE2" => "\xE8\x89\xB2", + "\xA6\xE3" => "\xE8\x89\xBE", + "\xA6\xE4" => "\xE8\x99\xAB", + "\xA6\xE5" => "\xE8\xA1\x80", + "\xA6\xE6" => "\xE8\xA1\x8C", + "\xA6\xE7" => "\xE8\xA1\xA3", + "\xA6\xE8" => "\xE8\xA5\xBF", + "\xA6\xE9" => "\xE9\x98\xA1", + "\xA6\xEA" => "\xE4\xB8\xB2", + "\xA6\xEB" => "\xE4\xBA\xA8", + "\xA6\xEC" => "\xE4\xBD\x8D", + "\xA6\xED" => "\xE4\xBD\x8F", + "\xA6\xEE" => "\xE4\xBD\x87", + "\xA6\xEF" => "\xE4\xBD\x97", + "\xA6\xF0" => "\xE4\xBD\x9E", + "\xA6\xF1" => "\xE4\xBC\xB4", + "\xA6\xF2" => "\xE4\xBD\x9B", + "\xA6\xF3" => "\xE4\xBD\x95", + "\xA6\xF4" => "\xE4\xBC\xB0", + "\xA6\xF5" => "\xE4\xBD\x90", + "\xA6\xF6" => "\xE4\xBD\x91", + "\xA6\xF7" => "\xE4\xBC\xBD", + "\xA6\xF8" => "\xE4\xBC\xBA", + "\xA6\xF9" => "\xE4\xBC\xB8", + "\xA6\xFA" => "\xE4\xBD\x83", + "\xA6\xFB" => "\xE4\xBD\x94", + "\xA6\xFC" => "\xE4\xBC\xBC", + "\xA6\xFD" => "\xE4\xBD\x86", + "\xA6\xFE" => "\xE4\xBD\xA3", + "\xA7\x40" => "\xE4\xBD\x9C", + "\xA7\x41" => "\xE4\xBD\xA0", + "\xA7\x42" => "\xE4\xBC\xAF", + "\xA7\x43" => "\xE4\xBD\x8E", + "\xA7\x44" => "\xE4\xBC\xB6", + "\xA7\x45" => "\xE4\xBD\x99", + "\xA7\x46" => "\xE4\xBD\x9D", + "\xA7\x47" => "\xE4\xBD\x88", + "\xA7\x48" => "\xE4\xBD\x9A", + "\xA7\x49" => "\xE5\x85\x8C", + "\xA7\x4A" => "\xE5\x85\x8B", + "\xA7\x4B" => "\xE5\x85\x8D", + "\xA7\x4C" => "\xE5\x85\xB5", + "\xA7\x4D" => "\xE5\x86\xB6", + "\xA7\x4E" => "\xE5\x86\xB7", + "\xA7\x4F" => "\xE5\x88\xA5", + "\xA7\x50" => "\xE5\x88\xA4", + "\xA7\x51" => "\xE5\x88\xA9", + "\xA7\x52" => "\xE5\x88\xAA", + "\xA7\x53" => "\xE5\x88\xA8", + "\xA7\x54" => "\xE5\x8A\xAB", + "\xA7\x55" => "\xE5\x8A\xA9", + "\xA7\x56" => "\xE5\x8A\xAA", + "\xA7\x57" => "\xE5\x8A\xAC", + "\xA7\x58" => "\xE5\x8C\xA3", + "\xA7\x59" => "\xE5\x8D\xB3", + "\xA7\x5A" => "\xE5\x8D\xB5", + "\xA7\x5B" => "\xE5\x90\x9D", + "\xA7\x5C" => "\xE5\x90\xAD", + "\xA7\x5D" => "\xE5\x90\x9E", + "\xA7\x5E" => "\xE5\x90\xBE", + "\xA7\x5F" => "\xE5\x90\xA6", + "\xA7\x60" => "\xE5\x91\x8E", + "\xA7\x61" => "\xE5\x90\xA7", + "\xA7\x62" => "\xE5\x91\x86", + "\xA7\x63" => "\xE5\x91\x83", + "\xA7\x64" => "\xE5\x90\xB3", + "\xA7\x65" => "\xE5\x91\x88", + "\xA7\x66" => "\xE5\x91\x82", + "\xA7\x67" => "\xE5\x90\x9B", + "\xA7\x68" => "\xE5\x90\xA9", + "\xA7\x69" => "\xE5\x91\x8A", + "\xA7\x6A" => "\xE5\x90\xB9", + "\xA7\x6B" => "\xE5\x90\xBB", + "\xA7\x6C" => "\xE5\x90\xB8", + "\xA7\x6D" => "\xE5\x90\xAE", + "\xA7\x6E" => "\xE5\x90\xB5", + "\xA7\x6F" => "\xE5\x90\xB6", + "\xA7\x70" => "\xE5\x90\xA0", + "\xA7\x71" => "\xE5\x90\xBC", + "\xA7\x72" => "\xE5\x91\x80", + "\xA7\x73" => "\xE5\x90\xB1", + "\xA7\x74" => "\xE5\x90\xAB", + "\xA7\x75" => "\xE5\x90\x9F", + "\xA7\x76" => "\xE5\x90\xAC", + "\xA7\x77" => "\xE5\x9B\xAA", + "\xA7\x78" => "\xE5\x9B\xB0", + "\xA7\x79" => "\xE5\x9B\xA4", + "\xA7\x7A" => "\xE5\x9B\xAB", + "\xA7\x7B" => "\xE5\x9D\x8A", + "\xA7\x7C" => "\xE5\x9D\x91", + "\xA7\x7D" => "\xE5\x9D\x80", + "\xA7\x7E" => "\xE5\x9D\x8D", + "\xA7\xA1" => "\xE5\x9D\x87", + "\xA7\xA2" => "\xE5\x9D\x8E", + "\xA7\xA3" => "\xE5\x9C\xBE", + "\xA7\xA4" => "\xE5\x9D\x90", + "\xA7\xA5" => "\xE5\x9D\x8F", + "\xA7\xA6" => "\xE5\x9C\xBB", + "\xA7\xA7" => "\xE5\xA3\xAF", + "\xA7\xA8" => "\xE5\xA4\xBE", + "\xA7\xA9" => "\xE5\xA6\x9D", + "\xA7\xAA" => "\xE5\xA6\x92", + "\xA7\xAB" => "\xE5\xA6\xA8", + "\xA7\xAC" => "\xE5\xA6\x9E", + "\xA7\xAD" => "\xE5\xA6\xA3", + "\xA7\xAE" => "\xE5\xA6\x99", + "\xA7\xAF" => "\xE5\xA6\x96", + "\xA7\xB0" => "\xE5\xA6\x8D", + "\xA7\xB1" => "\xE5\xA6\xA4", + "\xA7\xB2" => "\xE5\xA6\x93", + "\xA7\xB3" => "\xE5\xA6\x8A", + "\xA7\xB4" => "\xE5\xA6\xA5", + "\xA7\xB5" => "\xE5\xAD\x9D", + "\xA7\xB6" => "\xE5\xAD\x9C", + "\xA7\xB7" => "\xE5\xAD\x9A", + "\xA7\xB8" => "\xE5\xAD\x9B", + "\xA7\xB9" => "\xE5\xAE\x8C", + "\xA7\xBA" => "\xE5\xAE\x8B", + "\xA7\xBB" => "\xE5\xAE\x8F", + "\xA7\xBC" => "\xE5\xB0\xAC", + "\xA7\xBD" => "\xE5\xB1\x80", + "\xA7\xBE" => "\xE5\xB1\x81", + "\xA7\xBF" => "\xE5\xB0\xBF", + "\xA7\xC0" => "\xE5\xB0\xBE", + "\xA7\xC1" => "\xE5\xB2\x90", + "\xA7\xC2" => "\xE5\xB2\x91", + "\xA7\xC3" => "\xE5\xB2\x94", + "\xA7\xC4" => "\xE5\xB2\x8C", + "\xA7\xC5" => "\xE5\xB7\xAB", + "\xA7\xC6" => "\xE5\xB8\x8C", + "\xA7\xC7" => "\xE5\xBA\x8F", + "\xA7\xC8" => "\xE5\xBA\x87", + "\xA7\xC9" => "\xE5\xBA\x8A", + "\xA7\xCA" => "\xE5\xBB\xB7", + "\xA7\xCB" => "\xE5\xBC\x84", + "\xA7\xCC" => "\xE5\xBC\x9F", + "\xA7\xCD" => "\xE5\xBD\xA4", + "\xA7\xCE" => "\xE5\xBD\xA2", + "\xA7\xCF" => "\xE5\xBD\xB7", + "\xA7\xD0" => "\xE5\xBD\xB9", + "\xA7\xD1" => "\xE5\xBF\x98", + "\xA7\xD2" => "\xE5\xBF\x8C", + "\xA7\xD3" => "\xE5\xBF\x97", + "\xA7\xD4" => "\xE5\xBF\x8D", + "\xA7\xD5" => "\xE5\xBF\xB1", + "\xA7\xD6" => "\xE5\xBF\xAB", + "\xA7\xD7" => "\xE5\xBF\xB8", + "\xA7\xD8" => "\xE5\xBF\xAA", + "\xA7\xD9" => "\xE6\x88\x92", + "\xA7\xDA" => "\xE6\x88\x91", + "\xA7\xDB" => "\xE6\x8A\x84", + "\xA7\xDC" => "\xE6\x8A\x97", + "\xA7\xDD" => "\xE6\x8A\x96", + "\xA7\xDE" => "\xE6\x8A\x80", + "\xA7\xDF" => "\xE6\x89\xB6", + "\xA7\xE0" => "\xE6\x8A\x89", + "\xA7\xE1" => "\xE6\x89\xAD", + "\xA7\xE2" => "\xE6\x8A\x8A", + "\xA7\xE3" => "\xE6\x89\xBC", + "\xA7\xE4" => "\xE6\x89\xBE", + "\xA7\xE5" => "\xE6\x89\xB9", + "\xA7\xE6" => "\xE6\x89\xB3", + "\xA7\xE7" => "\xE6\x8A\x92", + "\xA7\xE8" => "\xE6\x89\xAF", + "\xA7\xE9" => "\xE6\x8A\x98", + "\xA7\xEA" => "\xE6\x89\xAE", + "\xA7\xEB" => "\xE6\x8A\x95", + "\xA7\xEC" => "\xE6\x8A\x93", + "\xA7\xED" => "\xE6\x8A\x91", + "\xA7\xEE" => "\xE6\x8A\x86", + "\xA7\xEF" => "\xE6\x94\xB9", + "\xA7\xF0" => "\xE6\x94\xBB", + "\xA7\xF1" => "\xE6\x94\xB8", + "\xA7\xF2" => "\xE6\x97\xB1", + "\xA7\xF3" => "\xE6\x9B\xB4", + "\xA7\xF4" => "\xE6\x9D\x9F", + "\xA7\xF5" => "\xE6\x9D\x8E", + "\xA7\xF6" => "\xE6\x9D\x8F", + "\xA7\xF7" => "\xE6\x9D\x90", + "\xA7\xF8" => "\xE6\x9D\x91", + "\xA7\xF9" => "\xE6\x9D\x9C", + "\xA7\xFA" => "\xE6\x9D\x96", + "\xA7\xFB" => "\xE6\x9D\x9E", + "\xA7\xFC" => "\xE6\x9D\x89", + "\xA7\xFD" => "\xE6\x9D\x86", + "\xA7\xFE" => "\xE6\x9D\xA0", + "\xA8\x40" => "\xE6\x9D\x93", + "\xA8\x41" => "\xE6\x9D\x97", + "\xA8\x42" => "\xE6\xAD\xA5", + "\xA8\x43" => "\xE6\xAF\x8F", + "\xA8\x44" => "\xE6\xB1\x82", + "\xA8\x45" => "\xE6\xB1\x9E", + "\xA8\x46" => "\xE6\xB2\x99", + "\xA8\x47" => "\xE6\xB2\x81", + "\xA8\x48" => "\xE6\xB2\x88", + "\xA8\x49" => "\xE6\xB2\x89", + "\xA8\x4A" => "\xE6\xB2\x85", + "\xA8\x4B" => "\xE6\xB2\x9B", + "\xA8\x4C" => "\xE6\xB1\xAA", + "\xA8\x4D" => "\xE6\xB1\xBA", + "\xA8\x4E" => "\xE6\xB2\x90", + "\xA8\x4F" => "\xE6\xB1\xB0", + "\xA8\x50" => "\xE6\xB2\x8C", + "\xA8\x51" => "\xE6\xB1\xA8", + "\xA8\x52" => "\xE6\xB2\x96", + "\xA8\x53" => "\xE6\xB2\x92", + "\xA8\x54" => "\xE6\xB1\xBD", + "\xA8\x55" => "\xE6\xB2\x83", + "\xA8\x56" => "\xE6\xB1\xB2", + "\xA8\x57" => "\xE6\xB1\xBE", + "\xA8\x58" => "\xE6\xB1\xB4", + "\xA8\x59" => "\xE6\xB2\x86", + "\xA8\x5A" => "\xE6\xB1\xB6", + "\xA8\x5B" => "\xE6\xB2\x8D", + "\xA8\x5C" => "\xE6\xB2\x94", + "\xA8\x5D" => "\xE6\xB2\x98", + "\xA8\x5E" => "\xE6\xB2\x82", + "\xA8\x5F" => "\xE7\x81\xB6", + "\xA8\x60" => "\xE7\x81\xBC", + "\xA8\x61" => "\xE7\x81\xBD", + "\xA8\x62" => "\xE7\x81\xB8", + "\xA8\x63" => "\xE7\x89\xA2", + "\xA8\x64" => "\xE7\x89\xA1", + "\xA8\x65" => "\xE7\x89\xA0", + "\xA8\x66" => "\xE7\x8B\x84", + "\xA8\x67" => "\xE7\x8B\x82", + "\xA8\x68" => "\xE7\x8E\x96", + "\xA8\x69" => "\xE7\x94\xAC", + "\xA8\x6A" => "\xE7\x94\xAB", + "\xA8\x6B" => "\xE7\x94\xB7", + "\xA8\x6C" => "\xE7\x94\xB8", + "\xA8\x6D" => "\xE7\x9A\x82", + "\xA8\x6E" => "\xE7\x9B\xAF", + "\xA8\x6F" => "\xE7\x9F\xA3", + "\xA8\x70" => "\xE7\xA7\x81", + "\xA8\x71" => "\xE7\xA7\x80", + "\xA8\x72" => "\xE7\xA6\xBF", + "\xA8\x73" => "\xE7\xA9\xB6", + "\xA8\x74" => "\xE7\xB3\xBB", + "\xA8\x75" => "\xE7\xBD\x95", + "\xA8\x76" => "\xE8\x82\x96", + "\xA8\x77" => "\xE8\x82\x93", + "\xA8\x78" => "\xE8\x82\x9D", + "\xA8\x79" => "\xE8\x82\x98", + "\xA8\x7A" => "\xE8\x82\x9B", + "\xA8\x7B" => "\xE8\x82\x9A", + "\xA8\x7C" => "\xE8\x82\xB2", + "\xA8\x7D" => "\xE8\x89\xAF", + "\xA8\x7E" => "\xE8\x8A\x92", + "\xA8\xA1" => "\xE8\x8A\x8B", + "\xA8\xA2" => "\xE8\x8A\x8D", + "\xA8\xA3" => "\xE8\xA6\x8B", + "\xA8\xA4" => "\xE8\xA7\x92", + "\xA8\xA5" => "\xE8\xA8\x80", + "\xA8\xA6" => "\xE8\xB0\xB7", + "\xA8\xA7" => "\xE8\xB1\x86", + "\xA8\xA8" => "\xE8\xB1\x95", + "\xA8\xA9" => "\xE8\xB2\x9D", + "\xA8\xAA" => "\xE8\xB5\xA4", + "\xA8\xAB" => "\xE8\xB5\xB0", + "\xA8\xAC" => "\xE8\xB6\xB3", + "\xA8\xAD" => "\xE8\xBA\xAB", + "\xA8\xAE" => "\xE8\xBB\x8A", + "\xA8\xAF" => "\xE8\xBE\x9B", + "\xA8\xB0" => "\xE8\xBE\xB0", + "\xA8\xB1" => "\xE8\xBF\x82", + "\xA8\xB2" => "\xE8\xBF\x86", + "\xA8\xB3" => "\xE8\xBF\x85", + "\xA8\xB4" => "\xE8\xBF\x84", + "\xA8\xB5" => "\xE5\xB7\xA1", + "\xA8\xB6" => "\xE9\x82\x91", + "\xA8\xB7" => "\xE9\x82\xA2", + "\xA8\xB8" => "\xE9\x82\xAA", + "\xA8\xB9" => "\xE9\x82\xA6", + "\xA8\xBA" => "\xE9\x82\xA3", + "\xA8\xBB" => "\xE9\x85\x89", + "\xA8\xBC" => "\xE9\x87\x86", + "\xA8\xBD" => "\xE9\x87\x8C", + "\xA8\xBE" => "\xE9\x98\xB2", + "\xA8\xBF" => "\xE9\x98\xAE", + "\xA8\xC0" => "\xE9\x98\xB1", + "\xA8\xC1" => "\xE9\x98\xAA", + "\xA8\xC2" => "\xE9\x98\xAC", + "\xA8\xC3" => "\xE4\xB8\xA6", + "\xA8\xC4" => "\xE4\xB9\x96", + "\xA8\xC5" => "\xE4\xB9\xB3", + "\xA8\xC6" => "\xE4\xBA\x8B", + "\xA8\xC7" => "\xE4\xBA\x9B", + "\xA8\xC8" => "\xE4\xBA\x9E", + "\xA8\xC9" => "\xE4\xBA\xAB", + "\xA8\xCA" => "\xE4\xBA\xAC", + "\xA8\xCB" => "\xE4\xBD\xAF", + "\xA8\xCC" => "\xE4\xBE\x9D", + "\xA8\xCD" => "\xE4\xBE\x8D", + "\xA8\xCE" => "\xE4\xBD\xB3", + "\xA8\xCF" => "\xE4\xBD\xBF", + "\xA8\xD0" => "\xE4\xBD\xAC", + "\xA8\xD1" => "\xE4\xBE\x9B", + "\xA8\xD2" => "\xE4\xBE\x8B", + "\xA8\xD3" => "\xE4\xBE\x86", + "\xA8\xD4" => "\xE4\xBE\x83", + "\xA8\xD5" => "\xE4\xBD\xB0", + "\xA8\xD6" => "\xE4\xBD\xB5", + "\xA8\xD7" => "\xE4\xBE\x88", + "\xA8\xD8" => "\xE4\xBD\xA9", + "\xA8\xD9" => "\xE4\xBD\xBB", + "\xA8\xDA" => "\xE4\xBE\x96", + "\xA8\xDB" => "\xE4\xBD\xBE", + "\xA8\xDC" => "\xE4\xBE\x8F", + "\xA8\xDD" => "\xE4\xBE\x91", + "\xA8\xDE" => "\xE4\xBD\xBA", + "\xA8\xDF" => "\xE5\x85\x94", + "\xA8\xE0" => "\xE5\x85\x92", + "\xA8\xE1" => "\xE5\x85\x95", + "\xA8\xE2" => "\xE5\x85\xA9", + "\xA8\xE3" => "\xE5\x85\xB7", + "\xA8\xE4" => "\xE5\x85\xB6", + "\xA8\xE5" => "\xE5\x85\xB8", + "\xA8\xE6" => "\xE5\x86\xBD", + "\xA8\xE7" => "\xE5\x87\xBD", + "\xA8\xE8" => "\xE5\x88\xBB", + "\xA8\xE9" => "\xE5\x88\xB8", + "\xA8\xEA" => "\xE5\x88\xB7", + "\xA8\xEB" => "\xE5\x88\xBA", + "\xA8\xEC" => "\xE5\x88\xB0", + "\xA8\xED" => "\xE5\x88\xAE", + "\xA8\xEE" => "\xE5\x88\xB6", + "\xA8\xEF" => "\xE5\x89\x81", + "\xA8\xF0" => "\xE5\x8A\xBE", + "\xA8\xF1" => "\xE5\x8A\xBB", + "\xA8\xF2" => "\xE5\x8D\x92", + "\xA8\xF3" => "\xE5\x8D\x94", + "\xA8\xF4" => "\xE5\x8D\x93", + "\xA8\xF5" => "\xE5\x8D\x91", + "\xA8\xF6" => "\xE5\x8D\xA6", + "\xA8\xF7" => "\xE5\x8D\xB7", + "\xA8\xF8" => "\xE5\x8D\xB8", + "\xA8\xF9" => "\xE5\x8D\xB9", + "\xA8\xFA" => "\xE5\x8F\x96", + "\xA8\xFB" => "\xE5\x8F\x94", + "\xA8\xFC" => "\xE5\x8F\x97", + "\xA8\xFD" => "\xE5\x91\xB3", + "\xA8\xFE" => "\xE5\x91\xB5", + "\xA9\x40" => "\xE5\x92\x96", + "\xA9\x41" => "\xE5\x91\xB8", + "\xA9\x42" => "\xE5\x92\x95", + "\xA9\x43" => "\xE5\x92\x80", + "\xA9\x44" => "\xE5\x91\xBB", + "\xA9\x45" => "\xE5\x91\xB7", + "\xA9\x46" => "\xE5\x92\x84", + "\xA9\x47" => "\xE5\x92\x92", + "\xA9\x48" => "\xE5\x92\x86", + "\xA9\x49" => "\xE5\x91\xBC", + "\xA9\x4A" => "\xE5\x92\x90", + "\xA9\x4B" => "\xE5\x91\xB1", + "\xA9\x4C" => "\xE5\x91\xB6", + "\xA9\x4D" => "\xE5\x92\x8C", + "\xA9\x4E" => "\xE5\x92\x9A", + "\xA9\x4F" => "\xE5\x91\xA2", + "\xA9\x50" => "\xE5\x91\xA8", + "\xA9\x51" => "\xE5\x92\x8B", + "\xA9\x52" => "\xE5\x91\xBD", + "\xA9\x53" => "\xE5\x92\x8E", + "\xA9\x54" => "\xE5\x9B\xBA", + "\xA9\x55" => "\xE5\x9E\x83", + "\xA9\x56" => "\xE5\x9D\xB7", + "\xA9\x57" => "\xE5\x9D\xAA", + "\xA9\x58" => "\xE5\x9D\xA9", + "\xA9\x59" => "\xE5\x9D\xA1", + "\xA9\x5A" => "\xE5\x9D\xA6", + "\xA9\x5B" => "\xE5\x9D\xA4", + "\xA9\x5C" => "\xE5\x9D\xBC", + "\xA9\x5D" => "\xE5\xA4\x9C", + "\xA9\x5E" => "\xE5\xA5\x89", + "\xA9\x5F" => "\xE5\xA5\x87", + "\xA9\x60" => "\xE5\xA5\x88", + "\xA9\x61" => "\xE5\xA5\x84", + "\xA9\x62" => "\xE5\xA5\x94", + "\xA9\x63" => "\xE5\xA6\xBE", + "\xA9\x64" => "\xE5\xA6\xBB", + "\xA9\x65" => "\xE5\xA7\x94", + "\xA9\x66" => "\xE5\xA6\xB9", + "\xA9\x67" => "\xE5\xA6\xAE", + "\xA9\x68" => "\xE5\xA7\x91", + "\xA9\x69" => "\xE5\xA7\x86", + "\xA9\x6A" => "\xE5\xA7\x90", + "\xA9\x6B" => "\xE5\xA7\x8D", + "\xA9\x6C" => "\xE5\xA7\x8B", + "\xA9\x6D" => "\xE5\xA7\x93", + "\xA9\x6E" => "\xE5\xA7\x8A", + "\xA9\x6F" => "\xE5\xA6\xAF", + "\xA9\x70" => "\xE5\xA6\xB3", + "\xA9\x71" => "\xE5\xA7\x92", + "\xA9\x72" => "\xE5\xA7\x85", + "\xA9\x73" => "\xE5\xAD\x9F", + "\xA9\x74" => "\xE5\xAD\xA4", + "\xA9\x75" => "\xE5\xAD\xA3", + "\xA9\x76" => "\xE5\xAE\x97", + "\xA9\x77" => "\xE5\xAE\x9A", + "\xA9\x78" => "\xE5\xAE\x98", + "\xA9\x79" => "\xE5\xAE\x9C", + "\xA9\x7A" => "\xE5\xAE\x99", + "\xA9\x7B" => "\xE5\xAE\x9B", + "\xA9\x7C" => "\xE5\xB0\x9A", + "\xA9\x7D" => "\xE5\xB1\x88", + "\xA9\x7E" => "\xE5\xB1\x85", + "\xA9\xA1" => "\xE5\xB1\x86", + "\xA9\xA2" => "\xE5\xB2\xB7", + "\xA9\xA3" => "\xE5\xB2\xA1", + "\xA9\xA4" => "\xE5\xB2\xB8", + "\xA9\xA5" => "\xE5\xB2\xA9", + "\xA9\xA6" => "\xE5\xB2\xAB", + "\xA9\xA7" => "\xE5\xB2\xB1", + "\xA9\xA8" => "\xE5\xB2\xB3", + "\xA9\xA9" => "\xE5\xB8\x98", + "\xA9\xAA" => "\xE5\xB8\x9A", + "\xA9\xAB" => "\xE5\xB8\x96", + "\xA9\xAC" => "\xE5\xB8\x95", + "\xA9\xAD" => "\xE5\xB8\x9B", + "\xA9\xAE" => "\xE5\xB8\x91", + "\xA9\xAF" => "\xE5\xB9\xB8", + "\xA9\xB0" => "\xE5\xBA\x9A", + "\xA9\xB1" => "\xE5\xBA\x97", + "\xA9\xB2" => "\xE5\xBA\x9C", + "\xA9\xB3" => "\xE5\xBA\x95", + "\xA9\xB4" => "\xE5\xBA\x96", + "\xA9\xB5" => "\xE5\xBB\xB6", + "\xA9\xB6" => "\xE5\xBC\xA6", + "\xA9\xB7" => "\xE5\xBC\xA7", + "\xA9\xB8" => "\xE5\xBC\xA9", + "\xA9\xB9" => "\xE5\xBE\x80", + "\xA9\xBA" => "\xE5\xBE\x81", + "\xA9\xBB" => "\xE5\xBD\xBF", + "\xA9\xBC" => "\xE5\xBD\xBC", + "\xA9\xBD" => "\xE5\xBF\x9D", + "\xA9\xBE" => "\xE5\xBF\xA0", + "\xA9\xBF" => "\xE5\xBF\xBD", + "\xA9\xC0" => "\xE5\xBF\xB5", + "\xA9\xC1" => "\xE5\xBF\xBF", + "\xA9\xC2" => "\xE6\x80\x8F", + "\xA9\xC3" => "\xE6\x80\x94", + "\xA9\xC4" => "\xE6\x80\xAF", + "\xA9\xC5" => "\xE6\x80\xB5", + "\xA9\xC6" => "\xE6\x80\x96", + "\xA9\xC7" => "\xE6\x80\xAA", + "\xA9\xC8" => "\xE6\x80\x95", + "\xA9\xC9" => "\xE6\x80\xA1", + "\xA9\xCA" => "\xE6\x80\xA7", + "\xA9\xCB" => "\xE6\x80\xA9", + "\xA9\xCC" => "\xE6\x80\xAB", + "\xA9\xCD" => "\xE6\x80\x9B", + "\xA9\xCE" => "\xE6\x88\x96", + "\xA9\xCF" => "\xE6\x88\x95", + "\xA9\xD0" => "\xE6\x88\xBF", + "\xA9\xD1" => "\xE6\x88\xBE", + "\xA9\xD2" => "\xE6\x89\x80", + "\xA9\xD3" => "\xE6\x89\xBF", + "\xA9\xD4" => "\xE6\x8B\x89", + "\xA9\xD5" => "\xE6\x8B\x8C", + "\xA9\xD6" => "\xE6\x8B\x84", + "\xA9\xD7" => "\xE6\x8A\xBF", + "\xA9\xD8" => "\xE6\x8B\x82", + "\xA9\xD9" => "\xE6\x8A\xB9", + "\xA9\xDA" => "\xE6\x8B\x92", + "\xA9\xDB" => "\xE6\x8B\x9B", + "\xA9\xDC" => "\xE6\x8A\xAB", + "\xA9\xDD" => "\xE6\x8B\x93", + "\xA9\xDE" => "\xE6\x8B\x94", + "\xA9\xDF" => "\xE6\x8B\x8B", + "\xA9\xE0" => "\xE6\x8B\x88", + "\xA9\xE1" => "\xE6\x8A\xA8", + "\xA9\xE2" => "\xE6\x8A\xBD", + "\xA9\xE3" => "\xE6\x8A\xBC", + "\xA9\xE4" => "\xE6\x8B\x90", + "\xA9\xE5" => "\xE6\x8B\x99", + "\xA9\xE6" => "\xE6\x8B\x87", + "\xA9\xE7" => "\xE6\x8B\x8D", + "\xA9\xE8" => "\xE6\x8A\xB5", + "\xA9\xE9" => "\xE6\x8B\x9A", + "\xA9\xEA" => "\xE6\x8A\xB1", + "\xA9\xEB" => "\xE6\x8B\x98", + "\xA9\xEC" => "\xE6\x8B\x96", + "\xA9\xED" => "\xE6\x8B\x97", + "\xA9\xEE" => "\xE6\x8B\x86", + "\xA9\xEF" => "\xE6\x8A\xAC", + "\xA9\xF0" => "\xE6\x8B\x8E", + "\xA9\xF1" => "\xE6\x94\xBE", + "\xA9\xF2" => "\xE6\x96\xA7", + "\xA9\xF3" => "\xE6\x96\xBC", + "\xA9\xF4" => "\xE6\x97\xBA", + "\xA9\xF5" => "\xE6\x98\x94", + "\xA9\xF6" => "\xE6\x98\x93", + "\xA9\xF7" => "\xE6\x98\x8C", + "\xA9\xF8" => "\xE6\x98\x86", + "\xA9\xF9" => "\xE6\x98\x82", + "\xA9\xFA" => "\xE6\x98\x8E", + "\xA9\xFB" => "\xE6\x98\x80", + "\xA9\xFC" => "\xE6\x98\x8F", + "\xA9\xFD" => "\xE6\x98\x95", + "\xA9\xFE" => "\xE6\x98\x8A", + "\xAA\x40" => "\xE6\x98\x87", + "\xAA\x41" => "\xE6\x9C\x8D", + "\xAA\x42" => "\xE6\x9C\x8B", + "\xAA\x43" => "\xE6\x9D\xAD", + "\xAA\x44" => "\xE6\x9E\x8B", + "\xAA\x45" => "\xE6\x9E\x95", + "\xAA\x46" => "\xE6\x9D\xB1", + "\xAA\x47" => "\xE6\x9E\x9C", + "\xAA\x48" => "\xE6\x9D\xB3", + "\xAA\x49" => "\xE6\x9D\xB7", + "\xAA\x4A" => "\xE6\x9E\x87", + "\xAA\x4B" => "\xE6\x9E\x9D", + "\xAA\x4C" => "\xE6\x9E\x97", + "\xAA\x4D" => "\xE6\x9D\xAF", + "\xAA\x4E" => "\xE6\x9D\xB0", + "\xAA\x4F" => "\xE6\x9D\xBF", + "\xAA\x50" => "\xE6\x9E\x89", + "\xAA\x51" => "\xE6\x9D\xBE", + "\xAA\x52" => "\xE6\x9E\x90", + "\xAA\x53" => "\xE6\x9D\xB5", + "\xAA\x54" => "\xE6\x9E\x9A", + "\xAA\x55" => "\xE6\x9E\x93", + "\xAA\x56" => "\xE6\x9D\xBC", + "\xAA\x57" => "\xE6\x9D\xAA", + "\xAA\x58" => "\xE6\x9D\xB2", + "\xAA\x59" => "\xE6\xAC\xA3", + "\xAA\x5A" => "\xE6\xAD\xA6", + "\xAA\x5B" => "\xE6\xAD\xA7", + "\xAA\x5C" => "\xE6\xAD\xBF", + "\xAA\x5D" => "\xE6\xB0\x93", + "\xAA\x5E" => "\xE6\xB0\x9B", + "\xAA\x5F" => "\xE6\xB3\xA3", + "\xAA\x60" => "\xE6\xB3\xA8", + "\xAA\x61" => "\xE6\xB3\xB3", + "\xAA\x62" => "\xE6\xB2\xB1", + "\xAA\x63" => "\xE6\xB3\x8C", + "\xAA\x64" => "\xE6\xB3\xA5", + "\xAA\x65" => "\xE6\xB2\xB3", + "\xAA\x66" => "\xE6\xB2\xBD", + "\xAA\x67" => "\xE6\xB2\xBE", + "\xAA\x68" => "\xE6\xB2\xBC", + "\xAA\x69" => "\xE6\xB3\xA2", + "\xAA\x6A" => "\xE6\xB2\xAB", + "\xAA\x6B" => "\xE6\xB3\x95", + "\xAA\x6C" => "\xE6\xB3\x93", + "\xAA\x6D" => "\xE6\xB2\xB8", + "\xAA\x6E" => "\xE6\xB3\x84", + "\xAA\x6F" => "\xE6\xB2\xB9", + "\xAA\x70" => "\xE6\xB3\x81", + "\xAA\x71" => "\xE6\xB2\xAE", + "\xAA\x72" => "\xE6\xB3\x97", + "\xAA\x73" => "\xE6\xB3\x85", + "\xAA\x74" => "\xE6\xB3\xB1", + "\xAA\x75" => "\xE6\xB2\xBF", + "\xAA\x76" => "\xE6\xB2\xBB", + "\xAA\x77" => "\xE6\xB3\xA1", + "\xAA\x78" => "\xE6\xB3\x9B", + "\xAA\x79" => "\xE6\xB3\x8A", + "\xAA\x7A" => "\xE6\xB2\xAC", + "\xAA\x7B" => "\xE6\xB3\xAF", + "\xAA\x7C" => "\xE6\xB3\x9C", + "\xAA\x7D" => "\xE6\xB3\x96", + "\xAA\x7E" => "\xE6\xB3\xA0", + "\xAA\xA1" => "\xE7\x82\x95", + "\xAA\xA2" => "\xE7\x82\x8E", + "\xAA\xA3" => "\xE7\x82\x92", + "\xAA\xA4" => "\xE7\x82\x8A", + "\xAA\xA5" => "\xE7\x82\x99", + "\xAA\xA6" => "\xE7\x88\xAC", + "\xAA\xA7" => "\xE7\x88\xAD", + "\xAA\xA8" => "\xE7\x88\xB8", + "\xAA\xA9" => "\xE7\x89\x88", + "\xAA\xAA" => "\xE7\x89\xA7", + "\xAA\xAB" => "\xE7\x89\xA9", + "\xAA\xAC" => "\xE7\x8B\x80", + "\xAA\xAD" => "\xE7\x8B\x8E", + "\xAA\xAE" => "\xE7\x8B\x99", + "\xAA\xAF" => "\xE7\x8B\x97", + "\xAA\xB0" => "\xE7\x8B\x90", + "\xAA\xB1" => "\xE7\x8E\xA9", + "\xAA\xB2" => "\xE7\x8E\xA8", + "\xAA\xB3" => "\xE7\x8E\x9F", + "\xAA\xB4" => "\xE7\x8E\xAB", + "\xAA\xB5" => "\xE7\x8E\xA5", + "\xAA\xB6" => "\xE7\x94\xBD", + "\xAA\xB7" => "\xE7\x96\x9D", + "\xAA\xB8" => "\xE7\x96\x99", + "\xAA\xB9" => "\xE7\x96\x9A", + "\xAA\xBA" => "\xE7\x9A\x84", + "\xAA\xBB" => "\xE7\x9B\x82", + "\xAA\xBC" => "\xE7\x9B\xB2", + "\xAA\xBD" => "\xE7\x9B\xB4", + "\xAA\xBE" => "\xE7\x9F\xA5", + "\xAA\xBF" => "\xE7\x9F\xBD", + "\xAA\xC0" => "\xE7\xA4\xBE", + "\xAA\xC1" => "\xE7\xA5\x80", + "\xAA\xC2" => "\xE7\xA5\x81", + "\xAA\xC3" => "\xE7\xA7\x89", + "\xAA\xC4" => "\xE7\xA7\x88", + "\xAA\xC5" => "\xE7\xA9\xBA", + "\xAA\xC6" => "\xE7\xA9\xB9", + "\xAA\xC7" => "\xE7\xAB\xBA", + "\xAA\xC8" => "\xE7\xB3\xBE", + "\xAA\xC9" => "\xE7\xBD\x94", + "\xAA\xCA" => "\xE7\xBE\x8C", + "\xAA\xCB" => "\xE7\xBE\x8B", + "\xAA\xCC" => "\xE8\x80\x85", + "\xAA\xCD" => "\xE8\x82\xBA", + "\xAA\xCE" => "\xE8\x82\xA5", + "\xAA\xCF" => "\xE8\x82\xA2", + "\xAA\xD0" => "\xE8\x82\xB1", + "\xAA\xD1" => "\xE8\x82\xA1", + "\xAA\xD2" => "\xE8\x82\xAB", + "\xAA\xD3" => "\xE8\x82\xA9", + "\xAA\xD4" => "\xE8\x82\xB4", + "\xAA\xD5" => "\xE8\x82\xAA", + "\xAA\xD6" => "\xE8\x82\xAF", + "\xAA\xD7" => "\xE8\x87\xA5", + "\xAA\xD8" => "\xE8\x87\xBE", + "\xAA\xD9" => "\xE8\x88\x8D", + "\xAA\xDA" => "\xE8\x8A\xB3", + "\xAA\xDB" => "\xE8\x8A\x9D", + "\xAA\xDC" => "\xE8\x8A\x99", + "\xAA\xDD" => "\xE8\x8A\xAD", + "\xAA\xDE" => "\xE8\x8A\xBD", + "\xAA\xDF" => "\xE8\x8A\x9F", + "\xAA\xE0" => "\xE8\x8A\xB9", + "\xAA\xE1" => "\xE8\x8A\xB1", + "\xAA\xE2" => "\xE8\x8A\xAC", + "\xAA\xE3" => "\xE8\x8A\xA5", + "\xAA\xE4" => "\xE8\x8A\xAF", + "\xAA\xE5" => "\xE8\x8A\xB8", + "\xAA\xE6" => "\xE8\x8A\xA3", + "\xAA\xE7" => "\xE8\x8A\xB0", + "\xAA\xE8" => "\xE8\x8A\xBE", + "\xAA\xE9" => "\xE8\x8A\xB7", + "\xAA\xEA" => "\xE8\x99\x8E", + "\xAA\xEB" => "\xE8\x99\xB1", + "\xAA\xEC" => "\xE5\x88\x9D", + "\xAA\xED" => "\xE8\xA1\xA8", + "\xAA\xEE" => "\xE8\xBB\x8B", + "\xAA\xEF" => "\xE8\xBF\x8E", + "\xAA\xF0" => "\xE8\xBF\x94", + "\xAA\xF1" => "\xE8\xBF\x91", + "\xAA\xF2" => "\xE9\x82\xB5", + "\xAA\xF3" => "\xE9\x82\xB8", + "\xAA\xF4" => "\xE9\x82\xB1", + "\xAA\xF5" => "\xE9\x82\xB6", + "\xAA\xF6" => "\xE9\x87\x87", + "\xAA\xF7" => "\xE9\x87\x91", + "\xAA\xF8" => "\xE9\x95\xB7", + "\xAA\xF9" => "\xE9\x96\x80", + "\xAA\xFA" => "\xE9\x98\x9C", + "\xAA\xFB" => "\xE9\x99\x80", + "\xAA\xFC" => "\xE9\x98\xBF", + "\xAA\xFD" => "\xE9\x98\xBB", + "\xAA\xFE" => "\xE9\x99\x84", + "\xAB\x40" => "\xE9\x99\x82", + "\xAB\x41" => "\xE9\x9A\xB9", + "\xAB\x42" => "\xE9\x9B\xA8", + "\xAB\x43" => "\xE9\x9D\x92", + "\xAB\x44" => "\xE9\x9D\x9E", + "\xAB\x45" => "\xE4\xBA\x9F", + "\xAB\x46" => "\xE4\xBA\xAD", + "\xAB\x47" => "\xE4\xBA\xAE", + "\xAB\x48" => "\xE4\xBF\xA1", + "\xAB\x49" => "\xE4\xBE\xB5", + "\xAB\x4A" => "\xE4\xBE\xAF", + "\xAB\x4B" => "\xE4\xBE\xBF", + "\xAB\x4C" => "\xE4\xBF\xA0", + "\xAB\x4D" => "\xE4\xBF\x91", + "\xAB\x4E" => "\xE4\xBF\x8F", + "\xAB\x4F" => "\xE4\xBF\x9D", + "\xAB\x50" => "\xE4\xBF\x83", + "\xAB\x51" => "\xE4\xBE\xB6", + "\xAB\x52" => "\xE4\xBF\x98", + "\xAB\x53" => "\xE4\xBF\x9F", + "\xAB\x54" => "\xE4\xBF\x8A", + "\xAB\x55" => "\xE4\xBF\x97", + "\xAB\x56" => "\xE4\xBE\xAE", + "\xAB\x57" => "\xE4\xBF\x90", + "\xAB\x58" => "\xE4\xBF\x84", + "\xAB\x59" => "\xE4\xBF\x82", + "\xAB\x5A" => "\xE4\xBF\x9A", + "\xAB\x5B" => "\xE4\xBF\x8E", + "\xAB\x5C" => "\xE4\xBF\x9E", + "\xAB\x5D" => "\xE4\xBE\xB7", + "\xAB\x5E" => "\xE5\x85\x97", + "\xAB\x5F" => "\xE5\x86\x92", + "\xAB\x60" => "\xE5\x86\x91", + "\xAB\x61" => "\xE5\x86\xA0", + "\xAB\x62" => "\xE5\x89\x8E", + "\xAB\x63" => "\xE5\x89\x83", + "\xAB\x64" => "\xE5\x89\x8A", + "\xAB\x65" => "\xE5\x89\x8D", + "\xAB\x66" => "\xE5\x89\x8C", + "\xAB\x67" => "\xE5\x89\x8B", + "\xAB\x68" => "\xE5\x89\x87", + "\xAB\x69" => "\xE5\x8B\x87", + "\xAB\x6A" => "\xE5\x8B\x89", + "\xAB\x6B" => "\xE5\x8B\x83", + "\xAB\x6C" => "\xE5\x8B\x81", + "\xAB\x6D" => "\xE5\x8C\x8D", + "\xAB\x6E" => "\xE5\x8D\x97", + "\xAB\x6F" => "\xE5\x8D\xBB", + "\xAB\x70" => "\xE5\x8E\x9A", + "\xAB\x71" => "\xE5\x8F\x9B", + "\xAB\x72" => "\xE5\x92\xAC", + "\xAB\x73" => "\xE5\x93\x80", + "\xAB\x74" => "\xE5\x92\xA8", + "\xAB\x75" => "\xE5\x93\x8E", + "\xAB\x76" => "\xE5\x93\x89", + "\xAB\x77" => "\xE5\x92\xB8", + "\xAB\x78" => "\xE5\x92\xA6", + "\xAB\x79" => "\xE5\x92\xB3", + "\xAB\x7A" => "\xE5\x93\x87", + "\xAB\x7B" => "\xE5\x93\x82", + "\xAB\x7C" => "\xE5\x92\xBD", + "\xAB\x7D" => "\xE5\x92\xAA", + "\xAB\x7E" => "\xE5\x93\x81", + "\xAB\xA1" => "\xE5\x93\x84", + "\xAB\xA2" => "\xE5\x93\x88", + "\xAB\xA3" => "\xE5\x92\xAF", + "\xAB\xA4" => "\xE5\x92\xAB", + "\xAB\xA5" => "\xE5\x92\xB1", + "\xAB\xA6" => "\xE5\x92\xBB", + "\xAB\xA7" => "\xE5\x92\xA9", + "\xAB\xA8" => "\xE5\x92\xA7", + "\xAB\xA9" => "\xE5\x92\xBF", + "\xAB\xAA" => "\xE5\x9B\xBF", + "\xAB\xAB" => "\xE5\x9E\x82", + "\xAB\xAC" => "\xE5\x9E\x8B", + "\xAB\xAD" => "\xE5\x9E\xA0", + "\xAB\xAE" => "\xE5\x9E\xA3", + "\xAB\xAF" => "\xE5\x9E\xA2", + "\xAB\xB0" => "\xE5\x9F\x8E", + "\xAB\xB1" => "\xE5\x9E\xAE", + "\xAB\xB2" => "\xE5\x9E\x93", + "\xAB\xB3" => "\xE5\xA5\x95", + "\xAB\xB4" => "\xE5\xA5\x91", + "\xAB\xB5" => "\xE5\xA5\x8F", + "\xAB\xB6" => "\xE5\xA5\x8E", + "\xAB\xB7" => "\xE5\xA5\x90", + "\xAB\xB8" => "\xE5\xA7\x9C", + "\xAB\xB9" => "\xE5\xA7\x98", + "\xAB\xBA" => "\xE5\xA7\xBF", + "\xAB\xBB" => "\xE5\xA7\xA3", + "\xAB\xBC" => "\xE5\xA7\xA8", + "\xAB\xBD" => "\xE5\xA8\x83", + "\xAB\xBE" => "\xE5\xA7\xA5", + "\xAB\xBF" => "\xE5\xA7\xAA", + "\xAB\xC0" => "\xE5\xA7\x9A", + "\xAB\xC1" => "\xE5\xA7\xA6", + "\xAB\xC2" => "\xE5\xA8\x81", + "\xAB\xC3" => "\xE5\xA7\xBB", + "\xAB\xC4" => "\xE5\xAD\xA9", + "\xAB\xC5" => "\xE5\xAE\xA3", + "\xAB\xC6" => "\xE5\xAE\xA6", + "\xAB\xC7" => "\xE5\xAE\xA4", + "\xAB\xC8" => "\xE5\xAE\xA2", + "\xAB\xC9" => "\xE5\xAE\xA5", + "\xAB\xCA" => "\xE5\xB0\x81", + "\xAB\xCB" => "\xE5\xB1\x8E", + "\xAB\xCC" => "\xE5\xB1\x8F", + "\xAB\xCD" => "\xE5\xB1\x8D", + "\xAB\xCE" => "\xE5\xB1\x8B", + "\xAB\xCF" => "\xE5\xB3\x99", + "\xAB\xD0" => "\xE5\xB3\x92", + "\xAB\xD1" => "\xE5\xB7\xB7", + "\xAB\xD2" => "\xE5\xB8\x9D", + "\xAB\xD3" => "\xE5\xB8\xA5", + "\xAB\xD4" => "\xE5\xB8\x9F", + "\xAB\xD5" => "\xE5\xB9\xBD", + "\xAB\xD6" => "\xE5\xBA\xA0", + "\xAB\xD7" => "\xE5\xBA\xA6", + "\xAB\xD8" => "\xE5\xBB\xBA", + "\xAB\xD9" => "\xE5\xBC\x88", + "\xAB\xDA" => "\xE5\xBC\xAD", + "\xAB\xDB" => "\xE5\xBD\xA5", + "\xAB\xDC" => "\xE5\xBE\x88", + "\xAB\xDD" => "\xE5\xBE\x85", + "\xAB\xDE" => "\xE5\xBE\x8A", + "\xAB\xDF" => "\xE5\xBE\x8B", + "\xAB\xE0" => "\xE5\xBE\x87", + "\xAB\xE1" => "\xE5\xBE\x8C", + "\xAB\xE2" => "\xE5\xBE\x89", + "\xAB\xE3" => "\xE6\x80\x92", + "\xAB\xE4" => "\xE6\x80\x9D", + "\xAB\xE5" => "\xE6\x80\xA0", + "\xAB\xE6" => "\xE6\x80\xA5", + "\xAB\xE7" => "\xE6\x80\x8E", + "\xAB\xE8" => "\xE6\x80\xA8", + "\xAB\xE9" => "\xE6\x81\x8D", + "\xAB\xEA" => "\xE6\x81\xB0", + "\xAB\xEB" => "\xE6\x81\xA8", + "\xAB\xEC" => "\xE6\x81\xA2", + "\xAB\xED" => "\xE6\x81\x86", + "\xAB\xEE" => "\xE6\x81\x83", + "\xAB\xEF" => "\xE6\x81\xAC", + "\xAB\xF0" => "\xE6\x81\xAB", + "\xAB\xF1" => "\xE6\x81\xAA", + "\xAB\xF2" => "\xE6\x81\xA4", + "\xAB\xF3" => "\xE6\x89\x81", + "\xAB\xF4" => "\xE6\x8B\x9C", + "\xAB\xF5" => "\xE6\x8C\x96", + "\xAB\xF6" => "\xE6\x8C\x89", + "\xAB\xF7" => "\xE6\x8B\xBC", + "\xAB\xF8" => "\xE6\x8B\xAD", + "\xAB\xF9" => "\xE6\x8C\x81", + "\xAB\xFA" => "\xE6\x8B\xAE", + "\xAB\xFB" => "\xE6\x8B\xBD", + "\xAB\xFC" => "\xE6\x8C\x87", + "\xAB\xFD" => "\xE6\x8B\xB1", + "\xAB\xFE" => "\xE6\x8B\xB7", + "\xAC\x40" => "\xE6\x8B\xAF", + "\xAC\x41" => "\xE6\x8B\xAC", + "\xAC\x42" => "\xE6\x8B\xBE", + "\xAC\x43" => "\xE6\x8B\xB4", + "\xAC\x44" => "\xE6\x8C\x91", + "\xAC\x45" => "\xE6\x8C\x82", + "\xAC\x46" => "\xE6\x94\xBF", + "\xAC\x47" => "\xE6\x95\x85", + "\xAC\x48" => "\xE6\x96\xAB", + "\xAC\x49" => "\xE6\x96\xBD", + "\xAC\x4A" => "\xE6\x97\xA2", + "\xAC\x4B" => "\xE6\x98\xA5", + "\xAC\x4C" => "\xE6\x98\xAD", + "\xAC\x4D" => "\xE6\x98\xA0", + "\xAC\x4E" => "\xE6\x98\xA7", + "\xAC\x4F" => "\xE6\x98\xAF", + "\xAC\x50" => "\xE6\x98\x9F", + "\xAC\x51" => "\xE6\x98\xA8", + "\xAC\x52" => "\xE6\x98\xB1", + "\xAC\x53" => "\xE6\x98\xA4", + "\xAC\x54" => "\xE6\x9B\xB7", + "\xAC\x55" => "\xE6\x9F\xBF", + "\xAC\x56" => "\xE6\x9F\x93", + "\xAC\x57" => "\xE6\x9F\xB1", + "\xAC\x58" => "\xE6\x9F\x94", + "\xAC\x59" => "\xE6\x9F\x90", + "\xAC\x5A" => "\xE6\x9F\xAC", + "\xAC\x5B" => "\xE6\x9E\xB6", + "\xAC\x5C" => "\xE6\x9E\xAF", + "\xAC\x5D" => "\xE6\x9F\xB5", + "\xAC\x5E" => "\xE6\x9F\xA9", + "\xAC\x5F" => "\xE6\x9F\xAF", + "\xAC\x60" => "\xE6\x9F\x84", + "\xAC\x61" => "\xE6\x9F\x91", + "\xAC\x62" => "\xE6\x9E\xB4", + "\xAC\x63" => "\xE6\x9F\x9A", + "\xAC\x64" => "\xE6\x9F\xA5", + "\xAC\x65" => "\xE6\x9E\xB8", + "\xAC\x66" => "\xE6\x9F\x8F", + "\xAC\x67" => "\xE6\x9F\x9E", + "\xAC\x68" => "\xE6\x9F\xB3", + "\xAC\x69" => "\xE6\x9E\xB0", + "\xAC\x6A" => "\xE6\x9F\x99", + "\xAC\x6B" => "\xE6\x9F\xA2", + "\xAC\x6C" => "\xE6\x9F\x9D", + "\xAC\x6D" => "\xE6\x9F\x92", + "\xAC\x6E" => "\xE6\xAD\xAA", + "\xAC\x6F" => "\xE6\xAE\x83", + "\xAC\x70" => "\xE6\xAE\x86", + "\xAC\x71" => "\xE6\xAE\xB5", + "\xAC\x72" => "\xE6\xAF\x92", + "\xAC\x73" => "\xE6\xAF\x97", + "\xAC\x74" => "\xE6\xB0\x9F", + "\xAC\x75" => "\xE6\xB3\x89", + "\xAC\x76" => "\xE6\xB4\x8B", + "\xAC\x77" => "\xE6\xB4\xB2", + "\xAC\x78" => "\xE6\xB4\xAA", + "\xAC\x79" => "\xE6\xB5\x81", + "\xAC\x7A" => "\xE6\xB4\xA5", + "\xAC\x7B" => "\xE6\xB4\x8C", + "\xAC\x7C" => "\xE6\xB4\xB1", + "\xAC\x7D" => "\xE6\xB4\x9E", + "\xAC\x7E" => "\xE6\xB4\x97", + "\xAC\xA1" => "\xE6\xB4\xBB", + "\xAC\xA2" => "\xE6\xB4\xBD", + "\xAC\xA3" => "\xE6\xB4\xBE", + "\xAC\xA4" => "\xE6\xB4\xB6", + "\xAC\xA5" => "\xE6\xB4\x9B", + "\xAC\xA6" => "\xE6\xB3\xB5", + "\xAC\xA7" => "\xE6\xB4\xB9", + "\xAC\xA8" => "\xE6\xB4\xA7", + "\xAC\xA9" => "\xE6\xB4\xB8", + "\xAC\xAA" => "\xE6\xB4\xA9", + "\xAC\xAB" => "\xE6\xB4\xAE", + "\xAC\xAC" => "\xE6\xB4\xB5", + "\xAC\xAD" => "\xE6\xB4\x8E", + "\xAC\xAE" => "\xE6\xB4\xAB", + "\xAC\xAF" => "\xE7\x82\xAB", + "\xAC\xB0" => "\xE7\x82\xBA", + "\xAC\xB1" => "\xE7\x82\xB3", + "\xAC\xB2" => "\xE7\x82\xAC", + "\xAC\xB3" => "\xE7\x82\xAF", + "\xAC\xB4" => "\xE7\x82\xAD", + "\xAC\xB5" => "\xE7\x82\xB8", + "\xAC\xB6" => "\xE7\x82\xAE", + "\xAC\xB7" => "\xE7\x82\xA4", + "\xAC\xB8" => "\xE7\x88\xB0", + "\xAC\xB9" => "\xE7\x89\xB2", + "\xAC\xBA" => "\xE7\x89\xAF", + "\xAC\xBB" => "\xE7\x89\xB4", + "\xAC\xBC" => "\xE7\x8B\xA9", + "\xAC\xBD" => "\xE7\x8B\xA0", + "\xAC\xBE" => "\xE7\x8B\xA1", + "\xAC\xBF" => "\xE7\x8E\xB7", + "\xAC\xC0" => "\xE7\x8F\x8A", + "\xAC\xC1" => "\xE7\x8E\xBB", + "\xAC\xC2" => "\xE7\x8E\xB2", + "\xAC\xC3" => "\xE7\x8F\x8D", + "\xAC\xC4" => "\xE7\x8F\x80", + "\xAC\xC5" => "\xE7\x8E\xB3", + "\xAC\xC6" => "\xE7\x94\x9A", + "\xAC\xC7" => "\xE7\x94\xAD", + "\xAC\xC8" => "\xE7\x95\x8F", + "\xAC\xC9" => "\xE7\x95\x8C", + "\xAC\xCA" => "\xE7\x95\x8E", + "\xAC\xCB" => "\xE7\x95\x8B", + "\xAC\xCC" => "\xE7\x96\xAB", + "\xAC\xCD" => "\xE7\x96\xA4", + "\xAC\xCE" => "\xE7\x96\xA5", + "\xAC\xCF" => "\xE7\x96\xA2", + "\xAC\xD0" => "\xE7\x96\xA3", + "\xAC\xD1" => "\xE7\x99\xB8", + "\xAC\xD2" => "\xE7\x9A\x86", + "\xAC\xD3" => "\xE7\x9A\x87", + "\xAC\xD4" => "\xE7\x9A\x88", + "\xAC\xD5" => "\xE7\x9B\x88", + "\xAC\xD6" => "\xE7\x9B\x86", + "\xAC\xD7" => "\xE7\x9B\x83", + "\xAC\xD8" => "\xE7\x9B\x85", + "\xAC\xD9" => "\xE7\x9C\x81", + "\xAC\xDA" => "\xE7\x9B\xB9", + "\xAC\xDB" => "\xE7\x9B\xB8", + "\xAC\xDC" => "\xE7\x9C\x89", + "\xAC\xDD" => "\xE7\x9C\x8B", + "\xAC\xDE" => "\xE7\x9B\xBE", + "\xAC\xDF" => "\xE7\x9B\xBC", + "\xAC\xE0" => "\xE7\x9C\x87", + "\xAC\xE1" => "\xE7\x9F\x9C", + "\xAC\xE2" => "\xE7\xA0\x82", + "\xAC\xE3" => "\xE7\xA0\x94", + "\xAC\xE4" => "\xE7\xA0\x8C", + "\xAC\xE5" => "\xE7\xA0\x8D", + "\xAC\xE6" => "\xE7\xA5\x86", + "\xAC\xE7" => "\xE7\xA5\x89", + "\xAC\xE8" => "\xE7\xA5\x88", + "\xAC\xE9" => "\xE7\xA5\x87", + "\xAC\xEA" => "\xE7\xA6\xB9", + "\xAC\xEB" => "\xE7\xA6\xBA", + "\xAC\xEC" => "\xE7\xA7\x91", + "\xAC\xED" => "\xE7\xA7\x92", + "\xAC\xEE" => "\xE7\xA7\x8B", + "\xAC\xEF" => "\xE7\xA9\xBF", + "\xAC\xF0" => "\xE7\xAA\x81", + "\xAC\xF1" => "\xE7\xAB\xBF", + "\xAC\xF2" => "\xE7\xAB\xBD", + "\xAC\xF3" => "\xE7\xB1\xBD", + "\xAC\xF4" => "\xE7\xB4\x82", + "\xAC\xF5" => "\xE7\xB4\x85", + "\xAC\xF6" => "\xE7\xB4\x80", + "\xAC\xF7" => "\xE7\xB4\x89", + "\xAC\xF8" => "\xE7\xB4\x87", + "\xAC\xF9" => "\xE7\xB4\x84", + "\xAC\xFA" => "\xE7\xB4\x86", + "\xAC\xFB" => "\xE7\xBC\xB8", + "\xAC\xFC" => "\xE7\xBE\x8E", + "\xAC\xFD" => "\xE7\xBE\xBF", + "\xAC\xFE" => "\xE8\x80\x84", + "\xAD\x40" => "\xE8\x80\x90", + "\xAD\x41" => "\xE8\x80\x8D", + "\xAD\x42" => "\xE8\x80\x91", + "\xAD\x43" => "\xE8\x80\xB6", + "\xAD\x44" => "\xE8\x83\x96", + "\xAD\x45" => "\xE8\x83\xA5", + "\xAD\x46" => "\xE8\x83\x9A", + "\xAD\x47" => "\xE8\x83\x83", + "\xAD\x48" => "\xE8\x83\x84", + "\xAD\x49" => "\xE8\x83\x8C", + "\xAD\x4A" => "\xE8\x83\xA1", + "\xAD\x4B" => "\xE8\x83\x9B", + "\xAD\x4C" => "\xE8\x83\x8E", + "\xAD\x4D" => "\xE8\x83\x9E", + "\xAD\x4E" => "\xE8\x83\xA4", + "\xAD\x4F" => "\xE8\x83\x9D", + "\xAD\x50" => "\xE8\x87\xB4", + "\xAD\x51" => "\xE8\x88\xA2", + "\xAD\x52" => "\xE8\x8B\xA7", + "\xAD\x53" => "\xE8\x8C\x83", + "\xAD\x54" => "\xE8\x8C\x85", + "\xAD\x55" => "\xE8\x8B\xA3", + "\xAD\x56" => "\xE8\x8B\x9B", + "\xAD\x57" => "\xE8\x8B\xA6", + "\xAD\x58" => "\xE8\x8C\x84", + "\xAD\x59" => "\xE8\x8B\xA5", + "\xAD\x5A" => "\xE8\x8C\x82", + "\xAD\x5B" => "\xE8\x8C\x89", + "\xAD\x5C" => "\xE8\x8B\x92", + "\xAD\x5D" => "\xE8\x8B\x97", + "\xAD\x5E" => "\xE8\x8B\xB1", + "\xAD\x5F" => "\xE8\x8C\x81", + "\xAD\x60" => "\xE8\x8B\x9C", + "\xAD\x61" => "\xE8\x8B\x94", + "\xAD\x62" => "\xE8\x8B\x91", + "\xAD\x63" => "\xE8\x8B\x9E", + "\xAD\x64" => "\xE8\x8B\x93", + "\xAD\x65" => "\xE8\x8B\x9F", + "\xAD\x66" => "\xE8\x8B\xAF", + "\xAD\x67" => "\xE8\x8C\x86", + "\xAD\x68" => "\xE8\x99\x90", + "\xAD\x69" => "\xE8\x99\xB9", + "\xAD\x6A" => "\xE8\x99\xBB", + "\xAD\x6B" => "\xE8\x99\xBA", + "\xAD\x6C" => "\xE8\xA1\x8D", + "\xAD\x6D" => "\xE8\xA1\xAB", + "\xAD\x6E" => "\xE8\xA6\x81", + "\xAD\x6F" => "\xE8\xA7\x94", + "\xAD\x70" => "\xE8\xA8\x88", + "\xAD\x71" => "\xE8\xA8\x82", + "\xAD\x72" => "\xE8\xA8\x83", + "\xAD\x73" => "\xE8\xB2\x9E", + "\xAD\x74" => "\xE8\xB2\xA0", + "\xAD\x75" => "\xE8\xB5\xB4", + "\xAD\x76" => "\xE8\xB5\xB3", + "\xAD\x77" => "\xE8\xB6\xB4", + "\xAD\x78" => "\xE8\xBB\x8D", + "\xAD\x79" => "\xE8\xBB\x8C", + "\xAD\x7A" => "\xE8\xBF\xB0", + "\xAD\x7B" => "\xE8\xBF\xA6", + "\xAD\x7C" => "\xE8\xBF\xA2", + "\xAD\x7D" => "\xE8\xBF\xAA", + "\xAD\x7E" => "\xE8\xBF\xA5", + "\xAD\xA1" => "\xE8\xBF\xAD", + "\xAD\xA2" => "\xE8\xBF\xAB", + "\xAD\xA3" => "\xE8\xBF\xA4", + "\xAD\xA4" => "\xE8\xBF\xA8", + "\xAD\xA5" => "\xE9\x83\x8A", + "\xAD\xA6" => "\xE9\x83\x8E", + "\xAD\xA7" => "\xE9\x83\x81", + "\xAD\xA8" => "\xE9\x83\x83", + "\xAD\xA9" => "\xE9\x85\x8B", + "\xAD\xAA" => "\xE9\x85\x8A", + "\xAD\xAB" => "\xE9\x87\x8D", + "\xAD\xAC" => "\xE9\x96\x82", + "\xAD\xAD" => "\xE9\x99\x90", + "\xAD\xAE" => "\xE9\x99\x8B", + "\xAD\xAF" => "\xE9\x99\x8C", + "\xAD\xB0" => "\xE9\x99\x8D", + "\xAD\xB1" => "\xE9\x9D\xA2", + "\xAD\xB2" => "\xE9\x9D\xA9", + "\xAD\xB3" => "\xE9\x9F\x8B", + "\xAD\xB4" => "\xE9\x9F\xAD", + "\xAD\xB5" => "\xE9\x9F\xB3", + "\xAD\xB6" => "\xE9\xA0\x81", + "\xAD\xB7" => "\xE9\xA2\xA8", + "\xAD\xB8" => "\xE9\xA3\x9B", + "\xAD\xB9" => "\xE9\xA3\x9F", + "\xAD\xBA" => "\xE9\xA6\x96", + "\xAD\xBB" => "\xE9\xA6\x99", + "\xAD\xBC" => "\xE4\xB9\x98", + "\xAD\xBD" => "\xE4\xBA\xB3", + "\xAD\xBE" => "\xE5\x80\x8C", + "\xAD\xBF" => "\xE5\x80\x8D", + "\xAD\xC0" => "\xE5\x80\xA3", + "\xAD\xC1" => "\xE4\xBF\xAF", + "\xAD\xC2" => "\xE5\x80\xA6", + "\xAD\xC3" => "\xE5\x80\xA5", + "\xAD\xC4" => "\xE4\xBF\xB8", + "\xAD\xC5" => "\xE5\x80\xA9", + "\xAD\xC6" => "\xE5\x80\x96", + "\xAD\xC7" => "\xE5\x80\x86", + "\xAD\xC8" => "\xE5\x80\xBC", + "\xAD\xC9" => "\xE5\x80\x9F", + "\xAD\xCA" => "\xE5\x80\x9A", + "\xAD\xCB" => "\xE5\x80\x92", + "\xAD\xCC" => "\xE5\x80\x91", + "\xAD\xCD" => "\xE4\xBF\xBA", + "\xAD\xCE" => "\xE5\x80\x80", + "\xAD\xCF" => "\xE5\x80\x94", + "\xAD\xD0" => "\xE5\x80\xA8", + "\xAD\xD1" => "\xE4\xBF\xB1", + "\xAD\xD2" => "\xE5\x80\xA1", + "\xAD\xD3" => "\xE5\x80\x8B", + "\xAD\xD4" => "\xE5\x80\x99", + "\xAD\xD5" => "\xE5\x80\x98", + "\xAD\xD6" => "\xE4\xBF\xB3", + "\xAD\xD7" => "\xE4\xBF\xAE", + "\xAD\xD8" => "\xE5\x80\xAD", + "\xAD\xD9" => "\xE5\x80\xAA", + "\xAD\xDA" => "\xE4\xBF\xBE", + "\xAD\xDB" => "\xE5\x80\xAB", + "\xAD\xDC" => "\xE5\x80\x89", + "\xAD\xDD" => "\xE5\x85\xBC", + "\xAD\xDE" => "\xE5\x86\xA4", + "\xAD\xDF" => "\xE5\x86\xA5", + "\xAD\xE0" => "\xE5\x86\xA2", + "\xAD\xE1" => "\xE5\x87\x8D", + "\xAD\xE2" => "\xE5\x87\x8C", + "\xAD\xE3" => "\xE5\x87\x86", + "\xAD\xE4" => "\xE5\x87\x8B", + "\xAD\xE5" => "\xE5\x89\x96", + "\xAD\xE6" => "\xE5\x89\x9C", + "\xAD\xE7" => "\xE5\x89\x94", + "\xAD\xE8" => "\xE5\x89\x9B", + "\xAD\xE9" => "\xE5\x89\x9D", + "\xAD\xEA" => "\xE5\x8C\xAA", + "\xAD\xEB" => "\xE5\x8D\xBF", + "\xAD\xEC" => "\xE5\x8E\x9F", + "\xAD\xED" => "\xE5\x8E\x9D", + "\xAD\xEE" => "\xE5\x8F\x9F", + "\xAD\xEF" => "\xE5\x93\xA8", + "\xAD\xF0" => "\xE5\x94\x90", + "\xAD\xF1" => "\xE5\x94\x81", + "\xAD\xF2" => "\xE5\x94\xB7", + "\xAD\xF3" => "\xE5\x93\xBC", + "\xAD\xF4" => "\xE5\x93\xA5", + "\xAD\xF5" => "\xE5\x93\xB2", + "\xAD\xF6" => "\xE5\x94\x86", + "\xAD\xF7" => "\xE5\x93\xBA", + "\xAD\xF8" => "\xE5\x94\x94", + "\xAD\xF9" => "\xE5\x93\xA9", + "\xAD\xFA" => "\xE5\x93\xAD", + "\xAD\xFB" => "\xE5\x93\xA1", + "\xAD\xFC" => "\xE5\x94\x89", + "\xAD\xFD" => "\xE5\x93\xAE", + "\xAD\xFE" => "\xE5\x93\xAA", + "\xAE\x40" => "\xE5\x93\xA6", + "\xAE\x41" => "\xE5\x94\xA7", + "\xAE\x42" => "\xE5\x94\x87", + "\xAE\x43" => "\xE5\x93\xBD", + "\xAE\x44" => "\xE5\x94\x8F", + "\xAE\x45" => "\xE5\x9C\x83", + "\xAE\x46" => "\xE5\x9C\x84", + "\xAE\x47" => "\xE5\x9F\x82", + "\xAE\x48" => "\xE5\x9F\x94", + "\xAE\x49" => "\xE5\x9F\x8B", + "\xAE\x4A" => "\xE5\x9F\x83", + "\xAE\x4B" => "\xE5\xA0\x89", + "\xAE\x4C" => "\xE5\xA4\x8F", + "\xAE\x4D" => "\xE5\xA5\x97", + "\xAE\x4E" => "\xE5\xA5\x98", + "\xAE\x4F" => "\xE5\xA5\x9A", + "\xAE\x50" => "\xE5\xA8\x91", + "\xAE\x51" => "\xE5\xA8\x98", + "\xAE\x52" => "\xE5\xA8\x9C", + "\xAE\x53" => "\xE5\xA8\x9F", + "\xAE\x54" => "\xE5\xA8\x9B", + "\xAE\x55" => "\xE5\xA8\x93", + "\xAE\x56" => "\xE5\xA7\xAC", + "\xAE\x57" => "\xE5\xA8\xA0", + "\xAE\x58" => "\xE5\xA8\xA3", + "\xAE\x59" => "\xE5\xA8\xA9", + "\xAE\x5A" => "\xE5\xA8\xA5", + "\xAE\x5B" => "\xE5\xA8\x8C", + "\xAE\x5C" => "\xE5\xA8\x89", + "\xAE\x5D" => "\xE5\xAD\xAB", + "\xAE\x5E" => "\xE5\xB1\x98", + "\xAE\x5F" => "\xE5\xAE\xB0", + "\xAE\x60" => "\xE5\xAE\xB3", + "\xAE\x61" => "\xE5\xAE\xB6", + "\xAE\x62" => "\xE5\xAE\xB4", + "\xAE\x63" => "\xE5\xAE\xAE", + "\xAE\x64" => "\xE5\xAE\xB5", + "\xAE\x65" => "\xE5\xAE\xB9", + "\xAE\x66" => "\xE5\xAE\xB8", + "\xAE\x67" => "\xE5\xB0\x84", + "\xAE\x68" => "\xE5\xB1\x91", + "\xAE\x69" => "\xE5\xB1\x95", + "\xAE\x6A" => "\xE5\xB1\x90", + "\xAE\x6B" => "\xE5\xB3\xAD", + "\xAE\x6C" => "\xE5\xB3\xBD", + "\xAE\x6D" => "\xE5\xB3\xBB", + "\xAE\x6E" => "\xE5\xB3\xAA", + "\xAE\x6F" => "\xE5\xB3\xA8", + "\xAE\x70" => "\xE5\xB3\xB0", + "\xAE\x71" => "\xE5\xB3\xB6", + "\xAE\x72" => "\xE5\xB4\x81", + "\xAE\x73" => "\xE5\xB3\xB4", + "\xAE\x74" => "\xE5\xB7\xAE", + "\xAE\x75" => "\xE5\xB8\xAD", + "\xAE\x76" => "\xE5\xB8\xAB", + "\xAE\x77" => "\xE5\xBA\xAB", + "\xAE\x78" => "\xE5\xBA\xAD", + "\xAE\x79" => "\xE5\xBA\xA7", + "\xAE\x7A" => "\xE5\xBC\xB1", + "\xAE\x7B" => "\xE5\xBE\x92", + "\xAE\x7C" => "\xE5\xBE\x91", + "\xAE\x7D" => "\xE5\xBE\x90", + "\xAE\x7E" => "\xE6\x81\x99", + "\xAE\xA1" => "\xE6\x81\xA3", + "\xAE\xA2" => "\xE6\x81\xA5", + "\xAE\xA3" => "\xE6\x81\x90", + "\xAE\xA4" => "\xE6\x81\x95", + "\xAE\xA5" => "\xE6\x81\xAD", + "\xAE\xA6" => "\xE6\x81\xA9", + "\xAE\xA7" => "\xE6\x81\xAF", + "\xAE\xA8" => "\xE6\x82\x84", + "\xAE\xA9" => "\xE6\x82\x9F", + "\xAE\xAA" => "\xE6\x82\x9A", + "\xAE\xAB" => "\xE6\x82\x8D", + "\xAE\xAC" => "\xE6\x82\x94", + "\xAE\xAD" => "\xE6\x82\x8C", + "\xAE\xAE" => "\xE6\x82\x85", + "\xAE\xAF" => "\xE6\x82\x96", + "\xAE\xB0" => "\xE6\x89\x87", + "\xAE\xB1" => "\xE6\x8B\xB3", + "\xAE\xB2" => "\xE6\x8C\x88", + "\xAE\xB3" => "\xE6\x8B\xBF", + "\xAE\xB4" => "\xE6\x8D\x8E", + "\xAE\xB5" => "\xE6\x8C\xBE", + "\xAE\xB6" => "\xE6\x8C\xAF", + "\xAE\xB7" => "\xE6\x8D\x95", + "\xAE\xB8" => "\xE6\x8D\x82", + "\xAE\xB9" => "\xE6\x8D\x86", + "\xAE\xBA" => "\xE6\x8D\x8F", + "\xAE\xBB" => "\xE6\x8D\x89", + "\xAE\xBC" => "\xE6\x8C\xBA", + "\xAE\xBD" => "\xE6\x8D\x90", + "\xAE\xBE" => "\xE6\x8C\xBD", + "\xAE\xBF" => "\xE6\x8C\xAA", + "\xAE\xC0" => "\xE6\x8C\xAB", + "\xAE\xC1" => "\xE6\x8C\xA8", + "\xAE\xC2" => "\xE6\x8D\x8D", + "\xAE\xC3" => "\xE6\x8D\x8C", + "\xAE\xC4" => "\xE6\x95\x88", + "\xAE\xC5" => "\xE6\x95\x89", + "\xAE\xC6" => "\xE6\x96\x99", + "\xAE\xC7" => "\xE6\x97\x81", + "\xAE\xC8" => "\xE6\x97\x85", + "\xAE\xC9" => "\xE6\x99\x82", + "\xAE\xCA" => "\xE6\x99\x89", + "\xAE\xCB" => "\xE6\x99\x8F", + "\xAE\xCC" => "\xE6\x99\x83", + "\xAE\xCD" => "\xE6\x99\x92", + "\xAE\xCE" => "\xE6\x99\x8C", + "\xAE\xCF" => "\xE6\x99\x85", + "\xAE\xD0" => "\xE6\x99\x81", + "\xAE\xD1" => "\xE6\x9B\xB8", + "\xAE\xD2" => "\xE6\x9C\x94", + "\xAE\xD3" => "\xE6\x9C\x95", + "\xAE\xD4" => "\xE6\x9C\x97", + "\xAE\xD5" => "\xE6\xA0\xA1", + "\xAE\xD6" => "\xE6\xA0\xB8", + "\xAE\xD7" => "\xE6\xA1\x88", + "\xAE\xD8" => "\xE6\xA1\x86", + "\xAE\xD9" => "\xE6\xA1\x93", + "\xAE\xDA" => "\xE6\xA0\xB9", + "\xAE\xDB" => "\xE6\xA1\x82", + "\xAE\xDC" => "\xE6\xA1\x94", + "\xAE\xDD" => "\xE6\xA0\xA9", + "\xAE\xDE" => "\xE6\xA2\xB3", + "\xAE\xDF" => "\xE6\xA0\x97", + "\xAE\xE0" => "\xE6\xA1\x8C", + "\xAE\xE1" => "\xE6\xA1\x91", + "\xAE\xE2" => "\xE6\xA0\xBD", + "\xAE\xE3" => "\xE6\x9F\xB4", + "\xAE\xE4" => "\xE6\xA1\x90", + "\xAE\xE5" => "\xE6\xA1\x80", + "\xAE\xE6" => "\xE6\xA0\xBC", + "\xAE\xE7" => "\xE6\xA1\x83", + "\xAE\xE8" => "\xE6\xA0\xAA", + "\xAE\xE9" => "\xE6\xA1\x85", + "\xAE\xEA" => "\xE6\xA0\x93", + "\xAE\xEB" => "\xE6\xA0\x98", + "\xAE\xEC" => "\xE6\xA1\x81", + "\xAE\xED" => "\xE6\xAE\x8A", + "\xAE\xEE" => "\xE6\xAE\x89", + "\xAE\xEF" => "\xE6\xAE\xB7", + "\xAE\xF0" => "\xE6\xB0\xA3", + "\xAE\xF1" => "\xE6\xB0\xA7", + "\xAE\xF2" => "\xE6\xB0\xA8", + "\xAE\xF3" => "\xE6\xB0\xA6", + "\xAE\xF4" => "\xE6\xB0\xA4", + "\xAE\xF5" => "\xE6\xB3\xB0", + "\xAE\xF6" => "\xE6\xB5\xAA", + "\xAE\xF7" => "\xE6\xB6\x95", + "\xAE\xF8" => "\xE6\xB6\x88", + "\xAE\xF9" => "\xE6\xB6\x87", + "\xAE\xFA" => "\xE6\xB5\xA6", + "\xAE\xFB" => "\xE6\xB5\xB8", + "\xAE\xFC" => "\xE6\xB5\xB7", + "\xAE\xFD" => "\xE6\xB5\x99", + "\xAE\xFE" => "\xE6\xB6\x93", + "\xAF\x40" => "\xE6\xB5\xAC", + "\xAF\x41" => "\xE6\xB6\x89", + "\xAF\x42" => "\xE6\xB5\xAE", + "\xAF\x43" => "\xE6\xB5\x9A", + "\xAF\x44" => "\xE6\xB5\xB4", + "\xAF\x45" => "\xE6\xB5\xA9", + "\xAF\x46" => "\xE6\xB6\x8C", + "\xAF\x47" => "\xE6\xB6\x8A", + "\xAF\x48" => "\xE6\xB5\xB9", + "\xAF\x49" => "\xE6\xB6\x85", + "\xAF\x4A" => "\xE6\xB5\xA5", + "\xAF\x4B" => "\xE6\xB6\x94", + "\xAF\x4C" => "\xE7\x83\x8A", + "\xAF\x4D" => "\xE7\x83\x98", + "\xAF\x4E" => "\xE7\x83\xA4", + "\xAF\x4F" => "\xE7\x83\x99", + "\xAF\x50" => "\xE7\x83\x88", + "\xAF\x51" => "\xE7\x83\x8F", + "\xAF\x52" => "\xE7\x88\xB9", + "\xAF\x53" => "\xE7\x89\xB9", + "\xAF\x54" => "\xE7\x8B\xBC", + "\xAF\x55" => "\xE7\x8B\xB9", + "\xAF\x56" => "\xE7\x8B\xBD", + "\xAF\x57" => "\xE7\x8B\xB8", + "\xAF\x58" => "\xE7\x8B\xB7", + "\xAF\x59" => "\xE7\x8E\x86", + "\xAF\x5A" => "\xE7\x8F\xAD", + "\xAF\x5B" => "\xE7\x90\x89", + "\xAF\x5C" => "\xE7\x8F\xAE", + "\xAF\x5D" => "\xE7\x8F\xA0", + "\xAF\x5E" => "\xE7\x8F\xAA", + "\xAF\x5F" => "\xE7\x8F\x9E", + "\xAF\x60" => "\xE7\x95\x94", + "\xAF\x61" => "\xE7\x95\x9D", + "\xAF\x62" => "\xE7\x95\x9C", + "\xAF\x63" => "\xE7\x95\x9A", + "\xAF\x64" => "\xE7\x95\x99", + "\xAF\x65" => "\xE7\x96\xBE", + "\xAF\x66" => "\xE7\x97\x85", + "\xAF\x67" => "\xE7\x97\x87", + "\xAF\x68" => "\xE7\x96\xB2", + "\xAF\x69" => "\xE7\x96\xB3", + "\xAF\x6A" => "\xE7\x96\xBD", + "\xAF\x6B" => "\xE7\x96\xBC", + "\xAF\x6C" => "\xE7\x96\xB9", + "\xAF\x6D" => "\xE7\x97\x82", + "\xAF\x6E" => "\xE7\x96\xB8", + "\xAF\x6F" => "\xE7\x9A\x8B", + "\xAF\x70" => "\xE7\x9A\xB0", + "\xAF\x71" => "\xE7\x9B\x8A", + "\xAF\x72" => "\xE7\x9B\x8D", + "\xAF\x73" => "\xE7\x9B\x8E", + "\xAF\x74" => "\xE7\x9C\xA9", + "\xAF\x75" => "\xE7\x9C\x9F", + "\xAF\x76" => "\xE7\x9C\xA0", + "\xAF\x77" => "\xE7\x9C\xA8", + "\xAF\x78" => "\xE7\x9F\xA9", + "\xAF\x79" => "\xE7\xA0\xB0", + "\xAF\x7A" => "\xE7\xA0\xA7", + "\xAF\x7B" => "\xE7\xA0\xB8", + "\xAF\x7C" => "\xE7\xA0\x9D", + "\xAF\x7D" => "\xE7\xA0\xB4", + "\xAF\x7E" => "\xE7\xA0\xB7", + "\xAF\xA1" => "\xE7\xA0\xA5", + "\xAF\xA2" => "\xE7\xA0\xAD", + "\xAF\xA3" => "\xE7\xA0\xA0", + "\xAF\xA4" => "\xE7\xA0\x9F", + "\xAF\xA5" => "\xE7\xA0\xB2", + "\xAF\xA6" => "\xE7\xA5\x95", + "\xAF\xA7" => "\xE7\xA5\x90", + "\xAF\xA8" => "\xE7\xA5\xA0", + "\xAF\xA9" => "\xE7\xA5\x9F", + "\xAF\xAA" => "\xE7\xA5\x96", + "\xAF\xAB" => "\xE7\xA5\x9E", + "\xAF\xAC" => "\xE7\xA5\x9D", + "\xAF\xAD" => "\xE7\xA5\x97", + "\xAF\xAE" => "\xE7\xA5\x9A", + "\xAF\xAF" => "\xE7\xA7\xA4", + "\xAF\xB0" => "\xE7\xA7\xA3", + "\xAF\xB1" => "\xE7\xA7\xA7", + "\xAF\xB2" => "\xE7\xA7\x9F", + "\xAF\xB3" => "\xE7\xA7\xA6", + "\xAF\xB4" => "\xE7\xA7\xA9", + "\xAF\xB5" => "\xE7\xA7\x98", + "\xAF\xB6" => "\xE7\xAA\x84", + "\xAF\xB7" => "\xE7\xAA\x88", + "\xAF\xB8" => "\xE7\xAB\x99", + "\xAF\xB9" => "\xE7\xAC\x86", + "\xAF\xBA" => "\xE7\xAC\x91", + "\xAF\xBB" => "\xE7\xB2\x89", + "\xAF\xBC" => "\xE7\xB4\xA1", + "\xAF\xBD" => "\xE7\xB4\x97", + "\xAF\xBE" => "\xE7\xB4\x8B", + "\xAF\xBF" => "\xE7\xB4\x8A", + "\xAF\xC0" => "\xE7\xB4\xA0", + "\xAF\xC1" => "\xE7\xB4\xA2", + "\xAF\xC2" => "\xE7\xB4\x94", + "\xAF\xC3" => "\xE7\xB4\x90", + "\xAF\xC4" => "\xE7\xB4\x95", + "\xAF\xC5" => "\xE7\xB4\x9A", + "\xAF\xC6" => "\xE7\xB4\x9C", + "\xAF\xC7" => "\xE7\xB4\x8D", + "\xAF\xC8" => "\xE7\xB4\x99", + "\xAF\xC9" => "\xE7\xB4\x9B", + "\xAF\xCA" => "\xE7\xBC\xBA", + "\xAF\xCB" => "\xE7\xBD\x9F", + "\xAF\xCC" => "\xE7\xBE\x94", + "\xAF\xCD" => "\xE7\xBF\x85", + "\xAF\xCE" => "\xE7\xBF\x81", + "\xAF\xCF" => "\xE8\x80\x86", + "\xAF\xD0" => "\xE8\x80\x98", + "\xAF\xD1" => "\xE8\x80\x95", + "\xAF\xD2" => "\xE8\x80\x99", + "\xAF\xD3" => "\xE8\x80\x97", + "\xAF\xD4" => "\xE8\x80\xBD", + "\xAF\xD5" => "\xE8\x80\xBF", + "\xAF\xD6" => "\xE8\x83\xB1", + "\xAF\xD7" => "\xE8\x84\x82", + "\xAF\xD8" => "\xE8\x83\xB0", + "\xAF\xD9" => "\xE8\x84\x85", + "\xAF\xDA" => "\xE8\x83\xAD", + "\xAF\xDB" => "\xE8\x83\xB4", + "\xAF\xDC" => "\xE8\x84\x86", + "\xAF\xDD" => "\xE8\x83\xB8", + "\xAF\xDE" => "\xE8\x83\xB3", + "\xAF\xDF" => "\xE8\x84\x88", + "\xAF\xE0" => "\xE8\x83\xBD", + "\xAF\xE1" => "\xE8\x84\x8A", + "\xAF\xE2" => "\xE8\x83\xBC", + "\xAF\xE3" => "\xE8\x83\xAF", + "\xAF\xE4" => "\xE8\x87\xAD", + "\xAF\xE5" => "\xE8\x87\xAC", + "\xAF\xE6" => "\xE8\x88\x80", + "\xAF\xE7" => "\xE8\x88\x90", + "\xAF\xE8" => "\xE8\x88\xAA", + "\xAF\xE9" => "\xE8\x88\xAB", + "\xAF\xEA" => "\xE8\x88\xA8", + "\xAF\xEB" => "\xE8\x88\xAC", + "\xAF\xEC" => "\xE8\x8A\xBB", + "\xAF\xED" => "\xE8\x8C\xAB", + "\xAF\xEE" => "\xE8\x8D\x92", + "\xAF\xEF" => "\xE8\x8D\x94", + "\xAF\xF0" => "\xE8\x8D\x8A", + "\xAF\xF1" => "\xE8\x8C\xB8", + "\xAF\xF2" => "\xE8\x8D\x90", + "\xAF\xF3" => "\xE8\x8D\x89", + "\xAF\xF4" => "\xE8\x8C\xB5", + "\xAF\xF5" => "\xE8\x8C\xB4", + "\xAF\xF6" => "\xE8\x8D\x8F", + "\xAF\xF7" => "\xE8\x8C\xB2", + "\xAF\xF8" => "\xE8\x8C\xB9", + "\xAF\xF9" => "\xE8\x8C\xB6", + "\xAF\xFA" => "\xE8\x8C\x97", + "\xAF\xFB" => "\xE8\x8D\x80", + "\xAF\xFC" => "\xE8\x8C\xB1", + "\xAF\xFD" => "\xE8\x8C\xA8", + "\xAF\xFE" => "\xE8\x8D\x83", + "\xB0\x40" => "\xE8\x99\x94", + "\xB0\x41" => "\xE8\x9A\x8A", + "\xB0\x42" => "\xE8\x9A\xAA", + "\xB0\x43" => "\xE8\x9A\x93", + "\xB0\x44" => "\xE8\x9A\xA4", + "\xB0\x45" => "\xE8\x9A\xA9", + "\xB0\x46" => "\xE8\x9A\x8C", + "\xB0\x47" => "\xE8\x9A\xA3", + "\xB0\x48" => "\xE8\x9A\x9C", + "\xB0\x49" => "\xE8\xA1\xB0", + "\xB0\x4A" => "\xE8\xA1\xB7", + "\xB0\x4B" => "\xE8\xA2\x81", + "\xB0\x4C" => "\xE8\xA2\x82", + "\xB0\x4D" => "\xE8\xA1\xBD", + "\xB0\x4E" => "\xE8\xA1\xB9", + "\xB0\x4F" => "\xE8\xA8\x98", + "\xB0\x50" => "\xE8\xA8\x90", + "\xB0\x51" => "\xE8\xA8\x8E", + "\xB0\x52" => "\xE8\xA8\x8C", + "\xB0\x53" => "\xE8\xA8\x95", + "\xB0\x54" => "\xE8\xA8\x8A", + "\xB0\x55" => "\xE8\xA8\x97", + "\xB0\x56" => "\xE8\xA8\x93", + "\xB0\x57" => "\xE8\xA8\x96", + "\xB0\x58" => "\xE8\xA8\x8F", + "\xB0\x59" => "\xE8\xA8\x91", + "\xB0\x5A" => "\xE8\xB1\x88", + "\xB0\x5B" => "\xE8\xB1\xBA", + "\xB0\x5C" => "\xE8\xB1\xB9", + "\xB0\x5D" => "\xE8\xB2\xA1", + "\xB0\x5E" => "\xE8\xB2\xA2", + "\xB0\x5F" => "\xE8\xB5\xB7", + "\xB0\x60" => "\xE8\xBA\xAC", + "\xB0\x61" => "\xE8\xBB\x92", + "\xB0\x62" => "\xE8\xBB\x94", + "\xB0\x63" => "\xE8\xBB\x8F", + "\xB0\x64" => "\xE8\xBE\xB1", + "\xB0\x65" => "\xE9\x80\x81", + "\xB0\x66" => "\xE9\x80\x86", + "\xB0\x67" => "\xE8\xBF\xB7", + "\xB0\x68" => "\xE9\x80\x80", + "\xB0\x69" => "\xE8\xBF\xBA", + "\xB0\x6A" => "\xE8\xBF\xB4", + "\xB0\x6B" => "\xE9\x80\x83", + "\xB0\x6C" => "\xE8\xBF\xBD", + "\xB0\x6D" => "\xE9\x80\x85", + "\xB0\x6E" => "\xE8\xBF\xB8", + "\xB0\x6F" => "\xE9\x82\x95", + "\xB0\x70" => "\xE9\x83\xA1", + "\xB0\x71" => "\xE9\x83\x9D", + "\xB0\x72" => "\xE9\x83\xA2", + "\xB0\x73" => "\xE9\x85\x92", + "\xB0\x74" => "\xE9\x85\x8D", + "\xB0\x75" => "\xE9\x85\x8C", + "\xB0\x76" => "\xE9\x87\x98", + "\xB0\x77" => "\xE9\x87\x9D", + "\xB0\x78" => "\xE9\x87\x97", + "\xB0\x79" => "\xE9\x87\x9C", + "\xB0\x7A" => "\xE9\x87\x99", + "\xB0\x7B" => "\xE9\x96\x83", + "\xB0\x7C" => "\xE9\x99\xA2", + "\xB0\x7D" => "\xE9\x99\xA3", + "\xB0\x7E" => "\xE9\x99\xA1", + "\xB0\xA1" => "\xE9\x99\x9B", + "\xB0\xA2" => "\xE9\x99\x9D", + "\xB0\xA3" => "\xE9\x99\xA4", + "\xB0\xA4" => "\xE9\x99\x98", + "\xB0\xA5" => "\xE9\x99\x9E", + "\xB0\xA6" => "\xE9\x9A\xBB", + "\xB0\xA7" => "\xE9\xA3\xA2", + "\xB0\xA8" => "\xE9\xA6\xAC", + "\xB0\xA9" => "\xE9\xAA\xA8", + "\xB0\xAA" => "\xE9\xAB\x98", + "\xB0\xAB" => "\xE9\xAC\xA5", + "\xB0\xAC" => "\xE9\xAC\xB2", + "\xB0\xAD" => "\xE9\xAC\xBC", + "\xB0\xAE" => "\xE4\xB9\xBE", + "\xB0\xAF" => "\xE5\x81\xBA", + "\xB0\xB0" => "\xE5\x81\xBD", + "\xB0\xB1" => "\xE5\x81\x9C", + "\xB0\xB2" => "\xE5\x81\x87", + "\xB0\xB3" => "\xE5\x81\x83", + "\xB0\xB4" => "\xE5\x81\x8C", + "\xB0\xB5" => "\xE5\x81\x9A", + "\xB0\xB6" => "\xE5\x81\x89", + "\xB0\xB7" => "\xE5\x81\xA5", + "\xB0\xB8" => "\xE5\x81\xB6", + "\xB0\xB9" => "\xE5\x81\x8E", + "\xB0\xBA" => "\xE5\x81\x95", + "\xB0\xBB" => "\xE5\x81\xB5", + "\xB0\xBC" => "\xE5\x81\xB4", + "\xB0\xBD" => "\xE5\x81\xB7", + "\xB0\xBE" => "\xE5\x81\x8F", + "\xB0\xBF" => "\xE5\x80\x8F", + "\xB0\xC0" => "\xE5\x81\xAF", + "\xB0\xC1" => "\xE5\x81\xAD", + "\xB0\xC2" => "\xE5\x85\x9C", + "\xB0\xC3" => "\xE5\x86\x95", + "\xB0\xC4" => "\xE5\x87\xB0", + "\xB0\xC5" => "\xE5\x89\xAA", + "\xB0\xC6" => "\xE5\x89\xAF", + "\xB0\xC7" => "\xE5\x8B\x92", + "\xB0\xC8" => "\xE5\x8B\x99", + "\xB0\xC9" => "\xE5\x8B\x98", + "\xB0\xCA" => "\xE5\x8B\x95", + "\xB0\xCB" => "\xE5\x8C\x90", + "\xB0\xCC" => "\xE5\x8C\x8F", + "\xB0\xCD" => "\xE5\x8C\x99", + "\xB0\xCE" => "\xE5\x8C\xBF", + "\xB0\xCF" => "\xE5\x8D\x80", + "\xB0\xD0" => "\xE5\x8C\xBE", + "\xB0\xD1" => "\xE5\x8F\x83", + "\xB0\xD2" => "\xE6\x9B\xBC", + "\xB0\xD3" => "\xE5\x95\x86", + "\xB0\xD4" => "\xE5\x95\xAA", + "\xB0\xD5" => "\xE5\x95\xA6", + "\xB0\xD6" => "\xE5\x95\x84", + "\xB0\xD7" => "\xE5\x95\x9E", + "\xB0\xD8" => "\xE5\x95\xA1", + "\xB0\xD9" => "\xE5\x95\x83", + "\xB0\xDA" => "\xE5\x95\x8A", + "\xB0\xDB" => "\xE5\x94\xB1", + "\xB0\xDC" => "\xE5\x95\x96", + "\xB0\xDD" => "\xE5\x95\x8F", + "\xB0\xDE" => "\xE5\x95\x95", + "\xB0\xDF" => "\xE5\x94\xAF", + "\xB0\xE0" => "\xE5\x95\xA4", + "\xB0\xE1" => "\xE5\x94\xB8", + "\xB0\xE2" => "\xE5\x94\xAE", + "\xB0\xE3" => "\xE5\x95\x9C", + "\xB0\xE4" => "\xE5\x94\xAC", + "\xB0\xE5" => "\xE5\x95\xA3", + "\xB0\xE6" => "\xE5\x94\xB3", + "\xB0\xE7" => "\xE5\x95\x81", + "\xB0\xE8" => "\xE5\x95\x97", + "\xB0\xE9" => "\xE5\x9C\x88", + "\xB0\xEA" => "\xE5\x9C\x8B", + "\xB0\xEB" => "\xE5\x9C\x89", + "\xB0\xEC" => "\xE5\x9F\x9F", + "\xB0\xED" => "\xE5\xA0\x85", + "\xB0\xEE" => "\xE5\xA0\x8A", + "\xB0\xEF" => "\xE5\xA0\x86", + "\xB0\xF0" => "\xE5\x9F\xA0", + "\xB0\xF1" => "\xE5\x9F\xA4", + "\xB0\xF2" => "\xE5\x9F\xBA", + "\xB0\xF3" => "\xE5\xA0\x82", + "\xB0\xF4" => "\xE5\xA0\xB5", + "\xB0\xF5" => "\xE5\x9F\xB7", + "\xB0\xF6" => "\xE5\x9F\xB9", + "\xB0\xF7" => "\xE5\xA4\xA0", + "\xB0\xF8" => "\xE5\xA5\xA2", + "\xB0\xF9" => "\xE5\xA8\xB6", + "\xB0\xFA" => "\xE5\xA9\x81", + "\xB0\xFB" => "\xE5\xA9\x89", + "\xB0\xFC" => "\xE5\xA9\xA6", + "\xB0\xFD" => "\xE5\xA9\xAA", + "\xB0\xFE" => "\xE5\xA9\x80", + "\xB1\x40" => "\xE5\xA8\xBC", + "\xB1\x41" => "\xE5\xA9\xA2", + "\xB1\x42" => "\xE5\xA9\x9A", + "\xB1\x43" => "\xE5\xA9\x86", + "\xB1\x44" => "\xE5\xA9\x8A", + "\xB1\x45" => "\xE5\xAD\xB0", + "\xB1\x46" => "\xE5\xAF\x87", + "\xB1\x47" => "\xE5\xAF\x85", + "\xB1\x48" => "\xE5\xAF\x84", + "\xB1\x49" => "\xE5\xAF\x82", + "\xB1\x4A" => "\xE5\xAE\xBF", + "\xB1\x4B" => "\xE5\xAF\x86", + "\xB1\x4C" => "\xE5\xB0\x89", + "\xB1\x4D" => "\xE5\xB0\x88", + "\xB1\x4E" => "\xE5\xB0\x87", + "\xB1\x4F" => "\xE5\xB1\xA0", + "\xB1\x50" => "\xE5\xB1\x9C", + "\xB1\x51" => "\xE5\xB1\x9D", + "\xB1\x52" => "\xE5\xB4\x87", + "\xB1\x53" => "\xE5\xB4\x86", + "\xB1\x54" => "\xE5\xB4\x8E", + "\xB1\x55" => "\xE5\xB4\x9B", + "\xB1\x56" => "\xE5\xB4\x96", + "\xB1\x57" => "\xE5\xB4\xA2", + "\xB1\x58" => "\xE5\xB4\x91", + "\xB1\x59" => "\xE5\xB4\xA9", + "\xB1\x5A" => "\xE5\xB4\x94", + "\xB1\x5B" => "\xE5\xB4\x99", + "\xB1\x5C" => "\xE5\xB4\xA4", + "\xB1\x5D" => "\xE5\xB4\xA7", + "\xB1\x5E" => "\xE5\xB4\x97", + "\xB1\x5F" => "\xE5\xB7\xA2", + "\xB1\x60" => "\xE5\xB8\xB8", + "\xB1\x61" => "\xE5\xB8\xB6", + "\xB1\x62" => "\xE5\xB8\xB3", + "\xB1\x63" => "\xE5\xB8\xB7", + "\xB1\x64" => "\xE5\xBA\xB7", + "\xB1\x65" => "\xE5\xBA\xB8", + "\xB1\x66" => "\xE5\xBA\xB6", + "\xB1\x67" => "\xE5\xBA\xB5", + "\xB1\x68" => "\xE5\xBA\xBE", + "\xB1\x69" => "\xE5\xBC\xB5", + "\xB1\x6A" => "\xE5\xBC\xB7", + "\xB1\x6B" => "\xE5\xBD\x97", + "\xB1\x6C" => "\xE5\xBD\xAC", + "\xB1\x6D" => "\xE5\xBD\xA9", + "\xB1\x6E" => "\xE5\xBD\xAB", + "\xB1\x6F" => "\xE5\xBE\x97", + "\xB1\x70" => "\xE5\xBE\x99", + "\xB1\x71" => "\xE5\xBE\x9E", + "\xB1\x72" => "\xE5\xBE\x98", + "\xB1\x73" => "\xE5\xBE\xA1", + "\xB1\x74" => "\xE5\xBE\xA0", + "\xB1\x75" => "\xE5\xBE\x9C", + "\xB1\x76" => "\xE6\x81\xBF", + "\xB1\x77" => "\xE6\x82\xA3", + "\xB1\x78" => "\xE6\x82\x89", + "\xB1\x79" => "\xE6\x82\xA0", + "\xB1\x7A" => "\xE6\x82\xA8", + "\xB1\x7B" => "\xE6\x83\x8B", + "\xB1\x7C" => "\xE6\x82\xB4", + "\xB1\x7D" => "\xE6\x83\xA6", + "\xB1\x7E" => "\xE6\x82\xBD", + "\xB1\xA1" => "\xE6\x83\x85", + "\xB1\xA2" => "\xE6\x82\xBB", + "\xB1\xA3" => "\xE6\x82\xB5", + "\xB1\xA4" => "\xE6\x83\x9C", + "\xB1\xA5" => "\xE6\x82\xBC", + "\xB1\xA6" => "\xE6\x83\x98", + "\xB1\xA7" => "\xE6\x83\x95", + "\xB1\xA8" => "\xE6\x83\x86", + "\xB1\xA9" => "\xE6\x83\x9F", + "\xB1\xAA" => "\xE6\x82\xB8", + "\xB1\xAB" => "\xE6\x83\x9A", + "\xB1\xAC" => "\xE6\x83\x87", + "\xB1\xAD" => "\xE6\x88\x9A", + "\xB1\xAE" => "\xE6\x88\x9B", + "\xB1\xAF" => "\xE6\x89\x88", + "\xB1\xB0" => "\xE6\x8E\xA0", + "\xB1\xB1" => "\xE6\x8E\xA7", + "\xB1\xB2" => "\xE6\x8D\xB2", + "\xB1\xB3" => "\xE6\x8E\x96", + "\xB1\xB4" => "\xE6\x8E\xA2", + "\xB1\xB5" => "\xE6\x8E\xA5", + "\xB1\xB6" => "\xE6\x8D\xB7", + "\xB1\xB7" => "\xE6\x8D\xA7", + "\xB1\xB8" => "\xE6\x8E\x98", + "\xB1\xB9" => "\xE6\x8E\xAA", + "\xB1\xBA" => "\xE6\x8D\xB1", + "\xB1\xBB" => "\xE6\x8E\xA9", + "\xB1\xBC" => "\xE6\x8E\x89", + "\xB1\xBD" => "\xE6\x8E\x83", + "\xB1\xBE" => "\xE6\x8E\x9B", + "\xB1\xBF" => "\xE6\x8D\xAB", + "\xB1\xC0" => "\xE6\x8E\xA8", + "\xB1\xC1" => "\xE6\x8E\x84", + "\xB1\xC2" => "\xE6\x8E\x88", + "\xB1\xC3" => "\xE6\x8E\x99", + "\xB1\xC4" => "\xE6\x8E\xA1", + "\xB1\xC5" => "\xE6\x8E\xAC", + "\xB1\xC6" => "\xE6\x8E\x92", + "\xB1\xC7" => "\xE6\x8E\x8F", + "\xB1\xC8" => "\xE6\x8E\x80", + "\xB1\xC9" => "\xE6\x8D\xBB", + "\xB1\xCA" => "\xE6\x8D\xA9", + "\xB1\xCB" => "\xE6\x8D\xA8", + "\xB1\xCC" => "\xE6\x8D\xBA", + "\xB1\xCD" => "\xE6\x95\x9D", + "\xB1\xCE" => "\xE6\x95\x96", + "\xB1\xCF" => "\xE6\x95\x91", + "\xB1\xD0" => "\xE6\x95\x99", + "\xB1\xD1" => "\xE6\x95\x97", + "\xB1\xD2" => "\xE5\x95\x9F", + "\xB1\xD3" => "\xE6\x95\x8F", + "\xB1\xD4" => "\xE6\x95\x98", + "\xB1\xD5" => "\xE6\x95\x95", + "\xB1\xD6" => "\xE6\x95\x94", + "\xB1\xD7" => "\xE6\x96\x9C", + "\xB1\xD8" => "\xE6\x96\x9B", + "\xB1\xD9" => "\xE6\x96\xAC", + "\xB1\xDA" => "\xE6\x97\x8F", + "\xB1\xDB" => "\xE6\x97\x8B", + "\xB1\xDC" => "\xE6\x97\x8C", + "\xB1\xDD" => "\xE6\x97\x8E", + "\xB1\xDE" => "\xE6\x99\x9D", + "\xB1\xDF" => "\xE6\x99\x9A", + "\xB1\xE0" => "\xE6\x99\xA4", + "\xB1\xE1" => "\xE6\x99\xA8", + "\xB1\xE2" => "\xE6\x99\xA6", + "\xB1\xE3" => "\xE6\x99\x9E", + "\xB1\xE4" => "\xE6\x9B\xB9", + "\xB1\xE5" => "\xE5\x8B\x97", + "\xB1\xE6" => "\xE6\x9C\x9B", + "\xB1\xE7" => "\xE6\xA2\x81", + "\xB1\xE8" => "\xE6\xA2\xAF", + "\xB1\xE9" => "\xE6\xA2\xA2", + "\xB1\xEA" => "\xE6\xA2\x93", + "\xB1\xEB" => "\xE6\xA2\xB5", + "\xB1\xEC" => "\xE6\xA1\xBF", + "\xB1\xED" => "\xE6\xA1\xB6", + "\xB1\xEE" => "\xE6\xA2\xB1", + "\xB1\xEF" => "\xE6\xA2\xA7", + "\xB1\xF0" => "\xE6\xA2\x97", + "\xB1\xF1" => "\xE6\xA2\xB0", + "\xB1\xF2" => "\xE6\xA2\x83", + "\xB1\xF3" => "\xE6\xA3\x84", + "\xB1\xF4" => "\xE6\xA2\xAD", + "\xB1\xF5" => "\xE6\xA2\x86", + "\xB1\xF6" => "\xE6\xA2\x85", + "\xB1\xF7" => "\xE6\xA2\x94", + "\xB1\xF8" => "\xE6\xA2\x9D", + "\xB1\xF9" => "\xE6\xA2\xA8", + "\xB1\xFA" => "\xE6\xA2\x9F", + "\xB1\xFB" => "\xE6\xA2\xA1", + "\xB1\xFC" => "\xE6\xA2\x82", + "\xB1\xFD" => "\xE6\xAC\xB2", + "\xB1\xFE" => "\xE6\xAE\xBA", + "\xB2\x40" => "\xE6\xAF\xAB", + "\xB2\x41" => "\xE6\xAF\xAC", + "\xB2\x42" => "\xE6\xB0\xAB", + "\xB2\x43" => "\xE6\xB6\x8E", + "\xB2\x44" => "\xE6\xB6\xBC", + "\xB2\x45" => "\xE6\xB7\xB3", + "\xB2\x46" => "\xE6\xB7\x99", + "\xB2\x47" => "\xE6\xB6\xB2", + "\xB2\x48" => "\xE6\xB7\xA1", + "\xB2\x49" => "\xE6\xB7\x8C", + "\xB2\x4A" => "\xE6\xB7\xA4", + "\xB2\x4B" => "\xE6\xB7\xBB", + "\xB2\x4C" => "\xE6\xB7\xBA", + "\xB2\x4D" => "\xE6\xB8\x85", + "\xB2\x4E" => "\xE6\xB7\x87", + "\xB2\x4F" => "\xE6\xB7\x8B", + "\xB2\x50" => "\xE6\xB6\xAF", + "\xB2\x51" => "\xE6\xB7\x91", + "\xB2\x52" => "\xE6\xB6\xAE", + "\xB2\x53" => "\xE6\xB7\x9E", + "\xB2\x54" => "\xE6\xB7\xB9", + "\xB2\x55" => "\xE6\xB6\xB8", + "\xB2\x56" => "\xE6\xB7\xB7", + "\xB2\x57" => "\xE6\xB7\xB5", + "\xB2\x58" => "\xE6\xB7\x85", + "\xB2\x59" => "\xE6\xB7\x92", + "\xB2\x5A" => "\xE6\xB8\x9A", + "\xB2\x5B" => "\xE6\xB6\xB5", + "\xB2\x5C" => "\xE6\xB7\x9A", + "\xB2\x5D" => "\xE6\xB7\xAB", + "\xB2\x5E" => "\xE6\xB7\x98", + "\xB2\x5F" => "\xE6\xB7\xAA", + "\xB2\x60" => "\xE6\xB7\xB1", + "\xB2\x61" => "\xE6\xB7\xAE", + "\xB2\x62" => "\xE6\xB7\xA8", + "\xB2\x63" => "\xE6\xB7\x86", + "\xB2\x64" => "\xE6\xB7\x84", + "\xB2\x65" => "\xE6\xB6\xAA", + "\xB2\x66" => "\xE6\xB7\xAC", + "\xB2\x67" => "\xE6\xB6\xBF", + "\xB2\x68" => "\xE6\xB7\xA6", + "\xB2\x69" => "\xE7\x83\xB9", + "\xB2\x6A" => "\xE7\x84\x89", + "\xB2\x6B" => "\xE7\x84\x8A", + "\xB2\x6C" => "\xE7\x83\xBD", + "\xB2\x6D" => "\xE7\x83\xAF", + "\xB2\x6E" => "\xE7\x88\xBD", + "\xB2\x6F" => "\xE7\x89\xBD", + "\xB2\x70" => "\xE7\x8A\x81", + "\xB2\x71" => "\xE7\x8C\x9C", + "\xB2\x72" => "\xE7\x8C\x9B", + "\xB2\x73" => "\xE7\x8C\x96", + "\xB2\x74" => "\xE7\x8C\x93", + "\xB2\x75" => "\xE7\x8C\x99", + "\xB2\x76" => "\xE7\x8E\x87", + "\xB2\x77" => "\xE7\x90\x85", + "\xB2\x78" => "\xE7\x90\x8A", + "\xB2\x79" => "\xE7\x90\x83", + "\xB2\x7A" => "\xE7\x90\x86", + "\xB2\x7B" => "\xE7\x8F\xBE", + "\xB2\x7C" => "\xE7\x90\x8D", + "\xB2\x7D" => "\xE7\x93\xA0", + "\xB2\x7E" => "\xE7\x93\xB6", + "\xB2\xA1" => "\xE7\x93\xB7", + "\xB2\xA2" => "\xE7\x94\x9C", + "\xB2\xA3" => "\xE7\x94\xA2", + "\xB2\xA4" => "\xE7\x95\xA5", + "\xB2\xA5" => "\xE7\x95\xA6", + "\xB2\xA6" => "\xE7\x95\xA2", + "\xB2\xA7" => "\xE7\x95\xB0", + "\xB2\xA8" => "\xE7\x96\x8F", + "\xB2\xA9" => "\xE7\x97\x94", + "\xB2\xAA" => "\xE7\x97\x95", + "\xB2\xAB" => "\xE7\x96\xB5", + "\xB2\xAC" => "\xE7\x97\x8A", + "\xB2\xAD" => "\xE7\x97\x8D", + "\xB2\xAE" => "\xE7\x9A\x8E", + "\xB2\xAF" => "\xE7\x9B\x94", + "\xB2\xB0" => "\xE7\x9B\x92", + "\xB2\xB1" => "\xE7\x9B\x9B", + "\xB2\xB2" => "\xE7\x9C\xB7", + "\xB2\xB3" => "\xE7\x9C\xBE", + "\xB2\xB4" => "\xE7\x9C\xBC", + "\xB2\xB5" => "\xE7\x9C\xB6", + "\xB2\xB6" => "\xE7\x9C\xB8", + "\xB2\xB7" => "\xE7\x9C\xBA", + "\xB2\xB8" => "\xE7\xA1\xAB", + "\xB2\xB9" => "\xE7\xA1\x83", + "\xB2\xBA" => "\xE7\xA1\x8E", + "\xB2\xBB" => "\xE7\xA5\xA5", + "\xB2\xBC" => "\xE7\xA5\xA8", + "\xB2\xBD" => "\xE7\xA5\xAD", + "\xB2\xBE" => "\xE7\xA7\xBB", + "\xB2\xBF" => "\xE7\xAA\x92", + "\xB2\xC0" => "\xE7\xAA\x95", + "\xB2\xC1" => "\xE7\xAC\xA0", + "\xB2\xC2" => "\xE7\xAC\xA8", + "\xB2\xC3" => "\xE7\xAC\x9B", + "\xB2\xC4" => "\xE7\xAC\xAC", + "\xB2\xC5" => "\xE7\xAC\xA6", + "\xB2\xC6" => "\xE7\xAC\x99", + "\xB2\xC7" => "\xE7\xAC\x9E", + "\xB2\xC8" => "\xE7\xAC\xAE", + "\xB2\xC9" => "\xE7\xB2\x92", + "\xB2\xCA" => "\xE7\xB2\x97", + "\xB2\xCB" => "\xE7\xB2\x95", + "\xB2\xCC" => "\xE7\xB5\x86", + "\xB2\xCD" => "\xE7\xB5\x83", + "\xB2\xCE" => "\xE7\xB5\xB1", + "\xB2\xCF" => "\xE7\xB4\xAE", + "\xB2\xD0" => "\xE7\xB4\xB9", + "\xB2\xD1" => "\xE7\xB4\xBC", + "\xB2\xD2" => "\xE7\xB5\x80", + "\xB2\xD3" => "\xE7\xB4\xB0", + "\xB2\xD4" => "\xE7\xB4\xB3", + "\xB2\xD5" => "\xE7\xB5\x84", + "\xB2\xD6" => "\xE7\xB4\xAF", + "\xB2\xD7" => "\xE7\xB5\x82", + "\xB2\xD8" => "\xE7\xB4\xB2", + "\xB2\xD9" => "\xE7\xB4\xB1", + "\xB2\xDA" => "\xE7\xBC\xBD", + "\xB2\xDB" => "\xE7\xBE\x9E", + "\xB2\xDC" => "\xE7\xBE\x9A", + "\xB2\xDD" => "\xE7\xBF\x8C", + "\xB2\xDE" => "\xE7\xBF\x8E", + "\xB2\xDF" => "\xE7\xBF\x92", + "\xB2\xE0" => "\xE8\x80\x9C", + "\xB2\xE1" => "\xE8\x81\x8A", + "\xB2\xE2" => "\xE8\x81\x86", + "\xB2\xE3" => "\xE8\x84\xAF", + "\xB2\xE4" => "\xE8\x84\x96", + "\xB2\xE5" => "\xE8\x84\xA3", + "\xB2\xE6" => "\xE8\x84\xAB", + "\xB2\xE7" => "\xE8\x84\xA9", + "\xB2\xE8" => "\xE8\x84\xB0", + "\xB2\xE9" => "\xE8\x84\xA4", + "\xB2\xEA" => "\xE8\x88\x82", + "\xB2\xEB" => "\xE8\x88\xB5", + "\xB2\xEC" => "\xE8\x88\xB7", + "\xB2\xED" => "\xE8\x88\xB6", + "\xB2\xEE" => "\xE8\x88\xB9", + "\xB2\xEF" => "\xE8\x8E\x8E", + "\xB2\xF0" => "\xE8\x8E\x9E", + "\xB2\xF1" => "\xE8\x8E\x98", + "\xB2\xF2" => "\xE8\x8D\xB8", + "\xB2\xF3" => "\xE8\x8E\xA2", + "\xB2\xF4" => "\xE8\x8E\x96", + "\xB2\xF5" => "\xE8\x8E\xBD", + "\xB2\xF6" => "\xE8\x8E\xAB", + "\xB2\xF7" => "\xE8\x8E\x92", + "\xB2\xF8" => "\xE8\x8E\x8A", + "\xB2\xF9" => "\xE8\x8E\x93", + "\xB2\xFA" => "\xE8\x8E\x89", + "\xB2\xFB" => "\xE8\x8E\xA0", + "\xB2\xFC" => "\xE8\x8D\xB7", + "\xB2\xFD" => "\xE8\x8D\xBB", + "\xB2\xFE" => "\xE8\x8D\xBC", + "\xB3\x40" => "\xE8\x8E\x86", + "\xB3\x41" => "\xE8\x8E\xA7", + "\xB3\x42" => "\xE8\x99\x95", + "\xB3\x43" => "\xE5\xBD\xAA", + "\xB3\x44" => "\xE8\x9B\x87", + "\xB3\x45" => "\xE8\x9B\x80", + "\xB3\x46" => "\xE8\x9A\xB6", + "\xB3\x47" => "\xE8\x9B\x84", + "\xB3\x48" => "\xE8\x9A\xB5", + "\xB3\x49" => "\xE8\x9B\x86", + "\xB3\x4A" => "\xE8\x9B\x8B", + "\xB3\x4B" => "\xE8\x9A\xB1", + "\xB3\x4C" => "\xE8\x9A\xAF", + "\xB3\x4D" => "\xE8\x9B\x89", + "\xB3\x4E" => "\xE8\xA1\x93", + "\xB3\x4F" => "\xE8\xA2\x9E", + "\xB3\x50" => "\xE8\xA2\x88", + "\xB3\x51" => "\xE8\xA2\xAB", + "\xB3\x52" => "\xE8\xA2\x92", + "\xB3\x53" => "\xE8\xA2\x96", + "\xB3\x54" => "\xE8\xA2\x8D", + "\xB3\x55" => "\xE8\xA2\x8B", + "\xB3\x56" => "\xE8\xA6\x93", + "\xB3\x57" => "\xE8\xA6\x8F", + "\xB3\x58" => "\xE8\xA8\xAA", + "\xB3\x59" => "\xE8\xA8\x9D", + "\xB3\x5A" => "\xE8\xA8\xA3", + "\xB3\x5B" => "\xE8\xA8\xA5", + "\xB3\x5C" => "\xE8\xA8\xB1", + "\xB3\x5D" => "\xE8\xA8\xAD", + "\xB3\x5E" => "\xE8\xA8\x9F", + "\xB3\x5F" => "\xE8\xA8\x9B", + "\xB3\x60" => "\xE8\xA8\xA2", + "\xB3\x61" => "\xE8\xB1\x89", + "\xB3\x62" => "\xE8\xB1\x9A", + "\xB3\x63" => "\xE8\xB2\xA9", + "\xB3\x64" => "\xE8\xB2\xAC", + "\xB3\x65" => "\xE8\xB2\xAB", + "\xB3\x66" => "\xE8\xB2\xA8", + "\xB3\x67" => "\xE8\xB2\xAA", + "\xB3\x68" => "\xE8\xB2\xA7", + "\xB3\x69" => "\xE8\xB5\xA7", + "\xB3\x6A" => "\xE8\xB5\xA6", + "\xB3\x6B" => "\xE8\xB6\xBE", + "\xB3\x6C" => "\xE8\xB6\xBA", + "\xB3\x6D" => "\xE8\xBB\x9B", + "\xB3\x6E" => "\xE8\xBB\x9F", + "\xB3\x6F" => "\xE9\x80\x99", + "\xB3\x70" => "\xE9\x80\x8D", + "\xB3\x71" => "\xE9\x80\x9A", + "\xB3\x72" => "\xE9\x80\x97", + "\xB3\x73" => "\xE9\x80\xA3", + "\xB3\x74" => "\xE9\x80\x9F", + "\xB3\x75" => "\xE9\x80\x9D", + "\xB3\x76" => "\xE9\x80\x90", + "\xB3\x77" => "\xE9\x80\x95", + "\xB3\x78" => "\xE9\x80\x9E", + "\xB3\x79" => "\xE9\x80\xA0", + "\xB3\x7A" => "\xE9\x80\x8F", + "\xB3\x7B" => "\xE9\x80\xA2", + "\xB3\x7C" => "\xE9\x80\x96", + "\xB3\x7D" => "\xE9\x80\x9B", + "\xB3\x7E" => "\xE9\x80\x94", + "\xB3\xA1" => "\xE9\x83\xA8", + "\xB3\xA2" => "\xE9\x83\xAD", + "\xB3\xA3" => "\xE9\x83\xBD", + "\xB3\xA4" => "\xE9\x85\x97", + "\xB3\xA5" => "\xE9\x87\x8E", + "\xB3\xA6" => "\xE9\x87\xB5", + "\xB3\xA7" => "\xE9\x87\xA6", + "\xB3\xA8" => "\xE9\x87\xA3", + "\xB3\xA9" => "\xE9\x87\xA7", + "\xB3\xAA" => "\xE9\x87\xAD", + "\xB3\xAB" => "\xE9\x87\xA9", + "\xB3\xAC" => "\xE9\x96\x89", + "\xB3\xAD" => "\xE9\x99\xAA", + "\xB3\xAE" => "\xE9\x99\xB5", + "\xB3\xAF" => "\xE9\x99\xB3", + "\xB3\xB0" => "\xE9\x99\xB8", + "\xB3\xB1" => "\xE9\x99\xB0", + "\xB3\xB2" => "\xE9\x99\xB4", + "\xB3\xB3" => "\xE9\x99\xB6", + "\xB3\xB4" => "\xE9\x99\xB7", + "\xB3\xB5" => "\xE9\x99\xAC", + "\xB3\xB6" => "\xE9\x9B\x80", + "\xB3\xB7" => "\xE9\x9B\xAA", + "\xB3\xB8" => "\xE9\x9B\xA9", + "\xB3\xB9" => "\xE7\xAB\xA0", + "\xB3\xBA" => "\xE7\xAB\x9F", + "\xB3\xBB" => "\xE9\xA0\x82", + "\xB3\xBC" => "\xE9\xA0\x83", + "\xB3\xBD" => "\xE9\xAD\x9A", + "\xB3\xBE" => "\xE9\xB3\xA5", + "\xB3\xBF" => "\xE9\xB9\xB5", + "\xB3\xC0" => "\xE9\xB9\xBF", + "\xB3\xC1" => "\xE9\xBA\xA5", + "\xB3\xC2" => "\xE9\xBA\xBB", + "\xB3\xC3" => "\xE5\x82\xA2", + "\xB3\xC4" => "\xE5\x82\x8D", + "\xB3\xC5" => "\xE5\x82\x85", + "\xB3\xC6" => "\xE5\x82\x99", + "\xB3\xC7" => "\xE5\x82\x91", + "\xB3\xC8" => "\xE5\x82\x80", + "\xB3\xC9" => "\xE5\x82\x96", + "\xB3\xCA" => "\xE5\x82\x98", + "\xB3\xCB" => "\xE5\x82\x9A", + "\xB3\xCC" => "\xE6\x9C\x80", + "\xB3\xCD" => "\xE5\x87\xB1", + "\xB3\xCE" => "\xE5\x89\xB2", + "\xB3\xCF" => "\xE5\x89\xB4", + "\xB3\xD0" => "\xE5\x89\xB5", + "\xB3\xD1" => "\xE5\x89\xA9", + "\xB3\xD2" => "\xE5\x8B\x9E", + "\xB3\xD3" => "\xE5\x8B\x9D", + "\xB3\xD4" => "\xE5\x8B\x9B", + "\xB3\xD5" => "\xE5\x8D\x9A", + "\xB3\xD6" => "\xE5\x8E\xA5", + "\xB3\xD7" => "\xE5\x95\xBB", + "\xB3\xD8" => "\xE5\x96\x80", + "\xB3\xD9" => "\xE5\x96\xA7", + "\xB3\xDA" => "\xE5\x95\xBC", + "\xB3\xDB" => "\xE5\x96\x8A", + "\xB3\xDC" => "\xE5\x96\x9D", + "\xB3\xDD" => "\xE5\x96\x98", + "\xB3\xDE" => "\xE5\x96\x82", + "\xB3\xDF" => "\xE5\x96\x9C", + "\xB3\xE0" => "\xE5\x96\xAA", + "\xB3\xE1" => "\xE5\x96\x94", + "\xB3\xE2" => "\xE5\x96\x87", + "\xB3\xE3" => "\xE5\x96\x8B", + "\xB3\xE4" => "\xE5\x96\x83", + "\xB3\xE5" => "\xE5\x96\xB3", + "\xB3\xE6" => "\xE5\x96\xAE", + "\xB3\xE7" => "\xE5\x96\x9F", + "\xB3\xE8" => "\xE5\x94\xBE", + "\xB3\xE9" => "\xE5\x96\xB2", + "\xB3\xEA" => "\xE5\x96\x9A", + "\xB3\xEB" => "\xE5\x96\xBB", + "\xB3\xEC" => "\xE5\x96\xAC", + "\xB3\xED" => "\xE5\x96\xB1", + "\xB3\xEE" => "\xE5\x95\xBE", + "\xB3\xEF" => "\xE5\x96\x89", + "\xB3\xF0" => "\xE5\x96\xAB", + "\xB3\xF1" => "\xE5\x96\x99", + "\xB3\xF2" => "\xE5\x9C\x8D", + "\xB3\xF3" => "\xE5\xA0\xAF", + "\xB3\xF4" => "\xE5\xA0\xAA", + "\xB3\xF5" => "\xE5\xA0\xB4", + "\xB3\xF6" => "\xE5\xA0\xA4", + "\xB3\xF7" => "\xE5\xA0\xB0", + "\xB3\xF8" => "\xE5\xA0\xB1", + "\xB3\xF9" => "\xE5\xA0\xA1", + "\xB3\xFA" => "\xE5\xA0\x9D", + "\xB3\xFB" => "\xE5\xA0\xA0", + "\xB3\xFC" => "\xE5\xA3\xB9", + "\xB3\xFD" => "\xE5\xA3\xBA", + "\xB3\xFE" => "\xE5\xA5\xA0", + "\xB4\x40" => "\xE5\xA9\xB7", + "\xB4\x41" => "\xE5\xAA\x9A", + "\xB4\x42" => "\xE5\xA9\xBF", + "\xB4\x43" => "\xE5\xAA\x92", + "\xB4\x44" => "\xE5\xAA\x9B", + "\xB4\x45" => "\xE5\xAA\xA7", + "\xB4\x46" => "\xE5\xAD\xB3", + "\xB4\x47" => "\xE5\xAD\xB1", + "\xB4\x48" => "\xE5\xAF\x92", + "\xB4\x49" => "\xE5\xAF\x8C", + "\xB4\x4A" => "\xE5\xAF\x93", + "\xB4\x4B" => "\xE5\xAF\x90", + "\xB4\x4C" => "\xE5\xB0\x8A", + "\xB4\x4D" => "\xE5\xB0\x8B", + "\xB4\x4E" => "\xE5\xB0\xB1", + "\xB4\x4F" => "\xE5\xB5\x8C", + "\xB4\x50" => "\xE5\xB5\x90", + "\xB4\x51" => "\xE5\xB4\xB4", + "\xB4\x52" => "\xE5\xB5\x87", + "\xB4\x53" => "\xE5\xB7\xBD", + "\xB4\x54" => "\xE5\xB9\x85", + "\xB4\x55" => "\xE5\xB8\xBD", + "\xB4\x56" => "\xE5\xB9\x80", + "\xB4\x57" => "\xE5\xB9\x83", + "\xB4\x58" => "\xE5\xB9\xBE", + "\xB4\x59" => "\xE5\xBB\x8A", + "\xB4\x5A" => "\xE5\xBB\x81", + "\xB4\x5B" => "\xE5\xBB\x82", + "\xB4\x5C" => "\xE5\xBB\x84", + "\xB4\x5D" => "\xE5\xBC\xBC", + "\xB4\x5E" => "\xE5\xBD\xAD", + "\xB4\x5F" => "\xE5\xBE\xA9", + "\xB4\x60" => "\xE5\xBE\xAA", + "\xB4\x61" => "\xE5\xBE\xA8", + "\xB4\x62" => "\xE6\x83\x91", + "\xB4\x63" => "\xE6\x83\xA1", + "\xB4\x64" => "\xE6\x82\xB2", + "\xB4\x65" => "\xE6\x82\xB6", + "\xB4\x66" => "\xE6\x83\xA0", + "\xB4\x67" => "\xE6\x84\x9C", + "\xB4\x68" => "\xE6\x84\xA3", + "\xB4\x69" => "\xE6\x83\xBA", + "\xB4\x6A" => "\xE6\x84\x95", + "\xB4\x6B" => "\xE6\x83\xB0", + "\xB4\x6C" => "\xE6\x83\xBB", + "\xB4\x6D" => "\xE6\x83\xB4", + "\xB4\x6E" => "\xE6\x85\xA8", + "\xB4\x6F" => "\xE6\x83\xB1", + "\xB4\x70" => "\xE6\x84\x8E", + "\xB4\x71" => "\xE6\x83\xB6", + "\xB4\x72" => "\xE6\x84\x89", + "\xB4\x73" => "\xE6\x84\x80", + "\xB4\x74" => "\xE6\x84\x92", + "\xB4\x75" => "\xE6\x88\x9F", + "\xB4\x76" => "\xE6\x89\x89", + "\xB4\x77" => "\xE6\x8E\xA3", + "\xB4\x78" => "\xE6\x8E\x8C", + "\xB4\x79" => "\xE6\x8F\x8F", + "\xB4\x7A" => "\xE6\x8F\x80", + "\xB4\x7B" => "\xE6\x8F\xA9", + "\xB4\x7C" => "\xE6\x8F\x89", + "\xB4\x7D" => "\xE6\x8F\x86", + "\xB4\x7E" => "\xE6\x8F\x8D", + "\xB4\xA1" => "\xE6\x8F\x92", + "\xB4\xA2" => "\xE6\x8F\xA3", + "\xB4\xA3" => "\xE6\x8F\x90", + "\xB4\xA4" => "\xE6\x8F\xA1", + "\xB4\xA5" => "\xE6\x8F\x96", + "\xB4\xA6" => "\xE6\x8F\xAD", + "\xB4\xA7" => "\xE6\x8F\xAE", + "\xB4\xA8" => "\xE6\x8D\xB6", + "\xB4\xA9" => "\xE6\x8F\xB4", + "\xB4\xAA" => "\xE6\x8F\xAA", + "\xB4\xAB" => "\xE6\x8F\x9B", + "\xB4\xAC" => "\xE6\x91\x92", + "\xB4\xAD" => "\xE6\x8F\x9A", + "\xB4\xAE" => "\xE6\x8F\xB9", + "\xB4\xAF" => "\xE6\x95\x9E", + "\xB4\xB0" => "\xE6\x95\xA6", + "\xB4\xB1" => "\xE6\x95\xA2", + "\xB4\xB2" => "\xE6\x95\xA3", + "\xB4\xB3" => "\xE6\x96\x91", + "\xB4\xB4" => "\xE6\x96\x90", + "\xB4\xB5" => "\xE6\x96\xAF", + "\xB4\xB6" => "\xE6\x99\xAE", + "\xB4\xB7" => "\xE6\x99\xB0", + "\xB4\xB8" => "\xE6\x99\xB4", + "\xB4\xB9" => "\xE6\x99\xB6", + "\xB4\xBA" => "\xE6\x99\xAF", + "\xB4\xBB" => "\xE6\x9A\x91", + "\xB4\xBC" => "\xE6\x99\xBA", + "\xB4\xBD" => "\xE6\x99\xBE", + "\xB4\xBE" => "\xE6\x99\xB7", + "\xB4\xBF" => "\xE6\x9B\xBE", + "\xB4\xC0" => "\xE6\x9B\xBF", + "\xB4\xC1" => "\xE6\x9C\x9F", + "\xB4\xC2" => "\xE6\x9C\x9D", + "\xB4\xC3" => "\xE6\xA3\xBA", + "\xB4\xC4" => "\xE6\xA3\x95", + "\xB4\xC5" => "\xE6\xA3\xA0", + "\xB4\xC6" => "\xE6\xA3\x98", + "\xB4\xC7" => "\xE6\xA3\x97", + "\xB4\xC8" => "\xE6\xA4\x85", + "\xB4\xC9" => "\xE6\xA3\x9F", + "\xB4\xCA" => "\xE6\xA3\xB5", + "\xB4\xCB" => "\xE6\xA3\xAE", + "\xB4\xCC" => "\xE6\xA3\xA7", + "\xB4\xCD" => "\xE6\xA3\xB9", + "\xB4\xCE" => "\xE6\xA3\x92", + "\xB4\xCF" => "\xE6\xA3\xB2", + "\xB4\xD0" => "\xE6\xA3\xA3", + "\xB4\xD1" => "\xE6\xA3\x8B", + "\xB4\xD2" => "\xE6\xA3\x8D", + "\xB4\xD3" => "\xE6\xA4\x8D", + "\xB4\xD4" => "\xE6\xA4\x92", + "\xB4\xD5" => "\xE6\xA4\x8E", + "\xB4\xD6" => "\xE6\xA3\x89", + "\xB4\xD7" => "\xE6\xA3\x9A", + "\xB4\xD8" => "\xE6\xA5\xAE", + "\xB4\xD9" => "\xE6\xA3\xBB", + "\xB4\xDA" => "\xE6\xAC\xBE", + "\xB4\xDB" => "\xE6\xAC\xBA", + "\xB4\xDC" => "\xE6\xAC\xBD", + "\xB4\xDD" => "\xE6\xAE\x98", + "\xB4\xDE" => "\xE6\xAE\x96", + "\xB4\xDF" => "\xE6\xAE\xBC", + "\xB4\xE0" => "\xE6\xAF\xAF", + "\xB4\xE1" => "\xE6\xB0\xAE", + "\xB4\xE2" => "\xE6\xB0\xAF", + "\xB4\xE3" => "\xE6\xB0\xAC", + "\xB4\xE4" => "\xE6\xB8\xAF", + "\xB4\xE5" => "\xE6\xB8\xB8", + "\xB4\xE6" => "\xE6\xB9\x94", + "\xB4\xE7" => "\xE6\xB8\xA1", + "\xB4\xE8" => "\xE6\xB8\xB2", + "\xB4\xE9" => "\xE6\xB9\xA7", + "\xB4\xEA" => "\xE6\xB9\x8A", + "\xB4\xEB" => "\xE6\xB8\xA0", + "\xB4\xEC" => "\xE6\xB8\xA5", + "\xB4\xED" => "\xE6\xB8\xA3", + "\xB4\xEE" => "\xE6\xB8\x9B", + "\xB4\xEF" => "\xE6\xB9\x9B", + "\xB4\xF0" => "\xE6\xB9\x98", + "\xB4\xF1" => "\xE6\xB8\xA4", + "\xB4\xF2" => "\xE6\xB9\x96", + "\xB4\xF3" => "\xE6\xB9\xAE", + "\xB4\xF4" => "\xE6\xB8\xAD", + "\xB4\xF5" => "\xE6\xB8\xA6", + "\xB4\xF6" => "\xE6\xB9\xAF", + "\xB4\xF7" => "\xE6\xB8\xB4", + "\xB4\xF8" => "\xE6\xB9\x8D", + "\xB4\xF9" => "\xE6\xB8\xBA", + "\xB4\xFA" => "\xE6\xB8\xAC", + "\xB4\xFB" => "\xE6\xB9\x83", + "\xB4\xFC" => "\xE6\xB8\x9D", + "\xB4\xFD" => "\xE6\xB8\xBE", + "\xB4\xFE" => "\xE6\xBB\x8B", + "\xB5\x40" => "\xE6\xBA\x89", + "\xB5\x41" => "\xE6\xB8\x99", + "\xB5\x42" => "\xE6\xB9\x8E", + "\xB5\x43" => "\xE6\xB9\xA3", + "\xB5\x44" => "\xE6\xB9\x84", + "\xB5\x45" => "\xE6\xB9\xB2", + "\xB5\x46" => "\xE6\xB9\xA9", + "\xB5\x47" => "\xE6\xB9\x9F", + "\xB5\x48" => "\xE7\x84\x99", + "\xB5\x49" => "\xE7\x84\x9A", + "\xB5\x4A" => "\xE7\x84\xA6", + "\xB5\x4B" => "\xE7\x84\xB0", + "\xB5\x4C" => "\xE7\x84\xA1", + "\xB5\x4D" => "\xE7\x84\xB6", + "\xB5\x4E" => "\xE7\x85\xAE", + "\xB5\x4F" => "\xE7\x84\x9C", + "\xB5\x50" => "\xE7\x89\x8C", + "\xB5\x51" => "\xE7\x8A\x84", + "\xB5\x52" => "\xE7\x8A\x80", + "\xB5\x53" => "\xE7\x8C\xB6", + "\xB5\x54" => "\xE7\x8C\xA5", + "\xB5\x55" => "\xE7\x8C\xB4", + "\xB5\x56" => "\xE7\x8C\xA9", + "\xB5\x57" => "\xE7\x90\xBA", + "\xB5\x58" => "\xE7\x90\xAA", + "\xB5\x59" => "\xE7\x90\xB3", + "\xB5\x5A" => "\xE7\x90\xA2", + "\xB5\x5B" => "\xE7\x90\xA5", + "\xB5\x5C" => "\xE7\x90\xB5", + "\xB5\x5D" => "\xE7\x90\xB6", + "\xB5\x5E" => "\xE7\x90\xB4", + "\xB5\x5F" => "\xE7\x90\xAF", + "\xB5\x60" => "\xE7\x90\x9B", + "\xB5\x61" => "\xE7\x90\xA6", + "\xB5\x62" => "\xE7\x90\xA8", + "\xB5\x63" => "\xE7\x94\xA5", + "\xB5\x64" => "\xE7\x94\xA6", + "\xB5\x65" => "\xE7\x95\xAB", + "\xB5\x66" => "\xE7\x95\xAA", + "\xB5\x67" => "\xE7\x97\xA2", + "\xB5\x68" => "\xE7\x97\x9B", + "\xB5\x69" => "\xE7\x97\xA3", + "\xB5\x6A" => "\xE7\x97\x99", + "\xB5\x6B" => "\xE7\x97\x98", + "\xB5\x6C" => "\xE7\x97\x9E", + "\xB5\x6D" => "\xE7\x97\xA0", + "\xB5\x6E" => "\xE7\x99\xBB", + "\xB5\x6F" => "\xE7\x99\xBC", + "\xB5\x70" => "\xE7\x9A\x96", + "\xB5\x71" => "\xE7\x9A\x93", + "\xB5\x72" => "\xE7\x9A\xB4", + "\xB5\x73" => "\xE7\x9B\x9C", + "\xB5\x74" => "\xE7\x9D\x8F", + "\xB5\x75" => "\xE7\x9F\xAD", + "\xB5\x76" => "\xE7\xA1\x9D", + "\xB5\x77" => "\xE7\xA1\xAC", + "\xB5\x78" => "\xE7\xA1\xAF", + "\xB5\x79" => "\xE7\xA8\x8D", + "\xB5\x7A" => "\xE7\xA8\x88", + "\xB5\x7B" => "\xE7\xA8\x8B", + "\xB5\x7C" => "\xE7\xA8\x85", + "\xB5\x7D" => "\xE7\xA8\x80", + "\xB5\x7E" => "\xE7\xAA\x98", + "\xB5\xA1" => "\xE7\xAA\x97", + "\xB5\xA2" => "\xE7\xAA\x96", + "\xB5\xA3" => "\xE7\xAB\xA5", + "\xB5\xA4" => "\xE7\xAB\xA3", + "\xB5\xA5" => "\xE7\xAD\x89", + "\xB5\xA6" => "\xE7\xAD\x96", + "\xB5\xA7" => "\xE7\xAD\x86", + "\xB5\xA8" => "\xE7\xAD\x90", + "\xB5\xA9" => "\xE7\xAD\x92", + "\xB5\xAA" => "\xE7\xAD\x94", + "\xB5\xAB" => "\xE7\xAD\x8D", + "\xB5\xAC" => "\xE7\xAD\x8B", + "\xB5\xAD" => "\xE7\xAD\x8F", + "\xB5\xAE" => "\xE7\xAD\x91", + "\xB5\xAF" => "\xE7\xB2\x9F", + "\xB5\xB0" => "\xE7\xB2\xA5", + "\xB5\xB1" => "\xE7\xB5\x9E", + "\xB5\xB2" => "\xE7\xB5\x90", + "\xB5\xB3" => "\xE7\xB5\xA8", + "\xB5\xB4" => "\xE7\xB5\x95", + "\xB5\xB5" => "\xE7\xB4\xAB", + "\xB5\xB6" => "\xE7\xB5\xAE", + "\xB5\xB7" => "\xE7\xB5\xB2", + "\xB5\xB8" => "\xE7\xB5\xA1", + "\xB5\xB9" => "\xE7\xB5\xA6", + "\xB5\xBA" => "\xE7\xB5\xA2", + "\xB5\xBB" => "\xE7\xB5\xB0", + "\xB5\xBC" => "\xE7\xB5\xB3", + "\xB5\xBD" => "\xE5\x96\x84", + "\xB5\xBE" => "\xE7\xBF\x94", + "\xB5\xBF" => "\xE7\xBF\x95", + "\xB5\xC0" => "\xE8\x80\x8B", + "\xB5\xC1" => "\xE8\x81\x92", + "\xB5\xC2" => "\xE8\x82\x85", + "\xB5\xC3" => "\xE8\x85\x95", + "\xB5\xC4" => "\xE8\x85\x94", + "\xB5\xC5" => "\xE8\x85\x8B", + "\xB5\xC6" => "\xE8\x85\x91", + "\xB5\xC7" => "\xE8\x85\x8E", + "\xB5\xC8" => "\xE8\x84\xB9", + "\xB5\xC9" => "\xE8\x85\x86", + "\xB5\xCA" => "\xE8\x84\xBE", + "\xB5\xCB" => "\xE8\x85\x8C", + "\xB5\xCC" => "\xE8\x85\x93", + "\xB5\xCD" => "\xE8\x85\xB4", + "\xB5\xCE" => "\xE8\x88\x92", + "\xB5\xCF" => "\xE8\x88\x9C", + "\xB5\xD0" => "\xE8\x8F\xA9", + "\xB5\xD1" => "\xE8\x90\x83", + "\xB5\xD2" => "\xE8\x8F\xB8", + "\xB5\xD3" => "\xE8\x90\x8D", + "\xB5\xD4" => "\xE8\x8F\xA0", + "\xB5\xD5" => "\xE8\x8F\x85", + "\xB5\xD6" => "\xE8\x90\x8B", + "\xB5\xD7" => "\xE8\x8F\x81", + "\xB5\xD8" => "\xE8\x8F\xAF", + "\xB5\xD9" => "\xE8\x8F\xB1", + "\xB5\xDA" => "\xE8\x8F\xB4", + "\xB5\xDB" => "\xE8\x91\x97", + "\xB5\xDC" => "\xE8\x90\x8A", + "\xB5\xDD" => "\xE8\x8F\xB0", + "\xB5\xDE" => "\xE8\x90\x8C", + "\xB5\xDF" => "\xE8\x8F\x8C", + "\xB5\xE0" => "\xE8\x8F\xBD", + "\xB5\xE1" => "\xE8\x8F\xB2", + "\xB5\xE2" => "\xE8\x8F\x8A", + "\xB5\xE3" => "\xE8\x90\xB8", + "\xB5\xE4" => "\xE8\x90\x8E", + "\xB5\xE5" => "\xE8\x90\x84", + "\xB5\xE6" => "\xE8\x8F\x9C", + "\xB5\xE7" => "\xE8\x90\x87", + "\xB5\xE8" => "\xE8\x8F\x94", + "\xB5\xE9" => "\xE8\x8F\x9F", + "\xB5\xEA" => "\xE8\x99\x9B", + "\xB5\xEB" => "\xE8\x9B\x9F", + "\xB5\xEC" => "\xE8\x9B\x99", + "\xB5\xED" => "\xE8\x9B\xAD", + "\xB5\xEE" => "\xE8\x9B\x94", + "\xB5\xEF" => "\xE8\x9B\x9B", + "\xB5\xF0" => "\xE8\x9B\xA4", + "\xB5\xF1" => "\xE8\x9B\x90", + "\xB5\xF2" => "\xE8\x9B\x9E", + "\xB5\xF3" => "\xE8\xA1\x97", + "\xB5\xF4" => "\xE8\xA3\x81", + "\xB5\xF5" => "\xE8\xA3\x82", + "\xB5\xF6" => "\xE8\xA2\xB1", + "\xB5\xF7" => "\xE8\xA6\x83", + "\xB5\xF8" => "\xE8\xA6\x96", + "\xB5\xF9" => "\xE8\xA8\xBB", + "\xB5\xFA" => "\xE8\xA9\xA0", + "\xB5\xFB" => "\xE8\xA9\x95", + "\xB5\xFC" => "\xE8\xA9\x9E", + "\xB5\xFD" => "\xE8\xA8\xBC", + "\xB5\xFE" => "\xE8\xA9\x81", + "\xB6\x40" => "\xE8\xA9\x94", + "\xB6\x41" => "\xE8\xA9\x9B", + "\xB6\x42" => "\xE8\xA9\x90", + "\xB6\x43" => "\xE8\xA9\x86", + "\xB6\x44" => "\xE8\xA8\xB4", + "\xB6\x45" => "\xE8\xA8\xBA", + "\xB6\x46" => "\xE8\xA8\xB6", + "\xB6\x47" => "\xE8\xA9\x96", + "\xB6\x48" => "\xE8\xB1\xA1", + "\xB6\x49" => "\xE8\xB2\x82", + "\xB6\x4A" => "\xE8\xB2\xAF", + "\xB6\x4B" => "\xE8\xB2\xBC", + "\xB6\x4C" => "\xE8\xB2\xB3", + "\xB6\x4D" => "\xE8\xB2\xBD", + "\xB6\x4E" => "\xE8\xB3\x81", + "\xB6\x4F" => "\xE8\xB2\xBB", + "\xB6\x50" => "\xE8\xB3\x80", + "\xB6\x51" => "\xE8\xB2\xB4", + "\xB6\x52" => "\xE8\xB2\xB7", + "\xB6\x53" => "\xE8\xB2\xB6", + "\xB6\x54" => "\xE8\xB2\xBF", + "\xB6\x55" => "\xE8\xB2\xB8", + "\xB6\x56" => "\xE8\xB6\x8A", + "\xB6\x57" => "\xE8\xB6\x85", + "\xB6\x58" => "\xE8\xB6\x81", + "\xB6\x59" => "\xE8\xB7\x8E", + "\xB6\x5A" => "\xE8\xB7\x9D", + "\xB6\x5B" => "\xE8\xB7\x8B", + "\xB6\x5C" => "\xE8\xB7\x9A", + "\xB6\x5D" => "\xE8\xB7\x91", + "\xB6\x5E" => "\xE8\xB7\x8C", + "\xB6\x5F" => "\xE8\xB7\x9B", + "\xB6\x60" => "\xE8\xB7\x86", + "\xB6\x61" => "\xE8\xBB\xBB", + "\xB6\x62" => "\xE8\xBB\xB8", + "\xB6\x63" => "\xE8\xBB\xBC", + "\xB6\x64" => "\xE8\xBE\x9C", + "\xB6\x65" => "\xE9\x80\xAE", + "\xB6\x66" => "\xE9\x80\xB5", + "\xB6\x67" => "\xE9\x80\xB1", + "\xB6\x68" => "\xE9\x80\xB8", + "\xB6\x69" => "\xE9\x80\xB2", + "\xB6\x6A" => "\xE9\x80\xB6", + "\xB6\x6B" => "\xE9\x84\x82", + "\xB6\x6C" => "\xE9\x83\xB5", + "\xB6\x6D" => "\xE9\x84\x89", + "\xB6\x6E" => "\xE9\x83\xBE", + "\xB6\x6F" => "\xE9\x85\xA3", + "\xB6\x70" => "\xE9\x85\xA5", + "\xB6\x71" => "\xE9\x87\x8F", + "\xB6\x72" => "\xE9\x88\x94", + "\xB6\x73" => "\xE9\x88\x95", + "\xB6\x74" => "\xE9\x88\xA3", + "\xB6\x75" => "\xE9\x88\x89", + "\xB6\x76" => "\xE9\x88\x9E", + "\xB6\x77" => "\xE9\x88\x8D", + "\xB6\x78" => "\xE9\x88\x90", + "\xB6\x79" => "\xE9\x88\x87", + "\xB6\x7A" => "\xE9\x88\x91", + "\xB6\x7B" => "\xE9\x96\x94", + "\xB6\x7C" => "\xE9\x96\x8F", + "\xB6\x7D" => "\xE9\x96\x8B", + "\xB6\x7E" => "\xE9\x96\x91", + "\xB6\xA1" => "\xE9\x96\x93", + "\xB6\xA2" => "\xE9\x96\x92", + "\xB6\xA3" => "\xE9\x96\x8E", + "\xB6\xA4" => "\xE9\x9A\x8A", + "\xB6\xA5" => "\xE9\x9A\x8E", + "\xB6\xA6" => "\xE9\x9A\x8B", + "\xB6\xA7" => "\xE9\x99\xBD", + "\xB6\xA8" => "\xE9\x9A\x85", + "\xB6\xA9" => "\xE9\x9A\x86", + "\xB6\xAA" => "\xE9\x9A\x8D", + "\xB6\xAB" => "\xE9\x99\xB2", + "\xB6\xAC" => "\xE9\x9A\x84", + "\xB6\xAD" => "\xE9\x9B\x81", + "\xB6\xAE" => "\xE9\x9B\x85", + "\xB6\xAF" => "\xE9\x9B\x84", + "\xB6\xB0" => "\xE9\x9B\x86", + "\xB6\xB1" => "\xE9\x9B\x87", + "\xB6\xB2" => "\xE9\x9B\xAF", + "\xB6\xB3" => "\xE9\x9B\xB2", + "\xB6\xB4" => "\xE9\x9F\x8C", + "\xB6\xB5" => "\xE9\xA0\x85", + "\xB6\xB6" => "\xE9\xA0\x86", + "\xB6\xB7" => "\xE9\xA0\x88", + "\xB6\xB8" => "\xE9\xA3\xA7", + "\xB6\xB9" => "\xE9\xA3\xAA", + "\xB6\xBA" => "\xE9\xA3\xAF", + "\xB6\xBB" => "\xE9\xA3\xA9", + "\xB6\xBC" => "\xE9\xA3\xB2", + "\xB6\xBD" => "\xE9\xA3\xAD", + "\xB6\xBE" => "\xE9\xA6\xAE", + "\xB6\xBF" => "\xE9\xA6\xAD", + "\xB6\xC0" => "\xE9\xBB\x83", + "\xB6\xC1" => "\xE9\xBB\x8D", + "\xB6\xC2" => "\xE9\xBB\x91", + "\xB6\xC3" => "\xE4\xBA\x82", + "\xB6\xC4" => "\xE5\x82\xAD", + "\xB6\xC5" => "\xE5\x82\xB5", + "\xB6\xC6" => "\xE5\x82\xB2", + "\xB6\xC7" => "\xE5\x82\xB3", + "\xB6\xC8" => "\xE5\x83\x85", + "\xB6\xC9" => "\xE5\x82\xBE", + "\xB6\xCA" => "\xE5\x82\xAC", + "\xB6\xCB" => "\xE5\x82\xB7", + "\xB6\xCC" => "\xE5\x82\xBB", + "\xB6\xCD" => "\xE5\x82\xAF", + "\xB6\xCE" => "\xE5\x83\x87", + "\xB6\xCF" => "\xE5\x89\xBF", + "\xB6\xD0" => "\xE5\x89\xB7", + "\xB6\xD1" => "\xE5\x89\xBD", + "\xB6\xD2" => "\xE5\x8B\x9F", + "\xB6\xD3" => "\xE5\x8B\xA6", + "\xB6\xD4" => "\xE5\x8B\xA4", + "\xB6\xD5" => "\xE5\x8B\xA2", + "\xB6\xD6" => "\xE5\x8B\xA3", + "\xB6\xD7" => "\xE5\x8C\xAF", + "\xB6\xD8" => "\xE5\x97\x9F", + "\xB6\xD9" => "\xE5\x97\xA8", + "\xB6\xDA" => "\xE5\x97\x93", + "\xB6\xDB" => "\xE5\x97\xA6", + "\xB6\xDC" => "\xE5\x97\x8E", + "\xB6\xDD" => "\xE5\x97\x9C", + "\xB6\xDE" => "\xE5\x97\x87", + "\xB6\xDF" => "\xE5\x97\x91", + "\xB6\xE0" => "\xE5\x97\xA3", + "\xB6\xE1" => "\xE5\x97\xA4", + "\xB6\xE2" => "\xE5\x97\xAF", + "\xB6\xE3" => "\xE5\x97\x9A", + "\xB6\xE4" => "\xE5\x97\xA1", + "\xB6\xE5" => "\xE5\x97\x85", + "\xB6\xE6" => "\xE5\x97\x86", + "\xB6\xE7" => "\xE5\x97\xA5", + "\xB6\xE8" => "\xE5\x97\x89", + "\xB6\xE9" => "\xE5\x9C\x92", + "\xB6\xEA" => "\xE5\x9C\x93", + "\xB6\xEB" => "\xE5\xA1\x9E", + "\xB6\xEC" => "\xE5\xA1\x91", + "\xB6\xED" => "\xE5\xA1\x98", + "\xB6\xEE" => "\xE5\xA1\x97", + "\xB6\xEF" => "\xE5\xA1\x9A", + "\xB6\xF0" => "\xE5\xA1\x94", + "\xB6\xF1" => "\xE5\xA1\xAB", + "\xB6\xF2" => "\xE5\xA1\x8C", + "\xB6\xF3" => "\xE5\xA1\xAD", + "\xB6\xF4" => "\xE5\xA1\x8A", + "\xB6\xF5" => "\xE5\xA1\xA2", + "\xB6\xF6" => "\xE5\xA1\x92", + "\xB6\xF7" => "\xE5\xA1\x8B", + "\xB6\xF8" => "\xE5\xA5\xA7", + "\xB6\xF9" => "\xE5\xAB\x81", + "\xB6\xFA" => "\xE5\xAB\x89", + "\xB6\xFB" => "\xE5\xAB\x8C", + "\xB6\xFC" => "\xE5\xAA\xBE", + "\xB6\xFD" => "\xE5\xAA\xBD", + "\xB6\xFE" => "\xE5\xAA\xBC", + "\xB7\x40" => "\xE5\xAA\xB3", + "\xB7\x41" => "\xE5\xAB\x82", + "\xB7\x42" => "\xE5\xAA\xB2", + "\xB7\x43" => "\xE5\xB5\xA9", + "\xB7\x44" => "\xE5\xB5\xAF", + "\xB7\x45" => "\xE5\xB9\x8C", + "\xB7\x46" => "\xE5\xB9\xB9", + "\xB7\x47" => "\xE5\xBB\x89", + "\xB7\x48" => "\xE5\xBB\x88", + "\xB7\x49" => "\xE5\xBC\x92", + "\xB7\x4A" => "\xE5\xBD\x99", + "\xB7\x4B" => "\xE5\xBE\xAC", + "\xB7\x4C" => "\xE5\xBE\xAE", + "\xB7\x4D" => "\xE6\x84\x9A", + "\xB7\x4E" => "\xE6\x84\x8F", + "\xB7\x4F" => "\xE6\x85\x88", + "\xB7\x50" => "\xE6\x84\x9F", + "\xB7\x51" => "\xE6\x83\xB3", + "\xB7\x52" => "\xE6\x84\x9B", + "\xB7\x53" => "\xE6\x83\xB9", + "\xB7\x54" => "\xE6\x84\x81", + "\xB7\x55" => "\xE6\x84\x88", + "\xB7\x56" => "\xE6\x85\x8E", + "\xB7\x57" => "\xE6\x85\x8C", + "\xB7\x58" => "\xE6\x85\x84", + "\xB7\x59" => "\xE6\x85\x8D", + "\xB7\x5A" => "\xE6\x84\xBE", + "\xB7\x5B" => "\xE6\x84\xB4", + "\xB7\x5C" => "\xE6\x84\xA7", + "\xB7\x5D" => "\xE6\x84\x8D", + "\xB7\x5E" => "\xE6\x84\x86", + "\xB7\x5F" => "\xE6\x84\xB7", + "\xB7\x60" => "\xE6\x88\xA1", + "\xB7\x61" => "\xE6\x88\xA2", + "\xB7\x62" => "\xE6\x90\x93", + "\xB7\x63" => "\xE6\x90\xBE", + "\xB7\x64" => "\xE6\x90\x9E", + "\xB7\x65" => "\xE6\x90\xAA", + "\xB7\x66" => "\xE6\x90\xAD", + "\xB7\x67" => "\xE6\x90\xBD", + "\xB7\x68" => "\xE6\x90\xAC", + "\xB7\x69" => "\xE6\x90\x8F", + "\xB7\x6A" => "\xE6\x90\x9C", + "\xB7\x6B" => "\xE6\x90\x94", + "\xB7\x6C" => "\xE6\x90\x8D", + "\xB7\x6D" => "\xE6\x90\xB6", + "\xB7\x6E" => "\xE6\x90\x96", + "\xB7\x6F" => "\xE6\x90\x97", + "\xB7\x70" => "\xE6\x90\x86", + "\xB7\x71" => "\xE6\x95\xAC", + "\xB7\x72" => "\xE6\x96\x9F", + "\xB7\x73" => "\xE6\x96\xB0", + "\xB7\x74" => "\xE6\x9A\x97", + "\xB7\x75" => "\xE6\x9A\x89", + "\xB7\x76" => "\xE6\x9A\x87", + "\xB7\x77" => "\xE6\x9A\x88", + "\xB7\x78" => "\xE6\x9A\x96", + "\xB7\x79" => "\xE6\x9A\x84", + "\xB7\x7A" => "\xE6\x9A\x98", + "\xB7\x7B" => "\xE6\x9A\x8D", + "\xB7\x7C" => "\xE6\x9C\x83", + "\xB7\x7D" => "\xE6\xA6\x94", + "\xB7\x7E" => "\xE6\xA5\xAD", + "\xB7\xA1" => "\xE6\xA5\x9A", + "\xB7\xA2" => "\xE6\xA5\xB7", + "\xB7\xA3" => "\xE6\xA5\xA0", + "\xB7\xA4" => "\xE6\xA5\x94", + "\xB7\xA5" => "\xE6\xA5\xB5", + "\xB7\xA6" => "\xE6\xA4\xB0", + "\xB7\xA7" => "\xE6\xA6\x82", + "\xB7\xA8" => "\xE6\xA5\x8A", + "\xB7\xA9" => "\xE6\xA5\xA8", + "\xB7\xAA" => "\xE6\xA5\xAB", + "\xB7\xAB" => "\xE6\xA5\x9E", + "\xB7\xAC" => "\xE6\xA5\x93", + "\xB7\xAD" => "\xE6\xA5\xB9", + "\xB7\xAE" => "\xE6\xA6\x86", + "\xB7\xAF" => "\xE6\xA5\x9D", + "\xB7\xB0" => "\xE6\xA5\xA3", + "\xB7\xB1" => "\xE6\xA5\x9B", + "\xB7\xB2" => "\xE6\xAD\x87", + "\xB7\xB3" => "\xE6\xAD\xB2", + "\xB7\xB4" => "\xE6\xAF\x80", + "\xB7\xB5" => "\xE6\xAE\xBF", + "\xB7\xB6" => "\xE6\xAF\x93", + "\xB7\xB7" => "\xE6\xAF\xBD", + "\xB7\xB8" => "\xE6\xBA\xA2", + "\xB7\xB9" => "\xE6\xBA\xAF", + "\xB7\xBA" => "\xE6\xBB\x93", + "\xB7\xBB" => "\xE6\xBA\xB6", + "\xB7\xBC" => "\xE6\xBB\x82", + "\xB7\xBD" => "\xE6\xBA\x90", + "\xB7\xBE" => "\xE6\xBA\x9D", + "\xB7\xBF" => "\xE6\xBB\x87", + "\xB7\xC0" => "\xE6\xBB\x85", + "\xB7\xC1" => "\xE6\xBA\xA5", + "\xB7\xC2" => "\xE6\xBA\x98", + "\xB7\xC3" => "\xE6\xBA\xBC", + "\xB7\xC4" => "\xE6\xBA\xBA", + "\xB7\xC5" => "\xE6\xBA\xAB", + "\xB7\xC6" => "\xE6\xBB\x91", + "\xB7\xC7" => "\xE6\xBA\x96", + "\xB7\xC8" => "\xE6\xBA\x9C", + "\xB7\xC9" => "\xE6\xBB\x84", + "\xB7\xCA" => "\xE6\xBB\x94", + "\xB7\xCB" => "\xE6\xBA\xAA", + "\xB7\xCC" => "\xE6\xBA\xA7", + "\xB7\xCD" => "\xE6\xBA\xB4", + "\xB7\xCE" => "\xE7\x85\x8E", + "\xB7\xCF" => "\xE7\x85\x99", + "\xB7\xD0" => "\xE7\x85\xA9", + "\xB7\xD1" => "\xE7\x85\xA4", + "\xB7\xD2" => "\xE7\x85\x89", + "\xB7\xD3" => "\xE7\x85\xA7", + "\xB7\xD4" => "\xE7\x85\x9C", + "\xB7\xD5" => "\xE7\x85\xAC", + "\xB7\xD6" => "\xE7\x85\xA6", + "\xB7\xD7" => "\xE7\x85\x8C", + "\xB7\xD8" => "\xE7\x85\xA5", + "\xB7\xD9" => "\xE7\x85\x9E", + "\xB7\xDA" => "\xE7\x85\x86", + "\xB7\xDB" => "\xE7\x85\xA8", + "\xB7\xDC" => "\xE7\x85\x96", + "\xB7\xDD" => "\xE7\x88\xBA", + "\xB7\xDE" => "\xE7\x89\x92", + "\xB7\xDF" => "\xE7\x8C\xB7", + "\xB7\xE0" => "\xE7\x8D\x85", + "\xB7\xE1" => "\xE7\x8C\xBF", + "\xB7\xE2" => "\xE7\x8C\xBE", + "\xB7\xE3" => "\xE7\x91\xAF", + "\xB7\xE4" => "\xE7\x91\x9A", + "\xB7\xE5" => "\xE7\x91\x95", + "\xB7\xE6" => "\xE7\x91\x9F", + "\xB7\xE7" => "\xE7\x91\x9E", + "\xB7\xE8" => "\xE7\x91\x81", + "\xB7\xE9" => "\xE7\x90\xBF", + "\xB7\xEA" => "\xE7\x91\x99", + "\xB7\xEB" => "\xE7\x91\x9B", + "\xB7\xEC" => "\xE7\x91\x9C", + "\xB7\xED" => "\xE7\x95\xB6", + "\xB7\xEE" => "\xE7\x95\xB8", + "\xB7\xEF" => "\xE7\x98\x80", + "\xB7\xF0" => "\xE7\x97\xB0", + "\xB7\xF1" => "\xE7\x98\x81", + "\xB7\xF2" => "\xE7\x97\xB2", + "\xB7\xF3" => "\xE7\x97\xB1", + "\xB7\xF4" => "\xE7\x97\xBA", + "\xB7\xF5" => "\xE7\x97\xBF", + "\xB7\xF6" => "\xE7\x97\xB4", + "\xB7\xF7" => "\xE7\x97\xB3", + "\xB7\xF8" => "\xE7\x9B\x9E", + "\xB7\xF9" => "\xE7\x9B\x9F", + "\xB7\xFA" => "\xE7\x9D\x9B", + "\xB7\xFB" => "\xE7\x9D\xAB", + "\xB7\xFC" => "\xE7\x9D\xA6", + "\xB7\xFD" => "\xE7\x9D\x9E", + "\xB7\xFE" => "\xE7\x9D\xA3", + "\xB8\x40" => "\xE7\x9D\xB9", + "\xB8\x41" => "\xE7\x9D\xAA", + "\xB8\x42" => "\xE7\x9D\xAC", + "\xB8\x43" => "\xE7\x9D\x9C", + "\xB8\x44" => "\xE7\x9D\xA5", + "\xB8\x45" => "\xE7\x9D\xA8", + "\xB8\x46" => "\xE7\x9D\xA2", + "\xB8\x47" => "\xE7\x9F\xAE", + "\xB8\x48" => "\xE7\xA2\x8E", + "\xB8\x49" => "\xE7\xA2\xB0", + "\xB8\x4A" => "\xE7\xA2\x97", + "\xB8\x4B" => "\xE7\xA2\x98", + "\xB8\x4C" => "\xE7\xA2\x8C", + "\xB8\x4D" => "\xE7\xA2\x89", + "\xB8\x4E" => "\xE7\xA1\xBC", + "\xB8\x4F" => "\xE7\xA2\x91", + "\xB8\x50" => "\xE7\xA2\x93", + "\xB8\x51" => "\xE7\xA1\xBF", + "\xB8\x52" => "\xE7\xA5\xBA", + "\xB8\x53" => "\xE7\xA5\xBF", + "\xB8\x54" => "\xE7\xA6\x81", + "\xB8\x55" => "\xE8\x90\xAC", + "\xB8\x56" => "\xE7\xA6\xBD", + "\xB8\x57" => "\xE7\xA8\x9C", + "\xB8\x58" => "\xE7\xA8\x9A", + "\xB8\x59" => "\xE7\xA8\xA0", + "\xB8\x5A" => "\xE7\xA8\x94", + "\xB8\x5B" => "\xE7\xA8\x9F", + "\xB8\x5C" => "\xE7\xA8\x9E", + "\xB8\x5D" => "\xE7\xAA\x9F", + "\xB8\x5E" => "\xE7\xAA\xA0", + "\xB8\x5F" => "\xE7\xAD\xB7", + "\xB8\x60" => "\xE7\xAF\x80", + "\xB8\x61" => "\xE7\xAD\xA0", + "\xB8\x62" => "\xE7\xAD\xAE", + "\xB8\x63" => "\xE7\xAD\xA7", + "\xB8\x64" => "\xE7\xB2\xB1", + "\xB8\x65" => "\xE7\xB2\xB3", + "\xB8\x66" => "\xE7\xB2\xB5", + "\xB8\x67" => "\xE7\xB6\x93", + "\xB8\x68" => "\xE7\xB5\xB9", + "\xB8\x69" => "\xE7\xB6\x91", + "\xB8\x6A" => "\xE7\xB6\x81", + "\xB8\x6B" => "\xE7\xB6\x8F", + "\xB8\x6C" => "\xE7\xB5\x9B", + "\xB8\x6D" => "\xE7\xBD\xAE", + "\xB8\x6E" => "\xE7\xBD\xA9", + "\xB8\x6F" => "\xE7\xBD\xAA", + "\xB8\x70" => "\xE7\xBD\xB2", + "\xB8\x71" => "\xE7\xBE\xA9", + "\xB8\x72" => "\xE7\xBE\xA8", + "\xB8\x73" => "\xE7\xBE\xA4", + "\xB8\x74" => "\xE8\x81\x96", + "\xB8\x75" => "\xE8\x81\x98", + "\xB8\x76" => "\xE8\x82\x86", + "\xB8\x77" => "\xE8\x82\x84", + "\xB8\x78" => "\xE8\x85\xB1", + "\xB8\x79" => "\xE8\x85\xB0", + "\xB8\x7A" => "\xE8\x85\xB8", + "\xB8\x7B" => "\xE8\x85\xA5", + "\xB8\x7C" => "\xE8\x85\xAE", + "\xB8\x7D" => "\xE8\x85\xB3", + "\xB8\x7E" => "\xE8\x85\xAB", + "\xB8\xA1" => "\xE8\x85\xB9", + "\xB8\xA2" => "\xE8\x85\xBA", + "\xB8\xA3" => "\xE8\x85\xA6", + "\xB8\xA4" => "\xE8\x88\x85", + "\xB8\xA5" => "\xE8\x89\x87", + "\xB8\xA6" => "\xE8\x92\x82", + "\xB8\xA7" => "\xE8\x91\xB7", + "\xB8\xA8" => "\xE8\x90\xBD", + "\xB8\xA9" => "\xE8\x90\xB1", + "\xB8\xAA" => "\xE8\x91\xB5", + "\xB8\xAB" => "\xE8\x91\xA6", + "\xB8\xAC" => "\xE8\x91\xAB", + "\xB8\xAD" => "\xE8\x91\x89", + "\xB8\xAE" => "\xE8\x91\xAC", + "\xB8\xAF" => "\xE8\x91\x9B", + "\xB8\xB0" => "\xE8\x90\xBC", + "\xB8\xB1" => "\xE8\x90\xB5", + "\xB8\xB2" => "\xE8\x91\xA1", + "\xB8\xB3" => "\xE8\x91\xA3", + "\xB8\xB4" => "\xE8\x91\xA9", + "\xB8\xB5" => "\xE8\x91\xAD", + "\xB8\xB6" => "\xE8\x91\x86", + "\xB8\xB7" => "\xE8\x99\x9E", + "\xB8\xB8" => "\xE8\x99\x9C", + "\xB8\xB9" => "\xE8\x99\x9F", + "\xB8\xBA" => "\xE8\x9B\xB9", + "\xB8\xBB" => "\xE8\x9C\x93", + "\xB8\xBC" => "\xE8\x9C\x88", + "\xB8\xBD" => "\xE8\x9C\x87", + "\xB8\xBE" => "\xE8\x9C\x80", + "\xB8\xBF" => "\xE8\x9B\xBE", + "\xB8\xC0" => "\xE8\x9B\xBB", + "\xB8\xC1" => "\xE8\x9C\x82", + "\xB8\xC2" => "\xE8\x9C\x83", + "\xB8\xC3" => "\xE8\x9C\x86", + "\xB8\xC4" => "\xE8\x9C\x8A", + "\xB8\xC5" => "\xE8\xA1\x99", + "\xB8\xC6" => "\xE8\xA3\x9F", + "\xB8\xC7" => "\xE8\xA3\x94", + "\xB8\xC8" => "\xE8\xA3\x99", + "\xB8\xC9" => "\xE8\xA3\x9C", + "\xB8\xCA" => "\xE8\xA3\x98", + "\xB8\xCB" => "\xE8\xA3\x9D", + "\xB8\xCC" => "\xE8\xA3\xA1", + "\xB8\xCD" => "\xE8\xA3\x8A", + "\xB8\xCE" => "\xE8\xA3\x95", + "\xB8\xCF" => "\xE8\xA3\x92", + "\xB8\xD0" => "\xE8\xA6\x9C", + "\xB8\xD1" => "\xE8\xA7\xA3", + "\xB8\xD2" => "\xE8\xA9\xAB", + "\xB8\xD3" => "\xE8\xA9\xB2", + "\xB8\xD4" => "\xE8\xA9\xB3", + "\xB8\xD5" => "\xE8\xA9\xA6", + "\xB8\xD6" => "\xE8\xA9\xA9", + "\xB8\xD7" => "\xE8\xA9\xB0", + "\xB8\xD8" => "\xE8\xAA\x87", + "\xB8\xD9" => "\xE8\xA9\xBC", + "\xB8\xDA" => "\xE8\xA9\xA3", + "\xB8\xDB" => "\xE8\xAA\xA0", + "\xB8\xDC" => "\xE8\xA9\xB1", + "\xB8\xDD" => "\xE8\xAA\x85", + "\xB8\xDE" => "\xE8\xA9\xAD", + "\xB8\xDF" => "\xE8\xA9\xA2", + "\xB8\xE0" => "\xE8\xA9\xAE", + "\xB8\xE1" => "\xE8\xA9\xAC", + "\xB8\xE2" => "\xE8\xA9\xB9", + "\xB8\xE3" => "\xE8\xA9\xBB", + "\xB8\xE4" => "\xE8\xA8\xBE", + "\xB8\xE5" => "\xE8\xA9\xA8", + "\xB8\xE6" => "\xE8\xB1\xA2", + "\xB8\xE7" => "\xE8\xB2\x8A", + "\xB8\xE8" => "\xE8\xB2\x89", + "\xB8\xE9" => "\xE8\xB3\x8A", + "\xB8\xEA" => "\xE8\xB3\x87", + "\xB8\xEB" => "\xE8\xB3\x88", + "\xB8\xEC" => "\xE8\xB3\x84", + "\xB8\xED" => "\xE8\xB2\xB2", + "\xB8\xEE" => "\xE8\xB3\x83", + "\xB8\xEF" => "\xE8\xB3\x82", + "\xB8\xF0" => "\xE8\xB3\x85", + "\xB8\xF1" => "\xE8\xB7\xA1", + "\xB8\xF2" => "\xE8\xB7\x9F", + "\xB8\xF3" => "\xE8\xB7\xA8", + "\xB8\xF4" => "\xE8\xB7\xAF", + "\xB8\xF5" => "\xE8\xB7\xB3", + "\xB8\xF6" => "\xE8\xB7\xBA", + "\xB8\xF7" => "\xE8\xB7\xAA", + "\xB8\xF8" => "\xE8\xB7\xA4", + "\xB8\xF9" => "\xE8\xB7\xA6", + "\xB8\xFA" => "\xE8\xBA\xB2", + "\xB8\xFB" => "\xE8\xBC\x83", + "\xB8\xFC" => "\xE8\xBC\x89", + "\xB8\xFD" => "\xE8\xBB\xBE", + "\xB8\xFE" => "\xE8\xBC\x8A", + "\xB9\x40" => "\xE8\xBE\x9F", + "\xB9\x41" => "\xE8\xBE\xB2", + "\xB9\x42" => "\xE9\x81\x8B", + "\xB9\x43" => "\xE9\x81\x8A", + "\xB9\x44" => "\xE9\x81\x93", + "\xB9\x45" => "\xE9\x81\x82", + "\xB9\x46" => "\xE9\x81\x94", + "\xB9\x47" => "\xE9\x80\xBC", + "\xB9\x48" => "\xE9\x81\x95", + "\xB9\x49" => "\xE9\x81\x90", + "\xB9\x4A" => "\xE9\x81\x87", + "\xB9\x4B" => "\xE9\x81\x8F", + "\xB9\x4C" => "\xE9\x81\x8E", + "\xB9\x4D" => "\xE9\x81\x8D", + "\xB9\x4E" => "\xE9\x81\x91", + "\xB9\x4F" => "\xE9\x80\xBE", + "\xB9\x50" => "\xE9\x81\x81", + "\xB9\x51" => "\xE9\x84\x92", + "\xB9\x52" => "\xE9\x84\x97", + "\xB9\x53" => "\xE9\x85\xAC", + "\xB9\x54" => "\xE9\x85\xAA", + "\xB9\x55" => "\xE9\x85\xA9", + "\xB9\x56" => "\xE9\x87\x89", + "\xB9\x57" => "\xE9\x88\xB7", + "\xB9\x58" => "\xE9\x89\x97", + "\xB9\x59" => "\xE9\x88\xB8", + "\xB9\x5A" => "\xE9\x88\xBD", + "\xB9\x5B" => "\xE9\x89\x80", + "\xB9\x5C" => "\xE9\x88\xBE", + "\xB9\x5D" => "\xE9\x89\x9B", + "\xB9\x5E" => "\xE9\x89\x8B", + "\xB9\x5F" => "\xE9\x89\xA4", + "\xB9\x60" => "\xE9\x89\x91", + "\xB9\x61" => "\xE9\x88\xB4", + "\xB9\x62" => "\xE9\x89\x89", + "\xB9\x63" => "\xE9\x89\x8D", + "\xB9\x64" => "\xE9\x89\x85", + "\xB9\x65" => "\xE9\x88\xB9", + "\xB9\x66" => "\xE9\x88\xBF", + "\xB9\x67" => "\xE9\x89\x9A", + "\xB9\x68" => "\xE9\x96\x98", + "\xB9\x69" => "\xE9\x9A\x98", + "\xB9\x6A" => "\xE9\x9A\x94", + "\xB9\x6B" => "\xE9\x9A\x95", + "\xB9\x6C" => "\xE9\x9B\x8D", + "\xB9\x6D" => "\xE9\x9B\x8B", + "\xB9\x6E" => "\xE9\x9B\x89", + "\xB9\x6F" => "\xE9\x9B\x8A", + "\xB9\x70" => "\xE9\x9B\xB7", + "\xB9\x71" => "\xE9\x9B\xBB", + "\xB9\x72" => "\xE9\x9B\xB9", + "\xB9\x73" => "\xE9\x9B\xB6", + "\xB9\x74" => "\xE9\x9D\x96", + "\xB9\x75" => "\xE9\x9D\xB4", + "\xB9\x76" => "\xE9\x9D\xB6", + "\xB9\x77" => "\xE9\xA0\x90", + "\xB9\x78" => "\xE9\xA0\x91", + "\xB9\x79" => "\xE9\xA0\x93", + "\xB9\x7A" => "\xE9\xA0\x8A", + "\xB9\x7B" => "\xE9\xA0\x92", + "\xB9\x7C" => "\xE9\xA0\x8C", + "\xB9\x7D" => "\xE9\xA3\xBC", + "\xB9\x7E" => "\xE9\xA3\xB4", + "\xB9\xA1" => "\xE9\xA3\xBD", + "\xB9\xA2" => "\xE9\xA3\xBE", + "\xB9\xA3" => "\xE9\xA6\xB3", + "\xB9\xA4" => "\xE9\xA6\xB1", + "\xB9\xA5" => "\xE9\xA6\xB4", + "\xB9\xA6" => "\xE9\xAB\xA1", + "\xB9\xA7" => "\xE9\xB3\xA9", + "\xB9\xA8" => "\xE9\xBA\x82", + "\xB9\xA9" => "\xE9\xBC\x8E", + "\xB9\xAA" => "\xE9\xBC\x93", + "\xB9\xAB" => "\xE9\xBC\xA0", + "\xB9\xAC" => "\xE5\x83\xA7", + "\xB9\xAD" => "\xE5\x83\xAE", + "\xB9\xAE" => "\xE5\x83\xA5", + "\xB9\xAF" => "\xE5\x83\x96", + "\xB9\xB0" => "\xE5\x83\xAD", + "\xB9\xB1" => "\xE5\x83\x9A", + "\xB9\xB2" => "\xE5\x83\x95", + "\xB9\xB3" => "\xE5\x83\x8F", + "\xB9\xB4" => "\xE5\x83\x91", + "\xB9\xB5" => "\xE5\x83\xB1", + "\xB9\xB6" => "\xE5\x83\x8E", + "\xB9\xB7" => "\xE5\x83\xA9", + "\xB9\xB8" => "\xE5\x85\xA2", + "\xB9\xB9" => "\xE5\x87\xB3", + "\xB9\xBA" => "\xE5\x8A\x83", + "\xB9\xBB" => "\xE5\x8A\x82", + "\xB9\xBC" => "\xE5\x8C\xB1", + "\xB9\xBD" => "\xE5\x8E\xAD", + "\xB9\xBE" => "\xE5\x97\xBE", + "\xB9\xBF" => "\xE5\x98\x80", + "\xB9\xC0" => "\xE5\x98\x9B", + "\xB9\xC1" => "\xE5\x98\x97", + "\xB9\xC2" => "\xE5\x97\xBD", + "\xB9\xC3" => "\xE5\x98\x94", + "\xB9\xC4" => "\xE5\x98\x86", + "\xB9\xC5" => "\xE5\x98\x89", + "\xB9\xC6" => "\xE5\x98\x8D", + "\xB9\xC7" => "\xE5\x98\x8E", + "\xB9\xC8" => "\xE5\x97\xB7", + "\xB9\xC9" => "\xE5\x98\x96", + "\xB9\xCA" => "\xE5\x98\x9F", + "\xB9\xCB" => "\xE5\x98\x88", + "\xB9\xCC" => "\xE5\x98\x90", + "\xB9\xCD" => "\xE5\x97\xB6", + "\xB9\xCE" => "\xE5\x9C\x98", + "\xB9\xCF" => "\xE5\x9C\x96", + "\xB9\xD0" => "\xE5\xA1\xB5", + "\xB9\xD1" => "\xE5\xA1\xBE", + "\xB9\xD2" => "\xE5\xA2\x83", + "\xB9\xD3" => "\xE5\xA2\x93", + "\xB9\xD4" => "\xE5\xA2\x8A", + "\xB9\xD5" => "\xE5\xA1\xB9", + "\xB9\xD6" => "\xE5\xA2\x85", + "\xB9\xD7" => "\xE5\xA1\xBD", + "\xB9\xD8" => "\xE5\xA3\xBD", + "\xB9\xD9" => "\xE5\xA4\xA5", + "\xB9\xDA" => "\xE5\xA4\xA2", + "\xB9\xDB" => "\xE5\xA4\xA4", + "\xB9\xDC" => "\xE5\xA5\xAA", + "\xB9\xDD" => "\xE5\xA5\xA9", + "\xB9\xDE" => "\xE5\xAB\xA1", + "\xB9\xDF" => "\xE5\xAB\xA6", + "\xB9\xE0" => "\xE5\xAB\xA9", + "\xB9\xE1" => "\xE5\xAB\x97", + "\xB9\xE2" => "\xE5\xAB\x96", + "\xB9\xE3" => "\xE5\xAB\x98", + "\xB9\xE4" => "\xE5\xAB\xA3", + "\xB9\xE5" => "\xE5\xAD\xB5", + "\xB9\xE6" => "\xE5\xAF\x9E", + "\xB9\xE7" => "\xE5\xAF\xA7", + "\xB9\xE8" => "\xE5\xAF\xA1", + "\xB9\xE9" => "\xE5\xAF\xA5", + "\xB9\xEA" => "\xE5\xAF\xA6", + "\xB9\xEB" => "\xE5\xAF\xA8", + "\xB9\xEC" => "\xE5\xAF\xA2", + "\xB9\xED" => "\xE5\xAF\xA4", + "\xB9\xEE" => "\xE5\xAF\x9F", + "\xB9\xEF" => "\xE5\xB0\x8D", + "\xB9\xF0" => "\xE5\xB1\xA2", + "\xB9\xF1" => "\xE5\xB6\x84", + "\xB9\xF2" => "\xE5\xB6\x87", + "\xB9\xF3" => "\xE5\xB9\x9B", + "\xB9\xF4" => "\xE5\xB9\xA3", + "\xB9\xF5" => "\xE5\xB9\x95", + "\xB9\xF6" => "\xE5\xB9\x97", + "\xB9\xF7" => "\xE5\xB9\x94", + "\xB9\xF8" => "\xE5\xBB\x93", + "\xB9\xF9" => "\xE5\xBB\x96", + "\xB9\xFA" => "\xE5\xBC\x8A", + "\xB9\xFB" => "\xE5\xBD\x86", + "\xB9\xFC" => "\xE5\xBD\xB0", + "\xB9\xFD" => "\xE5\xBE\xB9", + "\xB9\xFE" => "\xE6\x85\x87", + "\xBA\x40" => "\xE6\x84\xBF", + "\xBA\x41" => "\xE6\x85\x8B", + "\xBA\x42" => "\xE6\x85\xB7", + "\xBA\x43" => "\xE6\x85\xA2", + "\xBA\x44" => "\xE6\x85\xA3", + "\xBA\x45" => "\xE6\x85\x9F", + "\xBA\x46" => "\xE6\x85\x9A", + "\xBA\x47" => "\xE6\x85\x98", + "\xBA\x48" => "\xE6\x85\xB5", + "\xBA\x49" => "\xE6\x88\xAA", + "\xBA\x4A" => "\xE6\x92\x87", + "\xBA\x4B" => "\xE6\x91\x98", + "\xBA\x4C" => "\xE6\x91\x94", + "\xBA\x4D" => "\xE6\x92\xA4", + "\xBA\x4E" => "\xE6\x91\xB8", + "\xBA\x4F" => "\xE6\x91\x9F", + "\xBA\x50" => "\xE6\x91\xBA", + "\xBA\x51" => "\xE6\x91\x91", + "\xBA\x52" => "\xE6\x91\xA7", + "\xBA\x53" => "\xE6\x90\xB4", + "\xBA\x54" => "\xE6\x91\xAD", + "\xBA\x55" => "\xE6\x91\xBB", + "\xBA\x56" => "\xE6\x95\xB2", + "\xBA\x57" => "\xE6\x96\xA1", + "\xBA\x58" => "\xE6\x97\x97", + "\xBA\x59" => "\xE6\x97\x96", + "\xBA\x5A" => "\xE6\x9A\xA2", + "\xBA\x5B" => "\xE6\x9A\xA8", + "\xBA\x5C" => "\xE6\x9A\x9D", + "\xBA\x5D" => "\xE6\xA6\x9C", + "\xBA\x5E" => "\xE6\xA6\xA8", + "\xBA\x5F" => "\xE6\xA6\x95", + "\xBA\x60" => "\xE6\xA7\x81", + "\xBA\x61" => "\xE6\xA6\xAE", + "\xBA\x62" => "\xE6\xA7\x93", + "\xBA\x63" => "\xE6\xA7\x8B", + "\xBA\x64" => "\xE6\xA6\x9B", + "\xBA\x65" => "\xE6\xA6\xB7", + "\xBA\x66" => "\xE6\xA6\xBB", + "\xBA\x67" => "\xE6\xA6\xAB", + "\xBA\x68" => "\xE6\xA6\xB4", + "\xBA\x69" => "\xE6\xA7\x90", + "\xBA\x6A" => "\xE6\xA7\x8D", + "\xBA\x6B" => "\xE6\xA6\xAD", + "\xBA\x6C" => "\xE6\xA7\x8C", + "\xBA\x6D" => "\xE6\xA6\xA6", + "\xBA\x6E" => "\xE6\xA7\x83", + "\xBA\x6F" => "\xE6\xA6\xA3", + "\xBA\x70" => "\xE6\xAD\x89", + "\xBA\x71" => "\xE6\xAD\x8C", + "\xBA\x72" => "\xE6\xB0\xB3", + "\xBA\x73" => "\xE6\xBC\xB3", + "\xBA\x74" => "\xE6\xBC\x94", + "\xBA\x75" => "\xE6\xBB\xBE", + "\xBA\x76" => "\xE6\xBC\x93", + "\xBA\x77" => "\xE6\xBB\xB4", + "\xBA\x78" => "\xE6\xBC\xA9", + "\xBA\x79" => "\xE6\xBC\xBE", + "\xBA\x7A" => "\xE6\xBC\xA0", + "\xBA\x7B" => "\xE6\xBC\xAC", + "\xBA\x7C" => "\xE6\xBC\x8F", + "\xBA\x7D" => "\xE6\xBC\x82", + "\xBA\x7E" => "\xE6\xBC\xA2", + "\xBA\xA1" => "\xE6\xBB\xBF", + "\xBA\xA2" => "\xE6\xBB\xAF", + "\xBA\xA3" => "\xE6\xBC\x86", + "\xBA\xA4" => "\xE6\xBC\xB1", + "\xBA\xA5" => "\xE6\xBC\xB8", + "\xBA\xA6" => "\xE6\xBC\xB2", + "\xBA\xA7" => "\xE6\xBC\xA3", + "\xBA\xA8" => "\xE6\xBC\x95", + "\xBA\xA9" => "\xE6\xBC\xAB", + "\xBA\xAA" => "\xE6\xBC\xAF", + "\xBA\xAB" => "\xE6\xBE\x88", + "\xBA\xAC" => "\xE6\xBC\xAA", + "\xBA\xAD" => "\xE6\xBB\xAC", + "\xBA\xAE" => "\xE6\xBC\x81", + "\xBA\xAF" => "\xE6\xBB\xB2", + "\xBA\xB0" => "\xE6\xBB\x8C", + "\xBA\xB1" => "\xE6\xBB\xB7", + "\xBA\xB2" => "\xE7\x86\x94", + "\xBA\xB3" => "\xE7\x86\x99", + "\xBA\xB4" => "\xE7\x85\xBD", + "\xBA\xB5" => "\xE7\x86\x8A", + "\xBA\xB6" => "\xE7\x86\x84", + "\xBA\xB7" => "\xE7\x86\x92", + "\xBA\xB8" => "\xE7\x88\xBE", + "\xBA\xB9" => "\xE7\x8A\x92", + "\xBA\xBA" => "\xE7\x8A\x96", + "\xBA\xBB" => "\xE7\x8D\x84", + "\xBA\xBC" => "\xE7\x8D\x90", + "\xBA\xBD" => "\xE7\x91\xA4", + "\xBA\xBE" => "\xE7\x91\xA3", + "\xBA\xBF" => "\xE7\x91\xAA", + "\xBA\xC0" => "\xE7\x91\xB0", + "\xBA\xC1" => "\xE7\x91\xAD", + "\xBA\xC2" => "\xE7\x94\x84", + "\xBA\xC3" => "\xE7\x96\x91", + "\xBA\xC4" => "\xE7\x98\xA7", + "\xBA\xC5" => "\xE7\x98\x8D", + "\xBA\xC6" => "\xE7\x98\x8B", + "\xBA\xC7" => "\xE7\x98\x89", + "\xBA\xC8" => "\xE7\x98\x93", + "\xBA\xC9" => "\xE7\x9B\xA1", + "\xBA\xCA" => "\xE7\x9B\xA3", + "\xBA\xCB" => "\xE7\x9E\x84", + "\xBA\xCC" => "\xE7\x9D\xBD", + "\xBA\xCD" => "\xE7\x9D\xBF", + "\xBA\xCE" => "\xE7\x9D\xA1", + "\xBA\xCF" => "\xE7\xA3\x81", + "\xBA\xD0" => "\xE7\xA2\x9F", + "\xBA\xD1" => "\xE7\xA2\xA7", + "\xBA\xD2" => "\xE7\xA2\xB3", + "\xBA\xD3" => "\xE7\xA2\xA9", + "\xBA\xD4" => "\xE7\xA2\xA3", + "\xBA\xD5" => "\xE7\xA6\x8E", + "\xBA\xD6" => "\xE7\xA6\x8F", + "\xBA\xD7" => "\xE7\xA6\x8D", + "\xBA\xD8" => "\xE7\xA8\xAE", + "\xBA\xD9" => "\xE7\xA8\xB1", + "\xBA\xDA" => "\xE7\xAA\xAA", + "\xBA\xDB" => "\xE7\xAA\xA9", + "\xBA\xDC" => "\xE7\xAB\xAD", + "\xBA\xDD" => "\xE7\xAB\xAF", + "\xBA\xDE" => "\xE7\xAE\xA1", + "\xBA\xDF" => "\xE7\xAE\x95", + "\xBA\xE0" => "\xE7\xAE\x8B", + "\xBA\xE1" => "\xE7\xAD\xB5", + "\xBA\xE2" => "\xE7\xAE\x97", + "\xBA\xE3" => "\xE7\xAE\x9D", + "\xBA\xE4" => "\xE7\xAE\x94", + "\xBA\xE5" => "\xE7\xAE\x8F", + "\xBA\xE6" => "\xE7\xAE\xB8", + "\xBA\xE7" => "\xE7\xAE\x87", + "\xBA\xE8" => "\xE7\xAE\x84", + "\xBA\xE9" => "\xE7\xB2\xB9", + "\xBA\xEA" => "\xE7\xB2\xBD", + "\xBA\xEB" => "\xE7\xB2\xBE", + "\xBA\xEC" => "\xE7\xB6\xBB", + "\xBA\xED" => "\xE7\xB6\xB0", + "\xBA\xEE" => "\xE7\xB6\x9C", + "\xBA\xEF" => "\xE7\xB6\xBD", + "\xBA\xF0" => "\xE7\xB6\xBE", + "\xBA\xF1" => "\xE7\xB6\xA0", + "\xBA\xF2" => "\xE7\xB7\x8A", + "\xBA\xF3" => "\xE7\xB6\xB4", + "\xBA\xF4" => "\xE7\xB6\xB2", + "\xBA\xF5" => "\xE7\xB6\xB1", + "\xBA\xF6" => "\xE7\xB6\xBA", + "\xBA\xF7" => "\xE7\xB6\xA2", + "\xBA\xF8" => "\xE7\xB6\xBF", + "\xBA\xF9" => "\xE7\xB6\xB5", + "\xBA\xFA" => "\xE7\xB6\xB8", + "\xBA\xFB" => "\xE7\xB6\xAD", + "\xBA\xFC" => "\xE7\xB7\x92", + "\xBA\xFD" => "\xE7\xB7\x87", + "\xBA\xFE" => "\xE7\xB6\xAC", + "\xBB\x40" => "\xE7\xBD\xB0", + "\xBB\x41" => "\xE7\xBF\xA0", + "\xBB\x42" => "\xE7\xBF\xA1", + "\xBB\x43" => "\xE7\xBF\x9F", + "\xBB\x44" => "\xE8\x81\x9E", + "\xBB\x45" => "\xE8\x81\x9A", + "\xBB\x46" => "\xE8\x82\x87", + "\xBB\x47" => "\xE8\x85\x90", + "\xBB\x48" => "\xE8\x86\x80", + "\xBB\x49" => "\xE8\x86\x8F", + "\xBB\x4A" => "\xE8\x86\x88", + "\xBB\x4B" => "\xE8\x86\x8A", + "\xBB\x4C" => "\xE8\x85\xBF", + "\xBB\x4D" => "\xE8\x86\x82", + "\xBB\x4E" => "\xE8\x87\xA7", + "\xBB\x4F" => "\xE8\x87\xBA", + "\xBB\x50" => "\xE8\x88\x87", + "\xBB\x51" => "\xE8\x88\x94", + "\xBB\x52" => "\xE8\x88\x9E", + "\xBB\x53" => "\xE8\x89\x8B", + "\xBB\x54" => "\xE8\x93\x89", + "\xBB\x55" => "\xE8\x92\xBF", + "\xBB\x56" => "\xE8\x93\x86", + "\xBB\x57" => "\xE8\x93\x84", + "\xBB\x58" => "\xE8\x92\x99", + "\xBB\x59" => "\xE8\x92\x9E", + "\xBB\x5A" => "\xE8\x92\xB2", + "\xBB\x5B" => "\xE8\x92\x9C", + "\xBB\x5C" => "\xE8\x93\x8B", + "\xBB\x5D" => "\xE8\x92\xB8", + "\xBB\x5E" => "\xE8\x93\x80", + "\xBB\x5F" => "\xE8\x93\x93", + "\xBB\x60" => "\xE8\x92\x90", + "\xBB\x61" => "\xE8\x92\xBC", + "\xBB\x62" => "\xE8\x93\x91", + "\xBB\x63" => "\xE8\x93\x8A", + "\xBB\x64" => "\xE8\x9C\xBF", + "\xBB\x65" => "\xE8\x9C\x9C", + "\xBB\x66" => "\xE8\x9C\xBB", + "\xBB\x67" => "\xE8\x9C\xA2", + "\xBB\x68" => "\xE8\x9C\xA5", + "\xBB\x69" => "\xE8\x9C\xB4", + "\xBB\x6A" => "\xE8\x9C\x98", + "\xBB\x6B" => "\xE8\x9D\x95", + "\xBB\x6C" => "\xE8\x9C\xB7", + "\xBB\x6D" => "\xE8\x9C\xA9", + "\xBB\x6E" => "\xE8\xA3\xB3", + "\xBB\x6F" => "\xE8\xA4\x82", + "\xBB\x70" => "\xE8\xA3\xB4", + "\xBB\x71" => "\xE8\xA3\xB9", + "\xBB\x72" => "\xE8\xA3\xB8", + "\xBB\x73" => "\xE8\xA3\xBD", + "\xBB\x74" => "\xE8\xA3\xA8", + "\xBB\x75" => "\xE8\xA4\x9A", + "\xBB\x76" => "\xE8\xA3\xAF", + "\xBB\x77" => "\xE8\xAA\xA6", + "\xBB\x78" => "\xE8\xAA\x8C", + "\xBB\x79" => "\xE8\xAA\x9E", + "\xBB\x7A" => "\xE8\xAA\xA3", + "\xBB\x7B" => "\xE8\xAA\x8D", + "\xBB\x7C" => "\xE8\xAA\xA1", + "\xBB\x7D" => "\xE8\xAA\x93", + "\xBB\x7E" => "\xE8\xAA\xA4", + "\xBB\xA1" => "\xE8\xAA\xAA", + "\xBB\xA2" => "\xE8\xAA\xA5", + "\xBB\xA3" => "\xE8\xAA\xA8", + "\xBB\xA4" => "\xE8\xAA\x98", + "\xBB\xA5" => "\xE8\xAA\x91", + "\xBB\xA6" => "\xE8\xAA\x9A", + "\xBB\xA7" => "\xE8\xAA\xA7", + "\xBB\xA8" => "\xE8\xB1\xAA", + "\xBB\xA9" => "\xE8\xB2\x8D", + "\xBB\xAA" => "\xE8\xB2\x8C", + "\xBB\xAB" => "\xE8\xB3\x93", + "\xBB\xAC" => "\xE8\xB3\x91", + "\xBB\xAD" => "\xE8\xB3\x92", + "\xBB\xAE" => "\xE8\xB5\xAB", + "\xBB\xAF" => "\xE8\xB6\x99", + "\xBB\xB0" => "\xE8\xB6\x95", + "\xBB\xB1" => "\xE8\xB7\xBC", + "\xBB\xB2" => "\xE8\xBC\x94", + "\xBB\xB3" => "\xE8\xBC\x92", + "\xBB\xB4" => "\xE8\xBC\x95", + "\xBB\xB5" => "\xE8\xBC\x93", + "\xBB\xB6" => "\xE8\xBE\xA3", + "\xBB\xB7" => "\xE9\x81\xA0", + "\xBB\xB8" => "\xE9\x81\x98", + "\xBB\xB9" => "\xE9\x81\x9C", + "\xBB\xBA" => "\xE9\x81\xA3", + "\xBB\xBB" => "\xE9\x81\x99", + "\xBB\xBC" => "\xE9\x81\x9E", + "\xBB\xBD" => "\xE9\x81\xA2", + "\xBB\xBE" => "\xE9\x81\x9D", + "\xBB\xBF" => "\xE9\x81\x9B", + "\xBB\xC0" => "\xE9\x84\x99", + "\xBB\xC1" => "\xE9\x84\x98", + "\xBB\xC2" => "\xE9\x84\x9E", + "\xBB\xC3" => "\xE9\x85\xB5", + "\xBB\xC4" => "\xE9\x85\xB8", + "\xBB\xC5" => "\xE9\x85\xB7", + "\xBB\xC6" => "\xE9\x85\xB4", + "\xBB\xC7" => "\xE9\x89\xB8", + "\xBB\xC8" => "\xE9\x8A\x80", + "\xBB\xC9" => "\xE9\x8A\x85", + "\xBB\xCA" => "\xE9\x8A\x98", + "\xBB\xCB" => "\xE9\x8A\x96", + "\xBB\xCC" => "\xE9\x89\xBB", + "\xBB\xCD" => "\xE9\x8A\x93", + "\xBB\xCE" => "\xE9\x8A\x9C", + "\xBB\xCF" => "\xE9\x8A\xA8", + "\xBB\xD0" => "\xE9\x89\xBC", + "\xBB\xD1" => "\xE9\x8A\x91", + "\xBB\xD2" => "\xE9\x96\xA1", + "\xBB\xD3" => "\xE9\x96\xA8", + "\xBB\xD4" => "\xE9\x96\xA9", + "\xBB\xD5" => "\xE9\x96\xA3", + "\xBB\xD6" => "\xE9\x96\xA5", + "\xBB\xD7" => "\xE9\x96\xA4", + "\xBB\xD8" => "\xE9\x9A\x99", + "\xBB\xD9" => "\xE9\x9A\x9C", + "\xBB\xDA" => "\xE9\x9A\x9B", + "\xBB\xDB" => "\xE9\x9B\x8C", + "\xBB\xDC" => "\xE9\x9B\x92", + "\xBB\xDD" => "\xE9\x9C\x80", + "\xBB\xDE" => "\xE9\x9D\xBC", + "\xBB\xDF" => "\xE9\x9E\x85", + "\xBB\xE0" => "\xE9\x9F\xB6", + "\xBB\xE1" => "\xE9\xA0\x97", + "\xBB\xE2" => "\xE9\xA0\x98", + "\xBB\xE3" => "\xE9\xA2\xAF", + "\xBB\xE4" => "\xE9\xA2\xB1", + "\xBB\xE5" => "\xE9\xA4\x83", + "\xBB\xE6" => "\xE9\xA4\x85", + "\xBB\xE7" => "\xE9\xA4\x8C", + "\xBB\xE8" => "\xE9\xA4\x89", + "\xBB\xE9" => "\xE9\xA7\x81", + "\xBB\xEA" => "\xE9\xAA\xAF", + "\xBB\xEB" => "\xE9\xAA\xB0", + "\xBB\xEC" => "\xE9\xAB\xA6", + "\xBB\xED" => "\xE9\xAD\x81", + "\xBB\xEE" => "\xE9\xAD\x82", + "\xBB\xEF" => "\xE9\xB3\xB4", + "\xBB\xF0" => "\xE9\xB3\xB6", + "\xBB\xF1" => "\xE9\xB3\xB3", + "\xBB\xF2" => "\xE9\xBA\xBC", + "\xBB\xF3" => "\xE9\xBC\xBB", + "\xBB\xF4" => "\xE9\xBD\x8A", + "\xBB\xF5" => "\xE5\x84\x84", + "\xBB\xF6" => "\xE5\x84\x80", + "\xBB\xF7" => "\xE5\x83\xBB", + "\xBB\xF8" => "\xE5\x83\xB5", + "\xBB\xF9" => "\xE5\x83\xB9", + "\xBB\xFA" => "\xE5\x84\x82", + "\xBB\xFB" => "\xE5\x84\x88", + "\xBB\xFC" => "\xE5\x84\x89", + "\xBB\xFD" => "\xE5\x84\x85", + "\xBB\xFE" => "\xE5\x87\x9C", + "\xBC\x40" => "\xE5\x8A\x87", + "\xBC\x41" => "\xE5\x8A\x88", + "\xBC\x42" => "\xE5\x8A\x89", + "\xBC\x43" => "\xE5\x8A\x8D", + "\xBC\x44" => "\xE5\x8A\x8A", + "\xBC\x45" => "\xE5\x8B\xB0", + "\xBC\x46" => "\xE5\x8E\xB2", + "\xBC\x47" => "\xE5\x98\xAE", + "\xBC\x48" => "\xE5\x98\xBB", + "\xBC\x49" => "\xE5\x98\xB9", + "\xBC\x4A" => "\xE5\x98\xB2", + "\xBC\x4B" => "\xE5\x98\xBF", + "\xBC\x4C" => "\xE5\x98\xB4", + "\xBC\x4D" => "\xE5\x98\xA9", + "\xBC\x4E" => "\xE5\x99\x93", + "\xBC\x4F" => "\xE5\x99\x8E", + "\xBC\x50" => "\xE5\x99\x97", + "\xBC\x51" => "\xE5\x99\xB4", + "\xBC\x52" => "\xE5\x98\xB6", + "\xBC\x53" => "\xE5\x98\xAF", + "\xBC\x54" => "\xE5\x98\xB0", + "\xBC\x55" => "\xE5\xA2\x80", + "\xBC\x56" => "\xE5\xA2\x9F", + "\xBC\x57" => "\xE5\xA2\x9E", + "\xBC\x58" => "\xE5\xA2\xB3", + "\xBC\x59" => "\xE5\xA2\x9C", + "\xBC\x5A" => "\xE5\xA2\xAE", + "\xBC\x5B" => "\xE5\xA2\xA9", + "\xBC\x5C" => "\xE5\xA2\xA6", + "\xBC\x5D" => "\xE5\xA5\xAD", + "\xBC\x5E" => "\xE5\xAC\x89", + "\xBC\x5F" => "\xE5\xAB\xBB", + "\xBC\x60" => "\xE5\xAC\x8B", + "\xBC\x61" => "\xE5\xAB\xB5", + "\xBC\x62" => "\xE5\xAC\x8C", + "\xBC\x63" => "\xE5\xAC\x88", + "\xBC\x64" => "\xE5\xAF\xAE", + "\xBC\x65" => "\xE5\xAF\xAC", + "\xBC\x66" => "\xE5\xAF\xA9", + "\xBC\x67" => "\xE5\xAF\xAB", + "\xBC\x68" => "\xE5\xB1\xA4", + "\xBC\x69" => "\xE5\xB1\xA5", + "\xBC\x6A" => "\xE5\xB6\x9D", + "\xBC\x6B" => "\xE5\xB6\x94", + "\xBC\x6C" => "\xE5\xB9\xA2", + "\xBC\x6D" => "\xE5\xB9\x9F", + "\xBC\x6E" => "\xE5\xB9\xA1", + "\xBC\x6F" => "\xE5\xBB\xA2", + "\xBC\x70" => "\xE5\xBB\x9A", + "\xBC\x71" => "\xE5\xBB\x9F", + "\xBC\x72" => "\xE5\xBB\x9D", + "\xBC\x73" => "\xE5\xBB\xA3", + "\xBC\x74" => "\xE5\xBB\xA0", + "\xBC\x75" => "\xE5\xBD\x88", + "\xBC\x76" => "\xE5\xBD\xB1", + "\xBC\x77" => "\xE5\xBE\xB7", + "\xBC\x78" => "\xE5\xBE\xB5", + "\xBC\x79" => "\xE6\x85\xB6", + "\xBC\x7A" => "\xE6\x85\xA7", + "\xBC\x7B" => "\xE6\x85\xAE", + "\xBC\x7C" => "\xE6\x85\x9D", + "\xBC\x7D" => "\xE6\x85\x95", + "\xBC\x7E" => "\xE6\x86\x82", + "\xBC\xA1" => "\xE6\x85\xBC", + "\xBC\xA2" => "\xE6\x85\xB0", + "\xBC\xA3" => "\xE6\x85\xAB", + "\xBC\xA4" => "\xE6\x85\xBE", + "\xBC\xA5" => "\xE6\x86\xA7", + "\xBC\xA6" => "\xE6\x86\x90", + "\xBC\xA7" => "\xE6\x86\xAB", + "\xBC\xA8" => "\xE6\x86\x8E", + "\xBC\xA9" => "\xE6\x86\xAC", + "\xBC\xAA" => "\xE6\x86\x9A", + "\xBC\xAB" => "\xE6\x86\xA4", + "\xBC\xAC" => "\xE6\x86\x94", + "\xBC\xAD" => "\xE6\x86\xAE", + "\xBC\xAE" => "\xE6\x88\xAE", + "\xBC\xAF" => "\xE6\x91\xA9", + "\xBC\xB0" => "\xE6\x91\xAF", + "\xBC\xB1" => "\xE6\x91\xB9", + "\xBC\xB2" => "\xE6\x92\x9E", + "\xBC\xB3" => "\xE6\x92\xB2", + "\xBC\xB4" => "\xE6\x92\x88", + "\xBC\xB5" => "\xE6\x92\x90", + "\xBC\xB6" => "\xE6\x92\xB0", + "\xBC\xB7" => "\xE6\x92\xA5", + "\xBC\xB8" => "\xE6\x92\x93", + "\xBC\xB9" => "\xE6\x92\x95", + "\xBC\xBA" => "\xE6\x92\xA9", + "\xBC\xBB" => "\xE6\x92\x92", + "\xBC\xBC" => "\xE6\x92\xAE", + "\xBC\xBD" => "\xE6\x92\xAD", + "\xBC\xBE" => "\xE6\x92\xAB", + "\xBC\xBF" => "\xE6\x92\x9A", + "\xBC\xC0" => "\xE6\x92\xAC", + "\xBC\xC1" => "\xE6\x92\x99", + "\xBC\xC2" => "\xE6\x92\xA2", + "\xBC\xC3" => "\xE6\x92\xB3", + "\xBC\xC4" => "\xE6\x95\xB5", + "\xBC\xC5" => "\xE6\x95\xB7", + "\xBC\xC6" => "\xE6\x95\xB8", + "\xBC\xC7" => "\xE6\x9A\xAE", + "\xBC\xC8" => "\xE6\x9A\xAB", + "\xBC\xC9" => "\xE6\x9A\xB4", + "\xBC\xCA" => "\xE6\x9A\xB1", + "\xBC\xCB" => "\xE6\xA8\xA3", + "\xBC\xCC" => "\xE6\xA8\x9F", + "\xBC\xCD" => "\xE6\xA7\xA8", + "\xBC\xCE" => "\xE6\xA8\x81", + "\xBC\xCF" => "\xE6\xA8\x9E", + "\xBC\xD0" => "\xE6\xA8\x99", + "\xBC\xD1" => "\xE6\xA7\xBD", + "\xBC\xD2" => "\xE6\xA8\xA1", + "\xBC\xD3" => "\xE6\xA8\x93", + "\xBC\xD4" => "\xE6\xA8\x8A", + "\xBC\xD5" => "\xE6\xA7\xB3", + "\xBC\xD6" => "\xE6\xA8\x82", + "\xBC\xD7" => "\xE6\xA8\x85", + "\xBC\xD8" => "\xE6\xA7\xAD", + "\xBC\xD9" => "\xE6\xA8\x91", + "\xBC\xDA" => "\xE6\xAD\x90", + "\xBC\xDB" => "\xE6\xAD\x8E", + "\xBC\xDC" => "\xE6\xAE\xA4", + "\xBC\xDD" => "\xE6\xAF\x85", + "\xBC\xDE" => "\xE6\xAF\x86", + "\xBC\xDF" => "\xE6\xBC\xBF", + "\xBC\xE0" => "\xE6\xBD\xBC", + "\xBC\xE1" => "\xE6\xBE\x84", + "\xBC\xE2" => "\xE6\xBD\x91", + "\xBC\xE3" => "\xE6\xBD\xA6", + "\xBC\xE4" => "\xE6\xBD\x94", + "\xBC\xE5" => "\xE6\xBE\x86", + "\xBC\xE6" => "\xE6\xBD\xAD", + "\xBC\xE7" => "\xE6\xBD\x9B", + "\xBC\xE8" => "\xE6\xBD\xB8", + "\xBC\xE9" => "\xE6\xBD\xAE", + "\xBC\xEA" => "\xE6\xBE\x8E", + "\xBC\xEB" => "\xE6\xBD\xBA", + "\xBC\xEC" => "\xE6\xBD\xB0", + "\xBC\xED" => "\xE6\xBD\xA4", + "\xBC\xEE" => "\xE6\xBE\x97", + "\xBC\xEF" => "\xE6\xBD\x98", + "\xBC\xF0" => "\xE6\xBB\x95", + "\xBC\xF1" => "\xE6\xBD\xAF", + "\xBC\xF2" => "\xE6\xBD\xA0", + "\xBC\xF3" => "\xE6\xBD\x9F", + "\xBC\xF4" => "\xE7\x86\x9F", + "\xBC\xF5" => "\xE7\x86\xAC", + "\xBC\xF6" => "\xE7\x86\xB1", + "\xBC\xF7" => "\xE7\x86\xA8", + "\xBC\xF8" => "\xE7\x89\x96", + "\xBC\xF9" => "\xE7\x8A\x9B", + "\xBC\xFA" => "\xE7\x8D\x8E", + "\xBC\xFB" => "\xE7\x8D\x97", + "\xBC\xFC" => "\xE7\x91\xA9", + "\xBC\xFD" => "\xE7\x92\x8B", + "\xBC\xFE" => "\xE7\x92\x83", + "\xBD\x40" => "\xE7\x91\xBE", + "\xBD\x41" => "\xE7\x92\x80", + "\xBD\x42" => "\xE7\x95\xBF", + "\xBD\x43" => "\xE7\x98\xA0", + "\xBD\x44" => "\xE7\x98\xA9", + "\xBD\x45" => "\xE7\x98\x9F", + "\xBD\x46" => "\xE7\x98\xA4", + "\xBD\x47" => "\xE7\x98\xA6", + "\xBD\x48" => "\xE7\x98\xA1", + "\xBD\x49" => "\xE7\x98\xA2", + "\xBD\x4A" => "\xE7\x9A\x9A", + "\xBD\x4B" => "\xE7\x9A\xBA", + "\xBD\x4C" => "\xE7\x9B\xA4", + "\xBD\x4D" => "\xE7\x9E\x8E", + "\xBD\x4E" => "\xE7\x9E\x87", + "\xBD\x4F" => "\xE7\x9E\x8C", + "\xBD\x50" => "\xE7\x9E\x91", + "\xBD\x51" => "\xE7\x9E\x8B", + "\xBD\x52" => "\xE7\xA3\x8B", + "\xBD\x53" => "\xE7\xA3\x85", + "\xBD\x54" => "\xE7\xA2\xBA", + "\xBD\x55" => "\xE7\xA3\x8A", + "\xBD\x56" => "\xE7\xA2\xBE", + "\xBD\x57" => "\xE7\xA3\x95", + "\xBD\x58" => "\xE7\xA2\xBC", + "\xBD\x59" => "\xE7\xA3\x90", + "\xBD\x5A" => "\xE7\xA8\xBF", + "\xBD\x5B" => "\xE7\xA8\xBC", + "\xBD\x5C" => "\xE7\xA9\x80", + "\xBD\x5D" => "\xE7\xA8\xBD", + "\xBD\x5E" => "\xE7\xA8\xB7", + "\xBD\x5F" => "\xE7\xA8\xBB", + "\xBD\x60" => "\xE7\xAA\xAF", + "\xBD\x61" => "\xE7\xAA\xAE", + "\xBD\x62" => "\xE7\xAE\xAD", + "\xBD\x63" => "\xE7\xAE\xB1", + "\xBD\x64" => "\xE7\xAF\x84", + "\xBD\x65" => "\xE7\xAE\xB4", + "\xBD\x66" => "\xE7\xAF\x86", + "\xBD\x67" => "\xE7\xAF\x87", + "\xBD\x68" => "\xE7\xAF\x81", + "\xBD\x69" => "\xE7\xAE\xA0", + "\xBD\x6A" => "\xE7\xAF\x8C", + "\xBD\x6B" => "\xE7\xB3\x8A", + "\xBD\x6C" => "\xE7\xB7\xA0", + "\xBD\x6D" => "\xE7\xB7\xB4", + "\xBD\x6E" => "\xE7\xB7\xAF", + "\xBD\x6F" => "\xE7\xB7\xBB", + "\xBD\x70" => "\xE7\xB7\x98", + "\xBD\x71" => "\xE7\xB7\xAC", + "\xBD\x72" => "\xE7\xB7\x9D", + "\xBD\x73" => "\xE7\xB7\xA8", + "\xBD\x74" => "\xE7\xB7\xA3", + "\xBD\x75" => "\xE7\xB7\x9A", + "\xBD\x76" => "\xE7\xB7\x9E", + "\xBD\x77" => "\xE7\xB7\xA9", + "\xBD\x78" => "\xE7\xB6\x9E", + "\xBD\x79" => "\xE7\xB7\x99", + "\xBD\x7A" => "\xE7\xB7\xB2", + "\xBD\x7B" => "\xE7\xB7\xB9", + "\xBD\x7C" => "\xE7\xBD\xB5", + "\xBD\x7D" => "\xE7\xBD\xB7", + "\xBD\x7E" => "\xE7\xBE\xAF", + "\xBD\xA1" => "\xE7\xBF\xA9", + "\xBD\xA2" => "\xE8\x80\xA6", + "\xBD\xA3" => "\xE8\x86\x9B", + "\xBD\xA4" => "\xE8\x86\x9C", + "\xBD\xA5" => "\xE8\x86\x9D", + "\xBD\xA6" => "\xE8\x86\xA0", + "\xBD\xA7" => "\xE8\x86\x9A", + "\xBD\xA8" => "\xE8\x86\x98", + "\xBD\xA9" => "\xE8\x94\x97", + "\xBD\xAA" => "\xE8\x94\xBD", + "\xBD\xAB" => "\xE8\x94\x9A", + "\xBD\xAC" => "\xE8\x93\xAE", + "\xBD\xAD" => "\xE8\x94\xAC", + "\xBD\xAE" => "\xE8\x94\xAD", + "\xBD\xAF" => "\xE8\x94\x93", + "\xBD\xB0" => "\xE8\x94\x91", + "\xBD\xB1" => "\xE8\x94\xA3", + "\xBD\xB2" => "\xE8\x94\xA1", + "\xBD\xB3" => "\xE8\x94\x94", + "\xBD\xB4" => "\xE8\x93\xAC", + "\xBD\xB5" => "\xE8\x94\xA5", + "\xBD\xB6" => "\xE8\x93\xBF", + "\xBD\xB7" => "\xE8\x94\x86", + "\xBD\xB8" => "\xE8\x9E\x82", + "\xBD\xB9" => "\xE8\x9D\xB4", + "\xBD\xBA" => "\xE8\x9D\xB6", + "\xBD\xBB" => "\xE8\x9D\xA0", + "\xBD\xBC" => "\xE8\x9D\xA6", + "\xBD\xBD" => "\xE8\x9D\xB8", + "\xBD\xBE" => "\xE8\x9D\xA8", + "\xBD\xBF" => "\xE8\x9D\x99", + "\xBD\xC0" => "\xE8\x9D\x97", + "\xBD\xC1" => "\xE8\x9D\x8C", + "\xBD\xC2" => "\xE8\x9D\x93", + "\xBD\xC3" => "\xE8\xA1\x9B", + "\xBD\xC4" => "\xE8\xA1\x9D", + "\xBD\xC5" => "\xE8\xA4\x90", + "\xBD\xC6" => "\xE8\xA4\x87", + "\xBD\xC7" => "\xE8\xA4\x92", + "\xBD\xC8" => "\xE8\xA4\x93", + "\xBD\xC9" => "\xE8\xA4\x95", + "\xBD\xCA" => "\xE8\xA4\x8A", + "\xBD\xCB" => "\xE8\xAA\xBC", + "\xBD\xCC" => "\xE8\xAB\x92", + "\xBD\xCD" => "\xE8\xAB\x87", + "\xBD\xCE" => "\xE8\xAB\x84", + "\xBD\xCF" => "\xE8\xAA\x95", + "\xBD\xD0" => "\xE8\xAB\x8B", + "\xBD\xD1" => "\xE8\xAB\xB8", + "\xBD\xD2" => "\xE8\xAA\xB2", + "\xBD\xD3" => "\xE8\xAB\x89", + "\xBD\xD4" => "\xE8\xAB\x82", + "\xBD\xD5" => "\xE8\xAA\xBF", + "\xBD\xD6" => "\xE8\xAA\xB0", + "\xBD\xD7" => "\xE8\xAB\x96", + "\xBD\xD8" => "\xE8\xAB\x8D", + "\xBD\xD9" => "\xE8\xAA\xB6", + "\xBD\xDA" => "\xE8\xAA\xB9", + "\xBD\xDB" => "\xE8\xAB\x9B", + "\xBD\xDC" => "\xE8\xB1\x8C", + "\xBD\xDD" => "\xE8\xB1\x8E", + "\xBD\xDE" => "\xE8\xB1\xAC", + "\xBD\xDF" => "\xE8\xB3\xA0", + "\xBD\xE0" => "\xE8\xB3\x9E", + "\xBD\xE1" => "\xE8\xB3\xA6", + "\xBD\xE2" => "\xE8\xB3\xA4", + "\xBD\xE3" => "\xE8\xB3\xAC", + "\xBD\xE4" => "\xE8\xB3\xAD", + "\xBD\xE5" => "\xE8\xB3\xA2", + "\xBD\xE6" => "\xE8\xB3\xA3", + "\xBD\xE7" => "\xE8\xB3\x9C", + "\xBD\xE8" => "\xE8\xB3\xAA", + "\xBD\xE9" => "\xE8\xB3\xA1", + "\xBD\xEA" => "\xE8\xB5\xAD", + "\xBD\xEB" => "\xE8\xB6\x9F", + "\xBD\xEC" => "\xE8\xB6\xA3", + "\xBD\xED" => "\xE8\xB8\xAB", + "\xBD\xEE" => "\xE8\xB8\x90", + "\xBD\xEF" => "\xE8\xB8\x9D", + "\xBD\xF0" => "\xE8\xB8\xA2", + "\xBD\xF1" => "\xE8\xB8\x8F", + "\xBD\xF2" => "\xE8\xB8\xA9", + "\xBD\xF3" => "\xE8\xB8\x9F", + "\xBD\xF4" => "\xE8\xB8\xA1", + "\xBD\xF5" => "\xE8\xB8\x9E", + "\xBD\xF6" => "\xE8\xBA\xBA", + "\xBD\xF7" => "\xE8\xBC\x9D", + "\xBD\xF8" => "\xE8\xBC\x9B", + "\xBD\xF9" => "\xE8\xBC\x9F", + "\xBD\xFA" => "\xE8\xBC\xA9", + "\xBD\xFB" => "\xE8\xBC\xA6", + "\xBD\xFC" => "\xE8\xBC\xAA", + "\xBD\xFD" => "\xE8\xBC\x9C", + "\xBD\xFE" => "\xE8\xBC\x9E", + "\xBE\x40" => "\xE8\xBC\xA5", + "\xBE\x41" => "\xE9\x81\xA9", + "\xBE\x42" => "\xE9\x81\xAE", + "\xBE\x43" => "\xE9\x81\xA8", + "\xBE\x44" => "\xE9\x81\xAD", + "\xBE\x45" => "\xE9\x81\xB7", + "\xBE\x46" => "\xE9\x84\xB0", + "\xBE\x47" => "\xE9\x84\xAD", + "\xBE\x48" => "\xE9\x84\xA7", + "\xBE\x49" => "\xE9\x84\xB1", + "\xBE\x4A" => "\xE9\x86\x87", + "\xBE\x4B" => "\xE9\x86\x89", + "\xBE\x4C" => "\xE9\x86\x8B", + "\xBE\x4D" => "\xE9\x86\x83", + "\xBE\x4E" => "\xE9\x8B\x85", + "\xBE\x4F" => "\xE9\x8A\xBB", + "\xBE\x50" => "\xE9\x8A\xB7", + "\xBE\x51" => "\xE9\x8B\xAA", + "\xBE\x52" => "\xE9\x8A\xAC", + "\xBE\x53" => "\xE9\x8B\xA4", + "\xBE\x54" => "\xE9\x8B\x81", + "\xBE\x55" => "\xE9\x8A\xB3", + "\xBE\x56" => "\xE9\x8A\xBC", + "\xBE\x57" => "\xE9\x8B\x92", + "\xBE\x58" => "\xE9\x8B\x87", + "\xBE\x59" => "\xE9\x8B\xB0", + "\xBE\x5A" => "\xE9\x8A\xB2", + "\xBE\x5B" => "\xE9\x96\xAD", + "\xBE\x5C" => "\xE9\x96\xB1", + "\xBE\x5D" => "\xE9\x9C\x84", + "\xBE\x5E" => "\xE9\x9C\x86", + "\xBE\x5F" => "\xE9\x9C\x87", + "\xBE\x60" => "\xE9\x9C\x89", + "\xBE\x61" => "\xE9\x9D\xA0", + "\xBE\x62" => "\xE9\x9E\x8D", + "\xBE\x63" => "\xE9\x9E\x8B", + "\xBE\x64" => "\xE9\x9E\x8F", + "\xBE\x65" => "\xE9\xA0\xA1", + "\xBE\x66" => "\xE9\xA0\xAB", + "\xBE\x67" => "\xE9\xA0\x9C", + "\xBE\x68" => "\xE9\xA2\xB3", + "\xBE\x69" => "\xE9\xA4\x8A", + "\xBE\x6A" => "\xE9\xA4\x93", + "\xBE\x6B" => "\xE9\xA4\x92", + "\xBE\x6C" => "\xE9\xA4\x98", + "\xBE\x6D" => "\xE9\xA7\x9D", + "\xBE\x6E" => "\xE9\xA7\x90", + "\xBE\x6F" => "\xE9\xA7\x9F", + "\xBE\x70" => "\xE9\xA7\x9B", + "\xBE\x71" => "\xE9\xA7\x91", + "\xBE\x72" => "\xE9\xA7\x95", + "\xBE\x73" => "\xE9\xA7\x92", + "\xBE\x74" => "\xE9\xA7\x99", + "\xBE\x75" => "\xE9\xAA\xB7", + "\xBE\x76" => "\xE9\xAB\xAE", + "\xBE\x77" => "\xE9\xAB\xAF", + "\xBE\x78" => "\xE9\xAC\xA7", + "\xBE\x79" => "\xE9\xAD\x85", + "\xBE\x7A" => "\xE9\xAD\x84", + "\xBE\x7B" => "\xE9\xAD\xB7", + "\xBE\x7C" => "\xE9\xAD\xAF", + "\xBE\x7D" => "\xE9\xB4\x86", + "\xBE\x7E" => "\xE9\xB4\x89", + "\xBE\xA1" => "\xE9\xB4\x83", + "\xBE\xA2" => "\xE9\xBA\xA9", + "\xBE\xA3" => "\xE9\xBA\xBE", + "\xBE\xA4" => "\xE9\xBB\x8E", + "\xBE\xA5" => "\xE5\xA2\xA8", + "\xBE\xA6" => "\xE9\xBD\x92", + "\xBE\xA7" => "\xE5\x84\x92", + "\xBE\xA8" => "\xE5\x84\x98", + "\xBE\xA9" => "\xE5\x84\x94", + "\xBE\xAA" => "\xE5\x84\x90", + "\xBE\xAB" => "\xE5\x84\x95", + "\xBE\xAC" => "\xE5\x86\x80", + "\xBE\xAD" => "\xE5\x86\xAA", + "\xBE\xAE" => "\xE5\x87\x9D", + "\xBE\xAF" => "\xE5\x8A\x91", + "\xBE\xB0" => "\xE5\x8A\x93", + "\xBE\xB1" => "\xE5\x8B\xB3", + "\xBE\xB2" => "\xE5\x99\x99", + "\xBE\xB3" => "\xE5\x99\xAB", + "\xBE\xB4" => "\xE5\x99\xB9", + "\xBE\xB5" => "\xE5\x99\xA9", + "\xBE\xB6" => "\xE5\x99\xA4", + "\xBE\xB7" => "\xE5\x99\xB8", + "\xBE\xB8" => "\xE5\x99\xAA", + "\xBE\xB9" => "\xE5\x99\xA8", + "\xBE\xBA" => "\xE5\x99\xA5", + "\xBE\xBB" => "\xE5\x99\xB1", + "\xBE\xBC" => "\xE5\x99\xAF", + "\xBE\xBD" => "\xE5\x99\xAC", + "\xBE\xBE" => "\xE5\x99\xA2", + "\xBE\xBF" => "\xE5\x99\xB6", + "\xBE\xC0" => "\xE5\xA3\x81", + "\xBE\xC1" => "\xE5\xA2\xBE", + "\xBE\xC2" => "\xE5\xA3\x87", + "\xBE\xC3" => "\xE5\xA3\x85", + "\xBE\xC4" => "\xE5\xA5\xAE", + "\xBE\xC5" => "\xE5\xAC\x9D", + "\xBE\xC6" => "\xE5\xAC\xB4", + "\xBE\xC7" => "\xE5\xAD\xB8", + "\xBE\xC8" => "\xE5\xAF\xB0", + "\xBE\xC9" => "\xE5\xB0\x8E", + "\xBE\xCA" => "\xE5\xBD\x8A", + "\xBE\xCB" => "\xE6\x86\xB2", + "\xBE\xCC" => "\xE6\x86\x91", + "\xBE\xCD" => "\xE6\x86\xA9", + "\xBE\xCE" => "\xE6\x86\x8A", + "\xBE\xCF" => "\xE6\x87\x8D", + "\xBE\xD0" => "\xE6\x86\xB6", + "\xBE\xD1" => "\xE6\x86\xBE", + "\xBE\xD2" => "\xE6\x87\x8A", + "\xBE\xD3" => "\xE6\x87\x88", + "\xBE\xD4" => "\xE6\x88\xB0", + "\xBE\xD5" => "\xE6\x93\x85", + "\xBE\xD6" => "\xE6\x93\x81", + "\xBE\xD7" => "\xE6\x93\x8B", + "\xBE\xD8" => "\xE6\x92\xBB", + "\xBE\xD9" => "\xE6\x92\xBC", + "\xBE\xDA" => "\xE6\x93\x9A", + "\xBE\xDB" => "\xE6\x93\x84", + "\xBE\xDC" => "\xE6\x93\x87", + "\xBE\xDD" => "\xE6\x93\x82", + "\xBE\xDE" => "\xE6\x93\x8D", + "\xBE\xDF" => "\xE6\x92\xBF", + "\xBE\xE0" => "\xE6\x93\x92", + "\xBE\xE1" => "\xE6\x93\x94", + "\xBE\xE2" => "\xE6\x92\xBE", + "\xBE\xE3" => "\xE6\x95\xB4", + "\xBE\xE4" => "\xE6\x9B\x86", + "\xBE\xE5" => "\xE6\x9B\x89", + "\xBE\xE6" => "\xE6\x9A\xB9", + "\xBE\xE7" => "\xE6\x9B\x84", + "\xBE\xE8" => "\xE6\x9B\x87", + "\xBE\xE9" => "\xE6\x9A\xB8", + "\xBE\xEA" => "\xE6\xA8\xBD", + "\xBE\xEB" => "\xE6\xA8\xB8", + "\xBE\xEC" => "\xE6\xA8\xBA", + "\xBE\xED" => "\xE6\xA9\x99", + "\xBE\xEE" => "\xE6\xA9\xAB", + "\xBE\xEF" => "\xE6\xA9\x98", + "\xBE\xF0" => "\xE6\xA8\xB9", + "\xBE\xF1" => "\xE6\xA9\x84", + "\xBE\xF2" => "\xE6\xA9\xA2", + "\xBE\xF3" => "\xE6\xA9\xA1", + "\xBE\xF4" => "\xE6\xA9\x8B", + "\xBE\xF5" => "\xE6\xA9\x87", + "\xBE\xF6" => "\xE6\xA8\xB5", + "\xBE\xF7" => "\xE6\xA9\x9F", + "\xBE\xF8" => "\xE6\xA9\x88", + "\xBE\xF9" => "\xE6\xAD\x99", + "\xBE\xFA" => "\xE6\xAD\xB7", + "\xBE\xFB" => "\xE6\xB0\x85", + "\xBE\xFC" => "\xE6\xBF\x82", + "\xBE\xFD" => "\xE6\xBE\xB1", + "\xBE\xFE" => "\xE6\xBE\xA1", + "\xBF\x40" => "\xE6\xBF\x83", + "\xBF\x41" => "\xE6\xBE\xA4", + "\xBF\x42" => "\xE6\xBF\x81", + "\xBF\x43" => "\xE6\xBE\xA7", + "\xBF\x44" => "\xE6\xBE\xB3", + "\xBF\x45" => "\xE6\xBF\x80", + "\xBF\x46" => "\xE6\xBE\xB9", + "\xBF\x47" => "\xE6\xBE\xB6", + "\xBF\x48" => "\xE6\xBE\xA6", + "\xBF\x49" => "\xE6\xBE\xA0", + "\xBF\x4A" => "\xE6\xBE\xB4", + "\xBF\x4B" => "\xE7\x86\xBE", + "\xBF\x4C" => "\xE7\x87\x89", + "\xBF\x4D" => "\xE7\x87\x90", + "\xBF\x4E" => "\xE7\x87\x92", + "\xBF\x4F" => "\xE7\x87\x88", + "\xBF\x50" => "\xE7\x87\x95", + "\xBF\x51" => "\xE7\x86\xB9", + "\xBF\x52" => "\xE7\x87\x8E", + "\xBF\x53" => "\xE7\x87\x99", + "\xBF\x54" => "\xE7\x87\x9C", + "\xBF\x55" => "\xE7\x87\x83", + "\xBF\x56" => "\xE7\x87\x84", + "\xBF\x57" => "\xE7\x8D\xA8", + "\xBF\x58" => "\xE7\x92\x9C", + "\xBF\x59" => "\xE7\x92\xA3", + "\xBF\x5A" => "\xE7\x92\x98", + "\xBF\x5B" => "\xE7\x92\x9F", + "\xBF\x5C" => "\xE7\x92\x9E", + "\xBF\x5D" => "\xE7\x93\xA2", + "\xBF\x5E" => "\xE7\x94\x8C", + "\xBF\x5F" => "\xE7\x94\x8D", + "\xBF\x60" => "\xE7\x98\xB4", + "\xBF\x61" => "\xE7\x98\xB8", + "\xBF\x62" => "\xE7\x98\xBA", + "\xBF\x63" => "\xE7\x9B\xA7", + "\xBF\x64" => "\xE7\x9B\xA5", + "\xBF\x65" => "\xE7\x9E\xA0", + "\xBF\x66" => "\xE7\x9E\x9E", + "\xBF\x67" => "\xE7\x9E\x9F", + "\xBF\x68" => "\xE7\x9E\xA5", + "\xBF\x69" => "\xE7\xA3\xA8", + "\xBF\x6A" => "\xE7\xA3\x9A", + "\xBF\x6B" => "\xE7\xA3\xAC", + "\xBF\x6C" => "\xE7\xA3\xA7", + "\xBF\x6D" => "\xE7\xA6\xA6", + "\xBF\x6E" => "\xE7\xA9\x8D", + "\xBF\x6F" => "\xE7\xA9\x8E", + "\xBF\x70" => "\xE7\xA9\x86", + "\xBF\x71" => "\xE7\xA9\x8C", + "\xBF\x72" => "\xE7\xA9\x8B", + "\xBF\x73" => "\xE7\xAA\xBA", + "\xBF\x74" => "\xE7\xAF\x99", + "\xBF\x75" => "\xE7\xB0\x91", + "\xBF\x76" => "\xE7\xAF\x89", + "\xBF\x77" => "\xE7\xAF\xA4", + "\xBF\x78" => "\xE7\xAF\x9B", + "\xBF\x79" => "\xE7\xAF\xA1", + "\xBF\x7A" => "\xE7\xAF\xA9", + "\xBF\x7B" => "\xE7\xAF\xA6", + "\xBF\x7C" => "\xE7\xB3\x95", + "\xBF\x7D" => "\xE7\xB3\x96", + "\xBF\x7E" => "\xE7\xB8\x8A", + "\xBF\xA1" => "\xE7\xB8\x91", + "\xBF\xA2" => "\xE7\xB8\x88", + "\xBF\xA3" => "\xE7\xB8\x9B", + "\xBF\xA4" => "\xE7\xB8\xA3", + "\xBF\xA5" => "\xE7\xB8\x9E", + "\xBF\xA6" => "\xE7\xB8\x9D", + "\xBF\xA7" => "\xE7\xB8\x89", + "\xBF\xA8" => "\xE7\xB8\x90", + "\xBF\xA9" => "\xE7\xBD\xB9", + "\xBF\xAA" => "\xE7\xBE\xB2", + "\xBF\xAB" => "\xE7\xBF\xB0", + "\xBF\xAC" => "\xE7\xBF\xB1", + "\xBF\xAD" => "\xE7\xBF\xAE", + "\xBF\xAE" => "\xE8\x80\xA8", + "\xBF\xAF" => "\xE8\x86\xB3", + "\xBF\xB0" => "\xE8\x86\xA9", + "\xBF\xB1" => "\xE8\x86\xA8", + "\xBF\xB2" => "\xE8\x87\xBB", + "\xBF\xB3" => "\xE8\x88\x88", + "\xBF\xB4" => "\xE8\x89\x98", + "\xBF\xB5" => "\xE8\x89\x99", + "\xBF\xB6" => "\xE8\x95\x8A", + "\xBF\xB7" => "\xE8\x95\x99", + "\xBF\xB8" => "\xE8\x95\x88", + "\xBF\xB9" => "\xE8\x95\xA8", + "\xBF\xBA" => "\xE8\x95\xA9", + "\xBF\xBB" => "\xE8\x95\x83", + "\xBF\xBC" => "\xE8\x95\x89", + "\xBF\xBD" => "\xE8\x95\xAD", + "\xBF\xBE" => "\xE8\x95\xAA", + "\xBF\xBF" => "\xE8\x95\x9E", + "\xBF\xC0" => "\xE8\x9E\x83", + "\xBF\xC1" => "\xE8\x9E\x9F", + "\xBF\xC2" => "\xE8\x9E\x9E", + "\xBF\xC3" => "\xE8\x9E\xA2", + "\xBF\xC4" => "\xE8\x9E\x8D", + "\xBF\xC5" => "\xE8\xA1\xA1", + "\xBF\xC6" => "\xE8\xA4\xAA", + "\xBF\xC7" => "\xE8\xA4\xB2", + "\xBF\xC8" => "\xE8\xA4\xA5", + "\xBF\xC9" => "\xE8\xA4\xAB", + "\xBF\xCA" => "\xE8\xA4\xA1", + "\xBF\xCB" => "\xE8\xA6\xAA", + "\xBF\xCC" => "\xE8\xA6\xA6", + "\xBF\xCD" => "\xE8\xAB\xA6", + "\xBF\xCE" => "\xE8\xAB\xBA", + "\xBF\xCF" => "\xE8\xAB\xAB", + "\xBF\xD0" => "\xE8\xAB\xB1", + "\xBF\xD1" => "\xE8\xAC\x80", + "\xBF\xD2" => "\xE8\xAB\x9C", + "\xBF\xD3" => "\xE8\xAB\xA7", + "\xBF\xD4" => "\xE8\xAB\xAE", + "\xBF\xD5" => "\xE8\xAB\xBE", + "\xBF\xD6" => "\xE8\xAC\x81", + "\xBF\xD7" => "\xE8\xAC\x82", + "\xBF\xD8" => "\xE8\xAB\xB7", + "\xBF\xD9" => "\xE8\xAB\xAD", + "\xBF\xDA" => "\xE8\xAB\xB3", + "\xBF\xDB" => "\xE8\xAB\xB6", + "\xBF\xDC" => "\xE8\xAB\xBC", + "\xBF\xDD" => "\xE8\xB1\xAB", + "\xBF\xDE" => "\xE8\xB1\xAD", + "\xBF\xDF" => "\xE8\xB2\x93", + "\xBF\xE0" => "\xE8\xB3\xB4", + "\xBF\xE1" => "\xE8\xB9\x84", + "\xBF\xE2" => "\xE8\xB8\xB1", + "\xBF\xE3" => "\xE8\xB8\xB4", + "\xBF\xE4" => "\xE8\xB9\x82", + "\xBF\xE5" => "\xE8\xB8\xB9", + "\xBF\xE6" => "\xE8\xB8\xB5", + "\xBF\xE7" => "\xE8\xBC\xBB", + "\xBF\xE8" => "\xE8\xBC\xAF", + "\xBF\xE9" => "\xE8\xBC\xB8", + "\xBF\xEA" => "\xE8\xBC\xB3", + "\xBF\xEB" => "\xE8\xBE\xA8", + "\xBF\xEC" => "\xE8\xBE\xA6", + "\xBF\xED" => "\xE9\x81\xB5", + "\xBF\xEE" => "\xE9\x81\xB4", + "\xBF\xEF" => "\xE9\x81\xB8", + "\xBF\xF0" => "\xE9\x81\xB2", + "\xBF\xF1" => "\xE9\x81\xBC", + "\xBF\xF2" => "\xE9\x81\xBA", + "\xBF\xF3" => "\xE9\x84\xB4", + "\xBF\xF4" => "\xE9\x86\x92", + "\xBF\xF5" => "\xE9\x8C\xA0", + "\xBF\xF6" => "\xE9\x8C\xB6", + "\xBF\xF7" => "\xE9\x8B\xB8", + "\xBF\xF8" => "\xE9\x8C\xB3", + "\xBF\xF9" => "\xE9\x8C\xAF", + "\xBF\xFA" => "\xE9\x8C\xA2", + "\xBF\xFB" => "\xE9\x8B\xBC", + "\xBF\xFC" => "\xE9\x8C\xAB", + "\xBF\xFD" => "\xE9\x8C\x84", + "\xBF\xFE" => "\xE9\x8C\x9A", + "\xC0\x40" => "\xE9\x8C\x90", + "\xC0\x41" => "\xE9\x8C\xA6", + "\xC0\x42" => "\xE9\x8C\xA1", + "\xC0\x43" => "\xE9\x8C\x95", + "\xC0\x44" => "\xE9\x8C\xAE", + "\xC0\x45" => "\xE9\x8C\x99", + "\xC0\x46" => "\xE9\x96\xBB", + "\xC0\x47" => "\xE9\x9A\xA7", + "\xC0\x48" => "\xE9\x9A\xA8", + "\xC0\x49" => "\xE9\x9A\xAA", + "\xC0\x4A" => "\xE9\x9B\x95", + "\xC0\x4B" => "\xE9\x9C\x8E", + "\xC0\x4C" => "\xE9\x9C\x91", + "\xC0\x4D" => "\xE9\x9C\x96", + "\xC0\x4E" => "\xE9\x9C\x8D", + "\xC0\x4F" => "\xE9\x9C\x93", + "\xC0\x50" => "\xE9\x9C\x8F", + "\xC0\x51" => "\xE9\x9D\x9B", + "\xC0\x52" => "\xE9\x9D\x9C", + "\xC0\x53" => "\xE9\x9D\xA6", + "\xC0\x54" => "\xE9\x9E\x98", + "\xC0\x55" => "\xE9\xA0\xB0", + "\xC0\x56" => "\xE9\xA0\xB8", + "\xC0\x57" => "\xE9\xA0\xBB", + "\xC0\x58" => "\xE9\xA0\xB7", + "\xC0\x59" => "\xE9\xA0\xAD", + "\xC0\x5A" => "\xE9\xA0\xB9", + "\xC0\x5B" => "\xE9\xA0\xA4", + "\xC0\x5C" => "\xE9\xA4\x90", + "\xC0\x5D" => "\xE9\xA4\xA8", + "\xC0\x5E" => "\xE9\xA4\x9E", + "\xC0\x5F" => "\xE9\xA4\x9B", + "\xC0\x60" => "\xE9\xA4\xA1", + "\xC0\x61" => "\xE9\xA4\x9A", + "\xC0\x62" => "\xE9\xA7\xAD", + "\xC0\x63" => "\xE9\xA7\xA2", + "\xC0\x64" => "\xE9\xA7\xB1", + "\xC0\x65" => "\xE9\xAA\xB8", + "\xC0\x66" => "\xE9\xAA\xBC", + "\xC0\x67" => "\xE9\xAB\xBB", + "\xC0\x68" => "\xE9\xAB\xAD", + "\xC0\x69" => "\xE9\xAC\xA8", + "\xC0\x6A" => "\xE9\xAE\x91", + "\xC0\x6B" => "\xE9\xB4\x95", + "\xC0\x6C" => "\xE9\xB4\xA3", + "\xC0\x6D" => "\xE9\xB4\xA6", + "\xC0\x6E" => "\xE9\xB4\xA8", + "\xC0\x6F" => "\xE9\xB4\x92", + "\xC0\x70" => "\xE9\xB4\x9B", + "\xC0\x71" => "\xE9\xBB\x98", + "\xC0\x72" => "\xE9\xBB\x94", + "\xC0\x73" => "\xE9\xBE\x8D", + "\xC0\x74" => "\xE9\xBE\x9C", + "\xC0\x75" => "\xE5\x84\xAA", + "\xC0\x76" => "\xE5\x84\x9F", + "\xC0\x77" => "\xE5\x84\xA1", + "\xC0\x78" => "\xE5\x84\xB2", + "\xC0\x79" => "\xE5\x8B\xB5", + "\xC0\x7A" => "\xE5\x9A\x8E", + "\xC0\x7B" => "\xE5\x9A\x80", + "\xC0\x7C" => "\xE5\x9A\x90", + "\xC0\x7D" => "\xE5\x9A\x85", + "\xC0\x7E" => "\xE5\x9A\x87", + "\xC0\xA1" => "\xE5\x9A\x8F", + "\xC0\xA2" => "\xE5\xA3\x95", + "\xC0\xA3" => "\xE5\xA3\x93", + "\xC0\xA4" => "\xE5\xA3\x91", + "\xC0\xA5" => "\xE5\xA3\x8E", + "\xC0\xA6" => "\xE5\xAC\xB0", + "\xC0\xA7" => "\xE5\xAC\xAA", + "\xC0\xA8" => "\xE5\xAC\xA4", + "\xC0\xA9" => "\xE5\xAD\xBA", + "\xC0\xAA" => "\xE5\xB0\xB7", + "\xC0\xAB" => "\xE5\xB1\xA8", + "\xC0\xAC" => "\xE5\xB6\xBC", + "\xC0\xAD" => "\xE5\xB6\xBA", + "\xC0\xAE" => "\xE5\xB6\xBD", + "\xC0\xAF" => "\xE5\xB6\xB8", + "\xC0\xB0" => "\xE5\xB9\xAB", + "\xC0\xB1" => "\xE5\xBD\x8C", + "\xC0\xB2" => "\xE5\xBE\xBD", + "\xC0\xB3" => "\xE6\x87\x89", + "\xC0\xB4" => "\xE6\x87\x82", + "\xC0\xB5" => "\xE6\x87\x87", + "\xC0\xB6" => "\xE6\x87\xA6", + "\xC0\xB7" => "\xE6\x87\x8B", + "\xC0\xB8" => "\xE6\x88\xB2", + "\xC0\xB9" => "\xE6\x88\xB4", + "\xC0\xBA" => "\xE6\x93\x8E", + "\xC0\xBB" => "\xE6\x93\x8A", + "\xC0\xBC" => "\xE6\x93\x98", + "\xC0\xBD" => "\xE6\x93\xA0", + "\xC0\xBE" => "\xE6\x93\xB0", + "\xC0\xBF" => "\xE6\x93\xA6", + "\xC0\xC0" => "\xE6\x93\xAC", + "\xC0\xC1" => "\xE6\x93\xB1", + "\xC0\xC2" => "\xE6\x93\xA2", + "\xC0\xC3" => "\xE6\x93\xAD", + "\xC0\xC4" => "\xE6\x96\x82", + "\xC0\xC5" => "\xE6\x96\x83", + "\xC0\xC6" => "\xE6\x9B\x99", + "\xC0\xC7" => "\xE6\x9B\x96", + "\xC0\xC8" => "\xE6\xAA\x80", + "\xC0\xC9" => "\xE6\xAA\x94", + "\xC0\xCA" => "\xE6\xAA\x84", + "\xC0\xCB" => "\xE6\xAA\xA2", + "\xC0\xCC" => "\xE6\xAA\x9C", + "\xC0\xCD" => "\xE6\xAB\x9B", + "\xC0\xCE" => "\xE6\xAA\xA3", + "\xC0\xCF" => "\xE6\xA9\xBE", + "\xC0\xD0" => "\xE6\xAA\x97", + "\xC0\xD1" => "\xE6\xAA\x90", + "\xC0\xD2" => "\xE6\xAA\xA0", + "\xC0\xD3" => "\xE6\xAD\x9C", + "\xC0\xD4" => "\xE6\xAE\xAE", + "\xC0\xD5" => "\xE6\xAF\x9A", + "\xC0\xD6" => "\xE6\xB0\x88", + "\xC0\xD7" => "\xE6\xBF\x98", + "\xC0\xD8" => "\xE6\xBF\xB1", + "\xC0\xD9" => "\xE6\xBF\x9F", + "\xC0\xDA" => "\xE6\xBF\xA0", + "\xC0\xDB" => "\xE6\xBF\x9B", + "\xC0\xDC" => "\xE6\xBF\xA4", + "\xC0\xDD" => "\xE6\xBF\xAB", + "\xC0\xDE" => "\xE6\xBF\xAF", + "\xC0\xDF" => "\xE6\xBE\x80", + "\xC0\xE0" => "\xE6\xBF\xAC", + "\xC0\xE1" => "\xE6\xBF\xA1", + "\xC0\xE2" => "\xE6\xBF\xA9", + "\xC0\xE3" => "\xE6\xBF\x95", + "\xC0\xE4" => "\xE6\xBF\xAE", + "\xC0\xE5" => "\xE6\xBF\xB0", + "\xC0\xE6" => "\xE7\x87\xA7", + "\xC0\xE7" => "\xE7\x87\x9F", + "\xC0\xE8" => "\xE7\x87\xAE", + "\xC0\xE9" => "\xE7\x87\xA6", + "\xC0\xEA" => "\xE7\x87\xA5", + "\xC0\xEB" => "\xE7\x87\xAD", + "\xC0\xEC" => "\xE7\x87\xAC", + "\xC0\xED" => "\xE7\x87\xB4", + "\xC0\xEE" => "\xE7\x87\xA0", + "\xC0\xEF" => "\xE7\x88\xB5", + "\xC0\xF0" => "\xE7\x89\x86", + "\xC0\xF1" => "\xE7\x8D\xB0", + "\xC0\xF2" => "\xE7\x8D\xB2", + "\xC0\xF3" => "\xE7\x92\xA9", + "\xC0\xF4" => "\xE7\x92\xB0", + "\xC0\xF5" => "\xE7\x92\xA6", + "\xC0\xF6" => "\xE7\x92\xA8", + "\xC0\xF7" => "\xE7\x99\x86", + "\xC0\xF8" => "\xE7\x99\x82", + "\xC0\xF9" => "\xE7\x99\x8C", + "\xC0\xFA" => "\xE7\x9B\xAA", + "\xC0\xFB" => "\xE7\x9E\xB3", + "\xC0\xFC" => "\xE7\x9E\xAA", + "\xC0\xFD" => "\xE7\x9E\xB0", + "\xC0\xFE" => "\xE7\x9E\xAC", + "\xC1\x40" => "\xE7\x9E\xA7", + "\xC1\x41" => "\xE7\x9E\xAD", + "\xC1\x42" => "\xE7\x9F\xAF", + "\xC1\x43" => "\xE7\xA3\xB7", + "\xC1\x44" => "\xE7\xA3\xBA", + "\xC1\x45" => "\xE7\xA3\xB4", + "\xC1\x46" => "\xE7\xA3\xAF", + "\xC1\x47" => "\xE7\xA4\x81", + "\xC1\x48" => "\xE7\xA6\xA7", + "\xC1\x49" => "\xE7\xA6\xAA", + "\xC1\x4A" => "\xE7\xA9\x97", + "\xC1\x4B" => "\xE7\xAA\xBF", + "\xC1\x4C" => "\xE7\xB0\x87", + "\xC1\x4D" => "\xE7\xB0\x8D", + "\xC1\x4E" => "\xE7\xAF\xBE", + "\xC1\x4F" => "\xE7\xAF\xB7", + "\xC1\x50" => "\xE7\xB0\x8C", + "\xC1\x51" => "\xE7\xAF\xA0", + "\xC1\x52" => "\xE7\xB3\xA0", + "\xC1\x53" => "\xE7\xB3\x9C", + "\xC1\x54" => "\xE7\xB3\x9E", + "\xC1\x55" => "\xE7\xB3\xA2", + "\xC1\x56" => "\xE7\xB3\x9F", + "\xC1\x57" => "\xE7\xB3\x99", + "\xC1\x58" => "\xE7\xB3\x9D", + "\xC1\x59" => "\xE7\xB8\xAE", + "\xC1\x5A" => "\xE7\xB8\xBE", + "\xC1\x5B" => "\xE7\xB9\x86", + "\xC1\x5C" => "\xE7\xB8\xB7", + "\xC1\x5D" => "\xE7\xB8\xB2", + "\xC1\x5E" => "\xE7\xB9\x83", + "\xC1\x5F" => "\xE7\xB8\xAB", + "\xC1\x60" => "\xE7\xB8\xBD", + "\xC1\x61" => "\xE7\xB8\xB1", + "\xC1\x62" => "\xE7\xB9\x85", + "\xC1\x63" => "\xE7\xB9\x81", + "\xC1\x64" => "\xE7\xB8\xB4", + "\xC1\x65" => "\xE7\xB8\xB9", + "\xC1\x66" => "\xE7\xB9\x88", + "\xC1\x67" => "\xE7\xB8\xB5", + "\xC1\x68" => "\xE7\xB8\xBF", + "\xC1\x69" => "\xE7\xB8\xAF", + "\xC1\x6A" => "\xE7\xBD\x84", + "\xC1\x6B" => "\xE7\xBF\xB3", + "\xC1\x6C" => "\xE7\xBF\xBC", + "\xC1\x6D" => "\xE8\x81\xB1", + "\xC1\x6E" => "\xE8\x81\xB2", + "\xC1\x6F" => "\xE8\x81\xB0", + "\xC1\x70" => "\xE8\x81\xAF", + "\xC1\x71" => "\xE8\x81\xB3", + "\xC1\x72" => "\xE8\x87\x86", + "\xC1\x73" => "\xE8\x87\x83", + "\xC1\x74" => "\xE8\x86\xBA", + "\xC1\x75" => "\xE8\x87\x82", + "\xC1\x76" => "\xE8\x87\x80", + "\xC1\x77" => "\xE8\x86\xBF", + "\xC1\x78" => "\xE8\x86\xBD", + "\xC1\x79" => "\xE8\x87\x89", + "\xC1\x7A" => "\xE8\x86\xBE", + "\xC1\x7B" => "\xE8\x87\xA8", + "\xC1\x7C" => "\xE8\x88\x89", + "\xC1\x7D" => "\xE8\x89\xB1", + "\xC1\x7E" => "\xE8\x96\xAA", + "\xC1\xA1" => "\xE8\x96\x84", + "\xC1\xA2" => "\xE8\x95\xBE", + "\xC1\xA3" => "\xE8\x96\x9C", + "\xC1\xA4" => "\xE8\x96\x91", + "\xC1\xA5" => "\xE8\x96\x94", + "\xC1\xA6" => "\xE8\x96\xAF", + "\xC1\xA7" => "\xE8\x96\x9B", + "\xC1\xA8" => "\xE8\x96\x87", + "\xC1\xA9" => "\xE8\x96\xA8", + "\xC1\xAA" => "\xE8\x96\x8A", + "\xC1\xAB" => "\xE8\x99\xA7", + "\xC1\xAC" => "\xE8\x9F\x80", + "\xC1\xAD" => "\xE8\x9F\x91", + "\xC1\xAE" => "\xE8\x9E\xB3", + "\xC1\xAF" => "\xE8\x9F\x92", + "\xC1\xB0" => "\xE8\x9F\x86", + "\xC1\xB1" => "\xE8\x9E\xAB", + "\xC1\xB2" => "\xE8\x9E\xBB", + "\xC1\xB3" => "\xE8\x9E\xBA", + "\xC1\xB4" => "\xE8\x9F\x88", + "\xC1\xB5" => "\xE8\x9F\x8B", + "\xC1\xB6" => "\xE8\xA4\xBB", + "\xC1\xB7" => "\xE8\xA4\xB6", + "\xC1\xB8" => "\xE8\xA5\x84", + "\xC1\xB9" => "\xE8\xA4\xB8", + "\xC1\xBA" => "\xE8\xA4\xBD", + "\xC1\xBB" => "\xE8\xA6\xAC", + "\xC1\xBC" => "\xE8\xAC\x8E", + "\xC1\xBD" => "\xE8\xAC\x97", + "\xC1\xBE" => "\xE8\xAC\x99", + "\xC1\xBF" => "\xE8\xAC\x9B", + "\xC1\xC0" => "\xE8\xAC\x8A", + "\xC1\xC1" => "\xE8\xAC\xA0", + "\xC1\xC2" => "\xE8\xAC\x9D", + "\xC1\xC3" => "\xE8\xAC\x84", + "\xC1\xC4" => "\xE8\xAC\x90", + "\xC1\xC5" => "\xE8\xB1\x81", + "\xC1\xC6" => "\xE8\xB0\xBF", + "\xC1\xC7" => "\xE8\xB1\xB3", + "\xC1\xC8" => "\xE8\xB3\xBA", + "\xC1\xC9" => "\xE8\xB3\xBD", + "\xC1\xCA" => "\xE8\xB3\xBC", + "\xC1\xCB" => "\xE8\xB3\xB8", + "\xC1\xCC" => "\xE8\xB3\xBB", + "\xC1\xCD" => "\xE8\xB6\xA8", + "\xC1\xCE" => "\xE8\xB9\x89", + "\xC1\xCF" => "\xE8\xB9\x8B", + "\xC1\xD0" => "\xE8\xB9\x88", + "\xC1\xD1" => "\xE8\xB9\x8A", + "\xC1\xD2" => "\xE8\xBD\x84", + "\xC1\xD3" => "\xE8\xBC\xBE", + "\xC1\xD4" => "\xE8\xBD\x82", + "\xC1\xD5" => "\xE8\xBD\x85", + "\xC1\xD6" => "\xE8\xBC\xBF", + "\xC1\xD7" => "\xE9\x81\xBF", + "\xC1\xD8" => "\xE9\x81\xBD", + "\xC1\xD9" => "\xE9\x82\x84", + "\xC1\xDA" => "\xE9\x82\x81", + "\xC1\xDB" => "\xE9\x82\x82", + "\xC1\xDC" => "\xE9\x82\x80", + "\xC1\xDD" => "\xE9\x84\xB9", + "\xC1\xDE" => "\xE9\x86\xA3", + "\xC1\xDF" => "\xE9\x86\x9E", + "\xC1\xE0" => "\xE9\x86\x9C", + "\xC1\xE1" => "\xE9\x8D\x8D", + "\xC1\xE2" => "\xE9\x8E\x82", + "\xC1\xE3" => "\xE9\x8C\xA8", + "\xC1\xE4" => "\xE9\x8D\xB5", + "\xC1\xE5" => "\xE9\x8D\x8A", + "\xC1\xE6" => "\xE9\x8D\xA5", + "\xC1\xE7" => "\xE9\x8D\x8B", + "\xC1\xE8" => "\xE9\x8C\x98", + "\xC1\xE9" => "\xE9\x8D\xBE", + "\xC1\xEA" => "\xE9\x8D\xAC", + "\xC1\xEB" => "\xE9\x8D\x9B", + "\xC1\xEC" => "\xE9\x8D\xB0", + "\xC1\xED" => "\xE9\x8D\x9A", + "\xC1\xEE" => "\xE9\x8D\x94", + "\xC1\xEF" => "\xE9\x97\x8A", + "\xC1\xF0" => "\xE9\x97\x8B", + "\xC1\xF1" => "\xE9\x97\x8C", + "\xC1\xF2" => "\xE9\x97\x88", + "\xC1\xF3" => "\xE9\x97\x86", + "\xC1\xF4" => "\xE9\x9A\xB1", + "\xC1\xF5" => "\xE9\x9A\xB8", + "\xC1\xF6" => "\xE9\x9B\x96", + "\xC1\xF7" => "\xE9\x9C\x9C", + "\xC1\xF8" => "\xE9\x9C\x9E", + "\xC1\xF9" => "\xE9\x9E\xA0", + "\xC1\xFA" => "\xE9\x9F\x93", + "\xC1\xFB" => "\xE9\xA1\x86", + "\xC1\xFC" => "\xE9\xA2\xB6", + "\xC1\xFD" => "\xE9\xA4\xB5", + "\xC1\xFE" => "\xE9\xA8\x81", + "\xC2\x40" => "\xE9\xA7\xBF", + "\xC2\x41" => "\xE9\xAE\xAE", + "\xC2\x42" => "\xE9\xAE\xAB", + "\xC2\x43" => "\xE9\xAE\xAA", + "\xC2\x44" => "\xE9\xAE\xAD", + "\xC2\x45" => "\xE9\xB4\xBB", + "\xC2\x46" => "\xE9\xB4\xBF", + "\xC2\x47" => "\xE9\xBA\x8B", + "\xC2\x48" => "\xE9\xBB\x8F", + "\xC2\x49" => "\xE9\xBB\x9E", + "\xC2\x4A" => "\xE9\xBB\x9C", + "\xC2\x4B" => "\xE9\xBB\x9D", + "\xC2\x4C" => "\xE9\xBB\x9B", + "\xC2\x4D" => "\xE9\xBC\xBE", + "\xC2\x4E" => "\xE9\xBD\x8B", + "\xC2\x4F" => "\xE5\x8F\xA2", + "\xC2\x50" => "\xE5\x9A\x95", + "\xC2\x51" => "\xE5\x9A\xAE", + "\xC2\x52" => "\xE5\xA3\x99", + "\xC2\x53" => "\xE5\xA3\x98", + "\xC2\x54" => "\xE5\xAC\xB8", + "\xC2\x55" => "\xE5\xBD\x9D", + "\xC2\x56" => "\xE6\x87\xA3", + "\xC2\x57" => "\xE6\x88\xB3", + "\xC2\x58" => "\xE6\x93\xB4", + "\xC2\x59" => "\xE6\x93\xB2", + "\xC2\x5A" => "\xE6\x93\xBE", + "\xC2\x5B" => "\xE6\x94\x86", + "\xC2\x5C" => "\xE6\x93\xBA", + "\xC2\x5D" => "\xE6\x93\xBB", + "\xC2\x5E" => "\xE6\x93\xB7", + "\xC2\x5F" => "\xE6\x96\xB7", + "\xC2\x60" => "\xE6\x9B\x9C", + "\xC2\x61" => "\xE6\x9C\xA6", + "\xC2\x62" => "\xE6\xAA\xB3", + "\xC2\x63" => "\xE6\xAA\xAC", + "\xC2\x64" => "\xE6\xAB\x83", + "\xC2\x65" => "\xE6\xAA\xBB", + "\xC2\x66" => "\xE6\xAA\xB8", + "\xC2\x67" => "\xE6\xAB\x82", + "\xC2\x68" => "\xE6\xAA\xAE", + "\xC2\x69" => "\xE6\xAA\xAF", + "\xC2\x6A" => "\xE6\xAD\x9F", + "\xC2\x6B" => "\xE6\xAD\xB8", + "\xC2\x6C" => "\xE6\xAE\xAF", + "\xC2\x6D" => "\xE7\x80\x89", + "\xC2\x6E" => "\xE7\x80\x8B", + "\xC2\x6F" => "\xE6\xBF\xBE", + "\xC2\x70" => "\xE7\x80\x86", + "\xC2\x71" => "\xE6\xBF\xBA", + "\xC2\x72" => "\xE7\x80\x91", + "\xC2\x73" => "\xE7\x80\x8F", + "\xC2\x74" => "\xE7\x87\xBB", + "\xC2\x75" => "\xE7\x87\xBC", + "\xC2\x76" => "\xE7\x87\xBE", + "\xC2\x77" => "\xE7\x87\xB8", + "\xC2\x78" => "\xE7\x8D\xB7", + "\xC2\x79" => "\xE7\x8D\xB5", + "\xC2\x7A" => "\xE7\x92\xA7", + "\xC2\x7B" => "\xE7\x92\xBF", + "\xC2\x7C" => "\xE7\x94\x95", + "\xC2\x7D" => "\xE7\x99\x96", + "\xC2\x7E" => "\xE7\x99\x98", + "\xC2\xA1" => "\xE7\x99\x92", + "\xC2\xA2" => "\xE7\x9E\xBD", + "\xC2\xA3" => "\xE7\x9E\xBF", + "\xC2\xA4" => "\xE7\x9E\xBB", + "\xC2\xA5" => "\xE7\x9E\xBC", + "\xC2\xA6" => "\xE7\xA4\x8E", + "\xC2\xA7" => "\xE7\xA6\xAE", + "\xC2\xA8" => "\xE7\xA9\xA1", + "\xC2\xA9" => "\xE7\xA9\xA2", + "\xC2\xAA" => "\xE7\xA9\xA0", + "\xC2\xAB" => "\xE7\xAB\x84", + "\xC2\xAC" => "\xE7\xAB\x85", + "\xC2\xAD" => "\xE7\xB0\xAB", + "\xC2\xAE" => "\xE7\xB0\xA7", + "\xC2\xAF" => "\xE7\xB0\xAA", + "\xC2\xB0" => "\xE7\xB0\x9E", + "\xC2\xB1" => "\xE7\xB0\xA3", + "\xC2\xB2" => "\xE7\xB0\xA1", + "\xC2\xB3" => "\xE7\xB3\xA7", + "\xC2\xB4" => "\xE7\xB9\x94", + "\xC2\xB5" => "\xE7\xB9\x95", + "\xC2\xB6" => "\xE7\xB9\x9E", + "\xC2\xB7" => "\xE7\xB9\x9A", + "\xC2\xB8" => "\xE7\xB9\xA1", + "\xC2\xB9" => "\xE7\xB9\x92", + "\xC2\xBA" => "\xE7\xB9\x99", + "\xC2\xBB" => "\xE7\xBD\x88", + "\xC2\xBC" => "\xE7\xBF\xB9", + "\xC2\xBD" => "\xE7\xBF\xBB", + "\xC2\xBE" => "\xE8\x81\xB7", + "\xC2\xBF" => "\xE8\x81\xB6", + "\xC2\xC0" => "\xE8\x87\x8D", + "\xC2\xC1" => "\xE8\x87\x8F", + "\xC2\xC2" => "\xE8\x88\x8A", + "\xC2\xC3" => "\xE8\x97\x8F", + "\xC2\xC4" => "\xE8\x96\xA9", + "\xC2\xC5" => "\xE8\x97\x8D", + "\xC2\xC6" => "\xE8\x97\x90", + "\xC2\xC7" => "\xE8\x97\x89", + "\xC2\xC8" => "\xE8\x96\xB0", + "\xC2\xC9" => "\xE8\x96\xBA", + "\xC2\xCA" => "\xE8\x96\xB9", + "\xC2\xCB" => "\xE8\x96\xA6", + "\xC2\xCC" => "\xE8\x9F\xAF", + "\xC2\xCD" => "\xE8\x9F\xAC", + "\xC2\xCE" => "\xE8\x9F\xB2", + "\xC2\xCF" => "\xE8\x9F\xA0", + "\xC2\xD0" => "\xE8\xA6\x86", + "\xC2\xD1" => "\xE8\xA6\xB2", + "\xC2\xD2" => "\xE8\xA7\xB4", + "\xC2\xD3" => "\xE8\xAC\xA8", + "\xC2\xD4" => "\xE8\xAC\xB9", + "\xC2\xD5" => "\xE8\xAC\xAC", + "\xC2\xD6" => "\xE8\xAC\xAB", + "\xC2\xD7" => "\xE8\xB1\x90", + "\xC2\xD8" => "\xE8\xB4\x85", + "\xC2\xD9" => "\xE8\xB9\x99", + "\xC2\xDA" => "\xE8\xB9\xA3", + "\xC2\xDB" => "\xE8\xB9\xA6", + "\xC2\xDC" => "\xE8\xB9\xA4", + "\xC2\xDD" => "\xE8\xB9\x9F", + "\xC2\xDE" => "\xE8\xB9\x95", + "\xC2\xDF" => "\xE8\xBB\x80", + "\xC2\xE0" => "\xE8\xBD\x89", + "\xC2\xE1" => "\xE8\xBD\x8D", + "\xC2\xE2" => "\xE9\x82\x87", + "\xC2\xE3" => "\xE9\x82\x83", + "\xC2\xE4" => "\xE9\x82\x88", + "\xC2\xE5" => "\xE9\x86\xAB", + "\xC2\xE6" => "\xE9\x86\xAC", + "\xC2\xE7" => "\xE9\x87\x90", + "\xC2\xE8" => "\xE9\x8E\x94", + "\xC2\xE9" => "\xE9\x8E\x8A", + "\xC2\xEA" => "\xE9\x8E\x96", + "\xC2\xEB" => "\xE9\x8E\xA2", + "\xC2\xEC" => "\xE9\x8E\xB3", + "\xC2\xED" => "\xE9\x8E\xAE", + "\xC2\xEE" => "\xE9\x8E\xAC", + "\xC2\xEF" => "\xE9\x8E\xB0", + "\xC2\xF0" => "\xE9\x8E\x98", + "\xC2\xF1" => "\xE9\x8E\x9A", + "\xC2\xF2" => "\xE9\x8E\x97", + "\xC2\xF3" => "\xE9\x97\x94", + "\xC2\xF4" => "\xE9\x97\x96", + "\xC2\xF5" => "\xE9\x97\x90", + "\xC2\xF6" => "\xE9\x97\x95", + "\xC2\xF7" => "\xE9\x9B\xA2", + "\xC2\xF8" => "\xE9\x9B\x9C", + "\xC2\xF9" => "\xE9\x9B\x99", + "\xC2\xFA" => "\xE9\x9B\x9B", + "\xC2\xFB" => "\xE9\x9B\x9E", + "\xC2\xFC" => "\xE9\x9C\xA4", + "\xC2\xFD" => "\xE9\x9E\xA3", + "\xC2\xFE" => "\xE9\x9E\xA6", + "\xC3\x40" => "\xE9\x9E\xAD", + "\xC3\x41" => "\xE9\x9F\xB9", + "\xC3\x42" => "\xE9\xA1\x8D", + "\xC3\x43" => "\xE9\xA1\x8F", + "\xC3\x44" => "\xE9\xA1\x8C", + "\xC3\x45" => "\xE9\xA1\x8E", + "\xC3\x46" => "\xE9\xA1\x93", + "\xC3\x47" => "\xE9\xA2\xBA", + "\xC3\x48" => "\xE9\xA4\xBE", + "\xC3\x49" => "\xE9\xA4\xBF", + "\xC3\x4A" => "\xE9\xA4\xBD", + "\xC3\x4B" => "\xE9\xA4\xAE", + "\xC3\x4C" => "\xE9\xA6\xA5", + "\xC3\x4D" => "\xE9\xA8\x8E", + "\xC3\x4E" => "\xE9\xAB\x81", + "\xC3\x4F" => "\xE9\xAC\x83", + "\xC3\x50" => "\xE9\xAC\x86", + "\xC3\x51" => "\xE9\xAD\x8F", + "\xC3\x52" => "\xE9\xAD\x8E", + "\xC3\x53" => "\xE9\xAD\x8D", + "\xC3\x54" => "\xE9\xAF\x8A", + "\xC3\x55" => "\xE9\xAF\x89", + "\xC3\x56" => "\xE9\xAF\xBD", + "\xC3\x57" => "\xE9\xAF\x88", + "\xC3\x58" => "\xE9\xAF\x80", + "\xC3\x59" => "\xE9\xB5\x91", + "\xC3\x5A" => "\xE9\xB5\x9D", + "\xC3\x5B" => "\xE9\xB5\xA0", + "\xC3\x5C" => "\xE9\xBB\xA0", + "\xC3\x5D" => "\xE9\xBC\x95", + "\xC3\x5E" => "\xE9\xBC\xAC", + "\xC3\x5F" => "\xE5\x84\xB3", + "\xC3\x60" => "\xE5\x9A\xA5", + "\xC3\x61" => "\xE5\xA3\x9E", + "\xC3\x62" => "\xE5\xA3\x9F", + "\xC3\x63" => "\xE5\xA3\xA2", + "\xC3\x64" => "\xE5\xAF\xB5", + "\xC3\x65" => "\xE9\xBE\x90", + "\xC3\x66" => "\xE5\xBB\xAC", + "\xC3\x67" => "\xE6\x87\xB2", + "\xC3\x68" => "\xE6\x87\xB7", + "\xC3\x69" => "\xE6\x87\xB6", + "\xC3\x6A" => "\xE6\x87\xB5", + "\xC3\x6B" => "\xE6\x94\x80", + "\xC3\x6C" => "\xE6\x94\x8F", + "\xC3\x6D" => "\xE6\x9B\xA0", + "\xC3\x6E" => "\xE6\x9B\x9D", + "\xC3\x6F" => "\xE6\xAB\xA5", + "\xC3\x70" => "\xE6\xAB\x9D", + "\xC3\x71" => "\xE6\xAB\x9A", + "\xC3\x72" => "\xE6\xAB\x93", + "\xC3\x73" => "\xE7\x80\x9B", + "\xC3\x74" => "\xE7\x80\x9F", + "\xC3\x75" => "\xE7\x80\xA8", + "\xC3\x76" => "\xE7\x80\x9A", + "\xC3\x77" => "\xE7\x80\x9D", + "\xC3\x78" => "\xE7\x80\x95", + "\xC3\x79" => "\xE7\x80\x98", + "\xC3\x7A" => "\xE7\x88\x86", + "\xC3\x7B" => "\xE7\x88\x8D", + "\xC3\x7C" => "\xE7\x89\x98", + "\xC3\x7D" => "\xE7\x8A\xA2", + "\xC3\x7E" => "\xE7\x8D\xB8", + "\xC3\xA1" => "\xE7\x8D\xBA", + "\xC3\xA2" => "\xE7\x92\xBD", + "\xC3\xA3" => "\xE7\x93\x8A", + "\xC3\xA4" => "\xE7\x93\xA3", + "\xC3\xA5" => "\xE7\x96\x87", + "\xC3\xA6" => "\xE7\x96\x86", + "\xC3\xA7" => "\xE7\x99\x9F", + "\xC3\xA8" => "\xE7\x99\xA1", + "\xC3\xA9" => "\xE7\x9F\x87", + "\xC3\xAA" => "\xE7\xA4\x99", + "\xC3\xAB" => "\xE7\xA6\xB1", + "\xC3\xAC" => "\xE7\xA9\xAB", + "\xC3\xAD" => "\xE7\xA9\xA9", + "\xC3\xAE" => "\xE7\xB0\xBE", + "\xC3\xAF" => "\xE7\xB0\xBF", + "\xC3\xB0" => "\xE7\xB0\xB8", + "\xC3\xB1" => "\xE7\xB0\xBD", + "\xC3\xB2" => "\xE7\xB0\xB7", + "\xC3\xB3" => "\xE7\xB1\x80", + "\xC3\xB4" => "\xE7\xB9\xAB", + "\xC3\xB5" => "\xE7\xB9\xAD", + "\xC3\xB6" => "\xE7\xB9\xB9", + "\xC3\xB7" => "\xE7\xB9\xA9", + "\xC3\xB8" => "\xE7\xB9\xAA", + "\xC3\xB9" => "\xE7\xBE\x85", + "\xC3\xBA" => "\xE7\xB9\xB3", + "\xC3\xBB" => "\xE7\xBE\xB6", + "\xC3\xBC" => "\xE7\xBE\xB9", + "\xC3\xBD" => "\xE7\xBE\xB8", + "\xC3\xBE" => "\xE8\x87\x98", + "\xC3\xBF" => "\xE8\x97\xA9", + "\xC3\xC0" => "\xE8\x97\x9D", + "\xC3\xC1" => "\xE8\x97\xAA", + "\xC3\xC2" => "\xE8\x97\x95", + "\xC3\xC3" => "\xE8\x97\xA4", + "\xC3\xC4" => "\xE8\x97\xA5", + "\xC3\xC5" => "\xE8\x97\xB7", + "\xC3\xC6" => "\xE8\x9F\xBB", + "\xC3\xC7" => "\xE8\xA0\x85", + "\xC3\xC8" => "\xE8\xA0\x8D", + "\xC3\xC9" => "\xE8\x9F\xB9", + "\xC3\xCA" => "\xE8\x9F\xBE", + "\xC3\xCB" => "\xE8\xA5\xA0", + "\xC3\xCC" => "\xE8\xA5\x9F", + "\xC3\xCD" => "\xE8\xA5\x96", + "\xC3\xCE" => "\xE8\xA5\x9E", + "\xC3\xCF" => "\xE8\xAD\x81", + "\xC3\xD0" => "\xE8\xAD\x9C", + "\xC3\xD1" => "\xE8\xAD\x98", + "\xC3\xD2" => "\xE8\xAD\x89", + "\xC3\xD3" => "\xE8\xAD\x9A", + "\xC3\xD4" => "\xE8\xAD\x8E", + "\xC3\xD5" => "\xE8\xAD\x8F", + "\xC3\xD6" => "\xE8\xAD\x86", + "\xC3\xD7" => "\xE8\xAD\x99", + "\xC3\xD8" => "\xE8\xB4\x88", + "\xC3\xD9" => "\xE8\xB4\x8A", + "\xC3\xDA" => "\xE8\xB9\xBC", + "\xC3\xDB" => "\xE8\xB9\xB2", + "\xC3\xDC" => "\xE8\xBA\x87", + "\xC3\xDD" => "\xE8\xB9\xB6", + "\xC3\xDE" => "\xE8\xB9\xAC", + "\xC3\xDF" => "\xE8\xB9\xBA", + "\xC3\xE0" => "\xE8\xB9\xB4", + "\xC3\xE1" => "\xE8\xBD\x94", + "\xC3\xE2" => "\xE8\xBD\x8E", + "\xC3\xE3" => "\xE8\xBE\xAD", + "\xC3\xE4" => "\xE9\x82\x8A", + "\xC3\xE5" => "\xE9\x82\x8B", + "\xC3\xE6" => "\xE9\x86\xB1", + "\xC3\xE7" => "\xE9\x86\xAE", + "\xC3\xE8" => "\xE9\x8F\xA1", + "\xC3\xE9" => "\xE9\x8F\x91", + "\xC3\xEA" => "\xE9\x8F\x9F", + "\xC3\xEB" => "\xE9\x8F\x83", + "\xC3\xEC" => "\xE9\x8F\x88", + "\xC3\xED" => "\xE9\x8F\x9C", + "\xC3\xEE" => "\xE9\x8F\x9D", + "\xC3\xEF" => "\xE9\x8F\x96", + "\xC3\xF0" => "\xE9\x8F\xA2", + "\xC3\xF1" => "\xE9\x8F\x8D", + "\xC3\xF2" => "\xE9\x8F\x98", + "\xC3\xF3" => "\xE9\x8F\xA4", + "\xC3\xF4" => "\xE9\x8F\x97", + "\xC3\xF5" => "\xE9\x8F\xA8", + "\xC3\xF6" => "\xE9\x97\x9C", + "\xC3\xF7" => "\xE9\x9A\xB4", + "\xC3\xF8" => "\xE9\x9B\xA3", + "\xC3\xF9" => "\xE9\x9C\xAA", + "\xC3\xFA" => "\xE9\x9C\xA7", + "\xC3\xFB" => "\xE9\x9D\xA1", + "\xC3\xFC" => "\xE9\x9F\x9C", + "\xC3\xFD" => "\xE9\x9F\xBB", + "\xC3\xFE" => "\xE9\xA1\x9E", + "\xC4\x40" => "\xE9\xA1\x98", + "\xC4\x41" => "\xE9\xA1\x9B", + "\xC4\x42" => "\xE9\xA2\xBC", + "\xC4\x43" => "\xE9\xA5\x85", + "\xC4\x44" => "\xE9\xA5\x89", + "\xC4\x45" => "\xE9\xA8\x96", + "\xC4\x46" => "\xE9\xA8\x99", + "\xC4\x47" => "\xE9\xAC\x8D", + "\xC4\x48" => "\xE9\xAF\xA8", + "\xC4\x49" => "\xE9\xAF\xA7", + "\xC4\x4A" => "\xE9\xAF\x96", + "\xC4\x4B" => "\xE9\xAF\x9B", + "\xC4\x4C" => "\xE9\xB6\x89", + "\xC4\x4D" => "\xE9\xB5\xA1", + "\xC4\x4E" => "\xE9\xB5\xB2", + "\xC4\x4F" => "\xE9\xB5\xAA", + "\xC4\x50" => "\xE9\xB5\xAC", + "\xC4\x51" => "\xE9\xBA\x92", + "\xC4\x52" => "\xE9\xBA\x97", + "\xC4\x53" => "\xE9\xBA\x93", + "\xC4\x54" => "\xE9\xBA\xB4", + "\xC4\x55" => "\xE5\x8B\xB8", + "\xC4\x56" => "\xE5\x9A\xA8", + "\xC4\x57" => "\xE5\x9A\xB7", + "\xC4\x58" => "\xE5\x9A\xB6", + "\xC4\x59" => "\xE5\x9A\xB4", + "\xC4\x5A" => "\xE5\x9A\xBC", + "\xC4\x5B" => "\xE5\xA3\xA4", + "\xC4\x5C" => "\xE5\xAD\x80", + "\xC4\x5D" => "\xE5\xAD\x83", + "\xC4\x5E" => "\xE5\xAD\xBD", + "\xC4\x5F" => "\xE5\xAF\xB6", + "\xC4\x60" => "\xE5\xB7\x89", + "\xC4\x61" => "\xE6\x87\xB8", + "\xC4\x62" => "\xE6\x87\xBA", + "\xC4\x63" => "\xE6\x94\x98", + "\xC4\x64" => "\xE6\x94\x94", + "\xC4\x65" => "\xE6\x94\x99", + "\xC4\x66" => "\xE6\x9B\xA6", + "\xC4\x67" => "\xE6\x9C\xA7", + "\xC4\x68" => "\xE6\xAB\xAC", + "\xC4\x69" => "\xE7\x80\xBE", + "\xC4\x6A" => "\xE7\x80\xB0", + "\xC4\x6B" => "\xE7\x80\xB2", + "\xC4\x6C" => "\xE7\x88\x90", + "\xC4\x6D" => "\xE7\x8D\xBB", + "\xC4\x6E" => "\xE7\x93\x8F", + "\xC4\x6F" => "\xE7\x99\xA2", + "\xC4\x70" => "\xE7\x99\xA5", + "\xC4\x71" => "\xE7\xA4\xA6", + "\xC4\x72" => "\xE7\xA4\xAA", + "\xC4\x73" => "\xE7\xA4\xAC", + "\xC4\x74" => "\xE7\xA4\xAB", + "\xC4\x75" => "\xE7\xAB\x87", + "\xC4\x76" => "\xE7\xAB\xB6", + "\xC4\x77" => "\xE7\xB1\x8C", + "\xC4\x78" => "\xE7\xB1\x83", + "\xC4\x79" => "\xE7\xB1\x8D", + "\xC4\x7A" => "\xE7\xB3\xAF", + "\xC4\x7B" => "\xE7\xB3\xB0", + "\xC4\x7C" => "\xE8\xBE\xAE", + "\xC4\x7D" => "\xE7\xB9\xBD", + "\xC4\x7E" => "\xE7\xB9\xBC", + "\xC4\xA1" => "\xE7\xBA\x82", + "\xC4\xA2" => "\xE7\xBD\x8C", + "\xC4\xA3" => "\xE8\x80\x80", + "\xC4\xA4" => "\xE8\x87\x9A", + "\xC4\xA5" => "\xE8\x89\xA6", + "\xC4\xA6" => "\xE8\x97\xBB", + "\xC4\xA7" => "\xE8\x97\xB9", + "\xC4\xA8" => "\xE8\x98\x91", + "\xC4\xA9" => "\xE8\x97\xBA", + "\xC4\xAA" => "\xE8\x98\x86", + "\xC4\xAB" => "\xE8\x98\x8B", + "\xC4\xAC" => "\xE8\x98\x87", + "\xC4\xAD" => "\xE8\x98\x8A", + "\xC4\xAE" => "\xE8\xA0\x94", + "\xC4\xAF" => "\xE8\xA0\x95", + "\xC4\xB0" => "\xE8\xA5\xA4", + "\xC4\xB1" => "\xE8\xA6\xBA", + "\xC4\xB2" => "\xE8\xA7\xB8", + "\xC4\xB3" => "\xE8\xAD\xB0", + "\xC4\xB4" => "\xE8\xAD\xAC", + "\xC4\xB5" => "\xE8\xAD\xA6", + "\xC4\xB6" => "\xE8\xAD\xAF", + "\xC4\xB7" => "\xE8\xAD\x9F", + "\xC4\xB8" => "\xE8\xAD\xAB", + "\xC4\xB9" => "\xE8\xB4\x8F", + "\xC4\xBA" => "\xE8\xB4\x8D", + "\xC4\xBB" => "\xE8\xBA\x89", + "\xC4\xBC" => "\xE8\xBA\x81", + "\xC4\xBD" => "\xE8\xBA\x85", + "\xC4\xBE" => "\xE8\xBA\x82", + "\xC4\xBF" => "\xE9\x86\xB4", + "\xC4\xC0" => "\xE9\x87\x8B", + "\xC4\xC1" => "\xE9\x90\x98", + "\xC4\xC2" => "\xE9\x90\x83", + "\xC4\xC3" => "\xE9\x8F\xBD", + "\xC4\xC4" => "\xE9\x97\xA1", + "\xC4\xC5" => "\xE9\x9C\xB0", + "\xC4\xC6" => "\xE9\xA3\x84", + "\xC4\xC7" => "\xE9\xA5\x92", + "\xC4\xC8" => "\xE9\xA5\x91", + "\xC4\xC9" => "\xE9\xA6\xA8", + "\xC4\xCA" => "\xE9\xA8\xAB", + "\xC4\xCB" => "\xE9\xA8\xB0", + "\xC4\xCC" => "\xE9\xA8\xB7", + "\xC4\xCD" => "\xE9\xA8\xB5", + "\xC4\xCE" => "\xE9\xB0\x93", + "\xC4\xCF" => "\xE9\xB0\x8D", + "\xC4\xD0" => "\xE9\xB9\xB9", + "\xC4\xD1" => "\xE9\xBA\xB5", + "\xC4\xD2" => "\xE9\xBB\xA8", + "\xC4\xD3" => "\xE9\xBC\xAF", + "\xC4\xD4" => "\xE9\xBD\x9F", + "\xC4\xD5" => "\xE9\xBD\xA3", + "\xC4\xD6" => "\xE9\xBD\xA1", + "\xC4\xD7" => "\xE5\x84\xB7", + "\xC4\xD8" => "\xE5\x84\xB8", + "\xC4\xD9" => "\xE5\x9B\x81", + "\xC4\xDA" => "\xE5\x9B\x80", + "\xC4\xDB" => "\xE5\x9B\x82", + "\xC4\xDC" => "\xE5\xA4\x94", + "\xC4\xDD" => "\xE5\xB1\xAC", + "\xC4\xDE" => "\xE5\xB7\x8D", + "\xC4\xDF" => "\xE6\x87\xBC", + "\xC4\xE0" => "\xE6\x87\xBE", + "\xC4\xE1" => "\xE6\x94\x9D", + "\xC4\xE2" => "\xE6\x94\x9C", + "\xC4\xE3" => "\xE6\x96\x95", + "\xC4\xE4" => "\xE6\x9B\xA9", + "\xC4\xE5" => "\xE6\xAB\xBB", + "\xC4\xE6" => "\xE6\xAC\x84", + "\xC4\xE7" => "\xE6\xAB\xBA", + "\xC4\xE8" => "\xE6\xAE\xB2", + "\xC4\xE9" => "\xE7\x81\x8C", + "\xC4\xEA" => "\xE7\x88\x9B", + "\xC4\xEB" => "\xE7\x8A\xA7", + "\xC4\xEC" => "\xE7\x93\x96", + "\xC4\xED" => "\xE7\x93\x94", + "\xC4\xEE" => "\xE7\x99\xA9", + "\xC4\xEF" => "\xE7\x9F\x93", + "\xC4\xF0" => "\xE7\xB1\x90", + "\xC4\xF1" => "\xE7\xBA\x8F", + "\xC4\xF2" => "\xE7\xBA\x8C", + "\xC4\xF3" => "\xE7\xBE\xBC", + "\xC4\xF4" => "\xE8\x98\x97", + "\xC4\xF5" => "\xE8\x98\xAD", + "\xC4\xF6" => "\xE8\x98\x9A", + "\xC4\xF7" => "\xE8\xA0\xA3", + "\xC4\xF8" => "\xE8\xA0\xA2", + "\xC4\xF9" => "\xE8\xA0\xA1", + "\xC4\xFA" => "\xE8\xA0\x9F", + "\xC4\xFB" => "\xE8\xA5\xAA", + "\xC4\xFC" => "\xE8\xA5\xAC", + "\xC4\xFD" => "\xE8\xA6\xBD", + "\xC4\xFE" => "\xE8\xAD\xB4", + "\xC5\x40" => "\xE8\xAD\xB7", + "\xC5\x41" => "\xE8\xAD\xBD", + "\xC5\x42" => "\xE8\xB4\x93", + "\xC5\x43" => "\xE8\xBA\x8A", + "\xC5\x44" => "\xE8\xBA\x8D", + "\xC5\x45" => "\xE8\xBA\x8B", + "\xC5\x46" => "\xE8\xBD\x9F", + "\xC5\x47" => "\xE8\xBE\xAF", + "\xC5\x48" => "\xE9\x86\xBA", + "\xC5\x49" => "\xE9\x90\xAE", + "\xC5\x4A" => "\xE9\x90\xB3", + "\xC5\x4B" => "\xE9\x90\xB5", + "\xC5\x4C" => "\xE9\x90\xBA", + "\xC5\x4D" => "\xE9\x90\xB8", + "\xC5\x4E" => "\xE9\x90\xB2", + "\xC5\x4F" => "\xE9\x90\xAB", + "\xC5\x50" => "\xE9\x97\xA2", + "\xC5\x51" => "\xE9\x9C\xB8", + "\xC5\x52" => "\xE9\x9C\xB9", + "\xC5\x53" => "\xE9\x9C\xB2", + "\xC5\x54" => "\xE9\x9F\xBF", + "\xC5\x55" => "\xE9\xA1\xA7", + "\xC5\x56" => "\xE9\xA1\xA5", + "\xC5\x57" => "\xE9\xA5\x97", + "\xC5\x58" => "\xE9\xA9\x85", + "\xC5\x59" => "\xE9\xA9\x83", + "\xC5\x5A" => "\xE9\xA9\x80", + "\xC5\x5B" => "\xE9\xA8\xBE", + "\xC5\x5C" => "\xE9\xAB\x8F", + "\xC5\x5D" => "\xE9\xAD\x94", + "\xC5\x5E" => "\xE9\xAD\x91", + "\xC5\x5F" => "\xE9\xB0\xAD", + "\xC5\x60" => "\xE9\xB0\xA5", + "\xC5\x61" => "\xE9\xB6\xAF", + "\xC5\x62" => "\xE9\xB6\xB4", + "\xC5\x63" => "\xE9\xB7\x82", + "\xC5\x64" => "\xE9\xB6\xB8", + "\xC5\x65" => "\xE9\xBA\x9D", + "\xC5\x66" => "\xE9\xBB\xAF", + "\xC5\x67" => "\xE9\xBC\x99", + "\xC5\x68" => "\xE9\xBD\x9C", + "\xC5\x69" => "\xE9\xBD\xA6", + "\xC5\x6A" => "\xE9\xBD\xA7", + "\xC5\x6B" => "\xE5\x84\xBC", + "\xC5\x6C" => "\xE5\x84\xBB", + "\xC5\x6D" => "\xE5\x9B\x88", + "\xC5\x6E" => "\xE5\x9B\x8A", + "\xC5\x6F" => "\xE5\x9B\x89", + "\xC5\x70" => "\xE5\xAD\xBF", + "\xC5\x71" => "\xE5\xB7\x94", + "\xC5\x72" => "\xE5\xB7\x92", + "\xC5\x73" => "\xE5\xBD\x8E", + "\xC5\x74" => "\xE6\x87\xBF", + "\xC5\x75" => "\xE6\x94\xA4", + "\xC5\x76" => "\xE6\xAC\x8A", + "\xC5\x77" => "\xE6\xAD\xA1", + "\xC5\x78" => "\xE7\x81\x91", + "\xC5\x79" => "\xE7\x81\x98", + "\xC5\x7A" => "\xE7\x8E\x80", + "\xC5\x7B" => "\xE7\x93\xA4", + "\xC5\x7C" => "\xE7\x96\x8A", + "\xC5\x7D" => "\xE7\x99\xAE", + "\xC5\x7E" => "\xE7\x99\xAC", + "\xC5\xA1" => "\xE7\xA6\xB3", + "\xC5\xA2" => "\xE7\xB1\xA0", + "\xC5\xA3" => "\xE7\xB1\x9F", + "\xC5\xA4" => "\xE8\x81\xBE", + "\xC5\xA5" => "\xE8\x81\xBD", + "\xC5\xA6" => "\xE8\x87\x9F", + "\xC5\xA7" => "\xE8\xA5\xB2", + "\xC5\xA8" => "\xE8\xA5\xAF", + "\xC5\xA9" => "\xE8\xA7\xBC", + "\xC5\xAA" => "\xE8\xAE\x80", + "\xC5\xAB" => "\xE8\xB4\x96", + "\xC5\xAC" => "\xE8\xB4\x97", + "\xC5\xAD" => "\xE8\xBA\x91", + "\xC5\xAE" => "\xE8\xBA\x93", + "\xC5\xAF" => "\xE8\xBD\xA1", + "\xC5\xB0" => "\xE9\x85\x88", + "\xC5\xB1" => "\xE9\x91\x84", + "\xC5\xB2" => "\xE9\x91\x91", + "\xC5\xB3" => "\xE9\x91\x92", + "\xC5\xB4" => "\xE9\x9C\xBD", + "\xC5\xB5" => "\xE9\x9C\xBE", + "\xC5\xB6" => "\xE9\x9F\x83", + "\xC5\xB7" => "\xE9\x9F\x81", + "\xC5\xB8" => "\xE9\xA1\xAB", + "\xC5\xB9" => "\xE9\xA5\x95", + "\xC5\xBA" => "\xE9\xA9\x95", + "\xC5\xBB" => "\xE9\xA9\x8D", + "\xC5\xBC" => "\xE9\xAB\x92", + "\xC5\xBD" => "\xE9\xAC\x9A", + "\xC5\xBE" => "\xE9\xB1\x89", + "\xC5\xBF" => "\xE9\xB0\xB1", + "\xC5\xC0" => "\xE9\xB0\xBE", + "\xC5\xC1" => "\xE9\xB0\xBB", + "\xC5\xC2" => "\xE9\xB7\x93", + "\xC5\xC3" => "\xE9\xB7\x97", + "\xC5\xC4" => "\xE9\xBC\xB4", + "\xC5\xC5" => "\xE9\xBD\xAC", + "\xC5\xC6" => "\xE9\xBD\xAA", + "\xC5\xC7" => "\xE9\xBE\x94", + "\xC5\xC8" => "\xE5\x9B\x8C", + "\xC5\xC9" => "\xE5\xB7\x96", + "\xC5\xCA" => "\xE6\x88\x80", + "\xC5\xCB" => "\xE6\x94\xA3", + "\xC5\xCC" => "\xE6\x94\xAB", + "\xC5\xCD" => "\xE6\x94\xAA", + "\xC5\xCE" => "\xE6\x9B\xAC", + "\xC5\xCF" => "\xE6\xAC\x90", + "\xC5\xD0" => "\xE7\x93\x9A", + "\xC5\xD1" => "\xE7\xAB\x8A", + "\xC5\xD2" => "\xE7\xB1\xA4", + "\xC5\xD3" => "\xE7\xB1\xA3", + "\xC5\xD4" => "\xE7\xB1\xA5", + "\xC5\xD5" => "\xE7\xBA\x93", + "\xC5\xD6" => "\xE7\xBA\x96", + "\xC5\xD7" => "\xE7\xBA\x94", + "\xC5\xD8" => "\xE8\x87\xA2", + "\xC5\xD9" => "\xE8\x98\xB8", + "\xC5\xDA" => "\xE8\x98\xBF", + "\xC5\xDB" => "\xE8\xA0\xB1", + "\xC5\xDC" => "\xE8\xAE\x8A", + "\xC5\xDD" => "\xE9\x82\x90", + "\xC5\xDE" => "\xE9\x82\x8F", + "\xC5\xDF" => "\xE9\x91\xA3", + "\xC5\xE0" => "\xE9\x91\xA0", + "\xC5\xE1" => "\xE9\x91\xA4", + "\xC5\xE2" => "\xE9\x9D\xA8", + "\xC5\xE3" => "\xE9\xA1\xAF", + "\xC5\xE4" => "\xE9\xA5\x9C", + "\xC5\xE5" => "\xE9\xA9\x9A", + "\xC5\xE6" => "\xE9\xA9\x9B", + "\xC5\xE7" => "\xE9\xA9\x97", + "\xC5\xE8" => "\xE9\xAB\x93", + "\xC5\xE9" => "\xE9\xAB\x94", + "\xC5\xEA" => "\xE9\xAB\x91", + "\xC5\xEB" => "\xE9\xB1\x94", + "\xC5\xEC" => "\xE9\xB1\x97", + "\xC5\xED" => "\xE9\xB1\x96", + "\xC5\xEE" => "\xE9\xB7\xA5", + "\xC5\xEF" => "\xE9\xBA\x9F", + "\xC5\xF0" => "\xE9\xBB\xB4", + "\xC5\xF1" => "\xE5\x9B\x91", + "\xC5\xF2" => "\xE5\xA3\xA9", + "\xC5\xF3" => "\xE6\x94\xAC", + "\xC5\xF4" => "\xE7\x81\x9E", + "\xC5\xF5" => "\xE7\x99\xB1", + "\xC5\xF6" => "\xE7\x99\xB2", + "\xC5\xF7" => "\xE7\x9F\x97", + "\xC5\xF8" => "\xE7\xBD\x90", + "\xC5\xF9" => "\xE7\xBE\x88", + "\xC5\xFA" => "\xE8\xA0\xB6", + "\xC5\xFB" => "\xE8\xA0\xB9", + "\xC5\xFC" => "\xE8\xA1\xA2", + "\xC5\xFD" => "\xE8\xAE\x93", + "\xC5\xFE" => "\xE8\xAE\x92", + "\xC6\x40" => "\xE8\xAE\x96", + "\xC6\x41" => "\xE8\x89\xB7", + "\xC6\x42" => "\xE8\xB4\x9B", + "\xC6\x43" => "\xE9\x87\x80", + "\xC6\x44" => "\xE9\x91\xAA", + "\xC6\x45" => "\xE9\x9D\x82", + "\xC6\x46" => "\xE9\x9D\x88", + "\xC6\x47" => "\xE9\x9D\x84", + "\xC6\x48" => "\xE9\x9F\x86", + "\xC6\x49" => "\xE9\xA1\xB0", + "\xC6\x4A" => "\xE9\xA9\x9F", + "\xC6\x4B" => "\xE9\xAC\xA2", + "\xC6\x4C" => "\xE9\xAD\x98", + "\xC6\x4D" => "\xE9\xB1\x9F", + "\xC6\x4E" => "\xE9\xB7\xB9", + "\xC6\x4F" => "\xE9\xB7\xBA", + "\xC6\x50" => "\xE9\xB9\xBC", + "\xC6\x51" => "\xE9\xB9\xBD", + "\xC6\x52" => "\xE9\xBC\x87", + "\xC6\x53" => "\xE9\xBD\xB7", + "\xC6\x54" => "\xE9\xBD\xB2", + "\xC6\x55" => "\xE5\xBB\xB3", + "\xC6\x56" => "\xE6\xAC\x96", + "\xC6\x57" => "\xE7\x81\xA3", + "\xC6\x58" => "\xE7\xB1\xAC", + "\xC6\x59" => "\xE7\xB1\xAE", + "\xC6\x5A" => "\xE8\xA0\xBB", + "\xC6\x5B" => "\xE8\xA7\x80", + "\xC6\x5C" => "\xE8\xBA\xA1", + "\xC6\x5D" => "\xE9\x87\x81", + "\xC6\x5E" => "\xE9\x91\xB2", + "\xC6\x5F" => "\xE9\x91\xB0", + "\xC6\x60" => "\xE9\xA1\xB1", + "\xC6\x61" => "\xE9\xA5\x9E", + "\xC6\x62" => "\xE9\xAB\x96", + "\xC6\x63" => "\xE9\xAC\xA3", + "\xC6\x64" => "\xE9\xBB\x8C", + "\xC6\x65" => "\xE7\x81\xA4", + "\xC6\x66" => "\xE7\x9F\x9A", + "\xC6\x67" => "\xE8\xAE\x9A", + "\xC6\x68" => "\xE9\x91\xB7", + "\xC6\x69" => "\xE9\x9F\x89", + "\xC6\x6A" => "\xE9\xA9\xA2", + "\xC6\x6B" => "\xE9\xA9\xA5", + "\xC6\x6C" => "\xE7\xBA\x9C", + "\xC6\x6D" => "\xE8\xAE\x9C", + "\xC6\x6E" => "\xE8\xBA\xAA", + "\xC6\x6F" => "\xE9\x87\x85", + "\xC6\x70" => "\xE9\x91\xBD", + "\xC6\x71" => "\xE9\x91\xBE", + "\xC6\x72" => "\xE9\x91\xBC", + "\xC6\x73" => "\xE9\xB1\xB7", + "\xC6\x74" => "\xE9\xB1\xB8", + "\xC6\x75" => "\xE9\xBB\xB7", + "\xC6\x76" => "\xE8\xB1\x94", + "\xC6\x77" => "\xE9\x91\xBF", + "\xC6\x78" => "\xE9\xB8\x9A", + "\xC6\x79" => "\xE7\x88\xA8", + "\xC6\x7A" => "\xE9\xA9\xAA", + "\xC6\x7B" => "\xE9\xAC\xB1", + "\xC6\x7C" => "\xE9\xB8\x9B", + "\xC6\x7D" => "\xE9\xB8\x9E", + "\xC6\x7E" => "\xE7\xB1\xB2", + "\xC6\xA1" => "\xE3\x83\xBE", + "\xC6\xA2" => "\xE3\x82\x9D", + "\xC6\xA3" => "\xE3\x82\x9E", + "\xC6\xA4" => "\xE3\x80\x85", + "\xC6\xA5" => "\xE3\x81\x81", + "\xC6\xA6" => "\xE3\x81\x82", + "\xC6\xA7" => "\xE3\x81\x83", + "\xC6\xA8" => "\xE3\x81\x84", + "\xC6\xA9" => "\xE3\x81\x85", + "\xC6\xAA" => "\xE3\x81\x86", + "\xC6\xAB" => "\xE3\x81\x87", + "\xC6\xAC" => "\xE3\x81\x88", + "\xC6\xAD" => "\xE3\x81\x89", + "\xC6\xAE" => "\xE3\x81\x8A", + "\xC6\xAF" => "\xE3\x81\x8B", + "\xC6\xB0" => "\xE3\x81\x8C", + "\xC6\xB1" => "\xE3\x81\x8D", + "\xC6\xB2" => "\xE3\x81\x8E", + "\xC6\xB3" => "\xE3\x81\x8F", + "\xC6\xB4" => "\xE3\x81\x90", + "\xC6\xB5" => "\xE3\x81\x91", + "\xC6\xB6" => "\xE3\x81\x92", + "\xC6\xB7" => "\xE3\x81\x93", + "\xC6\xB8" => "\xE3\x81\x94", + "\xC6\xB9" => "\xE3\x81\x95", + "\xC6\xBA" => "\xE3\x81\x96", + "\xC6\xBB" => "\xE3\x81\x97", + "\xC6\xBC" => "\xE3\x81\x98", + "\xC6\xBD" => "\xE3\x81\x99", + "\xC6\xBE" => "\xE3\x81\x9A", + "\xC6\xBF" => "\xE3\x81\x9B", + "\xC6\xC0" => "\xE3\x81\x9C", + "\xC6\xC1" => "\xE3\x81\x9D", + "\xC6\xC2" => "\xE3\x81\x9E", + "\xC6\xC3" => "\xE3\x81\x9F", + "\xC6\xC4" => "\xE3\x81\xA0", + "\xC6\xC5" => "\xE3\x81\xA1", + "\xC6\xC6" => "\xE3\x81\xA2", + "\xC6\xC7" => "\xE3\x81\xA3", + "\xC6\xC8" => "\xE3\x81\xA4", + "\xC6\xC9" => "\xE3\x81\xA5", + "\xC6\xCA" => "\xE3\x81\xA6", + "\xC6\xCB" => "\xE3\x81\xA7", + "\xC6\xCC" => "\xE3\x81\xA8", + "\xC6\xCD" => "\xE3\x81\xA9", + "\xC6\xCE" => "\xE3\x81\xAA", + "\xC6\xCF" => "\xE3\x81\xAB", + "\xC6\xD0" => "\xE3\x81\xAC", + "\xC6\xD1" => "\xE3\x81\xAD", + "\xC6\xD2" => "\xE3\x81\xAE", + "\xC6\xD3" => "\xE3\x81\xAF", + "\xC6\xD4" => "\xE3\x81\xB0", + "\xC6\xD5" => "\xE3\x81\xB1", + "\xC6\xD6" => "\xE3\x81\xB2", + "\xC6\xD7" => "\xE3\x81\xB3", + "\xC6\xD8" => "\xE3\x81\xB4", + "\xC6\xD9" => "\xE3\x81\xB5", + "\xC6\xDA" => "\xE3\x81\xB6", + "\xC6\xDB" => "\xE3\x81\xB7", + "\xC6\xDC" => "\xE3\x81\xB8", + "\xC6\xDD" => "\xE3\x81\xB9", + "\xC6\xDE" => "\xE3\x81\xBA", + "\xC6\xDF" => "\xE3\x81\xBB", + "\xC6\xE0" => "\xE3\x81\xBC", + "\xC6\xE1" => "\xE3\x81\xBD", + "\xC6\xE2" => "\xE3\x81\xBE", + "\xC6\xE3" => "\xE3\x81\xBF", + "\xC6\xE4" => "\xE3\x82\x80", + "\xC6\xE5" => "\xE3\x82\x81", + "\xC6\xE6" => "\xE3\x82\x82", + "\xC6\xE7" => "\xE3\x82\x83", + "\xC6\xE8" => "\xE3\x82\x84", + "\xC6\xE9" => "\xE3\x82\x85", + "\xC6\xEA" => "\xE3\x82\x86", + "\xC6\xEB" => "\xE3\x82\x87", + "\xC6\xEC" => "\xE3\x82\x88", + "\xC6\xED" => "\xE3\x82\x89", + "\xC6\xEE" => "\xE3\x82\x8A", + "\xC6\xEF" => "\xE3\x82\x8B", + "\xC6\xF0" => "\xE3\x82\x8C", + "\xC6\xF1" => "\xE3\x82\x8D", + "\xC6\xF2" => "\xE3\x82\x8E", + "\xC6\xF3" => "\xE3\x82\x8F", + "\xC6\xF4" => "\xE3\x82\x90", + "\xC6\xF5" => "\xE3\x82\x91", + "\xC6\xF6" => "\xE3\x82\x92", + "\xC6\xF7" => "\xE3\x82\x93", + "\xC6\xF8" => "\xE3\x82\xA1", + "\xC6\xF9" => "\xE3\x82\xA2", + "\xC6\xFA" => "\xE3\x82\xA3", + "\xC6\xFB" => "\xE3\x82\xA4", + "\xC6\xFC" => "\xE3\x82\xA5", + "\xC6\xFD" => "\xE3\x82\xA6", + "\xC6\xFE" => "\xE3\x82\xA7", + "\xC7\x40" => "\xE3\x82\xA8", + "\xC7\x41" => "\xE3\x82\xA9", + "\xC7\x42" => "\xE3\x82\xAA", + "\xC7\x43" => "\xE3\x82\xAB", + "\xC7\x44" => "\xE3\x82\xAC", + "\xC7\x45" => "\xE3\x82\xAD", + "\xC7\x46" => "\xE3\x82\xAE", + "\xC7\x47" => "\xE3\x82\xAF", + "\xC7\x48" => "\xE3\x82\xB0", + "\xC7\x49" => "\xE3\x82\xB1", + "\xC7\x4A" => "\xE3\x82\xB2", + "\xC7\x4B" => "\xE3\x82\xB3", + "\xC7\x4C" => "\xE3\x82\xB4", + "\xC7\x4D" => "\xE3\x82\xB5", + "\xC7\x4E" => "\xE3\x82\xB6", + "\xC7\x4F" => "\xE3\x82\xB7", + "\xC7\x50" => "\xE3\x82\xB8", + "\xC7\x51" => "\xE3\x82\xB9", + "\xC7\x52" => "\xE3\x82\xBA", + "\xC7\x53" => "\xE3\x82\xBB", + "\xC7\x54" => "\xE3\x82\xBC", + "\xC7\x55" => "\xE3\x82\xBD", + "\xC7\x56" => "\xE3\x82\xBE", + "\xC7\x57" => "\xE3\x82\xBF", + "\xC7\x58" => "\xE3\x83\x80", + "\xC7\x59" => "\xE3\x83\x81", + "\xC7\x5A" => "\xE3\x83\x82", + "\xC7\x5B" => "\xE3\x83\x83", + "\xC7\x5C" => "\xE3\x83\x84", + "\xC7\x5D" => "\xE3\x83\x85", + "\xC7\x5E" => "\xE3\x83\x86", + "\xC7\x5F" => "\xE3\x83\x87", + "\xC7\x60" => "\xE3\x83\x88", + "\xC7\x61" => "\xE3\x83\x89", + "\xC7\x62" => "\xE3\x83\x8A", + "\xC7\x63" => "\xE3\x83\x8B", + "\xC7\x64" => "\xE3\x83\x8C", + "\xC7\x65" => "\xE3\x83\x8D", + "\xC7\x66" => "\xE3\x83\x8E", + "\xC7\x67" => "\xE3\x83\x8F", + "\xC7\x68" => "\xE3\x83\x90", + "\xC7\x69" => "\xE3\x83\x91", + "\xC7\x6A" => "\xE3\x83\x92", + "\xC7\x6B" => "\xE3\x83\x93", + "\xC7\x6C" => "\xE3\x83\x94", + "\xC7\x6D" => "\xE3\x83\x95", + "\xC7\x6E" => "\xE3\x83\x96", + "\xC7\x6F" => "\xE3\x83\x97", + "\xC7\x70" => "\xE3\x83\x98", + "\xC7\x71" => "\xE3\x83\x99", + "\xC7\x72" => "\xE3\x83\x9A", + "\xC7\x73" => "\xE3\x83\x9B", + "\xC7\x74" => "\xE3\x83\x9C", + "\xC7\x75" => "\xE3\x83\x9D", + "\xC7\x76" => "\xE3\x83\x9E", + "\xC7\x77" => "\xE3\x83\x9F", + "\xC7\x78" => "\xE3\x83\xA0", + "\xC7\x79" => "\xE3\x83\xA1", + "\xC7\x7A" => "\xE3\x83\xA2", + "\xC7\x7B" => "\xE3\x83\xA3", + "\xC7\x7C" => "\xE3\x83\xA4", + "\xC7\x7D" => "\xE3\x83\xA5", + "\xC7\x7E" => "\xE3\x83\xA6", + "\xC7\xA1" => "\xE3\x83\xA7", + "\xC7\xA2" => "\xE3\x83\xA8", + "\xC7\xA3" => "\xE3\x83\xA9", + "\xC7\xA4" => "\xE3\x83\xAA", + "\xC7\xA5" => "\xE3\x83\xAB", + "\xC7\xA6" => "\xE3\x83\xAC", + "\xC7\xA7" => "\xE3\x83\xAD", + "\xC7\xA8" => "\xE3\x83\xAE", + "\xC7\xA9" => "\xE3\x83\xAF", + "\xC7\xAA" => "\xE3\x83\xB0", + "\xC7\xAB" => "\xE3\x83\xB1", + "\xC7\xAC" => "\xE3\x83\xB2", + "\xC7\xAD" => "\xE3\x83\xB3", + "\xC7\xAE" => "\xE3\x83\xB4", + "\xC7\xAF" => "\xE3\x83\xB5", + "\xC7\xB0" => "\xE3\x83\xB6", + "\xC7\xB1" => "\xD0\x94", + "\xC7\xB2" => "\xD0\x95", + "\xC7\xB3" => "\xD0\x81", + "\xC7\xB4" => "\xD0\x96", + "\xC7\xB5" => "\xD0\x97", + "\xC7\xB6" => "\xD0\x98", + "\xC7\xB7" => "\xD0\x99", + "\xC7\xB8" => "\xD0\x9A", + "\xC7\xB9" => "\xD0\x9B", + "\xC7\xBA" => "\xD0\x9C", + "\xC7\xBB" => "\xD0\xA3", + "\xC7\xBC" => "\xD0\xA4", + "\xC7\xBD" => "\xD0\xA5", + "\xC7\xBE" => "\xD0\xA6", + "\xC7\xBF" => "\xD0\xA7", + "\xC7\xC0" => "\xD0\xA8", + "\xC7\xC1" => "\xD0\xA9", + "\xC7\xC2" => "\xD0\xAA", + "\xC7\xC3" => "\xD0\xAB", + "\xC7\xC4" => "\xD0\xAC", + "\xC7\xC5" => "\xD0\xAD", + "\xC7\xC6" => "\xD0\xAE", + "\xC7\xC7" => "\xD0\xAF", + "\xC7\xC8" => "\xD0\xB0", + "\xC7\xC9" => "\xD0\xB1", + "\xC7\xCA" => "\xD0\xB2", + "\xC7\xCB" => "\xD0\xB3", + "\xC7\xCC" => "\xD0\xB4", + "\xC7\xCD" => "\xD0\xB5", + "\xC7\xCE" => "\xD1\x91", + "\xC7\xCF" => "\xD0\xB6", + "\xC7\xD0" => "\xD0\xB7", + "\xC7\xD1" => "\xD0\xB8", + "\xC7\xD2" => "\xD0\xB9", + "\xC7\xD3" => "\xD0\xBA", + "\xC7\xD4" => "\xD0\xBB", + "\xC7\xD5" => "\xD0\xBC", + "\xC7\xD6" => "\xD0\xBD", + "\xC7\xD7" => "\xD0\xBE", + "\xC7\xD8" => "\xD0\xBF", + "\xC7\xD9" => "\xD1\x80", + "\xC7\xDA" => "\xD1\x81", + "\xC7\xDB" => "\xD1\x82", + "\xC7\xDC" => "\xD1\x83", + "\xC7\xDD" => "\xD1\x84", + "\xC7\xDE" => "\xD1\x85", + "\xC7\xDF" => "\xD1\x86", + "\xC7\xE0" => "\xD1\x87", + "\xC7\xE1" => "\xD1\x88", + "\xC7\xE2" => "\xD1\x89", + "\xC7\xE3" => "\xD1\x8A", + "\xC7\xE4" => "\xD1\x8B", + "\xC7\xE5" => "\xD1\x8C", + "\xC7\xE6" => "\xD1\x8D", + "\xC7\xE7" => "\xD1\x8E", + "\xC7\xE8" => "\xD1\x8F", + "\xC7\xE9" => "\xE2\x91\xA0", + "\xC7\xEA" => "\xE2\x91\xA1", + "\xC7\xEB" => "\xE2\x91\xA2", + "\xC7\xEC" => "\xE2\x91\xA3", + "\xC7\xED" => "\xE2\x91\xA4", + "\xC7\xEE" => "\xE2\x91\xA5", + "\xC7\xEF" => "\xE2\x91\xA6", + "\xC7\xF0" => "\xE2\x91\xA7", + "\xC7\xF1" => "\xE2\x91\xA8", + "\xC7\xF2" => "\xE2\x91\xA9", + "\xC7\xF3" => "\xE2\x91\xB4", + "\xC7\xF4" => "\xE2\x91\xB5", + "\xC7\xF5" => "\xE2\x91\xB6", + "\xC7\xF6" => "\xE2\x91\xB7", + "\xC7\xF7" => "\xE2\x91\xB8", + "\xC7\xF8" => "\xE2\x91\xB9", + "\xC7\xF9" => "\xE2\x91\xBA", + "\xC7\xFA" => "\xE2\x91\xBB", + "\xC7\xFB" => "\xE2\x91\xBC", + "\xC7\xFC" => "\xE2\x91\xBD", + "\xC9\x40" => "\xE4\xB9\x82", + "\xC9\x41" => "\xE4\xB9\x9C", + "\xC9\x42" => "\xE5\x87\xB5", + "\xC9\x43" => "\xE5\x8C\x9A", + "\xC9\x44" => "\xE5\x8E\x82", + "\xC9\x45" => "\xE4\xB8\x87", + "\xC9\x46" => "\xE4\xB8\x8C", + "\xC9\x47" => "\xE4\xB9\x87", + "\xC9\x48" => "\xE4\xBA\x8D", + "\xC9\x49" => "\xE5\x9B\x97", + "\xC9\x4A" => "\xEF\xA8\x8C", + "\xC9\x4B" => "\xE5\xB1\xAE", + "\xC9\x4C" => "\xE5\xBD\xB3", + "\xC9\x4D" => "\xE4\xB8\x8F", + "\xC9\x4E" => "\xE5\x86\x87", + "\xC9\x4F" => "\xE4\xB8\x8E", + "\xC9\x50" => "\xE4\xB8\xAE", + "\xC9\x51" => "\xE4\xBA\x93", + "\xC9\x52" => "\xE4\xBB\x82", + "\xC9\x53" => "\xE4\xBB\x89", + "\xC9\x54" => "\xE4\xBB\x88", + "\xC9\x55" => "\xE5\x86\x98", + "\xC9\x56" => "\xE5\x8B\xBC", + "\xC9\x57" => "\xE5\x8D\xAC", + "\xC9\x58" => "\xE5\x8E\xB9", + "\xC9\x59" => "\xE5\x9C\xA0", + "\xC9\x5A" => "\xE5\xA4\x83", + "\xC9\x5B" => "\xE5\xA4\xAC", + "\xC9\x5C" => "\xE5\xB0\x90", + "\xC9\x5D" => "\xE5\xB7\xBF", + "\xC9\x5E" => "\xE6\x97\xA1", + "\xC9\x5F" => "\xE6\xAE\xB3", + "\xC9\x60" => "\xE6\xAF\x8C", + "\xC9\x61" => "\xE6\xB0\x94", + "\xC9\x62" => "\xE7\x88\xBF", + "\xC9\x63" => "\xE4\xB8\xB1", + "\xC9\x64" => "\xE4\xB8\xBC", + "\xC9\x65" => "\xE4\xBB\xA8", + "\xC9\x66" => "\xE4\xBB\x9C", + "\xC9\x67" => "\xE4\xBB\xA9", + "\xC9\x68" => "\xE4\xBB\xA1", + "\xC9\x69" => "\xE4\xBB\x9D", + "\xC9\x6A" => "\xE4\xBB\x9A", + "\xC9\x6B" => "\xE5\x88\x8C", + "\xC9\x6C" => "\xE5\x8C\x9C", + "\xC9\x6D" => "\xE5\x8D\x8C", + "\xC9\x6E" => "\xE5\x9C\xA2", + "\xC9\x6F" => "\xE5\x9C\xA3", + "\xC9\x70" => "\xE5\xA4\x97", + "\xC9\x71" => "\xE5\xA4\xAF", + "\xC9\x72" => "\xE5\xAE\x81", + "\xC9\x73" => "\xE5\xAE\x84", + "\xC9\x74" => "\xE5\xB0\x92", + "\xC9\x75" => "\xE5\xB0\xBB", + "\xC9\x76" => "\xE5\xB1\xB4", + "\xC9\x77" => "\xE5\xB1\xB3", + "\xC9\x78" => "\xE5\xB8\x84", + "\xC9\x79" => "\xE5\xBA\x80", + "\xC9\x7A" => "\xE5\xBA\x82", + "\xC9\x7B" => "\xE5\xBF\x89", + "\xC9\x7C" => "\xE6\x88\x89", + "\xC9\x7D" => "\xE6\x89\x90", + "\xC9\x7E" => "\xE6\xB0\x95", + "\xC9\xA1" => "\xE6\xB0\xB6", + "\xC9\xA2" => "\xE6\xB1\x83", + "\xC9\xA3" => "\xE6\xB0\xBF", + "\xC9\xA4" => "\xE6\xB0\xBB", + "\xC9\xA5" => "\xE7\x8A\xAE", + "\xC9\xA6" => "\xE7\x8A\xB0", + "\xC9\xA7" => "\xE7\x8E\x8A", + "\xC9\xA8" => "\xE7\xA6\xB8", + "\xC9\xA9" => "\xE8\x82\x8A", + "\xC9\xAA" => "\xE9\x98\x9E", + "\xC9\xAB" => "\xE4\xBC\x8E", + "\xC9\xAC" => "\xE4\xBC\x98", + "\xC9\xAD" => "\xE4\xBC\xAC", + "\xC9\xAE" => "\xE4\xBB\xB5", + "\xC9\xAF" => "\xE4\xBC\x94", + "\xC9\xB0" => "\xE4\xBB\xB1", + "\xC9\xB1" => "\xE4\xBC\x80", + "\xC9\xB2" => "\xE4\xBB\xB7", + "\xC9\xB3" => "\xE4\xBC\x88", + "\xC9\xB4" => "\xE4\xBC\x9D", + "\xC9\xB5" => "\xE4\xBC\x82", + "\xC9\xB6" => "\xE4\xBC\x85", + "\xC9\xB7" => "\xE4\xBC\xA2", + "\xC9\xB8" => "\xE4\xBC\x93", + "\xC9\xB9" => "\xE4\xBC\x84", + "\xC9\xBA" => "\xE4\xBB\xB4", + "\xC9\xBB" => "\xE4\xBC\x92", + "\xC9\xBC" => "\xE5\x86\xB1", + "\xC9\xBD" => "\xE5\x88\x93", + "\xC9\xBE" => "\xE5\x88\x89", + "\xC9\xBF" => "\xE5\x88\x90", + "\xC9\xC0" => "\xE5\x8A\xA6", + "\xC9\xC1" => "\xE5\x8C\xA2", + "\xC9\xC2" => "\xE5\x8C\x9F", + "\xC9\xC3" => "\xE5\x8D\x8D", + "\xC9\xC4" => "\xE5\x8E\x8A", + "\xC9\xC5" => "\xE5\x90\x87", + "\xC9\xC6" => "\xE5\x9B\xA1", + "\xC9\xC7" => "\xE5\x9B\x9F", + "\xC9\xC8" => "\xE5\x9C\xAE", + "\xC9\xC9" => "\xE5\x9C\xAA", + "\xC9\xCA" => "\xE5\x9C\xB4", + "\xC9\xCB" => "\xE5\xA4\xBC", + "\xC9\xCC" => "\xE5\xA6\x80", + "\xC9\xCD" => "\xE5\xA5\xBC", + "\xC9\xCE" => "\xE5\xA6\x85", + "\xC9\xCF" => "\xE5\xA5\xBB", + "\xC9\xD0" => "\xE5\xA5\xBE", + "\xC9\xD1" => "\xE5\xA5\xB7", + "\xC9\xD2" => "\xE5\xA5\xBF", + "\xC9\xD3" => "\xE5\xAD\x96", + "\xC9\xD4" => "\xE5\xB0\x95", + "\xC9\xD5" => "\xE5\xB0\xA5", + "\xC9\xD6" => "\xE5\xB1\xBC", + "\xC9\xD7" => "\xE5\xB1\xBA", + "\xC9\xD8" => "\xE5\xB1\xBB", + "\xC9\xD9" => "\xE5\xB1\xBE", + "\xC9\xDA" => "\xE5\xB7\x9F", + "\xC9\xDB" => "\xE5\xB9\xB5", + "\xC9\xDC" => "\xE5\xBA\x84", + "\xC9\xDD" => "\xE5\xBC\x82", + "\xC9\xDE" => "\xE5\xBC\x9A", + "\xC9\xDF" => "\xE5\xBD\xB4", + "\xC9\xE0" => "\xE5\xBF\x95", + "\xC9\xE1" => "\xE5\xBF\x94", + "\xC9\xE2" => "\xE5\xBF\x8F", + "\xC9\xE3" => "\xE6\x89\x9C", + "\xC9\xE4" => "\xE6\x89\x9E", + "\xC9\xE5" => "\xE6\x89\xA4", + "\xC9\xE6" => "\xE6\x89\xA1", + "\xC9\xE7" => "\xE6\x89\xA6", + "\xC9\xE8" => "\xE6\x89\xA2", + "\xC9\xE9" => "\xE6\x89\x99", + "\xC9\xEA" => "\xE6\x89\xA0", + "\xC9\xEB" => "\xE6\x89\x9A", + "\xC9\xEC" => "\xE6\x89\xA5", + "\xC9\xED" => "\xE6\x97\xAF", + "\xC9\xEE" => "\xE6\x97\xAE", + "\xC9\xEF" => "\xE6\x9C\xBE", + "\xC9\xF0" => "\xE6\x9C\xB9", + "\xC9\xF1" => "\xE6\x9C\xB8", + "\xC9\xF2" => "\xE6\x9C\xBB", + "\xC9\xF3" => "\xE6\x9C\xBA", + "\xC9\xF4" => "\xE6\x9C\xBF", + "\xC9\xF5" => "\xE6\x9C\xBC", + "\xC9\xF6" => "\xE6\x9C\xB3", + "\xC9\xF7" => "\xE6\xB0\x98", + "\xC9\xF8" => "\xE6\xB1\x86", + "\xC9\xF9" => "\xE6\xB1\x92", + "\xC9\xFA" => "\xE6\xB1\x9C", + "\xC9\xFB" => "\xE6\xB1\x8F", + "\xC9\xFC" => "\xE6\xB1\x8A", + "\xC9\xFD" => "\xE6\xB1\x94", + "\xC9\xFE" => "\xE6\xB1\x8B", + "\xCA\x40" => "\xE6\xB1\x8C", + "\xCA\x41" => "\xE7\x81\xB1", + "\xCA\x42" => "\xE7\x89\x9E", + "\xCA\x43" => "\xE7\x8A\xB4", + "\xCA\x44" => "\xE7\x8A\xB5", + "\xCA\x45" => "\xE7\x8E\x8E", + "\xCA\x46" => "\xE7\x94\xAA", + "\xCA\x47" => "\xE7\x99\xBF", + "\xCA\x48" => "\xE7\xA9\xB5", + "\xCA\x49" => "\xE7\xBD\x91", + "\xCA\x4A" => "\xE8\x89\xB8", + "\xCA\x4B" => "\xE8\x89\xBC", + "\xCA\x4C" => "\xE8\x8A\x80", + "\xCA\x4D" => "\xE8\x89\xBD", + "\xCA\x4E" => "\xE8\x89\xBF", + "\xCA\x4F" => "\xE8\x99\x8D", + "\xCA\x50" => "\xE8\xA5\xBE", + "\xCA\x51" => "\xE9\x82\x99", + "\xCA\x52" => "\xE9\x82\x97", + "\xCA\x53" => "\xE9\x82\x98", + "\xCA\x54" => "\xE9\x82\x9B", + "\xCA\x55" => "\xE9\x82\x94", + "\xCA\x56" => "\xE9\x98\xA2", + "\xCA\x57" => "\xE9\x98\xA4", + "\xCA\x58" => "\xE9\x98\xA0", + "\xCA\x59" => "\xE9\x98\xA3", + "\xCA\x5A" => "\xE4\xBD\x96", + "\xCA\x5B" => "\xE4\xBC\xBB", + "\xCA\x5C" => "\xE4\xBD\xA2", + "\xCA\x5D" => "\xE4\xBD\x89", + "\xCA\x5E" => "\xE4\xBD\x93", + "\xCA\x5F" => "\xE4\xBD\xA4", + "\xCA\x60" => "\xE4\xBC\xBE", + "\xCA\x61" => "\xE4\xBD\xA7", + "\xCA\x62" => "\xE4\xBD\x92", + "\xCA\x63" => "\xE4\xBD\x9F", + "\xCA\x64" => "\xE4\xBD\x81", + "\xCA\x65" => "\xE4\xBD\x98", + "\xCA\x66" => "\xE4\xBC\xAD", + "\xCA\x67" => "\xE4\xBC\xB3", + "\xCA\x68" => "\xE4\xBC\xBF", + "\xCA\x69" => "\xE4\xBD\xA1", + "\xCA\x6A" => "\xE5\x86\x8F", + "\xCA\x6B" => "\xE5\x86\xB9", + "\xCA\x6C" => "\xE5\x88\x9C", + "\xCA\x6D" => "\xE5\x88\x9E", + "\xCA\x6E" => "\xE5\x88\xA1", + "\xCA\x6F" => "\xE5\x8A\xAD", + "\xCA\x70" => "\xE5\x8A\xAE", + "\xCA\x71" => "\xE5\x8C\x89", + "\xCA\x72" => "\xE5\x8D\xA3", + "\xCA\x73" => "\xE5\x8D\xB2", + "\xCA\x74" => "\xE5\x8E\x8E", + "\xCA\x75" => "\xE5\x8E\x8F", + "\xCA\x76" => "\xE5\x90\xB0", + "\xCA\x77" => "\xE5\x90\xB7", + "\xCA\x78" => "\xE5\x90\xAA", + "\xCA\x79" => "\xE5\x91\x94", + "\xCA\x7A" => "\xE5\x91\x85", + "\xCA\x7B" => "\xE5\x90\x99", + "\xCA\x7C" => "\xE5\x90\x9C", + "\xCA\x7D" => "\xE5\x90\xA5", + "\xCA\x7E" => "\xE5\x90\x98", + "\xCA\xA1" => "\xE5\x90\xBD", + "\xCA\xA2" => "\xE5\x91\x8F", + "\xCA\xA3" => "\xE5\x91\x81", + "\xCA\xA4" => "\xE5\x90\xA8", + "\xCA\xA5" => "\xE5\x90\xA4", + "\xCA\xA6" => "\xE5\x91\x87", + "\xCA\xA7" => "\xE5\x9B\xAE", + "\xCA\xA8" => "\xE5\x9B\xA7", + "\xCA\xA9" => "\xE5\x9B\xA5", + "\xCA\xAA" => "\xE5\x9D\x81", + "\xCA\xAB" => "\xE5\x9D\x85", + "\xCA\xAC" => "\xE5\x9D\x8C", + "\xCA\xAD" => "\xE5\x9D\x89", + "\xCA\xAE" => "\xE5\x9D\x8B", + "\xCA\xAF" => "\xE5\x9D\x92", + "\xCA\xB0" => "\xE5\xA4\x86", + "\xCA\xB1" => "\xE5\xA5\x80", + "\xCA\xB2" => "\xE5\xA6\xA6", + "\xCA\xB3" => "\xE5\xA6\x98", + "\xCA\xB4" => "\xE5\xA6\xA0", + "\xCA\xB5" => "\xE5\xA6\x97", + "\xCA\xB6" => "\xE5\xA6\x8E", + "\xCA\xB7" => "\xE5\xA6\xA2", + "\xCA\xB8" => "\xE5\xA6\x90", + "\xCA\xB9" => "\xE5\xA6\x8F", + "\xCA\xBA" => "\xE5\xA6\xA7", + "\xCA\xBB" => "\xE5\xA6\xA1", + "\xCA\xBC" => "\xE5\xAE\x8E", + "\xCA\xBD" => "\xE5\xAE\x92", + "\xCA\xBE" => "\xE5\xB0\xA8", + "\xCA\xBF" => "\xE5\xB0\xAA", + "\xCA\xC0" => "\xE5\xB2\x8D", + "\xCA\xC1" => "\xE5\xB2\x8F", + "\xCA\xC2" => "\xE5\xB2\x88", + "\xCA\xC3" => "\xE5\xB2\x8B", + "\xCA\xC4" => "\xE5\xB2\x89", + "\xCA\xC5" => "\xE5\xB2\x92", + "\xCA\xC6" => "\xE5\xB2\x8A", + "\xCA\xC7" => "\xE5\xB2\x86", + "\xCA\xC8" => "\xE5\xB2\x93", + "\xCA\xC9" => "\xE5\xB2\x95", + "\xCA\xCA" => "\xE5\xB7\xA0", + "\xCA\xCB" => "\xE5\xB8\x8A", + "\xCA\xCC" => "\xE5\xB8\x8E", + "\xCA\xCD" => "\xE5\xBA\x8B", + "\xCA\xCE" => "\xE5\xBA\x89", + "\xCA\xCF" => "\xE5\xBA\x8C", + "\xCA\xD0" => "\xE5\xBA\x88", + "\xCA\xD1" => "\xE5\xBA\x8D", + "\xCA\xD2" => "\xE5\xBC\x85", + "\xCA\xD3" => "\xE5\xBC\x9D", + "\xCA\xD4" => "\xE5\xBD\xB8", + "\xCA\xD5" => "\xE5\xBD\xB6", + "\xCA\xD6" => "\xE5\xBF\x92", + "\xCA\xD7" => "\xE5\xBF\x91", + "\xCA\xD8" => "\xE5\xBF\x90", + "\xCA\xD9" => "\xE5\xBF\xAD", + "\xCA\xDA" => "\xE5\xBF\xA8", + "\xCA\xDB" => "\xE5\xBF\xAE", + "\xCA\xDC" => "\xE5\xBF\xB3", + "\xCA\xDD" => "\xE5\xBF\xA1", + "\xCA\xDE" => "\xE5\xBF\xA4", + "\xCA\xDF" => "\xE5\xBF\xA3", + "\xCA\xE0" => "\xE5\xBF\xBA", + "\xCA\xE1" => "\xE5\xBF\xAF", + "\xCA\xE2" => "\xE5\xBF\xB7", + "\xCA\xE3" => "\xE5\xBF\xBB", + "\xCA\xE4" => "\xE6\x80\x80", + "\xCA\xE5" => "\xE5\xBF\xB4", + "\xCA\xE6" => "\xE6\x88\xBA", + "\xCA\xE7" => "\xE6\x8A\x83", + "\xCA\xE8" => "\xE6\x8A\x8C", + "\xCA\xE9" => "\xE6\x8A\x8E", + "\xCA\xEA" => "\xE6\x8A\x8F", + "\xCA\xEB" => "\xE6\x8A\x94", + "\xCA\xEC" => "\xE6\x8A\x87", + "\xCA\xED" => "\xE6\x89\xB1", + "\xCA\xEE" => "\xE6\x89\xBB", + "\xCA\xEF" => "\xE6\x89\xBA", + "\xCA\xF0" => "\xE6\x89\xB0", + "\xCA\xF1" => "\xE6\x8A\x81", + "\xCA\xF2" => "\xE6\x8A\x88", + "\xCA\xF3" => "\xE6\x89\xB7", + "\xCA\xF4" => "\xE6\x89\xBD", + "\xCA\xF5" => "\xE6\x89\xB2", + "\xCA\xF6" => "\xE6\x89\xB4", + "\xCA\xF7" => "\xE6\x94\xB7", + "\xCA\xF8" => "\xE6\x97\xB0", + "\xCA\xF9" => "\xE6\x97\xB4", + "\xCA\xFA" => "\xE6\x97\xB3", + "\xCA\xFB" => "\xE6\x97\xB2", + "\xCA\xFC" => "\xE6\x97\xB5", + "\xCA\xFD" => "\xE6\x9D\x85", + "\xCA\xFE" => "\xE6\x9D\x87", + "\xCB\x40" => "\xE6\x9D\x99", + "\xCB\x41" => "\xE6\x9D\x95", + "\xCB\x42" => "\xE6\x9D\x8C", + "\xCB\x43" => "\xE6\x9D\x88", + "\xCB\x44" => "\xE6\x9D\x9D", + "\xCB\x45" => "\xE6\x9D\x8D", + "\xCB\x46" => "\xE6\x9D\x9A", + "\xCB\x47" => "\xE6\x9D\x8B", + "\xCB\x48" => "\xE6\xAF\x90", + "\xCB\x49" => "\xE6\xB0\x99", + "\xCB\x4A" => "\xE6\xB0\x9A", + "\xCB\x4B" => "\xE6\xB1\xB8", + "\xCB\x4C" => "\xE6\xB1\xA7", + "\xCB\x4D" => "\xE6\xB1\xAB", + "\xCB\x4E" => "\xE6\xB2\x84", + "\xCB\x4F" => "\xE6\xB2\x8B", + "\xCB\x50" => "\xE6\xB2\x8F", + "\xCB\x51" => "\xE6\xB1\xB1", + "\xCB\x52" => "\xE6\xB1\xAF", + "\xCB\x53" => "\xE6\xB1\xA9", + "\xCB\x54" => "\xE6\xB2\x9A", + "\xCB\x55" => "\xE6\xB1\xAD", + "\xCB\x56" => "\xE6\xB2\x87", + "\xCB\x57" => "\xE6\xB2\x95", + "\xCB\x58" => "\xE6\xB2\x9C", + "\xCB\x59" => "\xE6\xB1\xA6", + "\xCB\x5A" => "\xE6\xB1\xB3", + "\xCB\x5B" => "\xE6\xB1\xA5", + "\xCB\x5C" => "\xE6\xB1\xBB", + "\xCB\x5D" => "\xE6\xB2\x8E", + "\xCB\x5E" => "\xE7\x81\xB4", + "\xCB\x5F" => "\xE7\x81\xBA", + "\xCB\x60" => "\xE7\x89\xA3", + "\xCB\x61" => "\xE7\x8A\xBF", + "\xCB\x62" => "\xE7\x8A\xBD", + "\xCB\x63" => "\xE7\x8B\x83", + "\xCB\x64" => "\xE7\x8B\x86", + "\xCB\x65" => "\xE7\x8B\x81", + "\xCB\x66" => "\xE7\x8A\xBA", + "\xCB\x67" => "\xE7\x8B\x85", + "\xCB\x68" => "\xE7\x8E\x95", + "\xCB\x69" => "\xE7\x8E\x97", + "\xCB\x6A" => "\xE7\x8E\x93", + "\xCB\x6B" => "\xE7\x8E\x94", + "\xCB\x6C" => "\xE7\x8E\x92", + "\xCB\x6D" => "\xE7\x94\xBA", + "\xCB\x6E" => "\xE7\x94\xB9", + "\xCB\x6F" => "\xE7\x96\x94", + "\xCB\x70" => "\xE7\x96\x95", + "\xCB\x71" => "\xE7\x9A\x81", + "\xCB\x72" => "\xE7\xA4\xBD", + "\xCB\x73" => "\xE8\x80\xB4", + "\xCB\x74" => "\xE8\x82\x95", + "\xCB\x75" => "\xE8\x82\x99", + "\xCB\x76" => "\xE8\x82\x90", + "\xCB\x77" => "\xE8\x82\x92", + "\xCB\x78" => "\xE8\x82\x9C", + "\xCB\x79" => "\xE8\x8A\x90", + "\xCB\x7A" => "\xE8\x8A\x8F", + "\xCB\x7B" => "\xE8\x8A\x85", + "\xCB\x7C" => "\xE8\x8A\x8E", + "\xCB\x7D" => "\xE8\x8A\x91", + "\xCB\x7E" => "\xE8\x8A\x93", + "\xCB\xA1" => "\xE8\x8A\x8A", + "\xCB\xA2" => "\xE8\x8A\x83", + "\xCB\xA3" => "\xE8\x8A\x84", + "\xCB\xA4" => "\xE8\xB1\xB8", + "\xCB\xA5" => "\xE8\xBF\x89", + "\xCB\xA6" => "\xE8\xBE\xBF", + "\xCB\xA7" => "\xE9\x82\x9F", + "\xCB\xA8" => "\xE9\x82\xA1", + "\xCB\xA9" => "\xE9\x82\xA5", + "\xCB\xAA" => "\xE9\x82\x9E", + "\xCB\xAB" => "\xE9\x82\xA7", + "\xCB\xAC" => "\xE9\x82\xA0", + "\xCB\xAD" => "\xE9\x98\xB0", + "\xCB\xAE" => "\xE9\x98\xA8", + "\xCB\xAF" => "\xE9\x98\xAF", + "\xCB\xB0" => "\xE9\x98\xAD", + "\xCB\xB1" => "\xE4\xB8\xB3", + "\xCB\xB2" => "\xE4\xBE\x98", + "\xCB\xB3" => "\xE4\xBD\xBC", + "\xCB\xB4" => "\xE4\xBE\x85", + "\xCB\xB5" => "\xE4\xBD\xBD", + "\xCB\xB6" => "\xE4\xBE\x80", + "\xCB\xB7" => "\xE4\xBE\x87", + "\xCB\xB8" => "\xE4\xBD\xB6", + "\xCB\xB9" => "\xE4\xBD\xB4", + "\xCB\xBA" => "\xE4\xBE\x89", + "\xCB\xBB" => "\xE4\xBE\x84", + "\xCB\xBC" => "\xE4\xBD\xB7", + "\xCB\xBD" => "\xE4\xBD\x8C", + "\xCB\xBE" => "\xE4\xBE\x97", + "\xCB\xBF" => "\xE4\xBD\xAA", + "\xCB\xC0" => "\xE4\xBE\x9A", + "\xCB\xC1" => "\xE4\xBD\xB9", + "\xCB\xC2" => "\xE4\xBE\x81", + "\xCB\xC3" => "\xE4\xBD\xB8", + "\xCB\xC4" => "\xE4\xBE\x90", + "\xCB\xC5" => "\xE4\xBE\x9C", + "\xCB\xC6" => "\xE4\xBE\x94", + "\xCB\xC7" => "\xE4\xBE\x9E", + "\xCB\xC8" => "\xE4\xBE\x92", + "\xCB\xC9" => "\xE4\xBE\x82", + "\xCB\xCA" => "\xE4\xBE\x95", + "\xCB\xCB" => "\xE4\xBD\xAB", + "\xCB\xCC" => "\xE4\xBD\xAE", + "\xCB\xCD" => "\xE5\x86\x9E", + "\xCB\xCE" => "\xE5\x86\xBC", + "\xCB\xCF" => "\xE5\x86\xBE", + "\xCB\xD0" => "\xE5\x88\xB5", + "\xCB\xD1" => "\xE5\x88\xB2", + "\xCB\xD2" => "\xE5\x88\xB3", + "\xCB\xD3" => "\xE5\x89\x86", + "\xCB\xD4" => "\xE5\x88\xB1", + "\xCB\xD5" => "\xE5\x8A\xBC", + "\xCB\xD6" => "\xE5\x8C\x8A", + "\xCB\xD7" => "\xE5\x8C\x8B", + "\xCB\xD8" => "\xE5\x8C\xBC", + "\xCB\xD9" => "\xE5\x8E\x92", + "\xCB\xDA" => "\xE5\x8E\x94", + "\xCB\xDB" => "\xE5\x92\x87", + "\xCB\xDC" => "\xE5\x91\xBF", + "\xCB\xDD" => "\xE5\x92\x81", + "\xCB\xDE" => "\xE5\x92\x91", + "\xCB\xDF" => "\xE5\x92\x82", + "\xCB\xE0" => "\xE5\x92\x88", + "\xCB\xE1" => "\xE5\x91\xAB", + "\xCB\xE2" => "\xE5\x91\xBA", + "\xCB\xE3" => "\xE5\x91\xBE", + "\xCB\xE4" => "\xE5\x91\xA5", + "\xCB\xE5" => "\xE5\x91\xAC", + "\xCB\xE6" => "\xE5\x91\xB4", + "\xCB\xE7" => "\xE5\x91\xA6", + "\xCB\xE8" => "\xE5\x92\x8D", + "\xCB\xE9" => "\xE5\x91\xAF", + "\xCB\xEA" => "\xE5\x91\xA1", + "\xCB\xEB" => "\xE5\x91\xA0", + "\xCB\xEC" => "\xE5\x92\x98", + "\xCB\xED" => "\xE5\x91\xA3", + "\xCB\xEE" => "\xE5\x91\xA7", + "\xCB\xEF" => "\xE5\x91\xA4", + "\xCB\xF0" => "\xE5\x9B\xB7", + "\xCB\xF1" => "\xE5\x9B\xB9", + "\xCB\xF2" => "\xE5\x9D\xAF", + "\xCB\xF3" => "\xE5\x9D\xB2", + "\xCB\xF4" => "\xE5\x9D\xAD", + "\xCB\xF5" => "\xE5\x9D\xAB", + "\xCB\xF6" => "\xE5\x9D\xB1", + "\xCB\xF7" => "\xE5\x9D\xB0", + "\xCB\xF8" => "\xE5\x9D\xB6", + "\xCB\xF9" => "\xE5\x9E\x80", + "\xCB\xFA" => "\xE5\x9D\xB5", + "\xCB\xFB" => "\xE5\x9D\xBB", + "\xCB\xFC" => "\xE5\x9D\xB3", + "\xCB\xFD" => "\xE5\x9D\xB4", + "\xCB\xFE" => "\xE5\x9D\xA2", + "\xCC\x40" => "\xE5\x9D\xA8", + "\xCC\x41" => "\xE5\x9D\xBD", + "\xCC\x42" => "\xE5\xA4\x8C", + "\xCC\x43" => "\xE5\xA5\x85", + "\xCC\x44" => "\xE5\xA6\xB5", + "\xCC\x45" => "\xE5\xA6\xBA", + "\xCC\x46" => "\xE5\xA7\x8F", + "\xCC\x47" => "\xE5\xA7\x8E", + "\xCC\x48" => "\xE5\xA6\xB2", + "\xCC\x49" => "\xE5\xA7\x8C", + "\xCC\x4A" => "\xE5\xA7\x81", + "\xCC\x4B" => "\xE5\xA6\xB6", + "\xCC\x4C" => "\xE5\xA6\xBC", + "\xCC\x4D" => "\xE5\xA7\x83", + "\xCC\x4E" => "\xE5\xA7\x96", + "\xCC\x4F" => "\xE5\xA6\xB1", + "\xCC\x50" => "\xE5\xA6\xBD", + "\xCC\x51" => "\xE5\xA7\x80", + "\xCC\x52" => "\xE5\xA7\x88", + "\xCC\x53" => "\xE5\xA6\xB4", + "\xCC\x54" => "\xE5\xA7\x87", + "\xCC\x55" => "\xE5\xAD\xA2", + "\xCC\x56" => "\xE5\xAD\xA5", + "\xCC\x57" => "\xE5\xAE\x93", + "\xCC\x58" => "\xE5\xAE\x95", + "\xCC\x59" => "\xE5\xB1\x84", + "\xCC\x5A" => "\xE5\xB1\x87", + "\xCC\x5B" => "\xE5\xB2\xAE", + "\xCC\x5C" => "\xE5\xB2\xA4", + "\xCC\x5D" => "\xE5\xB2\xA0", + "\xCC\x5E" => "\xE5\xB2\xB5", + "\xCC\x5F" => "\xE5\xB2\xAF", + "\xCC\x60" => "\xE5\xB2\xA8", + "\xCC\x61" => "\xE5\xB2\xAC", + "\xCC\x62" => "\xE5\xB2\x9F", + "\xCC\x63" => "\xE5\xB2\xA3", + "\xCC\x64" => "\xE5\xB2\xAD", + "\xCC\x65" => "\xE5\xB2\xA2", + "\xCC\x66" => "\xE5\xB2\xAA", + "\xCC\x67" => "\xE5\xB2\xA7", + "\xCC\x68" => "\xE5\xB2\x9D", + "\xCC\x69" => "\xE5\xB2\xA5", + "\xCC\x6A" => "\xE5\xB2\xB6", + "\xCC\x6B" => "\xE5\xB2\xB0", + "\xCC\x6C" => "\xE5\xB2\xA6", + "\xCC\x6D" => "\xE5\xB8\x97", + "\xCC\x6E" => "\xE5\xB8\x94", + "\xCC\x6F" => "\xE5\xB8\x99", + "\xCC\x70" => "\xE5\xBC\xA8", + "\xCC\x71" => "\xE5\xBC\xA2", + "\xCC\x72" => "\xE5\xBC\xA3", + "\xCC\x73" => "\xE5\xBC\xA4", + "\xCC\x74" => "\xE5\xBD\x94", + "\xCC\x75" => "\xE5\xBE\x82", + "\xCC\x76" => "\xE5\xBD\xBE", + "\xCC\x77" => "\xE5\xBD\xBD", + "\xCC\x78" => "\xE5\xBF\x9E", + "\xCC\x79" => "\xE5\xBF\xA5", + "\xCC\x7A" => "\xE6\x80\xAD", + "\xCC\x7B" => "\xE6\x80\xA6", + "\xCC\x7C" => "\xE6\x80\x99", + "\xCC\x7D" => "\xE6\x80\xB2", + "\xCC\x7E" => "\xE6\x80\x8B", + "\xCC\xA1" => "\xE6\x80\xB4", + "\xCC\xA2" => "\xE6\x80\x8A", + "\xCC\xA3" => "\xE6\x80\x97", + "\xCC\xA4" => "\xE6\x80\xB3", + "\xCC\xA5" => "\xE6\x80\x9A", + "\xCC\xA6" => "\xE6\x80\x9E", + "\xCC\xA7" => "\xE6\x80\xAC", + "\xCC\xA8" => "\xE6\x80\xA2", + "\xCC\xA9" => "\xE6\x80\x8D", + "\xCC\xAA" => "\xE6\x80\x90", + "\xCC\xAB" => "\xE6\x80\xAE", + "\xCC\xAC" => "\xE6\x80\x93", + "\xCC\xAD" => "\xE6\x80\x91", + "\xCC\xAE" => "\xE6\x80\x8C", + "\xCC\xAF" => "\xE6\x80\x89", + "\xCC\xB0" => "\xE6\x80\x9C", + "\xCC\xB1" => "\xE6\x88\x94", + "\xCC\xB2" => "\xE6\x88\xBD", + "\xCC\xB3" => "\xE6\x8A\xAD", + "\xCC\xB4" => "\xE6\x8A\xB4", + "\xCC\xB5" => "\xE6\x8B\x91", + "\xCC\xB6" => "\xE6\x8A\xBE", + "\xCC\xB7" => "\xE6\x8A\xAA", + "\xCC\xB8" => "\xE6\x8A\xB6", + "\xCC\xB9" => "\xE6\x8B\x8A", + "\xCC\xBA" => "\xE6\x8A\xAE", + "\xCC\xBB" => "\xE6\x8A\xB3", + "\xCC\xBC" => "\xE6\x8A\xAF", + "\xCC\xBD" => "\xE6\x8A\xBB", + "\xCC\xBE" => "\xE6\x8A\xA9", + "\xCC\xBF" => "\xE6\x8A\xB0", + "\xCC\xC0" => "\xE6\x8A\xB8", + "\xCC\xC1" => "\xE6\x94\xBD", + "\xCC\xC2" => "\xE6\x96\xA8", + "\xCC\xC3" => "\xE6\x96\xBB", + "\xCC\xC4" => "\xE6\x98\x89", + "\xCC\xC5" => "\xE6\x97\xBC", + "\xCC\xC6" => "\xE6\x98\x84", + "\xCC\xC7" => "\xE6\x98\x92", + "\xCC\xC8" => "\xE6\x98\x88", + "\xCC\xC9" => "\xE6\x97\xBB", + "\xCC\xCA" => "\xE6\x98\x83", + "\xCC\xCB" => "\xE6\x98\x8B", + "\xCC\xCC" => "\xE6\x98\x8D", + "\xCC\xCD" => "\xE6\x98\x85", + "\xCC\xCE" => "\xE6\x97\xBD", + "\xCC\xCF" => "\xE6\x98\x91", + "\xCC\xD0" => "\xE6\x98\x90", + "\xCC\xD1" => "\xE6\x9B\xB6", + "\xCC\xD2" => "\xE6\x9C\x8A", + "\xCC\xD3" => "\xE6\x9E\x85", + "\xCC\xD4" => "\xE6\x9D\xAC", + "\xCC\xD5" => "\xE6\x9E\x8E", + "\xCC\xD6" => "\xE6\x9E\x92", + "\xCC\xD7" => "\xE6\x9D\xB6", + "\xCC\xD8" => "\xE6\x9D\xBB", + "\xCC\xD9" => "\xE6\x9E\x98", + "\xCC\xDA" => "\xE6\x9E\x86", + "\xCC\xDB" => "\xE6\x9E\x84", + "\xCC\xDC" => "\xE6\x9D\xB4", + "\xCC\xDD" => "\xE6\x9E\x8D", + "\xCC\xDE" => "\xE6\x9E\x8C", + "\xCC\xDF" => "\xE6\x9D\xBA", + "\xCC\xE0" => "\xE6\x9E\x9F", + "\xCC\xE1" => "\xE6\x9E\x91", + "\xCC\xE2" => "\xE6\x9E\x99", + "\xCC\xE3" => "\xE6\x9E\x83", + "\xCC\xE4" => "\xE6\x9D\xBD", + "\xCC\xE5" => "\xE6\x9E\x81", + "\xCC\xE6" => "\xE6\x9D\xB8", + "\xCC\xE7" => "\xE6\x9D\xB9", + "\xCC\xE8" => "\xE6\x9E\x94", + "\xCC\xE9" => "\xE6\xAC\xA5", + "\xCC\xEA" => "\xE6\xAE\x80", + "\xCC\xEB" => "\xE6\xAD\xBE", + "\xCC\xEC" => "\xE6\xAF\x9E", + "\xCC\xED" => "\xE6\xB0\x9D", + "\xCC\xEE" => "\xE6\xB2\x93", + "\xCC\xEF" => "\xE6\xB3\xAC", + "\xCC\xF0" => "\xE6\xB3\xAB", + "\xCC\xF1" => "\xE6\xB3\xAE", + "\xCC\xF2" => "\xE6\xB3\x99", + "\xCC\xF3" => "\xE6\xB2\xB6", + "\xCC\xF4" => "\xE6\xB3\x94", + "\xCC\xF5" => "\xE6\xB2\xAD", + "\xCC\xF6" => "\xE6\xB3\xA7", + "\xCC\xF7" => "\xE6\xB2\xB7", + "\xCC\xF8" => "\xE6\xB3\x90", + "\xCC\xF9" => "\xE6\xB3\x82", + "\xCC\xFA" => "\xE6\xB2\xBA", + "\xCC\xFB" => "\xE6\xB3\x83", + "\xCC\xFC" => "\xE6\xB3\x86", + "\xCC\xFD" => "\xE6\xB3\xAD", + "\xCC\xFE" => "\xE6\xB3\xB2", + "\xCD\x40" => "\xE6\xB3\x92", + "\xCD\x41" => "\xE6\xB3\x9D", + "\xCD\x42" => "\xE6\xB2\xB4", + "\xCD\x43" => "\xE6\xB2\x8A", + "\xCD\x44" => "\xE6\xB2\x9D", + "\xCD\x45" => "\xE6\xB2\x80", + "\xCD\x46" => "\xE6\xB3\x9E", + "\xCD\x47" => "\xE6\xB3\x80", + "\xCD\x48" => "\xE6\xB4\xB0", + "\xCD\x49" => "\xE6\xB3\x8D", + "\xCD\x4A" => "\xE6\xB3\x87", + "\xCD\x4B" => "\xE6\xB2\xB0", + "\xCD\x4C" => "\xE6\xB3\xB9", + "\xCD\x4D" => "\xE6\xB3\x8F", + "\xCD\x4E" => "\xE6\xB3\xA9", + "\xCD\x4F" => "\xE6\xB3\x91", + "\xCD\x50" => "\xE7\x82\x94", + "\xCD\x51" => "\xE7\x82\x98", + "\xCD\x52" => "\xE7\x82\x85", + "\xCD\x53" => "\xE7\x82\x93", + "\xCD\x54" => "\xE7\x82\x86", + "\xCD\x55" => "\xE7\x82\x84", + "\xCD\x56" => "\xE7\x82\x91", + "\xCD\x57" => "\xE7\x82\x96", + "\xCD\x58" => "\xE7\x82\x82", + "\xCD\x59" => "\xE7\x82\x9A", + "\xCD\x5A" => "\xE7\x82\x83", + "\xCD\x5B" => "\xE7\x89\xAA", + "\xCD\x5C" => "\xE7\x8B\x96", + "\xCD\x5D" => "\xE7\x8B\x8B", + "\xCD\x5E" => "\xE7\x8B\x98", + "\xCD\x5F" => "\xE7\x8B\x89", + "\xCD\x60" => "\xE7\x8B\x9C", + "\xCD\x61" => "\xE7\x8B\x92", + "\xCD\x62" => "\xE7\x8B\x94", + "\xCD\x63" => "\xE7\x8B\x9A", + "\xCD\x64" => "\xE7\x8B\x8C", + "\xCD\x65" => "\xE7\x8B\x91", + "\xCD\x66" => "\xE7\x8E\xA4", + "\xCD\x67" => "\xE7\x8E\xA1", + "\xCD\x68" => "\xE7\x8E\xAD", + "\xCD\x69" => "\xE7\x8E\xA6", + "\xCD\x6A" => "\xE7\x8E\xA2", + "\xCD\x6B" => "\xE7\x8E\xA0", + "\xCD\x6C" => "\xE7\x8E\xAC", + "\xCD\x6D" => "\xE7\x8E\x9D", + "\xCD\x6E" => "\xE7\x93\x9D", + "\xCD\x6F" => "\xE7\x93\xA8", + "\xCD\x70" => "\xE7\x94\xBF", + "\xCD\x71" => "\xE7\x95\x80", + "\xCD\x72" => "\xE7\x94\xBE", + "\xCD\x73" => "\xE7\x96\x8C", + "\xCD\x74" => "\xE7\x96\x98", + "\xCD\x75" => "\xE7\x9A\xAF", + "\xCD\x76" => "\xE7\x9B\xB3", + "\xCD\x77" => "\xE7\x9B\xB1", + "\xCD\x78" => "\xE7\x9B\xB0", + "\xCD\x79" => "\xE7\x9B\xB5", + "\xCD\x7A" => "\xE7\x9F\xB8", + "\xCD\x7B" => "\xE7\x9F\xBC", + "\xCD\x7C" => "\xE7\x9F\xB9", + "\xCD\x7D" => "\xE7\x9F\xBB", + "\xCD\x7E" => "\xE7\x9F\xBA", + "\xCD\xA1" => "\xE7\x9F\xB7", + "\xCD\xA2" => "\xE7\xA5\x82", + "\xCD\xA3" => "\xE7\xA4\xBF", + "\xCD\xA4" => "\xE7\xA7\x85", + "\xCD\xA5" => "\xE7\xA9\xB8", + "\xCD\xA6" => "\xE7\xA9\xBB", + "\xCD\xA7" => "\xE7\xAB\xBB", + "\xCD\xA8" => "\xE7\xB1\xB5", + "\xCD\xA9" => "\xE7\xB3\xBD", + "\xCD\xAA" => "\xE8\x80\xB5", + "\xCD\xAB" => "\xE8\x82\x8F", + "\xCD\xAC" => "\xE8\x82\xAE", + "\xCD\xAD" => "\xE8\x82\xA3", + "\xCD\xAE" => "\xE8\x82\xB8", + "\xCD\xAF" => "\xE8\x82\xB5", + "\xCD\xB0" => "\xE8\x82\xAD", + "\xCD\xB1" => "\xE8\x88\xA0", + "\xCD\xB2" => "\xE8\x8A\xA0", + "\xCD\xB3" => "\xE8\x8B\x80", + "\xCD\xB4" => "\xE8\x8A\xAB", + "\xCD\xB5" => "\xE8\x8A\x9A", + "\xCD\xB6" => "\xE8\x8A\x98", + "\xCD\xB7" => "\xE8\x8A\x9B", + "\xCD\xB8" => "\xE8\x8A\xB5", + "\xCD\xB9" => "\xE8\x8A\xA7", + "\xCD\xBA" => "\xE8\x8A\xAE", + "\xCD\xBB" => "\xE8\x8A\xBC", + "\xCD\xBC" => "\xE8\x8A\x9E", + "\xCD\xBD" => "\xE8\x8A\xBA", + "\xCD\xBE" => "\xE8\x8A\xB4", + "\xCD\xBF" => "\xE8\x8A\xA8", + "\xCD\xC0" => "\xE8\x8A\xA1", + "\xCD\xC1" => "\xE8\x8A\xA9", + "\xCD\xC2" => "\xE8\x8B\x82", + "\xCD\xC3" => "\xE8\x8A\xA4", + "\xCD\xC4" => "\xE8\x8B\x83", + "\xCD\xC5" => "\xE8\x8A\xB6", + "\xCD\xC6" => "\xE8\x8A\xA2", + "\xCD\xC7" => "\xE8\x99\xB0", + "\xCD\xC8" => "\xE8\x99\xAF", + "\xCD\xC9" => "\xE8\x99\xAD", + "\xCD\xCA" => "\xE8\x99\xAE", + "\xCD\xCB" => "\xE8\xB1\x96", + "\xCD\xCC" => "\xE8\xBF\x92", + "\xCD\xCD" => "\xE8\xBF\x8B", + "\xCD\xCE" => "\xE8\xBF\x93", + "\xCD\xCF" => "\xE8\xBF\x8D", + "\xCD\xD0" => "\xE8\xBF\x96", + "\xCD\xD1" => "\xE8\xBF\x95", + "\xCD\xD2" => "\xE8\xBF\x97", + "\xCD\xD3" => "\xE9\x82\xB2", + "\xCD\xD4" => "\xE9\x82\xB4", + "\xCD\xD5" => "\xE9\x82\xAF", + "\xCD\xD6" => "\xE9\x82\xB3", + "\xCD\xD7" => "\xE9\x82\xB0", + "\xCD\xD8" => "\xE9\x98\xB9", + "\xCD\xD9" => "\xE9\x98\xBD", + "\xCD\xDA" => "\xE9\x98\xBC", + "\xCD\xDB" => "\xE9\x98\xBA", + "\xCD\xDC" => "\xE9\x99\x83", + "\xCD\xDD" => "\xE4\xBF\x8D", + "\xCD\xDE" => "\xE4\xBF\x85", + "\xCD\xDF" => "\xE4\xBF\x93", + "\xCD\xE0" => "\xE4\xBE\xB2", + "\xCD\xE1" => "\xE4\xBF\x89", + "\xCD\xE2" => "\xE4\xBF\x8B", + "\xCD\xE3" => "\xE4\xBF\x81", + "\xCD\xE4" => "\xE4\xBF\x94", + "\xCD\xE5" => "\xE4\xBF\x9C", + "\xCD\xE6" => "\xE4\xBF\x99", + "\xCD\xE7" => "\xE4\xBE\xBB", + "\xCD\xE8" => "\xE4\xBE\xB3", + "\xCD\xE9" => "\xE4\xBF\x9B", + "\xCD\xEA" => "\xE4\xBF\x87", + "\xCD\xEB" => "\xE4\xBF\x96", + "\xCD\xEC" => "\xE4\xBE\xBA", + "\xCD\xED" => "\xE4\xBF\x80", + "\xCD\xEE" => "\xE4\xBE\xB9", + "\xCD\xEF" => "\xE4\xBF\xAC", + "\xCD\xF0" => "\xE5\x89\x84", + "\xCD\xF1" => "\xE5\x89\x89", + "\xCD\xF2" => "\xE5\x8B\x80", + "\xCD\xF3" => "\xE5\x8B\x82", + "\xCD\xF4" => "\xE5\x8C\xBD", + "\xCD\xF5" => "\xE5\x8D\xBC", + "\xCD\xF6" => "\xE5\x8E\x97", + "\xCD\xF7" => "\xE5\x8E\x96", + "\xCD\xF8" => "\xE5\x8E\x99", + "\xCD\xF9" => "\xE5\x8E\x98", + "\xCD\xFA" => "\xE5\x92\xBA", + "\xCD\xFB" => "\xE5\x92\xA1", + "\xCD\xFC" => "\xE5\x92\xAD", + "\xCD\xFD" => "\xE5\x92\xA5", + "\xCD\xFE" => "\xE5\x93\x8F", + "\xCE\x40" => "\xE5\x93\x83", + "\xCE\x41" => "\xE8\x8C\x8D", + "\xCE\x42" => "\xE5\x92\xB7", + "\xCE\x43" => "\xE5\x92\xAE", + "\xCE\x44" => "\xE5\x93\x96", + "\xCE\x45" => "\xE5\x92\xB6", + "\xCE\x46" => "\xE5\x93\x85", + "\xCE\x47" => "\xE5\x93\x86", + "\xCE\x48" => "\xE5\x92\xA0", + "\xCE\x49" => "\xE5\x91\xB0", + "\xCE\x4A" => "\xE5\x92\xBC", + "\xCE\x4B" => "\xE5\x92\xA2", + "\xCE\x4C" => "\xE5\x92\xBE", + "\xCE\x4D" => "\xE5\x91\xB2", + "\xCE\x4E" => "\xE5\x93\x9E", + "\xCE\x4F" => "\xE5\x92\xB0", + "\xCE\x50" => "\xE5\x9E\xB5", + "\xCE\x51" => "\xE5\x9E\x9E", + "\xCE\x52" => "\xE5\x9E\x9F", + "\xCE\x53" => "\xE5\x9E\xA4", + "\xCE\x54" => "\xE5\x9E\x8C", + "\xCE\x55" => "\xE5\x9E\x97", + "\xCE\x56" => "\xE5\x9E\x9D", + "\xCE\x57" => "\xE5\x9E\x9B", + "\xCE\x58" => "\xE5\x9E\x94", + "\xCE\x59" => "\xE5\x9E\x98", + "\xCE\x5A" => "\xE5\x9E\x8F", + "\xCE\x5B" => "\xE5\x9E\x99", + "\xCE\x5C" => "\xE5\x9E\xA5", + "\xCE\x5D" => "\xE5\x9E\x9A", + "\xCE\x5E" => "\xE5\x9E\x95", + "\xCE\x5F" => "\xE5\xA3\xB4", + "\xCE\x60" => "\xE5\xA4\x8D", + "\xCE\x61" => "\xE5\xA5\x93", + "\xCE\x62" => "\xE5\xA7\xA1", + "\xCE\x63" => "\xE5\xA7\x9E", + "\xCE\x64" => "\xE5\xA7\xAE", + "\xCE\x65" => "\xE5\xA8\x80", + "\xCE\x66" => "\xE5\xA7\xB1", + "\xCE\x67" => "\xE5\xA7\x9D", + "\xCE\x68" => "\xE5\xA7\xBA", + "\xCE\x69" => "\xE5\xA7\xBD", + "\xCE\x6A" => "\xE5\xA7\xBC", + "\xCE\x6B" => "\xE5\xA7\xB6", + "\xCE\x6C" => "\xE5\xA7\xA4", + "\xCE\x6D" => "\xE5\xA7\xB2", + "\xCE\x6E" => "\xE5\xA7\xB7", + "\xCE\x6F" => "\xE5\xA7\x9B", + "\xCE\x70" => "\xE5\xA7\xA9", + "\xCE\x71" => "\xE5\xA7\xB3", + "\xCE\x72" => "\xE5\xA7\xB5", + "\xCE\x73" => "\xE5\xA7\xA0", + "\xCE\x74" => "\xE5\xA7\xBE", + "\xCE\x75" => "\xE5\xA7\xB4", + "\xCE\x76" => "\xE5\xA7\xAD", + "\xCE\x77" => "\xE5\xAE\xA8", + "\xCE\x78" => "\xE5\xB1\x8C", + "\xCE\x79" => "\xE5\xB3\x90", + "\xCE\x7A" => "\xE5\xB3\x98", + "\xCE\x7B" => "\xE5\xB3\x8C", + "\xCE\x7C" => "\xE5\xB3\x97", + "\xCE\x7D" => "\xE5\xB3\x8B", + "\xCE\x7E" => "\xE5\xB3\x9B", + "\xCE\xA1" => "\xE5\xB3\x9E", + "\xCE\xA2" => "\xE5\xB3\x9A", + "\xCE\xA3" => "\xE5\xB3\x89", + "\xCE\xA4" => "\xE5\xB3\x87", + "\xCE\xA5" => "\xE5\xB3\x8A", + "\xCE\xA6" => "\xE5\xB3\x96", + "\xCE\xA7" => "\xE5\xB3\x93", + "\xCE\xA8" => "\xE5\xB3\x94", + "\xCE\xA9" => "\xE5\xB3\x8F", + "\xCE\xAA" => "\xE5\xB3\x88", + "\xCE\xAB" => "\xE5\xB3\x86", + "\xCE\xAC" => "\xE5\xB3\x8E", + "\xCE\xAD" => "\xE5\xB3\x9F", + "\xCE\xAE" => "\xE5\xB3\xB8", + "\xCE\xAF" => "\xE5\xB7\xB9", + "\xCE\xB0" => "\xE5\xB8\xA1", + "\xCE\xB1" => "\xE5\xB8\xA2", + "\xCE\xB2" => "\xE5\xB8\xA3", + "\xCE\xB3" => "\xE5\xB8\xA0", + "\xCE\xB4" => "\xE5\xB8\xA4", + "\xCE\xB5" => "\xE5\xBA\xB0", + "\xCE\xB6" => "\xE5\xBA\xA4", + "\xCE\xB7" => "\xE5\xBA\xA2", + "\xCE\xB8" => "\xE5\xBA\x9B", + "\xCE\xB9" => "\xE5\xBA\xA3", + "\xCE\xBA" => "\xE5\xBA\xA5", + "\xCE\xBB" => "\xE5\xBC\x87", + "\xCE\xBC" => "\xE5\xBC\xAE", + "\xCE\xBD" => "\xE5\xBD\x96", + "\xCE\xBE" => "\xE5\xBE\x86", + "\xCE\xBF" => "\xE6\x80\xB7", + "\xCE\xC0" => "\xE6\x80\xB9", + "\xCE\xC1" => "\xE6\x81\x94", + "\xCE\xC2" => "\xE6\x81\xB2", + "\xCE\xC3" => "\xE6\x81\x9E", + "\xCE\xC4" => "\xE6\x81\x85", + "\xCE\xC5" => "\xE6\x81\x93", + "\xCE\xC6" => "\xE6\x81\x87", + "\xCE\xC7" => "\xE6\x81\x89", + "\xCE\xC8" => "\xE6\x81\x9B", + "\xCE\xC9" => "\xE6\x81\x8C", + "\xCE\xCA" => "\xE6\x81\x80", + "\xCE\xCB" => "\xE6\x81\x82", + "\xCE\xCC" => "\xE6\x81\x9F", + "\xCE\xCD" => "\xE6\x80\xA4", + "\xCE\xCE" => "\xE6\x81\x84", + "\xCE\xCF" => "\xE6\x81\x98", + "\xCE\xD0" => "\xE6\x81\xA6", + "\xCE\xD1" => "\xE6\x81\xAE", + "\xCE\xD2" => "\xE6\x89\x82", + "\xCE\xD3" => "\xE6\x89\x83", + "\xCE\xD4" => "\xE6\x8B\x8F", + "\xCE\xD5" => "\xE6\x8C\x8D", + "\xCE\xD6" => "\xE6\x8C\x8B", + "\xCE\xD7" => "\xE6\x8B\xB5", + "\xCE\xD8" => "\xE6\x8C\x8E", + "\xCE\xD9" => "\xE6\x8C\x83", + "\xCE\xDA" => "\xE6\x8B\xAB", + "\xCE\xDB" => "\xE6\x8B\xB9", + "\xCE\xDC" => "\xE6\x8C\x8F", + "\xCE\xDD" => "\xE6\x8C\x8C", + "\xCE\xDE" => "\xE6\x8B\xB8", + "\xCE\xDF" => "\xE6\x8B\xB6", + "\xCE\xE0" => "\xE6\x8C\x80", + "\xCE\xE1" => "\xE6\x8C\x93", + "\xCE\xE2" => "\xE6\x8C\x94", + "\xCE\xE3" => "\xE6\x8B\xBA", + "\xCE\xE4" => "\xE6\x8C\x95", + "\xCE\xE5" => "\xE6\x8B\xBB", + "\xCE\xE6" => "\xE6\x8B\xB0", + "\xCE\xE7" => "\xE6\x95\x81", + "\xCE\xE8" => "\xE6\x95\x83", + "\xCE\xE9" => "\xE6\x96\xAA", + "\xCE\xEA" => "\xE6\x96\xBF", + "\xCE\xEB" => "\xE6\x98\xB6", + "\xCE\xEC" => "\xE6\x98\xA1", + "\xCE\xED" => "\xE6\x98\xB2", + "\xCE\xEE" => "\xE6\x98\xB5", + "\xCE\xEF" => "\xE6\x98\x9C", + "\xCE\xF0" => "\xE6\x98\xA6", + "\xCE\xF1" => "\xE6\x98\xA2", + "\xCE\xF2" => "\xE6\x98\xB3", + "\xCE\xF3" => "\xE6\x98\xAB", + "\xCE\xF4" => "\xE6\x98\xBA", + "\xCE\xF5" => "\xE6\x98\x9D", + "\xCE\xF6" => "\xE6\x98\xB4", + "\xCE\xF7" => "\xE6\x98\xB9", + "\xCE\xF8" => "\xE6\x98\xAE", + "\xCE\xF9" => "\xE6\x9C\x8F", + "\xCE\xFA" => "\xE6\x9C\x90", + "\xCE\xFB" => "\xE6\x9F\x81", + "\xCE\xFC" => "\xE6\x9F\xB2", + "\xCE\xFD" => "\xE6\x9F\x88", + "\xCE\xFE" => "\xE6\x9E\xBA", + "\xCF\x40" => "\xE6\x9F\x9C", + "\xCF\x41" => "\xE6\x9E\xBB", + "\xCF\x42" => "\xE6\x9F\xB8", + "\xCF\x43" => "\xE6\x9F\x98", + "\xCF\x44" => "\xE6\x9F\x80", + "\xCF\x45" => "\xE6\x9E\xB7", + "\xCF\x46" => "\xE6\x9F\x85", + "\xCF\x47" => "\xE6\x9F\xAB", + "\xCF\x48" => "\xE6\x9F\xA4", + "\xCF\x49" => "\xE6\x9F\x9F", + "\xCF\x4A" => "\xE6\x9E\xB5", + "\xCF\x4B" => "\xE6\x9F\x8D", + "\xCF\x4C" => "\xE6\x9E\xB3", + "\xCF\x4D" => "\xE6\x9F\xB7", + "\xCF\x4E" => "\xE6\x9F\xB6", + "\xCF\x4F" => "\xE6\x9F\xAE", + "\xCF\x50" => "\xE6\x9F\xA3", + "\xCF\x51" => "\xE6\x9F\x82", + "\xCF\x52" => "\xE6\x9E\xB9", + "\xCF\x53" => "\xE6\x9F\x8E", + "\xCF\x54" => "\xE6\x9F\xA7", + "\xCF\x55" => "\xE6\x9F\xB0", + "\xCF\x56" => "\xE6\x9E\xB2", + "\xCF\x57" => "\xE6\x9F\xBC", + "\xCF\x58" => "\xE6\x9F\x86", + "\xCF\x59" => "\xE6\x9F\xAD", + "\xCF\x5A" => "\xE6\x9F\x8C", + "\xCF\x5B" => "\xE6\x9E\xAE", + "\xCF\x5C" => "\xE6\x9F\xA6", + "\xCF\x5D" => "\xE6\x9F\x9B", + "\xCF\x5E" => "\xE6\x9F\xBA", + "\xCF\x5F" => "\xE6\x9F\x89", + "\xCF\x60" => "\xE6\x9F\x8A", + "\xCF\x61" => "\xE6\x9F\x83", + "\xCF\x62" => "\xE6\x9F\xAA", + "\xCF\x63" => "\xE6\x9F\x8B", + "\xCF\x64" => "\xE6\xAC\xA8", + "\xCF\x65" => "\xE6\xAE\x82", + "\xCF\x66" => "\xE6\xAE\x84", + "\xCF\x67" => "\xE6\xAE\xB6", + "\xCF\x68" => "\xE6\xAF\x96", + "\xCF\x69" => "\xE6\xAF\x98", + "\xCF\x6A" => "\xE6\xAF\xA0", + "\xCF\x6B" => "\xE6\xB0\xA0", + "\xCF\x6C" => "\xE6\xB0\xA1", + "\xCF\x6D" => "\xE6\xB4\xA8", + "\xCF\x6E" => "\xE6\xB4\xB4", + "\xCF\x6F" => "\xE6\xB4\xAD", + "\xCF\x70" => "\xE6\xB4\x9F", + "\xCF\x71" => "\xE6\xB4\xBC", + "\xCF\x72" => "\xE6\xB4\xBF", + "\xCF\x73" => "\xE6\xB4\x92", + "\xCF\x74" => "\xE6\xB4\x8A", + "\xCF\x75" => "\xE6\xB3\x9A", + "\xCF\x76" => "\xE6\xB4\xB3", + "\xCF\x77" => "\xE6\xB4\x84", + "\xCF\x78" => "\xE6\xB4\x99", + "\xCF\x79" => "\xE6\xB4\xBA", + "\xCF\x7A" => "\xE6\xB4\x9A", + "\xCF\x7B" => "\xE6\xB4\x91", + "\xCF\x7C" => "\xE6\xB4\x80", + "\xCF\x7D" => "\xE6\xB4\x9D", + "\xCF\x7E" => "\xE6\xB5\x82", + "\xCF\xA1" => "\xE6\xB4\x81", + "\xCF\xA2" => "\xE6\xB4\x98", + "\xCF\xA3" => "\xE6\xB4\xB7", + "\xCF\xA4" => "\xE6\xB4\x83", + "\xCF\xA5" => "\xE6\xB4\x8F", + "\xCF\xA6" => "\xE6\xB5\x80", + "\xCF\xA7" => "\xE6\xB4\x87", + "\xCF\xA8" => "\xE6\xB4\xA0", + "\xCF\xA9" => "\xE6\xB4\xAC", + "\xCF\xAA" => "\xE6\xB4\x88", + "\xCF\xAB" => "\xE6\xB4\xA2", + "\xCF\xAC" => "\xE6\xB4\x89", + "\xCF\xAD" => "\xE6\xB4\x90", + "\xCF\xAE" => "\xE7\x82\xB7", + "\xCF\xAF" => "\xE7\x82\x9F", + "\xCF\xB0" => "\xE7\x82\xBE", + "\xCF\xB1" => "\xE7\x82\xB1", + "\xCF\xB2" => "\xE7\x82\xB0", + "\xCF\xB3" => "\xE7\x82\xA1", + "\xCF\xB4" => "\xE7\x82\xB4", + "\xCF\xB5" => "\xE7\x82\xB5", + "\xCF\xB6" => "\xE7\x82\xA9", + "\xCF\xB7" => "\xE7\x89\x81", + "\xCF\xB8" => "\xE7\x89\x89", + "\xCF\xB9" => "\xE7\x89\x8A", + "\xCF\xBA" => "\xE7\x89\xAC", + "\xCF\xBB" => "\xE7\x89\xB0", + "\xCF\xBC" => "\xE7\x89\xB3", + "\xCF\xBD" => "\xE7\x89\xAE", + "\xCF\xBE" => "\xE7\x8B\x8A", + "\xCF\xBF" => "\xE7\x8B\xA4", + "\xCF\xC0" => "\xE7\x8B\xA8", + "\xCF\xC1" => "\xE7\x8B\xAB", + "\xCF\xC2" => "\xE7\x8B\x9F", + "\xCF\xC3" => "\xE7\x8B\xAA", + "\xCF\xC4" => "\xE7\x8B\xA6", + "\xCF\xC5" => "\xE7\x8B\xA3", + "\xCF\xC6" => "\xE7\x8E\x85", + "\xCF\xC7" => "\xE7\x8F\x8C", + "\xCF\xC8" => "\xE7\x8F\x82", + "\xCF\xC9" => "\xE7\x8F\x88", + "\xCF\xCA" => "\xE7\x8F\x85", + "\xCF\xCB" => "\xE7\x8E\xB9", + "\xCF\xCC" => "\xE7\x8E\xB6", + "\xCF\xCD" => "\xE7\x8E\xB5", + "\xCF\xCE" => "\xE7\x8E\xB4", + "\xCF\xCF" => "\xE7\x8F\xAB", + "\xCF\xD0" => "\xE7\x8E\xBF", + "\xCF\xD1" => "\xE7\x8F\x87", + "\xCF\xD2" => "\xE7\x8E\xBE", + "\xCF\xD3" => "\xE7\x8F\x83", + "\xCF\xD4" => "\xE7\x8F\x86", + "\xCF\xD5" => "\xE7\x8E\xB8", + "\xCF\xD6" => "\xE7\x8F\x8B", + "\xCF\xD7" => "\xE7\x93\xAC", + "\xCF\xD8" => "\xE7\x93\xAE", + "\xCF\xD9" => "\xE7\x94\xAE", + "\xCF\xDA" => "\xE7\x95\x87", + "\xCF\xDB" => "\xE7\x95\x88", + "\xCF\xDC" => "\xE7\x96\xA7", + "\xCF\xDD" => "\xE7\x96\xAA", + "\xCF\xDE" => "\xE7\x99\xB9", + "\xCF\xDF" => "\xE7\x9B\x84", + "\xCF\xE0" => "\xE7\x9C\x88", + "\xCF\xE1" => "\xE7\x9C\x83", + "\xCF\xE2" => "\xE7\x9C\x84", + "\xCF\xE3" => "\xE7\x9C\x85", + "\xCF\xE4" => "\xE7\x9C\x8A", + "\xCF\xE5" => "\xE7\x9B\xB7", + "\xCF\xE6" => "\xE7\x9B\xBB", + "\xCF\xE7" => "\xE7\x9B\xBA", + "\xCF\xE8" => "\xE7\x9F\xA7", + "\xCF\xE9" => "\xE7\x9F\xA8", + "\xCF\xEA" => "\xE7\xA0\x86", + "\xCF\xEB" => "\xE7\xA0\x91", + "\xCF\xEC" => "\xE7\xA0\x92", + "\xCF\xED" => "\xE7\xA0\x85", + "\xCF\xEE" => "\xE7\xA0\x90", + "\xCF\xEF" => "\xE7\xA0\x8F", + "\xCF\xF0" => "\xE7\xA0\x8E", + "\xCF\xF1" => "\xE7\xA0\x89", + "\xCF\xF2" => "\xE7\xA0\x83", + "\xCF\xF3" => "\xE7\xA0\x93", + "\xCF\xF4" => "\xE7\xA5\x8A", + "\xCF\xF5" => "\xE7\xA5\x8C", + "\xCF\xF6" => "\xE7\xA5\x8B", + "\xCF\xF7" => "\xE7\xA5\x85", + "\xCF\xF8" => "\xE7\xA5\x84", + "\xCF\xF9" => "\xE7\xA7\x95", + "\xCF\xFA" => "\xE7\xA7\x8D", + "\xCF\xFB" => "\xE7\xA7\x8F", + "\xCF\xFC" => "\xE7\xA7\x96", + "\xCF\xFD" => "\xE7\xA7\x8E", + "\xCF\xFE" => "\xE7\xAA\x80", + "\xD0\x40" => "\xE7\xA9\xBE", + "\xD0\x41" => "\xE7\xAB\x91", + "\xD0\x42" => "\xE7\xAC\x80", + "\xD0\x43" => "\xE7\xAC\x81", + "\xD0\x44" => "\xE7\xB1\xBA", + "\xD0\x45" => "\xE7\xB1\xB8", + "\xD0\x46" => "\xE7\xB1\xB9", + "\xD0\x47" => "\xE7\xB1\xBF", + "\xD0\x48" => "\xE7\xB2\x80", + "\xD0\x49" => "\xE7\xB2\x81", + "\xD0\x4A" => "\xE7\xB4\x83", + "\xD0\x4B" => "\xE7\xB4\x88", + "\xD0\x4C" => "\xE7\xB4\x81", + "\xD0\x4D" => "\xE7\xBD\x98", + "\xD0\x4E" => "\xE7\xBE\x91", + "\xD0\x4F" => "\xE7\xBE\x8D", + "\xD0\x50" => "\xE7\xBE\xBE", + "\xD0\x51" => "\xE8\x80\x87", + "\xD0\x52" => "\xE8\x80\x8E", + "\xD0\x53" => "\xE8\x80\x8F", + "\xD0\x54" => "\xE8\x80\x94", + "\xD0\x55" => "\xE8\x80\xB7", + "\xD0\x56" => "\xE8\x83\x98", + "\xD0\x57" => "\xE8\x83\x87", + "\xD0\x58" => "\xE8\x83\xA0", + "\xD0\x59" => "\xE8\x83\x91", + "\xD0\x5A" => "\xE8\x83\x88", + "\xD0\x5B" => "\xE8\x83\x82", + "\xD0\x5C" => "\xE8\x83\x90", + "\xD0\x5D" => "\xE8\x83\x85", + "\xD0\x5E" => "\xE8\x83\xA3", + "\xD0\x5F" => "\xE8\x83\x99", + "\xD0\x60" => "\xE8\x83\x9C", + "\xD0\x61" => "\xE8\x83\x8A", + "\xD0\x62" => "\xE8\x83\x95", + "\xD0\x63" => "\xE8\x83\x89", + "\xD0\x64" => "\xE8\x83\x8F", + "\xD0\x65" => "\xE8\x83\x97", + "\xD0\x66" => "\xE8\x83\xA6", + "\xD0\x67" => "\xE8\x83\x8D", + "\xD0\x68" => "\xE8\x87\xBF", + "\xD0\x69" => "\xE8\x88\xA1", + "\xD0\x6A" => "\xE8\x8A\x94", + "\xD0\x6B" => "\xE8\x8B\x99", + "\xD0\x6C" => "\xE8\x8B\xBE", + "\xD0\x6D" => "\xE8\x8B\xB9", + "\xD0\x6E" => "\xE8\x8C\x87", + "\xD0\x6F" => "\xE8\x8B\xA8", + "\xD0\x70" => "\xE8\x8C\x80", + "\xD0\x71" => "\xE8\x8B\x95", + "\xD0\x72" => "\xE8\x8C\xBA", + "\xD0\x73" => "\xE8\x8B\xAB", + "\xD0\x74" => "\xE8\x8B\x96", + "\xD0\x75" => "\xE8\x8B\xB4", + "\xD0\x76" => "\xE8\x8B\xAC", + "\xD0\x77" => "\xE8\x8B\xA1", + "\xD0\x78" => "\xE8\x8B\xB2", + "\xD0\x79" => "\xE8\x8B\xB5", + "\xD0\x7A" => "\xE8\x8C\x8C", + "\xD0\x7B" => "\xE8\x8B\xBB", + "\xD0\x7C" => "\xE8\x8B\xB6", + "\xD0\x7D" => "\xE8\x8B\xB0", + "\xD0\x7E" => "\xE8\x8B\xAA", + "\xD0\xA1" => "\xE8\x8B\xA4", + "\xD0\xA2" => "\xE8\x8B\xA0", + "\xD0\xA3" => "\xE8\x8B\xBA", + "\xD0\xA4" => "\xE8\x8B\xB3", + "\xD0\xA5" => "\xE8\x8B\xAD", + "\xD0\xA6" => "\xE8\x99\xB7", + "\xD0\xA7" => "\xE8\x99\xB4", + "\xD0\xA8" => "\xE8\x99\xBC", + "\xD0\xA9" => "\xE8\x99\xB3", + "\xD0\xAA" => "\xE8\xA1\x81", + "\xD0\xAB" => "\xE8\xA1\x8E", + "\xD0\xAC" => "\xE8\xA1\xA7", + "\xD0\xAD" => "\xE8\xA1\xAA", + "\xD0\xAE" => "\xE8\xA1\xA9", + "\xD0\xAF" => "\xE8\xA7\x93", + "\xD0\xB0" => "\xE8\xA8\x84", + "\xD0\xB1" => "\xE8\xA8\x87", + "\xD0\xB2" => "\xE8\xB5\xB2", + "\xD0\xB3" => "\xE8\xBF\xA3", + "\xD0\xB4" => "\xE8\xBF\xA1", + "\xD0\xB5" => "\xE8\xBF\xAE", + "\xD0\xB6" => "\xE8\xBF\xA0", + "\xD0\xB7" => "\xE9\x83\xB1", + "\xD0\xB8" => "\xE9\x82\xBD", + "\xD0\xB9" => "\xE9\x82\xBF", + "\xD0\xBA" => "\xE9\x83\x95", + "\xD0\xBB" => "\xE9\x83\x85", + "\xD0\xBC" => "\xE9\x82\xBE", + "\xD0\xBD" => "\xE9\x83\x87", + "\xD0\xBE" => "\xE9\x83\x8B", + "\xD0\xBF" => "\xE9\x83\x88", + "\xD0\xC0" => "\xE9\x87\x94", + "\xD0\xC1" => "\xE9\x87\x93", + "\xD0\xC2" => "\xE9\x99\x94", + "\xD0\xC3" => "\xE9\x99\x8F", + "\xD0\xC4" => "\xE9\x99\x91", + "\xD0\xC5" => "\xE9\x99\x93", + "\xD0\xC6" => "\xE9\x99\x8A", + "\xD0\xC7" => "\xE9\x99\x8E", + "\xD0\xC8" => "\xE5\x80\x9E", + "\xD0\xC9" => "\xE5\x80\x85", + "\xD0\xCA" => "\xE5\x80\x87", + "\xD0\xCB" => "\xE5\x80\x93", + "\xD0\xCC" => "\xE5\x80\xA2", + "\xD0\xCD" => "\xE5\x80\xB0", + "\xD0\xCE" => "\xE5\x80\x9B", + "\xD0\xCF" => "\xE4\xBF\xB5", + "\xD0\xD0" => "\xE4\xBF\xB4", + "\xD0\xD1" => "\xE5\x80\xB3", + "\xD0\xD2" => "\xE5\x80\xB7", + "\xD0\xD3" => "\xE5\x80\xAC", + "\xD0\xD4" => "\xE4\xBF\xB6", + "\xD0\xD5" => "\xE4\xBF\xB7", + "\xD0\xD6" => "\xE5\x80\x97", + "\xD0\xD7" => "\xE5\x80\x9C", + "\xD0\xD8" => "\xE5\x80\xA0", + "\xD0\xD9" => "\xE5\x80\xA7", + "\xD0\xDA" => "\xE5\x80\xB5", + "\xD0\xDB" => "\xE5\x80\xAF", + "\xD0\xDC" => "\xE5\x80\xB1", + "\xD0\xDD" => "\xE5\x80\x8E", + "\xD0\xDE" => "\xE5\x85\x9A", + "\xD0\xDF" => "\xE5\x86\x94", + "\xD0\xE0" => "\xE5\x86\x93", + "\xD0\xE1" => "\xE5\x87\x8A", + "\xD0\xE2" => "\xE5\x87\x84", + "\xD0\xE3" => "\xE5\x87\x85", + "\xD0\xE4" => "\xE5\x87\x88", + "\xD0\xE5" => "\xE5\x87\x8E", + "\xD0\xE6" => "\xE5\x89\xA1", + "\xD0\xE7" => "\xE5\x89\x9A", + "\xD0\xE8" => "\xE5\x89\x92", + "\xD0\xE9" => "\xE5\x89\x9E", + "\xD0\xEA" => "\xE5\x89\x9F", + "\xD0\xEB" => "\xE5\x89\x95", + "\xD0\xEC" => "\xE5\x89\xA2", + "\xD0\xED" => "\xE5\x8B\x8D", + "\xD0\xEE" => "\xE5\x8C\x8E", + "\xD0\xEF" => "\xE5\x8E\x9E", + "\xD0\xF0" => "\xE5\x94\xA6", + "\xD0\xF1" => "\xE5\x93\xA2", + "\xD0\xF2" => "\xE5\x94\x97", + "\xD0\xF3" => "\xE5\x94\x92", + "\xD0\xF4" => "\xE5\x93\xA7", + "\xD0\xF5" => "\xE5\x93\xB3", + "\xD0\xF6" => "\xE5\x93\xA4", + "\xD0\xF7" => "\xE5\x94\x9A", + "\xD0\xF8" => "\xE5\x93\xBF", + "\xD0\xF9" => "\xE5\x94\x84", + "\xD0\xFA" => "\xE5\x94\x88", + "\xD0\xFB" => "\xE5\x93\xAB", + "\xD0\xFC" => "\xE5\x94\x91", + "\xD0\xFD" => "\xE5\x94\x85", + "\xD0\xFE" => "\xE5\x93\xB1", + "\xD1\x40" => "\xE5\x94\x8A", + "\xD1\x41" => "\xE5\x93\xBB", + "\xD1\x42" => "\xE5\x93\xB7", + "\xD1\x43" => "\xE5\x93\xB8", + "\xD1\x44" => "\xE5\x93\xA0", + "\xD1\x45" => "\xE5\x94\x8E", + "\xD1\x46" => "\xE5\x94\x83", + "\xD1\x47" => "\xE5\x94\x8B", + "\xD1\x48" => "\xE5\x9C\x81", + "\xD1\x49" => "\xE5\x9C\x82", + "\xD1\x4A" => "\xE5\x9F\x8C", + "\xD1\x4B" => "\xE5\xA0\xB2", + "\xD1\x4C" => "\xE5\x9F\x95", + "\xD1\x4D" => "\xE5\x9F\x92", + "\xD1\x4E" => "\xE5\x9E\xBA", + "\xD1\x4F" => "\xE5\x9F\x86", + "\xD1\x50" => "\xE5\x9E\xBD", + "\xD1\x51" => "\xE5\x9E\xBC", + "\xD1\x52" => "\xE5\x9E\xB8", + "\xD1\x53" => "\xE5\x9E\xB6", + "\xD1\x54" => "\xE5\x9E\xBF", + "\xD1\x55" => "\xE5\x9F\x87", + "\xD1\x56" => "\xE5\x9F\x90", + "\xD1\x57" => "\xE5\x9E\xB9", + "\xD1\x58" => "\xE5\x9F\x81", + "\xD1\x59" => "\xE5\xA4\x8E", + "\xD1\x5A" => "\xE5\xA5\x8A", + "\xD1\x5B" => "\xE5\xA8\x99", + "\xD1\x5C" => "\xE5\xA8\x96", + "\xD1\x5D" => "\xE5\xA8\xAD", + "\xD1\x5E" => "\xE5\xA8\xAE", + "\xD1\x5F" => "\xE5\xA8\x95", + "\xD1\x60" => "\xE5\xA8\x8F", + "\xD1\x61" => "\xE5\xA8\x97", + "\xD1\x62" => "\xE5\xA8\x8A", + "\xD1\x63" => "\xE5\xA8\x9E", + "\xD1\x64" => "\xE5\xA8\xB3", + "\xD1\x65" => "\xE5\xAD\xAC", + "\xD1\x66" => "\xE5\xAE\xA7", + "\xD1\x67" => "\xE5\xAE\xAD", + "\xD1\x68" => "\xE5\xAE\xAC", + "\xD1\x69" => "\xE5\xB0\x83", + "\xD1\x6A" => "\xE5\xB1\x96", + "\xD1\x6B" => "\xE5\xB1\x94", + "\xD1\x6C" => "\xE5\xB3\xAC", + "\xD1\x6D" => "\xE5\xB3\xBF", + "\xD1\x6E" => "\xE5\xB3\xAE", + "\xD1\x6F" => "\xE5\xB3\xB1", + "\xD1\x70" => "\xE5\xB3\xB7", + "\xD1\x71" => "\xE5\xB4\x80", + "\xD1\x72" => "\xE5\xB3\xB9", + "\xD1\x73" => "\xE5\xB8\xA9", + "\xD1\x74" => "\xE5\xB8\xA8", + "\xD1\x75" => "\xE5\xBA\xA8", + "\xD1\x76" => "\xE5\xBA\xAE", + "\xD1\x77" => "\xE5\xBA\xAA", + "\xD1\x78" => "\xE5\xBA\xAC", + "\xD1\x79" => "\xE5\xBC\xB3", + "\xD1\x7A" => "\xE5\xBC\xB0", + "\xD1\x7B" => "\xE5\xBD\xA7", + "\xD1\x7C" => "\xE6\x81\x9D", + "\xD1\x7D" => "\xE6\x81\x9A", + "\xD1\x7E" => "\xE6\x81\xA7", + "\xD1\xA1" => "\xE6\x81\x81", + "\xD1\xA2" => "\xE6\x82\xA2", + "\xD1\xA3" => "\xE6\x82\x88", + "\xD1\xA4" => "\xE6\x82\x80", + "\xD1\xA5" => "\xE6\x82\x92", + "\xD1\xA6" => "\xE6\x82\x81", + "\xD1\xA7" => "\xE6\x82\x9D", + "\xD1\xA8" => "\xE6\x82\x83", + "\xD1\xA9" => "\xE6\x82\x95", + "\xD1\xAA" => "\xE6\x82\x9B", + "\xD1\xAB" => "\xE6\x82\x97", + "\xD1\xAC" => "\xE6\x82\x87", + "\xD1\xAD" => "\xE6\x82\x9C", + "\xD1\xAE" => "\xE6\x82\x8E", + "\xD1\xAF" => "\xE6\x88\x99", + "\xD1\xB0" => "\xE6\x89\x86", + "\xD1\xB1" => "\xE6\x8B\xB2", + "\xD1\xB2" => "\xE6\x8C\x90", + "\xD1\xB3" => "\xE6\x8D\x96", + "\xD1\xB4" => "\xE6\x8C\xAC", + "\xD1\xB5" => "\xE6\x8D\x84", + "\xD1\xB6" => "\xE6\x8D\x85", + "\xD1\xB7" => "\xE6\x8C\xB6", + "\xD1\xB8" => "\xE6\x8D\x83", + "\xD1\xB9" => "\xE6\x8F\xA4", + "\xD1\xBA" => "\xE6\x8C\xB9", + "\xD1\xBB" => "\xE6\x8D\x8B", + "\xD1\xBC" => "\xE6\x8D\x8A", + "\xD1\xBD" => "\xE6\x8C\xBC", + "\xD1\xBE" => "\xE6\x8C\xA9", + "\xD1\xBF" => "\xE6\x8D\x81", + "\xD1\xC0" => "\xE6\x8C\xB4", + "\xD1\xC1" => "\xE6\x8D\x98", + "\xD1\xC2" => "\xE6\x8D\x94", + "\xD1\xC3" => "\xE6\x8D\x99", + "\xD1\xC4" => "\xE6\x8C\xAD", + "\xD1\xC5" => "\xE6\x8D\x87", + "\xD1\xC6" => "\xE6\x8C\xB3", + "\xD1\xC7" => "\xE6\x8D\x9A", + "\xD1\xC8" => "\xE6\x8D\x91", + "\xD1\xC9" => "\xE6\x8C\xB8", + "\xD1\xCA" => "\xE6\x8D\x97", + "\xD1\xCB" => "\xE6\x8D\x80", + "\xD1\xCC" => "\xE6\x8D\x88", + "\xD1\xCD" => "\xE6\x95\x8A", + "\xD1\xCE" => "\xE6\x95\x86", + "\xD1\xCF" => "\xE6\x97\x86", + "\xD1\xD0" => "\xE6\x97\x83", + "\xD1\xD1" => "\xE6\x97\x84", + "\xD1\xD2" => "\xE6\x97\x82", + "\xD1\xD3" => "\xE6\x99\x8A", + "\xD1\xD4" => "\xE6\x99\x9F", + "\xD1\xD5" => "\xE6\x99\x87", + "\xD1\xD6" => "\xE6\x99\x91", + "\xD1\xD7" => "\xE6\x9C\x92", + "\xD1\xD8" => "\xE6\x9C\x93", + "\xD1\xD9" => "\xE6\xA0\x9F", + "\xD1\xDA" => "\xE6\xA0\x9A", + "\xD1\xDB" => "\xE6\xA1\x89", + "\xD1\xDC" => "\xE6\xA0\xB2", + "\xD1\xDD" => "\xE6\xA0\xB3", + "\xD1\xDE" => "\xE6\xA0\xBB", + "\xD1\xDF" => "\xE6\xA1\x8B", + "\xD1\xE0" => "\xE6\xA1\x8F", + "\xD1\xE1" => "\xE6\xA0\x96", + "\xD1\xE2" => "\xE6\xA0\xB1", + "\xD1\xE3" => "\xE6\xA0\x9C", + "\xD1\xE4" => "\xE6\xA0\xB5", + "\xD1\xE5" => "\xE6\xA0\xAB", + "\xD1\xE6" => "\xE6\xA0\xAD", + "\xD1\xE7" => "\xE6\xA0\xAF", + "\xD1\xE8" => "\xE6\xA1\x8E", + "\xD1\xE9" => "\xE6\xA1\x84", + "\xD1\xEA" => "\xE6\xA0\xB4", + "\xD1\xEB" => "\xE6\xA0\x9D", + "\xD1\xEC" => "\xE6\xA0\x92", + "\xD1\xED" => "\xE6\xA0\x94", + "\xD1\xEE" => "\xE6\xA0\xA6", + "\xD1\xEF" => "\xE6\xA0\xA8", + "\xD1\xF0" => "\xE6\xA0\xAE", + "\xD1\xF1" => "\xE6\xA1\x8D", + "\xD1\xF2" => "\xE6\xA0\xBA", + "\xD1\xF3" => "\xE6\xA0\xA5", + "\xD1\xF4" => "\xE6\xA0\xA0", + "\xD1\xF5" => "\xE6\xAC\xAC", + "\xD1\xF6" => "\xE6\xAC\xAF", + "\xD1\xF7" => "\xE6\xAC\xAD", + "\xD1\xF8" => "\xE6\xAC\xB1", + "\xD1\xF9" => "\xE6\xAC\xB4", + "\xD1\xFA" => "\xE6\xAD\xAD", + "\xD1\xFB" => "\xE8\x82\x82", + "\xD1\xFC" => "\xE6\xAE\x88", + "\xD1\xFD" => "\xE6\xAF\xA6", + "\xD1\xFE" => "\xE6\xAF\xA4", + "\xD2\x40" => "\xE6\xAF\xA8", + "\xD2\x41" => "\xE6\xAF\xA3", + "\xD2\x42" => "\xE6\xAF\xA2", + "\xD2\x43" => "\xE6\xAF\xA7", + "\xD2\x44" => "\xE6\xB0\xA5", + "\xD2\x45" => "\xE6\xB5\xBA", + "\xD2\x46" => "\xE6\xB5\xA3", + "\xD2\x47" => "\xE6\xB5\xA4", + "\xD2\x48" => "\xE6\xB5\xB6", + "\xD2\x49" => "\xE6\xB4\x8D", + "\xD2\x4A" => "\xE6\xB5\xA1", + "\xD2\x4B" => "\xE6\xB6\x92", + "\xD2\x4C" => "\xE6\xB5\x98", + "\xD2\x4D" => "\xE6\xB5\xA2", + "\xD2\x4E" => "\xE6\xB5\xAD", + "\xD2\x4F" => "\xE6\xB5\xAF", + "\xD2\x50" => "\xE6\xB6\x91", + "\xD2\x51" => "\xE6\xB6\x8D", + "\xD2\x52" => "\xE6\xB7\xAF", + "\xD2\x53" => "\xE6\xB5\xBF", + "\xD2\x54" => "\xE6\xB6\x86", + "\xD2\x55" => "\xE6\xB5\x9E", + "\xD2\x56" => "\xE6\xB5\xA7", + "\xD2\x57" => "\xE6\xB5\xA0", + "\xD2\x58" => "\xE6\xB6\x97", + "\xD2\x59" => "\xE6\xB5\xB0", + "\xD2\x5A" => "\xE6\xB5\xBC", + "\xD2\x5B" => "\xE6\xB5\x9F", + "\xD2\x5C" => "\xE6\xB6\x82", + "\xD2\x5D" => "\xE6\xB6\x98", + "\xD2\x5E" => "\xE6\xB4\xAF", + "\xD2\x5F" => "\xE6\xB5\xA8", + "\xD2\x60" => "\xE6\xB6\x8B", + "\xD2\x61" => "\xE6\xB5\xBE", + "\xD2\x62" => "\xE6\xB6\x80", + "\xD2\x63" => "\xE6\xB6\x84", + "\xD2\x64" => "\xE6\xB4\x96", + "\xD2\x65" => "\xE6\xB6\x83", + "\xD2\x66" => "\xE6\xB5\xBB", + "\xD2\x67" => "\xE6\xB5\xBD", + "\xD2\x68" => "\xE6\xB5\xB5", + "\xD2\x69" => "\xE6\xB6\x90", + "\xD2\x6A" => "\xE7\x83\x9C", + "\xD2\x6B" => "\xE7\x83\x93", + "\xD2\x6C" => "\xE7\x83\x91", + "\xD2\x6D" => "\xE7\x83\x9D", + "\xD2\x6E" => "\xE7\x83\x8B", + "\xD2\x6F" => "\xE7\xBC\xB9", + "\xD2\x70" => "\xE7\x83\xA2", + "\xD2\x71" => "\xE7\x83\x97", + "\xD2\x72" => "\xE7\x83\x92", + "\xD2\x73" => "\xE7\x83\x9E", + "\xD2\x74" => "\xE7\x83\xA0", + "\xD2\x75" => "\xE7\x83\x94", + "\xD2\x76" => "\xE7\x83\x8D", + "\xD2\x77" => "\xE7\x83\x85", + "\xD2\x78" => "\xE7\x83\x86", + "\xD2\x79" => "\xE7\x83\x87", + "\xD2\x7A" => "\xE7\x83\x9A", + "\xD2\x7B" => "\xE7\x83\x8E", + "\xD2\x7C" => "\xE7\x83\xA1", + "\xD2\x7D" => "\xE7\x89\x82", + "\xD2\x7E" => "\xE7\x89\xB8", + "\xD2\xA1" => "\xE7\x89\xB7", + "\xD2\xA2" => "\xE7\x89\xB6", + "\xD2\xA3" => "\xE7\x8C\x80", + "\xD2\xA4" => "\xE7\x8B\xBA", + "\xD2\xA5" => "\xE7\x8B\xB4", + "\xD2\xA6" => "\xE7\x8B\xBE", + "\xD2\xA7" => "\xE7\x8B\xB6", + "\xD2\xA8" => "\xE7\x8B\xB3", + "\xD2\xA9" => "\xE7\x8B\xBB", + "\xD2\xAA" => "\xE7\x8C\x81", + "\xD2\xAB" => "\xE7\x8F\x93", + "\xD2\xAC" => "\xE7\x8F\x99", + "\xD2\xAD" => "\xE7\x8F\xA5", + "\xD2\xAE" => "\xE7\x8F\x96", + "\xD2\xAF" => "\xE7\x8E\xBC", + "\xD2\xB0" => "\xE7\x8F\xA7", + "\xD2\xB1" => "\xE7\x8F\xA3", + "\xD2\xB2" => "\xE7\x8F\xA9", + "\xD2\xB3" => "\xE7\x8F\x9C", + "\xD2\xB4" => "\xE7\x8F\x92", + "\xD2\xB5" => "\xE7\x8F\x9B", + "\xD2\xB6" => "\xE7\x8F\x94", + "\xD2\xB7" => "\xE7\x8F\x9D", + "\xD2\xB8" => "\xE7\x8F\x9A", + "\xD2\xB9" => "\xE7\x8F\x97", + "\xD2\xBA" => "\xE7\x8F\x98", + "\xD2\xBB" => "\xE7\x8F\xA8", + "\xD2\xBC" => "\xE7\x93\x9E", + "\xD2\xBD" => "\xE7\x93\x9F", + "\xD2\xBE" => "\xE7\x93\xB4", + "\xD2\xBF" => "\xE7\x93\xB5", + "\xD2\xC0" => "\xE7\x94\xA1", + "\xD2\xC1" => "\xE7\x95\x9B", + "\xD2\xC2" => "\xE7\x95\x9F", + "\xD2\xC3" => "\xE7\x96\xB0", + "\xD2\xC4" => "\xE7\x97\x81", + "\xD2\xC5" => "\xE7\x96\xBB", + "\xD2\xC6" => "\xE7\x97\x84", + "\xD2\xC7" => "\xE7\x97\x80", + "\xD2\xC8" => "\xE7\x96\xBF", + "\xD2\xC9" => "\xE7\x96\xB6", + "\xD2\xCA" => "\xE7\x96\xBA", + "\xD2\xCB" => "\xE7\x9A\x8A", + "\xD2\xCC" => "\xE7\x9B\x89", + "\xD2\xCD" => "\xE7\x9C\x9D", + "\xD2\xCE" => "\xE7\x9C\x9B", + "\xD2\xCF" => "\xE7\x9C\x90", + "\xD2\xD0" => "\xE7\x9C\x93", + "\xD2\xD1" => "\xE7\x9C\x92", + "\xD2\xD2" => "\xE7\x9C\xA3", + "\xD2\xD3" => "\xE7\x9C\x91", + "\xD2\xD4" => "\xE7\x9C\x95", + "\xD2\xD5" => "\xE7\x9C\x99", + "\xD2\xD6" => "\xE7\x9C\x9A", + "\xD2\xD7" => "\xE7\x9C\xA2", + "\xD2\xD8" => "\xE7\x9C\xA7", + "\xD2\xD9" => "\xE7\xA0\xA3", + "\xD2\xDA" => "\xE7\xA0\xAC", + "\xD2\xDB" => "\xE7\xA0\xA2", + "\xD2\xDC" => "\xE7\xA0\xB5", + "\xD2\xDD" => "\xE7\xA0\xAF", + "\xD2\xDE" => "\xE7\xA0\xA8", + "\xD2\xDF" => "\xE7\xA0\xAE", + "\xD2\xE0" => "\xE7\xA0\xAB", + "\xD2\xE1" => "\xE7\xA0\xA1", + "\xD2\xE2" => "\xE7\xA0\xA9", + "\xD2\xE3" => "\xE7\xA0\xB3", + "\xD2\xE4" => "\xE7\xA0\xAA", + "\xD2\xE5" => "\xE7\xA0\xB1", + "\xD2\xE6" => "\xE7\xA5\x94", + "\xD2\xE7" => "\xE7\xA5\x9B", + "\xD2\xE8" => "\xE7\xA5\x8F", + "\xD2\xE9" => "\xE7\xA5\x9C", + "\xD2\xEA" => "\xE7\xA5\x93", + "\xD2\xEB" => "\xE7\xA5\x92", + "\xD2\xEC" => "\xE7\xA5\x91", + "\xD2\xED" => "\xE7\xA7\xAB", + "\xD2\xEE" => "\xE7\xA7\xAC", + "\xD2\xEF" => "\xE7\xA7\xA0", + "\xD2\xF0" => "\xE7\xA7\xAE", + "\xD2\xF1" => "\xE7\xA7\xAD", + "\xD2\xF2" => "\xE7\xA7\xAA", + "\xD2\xF3" => "\xE7\xA7\x9C", + "\xD2\xF4" => "\xE7\xA7\x9E", + "\xD2\xF5" => "\xE7\xA7\x9D", + "\xD2\xF6" => "\xE7\xAA\x86", + "\xD2\xF7" => "\xE7\xAA\x89", + "\xD2\xF8" => "\xE7\xAA\x85", + "\xD2\xF9" => "\xE7\xAA\x8B", + "\xD2\xFA" => "\xE7\xAA\x8C", + "\xD2\xFB" => "\xE7\xAA\x8A", + "\xD2\xFC" => "\xE7\xAA\x87", + "\xD2\xFD" => "\xE7\xAB\x98", + "\xD2\xFE" => "\xE7\xAC\x90", + "\xD3\x40" => "\xE7\xAC\x84", + "\xD3\x41" => "\xE7\xAC\x93", + "\xD3\x42" => "\xE7\xAC\x85", + "\xD3\x43" => "\xE7\xAC\x8F", + "\xD3\x44" => "\xE7\xAC\x88", + "\xD3\x45" => "\xE7\xAC\x8A", + "\xD3\x46" => "\xE7\xAC\x8E", + "\xD3\x47" => "\xE7\xAC\x89", + "\xD3\x48" => "\xE7\xAC\x92", + "\xD3\x49" => "\xE7\xB2\x84", + "\xD3\x4A" => "\xE7\xB2\x91", + "\xD3\x4B" => "\xE7\xB2\x8A", + "\xD3\x4C" => "\xE7\xB2\x8C", + "\xD3\x4D" => "\xE7\xB2\x88", + "\xD3\x4E" => "\xE7\xB2\x8D", + "\xD3\x4F" => "\xE7\xB2\x85", + "\xD3\x50" => "\xE7\xB4\x9E", + "\xD3\x51" => "\xE7\xB4\x9D", + "\xD3\x52" => "\xE7\xB4\x91", + "\xD3\x53" => "\xE7\xB4\x8E", + "\xD3\x54" => "\xE7\xB4\x98", + "\xD3\x55" => "\xE7\xB4\x96", + "\xD3\x56" => "\xE7\xB4\x93", + "\xD3\x57" => "\xE7\xB4\x9F", + "\xD3\x58" => "\xE7\xB4\x92", + "\xD3\x59" => "\xE7\xB4\x8F", + "\xD3\x5A" => "\xE7\xB4\x8C", + "\xD3\x5B" => "\xE7\xBD\x9C", + "\xD3\x5C" => "\xE7\xBD\xA1", + "\xD3\x5D" => "\xE7\xBD\x9E", + "\xD3\x5E" => "\xE7\xBD\xA0", + "\xD3\x5F" => "\xE7\xBD\x9D", + "\xD3\x60" => "\xE7\xBD\x9B", + "\xD3\x61" => "\xE7\xBE\x96", + "\xD3\x62" => "\xE7\xBE\x92", + "\xD3\x63" => "\xE7\xBF\x83", + "\xD3\x64" => "\xE7\xBF\x82", + "\xD3\x65" => "\xE7\xBF\x80", + "\xD3\x66" => "\xE8\x80\x96", + "\xD3\x67" => "\xE8\x80\xBE", + "\xD3\x68" => "\xE8\x80\xB9", + "\xD3\x69" => "\xE8\x83\xBA", + "\xD3\x6A" => "\xE8\x83\xB2", + "\xD3\x6B" => "\xE8\x83\xB9", + "\xD3\x6C" => "\xE8\x83\xB5", + "\xD3\x6D" => "\xE8\x84\x81", + "\xD3\x6E" => "\xE8\x83\xBB", + "\xD3\x6F" => "\xE8\x84\x80", + "\xD3\x70" => "\xE8\x88\x81", + "\xD3\x71" => "\xE8\x88\xAF", + "\xD3\x72" => "\xE8\x88\xA5", + "\xD3\x73" => "\xE8\x8C\xB3", + "\xD3\x74" => "\xE8\x8C\xAD", + "\xD3\x75" => "\xE8\x8D\x84", + "\xD3\x76" => "\xE8\x8C\x99", + "\xD3\x77" => "\xE8\x8D\x91", + "\xD3\x78" => "\xE8\x8C\xA5", + "\xD3\x79" => "\xE8\x8D\x96", + "\xD3\x7A" => "\xE8\x8C\xBF", + "\xD3\x7B" => "\xE8\x8D\x81", + "\xD3\x7C" => "\xE8\x8C\xA6", + "\xD3\x7D" => "\xE8\x8C\x9C", + "\xD3\x7E" => "\xE8\x8C\xA2", + "\xD3\xA1" => "\xE8\x8D\x82", + "\xD3\xA2" => "\xE8\x8D\x8E", + "\xD3\xA3" => "\xE8\x8C\x9B", + "\xD3\xA4" => "\xE8\x8C\xAA", + "\xD3\xA5" => "\xE8\x8C\x88", + "\xD3\xA6" => "\xE8\x8C\xBC", + "\xD3\xA7" => "\xE8\x8D\x8D", + "\xD3\xA8" => "\xE8\x8C\x96", + "\xD3\xA9" => "\xE8\x8C\xA4", + "\xD3\xAA" => "\xE8\x8C\xA0", + "\xD3\xAB" => "\xE8\x8C\xB7", + "\xD3\xAC" => "\xE8\x8C\xAF", + "\xD3\xAD" => "\xE8\x8C\xA9", + "\xD3\xAE" => "\xE8\x8D\x87", + "\xD3\xAF" => "\xE8\x8D\x85", + "\xD3\xB0" => "\xE8\x8D\x8C", + "\xD3\xB1" => "\xE8\x8D\x93", + "\xD3\xB2" => "\xE8\x8C\x9E", + "\xD3\xB3" => "\xE8\x8C\xAC", + "\xD3\xB4" => "\xE8\x8D\x8B", + "\xD3\xB5" => "\xE8\x8C\xA7", + "\xD3\xB6" => "\xE8\x8D\x88", + "\xD3\xB7" => "\xE8\x99\x93", + "\xD3\xB8" => "\xE8\x99\x92", + "\xD3\xB9" => "\xE8\x9A\xA2", + "\xD3\xBA" => "\xE8\x9A\xA8", + "\xD3\xBB" => "\xE8\x9A\x96", + "\xD3\xBC" => "\xE8\x9A\x8D", + "\xD3\xBD" => "\xE8\x9A\x91", + "\xD3\xBE" => "\xE8\x9A\x9E", + "\xD3\xBF" => "\xE8\x9A\x87", + "\xD3\xC0" => "\xE8\x9A\x97", + "\xD3\xC1" => "\xE8\x9A\x86", + "\xD3\xC2" => "\xE8\x9A\x8B", + "\xD3\xC3" => "\xE8\x9A\x9A", + "\xD3\xC4" => "\xE8\x9A\x85", + "\xD3\xC5" => "\xE8\x9A\xA5", + "\xD3\xC6" => "\xE8\x9A\x99", + "\xD3\xC7" => "\xE8\x9A\xA1", + "\xD3\xC8" => "\xE8\x9A\xA7", + "\xD3\xC9" => "\xE8\x9A\x95", + "\xD3\xCA" => "\xE8\x9A\x98", + "\xD3\xCB" => "\xE8\x9A\x8E", + "\xD3\xCC" => "\xE8\x9A\x9D", + "\xD3\xCD" => "\xE8\x9A\x90", + "\xD3\xCE" => "\xE8\x9A\x94", + "\xD3\xCF" => "\xE8\xA1\x83", + "\xD3\xD0" => "\xE8\xA1\x84", + "\xD3\xD1" => "\xE8\xA1\xAD", + "\xD3\xD2" => "\xE8\xA1\xB5", + "\xD3\xD3" => "\xE8\xA1\xB6", + "\xD3\xD4" => "\xE8\xA1\xB2", + "\xD3\xD5" => "\xE8\xA2\x80", + "\xD3\xD6" => "\xE8\xA1\xB1", + "\xD3\xD7" => "\xE8\xA1\xBF", + "\xD3\xD8" => "\xE8\xA1\xAF", + "\xD3\xD9" => "\xE8\xA2\x83", + "\xD3\xDA" => "\xE8\xA1\xBE", + "\xD3\xDB" => "\xE8\xA1\xB4", + "\xD3\xDC" => "\xE8\xA1\xBC", + "\xD3\xDD" => "\xE8\xA8\x92", + "\xD3\xDE" => "\xE8\xB1\x87", + "\xD3\xDF" => "\xE8\xB1\x97", + "\xD3\xE0" => "\xE8\xB1\xBB", + "\xD3\xE1" => "\xE8\xB2\xA4", + "\xD3\xE2" => "\xE8\xB2\xA3", + "\xD3\xE3" => "\xE8\xB5\xB6", + "\xD3\xE4" => "\xE8\xB5\xB8", + "\xD3\xE5" => "\xE8\xB6\xB5", + "\xD3\xE6" => "\xE8\xB6\xB7", + "\xD3\xE7" => "\xE8\xB6\xB6", + "\xD3\xE8" => "\xE8\xBB\x91", + "\xD3\xE9" => "\xE8\xBB\x93", + "\xD3\xEA" => "\xE8\xBF\xBE", + "\xD3\xEB" => "\xE8\xBF\xB5", + "\xD3\xEC" => "\xE9\x80\x82", + "\xD3\xED" => "\xE8\xBF\xBF", + "\xD3\xEE" => "\xE8\xBF\xBB", + "\xD3\xEF" => "\xE9\x80\x84", + "\xD3\xF0" => "\xE8\xBF\xBC", + "\xD3\xF1" => "\xE8\xBF\xB6", + "\xD3\xF2" => "\xE9\x83\x96", + "\xD3\xF3" => "\xE9\x83\xA0", + "\xD3\xF4" => "\xE9\x83\x99", + "\xD3\xF5" => "\xE9\x83\x9A", + "\xD3\xF6" => "\xE9\x83\xA3", + "\xD3\xF7" => "\xE9\x83\x9F", + "\xD3\xF8" => "\xE9\x83\xA5", + "\xD3\xF9" => "\xE9\x83\x98", + "\xD3\xFA" => "\xE9\x83\x9B", + "\xD3\xFB" => "\xE9\x83\x97", + "\xD3\xFC" => "\xE9\x83\x9C", + "\xD3\xFD" => "\xE9\x83\xA4", + "\xD3\xFE" => "\xE9\x85\x90", + "\xD4\x40" => "\xE9\x85\x8E", + "\xD4\x41" => "\xE9\x85\x8F", + "\xD4\x42" => "\xE9\x87\x95", + "\xD4\x43" => "\xE9\x87\xA2", + "\xD4\x44" => "\xE9\x87\x9A", + "\xD4\x45" => "\xE9\x99\x9C", + "\xD4\x46" => "\xE9\x99\x9F", + "\xD4\x47" => "\xE9\x9A\xBC", + "\xD4\x48" => "\xE9\xA3\xA3", + "\xD4\x49" => "\xE9\xAB\x9F", + "\xD4\x4A" => "\xE9\xAC\xAF", + "\xD4\x4B" => "\xE4\xB9\xBF", + "\xD4\x4C" => "\xE5\x81\xB0", + "\xD4\x4D" => "\xE5\x81\xAA", + "\xD4\x4E" => "\xE5\x81\xA1", + "\xD4\x4F" => "\xE5\x81\x9E", + "\xD4\x50" => "\xE5\x81\xA0", + "\xD4\x51" => "\xE5\x81\x93", + "\xD4\x52" => "\xE5\x81\x8B", + "\xD4\x53" => "\xE5\x81\x9D", + "\xD4\x54" => "\xE5\x81\xB2", + "\xD4\x55" => "\xE5\x81\x88", + "\xD4\x56" => "\xE5\x81\x8D", + "\xD4\x57" => "\xE5\x81\x81", + "\xD4\x58" => "\xE5\x81\x9B", + "\xD4\x59" => "\xE5\x81\x8A", + "\xD4\x5A" => "\xE5\x81\xA2", + "\xD4\x5B" => "\xE5\x80\x95", + "\xD4\x5C" => "\xE5\x81\x85", + "\xD4\x5D" => "\xE5\x81\x9F", + "\xD4\x5E" => "\xE5\x81\xA9", + "\xD4\x5F" => "\xE5\x81\xAB", + "\xD4\x60" => "\xE5\x81\xA3", + "\xD4\x61" => "\xE5\x81\xA4", + "\xD4\x62" => "\xE5\x81\x86", + "\xD4\x63" => "\xE5\x81\x80", + "\xD4\x64" => "\xE5\x81\xAE", + "\xD4\x65" => "\xE5\x81\xB3", + "\xD4\x66" => "\xE5\x81\x97", + "\xD4\x67" => "\xE5\x81\x91", + "\xD4\x68" => "\xE5\x87\x90", + "\xD4\x69" => "\xE5\x89\xAB", + "\xD4\x6A" => "\xE5\x89\xAD", + "\xD4\x6B" => "\xE5\x89\xAC", + "\xD4\x6C" => "\xE5\x89\xAE", + "\xD4\x6D" => "\xE5\x8B\x96", + "\xD4\x6E" => "\xE5\x8B\x93", + "\xD4\x6F" => "\xE5\x8C\xAD", + "\xD4\x70" => "\xE5\x8E\x9C", + "\xD4\x71" => "\xE5\x95\xB5", + "\xD4\x72" => "\xE5\x95\xB6", + "\xD4\x73" => "\xE5\x94\xBC", + "\xD4\x74" => "\xE5\x95\x8D", + "\xD4\x75" => "\xE5\x95\x90", + "\xD4\x76" => "\xE5\x94\xB4", + "\xD4\x77" => "\xE5\x94\xAA", + "\xD4\x78" => "\xE5\x95\x91", + "\xD4\x79" => "\xE5\x95\xA2", + "\xD4\x7A" => "\xE5\x94\xB6", + "\xD4\x7B" => "\xE5\x94\xB5", + "\xD4\x7C" => "\xE5\x94\xB0", + "\xD4\x7D" => "\xE5\x95\x92", + "\xD4\x7E" => "\xE5\x95\x85", + "\xD4\xA1" => "\xE5\x94\x8C", + "\xD4\xA2" => "\xE5\x94\xB2", + "\xD4\xA3" => "\xE5\x95\xA5", + "\xD4\xA4" => "\xE5\x95\x8E", + "\xD4\xA5" => "\xE5\x94\xB9", + "\xD4\xA6" => "\xE5\x95\x88", + "\xD4\xA7" => "\xE5\x94\xAD", + "\xD4\xA8" => "\xE5\x94\xBB", + "\xD4\xA9" => "\xE5\x95\x80", + "\xD4\xAA" => "\xE5\x95\x8B", + "\xD4\xAB" => "\xE5\x9C\x8A", + "\xD4\xAC" => "\xE5\x9C\x87", + "\xD4\xAD" => "\xE5\x9F\xBB", + "\xD4\xAE" => "\xE5\xA0\x94", + "\xD4\xAF" => "\xE5\x9F\xA2", + "\xD4\xB0" => "\xE5\x9F\xB6", + "\xD4\xB1" => "\xE5\x9F\x9C", + "\xD4\xB2" => "\xE5\x9F\xB4", + "\xD4\xB3" => "\xE5\xA0\x80", + "\xD4\xB4" => "\xE5\x9F\xAD", + "\xD4\xB5" => "\xE5\x9F\xBD", + "\xD4\xB6" => "\xE5\xA0\x88", + "\xD4\xB7" => "\xE5\x9F\xB8", + "\xD4\xB8" => "\xE5\xA0\x8B", + "\xD4\xB9" => "\xE5\x9F\xB3", + "\xD4\xBA" => "\xE5\x9F\x8F", + "\xD4\xBB" => "\xE5\xA0\x87", + "\xD4\xBC" => "\xE5\x9F\xAE", + "\xD4\xBD" => "\xE5\x9F\xA3", + "\xD4\xBE" => "\xE5\x9F\xB2", + "\xD4\xBF" => "\xE5\x9F\xA5", + "\xD4\xC0" => "\xE5\x9F\xAC", + "\xD4\xC1" => "\xE5\x9F\xA1", + "\xD4\xC2" => "\xE5\xA0\x8E", + "\xD4\xC3" => "\xE5\x9F\xBC", + "\xD4\xC4" => "\xE5\xA0\x90", + "\xD4\xC5" => "\xE5\x9F\xA7", + "\xD4\xC6" => "\xE5\xA0\x81", + "\xD4\xC7" => "\xE5\xA0\x8C", + "\xD4\xC8" => "\xE5\x9F\xB1", + "\xD4\xC9" => "\xE5\x9F\xA9", + "\xD4\xCA" => "\xE5\x9F\xB0", + "\xD4\xCB" => "\xE5\xA0\x8D", + "\xD4\xCC" => "\xE5\xA0\x84", + "\xD4\xCD" => "\xE5\xA5\x9C", + "\xD4\xCE" => "\xE5\xA9\xA0", + "\xD4\xCF" => "\xE5\xA9\x98", + "\xD4\xD0" => "\xE5\xA9\x95", + "\xD4\xD1" => "\xE5\xA9\xA7", + "\xD4\xD2" => "\xE5\xA9\x9E", + "\xD4\xD3" => "\xE5\xA8\xB8", + "\xD4\xD4" => "\xE5\xA8\xB5", + "\xD4\xD5" => "\xE5\xA9\xAD", + "\xD4\xD6" => "\xE5\xA9\x90", + "\xD4\xD7" => "\xE5\xA9\x9F", + "\xD4\xD8" => "\xE5\xA9\xA5", + "\xD4\xD9" => "\xE5\xA9\xAC", + "\xD4\xDA" => "\xE5\xA9\x93", + "\xD4\xDB" => "\xE5\xA9\xA4", + "\xD4\xDC" => "\xE5\xA9\x97", + "\xD4\xDD" => "\xE5\xA9\x83", + "\xD4\xDE" => "\xE5\xA9\x9D", + "\xD4\xDF" => "\xE5\xA9\x92", + "\xD4\xE0" => "\xE5\xA9\x84", + "\xD4\xE1" => "\xE5\xA9\x9B", + "\xD4\xE2" => "\xE5\xA9\x88", + "\xD4\xE3" => "\xE5\xAA\x8E", + "\xD4\xE4" => "\xE5\xA8\xBE", + "\xD4\xE5" => "\xE5\xA9\x8D", + "\xD4\xE6" => "\xE5\xA8\xB9", + "\xD4\xE7" => "\xE5\xA9\x8C", + "\xD4\xE8" => "\xE5\xA9\xB0", + "\xD4\xE9" => "\xE5\xA9\xA9", + "\xD4\xEA" => "\xE5\xA9\x87", + "\xD4\xEB" => "\xE5\xA9\x91", + "\xD4\xEC" => "\xE5\xA9\x96", + "\xD4\xED" => "\xE5\xA9\x82", + "\xD4\xEE" => "\xE5\xA9\x9C", + "\xD4\xEF" => "\xE5\xAD\xB2", + "\xD4\xF0" => "\xE5\xAD\xAE", + "\xD4\xF1" => "\xE5\xAF\x81", + "\xD4\xF2" => "\xE5\xAF\x80", + "\xD4\xF3" => "\xE5\xB1\x99", + "\xD4\xF4" => "\xE5\xB4\x9E", + "\xD4\xF5" => "\xE5\xB4\x8B", + "\xD4\xF6" => "\xE5\xB4\x9D", + "\xD4\xF7" => "\xE5\xB4\x9A", + "\xD4\xF8" => "\xE5\xB4\xA0", + "\xD4\xF9" => "\xE5\xB4\x8C", + "\xD4\xFA" => "\xE5\xB4\xA8", + "\xD4\xFB" => "\xE5\xB4\x8D", + "\xD4\xFC" => "\xE5\xB4\xA6", + "\xD4\xFD" => "\xE5\xB4\xA5", + "\xD4\xFE" => "\xE5\xB4\x8F", + "\xD5\x40" => "\xE5\xB4\xB0", + "\xD5\x41" => "\xE5\xB4\x92", + "\xD5\x42" => "\xE5\xB4\xA3", + "\xD5\x43" => "\xE5\xB4\x9F", + "\xD5\x44" => "\xE5\xB4\xAE", + "\xD5\x45" => "\xE5\xB8\xBE", + "\xD5\x46" => "\xE5\xB8\xB4", + "\xD5\x47" => "\xE5\xBA\xB1", + "\xD5\x48" => "\xE5\xBA\xB4", + "\xD5\x49" => "\xE5\xBA\xB9", + "\xD5\x4A" => "\xE5\xBA\xB2", + "\xD5\x4B" => "\xE5\xBA\xB3", + "\xD5\x4C" => "\xE5\xBC\xB6", + "\xD5\x4D" => "\xE5\xBC\xB8", + "\xD5\x4E" => "\xE5\xBE\x9B", + "\xD5\x4F" => "\xE5\xBE\x96", + "\xD5\x50" => "\xE5\xBE\x9F", + "\xD5\x51" => "\xE6\x82\x8A", + "\xD5\x52" => "\xE6\x82\x90", + "\xD5\x53" => "\xE6\x82\x86", + "\xD5\x54" => "\xE6\x82\xBE", + "\xD5\x55" => "\xE6\x82\xB0", + "\xD5\x56" => "\xE6\x82\xBA", + "\xD5\x57" => "\xE6\x83\x93", + "\xD5\x58" => "\xE6\x83\x94", + "\xD5\x59" => "\xE6\x83\x8F", + "\xD5\x5A" => "\xE6\x83\xA4", + "\xD5\x5B" => "\xE6\x83\x99", + "\xD5\x5C" => "\xE6\x83\x9D", + "\xD5\x5D" => "\xE6\x83\x88", + "\xD5\x5E" => "\xE6\x82\xB1", + "\xD5\x5F" => "\xE6\x83\x9B", + "\xD5\x60" => "\xE6\x82\xB7", + "\xD5\x61" => "\xE6\x83\x8A", + "\xD5\x62" => "\xE6\x82\xBF", + "\xD5\x63" => "\xE6\x83\x83", + "\xD5\x64" => "\xE6\x83\x8D", + "\xD5\x65" => "\xE6\x83\x80", + "\xD5\x66" => "\xE6\x8C\xB2", + "\xD5\x67" => "\xE6\x8D\xA5", + "\xD5\x68" => "\xE6\x8E\x8A", + "\xD5\x69" => "\xE6\x8E\x82", + "\xD5\x6A" => "\xE6\x8D\xBD", + "\xD5\x6B" => "\xE6\x8E\xBD", + "\xD5\x6C" => "\xE6\x8E\x9E", + "\xD5\x6D" => "\xE6\x8E\xAD", + "\xD5\x6E" => "\xE6\x8E\x9D", + "\xD5\x6F" => "\xE6\x8E\x97", + "\xD5\x70" => "\xE6\x8E\xAB", + "\xD5\x71" => "\xE6\x8E\x8E", + "\xD5\x72" => "\xE6\x8D\xAF", + "\xD5\x73" => "\xE6\x8E\x87", + "\xD5\x74" => "\xE6\x8E\x90", + "\xD5\x75" => "\xE6\x8D\xAE", + "\xD5\x76" => "\xE6\x8E\xAF", + "\xD5\x77" => "\xE6\x8D\xB5", + "\xD5\x78" => "\xE6\x8E\x9C", + "\xD5\x79" => "\xE6\x8D\xAD", + "\xD5\x7A" => "\xE6\x8E\xAE", + "\xD5\x7B" => "\xE6\x8D\xBC", + "\xD5\x7C" => "\xE6\x8E\xA4", + "\xD5\x7D" => "\xE6\x8C\xBB", + "\xD5\x7E" => "\xE6\x8E\x9F", + "\xD5\xA1" => "\xE6\x8D\xB8", + "\xD5\xA2" => "\xE6\x8E\x85", + "\xD5\xA3" => "\xE6\x8E\x81", + "\xD5\xA4" => "\xE6\x8E\x91", + "\xD5\xA5" => "\xE6\x8E\x8D", + "\xD5\xA6" => "\xE6\x8D\xB0", + "\xD5\xA7" => "\xE6\x95\x93", + "\xD5\xA8" => "\xE6\x97\x8D", + "\xD5\xA9" => "\xE6\x99\xA5", + "\xD5\xAA" => "\xE6\x99\xA1", + "\xD5\xAB" => "\xE6\x99\x9B", + "\xD5\xAC" => "\xE6\x99\x99", + "\xD5\xAD" => "\xE6\x99\x9C", + "\xD5\xAE" => "\xE6\x99\xA2", + "\xD5\xAF" => "\xE6\x9C\x98", + "\xD5\xB0" => "\xE6\xA1\xB9", + "\xD5\xB1" => "\xE6\xA2\x87", + "\xD5\xB2" => "\xE6\xA2\x90", + "\xD5\xB3" => "\xE6\xA2\x9C", + "\xD5\xB4" => "\xE6\xA1\xAD", + "\xD5\xB5" => "\xE6\xA1\xAE", + "\xD5\xB6" => "\xE6\xA2\xAE", + "\xD5\xB7" => "\xE6\xA2\xAB", + "\xD5\xB8" => "\xE6\xA5\x96", + "\xD5\xB9" => "\xE6\xA1\xAF", + "\xD5\xBA" => "\xE6\xA2\xA3", + "\xD5\xBB" => "\xE6\xA2\xAC", + "\xD5\xBC" => "\xE6\xA2\xA9", + "\xD5\xBD" => "\xE6\xA1\xB5", + "\xD5\xBE" => "\xE6\xA1\xB4", + "\xD5\xBF" => "\xE6\xA2\xB2", + "\xD5\xC0" => "\xE6\xA2\x8F", + "\xD5\xC1" => "\xE6\xA1\xB7", + "\xD5\xC2" => "\xE6\xA2\x92", + "\xD5\xC3" => "\xE6\xA1\xBC", + "\xD5\xC4" => "\xE6\xA1\xAB", + "\xD5\xC5" => "\xE6\xA1\xB2", + "\xD5\xC6" => "\xE6\xA2\xAA", + "\xD5\xC7" => "\xE6\xA2\x80", + "\xD5\xC8" => "\xE6\xA1\xB1", + "\xD5\xC9" => "\xE6\xA1\xBE", + "\xD5\xCA" => "\xE6\xA2\x9B", + "\xD5\xCB" => "\xE6\xA2\x96", + "\xD5\xCC" => "\xE6\xA2\x8B", + "\xD5\xCD" => "\xE6\xA2\xA0", + "\xD5\xCE" => "\xE6\xA2\x89", + "\xD5\xCF" => "\xE6\xA2\xA4", + "\xD5\xD0" => "\xE6\xA1\xB8", + "\xD5\xD1" => "\xE6\xA1\xBB", + "\xD5\xD2" => "\xE6\xA2\x91", + "\xD5\xD3" => "\xE6\xA2\x8C", + "\xD5\xD4" => "\xE6\xA2\x8A", + "\xD5\xD5" => "\xE6\xA1\xBD", + "\xD5\xD6" => "\xE6\xAC\xB6", + "\xD5\xD7" => "\xE6\xAC\xB3", + "\xD5\xD8" => "\xE6\xAC\xB7", + "\xD5\xD9" => "\xE6\xAC\xB8", + "\xD5\xDA" => "\xE6\xAE\x91", + "\xD5\xDB" => "\xE6\xAE\x8F", + "\xD5\xDC" => "\xE6\xAE\x8D", + "\xD5\xDD" => "\xE6\xAE\x8E", + "\xD5\xDE" => "\xE6\xAE\x8C", + "\xD5\xDF" => "\xE6\xB0\xAA", + "\xD5\xE0" => "\xE6\xB7\x80", + "\xD5\xE1" => "\xE6\xB6\xAB", + "\xD5\xE2" => "\xE6\xB6\xB4", + "\xD5\xE3" => "\xE6\xB6\xB3", + "\xD5\xE4" => "\xE6\xB9\xB4", + "\xD5\xE5" => "\xE6\xB6\xAC", + "\xD5\xE6" => "\xE6\xB7\xA9", + "\xD5\xE7" => "\xE6\xB7\xA2", + "\xD5\xE8" => "\xE6\xB6\xB7", + "\xD5\xE9" => "\xE6\xB7\xB6", + "\xD5\xEA" => "\xE6\xB7\x94", + "\xD5\xEB" => "\xE6\xB8\x80", + "\xD5\xEC" => "\xE6\xB7\x88", + "\xD5\xED" => "\xE6\xB7\xA0", + "\xD5\xEE" => "\xE6\xB7\x9F", + "\xD5\xEF" => "\xE6\xB7\x96", + "\xD5\xF0" => "\xE6\xB6\xBE", + "\xD5\xF1" => "\xE6\xB7\xA5", + "\xD5\xF2" => "\xE6\xB7\x9C", + "\xD5\xF3" => "\xE6\xB7\x9D", + "\xD5\xF4" => "\xE6\xB7\x9B", + "\xD5\xF5" => "\xE6\xB7\xB4", + "\xD5\xF6" => "\xE6\xB7\x8A", + "\xD5\xF7" => "\xE6\xB6\xBD", + "\xD5\xF8" => "\xE6\xB7\xAD", + "\xD5\xF9" => "\xE6\xB7\xB0", + "\xD5\xFA" => "\xE6\xB6\xBA", + "\xD5\xFB" => "\xE6\xB7\x95", + "\xD5\xFC" => "\xE6\xB7\x82", + "\xD5\xFD" => "\xE6\xB7\x8F", + "\xD5\xFE" => "\xE6\xB7\x89", + "\xD6\x40" => "\xE6\xB7\x90", + "\xD6\x41" => "\xE6\xB7\xB2", + "\xD6\x42" => "\xE6\xB7\x93", + "\xD6\x43" => "\xE6\xB7\xBD", + "\xD6\x44" => "\xE6\xB7\x97", + "\xD6\x45" => "\xE6\xB7\x8D", + "\xD6\x46" => "\xE6\xB7\xA3", + "\xD6\x47" => "\xE6\xB6\xBB", + "\xD6\x48" => "\xE7\x83\xBA", + "\xD6\x49" => "\xE7\x84\x8D", + "\xD6\x4A" => "\xE7\x83\xB7", + "\xD6\x4B" => "\xE7\x84\x97", + "\xD6\x4C" => "\xE7\x83\xB4", + "\xD6\x4D" => "\xE7\x84\x8C", + "\xD6\x4E" => "\xE7\x83\xB0", + "\xD6\x4F" => "\xE7\x84\x84", + "\xD6\x50" => "\xE7\x83\xB3", + "\xD6\x51" => "\xE7\x84\x90", + "\xD6\x52" => "\xE7\x83\xBC", + "\xD6\x53" => "\xE7\x83\xBF", + "\xD6\x54" => "\xE7\x84\x86", + "\xD6\x55" => "\xE7\x84\x93", + "\xD6\x56" => "\xE7\x84\x80", + "\xD6\x57" => "\xE7\x83\xB8", + "\xD6\x58" => "\xE7\x83\xB6", + "\xD6\x59" => "\xE7\x84\x8B", + "\xD6\x5A" => "\xE7\x84\x82", + "\xD6\x5B" => "\xE7\x84\x8E", + "\xD6\x5C" => "\xE7\x89\xBE", + "\xD6\x5D" => "\xE7\x89\xBB", + "\xD6\x5E" => "\xE7\x89\xBC", + "\xD6\x5F" => "\xE7\x89\xBF", + "\xD6\x60" => "\xE7\x8C\x9D", + "\xD6\x61" => "\xE7\x8C\x97", + "\xD6\x62" => "\xE7\x8C\x87", + "\xD6\x63" => "\xE7\x8C\x91", + "\xD6\x64" => "\xE7\x8C\x98", + "\xD6\x65" => "\xE7\x8C\x8A", + "\xD6\x66" => "\xE7\x8C\x88", + "\xD6\x67" => "\xE7\x8B\xBF", + "\xD6\x68" => "\xE7\x8C\x8F", + "\xD6\x69" => "\xE7\x8C\x9E", + "\xD6\x6A" => "\xE7\x8E\x88", + "\xD6\x6B" => "\xE7\x8F\xB6", + "\xD6\x6C" => "\xE7\x8F\xB8", + "\xD6\x6D" => "\xE7\x8F\xB5", + "\xD6\x6E" => "\xE7\x90\x84", + "\xD6\x6F" => "\xE7\x90\x81", + "\xD6\x70" => "\xE7\x8F\xBD", + "\xD6\x71" => "\xE7\x90\x87", + "\xD6\x72" => "\xE7\x90\x80", + "\xD6\x73" => "\xE7\x8F\xBA", + "\xD6\x74" => "\xE7\x8F\xBC", + "\xD6\x75" => "\xE7\x8F\xBF", + "\xD6\x76" => "\xE7\x90\x8C", + "\xD6\x77" => "\xE7\x90\x8B", + "\xD6\x78" => "\xE7\x8F\xB4", + "\xD6\x79" => "\xE7\x90\x88", + "\xD6\x7A" => "\xE7\x95\xA4", + "\xD6\x7B" => "\xE7\x95\xA3", + "\xD6\x7C" => "\xE7\x97\x8E", + "\xD6\x7D" => "\xE7\x97\x92", + "\xD6\x7E" => "\xE7\x97\x8F", + "\xD6\xA1" => "\xE7\x97\x8B", + "\xD6\xA2" => "\xE7\x97\x8C", + "\xD6\xA3" => "\xE7\x97\x91", + "\xD6\xA4" => "\xE7\x97\x90", + "\xD6\xA5" => "\xE7\x9A\x8F", + "\xD6\xA6" => "\xE7\x9A\x89", + "\xD6\xA7" => "\xE7\x9B\x93", + "\xD6\xA8" => "\xE7\x9C\xB9", + "\xD6\xA9" => "\xE7\x9C\xAF", + "\xD6\xAA" => "\xE7\x9C\xAD", + "\xD6\xAB" => "\xE7\x9C\xB1", + "\xD6\xAC" => "\xE7\x9C\xB2", + "\xD6\xAD" => "\xE7\x9C\xB4", + "\xD6\xAE" => "\xE7\x9C\xB3", + "\xD6\xAF" => "\xE7\x9C\xBD", + "\xD6\xB0" => "\xE7\x9C\xA5", + "\xD6\xB1" => "\xE7\x9C\xBB", + "\xD6\xB2" => "\xE7\x9C\xB5", + "\xD6\xB3" => "\xE7\xA1\x88", + "\xD6\xB4" => "\xE7\xA1\x92", + "\xD6\xB5" => "\xE7\xA1\x89", + "\xD6\xB6" => "\xE7\xA1\x8D", + "\xD6\xB7" => "\xE7\xA1\x8A", + "\xD6\xB8" => "\xE7\xA1\x8C", + "\xD6\xB9" => "\xE7\xA0\xA6", + "\xD6\xBA" => "\xE7\xA1\x85", + "\xD6\xBB" => "\xE7\xA1\x90", + "\xD6\xBC" => "\xE7\xA5\xA4", + "\xD6\xBD" => "\xE7\xA5\xA7", + "\xD6\xBE" => "\xE7\xA5\xA9", + "\xD6\xBF" => "\xE7\xA5\xAA", + "\xD6\xC0" => "\xE7\xA5\xA3", + "\xD6\xC1" => "\xE7\xA5\xAB", + "\xD6\xC2" => "\xE7\xA5\xA1", + "\xD6\xC3" => "\xE7\xA6\xBB", + "\xD6\xC4" => "\xE7\xA7\xBA", + "\xD6\xC5" => "\xE7\xA7\xB8", + "\xD6\xC6" => "\xE7\xA7\xB6", + "\xD6\xC7" => "\xE7\xA7\xB7", + "\xD6\xC8" => "\xE7\xAA\x8F", + "\xD6\xC9" => "\xE7\xAA\x94", + "\xD6\xCA" => "\xE7\xAA\x90", + "\xD6\xCB" => "\xE7\xAC\xB5", + "\xD6\xCC" => "\xE7\xAD\x87", + "\xD6\xCD" => "\xE7\xAC\xB4", + "\xD6\xCE" => "\xE7\xAC\xA5", + "\xD6\xCF" => "\xE7\xAC\xB0", + "\xD6\xD0" => "\xE7\xAC\xA2", + "\xD6\xD1" => "\xE7\xAC\xA4", + "\xD6\xD2" => "\xE7\xAC\xB3", + "\xD6\xD3" => "\xE7\xAC\x98", + "\xD6\xD4" => "\xE7\xAC\xAA", + "\xD6\xD5" => "\xE7\xAC\x9D", + "\xD6\xD6" => "\xE7\xAC\xB1", + "\xD6\xD7" => "\xE7\xAC\xAB", + "\xD6\xD8" => "\xE7\xAC\xAD", + "\xD6\xD9" => "\xE7\xAC\xAF", + "\xD6\xDA" => "\xE7\xAC\xB2", + "\xD6\xDB" => "\xE7\xAC\xB8", + "\xD6\xDC" => "\xE7\xAC\x9A", + "\xD6\xDD" => "\xE7\xAC\xA3", + "\xD6\xDE" => "\xE7\xB2\x94", + "\xD6\xDF" => "\xE7\xB2\x98", + "\xD6\xE0" => "\xE7\xB2\x96", + "\xD6\xE1" => "\xE7\xB2\xA3", + "\xD6\xE2" => "\xE7\xB4\xB5", + "\xD6\xE3" => "\xE7\xB4\xBD", + "\xD6\xE4" => "\xE7\xB4\xB8", + "\xD6\xE5" => "\xE7\xB4\xB6", + "\xD6\xE6" => "\xE7\xB4\xBA", + "\xD6\xE7" => "\xE7\xB5\x85", + "\xD6\xE8" => "\xE7\xB4\xAC", + "\xD6\xE9" => "\xE7\xB4\xA9", + "\xD6\xEA" => "\xE7\xB5\x81", + "\xD6\xEB" => "\xE7\xB5\x87", + "\xD6\xEC" => "\xE7\xB4\xBE", + "\xD6\xED" => "\xE7\xB4\xBF", + "\xD6\xEE" => "\xE7\xB5\x8A", + "\xD6\xEF" => "\xE7\xB4\xBB", + "\xD6\xF0" => "\xE7\xB4\xA8", + "\xD6\xF1" => "\xE7\xBD\xA3", + "\xD6\xF2" => "\xE7\xBE\x95", + "\xD6\xF3" => "\xE7\xBE\x9C", + "\xD6\xF4" => "\xE7\xBE\x9D", + "\xD6\xF5" => "\xE7\xBE\x9B", + "\xD6\xF6" => "\xE7\xBF\x8A", + "\xD6\xF7" => "\xE7\xBF\x8B", + "\xD6\xF8" => "\xE7\xBF\x8D", + "\xD6\xF9" => "\xE7\xBF\x90", + "\xD6\xFA" => "\xE7\xBF\x91", + "\xD6\xFB" => "\xE7\xBF\x87", + "\xD6\xFC" => "\xE7\xBF\x8F", + "\xD6\xFD" => "\xE7\xBF\x89", + "\xD6\xFE" => "\xE8\x80\x9F", + "\xD7\x40" => "\xE8\x80\x9E", + "\xD7\x41" => "\xE8\x80\x9B", + "\xD7\x42" => "\xE8\x81\x87", + "\xD7\x43" => "\xE8\x81\x83", + "\xD7\x44" => "\xE8\x81\x88", + "\xD7\x45" => "\xE8\x84\x98", + "\xD7\x46" => "\xE8\x84\xA5", + "\xD7\x47" => "\xE8\x84\x99", + "\xD7\x48" => "\xE8\x84\x9B", + "\xD7\x49" => "\xE8\x84\xAD", + "\xD7\x4A" => "\xE8\x84\x9F", + "\xD7\x4B" => "\xE8\x84\xAC", + "\xD7\x4C" => "\xE8\x84\x9E", + "\xD7\x4D" => "\xE8\x84\xA1", + "\xD7\x4E" => "\xE8\x84\x95", + "\xD7\x4F" => "\xE8\x84\xA7", + "\xD7\x50" => "\xE8\x84\x9D", + "\xD7\x51" => "\xE8\x84\xA2", + "\xD7\x52" => "\xE8\x88\x91", + "\xD7\x53" => "\xE8\x88\xB8", + "\xD7\x54" => "\xE8\x88\xB3", + "\xD7\x55" => "\xE8\x88\xBA", + "\xD7\x56" => "\xE8\x88\xB4", + "\xD7\x57" => "\xE8\x88\xB2", + "\xD7\x58" => "\xE8\x89\xB4", + "\xD7\x59" => "\xE8\x8E\x90", + "\xD7\x5A" => "\xE8\x8E\xA3", + "\xD7\x5B" => "\xE8\x8E\xA8", + "\xD7\x5C" => "\xE8\x8E\x8D", + "\xD7\x5D" => "\xE8\x8D\xBA", + "\xD7\x5E" => "\xE8\x8D\xB3", + "\xD7\x5F" => "\xE8\x8E\xA4", + "\xD7\x60" => "\xE8\x8D\xB4", + "\xD7\x61" => "\xE8\x8E\x8F", + "\xD7\x62" => "\xE8\x8E\x81", + "\xD7\x63" => "\xE8\x8E\x95", + "\xD7\x64" => "\xE8\x8E\x99", + "\xD7\x65" => "\xE8\x8D\xB5", + "\xD7\x66" => "\xE8\x8E\x94", + "\xD7\x67" => "\xE8\x8E\xA9", + "\xD7\x68" => "\xE8\x8D\xBD", + "\xD7\x69" => "\xE8\x8E\x83", + "\xD7\x6A" => "\xE8\x8E\x8C", + "\xD7\x6B" => "\xE8\x8E\x9D", + "\xD7\x6C" => "\xE8\x8E\x9B", + "\xD7\x6D" => "\xE8\x8E\xAA", + "\xD7\x6E" => "\xE8\x8E\x8B", + "\xD7\x6F" => "\xE8\x8D\xBE", + "\xD7\x70" => "\xE8\x8E\xA5", + "\xD7\x71" => "\xE8\x8E\xAF", + "\xD7\x72" => "\xE8\x8E\x88", + "\xD7\x73" => "\xE8\x8E\x97", + "\xD7\x74" => "\xE8\x8E\xB0", + "\xD7\x75" => "\xE8\x8D\xBF", + "\xD7\x76" => "\xE8\x8E\xA6", + "\xD7\x77" => "\xE8\x8E\x87", + "\xD7\x78" => "\xE8\x8E\xAE", + "\xD7\x79" => "\xE8\x8D\xB6", + "\xD7\x7A" => "\xE8\x8E\x9A", + "\xD7\x7B" => "\xE8\x99\x99", + "\xD7\x7C" => "\xE8\x99\x96", + "\xD7\x7D" => "\xE8\x9A\xBF", + "\xD7\x7E" => "\xE8\x9A\xB7", + "\xD7\xA1" => "\xE8\x9B\x82", + "\xD7\xA2" => "\xE8\x9B\x81", + "\xD7\xA3" => "\xE8\x9B\x85", + "\xD7\xA4" => "\xE8\x9A\xBA", + "\xD7\xA5" => "\xE8\x9A\xB0", + "\xD7\xA6" => "\xE8\x9B\x88", + "\xD7\xA7" => "\xE8\x9A\xB9", + "\xD7\xA8" => "\xE8\x9A\xB3", + "\xD7\xA9" => "\xE8\x9A\xB8", + "\xD7\xAA" => "\xE8\x9B\x8C", + "\xD7\xAB" => "\xE8\x9A\xB4", + "\xD7\xAC" => "\xE8\x9A\xBB", + "\xD7\xAD" => "\xE8\x9A\xBC", + "\xD7\xAE" => "\xE8\x9B\x83", + "\xD7\xAF" => "\xE8\x9A\xBD", + "\xD7\xB0" => "\xE8\x9A\xBE", + "\xD7\xB1" => "\xE8\xA1\x92", + "\xD7\xB2" => "\xE8\xA2\x89", + "\xD7\xB3" => "\xE8\xA2\x95", + "\xD7\xB4" => "\xE8\xA2\xA8", + "\xD7\xB5" => "\xE8\xA2\xA2", + "\xD7\xB6" => "\xE8\xA2\xAA", + "\xD7\xB7" => "\xE8\xA2\x9A", + "\xD7\xB8" => "\xE8\xA2\x91", + "\xD7\xB9" => "\xE8\xA2\xA1", + "\xD7\xBA" => "\xE8\xA2\x9F", + "\xD7\xBB" => "\xE8\xA2\x98", + "\xD7\xBC" => "\xE8\xA2\xA7", + "\xD7\xBD" => "\xE8\xA2\x99", + "\xD7\xBE" => "\xE8\xA2\x9B", + "\xD7\xBF" => "\xE8\xA2\x97", + "\xD7\xC0" => "\xE8\xA2\xA4", + "\xD7\xC1" => "\xE8\xA2\xAC", + "\xD7\xC2" => "\xE8\xA2\x8C", + "\xD7\xC3" => "\xE8\xA2\x93", + "\xD7\xC4" => "\xE8\xA2\x8E", + "\xD7\xC5" => "\xE8\xA6\x82", + "\xD7\xC6" => "\xE8\xA7\x96", + "\xD7\xC7" => "\xE8\xA7\x99", + "\xD7\xC8" => "\xE8\xA7\x95", + "\xD7\xC9" => "\xE8\xA8\xB0", + "\xD7\xCA" => "\xE8\xA8\xA7", + "\xD7\xCB" => "\xE8\xA8\xAC", + "\xD7\xCC" => "\xE8\xA8\x9E", + "\xD7\xCD" => "\xE8\xB0\xB9", + "\xD7\xCE" => "\xE8\xB0\xBB", + "\xD7\xCF" => "\xE8\xB1\x9C", + "\xD7\xD0" => "\xE8\xB1\x9D", + "\xD7\xD1" => "\xE8\xB1\xBD", + "\xD7\xD2" => "\xE8\xB2\xA5", + "\xD7\xD3" => "\xE8\xB5\xBD", + "\xD7\xD4" => "\xE8\xB5\xBB", + "\xD7\xD5" => "\xE8\xB5\xB9", + "\xD7\xD6" => "\xE8\xB6\xBC", + "\xD7\xD7" => "\xE8\xB7\x82", + "\xD7\xD8" => "\xE8\xB6\xB9", + "\xD7\xD9" => "\xE8\xB6\xBF", + "\xD7\xDA" => "\xE8\xB7\x81", + "\xD7\xDB" => "\xE8\xBB\x98", + "\xD7\xDC" => "\xE8\xBB\x9E", + "\xD7\xDD" => "\xE8\xBB\x9D", + "\xD7\xDE" => "\xE8\xBB\x9C", + "\xD7\xDF" => "\xE8\xBB\x97", + "\xD7\xE0" => "\xE8\xBB\xA0", + "\xD7\xE1" => "\xE8\xBB\xA1", + "\xD7\xE2" => "\xE9\x80\xA4", + "\xD7\xE3" => "\xE9\x80\x8B", + "\xD7\xE4" => "\xE9\x80\x91", + "\xD7\xE5" => "\xE9\x80\x9C", + "\xD7\xE6" => "\xE9\x80\x8C", + "\xD7\xE7" => "\xE9\x80\xA1", + "\xD7\xE8" => "\xE9\x83\xAF", + "\xD7\xE9" => "\xE9\x83\xAA", + "\xD7\xEA" => "\xE9\x83\xB0", + "\xD7\xEB" => "\xE9\x83\xB4", + "\xD7\xEC" => "\xE9\x83\xB2", + "\xD7\xED" => "\xE9\x83\xB3", + "\xD7\xEE" => "\xE9\x83\x94", + "\xD7\xEF" => "\xE9\x83\xAB", + "\xD7\xF0" => "\xE9\x83\xAC", + "\xD7\xF1" => "\xE9\x83\xA9", + "\xD7\xF2" => "\xE9\x85\x96", + "\xD7\xF3" => "\xE9\x85\x98", + "\xD7\xF4" => "\xE9\x85\x9A", + "\xD7\xF5" => "\xE9\x85\x93", + "\xD7\xF6" => "\xE9\x85\x95", + "\xD7\xF7" => "\xE9\x87\xAC", + "\xD7\xF8" => "\xE9\x87\xB4", + "\xD7\xF9" => "\xE9\x87\xB1", + "\xD7\xFA" => "\xE9\x87\xB3", + "\xD7\xFB" => "\xE9\x87\xB8", + "\xD7\xFC" => "\xE9\x87\xA4", + "\xD7\xFD" => "\xE9\x87\xB9", + "\xD7\xFE" => "\xE9\x87\xAA", + "\xD8\x40" => "\xE9\x87\xAB", + "\xD8\x41" => "\xE9\x87\xB7", + "\xD8\x42" => "\xE9\x87\xA8", + "\xD8\x43" => "\xE9\x87\xAE", + "\xD8\x44" => "\xE9\x95\xBA", + "\xD8\x45" => "\xE9\x96\x86", + "\xD8\x46" => "\xE9\x96\x88", + "\xD8\x47" => "\xE9\x99\xBC", + "\xD8\x48" => "\xE9\x99\xAD", + "\xD8\x49" => "\xE9\x99\xAB", + "\xD8\x4A" => "\xE9\x99\xB1", + "\xD8\x4B" => "\xE9\x99\xAF", + "\xD8\x4C" => "\xE9\x9A\xBF", + "\xD8\x4D" => "\xE9\x9D\xAA", + "\xD8\x4E" => "\xE9\xA0\x84", + "\xD8\x4F" => "\xE9\xA3\xA5", + "\xD8\x50" => "\xE9\xA6\x97", + "\xD8\x51" => "\xE5\x82\x9B", + "\xD8\x52" => "\xE5\x82\x95", + "\xD8\x53" => "\xE5\x82\x94", + "\xD8\x54" => "\xE5\x82\x9E", + "\xD8\x55" => "\xE5\x82\x8B", + "\xD8\x56" => "\xE5\x82\xA3", + "\xD8\x57" => "\xE5\x82\x83", + "\xD8\x58" => "\xE5\x82\x8C", + "\xD8\x59" => "\xE5\x82\x8E", + "\xD8\x5A" => "\xE5\x82\x9D", + "\xD8\x5B" => "\xE5\x81\xA8", + "\xD8\x5C" => "\xE5\x82\x9C", + "\xD8\x5D" => "\xE5\x82\x92", + "\xD8\x5E" => "\xE5\x82\x82", + "\xD8\x5F" => "\xE5\x82\x87", + "\xD8\x60" => "\xE5\x85\x9F", + "\xD8\x61" => "\xE5\x87\x94", + "\xD8\x62" => "\xE5\x8C\x92", + "\xD8\x63" => "\xE5\x8C\x91", + "\xD8\x64" => "\xE5\x8E\xA4", + "\xD8\x65" => "\xE5\x8E\xA7", + "\xD8\x66" => "\xE5\x96\x91", + "\xD8\x67" => "\xE5\x96\xA8", + "\xD8\x68" => "\xE5\x96\xA5", + "\xD8\x69" => "\xE5\x96\xAD", + "\xD8\x6A" => "\xE5\x95\xB7", + "\xD8\x6B" => "\xE5\x99\x85", + "\xD8\x6C" => "\xE5\x96\xA2", + "\xD8\x6D" => "\xE5\x96\x93", + "\xD8\x6E" => "\xE5\x96\x88", + "\xD8\x6F" => "\xE5\x96\x8F", + "\xD8\x70" => "\xE5\x96\xB5", + "\xD8\x71" => "\xE5\x96\x81", + "\xD8\x72" => "\xE5\x96\xA3", + "\xD8\x73" => "\xE5\x96\x92", + "\xD8\x74" => "\xE5\x96\xA4", + "\xD8\x75" => "\xE5\x95\xBD", + "\xD8\x76" => "\xE5\x96\x8C", + "\xD8\x77" => "\xE5\x96\xA6", + "\xD8\x78" => "\xE5\x95\xBF", + "\xD8\x79" => "\xE5\x96\x95", + "\xD8\x7A" => "\xE5\x96\xA1", + "\xD8\x7B" => "\xE5\x96\x8E", + "\xD8\x7C" => "\xE5\x9C\x8C", + "\xD8\x7D" => "\xE5\xA0\xA9", + "\xD8\x7E" => "\xE5\xA0\xB7", + "\xD8\xA1" => "\xE5\xA0\x99", + "\xD8\xA2" => "\xE5\xA0\x9E", + "\xD8\xA3" => "\xE5\xA0\xA7", + "\xD8\xA4" => "\xE5\xA0\xA3", + "\xD8\xA5" => "\xE5\xA0\xA8", + "\xD8\xA6" => "\xE5\x9F\xB5", + "\xD8\xA7" => "\xE5\xA1\x88", + "\xD8\xA8" => "\xE5\xA0\xA5", + "\xD8\xA9" => "\xE5\xA0\x9C", + "\xD8\xAA" => "\xE5\xA0\x9B", + "\xD8\xAB" => "\xE5\xA0\xB3", + "\xD8\xAC" => "\xE5\xA0\xBF", + "\xD8\xAD" => "\xE5\xA0\xB6", + "\xD8\xAE" => "\xE5\xA0\xAE", + "\xD8\xAF" => "\xE5\xA0\xB9", + "\xD8\xB0" => "\xE5\xA0\xB8", + "\xD8\xB1" => "\xE5\xA0\xAD", + "\xD8\xB2" => "\xE5\xA0\xAC", + "\xD8\xB3" => "\xE5\xA0\xBB", + "\xD8\xB4" => "\xE5\xA5\xA1", + "\xD8\xB5" => "\xE5\xAA\xAF", + "\xD8\xB6" => "\xE5\xAA\x94", + "\xD8\xB7" => "\xE5\xAA\x9F", + "\xD8\xB8" => "\xE5\xA9\xBA", + "\xD8\xB9" => "\xE5\xAA\xA2", + "\xD8\xBA" => "\xE5\xAA\x9E", + "\xD8\xBB" => "\xE5\xA9\xB8", + "\xD8\xBC" => "\xE5\xAA\xA6", + "\xD8\xBD" => "\xE5\xA9\xBC", + "\xD8\xBE" => "\xE5\xAA\xA5", + "\xD8\xBF" => "\xE5\xAA\xAC", + "\xD8\xC0" => "\xE5\xAA\x95", + "\xD8\xC1" => "\xE5\xAA\xAE", + "\xD8\xC2" => "\xE5\xA8\xB7", + "\xD8\xC3" => "\xE5\xAA\x84", + "\xD8\xC4" => "\xE5\xAA\x8A", + "\xD8\xC5" => "\xE5\xAA\x97", + "\xD8\xC6" => "\xE5\xAA\x83", + "\xD8\xC7" => "\xE5\xAA\x8B", + "\xD8\xC8" => "\xE5\xAA\xA9", + "\xD8\xC9" => "\xE5\xA9\xBB", + "\xD8\xCA" => "\xE5\xA9\xBD", + "\xD8\xCB" => "\xE5\xAA\x8C", + "\xD8\xCC" => "\xE5\xAA\x9C", + "\xD8\xCD" => "\xE5\xAA\x8F", + "\xD8\xCE" => "\xE5\xAA\x93", + "\xD8\xCF" => "\xE5\xAA\x9D", + "\xD8\xD0" => "\xE5\xAF\xAA", + "\xD8\xD1" => "\xE5\xAF\x8D", + "\xD8\xD2" => "\xE5\xAF\x8B", + "\xD8\xD3" => "\xE5\xAF\x94", + "\xD8\xD4" => "\xE5\xAF\x91", + "\xD8\xD5" => "\xE5\xAF\x8A", + "\xD8\xD6" => "\xE5\xAF\x8E", + "\xD8\xD7" => "\xE5\xB0\x8C", + "\xD8\xD8" => "\xE5\xB0\xB0", + "\xD8\xD9" => "\xE5\xB4\xB7", + "\xD8\xDA" => "\xE5\xB5\x83", + "\xD8\xDB" => "\xE5\xB5\xAB", + "\xD8\xDC" => "\xE5\xB5\x81", + "\xD8\xDD" => "\xE5\xB5\x8B", + "\xD8\xDE" => "\xE5\xB4\xBF", + "\xD8\xDF" => "\xE5\xB4\xB5", + "\xD8\xE0" => "\xE5\xB5\x91", + "\xD8\xE1" => "\xE5\xB5\x8E", + "\xD8\xE2" => "\xE5\xB5\x95", + "\xD8\xE3" => "\xE5\xB4\xB3", + "\xD8\xE4" => "\xE5\xB4\xBA", + "\xD8\xE5" => "\xE5\xB5\x92", + "\xD8\xE6" => "\xE5\xB4\xBD", + "\xD8\xE7" => "\xE5\xB4\xB1", + "\xD8\xE8" => "\xE5\xB5\x99", + "\xD8\xE9" => "\xE5\xB5\x82", + "\xD8\xEA" => "\xE5\xB4\xB9", + "\xD8\xEB" => "\xE5\xB5\x89", + "\xD8\xEC" => "\xE5\xB4\xB8", + "\xD8\xED" => "\xE5\xB4\xBC", + "\xD8\xEE" => "\xE5\xB4\xB2", + "\xD8\xEF" => "\xE5\xB4\xB6", + "\xD8\xF0" => "\xE5\xB5\x80", + "\xD8\xF1" => "\xE5\xB5\x85", + "\xD8\xF2" => "\xE5\xB9\x84", + "\xD8\xF3" => "\xE5\xB9\x81", + "\xD8\xF4" => "\xE5\xBD\x98", + "\xD8\xF5" => "\xE5\xBE\xA6", + "\xD8\xF6" => "\xE5\xBE\xA5", + "\xD8\xF7" => "\xE5\xBE\xAB", + "\xD8\xF8" => "\xE6\x83\x89", + "\xD8\xF9" => "\xE6\x82\xB9", + "\xD8\xFA" => "\xE6\x83\x8C", + "\xD8\xFB" => "\xE6\x83\xA2", + "\xD8\xFC" => "\xE6\x83\x8E", + "\xD8\xFD" => "\xE6\x83\x84", + "\xD8\xFE" => "\xE6\x84\x94", + "\xD9\x40" => "\xE6\x83\xB2", + "\xD9\x41" => "\xE6\x84\x8A", + "\xD9\x42" => "\xE6\x84\x96", + "\xD9\x43" => "\xE6\x84\x85", + "\xD9\x44" => "\xE6\x83\xB5", + "\xD9\x45" => "\xE6\x84\x93", + "\xD9\x46" => "\xE6\x83\xB8", + "\xD9\x47" => "\xE6\x83\xBC", + "\xD9\x48" => "\xE6\x83\xBE", + "\xD9\x49" => "\xE6\x83\x81", + "\xD9\x4A" => "\xE6\x84\x83", + "\xD9\x4B" => "\xE6\x84\x98", + "\xD9\x4C" => "\xE6\x84\x9D", + "\xD9\x4D" => "\xE6\x84\x90", + "\xD9\x4E" => "\xE6\x83\xBF", + "\xD9\x4F" => "\xE6\x84\x84", + "\xD9\x50" => "\xE6\x84\x8B", + "\xD9\x51" => "\xE6\x89\x8A", + "\xD9\x52" => "\xE6\x8E\x94", + "\xD9\x53" => "\xE6\x8E\xB1", + "\xD9\x54" => "\xE6\x8E\xB0", + "\xD9\x55" => "\xE6\x8F\x8E", + "\xD9\x56" => "\xE6\x8F\xA5", + "\xD9\x57" => "\xE6\x8F\xA8", + "\xD9\x58" => "\xE6\x8F\xAF", + "\xD9\x59" => "\xE6\x8F\x83", + "\xD9\x5A" => "\xE6\x92\x9D", + "\xD9\x5B" => "\xE6\x8F\xB3", + "\xD9\x5C" => "\xE6\x8F\x8A", + "\xD9\x5D" => "\xE6\x8F\xA0", + "\xD9\x5E" => "\xE6\x8F\xB6", + "\xD9\x5F" => "\xE6\x8F\x95", + "\xD9\x60" => "\xE6\x8F\xB2", + "\xD9\x61" => "\xE6\x8F\xB5", + "\xD9\x62" => "\xE6\x91\xA1", + "\xD9\x63" => "\xE6\x8F\x9F", + "\xD9\x64" => "\xE6\x8E\xBE", + "\xD9\x65" => "\xE6\x8F\x9D", + "\xD9\x66" => "\xE6\x8F\x9C", + "\xD9\x67" => "\xE6\x8F\x84", + "\xD9\x68" => "\xE6\x8F\x98", + "\xD9\x69" => "\xE6\x8F\x93", + "\xD9\x6A" => "\xE6\x8F\x82", + "\xD9\x6B" => "\xE6\x8F\x87", + "\xD9\x6C" => "\xE6\x8F\x8C", + "\xD9\x6D" => "\xE6\x8F\x8B", + "\xD9\x6E" => "\xE6\x8F\x88", + "\xD9\x6F" => "\xE6\x8F\xB0", + "\xD9\x70" => "\xE6\x8F\x97", + "\xD9\x71" => "\xE6\x8F\x99", + "\xD9\x72" => "\xE6\x94\xB2", + "\xD9\x73" => "\xE6\x95\xA7", + "\xD9\x74" => "\xE6\x95\xAA", + "\xD9\x75" => "\xE6\x95\xA4", + "\xD9\x76" => "\xE6\x95\x9C", + "\xD9\x77" => "\xE6\x95\xA8", + "\xD9\x78" => "\xE6\x95\xA5", + "\xD9\x79" => "\xE6\x96\x8C", + "\xD9\x7A" => "\xE6\x96\x9D", + "\xD9\x7B" => "\xE6\x96\x9E", + "\xD9\x7C" => "\xE6\x96\xAE", + "\xD9\x7D" => "\xE6\x97\x90", + "\xD9\x7E" => "\xE6\x97\x92", + "\xD9\xA1" => "\xE6\x99\xBC", + "\xD9\xA2" => "\xE6\x99\xAC", + "\xD9\xA3" => "\xE6\x99\xBB", + "\xD9\xA4" => "\xE6\x9A\x80", + "\xD9\xA5" => "\xE6\x99\xB1", + "\xD9\xA6" => "\xE6\x99\xB9", + "\xD9\xA7" => "\xE6\x99\xAA", + "\xD9\xA8" => "\xE6\x99\xB2", + "\xD9\xA9" => "\xE6\x9C\x81", + "\xD9\xAA" => "\xE6\xA4\x8C", + "\xD9\xAB" => "\xE6\xA3\x93", + "\xD9\xAC" => "\xE6\xA4\x84", + "\xD9\xAD" => "\xE6\xA3\x9C", + "\xD9\xAE" => "\xE6\xA4\xAA", + "\xD9\xAF" => "\xE6\xA3\xAC", + "\xD9\xB0" => "\xE6\xA3\xAA", + "\xD9\xB1" => "\xE6\xA3\xB1", + "\xD9\xB2" => "\xE6\xA4\x8F", + "\xD9\xB3" => "\xE6\xA3\x96", + "\xD9\xB4" => "\xE6\xA3\xB7", + "\xD9\xB5" => "\xE6\xA3\xAB", + "\xD9\xB6" => "\xE6\xA3\xA4", + "\xD9\xB7" => "\xE6\xA3\xB6", + "\xD9\xB8" => "\xE6\xA4\x93", + "\xD9\xB9" => "\xE6\xA4\x90", + "\xD9\xBA" => "\xE6\xA3\xB3", + "\xD9\xBB" => "\xE6\xA3\xA1", + "\xD9\xBC" => "\xE6\xA4\x87", + "\xD9\xBD" => "\xE6\xA3\x8C", + "\xD9\xBE" => "\xE6\xA4\x88", + "\xD9\xBF" => "\xE6\xA5\xB0", + "\xD9\xC0" => "\xE6\xA2\xB4", + "\xD9\xC1" => "\xE6\xA4\x91", + "\xD9\xC2" => "\xE6\xA3\xAF", + "\xD9\xC3" => "\xE6\xA3\x86", + "\xD9\xC4" => "\xE6\xA4\x94", + "\xD9\xC5" => "\xE6\xA3\xB8", + "\xD9\xC6" => "\xE6\xA3\x90", + "\xD9\xC7" => "\xE6\xA3\xBD", + "\xD9\xC8" => "\xE6\xA3\xBC", + "\xD9\xC9" => "\xE6\xA3\xA8", + "\xD9\xCA" => "\xE6\xA4\x8B", + "\xD9\xCB" => "\xE6\xA4\x8A", + "\xD9\xCC" => "\xE6\xA4\x97", + "\xD9\xCD" => "\xE6\xA3\x8E", + "\xD9\xCE" => "\xE6\xA3\x88", + "\xD9\xCF" => "\xE6\xA3\x9D", + "\xD9\xD0" => "\xE6\xA3\x9E", + "\xD9\xD1" => "\xE6\xA3\xA6", + "\xD9\xD2" => "\xE6\xA3\xB4", + "\xD9\xD3" => "\xE6\xA3\x91", + "\xD9\xD4" => "\xE6\xA4\x86", + "\xD9\xD5" => "\xE6\xA3\x94", + "\xD9\xD6" => "\xE6\xA3\xA9", + "\xD9\xD7" => "\xE6\xA4\x95", + "\xD9\xD8" => "\xE6\xA4\xA5", + "\xD9\xD9" => "\xE6\xA3\x87", + "\xD9\xDA" => "\xE6\xAC\xB9", + "\xD9\xDB" => "\xE6\xAC\xBB", + "\xD9\xDC" => "\xE6\xAC\xBF", + "\xD9\xDD" => "\xE6\xAC\xBC", + "\xD9\xDE" => "\xE6\xAE\x94", + "\xD9\xDF" => "\xE6\xAE\x97", + "\xD9\xE0" => "\xE6\xAE\x99", + "\xD9\xE1" => "\xE6\xAE\x95", + "\xD9\xE2" => "\xE6\xAE\xBD", + "\xD9\xE3" => "\xE6\xAF\xB0", + "\xD9\xE4" => "\xE6\xAF\xB2", + "\xD9\xE5" => "\xE6\xAF\xB3", + "\xD9\xE6" => "\xE6\xB0\xB0", + "\xD9\xE7" => "\xE6\xB7\xBC", + "\xD9\xE8" => "\xE6\xB9\x86", + "\xD9\xE9" => "\xE6\xB9\x87", + "\xD9\xEA" => "\xE6\xB8\x9F", + "\xD9\xEB" => "\xE6\xB9\x89", + "\xD9\xEC" => "\xE6\xBA\x88", + "\xD9\xED" => "\xE6\xB8\xBC", + "\xD9\xEE" => "\xE6\xB8\xBD", + "\xD9\xEF" => "\xE6\xB9\x85", + "\xD9\xF0" => "\xE6\xB9\xA2", + "\xD9\xF1" => "\xE6\xB8\xAB", + "\xD9\xF2" => "\xE6\xB8\xBF", + "\xD9\xF3" => "\xE6\xB9\x81", + "\xD9\xF4" => "\xE6\xB9\x9D", + "\xD9\xF5" => "\xE6\xB9\xB3", + "\xD9\xF6" => "\xE6\xB8\x9C", + "\xD9\xF7" => "\xE6\xB8\xB3", + "\xD9\xF8" => "\xE6\xB9\x8B", + "\xD9\xF9" => "\xE6\xB9\x80", + "\xD9\xFA" => "\xE6\xB9\x91", + "\xD9\xFB" => "\xE6\xB8\xBB", + "\xD9\xFC" => "\xE6\xB8\x83", + "\xD9\xFD" => "\xE6\xB8\xAE", + "\xD9\xFE" => "\xE6\xB9\x9E", + "\xDA\x40" => "\xE6\xB9\xA8", + "\xDA\x41" => "\xE6\xB9\x9C", + "\xDA\x42" => "\xE6\xB9\xA1", + "\xDA\x43" => "\xE6\xB8\xB1", + "\xDA\x44" => "\xE6\xB8\xA8", + "\xDA\x45" => "\xE6\xB9\xA0", + "\xDA\x46" => "\xE6\xB9\xB1", + "\xDA\x47" => "\xE6\xB9\xAB", + "\xDA\x48" => "\xE6\xB8\xB9", + "\xDA\x49" => "\xE6\xB8\xA2", + "\xDA\x4A" => "\xE6\xB8\xB0", + "\xDA\x4B" => "\xE6\xB9\x93", + "\xDA\x4C" => "\xE6\xB9\xA5", + "\xDA\x4D" => "\xE6\xB8\xA7", + "\xDA\x4E" => "\xE6\xB9\xB8", + "\xDA\x4F" => "\xE6\xB9\xA4", + "\xDA\x50" => "\xE6\xB9\xB7", + "\xDA\x51" => "\xE6\xB9\x95", + "\xDA\x52" => "\xE6\xB9\xB9", + "\xDA\x53" => "\xE6\xB9\x92", + "\xDA\x54" => "\xE6\xB9\xA6", + "\xDA\x55" => "\xE6\xB8\xB5", + "\xDA\x56" => "\xE6\xB8\xB6", + "\xDA\x57" => "\xE6\xB9\x9A", + "\xDA\x58" => "\xE7\x84\xA0", + "\xDA\x59" => "\xE7\x84\x9E", + "\xDA\x5A" => "\xE7\x84\xAF", + "\xDA\x5B" => "\xE7\x83\xBB", + "\xDA\x5C" => "\xE7\x84\xAE", + "\xDA\x5D" => "\xE7\x84\xB1", + "\xDA\x5E" => "\xE7\x84\xA3", + "\xDA\x5F" => "\xE7\x84\xA5", + "\xDA\x60" => "\xE7\x84\xA2", + "\xDA\x61" => "\xE7\x84\xB2", + "\xDA\x62" => "\xE7\x84\x9F", + "\xDA\x63" => "\xE7\x84\xA8", + "\xDA\x64" => "\xE7\x84\xBA", + "\xDA\x65" => "\xE7\x84\x9B", + "\xDA\x66" => "\xE7\x89\x8B", + "\xDA\x67" => "\xE7\x89\x9A", + "\xDA\x68" => "\xE7\x8A\x88", + "\xDA\x69" => "\xE7\x8A\x89", + "\xDA\x6A" => "\xE7\x8A\x86", + "\xDA\x6B" => "\xE7\x8A\x85", + "\xDA\x6C" => "\xE7\x8A\x8B", + "\xDA\x6D" => "\xE7\x8C\x92", + "\xDA\x6E" => "\xE7\x8C\x8B", + "\xDA\x6F" => "\xE7\x8C\xB0", + "\xDA\x70" => "\xE7\x8C\xA2", + "\xDA\x71" => "\xE7\x8C\xB1", + "\xDA\x72" => "\xE7\x8C\xB3", + "\xDA\x73" => "\xE7\x8C\xA7", + "\xDA\x74" => "\xE7\x8C\xB2", + "\xDA\x75" => "\xE7\x8C\xAD", + "\xDA\x76" => "\xE7\x8C\xA6", + "\xDA\x77" => "\xE7\x8C\xA3", + "\xDA\x78" => "\xE7\x8C\xB5", + "\xDA\x79" => "\xE7\x8C\x8C", + "\xDA\x7A" => "\xE7\x90\xAE", + "\xDA\x7B" => "\xE7\x90\xAC", + "\xDA\x7C" => "\xE7\x90\xB0", + "\xDA\x7D" => "\xE7\x90\xAB", + "\xDA\x7E" => "\xE7\x90\x96", + "\xDA\xA1" => "\xE7\x90\x9A", + "\xDA\xA2" => "\xE7\x90\xA1", + "\xDA\xA3" => "\xE7\x90\xAD", + "\xDA\xA4" => "\xE7\x90\xB1", + "\xDA\xA5" => "\xE7\x90\xA4", + "\xDA\xA6" => "\xE7\x90\xA3", + "\xDA\xA7" => "\xE7\x90\x9D", + "\xDA\xA8" => "\xE7\x90\xA9", + "\xDA\xA9" => "\xE7\x90\xA0", + "\xDA\xAA" => "\xE7\x90\xB2", + "\xDA\xAB" => "\xE7\x93\xBB", + "\xDA\xAC" => "\xE7\x94\xAF", + "\xDA\xAD" => "\xE7\x95\xAF", + "\xDA\xAE" => "\xE7\x95\xAC", + "\xDA\xAF" => "\xE7\x97\xA7", + "\xDA\xB0" => "\xE7\x97\x9A", + "\xDA\xB1" => "\xE7\x97\xA1", + "\xDA\xB2" => "\xE7\x97\xA6", + "\xDA\xB3" => "\xE7\x97\x9D", + "\xDA\xB4" => "\xE7\x97\x9F", + "\xDA\xB5" => "\xE7\x97\xA4", + "\xDA\xB6" => "\xE7\x97\x97", + "\xDA\xB7" => "\xE7\x9A\x95", + "\xDA\xB8" => "\xE7\x9A\x92", + "\xDA\xB9" => "\xE7\x9B\x9A", + "\xDA\xBA" => "\xE7\x9D\x86", + "\xDA\xBB" => "\xE7\x9D\x87", + "\xDA\xBC" => "\xE7\x9D\x84", + "\xDA\xBD" => "\xE7\x9D\x8D", + "\xDA\xBE" => "\xE7\x9D\x85", + "\xDA\xBF" => "\xE7\x9D\x8A", + "\xDA\xC0" => "\xE7\x9D\x8E", + "\xDA\xC1" => "\xE7\x9D\x8B", + "\xDA\xC2" => "\xE7\x9D\x8C", + "\xDA\xC3" => "\xE7\x9F\x9E", + "\xDA\xC4" => "\xE7\x9F\xAC", + "\xDA\xC5" => "\xE7\xA1\xA0", + "\xDA\xC6" => "\xE7\xA1\xA4", + "\xDA\xC7" => "\xE7\xA1\xA5", + "\xDA\xC8" => "\xE7\xA1\x9C", + "\xDA\xC9" => "\xE7\xA1\xAD", + "\xDA\xCA" => "\xE7\xA1\xB1", + "\xDA\xCB" => "\xE7\xA1\xAA", + "\xDA\xCC" => "\xE7\xA1\xAE", + "\xDA\xCD" => "\xE7\xA1\xB0", + "\xDA\xCE" => "\xE7\xA1\xA9", + "\xDA\xCF" => "\xE7\xA1\xA8", + "\xDA\xD0" => "\xE7\xA1\x9E", + "\xDA\xD1" => "\xE7\xA1\xA2", + "\xDA\xD2" => "\xE7\xA5\xB4", + "\xDA\xD3" => "\xE7\xA5\xB3", + "\xDA\xD4" => "\xE7\xA5\xB2", + "\xDA\xD5" => "\xE7\xA5\xB0", + "\xDA\xD6" => "\xE7\xA8\x82", + "\xDA\xD7" => "\xE7\xA8\x8A", + "\xDA\xD8" => "\xE7\xA8\x83", + "\xDA\xD9" => "\xE7\xA8\x8C", + "\xDA\xDA" => "\xE7\xA8\x84", + "\xDA\xDB" => "\xE7\xAA\x99", + "\xDA\xDC" => "\xE7\xAB\xA6", + "\xDA\xDD" => "\xE7\xAB\xA4", + "\xDA\xDE" => "\xE7\xAD\x8A", + "\xDA\xDF" => "\xE7\xAC\xBB", + "\xDA\xE0" => "\xE7\xAD\x84", + "\xDA\xE1" => "\xE7\xAD\x88", + "\xDA\xE2" => "\xE7\xAD\x8C", + "\xDA\xE3" => "\xE7\xAD\x8E", + "\xDA\xE4" => "\xE7\xAD\x80", + "\xDA\xE5" => "\xE7\xAD\x98", + "\xDA\xE6" => "\xE7\xAD\x85", + "\xDA\xE7" => "\xE7\xB2\xA2", + "\xDA\xE8" => "\xE7\xB2\x9E", + "\xDA\xE9" => "\xE7\xB2\xA8", + "\xDA\xEA" => "\xE7\xB2\xA1", + "\xDA\xEB" => "\xE7\xB5\x98", + "\xDA\xEC" => "\xE7\xB5\xAF", + "\xDA\xED" => "\xE7\xB5\xA3", + "\xDA\xEE" => "\xE7\xB5\x93", + "\xDA\xEF" => "\xE7\xB5\x96", + "\xDA\xF0" => "\xE7\xB5\xA7", + "\xDA\xF1" => "\xE7\xB5\xAA", + "\xDA\xF2" => "\xE7\xB5\x8F", + "\xDA\xF3" => "\xE7\xB5\xAD", + "\xDA\xF4" => "\xE7\xB5\x9C", + "\xDA\xF5" => "\xE7\xB5\xAB", + "\xDA\xF6" => "\xE7\xB5\x92", + "\xDA\xF7" => "\xE7\xB5\x94", + "\xDA\xF8" => "\xE7\xB5\xA9", + "\xDA\xF9" => "\xE7\xB5\x91", + "\xDA\xFA" => "\xE7\xB5\x9F", + "\xDA\xFB" => "\xE7\xB5\x8E", + "\xDA\xFC" => "\xE7\xBC\xBE", + "\xDA\xFD" => "\xE7\xBC\xBF", + "\xDA\xFE" => "\xE7\xBD\xA5", + "\xDB\x40" => "\xE7\xBD\xA6", + "\xDB\x41" => "\xE7\xBE\xA2", + "\xDB\x42" => "\xE7\xBE\xA0", + "\xDB\x43" => "\xE7\xBE\xA1", + "\xDB\x44" => "\xE7\xBF\x97", + "\xDB\x45" => "\xE8\x81\x91", + "\xDB\x46" => "\xE8\x81\x8F", + "\xDB\x47" => "\xE8\x81\x90", + "\xDB\x48" => "\xE8\x83\xBE", + "\xDB\x49" => "\xE8\x83\x94", + "\xDB\x4A" => "\xE8\x85\x83", + "\xDB\x4B" => "\xE8\x85\x8A", + "\xDB\x4C" => "\xE8\x85\x92", + "\xDB\x4D" => "\xE8\x85\x8F", + "\xDB\x4E" => "\xE8\x85\x87", + "\xDB\x4F" => "\xE8\x84\xBD", + "\xDB\x50" => "\xE8\x85\x8D", + "\xDB\x51" => "\xE8\x84\xBA", + "\xDB\x52" => "\xE8\x87\xA6", + "\xDB\x53" => "\xE8\x87\xAE", + "\xDB\x54" => "\xE8\x87\xB7", + "\xDB\x55" => "\xE8\x87\xB8", + "\xDB\x56" => "\xE8\x87\xB9", + "\xDB\x57" => "\xE8\x88\x84", + "\xDB\x58" => "\xE8\x88\xBC", + "\xDB\x59" => "\xE8\x88\xBD", + "\xDB\x5A" => "\xE8\x88\xBF", + "\xDB\x5B" => "\xE8\x89\xB5", + "\xDB\x5C" => "\xE8\x8C\xBB", + "\xDB\x5D" => "\xE8\x8F\x8F", + "\xDB\x5E" => "\xE8\x8F\xB9", + "\xDB\x5F" => "\xE8\x90\xA3", + "\xDB\x60" => "\xE8\x8F\x80", + "\xDB\x61" => "\xE8\x8F\xA8", + "\xDB\x62" => "\xE8\x90\x92", + "\xDB\x63" => "\xE8\x8F\xA7", + "\xDB\x64" => "\xE8\x8F\xA4", + "\xDB\x65" => "\xE8\x8F\xBC", + "\xDB\x66" => "\xE8\x8F\xB6", + "\xDB\x67" => "\xE8\x90\x90", + "\xDB\x68" => "\xE8\x8F\x86", + "\xDB\x69" => "\xE8\x8F\x88", + "\xDB\x6A" => "\xE8\x8F\xAB", + "\xDB\x6B" => "\xE8\x8F\xA3", + "\xDB\x6C" => "\xE8\x8E\xBF", + "\xDB\x6D" => "\xE8\x90\x81", + "\xDB\x6E" => "\xE8\x8F\x9D", + "\xDB\x6F" => "\xE8\x8F\xA5", + "\xDB\x70" => "\xE8\x8F\x98", + "\xDB\x71" => "\xE8\x8F\xBF", + "\xDB\x72" => "\xE8\x8F\xA1", + "\xDB\x73" => "\xE8\x8F\x8B", + "\xDB\x74" => "\xE8\x8F\x8E", + "\xDB\x75" => "\xE8\x8F\x96", + "\xDB\x76" => "\xE8\x8F\xB5", + "\xDB\x77" => "\xE8\x8F\x89", + "\xDB\x78" => "\xE8\x90\x89", + "\xDB\x79" => "\xE8\x90\x8F", + "\xDB\x7A" => "\xE8\x8F\x9E", + "\xDB\x7B" => "\xE8\x90\x91", + "\xDB\x7C" => "\xE8\x90\x86", + "\xDB\x7D" => "\xE8\x8F\x82", + "\xDB\x7E" => "\xE8\x8F\xB3", + "\xDB\xA1" => "\xE8\x8F\x95", + "\xDB\xA2" => "\xE8\x8F\xBA", + "\xDB\xA3" => "\xE8\x8F\x87", + "\xDB\xA4" => "\xE8\x8F\x91", + "\xDB\xA5" => "\xE8\x8F\xAA", + "\xDB\xA6" => "\xE8\x90\x93", + "\xDB\xA7" => "\xE8\x8F\x83", + "\xDB\xA8" => "\xE8\x8F\xAC", + "\xDB\xA9" => "\xE8\x8F\xAE", + "\xDB\xAA" => "\xE8\x8F\x84", + "\xDB\xAB" => "\xE8\x8F\xBB", + "\xDB\xAC" => "\xE8\x8F\x97", + "\xDB\xAD" => "\xE8\x8F\xA2", + "\xDB\xAE" => "\xE8\x90\x9B", + "\xDB\xAF" => "\xE8\x8F\x9B", + "\xDB\xB0" => "\xE8\x8F\xBE", + "\xDB\xB1" => "\xE8\x9B\x98", + "\xDB\xB2" => "\xE8\x9B\xA2", + "\xDB\xB3" => "\xE8\x9B\xA6", + "\xDB\xB4" => "\xE8\x9B\x93", + "\xDB\xB5" => "\xE8\x9B\xA3", + "\xDB\xB6" => "\xE8\x9B\x9A", + "\xDB\xB7" => "\xE8\x9B\xAA", + "\xDB\xB8" => "\xE8\x9B\x9D", + "\xDB\xB9" => "\xE8\x9B\xAB", + "\xDB\xBA" => "\xE8\x9B\x9C", + "\xDB\xBB" => "\xE8\x9B\xAC", + "\xDB\xBC" => "\xE8\x9B\xA9", + "\xDB\xBD" => "\xE8\x9B\x97", + "\xDB\xBE" => "\xE8\x9B\xA8", + "\xDB\xBF" => "\xE8\x9B\x91", + "\xDB\xC0" => "\xE8\xA1\x88", + "\xDB\xC1" => "\xE8\xA1\x96", + "\xDB\xC2" => "\xE8\xA1\x95", + "\xDB\xC3" => "\xE8\xA2\xBA", + "\xDB\xC4" => "\xE8\xA3\x97", + "\xDB\xC5" => "\xE8\xA2\xB9", + "\xDB\xC6" => "\xE8\xA2\xB8", + "\xDB\xC7" => "\xE8\xA3\x80", + "\xDB\xC8" => "\xE8\xA2\xBE", + "\xDB\xC9" => "\xE8\xA2\xB6", + "\xDB\xCA" => "\xE8\xA2\xBC", + "\xDB\xCB" => "\xE8\xA2\xB7", + "\xDB\xCC" => "\xE8\xA2\xBD", + "\xDB\xCD" => "\xE8\xA2\xB2", + "\xDB\xCE" => "\xE8\xA4\x81", + "\xDB\xCF" => "\xE8\xA3\x89", + "\xDB\xD0" => "\xE8\xA6\x95", + "\xDB\xD1" => "\xE8\xA6\x98", + "\xDB\xD2" => "\xE8\xA6\x97", + "\xDB\xD3" => "\xE8\xA7\x9D", + "\xDB\xD4" => "\xE8\xA7\x9A", + "\xDB\xD5" => "\xE8\xA7\x9B", + "\xDB\xD6" => "\xE8\xA9\x8E", + "\xDB\xD7" => "\xE8\xA9\x8D", + "\xDB\xD8" => "\xE8\xA8\xB9", + "\xDB\xD9" => "\xE8\xA9\x99", + "\xDB\xDA" => "\xE8\xA9\x80", + "\xDB\xDB" => "\xE8\xA9\x97", + "\xDB\xDC" => "\xE8\xA9\x98", + "\xDB\xDD" => "\xE8\xA9\x84", + "\xDB\xDE" => "\xE8\xA9\x85", + "\xDB\xDF" => "\xE8\xA9\x92", + "\xDB\xE0" => "\xE8\xA9\x88", + "\xDB\xE1" => "\xE8\xA9\x91", + "\xDB\xE2" => "\xE8\xA9\x8A", + "\xDB\xE3" => "\xE8\xA9\x8C", + "\xDB\xE4" => "\xE8\xA9\x8F", + "\xDB\xE5" => "\xE8\xB1\x9F", + "\xDB\xE6" => "\xE8\xB2\x81", + "\xDB\xE7" => "\xE8\xB2\x80", + "\xDB\xE8" => "\xE8\xB2\xBA", + "\xDB\xE9" => "\xE8\xB2\xBE", + "\xDB\xEA" => "\xE8\xB2\xB0", + "\xDB\xEB" => "\xE8\xB2\xB9", + "\xDB\xEC" => "\xE8\xB2\xB5", + "\xDB\xED" => "\xE8\xB6\x84", + "\xDB\xEE" => "\xE8\xB6\x80", + "\xDB\xEF" => "\xE8\xB6\x89", + "\xDB\xF0" => "\xE8\xB7\x98", + "\xDB\xF1" => "\xE8\xB7\x93", + "\xDB\xF2" => "\xE8\xB7\x8D", + "\xDB\xF3" => "\xE8\xB7\x87", + "\xDB\xF4" => "\xE8\xB7\x96", + "\xDB\xF5" => "\xE8\xB7\x9C", + "\xDB\xF6" => "\xE8\xB7\x8F", + "\xDB\xF7" => "\xE8\xB7\x95", + "\xDB\xF8" => "\xE8\xB7\x99", + "\xDB\xF9" => "\xE8\xB7\x88", + "\xDB\xFA" => "\xE8\xB7\x97", + "\xDB\xFB" => "\xE8\xB7\x85", + "\xDB\xFC" => "\xE8\xBB\xAF", + "\xDB\xFD" => "\xE8\xBB\xB7", + "\xDB\xFE" => "\xE8\xBB\xBA", + "\xDC\x40" => "\xE8\xBB\xB9", + "\xDC\x41" => "\xE8\xBB\xA6", + "\xDC\x42" => "\xE8\xBB\xAE", + "\xDC\x43" => "\xE8\xBB\xA5", + "\xDC\x44" => "\xE8\xBB\xB5", + "\xDC\x45" => "\xE8\xBB\xA7", + "\xDC\x46" => "\xE8\xBB\xA8", + "\xDC\x47" => "\xE8\xBB\xB6", + "\xDC\x48" => "\xE8\xBB\xAB", + "\xDC\x49" => "\xE8\xBB\xB1", + "\xDC\x4A" => "\xE8\xBB\xAC", + "\xDC\x4B" => "\xE8\xBB\xB4", + "\xDC\x4C" => "\xE8\xBB\xA9", + "\xDC\x4D" => "\xE9\x80\xAD", + "\xDC\x4E" => "\xE9\x80\xB4", + "\xDC\x4F" => "\xE9\x80\xAF", + "\xDC\x50" => "\xE9\x84\x86", + "\xDC\x51" => "\xE9\x84\xAC", + "\xDC\x52" => "\xE9\x84\x84", + "\xDC\x53" => "\xE9\x83\xBF", + "\xDC\x54" => "\xE9\x83\xBC", + "\xDC\x55" => "\xE9\x84\x88", + "\xDC\x56" => "\xE9\x83\xB9", + "\xDC\x57" => "\xE9\x83\xBB", + "\xDC\x58" => "\xE9\x84\x81", + "\xDC\x59" => "\xE9\x84\x80", + "\xDC\x5A" => "\xE9\x84\x87", + "\xDC\x5B" => "\xE9\x84\x85", + "\xDC\x5C" => "\xE9\x84\x83", + "\xDC\x5D" => "\xE9\x85\xA1", + "\xDC\x5E" => "\xE9\x85\xA4", + "\xDC\x5F" => "\xE9\x85\x9F", + "\xDC\x60" => "\xE9\x85\xA2", + "\xDC\x61" => "\xE9\x85\xA0", + "\xDC\x62" => "\xE9\x88\x81", + "\xDC\x63" => "\xE9\x88\x8A", + "\xDC\x64" => "\xE9\x88\xA5", + "\xDC\x65" => "\xE9\x88\x83", + "\xDC\x66" => "\xE9\x88\x9A", + "\xDC\x67" => "\xE9\x88\xA6", + "\xDC\x68" => "\xE9\x88\x8F", + "\xDC\x69" => "\xE9\x88\x8C", + "\xDC\x6A" => "\xE9\x88\x80", + "\xDC\x6B" => "\xE9\x88\x92", + "\xDC\x6C" => "\xE9\x87\xBF", + "\xDC\x6D" => "\xE9\x87\xBD", + "\xDC\x6E" => "\xE9\x88\x86", + "\xDC\x6F" => "\xE9\x88\x84", + "\xDC\x70" => "\xE9\x88\xA7", + "\xDC\x71" => "\xE9\x88\x82", + "\xDC\x72" => "\xE9\x88\x9C", + "\xDC\x73" => "\xE9\x88\xA4", + "\xDC\x74" => "\xE9\x88\x99", + "\xDC\x75" => "\xE9\x88\x97", + "\xDC\x76" => "\xE9\x88\x85", + "\xDC\x77" => "\xE9\x88\x96", + "\xDC\x78" => "\xE9\x95\xBB", + "\xDC\x79" => "\xE9\x96\x8D", + "\xDC\x7A" => "\xE9\x96\x8C", + "\xDC\x7B" => "\xE9\x96\x90", + "\xDC\x7C" => "\xE9\x9A\x87", + "\xDC\x7D" => "\xE9\x99\xBE", + "\xDC\x7E" => "\xE9\x9A\x88", + "\xDC\xA1" => "\xE9\x9A\x89", + "\xDC\xA2" => "\xE9\x9A\x83", + "\xDC\xA3" => "\xE9\x9A\x80", + "\xDC\xA4" => "\xE9\x9B\x82", + "\xDC\xA5" => "\xE9\x9B\x88", + "\xDC\xA6" => "\xE9\x9B\x83", + "\xDC\xA7" => "\xE9\x9B\xB1", + "\xDC\xA8" => "\xE9\x9B\xB0", + "\xDC\xA9" => "\xE9\x9D\xAC", + "\xDC\xAA" => "\xE9\x9D\xB0", + "\xDC\xAB" => "\xE9\x9D\xAE", + "\xDC\xAC" => "\xE9\xA0\x87", + "\xDC\xAD" => "\xE9\xA2\xA9", + "\xDC\xAE" => "\xE9\xA3\xAB", + "\xDC\xAF" => "\xE9\xB3\xA6", + "\xDC\xB0" => "\xE9\xBB\xB9", + "\xDC\xB1" => "\xE4\xBA\x83", + "\xDC\xB2" => "\xE4\xBA\x84", + "\xDC\xB3" => "\xE4\xBA\xB6", + "\xDC\xB4" => "\xE5\x82\xBD", + "\xDC\xB5" => "\xE5\x82\xBF", + "\xDC\xB6" => "\xE5\x83\x86", + "\xDC\xB7" => "\xE5\x82\xAE", + "\xDC\xB8" => "\xE5\x83\x84", + "\xDC\xB9" => "\xE5\x83\x8A", + "\xDC\xBA" => "\xE5\x82\xB4", + "\xDC\xBB" => "\xE5\x83\x88", + "\xDC\xBC" => "\xE5\x83\x82", + "\xDC\xBD" => "\xE5\x82\xB0", + "\xDC\xBE" => "\xE5\x83\x81", + "\xDC\xBF" => "\xE5\x82\xBA", + "\xDC\xC0" => "\xE5\x82\xB1", + "\xDC\xC1" => "\xE5\x83\x8B", + "\xDC\xC2" => "\xE5\x83\x89", + "\xDC\xC3" => "\xE5\x82\xB6", + "\xDC\xC4" => "\xE5\x82\xB8", + "\xDC\xC5" => "\xE5\x87\x97", + "\xDC\xC6" => "\xE5\x89\xBA", + "\xDC\xC7" => "\xE5\x89\xB8", + "\xDC\xC8" => "\xE5\x89\xBB", + "\xDC\xC9" => "\xE5\x89\xBC", + "\xDC\xCA" => "\xE5\x97\x83", + "\xDC\xCB" => "\xE5\x97\x9B", + "\xDC\xCC" => "\xE5\x97\x8C", + "\xDC\xCD" => "\xE5\x97\x90", + "\xDC\xCE" => "\xE5\x97\x8B", + "\xDC\xCF" => "\xE5\x97\x8A", + "\xDC\xD0" => "\xE5\x97\x9D", + "\xDC\xD1" => "\xE5\x97\x80", + "\xDC\xD2" => "\xE5\x97\x94", + "\xDC\xD3" => "\xE5\x97\x84", + "\xDC\xD4" => "\xE5\x97\xA9", + "\xDC\xD5" => "\xE5\x96\xBF", + "\xDC\xD6" => "\xE5\x97\x92", + "\xDC\xD7" => "\xE5\x96\x8D", + "\xDC\xD8" => "\xE5\x97\x8F", + "\xDC\xD9" => "\xE5\x97\x95", + "\xDC\xDA" => "\xE5\x97\xA2", + "\xDC\xDB" => "\xE5\x97\x96", + "\xDC\xDC" => "\xE5\x97\x88", + "\xDC\xDD" => "\xE5\x97\xB2", + "\xDC\xDE" => "\xE5\x97\x8D", + "\xDC\xDF" => "\xE5\x97\x99", + "\xDC\xE0" => "\xE5\x97\x82", + "\xDC\xE1" => "\xE5\x9C\x94", + "\xDC\xE2" => "\xE5\xA1\x93", + "\xDC\xE3" => "\xE5\xA1\xA8", + "\xDC\xE4" => "\xE5\xA1\xA4", + "\xDC\xE5" => "\xE5\xA1\x8F", + "\xDC\xE6" => "\xE5\xA1\x8D", + "\xDC\xE7" => "\xE5\xA1\x89", + "\xDC\xE8" => "\xE5\xA1\xAF", + "\xDC\xE9" => "\xE5\xA1\x95", + "\xDC\xEA" => "\xE5\xA1\x8E", + "\xDC\xEB" => "\xE5\xA1\x9D", + "\xDC\xEC" => "\xE5\xA1\x99", + "\xDC\xED" => "\xE5\xA1\xA5", + "\xDC\xEE" => "\xE5\xA1\x9B", + "\xDC\xEF" => "\xE5\xA0\xBD", + "\xDC\xF0" => "\xE5\xA1\xA3", + "\xDC\xF1" => "\xE5\xA1\xB1", + "\xDC\xF2" => "\xE5\xA3\xBC", + "\xDC\xF3" => "\xE5\xAB\x87", + "\xDC\xF4" => "\xE5\xAB\x84", + "\xDC\xF5" => "\xE5\xAB\x8B", + "\xDC\xF6" => "\xE5\xAA\xBA", + "\xDC\xF7" => "\xE5\xAA\xB8", + "\xDC\xF8" => "\xE5\xAA\xB1", + "\xDC\xF9" => "\xE5\xAA\xB5", + "\xDC\xFA" => "\xE5\xAA\xB0", + "\xDC\xFB" => "\xE5\xAA\xBF", + "\xDC\xFC" => "\xE5\xAB\x88", + "\xDC\xFD" => "\xE5\xAA\xBB", + "\xDC\xFE" => "\xE5\xAB\x86", + "\xDD\x40" => "\xE5\xAA\xB7", + "\xDD\x41" => "\xE5\xAB\x80", + "\xDD\x42" => "\xE5\xAB\x8A", + "\xDD\x43" => "\xE5\xAA\xB4", + "\xDD\x44" => "\xE5\xAA\xB6", + "\xDD\x45" => "\xE5\xAB\x8D", + "\xDD\x46" => "\xE5\xAA\xB9", + "\xDD\x47" => "\xE5\xAA\x90", + "\xDD\x48" => "\xE5\xAF\x96", + "\xDD\x49" => "\xE5\xAF\x98", + "\xDD\x4A" => "\xE5\xAF\x99", + "\xDD\x4B" => "\xE5\xB0\x9F", + "\xDD\x4C" => "\xE5\xB0\xB3", + "\xDD\x4D" => "\xE5\xB5\xB1", + "\xDD\x4E" => "\xE5\xB5\xA3", + "\xDD\x4F" => "\xE5\xB5\x8A", + "\xDD\x50" => "\xE5\xB5\xA5", + "\xDD\x51" => "\xE5\xB5\xB2", + "\xDD\x52" => "\xE5\xB5\xAC", + "\xDD\x53" => "\xE5\xB5\x9E", + "\xDD\x54" => "\xE5\xB5\xA8", + "\xDD\x55" => "\xE5\xB5\xA7", + "\xDD\x56" => "\xE5\xB5\xA2", + "\xDD\x57" => "\xE5\xB7\xB0", + "\xDD\x58" => "\xE5\xB9\x8F", + "\xDD\x59" => "\xE5\xB9\x8E", + "\xDD\x5A" => "\xE5\xB9\x8A", + "\xDD\x5B" => "\xE5\xB9\x8D", + "\xDD\x5C" => "\xE5\xB9\x8B", + "\xDD\x5D" => "\xE5\xBB\x85", + "\xDD\x5E" => "\xE5\xBB\x8C", + "\xDD\x5F" => "\xE5\xBB\x86", + "\xDD\x60" => "\xE5\xBB\x8B", + "\xDD\x61" => "\xE5\xBB\x87", + "\xDD\x62" => "\xE5\xBD\x80", + "\xDD\x63" => "\xE5\xBE\xAF", + "\xDD\x64" => "\xE5\xBE\xAD", + "\xDD\x65" => "\xE6\x83\xB7", + "\xDD\x66" => "\xE6\x85\x89", + "\xDD\x67" => "\xE6\x85\x8A", + "\xDD\x68" => "\xE6\x84\xAB", + "\xDD\x69" => "\xE6\x85\x85", + "\xDD\x6A" => "\xE6\x84\xB6", + "\xDD\x6B" => "\xE6\x84\xB2", + "\xDD\x6C" => "\xE6\x84\xAE", + "\xDD\x6D" => "\xE6\x85\x86", + "\xDD\x6E" => "\xE6\x84\xAF", + "\xDD\x6F" => "\xE6\x85\x8F", + "\xDD\x70" => "\xE6\x84\xA9", + "\xDD\x71" => "\xE6\x85\x80", + "\xDD\x72" => "\xE6\x88\xA0", + "\xDD\x73" => "\xE9\x85\xA8", + "\xDD\x74" => "\xE6\x88\xA3", + "\xDD\x75" => "\xE6\x88\xA5", + "\xDD\x76" => "\xE6\x88\xA4", + "\xDD\x77" => "\xE6\x8F\x85", + "\xDD\x78" => "\xE6\x8F\xB1", + "\xDD\x79" => "\xE6\x8F\xAB", + "\xDD\x7A" => "\xE6\x90\x90", + "\xDD\x7B" => "\xE6\x90\x92", + "\xDD\x7C" => "\xE6\x90\x89", + "\xDD\x7D" => "\xE6\x90\xA0", + "\xDD\x7E" => "\xE6\x90\xA4", + "\xDD\xA1" => "\xE6\x90\xB3", + "\xDD\xA2" => "\xE6\x91\x83", + "\xDD\xA3" => "\xE6\x90\x9F", + "\xDD\xA4" => "\xE6\x90\x95", + "\xDD\xA5" => "\xE6\x90\x98", + "\xDD\xA6" => "\xE6\x90\xB9", + "\xDD\xA7" => "\xE6\x90\xB7", + "\xDD\xA8" => "\xE6\x90\xA2", + "\xDD\xA9" => "\xE6\x90\xA3", + "\xDD\xAA" => "\xE6\x90\x8C", + "\xDD\xAB" => "\xE6\x90\xA6", + "\xDD\xAC" => "\xE6\x90\xB0", + "\xDD\xAD" => "\xE6\x90\xA8", + "\xDD\xAE" => "\xE6\x91\x81", + "\xDD\xAF" => "\xE6\x90\xB5", + "\xDD\xB0" => "\xE6\x90\xAF", + "\xDD\xB1" => "\xE6\x90\x8A", + "\xDD\xB2" => "\xE6\x90\x9A", + "\xDD\xB3" => "\xE6\x91\x80", + "\xDD\xB4" => "\xE6\x90\xA5", + "\xDD\xB5" => "\xE6\x90\xA7", + "\xDD\xB6" => "\xE6\x90\x8B", + "\xDD\xB7" => "\xE6\x8F\xA7", + "\xDD\xB8" => "\xE6\x90\x9B", + "\xDD\xB9" => "\xE6\x90\xAE", + "\xDD\xBA" => "\xE6\x90\xA1", + "\xDD\xBB" => "\xE6\x90\x8E", + "\xDD\xBC" => "\xE6\x95\xAF", + "\xDD\xBD" => "\xE6\x96\x92", + "\xDD\xBE" => "\xE6\x97\x93", + "\xDD\xBF" => "\xE6\x9A\x86", + "\xDD\xC0" => "\xE6\x9A\x8C", + "\xDD\xC1" => "\xE6\x9A\x95", + "\xDD\xC2" => "\xE6\x9A\x90", + "\xDD\xC3" => "\xE6\x9A\x8B", + "\xDD\xC4" => "\xE6\x9A\x8A", + "\xDD\xC5" => "\xE6\x9A\x99", + "\xDD\xC6" => "\xE6\x9A\x94", + "\xDD\xC7" => "\xE6\x99\xB8", + "\xDD\xC8" => "\xE6\x9C\xA0", + "\xDD\xC9" => "\xE6\xA5\xA6", + "\xDD\xCA" => "\xE6\xA5\x9F", + "\xDD\xCB" => "\xE6\xA4\xB8", + "\xDD\xCC" => "\xE6\xA5\x8E", + "\xDD\xCD" => "\xE6\xA5\xA2", + "\xDD\xCE" => "\xE6\xA5\xB1", + "\xDD\xCF" => "\xE6\xA4\xBF", + "\xDD\xD0" => "\xE6\xA5\x85", + "\xDD\xD1" => "\xE6\xA5\xAA", + "\xDD\xD2" => "\xE6\xA4\xB9", + "\xDD\xD3" => "\xE6\xA5\x82", + "\xDD\xD4" => "\xE6\xA5\x97", + "\xDD\xD5" => "\xE6\xA5\x99", + "\xDD\xD6" => "\xE6\xA5\xBA", + "\xDD\xD7" => "\xE6\xA5\x88", + "\xDD\xD8" => "\xE6\xA5\x89", + "\xDD\xD9" => "\xE6\xA4\xB5", + "\xDD\xDA" => "\xE6\xA5\xAC", + "\xDD\xDB" => "\xE6\xA4\xB3", + "\xDD\xDC" => "\xE6\xA4\xBD", + "\xDD\xDD" => "\xE6\xA5\xA5", + "\xDD\xDE" => "\xE6\xA3\xB0", + "\xDD\xDF" => "\xE6\xA5\xB8", + "\xDD\xE0" => "\xE6\xA4\xB4", + "\xDD\xE1" => "\xE6\xA5\xA9", + "\xDD\xE2" => "\xE6\xA5\x80", + "\xDD\xE3" => "\xE6\xA5\xAF", + "\xDD\xE4" => "\xE6\xA5\x84", + "\xDD\xE5" => "\xE6\xA5\xB6", + "\xDD\xE6" => "\xE6\xA5\x98", + "\xDD\xE7" => "\xE6\xA5\x81", + "\xDD\xE8" => "\xE6\xA5\xB4", + "\xDD\xE9" => "\xE6\xA5\x8C", + "\xDD\xEA" => "\xE6\xA4\xBB", + "\xDD\xEB" => "\xE6\xA5\x8B", + "\xDD\xEC" => "\xE6\xA4\xB7", + "\xDD\xED" => "\xE6\xA5\x9C", + "\xDD\xEE" => "\xE6\xA5\x8F", + "\xDD\xEF" => "\xE6\xA5\x91", + "\xDD\xF0" => "\xE6\xA4\xB2", + "\xDD\xF1" => "\xE6\xA5\x92", + "\xDD\xF2" => "\xE6\xA4\xAF", + "\xDD\xF3" => "\xE6\xA5\xBB", + "\xDD\xF4" => "\xE6\xA4\xBC", + "\xDD\xF5" => "\xE6\xAD\x86", + "\xDD\xF6" => "\xE6\xAD\x85", + "\xDD\xF7" => "\xE6\xAD\x83", + "\xDD\xF8" => "\xE6\xAD\x82", + "\xDD\xF9" => "\xE6\xAD\x88", + "\xDD\xFA" => "\xE6\xAD\x81", + "\xDD\xFB" => "\xE6\xAE\x9B", + "\xDD\xFC" => "\xEF\xA8\x8D", + "\xDD\xFD" => "\xE6\xAF\xBB", + "\xDD\xFE" => "\xE6\xAF\xBC", + "\xDE\x40" => "\xE6\xAF\xB9", + "\xDE\x41" => "\xE6\xAF\xB7", + "\xDE\x42" => "\xE6\xAF\xB8", + "\xDE\x43" => "\xE6\xBA\x9B", + "\xDE\x44" => "\xE6\xBB\x96", + "\xDE\x45" => "\xE6\xBB\x88", + "\xDE\x46" => "\xE6\xBA\x8F", + "\xDE\x47" => "\xE6\xBB\x80", + "\xDE\x48" => "\xE6\xBA\x9F", + "\xDE\x49" => "\xE6\xBA\x93", + "\xDE\x4A" => "\xE6\xBA\x94", + "\xDE\x4B" => "\xE6\xBA\xA0", + "\xDE\x4C" => "\xE6\xBA\xB1", + "\xDE\x4D" => "\xE6\xBA\xB9", + "\xDE\x4E" => "\xE6\xBB\x86", + "\xDE\x4F" => "\xE6\xBB\x92", + "\xDE\x50" => "\xE6\xBA\xBD", + "\xDE\x51" => "\xE6\xBB\x81", + "\xDE\x52" => "\xE6\xBA\x9E", + "\xDE\x53" => "\xE6\xBB\x89", + "\xDE\x54" => "\xE6\xBA\xB7", + "\xDE\x55" => "\xE6\xBA\xB0", + "\xDE\x56" => "\xE6\xBB\x8D", + "\xDE\x57" => "\xE6\xBA\xA6", + "\xDE\x58" => "\xE6\xBB\x8F", + "\xDE\x59" => "\xE6\xBA\xB2", + "\xDE\x5A" => "\xE6\xBA\xBE", + "\xDE\x5B" => "\xE6\xBB\x83", + "\xDE\x5C" => "\xE6\xBB\x9C", + "\xDE\x5D" => "\xE6\xBB\x98", + "\xDE\x5E" => "\xE6\xBA\x99", + "\xDE\x5F" => "\xE6\xBA\x92", + "\xDE\x60" => "\xE6\xBA\x8E", + "\xDE\x61" => "\xE6\xBA\x8D", + "\xDE\x62" => "\xE6\xBA\xA4", + "\xDE\x63" => "\xE6\xBA\xA1", + "\xDE\x64" => "\xE6\xBA\xBF", + "\xDE\x65" => "\xE6\xBA\xB3", + "\xDE\x66" => "\xE6\xBB\x90", + "\xDE\x67" => "\xE6\xBB\x8A", + "\xDE\x68" => "\xE6\xBA\x97", + "\xDE\x69" => "\xE6\xBA\xAE", + "\xDE\x6A" => "\xE6\xBA\xA3", + "\xDE\x6B" => "\xE7\x85\x87", + "\xDE\x6C" => "\xE7\x85\x94", + "\xDE\x6D" => "\xE7\x85\x92", + "\xDE\x6E" => "\xE7\x85\xA3", + "\xDE\x6F" => "\xE7\x85\xA0", + "\xDE\x70" => "\xE7\x85\x81", + "\xDE\x71" => "\xE7\x85\x9D", + "\xDE\x72" => "\xE7\x85\xA2", + "\xDE\x73" => "\xE7\x85\xB2", + "\xDE\x74" => "\xE7\x85\xB8", + "\xDE\x75" => "\xE7\x85\xAA", + "\xDE\x76" => "\xE7\x85\xA1", + "\xDE\x77" => "\xE7\x85\x82", + "\xDE\x78" => "\xE7\x85\x98", + "\xDE\x79" => "\xE7\x85\x83", + "\xDE\x7A" => "\xE7\x85\x8B", + "\xDE\x7B" => "\xE7\x85\xB0", + "\xDE\x7C" => "\xE7\x85\x9F", + "\xDE\x7D" => "\xE7\x85\x90", + "\xDE\x7E" => "\xE7\x85\x93", + "\xDE\xA1" => "\xE7\x85\x84", + "\xDE\xA2" => "\xE7\x85\x8D", + "\xDE\xA3" => "\xE7\x85\x9A", + "\xDE\xA4" => "\xE7\x89\x8F", + "\xDE\xA5" => "\xE7\x8A\x8D", + "\xDE\xA6" => "\xE7\x8A\x8C", + "\xDE\xA7" => "\xE7\x8A\x91", + "\xDE\xA8" => "\xE7\x8A\x90", + "\xDE\xA9" => "\xE7\x8A\x8E", + "\xDE\xAA" => "\xE7\x8C\xBC", + "\xDE\xAB" => "\xE7\x8D\x82", + "\xDE\xAC" => "\xE7\x8C\xBB", + "\xDE\xAD" => "\xE7\x8C\xBA", + "\xDE\xAE" => "\xE7\x8D\x80", + "\xDE\xAF" => "\xE7\x8D\x8A", + "\xDE\xB0" => "\xE7\x8D\x89", + "\xDE\xB1" => "\xE7\x91\x84", + "\xDE\xB2" => "\xE7\x91\x8A", + "\xDE\xB3" => "\xE7\x91\x8B", + "\xDE\xB4" => "\xE7\x91\x92", + "\xDE\xB5" => "\xE7\x91\x91", + "\xDE\xB6" => "\xE7\x91\x97", + "\xDE\xB7" => "\xE7\x91\x80", + "\xDE\xB8" => "\xE7\x91\x8F", + "\xDE\xB9" => "\xE7\x91\x90", + "\xDE\xBA" => "\xE7\x91\x8E", + "\xDE\xBB" => "\xE7\x91\x82", + "\xDE\xBC" => "\xE7\x91\x86", + "\xDE\xBD" => "\xE7\x91\x8D", + "\xDE\xBE" => "\xE7\x91\x94", + "\xDE\xBF" => "\xE7\x93\xA1", + "\xDE\xC0" => "\xE7\x93\xBF", + "\xDE\xC1" => "\xE7\x93\xBE", + "\xDE\xC2" => "\xE7\x93\xBD", + "\xDE\xC3" => "\xE7\x94\x9D", + "\xDE\xC4" => "\xE7\x95\xB9", + "\xDE\xC5" => "\xE7\x95\xB7", + "\xDE\xC6" => "\xE6\xA6\x83", + "\xDE\xC7" => "\xE7\x97\xAF", + "\xDE\xC8" => "\xE7\x98\x8F", + "\xDE\xC9" => "\xE7\x98\x83", + "\xDE\xCA" => "\xE7\x97\xB7", + "\xDE\xCB" => "\xE7\x97\xBE", + "\xDE\xCC" => "\xE7\x97\xBC", + "\xDE\xCD" => "\xE7\x97\xB9", + "\xDE\xCE" => "\xE7\x97\xB8", + "\xDE\xCF" => "\xE7\x98\x90", + "\xDE\xD0" => "\xE7\x97\xBB", + "\xDE\xD1" => "\xE7\x97\xB6", + "\xDE\xD2" => "\xE7\x97\xAD", + "\xDE\xD3" => "\xE7\x97\xB5", + "\xDE\xD4" => "\xE7\x97\xBD", + "\xDE\xD5" => "\xE7\x9A\x99", + "\xDE\xD6" => "\xE7\x9A\xB5", + "\xDE\xD7" => "\xE7\x9B\x9D", + "\xDE\xD8" => "\xE7\x9D\x95", + "\xDE\xD9" => "\xE7\x9D\x9F", + "\xDE\xDA" => "\xE7\x9D\xA0", + "\xDE\xDB" => "\xE7\x9D\x92", + "\xDE\xDC" => "\xE7\x9D\x96", + "\xDE\xDD" => "\xE7\x9D\x9A", + "\xDE\xDE" => "\xE7\x9D\xA9", + "\xDE\xDF" => "\xE7\x9D\xA7", + "\xDE\xE0" => "\xE7\x9D\x94", + "\xDE\xE1" => "\xE7\x9D\x99", + "\xDE\xE2" => "\xE7\x9D\xAD", + "\xDE\xE3" => "\xE7\x9F\xA0", + "\xDE\xE4" => "\xE7\xA2\x87", + "\xDE\xE5" => "\xE7\xA2\x9A", + "\xDE\xE6" => "\xE7\xA2\x94", + "\xDE\xE7" => "\xE7\xA2\x8F", + "\xDE\xE8" => "\xE7\xA2\x84", + "\xDE\xE9" => "\xE7\xA2\x95", + "\xDE\xEA" => "\xE7\xA2\x85", + "\xDE\xEB" => "\xE7\xA2\x86", + "\xDE\xEC" => "\xE7\xA2\xA1", + "\xDE\xED" => "\xE7\xA2\x83", + "\xDE\xEE" => "\xE7\xA1\xB9", + "\xDE\xEF" => "\xE7\xA2\x99", + "\xDE\xF0" => "\xE7\xA2\x80", + "\xDE\xF1" => "\xE7\xA2\x96", + "\xDE\xF2" => "\xE7\xA1\xBB", + "\xDE\xF3" => "\xE7\xA5\xBC", + "\xDE\xF4" => "\xE7\xA6\x82", + "\xDE\xF5" => "\xE7\xA5\xBD", + "\xDE\xF6" => "\xE7\xA5\xB9", + "\xDE\xF7" => "\xE7\xA8\x91", + "\xDE\xF8" => "\xE7\xA8\x98", + "\xDE\xF9" => "\xE7\xA8\x99", + "\xDE\xFA" => "\xE7\xA8\x92", + "\xDE\xFB" => "\xE7\xA8\x97", + "\xDE\xFC" => "\xE7\xA8\x95", + "\xDE\xFD" => "\xE7\xA8\xA2", + "\xDE\xFE" => "\xE7\xA8\x93", + "\xDF\x40" => "\xE7\xA8\x9B", + "\xDF\x41" => "\xE7\xA8\x90", + "\xDF\x42" => "\xE7\xAA\xA3", + "\xDF\x43" => "\xE7\xAA\xA2", + "\xDF\x44" => "\xE7\xAA\x9E", + "\xDF\x45" => "\xE7\xAB\xAB", + "\xDF\x46" => "\xE7\xAD\xA6", + "\xDF\x47" => "\xE7\xAD\xA4", + "\xDF\x48" => "\xE7\xAD\xAD", + "\xDF\x49" => "\xE7\xAD\xB4", + "\xDF\x4A" => "\xE7\xAD\xA9", + "\xDF\x4B" => "\xE7\xAD\xB2", + "\xDF\x4C" => "\xE7\xAD\xA5", + "\xDF\x4D" => "\xE7\xAD\xB3", + "\xDF\x4E" => "\xE7\xAD\xB1", + "\xDF\x4F" => "\xE7\xAD\xB0", + "\xDF\x50" => "\xE7\xAD\xA1", + "\xDF\x51" => "\xE7\xAD\xB8", + "\xDF\x52" => "\xE7\xAD\xB6", + "\xDF\x53" => "\xE7\xAD\xA3", + "\xDF\x54" => "\xE7\xB2\xB2", + "\xDF\x55" => "\xE7\xB2\xB4", + "\xDF\x56" => "\xE7\xB2\xAF", + "\xDF\x57" => "\xE7\xB6\x88", + "\xDF\x58" => "\xE7\xB6\x86", + "\xDF\x59" => "\xE7\xB6\x80", + "\xDF\x5A" => "\xE7\xB6\x8D", + "\xDF\x5B" => "\xE7\xB5\xBF", + "\xDF\x5C" => "\xE7\xB6\x85", + "\xDF\x5D" => "\xE7\xB5\xBA", + "\xDF\x5E" => "\xE7\xB6\x8E", + "\xDF\x5F" => "\xE7\xB5\xBB", + "\xDF\x60" => "\xE7\xB6\x83", + "\xDF\x61" => "\xE7\xB5\xBC", + "\xDF\x62" => "\xE7\xB6\x8C", + "\xDF\x63" => "\xE7\xB6\x94", + "\xDF\x64" => "\xE7\xB6\x84", + "\xDF\x65" => "\xE7\xB5\xBD", + "\xDF\x66" => "\xE7\xB6\x92", + "\xDF\x67" => "\xE7\xBD\xAD", + "\xDF\x68" => "\xE7\xBD\xAB", + "\xDF\x69" => "\xE7\xBD\xA7", + "\xDF\x6A" => "\xE7\xBD\xA8", + "\xDF\x6B" => "\xE7\xBD\xAC", + "\xDF\x6C" => "\xE7\xBE\xA6", + "\xDF\x6D" => "\xE7\xBE\xA5", + "\xDF\x6E" => "\xE7\xBE\xA7", + "\xDF\x6F" => "\xE7\xBF\x9B", + "\xDF\x70" => "\xE7\xBF\x9C", + "\xDF\x71" => "\xE8\x80\xA1", + "\xDF\x72" => "\xE8\x85\xA4", + "\xDF\x73" => "\xE8\x85\xA0", + "\xDF\x74" => "\xE8\x85\xB7", + "\xDF\x75" => "\xE8\x85\x9C", + "\xDF\x76" => "\xE8\x85\xA9", + "\xDF\x77" => "\xE8\x85\x9B", + "\xDF\x78" => "\xE8\x85\xA2", + "\xDF\x79" => "\xE8\x85\xB2", + "\xDF\x7A" => "\xE6\x9C\xA1", + "\xDF\x7B" => "\xE8\x85\x9E", + "\xDF\x7C" => "\xE8\x85\xB6", + "\xDF\x7D" => "\xE8\x85\xA7", + "\xDF\x7E" => "\xE8\x85\xAF", + "\xDF\xA1" => "\xE8\x85\x84", + "\xDF\xA2" => "\xE8\x85\xA1", + "\xDF\xA3" => "\xE8\x88\x9D", + "\xDF\xA4" => "\xE8\x89\x89", + "\xDF\xA5" => "\xE8\x89\x84", + "\xDF\xA6" => "\xE8\x89\x80", + "\xDF\xA7" => "\xE8\x89\x82", + "\xDF\xA8" => "\xE8\x89\x85", + "\xDF\xA9" => "\xE8\x93\xB1", + "\xDF\xAA" => "\xE8\x90\xBF", + "\xDF\xAB" => "\xE8\x91\x96", + "\xDF\xAC" => "\xE8\x91\xB6", + "\xDF\xAD" => "\xE8\x91\xB9", + "\xDF\xAE" => "\xE8\x92\x8F", + "\xDF\xAF" => "\xE8\x92\x8D", + "\xDF\xB0" => "\xE8\x91\xA5", + "\xDF\xB1" => "\xE8\x91\x91", + "\xDF\xB2" => "\xE8\x91\x80", + "\xDF\xB3" => "\xE8\x92\x86", + "\xDF\xB4" => "\xE8\x91\xA7", + "\xDF\xB5" => "\xE8\x90\xB0", + "\xDF\xB6" => "\xE8\x91\x8D", + "\xDF\xB7" => "\xE8\x91\xBD", + "\xDF\xB8" => "\xE8\x91\x9A", + "\xDF\xB9" => "\xE8\x91\x99", + "\xDF\xBA" => "\xE8\x91\xB4", + "\xDF\xBB" => "\xE8\x91\xB3", + "\xDF\xBC" => "\xE8\x91\x9D", + "\xDF\xBD" => "\xE8\x94\x87", + "\xDF\xBE" => "\xE8\x91\x9E", + "\xDF\xBF" => "\xE8\x90\xB7", + "\xDF\xC0" => "\xE8\x90\xBA", + "\xDF\xC1" => "\xE8\x90\xB4", + "\xDF\xC2" => "\xE8\x91\xBA", + "\xDF\xC3" => "\xE8\x91\x83", + "\xDF\xC4" => "\xE8\x91\xB8", + "\xDF\xC5" => "\xE8\x90\xB2", + "\xDF\xC6" => "\xE8\x91\x85", + "\xDF\xC7" => "\xE8\x90\xA9", + "\xDF\xC8" => "\xE8\x8F\x99", + "\xDF\xC9" => "\xE8\x91\x8B", + "\xDF\xCA" => "\xE8\x90\xAF", + "\xDF\xCB" => "\xE8\x91\x82", + "\xDF\xCC" => "\xE8\x90\xAD", + "\xDF\xCD" => "\xE8\x91\x9F", + "\xDF\xCE" => "\xE8\x91\xB0", + "\xDF\xCF" => "\xE8\x90\xB9", + "\xDF\xD0" => "\xE8\x91\x8E", + "\xDF\xD1" => "\xE8\x91\x8C", + "\xDF\xD2" => "\xE8\x91\x92", + "\xDF\xD3" => "\xE8\x91\xAF", + "\xDF\xD4" => "\xE8\x93\x85", + "\xDF\xD5" => "\xE8\x92\x8E", + "\xDF\xD6" => "\xE8\x90\xBB", + "\xDF\xD7" => "\xE8\x91\x87", + "\xDF\xD8" => "\xE8\x90\xB6", + "\xDF\xD9" => "\xE8\x90\xB3", + "\xDF\xDA" => "\xE8\x91\xA8", + "\xDF\xDB" => "\xE8\x91\xBE", + "\xDF\xDC" => "\xE8\x91\x84", + "\xDF\xDD" => "\xE8\x90\xAB", + "\xDF\xDE" => "\xE8\x91\xA0", + "\xDF\xDF" => "\xE8\x91\x94", + "\xDF\xE0" => "\xE8\x91\xAE", + "\xDF\xE1" => "\xE8\x91\x90", + "\xDF\xE2" => "\xE8\x9C\x8B", + "\xDF\xE3" => "\xE8\x9C\x84", + "\xDF\xE4" => "\xE8\x9B\xB7", + "\xDF\xE5" => "\xE8\x9C\x8C", + "\xDF\xE6" => "\xE8\x9B\xBA", + "\xDF\xE7" => "\xE8\x9B\x96", + "\xDF\xE8" => "\xE8\x9B\xB5", + "\xDF\xE9" => "\xE8\x9D\x8D", + "\xDF\xEA" => "\xE8\x9B\xB8", + "\xDF\xEB" => "\xE8\x9C\x8E", + "\xDF\xEC" => "\xE8\x9C\x89", + "\xDF\xED" => "\xE8\x9C\x81", + "\xDF\xEE" => "\xE8\x9B\xB6", + "\xDF\xEF" => "\xE8\x9C\x8D", + "\xDF\xF0" => "\xE8\x9C\x85", + "\xDF\xF1" => "\xE8\xA3\x96", + "\xDF\xF2" => "\xE8\xA3\x8B", + "\xDF\xF3" => "\xE8\xA3\x8D", + "\xDF\xF4" => "\xE8\xA3\x8E", + "\xDF\xF5" => "\xE8\xA3\x9E", + "\xDF\xF6" => "\xE8\xA3\x9B", + "\xDF\xF7" => "\xE8\xA3\x9A", + "\xDF\xF8" => "\xE8\xA3\x8C", + "\xDF\xF9" => "\xE8\xA3\x90", + "\xDF\xFA" => "\xE8\xA6\x85", + "\xDF\xFB" => "\xE8\xA6\x9B", + "\xDF\xFC" => "\xE8\xA7\x9F", + "\xDF\xFD" => "\xE8\xA7\xA5", + "\xDF\xFE" => "\xE8\xA7\xA4", + "\xE0\x40" => "\xE8\xA7\xA1", + "\xE0\x41" => "\xE8\xA7\xA0", + "\xE0\x42" => "\xE8\xA7\xA2", + "\xE0\x43" => "\xE8\xA7\x9C", + "\xE0\x44" => "\xE8\xA7\xA6", + "\xE0\x45" => "\xE8\xA9\xB6", + "\xE0\x46" => "\xE8\xAA\x86", + "\xE0\x47" => "\xE8\xA9\xBF", + "\xE0\x48" => "\xE8\xA9\xA1", + "\xE0\x49" => "\xE8\xA8\xBF", + "\xE0\x4A" => "\xE8\xA9\xB7", + "\xE0\x4B" => "\xE8\xAA\x82", + "\xE0\x4C" => "\xE8\xAA\x84", + "\xE0\x4D" => "\xE8\xA9\xB5", + "\xE0\x4E" => "\xE8\xAA\x83", + "\xE0\x4F" => "\xE8\xAA\x81", + "\xE0\x50" => "\xE8\xA9\xB4", + "\xE0\x51" => "\xE8\xA9\xBA", + "\xE0\x52" => "\xE8\xB0\xBC", + "\xE0\x53" => "\xE8\xB1\x8B", + "\xE0\x54" => "\xE8\xB1\x8A", + "\xE0\x55" => "\xE8\xB1\xA5", + "\xE0\x56" => "\xE8\xB1\xA4", + "\xE0\x57" => "\xE8\xB1\xA6", + "\xE0\x58" => "\xE8\xB2\x86", + "\xE0\x59" => "\xE8\xB2\x84", + "\xE0\x5A" => "\xE8\xB2\x85", + "\xE0\x5B" => "\xE8\xB3\x8C", + "\xE0\x5C" => "\xE8\xB5\xA8", + "\xE0\x5D" => "\xE8\xB5\xA9", + "\xE0\x5E" => "\xE8\xB6\x91", + "\xE0\x5F" => "\xE8\xB6\x8C", + "\xE0\x60" => "\xE8\xB6\x8E", + "\xE0\x61" => "\xE8\xB6\x8F", + "\xE0\x62" => "\xE8\xB6\x8D", + "\xE0\x63" => "\xE8\xB6\x93", + "\xE0\x64" => "\xE8\xB6\x94", + "\xE0\x65" => "\xE8\xB6\x90", + "\xE0\x66" => "\xE8\xB6\x92", + "\xE0\x67" => "\xE8\xB7\xB0", + "\xE0\x68" => "\xE8\xB7\xA0", + "\xE0\x69" => "\xE8\xB7\xAC", + "\xE0\x6A" => "\xE8\xB7\xB1", + "\xE0\x6B" => "\xE8\xB7\xAE", + "\xE0\x6C" => "\xE8\xB7\x90", + "\xE0\x6D" => "\xE8\xB7\xA9", + "\xE0\x6E" => "\xE8\xB7\xA3", + "\xE0\x6F" => "\xE8\xB7\xA2", + "\xE0\x70" => "\xE8\xB7\xA7", + "\xE0\x71" => "\xE8\xB7\xB2", + "\xE0\x72" => "\xE8\xB7\xAB", + "\xE0\x73" => "\xE8\xB7\xB4", + "\xE0\x74" => "\xE8\xBC\x86", + "\xE0\x75" => "\xE8\xBB\xBF", + "\xE0\x76" => "\xE8\xBC\x81", + "\xE0\x77" => "\xE8\xBC\x80", + "\xE0\x78" => "\xE8\xBC\x85", + "\xE0\x79" => "\xE8\xBC\x87", + "\xE0\x7A" => "\xE8\xBC\x88", + "\xE0\x7B" => "\xE8\xBC\x82", + "\xE0\x7C" => "\xE8\xBC\x8B", + "\xE0\x7D" => "\xE9\x81\x92", + "\xE0\x7E" => "\xE9\x80\xBF", + "\xE0\xA1" => "\xE9\x81\x84", + "\xE0\xA2" => "\xE9\x81\x89", + "\xE0\xA3" => "\xE9\x80\xBD", + "\xE0\xA4" => "\xE9\x84\x90", + "\xE0\xA5" => "\xE9\x84\x8D", + "\xE0\xA6" => "\xE9\x84\x8F", + "\xE0\xA7" => "\xE9\x84\x91", + "\xE0\xA8" => "\xE9\x84\x96", + "\xE0\xA9" => "\xE9\x84\x94", + "\xE0\xAA" => "\xE9\x84\x8B", + "\xE0\xAB" => "\xE9\x84\x8E", + "\xE0\xAC" => "\xE9\x85\xAE", + "\xE0\xAD" => "\xE9\x85\xAF", + "\xE0\xAE" => "\xE9\x89\x88", + "\xE0\xAF" => "\xE9\x89\x92", + "\xE0\xB0" => "\xE9\x88\xB0", + "\xE0\xB1" => "\xE9\x88\xBA", + "\xE0\xB2" => "\xE9\x89\xA6", + "\xE0\xB3" => "\xE9\x88\xB3", + "\xE0\xB4" => "\xE9\x89\xA5", + "\xE0\xB5" => "\xE9\x89\x9E", + "\xE0\xB6" => "\xE9\x8A\x83", + "\xE0\xB7" => "\xE9\x88\xAE", + "\xE0\xB8" => "\xE9\x89\x8A", + "\xE0\xB9" => "\xE9\x89\x86", + "\xE0\xBA" => "\xE9\x89\xAD", + "\xE0\xBB" => "\xE9\x89\xAC", + "\xE0\xBC" => "\xE9\x89\x8F", + "\xE0\xBD" => "\xE9\x89\xA0", + "\xE0\xBE" => "\xE9\x89\xA7", + "\xE0\xBF" => "\xE9\x89\xAF", + "\xE0\xC0" => "\xE9\x88\xB6", + "\xE0\xC1" => "\xE9\x89\xA1", + "\xE0\xC2" => "\xE9\x89\xB0", + "\xE0\xC3" => "\xE9\x88\xB1", + "\xE0\xC4" => "\xE9\x89\x94", + "\xE0\xC5" => "\xE9\x89\xA3", + "\xE0\xC6" => "\xE9\x89\x90", + "\xE0\xC7" => "\xE9\x89\xB2", + "\xE0\xC8" => "\xE9\x89\x8E", + "\xE0\xC9" => "\xE9\x89\x93", + "\xE0\xCA" => "\xE9\x89\x8C", + "\xE0\xCB" => "\xE9\x89\x96", + "\xE0\xCC" => "\xE9\x88\xB2", + "\xE0\xCD" => "\xE9\x96\x9F", + "\xE0\xCE" => "\xE9\x96\x9C", + "\xE0\xCF" => "\xE9\x96\x9E", + "\xE0\xD0" => "\xE9\x96\x9B", + "\xE0\xD1" => "\xE9\x9A\x92", + "\xE0\xD2" => "\xE9\x9A\x93", + "\xE0\xD3" => "\xE9\x9A\x91", + "\xE0\xD4" => "\xE9\x9A\x97", + "\xE0\xD5" => "\xE9\x9B\x8E", + "\xE0\xD6" => "\xE9\x9B\xBA", + "\xE0\xD7" => "\xE9\x9B\xBD", + "\xE0\xD8" => "\xE9\x9B\xB8", + "\xE0\xD9" => "\xE9\x9B\xB5", + "\xE0\xDA" => "\xE9\x9D\xB3", + "\xE0\xDB" => "\xE9\x9D\xB7", + "\xE0\xDC" => "\xE9\x9D\xB8", + "\xE0\xDD" => "\xE9\x9D\xB2", + "\xE0\xDE" => "\xE9\xA0\x8F", + "\xE0\xDF" => "\xE9\xA0\x8D", + "\xE0\xE0" => "\xE9\xA0\x8E", + "\xE0\xE1" => "\xE9\xA2\xAC", + "\xE0\xE2" => "\xE9\xA3\xB6", + "\xE0\xE3" => "\xE9\xA3\xB9", + "\xE0\xE4" => "\xE9\xA6\xAF", + "\xE0\xE5" => "\xE9\xA6\xB2", + "\xE0\xE6" => "\xE9\xA6\xB0", + "\xE0\xE7" => "\xE9\xA6\xB5", + "\xE0\xE8" => "\xE9\xAA\xAD", + "\xE0\xE9" => "\xE9\xAA\xAB", + "\xE0\xEA" => "\xE9\xAD\x9B", + "\xE0\xEB" => "\xE9\xB3\xAA", + "\xE0\xEC" => "\xE9\xB3\xAD", + "\xE0\xED" => "\xE9\xB3\xA7", + "\xE0\xEE" => "\xE9\xBA\x80", + "\xE0\xEF" => "\xE9\xBB\xBD", + "\xE0\xF0" => "\xE5\x83\xA6", + "\xE0\xF1" => "\xE5\x83\x94", + "\xE0\xF2" => "\xE5\x83\x97", + "\xE0\xF3" => "\xE5\x83\xA8", + "\xE0\xF4" => "\xE5\x83\xB3", + "\xE0\xF5" => "\xE5\x83\x9B", + "\xE0\xF6" => "\xE5\x83\xAA", + "\xE0\xF7" => "\xE5\x83\x9D", + "\xE0\xF8" => "\xE5\x83\xA4", + "\xE0\xF9" => "\xE5\x83\x93", + "\xE0\xFA" => "\xE5\x83\xAC", + "\xE0\xFB" => "\xE5\x83\xB0", + "\xE0\xFC" => "\xE5\x83\xAF", + "\xE0\xFD" => "\xE5\x83\xA3", + "\xE0\xFE" => "\xE5\x83\xA0", + "\xE1\x40" => "\xE5\x87\x98", + "\xE1\x41" => "\xE5\x8A\x80", + "\xE1\x42" => "\xE5\x8A\x81", + "\xE1\x43" => "\xE5\x8B\xA9", + "\xE1\x44" => "\xE5\x8B\xAB", + "\xE1\x45" => "\xE5\x8C\xB0", + "\xE1\x46" => "\xE5\x8E\xAC", + "\xE1\x47" => "\xE5\x98\xA7", + "\xE1\x48" => "\xE5\x98\x95", + "\xE1\x49" => "\xE5\x98\x8C", + "\xE1\x4A" => "\xE5\x98\x92", + "\xE1\x4B" => "\xE5\x97\xBC", + "\xE1\x4C" => "\xE5\x98\x8F", + "\xE1\x4D" => "\xE5\x98\x9C", + "\xE1\x4E" => "\xE5\x98\x81", + "\xE1\x4F" => "\xE5\x98\x93", + "\xE1\x50" => "\xE5\x98\x82", + "\xE1\x51" => "\xE5\x97\xBA", + "\xE1\x52" => "\xE5\x98\x9D", + "\xE1\x53" => "\xE5\x98\x84", + "\xE1\x54" => "\xE5\x97\xBF", + "\xE1\x55" => "\xE5\x97\xB9", + "\xE1\x56" => "\xE5\xA2\x89", + "\xE1\x57" => "\xE5\xA1\xBC", + "\xE1\x58" => "\xE5\xA2\x90", + "\xE1\x59" => "\xE5\xA2\x98", + "\xE1\x5A" => "\xE5\xA2\x86", + "\xE1\x5B" => "\xE5\xA2\x81", + "\xE1\x5C" => "\xE5\xA1\xBF", + "\xE1\x5D" => "\xE5\xA1\xB4", + "\xE1\x5E" => "\xE5\xA2\x8B", + "\xE1\x5F" => "\xE5\xA1\xBA", + "\xE1\x60" => "\xE5\xA2\x87", + "\xE1\x61" => "\xE5\xA2\x91", + "\xE1\x62" => "\xE5\xA2\x8E", + "\xE1\x63" => "\xE5\xA1\xB6", + "\xE1\x64" => "\xE5\xA2\x82", + "\xE1\x65" => "\xE5\xA2\x88", + "\xE1\x66" => "\xE5\xA1\xBB", + "\xE1\x67" => "\xE5\xA2\x94", + "\xE1\x68" => "\xE5\xA2\x8F", + "\xE1\x69" => "\xE5\xA3\xBE", + "\xE1\x6A" => "\xE5\xA5\xAB", + "\xE1\x6B" => "\xE5\xAB\x9C", + "\xE1\x6C" => "\xE5\xAB\xAE", + "\xE1\x6D" => "\xE5\xAB\xA5", + "\xE1\x6E" => "\xE5\xAB\x95", + "\xE1\x6F" => "\xE5\xAB\xAA", + "\xE1\x70" => "\xE5\xAB\x9A", + "\xE1\x71" => "\xE5\xAB\xAD", + "\xE1\x72" => "\xE5\xAB\xAB", + "\xE1\x73" => "\xE5\xAB\xB3", + "\xE1\x74" => "\xE5\xAB\xA2", + "\xE1\x75" => "\xE5\xAB\xA0", + "\xE1\x76" => "\xE5\xAB\x9B", + "\xE1\x77" => "\xE5\xAB\xAC", + "\xE1\x78" => "\xE5\xAB\x9E", + "\xE1\x79" => "\xE5\xAB\x9D", + "\xE1\x7A" => "\xE5\xAB\x99", + "\xE1\x7B" => "\xE5\xAB\xA8", + "\xE1\x7C" => "\xE5\xAB\x9F", + "\xE1\x7D" => "\xE5\xAD\xB7", + "\xE1\x7E" => "\xE5\xAF\xA0", + "\xE1\xA1" => "\xE5\xAF\xA3", + "\xE1\xA2" => "\xE5\xB1\xA3", + "\xE1\xA3" => "\xE5\xB6\x82", + "\xE1\xA4" => "\xE5\xB6\x80", + "\xE1\xA5" => "\xE5\xB5\xBD", + "\xE1\xA6" => "\xE5\xB6\x86", + "\xE1\xA7" => "\xE5\xB5\xBA", + "\xE1\xA8" => "\xE5\xB6\x81", + "\xE1\xA9" => "\xE5\xB5\xB7", + "\xE1\xAA" => "\xE5\xB6\x8A", + "\xE1\xAB" => "\xE5\xB6\x89", + "\xE1\xAC" => "\xE5\xB6\x88", + "\xE1\xAD" => "\xE5\xB5\xBE", + "\xE1\xAE" => "\xE5\xB5\xBC", + "\xE1\xAF" => "\xE5\xB6\x8D", + "\xE1\xB0" => "\xE5\xB5\xB9", + "\xE1\xB1" => "\xE5\xB5\xBF", + "\xE1\xB2" => "\xE5\xB9\x98", + "\xE1\xB3" => "\xE5\xB9\x99", + "\xE1\xB4" => "\xE5\xB9\x93", + "\xE1\xB5" => "\xE5\xBB\x98", + "\xE1\xB6" => "\xE5\xBB\x91", + "\xE1\xB7" => "\xE5\xBB\x97", + "\xE1\xB8" => "\xE5\xBB\x8E", + "\xE1\xB9" => "\xE5\xBB\x9C", + "\xE1\xBA" => "\xE5\xBB\x95", + "\xE1\xBB" => "\xE5\xBB\x99", + "\xE1\xBC" => "\xE5\xBB\x92", + "\xE1\xBD" => "\xE5\xBB\x94", + "\xE1\xBE" => "\xE5\xBD\x84", + "\xE1\xBF" => "\xE5\xBD\x83", + "\xE1\xC0" => "\xE5\xBD\xAF", + "\xE1\xC1" => "\xE5\xBE\xB6", + "\xE1\xC2" => "\xE6\x84\xAC", + "\xE1\xC3" => "\xE6\x84\xA8", + "\xE1\xC4" => "\xE6\x85\x81", + "\xE1\xC5" => "\xE6\x85\x9E", + "\xE1\xC6" => "\xE6\x85\xB1", + "\xE1\xC7" => "\xE6\x85\xB3", + "\xE1\xC8" => "\xE6\x85\x92", + "\xE1\xC9" => "\xE6\x85\x93", + "\xE1\xCA" => "\xE6\x85\xB2", + "\xE1\xCB" => "\xE6\x85\xAC", + "\xE1\xCC" => "\xE6\x86\x80", + "\xE1\xCD" => "\xE6\x85\xB4", + "\xE1\xCE" => "\xE6\x85\x94", + "\xE1\xCF" => "\xE6\x85\xBA", + "\xE1\xD0" => "\xE6\x85\x9B", + "\xE1\xD1" => "\xE6\x85\xA5", + "\xE1\xD2" => "\xE6\x84\xBB", + "\xE1\xD3" => "\xE6\x85\xAA", + "\xE1\xD4" => "\xE6\x85\xA1", + "\xE1\xD5" => "\xE6\x85\x96", + "\xE1\xD6" => "\xE6\x88\xA9", + "\xE1\xD7" => "\xE6\x88\xA7", + "\xE1\xD8" => "\xE6\x88\xAB", + "\xE1\xD9" => "\xE6\x90\xAB", + "\xE1\xDA" => "\xE6\x91\x8D", + "\xE1\xDB" => "\xE6\x91\x9B", + "\xE1\xDC" => "\xE6\x91\x9D", + "\xE1\xDD" => "\xE6\x91\xB4", + "\xE1\xDE" => "\xE6\x91\xB6", + "\xE1\xDF" => "\xE6\x91\xB2", + "\xE1\xE0" => "\xE6\x91\xB3", + "\xE1\xE1" => "\xE6\x91\xBD", + "\xE1\xE2" => "\xE6\x91\xB5", + "\xE1\xE3" => "\xE6\x91\xA6", + "\xE1\xE4" => "\xE6\x92\xA6", + "\xE1\xE5" => "\xE6\x91\x8E", + "\xE1\xE6" => "\xE6\x92\x82", + "\xE1\xE7" => "\xE6\x91\x9E", + "\xE1\xE8" => "\xE6\x91\x9C", + "\xE1\xE9" => "\xE6\x91\x8B", + "\xE1\xEA" => "\xE6\x91\x93", + "\xE1\xEB" => "\xE6\x91\xA0", + "\xE1\xEC" => "\xE6\x91\x90", + "\xE1\xED" => "\xE6\x91\xBF", + "\xE1\xEE" => "\xE6\x90\xBF", + "\xE1\xEF" => "\xE6\x91\xAC", + "\xE1\xF0" => "\xE6\x91\xAB", + "\xE1\xF1" => "\xE6\x91\x99", + "\xE1\xF2" => "\xE6\x91\xA5", + "\xE1\xF3" => "\xE6\x91\xB7", + "\xE1\xF4" => "\xE6\x95\xB3", + "\xE1\xF5" => "\xE6\x96\xA0", + "\xE1\xF6" => "\xE6\x9A\xA1", + "\xE1\xF7" => "\xE6\x9A\xA0", + "\xE1\xF8" => "\xE6\x9A\x9F", + "\xE1\xF9" => "\xE6\x9C\x85", + "\xE1\xFA" => "\xE6\x9C\x84", + "\xE1\xFB" => "\xE6\x9C\xA2", + "\xE1\xFC" => "\xE6\xA6\xB1", + "\xE1\xFD" => "\xE6\xA6\xB6", + "\xE1\xFE" => "\xE6\xA7\x89", + "\xE2\x40" => "\xE6\xA6\xA0", + "\xE2\x41" => "\xE6\xA7\x8E", + "\xE2\x42" => "\xE6\xA6\x96", + "\xE2\x43" => "\xE6\xA6\xB0", + "\xE2\x44" => "\xE6\xA6\xAC", + "\xE2\x45" => "\xE6\xA6\xBC", + "\xE2\x46" => "\xE6\xA6\x91", + "\xE2\x47" => "\xE6\xA6\x99", + "\xE2\x48" => "\xE6\xA6\x8E", + "\xE2\x49" => "\xE6\xA6\xA7", + "\xE2\x4A" => "\xE6\xA6\x8D", + "\xE2\x4B" => "\xE6\xA6\xA9", + "\xE2\x4C" => "\xE6\xA6\xBE", + "\xE2\x4D" => "\xE6\xA6\xAF", + "\xE2\x4E" => "\xE6\xA6\xBF", + "\xE2\x4F" => "\xE6\xA7\x84", + "\xE2\x50" => "\xE6\xA6\xBD", + "\xE2\x51" => "\xE6\xA6\xA4", + "\xE2\x52" => "\xE6\xA7\x94", + "\xE2\x53" => "\xE6\xA6\xB9", + "\xE2\x54" => "\xE6\xA7\x8A", + "\xE2\x55" => "\xE6\xA6\x9A", + "\xE2\x56" => "\xE6\xA7\x8F", + "\xE2\x57" => "\xE6\xA6\xB3", + "\xE2\x58" => "\xE6\xA6\x93", + "\xE2\x59" => "\xE6\xA6\xAA", + "\xE2\x5A" => "\xE6\xA6\xA1", + "\xE2\x5B" => "\xE6\xA6\x9E", + "\xE2\x5C" => "\xE6\xA7\x99", + "\xE2\x5D" => "\xE6\xA6\x97", + "\xE2\x5E" => "\xE6\xA6\x90", + "\xE2\x5F" => "\xE6\xA7\x82", + "\xE2\x60" => "\xE6\xA6\xB5", + "\xE2\x61" => "\xE6\xA6\xA5", + "\xE2\x62" => "\xE6\xA7\x86", + "\xE2\x63" => "\xE6\xAD\x8A", + "\xE2\x64" => "\xE6\xAD\x8D", + "\xE2\x65" => "\xE6\xAD\x8B", + "\xE2\x66" => "\xE6\xAE\x9E", + "\xE2\x67" => "\xE6\xAE\x9F", + "\xE2\x68" => "\xE6\xAE\xA0", + "\xE2\x69" => "\xE6\xAF\x83", + "\xE2\x6A" => "\xE6\xAF\x84", + "\xE2\x6B" => "\xE6\xAF\xBE", + "\xE2\x6C" => "\xE6\xBB\x8E", + "\xE2\x6D" => "\xE6\xBB\xB5", + "\xE2\x6E" => "\xE6\xBB\xB1", + "\xE2\x6F" => "\xE6\xBC\x83", + "\xE2\x70" => "\xE6\xBC\xA5", + "\xE2\x71" => "\xE6\xBB\xB8", + "\xE2\x72" => "\xE6\xBC\xB7", + "\xE2\x73" => "\xE6\xBB\xBB", + "\xE2\x74" => "\xE6\xBC\xAE", + "\xE2\x75" => "\xE6\xBC\x89", + "\xE2\x76" => "\xE6\xBD\x8E", + "\xE2\x77" => "\xE6\xBC\x99", + "\xE2\x78" => "\xE6\xBC\x9A", + "\xE2\x79" => "\xE6\xBC\xA7", + "\xE2\x7A" => "\xE6\xBC\x98", + "\xE2\x7B" => "\xE6\xBC\xBB", + "\xE2\x7C" => "\xE6\xBC\x92", + "\xE2\x7D" => "\xE6\xBB\xAD", + "\xE2\x7E" => "\xE6\xBC\x8A", + "\xE2\xA1" => "\xE6\xBC\xB6", + "\xE2\xA2" => "\xE6\xBD\xB3", + "\xE2\xA3" => "\xE6\xBB\xB9", + "\xE2\xA4" => "\xE6\xBB\xAE", + "\xE2\xA5" => "\xE6\xBC\xAD", + "\xE2\xA6" => "\xE6\xBD\x80", + "\xE2\xA7" => "\xE6\xBC\xB0", + "\xE2\xA8" => "\xE6\xBC\xBC", + "\xE2\xA9" => "\xE6\xBC\xB5", + "\xE2\xAA" => "\xE6\xBB\xAB", + "\xE2\xAB" => "\xE6\xBC\x87", + "\xE2\xAC" => "\xE6\xBC\x8E", + "\xE2\xAD" => "\xE6\xBD\x83", + "\xE2\xAE" => "\xE6\xBC\x85", + "\xE2\xAF" => "\xE6\xBB\xBD", + "\xE2\xB0" => "\xE6\xBB\xB6", + "\xE2\xB1" => "\xE6\xBC\xB9", + "\xE2\xB2" => "\xE6\xBC\x9C", + "\xE2\xB3" => "\xE6\xBB\xBC", + "\xE2\xB4" => "\xE6\xBC\xBA", + "\xE2\xB5" => "\xE6\xBC\x9F", + "\xE2\xB6" => "\xE6\xBC\x8D", + "\xE2\xB7" => "\xE6\xBC\x9E", + "\xE2\xB8" => "\xE6\xBC\x88", + "\xE2\xB9" => "\xE6\xBC\xA1", + "\xE2\xBA" => "\xE7\x86\x87", + "\xE2\xBB" => "\xE7\x86\x90", + "\xE2\xBC" => "\xE7\x86\x89", + "\xE2\xBD" => "\xE7\x86\x80", + "\xE2\xBE" => "\xE7\x86\x85", + "\xE2\xBF" => "\xE7\x86\x82", + "\xE2\xC0" => "\xE7\x86\x8F", + "\xE2\xC1" => "\xE7\x85\xBB", + "\xE2\xC2" => "\xE7\x86\x86", + "\xE2\xC3" => "\xE7\x86\x81", + "\xE2\xC4" => "\xE7\x86\x97", + "\xE2\xC5" => "\xE7\x89\x84", + "\xE2\xC6" => "\xE7\x89\x93", + "\xE2\xC7" => "\xE7\x8A\x97", + "\xE2\xC8" => "\xE7\x8A\x95", + "\xE2\xC9" => "\xE7\x8A\x93", + "\xE2\xCA" => "\xE7\x8D\x83", + "\xE2\xCB" => "\xE7\x8D\x8D", + "\xE2\xCC" => "\xE7\x8D\x91", + "\xE2\xCD" => "\xE7\x8D\x8C", + "\xE2\xCE" => "\xE7\x91\xA2", + "\xE2\xCF" => "\xE7\x91\xB3", + "\xE2\xD0" => "\xE7\x91\xB1", + "\xE2\xD1" => "\xE7\x91\xB5", + "\xE2\xD2" => "\xE7\x91\xB2", + "\xE2\xD3" => "\xE7\x91\xA7", + "\xE2\xD4" => "\xE7\x91\xAE", + "\xE2\xD5" => "\xE7\x94\x80", + "\xE2\xD6" => "\xE7\x94\x82", + "\xE2\xD7" => "\xE7\x94\x83", + "\xE2\xD8" => "\xE7\x95\xBD", + "\xE2\xD9" => "\xE7\x96\x90", + "\xE2\xDA" => "\xE7\x98\x96", + "\xE2\xDB" => "\xE7\x98\x88", + "\xE2\xDC" => "\xE7\x98\x8C", + "\xE2\xDD" => "\xE7\x98\x95", + "\xE2\xDE" => "\xE7\x98\x91", + "\xE2\xDF" => "\xE7\x98\x8A", + "\xE2\xE0" => "\xE7\x98\x94", + "\xE2\xE1" => "\xE7\x9A\xB8", + "\xE2\xE2" => "\xE7\x9E\x81", + "\xE2\xE3" => "\xE7\x9D\xBC", + "\xE2\xE4" => "\xE7\x9E\x85", + "\xE2\xE5" => "\xE7\x9E\x82", + "\xE2\xE6" => "\xE7\x9D\xAE", + "\xE2\xE7" => "\xE7\x9E\x80", + "\xE2\xE8" => "\xE7\x9D\xAF", + "\xE2\xE9" => "\xE7\x9D\xBE", + "\xE2\xEA" => "\xE7\x9E\x83", + "\xE2\xEB" => "\xE7\xA2\xB2", + "\xE2\xEC" => "\xE7\xA2\xAA", + "\xE2\xED" => "\xE7\xA2\xB4", + "\xE2\xEE" => "\xE7\xA2\xAD", + "\xE2\xEF" => "\xE7\xA2\xA8", + "\xE2\xF0" => "\xE7\xA1\xBE", + "\xE2\xF1" => "\xE7\xA2\xAB", + "\xE2\xF2" => "\xE7\xA2\x9E", + "\xE2\xF3" => "\xE7\xA2\xA5", + "\xE2\xF4" => "\xE7\xA2\xA0", + "\xE2\xF5" => "\xE7\xA2\xAC", + "\xE2\xF6" => "\xE7\xA2\xA2", + "\xE2\xF7" => "\xE7\xA2\xA4", + "\xE2\xF8" => "\xE7\xA6\x98", + "\xE2\xF9" => "\xE7\xA6\x8A", + "\xE2\xFA" => "\xE7\xA6\x8B", + "\xE2\xFB" => "\xE7\xA6\x96", + "\xE2\xFC" => "\xE7\xA6\x95", + "\xE2\xFD" => "\xE7\xA6\x94", + "\xE2\xFE" => "\xE7\xA6\x93", + "\xE3\x40" => "\xE7\xA6\x97", + "\xE3\x41" => "\xE7\xA6\x88", + "\xE3\x42" => "\xE7\xA6\x92", + "\xE3\x43" => "\xE7\xA6\x90", + "\xE3\x44" => "\xE7\xA8\xAB", + "\xE3\x45" => "\xE7\xA9\x8A", + "\xE3\x46" => "\xE7\xA8\xB0", + "\xE3\x47" => "\xE7\xA8\xAF", + "\xE3\x48" => "\xE7\xA8\xA8", + "\xE3\x49" => "\xE7\xA8\xA6", + "\xE3\x4A" => "\xE7\xAA\xA8", + "\xE3\x4B" => "\xE7\xAA\xAB", + "\xE3\x4C" => "\xE7\xAA\xAC", + "\xE3\x4D" => "\xE7\xAB\xAE", + "\xE3\x4E" => "\xE7\xAE\x88", + "\xE3\x4F" => "\xE7\xAE\x9C", + "\xE3\x50" => "\xE7\xAE\x8A", + "\xE3\x51" => "\xE7\xAE\x91", + "\xE3\x52" => "\xE7\xAE\x90", + "\xE3\x53" => "\xE7\xAE\x96", + "\xE3\x54" => "\xE7\xAE\x8D", + "\xE3\x55" => "\xE7\xAE\x8C", + "\xE3\x56" => "\xE7\xAE\x9B", + "\xE3\x57" => "\xE7\xAE\x8E", + "\xE3\x58" => "\xE7\xAE\x85", + "\xE3\x59" => "\xE7\xAE\x98", + "\xE3\x5A" => "\xE5\x8A\x84", + "\xE3\x5B" => "\xE7\xAE\x99", + "\xE3\x5C" => "\xE7\xAE\xA4", + "\xE3\x5D" => "\xE7\xAE\x82", + "\xE3\x5E" => "\xE7\xB2\xBB", + "\xE3\x5F" => "\xE7\xB2\xBF", + "\xE3\x60" => "\xE7\xB2\xBC", + "\xE3\x61" => "\xE7\xB2\xBA", + "\xE3\x62" => "\xE7\xB6\xA7", + "\xE3\x63" => "\xE7\xB6\xB7", + "\xE3\x64" => "\xE7\xB7\x82", + "\xE3\x65" => "\xE7\xB6\xA3", + "\xE3\x66" => "\xE7\xB6\xAA", + "\xE3\x67" => "\xE7\xB7\x81", + "\xE3\x68" => "\xE7\xB7\x80", + "\xE3\x69" => "\xE7\xB7\x85", + "\xE3\x6A" => "\xE7\xB6\x9D", + "\xE3\x6B" => "\xE7\xB7\x8E", + "\xE3\x6C" => "\xE7\xB7\x84", + "\xE3\x6D" => "\xE7\xB7\x86", + "\xE3\x6E" => "\xE7\xB7\x8B", + "\xE3\x6F" => "\xE7\xB7\x8C", + "\xE3\x70" => "\xE7\xB6\xAF", + "\xE3\x71" => "\xE7\xB6\xB9", + "\xE3\x72" => "\xE7\xB6\x96", + "\xE3\x73" => "\xE7\xB6\xBC", + "\xE3\x74" => "\xE7\xB6\x9F", + "\xE3\x75" => "\xE7\xB6\xA6", + "\xE3\x76" => "\xE7\xB6\xAE", + "\xE3\x77" => "\xE7\xB6\xA9", + "\xE3\x78" => "\xE7\xB6\xA1", + "\xE3\x79" => "\xE7\xB7\x89", + "\xE3\x7A" => "\xE7\xBD\xB3", + "\xE3\x7B" => "\xE7\xBF\xA2", + "\xE3\x7C" => "\xE7\xBF\xA3", + "\xE3\x7D" => "\xE7\xBF\xA5", + "\xE3\x7E" => "\xE7\xBF\x9E", + "\xE3\xA1" => "\xE8\x80\xA4", + "\xE3\xA2" => "\xE8\x81\x9D", + "\xE3\xA3" => "\xE8\x81\x9C", + "\xE3\xA4" => "\xE8\x86\x89", + "\xE3\xA5" => "\xE8\x86\x86", + "\xE3\xA6" => "\xE8\x86\x83", + "\xE3\xA7" => "\xE8\x86\x87", + "\xE3\xA8" => "\xE8\x86\x8D", + "\xE3\xA9" => "\xE8\x86\x8C", + "\xE3\xAA" => "\xE8\x86\x8B", + "\xE3\xAB" => "\xE8\x88\x95", + "\xE3\xAC" => "\xE8\x92\x97", + "\xE3\xAD" => "\xE8\x92\xA4", + "\xE3\xAE" => "\xE8\x92\xA1", + "\xE3\xAF" => "\xE8\x92\x9F", + "\xE3\xB0" => "\xE8\x92\xBA", + "\xE3\xB1" => "\xE8\x93\x8E", + "\xE3\xB2" => "\xE8\x93\x82", + "\xE3\xB3" => "\xE8\x92\xAC", + "\xE3\xB4" => "\xE8\x92\xAE", + "\xE3\xB5" => "\xE8\x92\xAB", + "\xE3\xB6" => "\xE8\x92\xB9", + "\xE3\xB7" => "\xE8\x92\xB4", + "\xE3\xB8" => "\xE8\x93\x81", + "\xE3\xB9" => "\xE8\x93\x8D", + "\xE3\xBA" => "\xE8\x92\xAA", + "\xE3\xBB" => "\xE8\x92\x9A", + "\xE3\xBC" => "\xE8\x92\xB1", + "\xE3\xBD" => "\xE8\x93\x90", + "\xE3\xBE" => "\xE8\x92\x9D", + "\xE3\xBF" => "\xE8\x92\xA7", + "\xE3\xC0" => "\xE8\x92\xBB", + "\xE3\xC1" => "\xE8\x92\xA2", + "\xE3\xC2" => "\xE8\x92\x94", + "\xE3\xC3" => "\xE8\x93\x87", + "\xE3\xC4" => "\xE8\x93\x8C", + "\xE3\xC5" => "\xE8\x92\x9B", + "\xE3\xC6" => "\xE8\x92\xA9", + "\xE3\xC7" => "\xE8\x92\xAF", + "\xE3\xC8" => "\xE8\x92\xA8", + "\xE3\xC9" => "\xE8\x93\x96", + "\xE3\xCA" => "\xE8\x92\x98", + "\xE3\xCB" => "\xE8\x92\xB6", + "\xE3\xCC" => "\xE8\x93\x8F", + "\xE3\xCD" => "\xE8\x92\xA0", + "\xE3\xCE" => "\xE8\x93\x97", + "\xE3\xCF" => "\xE8\x93\x94", + "\xE3\xD0" => "\xE8\x93\x92", + "\xE3\xD1" => "\xE8\x93\x9B", + "\xE3\xD2" => "\xE8\x92\xB0", + "\xE3\xD3" => "\xE8\x92\x91", + "\xE3\xD4" => "\xE8\x99\xA1", + "\xE3\xD5" => "\xE8\x9C\xB3", + "\xE3\xD6" => "\xE8\x9C\xA3", + "\xE3\xD7" => "\xE8\x9C\xA8", + "\xE3\xD8" => "\xE8\x9D\xAB", + "\xE3\xD9" => "\xE8\x9D\x80", + "\xE3\xDA" => "\xE8\x9C\xAE", + "\xE3\xDB" => "\xE8\x9C\x9E", + "\xE3\xDC" => "\xE8\x9C\xA1", + "\xE3\xDD" => "\xE8\x9C\x99", + "\xE3\xDE" => "\xE8\x9C\x9B", + "\xE3\xDF" => "\xE8\x9D\x83", + "\xE3\xE0" => "\xE8\x9C\xAC", + "\xE3\xE1" => "\xE8\x9D\x81", + "\xE3\xE2" => "\xE8\x9C\xBE", + "\xE3\xE3" => "\xE8\x9D\x86", + "\xE3\xE4" => "\xE8\x9C\xA0", + "\xE3\xE5" => "\xE8\x9C\xB2", + "\xE3\xE6" => "\xE8\x9C\xAA", + "\xE3\xE7" => "\xE8\x9C\xAD", + "\xE3\xE8" => "\xE8\x9C\xBC", + "\xE3\xE9" => "\xE8\x9C\x92", + "\xE3\xEA" => "\xE8\x9C\xBA", + "\xE3\xEB" => "\xE8\x9C\xB1", + "\xE3\xEC" => "\xE8\x9C\xB5", + "\xE3\xED" => "\xE8\x9D\x82", + "\xE3\xEE" => "\xE8\x9C\xA6", + "\xE3\xEF" => "\xE8\x9C\xA7", + "\xE3\xF0" => "\xE8\x9C\xB8", + "\xE3\xF1" => "\xE8\x9C\xA4", + "\xE3\xF2" => "\xE8\x9C\x9A", + "\xE3\xF3" => "\xE8\x9C\xB0", + "\xE3\xF4" => "\xE8\x9C\x91", + "\xE3\xF5" => "\xE8\xA3\xB7", + "\xE3\xF6" => "\xE8\xA3\xA7", + "\xE3\xF7" => "\xE8\xA3\xB1", + "\xE3\xF8" => "\xE8\xA3\xB2", + "\xE3\xF9" => "\xE8\xA3\xBA", + "\xE3\xFA" => "\xE8\xA3\xBE", + "\xE3\xFB" => "\xE8\xA3\xAE", + "\xE3\xFC" => "\xE8\xA3\xBC", + "\xE3\xFD" => "\xE8\xA3\xB6", + "\xE3\xFE" => "\xE8\xA3\xBB", + "\xE4\x40" => "\xE8\xA3\xB0", + "\xE4\x41" => "\xE8\xA3\xAC", + "\xE4\x42" => "\xE8\xA3\xAB", + "\xE4\x43" => "\xE8\xA6\x9D", + "\xE4\x44" => "\xE8\xA6\xA1", + "\xE4\x45" => "\xE8\xA6\x9F", + "\xE4\x46" => "\xE8\xA6\x9E", + "\xE4\x47" => "\xE8\xA7\xA9", + "\xE4\x48" => "\xE8\xA7\xAB", + "\xE4\x49" => "\xE8\xA7\xA8", + "\xE4\x4A" => "\xE8\xAA\xAB", + "\xE4\x4B" => "\xE8\xAA\x99", + "\xE4\x4C" => "\xE8\xAA\x8B", + "\xE4\x4D" => "\xE8\xAA\x92", + "\xE4\x4E" => "\xE8\xAA\x8F", + "\xE4\x4F" => "\xE8\xAA\x96", + "\xE4\x50" => "\xE8\xB0\xBD", + "\xE4\x51" => "\xE8\xB1\xA8", + "\xE4\x52" => "\xE8\xB1\xA9", + "\xE4\x53" => "\xE8\xB3\x95", + "\xE4\x54" => "\xE8\xB3\x8F", + "\xE4\x55" => "\xE8\xB3\x97", + "\xE4\x56" => "\xE8\xB6\x96", + "\xE4\x57" => "\xE8\xB8\x89", + "\xE4\x58" => "\xE8\xB8\x82", + "\xE4\x59" => "\xE8\xB7\xBF", + "\xE4\x5A" => "\xE8\xB8\x8D", + "\xE4\x5B" => "\xE8\xB7\xBD", + "\xE4\x5C" => "\xE8\xB8\x8A", + "\xE4\x5D" => "\xE8\xB8\x83", + "\xE4\x5E" => "\xE8\xB8\x87", + "\xE4\x5F" => "\xE8\xB8\x86", + "\xE4\x60" => "\xE8\xB8\x85", + "\xE4\x61" => "\xE8\xB7\xBE", + "\xE4\x62" => "\xE8\xB8\x80", + "\xE4\x63" => "\xE8\xB8\x84", + "\xE4\x64" => "\xE8\xBC\x90", + "\xE4\x65" => "\xE8\xBC\x91", + "\xE4\x66" => "\xE8\xBC\x8E", + "\xE4\x67" => "\xE8\xBC\x8D", + "\xE4\x68" => "\xE9\x84\xA3", + "\xE4\x69" => "\xE9\x84\x9C", + "\xE4\x6A" => "\xE9\x84\xA0", + "\xE4\x6B" => "\xE9\x84\xA2", + "\xE4\x6C" => "\xE9\x84\x9F", + "\xE4\x6D" => "\xE9\x84\x9D", + "\xE4\x6E" => "\xE9\x84\x9A", + "\xE4\x6F" => "\xE9\x84\xA4", + "\xE4\x70" => "\xE9\x84\xA1", + "\xE4\x71" => "\xE9\x84\x9B", + "\xE4\x72" => "\xE9\x85\xBA", + "\xE4\x73" => "\xE9\x85\xB2", + "\xE4\x74" => "\xE9\x85\xB9", + "\xE4\x75" => "\xE9\x85\xB3", + "\xE4\x76" => "\xE9\x8A\xA5", + "\xE4\x77" => "\xE9\x8A\xA4", + "\xE4\x78" => "\xE9\x89\xB6", + "\xE4\x79" => "\xE9\x8A\x9B", + "\xE4\x7A" => "\xE9\x89\xBA", + "\xE4\x7B" => "\xE9\x8A\xA0", + "\xE4\x7C" => "\xE9\x8A\x94", + "\xE4\x7D" => "\xE9\x8A\xAA", + "\xE4\x7E" => "\xE9\x8A\x8D", + "\xE4\xA1" => "\xE9\x8A\xA6", + "\xE4\xA2" => "\xE9\x8A\x9A", + "\xE4\xA3" => "\xE9\x8A\xAB", + "\xE4\xA4" => "\xE9\x89\xB9", + "\xE4\xA5" => "\xE9\x8A\x97", + "\xE4\xA6" => "\xE9\x89\xBF", + "\xE4\xA7" => "\xE9\x8A\xA3", + "\xE4\xA8" => "\xE9\x8B\xAE", + "\xE4\xA9" => "\xE9\x8A\x8E", + "\xE4\xAA" => "\xE9\x8A\x82", + "\xE4\xAB" => "\xE9\x8A\x95", + "\xE4\xAC" => "\xE9\x8A\xA2", + "\xE4\xAD" => "\xE9\x89\xBD", + "\xE4\xAE" => "\xE9\x8A\x88", + "\xE4\xAF" => "\xE9\x8A\xA1", + "\xE4\xB0" => "\xE9\x8A\x8A", + "\xE4\xB1" => "\xE9\x8A\x86", + "\xE4\xB2" => "\xE9\x8A\x8C", + "\xE4\xB3" => "\xE9\x8A\x99", + "\xE4\xB4" => "\xE9\x8A\xA7", + "\xE4\xB5" => "\xE9\x89\xBE", + "\xE4\xB6" => "\xE9\x8A\x87", + "\xE4\xB7" => "\xE9\x8A\xA9", + "\xE4\xB8" => "\xE9\x8A\x9D", + "\xE4\xB9" => "\xE9\x8A\x8B", + "\xE4\xBA" => "\xE9\x88\xAD", + "\xE4\xBB" => "\xE9\x9A\x9E", + "\xE4\xBC" => "\xE9\x9A\xA1", + "\xE4\xBD" => "\xE9\x9B\xBF", + "\xE4\xBE" => "\xE9\x9D\x98", + "\xE4\xBF" => "\xE9\x9D\xBD", + "\xE4\xC0" => "\xE9\x9D\xBA", + "\xE4\xC1" => "\xE9\x9D\xBE", + "\xE4\xC2" => "\xE9\x9E\x83", + "\xE4\xC3" => "\xE9\x9E\x80", + "\xE4\xC4" => "\xE9\x9E\x82", + "\xE4\xC5" => "\xE9\x9D\xBB", + "\xE4\xC6" => "\xE9\x9E\x84", + "\xE4\xC7" => "\xE9\x9E\x81", + "\xE4\xC8" => "\xE9\x9D\xBF", + "\xE4\xC9" => "\xE9\x9F\x8E", + "\xE4\xCA" => "\xE9\x9F\x8D", + "\xE4\xCB" => "\xE9\xA0\x96", + "\xE4\xCC" => "\xE9\xA2\xAD", + "\xE4\xCD" => "\xE9\xA2\xAE", + "\xE4\xCE" => "\xE9\xA4\x82", + "\xE4\xCF" => "\xE9\xA4\x80", + "\xE4\xD0" => "\xE9\xA4\x87", + "\xE4\xD1" => "\xE9\xA6\x9D", + "\xE4\xD2" => "\xE9\xA6\x9C", + "\xE4\xD3" => "\xE9\xA7\x83", + "\xE4\xD4" => "\xE9\xA6\xB9", + "\xE4\xD5" => "\xE9\xA6\xBB", + "\xE4\xD6" => "\xE9\xA6\xBA", + "\xE4\xD7" => "\xE9\xA7\x82", + "\xE4\xD8" => "\xE9\xA6\xBD", + "\xE4\xD9" => "\xE9\xA7\x87", + "\xE4\xDA" => "\xE9\xAA\xB1", + "\xE4\xDB" => "\xE9\xAB\xA3", + "\xE4\xDC" => "\xE9\xAB\xA7", + "\xE4\xDD" => "\xE9\xAC\xBE", + "\xE4\xDE" => "\xE9\xAC\xBF", + "\xE4\xDF" => "\xE9\xAD\xA0", + "\xE4\xE0" => "\xE9\xAD\xA1", + "\xE4\xE1" => "\xE9\xAD\x9F", + "\xE4\xE2" => "\xE9\xB3\xB1", + "\xE4\xE3" => "\xE9\xB3\xB2", + "\xE4\xE4" => "\xE9\xB3\xB5", + "\xE4\xE5" => "\xE9\xBA\xA7", + "\xE4\xE6" => "\xE5\x83\xBF", + "\xE4\xE7" => "\xE5\x84\x83", + "\xE4\xE8" => "\xE5\x84\xB0", + "\xE4\xE9" => "\xE5\x83\xB8", + "\xE4\xEA" => "\xE5\x84\x86", + "\xE4\xEB" => "\xE5\x84\x87", + "\xE4\xEC" => "\xE5\x83\xB6", + "\xE4\xED" => "\xE5\x83\xBE", + "\xE4\xEE" => "\xE5\x84\x8B", + "\xE4\xEF" => "\xE5\x84\x8C", + "\xE4\xF0" => "\xE5\x83\xBD", + "\xE4\xF1" => "\xE5\x84\x8A", + "\xE4\xF2" => "\xE5\x8A\x8B", + "\xE4\xF3" => "\xE5\x8A\x8C", + "\xE4\xF4" => "\xE5\x8B\xB1", + "\xE4\xF5" => "\xE5\x8B\xAF", + "\xE4\xF6" => "\xE5\x99\x88", + "\xE4\xF7" => "\xE5\x99\x82", + "\xE4\xF8" => "\xE5\x99\x8C", + "\xE4\xF9" => "\xE5\x98\xB5", + "\xE4\xFA" => "\xE5\x99\x81", + "\xE4\xFB" => "\xE5\x99\x8A", + "\xE4\xFC" => "\xE5\x99\x89", + "\xE4\xFD" => "\xE5\x99\x86", + "\xE4\xFE" => "\xE5\x99\x98", + "\xE5\x40" => "\xE5\x99\x9A", + "\xE5\x41" => "\xE5\x99\x80", + "\xE5\x42" => "\xE5\x98\xB3", + "\xE5\x43" => "\xE5\x98\xBD", + "\xE5\x44" => "\xE5\x98\xAC", + "\xE5\x45" => "\xE5\x98\xBE", + "\xE5\x46" => "\xE5\x98\xB8", + "\xE5\x47" => "\xE5\x98\xAA", + "\xE5\x48" => "\xE5\x98\xBA", + "\xE5\x49" => "\xE5\x9C\x9A", + "\xE5\x4A" => "\xE5\xA2\xAB", + "\xE5\x4B" => "\xE5\xA2\x9D", + "\xE5\x4C" => "\xE5\xA2\xB1", + "\xE5\x4D" => "\xE5\xA2\xA0", + "\xE5\x4E" => "\xE5\xA2\xA3", + "\xE5\x4F" => "\xE5\xA2\xAF", + "\xE5\x50" => "\xE5\xA2\xAC", + "\xE5\x51" => "\xE5\xA2\xA5", + "\xE5\x52" => "\xE5\xA2\xA1", + "\xE5\x53" => "\xE5\xA3\xBF", + "\xE5\x54" => "\xE5\xAB\xBF", + "\xE5\x55" => "\xE5\xAB\xB4", + "\xE5\x56" => "\xE5\xAB\xBD", + "\xE5\x57" => "\xE5\xAB\xB7", + "\xE5\x58" => "\xE5\xAB\xB6", + "\xE5\x59" => "\xE5\xAC\x83", + "\xE5\x5A" => "\xE5\xAB\xB8", + "\xE5\x5B" => "\xE5\xAC\x82", + "\xE5\x5C" => "\xE5\xAB\xB9", + "\xE5\x5D" => "\xE5\xAC\x81", + "\xE5\x5E" => "\xE5\xAC\x87", + "\xE5\x5F" => "\xE5\xAC\x85", + "\xE5\x60" => "\xE5\xAC\x8F", + "\xE5\x61" => "\xE5\xB1\xA7", + "\xE5\x62" => "\xE5\xB6\x99", + "\xE5\x63" => "\xE5\xB6\x97", + "\xE5\x64" => "\xE5\xB6\x9F", + "\xE5\x65" => "\xE5\xB6\x92", + "\xE5\x66" => "\xE5\xB6\xA2", + "\xE5\x67" => "\xE5\xB6\x93", + "\xE5\x68" => "\xE5\xB6\x95", + "\xE5\x69" => "\xE5\xB6\xA0", + "\xE5\x6A" => "\xE5\xB6\x9C", + "\xE5\x6B" => "\xE5\xB6\xA1", + "\xE5\x6C" => "\xE5\xB6\x9A", + "\xE5\x6D" => "\xE5\xB6\x9E", + "\xE5\x6E" => "\xE5\xB9\xA9", + "\xE5\x6F" => "\xE5\xB9\x9D", + "\xE5\x70" => "\xE5\xB9\xA0", + "\xE5\x71" => "\xE5\xB9\x9C", + "\xE5\x72" => "\xE7\xB7\xB3", + "\xE5\x73" => "\xE5\xBB\x9B", + "\xE5\x74" => "\xE5\xBB\x9E", + "\xE5\x75" => "\xE5\xBB\xA1", + "\xE5\x76" => "\xE5\xBD\x89", + "\xE5\x77" => "\xE5\xBE\xB2", + "\xE5\x78" => "\xE6\x86\x8B", + "\xE5\x79" => "\xE6\x86\x83", + "\xE5\x7A" => "\xE6\x85\xB9", + "\xE5\x7B" => "\xE6\x86\xB1", + "\xE5\x7C" => "\xE6\x86\xB0", + "\xE5\x7D" => "\xE6\x86\xA2", + "\xE5\x7E" => "\xE6\x86\x89", + "\xE5\xA1" => "\xE6\x86\x9B", + "\xE5\xA2" => "\xE6\x86\x93", + "\xE5\xA3" => "\xE6\x86\xAF", + "\xE5\xA4" => "\xE6\x86\xAD", + "\xE5\xA5" => "\xE6\x86\x9F", + "\xE5\xA6" => "\xE6\x86\x92", + "\xE5\xA7" => "\xE6\x86\xAA", + "\xE5\xA8" => "\xE6\x86\xA1", + "\xE5\xA9" => "\xE6\x86\x8D", + "\xE5\xAA" => "\xE6\x85\xA6", + "\xE5\xAB" => "\xE6\x86\xB3", + "\xE5\xAC" => "\xE6\x88\xAD", + "\xE5\xAD" => "\xE6\x91\xAE", + "\xE5\xAE" => "\xE6\x91\xB0", + "\xE5\xAF" => "\xE6\x92\x96", + "\xE5\xB0" => "\xE6\x92\xA0", + "\xE5\xB1" => "\xE6\x92\x85", + "\xE5\xB2" => "\xE6\x92\x97", + "\xE5\xB3" => "\xE6\x92\x9C", + "\xE5\xB4" => "\xE6\x92\x8F", + "\xE5\xB5" => "\xE6\x92\x8B", + "\xE5\xB6" => "\xE6\x92\x8A", + "\xE5\xB7" => "\xE6\x92\x8C", + "\xE5\xB8" => "\xE6\x92\xA3", + "\xE5\xB9" => "\xE6\x92\x9F", + "\xE5\xBA" => "\xE6\x91\xA8", + "\xE5\xBB" => "\xE6\x92\xB1", + "\xE5\xBC" => "\xE6\x92\x98", + "\xE5\xBD" => "\xE6\x95\xB6", + "\xE5\xBE" => "\xE6\x95\xBA", + "\xE5\xBF" => "\xE6\x95\xB9", + "\xE5\xC0" => "\xE6\x95\xBB", + "\xE5\xC1" => "\xE6\x96\xB2", + "\xE5\xC2" => "\xE6\x96\xB3", + "\xE5\xC3" => "\xE6\x9A\xB5", + "\xE5\xC4" => "\xE6\x9A\xB0", + "\xE5\xC5" => "\xE6\x9A\xA9", + "\xE5\xC6" => "\xE6\x9A\xB2", + "\xE5\xC7" => "\xE6\x9A\xB7", + "\xE5\xC8" => "\xE6\x9A\xAA", + "\xE5\xC9" => "\xE6\x9A\xAF", + "\xE5\xCA" => "\xE6\xA8\x80", + "\xE5\xCB" => "\xE6\xA8\x86", + "\xE5\xCC" => "\xE6\xA8\x97", + "\xE5\xCD" => "\xE6\xA7\xA5", + "\xE5\xCE" => "\xE6\xA7\xB8", + "\xE5\xCF" => "\xE6\xA8\x95", + "\xE5\xD0" => "\xE6\xA7\xB1", + "\xE5\xD1" => "\xE6\xA7\xA4", + "\xE5\xD2" => "\xE6\xA8\xA0", + "\xE5\xD3" => "\xE6\xA7\xBF", + "\xE5\xD4" => "\xE6\xA7\xAC", + "\xE5\xD5" => "\xE6\xA7\xA2", + "\xE5\xD6" => "\xE6\xA8\x9B", + "\xE5\xD7" => "\xE6\xA8\x9D", + "\xE5\xD8" => "\xE6\xA7\xBE", + "\xE5\xD9" => "\xE6\xA8\xA7", + "\xE5\xDA" => "\xE6\xA7\xB2", + "\xE5\xDB" => "\xE6\xA7\xAE", + "\xE5\xDC" => "\xE6\xA8\x94", + "\xE5\xDD" => "\xE6\xA7\xB7", + "\xE5\xDE" => "\xE6\xA7\xA7", + "\xE5\xDF" => "\xE6\xA9\x80", + "\xE5\xE0" => "\xE6\xA8\x88", + "\xE5\xE1" => "\xE6\xA7\xA6", + "\xE5\xE2" => "\xE6\xA7\xBB", + "\xE5\xE3" => "\xE6\xA8\x8D", + "\xE5\xE4" => "\xE6\xA7\xBC", + "\xE5\xE5" => "\xE6\xA7\xAB", + "\xE5\xE6" => "\xE6\xA8\x89", + "\xE5\xE7" => "\xE6\xA8\x84", + "\xE5\xE8" => "\xE6\xA8\x98", + "\xE5\xE9" => "\xE6\xA8\xA5", + "\xE5\xEA" => "\xE6\xA8\x8F", + "\xE5\xEB" => "\xE6\xA7\xB6", + "\xE5\xEC" => "\xE6\xA8\xA6", + "\xE5\xED" => "\xE6\xA8\x87", + "\xE5\xEE" => "\xE6\xA7\xB4", + "\xE5\xEF" => "\xE6\xA8\x96", + "\xE5\xF0" => "\xE6\xAD\x91", + "\xE5\xF1" => "\xE6\xAE\xA5", + "\xE5\xF2" => "\xE6\xAE\xA3", + "\xE5\xF3" => "\xE6\xAE\xA2", + "\xE5\xF4" => "\xE6\xAE\xA6", + "\xE5\xF5" => "\xE6\xB0\x81", + "\xE5\xF6" => "\xE6\xB0\x80", + "\xE5\xF7" => "\xE6\xAF\xBF", + "\xE5\xF8" => "\xE6\xB0\x82", + "\xE5\xF9" => "\xE6\xBD\x81", + "\xE5\xFA" => "\xE6\xBC\xA6", + "\xE5\xFB" => "\xE6\xBD\xBE", + "\xE5\xFC" => "\xE6\xBE\x87", + "\xE5\xFD" => "\xE6\xBF\x86", + "\xE5\xFE" => "\xE6\xBE\x92", + "\xE6\x40" => "\xE6\xBE\x8D", + "\xE6\x41" => "\xE6\xBE\x89", + "\xE6\x42" => "\xE6\xBE\x8C", + "\xE6\x43" => "\xE6\xBD\xA2", + "\xE6\x44" => "\xE6\xBD\x8F", + "\xE6\x45" => "\xE6\xBE\x85", + "\xE6\x46" => "\xE6\xBD\x9A", + "\xE6\x47" => "\xE6\xBE\x96", + "\xE6\x48" => "\xE6\xBD\xB6", + "\xE6\x49" => "\xE6\xBD\xAC", + "\xE6\x4A" => "\xE6\xBE\x82", + "\xE6\x4B" => "\xE6\xBD\x95", + "\xE6\x4C" => "\xE6\xBD\xB2", + "\xE6\x4D" => "\xE6\xBD\x92", + "\xE6\x4E" => "\xE6\xBD\x90", + "\xE6\x4F" => "\xE6\xBD\x97", + "\xE6\x50" => "\xE6\xBE\x94", + "\xE6\x51" => "\xE6\xBE\x93", + "\xE6\x52" => "\xE6\xBD\x9D", + "\xE6\x53" => "\xE6\xBC\x80", + "\xE6\x54" => "\xE6\xBD\xA1", + "\xE6\x55" => "\xE6\xBD\xAB", + "\xE6\x56" => "\xE6\xBD\xBD", + "\xE6\x57" => "\xE6\xBD\xA7", + "\xE6\x58" => "\xE6\xBE\x90", + "\xE6\x59" => "\xE6\xBD\x93", + "\xE6\x5A" => "\xE6\xBE\x8B", + "\xE6\x5B" => "\xE6\xBD\xA9", + "\xE6\x5C" => "\xE6\xBD\xBF", + "\xE6\x5D" => "\xE6\xBE\x95", + "\xE6\x5E" => "\xE6\xBD\xA3", + "\xE6\x5F" => "\xE6\xBD\xB7", + "\xE6\x60" => "\xE6\xBD\xAA", + "\xE6\x61" => "\xE6\xBD\xBB", + "\xE6\x62" => "\xE7\x86\xB2", + "\xE6\x63" => "\xE7\x86\xAF", + "\xE6\x64" => "\xE7\x86\x9B", + "\xE6\x65" => "\xE7\x86\xB0", + "\xE6\x66" => "\xE7\x86\xA0", + "\xE6\x67" => "\xE7\x86\x9A", + "\xE6\x68" => "\xE7\x86\xA9", + "\xE6\x69" => "\xE7\x86\xB5", + "\xE6\x6A" => "\xE7\x86\x9D", + "\xE6\x6B" => "\xE7\x86\xA5", + "\xE6\x6C" => "\xE7\x86\x9E", + "\xE6\x6D" => "\xE7\x86\xA4", + "\xE6\x6E" => "\xE7\x86\xA1", + "\xE6\x6F" => "\xE7\x86\xAA", + "\xE6\x70" => "\xE7\x86\x9C", + "\xE6\x71" => "\xE7\x86\xA7", + "\xE6\x72" => "\xE7\x86\xB3", + "\xE6\x73" => "\xE7\x8A\x98", + "\xE6\x74" => "\xE7\x8A\x9A", + "\xE6\x75" => "\xE7\x8D\x98", + "\xE6\x76" => "\xE7\x8D\x92", + "\xE6\x77" => "\xE7\x8D\x9E", + "\xE6\x78" => "\xE7\x8D\x9F", + "\xE6\x79" => "\xE7\x8D\xA0", + "\xE6\x7A" => "\xE7\x8D\x9D", + "\xE6\x7B" => "\xE7\x8D\x9B", + "\xE6\x7C" => "\xE7\x8D\xA1", + "\xE6\x7D" => "\xE7\x8D\x9A", + "\xE6\x7E" => "\xE7\x8D\x99", + "\xE6\xA1" => "\xE7\x8D\xA2", + "\xE6\xA2" => "\xE7\x92\x87", + "\xE6\xA3" => "\xE7\x92\x89", + "\xE6\xA4" => "\xE7\x92\x8A", + "\xE6\xA5" => "\xE7\x92\x86", + "\xE6\xA6" => "\xE7\x92\x81", + "\xE6\xA7" => "\xE7\x91\xBD", + "\xE6\xA8" => "\xE7\x92\x85", + "\xE6\xA9" => "\xE7\x92\x88", + "\xE6\xAA" => "\xE7\x91\xBC", + "\xE6\xAB" => "\xE7\x91\xB9", + "\xE6\xAC" => "\xE7\x94\x88", + "\xE6\xAD" => "\xE7\x94\x87", + "\xE6\xAE" => "\xE7\x95\xBE", + "\xE6\xAF" => "\xE7\x98\xA5", + "\xE6\xB0" => "\xE7\x98\x9E", + "\xE6\xB1" => "\xE7\x98\x99", + "\xE6\xB2" => "\xE7\x98\x9D", + "\xE6\xB3" => "\xE7\x98\x9C", + "\xE6\xB4" => "\xE7\x98\xA3", + "\xE6\xB5" => "\xE7\x98\x9A", + "\xE6\xB6" => "\xE7\x98\xA8", + "\xE6\xB7" => "\xE7\x98\x9B", + "\xE6\xB8" => "\xE7\x9A\x9C", + "\xE6\xB9" => "\xE7\x9A\x9D", + "\xE6\xBA" => "\xE7\x9A\x9E", + "\xE6\xBB" => "\xE7\x9A\x9B", + "\xE6\xBC" => "\xE7\x9E\x8D", + "\xE6\xBD" => "\xE7\x9E\x8F", + "\xE6\xBE" => "\xE7\x9E\x89", + "\xE6\xBF" => "\xE7\x9E\x88", + "\xE6\xC0" => "\xE7\xA3\x8D", + "\xE6\xC1" => "\xE7\xA2\xBB", + "\xE6\xC2" => "\xE7\xA3\x8F", + "\xE6\xC3" => "\xE7\xA3\x8C", + "\xE6\xC4" => "\xE7\xA3\x91", + "\xE6\xC5" => "\xE7\xA3\x8E", + "\xE6\xC6" => "\xE7\xA3\x94", + "\xE6\xC7" => "\xE7\xA3\x88", + "\xE6\xC8" => "\xE7\xA3\x83", + "\xE6\xC9" => "\xE7\xA3\x84", + "\xE6\xCA" => "\xE7\xA3\x89", + "\xE6\xCB" => "\xE7\xA6\x9A", + "\xE6\xCC" => "\xE7\xA6\xA1", + "\xE6\xCD" => "\xE7\xA6\xA0", + "\xE6\xCE" => "\xE7\xA6\x9C", + "\xE6\xCF" => "\xE7\xA6\xA2", + "\xE6\xD0" => "\xE7\xA6\x9B", + "\xE6\xD1" => "\xE6\xAD\xB6", + "\xE6\xD2" => "\xE7\xA8\xB9", + "\xE6\xD3" => "\xE7\xAA\xB2", + "\xE6\xD4" => "\xE7\xAA\xB4", + "\xE6\xD5" => "\xE7\xAA\xB3", + "\xE6\xD6" => "\xE7\xAE\xB7", + "\xE6\xD7" => "\xE7\xAF\x8B", + "\xE6\xD8" => "\xE7\xAE\xBE", + "\xE6\xD9" => "\xE7\xAE\xAC", + "\xE6\xDA" => "\xE7\xAF\x8E", + "\xE6\xDB" => "\xE7\xAE\xAF", + "\xE6\xDC" => "\xE7\xAE\xB9", + "\xE6\xDD" => "\xE7\xAF\x8A", + "\xE6\xDE" => "\xE7\xAE\xB5", + "\xE6\xDF" => "\xE7\xB3\x85", + "\xE6\xE0" => "\xE7\xB3\x88", + "\xE6\xE1" => "\xE7\xB3\x8C", + "\xE6\xE2" => "\xE7\xB3\x8B", + "\xE6\xE3" => "\xE7\xB7\xB7", + "\xE6\xE4" => "\xE7\xB7\x9B", + "\xE6\xE5" => "\xE7\xB7\xAA", + "\xE6\xE6" => "\xE7\xB7\xA7", + "\xE6\xE7" => "\xE7\xB7\x97", + "\xE6\xE8" => "\xE7\xB7\xA1", + "\xE6\xE9" => "\xE7\xB8\x83", + "\xE6\xEA" => "\xE7\xB7\xBA", + "\xE6\xEB" => "\xE7\xB7\xA6", + "\xE6\xEC" => "\xE7\xB7\xB6", + "\xE6\xED" => "\xE7\xB7\xB1", + "\xE6\xEE" => "\xE7\xB7\xB0", + "\xE6\xEF" => "\xE7\xB7\xAE", + "\xE6\xF0" => "\xE7\xB7\x9F", + "\xE6\xF1" => "\xE7\xBD\xB6", + "\xE6\xF2" => "\xE7\xBE\xAC", + "\xE6\xF3" => "\xE7\xBE\xB0", + "\xE6\xF4" => "\xE7\xBE\xAD", + "\xE6\xF5" => "\xE7\xBF\xAD", + "\xE6\xF6" => "\xE7\xBF\xAB", + "\xE6\xF7" => "\xE7\xBF\xAA", + "\xE6\xF8" => "\xE7\xBF\xAC", + "\xE6\xF9" => "\xE7\xBF\xA6", + "\xE6\xFA" => "\xE7\xBF\xA8", + "\xE6\xFB" => "\xE8\x81\xA4", + "\xE6\xFC" => "\xE8\x81\xA7", + "\xE6\xFD" => "\xE8\x86\xA3", + "\xE6\xFE" => "\xE8\x86\x9F", + "\xE7\x40" => "\xE8\x86\x9E", + "\xE7\x41" => "\xE8\x86\x95", + "\xE7\x42" => "\xE8\x86\xA2", + "\xE7\x43" => "\xE8\x86\x99", + "\xE7\x44" => "\xE8\x86\x97", + "\xE7\x45" => "\xE8\x88\x96", + "\xE7\x46" => "\xE8\x89\x8F", + "\xE7\x47" => "\xE8\x89\x93", + "\xE7\x48" => "\xE8\x89\x92", + "\xE7\x49" => "\xE8\x89\x90", + "\xE7\x4A" => "\xE8\x89\x8E", + "\xE7\x4B" => "\xE8\x89\x91", + "\xE7\x4C" => "\xE8\x94\xA4", + "\xE7\x4D" => "\xE8\x94\xBB", + "\xE7\x4E" => "\xE8\x94\x8F", + "\xE7\x4F" => "\xE8\x94\x80", + "\xE7\x50" => "\xE8\x94\xA9", + "\xE7\x51" => "\xE8\x94\x8E", + "\xE7\x52" => "\xE8\x94\x89", + "\xE7\x53" => "\xE8\x94\x8D", + "\xE7\x54" => "\xE8\x94\x9F", + "\xE7\x55" => "\xE8\x94\x8A", + "\xE7\x56" => "\xE8\x94\xA7", + "\xE7\x57" => "\xE8\x94\x9C", + "\xE7\x58" => "\xE8\x93\xBB", + "\xE7\x59" => "\xE8\x94\xAB", + "\xE7\x5A" => "\xE8\x93\xBA", + "\xE7\x5B" => "\xE8\x94\x88", + "\xE7\x5C" => "\xE8\x94\x8C", + "\xE7\x5D" => "\xE8\x93\xB4", + "\xE7\x5E" => "\xE8\x94\xAA", + "\xE7\x5F" => "\xE8\x93\xB2", + "\xE7\x60" => "\xE8\x94\x95", + "\xE7\x61" => "\xE8\x93\xB7", + "\xE7\x62" => "\xE8\x93\xAB", + "\xE7\x63" => "\xE8\x93\xB3", + "\xE7\x64" => "\xE8\x93\xBC", + "\xE7\x65" => "\xE8\x94\x92", + "\xE7\x66" => "\xE8\x93\xAA", + "\xE7\x67" => "\xE8\x93\xA9", + "\xE7\x68" => "\xE8\x94\x96", + "\xE7\x69" => "\xE8\x93\xBE", + "\xE7\x6A" => "\xE8\x94\xA8", + "\xE7\x6B" => "\xE8\x94\x9D", + "\xE7\x6C" => "\xE8\x94\xAE", + "\xE7\x6D" => "\xE8\x94\x82", + "\xE7\x6E" => "\xE8\x93\xBD", + "\xE7\x6F" => "\xE8\x94\x9E", + "\xE7\x70" => "\xE8\x93\xB6", + "\xE7\x71" => "\xE8\x94\xB1", + "\xE7\x72" => "\xE8\x94\xA6", + "\xE7\x73" => "\xE8\x93\xA7", + "\xE7\x74" => "\xE8\x93\xA8", + "\xE7\x75" => "\xE8\x93\xB0", + "\xE7\x76" => "\xE8\x93\xAF", + "\xE7\x77" => "\xE8\x93\xB9", + "\xE7\x78" => "\xE8\x94\x98", + "\xE7\x79" => "\xE8\x94\xA0", + "\xE7\x7A" => "\xE8\x94\xB0", + "\xE7\x7B" => "\xE8\x94\x8B", + "\xE7\x7C" => "\xE8\x94\x99", + "\xE7\x7D" => "\xE8\x94\xAF", + "\xE7\x7E" => "\xE8\x99\xA2", + "\xE7\xA1" => "\xE8\x9D\x96", + "\xE7\xA2" => "\xE8\x9D\xA3", + "\xE7\xA3" => "\xE8\x9D\xA4", + "\xE7\xA4" => "\xE8\x9D\xB7", + "\xE7\xA5" => "\xE8\x9F\xA1", + "\xE7\xA6" => "\xE8\x9D\xB3", + "\xE7\xA7" => "\xE8\x9D\x98", + "\xE7\xA8" => "\xE8\x9D\x94", + "\xE7\xA9" => "\xE8\x9D\x9B", + "\xE7\xAA" => "\xE8\x9D\x92", + "\xE7\xAB" => "\xE8\x9D\xA1", + "\xE7\xAC" => "\xE8\x9D\x9A", + "\xE7\xAD" => "\xE8\x9D\x91", + "\xE7\xAE" => "\xE8\x9D\x9E", + "\xE7\xAF" => "\xE8\x9D\xAD", + "\xE7\xB0" => "\xE8\x9D\xAA", + "\xE7\xB1" => "\xE8\x9D\x90", + "\xE7\xB2" => "\xE8\x9D\x8E", + "\xE7\xB3" => "\xE8\x9D\x9F", + "\xE7\xB4" => "\xE8\x9D\x9D", + "\xE7\xB5" => "\xE8\x9D\xAF", + "\xE7\xB6" => "\xE8\x9D\xAC", + "\xE7\xB7" => "\xE8\x9D\xBA", + "\xE7\xB8" => "\xE8\x9D\xAE", + "\xE7\xB9" => "\xE8\x9D\x9C", + "\xE7\xBA" => "\xE8\x9D\xA5", + "\xE7\xBB" => "\xE8\x9D\x8F", + "\xE7\xBC" => "\xE8\x9D\xBB", + "\xE7\xBD" => "\xE8\x9D\xB5", + "\xE7\xBE" => "\xE8\x9D\xA2", + "\xE7\xBF" => "\xE8\x9D\xA7", + "\xE7\xC0" => "\xE8\x9D\xA9", + "\xE7\xC1" => "\xE8\xA1\x9A", + "\xE7\xC2" => "\xE8\xA4\x85", + "\xE7\xC3" => "\xE8\xA4\x8C", + "\xE7\xC4" => "\xE8\xA4\x94", + "\xE7\xC5" => "\xE8\xA4\x8B", + "\xE7\xC6" => "\xE8\xA4\x97", + "\xE7\xC7" => "\xE8\xA4\x98", + "\xE7\xC8" => "\xE8\xA4\x99", + "\xE7\xC9" => "\xE8\xA4\x86", + "\xE7\xCA" => "\xE8\xA4\x96", + "\xE7\xCB" => "\xE8\xA4\x91", + "\xE7\xCC" => "\xE8\xA4\x8E", + "\xE7\xCD" => "\xE8\xA4\x89", + "\xE7\xCE" => "\xE8\xA6\xA2", + "\xE7\xCF" => "\xE8\xA6\xA4", + "\xE7\xD0" => "\xE8\xA6\xA3", + "\xE7\xD1" => "\xE8\xA7\xAD", + "\xE7\xD2" => "\xE8\xA7\xB0", + "\xE7\xD3" => "\xE8\xA7\xAC", + "\xE7\xD4" => "\xE8\xAB\x8F", + "\xE7\xD5" => "\xE8\xAB\x86", + "\xE7\xD6" => "\xE8\xAA\xB8", + "\xE7\xD7" => "\xE8\xAB\x93", + "\xE7\xD8" => "\xE8\xAB\x91", + "\xE7\xD9" => "\xE8\xAB\x94", + "\xE7\xDA" => "\xE8\xAB\x95", + "\xE7\xDB" => "\xE8\xAA\xBB", + "\xE7\xDC" => "\xE8\xAB\x97", + "\xE7\xDD" => "\xE8\xAA\xBE", + "\xE7\xDE" => "\xE8\xAB\x80", + "\xE7\xDF" => "\xE8\xAB\x85", + "\xE7\xE0" => "\xE8\xAB\x98", + "\xE7\xE1" => "\xE8\xAB\x83", + "\xE7\xE2" => "\xE8\xAA\xBA", + "\xE7\xE3" => "\xE8\xAA\xBD", + "\xE7\xE4" => "\xE8\xAB\x99", + "\xE7\xE5" => "\xE8\xB0\xBE", + "\xE7\xE6" => "\xE8\xB1\x8D", + "\xE7\xE7" => "\xE8\xB2\x8F", + "\xE7\xE8" => "\xE8\xB3\xA5", + "\xE7\xE9" => "\xE8\xB3\x9F", + "\xE7\xEA" => "\xE8\xB3\x99", + "\xE7\xEB" => "\xE8\xB3\xA8", + "\xE7\xEC" => "\xE8\xB3\x9A", + "\xE7\xED" => "\xE8\xB3\x9D", + "\xE7\xEE" => "\xE8\xB3\xA7", + "\xE7\xEF" => "\xE8\xB6\xA0", + "\xE7\xF0" => "\xE8\xB6\x9C", + "\xE7\xF1" => "\xE8\xB6\xA1", + "\xE7\xF2" => "\xE8\xB6\x9B", + "\xE7\xF3" => "\xE8\xB8\xA0", + "\xE7\xF4" => "\xE8\xB8\xA3", + "\xE7\xF5" => "\xE8\xB8\xA5", + "\xE7\xF6" => "\xE8\xB8\xA4", + "\xE7\xF7" => "\xE8\xB8\xAE", + "\xE7\xF8" => "\xE8\xB8\x95", + "\xE7\xF9" => "\xE8\xB8\x9B", + "\xE7\xFA" => "\xE8\xB8\x96", + "\xE7\xFB" => "\xE8\xB8\x91", + "\xE7\xFC" => "\xE8\xB8\x99", + "\xE7\xFD" => "\xE8\xB8\xA6", + "\xE7\xFE" => "\xE8\xB8\xA7", + "\xE8\x40" => "\xE8\xB8\x94", + "\xE8\x41" => "\xE8\xB8\x92", + "\xE8\x42" => "\xE8\xB8\x98", + "\xE8\x43" => "\xE8\xB8\x93", + "\xE8\x44" => "\xE8\xB8\x9C", + "\xE8\x45" => "\xE8\xB8\x97", + "\xE8\x46" => "\xE8\xB8\x9A", + "\xE8\x47" => "\xE8\xBC\xAC", + "\xE8\x48" => "\xE8\xBC\xA4", + "\xE8\x49" => "\xE8\xBC\x98", + "\xE8\x4A" => "\xE8\xBC\x9A", + "\xE8\x4B" => "\xE8\xBC\xA0", + "\xE8\x4C" => "\xE8\xBC\xA3", + "\xE8\x4D" => "\xE8\xBC\x96", + "\xE8\x4E" => "\xE8\xBC\x97", + "\xE8\x4F" => "\xE9\x81\xB3", + "\xE8\x50" => "\xE9\x81\xB0", + "\xE8\x51" => "\xE9\x81\xAF", + "\xE8\x52" => "\xE9\x81\xA7", + "\xE8\x53" => "\xE9\x81\xAB", + "\xE8\x54" => "\xE9\x84\xAF", + "\xE8\x55" => "\xE9\x84\xAB", + "\xE8\x56" => "\xE9\x84\xA9", + "\xE8\x57" => "\xE9\x84\xAA", + "\xE8\x58" => "\xE9\x84\xB2", + "\xE8\x59" => "\xE9\x84\xA6", + "\xE8\x5A" => "\xE9\x84\xAE", + "\xE8\x5B" => "\xE9\x86\x85", + "\xE8\x5C" => "\xE9\x86\x86", + "\xE8\x5D" => "\xE9\x86\x8A", + "\xE8\x5E" => "\xE9\x86\x81", + "\xE8\x5F" => "\xE9\x86\x82", + "\xE8\x60" => "\xE9\x86\x84", + "\xE8\x61" => "\xE9\x86\x80", + "\xE8\x62" => "\xE9\x8B\x90", + "\xE8\x63" => "\xE9\x8B\x83", + "\xE8\x64" => "\xE9\x8B\x84", + "\xE8\x65" => "\xE9\x8B\x80", + "\xE8\x66" => "\xE9\x8B\x99", + "\xE8\x67" => "\xE9\x8A\xB6", + "\xE8\x68" => "\xE9\x8B\x8F", + "\xE8\x69" => "\xE9\x8B\xB1", + "\xE8\x6A" => "\xE9\x8B\x9F", + "\xE8\x6B" => "\xE9\x8B\x98", + "\xE8\x6C" => "\xE9\x8B\xA9", + "\xE8\x6D" => "\xE9\x8B\x97", + "\xE8\x6E" => "\xE9\x8B\x9D", + "\xE8\x6F" => "\xE9\x8B\x8C", + "\xE8\x70" => "\xE9\x8B\xAF", + "\xE8\x71" => "\xE9\x8B\x82", + "\xE8\x72" => "\xE9\x8B\xA8", + "\xE8\x73" => "\xE9\x8B\x8A", + "\xE8\x74" => "\xE9\x8B\x88", + "\xE8\x75" => "\xE9\x8B\x8E", + "\xE8\x76" => "\xE9\x8B\xA6", + "\xE8\x77" => "\xE9\x8B\x8D", + "\xE8\x78" => "\xE9\x8B\x95", + "\xE8\x79" => "\xE9\x8B\x89", + "\xE8\x7A" => "\xE9\x8B\xA0", + "\xE8\x7B" => "\xE9\x8B\x9E", + "\xE8\x7C" => "\xE9\x8B\xA7", + "\xE8\x7D" => "\xE9\x8B\x91", + "\xE8\x7E" => "\xE9\x8B\x93", + "\xE8\xA1" => "\xE9\x8A\xB5", + "\xE8\xA2" => "\xE9\x8B\xA1", + "\xE8\xA3" => "\xE9\x8B\x86", + "\xE8\xA4" => "\xE9\x8A\xB4", + "\xE8\xA5" => "\xE9\x95\xBC", + "\xE8\xA6" => "\xE9\x96\xAC", + "\xE8\xA7" => "\xE9\x96\xAB", + "\xE8\xA8" => "\xE9\x96\xAE", + "\xE8\xA9" => "\xE9\x96\xB0", + "\xE8\xAA" => "\xE9\x9A\xA4", + "\xE8\xAB" => "\xE9\x9A\xA2", + "\xE8\xAC" => "\xE9\x9B\x93", + "\xE8\xAD" => "\xE9\x9C\x85", + "\xE8\xAE" => "\xE9\x9C\x88", + "\xE8\xAF" => "\xE9\x9C\x82", + "\xE8\xB0" => "\xE9\x9D\x9A", + "\xE8\xB1" => "\xE9\x9E\x8A", + "\xE8\xB2" => "\xE9\x9E\x8E", + "\xE8\xB3" => "\xE9\x9E\x88", + "\xE8\xB4" => "\xE9\x9F\x90", + "\xE8\xB5" => "\xE9\x9F\x8F", + "\xE8\xB6" => "\xE9\xA0\x9E", + "\xE8\xB7" => "\xE9\xA0\x9D", + "\xE8\xB8" => "\xE9\xA0\xA6", + "\xE8\xB9" => "\xE9\xA0\xA9", + "\xE8\xBA" => "\xE9\xA0\xA8", + "\xE8\xBB" => "\xE9\xA0\xA0", + "\xE8\xBC" => "\xE9\xA0\x9B", + "\xE8\xBD" => "\xE9\xA0\xA7", + "\xE8\xBE" => "\xE9\xA2\xB2", + "\xE8\xBF" => "\xE9\xA4\x88", + "\xE8\xC0" => "\xE9\xA3\xBA", + "\xE8\xC1" => "\xE9\xA4\x91", + "\xE8\xC2" => "\xE9\xA4\x94", + "\xE8\xC3" => "\xE9\xA4\x96", + "\xE8\xC4" => "\xE9\xA4\x97", + "\xE8\xC5" => "\xE9\xA4\x95", + "\xE8\xC6" => "\xE9\xA7\x9C", + "\xE8\xC7" => "\xE9\xA7\x8D", + "\xE8\xC8" => "\xE9\xA7\x8F", + "\xE8\xC9" => "\xE9\xA7\x93", + "\xE8\xCA" => "\xE9\xA7\x94", + "\xE8\xCB" => "\xE9\xA7\x8E", + "\xE8\xCC" => "\xE9\xA7\x89", + "\xE8\xCD" => "\xE9\xA7\x96", + "\xE8\xCE" => "\xE9\xA7\x98", + "\xE8\xCF" => "\xE9\xA7\x8B", + "\xE8\xD0" => "\xE9\xA7\x97", + "\xE8\xD1" => "\xE9\xA7\x8C", + "\xE8\xD2" => "\xE9\xAA\xB3", + "\xE8\xD3" => "\xE9\xAB\xAC", + "\xE8\xD4" => "\xE9\xAB\xAB", + "\xE8\xD5" => "\xE9\xAB\xB3", + "\xE8\xD6" => "\xE9\xAB\xB2", + "\xE8\xD7" => "\xE9\xAB\xB1", + "\xE8\xD8" => "\xE9\xAD\x86", + "\xE8\xD9" => "\xE9\xAD\x83", + "\xE8\xDA" => "\xE9\xAD\xA7", + "\xE8\xDB" => "\xE9\xAD\xB4", + "\xE8\xDC" => "\xE9\xAD\xB1", + "\xE8\xDD" => "\xE9\xAD\xA6", + "\xE8\xDE" => "\xE9\xAD\xB6", + "\xE8\xDF" => "\xE9\xAD\xB5", + "\xE8\xE0" => "\xE9\xAD\xB0", + "\xE8\xE1" => "\xE9\xAD\xA8", + "\xE8\xE2" => "\xE9\xAD\xA4", + "\xE8\xE3" => "\xE9\xAD\xAC", + "\xE8\xE4" => "\xE9\xB3\xBC", + "\xE8\xE5" => "\xE9\xB3\xBA", + "\xE8\xE6" => "\xE9\xB3\xBD", + "\xE8\xE7" => "\xE9\xB3\xBF", + "\xE8\xE8" => "\xE9\xB3\xB7", + "\xE8\xE9" => "\xE9\xB4\x87", + "\xE8\xEA" => "\xE9\xB4\x80", + "\xE8\xEB" => "\xE9\xB3\xB9", + "\xE8\xEC" => "\xE9\xB3\xBB", + "\xE8\xED" => "\xE9\xB4\x88", + "\xE8\xEE" => "\xE9\xB4\x85", + "\xE8\xEF" => "\xE9\xB4\x84", + "\xE8\xF0" => "\xE9\xBA\x83", + "\xE8\xF1" => "\xE9\xBB\x93", + "\xE8\xF2" => "\xE9\xBC\x8F", + "\xE8\xF3" => "\xE9\xBC\x90", + "\xE8\xF4" => "\xE5\x84\x9C", + "\xE8\xF5" => "\xE5\x84\x93", + "\xE8\xF6" => "\xE5\x84\x97", + "\xE8\xF7" => "\xE5\x84\x9A", + "\xE8\xF8" => "\xE5\x84\x91", + "\xE8\xF9" => "\xE5\x87\x9E", + "\xE8\xFA" => "\xE5\x8C\xB4", + "\xE8\xFB" => "\xE5\x8F\xA1", + "\xE8\xFC" => "\xE5\x99\xB0", + "\xE8\xFD" => "\xE5\x99\xA0", + "\xE8\xFE" => "\xE5\x99\xAE", + "\xE9\x40" => "\xE5\x99\xB3", + "\xE9\x41" => "\xE5\x99\xA6", + "\xE9\x42" => "\xE5\x99\xA3", + "\xE9\x43" => "\xE5\x99\xAD", + "\xE9\x44" => "\xE5\x99\xB2", + "\xE9\x45" => "\xE5\x99\x9E", + "\xE9\x46" => "\xE5\x99\xB7", + "\xE9\x47" => "\xE5\x9C\x9C", + "\xE9\x48" => "\xE5\x9C\x9B", + "\xE9\x49" => "\xE5\xA3\x88", + "\xE9\x4A" => "\xE5\xA2\xBD", + "\xE9\x4B" => "\xE5\xA3\x89", + "\xE9\x4C" => "\xE5\xA2\xBF", + "\xE9\x4D" => "\xE5\xA2\xBA", + "\xE9\x4E" => "\xE5\xA3\x82", + "\xE9\x4F" => "\xE5\xA2\xBC", + "\xE9\x50" => "\xE5\xA3\x86", + "\xE9\x51" => "\xE5\xAC\x97", + "\xE9\x52" => "\xE5\xAC\x99", + "\xE9\x53" => "\xE5\xAC\x9B", + "\xE9\x54" => "\xE5\xAC\xA1", + "\xE9\x55" => "\xE5\xAC\x94", + "\xE9\x56" => "\xE5\xAC\x93", + "\xE9\x57" => "\xE5\xAC\x90", + "\xE9\x58" => "\xE5\xAC\x96", + "\xE9\x59" => "\xE5\xAC\xA8", + "\xE9\x5A" => "\xE5\xAC\x9A", + "\xE9\x5B" => "\xE5\xAC\xA0", + "\xE9\x5C" => "\xE5\xAC\x9E", + "\xE9\x5D" => "\xE5\xAF\xAF", + "\xE9\x5E" => "\xE5\xB6\xAC", + "\xE9\x5F" => "\xE5\xB6\xB1", + "\xE9\x60" => "\xE5\xB6\xA9", + "\xE9\x61" => "\xE5\xB6\xA7", + "\xE9\x62" => "\xE5\xB6\xB5", + "\xE9\x63" => "\xE5\xB6\xB0", + "\xE9\x64" => "\xE5\xB6\xAE", + "\xE9\x65" => "\xE5\xB6\xAA", + "\xE9\x66" => "\xE5\xB6\xA8", + "\xE9\x67" => "\xE5\xB6\xB2", + "\xE9\x68" => "\xE5\xB6\xAD", + "\xE9\x69" => "\xE5\xB6\xAF", + "\xE9\x6A" => "\xE5\xB6\xB4", + "\xE9\x6B" => "\xE5\xB9\xA7", + "\xE9\x6C" => "\xE5\xB9\xA8", + "\xE9\x6D" => "\xE5\xB9\xA6", + "\xE9\x6E" => "\xE5\xB9\xAF", + "\xE9\x6F" => "\xE5\xBB\xA9", + "\xE9\x70" => "\xE5\xBB\xA7", + "\xE9\x71" => "\xE5\xBB\xA6", + "\xE9\x72" => "\xE5\xBB\xA8", + "\xE9\x73" => "\xE5\xBB\xA5", + "\xE9\x74" => "\xE5\xBD\x8B", + "\xE9\x75" => "\xE5\xBE\xBC", + "\xE9\x76" => "\xE6\x86\x9D", + "\xE9\x77" => "\xE6\x86\xA8", + "\xE9\x78" => "\xE6\x86\x96", + "\xE9\x79" => "\xE6\x87\x85", + "\xE9\x7A" => "\xE6\x86\xB4", + "\xE9\x7B" => "\xE6\x87\x86", + "\xE9\x7C" => "\xE6\x87\x81", + "\xE9\x7D" => "\xE6\x87\x8C", + "\xE9\x7E" => "\xE6\x86\xBA", + "\xE9\xA1" => "\xE6\x86\xBF", + "\xE9\xA2" => "\xE6\x86\xB8", + "\xE9\xA3" => "\xE6\x86\x8C", + "\xE9\xA4" => "\xE6\x93\x97", + "\xE9\xA5" => "\xE6\x93\x96", + "\xE9\xA6" => "\xE6\x93\x90", + "\xE9\xA7" => "\xE6\x93\x8F", + "\xE9\xA8" => "\xE6\x93\x89", + "\xE9\xA9" => "\xE6\x92\xBD", + "\xE9\xAA" => "\xE6\x92\x89", + "\xE9\xAB" => "\xE6\x93\x83", + "\xE9\xAC" => "\xE6\x93\x9B", + "\xE9\xAD" => "\xE6\x93\xB3", + "\xE9\xAE" => "\xE6\x93\x99", + "\xE9\xAF" => "\xE6\x94\xB3", + "\xE9\xB0" => "\xE6\x95\xBF", + "\xE9\xB1" => "\xE6\x95\xBC", + "\xE9\xB2" => "\xE6\x96\xA2", + "\xE9\xB3" => "\xE6\x9B\x88", + "\xE9\xB4" => "\xE6\x9A\xBE", + "\xE9\xB5" => "\xE6\x9B\x80", + "\xE9\xB6" => "\xE6\x9B\x8A", + "\xE9\xB7" => "\xE6\x9B\x8B", + "\xE9\xB8" => "\xE6\x9B\x8F", + "\xE9\xB9" => "\xE6\x9A\xBD", + "\xE9\xBA" => "\xE6\x9A\xBB", + "\xE9\xBB" => "\xE6\x9A\xBA", + "\xE9\xBC" => "\xE6\x9B\x8C", + "\xE9\xBD" => "\xE6\x9C\xA3", + "\xE9\xBE" => "\xE6\xA8\xB4", + "\xE9\xBF" => "\xE6\xA9\xA6", + "\xE9\xC0" => "\xE6\xA9\x89", + "\xE9\xC1" => "\xE6\xA9\xA7", + "\xE9\xC2" => "\xE6\xA8\xB2", + "\xE9\xC3" => "\xE6\xA9\xA8", + "\xE9\xC4" => "\xE6\xA8\xBE", + "\xE9\xC5" => "\xE6\xA9\x9D", + "\xE9\xC6" => "\xE6\xA9\xAD", + "\xE9\xC7" => "\xE6\xA9\xB6", + "\xE9\xC8" => "\xE6\xA9\x9B", + "\xE9\xC9" => "\xE6\xA9\x91", + "\xE9\xCA" => "\xE6\xA8\xA8", + "\xE9\xCB" => "\xE6\xA9\x9A", + "\xE9\xCC" => "\xE6\xA8\xBB", + "\xE9\xCD" => "\xE6\xA8\xBF", + "\xE9\xCE" => "\xE6\xA9\x81", + "\xE9\xCF" => "\xE6\xA9\xAA", + "\xE9\xD0" => "\xE6\xA9\xA4", + "\xE9\xD1" => "\xE6\xA9\x90", + "\xE9\xD2" => "\xE6\xA9\x8F", + "\xE9\xD3" => "\xE6\xA9\x94", + "\xE9\xD4" => "\xE6\xA9\xAF", + "\xE9\xD5" => "\xE6\xA9\xA9", + "\xE9\xD6" => "\xE6\xA9\xA0", + "\xE9\xD7" => "\xE6\xA8\xBC", + "\xE9\xD8" => "\xE6\xA9\x9E", + "\xE9\xD9" => "\xE6\xA9\x96", + "\xE9\xDA" => "\xE6\xA9\x95", + "\xE9\xDB" => "\xE6\xA9\x8D", + "\xE9\xDC" => "\xE6\xA9\x8E", + "\xE9\xDD" => "\xE6\xA9\x86", + "\xE9\xDE" => "\xE6\xAD\x95", + "\xE9\xDF" => "\xE6\xAD\x94", + "\xE9\xE0" => "\xE6\xAD\x96", + "\xE9\xE1" => "\xE6\xAE\xA7", + "\xE9\xE2" => "\xE6\xAE\xAA", + "\xE9\xE3" => "\xE6\xAE\xAB", + "\xE9\xE4" => "\xE6\xAF\x88", + "\xE9\xE5" => "\xE6\xAF\x87", + "\xE9\xE6" => "\xE6\xB0\x84", + "\xE9\xE7" => "\xE6\xB0\x83", + "\xE9\xE8" => "\xE6\xB0\x86", + "\xE9\xE9" => "\xE6\xBE\xAD", + "\xE9\xEA" => "\xE6\xBF\x8B", + "\xE9\xEB" => "\xE6\xBE\xA3", + "\xE9\xEC" => "\xE6\xBF\x87", + "\xE9\xED" => "\xE6\xBE\xBC", + "\xE9\xEE" => "\xE6\xBF\x8E", + "\xE9\xEF" => "\xE6\xBF\x88", + "\xE9\xF0" => "\xE6\xBD\x9E", + "\xE9\xF1" => "\xE6\xBF\x84", + "\xE9\xF2" => "\xE6\xBE\xBD", + "\xE9\xF3" => "\xE6\xBE\x9E", + "\xE9\xF4" => "\xE6\xBF\x8A", + "\xE9\xF5" => "\xE6\xBE\xA8", + "\xE9\xF6" => "\xE7\x80\x84", + "\xE9\xF7" => "\xE6\xBE\xA5", + "\xE9\xF8" => "\xE6\xBE\xAE", + "\xE9\xF9" => "\xE6\xBE\xBA", + "\xE9\xFA" => "\xE6\xBE\xAC", + "\xE9\xFB" => "\xE6\xBE\xAA", + "\xE9\xFC" => "\xE6\xBF\x8F", + "\xE9\xFD" => "\xE6\xBE\xBF", + "\xE9\xFE" => "\xE6\xBE\xB8", + "\xEA\x40" => "\xE6\xBE\xA2", + "\xEA\x41" => "\xE6\xBF\x89", + "\xEA\x42" => "\xE6\xBE\xAB", + "\xEA\x43" => "\xE6\xBF\x8D", + "\xEA\x44" => "\xE6\xBE\xAF", + "\xEA\x45" => "\xE6\xBE\xB2", + "\xEA\x46" => "\xE6\xBE\xB0", + "\xEA\x47" => "\xE7\x87\x85", + "\xEA\x48" => "\xE7\x87\x82", + "\xEA\x49" => "\xE7\x86\xBF", + "\xEA\x4A" => "\xE7\x86\xB8", + "\xEA\x4B" => "\xE7\x87\x96", + "\xEA\x4C" => "\xE7\x87\x80", + "\xEA\x4D" => "\xE7\x87\x81", + "\xEA\x4E" => "\xE7\x87\x8B", + "\xEA\x4F" => "\xE7\x87\x94", + "\xEA\x50" => "\xE7\x87\x8A", + "\xEA\x51" => "\xE7\x87\x87", + "\xEA\x52" => "\xE7\x87\x8F", + "\xEA\x53" => "\xE7\x86\xBD", + "\xEA\x54" => "\xE7\x87\x98", + "\xEA\x55" => "\xE7\x86\xBC", + "\xEA\x56" => "\xE7\x87\x86", + "\xEA\x57" => "\xE7\x87\x9A", + "\xEA\x58" => "\xE7\x87\x9B", + "\xEA\x59" => "\xE7\x8A\x9D", + "\xEA\x5A" => "\xE7\x8A\x9E", + "\xEA\x5B" => "\xE7\x8D\xA9", + "\xEA\x5C" => "\xE7\x8D\xA6", + "\xEA\x5D" => "\xE7\x8D\xA7", + "\xEA\x5E" => "\xE7\x8D\xAC", + "\xEA\x5F" => "\xE7\x8D\xA5", + "\xEA\x60" => "\xE7\x8D\xAB", + "\xEA\x61" => "\xE7\x8D\xAA", + "\xEA\x62" => "\xE7\x91\xBF", + "\xEA\x63" => "\xE7\x92\x9A", + "\xEA\x64" => "\xE7\x92\xA0", + "\xEA\x65" => "\xE7\x92\x94", + "\xEA\x66" => "\xE7\x92\x92", + "\xEA\x67" => "\xE7\x92\x95", + "\xEA\x68" => "\xE7\x92\xA1", + "\xEA\x69" => "\xE7\x94\x8B", + "\xEA\x6A" => "\xE7\x96\x80", + "\xEA\x6B" => "\xE7\x98\xAF", + "\xEA\x6C" => "\xE7\x98\xAD", + "\xEA\x6D" => "\xE7\x98\xB1", + "\xEA\x6E" => "\xE7\x98\xBD", + "\xEA\x6F" => "\xE7\x98\xB3", + "\xEA\x70" => "\xE7\x98\xBC", + "\xEA\x71" => "\xE7\x98\xB5", + "\xEA\x72" => "\xE7\x98\xB2", + "\xEA\x73" => "\xE7\x98\xB0", + "\xEA\x74" => "\xE7\x9A\xBB", + "\xEA\x75" => "\xE7\x9B\xA6", + "\xEA\x76" => "\xE7\x9E\x9A", + "\xEA\x77" => "\xE7\x9E\x9D", + "\xEA\x78" => "\xE7\x9E\xA1", + "\xEA\x79" => "\xE7\x9E\x9C", + "\xEA\x7A" => "\xE7\x9E\x9B", + "\xEA\x7B" => "\xE7\x9E\xA2", + "\xEA\x7C" => "\xE7\x9E\xA3", + "\xEA\x7D" => "\xE7\x9E\x95", + "\xEA\x7E" => "\xE7\x9E\x99", + "\xEA\xA1" => "\xE7\x9E\x97", + "\xEA\xA2" => "\xE7\xA3\x9D", + "\xEA\xA3" => "\xE7\xA3\xA9", + "\xEA\xA4" => "\xE7\xA3\xA5", + "\xEA\xA5" => "\xE7\xA3\xAA", + "\xEA\xA6" => "\xE7\xA3\x9E", + "\xEA\xA7" => "\xE7\xA3\xA3", + "\xEA\xA8" => "\xE7\xA3\x9B", + "\xEA\xA9" => "\xE7\xA3\xA1", + "\xEA\xAA" => "\xE7\xA3\xA2", + "\xEA\xAB" => "\xE7\xA3\xAD", + "\xEA\xAC" => "\xE7\xA3\x9F", + "\xEA\xAD" => "\xE7\xA3\xA0", + "\xEA\xAE" => "\xE7\xA6\xA4", + "\xEA\xAF" => "\xE7\xA9\x84", + "\xEA\xB0" => "\xE7\xA9\x88", + "\xEA\xB1" => "\xE7\xA9\x87", + "\xEA\xB2" => "\xE7\xAA\xB6", + "\xEA\xB3" => "\xE7\xAA\xB8", + "\xEA\xB4" => "\xE7\xAA\xB5", + "\xEA\xB5" => "\xE7\xAA\xB1", + "\xEA\xB6" => "\xE7\xAA\xB7", + "\xEA\xB7" => "\xE7\xAF\x9E", + "\xEA\xB8" => "\xE7\xAF\xA3", + "\xEA\xB9" => "\xE7\xAF\xA7", + "\xEA\xBA" => "\xE7\xAF\x9D", + "\xEA\xBB" => "\xE7\xAF\x95", + "\xEA\xBC" => "\xE7\xAF\xA5", + "\xEA\xBD" => "\xE7\xAF\x9A", + "\xEA\xBE" => "\xE7\xAF\xA8", + "\xEA\xBF" => "\xE7\xAF\xB9", + "\xEA\xC0" => "\xE7\xAF\x94", + "\xEA\xC1" => "\xE7\xAF\xAA", + "\xEA\xC2" => "\xE7\xAF\xA2", + "\xEA\xC3" => "\xE7\xAF\x9C", + "\xEA\xC4" => "\xE7\xAF\xAB", + "\xEA\xC5" => "\xE7\xAF\x98", + "\xEA\xC6" => "\xE7\xAF\x9F", + "\xEA\xC7" => "\xE7\xB3\x92", + "\xEA\xC8" => "\xE7\xB3\x94", + "\xEA\xC9" => "\xE7\xB3\x97", + "\xEA\xCA" => "\xE7\xB3\x90", + "\xEA\xCB" => "\xE7\xB3\x91", + "\xEA\xCC" => "\xE7\xB8\x92", + "\xEA\xCD" => "\xE7\xB8\xA1", + "\xEA\xCE" => "\xE7\xB8\x97", + "\xEA\xCF" => "\xE7\xB8\x8C", + "\xEA\xD0" => "\xE7\xB8\x9F", + "\xEA\xD1" => "\xE7\xB8\xA0", + "\xEA\xD2" => "\xE7\xB8\x93", + "\xEA\xD3" => "\xE7\xB8\x8E", + "\xEA\xD4" => "\xE7\xB8\x9C", + "\xEA\xD5" => "\xE7\xB8\x95", + "\xEA\xD6" => "\xE7\xB8\x9A", + "\xEA\xD7" => "\xE7\xB8\xA2", + "\xEA\xD8" => "\xE7\xB8\x8B", + "\xEA\xD9" => "\xE7\xB8\x8F", + "\xEA\xDA" => "\xE7\xB8\x96", + "\xEA\xDB" => "\xE7\xB8\x8D", + "\xEA\xDC" => "\xE7\xB8\x94", + "\xEA\xDD" => "\xE7\xB8\xA5", + "\xEA\xDE" => "\xE7\xB8\xA4", + "\xEA\xDF" => "\xE7\xBD\x83", + "\xEA\xE0" => "\xE7\xBD\xBB", + "\xEA\xE1" => "\xE7\xBD\xBC", + "\xEA\xE2" => "\xE7\xBD\xBA", + "\xEA\xE3" => "\xE7\xBE\xB1", + "\xEA\xE4" => "\xE7\xBF\xAF", + "\xEA\xE5" => "\xE8\x80\xAA", + "\xEA\xE6" => "\xE8\x80\xA9", + "\xEA\xE7" => "\xE8\x81\xAC", + "\xEA\xE8" => "\xE8\x86\xB1", + "\xEA\xE9" => "\xE8\x86\xA6", + "\xEA\xEA" => "\xE8\x86\xAE", + "\xEA\xEB" => "\xE8\x86\xB9", + "\xEA\xEC" => "\xE8\x86\xB5", + "\xEA\xED" => "\xE8\x86\xAB", + "\xEA\xEE" => "\xE8\x86\xB0", + "\xEA\xEF" => "\xE8\x86\xAC", + "\xEA\xF0" => "\xE8\x86\xB4", + "\xEA\xF1" => "\xE8\x86\xB2", + "\xEA\xF2" => "\xE8\x86\xB7", + "\xEA\xF3" => "\xE8\x86\xA7", + "\xEA\xF4" => "\xE8\x87\xB2", + "\xEA\xF5" => "\xE8\x89\x95", + "\xEA\xF6" => "\xE8\x89\x96", + "\xEA\xF7" => "\xE8\x89\x97", + "\xEA\xF8" => "\xE8\x95\x96", + "\xEA\xF9" => "\xE8\x95\x85", + "\xEA\xFA" => "\xE8\x95\xAB", + "\xEA\xFB" => "\xE8\x95\x8D", + "\xEA\xFC" => "\xE8\x95\x93", + "\xEA\xFD" => "\xE8\x95\xA1", + "\xEA\xFE" => "\xE8\x95\x98", + "\xEB\x40" => "\xE8\x95\x80", + "\xEB\x41" => "\xE8\x95\x86", + "\xEB\x42" => "\xE8\x95\xA4", + "\xEB\x43" => "\xE8\x95\x81", + "\xEB\x44" => "\xE8\x95\xA2", + "\xEB\x45" => "\xE8\x95\x84", + "\xEB\x46" => "\xE8\x95\x91", + "\xEB\x47" => "\xE8\x95\x87", + "\xEB\x48" => "\xE8\x95\xA3", + "\xEB\x49" => "\xE8\x94\xBE", + "\xEB\x4A" => "\xE8\x95\x9B", + "\xEB\x4B" => "\xE8\x95\xB1", + "\xEB\x4C" => "\xE8\x95\x8E", + "\xEB\x4D" => "\xE8\x95\xAE", + "\xEB\x4E" => "\xE8\x95\xB5", + "\xEB\x4F" => "\xE8\x95\x95", + "\xEB\x50" => "\xE8\x95\xA7", + "\xEB\x51" => "\xE8\x95\xA0", + "\xEB\x52" => "\xE8\x96\x8C", + "\xEB\x53" => "\xE8\x95\xA6", + "\xEB\x54" => "\xE8\x95\x9D", + "\xEB\x55" => "\xE8\x95\x94", + "\xEB\x56" => "\xE8\x95\xA5", + "\xEB\x57" => "\xE8\x95\xAC", + "\xEB\x58" => "\xE8\x99\xA3", + "\xEB\x59" => "\xE8\x99\xA5", + "\xEB\x5A" => "\xE8\x99\xA4", + "\xEB\x5B" => "\xE8\x9E\x9B", + "\xEB\x5C" => "\xE8\x9E\x8F", + "\xEB\x5D" => "\xE8\x9E\x97", + "\xEB\x5E" => "\xE8\x9E\x93", + "\xEB\x5F" => "\xE8\x9E\x92", + "\xEB\x60" => "\xE8\x9E\x88", + "\xEB\x61" => "\xE8\x9E\x81", + "\xEB\x62" => "\xE8\x9E\x96", + "\xEB\x63" => "\xE8\x9E\x98", + "\xEB\x64" => "\xE8\x9D\xB9", + "\xEB\x65" => "\xE8\x9E\x87", + "\xEB\x66" => "\xE8\x9E\xA3", + "\xEB\x67" => "\xE8\x9E\x85", + "\xEB\x68" => "\xE8\x9E\x90", + "\xEB\x69" => "\xE8\x9E\x91", + "\xEB\x6A" => "\xE8\x9E\x9D", + "\xEB\x6B" => "\xE8\x9E\x84", + "\xEB\x6C" => "\xE8\x9E\x94", + "\xEB\x6D" => "\xE8\x9E\x9C", + "\xEB\x6E" => "\xE8\x9E\x9A", + "\xEB\x6F" => "\xE8\x9E\x89", + "\xEB\x70" => "\xE8\xA4\x9E", + "\xEB\x71" => "\xE8\xA4\xA6", + "\xEB\x72" => "\xE8\xA4\xB0", + "\xEB\x73" => "\xE8\xA4\xAD", + "\xEB\x74" => "\xE8\xA4\xAE", + "\xEB\x75" => "\xE8\xA4\xA7", + "\xEB\x76" => "\xE8\xA4\xB1", + "\xEB\x77" => "\xE8\xA4\xA2", + "\xEB\x78" => "\xE8\xA4\xA9", + "\xEB\x79" => "\xE8\xA4\xA3", + "\xEB\x7A" => "\xE8\xA4\xAF", + "\xEB\x7B" => "\xE8\xA4\xAC", + "\xEB\x7C" => "\xE8\xA4\x9F", + "\xEB\x7D" => "\xE8\xA7\xB1", + "\xEB\x7E" => "\xE8\xAB\xA0", + "\xEB\xA1" => "\xE8\xAB\xA2", + "\xEB\xA2" => "\xE8\xAB\xB2", + "\xEB\xA3" => "\xE8\xAB\xB4", + "\xEB\xA4" => "\xE8\xAB\xB5", + "\xEB\xA5" => "\xE8\xAB\x9D", + "\xEB\xA6" => "\xE8\xAC\x94", + "\xEB\xA7" => "\xE8\xAB\xA4", + "\xEB\xA8" => "\xE8\xAB\x9F", + "\xEB\xA9" => "\xE8\xAB\xB0", + "\xEB\xAA" => "\xE8\xAB\x88", + "\xEB\xAB" => "\xE8\xAB\x9E", + "\xEB\xAC" => "\xE8\xAB\xA1", + "\xEB\xAD" => "\xE8\xAB\xA8", + "\xEB\xAE" => "\xE8\xAB\xBF", + "\xEB\xAF" => "\xE8\xAB\xAF", + "\xEB\xB0" => "\xE8\xAB\xBB", + "\xEB\xB1" => "\xE8\xB2\x91", + "\xEB\xB2" => "\xE8\xB2\x92", + "\xEB\xB3" => "\xE8\xB2\x90", + "\xEB\xB4" => "\xE8\xB3\xB5", + "\xEB\xB5" => "\xE8\xB3\xAE", + "\xEB\xB6" => "\xE8\xB3\xB1", + "\xEB\xB7" => "\xE8\xB3\xB0", + "\xEB\xB8" => "\xE8\xB3\xB3", + "\xEB\xB9" => "\xE8\xB5\xAC", + "\xEB\xBA" => "\xE8\xB5\xAE", + "\xEB\xBB" => "\xE8\xB6\xA5", + "\xEB\xBC" => "\xE8\xB6\xA7", + "\xEB\xBD" => "\xE8\xB8\xB3", + "\xEB\xBE" => "\xE8\xB8\xBE", + "\xEB\xBF" => "\xE8\xB8\xB8", + "\xEB\xC0" => "\xE8\xB9\x80", + "\xEB\xC1" => "\xE8\xB9\x85", + "\xEB\xC2" => "\xE8\xB8\xB6", + "\xEB\xC3" => "\xE8\xB8\xBC", + "\xEB\xC4" => "\xE8\xB8\xBD", + "\xEB\xC5" => "\xE8\xB9\x81", + "\xEB\xC6" => "\xE8\xB8\xB0", + "\xEB\xC7" => "\xE8\xB8\xBF", + "\xEB\xC8" => "\xE8\xBA\xBD", + "\xEB\xC9" => "\xE8\xBC\xB6", + "\xEB\xCA" => "\xE8\xBC\xAE", + "\xEB\xCB" => "\xE8\xBC\xB5", + "\xEB\xCC" => "\xE8\xBC\xB2", + "\xEB\xCD" => "\xE8\xBC\xB9", + "\xEB\xCE" => "\xE8\xBC\xB7", + "\xEB\xCF" => "\xE8\xBC\xB4", + "\xEB\xD0" => "\xE9\x81\xB6", + "\xEB\xD1" => "\xE9\x81\xB9", + "\xEB\xD2" => "\xE9\x81\xBB", + "\xEB\xD3" => "\xE9\x82\x86", + "\xEB\xD4" => "\xE9\x83\xBA", + "\xEB\xD5" => "\xE9\x84\xB3", + "\xEB\xD6" => "\xE9\x84\xB5", + "\xEB\xD7" => "\xE9\x84\xB6", + "\xEB\xD8" => "\xE9\x86\x93", + "\xEB\xD9" => "\xE9\x86\x90", + "\xEB\xDA" => "\xE9\x86\x91", + "\xEB\xDB" => "\xE9\x86\x8D", + "\xEB\xDC" => "\xE9\x86\x8F", + "\xEB\xDD" => "\xE9\x8C\xA7", + "\xEB\xDE" => "\xE9\x8C\x9E", + "\xEB\xDF" => "\xE9\x8C\x88", + "\xEB\xE0" => "\xE9\x8C\x9F", + "\xEB\xE1" => "\xE9\x8C\x86", + "\xEB\xE2" => "\xE9\x8C\x8F", + "\xEB\xE3" => "\xE9\x8D\xBA", + "\xEB\xE4" => "\xE9\x8C\xB8", + "\xEB\xE5" => "\xE9\x8C\xBC", + "\xEB\xE6" => "\xE9\x8C\x9B", + "\xEB\xE7" => "\xE9\x8C\xA3", + "\xEB\xE8" => "\xE9\x8C\x92", + "\xEB\xE9" => "\xE9\x8C\x81", + "\xEB\xEA" => "\xE9\x8D\x86", + "\xEB\xEB" => "\xE9\x8C\xAD", + "\xEB\xEC" => "\xE9\x8C\x8E", + "\xEB\xED" => "\xE9\x8C\x8D", + "\xEB\xEE" => "\xE9\x8B\x8B", + "\xEB\xEF" => "\xE9\x8C\x9D", + "\xEB\xF0" => "\xE9\x8B\xBA", + "\xEB\xF1" => "\xE9\x8C\xA5", + "\xEB\xF2" => "\xE9\x8C\x93", + "\xEB\xF3" => "\xE9\x8B\xB9", + "\xEB\xF4" => "\xE9\x8B\xB7", + "\xEB\xF5" => "\xE9\x8C\xB4", + "\xEB\xF6" => "\xE9\x8C\x82", + "\xEB\xF7" => "\xE9\x8C\xA4", + "\xEB\xF8" => "\xE9\x8B\xBF", + "\xEB\xF9" => "\xE9\x8C\xA9", + "\xEB\xFA" => "\xE9\x8C\xB9", + "\xEB\xFB" => "\xE9\x8C\xB5", + "\xEB\xFC" => "\xE9\x8C\xAA", + "\xEB\xFD" => "\xE9\x8C\x94", + "\xEB\xFE" => "\xE9\x8C\x8C", + "\xEC\x40" => "\xE9\x8C\x8B", + "\xEC\x41" => "\xE9\x8B\xBE", + "\xEC\x42" => "\xE9\x8C\x89", + "\xEC\x43" => "\xE9\x8C\x80", + "\xEC\x44" => "\xE9\x8B\xBB", + "\xEC\x45" => "\xE9\x8C\x96", + "\xEC\x46" => "\xE9\x96\xBC", + "\xEC\x47" => "\xE9\x97\x8D", + "\xEC\x48" => "\xE9\x96\xBE", + "\xEC\x49" => "\xE9\x96\xB9", + "\xEC\x4A" => "\xE9\x96\xBA", + "\xEC\x4B" => "\xE9\x96\xB6", + "\xEC\x4C" => "\xE9\x96\xBF", + "\xEC\x4D" => "\xE9\x96\xB5", + "\xEC\x4E" => "\xE9\x96\xBD", + "\xEC\x4F" => "\xE9\x9A\xA9", + "\xEC\x50" => "\xE9\x9B\x94", + "\xEC\x51" => "\xE9\x9C\x8B", + "\xEC\x52" => "\xE9\x9C\x92", + "\xEC\x53" => "\xE9\x9C\x90", + "\xEC\x54" => "\xE9\x9E\x99", + "\xEC\x55" => "\xE9\x9E\x97", + "\xEC\x56" => "\xE9\x9E\x94", + "\xEC\x57" => "\xE9\x9F\xB0", + "\xEC\x58" => "\xE9\x9F\xB8", + "\xEC\x59" => "\xE9\xA0\xB5", + "\xEC\x5A" => "\xE9\xA0\xAF", + "\xEC\x5B" => "\xE9\xA0\xB2", + "\xEC\x5C" => "\xE9\xA4\xA4", + "\xEC\x5D" => "\xE9\xA4\x9F", + "\xEC\x5E" => "\xE9\xA4\xA7", + "\xEC\x5F" => "\xE9\xA4\xA9", + "\xEC\x60" => "\xE9\xA6\x9E", + "\xEC\x61" => "\xE9\xA7\xAE", + "\xEC\x62" => "\xE9\xA7\xAC", + "\xEC\x63" => "\xE9\xA7\xA5", + "\xEC\x64" => "\xE9\xA7\xA4", + "\xEC\x65" => "\xE9\xA7\xB0", + "\xEC\x66" => "\xE9\xA7\xA3", + "\xEC\x67" => "\xE9\xA7\xAA", + "\xEC\x68" => "\xE9\xA7\xA9", + "\xEC\x69" => "\xE9\xA7\xA7", + "\xEC\x6A" => "\xE9\xAA\xB9", + "\xEC\x6B" => "\xE9\xAA\xBF", + "\xEC\x6C" => "\xE9\xAA\xB4", + "\xEC\x6D" => "\xE9\xAA\xBB", + "\xEC\x6E" => "\xE9\xAB\xB6", + "\xEC\x6F" => "\xE9\xAB\xBA", + "\xEC\x70" => "\xE9\xAB\xB9", + "\xEC\x71" => "\xE9\xAB\xB7", + "\xEC\x72" => "\xE9\xAC\xB3", + "\xEC\x73" => "\xE9\xAE\x80", + "\xEC\x74" => "\xE9\xAE\x85", + "\xEC\x75" => "\xE9\xAE\x87", + "\xEC\x76" => "\xE9\xAD\xBC", + "\xEC\x77" => "\xE9\xAD\xBE", + "\xEC\x78" => "\xE9\xAD\xBB", + "\xEC\x79" => "\xE9\xAE\x82", + "\xEC\x7A" => "\xE9\xAE\x93", + "\xEC\x7B" => "\xE9\xAE\x92", + "\xEC\x7C" => "\xE9\xAE\x90", + "\xEC\x7D" => "\xE9\xAD\xBA", + "\xEC\x7E" => "\xE9\xAE\x95", + "\xEC\xA1" => "\xE9\xAD\xBD", + "\xEC\xA2" => "\xE9\xAE\x88", + "\xEC\xA3" => "\xE9\xB4\xA5", + "\xEC\xA4" => "\xE9\xB4\x97", + "\xEC\xA5" => "\xE9\xB4\xA0", + "\xEC\xA6" => "\xE9\xB4\x9E", + "\xEC\xA7" => "\xE9\xB4\x94", + "\xEC\xA8" => "\xE9\xB4\xA9", + "\xEC\xA9" => "\xE9\xB4\x9D", + "\xEC\xAA" => "\xE9\xB4\x98", + "\xEC\xAB" => "\xE9\xB4\xA2", + "\xEC\xAC" => "\xE9\xB4\x90", + "\xEC\xAD" => "\xE9\xB4\x99", + "\xEC\xAE" => "\xE9\xB4\x9F", + "\xEC\xAF" => "\xE9\xBA\x88", + "\xEC\xB0" => "\xE9\xBA\x86", + "\xEC\xB1" => "\xE9\xBA\x87", + "\xEC\xB2" => "\xE9\xBA\xAE", + "\xEC\xB3" => "\xE9\xBA\xAD", + "\xEC\xB4" => "\xE9\xBB\x95", + "\xEC\xB5" => "\xE9\xBB\x96", + "\xEC\xB6" => "\xE9\xBB\xBA", + "\xEC\xB7" => "\xE9\xBC\x92", + "\xEC\xB8" => "\xE9\xBC\xBD", + "\xEC\xB9" => "\xE5\x84\xA6", + "\xEC\xBA" => "\xE5\x84\xA5", + "\xEC\xBB" => "\xE5\x84\xA2", + "\xEC\xBC" => "\xE5\x84\xA4", + "\xEC\xBD" => "\xE5\x84\xA0", + "\xEC\xBE" => "\xE5\x84\xA9", + "\xEC\xBF" => "\xE5\x8B\xB4", + "\xEC\xC0" => "\xE5\x9A\x93", + "\xEC\xC1" => "\xE5\x9A\x8C", + "\xEC\xC2" => "\xE5\x9A\x8D", + "\xEC\xC3" => "\xE5\x9A\x86", + "\xEC\xC4" => "\xE5\x9A\x84", + "\xEC\xC5" => "\xE5\x9A\x83", + "\xEC\xC6" => "\xE5\x99\xBE", + "\xEC\xC7" => "\xE5\x9A\x82", + "\xEC\xC8" => "\xE5\x99\xBF", + "\xEC\xC9" => "\xE5\x9A\x81", + "\xEC\xCA" => "\xE5\xA3\x96", + "\xEC\xCB" => "\xE5\xA3\x94", + "\xEC\xCC" => "\xE5\xA3\x8F", + "\xEC\xCD" => "\xE5\xA3\x92", + "\xEC\xCE" => "\xE5\xAC\xAD", + "\xEC\xCF" => "\xE5\xAC\xA5", + "\xEC\xD0" => "\xE5\xAC\xB2", + "\xEC\xD1" => "\xE5\xAC\xA3", + "\xEC\xD2" => "\xE5\xAC\xAC", + "\xEC\xD3" => "\xE5\xAC\xA7", + "\xEC\xD4" => "\xE5\xAC\xA6", + "\xEC\xD5" => "\xE5\xAC\xAF", + "\xEC\xD6" => "\xE5\xAC\xAE", + "\xEC\xD7" => "\xE5\xAD\xBB", + "\xEC\xD8" => "\xE5\xAF\xB1", + "\xEC\xD9" => "\xE5\xAF\xB2", + "\xEC\xDA" => "\xE5\xB6\xB7", + "\xEC\xDB" => "\xE5\xB9\xAC", + "\xEC\xDC" => "\xE5\xB9\xAA", + "\xEC\xDD" => "\xE5\xBE\xBE", + "\xEC\xDE" => "\xE5\xBE\xBB", + "\xEC\xDF" => "\xE6\x87\x83", + "\xEC\xE0" => "\xE6\x86\xB5", + "\xEC\xE1" => "\xE6\x86\xBC", + "\xEC\xE2" => "\xE6\x87\xA7", + "\xEC\xE3" => "\xE6\x87\xA0", + "\xEC\xE4" => "\xE6\x87\xA5", + "\xEC\xE5" => "\xE6\x87\xA4", + "\xEC\xE6" => "\xE6\x87\xA8", + "\xEC\xE7" => "\xE6\x87\x9E", + "\xEC\xE8" => "\xE6\x93\xAF", + "\xEC\xE9" => "\xE6\x93\xA9", + "\xEC\xEA" => "\xE6\x93\xA3", + "\xEC\xEB" => "\xE6\x93\xAB", + "\xEC\xEC" => "\xE6\x93\xA4", + "\xEC\xED" => "\xE6\x93\xA8", + "\xEC\xEE" => "\xE6\x96\x81", + "\xEC\xEF" => "\xE6\x96\x80", + "\xEC\xF0" => "\xE6\x96\xB6", + "\xEC\xF1" => "\xE6\x97\x9A", + "\xEC\xF2" => "\xE6\x9B\x92", + "\xEC\xF3" => "\xE6\xAA\x8D", + "\xEC\xF4" => "\xE6\xAA\x96", + "\xEC\xF5" => "\xE6\xAA\x81", + "\xEC\xF6" => "\xE6\xAA\xA5", + "\xEC\xF7" => "\xE6\xAA\x89", + "\xEC\xF8" => "\xE6\xAA\x9F", + "\xEC\xF9" => "\xE6\xAA\x9B", + "\xEC\xFA" => "\xE6\xAA\xA1", + "\xEC\xFB" => "\xE6\xAA\x9E", + "\xEC\xFC" => "\xE6\xAA\x87", + "\xEC\xFD" => "\xE6\xAA\x93", + "\xEC\xFE" => "\xE6\xAA\x8E", + "\xED\x40" => "\xE6\xAA\x95", + "\xED\x41" => "\xE6\xAA\x83", + "\xED\x42" => "\xE6\xAA\xA8", + "\xED\x43" => "\xE6\xAA\xA4", + "\xED\x44" => "\xE6\xAA\x91", + "\xED\x45" => "\xE6\xA9\xBF", + "\xED\x46" => "\xE6\xAA\xA6", + "\xED\x47" => "\xE6\xAA\x9A", + "\xED\x48" => "\xE6\xAA\x85", + "\xED\x49" => "\xE6\xAA\x8C", + "\xED\x4A" => "\xE6\xAA\x92", + "\xED\x4B" => "\xE6\xAD\x9B", + "\xED\x4C" => "\xE6\xAE\xAD", + "\xED\x4D" => "\xE6\xB0\x89", + "\xED\x4E" => "\xE6\xBF\x8C", + "\xED\x4F" => "\xE6\xBE\xA9", + "\xED\x50" => "\xE6\xBF\xB4", + "\xED\x51" => "\xE6\xBF\x94", + "\xED\x52" => "\xE6\xBF\xA3", + "\xED\x53" => "\xE6\xBF\x9C", + "\xED\x54" => "\xE6\xBF\xAD", + "\xED\x55" => "\xE6\xBF\xA7", + "\xED\x56" => "\xE6\xBF\xA6", + "\xED\x57" => "\xE6\xBF\x9E", + "\xED\x58" => "\xE6\xBF\xB2", + "\xED\x59" => "\xE6\xBF\x9D", + "\xED\x5A" => "\xE6\xBF\xA2", + "\xED\x5B" => "\xE6\xBF\xA8", + "\xED\x5C" => "\xE7\x87\xA1", + "\xED\x5D" => "\xE7\x87\xB1", + "\xED\x5E" => "\xE7\x87\xA8", + "\xED\x5F" => "\xE7\x87\xB2", + "\xED\x60" => "\xE7\x87\xA4", + "\xED\x61" => "\xE7\x87\xB0", + "\xED\x62" => "\xE7\x87\xA2", + "\xED\x63" => "\xE7\x8D\xB3", + "\xED\x64" => "\xE7\x8D\xAE", + "\xED\x65" => "\xE7\x8D\xAF", + "\xED\x66" => "\xE7\x92\x97", + "\xED\x67" => "\xE7\x92\xB2", + "\xED\x68" => "\xE7\x92\xAB", + "\xED\x69" => "\xE7\x92\x90", + "\xED\x6A" => "\xE7\x92\xAA", + "\xED\x6B" => "\xE7\x92\xAD", + "\xED\x6C" => "\xE7\x92\xB1", + "\xED\x6D" => "\xE7\x92\xA5", + "\xED\x6E" => "\xE7\x92\xAF", + "\xED\x6F" => "\xE7\x94\x90", + "\xED\x70" => "\xE7\x94\x91", + "\xED\x71" => "\xE7\x94\x92", + "\xED\x72" => "\xE7\x94\x8F", + "\xED\x73" => "\xE7\x96\x84", + "\xED\x74" => "\xE7\x99\x83", + "\xED\x75" => "\xE7\x99\x88", + "\xED\x76" => "\xE7\x99\x89", + "\xED\x77" => "\xE7\x99\x87", + "\xED\x78" => "\xE7\x9A\xA4", + "\xED\x79" => "\xE7\x9B\xA9", + "\xED\x7A" => "\xE7\x9E\xB5", + "\xED\x7B" => "\xE7\x9E\xAB", + "\xED\x7C" => "\xE7\x9E\xB2", + "\xED\x7D" => "\xE7\x9E\xB7", + "\xED\x7E" => "\xE7\x9E\xB6", + "\xED\xA1" => "\xE7\x9E\xB4", + "\xED\xA2" => "\xE7\x9E\xB1", + "\xED\xA3" => "\xE7\x9E\xA8", + "\xED\xA4" => "\xE7\x9F\xB0", + "\xED\xA5" => "\xE7\xA3\xB3", + "\xED\xA6" => "\xE7\xA3\xBD", + "\xED\xA7" => "\xE7\xA4\x82", + "\xED\xA8" => "\xE7\xA3\xBB", + "\xED\xA9" => "\xE7\xA3\xBC", + "\xED\xAA" => "\xE7\xA3\xB2", + "\xED\xAB" => "\xE7\xA4\x85", + "\xED\xAC" => "\xE7\xA3\xB9", + "\xED\xAD" => "\xE7\xA3\xBE", + "\xED\xAE" => "\xE7\xA4\x84", + "\xED\xAF" => "\xE7\xA6\xAB", + "\xED\xB0" => "\xE7\xA6\xA8", + "\xED\xB1" => "\xE7\xA9\x9C", + "\xED\xB2" => "\xE7\xA9\x9B", + "\xED\xB3" => "\xE7\xA9\x96", + "\xED\xB4" => "\xE7\xA9\x98", + "\xED\xB5" => "\xE7\xA9\x94", + "\xED\xB6" => "\xE7\xA9\x9A", + "\xED\xB7" => "\xE7\xAA\xBE", + "\xED\xB8" => "\xE7\xAB\x80", + "\xED\xB9" => "\xE7\xAB\x81", + "\xED\xBA" => "\xE7\xB0\x85", + "\xED\xBB" => "\xE7\xB0\x8F", + "\xED\xBC" => "\xE7\xAF\xB2", + "\xED\xBD" => "\xE7\xB0\x80", + "\xED\xBE" => "\xE7\xAF\xBF", + "\xED\xBF" => "\xE7\xAF\xBB", + "\xED\xC0" => "\xE7\xB0\x8E", + "\xED\xC1" => "\xE7\xAF\xB4", + "\xED\xC2" => "\xE7\xB0\x8B", + "\xED\xC3" => "\xE7\xAF\xB3", + "\xED\xC4" => "\xE7\xB0\x82", + "\xED\xC5" => "\xE7\xB0\x89", + "\xED\xC6" => "\xE7\xB0\x83", + "\xED\xC7" => "\xE7\xB0\x81", + "\xED\xC8" => "\xE7\xAF\xB8", + "\xED\xC9" => "\xE7\xAF\xBD", + "\xED\xCA" => "\xE7\xB0\x86", + "\xED\xCB" => "\xE7\xAF\xB0", + "\xED\xCC" => "\xE7\xAF\xB1", + "\xED\xCD" => "\xE7\xB0\x90", + "\xED\xCE" => "\xE7\xB0\x8A", + "\xED\xCF" => "\xE7\xB3\xA8", + "\xED\xD0" => "\xE7\xB8\xAD", + "\xED\xD1" => "\xE7\xB8\xBC", + "\xED\xD2" => "\xE7\xB9\x82", + "\xED\xD3" => "\xE7\xB8\xB3", + "\xED\xD4" => "\xE9\xA1\x88", + "\xED\xD5" => "\xE7\xB8\xB8", + "\xED\xD6" => "\xE7\xB8\xAA", + "\xED\xD7" => "\xE7\xB9\x89", + "\xED\xD8" => "\xE7\xB9\x80", + "\xED\xD9" => "\xE7\xB9\x87", + "\xED\xDA" => "\xE7\xB8\xA9", + "\xED\xDB" => "\xE7\xB9\x8C", + "\xED\xDC" => "\xE7\xB8\xB0", + "\xED\xDD" => "\xE7\xB8\xBB", + "\xED\xDE" => "\xE7\xB8\xB6", + "\xED\xDF" => "\xE7\xB9\x84", + "\xED\xE0" => "\xE7\xB8\xBA", + "\xED\xE1" => "\xE7\xBD\x85", + "\xED\xE2" => "\xE7\xBD\xBF", + "\xED\xE3" => "\xE7\xBD\xBE", + "\xED\xE4" => "\xE7\xBD\xBD", + "\xED\xE5" => "\xE7\xBF\xB4", + "\xED\xE6" => "\xE7\xBF\xB2", + "\xED\xE7" => "\xE8\x80\xAC", + "\xED\xE8" => "\xE8\x86\xBB", + "\xED\xE9" => "\xE8\x87\x84", + "\xED\xEA" => "\xE8\x87\x8C", + "\xED\xEB" => "\xE8\x87\x8A", + "\xED\xEC" => "\xE8\x87\x85", + "\xED\xED" => "\xE8\x87\x87", + "\xED\xEE" => "\xE8\x86\xBC", + "\xED\xEF" => "\xE8\x87\xA9", + "\xED\xF0" => "\xE8\x89\x9B", + "\xED\xF1" => "\xE8\x89\x9A", + "\xED\xF2" => "\xE8\x89\x9C", + "\xED\xF3" => "\xE8\x96\x83", + "\xED\xF4" => "\xE8\x96\x80", + "\xED\xF5" => "\xE8\x96\x8F", + "\xED\xF6" => "\xE8\x96\xA7", + "\xED\xF7" => "\xE8\x96\x95", + "\xED\xF8" => "\xE8\x96\xA0", + "\xED\xF9" => "\xE8\x96\x8B", + "\xED\xFA" => "\xE8\x96\xA3", + "\xED\xFB" => "\xE8\x95\xBB", + "\xED\xFC" => "\xE8\x96\xA4", + "\xED\xFD" => "\xE8\x96\x9A", + "\xED\xFE" => "\xE8\x96\x9E", + "\xEE\x40" => "\xE8\x95\xB7", + "\xEE\x41" => "\xE8\x95\xBC", + "\xEE\x42" => "\xE8\x96\x89", + "\xEE\x43" => "\xE8\x96\xA1", + "\xEE\x44" => "\xE8\x95\xBA", + "\xEE\x45" => "\xE8\x95\xB8", + "\xEE\x46" => "\xE8\x95\x97", + "\xEE\x47" => "\xE8\x96\x8E", + "\xEE\x48" => "\xE8\x96\x96", + "\xEE\x49" => "\xE8\x96\x86", + "\xEE\x4A" => "\xE8\x96\x8D", + "\xEE\x4B" => "\xE8\x96\x99", + "\xEE\x4C" => "\xE8\x96\x9D", + "\xEE\x4D" => "\xE8\x96\x81", + "\xEE\x4E" => "\xE8\x96\xA2", + "\xEE\x4F" => "\xE8\x96\x82", + "\xEE\x50" => "\xE8\x96\x88", + "\xEE\x51" => "\xE8\x96\x85", + "\xEE\x52" => "\xE8\x95\xB9", + "\xEE\x53" => "\xE8\x95\xB6", + "\xEE\x54" => "\xE8\x96\x98", + "\xEE\x55" => "\xE8\x96\x90", + "\xEE\x56" => "\xE8\x96\x9F", + "\xEE\x57" => "\xE8\x99\xA8", + "\xEE\x58" => "\xE8\x9E\xBE", + "\xEE\x59" => "\xE8\x9E\xAA", + "\xEE\x5A" => "\xE8\x9E\xAD", + "\xEE\x5B" => "\xE8\x9F\x85", + "\xEE\x5C" => "\xE8\x9E\xB0", + "\xEE\x5D" => "\xE8\x9E\xAC", + "\xEE\x5E" => "\xE8\x9E\xB9", + "\xEE\x5F" => "\xE8\x9E\xB5", + "\xEE\x60" => "\xE8\x9E\xBC", + "\xEE\x61" => "\xE8\x9E\xAE", + "\xEE\x62" => "\xE8\x9F\x89", + "\xEE\x63" => "\xE8\x9F\x83", + "\xEE\x64" => "\xE8\x9F\x82", + "\xEE\x65" => "\xE8\x9F\x8C", + "\xEE\x66" => "\xE8\x9E\xB7", + "\xEE\x67" => "\xE8\x9E\xAF", + "\xEE\x68" => "\xE8\x9F\x84", + "\xEE\x69" => "\xE8\x9F\x8A", + "\xEE\x6A" => "\xE8\x9E\xB4", + "\xEE\x6B" => "\xE8\x9E\xB6", + "\xEE\x6C" => "\xE8\x9E\xBF", + "\xEE\x6D" => "\xE8\x9E\xB8", + "\xEE\x6E" => "\xE8\x9E\xBD", + "\xEE\x6F" => "\xE8\x9F\x9E", + "\xEE\x70" => "\xE8\x9E\xB2", + "\xEE\x71" => "\xE8\xA4\xB5", + "\xEE\x72" => "\xE8\xA4\xB3", + "\xEE\x73" => "\xE8\xA4\xBC", + "\xEE\x74" => "\xE8\xA4\xBE", + "\xEE\x75" => "\xE8\xA5\x81", + "\xEE\x76" => "\xE8\xA5\x92", + "\xEE\x77" => "\xE8\xA4\xB7", + "\xEE\x78" => "\xE8\xA5\x82", + "\xEE\x79" => "\xE8\xA6\xAD", + "\xEE\x7A" => "\xE8\xA6\xAF", + "\xEE\x7B" => "\xE8\xA6\xAE", + "\xEE\x7C" => "\xE8\xA7\xB2", + "\xEE\x7D" => "\xE8\xA7\xB3", + "\xEE\x7E" => "\xE8\xAC\x9E", + "\xEE\xA1" => "\xE8\xAC\x98", + "\xEE\xA2" => "\xE8\xAC\x96", + "\xEE\xA3" => "\xE8\xAC\x91", + "\xEE\xA4" => "\xE8\xAC\x85", + "\xEE\xA5" => "\xE8\xAC\x8B", + "\xEE\xA6" => "\xE8\xAC\xA2", + "\xEE\xA7" => "\xE8\xAC\x8F", + "\xEE\xA8" => "\xE8\xAC\x92", + "\xEE\xA9" => "\xE8\xAC\x95", + "\xEE\xAA" => "\xE8\xAC\x87", + "\xEE\xAB" => "\xE8\xAC\x8D", + "\xEE\xAC" => "\xE8\xAC\x88", + "\xEE\xAD" => "\xE8\xAC\x86", + "\xEE\xAE" => "\xE8\xAC\x9C", + "\xEE\xAF" => "\xE8\xAC\x93", + "\xEE\xB0" => "\xE8\xAC\x9A", + "\xEE\xB1" => "\xE8\xB1\x8F", + "\xEE\xB2" => "\xE8\xB1\xB0", + "\xEE\xB3" => "\xE8\xB1\xB2", + "\xEE\xB4" => "\xE8\xB1\xB1", + "\xEE\xB5" => "\xE8\xB1\xAF", + "\xEE\xB6" => "\xE8\xB2\x95", + "\xEE\xB7" => "\xE8\xB2\x94", + "\xEE\xB8" => "\xE8\xB3\xB9", + "\xEE\xB9" => "\xE8\xB5\xAF", + "\xEE\xBA" => "\xE8\xB9\x8E", + "\xEE\xBB" => "\xE8\xB9\x8D", + "\xEE\xBC" => "\xE8\xB9\x93", + "\xEE\xBD" => "\xE8\xB9\x90", + "\xEE\xBE" => "\xE8\xB9\x8C", + "\xEE\xBF" => "\xE8\xB9\x87", + "\xEE\xC0" => "\xE8\xBD\x83", + "\xEE\xC1" => "\xE8\xBD\x80", + "\xEE\xC2" => "\xE9\x82\x85", + "\xEE\xC3" => "\xE9\x81\xBE", + "\xEE\xC4" => "\xE9\x84\xB8", + "\xEE\xC5" => "\xE9\x86\x9A", + "\xEE\xC6" => "\xE9\x86\xA2", + "\xEE\xC7" => "\xE9\x86\x9B", + "\xEE\xC8" => "\xE9\x86\x99", + "\xEE\xC9" => "\xE9\x86\x9F", + "\xEE\xCA" => "\xE9\x86\xA1", + "\xEE\xCB" => "\xE9\x86\x9D", + "\xEE\xCC" => "\xE9\x86\xA0", + "\xEE\xCD" => "\xE9\x8E\xA1", + "\xEE\xCE" => "\xE9\x8E\x83", + "\xEE\xCF" => "\xE9\x8E\xAF", + "\xEE\xD0" => "\xE9\x8D\xA4", + "\xEE\xD1" => "\xE9\x8D\x96", + "\xEE\xD2" => "\xE9\x8D\x87", + "\xEE\xD3" => "\xE9\x8D\xBC", + "\xEE\xD4" => "\xE9\x8D\x98", + "\xEE\xD5" => "\xE9\x8D\x9C", + "\xEE\xD6" => "\xE9\x8D\xB6", + "\xEE\xD7" => "\xE9\x8D\x89", + "\xEE\xD8" => "\xE9\x8D\x90", + "\xEE\xD9" => "\xE9\x8D\x91", + "\xEE\xDA" => "\xE9\x8D\xA0", + "\xEE\xDB" => "\xE9\x8D\xAD", + "\xEE\xDC" => "\xE9\x8E\x8F", + "\xEE\xDD" => "\xE9\x8D\x8C", + "\xEE\xDE" => "\xE9\x8D\xAA", + "\xEE\xDF" => "\xE9\x8D\xB9", + "\xEE\xE0" => "\xE9\x8D\x97", + "\xEE\xE1" => "\xE9\x8D\x95", + "\xEE\xE2" => "\xE9\x8D\x92", + "\xEE\xE3" => "\xE9\x8D\x8F", + "\xEE\xE4" => "\xE9\x8D\xB1", + "\xEE\xE5" => "\xE9\x8D\xB7", + "\xEE\xE6" => "\xE9\x8D\xBB", + "\xEE\xE7" => "\xE9\x8D\xA1", + "\xEE\xE8" => "\xE9\x8D\x9E", + "\xEE\xE9" => "\xE9\x8D\xA3", + "\xEE\xEA" => "\xE9\x8D\xA7", + "\xEE\xEB" => "\xE9\x8E\x80", + "\xEE\xEC" => "\xE9\x8D\x8E", + "\xEE\xED" => "\xE9\x8D\x99", + "\xEE\xEE" => "\xE9\x97\x87", + "\xEE\xEF" => "\xE9\x97\x80", + "\xEE\xF0" => "\xE9\x97\x89", + "\xEE\xF1" => "\xE9\x97\x83", + "\xEE\xF2" => "\xE9\x97\x85", + "\xEE\xF3" => "\xE9\x96\xB7", + "\xEE\xF4" => "\xE9\x9A\xAE", + "\xEE\xF5" => "\xE9\x9A\xB0", + "\xEE\xF6" => "\xE9\x9A\xAC", + "\xEE\xF7" => "\xE9\x9C\xA0", + "\xEE\xF8" => "\xE9\x9C\x9F", + "\xEE\xF9" => "\xE9\x9C\x98", + "\xEE\xFA" => "\xE9\x9C\x9D", + "\xEE\xFB" => "\xE9\x9C\x99", + "\xEE\xFC" => "\xE9\x9E\x9A", + "\xEE\xFD" => "\xE9\x9E\xA1", + "\xEE\xFE" => "\xE9\x9E\x9C", + "\xEF\x40" => "\xE9\x9E\x9E", + "\xEF\x41" => "\xE9\x9E\x9D", + "\xEF\x42" => "\xE9\x9F\x95", + "\xEF\x43" => "\xE9\x9F\x94", + "\xEF\x44" => "\xE9\x9F\xB1", + "\xEF\x45" => "\xE9\xA1\x81", + "\xEF\x46" => "\xE9\xA1\x84", + "\xEF\x47" => "\xE9\xA1\x8A", + "\xEF\x48" => "\xE9\xA1\x89", + "\xEF\x49" => "\xE9\xA1\x85", + "\xEF\x4A" => "\xE9\xA1\x83", + "\xEF\x4B" => "\xE9\xA4\xA5", + "\xEF\x4C" => "\xE9\xA4\xAB", + "\xEF\x4D" => "\xE9\xA4\xAC", + "\xEF\x4E" => "\xE9\xA4\xAA", + "\xEF\x4F" => "\xE9\xA4\xB3", + "\xEF\x50" => "\xE9\xA4\xB2", + "\xEF\x51" => "\xE9\xA4\xAF", + "\xEF\x52" => "\xE9\xA4\xAD", + "\xEF\x53" => "\xE9\xA4\xB1", + "\xEF\x54" => "\xE9\xA4\xB0", + "\xEF\x55" => "\xE9\xA6\x98", + "\xEF\x56" => "\xE9\xA6\xA3", + "\xEF\x57" => "\xE9\xA6\xA1", + "\xEF\x58" => "\xE9\xA8\x82", + "\xEF\x59" => "\xE9\xA7\xBA", + "\xEF\x5A" => "\xE9\xA7\xB4", + "\xEF\x5B" => "\xE9\xA7\xB7", + "\xEF\x5C" => "\xE9\xA7\xB9", + "\xEF\x5D" => "\xE9\xA7\xB8", + "\xEF\x5E" => "\xE9\xA7\xB6", + "\xEF\x5F" => "\xE9\xA7\xBB", + "\xEF\x60" => "\xE9\xA7\xBD", + "\xEF\x61" => "\xE9\xA7\xBE", + "\xEF\x62" => "\xE9\xA7\xBC", + "\xEF\x63" => "\xE9\xA8\x83", + "\xEF\x64" => "\xE9\xAA\xBE", + "\xEF\x65" => "\xE9\xAB\xBE", + "\xEF\x66" => "\xE9\xAB\xBD", + "\xEF\x67" => "\xE9\xAC\x81", + "\xEF\x68" => "\xE9\xAB\xBC", + "\xEF\x69" => "\xE9\xAD\x88", + "\xEF\x6A" => "\xE9\xAE\x9A", + "\xEF\x6B" => "\xE9\xAE\xA8", + "\xEF\x6C" => "\xE9\xAE\x9E", + "\xEF\x6D" => "\xE9\xAE\x9B", + "\xEF\x6E" => "\xE9\xAE\xA6", + "\xEF\x6F" => "\xE9\xAE\xA1", + "\xEF\x70" => "\xE9\xAE\xA5", + "\xEF\x71" => "\xE9\xAE\xA4", + "\xEF\x72" => "\xE9\xAE\x86", + "\xEF\x73" => "\xE9\xAE\xA2", + "\xEF\x74" => "\xE9\xAE\xA0", + "\xEF\x75" => "\xE9\xAE\xAF", + "\xEF\x76" => "\xE9\xB4\xB3", + "\xEF\x77" => "\xE9\xB5\x81", + "\xEF\x78" => "\xE9\xB5\xA7", + "\xEF\x79" => "\xE9\xB4\xB6", + "\xEF\x7A" => "\xE9\xB4\xAE", + "\xEF\x7B" => "\xE9\xB4\xAF", + "\xEF\x7C" => "\xE9\xB4\xB1", + "\xEF\x7D" => "\xE9\xB4\xB8", + "\xEF\x7E" => "\xE9\xB4\xB0", + "\xEF\xA1" => "\xE9\xB5\x85", + "\xEF\xA2" => "\xE9\xB5\x82", + "\xEF\xA3" => "\xE9\xB5\x83", + "\xEF\xA4" => "\xE9\xB4\xBE", + "\xEF\xA5" => "\xE9\xB4\xB7", + "\xEF\xA6" => "\xE9\xB5\x80", + "\xEF\xA7" => "\xE9\xB4\xBD", + "\xEF\xA8" => "\xE7\xBF\xB5", + "\xEF\xA9" => "\xE9\xB4\xAD", + "\xEF\xAA" => "\xE9\xBA\x8A", + "\xEF\xAB" => "\xE9\xBA\x89", + "\xEF\xAC" => "\xE9\xBA\x8D", + "\xEF\xAD" => "\xE9\xBA\xB0", + "\xEF\xAE" => "\xE9\xBB\x88", + "\xEF\xAF" => "\xE9\xBB\x9A", + "\xEF\xB0" => "\xE9\xBB\xBB", + "\xEF\xB1" => "\xE9\xBB\xBF", + "\xEF\xB2" => "\xE9\xBC\xA4", + "\xEF\xB3" => "\xE9\xBC\xA3", + "\xEF\xB4" => "\xE9\xBC\xA2", + "\xEF\xB5" => "\xE9\xBD\x94", + "\xEF\xB6" => "\xE9\xBE\xA0", + "\xEF\xB7" => "\xE5\x84\xB1", + "\xEF\xB8" => "\xE5\x84\xAD", + "\xEF\xB9" => "\xE5\x84\xAE", + "\xEF\xBA" => "\xE5\x9A\x98", + "\xEF\xBB" => "\xE5\x9A\x9C", + "\xEF\xBC" => "\xE5\x9A\x97", + "\xEF\xBD" => "\xE5\x9A\x9A", + "\xEF\xBE" => "\xE5\x9A\x9D", + "\xEF\xBF" => "\xE5\x9A\x99", + "\xEF\xC0" => "\xE5\xA5\xB0", + "\xEF\xC1" => "\xE5\xAC\xBC", + "\xEF\xC2" => "\xE5\xB1\xA9", + "\xEF\xC3" => "\xE5\xB1\xAA", + "\xEF\xC4" => "\xE5\xB7\x80", + "\xEF\xC5" => "\xE5\xB9\xAD", + "\xEF\xC6" => "\xE5\xB9\xAE", + "\xEF\xC7" => "\xE6\x87\x98", + "\xEF\xC8" => "\xE6\x87\x9F", + "\xEF\xC9" => "\xE6\x87\xAD", + "\xEF\xCA" => "\xE6\x87\xAE", + "\xEF\xCB" => "\xE6\x87\xB1", + "\xEF\xCC" => "\xE6\x87\xAA", + "\xEF\xCD" => "\xE6\x87\xB0", + "\xEF\xCE" => "\xE6\x87\xAB", + "\xEF\xCF" => "\xE6\x87\x96", + "\xEF\xD0" => "\xE6\x87\xA9", + "\xEF\xD1" => "\xE6\x93\xBF", + "\xEF\xD2" => "\xE6\x94\x84", + "\xEF\xD3" => "\xE6\x93\xBD", + "\xEF\xD4" => "\xE6\x93\xB8", + "\xEF\xD5" => "\xE6\x94\x81", + "\xEF\xD6" => "\xE6\x94\x83", + "\xEF\xD7" => "\xE6\x93\xBC", + "\xEF\xD8" => "\xE6\x96\x94", + "\xEF\xD9" => "\xE6\x97\x9B", + "\xEF\xDA" => "\xE6\x9B\x9A", + "\xEF\xDB" => "\xE6\x9B\x9B", + "\xEF\xDC" => "\xE6\x9B\x98", + "\xEF\xDD" => "\xE6\xAB\x85", + "\xEF\xDE" => "\xE6\xAA\xB9", + "\xEF\xDF" => "\xE6\xAA\xBD", + "\xEF\xE0" => "\xE6\xAB\xA1", + "\xEF\xE1" => "\xE6\xAB\x86", + "\xEF\xE2" => "\xE6\xAA\xBA", + "\xEF\xE3" => "\xE6\xAA\xB6", + "\xEF\xE4" => "\xE6\xAA\xB7", + "\xEF\xE5" => "\xE6\xAB\x87", + "\xEF\xE6" => "\xE6\xAA\xB4", + "\xEF\xE7" => "\xE6\xAA\xAD", + "\xEF\xE8" => "\xE6\xAD\x9E", + "\xEF\xE9" => "\xE6\xAF\x89", + "\xEF\xEA" => "\xE6\xB0\x8B", + "\xEF\xEB" => "\xE7\x80\x87", + "\xEF\xEC" => "\xE7\x80\x8C", + "\xEF\xED" => "\xE7\x80\x8D", + "\xEF\xEE" => "\xE7\x80\x81", + "\xEF\xEF" => "\xE7\x80\x85", + "\xEF\xF0" => "\xE7\x80\x94", + "\xEF\xF1" => "\xE7\x80\x8E", + "\xEF\xF2" => "\xE6\xBF\xBF", + "\xEF\xF3" => "\xE7\x80\x80", + "\xEF\xF4" => "\xE6\xBF\xBB", + "\xEF\xF5" => "\xE7\x80\xA6", + "\xEF\xF6" => "\xE6\xBF\xBC", + "\xEF\xF7" => "\xE6\xBF\xB7", + "\xEF\xF8" => "\xE7\x80\x8A", + "\xEF\xF9" => "\xE7\x88\x81", + "\xEF\xFA" => "\xE7\x87\xBF", + "\xEF\xFB" => "\xE7\x87\xB9", + "\xEF\xFC" => "\xE7\x88\x83", + "\xEF\xFD" => "\xE7\x87\xBD", + "\xEF\xFE" => "\xE7\x8D\xB6", + "\xF0\x40" => "\xE7\x92\xB8", + "\xF0\x41" => "\xE7\x93\x80", + "\xF0\x42" => "\xE7\x92\xB5", + "\xF0\x43" => "\xE7\x93\x81", + "\xF0\x44" => "\xE7\x92\xBE", + "\xF0\x45" => "\xE7\x92\xB6", + "\xF0\x46" => "\xE7\x92\xBB", + "\xF0\x47" => "\xE7\x93\x82", + "\xF0\x48" => "\xE7\x94\x94", + "\xF0\x49" => "\xE7\x94\x93", + "\xF0\x4A" => "\xE7\x99\x9C", + "\xF0\x4B" => "\xE7\x99\xA4", + "\xF0\x4C" => "\xE7\x99\x99", + "\xF0\x4D" => "\xE7\x99\x90", + "\xF0\x4E" => "\xE7\x99\x93", + "\xF0\x4F" => "\xE7\x99\x97", + "\xF0\x50" => "\xE7\x99\x9A", + "\xF0\x51" => "\xE7\x9A\xA6", + "\xF0\x52" => "\xE7\x9A\xBD", + "\xF0\x53" => "\xE7\x9B\xAC", + "\xF0\x54" => "\xE7\x9F\x82", + "\xF0\x55" => "\xE7\x9E\xBA", + "\xF0\x56" => "\xE7\xA3\xBF", + "\xF0\x57" => "\xE7\xA4\x8C", + "\xF0\x58" => "\xE7\xA4\x93", + "\xF0\x59" => "\xE7\xA4\x94", + "\xF0\x5A" => "\xE7\xA4\x89", + "\xF0\x5B" => "\xE7\xA4\x90", + "\xF0\x5C" => "\xE7\xA4\x92", + "\xF0\x5D" => "\xE7\xA4\x91", + "\xF0\x5E" => "\xE7\xA6\xAD", + "\xF0\x5F" => "\xE7\xA6\xAC", + "\xF0\x60" => "\xE7\xA9\x9F", + "\xF0\x61" => "\xE7\xB0\x9C", + "\xF0\x62" => "\xE7\xB0\xA9", + "\xF0\x63" => "\xE7\xB0\x99", + "\xF0\x64" => "\xE7\xB0\xA0", + "\xF0\x65" => "\xE7\xB0\x9F", + "\xF0\x66" => "\xE7\xB0\xAD", + "\xF0\x67" => "\xE7\xB0\x9D", + "\xF0\x68" => "\xE7\xB0\xA6", + "\xF0\x69" => "\xE7\xB0\xA8", + "\xF0\x6A" => "\xE7\xB0\xA2", + "\xF0\x6B" => "\xE7\xB0\xA5", + "\xF0\x6C" => "\xE7\xB0\xB0", + "\xF0\x6D" => "\xE7\xB9\x9C", + "\xF0\x6E" => "\xE7\xB9\x90", + "\xF0\x6F" => "\xE7\xB9\x96", + "\xF0\x70" => "\xE7\xB9\xA3", + "\xF0\x71" => "\xE7\xB9\x98", + "\xF0\x72" => "\xE7\xB9\xA2", + "\xF0\x73" => "\xE7\xB9\x9F", + "\xF0\x74" => "\xE7\xB9\x91", + "\xF0\x75" => "\xE7\xB9\xA0", + "\xF0\x76" => "\xE7\xB9\x97", + "\xF0\x77" => "\xE7\xB9\x93", + "\xF0\x78" => "\xE7\xBE\xB5", + "\xF0\x79" => "\xE7\xBE\xB3", + "\xF0\x7A" => "\xE7\xBF\xB7", + "\xF0\x7B" => "\xE7\xBF\xB8", + "\xF0\x7C" => "\xE8\x81\xB5", + "\xF0\x7D" => "\xE8\x87\x91", + "\xF0\x7E" => "\xE8\x87\x92", + "\xF0\xA1" => "\xE8\x87\x90", + "\xF0\xA2" => "\xE8\x89\x9F", + "\xF0\xA3" => "\xE8\x89\x9E", + "\xF0\xA4" => "\xE8\x96\xB4", + "\xF0\xA5" => "\xE8\x97\x86", + "\xF0\xA6" => "\xE8\x97\x80", + "\xF0\xA7" => "\xE8\x97\x83", + "\xF0\xA8" => "\xE8\x97\x82", + "\xF0\xA9" => "\xE8\x96\xB3", + "\xF0\xAA" => "\xE8\x96\xB5", + "\xF0\xAB" => "\xE8\x96\xBD", + "\xF0\xAC" => "\xE8\x97\x87", + "\xF0\xAD" => "\xE8\x97\x84", + "\xF0\xAE" => "\xE8\x96\xBF", + "\xF0\xAF" => "\xE8\x97\x8B", + "\xF0\xB0" => "\xE8\x97\x8E", + "\xF0\xB1" => "\xE8\x97\x88", + "\xF0\xB2" => "\xE8\x97\x85", + "\xF0\xB3" => "\xE8\x96\xB1", + "\xF0\xB4" => "\xE8\x96\xB6", + "\xF0\xB5" => "\xE8\x97\x92", + "\xF0\xB6" => "\xE8\x98\xA4", + "\xF0\xB7" => "\xE8\x96\xB8", + "\xF0\xB8" => "\xE8\x96\xB7", + "\xF0\xB9" => "\xE8\x96\xBE", + "\xF0\xBA" => "\xE8\x99\xA9", + "\xF0\xBB" => "\xE8\x9F\xA7", + "\xF0\xBC" => "\xE8\x9F\xA6", + "\xF0\xBD" => "\xE8\x9F\xA2", + "\xF0\xBE" => "\xE8\x9F\x9B", + "\xF0\xBF" => "\xE8\x9F\xAB", + "\xF0\xC0" => "\xE8\x9F\xAA", + "\xF0\xC1" => "\xE8\x9F\xA5", + "\xF0\xC2" => "\xE8\x9F\x9F", + "\xF0\xC3" => "\xE8\x9F\xB3", + "\xF0\xC4" => "\xE8\x9F\xA4", + "\xF0\xC5" => "\xE8\x9F\x94", + "\xF0\xC6" => "\xE8\x9F\x9C", + "\xF0\xC7" => "\xE8\x9F\x93", + "\xF0\xC8" => "\xE8\x9F\xAD", + "\xF0\xC9" => "\xE8\x9F\x98", + "\xF0\xCA" => "\xE8\x9F\xA3", + "\xF0\xCB" => "\xE8\x9E\xA4", + "\xF0\xCC" => "\xE8\x9F\x97", + "\xF0\xCD" => "\xE8\x9F\x99", + "\xF0\xCE" => "\xE8\xA0\x81", + "\xF0\xCF" => "\xE8\x9F\xB4", + "\xF0\xD0" => "\xE8\x9F\xA8", + "\xF0\xD1" => "\xE8\x9F\x9D", + "\xF0\xD2" => "\xE8\xA5\x93", + "\xF0\xD3" => "\xE8\xA5\x8B", + "\xF0\xD4" => "\xE8\xA5\x8F", + "\xF0\xD5" => "\xE8\xA5\x8C", + "\xF0\xD6" => "\xE8\xA5\x86", + "\xF0\xD7" => "\xE8\xA5\x90", + "\xF0\xD8" => "\xE8\xA5\x91", + "\xF0\xD9" => "\xE8\xA5\x89", + "\xF0\xDA" => "\xE8\xAC\xAA", + "\xF0\xDB" => "\xE8\xAC\xA7", + "\xF0\xDC" => "\xE8\xAC\xA3", + "\xF0\xDD" => "\xE8\xAC\xB3", + "\xF0\xDE" => "\xE8\xAC\xB0", + "\xF0\xDF" => "\xE8\xAC\xB5", + "\xF0\xE0" => "\xE8\xAD\x87", + "\xF0\xE1" => "\xE8\xAC\xAF", + "\xF0\xE2" => "\xE8\xAC\xBC", + "\xF0\xE3" => "\xE8\xAC\xBE", + "\xF0\xE4" => "\xE8\xAC\xB1", + "\xF0\xE5" => "\xE8\xAC\xA5", + "\xF0\xE6" => "\xE8\xAC\xB7", + "\xF0\xE7" => "\xE8\xAC\xA6", + "\xF0\xE8" => "\xE8\xAC\xB6", + "\xF0\xE9" => "\xE8\xAC\xAE", + "\xF0\xEA" => "\xE8\xAC\xA4", + "\xF0\xEB" => "\xE8\xAC\xBB", + "\xF0\xEC" => "\xE8\xAC\xBD", + "\xF0\xED" => "\xE8\xAC\xBA", + "\xF0\xEE" => "\xE8\xB1\x82", + "\xF0\xEF" => "\xE8\xB1\xB5", + "\xF0\xF0" => "\xE8\xB2\x99", + "\xF0\xF1" => "\xE8\xB2\x98", + "\xF0\xF2" => "\xE8\xB2\x97", + "\xF0\xF3" => "\xE8\xB3\xBE", + "\xF0\xF4" => "\xE8\xB4\x84", + "\xF0\xF5" => "\xE8\xB4\x82", + "\xF0\xF6" => "\xE8\xB4\x80", + "\xF0\xF7" => "\xE8\xB9\x9C", + "\xF0\xF8" => "\xE8\xB9\xA2", + "\xF0\xF9" => "\xE8\xB9\xA0", + "\xF0\xFA" => "\xE8\xB9\x97", + "\xF0\xFB" => "\xE8\xB9\x96", + "\xF0\xFC" => "\xE8\xB9\x9E", + "\xF0\xFD" => "\xE8\xB9\xA5", + "\xF0\xFE" => "\xE8\xB9\xA7", + "\xF1\x40" => "\xE8\xB9\x9B", + "\xF1\x41" => "\xE8\xB9\x9A", + "\xF1\x42" => "\xE8\xB9\xA1", + "\xF1\x43" => "\xE8\xB9\x9D", + "\xF1\x44" => "\xE8\xB9\xA9", + "\xF1\x45" => "\xE8\xB9\x94", + "\xF1\x46" => "\xE8\xBD\x86", + "\xF1\x47" => "\xE8\xBD\x87", + "\xF1\x48" => "\xE8\xBD\x88", + "\xF1\x49" => "\xE8\xBD\x8B", + "\xF1\x4A" => "\xE9\x84\xA8", + "\xF1\x4B" => "\xE9\x84\xBA", + "\xF1\x4C" => "\xE9\x84\xBB", + "\xF1\x4D" => "\xE9\x84\xBE", + "\xF1\x4E" => "\xE9\x86\xA8", + "\xF1\x4F" => "\xE9\x86\xA5", + "\xF1\x50" => "\xE9\x86\xA7", + "\xF1\x51" => "\xE9\x86\xAF", + "\xF1\x52" => "\xE9\x86\xAA", + "\xF1\x53" => "\xE9\x8E\xB5", + "\xF1\x54" => "\xE9\x8E\x8C", + "\xF1\x55" => "\xE9\x8E\x92", + "\xF1\x56" => "\xE9\x8E\xB7", + "\xF1\x57" => "\xE9\x8E\x9B", + "\xF1\x58" => "\xE9\x8E\x9D", + "\xF1\x59" => "\xE9\x8E\x89", + "\xF1\x5A" => "\xE9\x8E\xA7", + "\xF1\x5B" => "\xE9\x8E\x8E", + "\xF1\x5C" => "\xE9\x8E\xAA", + "\xF1\x5D" => "\xE9\x8E\x9E", + "\xF1\x5E" => "\xE9\x8E\xA6", + "\xF1\x5F" => "\xE9\x8E\x95", + "\xF1\x60" => "\xE9\x8E\x88", + "\xF1\x61" => "\xE9\x8E\x99", + "\xF1\x62" => "\xE9\x8E\x9F", + "\xF1\x63" => "\xE9\x8E\x8D", + "\xF1\x64" => "\xE9\x8E\xB1", + "\xF1\x65" => "\xE9\x8E\x91", + "\xF1\x66" => "\xE9\x8E\xB2", + "\xF1\x67" => "\xE9\x8E\xA4", + "\xF1\x68" => "\xE9\x8E\xA8", + "\xF1\x69" => "\xE9\x8E\xB4", + "\xF1\x6A" => "\xE9\x8E\xA3", + "\xF1\x6B" => "\xE9\x8E\xA5", + "\xF1\x6C" => "\xE9\x97\x92", + "\xF1\x6D" => "\xE9\x97\x93", + "\xF1\x6E" => "\xE9\x97\x91", + "\xF1\x6F" => "\xE9\x9A\xB3", + "\xF1\x70" => "\xE9\x9B\x97", + "\xF1\x71" => "\xE9\x9B\x9A", + "\xF1\x72" => "\xE5\xB7\x82", + "\xF1\x73" => "\xE9\x9B\x9F", + "\xF1\x74" => "\xE9\x9B\x98", + "\xF1\x75" => "\xE9\x9B\x9D", + "\xF1\x76" => "\xE9\x9C\xA3", + "\xF1\x77" => "\xE9\x9C\xA2", + "\xF1\x78" => "\xE9\x9C\xA5", + "\xF1\x79" => "\xE9\x9E\xAC", + "\xF1\x7A" => "\xE9\x9E\xAE", + "\xF1\x7B" => "\xE9\x9E\xA8", + "\xF1\x7C" => "\xE9\x9E\xAB", + "\xF1\x7D" => "\xE9\x9E\xA4", + "\xF1\x7E" => "\xE9\x9E\xAA", + "\xF1\xA1" => "\xE9\x9E\xA2", + "\xF1\xA2" => "\xE9\x9E\xA5", + "\xF1\xA3" => "\xE9\x9F\x97", + "\xF1\xA4" => "\xE9\x9F\x99", + "\xF1\xA5" => "\xE9\x9F\x96", + "\xF1\xA6" => "\xE9\x9F\x98", + "\xF1\xA7" => "\xE9\x9F\xBA", + "\xF1\xA8" => "\xE9\xA1\x90", + "\xF1\xA9" => "\xE9\xA1\x91", + "\xF1\xAA" => "\xE9\xA1\x92", + "\xF1\xAB" => "\xE9\xA2\xB8", + "\xF1\xAC" => "\xE9\xA5\x81", + "\xF1\xAD" => "\xE9\xA4\xBC", + "\xF1\xAE" => "\xE9\xA4\xBA", + "\xF1\xAF" => "\xE9\xA8\x8F", + "\xF1\xB0" => "\xE9\xA8\x8B", + "\xF1\xB1" => "\xE9\xA8\x89", + "\xF1\xB2" => "\xE9\xA8\x8D", + "\xF1\xB3" => "\xE9\xA8\x84", + "\xF1\xB4" => "\xE9\xA8\x91", + "\xF1\xB5" => "\xE9\xA8\x8A", + "\xF1\xB6" => "\xE9\xA8\x85", + "\xF1\xB7" => "\xE9\xA8\x87", + "\xF1\xB8" => "\xE9\xA8\x86", + "\xF1\xB9" => "\xE9\xAB\x80", + "\xF1\xBA" => "\xE9\xAB\x9C", + "\xF1\xBB" => "\xE9\xAC\x88", + "\xF1\xBC" => "\xE9\xAC\x84", + "\xF1\xBD" => "\xE9\xAC\x85", + "\xF1\xBE" => "\xE9\xAC\xA9", + "\xF1\xBF" => "\xE9\xAC\xB5", + "\xF1\xC0" => "\xE9\xAD\x8A", + "\xF1\xC1" => "\xE9\xAD\x8C", + "\xF1\xC2" => "\xE9\xAD\x8B", + "\xF1\xC3" => "\xE9\xAF\x87", + "\xF1\xC4" => "\xE9\xAF\x86", + "\xF1\xC5" => "\xE9\xAF\x83", + "\xF1\xC6" => "\xE9\xAE\xBF", + "\xF1\xC7" => "\xE9\xAF\x81", + "\xF1\xC8" => "\xE9\xAE\xB5", + "\xF1\xC9" => "\xE9\xAE\xB8", + "\xF1\xCA" => "\xE9\xAF\x93", + "\xF1\xCB" => "\xE9\xAE\xB6", + "\xF1\xCC" => "\xE9\xAF\x84", + "\xF1\xCD" => "\xE9\xAE\xB9", + "\xF1\xCE" => "\xE9\xAE\xBD", + "\xF1\xCF" => "\xE9\xB5\x9C", + "\xF1\xD0" => "\xE9\xB5\x93", + "\xF1\xD1" => "\xE9\xB5\x8F", + "\xF1\xD2" => "\xE9\xB5\x8A", + "\xF1\xD3" => "\xE9\xB5\x9B", + "\xF1\xD4" => "\xE9\xB5\x8B", + "\xF1\xD5" => "\xE9\xB5\x99", + "\xF1\xD6" => "\xE9\xB5\x96", + "\xF1\xD7" => "\xE9\xB5\x8C", + "\xF1\xD8" => "\xE9\xB5\x97", + "\xF1\xD9" => "\xE9\xB5\x92", + "\xF1\xDA" => "\xE9\xB5\x94", + "\xF1\xDB" => "\xE9\xB5\x9F", + "\xF1\xDC" => "\xE9\xB5\x98", + "\xF1\xDD" => "\xE9\xB5\x9A", + "\xF1\xDE" => "\xE9\xBA\x8E", + "\xF1\xDF" => "\xE9\xBA\x8C", + "\xF1\xE0" => "\xE9\xBB\x9F", + "\xF1\xE1" => "\xE9\xBC\x81", + "\xF1\xE2" => "\xE9\xBC\x80", + "\xF1\xE3" => "\xE9\xBC\x96", + "\xF1\xE4" => "\xE9\xBC\xA5", + "\xF1\xE5" => "\xE9\xBC\xAB", + "\xF1\xE6" => "\xE9\xBC\xAA", + "\xF1\xE7" => "\xE9\xBC\xA9", + "\xF1\xE8" => "\xE9\xBC\xA8", + "\xF1\xE9" => "\xE9\xBD\x8C", + "\xF1\xEA" => "\xE9\xBD\x95", + "\xF1\xEB" => "\xE5\x84\xB4", + "\xF1\xEC" => "\xE5\x84\xB5", + "\xF1\xED" => "\xE5\x8A\x96", + "\xF1\xEE" => "\xE5\x8B\xB7", + "\xF1\xEF" => "\xE5\x8E\xB4", + "\xF1\xF0" => "\xE5\x9A\xAB", + "\xF1\xF1" => "\xE5\x9A\xAD", + "\xF1\xF2" => "\xE5\x9A\xA6", + "\xF1\xF3" => "\xE5\x9A\xA7", + "\xF1\xF4" => "\xE5\x9A\xAA", + "\xF1\xF5" => "\xE5\x9A\xAC", + "\xF1\xF6" => "\xE5\xA3\x9A", + "\xF1\xF7" => "\xE5\xA3\x9D", + "\xF1\xF8" => "\xE5\xA3\x9B", + "\xF1\xF9" => "\xE5\xA4\x92", + "\xF1\xFA" => "\xE5\xAC\xBD", + "\xF1\xFB" => "\xE5\xAC\xBE", + "\xF1\xFC" => "\xE5\xAC\xBF", + "\xF1\xFD" => "\xE5\xB7\x83", + "\xF1\xFE" => "\xE5\xB9\xB0", + "\xF2\x40" => "\xE5\xBE\xBF", + "\xF2\x41" => "\xE6\x87\xBB", + "\xF2\x42" => "\xE6\x94\x87", + "\xF2\x43" => "\xE6\x94\x90", + "\xF2\x44" => "\xE6\x94\x8D", + "\xF2\x45" => "\xE6\x94\x89", + "\xF2\x46" => "\xE6\x94\x8C", + "\xF2\x47" => "\xE6\x94\x8E", + "\xF2\x48" => "\xE6\x96\x84", + "\xF2\x49" => "\xE6\x97\x9E", + "\xF2\x4A" => "\xE6\x97\x9D", + "\xF2\x4B" => "\xE6\x9B\x9E", + "\xF2\x4C" => "\xE6\xAB\xA7", + "\xF2\x4D" => "\xE6\xAB\xA0", + "\xF2\x4E" => "\xE6\xAB\x8C", + "\xF2\x4F" => "\xE6\xAB\x91", + "\xF2\x50" => "\xE6\xAB\x99", + "\xF2\x51" => "\xE6\xAB\x8B", + "\xF2\x52" => "\xE6\xAB\x9F", + "\xF2\x53" => "\xE6\xAB\x9C", + "\xF2\x54" => "\xE6\xAB\x90", + "\xF2\x55" => "\xE6\xAB\xAB", + "\xF2\x56" => "\xE6\xAB\x8F", + "\xF2\x57" => "\xE6\xAB\x8D", + "\xF2\x58" => "\xE6\xAB\x9E", + "\xF2\x59" => "\xE6\xAD\xA0", + "\xF2\x5A" => "\xE6\xAE\xB0", + "\xF2\x5B" => "\xE6\xB0\x8C", + "\xF2\x5C" => "\xE7\x80\x99", + "\xF2\x5D" => "\xE7\x80\xA7", + "\xF2\x5E" => "\xE7\x80\xA0", + "\xF2\x5F" => "\xE7\x80\x96", + "\xF2\x60" => "\xE7\x80\xAB", + "\xF2\x61" => "\xE7\x80\xA1", + "\xF2\x62" => "\xE7\x80\xA2", + "\xF2\x63" => "\xE7\x80\xA3", + "\xF2\x64" => "\xE7\x80\xA9", + "\xF2\x65" => "\xE7\x80\x97", + "\xF2\x66" => "\xE7\x80\xA4", + "\xF2\x67" => "\xE7\x80\x9C", + "\xF2\x68" => "\xE7\x80\xAA", + "\xF2\x69" => "\xE7\x88\x8C", + "\xF2\x6A" => "\xE7\x88\x8A", + "\xF2\x6B" => "\xE7\x88\x87", + "\xF2\x6C" => "\xE7\x88\x82", + "\xF2\x6D" => "\xE7\x88\x85", + "\xF2\x6E" => "\xE7\x8A\xA5", + "\xF2\x6F" => "\xE7\x8A\xA6", + "\xF2\x70" => "\xE7\x8A\xA4", + "\xF2\x71" => "\xE7\x8A\xA3", + "\xF2\x72" => "\xE7\x8A\xA1", + "\xF2\x73" => "\xE7\x93\x8B", + "\xF2\x74" => "\xE7\x93\x85", + "\xF2\x75" => "\xE7\x92\xB7", + "\xF2\x76" => "\xE7\x93\x83", + "\xF2\x77" => "\xE7\x94\x96", + "\xF2\x78" => "\xE7\x99\xA0", + "\xF2\x79" => "\xE7\x9F\x89", + "\xF2\x7A" => "\xE7\x9F\x8A", + "\xF2\x7B" => "\xE7\x9F\x84", + "\xF2\x7C" => "\xE7\x9F\xB1", + "\xF2\x7D" => "\xE7\xA4\x9D", + "\xF2\x7E" => "\xE7\xA4\x9B", + "\xF2\xA1" => "\xE7\xA4\xA1", + "\xF2\xA2" => "\xE7\xA4\x9C", + "\xF2\xA3" => "\xE7\xA4\x97", + "\xF2\xA4" => "\xE7\xA4\x9E", + "\xF2\xA5" => "\xE7\xA6\xB0", + "\xF2\xA6" => "\xE7\xA9\xA7", + "\xF2\xA7" => "\xE7\xA9\xA8", + "\xF2\xA8" => "\xE7\xB0\xB3", + "\xF2\xA9" => "\xE7\xB0\xBC", + "\xF2\xAA" => "\xE7\xB0\xB9", + "\xF2\xAB" => "\xE7\xB0\xAC", + "\xF2\xAC" => "\xE7\xB0\xBB", + "\xF2\xAD" => "\xE7\xB3\xAC", + "\xF2\xAE" => "\xE7\xB3\xAA", + "\xF2\xAF" => "\xE7\xB9\xB6", + "\xF2\xB0" => "\xE7\xB9\xB5", + "\xF2\xB1" => "\xE7\xB9\xB8", + "\xF2\xB2" => "\xE7\xB9\xB0", + "\xF2\xB3" => "\xE7\xB9\xB7", + "\xF2\xB4" => "\xE7\xB9\xAF", + "\xF2\xB5" => "\xE7\xB9\xBA", + "\xF2\xB6" => "\xE7\xB9\xB2", + "\xF2\xB7" => "\xE7\xB9\xB4", + "\xF2\xB8" => "\xE7\xB9\xA8", + "\xF2\xB9" => "\xE7\xBD\x8B", + "\xF2\xBA" => "\xE7\xBD\x8A", + "\xF2\xBB" => "\xE7\xBE\x83", + "\xF2\xBC" => "\xE7\xBE\x86", + "\xF2\xBD" => "\xE7\xBE\xB7", + "\xF2\xBE" => "\xE7\xBF\xBD", + "\xF2\xBF" => "\xE7\xBF\xBE", + "\xF2\xC0" => "\xE8\x81\xB8", + "\xF2\xC1" => "\xE8\x87\x97", + "\xF2\xC2" => "\xE8\x87\x95", + "\xF2\xC3" => "\xE8\x89\xA4", + "\xF2\xC4" => "\xE8\x89\xA1", + "\xF2\xC5" => "\xE8\x89\xA3", + "\xF2\xC6" => "\xE8\x97\xAB", + "\xF2\xC7" => "\xE8\x97\xB1", + "\xF2\xC8" => "\xE8\x97\xAD", + "\xF2\xC9" => "\xE8\x97\x99", + "\xF2\xCA" => "\xE8\x97\xA1", + "\xF2\xCB" => "\xE8\x97\xA8", + "\xF2\xCC" => "\xE8\x97\x9A", + "\xF2\xCD" => "\xE8\x97\x97", + "\xF2\xCE" => "\xE8\x97\xAC", + "\xF2\xCF" => "\xE8\x97\xB2", + "\xF2\xD0" => "\xE8\x97\xB8", + "\xF2\xD1" => "\xE8\x97\x98", + "\xF2\xD2" => "\xE8\x97\x9F", + "\xF2\xD3" => "\xE8\x97\xA3", + "\xF2\xD4" => "\xE8\x97\x9C", + "\xF2\xD5" => "\xE8\x97\x91", + "\xF2\xD6" => "\xE8\x97\xB0", + "\xF2\xD7" => "\xE8\x97\xA6", + "\xF2\xD8" => "\xE8\x97\xAF", + "\xF2\xD9" => "\xE8\x97\x9E", + "\xF2\xDA" => "\xE8\x97\xA2", + "\xF2\xDB" => "\xE8\xA0\x80", + "\xF2\xDC" => "\xE8\x9F\xBA", + "\xF2\xDD" => "\xE8\xA0\x83", + "\xF2\xDE" => "\xE8\x9F\xB6", + "\xF2\xDF" => "\xE8\x9F\xB7", + "\xF2\xE0" => "\xE8\xA0\x89", + "\xF2\xE1" => "\xE8\xA0\x8C", + "\xF2\xE2" => "\xE8\xA0\x8B", + "\xF2\xE3" => "\xE8\xA0\x86", + "\xF2\xE4" => "\xE8\x9F\xBC", + "\xF2\xE5" => "\xE8\xA0\x88", + "\xF2\xE6" => "\xE8\x9F\xBF", + "\xF2\xE7" => "\xE8\xA0\x8A", + "\xF2\xE8" => "\xE8\xA0\x82", + "\xF2\xE9" => "\xE8\xA5\xA2", + "\xF2\xEA" => "\xE8\xA5\x9A", + "\xF2\xEB" => "\xE8\xA5\x9B", + "\xF2\xEC" => "\xE8\xA5\x97", + "\xF2\xED" => "\xE8\xA5\xA1", + "\xF2\xEE" => "\xE8\xA5\x9C", + "\xF2\xEF" => "\xE8\xA5\x98", + "\xF2\xF0" => "\xE8\xA5\x9D", + "\xF2\xF1" => "\xE8\xA5\x99", + "\xF2\xF2" => "\xE8\xA6\x88", + "\xF2\xF3" => "\xE8\xA6\xB7", + "\xF2\xF4" => "\xE8\xA6\xB6", + "\xF2\xF5" => "\xE8\xA7\xB6", + "\xF2\xF6" => "\xE8\xAD\x90", + "\xF2\xF7" => "\xE8\xAD\x88", + "\xF2\xF8" => "\xE8\xAD\x8A", + "\xF2\xF9" => "\xE8\xAD\x80", + "\xF2\xFA" => "\xE8\xAD\x93", + "\xF2\xFB" => "\xE8\xAD\x96", + "\xF2\xFC" => "\xE8\xAD\x94", + "\xF2\xFD" => "\xE8\xAD\x8B", + "\xF2\xFE" => "\xE8\xAD\x95", + "\xF3\x40" => "\xE8\xAD\x91", + "\xF3\x41" => "\xE8\xAD\x82", + "\xF3\x42" => "\xE8\xAD\x92", + "\xF3\x43" => "\xE8\xAD\x97", + "\xF3\x44" => "\xE8\xB1\x83", + "\xF3\x45" => "\xE8\xB1\xB7", + "\xF3\x46" => "\xE8\xB1\xB6", + "\xF3\x47" => "\xE8\xB2\x9A", + "\xF3\x48" => "\xE8\xB4\x86", + "\xF3\x49" => "\xE8\xB4\x87", + "\xF3\x4A" => "\xE8\xB4\x89", + "\xF3\x4B" => "\xE8\xB6\xAC", + "\xF3\x4C" => "\xE8\xB6\xAA", + "\xF3\x4D" => "\xE8\xB6\xAD", + "\xF3\x4E" => "\xE8\xB6\xAB", + "\xF3\x4F" => "\xE8\xB9\xAD", + "\xF3\x50" => "\xE8\xB9\xB8", + "\xF3\x51" => "\xE8\xB9\xB3", + "\xF3\x52" => "\xE8\xB9\xAA", + "\xF3\x53" => "\xE8\xB9\xAF", + "\xF3\x54" => "\xE8\xB9\xBB", + "\xF3\x55" => "\xE8\xBB\x82", + "\xF3\x56" => "\xE8\xBD\x92", + "\xF3\x57" => "\xE8\xBD\x91", + "\xF3\x58" => "\xE8\xBD\x8F", + "\xF3\x59" => "\xE8\xBD\x90", + "\xF3\x5A" => "\xE8\xBD\x93", + "\xF3\x5B" => "\xE8\xBE\xB4", + "\xF3\x5C" => "\xE9\x85\x80", + "\xF3\x5D" => "\xE9\x84\xBF", + "\xF3\x5E" => "\xE9\x86\xB0", + "\xF3\x5F" => "\xE9\x86\xAD", + "\xF3\x60" => "\xE9\x8F\x9E", + "\xF3\x61" => "\xE9\x8F\x87", + "\xF3\x62" => "\xE9\x8F\x8F", + "\xF3\x63" => "\xE9\x8F\x82", + "\xF3\x64" => "\xE9\x8F\x9A", + "\xF3\x65" => "\xE9\x8F\x90", + "\xF3\x66" => "\xE9\x8F\xB9", + "\xF3\x67" => "\xE9\x8F\xAC", + "\xF3\x68" => "\xE9\x8F\x8C", + "\xF3\x69" => "\xE9\x8F\x99", + "\xF3\x6A" => "\xE9\x8E\xA9", + "\xF3\x6B" => "\xE9\x8F\xA6", + "\xF3\x6C" => "\xE9\x8F\x8A", + "\xF3\x6D" => "\xE9\x8F\x94", + "\xF3\x6E" => "\xE9\x8F\xAE", + "\xF3\x6F" => "\xE9\x8F\xA3", + "\xF3\x70" => "\xE9\x8F\x95", + "\xF3\x71" => "\xE9\x8F\x84", + "\xF3\x72" => "\xE9\x8F\x8E", + "\xF3\x73" => "\xE9\x8F\x80", + "\xF3\x74" => "\xE9\x8F\x92", + "\xF3\x75" => "\xE9\x8F\xA7", + "\xF3\x76" => "\xE9\x95\xBD", + "\xF3\x77" => "\xE9\x97\x9A", + "\xF3\x78" => "\xE9\x97\x9B", + "\xF3\x79" => "\xE9\x9B\xA1", + "\xF3\x7A" => "\xE9\x9C\xA9", + "\xF3\x7B" => "\xE9\x9C\xAB", + "\xF3\x7C" => "\xE9\x9C\xAC", + "\xF3\x7D" => "\xE9\x9C\xA8", + "\xF3\x7E" => "\xE9\x9C\xA6", + "\xF3\xA1" => "\xE9\x9E\xB3", + "\xF3\xA2" => "\xE9\x9E\xB7", + "\xF3\xA3" => "\xE9\x9E\xB6", + "\xF3\xA4" => "\xE9\x9F\x9D", + "\xF3\xA5" => "\xE9\x9F\x9E", + "\xF3\xA6" => "\xE9\x9F\x9F", + "\xF3\xA7" => "\xE9\xA1\x9C", + "\xF3\xA8" => "\xE9\xA1\x99", + "\xF3\xA9" => "\xE9\xA1\x9D", + "\xF3\xAA" => "\xE9\xA1\x97", + "\xF3\xAB" => "\xE9\xA2\xBF", + "\xF3\xAC" => "\xE9\xA2\xBD", + "\xF3\xAD" => "\xE9\xA2\xBB", + "\xF3\xAE" => "\xE9\xA2\xBE", + "\xF3\xAF" => "\xE9\xA5\x88", + "\xF3\xB0" => "\xE9\xA5\x87", + "\xF3\xB1" => "\xE9\xA5\x83", + "\xF3\xB2" => "\xE9\xA6\xA6", + "\xF3\xB3" => "\xE9\xA6\xA7", + "\xF3\xB4" => "\xE9\xA8\x9A", + "\xF3\xB5" => "\xE9\xA8\x95", + "\xF3\xB6" => "\xE9\xA8\xA5", + "\xF3\xB7" => "\xE9\xA8\x9D", + "\xF3\xB8" => "\xE9\xA8\xA4", + "\xF3\xB9" => "\xE9\xA8\x9B", + "\xF3\xBA" => "\xE9\xA8\xA2", + "\xF3\xBB" => "\xE9\xA8\xA0", + "\xF3\xBC" => "\xE9\xA8\xA7", + "\xF3\xBD" => "\xE9\xA8\xA3", + "\xF3\xBE" => "\xE9\xA8\x9E", + "\xF3\xBF" => "\xE9\xA8\x9C", + "\xF3\xC0" => "\xE9\xA8\x94", + "\xF3\xC1" => "\xE9\xAB\x82", + "\xF3\xC2" => "\xE9\xAC\x8B", + "\xF3\xC3" => "\xE9\xAC\x8A", + "\xF3\xC4" => "\xE9\xAC\x8E", + "\xF3\xC5" => "\xE9\xAC\x8C", + "\xF3\xC6" => "\xE9\xAC\xB7", + "\xF3\xC7" => "\xE9\xAF\xAA", + "\xF3\xC8" => "\xE9\xAF\xAB", + "\xF3\xC9" => "\xE9\xAF\xA0", + "\xF3\xCA" => "\xE9\xAF\x9E", + "\xF3\xCB" => "\xE9\xAF\xA4", + "\xF3\xCC" => "\xE9\xAF\xA6", + "\xF3\xCD" => "\xE9\xAF\xA2", + "\xF3\xCE" => "\xE9\xAF\xB0", + "\xF3\xCF" => "\xE9\xAF\x94", + "\xF3\xD0" => "\xE9\xAF\x97", + "\xF3\xD1" => "\xE9\xAF\xAC", + "\xF3\xD2" => "\xE9\xAF\x9C", + "\xF3\xD3" => "\xE9\xAF\x99", + "\xF3\xD4" => "\xE9\xAF\xA5", + "\xF3\xD5" => "\xE9\xAF\x95", + "\xF3\xD6" => "\xE9\xAF\xA1", + "\xF3\xD7" => "\xE9\xAF\x9A", + "\xF3\xD8" => "\xE9\xB5\xB7", + "\xF3\xD9" => "\xE9\xB6\x81", + "\xF3\xDA" => "\xE9\xB6\x8A", + "\xF3\xDB" => "\xE9\xB6\x84", + "\xF3\xDC" => "\xE9\xB6\x88", + "\xF3\xDD" => "\xE9\xB5\xB1", + "\xF3\xDE" => "\xE9\xB6\x80", + "\xF3\xDF" => "\xE9\xB5\xB8", + "\xF3\xE0" => "\xE9\xB6\x86", + "\xF3\xE1" => "\xE9\xB6\x8B", + "\xF3\xE2" => "\xE9\xB6\x8C", + "\xF3\xE3" => "\xE9\xB5\xBD", + "\xF3\xE4" => "\xE9\xB5\xAB", + "\xF3\xE5" => "\xE9\xB5\xB4", + "\xF3\xE6" => "\xE9\xB5\xB5", + "\xF3\xE7" => "\xE9\xB5\xB0", + "\xF3\xE8" => "\xE9\xB5\xA9", + "\xF3\xE9" => "\xE9\xB6\x85", + "\xF3\xEA" => "\xE9\xB5\xB3", + "\xF3\xEB" => "\xE9\xB5\xBB", + "\xF3\xEC" => "\xE9\xB6\x82", + "\xF3\xED" => "\xE9\xB5\xAF", + "\xF3\xEE" => "\xE9\xB5\xB9", + "\xF3\xEF" => "\xE9\xB5\xBF", + "\xF3\xF0" => "\xE9\xB6\x87", + "\xF3\xF1" => "\xE9\xB5\xA8", + "\xF3\xF2" => "\xE9\xBA\x94", + "\xF3\xF3" => "\xE9\xBA\x91", + "\xF3\xF4" => "\xE9\xBB\x80", + "\xF3\xF5" => "\xE9\xBB\xBC", + "\xF3\xF6" => "\xE9\xBC\xAD", + "\xF3\xF7" => "\xE9\xBD\x80", + "\xF3\xF8" => "\xE9\xBD\x81", + "\xF3\xF9" => "\xE9\xBD\x8D", + "\xF3\xFA" => "\xE9\xBD\x96", + "\xF3\xFB" => "\xE9\xBD\x97", + "\xF3\xFC" => "\xE9\xBD\x98", + "\xF3\xFD" => "\xE5\x8C\xB7", + "\xF3\xFE" => "\xE5\x9A\xB2", + "\xF4\x40" => "\xE5\x9A\xB5", + "\xF4\x41" => "\xE5\x9A\xB3", + "\xF4\x42" => "\xE5\xA3\xA3", + "\xF4\x43" => "\xE5\xAD\x85", + "\xF4\x44" => "\xE5\xB7\x86", + "\xF4\x45" => "\xE5\xB7\x87", + "\xF4\x46" => "\xE5\xBB\xAE", + "\xF4\x47" => "\xE5\xBB\xAF", + "\xF4\x48" => "\xE5\xBF\x80", + "\xF4\x49" => "\xE5\xBF\x81", + "\xF4\x4A" => "\xE6\x87\xB9", + "\xF4\x4B" => "\xE6\x94\x97", + "\xF4\x4C" => "\xE6\x94\x96", + "\xF4\x4D" => "\xE6\x94\x95", + "\xF4\x4E" => "\xE6\x94\x93", + "\xF4\x4F" => "\xE6\x97\x9F", + "\xF4\x50" => "\xE6\x9B\xA8", + "\xF4\x51" => "\xE6\x9B\xA3", + "\xF4\x52" => "\xE6\x9B\xA4", + "\xF4\x53" => "\xE6\xAB\xB3", + "\xF4\x54" => "\xE6\xAB\xB0", + "\xF4\x55" => "\xE6\xAB\xAA", + "\xF4\x56" => "\xE6\xAB\xA8", + "\xF4\x57" => "\xE6\xAB\xB9", + "\xF4\x58" => "\xE6\xAB\xB1", + "\xF4\x59" => "\xE6\xAB\xAE", + "\xF4\x5A" => "\xE6\xAB\xAF", + "\xF4\x5B" => "\xE7\x80\xBC", + "\xF4\x5C" => "\xE7\x80\xB5", + "\xF4\x5D" => "\xE7\x80\xAF", + "\xF4\x5E" => "\xE7\x80\xB7", + "\xF4\x5F" => "\xE7\x80\xB4", + "\xF4\x60" => "\xE7\x80\xB1", + "\xF4\x61" => "\xE7\x81\x82", + "\xF4\x62" => "\xE7\x80\xB8", + "\xF4\x63" => "\xE7\x80\xBF", + "\xF4\x64" => "\xE7\x80\xBA", + "\xF4\x65" => "\xE7\x80\xB9", + "\xF4\x66" => "\xE7\x81\x80", + "\xF4\x67" => "\xE7\x80\xBB", + "\xF4\x68" => "\xE7\x80\xB3", + "\xF4\x69" => "\xE7\x81\x81", + "\xF4\x6A" => "\xE7\x88\x93", + "\xF4\x6B" => "\xE7\x88\x94", + "\xF4\x6C" => "\xE7\x8A\xA8", + "\xF4\x6D" => "\xE7\x8D\xBD", + "\xF4\x6E" => "\xE7\x8D\xBC", + "\xF4\x6F" => "\xE7\x92\xBA", + "\xF4\x70" => "\xE7\x9A\xAB", + "\xF4\x71" => "\xE7\x9A\xAA", + "\xF4\x72" => "\xE7\x9A\xBE", + "\xF4\x73" => "\xE7\x9B\xAD", + "\xF4\x74" => "\xE7\x9F\x8C", + "\xF4\x75" => "\xE7\x9F\x8E", + "\xF4\x76" => "\xE7\x9F\x8F", + "\xF4\x77" => "\xE7\x9F\x8D", + "\xF4\x78" => "\xE7\x9F\xB2", + "\xF4\x79" => "\xE7\xA4\xA5", + "\xF4\x7A" => "\xE7\xA4\xA3", + "\xF4\x7B" => "\xE7\xA4\xA7", + "\xF4\x7C" => "\xE7\xA4\xA8", + "\xF4\x7D" => "\xE7\xA4\xA4", + "\xF4\x7E" => "\xE7\xA4\xA9", + "\xF4\xA1" => "\xE7\xA6\xB2", + "\xF4\xA2" => "\xE7\xA9\xAE", + "\xF4\xA3" => "\xE7\xA9\xAC", + "\xF4\xA4" => "\xE7\xA9\xAD", + "\xF4\xA5" => "\xE7\xAB\xB7", + "\xF4\xA6" => "\xE7\xB1\x89", + "\xF4\xA7" => "\xE7\xB1\x88", + "\xF4\xA8" => "\xE7\xB1\x8A", + "\xF4\xA9" => "\xE7\xB1\x87", + "\xF4\xAA" => "\xE7\xB1\x85", + "\xF4\xAB" => "\xE7\xB3\xAE", + "\xF4\xAC" => "\xE7\xB9\xBB", + "\xF4\xAD" => "\xE7\xB9\xBE", + "\xF4\xAE" => "\xE7\xBA\x81", + "\xF4\xAF" => "\xE7\xBA\x80", + "\xF4\xB0" => "\xE7\xBE\xBA", + "\xF4\xB1" => "\xE7\xBF\xBF", + "\xF4\xB2" => "\xE8\x81\xB9", + "\xF4\xB3" => "\xE8\x87\x9B", + "\xF4\xB4" => "\xE8\x87\x99", + "\xF4\xB5" => "\xE8\x88\x8B", + "\xF4\xB6" => "\xE8\x89\xA8", + "\xF4\xB7" => "\xE8\x89\xA9", + "\xF4\xB8" => "\xE8\x98\xA2", + "\xF4\xB9" => "\xE8\x97\xBF", + "\xF4\xBA" => "\xE8\x98\x81", + "\xF4\xBB" => "\xE8\x97\xBE", + "\xF4\xBC" => "\xE8\x98\x9B", + "\xF4\xBD" => "\xE8\x98\x80", + "\xF4\xBE" => "\xE8\x97\xB6", + "\xF4\xBF" => "\xE8\x98\x84", + "\xF4\xC0" => "\xE8\x98\x89", + "\xF4\xC1" => "\xE8\x98\x85", + "\xF4\xC2" => "\xE8\x98\x8C", + "\xF4\xC3" => "\xE8\x97\xBD", + "\xF4\xC4" => "\xE8\xA0\x99", + "\xF4\xC5" => "\xE8\xA0\x90", + "\xF4\xC6" => "\xE8\xA0\x91", + "\xF4\xC7" => "\xE8\xA0\x97", + "\xF4\xC8" => "\xE8\xA0\x93", + "\xF4\xC9" => "\xE8\xA0\x96", + "\xF4\xCA" => "\xE8\xA5\xA3", + "\xF4\xCB" => "\xE8\xA5\xA6", + "\xF4\xCC" => "\xE8\xA6\xB9", + "\xF4\xCD" => "\xE8\xA7\xB7", + "\xF4\xCE" => "\xE8\xAD\xA0", + "\xF4\xCF" => "\xE8\xAD\xAA", + "\xF4\xD0" => "\xE8\xAD\x9D", + "\xF4\xD1" => "\xE8\xAD\xA8", + "\xF4\xD2" => "\xE8\xAD\xA3", + "\xF4\xD3" => "\xE8\xAD\xA5", + "\xF4\xD4" => "\xE8\xAD\xA7", + "\xF4\xD5" => "\xE8\xAD\xAD", + "\xF4\xD6" => "\xE8\xB6\xAE", + "\xF4\xD7" => "\xE8\xBA\x86", + "\xF4\xD8" => "\xE8\xBA\x88", + "\xF4\xD9" => "\xE8\xBA\x84", + "\xF4\xDA" => "\xE8\xBD\x99", + "\xF4\xDB" => "\xE8\xBD\x96", + "\xF4\xDC" => "\xE8\xBD\x97", + "\xF4\xDD" => "\xE8\xBD\x95", + "\xF4\xDE" => "\xE8\xBD\x98", + "\xF4\xDF" => "\xE8\xBD\x9A", + "\xF4\xE0" => "\xE9\x82\x8D", + "\xF4\xE1" => "\xE9\x85\x83", + "\xF4\xE2" => "\xE9\x85\x81", + "\xF4\xE3" => "\xE9\x86\xB7", + "\xF4\xE4" => "\xE9\x86\xB5", + "\xF4\xE5" => "\xE9\x86\xB2", + "\xF4\xE6" => "\xE9\x86\xB3", + "\xF4\xE7" => "\xE9\x90\x8B", + "\xF4\xE8" => "\xE9\x90\x93", + "\xF4\xE9" => "\xE9\x8F\xBB", + "\xF4\xEA" => "\xE9\x90\xA0", + "\xF4\xEB" => "\xE9\x90\x8F", + "\xF4\xEC" => "\xE9\x90\x94", + "\xF4\xED" => "\xE9\x8F\xBE", + "\xF4\xEE" => "\xE9\x90\x95", + "\xF4\xEF" => "\xE9\x90\x90", + "\xF4\xF0" => "\xE9\x90\xA8", + "\xF4\xF1" => "\xE9\x90\x99", + "\xF4\xF2" => "\xE9\x90\x8D", + "\xF4\xF3" => "\xE9\x8F\xB5", + "\xF4\xF4" => "\xE9\x90\x80", + "\xF4\xF5" => "\xE9\x8F\xB7", + "\xF4\xF6" => "\xE9\x90\x87", + "\xF4\xF7" => "\xE9\x90\x8E", + "\xF4\xF8" => "\xE9\x90\x96", + "\xF4\xF9" => "\xE9\x90\x92", + "\xF4\xFA" => "\xE9\x8F\xBA", + "\xF4\xFB" => "\xE9\x90\x89", + "\xF4\xFC" => "\xE9\x8F\xB8", + "\xF4\xFD" => "\xE9\x90\x8A", + "\xF4\xFE" => "\xE9\x8F\xBF", + "\xF5\x40" => "\xE9\x8F\xBC", + "\xF5\x41" => "\xE9\x90\x8C", + "\xF5\x42" => "\xE9\x8F\xB6", + "\xF5\x43" => "\xE9\x90\x91", + "\xF5\x44" => "\xE9\x90\x86", + "\xF5\x45" => "\xE9\x97\x9E", + "\xF5\x46" => "\xE9\x97\xA0", + "\xF5\x47" => "\xE9\x97\x9F", + "\xF5\x48" => "\xE9\x9C\xAE", + "\xF5\x49" => "\xE9\x9C\xAF", + "\xF5\x4A" => "\xE9\x9E\xB9", + "\xF5\x4B" => "\xE9\x9E\xBB", + "\xF5\x4C" => "\xE9\x9F\xBD", + "\xF5\x4D" => "\xE9\x9F\xBE", + "\xF5\x4E" => "\xE9\xA1\xA0", + "\xF5\x4F" => "\xE9\xA1\xA2", + "\xF5\x50" => "\xE9\xA1\xA3", + "\xF5\x51" => "\xE9\xA1\x9F", + "\xF5\x52" => "\xE9\xA3\x81", + "\xF5\x53" => "\xE9\xA3\x82", + "\xF5\x54" => "\xE9\xA5\x90", + "\xF5\x55" => "\xE9\xA5\x8E", + "\xF5\x56" => "\xE9\xA5\x99", + "\xF5\x57" => "\xE9\xA5\x8C", + "\xF5\x58" => "\xE9\xA5\x8B", + "\xF5\x59" => "\xE9\xA5\x93", + "\xF5\x5A" => "\xE9\xA8\xB2", + "\xF5\x5B" => "\xE9\xA8\xB4", + "\xF5\x5C" => "\xE9\xA8\xB1", + "\xF5\x5D" => "\xE9\xA8\xAC", + "\xF5\x5E" => "\xE9\xA8\xAA", + "\xF5\x5F" => "\xE9\xA8\xB6", + "\xF5\x60" => "\xE9\xA8\xA9", + "\xF5\x61" => "\xE9\xA8\xAE", + "\xF5\x62" => "\xE9\xA8\xB8", + "\xF5\x63" => "\xE9\xA8\xAD", + "\xF5\x64" => "\xE9\xAB\x87", + "\xF5\x65" => "\xE9\xAB\x8A", + "\xF5\x66" => "\xE9\xAB\x86", + "\xF5\x67" => "\xE9\xAC\x90", + "\xF5\x68" => "\xE9\xAC\x92", + "\xF5\x69" => "\xE9\xAC\x91", + "\xF5\x6A" => "\xE9\xB0\x8B", + "\xF5\x6B" => "\xE9\xB0\x88", + "\xF5\x6C" => "\xE9\xAF\xB7", + "\xF5\x6D" => "\xE9\xB0\x85", + "\xF5\x6E" => "\xE9\xB0\x92", + "\xF5\x6F" => "\xE9\xAF\xB8", + "\xF5\x70" => "\xE9\xB1\x80", + "\xF5\x71" => "\xE9\xB0\x87", + "\xF5\x72" => "\xE9\xB0\x8E", + "\xF5\x73" => "\xE9\xB0\x86", + "\xF5\x74" => "\xE9\xB0\x97", + "\xF5\x75" => "\xE9\xB0\x94", + "\xF5\x76" => "\xE9\xB0\x89", + "\xF5\x77" => "\xE9\xB6\x9F", + "\xF5\x78" => "\xE9\xB6\x99", + "\xF5\x79" => "\xE9\xB6\xA4", + "\xF5\x7A" => "\xE9\xB6\x9D", + "\xF5\x7B" => "\xE9\xB6\x92", + "\xF5\x7C" => "\xE9\xB6\x98", + "\xF5\x7D" => "\xE9\xB6\x90", + "\xF5\x7E" => "\xE9\xB6\x9B", + "\xF5\xA1" => "\xE9\xB6\xA0", + "\xF5\xA2" => "\xE9\xB6\x94", + "\xF5\xA3" => "\xE9\xB6\x9C", + "\xF5\xA4" => "\xE9\xB6\xAA", + "\xF5\xA5" => "\xE9\xB6\x97", + "\xF5\xA6" => "\xE9\xB6\xA1", + "\xF5\xA7" => "\xE9\xB6\x9A", + "\xF5\xA8" => "\xE9\xB6\xA2", + "\xF5\xA9" => "\xE9\xB6\xA8", + "\xF5\xAA" => "\xE9\xB6\x9E", + "\xF5\xAB" => "\xE9\xB6\xA3", + "\xF5\xAC" => "\xE9\xB6\xBF", + "\xF5\xAD" => "\xE9\xB6\xA9", + "\xF5\xAE" => "\xE9\xB6\x96", + "\xF5\xAF" => "\xE9\xB6\xA6", + "\xF5\xB0" => "\xE9\xB6\xA7", + "\xF5\xB1" => "\xE9\xBA\x99", + "\xF5\xB2" => "\xE9\xBA\x9B", + "\xF5\xB3" => "\xE9\xBA\x9A", + "\xF5\xB4" => "\xE9\xBB\xA5", + "\xF5\xB5" => "\xE9\xBB\xA4", + "\xF5\xB6" => "\xE9\xBB\xA7", + "\xF5\xB7" => "\xE9\xBB\xA6", + "\xF5\xB8" => "\xE9\xBC\xB0", + "\xF5\xB9" => "\xE9\xBC\xAE", + "\xF5\xBA" => "\xE9\xBD\x9B", + "\xF5\xBB" => "\xE9\xBD\xA0", + "\xF5\xBC" => "\xE9\xBD\x9E", + "\xF5\xBD" => "\xE9\xBD\x9D", + "\xF5\xBE" => "\xE9\xBD\x99", + "\xF5\xBF" => "\xE9\xBE\x91", + "\xF5\xC0" => "\xE5\x84\xBA", + "\xF5\xC1" => "\xE5\x84\xB9", + "\xF5\xC2" => "\xE5\x8A\x98", + "\xF5\xC3" => "\xE5\x8A\x97", + "\xF5\xC4" => "\xE5\x9B\x83", + "\xF5\xC5" => "\xE5\x9A\xBD", + "\xF5\xC6" => "\xE5\x9A\xBE", + "\xF5\xC7" => "\xE5\xAD\x88", + "\xF5\xC8" => "\xE5\xAD\x87", + "\xF5\xC9" => "\xE5\xB7\x8B", + "\xF5\xCA" => "\xE5\xB7\x8F", + "\xF5\xCB" => "\xE5\xBB\xB1", + "\xF5\xCC" => "\xE6\x87\xBD", + "\xF5\xCD" => "\xE6\x94\x9B", + "\xF5\xCE" => "\xE6\xAC\x82", + "\xF5\xCF" => "\xE6\xAB\xBC", + "\xF5\xD0" => "\xE6\xAC\x83", + "\xF5\xD1" => "\xE6\xAB\xB8", + "\xF5\xD2" => "\xE6\xAC\x80", + "\xF5\xD3" => "\xE7\x81\x83", + "\xF5\xD4" => "\xE7\x81\x84", + "\xF5\xD5" => "\xE7\x81\x8A", + "\xF5\xD6" => "\xE7\x81\x88", + "\xF5\xD7" => "\xE7\x81\x89", + "\xF5\xD8" => "\xE7\x81\x85", + "\xF5\xD9" => "\xE7\x81\x86", + "\xF5\xDA" => "\xE7\x88\x9D", + "\xF5\xDB" => "\xE7\x88\x9A", + "\xF5\xDC" => "\xE7\x88\x99", + "\xF5\xDD" => "\xE7\x8D\xBE", + "\xF5\xDE" => "\xE7\x94\x97", + "\xF5\xDF" => "\xE7\x99\xAA", + "\xF5\xE0" => "\xE7\x9F\x90", + "\xF5\xE1" => "\xE7\xA4\xAD", + "\xF5\xE2" => "\xE7\xA4\xB1", + "\xF5\xE3" => "\xE7\xA4\xAF", + "\xF5\xE4" => "\xE7\xB1\x94", + "\xF5\xE5" => "\xE7\xB1\x93", + "\xF5\xE6" => "\xE7\xB3\xB2", + "\xF5\xE7" => "\xE7\xBA\x8A", + "\xF5\xE8" => "\xE7\xBA\x87", + "\xF5\xE9" => "\xE7\xBA\x88", + "\xF5\xEA" => "\xE7\xBA\x8B", + "\xF5\xEB" => "\xE7\xBA\x86", + "\xF5\xEC" => "\xE7\xBA\x8D", + "\xF5\xED" => "\xE7\xBD\x8D", + "\xF5\xEE" => "\xE7\xBE\xBB", + "\xF5\xEF" => "\xE8\x80\xB0", + "\xF5\xF0" => "\xE8\x87\x9D", + "\xF5\xF1" => "\xE8\x98\x98", + "\xF5\xF2" => "\xE8\x98\xAA", + "\xF5\xF3" => "\xE8\x98\xA6", + "\xF5\xF4" => "\xE8\x98\x9F", + "\xF5\xF5" => "\xE8\x98\xA3", + "\xF5\xF6" => "\xE8\x98\x9C", + "\xF5\xF7" => "\xE8\x98\x99", + "\xF5\xF8" => "\xE8\x98\xA7", + "\xF5\xF9" => "\xE8\x98\xAE", + "\xF5\xFA" => "\xE8\x98\xA1", + "\xF5\xFB" => "\xE8\x98\xA0", + "\xF5\xFC" => "\xE8\x98\xA9", + "\xF5\xFD" => "\xE8\x98\x9E", + "\xF5\xFE" => "\xE8\x98\xA5", + "\xF6\x40" => "\xE8\xA0\xA9", + "\xF6\x41" => "\xE8\xA0\x9D", + "\xF6\x42" => "\xE8\xA0\x9B", + "\xF6\x43" => "\xE8\xA0\xA0", + "\xF6\x44" => "\xE8\xA0\xA4", + "\xF6\x45" => "\xE8\xA0\x9C", + "\xF6\x46" => "\xE8\xA0\xAB", + "\xF6\x47" => "\xE8\xA1\x8A", + "\xF6\x48" => "\xE8\xA5\xAD", + "\xF6\x49" => "\xE8\xA5\xA9", + "\xF6\x4A" => "\xE8\xA5\xAE", + "\xF6\x4B" => "\xE8\xA5\xAB", + "\xF6\x4C" => "\xE8\xA7\xBA", + "\xF6\x4D" => "\xE8\xAD\xB9", + "\xF6\x4E" => "\xE8\xAD\xB8", + "\xF6\x4F" => "\xE8\xAD\x85", + "\xF6\x50" => "\xE8\xAD\xBA", + "\xF6\x51" => "\xE8\xAD\xBB", + "\xF6\x52" => "\xE8\xB4\x90", + "\xF6\x53" => "\xE8\xB4\x94", + "\xF6\x54" => "\xE8\xB6\xAF", + "\xF6\x55" => "\xE8\xBA\x8E", + "\xF6\x56" => "\xE8\xBA\x8C", + "\xF6\x57" => "\xE8\xBD\x9E", + "\xF6\x58" => "\xE8\xBD\x9B", + "\xF6\x59" => "\xE8\xBD\x9D", + "\xF6\x5A" => "\xE9\x85\x86", + "\xF6\x5B" => "\xE9\x85\x84", + "\xF6\x5C" => "\xE9\x85\x85", + "\xF6\x5D" => "\xE9\x86\xB9", + "\xF6\x5E" => "\xE9\x90\xBF", + "\xF6\x5F" => "\xE9\x90\xBB", + "\xF6\x60" => "\xE9\x90\xB6", + "\xF6\x61" => "\xE9\x90\xA9", + "\xF6\x62" => "\xE9\x90\xBD", + "\xF6\x63" => "\xE9\x90\xBC", + "\xF6\x64" => "\xE9\x90\xB0", + "\xF6\x65" => "\xE9\x90\xB9", + "\xF6\x66" => "\xE9\x90\xAA", + "\xF6\x67" => "\xE9\x90\xB7", + "\xF6\x68" => "\xE9\x90\xAC", + "\xF6\x69" => "\xE9\x91\x80", + "\xF6\x6A" => "\xE9\x90\xB1", + "\xF6\x6B" => "\xE9\x97\xA5", + "\xF6\x6C" => "\xE9\x97\xA4", + "\xF6\x6D" => "\xE9\x97\xA3", + "\xF6\x6E" => "\xE9\x9C\xB5", + "\xF6\x6F" => "\xE9\x9C\xBA", + "\xF6\x70" => "\xE9\x9E\xBF", + "\xF6\x71" => "\xE9\x9F\xA1", + "\xF6\x72" => "\xE9\xA1\xA4", + "\xF6\x73" => "\xE9\xA3\x89", + "\xF6\x74" => "\xE9\xA3\x86", + "\xF6\x75" => "\xE9\xA3\x80", + "\xF6\x76" => "\xE9\xA5\x98", + "\xF6\x77" => "\xE9\xA5\x96", + "\xF6\x78" => "\xE9\xA8\xB9", + "\xF6\x79" => "\xE9\xA8\xBD", + "\xF6\x7A" => "\xE9\xA9\x86", + "\xF6\x7B" => "\xE9\xA9\x84", + "\xF6\x7C" => "\xE9\xA9\x82", + "\xF6\x7D" => "\xE9\xA9\x81", + "\xF6\x7E" => "\xE9\xA8\xBA", + "\xF6\xA1" => "\xE9\xA8\xBF", + "\xF6\xA2" => "\xE9\xAB\x8D", + "\xF6\xA3" => "\xE9\xAC\x95", + "\xF6\xA4" => "\xE9\xAC\x97", + "\xF6\xA5" => "\xE9\xAC\x98", + "\xF6\xA6" => "\xE9\xAC\x96", + "\xF6\xA7" => "\xE9\xAC\xBA", + "\xF6\xA8" => "\xE9\xAD\x92", + "\xF6\xA9" => "\xE9\xB0\xAB", + "\xF6\xAA" => "\xE9\xB0\x9D", + "\xF6\xAB" => "\xE9\xB0\x9C", + "\xF6\xAC" => "\xE9\xB0\xAC", + "\xF6\xAD" => "\xE9\xB0\xA3", + "\xF6\xAE" => "\xE9\xB0\xA8", + "\xF6\xAF" => "\xE9\xB0\xA9", + "\xF6\xB0" => "\xE9\xB0\xA4", + "\xF6\xB1" => "\xE9\xB0\xA1", + "\xF6\xB2" => "\xE9\xB6\xB7", + "\xF6\xB3" => "\xE9\xB6\xB6", + "\xF6\xB4" => "\xE9\xB6\xBC", + "\xF6\xB5" => "\xE9\xB7\x81", + "\xF6\xB6" => "\xE9\xB7\x87", + "\xF6\xB7" => "\xE9\xB7\x8A", + "\xF6\xB8" => "\xE9\xB7\x8F", + "\xF6\xB9" => "\xE9\xB6\xBE", + "\xF6\xBA" => "\xE9\xB7\x85", + "\xF6\xBB" => "\xE9\xB7\x83", + "\xF6\xBC" => "\xE9\xB6\xBB", + "\xF6\xBD" => "\xE9\xB6\xB5", + "\xF6\xBE" => "\xE9\xB7\x8E", + "\xF6\xBF" => "\xE9\xB6\xB9", + "\xF6\xC0" => "\xE9\xB6\xBA", + "\xF6\xC1" => "\xE9\xB6\xAC", + "\xF6\xC2" => "\xE9\xB7\x88", + "\xF6\xC3" => "\xE9\xB6\xB1", + "\xF6\xC4" => "\xE9\xB6\xAD", + "\xF6\xC5" => "\xE9\xB7\x8C", + "\xF6\xC6" => "\xE9\xB6\xB3", + "\xF6\xC7" => "\xE9\xB7\x8D", + "\xF6\xC8" => "\xE9\xB6\xB2", + "\xF6\xC9" => "\xE9\xB9\xBA", + "\xF6\xCA" => "\xE9\xBA\x9C", + "\xF6\xCB" => "\xE9\xBB\xAB", + "\xF6\xCC" => "\xE9\xBB\xAE", + "\xF6\xCD" => "\xE9\xBB\xAD", + "\xF6\xCE" => "\xE9\xBC\x9B", + "\xF6\xCF" => "\xE9\xBC\x98", + "\xF6\xD0" => "\xE9\xBC\x9A", + "\xF6\xD1" => "\xE9\xBC\xB1", + "\xF6\xD2" => "\xE9\xBD\x8E", + "\xF6\xD3" => "\xE9\xBD\xA5", + "\xF6\xD4" => "\xE9\xBD\xA4", + "\xF6\xD5" => "\xE9\xBE\x92", + "\xF6\xD6" => "\xE4\xBA\xB9", + "\xF6\xD7" => "\xE5\x9B\x86", + "\xF6\xD8" => "\xE5\x9B\x85", + "\xF6\xD9" => "\xE5\x9B\x8B", + "\xF6\xDA" => "\xE5\xA5\xB1", + "\xF6\xDB" => "\xE5\xAD\x8B", + "\xF6\xDC" => "\xE5\xAD\x8C", + "\xF6\xDD" => "\xE5\xB7\x95", + "\xF6\xDE" => "\xE5\xB7\x91", + "\xF6\xDF" => "\xE5\xBB\xB2", + "\xF6\xE0" => "\xE6\x94\xA1", + "\xF6\xE1" => "\xE6\x94\xA0", + "\xF6\xE2" => "\xE6\x94\xA6", + "\xF6\xE3" => "\xE6\x94\xA2", + "\xF6\xE4" => "\xE6\xAC\x8B", + "\xF6\xE5" => "\xE6\xAC\x88", + "\xF6\xE6" => "\xE6\xAC\x89", + "\xF6\xE7" => "\xE6\xB0\x8D", + "\xF6\xE8" => "\xE7\x81\x95", + "\xF6\xE9" => "\xE7\x81\x96", + "\xF6\xEA" => "\xE7\x81\x97", + "\xF6\xEB" => "\xE7\x81\x92", + "\xF6\xEC" => "\xE7\x88\x9E", + "\xF6\xED" => "\xE7\x88\x9F", + "\xF6\xEE" => "\xE7\x8A\xA9", + "\xF6\xEF" => "\xE7\x8D\xBF", + "\xF6\xF0" => "\xE7\x93\x98", + "\xF6\xF1" => "\xE7\x93\x95", + "\xF6\xF2" => "\xE7\x93\x99", + "\xF6\xF3" => "\xE7\x93\x97", + "\xF6\xF4" => "\xE7\x99\xAD", + "\xF6\xF5" => "\xE7\x9A\xAD", + "\xF6\xF6" => "\xE7\xA4\xB5", + "\xF6\xF7" => "\xE7\xA6\xB4", + "\xF6\xF8" => "\xE7\xA9\xB0", + "\xF6\xF9" => "\xE7\xA9\xB1", + "\xF6\xFA" => "\xE7\xB1\x97", + "\xF6\xFB" => "\xE7\xB1\x9C", + "\xF6\xFC" => "\xE7\xB1\x99", + "\xF6\xFD" => "\xE7\xB1\x9B", + "\xF6\xFE" => "\xE7\xB1\x9A", + "\xF7\x40" => "\xE7\xB3\xB4", + "\xF7\x41" => "\xE7\xB3\xB1", + "\xF7\x42" => "\xE7\xBA\x91", + "\xF7\x43" => "\xE7\xBD\x8F", + "\xF7\x44" => "\xE7\xBE\x87", + "\xF7\x45" => "\xE8\x87\x9E", + "\xF7\x46" => "\xE8\x89\xAB", + "\xF7\x47" => "\xE8\x98\xB4", + "\xF7\x48" => "\xE8\x98\xB5", + "\xF7\x49" => "\xE8\x98\xB3", + "\xF7\x4A" => "\xE8\x98\xAC", + "\xF7\x4B" => "\xE8\x98\xB2", + "\xF7\x4C" => "\xE8\x98\xB6", + "\xF7\x4D" => "\xE8\xA0\xAC", + "\xF7\x4E" => "\xE8\xA0\xA8", + "\xF7\x4F" => "\xE8\xA0\xA6", + "\xF7\x50" => "\xE8\xA0\xAA", + "\xF7\x51" => "\xE8\xA0\xA5", + "\xF7\x52" => "\xE8\xA5\xB1", + "\xF7\x53" => "\xE8\xA6\xBF", + "\xF7\x54" => "\xE8\xA6\xBE", + "\xF7\x55" => "\xE8\xA7\xBB", + "\xF7\x56" => "\xE8\xAD\xBE", + "\xF7\x57" => "\xE8\xAE\x84", + "\xF7\x58" => "\xE8\xAE\x82", + "\xF7\x59" => "\xE8\xAE\x86", + "\xF7\x5A" => "\xE8\xAE\x85", + "\xF7\x5B" => "\xE8\xAD\xBF", + "\xF7\x5C" => "\xE8\xB4\x95", + "\xF7\x5D" => "\xE8\xBA\x95", + "\xF7\x5E" => "\xE8\xBA\x94", + "\xF7\x5F" => "\xE8\xBA\x9A", + "\xF7\x60" => "\xE8\xBA\x92", + "\xF7\x61" => "\xE8\xBA\x90", + "\xF7\x62" => "\xE8\xBA\x96", + "\xF7\x63" => "\xE8\xBA\x97", + "\xF7\x64" => "\xE8\xBD\xA0", + "\xF7\x65" => "\xE8\xBD\xA2", + "\xF7\x66" => "\xE9\x85\x87", + "\xF7\x67" => "\xE9\x91\x8C", + "\xF7\x68" => "\xE9\x91\x90", + "\xF7\x69" => "\xE9\x91\x8A", + "\xF7\x6A" => "\xE9\x91\x8B", + "\xF7\x6B" => "\xE9\x91\x8F", + "\xF7\x6C" => "\xE9\x91\x87", + "\xF7\x6D" => "\xE9\x91\x85", + "\xF7\x6E" => "\xE9\x91\x88", + "\xF7\x6F" => "\xE9\x91\x89", + "\xF7\x70" => "\xE9\x91\x86", + "\xF7\x71" => "\xE9\x9C\xBF", + "\xF7\x72" => "\xE9\x9F\xA3", + "\xF7\x73" => "\xE9\xA1\xAA", + "\xF7\x74" => "\xE9\xA1\xA9", + "\xF7\x75" => "\xE9\xA3\x8B", + "\xF7\x76" => "\xE9\xA5\x94", + "\xF7\x77" => "\xE9\xA5\x9B", + "\xF7\x78" => "\xE9\xA9\x8E", + "\xF7\x79" => "\xE9\xA9\x93", + "\xF7\x7A" => "\xE9\xA9\x94", + "\xF7\x7B" => "\xE9\xA9\x8C", + "\xF7\x7C" => "\xE9\xA9\x8F", + "\xF7\x7D" => "\xE9\xA9\x88", + "\xF7\x7E" => "\xE9\xA9\x8A", + "\xF7\xA1" => "\xE9\xA9\x89", + "\xF7\xA2" => "\xE9\xA9\x92", + "\xF7\xA3" => "\xE9\xA9\x90", + "\xF7\xA4" => "\xE9\xAB\x90", + "\xF7\xA5" => "\xE9\xAC\x99", + "\xF7\xA6" => "\xE9\xAC\xAB", + "\xF7\xA7" => "\xE9\xAC\xBB", + "\xF7\xA8" => "\xE9\xAD\x96", + "\xF7\xA9" => "\xE9\xAD\x95", + "\xF7\xAA" => "\xE9\xB1\x86", + "\xF7\xAB" => "\xE9\xB1\x88", + "\xF7\xAC" => "\xE9\xB0\xBF", + "\xF7\xAD" => "\xE9\xB1\x84", + "\xF7\xAE" => "\xE9\xB0\xB9", + "\xF7\xAF" => "\xE9\xB0\xB3", + "\xF7\xB0" => "\xE9\xB1\x81", + "\xF7\xB1" => "\xE9\xB0\xBC", + "\xF7\xB2" => "\xE9\xB0\xB7", + "\xF7\xB3" => "\xE9\xB0\xB4", + "\xF7\xB4" => "\xE9\xB0\xB2", + "\xF7\xB5" => "\xE9\xB0\xBD", + "\xF7\xB6" => "\xE9\xB0\xB6", + "\xF7\xB7" => "\xE9\xB7\x9B", + "\xF7\xB8" => "\xE9\xB7\x92", + "\xF7\xB9" => "\xE9\xB7\x9E", + "\xF7\xBA" => "\xE9\xB7\x9A", + "\xF7\xBB" => "\xE9\xB7\x8B", + "\xF7\xBC" => "\xE9\xB7\x90", + "\xF7\xBD" => "\xE9\xB7\x9C", + "\xF7\xBE" => "\xE9\xB7\x91", + "\xF7\xBF" => "\xE9\xB7\x9F", + "\xF7\xC0" => "\xE9\xB7\xA9", + "\xF7\xC1" => "\xE9\xB7\x99", + "\xF7\xC2" => "\xE9\xB7\x98", + "\xF7\xC3" => "\xE9\xB7\x96", + "\xF7\xC4" => "\xE9\xB7\xB5", + "\xF7\xC5" => "\xE9\xB7\x95", + "\xF7\xC6" => "\xE9\xB7\x9D", + "\xF7\xC7" => "\xE9\xBA\xB6", + "\xF7\xC8" => "\xE9\xBB\xB0", + "\xF7\xC9" => "\xE9\xBC\xB5", + "\xF7\xCA" => "\xE9\xBC\xB3", + "\xF7\xCB" => "\xE9\xBC\xB2", + "\xF7\xCC" => "\xE9\xBD\x82", + "\xF7\xCD" => "\xE9\xBD\xAB", + "\xF7\xCE" => "\xE9\xBE\x95", + "\xF7\xCF" => "\xE9\xBE\xA2", + "\xF7\xD0" => "\xE5\x84\xBD", + "\xF7\xD1" => "\xE5\x8A\x99", + "\xF7\xD2" => "\xE5\xA3\xA8", + "\xF7\xD3" => "\xE5\xA3\xA7", + "\xF7\xD4" => "\xE5\xA5\xB2", + "\xF7\xD5" => "\xE5\xAD\x8D", + "\xF7\xD6" => "\xE5\xB7\x98", + "\xF7\xD7" => "\xE8\xA0\xAF", + "\xF7\xD8" => "\xE5\xBD\x8F", + "\xF7\xD9" => "\xE6\x88\x81", + "\xF7\xDA" => "\xE6\x88\x83", + "\xF7\xDB" => "\xE6\x88\x84", + "\xF7\xDC" => "\xE6\x94\xA9", + "\xF7\xDD" => "\xE6\x94\xA5", + "\xF7\xDE" => "\xE6\x96\x96", + "\xF7\xDF" => "\xE6\x9B\xAB", + "\xF7\xE0" => "\xE6\xAC\x91", + "\xF7\xE1" => "\xE6\xAC\x92", + "\xF7\xE2" => "\xE6\xAC\x8F", + "\xF7\xE3" => "\xE6\xAF\x8A", + "\xF7\xE4" => "\xE7\x81\x9B", + "\xF7\xE5" => "\xE7\x81\x9A", + "\xF7\xE6" => "\xE7\x88\xA2", + "\xF7\xE7" => "\xE7\x8E\x82", + "\xF7\xE8" => "\xE7\x8E\x81", + "\xF7\xE9" => "\xE7\x8E\x83", + "\xF7\xEA" => "\xE7\x99\xB0", + "\xF7\xEB" => "\xE7\x9F\x94", + "\xF7\xEC" => "\xE7\xB1\xA7", + "\xF7\xED" => "\xE7\xB1\xA6", + "\xF7\xEE" => "\xE7\xBA\x95", + "\xF7\xEF" => "\xE8\x89\xAC", + "\xF7\xF0" => "\xE8\x98\xBA", + "\xF7\xF1" => "\xE8\x99\x80", + "\xF7\xF2" => "\xE8\x98\xB9", + "\xF7\xF3" => "\xE8\x98\xBC", + "\xF7\xF4" => "\xE8\x98\xB1", + "\xF7\xF5" => "\xE8\x98\xBB", + "\xF7\xF6" => "\xE8\x98\xBE", + "\xF7\xF7" => "\xE8\xA0\xB0", + "\xF7\xF8" => "\xE8\xA0\xB2", + "\xF7\xF9" => "\xE8\xA0\xAE", + "\xF7\xFA" => "\xE8\xA0\xB3", + "\xF7\xFB" => "\xE8\xA5\xB6", + "\xF7\xFC" => "\xE8\xA5\xB4", + "\xF7\xFD" => "\xE8\xA5\xB3", + "\xF7\xFE" => "\xE8\xA7\xBE", + "\xF8\x40" => "\xE8\xAE\x8C", + "\xF8\x41" => "\xE8\xAE\x8E", + "\xF8\x42" => "\xE8\xAE\x8B", + "\xF8\x43" => "\xE8\xAE\x88", + "\xF8\x44" => "\xE8\xB1\x85", + "\xF8\x45" => "\xE8\xB4\x99", + "\xF8\x46" => "\xE8\xBA\x98", + "\xF8\x47" => "\xE8\xBD\xA4", + "\xF8\x48" => "\xE8\xBD\xA3", + "\xF8\x49" => "\xE9\x86\xBC", + "\xF8\x4A" => "\xE9\x91\xA2", + "\xF8\x4B" => "\xE9\x91\x95", + "\xF8\x4C" => "\xE9\x91\x9D", + "\xF8\x4D" => "\xE9\x91\x97", + "\xF8\x4E" => "\xE9\x91\x9E", + "\xF8\x4F" => "\xE9\x9F\x84", + "\xF8\x50" => "\xE9\x9F\x85", + "\xF8\x51" => "\xE9\xA0\x80", + "\xF8\x52" => "\xE9\xA9\x96", + "\xF8\x53" => "\xE9\xA9\x99", + "\xF8\x54" => "\xE9\xAC\x9E", + "\xF8\x55" => "\xE9\xAC\x9F", + "\xF8\x56" => "\xE9\xAC\xA0", + "\xF8\x57" => "\xE9\xB1\x92", + "\xF8\x58" => "\xE9\xB1\x98", + "\xF8\x59" => "\xE9\xB1\x90", + "\xF8\x5A" => "\xE9\xB1\x8A", + "\xF8\x5B" => "\xE9\xB1\x8D", + "\xF8\x5C" => "\xE9\xB1\x8B", + "\xF8\x5D" => "\xE9\xB1\x95", + "\xF8\x5E" => "\xE9\xB1\x99", + "\xF8\x5F" => "\xE9\xB1\x8C", + "\xF8\x60" => "\xE9\xB1\x8E", + "\xF8\x61" => "\xE9\xB7\xBB", + "\xF8\x62" => "\xE9\xB7\xB7", + "\xF8\x63" => "\xE9\xB7\xAF", + "\xF8\x64" => "\xE9\xB7\xA3", + "\xF8\x65" => "\xE9\xB7\xAB", + "\xF8\x66" => "\xE9\xB7\xB8", + "\xF8\x67" => "\xE9\xB7\xA4", + "\xF8\x68" => "\xE9\xB7\xB6", + "\xF8\x69" => "\xE9\xB7\xA1", + "\xF8\x6A" => "\xE9\xB7\xAE", + "\xF8\x6B" => "\xE9\xB7\xA6", + "\xF8\x6C" => "\xE9\xB7\xB2", + "\xF8\x6D" => "\xE9\xB7\xB0", + "\xF8\x6E" => "\xE9\xB7\xA2", + "\xF8\x6F" => "\xE9\xB7\xAC", + "\xF8\x70" => "\xE9\xB7\xB4", + "\xF8\x71" => "\xE9\xB7\xB3", + "\xF8\x72" => "\xE9\xB7\xA8", + "\xF8\x73" => "\xE9\xB7\xAD", + "\xF8\x74" => "\xE9\xBB\x82", + "\xF8\x75" => "\xE9\xBB\x90", + "\xF8\x76" => "\xE9\xBB\xB2", + "\xF8\x77" => "\xE9\xBB\xB3", + "\xF8\x78" => "\xE9\xBC\x86", + "\xF8\x79" => "\xE9\xBC\x9C", + "\xF8\x7A" => "\xE9\xBC\xB8", + "\xF8\x7B" => "\xE9\xBC\xB7", + "\xF8\x7C" => "\xE9\xBC\xB6", + "\xF8\x7D" => "\xE9\xBD\x83", + "\xF8\x7E" => "\xE9\xBD\x8F", + "\xF8\xA1" => "\xE9\xBD\xB1", + "\xF8\xA2" => "\xE9\xBD\xB0", + "\xF8\xA3" => "\xE9\xBD\xAE", + "\xF8\xA4" => "\xE9\xBD\xAF", + "\xF8\xA5" => "\xE5\x9B\x93", + "\xF8\xA6" => "\xE5\x9B\x8D", + "\xF8\xA7" => "\xE5\xAD\x8E", + "\xF8\xA8" => "\xE5\xB1\xAD", + "\xF8\xA9" => "\xE6\x94\xAD", + "\xF8\xAA" => "\xE6\x9B\xAD", + "\xF8\xAB" => "\xE6\x9B\xAE", + "\xF8\xAC" => "\xE6\xAC\x93", + "\xF8\xAD" => "\xE7\x81\x9F", + "\xF8\xAE" => "\xE7\x81\xA1", + "\xF8\xAF" => "\xE7\x81\x9D", + "\xF8\xB0" => "\xE7\x81\xA0", + "\xF8\xB1" => "\xE7\x88\xA3", + "\xF8\xB2" => "\xE7\x93\x9B", + "\xF8\xB3" => "\xE7\x93\xA5", + "\xF8\xB4" => "\xE7\x9F\x95", + "\xF8\xB5" => "\xE7\xA4\xB8", + "\xF8\xB6" => "\xE7\xA6\xB7", + "\xF8\xB7" => "\xE7\xA6\xB6", + "\xF8\xB8" => "\xE7\xB1\xAA", + "\xF8\xB9" => "\xE7\xBA\x97", + "\xF8\xBA" => "\xE7\xBE\x89", + "\xF8\xBB" => "\xE8\x89\xAD", + "\xF8\xBC" => "\xE8\x99\x83", + "\xF8\xBD" => "\xE8\xA0\xB8", + "\xF8\xBE" => "\xE8\xA0\xB7", + "\xF8\xBF" => "\xE8\xA0\xB5", + "\xF8\xC0" => "\xE8\xA1\x8B", + "\xF8\xC1" => "\xE8\xAE\x94", + "\xF8\xC2" => "\xE8\xAE\x95", + "\xF8\xC3" => "\xE8\xBA\x9E", + "\xF8\xC4" => "\xE8\xBA\x9F", + "\xF8\xC5" => "\xE8\xBA\xA0", + "\xF8\xC6" => "\xE8\xBA\x9D", + "\xF8\xC7" => "\xE9\x86\xBE", + "\xF8\xC8" => "\xE9\x86\xBD", + "\xF8\xC9" => "\xE9\x87\x82", + "\xF8\xCA" => "\xE9\x91\xAB", + "\xF8\xCB" => "\xE9\x91\xA8", + "\xF8\xCC" => "\xE9\x91\xA9", + "\xF8\xCD" => "\xE9\x9B\xA5", + "\xF8\xCE" => "\xE9\x9D\x86", + "\xF8\xCF" => "\xE9\x9D\x83", + "\xF8\xD0" => "\xE9\x9D\x87", + "\xF8\xD1" => "\xE9\x9F\x87", + "\xF8\xD2" => "\xE9\x9F\xA5", + "\xF8\xD3" => "\xE9\xA9\x9E", + "\xF8\xD4" => "\xE9\xAB\x95", + "\xF8\xD5" => "\xE9\xAD\x99", + "\xF8\xD6" => "\xE9\xB1\xA3", + "\xF8\xD7" => "\xE9\xB1\xA7", + "\xF8\xD8" => "\xE9\xB1\xA6", + "\xF8\xD9" => "\xE9\xB1\xA2", + "\xF8\xDA" => "\xE9\xB1\x9E", + "\xF8\xDB" => "\xE9\xB1\xA0", + "\xF8\xDC" => "\xE9\xB8\x82", + "\xF8\xDD" => "\xE9\xB7\xBE", + "\xF8\xDE" => "\xE9\xB8\x87", + "\xF8\xDF" => "\xE9\xB8\x83", + "\xF8\xE0" => "\xE9\xB8\x86", + "\xF8\xE1" => "\xE9\xB8\x85", + "\xF8\xE2" => "\xE9\xB8\x80", + "\xF8\xE3" => "\xE9\xB8\x81", + "\xF8\xE4" => "\xE9\xB8\x89", + "\xF8\xE5" => "\xE9\xB7\xBF", + "\xF8\xE6" => "\xE9\xB7\xBD", + "\xF8\xE7" => "\xE9\xB8\x84", + "\xF8\xE8" => "\xE9\xBA\xA0", + "\xF8\xE9" => "\xE9\xBC\x9E", + "\xF8\xEA" => "\xE9\xBD\x86", + "\xF8\xEB" => "\xE9\xBD\xB4", + "\xF8\xEC" => "\xE9\xBD\xB5", + "\xF8\xED" => "\xE9\xBD\xB6", + "\xF8\xEE" => "\xE5\x9B\x94", + "\xF8\xEF" => "\xE6\x94\xAE", + "\xF8\xF0" => "\xE6\x96\xB8", + "\xF8\xF1" => "\xE6\xAC\x98", + "\xF8\xF2" => "\xE6\xAC\x99", + "\xF8\xF3" => "\xE6\xAC\x97", + "\xF8\xF4" => "\xE6\xAC\x9A", + "\xF8\xF5" => "\xE7\x81\xA2", + "\xF8\xF6" => "\xE7\x88\xA6", + "\xF8\xF7" => "\xE7\x8A\xAA", + "\xF8\xF8" => "\xE7\x9F\x98", + "\xF8\xF9" => "\xE7\x9F\x99", + "\xF8\xFA" => "\xE7\xA4\xB9", + "\xF8\xFB" => "\xE7\xB1\xA9", + "\xF8\xFC" => "\xE7\xB1\xAB", + "\xF8\xFD" => "\xE7\xB3\xB6", + "\xF8\xFE" => "\xE7\xBA\x9A", + "\xF9\x40" => "\xE7\xBA\x98", + "\xF9\x41" => "\xE7\xBA\x9B", + "\xF9\x42" => "\xE7\xBA\x99", + "\xF9\x43" => "\xE8\x87\xA0", + "\xF9\x44" => "\xE8\x87\xA1", + "\xF9\x45" => "\xE8\x99\x86", + "\xF9\x46" => "\xE8\x99\x87", + "\xF9\x47" => "\xE8\x99\x88", + "\xF9\x48" => "\xE8\xA5\xB9", + "\xF9\x49" => "\xE8\xA5\xBA", + "\xF9\x4A" => "\xE8\xA5\xBC", + "\xF9\x4B" => "\xE8\xA5\xBB", + "\xF9\x4C" => "\xE8\xA7\xBF", + "\xF9\x4D" => "\xE8\xAE\x98", + "\xF9\x4E" => "\xE8\xAE\x99", + "\xF9\x4F" => "\xE8\xBA\xA5", + "\xF9\x50" => "\xE8\xBA\xA4", + "\xF9\x51" => "\xE8\xBA\xA3", + "\xF9\x52" => "\xE9\x91\xAE", + "\xF9\x53" => "\xE9\x91\xAD", + "\xF9\x54" => "\xE9\x91\xAF", + "\xF9\x55" => "\xE9\x91\xB1", + "\xF9\x56" => "\xE9\x91\xB3", + "\xF9\x57" => "\xE9\x9D\x89", + "\xF9\x58" => "\xE9\xA1\xB2", + "\xF9\x59" => "\xE9\xA5\x9F", + "\xF9\x5A" => "\xE9\xB1\xA8", + "\xF9\x5B" => "\xE9\xB1\xAE", + "\xF9\x5C" => "\xE9\xB1\xAD", + "\xF9\x5D" => "\xE9\xB8\x8B", + "\xF9\x5E" => "\xE9\xB8\x8D", + "\xF9\x5F" => "\xE9\xB8\x90", + "\xF9\x60" => "\xE9\xB8\x8F", + "\xF9\x61" => "\xE9\xB8\x92", + "\xF9\x62" => "\xE9\xB8\x91", + "\xF9\x63" => "\xE9\xBA\xA1", + "\xF9\x64" => "\xE9\xBB\xB5", + "\xF9\x65" => "\xE9\xBC\x89", + "\xF9\x66" => "\xE9\xBD\x87", + "\xF9\x67" => "\xE9\xBD\xB8", + "\xF9\x68" => "\xE9\xBD\xBB", + "\xF9\x69" => "\xE9\xBD\xBA", + "\xF9\x6A" => "\xE9\xBD\xB9", + "\xF9\x6B" => "\xE5\x9C\x9E", + "\xF9\x6C" => "\xE7\x81\xA6", + "\xF9\x6D" => "\xE7\xB1\xAF", + "\xF9\x6E" => "\xE8\xA0\xBC", + "\xF9\x6F" => "\xE8\xB6\xB2", + "\xF9\x70" => "\xE8\xBA\xA6", + "\xF9\x71" => "\xE9\x87\x83", + "\xF9\x72" => "\xE9\x91\xB4", + "\xF9\x73" => "\xE9\x91\xB8", + "\xF9\x74" => "\xE9\x91\xB6", + "\xF9\x75" => "\xE9\x91\xB5", + "\xF9\x76" => "\xE9\xA9\xA0", + "\xF9\x77" => "\xE9\xB1\xB4", + "\xF9\x78" => "\xE9\xB1\xB3", + "\xF9\x79" => "\xE9\xB1\xB1", + "\xF9\x7A" => "\xE9\xB1\xB5", + "\xF9\x7B" => "\xE9\xB8\x94", + "\xF9\x7C" => "\xE9\xB8\x93", + "\xF9\x7D" => "\xE9\xBB\xB6", + "\xF9\x7E" => "\xE9\xBC\x8A", + "\xF9\xA1" => "\xE9\xBE\xA4", + "\xF9\xA2" => "\xE7\x81\xA8", + "\xF9\xA3" => "\xE7\x81\xA5", + "\xF9\xA4" => "\xE7\xB3\xB7", + "\xF9\xA5" => "\xE8\x99\xAA", + "\xF9\xA6" => "\xE8\xA0\xBE", + "\xF9\xA7" => "\xE8\xA0\xBD", + "\xF9\xA8" => "\xE8\xA0\xBF", + "\xF9\xA9" => "\xE8\xAE\x9E", + "\xF9\xAA" => "\xE8\xB2\x9C", + "\xF9\xAB" => "\xE8\xBA\xA9", + "\xF9\xAC" => "\xE8\xBB\x89", + "\xF9\xAD" => "\xE9\x9D\x8B", + "\xF9\xAE" => "\xE9\xA1\xB3", + "\xF9\xAF" => "\xE9\xA1\xB4", + "\xF9\xB0" => "\xE9\xA3\x8C", + "\xF9\xB1" => "\xE9\xA5\xA1", + "\xF9\xB2" => "\xE9\xA6\xAB", + "\xF9\xB3" => "\xE9\xA9\xA4", + "\xF9\xB4" => "\xE9\xA9\xA6", + "\xF9\xB5" => "\xE9\xA9\xA7", + "\xF9\xB6" => "\xE9\xAC\xA4", + "\xF9\xB7" => "\xE9\xB8\x95", + "\xF9\xB8" => "\xE9\xB8\x97", + "\xF9\xB9" => "\xE9\xBD\x88", + "\xF9\xBA" => "\xE6\x88\x87", + "\xF9\xBB" => "\xE6\xAC\x9E", + "\xF9\xBC" => "\xE7\x88\xA7", + "\xF9\xBD" => "\xE8\x99\x8C", + "\xF9\xBE" => "\xE8\xBA\xA8", + "\xF9\xBF" => "\xE9\x92\x82", + "\xF9\xC0" => "\xE9\x92\x80", + "\xF9\xC1" => "\xE9\x92\x81", + "\xF9\xC2" => "\xE9\xA9\xA9", + "\xF9\xC3" => "\xE9\xA9\xA8", + "\xF9\xC4" => "\xE9\xAC\xAE", + "\xF9\xC5" => "\xE9\xB8\x99", + "\xF9\xC6" => "\xE7\x88\xA9", + "\xF9\xC7" => "\xE8\x99\x8B", + "\xF9\xC8" => "\xE8\xAE\x9F", + "\xF9\xC9" => "\xE9\x92\x83", + "\xF9\xCA" => "\xE9\xB1\xB9", + "\xF9\xCB" => "\xE9\xBA\xB7", + "\xF9\xCC" => "\xE7\x99\xB5", + "\xF9\xCD" => "\xE9\xA9\xAB", + "\xF9\xCE" => "\xE9\xB1\xBA", + "\xF9\xCF" => "\xE9\xB8\x9D", + "\xF9\xD0" => "\xE7\x81\xA9", + "\xF9\xD1" => "\xE7\x81\xAA", + "\xF9\xD2" => "\xE9\xBA\xA4", + "\xF9\xD3" => "\xE9\xBD\xBE", + "\xF9\xD4" => "\xE9\xBD\x89", + "\xF9\xD5" => "\xE9\xBE\x98", + ); + return strtr($string, $transform); +} + +?>
\ No newline at end of file diff --git a/phpBB/includes/utf/utf_tools.php b/phpBB/includes/utf/utf_tools.php index 4c6c26909a..f9558c12b4 100644 --- a/phpBB/includes/utf/utf_tools.php +++ b/phpBB/includes/utf/utf_tools.php @@ -6,9 +6,6 @@ * @copyright (c) 2006 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License * -* @todo make sure the replacements are called correctly -* already done: strtolower, strtoupper, ucfirst, str_split, strrpos, strlen (hopefully!), strpos, substr, htmlspecialchars -* remaining: strspn, chr, ord */ /** @@ -18,6 +15,9 @@ if (!defined('IN_PHPBB')) exit; } +// Enforce ASCII only string handling +setlocale(LC_CTYPE, 'C'); + /** * UTF-8 tools * @@ -104,6 +104,8 @@ if (!extension_loaded('xml')) // if mbstring is not loaded, we go into native mode. if (extension_loaded('mbstring')) { + mb_internal_encoding('UTF-8'); + /** * UTF-8 aware alternative to strrpos * Find position of last occurrence of a char in a string @@ -305,7 +307,7 @@ else { if (!is_int($offset)) { - trigger_error('utf8_strpos: Offset must be an integer', E_USER_ERROR); + trigger_error('utf8_strpos: Offset must be an integer', E_USER_ERROR); return false; } @@ -320,116 +322,6 @@ else } } - $UTF8_UPPER_TO_LOWER = array( - "\x41" => "\x61", "\x42" => "\x62", "\x43" => "\x63", "\x44" => "\x64", - "\x45" => "\x65", "\x46" => "\x66", "\x47" => "\x67", "\x48" => "\x68", - "\x49" => "\x69", "\x4A" => "\x6A", "\x4B" => "\x6B", "\x4C" => "\x6C", - "\x4D" => "\x6D", "\x4E" => "\x6E", "\x4F" => "\x6F", "\x50" => "\x70", - "\x51" => "\x71", "\x52" => "\x72", "\x53" => "\x73", "\x54" => "\x74", - "\x55" => "\x75", "\x56" => "\x76", "\x57" => "\x77", "\x58" => "\x78", - "\x59" => "\x79", "\x5A" => "\x7A", "\xC3\x80" => "\xC3\xA0", "\xC3\x81" => "\xC3\xA1", - "\xC3\x82" => "\xC3\xA2", "\xC3\x83" => "\xC3\xA3", "\xC3\x84" => "\xC3\xA4", "\xC3\x85" => "\xC3\xA5", - "\xC3\x86" => "\xC3\xA6", "\xC3\x87" => "\xC3\xA7", "\xC3\x88" => "\xC3\xA8", "\xC3\x89" => "\xC3\xA9", - "\xC3\x8A" => "\xC3\xAA", "\xC3\x8B" => "\xC3\xAB", "\xC3\x8C" => "\xC3\xAC", "\xC3\x8D" => "\xC3\xAD", - "\xC3\x8E" => "\xC3\xAE", "\xC3\x8F" => "\xC3\xAF", "\xC3\x90" => "\xC3\xB0", "\xC3\x91" => "\xC3\xB1", - "\xC3\x92" => "\xC3\xB2", "\xC3\x93" => "\xC3\xB3", "\xC3\x94" => "\xC3\xB4", "\xC3\x95" => "\xC3\xB5", - "\xC3\x96" => "\xC3\xB6", "\xC3\x98" => "\xC3\xB8", "\xC3\x99" => "\xC3\xB9", "\xC3\x9A" => "\xC3\xBA", - "\xC3\x9B" => "\xC3\xBB", "\xC3\x9C" => "\xC3\xBC", "\xC3\x9D" => "\xC3\xBD", "\xC3\x9E" => "\xC3\xBE", - "\xC4\x80" => "\xC4\x81", "\xC4\x82" => "\xC4\x83", "\xC4\x84" => "\xC4\x85", "\xC4\x86" => "\xC4\x87", - "\xC4\x88" => "\xC4\x89", "\xC4\x8A" => "\xC4\x8B", "\xC4\x8C" => "\xC4\x8D", "\xC4\x8E" => "\xC4\x8F", - "\xC4\x90" => "\xC4\x91", "\xC4\x92" => "\xC4\x93", "\xC4\x96" => "\xC4\x97", "\xC4\x98" => "\xC4\x99", - "\xC4\x9A" => "\xC4\x9B", "\xC4\x9C" => "\xC4\x9D", "\xC4\x9E" => "\xC4\x9F", "\xC4\xA0" => "\xC4\xA1", - "\xC4\xA2" => "\xC4\xA3", "\xC4\xA4" => "\xC4\xA5", "\xC4\xA6" => "\xC4\xA7", "\xC4\xA8" => "\xC4\xA9", - "\xC4\xAA" => "\xC4\xAB", "\xC4\xAE" => "\xC4\xAF", "\xC4\xB4" => "\xC4\xB5", "\xC4\xB6" => "\xC4\xB7", - "\xC4\xB9" => "\xC4\xBA", "\xC4\xBB" => "\xC4\xBC", "\xC4\xBD" => "\xC4\xBE", "\xC5\x81" => "\xC5\x82", - "\xC5\x83" => "\xC5\x84", "\xC5\x85" => "\xC5\x86", "\xC5\x87" => "\xC5\x88", "\xC5\x8A" => "\xC5\x8B", - "\xC5\x8C" => "\xC5\x8D", "\xC5\x90" => "\xC5\x91", "\xC5\x94" => "\xC5\x95", "\xC5\x96" => "\xC5\x97", - "\xC5\x98" => "\xC5\x99", "\xC5\x9A" => "\xC5\x9B", "\xC5\x9C" => "\xC5\x9D", "\xC5\x9E" => "\xC5\x9F", - "\xC5\xA0" => "\xC5\xA1", "\xC5\xA2" => "\xC5\xA3", "\xC5\xA4" => "\xC5\xA5", "\xC5\xA6" => "\xC5\xA7", - "\xC5\xA8" => "\xC5\xA9", "\xC5\xAA" => "\xC5\xAB", "\xC5\xAC" => "\xC5\xAD", "\xC5\xAE" => "\xC5\xAF", - "\xC5\xB0" => "\xC5\xB1", "\xC5\xB2" => "\xC5\xB3", "\xC5\xB4" => "\xC5\xB5", "\xC5\xB6" => "\xC5\xB7", - "\xC5\xB8" => "\xC3\xBF", "\xC5\xB9" => "\xC5\xBA", "\xC5\xBB" => "\xC5\xBC", "\xC5\xBD" => "\xC5\xBE", - "\xC6\xA0" => "\xC6\xA1", "\xC6\xAF" => "\xC6\xB0", "\xC8\x98" => "\xC8\x99", "\xC8\x9A" => "\xC8\x9B", - "\xCE\x86" => "\xCE\xAC", "\xCE\x88" => "\xCE\xAD", "\xCE\x89" => "\xCE\xAE", "\xCE\x8A" => "\xCE\xAF", - "\xCE\x8C" => "\xCF\x8C", "\xCE\x8E" => "\xCF\x8D", "\xCE\x8F" => "\xCF\x8E", "\xCE\x91" => "\xCE\xB1", - "\xCE\x92" => "\xCE\xB2", "\xCE\x93" => "\xCE\xB3", "\xCE\x94" => "\xCE\xB4", "\xCE\x95" => "\xCE\xB5", - "\xCE\x96" => "\xCE\xB6", "\xCE\x97" => "\xCE\xB7", "\xCE\x98" => "\xCE\xB8", "\xCE\x99" => "\xCE\xB9", - "\xCE\x9A" => "\xCE\xBA", "\xCE\x9B" => "\xCE\xBB", "\xCE\x9C" => "\xCE\xBC", "\xCE\x9D" => "\xCE\xBD", - "\xCE\x9E" => "\xCE\xBE", "\xCE\x9F" => "\xCE\xBF", "\xCE\xA0" => "\xCF\x80", "\xCE\xA1" => "\xCF\x81", - "\xCE\xA3" => "\xCF\x83", "\xCE\xA4" => "\xCF\x84", "\xCE\xA5" => "\xCF\x85", "\xCE\xA6" => "\xCF\x86", - "\xCE\xA7" => "\xCF\x87", "\xCE\xA8" => "\xCF\x88", "\xCE\xA9" => "\xCF\x89", "\xCE\xAA" => "\xCF\x8A", - "\xCE\xAB" => "\xCF\x8B", "\xD0\x81" => "\xD1\x91", "\xD0\x82" => "\xD1\x92", "\xD0\x83" => "\xD1\x93", - "\xD0\x84" => "\xD1\x94", "\xD0\x85" => "\xD1\x95", "\xD0\x86" => "\xD1\x96", "\xD0\x87" => "\xD1\x97", - "\xD0\x88" => "\xD1\x98", "\xD0\x89" => "\xD1\x99", "\xD0\x8A" => "\xD1\x9A", "\xD0\x8B" => "\xD1\x9B", - "\xD0\x8C" => "\xD1\x9C", "\xD0\x8E" => "\xD1\x9E", "\xD0\x8F" => "\xD1\x9F", "\xD0\x90" => "\xD0\xB0", - "\xD0\x91" => "\xD0\xB1", "\xD0\x92" => "\xD0\xB2", "\xD0\x93" => "\xD0\xB3", "\xD0\x94" => "\xD0\xB4", - "\xD0\x95" => "\xD0\xB5", "\xD0\x96" => "\xD0\xB6", "\xD0\x97" => "\xD0\xB7", "\xD0\x98" => "\xD0\xB8", - "\xD0\x99" => "\xD0\xB9", "\xD0\x9A" => "\xD0\xBA", "\xD0\x9B" => "\xD0\xBB", "\xD0\x9C" => "\xD0\xBC", - "\xD0\x9D" => "\xD0\xBD", "\xD0\x9E" => "\xD0\xBE", "\xD0\x9F" => "\xD0\xBF", "\xD0\xA0" => "\xD1\x80", - "\xD0\xA1" => "\xD1\x81", "\xD0\xA2" => "\xD1\x82", "\xD0\xA3" => "\xD1\x83", "\xD0\xA4" => "\xD1\x84", - "\xD0\xA5" => "\xD1\x85", "\xD0\xA6" => "\xD1\x86", "\xD0\xA7" => "\xD1\x87", "\xD0\xA8" => "\xD1\x88", - "\xD0\xA9" => "\xD1\x89", "\xD0\xAA" => "\xD1\x8A", "\xD0\xAB" => "\xD1\x8B", "\xD0\xAC" => "\xD1\x8C", - "\xD0\xAD" => "\xD1\x8D", "\xD0\xAE" => "\xD1\x8E", "\xD0\xAF" => "\xD1\x8F", "\xD2\x90" => "\xD2\x91", - "\xE1\xB8\x82" => "\xE1\xB8\x83", "\xE1\xB8\x8A" => "\xE1\xB8\x8B", "\xE1\xB8\x9E" => "\xE1\xB8\x9F", "\xE1\xB9\x80" => "\xE1\xB9\x81", - "\xE1\xB9\x96" => "\xE1\xB9\x97", "\xE1\xB9\xA0" => "\xE1\xB9\xA1", "\xE1\xB9\xAA" => "\xE1\xB9\xAB", "\xE1\xBA\x80" => "\xE1\xBA\x81", - "\xE1\xBA\x82" => "\xE1\xBA\x83", "\xE1\xBA\x84" => "\xE1\xBA\x85", "\xE1\xBB\xB2" => "\xE1\xBB\xB3" - ); - - $UTF8_LOWER_TO_UPPER = array( - "\x61" => "\x41", "\x62" => "\x42", "\x63" => "\x43", "\x64" => "\x44", - "\x65" => "\x45", "\x66" => "\x46", "\x67" => "\x47", "\x68" => "\x48", - "\x69" => "\x49", "\x6A" => "\x4A", "\x6B" => "\x4B", "\x6C" => "\x4C", - "\x6D" => "\x4D", "\x6E" => "\x4E", "\x6F" => "\x4F", "\x70" => "\x50", - "\x71" => "\x51", "\x72" => "\x52", "\x73" => "\x53", "\x74" => "\x54", - "\x75" => "\x55", "\x76" => "\x56", "\x77" => "\x57", "\x78" => "\x58", - "\x79" => "\x59", "\x7A" => "\x5A", "\xC3\xA0" => "\xC3\x80", "\xC3\xA1" => "\xC3\x81", - "\xC3\xA2" => "\xC3\x82", "\xC3\xA3" => "\xC3\x83", "\xC3\xA4" => "\xC3\x84", "\xC3\xA5" => "\xC3\x85", - "\xC3\xA6" => "\xC3\x86", "\xC3\xA7" => "\xC3\x87", "\xC3\xA8" => "\xC3\x88", "\xC3\xA9" => "\xC3\x89", - "\xC3\xAA" => "\xC3\x8A", "\xC3\xAB" => "\xC3\x8B", "\xC3\xAC" => "\xC3\x8C", "\xC3\xAD" => "\xC3\x8D", - "\xC3\xAE" => "\xC3\x8E", "\xC3\xAF" => "\xC3\x8F", "\xC3\xB0" => "\xC3\x90", "\xC3\xB1" => "\xC3\x91", - "\xC3\xB2" => "\xC3\x92", "\xC3\xB3" => "\xC3\x93", "\xC3\xB4" => "\xC3\x94", "\xC3\xB5" => "\xC3\x95", - "\xC3\xB6" => "\xC3\x96", "\xC3\xB8" => "\xC3\x98", "\xC3\xB9" => "\xC3\x99", "\xC3\xBA" => "\xC3\x9A", - "\xC3\xBB" => "\xC3\x9B", "\xC3\xBC" => "\xC3\x9C", "\xC3\xBD" => "\xC3\x9D", "\xC3\xBE" => "\xC3\x9E", - "\xC3\xBF" => "\xC5\xB8", "\xC4\x81" => "\xC4\x80", "\xC4\x83" => "\xC4\x82", "\xC4\x85" => "\xC4\x84", - "\xC4\x87" => "\xC4\x86", "\xC4\x89" => "\xC4\x88", "\xC4\x8B" => "\xC4\x8A", "\xC4\x8D" => "\xC4\x8C", - "\xC4\x8F" => "\xC4\x8E", "\xC4\x91" => "\xC4\x90", "\xC4\x93" => "\xC4\x92", "\xC4\x97" => "\xC4\x96", - "\xC4\x99" => "\xC4\x98", "\xC4\x9B" => "\xC4\x9A", "\xC4\x9D" => "\xC4\x9C", "\xC4\x9F" => "\xC4\x9E", - "\xC4\xA1" => "\xC4\xA0", "\xC4\xA3" => "\xC4\xA2", "\xC4\xA5" => "\xC4\xA4", "\xC4\xA7" => "\xC4\xA6", - "\xC4\xA9" => "\xC4\xA8", "\xC4\xAB" => "\xC4\xAA", "\xC4\xAF" => "\xC4\xAE", "\xC4\xB5" => "\xC4\xB4", - "\xC4\xB7" => "\xC4\xB6", "\xC4\xBA" => "\xC4\xB9", "\xC4\xBC" => "\xC4\xBB", "\xC4\xBE" => "\xC4\xBD", - "\xC5\x82" => "\xC5\x81", "\xC5\x84" => "\xC5\x83", "\xC5\x86" => "\xC5\x85", "\xC5\x88" => "\xC5\x87", - "\xC5\x8B" => "\xC5\x8A", "\xC5\x8D" => "\xC5\x8C", "\xC5\x91" => "\xC5\x90", "\xC5\x95" => "\xC5\x94", - "\xC5\x97" => "\xC5\x96", "\xC5\x99" => "\xC5\x98", "\xC5\x9B" => "\xC5\x9A", "\xC5\x9D" => "\xC5\x9C", - "\xC5\x9F" => "\xC5\x9E", "\xC5\xA1" => "\xC5\xA0", "\xC5\xA3" => "\xC5\xA2", "\xC5\xA5" => "\xC5\xA4", - "\xC5\xA7" => "\xC5\xA6", "\xC5\xA9" => "\xC5\xA8", "\xC5\xAB" => "\xC5\xAA", "\xC5\xAD" => "\xC5\xAC", - "\xC5\xAF" => "\xC5\xAE", "\xC5\xB1" => "\xC5\xB0", "\xC5\xB3" => "\xC5\xB2", "\xC5\xB5" => "\xC5\xB4", - "\xC5\xB7" => "\xC5\xB6", "\xC5\xBA" => "\xC5\xB9", "\xC5\xBC" => "\xC5\xBB", "\xC5\xBE" => "\xC5\xBD", - "\xC6\xA1" => "\xC6\xA0", "\xC6\xB0" => "\xC6\xAF", "\xC8\x99" => "\xC8\x98", "\xC8\x9B" => "\xC8\x9A", - "\xCE\xAC" => "\xCE\x86", "\xCE\xAD" => "\xCE\x88", "\xCE\xAE" => "\xCE\x89", "\xCE\xAF" => "\xCE\x8A", - "\xCE\xB1" => "\xCE\x91", "\xCE\xB2" => "\xCE\x92", "\xCE\xB3" => "\xCE\x93", "\xCE\xB4" => "\xCE\x94", - "\xCE\xB5" => "\xCE\x95", "\xCE\xB6" => "\xCE\x96", "\xCE\xB7" => "\xCE\x97", "\xCE\xB8" => "\xCE\x98", - "\xCE\xB9" => "\xCE\x99", "\xCE\xBA" => "\xCE\x9A", "\xCE\xBB" => "\xCE\x9B", "\xCE\xBC" => "\xCE\x9C", - "\xCE\xBD" => "\xCE\x9D", "\xCE\xBE" => "\xCE\x9E", "\xCE\xBF" => "\xCE\x9F", "\xCF\x80" => "\xCE\xA0", - "\xCF\x81" => "\xCE\xA1", "\xCF\x83" => "\xCE\xA3", "\xCF\x84" => "\xCE\xA4", "\xCF\x85" => "\xCE\xA5", - "\xCF\x86" => "\xCE\xA6", "\xCF\x87" => "\xCE\xA7", "\xCF\x88" => "\xCE\xA8", "\xCF\x89" => "\xCE\xA9", - "\xCF\x8A" => "\xCE\xAA", "\xCF\x8B" => "\xCE\xAB", "\xCF\x8C" => "\xCE\x8C", "\xCF\x8D" => "\xCE\x8E", - "\xCF\x8E" => "\xCE\x8F", "\xD0\xB0" => "\xD0\x90", "\xD0\xB1" => "\xD0\x91", "\xD0\xB2" => "\xD0\x92", - "\xD0\xB3" => "\xD0\x93", "\xD0\xB4" => "\xD0\x94", "\xD0\xB5" => "\xD0\x95", "\xD0\xB6" => "\xD0\x96", - "\xD0\xB7" => "\xD0\x97", "\xD0\xB8" => "\xD0\x98", "\xD0\xB9" => "\xD0\x99", "\xD0\xBA" => "\xD0\x9A", - "\xD0\xBB" => "\xD0\x9B", "\xD0\xBC" => "\xD0\x9C", "\xD0\xBD" => "\xD0\x9D", "\xD0\xBE" => "\xD0\x9E", - "\xD0\xBF" => "\xD0\x9F", "\xD1\x80" => "\xD0\xA0", "\xD1\x81" => "\xD0\xA1", "\xD1\x82" => "\xD0\xA2", - "\xD1\x83" => "\xD0\xA3", "\xD1\x84" => "\xD0\xA4", "\xD1\x85" => "\xD0\xA5", "\xD1\x86" => "\xD0\xA6", - "\xD1\x87" => "\xD0\xA7", "\xD1\x88" => "\xD0\xA8", "\xD1\x89" => "\xD0\xA9", "\xD1\x8A" => "\xD0\xAA", - "\xD1\x8B" => "\xD0\xAB", "\xD1\x8C" => "\xD0\xAC", "\xD1\x8D" => "\xD0\xAD", "\xD1\x8E" => "\xD0\xAE", - "\xD1\x8F" => "\xD0\xAF", "\xD1\x91" => "\xD0\x81", "\xD1\x92" => "\xD0\x82", "\xD1\x93" => "\xD0\x83", - "\xD1\x94" => "\xD0\x84", "\xD1\x95" => "\xD0\x85", "\xD1\x96" => "\xD0\x86", "\xD1\x97" => "\xD0\x87", - "\xD1\x98" => "\xD0\x88", "\xD1\x99" => "\xD0\x89", "\xD1\x9A" => "\xD0\x8A", "\xD1\x9B" => "\xD0\x8B", - "\xD1\x9C" => "\xD0\x8C", "\xD1\x9E" => "\xD0\x8E", "\xD1\x9F" => "\xD0\x8F", "\xD2\x91" => "\xD2\x90", - "\xE1\xB8\x83" => "\xE1\xB8\x82", "\xE1\xB8\x8B" => "\xE1\xB8\x8A", "\xE1\xB8\x9F" => "\xE1\xB8\x9E", "\xE1\xB9\x81" => "\xE1\xB9\x80", - "\xE1\xB9\x97" => "\xE1\xB9\x96", "\xE1\xB9\xA1" => "\xE1\xB9\xA0", "\xE1\xB9\xAB" => "\xE1\xB9\xAA", "\xE1\xBA\x81" => "\xE1\xBA\x80", - "\xE1\xBA\x83" => "\xE1\xBA\x82", "\xE1\xBA\x85" => "\xE1\xBA\x84", "\xE1\xBB\xB3" => "\xE1\xBB\xB2" - ); - /** * UTF-8 aware alternative to strtolower * Make a string lowercase @@ -443,9 +335,56 @@ else */ function utf8_strtolower($string) { - global $UTF8_UPPER_TO_LOWER; - - return strtr($string, $UTF8_UPPER_TO_LOWER); + static $UTF8_UPPER_TO_LOWER = array( + "\xC3\x80" => "\xC3\xA0", "\xC3\x81" => "\xC3\xA1", + "\xC3\x82" => "\xC3\xA2", "\xC3\x83" => "\xC3\xA3", "\xC3\x84" => "\xC3\xA4", "\xC3\x85" => "\xC3\xA5", + "\xC3\x86" => "\xC3\xA6", "\xC3\x87" => "\xC3\xA7", "\xC3\x88" => "\xC3\xA8", "\xC3\x89" => "\xC3\xA9", + "\xC3\x8A" => "\xC3\xAA", "\xC3\x8B" => "\xC3\xAB", "\xC3\x8C" => "\xC3\xAC", "\xC3\x8D" => "\xC3\xAD", + "\xC3\x8E" => "\xC3\xAE", "\xC3\x8F" => "\xC3\xAF", "\xC3\x90" => "\xC3\xB0", "\xC3\x91" => "\xC3\xB1", + "\xC3\x92" => "\xC3\xB2", "\xC3\x93" => "\xC3\xB3", "\xC3\x94" => "\xC3\xB4", "\xC3\x95" => "\xC3\xB5", + "\xC3\x96" => "\xC3\xB6", "\xC3\x98" => "\xC3\xB8", "\xC3\x99" => "\xC3\xB9", "\xC3\x9A" => "\xC3\xBA", + "\xC3\x9B" => "\xC3\xBB", "\xC3\x9C" => "\xC3\xBC", "\xC3\x9D" => "\xC3\xBD", "\xC3\x9E" => "\xC3\xBE", + "\xC4\x80" => "\xC4\x81", "\xC4\x82" => "\xC4\x83", "\xC4\x84" => "\xC4\x85", "\xC4\x86" => "\xC4\x87", + "\xC4\x88" => "\xC4\x89", "\xC4\x8A" => "\xC4\x8B", "\xC4\x8C" => "\xC4\x8D", "\xC4\x8E" => "\xC4\x8F", + "\xC4\x90" => "\xC4\x91", "\xC4\x92" => "\xC4\x93", "\xC4\x96" => "\xC4\x97", "\xC4\x98" => "\xC4\x99", + "\xC4\x9A" => "\xC4\x9B", "\xC4\x9C" => "\xC4\x9D", "\xC4\x9E" => "\xC4\x9F", "\xC4\xA0" => "\xC4\xA1", + "\xC4\xA2" => "\xC4\xA3", "\xC4\xA4" => "\xC4\xA5", "\xC4\xA6" => "\xC4\xA7", "\xC4\xA8" => "\xC4\xA9", + "\xC4\xAA" => "\xC4\xAB", "\xC4\xAE" => "\xC4\xAF", "\xC4\xB4" => "\xC4\xB5", "\xC4\xB6" => "\xC4\xB7", + "\xC4\xB9" => "\xC4\xBA", "\xC4\xBB" => "\xC4\xBC", "\xC4\xBD" => "\xC4\xBE", "\xC5\x81" => "\xC5\x82", + "\xC5\x83" => "\xC5\x84", "\xC5\x85" => "\xC5\x86", "\xC5\x87" => "\xC5\x88", "\xC5\x8A" => "\xC5\x8B", + "\xC5\x8C" => "\xC5\x8D", "\xC5\x90" => "\xC5\x91", "\xC5\x94" => "\xC5\x95", "\xC5\x96" => "\xC5\x97", + "\xC5\x98" => "\xC5\x99", "\xC5\x9A" => "\xC5\x9B", "\xC5\x9C" => "\xC5\x9D", "\xC5\x9E" => "\xC5\x9F", + "\xC5\xA0" => "\xC5\xA1", "\xC5\xA2" => "\xC5\xA3", "\xC5\xA4" => "\xC5\xA5", "\xC5\xA6" => "\xC5\xA7", + "\xC5\xA8" => "\xC5\xA9", "\xC5\xAA" => "\xC5\xAB", "\xC5\xAC" => "\xC5\xAD", "\xC5\xAE" => "\xC5\xAF", + "\xC5\xB0" => "\xC5\xB1", "\xC5\xB2" => "\xC5\xB3", "\xC5\xB4" => "\xC5\xB5", "\xC5\xB6" => "\xC5\xB7", + "\xC5\xB8" => "\xC3\xBF", "\xC5\xB9" => "\xC5\xBA", "\xC5\xBB" => "\xC5\xBC", "\xC5\xBD" => "\xC5\xBE", + "\xC6\xA0" => "\xC6\xA1", "\xC6\xAF" => "\xC6\xB0", "\xC8\x98" => "\xC8\x99", "\xC8\x9A" => "\xC8\x9B", + "\xCE\x86" => "\xCE\xAC", "\xCE\x88" => "\xCE\xAD", "\xCE\x89" => "\xCE\xAE", "\xCE\x8A" => "\xCE\xAF", + "\xCE\x8C" => "\xCF\x8C", "\xCE\x8E" => "\xCF\x8D", "\xCE\x8F" => "\xCF\x8E", "\xCE\x91" => "\xCE\xB1", + "\xCE\x92" => "\xCE\xB2", "\xCE\x93" => "\xCE\xB3", "\xCE\x94" => "\xCE\xB4", "\xCE\x95" => "\xCE\xB5", + "\xCE\x96" => "\xCE\xB6", "\xCE\x97" => "\xCE\xB7", "\xCE\x98" => "\xCE\xB8", "\xCE\x99" => "\xCE\xB9", + "\xCE\x9A" => "\xCE\xBA", "\xCE\x9B" => "\xCE\xBB", "\xCE\x9C" => "\xCE\xBC", "\xCE\x9D" => "\xCE\xBD", + "\xCE\x9E" => "\xCE\xBE", "\xCE\x9F" => "\xCE\xBF", "\xCE\xA0" => "\xCF\x80", "\xCE\xA1" => "\xCF\x81", + "\xCE\xA3" => "\xCF\x83", "\xCE\xA4" => "\xCF\x84", "\xCE\xA5" => "\xCF\x85", "\xCE\xA6" => "\xCF\x86", + "\xCE\xA7" => "\xCF\x87", "\xCE\xA8" => "\xCF\x88", "\xCE\xA9" => "\xCF\x89", "\xCE\xAA" => "\xCF\x8A", + "\xCE\xAB" => "\xCF\x8B", "\xD0\x81" => "\xD1\x91", "\xD0\x82" => "\xD1\x92", "\xD0\x83" => "\xD1\x93", + "\xD0\x84" => "\xD1\x94", "\xD0\x85" => "\xD1\x95", "\xD0\x86" => "\xD1\x96", "\xD0\x87" => "\xD1\x97", + "\xD0\x88" => "\xD1\x98", "\xD0\x89" => "\xD1\x99", "\xD0\x8A" => "\xD1\x9A", "\xD0\x8B" => "\xD1\x9B", + "\xD0\x8C" => "\xD1\x9C", "\xD0\x8E" => "\xD1\x9E", "\xD0\x8F" => "\xD1\x9F", "\xD0\x90" => "\xD0\xB0", + "\xD0\x91" => "\xD0\xB1", "\xD0\x92" => "\xD0\xB2", "\xD0\x93" => "\xD0\xB3", "\xD0\x94" => "\xD0\xB4", + "\xD0\x95" => "\xD0\xB5", "\xD0\x96" => "\xD0\xB6", "\xD0\x97" => "\xD0\xB7", "\xD0\x98" => "\xD0\xB8", + "\xD0\x99" => "\xD0\xB9", "\xD0\x9A" => "\xD0\xBA", "\xD0\x9B" => "\xD0\xBB", "\xD0\x9C" => "\xD0\xBC", + "\xD0\x9D" => "\xD0\xBD", "\xD0\x9E" => "\xD0\xBE", "\xD0\x9F" => "\xD0\xBF", "\xD0\xA0" => "\xD1\x80", + "\xD0\xA1" => "\xD1\x81", "\xD0\xA2" => "\xD1\x82", "\xD0\xA3" => "\xD1\x83", "\xD0\xA4" => "\xD1\x84", + "\xD0\xA5" => "\xD1\x85", "\xD0\xA6" => "\xD1\x86", "\xD0\xA7" => "\xD1\x87", "\xD0\xA8" => "\xD1\x88", + "\xD0\xA9" => "\xD1\x89", "\xD0\xAA" => "\xD1\x8A", "\xD0\xAB" => "\xD1\x8B", "\xD0\xAC" => "\xD1\x8C", + "\xD0\xAD" => "\xD1\x8D", "\xD0\xAE" => "\xD1\x8E", "\xD0\xAF" => "\xD1\x8F", "\xD2\x90" => "\xD2\x91", + "\xE1\xB8\x82" => "\xE1\xB8\x83", "\xE1\xB8\x8A" => "\xE1\xB8\x8B", "\xE1\xB8\x9E" => "\xE1\xB8\x9F", "\xE1\xB9\x80" => "\xE1\xB9\x81", + "\xE1\xB9\x96" => "\xE1\xB9\x97", "\xE1\xB9\xA0" => "\xE1\xB9\xA1", "\xE1\xB9\xAA" => "\xE1\xB9\xAB", "\xE1\xBA\x80" => "\xE1\xBA\x81", + "\xE1\xBA\x82" => "\xE1\xBA\x83", "\xE1\xBA\x84" => "\xE1\xBA\x85", "\xE1\xBB\xB2" => "\xE1\xBB\xB3" + ); + + return strtr(strtolower($string), $UTF8_UPPER_TO_LOWER); } /** @@ -461,9 +400,56 @@ else */ function utf8_strtoupper($string) { - global $UTF8_LOWER_TO_UPPER; - - return strtr($string, $UTF8_LOWER_TO_UPPER); + static $UTF8_LOWER_TO_UPPER = array( + "\xC3\xA0" => "\xC3\x80", "\xC3\xA1" => "\xC3\x81", + "\xC3\xA2" => "\xC3\x82", "\xC3\xA3" => "\xC3\x83", "\xC3\xA4" => "\xC3\x84", "\xC3\xA5" => "\xC3\x85", + "\xC3\xA6" => "\xC3\x86", "\xC3\xA7" => "\xC3\x87", "\xC3\xA8" => "\xC3\x88", "\xC3\xA9" => "\xC3\x89", + "\xC3\xAA" => "\xC3\x8A", "\xC3\xAB" => "\xC3\x8B", "\xC3\xAC" => "\xC3\x8C", "\xC3\xAD" => "\xC3\x8D", + "\xC3\xAE" => "\xC3\x8E", "\xC3\xAF" => "\xC3\x8F", "\xC3\xB0" => "\xC3\x90", "\xC3\xB1" => "\xC3\x91", + "\xC3\xB2" => "\xC3\x92", "\xC3\xB3" => "\xC3\x93", "\xC3\xB4" => "\xC3\x94", "\xC3\xB5" => "\xC3\x95", + "\xC3\xB6" => "\xC3\x96", "\xC3\xB8" => "\xC3\x98", "\xC3\xB9" => "\xC3\x99", "\xC3\xBA" => "\xC3\x9A", + "\xC3\xBB" => "\xC3\x9B", "\xC3\xBC" => "\xC3\x9C", "\xC3\xBD" => "\xC3\x9D", "\xC3\xBE" => "\xC3\x9E", + "\xC3\xBF" => "\xC5\xB8", "\xC4\x81" => "\xC4\x80", "\xC4\x83" => "\xC4\x82", "\xC4\x85" => "\xC4\x84", + "\xC4\x87" => "\xC4\x86", "\xC4\x89" => "\xC4\x88", "\xC4\x8B" => "\xC4\x8A", "\xC4\x8D" => "\xC4\x8C", + "\xC4\x8F" => "\xC4\x8E", "\xC4\x91" => "\xC4\x90", "\xC4\x93" => "\xC4\x92", "\xC4\x97" => "\xC4\x96", + "\xC4\x99" => "\xC4\x98", "\xC4\x9B" => "\xC4\x9A", "\xC4\x9D" => "\xC4\x9C", "\xC4\x9F" => "\xC4\x9E", + "\xC4\xA1" => "\xC4\xA0", "\xC4\xA3" => "\xC4\xA2", "\xC4\xA5" => "\xC4\xA4", "\xC4\xA7" => "\xC4\xA6", + "\xC4\xA9" => "\xC4\xA8", "\xC4\xAB" => "\xC4\xAA", "\xC4\xAF" => "\xC4\xAE", "\xC4\xB5" => "\xC4\xB4", + "\xC4\xB7" => "\xC4\xB6", "\xC4\xBA" => "\xC4\xB9", "\xC4\xBC" => "\xC4\xBB", "\xC4\xBE" => "\xC4\xBD", + "\xC5\x82" => "\xC5\x81", "\xC5\x84" => "\xC5\x83", "\xC5\x86" => "\xC5\x85", "\xC5\x88" => "\xC5\x87", + "\xC5\x8B" => "\xC5\x8A", "\xC5\x8D" => "\xC5\x8C", "\xC5\x91" => "\xC5\x90", "\xC5\x95" => "\xC5\x94", + "\xC5\x97" => "\xC5\x96", "\xC5\x99" => "\xC5\x98", "\xC5\x9B" => "\xC5\x9A", "\xC5\x9D" => "\xC5\x9C", + "\xC5\x9F" => "\xC5\x9E", "\xC5\xA1" => "\xC5\xA0", "\xC5\xA3" => "\xC5\xA2", "\xC5\xA5" => "\xC5\xA4", + "\xC5\xA7" => "\xC5\xA6", "\xC5\xA9" => "\xC5\xA8", "\xC5\xAB" => "\xC5\xAA", "\xC5\xAD" => "\xC5\xAC", + "\xC5\xAF" => "\xC5\xAE", "\xC5\xB1" => "\xC5\xB0", "\xC5\xB3" => "\xC5\xB2", "\xC5\xB5" => "\xC5\xB4", + "\xC5\xB7" => "\xC5\xB6", "\xC5\xBA" => "\xC5\xB9", "\xC5\xBC" => "\xC5\xBB", "\xC5\xBE" => "\xC5\xBD", + "\xC6\xA1" => "\xC6\xA0", "\xC6\xB0" => "\xC6\xAF", "\xC8\x99" => "\xC8\x98", "\xC8\x9B" => "\xC8\x9A", + "\xCE\xAC" => "\xCE\x86", "\xCE\xAD" => "\xCE\x88", "\xCE\xAE" => "\xCE\x89", "\xCE\xAF" => "\xCE\x8A", + "\xCE\xB1" => "\xCE\x91", "\xCE\xB2" => "\xCE\x92", "\xCE\xB3" => "\xCE\x93", "\xCE\xB4" => "\xCE\x94", + "\xCE\xB5" => "\xCE\x95", "\xCE\xB6" => "\xCE\x96", "\xCE\xB7" => "\xCE\x97", "\xCE\xB8" => "\xCE\x98", + "\xCE\xB9" => "\xCE\x99", "\xCE\xBA" => "\xCE\x9A", "\xCE\xBB" => "\xCE\x9B", "\xCE\xBC" => "\xCE\x9C", + "\xCE\xBD" => "\xCE\x9D", "\xCE\xBE" => "\xCE\x9E", "\xCE\xBF" => "\xCE\x9F", "\xCF\x80" => "\xCE\xA0", + "\xCF\x81" => "\xCE\xA1", "\xCF\x83" => "\xCE\xA3", "\xCF\x84" => "\xCE\xA4", "\xCF\x85" => "\xCE\xA5", + "\xCF\x86" => "\xCE\xA6", "\xCF\x87" => "\xCE\xA7", "\xCF\x88" => "\xCE\xA8", "\xCF\x89" => "\xCE\xA9", + "\xCF\x8A" => "\xCE\xAA", "\xCF\x8B" => "\xCE\xAB", "\xCF\x8C" => "\xCE\x8C", "\xCF\x8D" => "\xCE\x8E", + "\xCF\x8E" => "\xCE\x8F", "\xD0\xB0" => "\xD0\x90", "\xD0\xB1" => "\xD0\x91", "\xD0\xB2" => "\xD0\x92", + "\xD0\xB3" => "\xD0\x93", "\xD0\xB4" => "\xD0\x94", "\xD0\xB5" => "\xD0\x95", "\xD0\xB6" => "\xD0\x96", + "\xD0\xB7" => "\xD0\x97", "\xD0\xB8" => "\xD0\x98", "\xD0\xB9" => "\xD0\x99", "\xD0\xBA" => "\xD0\x9A", + "\xD0\xBB" => "\xD0\x9B", "\xD0\xBC" => "\xD0\x9C", "\xD0\xBD" => "\xD0\x9D", "\xD0\xBE" => "\xD0\x9E", + "\xD0\xBF" => "\xD0\x9F", "\xD1\x80" => "\xD0\xA0", "\xD1\x81" => "\xD0\xA1", "\xD1\x82" => "\xD0\xA2", + "\xD1\x83" => "\xD0\xA3", "\xD1\x84" => "\xD0\xA4", "\xD1\x85" => "\xD0\xA5", "\xD1\x86" => "\xD0\xA6", + "\xD1\x87" => "\xD0\xA7", "\xD1\x88" => "\xD0\xA8", "\xD1\x89" => "\xD0\xA9", "\xD1\x8A" => "\xD0\xAA", + "\xD1\x8B" => "\xD0\xAB", "\xD1\x8C" => "\xD0\xAC", "\xD1\x8D" => "\xD0\xAD", "\xD1\x8E" => "\xD0\xAE", + "\xD1\x8F" => "\xD0\xAF", "\xD1\x91" => "\xD0\x81", "\xD1\x92" => "\xD0\x82", "\xD1\x93" => "\xD0\x83", + "\xD1\x94" => "\xD0\x84", "\xD1\x95" => "\xD0\x85", "\xD1\x96" => "\xD0\x86", "\xD1\x97" => "\xD0\x87", + "\xD1\x98" => "\xD0\x88", "\xD1\x99" => "\xD0\x89", "\xD1\x9A" => "\xD0\x8A", "\xD1\x9B" => "\xD0\x8B", + "\xD1\x9C" => "\xD0\x8C", "\xD1\x9E" => "\xD0\x8E", "\xD1\x9F" => "\xD0\x8F", "\xD2\x91" => "\xD2\x90", + "\xE1\xB8\x83" => "\xE1\xB8\x82", "\xE1\xB8\x8B" => "\xE1\xB8\x8A", "\xE1\xB8\x9F" => "\xE1\xB8\x9E", "\xE1\xB9\x81" => "\xE1\xB9\x80", + "\xE1\xB9\x97" => "\xE1\xB9\x96", "\xE1\xB9\xA1" => "\xE1\xB9\xA0", "\xE1\xB9\xAB" => "\xE1\xB9\xAA", "\xE1\xBA\x81" => "\xE1\xBA\x80", + "\xE1\xBA\x83" => "\xE1\xBA\x82", "\xE1\xBA\x85" => "\xE1\xBA\x84", "\xE1\xBB\xB3" => "\xE1\xBB\xB2" + ); + + return strtr(strtoupper($string), $UTF8_LOWER_TO_UPPER); } /** @@ -594,7 +580,7 @@ else $ly = (-$length) % 65535; // negative length requires ... capture everything - // except a group of -length characters + // except a group of -length characters // anchored at the tail-end of the string if ($lx) { @@ -636,7 +622,7 @@ else */ function utf8_str_split($str, $split_len = 1) { - if (!preg_match('/^[0-9]+$/', $split_len) || $split_len < 1) + if (!is_int($split_len) || $split_len < 1) { return false; } @@ -659,8 +645,6 @@ function utf8_str_split($str, $split_len = 1) */ function utf8_strspn($str, $mask, $start = null, $length = null) { - $mask = preg_replace('!([\\\\\\-\\]\\[/^])!', '\\\${1}', $mask); - if ($start !== null || $length !== null) { $str = utf8_substr($str, $start, $length); @@ -767,14 +751,140 @@ function utf8_recode($string, $encoding) trigger_error('Unknown encoding: ' . $encoding, E_USER_ERROR); } - global $phpbb_root_path; + global $phpbb_root_path, $phpEx; - if (!file_exists($phpbb_root_path . 'includes/utf/data/')) + // iso-8859-* character encoding + if (preg_match('/iso[_ -]?8859[_ -]?(\\d+)/', $encoding, $array)) { - return $string; + switch ($array[1]) + { + case '1': + case '2': + case '4': + case '7': + case '9': + case '15': + if (!function_exists('iso_8859_' . $array[1])) + { + if (!file_exists($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx)) + { + trigger_error('Basic reencoder file is missing', E_USER_ERROR); + } + include($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx); + } + return call_user_func('iso_8859_' . $array[1], $string); + break; + + default: + trigger_error('Unknown encoding: ' . $encoding, E_USER_ERROR); + break; + } + } + + // CP/WIN character encoding + if (preg_match('/(?:cp|windows)[_\- ]?(\\d+)/', $encoding, $array)) + { + switch ($array[1]) + { + case '932': + break; + case '1250': + case '1251': + case '1254': + case '1255': + case '1256': + case '1257': + case '874': + if (!function_exists('cp' . $array[1])) + { + if (!file_exists($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx)) + { + trigger_error('Basic reencoder file is missing', E_USER_ERROR); + } + include($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx); + } + return call_user_func('cp' . $array[1], $string); + break; + + default: + trigger_error('Unknown encoding: ' . $encoding, E_USER_ERROR); + break; + } + } + + // TIS-620 + if (preg_match('/tis[_ -]?620/', $encoding)) + { + if (!function_exists('tis_620')) + { + if (!file_exists($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx)) + { + trigger_error('Basic reencoder file is missing', E_USER_ERROR); + } + include($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx); + } + return tis_620($string); + } + + // SJIS + if (preg_match('/sjis(?:[_ -]?win)?|(?:cp|ibm)[_ -]?932|shift[_ -]?jis/', $encoding)) + { + if (!function_exists('sjis')) + { + if (!file_exists($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx)) + { + trigger_error('CJK reencoder file is missing', E_USER_ERROR); + } + include($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx); + } + return sjis($string); + } + + // EUC_KR + if (preg_match('/euc[_ -]?kr/', $encoding)) + { + if (!function_exists('euc_kr')) + { + if (!file_exists($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx)) + { + trigger_error('CJK reencoder file is missing', E_USER_ERROR); + } + include($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx); + } + return euc_kr($string); } - die('Finish me!! ' . basename(__FILE__) . ' at line ' . __LINE__); + // BIG-5 + if (preg_match('/big[_ -]?5/', $encoding)) + { + if (!function_exists('big5')) + { + if (!file_exists($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx)) + { + trigger_error('CJK reencoder file is missing', E_USER_ERROR); + } + include($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx); + } + return big5($string); + } + + // GB2312 + if (preg_match('/gb[_ -]?2312/', $encoding)) + { + if (!function_exists('gb2312')) + { + if (!file_exists($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx)) + { + trigger_error('CJK reencoder file is missing', E_USER_ERROR); + } + include($phpbb_root_path . 'includes/utf/data/recode_cjk.' . $phpEx); + } + return gb2312($string); + } + + // Trigger an error?! Fow now just give bad data :-( + //trigger_error('Unknown encoding: ' . $encoding, E_USER_ERROR); + return $string; } /** @@ -993,28 +1103,170 @@ function utf8_clean_string($text) utf_normalizer::nfc($text); static $homographs = array( - // cyrllic - "\xD0\xB0" => "\x61", - "\xD0\xB5" => "\x65", - "\xD0\xBE" => "\x6F", - "\xD1\x80" => "\x70", - "\xD1\x81" => "\x63", - "\xD1\x83" => "\x79", - "\xD1\x85" => "\x78", - "\xD1\x95" => "\x73", - "\xD1\x96" => "\x69", - "\xD1\x98" => "\x6A", - "\xD2\xBB" => "\x68", - // greek - "\xCE\xB1" => "\x61", - "\xCE\xBF" => "\x6F", - // other - "\xC2\xA1" => "\x69", + "\xC2\xA1" => "\x69", // EXCLAMATION MARK, INVERTED => LATIN SMALL LETTER I + "\xC2\xAD" => '', // HYPHEN, SOFT => empty string + "\xC4\x90" => "\xC3\x90", // LATIN CAPITAL LETTER D WITH STROKE => LATIN CAPITAL LETTER ETH + "\xC7\x83" => "\x21", // LATIN LETTER RETROFLEX CLICK => EXCLAMATION MARK + "\xC9\x85" => "\xCE\x9B", // LATIN CAPITAL LETTER TURNED V => GREEK CAPITAL LETTER LAMDA + "\xC9\x99" => "\xC7\x9D", // LATIN SMALL LETTER SCHWA => LATIN SMALL LETTER TURNED E + "\xCA\x99" => "\xD0\xB2", // LATIN LETTER SMALL CAPITAL B => CYRILLIC SMALL LETTER VE + "\xCA\x9C" => "\xD0\xBD", // LATIN LETTER SMALL CAPITAL H => CYRILLIC SMALL LETTER EN + "\xCE\x91" => "\x41", // GREEK CAPITAL LETTER ALPHA => LATIN CAPITAL LETTER A + "\xCE\x92" => "\x42", // GREEK CAPITAL LETTER BETA => LATIN CAPITAL LETTER B + "\xCE\x95" => "\x45", // GREEK CAPITAL LETTER EPSILON => LATIN CAPITAL LETTER E + "\xCE\x96" => "\x5A", // GREEK CAPITAL LETTER ZETA => LATIN CAPITAL LETTER Z + "\xCE\x97" => "\x48", // GREEK CAPITAL LETTER ETA => LATIN CAPITAL LETTER H + "\xCE\x99" => "\x49", // GREEK CAPITAL LETTER IOTA => LATIN CAPITAL LETTER I + "\xCE\x9A" => "\x4B", // GREEK CAPITAL LETTER KAPPA => LATIN CAPITAL LETTER K + "\xCE\x9C" => "\x4D", // GREEK CAPITAL LETTER MU => LATIN CAPITAL LETTER M + "\xCE\x9D" => "\x4E", // GREEK CAPITAL LETTER NU => LATIN CAPITAL LETTER N + "\xCE\x9F" => "\x4F", // GREEK CAPITAL LETTER OMICRON => LATIN CAPITAL LETTER O + "\xCE\xA1" => "\x50", // GREEK CAPITAL LETTER RHO => LATIN CAPITAL LETTER P + "\xCE\xA3" => "\xC6\xA9", // GREEK CAPITAL LETTER SIGMA => LATIN CAPITAL LETTER ESH + "\xCE\xA4" => "\x54", // GREEK CAPITAL LETTER TAU => LATIN CAPITAL LETTER T + "\xCE\xA5" => "\x59", // GREEK CAPITAL LETTER UPSILON => LATIN CAPITAL LETTER Y + "\xCE\xA7" => "\x58", // GREEK CAPITAL LETTER CHI => LATIN CAPITAL LETTER X + "\xCE\xB1" => "\x61", // GREEK SMALL LETTER ALPHA => LATIN SMALL LETTER A + "\xCE\xB5" => "\xC9\x9B", // GREEK SMALL LETTER EPSILON => LATIN SMALL LETTER OPEN E + "\xCE\xB9" => "\xC9\xA9", // GREEK SMALL LETTER IOTA => LATIN SMALL LETTER IOTA + "\xCE\xBF" => "\x6F", // GREEK SMALL LETTER OMICRON => LATIN SMALL LETTER O + "\xCF\xB3" => "\x6A", // GREEK LETTER YOT => LATIN SMALL LETTER J + "\xD0\x85" => "\x53", // CYRILLIC CAPITAL LETTER DZE => LATIN CAPITAL LETTER S + "\xD0\x88" => "\x4A", // CYRILLIC CAPITAL LETTER JE => LATIN CAPITAL LETTER J + "\xD0\x91" => "\xC6\x82", // CYRILLIC CAPITAL LETTER BE => LATIN CAPITAL LETTER B WITH TOPBAR + "\xD0\x93" => "\xCE\x93", // CYRILLIC CAPITAL LETTER GHE => GREEK CAPITAL LETTER GAMMA + "\xD0\x9F" => "\xCE\xA0", // CYRILLIC CAPITAL LETTER PE => GREEK CAPITAL LETTER PI + "\xD0\xA1" => "\x43", // CYRILLIC CAPITAL LETTER ES => LATIN CAPITAL LETTER C + "\xD0\xB0" => "\x61", // CYRILLIC SMALL LETTER A => LATIN SMALL LETTER A + "\xD0\xB5" => "\x65", // CYRILLIC SMALL LETTER IE => LATIN SMALL LETTER E + "\xD0\xBA" => "\xC4\xB8", // CYRILLIC SMALL LETTER KA => LATIN SMALL LETTER KRA + "\xD0\xBE" => "\x6F", // CYRILLIC SMALL LETTER O => LATIN SMALL LETTER O + "\xD1\x80" => "\x70", // CYRILLIC SMALL LETTER ER => LATIN SMALL LETTER P + "\xD1\x81" => "\x63", // CYRILLIC SMALL LETTER ES => LATIN SMALL LETTER C + "\xD1\x83" => "\x79", // CYRILLIC SMALL LETTER U => LATIN SMALL LETTER Y + "\xD1\x85" => "\x78", // CYRILLIC SMALL LETTER HA => LATIN SMALL LETTER X + "\xD1\x95" => "\x73", // CYRILLIC SMALL LETTER DZE => LATIN SMALL LETTER S + "\xD1\x96" => "\x69", // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I => LATIN SMALL LETTER I + "\xD1\x98" => "\x6A", // CYRILLIC SMALL LETTER JE => LATIN SMALL LETTER J + "\xD2\xBB" => "\x68", // CYRILLIC SMALL LETTER SHHA => LATIN SMALL LETTER H + "\xD3\x8F" => "\xC9\xAA", // CYRILLIC SMALL LETTER PALOCHKA => LATIN LETTER SMALL CAPITAL I + "\xD3\x94" => "\xC3\x86", // CYRILLIC CAPITAL LIGATURE A IE => LATIN CAPITAL LETTER AE + "\xD3\x95" => "\xC3\xA6", // CYRILLIC SMALL LIGATURE A IE => LATIN SMALL LETTER AE + "\xD3\x98" => "\xC6\x8E", // CYRILLIC CAPITAL LETTER SCHWA => LATIN CAPITAL LETTER REVERSED E + "\xD3\x99" => "\xC7\x9D", // CYRILLIC SMALL LETTER SCHWA => LATIN SMALL LETTER TURNED E + "\xD3\xA1" => "\xCA\x92", // CYRILLIC SMALL LETTER ABKHASIAN DZE => LATIN SMALL LETTER EZH + "\xD3\xA8" => "\xC6\x9F", // CYRILLIC CAPITAL LETTER BARRED O => LATIN CAPITAL LETTER O WITH MIDDLE TILDE + "\xD3\xA9" => "\xC9\xB5", // CYRILLIC SMALL LETTER BARRED O => LATIN SMALL LETTER BARRED O + "\xD4\x81" => "\x64", // CYRILLIC SMALL LETTER KOMI DE => LATIN SMALL LETTER D + "\xE1\x81\x80" => "\xE1\x80\x9D", // MYANMAR DIGIT ZERO => MYANMAR LETTER WA + "\xE1\x9E\xA3" => "\xE1\x9E\xA2", // KHMER INDEPENDENT VOWEL QAQ => KHMER LETTER QA + "\xE1\xA1\x95" => "\xE1\xA0\xB5", // MONGOLIAN LETTER TODO YA => MONGOLIAN LETTER JA + "\xE1\xA7\x90" => "\xE1\xA6\x9E", // NEW TAI LUE DIGIT ZERO => NEW TAI LUE LETTER LOW VA + "\xE1\xAD\x92" => "\xE1\xAC\x8D", // BALINESE DIGIT TWO => BALINESE LETTER LA LENGA + "\xE1\xAD\x93" => "\xE1\xAC\x91", // BALINESE DIGIT THREE => BALINESE LETTER OKARA + "\xE1\xAD\x98" => "\xE1\xAC\xA8", // BALINESE DIGIT EIGHT => BALINESE LETTER PA KAPAL + "\xE1\xAD\x9C" => "\xE1\xAD\x90", // BALINESE WINDU => BALINESE DIGIT ZERO + "\xE1\xB4\x8D" => "\xD0\xBC", // LATIN LETTER SMALL CAPITAL M => CYRILLIC SMALL LETTER EM + "\xE1\xB4\x9B" => "\xD1\x82", // LATIN LETTER SMALL CAPITAL T => CYRILLIC SMALL LETTER TE + "\xE1\xB4\xA6" => "\xD0\xB3", // GREEK LETTER SMALL CAPITAL GAMMA => CYRILLIC SMALL LETTER GHE + "\xE1\xB4\xA8" => "\xD0\xBF", // GREEK LETTER SMALL CAPITAL PI => CYRILLIC SMALL LETTER PE + "\xE1\xB4\xA9" => "\xE1\xB4\x98", // GREEK LETTER SMALL CAPITAL RHO => LATIN LETTER SMALL CAPITAL P + "\xE1\xB4\xAB" => "\xD0\xBB", // CYRILLIC LETTER SMALL CAPITAL EL => CYRILLIC SMALL LETTER EL + "\xE2\x8D\xB3" => "\xC9\xA9", // APL FUNCTIONAL SYMBOL IOTA => LATIN SMALL LETTER IOTA + "\xE2\x8D\xB4" => "\xCF\x81", // APL FUNCTIONAL SYMBOL RHO => GREEK SMALL LETTER RHO + "\xE2\x8D\xB5" => "\xCF\x89", // APL FUNCcTIONAL SYMBOL OMEGA => GREEK SMALL LETTER OMEGA + "\xE2\x8D\xBA" => "\xCE\xB1", // APL FUNCTIONAL SYMBOL ALPHA => GREEK SMALL LETTER ALPHA + "\xE2\xB1\xA7" => "\xD2\xA2", // LATIN CAPITAL LETTER H WITH DESCENDER => CYRILLIC CAPITAL LETTER EN WITH DESCENDER + "\xE2\xB1\xA9" => "\xD2\x9A", // LATIN CAPITAL LETTER K WITH DESCENDER => CYRILLIC CAPITAL LETTER KA WITH DESCENDER + "\xF0\x90\x8F\x91" => "\xF0\x90\x8E\x82", // OLD PERSIAN NUMBER ONE => UGARITIC LETTER GAMLA + "\xF0\x90\x8F\x93" => "\xF0\x90\x8E\x93", // OLD PERSIAN NUMBER TEN => UGARITIC LETTER AIN + "\xF0\x90\x92\xA0" => "\xF0\x90\x92\x86", // OSMANYA DIGIT ZERO => OSMANYA LETTER DEEL + "\xF0\x92\x80\xB8" => "\xF0\x90\x8E\x9A", // CUNEIFORM SIGN ASH => UGARITIC LETTER TO + + "\xC2\xA0" => "\x20", // NO-BREAK SPACE + "\xE1\x9A\x80" => "\x20", // OGHAM SPACE MARK + "\xE2\x80\x80" => "\x20", // EN QUAD + "\xE2\x80\x81" => "\x20", // EM QUAD + "\xE2\x80\x82" => "\x20", // EN SPACE + "\xE2\x80\x83" => "\x20", // EM SPACE + "\xE2\x80\x84" => "\x20", // THREE-PER-EM SPACE + "\xE2\x80\x85" => "\x20", // FOUR-PER-EM SPACE + "\xE2\x80\x86" => "\x20", // SIX-PER-EM SPACE + "\xE2\x80\x87" => "\x20", // FIGURE SPACE + "\xE2\x80\x88" => "\x20", // PUNCTUATION SPACE + "\xE2\x80\x89" => "\x20", // THIN SPACE + "\xE2\x80\x8A" => "\x20", // HAIR SPACE + "\xE2\x80\xAF" => "\x20", // NARROW NO-BREAK SPACE + "\xE2\x81\x9F" => "\x20", // MEDIUM MATHEMATICAL SPACE + "\xE3\x80\x80" => "\x20", // IDEOGRAPHIC SPACE + + "\xDB\x9D" => '', // ARABIC END OF AYAH + "\xDC\x8F" => '', // SYRIAC ABBREVIATION MARK + "\xE1\xA0\x86" => '', // MONGOLIAN TODO SOFT HYPHEN + "\xE1\xA0\x8E" => '', // MONGOLIAN VOWEL SEPARATOR + "\xE2\x80\x8B" => '', // ZERO WIDTH SPACE + "\xE2\x80\x8C" => '', // ZERO WIDTH NON-JOINER + "\xE2\x80\x8D" => '', // ZERO WIDTH JOINER + "\xE2\x80\xA8" => '', // LINE SEPARATOR + "\xE2\x80\xA9" => '', // PARAGRAPH SEPARATOR + "\xE2\x81\xA0" => '', // WORD JOINER + "\xE2\x81\xA1" => '', // FUNCTION APPLICATION + "\xE2\x81\xA2" => '', // INVISIBLE TIMES + "\xE2\x81\xA3" => '', // INVISIBLE SEPARATOR + "\xE2\x81\xAA" => '', // [CONTROL CHARACTERS] + "\xE2\x81\xAB" => '', // [CONTROL CHARACTERS] + "\xE2\x81\xAC" => '', // [CONTROL CHARACTERS] + "\xE2\x81\xAD" => '', // [CONTROL CHARACTERS] + "\xE2\x81\xAE" => '', // [CONTROL CHARACTERS] + "\xE2\x81\xAF" => '', // [CONTROL CHARACTERS] + "\xEF\xBB\xBF" => '', // ZERO WIDTH NO-BREAK SPACE + "\xEF\xBF\xB9" => '', // [CONTROL CHARACTERS] + "\xEF\xBF\xBA" => '', // [CONTROL CHARACTERS] + "\xEF\xBF\xBB" => '', // [CONTROL CHARACTERS] + "\xEF\xBF\xBC" => '', // [CONTROL CHARACTERS] + "\xF0\x9D\x85\xB3" => '', // [MUSICAL CONTROL CHARACTERS] + "\xF0\x9D\x85\xB4" => '', // [MUSICAL CONTROL CHARACTERS] + "\xF0\x9D\x85\xB5" => '', // [MUSICAL CONTROL CHARACTERS] + "\xF0\x9D\x85\xB6" => '', // [MUSICAL CONTROL CHARACTERS] + "\xF0\x9D\x85\xB7" => '', // [MUSICAL CONTROL CHARACTERS] + "\xF0\x9D\x85\xB8" => '', // [MUSICAL CONTROL CHARACTERS] + "\xF0\x9D\x85\xB9" => '', // [MUSICAL CONTROL CHARACTERS] + "\xF0\x9D\x85\xBA" => '', // [MUSICAL CONTROL CHARACTERS] ); $text = strtr($text, $homographs); + // Other control characters + $text = preg_replace('#(?:[\x00-\x1F\x7F]+|(?:\xC2[\x80-\x9F])+)#', '', $text); + return $text; } +/** +* A wrapper for htmlspecialchars($value, ENT_COMPAT, 'UTF-8') +*/ +function utf8_htmlspecialchars(&$value) +{ + return htmlspecialchars($value, ENT_COMPAT, 'UTF-8'); +} + +/** +* Trying to convert returned system message to utf8 +* +* PHP assumes such messages are ISO-8859-1 so we'll do that too +* and if it breaks messages we'll blame it on them ;-) +*/ +function utf8_convert_message($message) +{ + // First of all check if conversion is neded at all, as there is no point + // in converting ASCII messages from ISO-8859-1 to UTF-8 + if (!preg_match('/[\x80-\xFF]/', $message)) + { + return utf8_htmlspecialchars($message); + } + + // else we need to convert some part of the message + return utf8_htmlspecialchars(utf8_recode($message, 'ISO-8859-1')); +} + ?>
\ No newline at end of file diff --git a/phpBB/index.php b/phpBB/index.php index 59e51bac49..6d24ac8e5d 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -61,7 +61,7 @@ $db->sql_freeresult($result); $birthday_list = ''; if ($config['load_birthdays']) { - $now = getdate(time() + $user->timezone + $user->dst - (date('H', time()) - gmdate('H', time())) * 3600); + $now = getdate(time() + $user->timezone + $user->dst - date('Z')); $sql = 'SELECT user_id, username, user_colour, user_birthday FROM ' . USERS_TABLE . " WHERE user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%' @@ -86,7 +86,7 @@ $template->assign_vars(array( 'TOTAL_POSTS' => sprintf($user->lang[$l_total_post_s], $total_posts), 'TOTAL_TOPICS' => sprintf($user->lang[$l_total_topic_s], $total_topics), 'TOTAL_USERS' => sprintf($user->lang[$l_total_user_s], $total_users), - 'NEWEST_USER' => sprintf($user->lang['NEWEST_USER'], '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $newest_uid) . '">', $newest_user, '</a>'), + 'NEWEST_USER' => sprintf($user->lang['NEWEST_USER'], '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $newest_uid) . '" style="color:#' . $config['newest_user_colour'] . '">', $newest_user, '</a>'), 'LEGEND' => $legend, 'BIRTHDAY_LIST' => $birthday_list, diff --git a/phpBB/install/convertors/convert_phpbb20.php b/phpBB/install/convertors/convert_phpbb20.php new file mode 100644 index 0000000000..14fde80478 --- /dev/null +++ b/phpBB/install/convertors/convert_phpbb20.php @@ -0,0 +1,859 @@ +<?php +/** +* +* @package install +* @version $Id$ +* @copyright (c) 2006 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +* NOTE to potential convertor authors. Please use this file to get +* familiar with the structure since we added some bare explanations here. +* +* Since this file gets included more than once on one page you are not able to add functions to it. +* Instead use a functions_ file. +* +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +/** +* $convertor_data provides some basic information about this convertor which is +* used on the initial list of convertors and to populate the default settings +*/ +$convertor_data = array( + 'forum_name' => 'phpBB 2.0.x', + 'version' => '0.9', + 'phpbb_version' => '3.0.0', + 'author' => '<a href="http://www.phpbb.com/">phpBB Group</a>', + 'table_prefix' => 'phpbb_', + 'forum_path' => '../forums', + 'author_notes' => 'Avatars may be on a different width/height than with the old forum. This is due to dimensions being stored within phpBB3 but not within phpBB2. The default dimension was set to 80x80 for avatars where dimension settings could not be determined. You might wish to instruct your users to check their profiles after the conversion to ensure that the size is correct.', +); + +/** +* $tables is a list of the tables (minus prefix) which we expect to find in the +* source forum. It is used to guess the prefix if the specified prefix is incorrect +*/ +$tables = array( + 'auth_access', + 'banlist', + 'categories', + 'disallow', + 'forum_prune', + 'forums', + 'groups', + 'posts', + 'posts_text', + 'privmsgs', + 'privmsgs_text', + 'ranks', + 'smilies', + 'topics', + 'topics_watch', + 'user_group', + 'users', + 'vote_desc', + 'vote_results', + 'vote_voters', + 'words' +); + +/** +* $config_schema details how the board configuration information is stored in the source forum. +* +* 'table_format' can take the value 'file' to indicate a config file. In this case array_name +* is set to indicate the name of the array the config values are stored in +* 'table_format' can be an array if the values are stored in a table which is an assosciative array +* (as per phpBB 2.0.x) +* If left empty, values are assumed to be stored in a table where each config setting is +* a column (as per phpBB 1.x) +* +* In either of the latter cases 'table_name' indicates the name of the table in the database +* +* 'settings' is an array which maps the name of the config directive in the source forum +* to the config directive in phpBB3. It can either be a direct mapping or use a function. +* Please note that the contents of the old config value are passed to the function, therefore +* an in-built function requiring the variable passed by reference is not able to be used. Since +* empty() is such a function we created the function is_empty() to be used instead. +*/ +$config_schema = array( + 'table_name' => 'config', + 'table_format' => array('config_name' => 'config_value'), + 'settings' => array( + 'allow_bbcode' => 'allow_bbcode', + 'allow_smilies' => 'allow_smilies', + 'allow_sig' => 'allow_sig', + 'allow_namechange' => 'allow_namechange', + 'allow_avatar_local' => 'allow_avatar_local', + 'allow_avatar_remote' => 'allow_avatar_remote', + 'allow_avatar_upload' => 'allow_avatar_upload', + 'board_disable' => 'board_disable', + 'sitename' => 'sitename', + 'site_desc' => 'site_desc', + 'session_length' => 'session_length', + 'board_email_sig' => 'board_email_sig', + 'posts_per_page' => 'posts_per_page', + 'topics_per_page' => 'topics_per_page', + 'enable_confirm' => 'enable_confirm', + 'board_email_form' => 'board_email_form', + 'override_user_style' => 'override_user_style', + 'hot_threshold' => 'hot_threshold', + 'max_poll_options' => 'max_poll_options', + 'max_sig_chars' => 'max_sig_chars', + 'pm_max_msgs' => 'max_inbox_privmsgs', + 'smtp_delivery' => 'smtp_delivery', + 'smtp_host' => 'smtp_host', + 'smtp_username' => 'smtp_username', + 'smtp_password' => 'smtp_password', + 'require_activation' => 'require_activation', + 'flood_interval' => 'flood_interval', + 'avatar_filesize' => 'avatar_filesize', + 'avatar_max_width' => 'avatar_max_width', + 'avatar_max_height' => 'avatar_max_height', + 'default_dateformat' => 'default_dateformat', + 'board_timezone' => 'board_timezone', + 'allow_privmsg' => 'not(privmsg_disable)', + 'gzip_compress' => 'gzip_compress', + 'coppa_enable' => 'is_empty(coppa_mail)', + 'coppa_fax' => 'coppa_fax', + 'coppa_mail' => 'coppa_mail', + 'record_online_users' => 'record_online_users', + 'record_online_date' => 'record_online_date', + 'board_startdate' => 'board_startdate', + ) +); + +/** +* $test_file is the name of a file which is present on the source +* forum which can be used to check that the path specified by the +* user was correct +*/ +$test_file = 'modcp.php'; + +/** +* If this is set then we are not generating the first page of information but getting the conversion information. +*/ +if (!$get_info) +{ + // Test to see if the birthday MOD is installed on the source forum + // Niels' birthday mod + if (get_config_value('birthday_required') !== false || get_config_value('bday_required') !== false) + { + define('MOD_BIRTHDAY', true); + } + + // TerraFrost's validated birthday mod + if (get_config_value('bday_required') !== false) + { + define('MOD_BIRTHDAY_TERRA', true); + } + + // Test to see if the attachment MOD is installed on the source forum + // If it is, we will convert this data as well + $db->sql_return_on_error(true); + + $sql = "SELECT config_value + FROM {$convert->src_table_prefix}attachments_config + WHERE config_name = 'upload_dir'"; + $result = $db->sql_query($sql); + + if ($result && $row = $db->sql_fetchrow($result)) + { + // Here the constant is defined + define('MOD_ATTACHMENT', true); + + // Here i add more tables to be checked in the old forum + $tables += array( + 'attachments', + 'attachments_desc', + 'extensions', + 'extension_groups' + ); + + $db->sql_freeresult($result); + } + + /** + * Tests for further MODs can be included here. + * Please use constants for this, prefixing them with MOD_ + */ + + $db->sql_return_on_error(false); + + // Now let us set a temporary config variable for user id incrementing + $sql = "SELECT user_id + FROM {$convert->src_table_prefix}users + WHERE user_id = 1"; + $result = $db->sql_query($sql); + $user_id = (int) $db->sql_fetchfield('user_id'); + $db->sql_freeresult($result); + + // If there is a user id 1, we need to increment user ids. :/ + if ($user_id === 1) + { + set_config('increment_user_id', 1, true); + } + else + { + set_config('increment_user_id', 0, true); + } + +/** +* Description on how to use the convertor framework. +* +* 'schema' Syntax Description +* -> 'target' => Target Table. If not specified the next table will be handled +* -> 'primary' => Primary Key. If this is specified then this table is processed in batches +* -> 'query_first' => Query to execute before beginning the process (if more than one then specified as array) +* -> 'function_first' => Function to execute before beginning the process (if more than one then specified as array) +* (This is mostly useful if variables need to be given to the converting process) +* -> 'test_file' => This is not used at the moment but should be filled with a file from the old installation +* +* // DB Functions +* 'distinct' => Add DISTINCT to the select query +* 'where' => Add WHERE to the select query +* 'group_by' => Add GROUP BY to the select query +* 'left_join' => Add LEFT JOIN to the select query (if more than one joins specified as array) +* 'having' => Add HAVING to the select query +* +* // DB INSERT array +* This one consist of three parameters +* First Parameter: +* The key need to be filled within the target table +* If this is empty, the target table gets not assigned the source value +* Second Parameter: +* Source value. If the first parameter is specified, it will be assigned this value. +* If the first parameter is empty, this only gets added to the select query +* Third Parameter: +* Custom Function. Function to execute while storing source value into target table. +* The functions return value get stored. +* The function parameter consist of the value of the second parameter. +* +* types: +* - empty string == execute nothing +* - string == function to execute +* - array == complex execution instructions +* +* Complex execution instructions: +* @todo test complex execution instructions - in theory they will work fine +* +* By defining an array as the third parameter you are able to define some statements to be executed. The key +* is defining what to execute, numbers can be appended... +* +* 'function' => execute function +* 'execute' => run code, whereby all occurrences of {VALUE} get replaced by the last returned value. +* The result *must* be assigned/stored to {RESULT}. +* 'typecast' => typecast value +* +* The returned variables will be made always available to the next function to continue to work with. +* +* example (variable inputted is an integer of 1): +* +* array( +* 'function1' => 'increment_by_one', // returned variable is 2 +* 'typecast' => 'string', // typecast variable to be a string +* 'execute' => '{RESULT} = {VALUE} . ' is good';', // returned variable is '2 is good' +* 'function2' => 'replace_good_with_bad', // returned variable is '2 is bad' +* ), +* +*/ + + $convertor = array( + 'test_file' => 'viewtopic.php', + + 'avatar_path' => get_config_value('avatar_path') . '/', + 'avatar_gallery_path' => get_config_value('avatar_gallery_path') . '/', + 'smilies_path' => get_config_value('smilies_path') . '/', + 'upload_path' => (defined('MOD_ATTACHMENT')) ? phpbb_get_files_dir() . '/' : '', + 'thumbnails' => (defined('MOD_ATTACHMENT')) ? array('thumbs/', 't_') : '', + 'ranks_path' => false, // phpBB 2.0.x had no config value for a ranks path + + // We empty some tables to have clean data available + 'query_first' => array( + $convert->truncate_statement . SEARCH_RESULTS_TABLE, + $convert->truncate_statement . SEARCH_WORDLIST_TABLE, + $convert->truncate_statement . SEARCH_WORDMATCH_TABLE, + $convert->truncate_statement . LOG_TABLE, + ), + +// with this you are able to import all attachment files on the fly. For large boards this is not an option, therefore commented out by default. +// Instead every file gets copied while processing the corresponding attachment entry. +// if (defined("MOD_ATTACHMENT")) { import_attachment_files(); phpbb_copy_thumbnails(); } + + 'execute_first' => ' + import_avatar_gallery(); + if (defined("MOD_ATTACHMENT")) phpbb_import_attach_config(); + phpbb_insert_forums(); + ', + + 'execute_last' => array(' + add_bots(); + ', ' + update_folder_pm_count(); + ', ' + update_unread_count(); + ', ' + phpbb_convert_authentication(\'start\'); + ', ' + phpbb_convert_authentication(\'first\'); + ', ' + phpbb_convert_authentication(\'second\'); + ', ' + phpbb_convert_authentication(\'third\'); + '), + + 'schema' => array( + + array( + 'target' => (defined('MOD_ATTACHMENT')) ? ATTACHMENTS_TABLE : '', + 'primary' => 'attachments.attach_id', + 'query_first' => (defined('MOD_ATTACHMENT')) ? $convert->truncate_statement . ATTACHMENTS_TABLE : '', + + array('attach_id', 'attachments.attach_id', ''), + array('post_msg_id', 'attachments.post_id', ''), + array('topic_id', 'posts.topic_id', ''), + array('in_message', 0, ''), + array('is_orphan', 0, ''), + array('poster_id', 'attachments.user_id_1 AS poster_id', 'phpbb_user_id'), + array('physical_filename', 'attachments_desc.physical_filename', 'import_attachment'), + array('real_filename', 'attachments_desc.real_filename', ''), + array('download_count', 'attachments_desc.download_count', ''), + array('attach_comment', 'attachments_desc.comment', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('extension', 'attachments_desc.extension', ''), + array('mimetype', 'attachments_desc.mimetype', ''), + array('filesize', 'attachments_desc.filesize', ''), + array('filetime', 'attachments_desc.filetime', ''), + array('thumbnail', 'attachments_desc.thumbnail', ''), + + 'where' => 'attachments_desc.attach_id = attachments.attach_id AND attachments.privmsgs_id = 0 AND posts.post_id = attachments.post_id', + 'group_by' => 'attachments.attach_id' + ), + + array( + 'target' => (defined('MOD_ATTACHMENT')) ? ATTACHMENTS_TABLE : '', + 'primary' => 'attachments.attach_id', + + array('attach_id', 'attachments.attach_id', ''), + array('post_msg_id', 'attachments.privmsgs_id', ''), + array('topic_id', 0, ''), + array('in_message', 1, ''), + array('is_orphan', 0, ''), + array('poster_id', 'attachments.user_id_1 AS poster_id', 'phpbb_user_id'), + array('physical_filename', 'attachments_desc.physical_filename', 'import_attachment'), + array('real_filename', 'attachments_desc.real_filename', ''), + array('download_count', 'attachments_desc.download_count', ''), + array('attach_comment', 'attachments_desc.comment', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('extension', 'attachments_desc.extension', ''), + array('mimetype', 'attachments_desc.mimetype', ''), + array('filesize', 'attachments_desc.filesize', ''), + array('filetime', 'attachments_desc.filetime', ''), + array('thumbnail', 'attachments_desc.thumbnail', ''), + + 'where' => 'attachments_desc.attach_id = attachments.attach_id AND attachments.post_id = 0', + 'group_by' => 'attachments.attach_id' + ), + + array( + 'target' => (defined('MOD_ATTACHMENT')) ? EXTENSIONS_TABLE : '', + 'query_first' => (defined('MOD_ATTACHMENT')) ? $convert->truncate_statement . EXTENSIONS_TABLE : '', + + array('extension_id', 'extensions.ext_id', ''), + array('group_id', 'extensions.group_id', ''), + array('extension', 'extensions.extension', ''), + ), + + array( + 'target' => (defined('MOD_ATTACHMENT')) ? EXTENSION_GROUPS_TABLE : '', + 'query_first' => (defined('MOD_ATTACHMENT')) ? $convert->truncate_statement . EXTENSION_GROUPS_TABLE : '', + + array('group_id', 'extension_groups.group_id', ''), + array('group_name', 'extension_groups.group_name', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('cat_id', 'extension_groups.cat_id', 'phpbb_attachment_category'), + array('allow_group', 'extension_groups.allow_group', ''), + array('download_mode', 1, ''), + array('upload_icon', '', ''), + array('max_filesize', 'extension_groups.max_filesize', ''), + array('allowed_forums', 'extension_groups.forum_permissions', 'phpbb_attachment_forum_perms'), + array('allow_in_pm', 1, ''), + ), + + array( + 'target' => BANLIST_TABLE, + 'query_first' => $convert->truncate_statement . BANLIST_TABLE, + + array('ban_ip', 'banlist.ban_ip', 'decode_ban_ip'), + array('ban_userid', 'banlist.ban_userid', 'phpbb_user_id'), + array('ban_email', 'banlist.ban_email', ''), + + 'where' => "banlist.ban_ip NOT LIKE '%.%'", + ), + + array( + 'target' => BANLIST_TABLE, + + array('ban_ip', 'banlist.ban_ip', ''), + array('ban_userid', '0', ''), + array('ban_email', '', ''), + + 'where' => "banlist.ban_ip LIKE '%.%'", + ), + + array( + 'target' => DISALLOW_TABLE, + 'query_first' => $convert->truncate_statement . DISALLOW_TABLE, + + array('disallow_username', 'disallow.disallow_username', 'phpbb_set_encoding'), + ), + + array( + 'target' => RANKS_TABLE, + 'query_first' => $convert->truncate_statement . RANKS_TABLE, + + array('rank_id', 'ranks.rank_id', ''), + array('rank_title', 'ranks.rank_title', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('rank_min', 'ranks.rank_min', array('typecast' => 'int', 'execute' => '{RESULT} = ({VALUE}[0] < 0) ? 0 : {VALUE}[0];')), + array('rank_special', 'ranks.rank_special', ''), + array('rank_image', 'ranks.rank_image', 'import_rank'), + ), + + array( + 'target' => TOPICS_TABLE, + 'query_first' => $convert->truncate_statement . TOPICS_TABLE, + 'primary' => 'topics.topic_id', + + array('topic_id', 'topics.topic_id', ''), + array('forum_id', 'topics.forum_id', ''), + array('icon_id', 0, ''), + array('topic_poster', 'topics.topic_poster AS poster_id', 'phpbb_user_id'), + array('topic_attachment', ((defined('MOD_ATTACHMENT')) ? 'topics.topic_attachment' : 0), ''), + array('topic_title', 'topics.topic_title', 'phpbb_set_encoding'), + array('topic_time', 'topics.topic_time', ''), + array('topic_views', 'topics.topic_views', ''), + array('topic_replies', 'topics.topic_replies', ''), + array('topic_replies_real', 'topics.topic_replies', ''), + array('topic_last_post_id', 'topics.topic_last_post_id', ''), + array('topic_status', 'topics.topic_status', 'is_topic_locked'), + array('topic_moved_id', 0, ''), + array('topic_type', 'topics.topic_type', 'phpbb_convert_topic_type'), + array('topic_first_post_id', 'topics.topic_first_post_id', ''), + + array('poll_title', 'vote_desc.vote_text', array('function1' => 'null_to_str', 'function2' => 'phpbb_set_encoding', 'function3' => 'utf8_htmlspecialchars')), + array('poll_start', 'vote_desc.vote_start', 'null_to_zero'), + array('poll_length', 'vote_desc.vote_length', 'null_to_zero'), + array('poll_max_options', 1, ''), + array('poll_vote_change', 0, ''), + + 'left_join' => 'topics LEFT JOIN vote_desc ON topics.topic_id = vote_desc.topic_id AND topics.topic_vote = 1', + 'where' => 'topics.topic_moved_id = 0', + ), + + array( + 'target' => TOPICS_TABLE, + 'primary' => 'topics.topic_id', + + array('topic_id', 'topics.topic_id', ''), + array('forum_id', 'topics.forum_id', ''), + array('icon_id', 0, ''), + array('topic_poster', 'topics.topic_poster AS poster_id', 'phpbb_user_id'), + array('topic_attachment', ((defined('MOD_ATTACHMENT')) ? 'topics.topic_attachment' : 0), ''), + array('topic_title', 'topics.topic_title', 'phpbb_set_encoding'), + array('topic_time', 'topics.topic_time', ''), + array('topic_views', 'topics.topic_views', ''), + array('topic_replies', 'topics.topic_replies', ''), + array('topic_replies_real', 'topics.topic_replies', ''), + array('topic_last_post_id', 'topics.topic_last_post_id', ''), + array('topic_status', ITEM_MOVED, ''), + array('topic_moved_id', 'topics.topic_moved_id', ''), + array('topic_type', 'topics.topic_type', 'phpbb_convert_topic_type'), + array('topic_first_post_id', 'topics.topic_first_post_id', ''), + + array('poll_title', 'vote_desc.vote_text', array('function1' => 'null_to_str', 'function2' => 'phpbb_set_encoding', 'function3' => 'utf8_htmlspecialchars')), + array('poll_start', 'vote_desc.vote_start', 'null_to_zero'), + array('poll_length', 'vote_desc.vote_length', 'null_to_zero'), + array('poll_max_options', 1, ''), + array('poll_vote_change', 0, ''), + + 'left_join' => 'topics LEFT JOIN vote_desc ON topics.topic_id = vote_desc.topic_id AND topics.topic_vote = 1', + 'where' => 'topics.topic_moved_id <> 0', + ), + + array( + 'target' => TOPICS_WATCH_TABLE, + 'primary' => 'topics_watch.topic_id', + 'query_first' => $convert->truncate_statement . TOPICS_WATCH_TABLE, + + array('topic_id', 'topics_watch.topic_id', ''), + array('user_id', 'topics_watch.user_id', 'phpbb_user_id'), + array('notify_status', 'topics_watch.notify_status', ''), + ), + + array( + 'target' => SMILIES_TABLE, + 'query_first' => $convert->truncate_statement . SMILIES_TABLE, + + array('smiley_id', 'smilies.smilies_id', ''), + array('code', 'smilies.code', 'phpbb_set_encoding'), + array('emotion', 'smilies.emoticon', 'phpbb_set_encoding'), + array('smiley_url', 'smilies.smile_url', 'import_smiley'), + array('smiley_width', 'smilies.smile_url', 'get_smiley_width'), + array('smiley_height', 'smilies.smile_url', 'get_smiley_height'), + array('smiley_order', 'smilies.smilies_id', ''), + array('display_on_posting', 'smilies.smilies_id', array( + 'execute' => '{RESULT} = ({VALUE}[0] <= 20) ? 1 : 0;', + )), + + 'order_by' => 'smilies.smilies_id ASC', + ), + + array( + 'target' => POLL_OPTIONS_TABLE, + 'primary' => 'vote_results.vote_option_id', + 'query_first' => $convert->truncate_statement . POLL_OPTIONS_TABLE, + + array('poll_option_id', 'vote_results.vote_option_id', ''), + array('topic_id', 'vote_desc.topic_id', ''), + array('', 'topics.topic_poster AS poster_id', 'phpbb_user_id'), + array('poll_option_text', 'vote_results.vote_option_text', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('poll_option_total', 'vote_results.vote_result', ''), + + 'where' => 'vote_results.vote_id = vote_desc.vote_id', + 'left_join' => 'vote_desc LEFT JOIN topics ON topics.topic_id = vote_desc.topic_id', + ), + + array( + 'target' => POLL_VOTES_TABLE, + 'primary' => 'vote_desc.topic_id', + 'query_first' => $convert->truncate_statement . POLL_VOTES_TABLE, + + array('poll_option_id', 1, ''), + array('topic_id', 'vote_desc.topic_id', ''), + array('vote_user_id', 'vote_voters.vote_user_id', 'phpbb_user_id'), + array('vote_user_ip', 'vote_voters.vote_user_ip', 'decode_ip'), + + 'where' => 'vote_voters.vote_id = vote_desc.vote_id', + ), + + array( + 'target' => WORDS_TABLE, + 'primary' => 'words.word_id', + 'query_first' => $convert->truncate_statement . WORDS_TABLE, + + array('word_id', 'words.word_id', ''), + array('word', 'words.word', 'phpbb_set_encoding'), + array('replacement', 'words.replacement', 'phpbb_set_encoding'), + ), + + array( + 'target' => POSTS_TABLE, + 'primary' => 'posts.post_id', + 'query_first' => $convert->truncate_statement . POSTS_TABLE, + 'execute_first' => ' + $config["max_post_chars"] = 0; + ', + + array('post_id', 'posts.post_id', ''), + array('topic_id', 'posts.topic_id', ''), + array('forum_id', 'posts.forum_id', ''), + array('poster_id', 'posts.poster_id', 'phpbb_user_id'), + array('icon_id', 0, ''), + array('poster_ip', 'posts.poster_ip', 'decode_ip'), + array('post_time', 'posts.post_time', ''), + array('enable_bbcode', 'posts.enable_bbcode', ''), + array('', 'posts.enable_html', ''), + array('enable_smilies', 'posts.enable_smilies', ''), + array('enable_sig', 'posts.enable_sig', ''), + array('enable_magic_url', 1, ''), + array('post_username', 'posts.post_username', 'phpbb_set_encoding'), + array('post_subject', 'posts_text.post_subject', 'phpbb_set_encoding'), + array('post_attachment', ((defined('MOD_ATTACHMENT')) ? 'posts.post_attachment' : 0), ''), + array('post_edit_time', 'posts.post_edit_time', array('typecast' => 'int')), + array('post_edit_count', 'posts.post_edit_count', ''), + array('post_edit_reason', '', ''), + array('post_edit_user', '', 'phpbb_post_edit_user'), + + array('bbcode_uid', 'posts.post_time', 'make_uid'), + array('post_text', 'posts_text.post_text', 'phpbb_prepare_message'), + array('', 'posts_text.bbcode_uid AS old_bbcode_uid', ''), + array('bbcode_bitfield', '', 'get_bbcode_bitfield'), + array('post_checksum', '', ''), + + // Commented out inline search indexing, this takes up a LOT of time. :D + // @todo We either need to enable this or call the rebuild search functionality post convert +/* array('', '', 'search_indexing'), + array('', 'posts_text.post_text AS message', ''), + array('', 'posts_text.post_subject AS title', ''),*/ + + 'where' => 'posts.post_id = posts_text.post_id' + ), + + array( + 'target' => PRIVMSGS_TABLE, + 'primary' => 'privmsgs.privmsgs_id', + 'query_first' => array( + $convert->truncate_statement . PRIVMSGS_TABLE, + $convert->truncate_statement . PRIVMSGS_RULES_TABLE, + ), + + 'execute_first' => ' + $config["max_post_chars"] = 0; + ', + + array('msg_id', 'privmsgs.privmsgs_id', ''), + array('root_level', 0, ''), + array('author_id', 'privmsgs.privmsgs_from_userid AS poster_id', 'phpbb_user_id'), + array('icon_id', 0, ''), + array('author_ip', 'privmsgs.privmsgs_ip', 'decode_ip'), + array('message_time', 'privmsgs.privmsgs_date', ''), + array('enable_bbcode', 'privmsgs.privmsgs_enable_bbcode AS enable_bbcode', ''), + array('', 'privmsgs.privmsgs_enable_html AS enable_html', ''), + array('enable_smilies', 'privmsgs.privmsgs_enable_smilies AS enable_smilies', ''), + array('enable_magic_url', 1, ''), + array('enable_sig', 'privmsgs.privmsgs_attach_sig', ''), + array('message_subject', 'privmsgs.privmsgs_subject', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('message_attachment', ((defined('MOD_ATTACHMENT')) ? 'privmsgs.privmsgs_attachment' : 0), ''), + array('message_edit_reason', '', ''), + array('message_edit_user', 0, ''), + array('message_edit_time', 0, ''), + array('message_edit_count', 0, ''), + + array('bbcode_uid', 'privmsgs.privmsgs_date AS post_time', 'make_uid'), + array('message_text', 'privmsgs_text.privmsgs_text', 'phpbb_prepare_message'), + array('', 'privmsgs_text.privmsgs_bbcode_uid AS old_bbcode_uid', ''), + array('bbcode_bitfield', '', 'get_bbcode_bitfield'), + array('to_address', 'privmsgs.privmsgs_to_userid', 'phpbb_privmsgs_to_userid'), + + 'where' => 'privmsgs.privmsgs_id = privmsgs_text.privmsgs_text_id' + ), + + array( + 'target' => PRIVMSGS_FOLDER_TABLE, + 'primary' => 'users.user_id', + 'query_first' => $convert->truncate_statement . PRIVMSGS_FOLDER_TABLE, + + array('user_id', 'users.user_id', 'phpbb_user_id'), + array('folder_name', $user->lang['CONV_SAVED_MESSAGES'], ''), + array('pm_count', 0, ''), + + 'where' => 'users.user_id <> -1', + ), + + // Inbox + array( + 'target' => PRIVMSGS_TO_TABLE, + 'primary' => 'privmsgs.privmsgs_id', + 'query_first' => $convert->truncate_statement . PRIVMSGS_TO_TABLE, + + array('msg_id', 'privmsgs.privmsgs_id', ''), + array('user_id', 'privmsgs.privmsgs_to_userid', 'phpbb_user_id'), + array('author_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('pm_deleted', 0, ''), + array('pm_new', 'privmsgs.privmsgs_type', 'phpbb_new_pm'), + array('pm_unread', 'privmsgs.privmsgs_type', 'phpbb_unread_pm'), + array('pm_replied', 0, ''), + array('pm_marked', 0, ''), + array('pm_forwarded', 0, ''), + array('folder_id', PRIVMSGS_INBOX, ''), + + 'where' => 'privmsgs.privmsgs_type = 0 OR privmsgs.privmsgs_type = 1 OR privmsgs.privmsgs_type = 5', + ), + + // Outbox + array( + 'target' => PRIVMSGS_TO_TABLE, + 'primary' => 'privmsgs.privmsgs_id', + + array('msg_id', 'privmsgs.privmsgs_id', ''), + array('user_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('author_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('pm_deleted', 0, ''), + array('pm_new', 'privmsgs.privmsgs_type', 'phpbb_new_pm'), + array('pm_unread', 'privmsgs.privmsgs_type', 'phpbb_unread_pm'), + array('pm_replied', 0, ''), + array('pm_marked', 0, ''), + array('pm_forwarded', 0, ''), + array('folder_id', PRIVMSGS_OUTBOX, ''), + + 'where' => 'privmsgs.privmsgs_type = 1 OR privmsgs.privmsgs_type = 5', + ), + + // Sentbox + array( + 'target' => PRIVMSGS_TO_TABLE, + 'primary' => 'privmsgs.privmsgs_id', + + array('msg_id', 'privmsgs.privmsgs_id', ''), + array('user_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('author_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('pm_deleted', 0, ''), + array('pm_new', 'privmsgs.privmsgs_type', 'phpbb_new_pm'), + array('pm_unread', 'privmsgs.privmsgs_type', 'phpbb_unread_pm'), + array('pm_replied', 0, ''), + array('pm_marked', 0, ''), + array('pm_forwarded', 0, ''), + array('folder_id', PRIVMSGS_SENTBOX, ''), + + 'where' => 'privmsgs.privmsgs_type = 2', + ), + + // Savebox (SAVED IN) + array( + 'target' => PRIVMSGS_TO_TABLE, + 'primary' => 'privmsgs.privmsgs_id', + + array('msg_id', 'privmsgs.privmsgs_id', ''), + array('user_id', 'privmsgs.privmsgs_to_userid', 'phpbb_user_id'), + array('author_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('pm_deleted', 0, ''), + array('pm_new', 'privmsgs.privmsgs_type', 'phpbb_new_pm'), + array('pm_unread', 'privmsgs.privmsgs_type', 'phpbb_unread_pm'), + array('pm_replied', 0, ''), + array('pm_marked', 0, ''), + array('pm_forwarded', 0, ''), + array('folder_id', 'privmsgs.privmsgs_to_userid', 'phpbb_get_savebox_id'), + + 'where' => 'privmsgs.privmsgs_type = 3', + ), + + // Savebox (SAVED OUT) + array( + 'target' => PRIVMSGS_TO_TABLE, + 'primary' => 'privmsgs.privmsgs_id', + + array('msg_id', 'privmsgs.privmsgs_id', ''), + array('user_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('author_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), + array('pm_deleted', 0, ''), + array('pm_new', 'privmsgs.privmsgs_type', 'phpbb_new_pm'), + array('pm_unread', 'privmsgs.privmsgs_type', 'phpbb_unread_pm'), + array('pm_replied', 0, ''), + array('pm_marked', 0, ''), + array('pm_forwarded', 0, ''), + array('folder_id', 'privmsgs.privmsgs_from_userid', 'phpbb_get_savebox_id'), + + 'where' => 'privmsgs.privmsgs_type = 4', + ), + + array( + 'target' => GROUPS_TABLE, + 'query_first' => $convert->truncate_statement . GROUPS_TABLE, + + array('group_id', 'groups.group_id', ''), + array('group_type', 'groups.group_type', 'phpbb_convert_group_type'), + array('group_display', 0, ''), + array('group_name', 'groups.group_name', 'phpbb_convert_group_name'), // phpbb_set_encoding called in phpbb_convert_group_name + array('group_desc', 'groups.group_description', 'phpbb_set_encoding'), + + 'where' => 'groups.group_single_user = 0', + ), + + array( + 'target' => USER_GROUP_TABLE, + 'query_first' => $convert->truncate_statement . USER_GROUP_TABLE, + 'execute_first' => ' + add_default_groups(); + ', + + array('group_id', 'groups.group_id', ''), + array('user_id', 'groups.group_moderator', 'phpbb_user_id'), + array('group_leader', 1, ''), + array('user_pending', 0, ''), + + 'where' => 'groups.group_single_user = 0 AND groups.group_moderator <> 0', + ), + + array( + 'target' => USER_GROUP_TABLE, + + array('group_id', 'user_group.group_id', ''), + array('user_id', 'user_group.user_id', 'phpbb_user_id'), + array('group_leader', 0, ''), + array('user_pending', 'user_group.user_pending', ''), + + 'where' => 'user_group.group_id = groups.group_id AND groups.group_single_user = 0 AND groups.group_moderator <> user_group.user_id', + ), + + array( + 'target' => USERS_TABLE, + 'primary' => 'users.user_id', + 'query_first' => array( + 'DELETE FROM ' . USERS_TABLE . ' WHERE user_id <> ' . ANONYMOUS, + $convert->truncate_statement . BOTS_TABLE + ), + + array('user_id', 'users.user_id', 'phpbb_user_id'), + array('', 'users.user_id AS poster_id', 'phpbb_user_id'), + array('user_type', 'users.user_active', 'set_user_type'), + array('group_id', 'users.user_level', 'phpbb_set_primary_group'), + array('user_regdate', 'users.user_regdate', ''), + array('username', 'users.username', 'phpbb_set_default_encoding'), // recode to utf8 with default lang + array('username_clean', 'users.username', array('function1' => 'phpbb_set_default_encoding', 'function2' => 'utf8_clean_string')), + array('user_password', 'users.user_password', ''), + array('user_pass_convert', 1, ''), + array('user_posts', 'users.user_posts', ''), + array('user_email', 'users.user_email', 'strtolower'), + array('user_email_hash', 'users.user_email', 'gen_email_hash'), + array('user_birthday', ((defined('MOD_BIRTHDAY')) ? 'users.user_birthday' : ''), 'phpbb_get_birthday'), + array('user_lastvisit', 'users.user_lastvisit', ''), + array('user_lang', $config['default_lang'], ''), + array('', 'users.user_lang', ''), + array('user_timezone', 'users.user_timezone', ''), + array('user_dateformat', 'users.user_dateformat', ''), + array('user_inactive_reason', '', 'phpbb_inactive_reason'), + array('user_inactive_time', '', 'phpbb_inactive_time'), + + array('user_interests', 'users.user_interests', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('user_occ', 'users.user_occ', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('user_website', 'users.user_website', 'validate_website'), + array('user_jabber', '', ''), + array('user_msnm', 'users.user_msnm', ''), + array('user_yim', 'users.user_yim', ''), + array('user_aim', 'users.user_aim', ''), + array('user_icq', 'users.user_icq', ''), + array('user_from', 'users.user_from', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')), + array('user_rank', 'users.user_rank', ''), + array('user_permissions', '', ''), + + array('user_avatar', 'users.user_avatar', 'phpbb_import_avatar'), + array('user_avatar_type', 'users.user_avatar_type', 'phpbb_avatar_type'), + array('user_avatar_width', 'users.user_avatar', 'get_avatar_width'), + array('user_avatar_height', 'users.user_avatar', 'get_avatar_height'), + + array('user_new_privmsg', 'users.user_new_privmsg', ''), + array('user_unread_privmsg', 0, ''), //'users.user_unread_privmsg' + array('user_last_privmsg', 'users.user_last_privmsg', ''), + array('user_emailtime', 'users.user_emailtime', 'null_to_zero'), + array('user_notify', 'users.user_notify', ''), + array('user_notify_pm', 'users.user_notify_pm', ''), + array('user_notify_type', NOTIFY_EMAIL, ''), + array('user_allow_pm', 'users.user_allow_pm', ''), + array('user_allow_viewonline', 'users.user_allow_viewonline', ''), + array('user_allow_viewemail', 'users.user_viewemail', ''), + array('user_actkey', 'users.user_actkey', ''), + array('user_newpasswd', 'users.user_newpasswd', ''), + + array('user_options', '', 'set_user_options'), + array('', 'users.user_popup_pm AS popuppm', ''), + array('', 'users.user_allowhtml AS html', ''), + array('', 'users.user_allowbbcode AS bbcode', ''), + array('', 'users.user_allowsmile AS smile', ''), + array('', 'users.user_attachsig AS attachsig',''), + + array('user_sig_bbcode_uid', 'users.user_regdate', 'make_uid'), + array('user_sig', 'users.user_sig', 'phpbb_prepare_message'), + array('', 'users.user_sig_bbcode_uid AS old_bbcode_uid', ''), + array('user_sig_bbcode_bitfield', '', 'get_bbcode_bitfield'), + array('', 'users.user_regdate AS post_time', ''), + + 'where' => 'users.user_id <> -1', + ), + ), + ); +} + +?>
\ No newline at end of file diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php new file mode 100644 index 0000000000..05daae473b --- /dev/null +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -0,0 +1,1449 @@ +<?php +/** +* +* @package install +* @version $Id$ +* @copyright (c) 2006 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +* Helper functions for phpBB 2.0.x to phpBB 3.0.x conversion +*/ + +/** +* Set forum flags - only prune old polls by default +*/ +function phpbb_forum_flags() +{ + // Set forum flags + $forum_flags = 0; + + // FORUM_FLAG_LINK_TRACK + $forum_flags += 0; + + // FORUM_FLAG_PRUNE_POLL + $forum_flags += FORUM_FLAG_PRUNE_POLL; + + // FORUM_FLAG_PRUNE_ANNOUNCE + $forum_flags += 0; + + // FORUM_FLAG_PRUNE_STICKY + $forum_flags += 0; + + // FORUM_FLAG_ACTIVE_TOPICS + $forum_flags += 0; + + // FORUM_FLAG_POST_REVIEW + $forum_flags += FORUM_FLAG_POST_REVIEW; + + return $forum_flags; +} + +/** +* Insert/Convert forums +*/ +function phpbb_insert_forums() +{ + global $db, $convert, $user, $config; + + $db->sql_query($convert->truncate_statement . FORUMS_TABLE); + + // Determine the highest id used within the old forums table (we add the categories after the forum ids) + $sql = 'SELECT MAX(forum_id) AS max_forum_id + FROM ' . $convert->src_table_prefix . 'forums'; + $result = $db->sql_query($sql); + $max_forum_id = (int) $db->sql_fetchfield('max_forum_id'); + $db->sql_freeresult($result); + + $max_forum_id++; + + // Insert categories + $sql = 'SELECT cat_id, cat_title + FROM ' . $convert->src_table_prefix . 'categories + ORDER BY cat_order'; + + if ($convert->mysql_convert) + { + $db->sql_query("SET NAMES 'binary'"); + } + + $result = $db->sql_query($sql); + + if ($convert->mysql_convert) + { + $db->sql_query("SET NAMES 'utf8'"); + } + + $cats_added = array(); + while ($row = $db->sql_fetchrow($result)) + { + $sql_ary = array( + 'forum_id' => $max_forum_id, + 'forum_name' => ($row['cat_title']) ? htmlspecialchars(phpbb_set_encoding($row['cat_title'], false), ENT_COMPAT, 'UTF-8') : $user->lang['CATEGORY'], + 'parent_id' => 0, + 'forum_parents' => '', + 'forum_desc' => '', + 'forum_type' => FORUM_CAT, + 'forum_status' => ITEM_UNLOCKED, + 'forum_rules' => '', + ); + + $sql = 'SELECT MAX(right_id) AS right_id + FROM ' . FORUMS_TABLE; + $_result = $db->sql_query($sql); + $cat_row = $db->sql_fetchrow($_result); + $db->sql_freeresult($_result); + + $sql_ary['left_id'] = $cat_row['right_id'] + 1; + $sql_ary['right_id'] = $cat_row['right_id'] + 2; + + $sql = 'INSERT INTO ' . FORUMS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $db->sql_query($sql); + + $cats_added[$row['cat_id']] = $max_forum_id; + $max_forum_id++; + } + $db->sql_freeresult($result); + + // There may be installations having forums with non-existant category ids. + // We try to catch them and add them to an "unknown" category instead of leaving them out. + $sql = 'SELECT cat_id + FROM ' . $convert->src_table_prefix . 'forums + GROUP BY cat_id'; + $result = $db->sql_query($sql); + + $unknown_cat_id = false; + while ($row = $db->sql_fetchrow($result)) + { + // Catch those categories not been added before + if (!isset($cats_added[$row['cat_id']])) + { + $unknown_cat_id = true; + } + } + $db->sql_freeresult($result); + + // Is there at least one category not known? + if ($unknown_cat_id === true) + { + $unknown_cat_id = 'ghost'; + + $sql_ary = array( + 'forum_id' => $max_forum_id, + 'forum_name' => $user->lang['CATEGORY'], + 'parent_id' => 0, + 'forum_parents' => '', + 'forum_desc' => '', + 'forum_type' => FORUM_CAT, + 'forum_status' => ITEM_UNLOCKED, + 'forum_rules' => '', + ); + + $sql = 'SELECT MAX(right_id) AS right_id + FROM ' . FORUMS_TABLE; + $_result = $db->sql_query($sql); + $cat_row = $db->sql_fetchrow($_result); + $db->sql_freeresult($_result); + + $sql_ary['left_id'] = $cat_row['right_id'] + 1; + $sql_ary['right_id'] = $cat_row['right_id'] + 2; + + $sql = 'INSERT INTO ' . FORUMS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $db->sql_query($sql); + + $cats_added[$unknown_cat_id] = $max_forum_id; + $max_forum_id++; + } + + // Now insert the forums + $sql = 'SELECT f.*, fp.prune_days, fp.prune_freq FROM ' . $convert->src_table_prefix . 'forums f + LEFT JOIN ' . $convert->src_table_prefix . 'forum_prune fp ON f.forum_id = fp.forum_id + GROUP BY f.forum_id + ORDER BY f.cat_id, f.forum_order'; + + if ($convert->mysql_convert) + { + $db->sql_query("SET NAMES 'binary'"); + } + + $result = $db->sql_query($sql); + + if ($convert->mysql_convert) + { + $db->sql_query("SET NAMES 'utf8'"); + } + + while ($row = $db->sql_fetchrow($result)) + { + // Some might have forums here with an id not being "possible"... + // To be somewhat friendly we "change" the category id for those to a previously created ghost category + if (!isset($cats_added[$row['cat_id']]) && $unknown_cat_id !== false) + { + $row['cat_id'] = $unknown_cat_id; + } + + if (!isset($cats_added[$row['cat_id']])) + { + continue; + } + + // Define the new forums sql ary + $sql_ary = array( + 'forum_id' => (int) $row['forum_id'], + 'forum_name' => htmlspecialchars(phpbb_set_encoding($row['forum_name'], false), ENT_COMPAT, 'UTF-8'), + 'parent_id' => $cats_added[$row['cat_id']], + 'forum_parents' => '', + 'forum_desc' => htmlspecialchars(phpbb_set_encoding($row['forum_desc'], false), ENT_COMPAT, 'UTF-8'), + 'forum_type' => FORUM_POST, + 'forum_status' => is_item_locked($row['forum_status']), + 'enable_prune' => $row['prune_enable'], + 'prune_next' => null_to_zero($row['prune_next']), + 'prune_days' => null_to_zero($row['prune_days']), + 'prune_viewed' => 0, + 'prune_freq' => null_to_zero($row['prune_freq']), + + 'forum_flags' => phpbb_forum_flags(), + + // Default values + 'forum_desc_bitfield' => '', + 'forum_desc_options' => 7, + 'forum_desc_uid' => '', + 'forum_link' => '', + 'forum_password' => '', + 'forum_style' => 0, + 'forum_image' => '', + 'forum_rules' => '', + 'forum_rules_link' => '', + 'forum_rules_bitfield' => '', + 'forum_rules_options' => 7, + 'forum_rules_uid' => '', + 'forum_topics_per_page' => 0, + 'forum_posts' => 0, + 'forum_topics' => 0, + 'forum_topics_real' => 0, + 'forum_last_post_id' => 0, + 'forum_last_poster_id' => 0, + 'forum_last_post_subject' => '', + 'forum_last_post_time' => 0, + 'forum_last_poster_name' => '', + 'forum_last_poster_colour' => '', + 'display_on_index' => 1, + 'enable_indexing' => 1, + 'enable_icons' => 0, + ); + + // Now add the forums with proper left/right ids + $sql = 'SELECT left_id, right_id + FROM ' . FORUMS_TABLE . ' + WHERE forum_id = ' . $cats_added[$row['cat_id']]; + $_result = $db->sql_query($sql); + $cat_row = $db->sql_fetchrow($_result); + $db->sql_freeresult($_result); + + $sql = 'UPDATE ' . FORUMS_TABLE . ' + SET left_id = left_id + 2, right_id = right_id + 2 + WHERE left_id > ' . $cat_row['right_id']; + $db->sql_query($sql); + + $sql = 'UPDATE ' . FORUMS_TABLE . ' + SET right_id = right_id + 2 + WHERE ' . $cat_row['left_id'] . ' BETWEEN left_id AND right_id'; + $db->sql_query($sql); + + $sql_ary['left_id'] = $cat_row['right_id']; + $sql_ary['right_id'] = $cat_row['right_id'] + 1; + + $sql = 'INSERT INTO ' . FORUMS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $db->sql_query($sql); + } + $db->sql_freeresult($result); +} + +/** +* Function for recoding text with the default language +* +* @param string $text text to recode to utf8 +* @param bool $grab_user_lang if set to true the function tries to use $convert_row['user_lang'] (and falls back to $convert_row['poster_id']) instead of the boards default language +*/ +function phpbb_set_encoding($text, $grab_user_lang = true) +{ + global $lang_enc_array, $convert_row; + global $convert, $phpEx; + + /*static $lang_enc_array = array( + 'korean' => 'euc-kr', + 'serbian' => 'windows-1250', + 'polish' => 'iso-8859-2', + 'kurdish' => 'windows-1254', + 'slovak' => 'Windows-1250', + 'russian' => 'windows-1251', + 'estonian' => 'iso-8859-4', + 'chinese_simplified' => 'gb2312', + 'macedonian' => 'windows-1251', + 'azerbaijani' => 'UTF-8', + 'romanian' => 'iso-8859-2', + 'romanian_diacritice' => 'iso-8859-2', + 'lithuanian' => 'windows-1257', + 'turkish' => 'iso-8859-9', + 'ukrainian' => 'windows-1251', + 'japanese' => 'shift_jis', + 'hungarian' => 'ISO-8859-2', + 'romanian_no_diacritics' => 'iso-8859-2', + 'mongolian' => 'UTF-8', + 'slovenian' => 'windows-1250', + 'bosnian' => 'windows-1250', + 'czech' => 'Windows-1250', + 'farsi' => 'Windows-1256', + 'croatian' => 'windows-1250', + 'greek' => 'iso-8859-7', + 'russian_tu' => 'windows-1251', + 'sakha' => 'UTF-8', + 'serbian_cyrillic' => 'windows-1251', + 'bulgarian' => 'windows-1251', + 'chinese_traditional_taiwan' => 'big5', + 'chinese_traditional' => 'big5', + 'arabic' => 'windows-1256', + 'hebrew' => 'WINDOWS-1255', + 'thai' => 'windows-874', + //'chinese_traditional_taiwan' => 'utf-8' // custom modified, we may have to do an include :-( + );*/ + + if (empty($lang_enc_array)) + { + $lang_enc_array = array(); + } + + $get_lang = trim(get_config_value('default_lang')); + + // Do we need the users language encoding? + if ($grab_user_lang && !empty($convert_row)) + { + if (!empty($convert_row['user_lang'])) + { + $get_lang = trim($convert_row['user_lang']); + } + else if (!empty($convert_row['poster_id'])) + { + global $db; + + $sql = 'SELECT user_lang + FROM ' . $convert->src_table_prefix . 'users + WHERE user_id = ' . (int) $convert_row['poster_id']; + $result = $db->sql_query($sql); + $get_lang = (string) $db->sql_fetchfield('user_lang'); + $db->sql_freeresult($result); + + $get_lang = (!trim($get_lang)) ? trim(get_config_value('default_lang')) : trim($get_lang); + } + } + + if (!isset($lang_enc_array[$get_lang])) + { + $filename = $convert->options['forum_path'] . '/language/lang_' . $get_lang . '/lang_main.' . $phpEx; + + if (!file_exists($filename)) + { + $get_lang = trim(get_config_value('default_lang')); + } + + if (!isset($lang_enc_array[$get_lang])) + { + include($convert->options['forum_path'] . '/language/lang_' . $get_lang . '/lang_main.' . $phpEx); + $lang_enc_array[$get_lang] = $lang['ENCODING']; + unset($lang); + } + } + + $encoding = $lang_enc_array[$get_lang]; + + return utf8_recode($text, $lang_enc_array[$get_lang]); +} + +/** +* Same as phpbb_set_encoding, but forcing boards default language +*/ +function phpbb_set_default_encoding($text) +{ + return phpbb_set_encoding($text, false); +} + +/** +* Convert Birthday from Birthday MOD to phpBB Format +*/ +function phpbb_get_birthday($birthday = '') +{ + $birthday = (int) $birthday; + + if (defined('MOD_BIRTHDAY_TERRA')) + { + // stored as month, day, year + if (!$birthday) + { + return ' 0- 0- 0'; + } + + $birthday = (string) $birthday; + + $month = substr($birthday, 0, 2); + $day = substr($birthday, 2, 2); + $year = substr($birthday, -4); + + return sprintf('%2d-%2d-%4d', $day, $month, $year); + } + else + { + if (!$birthday || $birthday == 999999 || $birthday < 0) + { + return ' 0- 0- 0'; + } + + // The birthday mod from niels is using this code to transform to day/month/year + return gmdate('d-m-Y', $birthday * 86400 + 1); + } +} + +/** +* Return correct user id value +* Everyone's id will be one higher to allow the guest/anonymous user to have a positive id as well +*/ +function phpbb_user_id($user_id) +{ + if (!$user_id) + { + return 0; + } + + if ($user_id == -1) + { + return ANONYMOUS; + } + + global $config; + + // Increment user id if the old forum is having a user with the id 1 + if (!isset($config['increment_user_id'])) + { + global $db, $convert; + + // Now let us set a temporary config variable for user id incrementing + $sql = "SELECT user_id + FROM {$convert->src_table_prefix}users + WHERE user_id = 1"; + $result = $db->sql_query($sql); + $id = (int) $db->sql_fetchfield('user_id'); + $db->sql_freeresult($result); + + // If there is a user id 1, we need to increment user ids. :/ + if ($id === 1) + { + set_config('increment_user_id', 1, true); + $config['increment_user_id'] = 1; + } + else + { + set_config('increment_user_id', 0, true); + $config['increment_user_id'] = 0; + } + } + + if (!empty($config['increment_user_id'])) + { + $user_id++; + } + + return $user_id; +} + +/* Copy additional table fields from old forum to new forum if user wants this (for Mod compatibility for example) +function phpbb_copy_table_fields() +{ +} +*/ + +/** +* Convert authentication +* user, group and forum table has to be filled in order to work +*/ +function phpbb_convert_authentication($mode) +{ + global $db, $convert, $user, $config, $cache; + + if ($mode == 'start') + { + $db->sql_query($convert->truncate_statement . ACL_USERS_TABLE); + $db->sql_query($convert->truncate_statement . ACL_GROUPS_TABLE); + + // Grab user id of first user with user_level of ADMIN + $sql = "SELECT user_id + FROM {$convert->src_table_prefix}users + WHERE user_level = 1 + ORDER BY user_regdate ASC"; + $result = $db->sql_query_limit($sql, 1); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + $founder_id = phpbb_user_id($row['user_id']); + + // Set a founder admin ... we'll assume it's the first user with admin level access + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_type = ' . USER_FOUNDER . " + WHERE user_id = $founder_id"; + $db->sql_query($sql); + } + + // Grab forum auth information + $sql = "SELECT * + FROM {$convert->src_table_prefix}forums"; + $result = $db->sql_query($sql); + + $forum_access = array(); + while ($row = $db->sql_fetchrow($result)) + { + $forum_access[] = $row; + } + $db->sql_freeresult($result); + + // Grab user auth information from 2.0.x board + $sql = "SELECT ug.user_id, aa.* + FROM {$convert->src_table_prefix}auth_access aa, {$convert->src_table_prefix}user_group ug, {$convert->src_table_prefix}groups g + WHERE g.group_id = aa.group_id + AND g.group_single_user = 1 + AND ug.group_id = g.group_id"; + $result = $db->sql_query($sql); + + $user_access = array(); + while ($row = $db->sql_fetchrow($result)) + { + $user_access[$row['forum_id']][] = $row; + } + $db->sql_freeresult($result); + + // Grab group auth information + $sql = "SELECT g.group_id, aa.* + FROM {$convert->src_table_prefix}auth_access aa, {$convert->src_table_prefix}groups g + WHERE g.group_id = aa.group_id + AND g.group_single_user <> 1"; + $result = $db->sql_query($sql); + + $group_access = array(); + while ($row = $db->sql_fetchrow($result)) + { + $group_access[$row['forum_id']][] = $row; + } + $db->sql_freeresult($result); + + // Add Forum Access List + $auth_map = array( + 'auth_view' => array('f_', 'f_list'), + 'auth_read' => 'f_read', + 'auth_post' => array('f_post', 'f_bbcode', 'f_smilies', 'f_img', 'f_sigs', 'f_search', 'f_postcount'), + 'auth_reply' => 'f_reply', + 'auth_edit' => 'f_edit', + 'auth_delete' => 'f_delete', + 'auth_pollcreate' => 'f_poll', + 'auth_vote' => 'f_vote', + 'auth_announce' => 'f_announce', + 'auth_sticky' => 'f_sticky', + 'auth_attachments' => 'f_attach', + 'auth_download' => 'f_download', + ); + + // Define the ACL constants used in 2.0 to make the code slightly more readable + define('AUTH_ALL', 0); + define('AUTH_REG', 1); + define('AUTH_ACL', 2); + define('AUTH_MOD', 3); + define('AUTH_ADMIN', 5); + + // A mapping of the simple permissions used by 2.0 + $simple_auth_ary = array( + 'public' => array( + 'auth_view' => AUTH_ALL, + 'auth_read' => AUTH_ALL, + 'auth_post' => AUTH_ALL, + 'auth_reply' => AUTH_ALL, + 'auth_edit' => AUTH_REG, + 'auth_delete' => AUTH_REG, + 'auth_sticky' => AUTH_MOD, + 'auth_announce' => AUTH_MOD, + 'auth_vote' => AUTH_REG, + 'auth_pollcreate' => AUTH_REG, + ), + 'registered' => array( + 'auth_view' => AUTH_ALL, + 'auth_read' => AUTH_ALL, + 'auth_post' => AUTH_REG, + 'auth_reply' => AUTH_REG, + 'auth_edit' => AUTH_REG, + 'auth_delete' => AUTH_REG, + 'auth_sticky' => AUTH_MOD, + 'auth_announce' => AUTH_MOD, + 'auth_vote' => AUTH_REG, + 'auth_pollcreate' => AUTH_REG, + ), + 'registered_hidden' => array( + 'auth_view' => AUTH_REG, + 'auth_read' => AUTH_REG, + 'auth_post' => AUTH_REG, + 'auth_reply' => AUTH_REG, + 'auth_edit' => AUTH_REG, + 'auth_delete' => AUTH_REG, + 'auth_sticky' => AUTH_MOD, + 'auth_announce' => AUTH_MOD, + 'auth_vote' => AUTH_REG, + 'auth_pollcreate' => AUTH_REG, + ), + 'private' => array( + 'auth_view' => AUTH_ALL, + 'auth_read' => AUTH_ACL, + 'auth_post' => AUTH_ACL, + 'auth_reply' => AUTH_ACL, + 'auth_edit' => AUTH_ACL, + 'auth_delete' => AUTH_ACL, + 'auth_sticky' => AUTH_ACL, + 'auth_announce' => AUTH_MOD, + 'auth_vote' => AUTH_ACL, + 'auth_pollcreate' => AUTH_ACL, + ), + 'private_hidden' => array( + 'auth_view' => AUTH_ACL, + 'auth_read' => AUTH_ACL, + 'auth_post' => AUTH_ACL, + 'auth_reply' => AUTH_ACL, + 'auth_edit' => AUTH_ACL, + 'auth_delete' => AUTH_ACL, + 'auth_sticky' => AUTH_ACL, + 'auth_announce' => AUTH_MOD, + 'auth_vote' => AUTH_ACL, + 'auth_pollcreate' => AUTH_ACL, + ), + 'moderator' => array( + 'auth_view' => AUTH_ALL, + 'auth_read' => AUTH_MOD, + 'auth_post' => AUTH_MOD, + 'auth_reply' => AUTH_MOD, + 'auth_edit' => AUTH_MOD, + 'auth_delete' => AUTH_MOD, + 'auth_sticky' => AUTH_MOD, + 'auth_announce' => AUTH_MOD, + 'auth_vote' => AUTH_MOD, + 'auth_pollcreate' => AUTH_MOD, + ), + 'moderator_hidden' => array( + 'auth_view' => AUTH_MOD, + 'auth_read' => AUTH_MOD, + 'auth_post' => AUTH_MOD, + 'auth_reply' => AUTH_MOD, + 'auth_edit' => AUTH_MOD, + 'auth_delete' => AUTH_MOD, + 'auth_sticky' => AUTH_MOD, + 'auth_announce' => AUTH_MOD, + 'auth_vote' => AUTH_MOD, + 'auth_pollcreate' => AUTH_MOD, + ), + ); + + if ($mode == 'start') + { + user_group_auth('guests', 'SELECT user_id, {GUESTS} FROM ' . USERS_TABLE . ' WHERE user_id = ' . ANONYMOUS); + user_group_auth('registered', 'SELECT user_id, {REGISTERED} FROM ' . USERS_TABLE . ' WHERE user_id <> ' . ANONYMOUS); + + // Selecting from old table + $auth_sql = 'SELECT '; + $auth_sql .= (!empty($config['increment_user_id'])) ? 'user_id + 1 as user_id' : 'user_id'; + $auth_sql .= ', {ADMINISTRATORS} FROM ' . $convert->src_table_prefix . 'users WHERE user_level = 1'; + + user_group_auth('administrators', $auth_sql); + + // Put administrators into global moderators group too... + $auth_sql = 'SELECT '; + $auth_sql .= (!empty($config['increment_user_id'])) ? 'user_id + 1 as user_id' : 'user_id'; + $auth_sql .= ', {GLOBAL_MODERATORS} FROM ' . $convert->src_table_prefix . 'users WHERE user_level = 1'; + + user_group_auth('global_moderators', $auth_sql); + } + else if ($mode == 'first') + { + // Go through all 2.0.x forums (we saved those ids for reference) + foreach ($forum_access as $forum) + { + $new_forum_id = (int) $forum['forum_id']; + + // Administrators have full access to all forums whatever happens + mass_auth('group_role', $new_forum_id, 'administrators', 'FORUM_FULL'); + + $matched_type = ''; + foreach ($simple_auth_ary as $key => $auth_levels) + { + $matched = 1; + foreach ($auth_levels as $k => $level) + { + if ($forum[$k] != $auth_levels[$k]) + { + $matched = 0; + } + } + + if ($matched) + { + $matched_type = $key; + break; + } + } + + switch ($matched_type) + { + case 'public': + mass_auth('group_role', $new_forum_id, 'guests', 'FORUM_LIMITED'); + mass_auth('group_role', $new_forum_id, 'registered', 'FORUM_LIMITED_POLLS'); + mass_auth('group_role', $new_forum_id, 'bots', 'FORUM_BOT'); + break; + + case 'registered': + mass_auth('group_role', $new_forum_id, 'guests', 'FORUM_READONLY'); + mass_auth('group_role', $new_forum_id, 'bots', 'FORUM_BOT'); + + // no break; + + case 'registered_hidden': + mass_auth('group_role', $new_forum_id, 'registered', 'FORUM_LIMITED_POLLS'); + break; + + case 'private': + case 'private_hidden': + case 'moderator': + case 'moderator_hidden': + default: + // The permissions don't match a simple set, so we're going to have to map them directly + + // No post approval for all, in 2.0.x this feature does not exist + mass_auth('group', $new_forum_id, 'guests', 'f_noapprove', ACL_YES); + mass_auth('group', $new_forum_id, 'registered', 'f_noapprove', ACL_YES); + + // Go through authentication map + foreach ($auth_map as $old_auth_key => $new_acl) + { + // If old authentication key does not exist we continue + // This is helpful for mods adding additional authentication fields, we need to add them to the auth_map array + if (!isset($forum[$old_auth_key])) + { + continue; + } + + // Now set the new ACL correctly + switch ($forum[$old_auth_key]) + { + // AUTH_ALL + case AUTH_ALL: + mass_auth('group', $new_forum_id, 'guests', $new_acl, ACL_YES); + mass_auth('group', $new_forum_id, 'registered', $new_acl, ACL_YES); + break; + + // AUTH_REG + case AUTH_REG: + mass_auth('group', $new_forum_id, 'registered', $new_acl, ACL_YES); + break; + + // AUTH_ACL + case AUTH_ACL: + // Go through the old group access list for this forum + if (isset($group_access[$forum['forum_id']])) + { + foreach ($group_access[$forum['forum_id']] as $index => $access) + { + // We only check for ACL_YES equivalence entry + if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) + { + mass_auth('group', $new_forum_id, (int) $access['group_id'], $new_acl, ACL_YES); + } + } + } + + if (isset($user_access[$forum['forum_id']])) + { + foreach ($user_access[$forum['forum_id']] as $index => $access) + { + // We only check for ACL_YES equivalence entry + if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) + { + mass_auth('user', $new_forum_id, (int) phpbb_user_id($access['user_id']), $new_acl, ACL_YES); + } + } + } + break; + + // AUTH_MOD + case AUTH_MOD: + if (isset($group_access[$forum['forum_id']])) + { + foreach ($group_access[$forum['forum_id']] as $index => $access) + { + // We only check for ACL_YES equivalence entry + if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) + { + mass_auth('group', $new_forum_id, (int) $access['group_id'], $new_acl, ACL_YES); + } + } + } + + if (isset($user_access[$forum['forum_id']])) + { + foreach ($user_access[$forum['forum_id']] as $index => $access) + { + // We only check for ACL_YES equivalence entry + if (isset($access[$old_auth_key]) && $access[$old_auth_key] == 1) + { + mass_auth('user', $new_forum_id, (int) phpbb_user_id($access['user_id']), $new_acl, ACL_YES); + } + } + } + break; + } + } + break; + } + } + } + else if ($mode == 'second') + { + // Assign permission roles and other default permissions + + // guests having u_download and u_search ability + $db->sql_query('INSERT INTO ' . ACL_GROUPS_TABLE . ' (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) SELECT ' . get_group_id('guests') . ', 0, auth_option_id, 0, 1 FROM ' . ACL_OPTIONS_TABLE . " WHERE auth_option IN ('u_', 'u_download', 'u_search')"); + + // administrators/global mods having full user features + mass_auth('group_role', 0, 'administrators', 'USER_FULL'); + mass_auth('group_role', 0, 'global_moderators', 'USER_FULL'); + + // By default all converted administrators are given standard access (the founder still have full access) + mass_auth('group_role', 0, 'administrators', 'ADMIN_STANDARD'); + + // All registered users are assigned the standard user role + mass_auth('group_role', 0, 'registered', 'USER_STANDARD'); + mass_auth('group_role', 0, 'registered_coppa', 'USER_STANDARD'); + + // Instead of administrators being global moderators we give the MOD_FULL role to global mods (admins already assigned to this group) + mass_auth('group_role', 0, 'global_moderators', 'MOD_FULL'); + + // And now those who have had their avatar rights removed get assigned a more restrictive role + $sql = 'SELECT user_id FROM ' . $convert->src_table_prefix . 'users + WHERE user_allowavatar = 0 + AND user_id > 0'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + mass_auth('user_role', 0, (int) phpbb_user_id($row['user_id']), 'USER_NOAVATAR'); + } + $db->sql_freeresult($result); + + // And the same for those who have had their PM rights removed + $sql = 'SELECT user_id FROM ' . $convert->src_table_prefix . 'users + WHERE user_allow_pm = 0 + AND user_id > 0'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + mass_auth('user_role', 0, (int) phpbb_user_id($row['user_id']), 'USER_NOPM'); + } + $db->sql_freeresult($result); + } + else if ($mode == 'third') + { + // And now the moderators + // We make sure that they have at least standard access to the forums they moderate in addition to the moderating permissions + foreach ($user_access as $forum_id => $access_map) + { + $forum_id = (int) $forum_id; + + foreach ($access_map as $access) + { + if (isset($access['auth_mod']) && $access['auth_mod'] == 1) + { + mass_auth('user_role', $forum_id, (int) phpbb_user_id($access['user_id']), 'MOD_STANDARD'); + mass_auth('user_role', $forum_id, (int) phpbb_user_id($access['user_id']), 'FORUM_STANDARD'); + } + } + } + + foreach ($group_access as $forum_id => $access_map) + { + $forum_id = (int) $forum_id; + + foreach ($access_map as $access) + { + if (isset($access['auth_mod']) && $access['auth_mod'] == 1) + { + mass_auth('group_role', $forum_id, (int) $access['group_id'], 'MOD_STANDARD'); + mass_auth('group_role', $forum_id, (int) $access['group_id'], 'FORUM_STANDARD'); + } + } + } + + // We grant everyone readonly access to the categories to ensure that the forums are visible + $sql = 'SELECT forum_id, forum_name, parent_id, left_id, right_id + FROM ' . FORUMS_TABLE . ' + ORDER BY left_id ASC'; + $result = $db->sql_query($sql); + + $parent_forums = $forums = array(); + while ($row = $db->sql_fetchrow($result)) + { + if ($row['parent_id'] == 0) + { + mass_auth('group_role', $row['forum_id'], 'administrators', 'FORUM_FULL'); + $parent_forums[] = $row; + } + else + { + $forums[] = $row; + } + } + $db->sql_freeresult($result); + + global $auth; + + // Let us see if guests/registered users have access to these forums... + foreach ($parent_forums as $row) + { + // Get the children + $branch = $forum_ids = array(); + + foreach ($forums as $key => $_row) + { + if ($_row['left_id'] > $row['left_id'] && $_row['left_id'] < $row['right_id']) + { + $branch[] = $_row; + $forum_ids[] = $_row['forum_id']; + continue; + } + } + + if (sizeof($forum_ids)) + { + // Now make sure the user is able to read these forums + $hold_ary = $auth->acl_group_raw_data(get_group_id('guests'), 'f_list', $forum_ids); + + if (!empty($hold_ary)) + { + mass_auth('group', $row['forum_id'], 'guests', 'f_list', ACL_YES); + mass_auth('group', $row['forum_id'], 'registered', 'f_list', ACL_YES); + } + } + } + } +} + +/** +* Set primary group. +* Really simple and only based on user_level (remaining groups will be assigned later) +*/ +function phpbb_set_primary_group($user_level) +{ + global $convert_row; + + if ($user_level == 1) + { + return get_group_id('administrators'); + } +/* else if ($user_level == 2) + { + return get_group_id('global_moderators'); + } + else if ($user_level == 0 && $convert_row['user_active'])*/ + else if ($convert_row['user_active']) + { + return get_group_id('registered'); + } + + return 0; +} + +/** +* Convert the group name, making sure to avoid conflicts with 3.0 special groups +*/ +function phpbb_convert_group_name($group_name) +{ + $default_groups = array( + 'GUESTS', + 'REGISTERED', + 'REGISTERED_COPPA', + 'GLOBAL_MODERATORS', + 'ADMINISTRATORS', + 'BOTS', + ); + + if (in_array(strtoupper($group_name), $default_groups)) + { + return 'phpBB2 - ' . $group_name; + } + + return phpbb_set_encoding($group_name, false); +} + +/** +* Convert the group type constants +*/ +function phpbb_convert_group_type($group_type) +{ + switch ($group_type) + { + case 0: + return GROUP_OPEN; + break; + + case 1: + return GROUP_CLOSED; + break; + + case 2: + return GROUP_HIDDEN; + break; + } + + return GROUP_SPECIAL; +} + +/** +* Convert the topic type constants +*/ +function phpbb_convert_topic_type($topic_type) +{ + switch ($topic_type) + { + case 0: + return POST_NORMAL; + break; + + case 1: + return POST_STICKY; + break; + + case 2: + return POST_ANNOUNCE; + break; + + case 3: + return POST_GLOBAL; + break; + } + + return POST_NORMAL; +} + +/** +* Reparse the message stripping out the bbcode_uid values and adding new ones and setting the bitfield +* @todo What do we want to do about HTML in messages - currently it gets converted to the entities, but there may be some objections to this +*/ +function phpbb_prepare_message($message) +{ + global $phpbb_root_path, $phpEx, $db, $convert, $user, $config, $cache, $convert_row, $message_parser; + + if (!$message) + { + $convert->row['mp_bbcode_bitfield'] = $convert_row['mp_bbcode_bitfield'] = 0; + return ''; + } + + // Decode phpBB 2.0.x Message + if (isset($convert->row['old_bbcode_uid']) && $convert->row['old_bbcode_uid'] != '') + { + $message = preg_replace('/\:(([a-z0-9]:)?)' . $convert->row['old_bbcode_uid'] . '/s', '', $message); + } + + if (strpos($message, '[quote=') !== false) + { + $message = preg_replace('/\[quote="(.*?)"\]/s', '[quote="\1"]', $message); + } + + $user_id = $convert->row['poster_id']; + + $message = str_replace('<', '<', $message); + $message = str_replace('>', '>', $message); + $message = str_replace('<br />', "\n", $message); + + // make the post UTF-8 + $message = phpbb_set_encoding($message); + + $message_parser->warn_msg = array(); // Reset the errors from the previous message + $message_parser->bbcode_uid = make_uid($convert->row['post_time']); + $message_parser->message = $message; + unset($message); + + // Make sure options are set. +// $enable_html = (!isset($row['enable_html'])) ? false : $row['enable_html']; + $enable_bbcode = (!isset($convert->row['enable_bbcode'])) ? true : $convert->row['enable_bbcode']; + $enable_smilies = (!isset($convert->row['enable_smilies'])) ? true : $convert->row['enable_smilies']; + $enable_magic_url = (!isset($convert->row['enable_magic_url'])) ? true : $convert->row['enable_magic_url']; + + // parse($allow_bbcode, $allow_magic_url, $allow_smilies, $allow_img_bbcode = true, $allow_flash_bbcode = true, $allow_quote_bbcode = true, $allow_url_bbcode = true, $update_this_message = true, $mode = 'post') + $message_parser->parse($enable_bbcode, $enable_magic_url, $enable_smilies); + + if (sizeof($message_parser->warn_msg)) + { + $msg_id = isset($convert->row['post_id']) ? $convert->row['post_id'] : $convert->row['privmsgs_id']; + $convert->p_master->error('<span style="color:red">' . $user->lang['POST_ID'] . ': ' . $msg_id . ' ' . $user->lang['CONV_ERROR_MESSAGE_PARSER'] . ': <br /><br />' . implode('<br />', $message_parser->warn_msg), __LINE__, __FILE__, true); + } + + $convert->row['mp_bbcode_bitfield'] = $convert_row['mp_bbcode_bitfield'] = $message_parser->bbcode_bitfield; + + $message = $message_parser->message; + unset($message_parser->message); + + return $message; +} + +/** +* Return the bitfield calculated by the previous function +*/ +function get_bbcode_bitfield() +{ + global $convert_row; + + return $convert_row['mp_bbcode_bitfield']; +} + +/** +* Determine the last user to edit a post +* In practice we only tracked edits by the original poster in 2.0.x so this will only be set if they had edited their own post +*/ +function phpbb_post_edit_user() +{ + global $convert_row, $config; + + if (isset($convert_row['post_edit_count'])) + { + return phpbb_user_id($convert_row['poster_id']); + } + + return 0; +} + +/** +* Obtain the path to uploaded files on the 2.0.x forum +* This is only used if the Attachment MOD was installed +*/ +function phpbb_get_files_dir() +{ + if (!defined('MOD_ATTACHMENT')) + { + return; + } + + global $db, $convert, $user, $config, $cache; + + $sql = 'SELECT config_value AS upload_dir + FROM ' . $convert->src_table_prefix . "attachments_config + WHERE config_name = 'upload_dir'"; + $result = $db->sql_query($sql); + $upload_path = $db->sql_fetchfield('upload_dir'); + $db->sql_freeresult($result); + + $sql = 'SELECT config_value AS ftp_upload + FROM ' . $convert->src_table_prefix . "attachments_config + WHERE config_name = 'allow_ftp_upload'"; + $result = $db->sql_query($sql); + $ftp_upload = (int) $db->sql_fetchfield('ftp_upload'); + $db->sql_freeresult($result); + + if ($ftp_upload) + { + $convert->p_master->error($user->lang['CONV_ERROR_ATTACH_FTP_DIR'], __LINE__, __FILE__); + } + + return $upload_path; +} + +/** +* Copy thumbnails of uploaded images from the 2.0.x forum +* This is only used if the Attachment MOD was installed +*/ +function phpbb_copy_thumbnails() +{ + global $db, $convert, $user, $config, $cache, $phpbb_root_path; + + $src_path = $convert->options['forum_path'] . '/' . phpbb_get_files_dir() . '/thumbs/'; + + if ($handle = @opendir($src_path)) + { + while ($entry = readdir($handle)) + { + if ($entry[0] == '.') + { + continue; + } + + if (is_dir($src_path . $entry)) + { + continue; + } + else + { + copy_file($src_path . $entry, $config['upload_path'] . '/' . preg_replace('/^t_/', 'thumb_', $entry)); + @unlink($phpbb_root_path . $config['upload_path'] . '/thumbs/' . $entry); + } + } + closedir($handle); + } +} + +/** +* Convert the attachment category constants +* This is only used if the Attachment MOD was installed +*/ +function phpbb_attachment_category($cat_id) +{ + switch ($cat_id) + { + case 1: + return ATTACHMENT_CATEGORY_IMAGE; + break; + + case 2: + return ATTACHMENT_CATEGORY_WM; + break; + + case 3: + return ATTACHMENT_CATEGORY_FLASH; + break; + } + + return ATTACHMENT_CATEGORY_NONE; +} + +/** +* Obtain list of forums in which different attachment categories can be used +*/ +function phpbb_attachment_forum_perms($forum_permissions) +{ + if (empty($forum_permissions)) + { + return ''; + } + + // Decode forum permissions + $forum_ids = array(); + + $one_char_encoding = '#'; + $two_char_encoding = '.'; + + $auth_len = 1; + for ($pos = 0; $pos < strlen($forum_permissions); $pos += $auth_len) + { + $forum_auth = substr($forum_permissions, $pos, 1); + if ($forum_auth == $one_char_encoding) + { + $auth_len = 1; + continue; + } + else if ($forum_auth == $two_char_encoding) + { + $auth_len = 2; + $pos--; + continue; + } + + $forum_auth = substr($forum_permissions, $pos, $auth_len); + $forum_id = base64_unpack($forum_auth); + + $forum_ids[] = (int) $forum_id; + } + + if (sizeof($forum_ids)) + { + return attachment_forum_perms($forum_ids); + } + + return ''; +} + +/** +* Convert the avatar type constants +*/ +function phpbb_avatar_type($type) +{ + switch ($type) + { + case 1: + return AVATAR_UPLOAD; + break; + + case 2: + return AVATAR_REMOTE; + break; + + case 3: + return AVATAR_GALLERY; + break; + } + + return 0; +} + +/** +* Transfer avatars, copying the image if it was uploaded +*/ +function phpbb_import_avatar($user_avatar) +{ + global $convert_row; + + if (!$convert_row['user_avatar_type']) + { + return ''; + } + else if ($convert_row['user_avatar_type'] == 1) + { + // Uploaded avatar + return import_avatar($user_avatar); + } + else if ($convert_row['user_avatar_type'] == 2) + { + // Remote avatar + return $user_avatar; + } + else if ($convert_row['user_avatar_type'] == 3) + { + // Gallery avatar + return $user_avatar; + } + + return ''; +} + +/** +* Calculate the correct to_address field for private messages +*/ +function phpbb_privmsgs_to_userid($to_userid) +{ + global $config; + + return 'u_' . phpbb_user_id($to_userid); +} + +/** +* Calculate whether a private message was unread using the bitfield +*/ +function phpbb_unread_pm($pm_type) +{ + return ($pm_type == 5) ? 1 : 0; +} + +/** +* Calculate whether a private message was new using the bitfield +*/ +function phpbb_new_pm($pm_type) +{ + return ($pm_type == 1) ? 1 : 0; +} + +/** +* Obtain the folder_id for the custom folder created to replace the savebox from 2.0.x (used to store saved private messages) +*/ +function phpbb_get_savebox_id($user_id) +{ + global $db; + + $user_id = phpbb_user_id($user_id); + + // Only one custom folder, check only one + $sql = 'SELECT folder_id + FROM ' . PRIVMSGS_FOLDER_TABLE . ' + WHERE user_id = ' . $user_id; + $result = $db->sql_query_limit($sql, 1); + $folder_id = (int) $db->sql_fetchfield('folder_id'); + $db->sql_freeresult($result); + + return $folder_id; +} + +/** +* Transfer attachment specific configuration options +* These were not stored in the main config table on 2.0.x +* This is only used if the Attachment MOD was installed +*/ +function phpbb_import_attach_config() +{ + global $db, $convert, $config; + + $sql = 'SELECT * + FROM ' . $convert->src_table_prefix . 'attachments_config'; + $result = $db->sql_query($sql); + + $attach_config = array(); + while ($row = $db->sql_fetchrow($result)) + { + $attach_config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + set_config('allow_attachments', 1); + + // old attachment mod? Must be very old if this entry do not exist... + if (!empty($attach_config['display_order'])) + { + set_config('display_order', $attach_config['display_order']); + } + set_config('max_filesize', $attach_config['max_filesize']); + set_config('max_filesize_pm', $attach_config['max_filesize_pm']); + set_config('attachment_quota', $attach_config['attachment_quota']); + set_config('max_attachments', $attach_config['max_attachments']); + set_config('max_attachments_pm', $attach_config['max_attachments_pm']); + set_config('allow_pm_attach', $attach_config['allow_pm_attach']); + + set_config('img_display_inlined', $attach_config['img_display_inlined']); + set_config('img_max_width', $attach_config['img_max_width']); + set_config('img_max_height', $attach_config['img_max_height']); + set_config('img_link_width', $attach_config['img_link_width']); + set_config('img_link_height', $attach_config['img_link_height']); + set_config('img_create_thumbnail', $attach_config['img_create_thumbnail']); + set_config('img_max_thumb_width', 400); + set_config('img_min_thumb_filesize', $attach_config['img_min_thumb_filesize']); + set_config('img_imagick', $attach_config['img_imagick']); +} + +/** +* Calculate the date a user became inactive +*/ +function phpbb_inactive_time() +{ + global $convert_row; + + if ($convert_row['user_active']) + { + return 0; + } + + if ($convert_row['user_lastvisit']) + { + return $convert_row['user_lastvisit']; + } + + return $convert_row['user_regdate']; +} + +/** +* Calculate the reason a user became inactive +* We can't actually tell the difference between a manual deactivation and one for profile changes +* from the data available to assume the latter +*/ +function phpbb_inactive_reason() +{ + global $convert_row; + + if ($convert_row['user_active']) + { + return 0; + } + + if ($convert_row['user_lastvisit']) + { + return INACTIVE_PROFILE; + } + + return INACTIVE_REGISTER; +} + +?>
\ No newline at end of file diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 461b5807c2..666cb1aad3 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -8,7 +8,7 @@ * */ -$updates_to_version = '3.0.B4'; +$updates_to_version = '3.0.B5'; if (defined('IN_PHPBB') && defined('IN_INSTALL')) { @@ -27,7 +27,7 @@ $phpEx = substr(strrchr(__FILE__, '.'), 1); //error_reporting(E_ALL ^ E_NOTICE); error_reporting(E_ALL); -@set_time_limit(120); +@set_time_limit(0); // Include essential scripts include($phpbb_root_path . 'config.' . $phpEx); @@ -60,6 +60,7 @@ require($phpbb_root_path . 'includes/constants.' . $phpEx); require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); +$user = new user(); $cache = new cache(); $db = new $sql_db(); @@ -85,6 +86,7 @@ include($phpbb_root_path . 'language/' . $row['config_value'] . '/install.' . $p //set_error_handler('msg_handler'); // Define some variables for the database update +$inline_update = (request_var('type', 0)) ? true : false; // Database column types mapping $dbms_type_map = array( @@ -283,7 +285,7 @@ $unsigned_types = array('UINT', 'UINT:', 'USINT', 'BOOL', 'TIMESTAMP'); // Only an example, but also commented out $database_update_info = array( - // Changes within this version + // Changes from 3.0.b3 to the next version '3.0.b3' => array( // Change the following columns... 'change_columns' => array( @@ -307,8 +309,48 @@ $database_update_info = array( ), ), ), - // Latest version - '3.0.b4' => array(), + // Changes from 3.0.b4 to the next version + '3.0.b4' => array( + // Add the following columns + 'add_columns' => array( + CONFIRM_TABLE => array( + 'seed' => array('UINT:10', 0), + ), + SESSIONS_TABLE => array( + 'session_forwarded_for' => array('VCHAR:255', 0), + ), + ), + 'change_columns' => array( + USERS_TABLE => array( + 'user_options' => array('UINT:11', 895), + ), + FORUMS_TABLE => array( + 'prune_days' => array('UINT', 0), + 'prune_viewed' => array('UINT', 0), + 'prune_freq' => array('UINT', 0), + ), + PRIVMSGS_RULES_TABLE => array( + 'rule_folder_id' => array('INT:11', 0), + ), + PRIVMSGS_TO_TABLE => array( + 'folder_id' => array('INT:11', 0), + ), + ), + // Remove the following keys + 'drop_keys' => array( + ZEBRA_TABLE => array( + 'user_id', + 'zebra_id', + ), + ), + // Add the following primary keys + 'add_primary_keys' => array( + ZEBRA_TABLE => array( + 'user_id', + 'zebra_id', + ), + ), + ), ); // Determine mapping database type @@ -369,18 +411,39 @@ $errored = false; <p><?php echo $lang['DATABASE_TYPE']; ?> :: <strong><?php echo $db->sql_layer; ?></strong><br /> <?php -$sql = "SELECT config_value - FROM " . CONFIG_TABLE . " - WHERE config_name = 'version'"; +// To let set_config() calls succeed, we need to make the config array available globally +$config = array(); +$sql = 'SELECT * + FROM ' . CONFIG_TABLE; $result = $db->sql_query($sql); -$row = $db->sql_fetchrow($result); + +while ($row = $db->sql_fetchrow($result)) +{ + $config[$row['config_name']] = $row['config_value']; +} $db->sql_freeresult($result); -echo $lang['PREVIOUS_VERSION'] . ' :: <strong>' . $row['config_value'] . '</strong><br />'; + +echo $lang['PREVIOUS_VERSION'] . ' :: <strong>' . $config['version'] . '</strong><br />'; echo $lang['UPDATED_VERSION'] . ' :: <strong>' . $updates_to_version . '</strong>'; -$current_version = strtolower($row['config_value']); +$current_version = strtolower($config['version']); $latest_version = strtolower($updates_to_version); +$orig_version = $config['version']; + +// If the latest version and the current version are 'unequal', we will update the version_update_from, else we do not update anything. +if ($inline_update) +{ + if ($current_version !== $latest_version) + { + set_config('version_update_from', $orig_version); + } +} +else +{ + // If not called from the update script, we will actually remove the traces + $db->sql_query('DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'version_update_from'"); +} // Schema updates ?> @@ -439,6 +502,27 @@ foreach ($database_update_info as $version => $schema_changes) } } } + + // Remove keys? + if (!empty($schema_changes['drop_keys'])) + { + foreach ($schema_changes['drop_keys'] as $table => $indexes) + { + foreach ($indexes as $index_name) + { + sql_index_drop($map_dbms, $index_name, $table); + } + } + } + + // Add primary keys? + if (!empty($schema_changes['add_primary_keys'])) + { + foreach ($schema_changes['add_primary_keys'] as $table => $columns) + { + sql_create_primary_key($map_dbms, $table, $columns); + } + } } _write_result($no_updates, $errored, $error_ary); @@ -461,7 +545,7 @@ flush(); $no_updates = true; // some code magic -if (version_compare($current_version, '3.0.b3', '<')) +if (version_compare($current_version, '3.0.b3', '<=')) { // Set group_founder_manage for administrators group $sql = 'SELECT group_id @@ -483,6 +567,92 @@ if (version_compare($current_version, '3.0.b3', '<')) $no_updates = false; } +if (version_compare($current_version, '3.0.b4', '<=')) +{ + // Add config values + set_config('script_path', '/'); + set_config('forwarded_for_check', '0'); + set_config('ldap_password', ''); + set_config('ldap_user', ''); + set_config('fulltext_native_common_thres', '20'); + + // Remove config variables + $sql = 'DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'send_encoding'"; + _sql($sql, $errored, $error_ary); + + $sql = 'SELECT user_colour + FROM ' . USERS_TABLE . ' + WHERE user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') + ORDER BY user_id DESC'; + $result = $db->sql_query_limit($sql, 1); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + set_config('newest_user_colour', $row['user_colour'], true); + + switch ($config['allow_name_chars']) + { + case '[\w]+': + set_config('allow_name_chars', '[a-z]+'); + break; + + case '[\w_\+\. \-\[\]]+': + set_config('allow_name_chars', '[-\]_+ [a-z]+'); + break; + } + + switch ($config['pass_complex']) + { + case '.*': + set_config('pass_complex', 'PASS_TYPE_ANY'); + break; + + case '[a-zA-Z]': + set_config('pass_complex', 'PASS_TYPE_CASE'); + break; + + case '[a-zA-Z0-9]': + set_config('pass_complex', 'PASS_TYPE_ALPHA'); + break; + + case '[a-zA-Z\W]': + set_config('pass_complex', 'PASS_TYPE_SYMBOL'); + break; + } + + $sql = 'UPDATE ' . USERS_TABLE . ' SET user_options = 895 WHERE user_options = 893'; + _sql($sql, $errored, $error_ary); + + $sql = 'UPDATE ' . MODULES_TABLE . " SET module_auth = 'acl_a_board' + WHERE module_class = 'acp' AND module_mode = 'version_check' AND module_auth = 'acl_a_'"; + _sql($sql, $errored, $error_ary); + + // Because the email hash could have been calculated wrongly as well as the clean string function changed, + // we will update it for every user. + + // Since this is not used in a live environment there are not much... not used in a live environment, yes! + $sql = 'SELECT user_id, user_email, username + FROM ' . USERS_TABLE; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $sql = 'UPDATE ' . USERS_TABLE . " + SET username_clean = '" . $db->sql_escape(utf8_clean_string($row['username'])) . "'"; + + if ($row['user_email']) + { + $sql .= ', user_email_hash = ' . (crc32($row['user_email']) . strlen($row['user_email'])); + } + + $sql .= ' WHERE user_id = ' . $row['user_id']; + _sql($sql, $errored, $error_ary); + } + $db->sql_freeresult($result); + + $no_updates = false; +} + _write_result($no_updates, $errored, $error_ary); $error_ary = array(); @@ -533,11 +703,33 @@ _write_result($no_updates, $errored, $error_ary); <br /> -<p style="color:red"><?php echo $lang['UPDATE_FILES_NOTICE']; ?></p> +<?php + +if (!$inline_update) +{ +?> + + <p style="color:red"><?php echo $lang['UPDATE_FILES_NOTICE']; ?></p> + + <p><?php echo $lang['COMPLETE_LOGIN_TO_BOARD']; ?></p> + +<?php +} +else +{ +?> + + <p><?php echo ((isset($lang['CONTINUE_INLINE_UPDATE'])) ? $lang['CONTINUE_INLINE_UPDATE'] : 'The database update was successful. Now please close this window and continue the update process as explained.'); ?></p> -<p><?php echo $lang['COMPLETE_LOGIN_TO_BOARD']; ?></p> + <p><a href="#" onclick="window.close();">» <?php echo $lang['CLOSE_WINDOW']; ?></a></p> <?php +} + +// Add database update to log + +$user->ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; +add_log('admin', 'LOG_UPDATE_DATABASE', $orig_version, $updates_to_version); // Now we purge the session table as well as all cache files $cache->purge(); @@ -892,6 +1084,117 @@ function sql_column_add($dbms, $table_name, $column_name, $column_data) } } +function sql_index_drop($dbms, $index_name, $table_name) +{ + global $dbms_type_map, $db; + global $errored, $error_ary; + + switch ($dbms) + { + case 'mssql': + $sql = 'DROP INDEX ' . $table_name . '\.' . $index_name . ' ON ' . $table_name; + _sql($sql, $errored, $error_ary); + break; + + case 'mysql_40': + case 'mysql_41': + $sql = 'DROP INDEX ' . $index_name . ' ON ' . $table_name; + _sql($sql, $errored, $error_ary); + break; + + case 'firebird': + case 'oracle': + case 'postgres': + case 'sqlite': + $sql = 'DROP INDEX ' . $table_name . '_' . $index_name; + _sql($sql, $errored, $error_ary); + break; + } +} + +function sql_create_primary_key($dbms, $table_name, $column) +{ + global $dbms_type_map, $db; + global $errored, $error_ary; + + switch ($dbms) + { + case 'firebird': + case 'postgres': + $sql = 'ALTER TABLE ' . $table_name . ' ADD PRIMARY KEY (' . implode(', ', $column) . ')'; + _sql($sql, $errored, $error_ary); + break; + + case 'mssql': + $sql = "ALTER TABLE [{$table_name}] WITH NOCHECK ADD "; + $sql .= "CONSTRAINT [PK_{$table_name}] PRIMARY KEY CLUSTERED ("; + $sql .= '[' . implode("],\n\t\t[", $column) . ']'; + $sql .= ') ON [PRIMARY]'; + _sql($sql, $errored, $error_ary); + break; + + case 'mysql_40': + case 'mysql_41': + $sql = 'ALTER TABLE ' . $table_name . ' ADD PRIMARY KEY (' . implode(', ', $column) . ')'; + _sql($sql, $errored, $error_ary); + break; + + case 'oracle': + $sql = 'ALTER TABLE ' . $table_name . 'add CONSTRAINT pk_' . $table_name . ' PRIMARY KEY (' . implode(', ', $column) . ')'; + _sql($sql, $errored, $error_ary); + break; + + case 'sqlite': + $sql = "SELECT sql + FROM sqlite_master + WHERE type = 'table' + AND name = '{$table_name}' + ORDER BY type DESC, name;"; + $result = _sql($sql, $errored, $error_ary); + + if (!$result) + { + break; + } + + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + $db->sql_transaction('begin'); + + // Create a backup table and populate it, destroy the existing one + $db->sql_query(preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql'])); + $db->sql_query('INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name); + $db->sql_query('DROP TABLE ' . $table_name); + + preg_match('#\((.*)\)#s', $row['sql'], $matches); + + $new_table_cols = trim($matches[1]); + $old_table_cols = preg_split('/,(?=[\\sa-z])/im', $new_table_cols); + $column_list = array(); + + foreach ($old_table_cols as $declaration) + { + $entities = preg_split('#\s+#', trim($declaration)); + if ($entities == 'PRIMARY') + { + continue; + } + $column_list[] = $entities[0]; + } + + $columns = implode(',', $column_list); + + // create a new table and fill it up. destroy the temp one + $db->sql_query('CREATE TABLE ' . $table_name . ' (' . $new_table_cols . ', PRIMARY KEY (' . implode(', ', $column) . '));'); + $db->sql_query('INSERT INTO ' . $table_name . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . $table_name . '_temp;'); + $db->sql_query('DROP TABLE ' . $table_name . '_temp'); + + $db->sql_transaction('commit'); + break; + } +} + /** * Change column type (not name!) */ @@ -986,6 +1289,7 @@ function sql_column_change($dbms, $table_name, $column_name, $column_data) /** * Add search robots to the database +* @ignore */ function add_bots() { @@ -1057,6 +1361,12 @@ function add_bots() $db->sql_query($sql); } } + else + { + // If the old bots are missing we can safely assume the user tries to execute the database update twice and + // fiddled around... + return; + } if (!function_exists('user_add')) { @@ -1121,17 +1431,18 @@ function add_bots() foreach ($bot_list as $bot_name => $bot_ary) { $user_row = array( - 'user_type' => USER_IGNORE, - 'group_id' => $group_id, - 'username' => $bot_name, - 'user_regdate' => time(), - 'user_password' => '', - 'user_colour' => '9E8DA7', - 'user_email' => '', - 'user_lang' => $config['default_lang'], - 'user_style' => 1, - 'user_timezone' => 0, - 'user_dateformat' => $config['default_dateformat'], + 'user_type' => USER_IGNORE, + 'group_id' => $group_id, + 'username' => $bot_name, + 'user_regdate' => time(), + 'user_password' => '', + 'user_colour' => '9E8DA7', + 'user_email' => '', + 'user_lang' => $config['default_lang'], + 'user_style' => 1, + 'user_timezone' => 0, + 'user_dateformat' => $config['default_dateformat'], + 'user_allow_massemail' => 0, ); $user_id = user_add($user_row); diff --git a/phpBB/install/index.php b/phpBB/install/index.php index bd8ae095a3..0a8a45b771 100755 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -102,7 +102,7 @@ else define('STRIP', (get_magic_quotes_gpc()) ? true : false); } -@set_time_limit(120); +@set_time_limit(0); // Include essential scripts require($phpbb_root_path . 'includes/functions.' . $phpEx); @@ -148,6 +148,13 @@ if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !$language) if (!$language) { $dir = @opendir($phpbb_root_path . 'language'); + + if (!$dir) + { + die('Unable to access the language directory'); + exit; + } + while (($file = readdir($dir)) !== false) { $path = $phpbb_root_path . 'language/' . $file; @@ -158,6 +165,7 @@ if (!$language) break; } } + closedir($dir); } // And finally, load the relevant language files @@ -222,6 +230,11 @@ class module // Grab module information using Bart's "neat-o-module" system (tm) $dir = @opendir('.'); + if (!$dir) + { + $this->error('Unable to access the installation directory', __LINE__, __FILE__); + } + $setmodules = 1; while (($file = readdir($dir)) !== false) { @@ -230,7 +243,7 @@ class module include($file); } } - @closedir($dir); + closedir($dir); unset($setmodules); @@ -324,8 +337,6 @@ class module 'S_CONTENT_DIRECTION' => $lang['DIRECTION'], 'S_CONTENT_ENCODING' => 'UTF-8', - 'S_CONTENT_DIR_LEFT' => $lang['LEFT'], - 'S_CONTENT_DIR_RIGHT' => $lang['RIGHT'], 'S_USER_LANG' => $lang['USER_LANG'], ) ); @@ -589,7 +600,7 @@ class module } /** - * Generate the relevant HTML for an input field and the assosciated label and explanatory text + * Generate the relevant HTML for an input field and the associated label and explanatory text */ function input_field($name, $type, $value='', $options='') { @@ -652,6 +663,11 @@ class module $dir = @opendir($phpbb_root_path . 'language'); + if (!$dir) + { + $this->error('Unable to access the language directory', __LINE__, __FILE__); + } + while ($file = readdir($dir)) { $path = $phpbb_root_path . 'language/' . $file; @@ -667,7 +683,7 @@ class module $lang[$localname] = $file; } } - @closedir($dir); + closedir($dir); @asort($lang); @reset($lang); diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php new file mode 100644 index 0000000000..256dd13b67 --- /dev/null +++ b/phpBB/install/install_convert.php @@ -0,0 +1,1736 @@ +<?php +/** +* +* @package install +* @version $Id$ +* @copyright (c) 2006 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +*/ + +if (!defined('IN_INSTALL')) +{ + // Someone has tried to access the file direct. This is not a good idea, so exit + exit; +} + +if (!empty($setmodules)) +{ + $module[] = array( + 'module_type' => 'install', + 'module_title' => 'CONVERT', + 'module_filename' => substr(basename(__FILE__), 0, -strlen($phpEx)-1), + 'module_order' => 20, + 'module_subs' => '', + 'module_stages' => array('INTRO', 'SETTINGS', 'IN_PROGRESS', 'FINAL'), + 'module_reqs' => '' + ); +} + +/** +* Class holding all convertor-specific details. +* @package install +*/ +class convert +{ + var $options = array(); + + var $convertor_tag = ''; + var $src_table_prefix = ''; + + var $convertor_data = array(); + var $tables = array(); + var $config_schema = array(); + var $convertor = array(); + var $truncate_statement = 'DELETE FROM '; + + var $fulltext_search; + + // Batch size, can be adjusted by the conversion file + // For big boards a value of 6000 seems to be optimal + var $batch_size = 2000; + // Number of rows to be inserted at once (extended insert) if supported + // For installations having enough memory a value of 60 may be good. + var $num_wait_rows = 20; + + // Mysqls internal recoding engine messing up with our (better) functions? We at least support more encodings than mysql so should use it in favor. + var $mysql_convert = false; + + var $p_master; + + function convert(&$p_master) + { + $this->p_master = &$p_master; + } +} + +/** +* Convert class for conversions +* @package install +*/ +class install_convert extends module +{ + /** + * Variables used while converting, they are accessible from the global variable $convert + */ + function install_convert(&$p_master) + { + $this->p_master = &$p_master; + } + + function main($mode, $sub) + { + global $lang, $template, $phpbb_root_path, $phpEx, $cache, $config; + global $convert; + + $this->tpl_name = 'install_convert'; + $this->mode = $mode; + + $convert = new convert($this->p_master); + + switch ($sub) + { + case 'intro': + // Try opening config file + // @todo If phpBB is not installed, we need to do a cut-down installation here + // For now, we redirect to the installation script instead + if (@file_exists($phpbb_root_path . 'config.' . $phpEx)) + { + include($phpbb_root_path . 'config.' . $phpEx); + } + + if (!defined('PHPBB_INSTALLED')) + { + $template->assign_vars(array( + 'S_NOT_INSTALLED' => true, + 'TITLE' => $lang['BOARD_NOT_INSTALLED'], + 'BODY' => sprintf($lang['BOARD_NOT_INSTALLED_EXPLAIN'], append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=install')), + )); + + return; + } + + require($phpbb_root_path . 'config.' . $phpEx); + require($phpbb_root_path . 'includes/constants.' . $phpEx); + require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); + require($phpbb_root_path . 'includes/functions_convert.' . $phpEx); + + $db = new $sql_db(); + $db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false); + unset($dbpasswd); + + // We need to fill the config to let internal functions correctly work + $sql = 'SELECT * + FROM ' . CONFIG_TABLE; + $result = $db->sql_query($sql); + + $config = array(); + while ($row = $db->sql_fetchrow($result)) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + + // Detect if there is already a conversion in progress at this point and offer to resume + // It's quite possible that the user will get disconnected during a large conversion so they need to be able to resume it + $new_conversion = request_var('new_conv', 0); + + if ($new_conversion) + { + $config['convert_progress'] = ''; + $db->sql_query('DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'convert_progress'"); + } + + // Let's see if there is a conversion in the works... + $options = array(); + if (!empty($config['convert_progress']) && !empty($config['convert_options'])) + { + $options = unserialize($config['convert_progress']); + $options = array_merge($options, unserialize($config['convert_options'])); + } + + // This information should have already been checked once, but do it again for safety + if (!empty($options) && !empty($options['tag']) && isset($options['table_prefix'])) + { + $this->page_title = $lang['CONTINUE_CONVERT']; + + $template->assign_vars(array( + 'TITLE' => $lang['CONTINUE_CONVERT'], + 'BODY' => $lang['CONTINUE_CONVERT_BODY'], + 'L_NEW' => $lang['CONVERT_NEW_CONVERSION'], + 'L_CONTINUE' => $lang['CONTINUE_OLD_CONVERSION'], + 'S_CONTINUE' => true, + + 'U_NEW_ACTION' => $this->p_master->module_url . "?mode=$mode&sub=intro&new_conv=1", + 'U_CONTINUE_ACTION' => $this->p_master->module_url . "?mode=$mode&sub=in_progress&tag={$options['tag']}{$options['step']}", + )); + + return; + } + + $this->list_convertors($mode, $sub); + + break; + + case 'settings': + $this->get_convert_settings($mode, $sub); + break; + + case 'in_progress': + $this->convert_data($mode, $sub); + break; + + case 'final': + $this->page_title = $lang['CONVERT_COMPLETE']; + + $template->assign_vars(array( + 'TITLE' => $lang['CONVERT_COMPLETE'], + 'BODY' => $lang['CONVERT_COMPLETE_EXPLAIN'], + )); + + break; + } + } + + /** + * Generate a list of all available conversion modules + */ + function list_convertors($mode, $sub) + { + global $lang, $template, $phpbb_root_path, $phpEx; + + $this->page_title = $lang['SUB_INTRO']; + + $template->assign_vars(array( + 'TITLE' => $lang['CONVERT_INTRO'], + 'BODY' => $lang['CONVERT_INTRO_BODY'], + + 'L_AUTHOR' => $lang['AUTHOR'], + 'L_AVAILABLE_CONVERTORS' => $lang['AVAILABLE_CONVERTORS'], + 'L_CONVERT' => $lang['CONVERT'], + 'L_NO_CONVERTORS' => $lang['NO_CONVERTORS'], + 'L_OPTIONS' => $lang['OPTIONS'], + 'L_SOFTWARE' => $lang['SOFTWARE'], + 'L_VERSION' => $lang['VERSION'], + + 'S_LIST' => true, + )); + + $convertors = $sort = array(); + $get_info = true; + + $handle = @opendir('./convertors/'); + + if (!$handle) + { + $this->error('Unable to access the convertors directory', __LINE__, __FILE__); + } + + while ($entry = readdir($handle)) + { + if (preg_match('/^convert_([a-z0-9_]+).' . $phpEx . '/i', $entry, $m)) + { + include('./convertors/' . $entry); + if (isset($convertor_data)) + { + $sort[strtolower($convertor_data['forum_name'])] = sizeof($convertors); + + $convertors[] = array( + 'tag' => $m[1], + 'forum_name' => $convertor_data['forum_name'], + 'version' => $convertor_data['version'], + 'table_prefix' => $convertor_data['table_prefix'], + 'author' => $convertor_data['author'] + ); + } + unset($convertor_data); + } + } + closedir($handle); + + @ksort($sort); + + foreach ($sort as $void => $index) + { + $template->assign_block_vars('convertors', array( + 'AUTHOR' => $convertors[$index]['author'], + 'SOFTWARE' => $convertors[$index]['forum_name'], + 'VERSION' => $convertors[$index]['version'], + + 'U_CONVERT' => $this->p_master->module_url . "?mode=$mode&sub=settings&tag=" . $convertors[$index]['tag'], + )); + } + } + + /** + */ + function get_convert_settings($mode, $sub) + { + global $lang, $template, $db, $phpbb_root_path, $phpEx, $config, $cache; + + require($phpbb_root_path . 'config.' . $phpEx); + require($phpbb_root_path . 'includes/constants.' . $phpEx); + require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); + require($phpbb_root_path . 'includes/functions_convert.' . $phpEx); + + $db = new $sql_db(); + $db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false); + unset($dbpasswd); + + $this->page_title = $lang['STAGE_SETTINGS']; + + // We need to fill the config to let internal functions correctly work + $sql = 'SELECT * + FROM ' . CONFIG_TABLE; + $result = $db->sql_query($sql); + + $config = array(); + while ($row = $db->sql_fetchrow($result)) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + $convertor_tag = request_var('tag', ''); + + if (empty($convertor_tag)) + { + $this->p_master->error($lang['NO_CONVERT_SPECIFIED'], __LINE__, __FILE__); + } + $get_info = true; + + // check security implications of direct inclusion + $convertor_tag = basename($convertor_tag); + if (!file_exists('./convertors/convert_' . $convertor_tag . '.' . $phpEx)) + { + $this->p_master->error($lang['CONVERT_NOT_EXIST'], __LINE__, __FILE__); + } + + include('./convertors/convert_' . $convertor_tag . '.' . $phpEx); + + // The test_file is a file that should be present in the location of the old board. + if (!isset($test_file)) + { + $this->p_master->error($lang['DEV_NO_TEST_FILE'], __LINE__, __FILE__); + } + + $submit = (isset($_POST['submit'])) ? true : false; + + $src_table_prefix = request_var('src_table_prefix', $convertor_data['table_prefix']); + $forum_path = request_var('forum_path', $convertor_data['forum_path']); + $refresh = request_var('refresh', 1); + + // Default URL of the old board + // @todo Are we going to use this for attempting to convert URL references in posts, or should we remove it? + // -> We should convert old urls to the new relative urls format + // $src_url = request_var('src_url', 'Not in use at the moment'); + + $error = array(); + if ($submit) + { + if (!file_exists('./../' . $forum_path . '/' . $test_file)) + { + $error[] = sprintf($lang['COULD_NOT_FIND_PATH'], $forum_path); + } + + // The forum prefix of the old and the new forum can't be the same because the + // convertor requires all tables to be in one database. I.e. there can't be + // two tables named 'phpbb_users' + if ($src_table_prefix == $table_prefix) + { + $error[] = sprintf($lang['TABLE_PREFIX_SAME'], $src_table_prefix); + } + + // Check table prefix + if (!sizeof($error)) + { + $db->sql_return_on_error(true); + + // Try to select one row from the first table to see if the prefix is OK + $result = $db->sql_query_limit('SELECT * FROM ' . $src_table_prefix . $tables[0], 1); + + if (!$result) + { + $prefixes = array(); + if ($result = $db->sql_query('SHOW TABLES')) + { + while ($row = $db->sql_fetchrow($result)) + { + if (sizeof($row) > 1) + { + compare_table($tables, $row[0], $prefixes); + } + else if (list(, $tablename) = @each($row)) + { + compare_table($tables, $tablename, $prefixes); + } + } + $db->sql_freeresult($result); + } + + foreach ($prefixes as $prefix => $count) + { + if ($count >= sizeof($tables)) + { + $possible_prefix = $prefix; + break; + } + } + + $msg = ''; + if (!empty($convertor_data['table_prefix'])) + { + $msg .= sprintf($lang['DEFAULT_PREFIX_IS'], $convertor_data['forum_name'], $convertor_data['table_prefix']); + } + + if (!empty($possible_prefix)) + { + $msg .= '<br />'; + $msg .= ($possible_prefix == '*') ? $lang['BLANK_PREFIX_FOUND'] : sprintf($lang['PREFIX_FOUND'], $possible_prefix); + $src_table_prefix = ($possible_prefix == '*') ? '' : $possible_prefix; + } + + $error[] = $msg; + } + $db->sql_freeresult($result); + $db->sql_return_on_error(false); + } + + if (!sizeof($error)) + { + // Save convertor Status + set_config('convert_progress', serialize(array('step' => '', 'table_prefix' => $src_table_prefix, 'tag' => $convertor_tag)), true); + + // Save options + set_config('convert_options', serialize(array('forum_path' => './../' . $forum_path, 'refresh' => $refresh)), true); + + $template->assign_block_vars('checks', array( + 'TITLE' => $lang['SPECIFY_OPTIONS'], + 'RESULT' => $lang['CONVERT_SETTINGS_VERIFIED'], + )); + + $template->assign_vars(array( + 'L_SUBMIT' => $lang['BEGIN_CONVERT'], +// 'S_HIDDEN' => $s_hidden_fields, + 'U_ACTION' => $this->p_master->module_url . "?mode=$mode&sub=in_progress&tag=$convertor_tag", + )); + + return; + } + else + { + $template->assign_block_vars('checks', array( + 'TITLE' => $lang['SPECIFY_OPTIONS'], + 'RESULT' => '<b style="color:red">' . implode('<br />', $error) . '</b>', + )); + } + } // end submit + + foreach ($this->convert_options as $config_key => $vars) + { + if (!is_array($vars) && strpos($config_key, 'legend') === false) + { + continue; + } + + if (strpos($config_key, 'legend') !== false) + { + $template->assign_block_vars('options', array( + 'S_LEGEND' => true, + 'LEGEND' => $lang[$vars]) + ); + + continue; + } + + $options = isset($vars['options']) ? $vars['options'] : ''; + + $template->assign_block_vars('options', array( + 'KEY' => $config_key, + 'TITLE' => $lang[$vars['lang']], + 'S_EXPLAIN' => $vars['explain'], + 'S_LEGEND' => false, + 'TITLE_EXPLAIN' => ($vars['explain']) ? $lang[$vars['lang'] . '_EXPLAIN'] : '', + 'CONTENT' => $this->p_master->input_field($config_key, $vars['type'], $$config_key, $options), + ) + ); + } + + $template->assign_vars(array( + 'L_SUBMIT' => $lang['BEGIN_CONVERT'], + 'U_ACTION' => $this->p_master->module_url . "?mode=$mode&sub=settings&tag=$convertor_tag", + )); + } + + /** + * The function which does the actual work (or dispatches it to the relevant places) + */ + function convert_data($mode, $sub) + { + global $template, $user, $phpbb_root_path, $phpEx, $db, $lang, $config, $cache; + global $convert, $convert_row, $message_parser, $skip_rows; + + require($phpbb_root_path . 'config.' . $phpEx); + require($phpbb_root_path . 'includes/constants.' . $phpEx); + require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); + require($phpbb_root_path . 'includes/functions_convert.' . $phpEx); + + $db = new $sql_db(); + $db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false); + unset($dbpasswd); + + $sql = 'SELECT * + FROM ' . CONFIG_TABLE; + $result = $db->sql_query($sql); + + $config = array(); + while ($row = $db->sql_fetchrow($result)) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + // Override a couple of config variables for the duration + $config['max_quote_depth'] = 0; + + // @todo Need to confirm that max post length in source is <= max post length in destination or there may be interesting formatting issues + $config['max_post_chars'] = -1; + + $convert->mysql_convert = false; + + switch ($db->sql_layer) + { + // Thanks MySQL, for silently converting... + case 'mysql': + case 'mysql4': + if (version_compare($db->mysql_version, '4.1.3', '>=')) + { + $convert->mysql_convert = true; + } + break; + + case 'mysqli': + $convert->mysql_convert = true; + break; + } + + // Set up a user as well. We _should_ have enough of a database here at this point to do this + // and it helps for any core code we call + $user->session_begin(); + $user->page = $user->extract_current_page($phpbb_root_path); + + // This is a little bit of a fudge, but it allows the language entries to be available to the + // core code without us loading them again + $user->lang = &$lang; + + $this->page_title = $user->lang['STAGE_IN_PROGRESS']; + + $convert->options = array(); + if (isset($config['convert_progress'])) + { + $convert->options = unserialize($config['convert_progress']); + $convert->options = array_merge($convert->options, unserialize($config['convert_options'])); + } + + // This information should have already been checked once, but do it again for safety + if (empty($convert->options) || empty($convert->options['tag']) || !isset($convert->options['table_prefix'])) + { + $this->p_master->error($user->lang['NO_CONVERT_SPECIFIED'], __LINE__, __FILE__); + } + + // Make some short variables accessible, for easier referencing + $convert->convertor_tag = basename($convert->options['tag']); + $convert->src_table_prefix = $convert->options['table_prefix']; + $convert->truncate_statement = ($db->sql_layer != 'sqlite') ? 'TRUNCATE TABLE ' : 'DELETE FROM '; + + $get_info = false; + + // check security implications of direct inclusion + if (!file_exists('./convertors/convert_' . $convert->convertor_tag . '.' . $phpEx)) + { + $this->p_master->error($user->lang['CONVERT_NOT_EXIST'], __LINE__, __FILE__); + } + + if (file_exists('./convertors/functions_' . $convert->convertor_tag . '.' . $phpEx)) + { + include('./convertors/functions_' . $convert->convertor_tag . '.' . $phpEx); + } + + $get_info = true; + include('./convertors/convert_' . $convert->convertor_tag . '.' . $phpEx); + + // Map some variables... + $convert->convertor_data = $convertor_data; + $convert->tables = $tables; + $convert->config_schema = $config_schema; + + // Now include the real data + $get_info = false; + include('./convertors/convert_' . $convert->convertor_tag . '.' . $phpEx); + + $convert->convertor_data = $convertor_data; + $convert->tables = $tables; + $convert->config_schema = $config_schema; + $convert->convertor = $convertor; + + // The test_file is a file that should be present in the location of the old board. + if (!file_exists($convert->options['forum_path'] . '/' . $test_file)) + { + $this->p_master->error(sprintf($user->lang['COULD_NOT_FIND_PATH'], $convert->options['forum_path']), __LINE__, __FILE__); + } + + $search_type = $config['search_type']; + + if (!file_exists($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx)) + { + trigger_error('NO_SUCH_SEARCH_MODULE'); + } + + require($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx); + + $error = false; + $convert->fulltext_search = new $search_type($error); + + if ($error) + { + trigger_error($error); + } + + include($phpbb_root_path . 'includes/message_parser.' . $phpEx); + $message_parser = new parse_message(); + + $jump = request_var('jump', 0); + $sync_batch = request_var('sync_batch', -1); + $last_statement = request_var('last', 0); + + // We are running sync... + if ($sync_batch >= 0) + { + $this->sync_forums($sync_batch); + return; + } + + if ($jump) + { + $this->jump($jump, $last_statement); + return; + } + + $current_table = request_var('current_table', 0); + $old_current_table = min(-1, $current_table - 1); + $skip_rows = request_var('skip_rows', 0); + + if (!$current_table && !$skip_rows) + { + if (empty($_REQUEST['confirm'])) + { + // If avatars / ranks / smilies folders are specified make sure they are writable + $bad_folders = array(); + + $local_paths = array( + 'avatar_path' => path($config['avatar_path']), + 'avatar_gallery_path' => path($config['avatar_gallery_path']), + 'icons_path' => path($config['icons_path']), + 'ranks_path' => path($config['ranks_path']), + 'smilies_path' => path($config['smilies_path']) + ); + + foreach ($local_paths as $folder => $local_path) + { + if (isset($convert->convertor[$folder])) + { + if (empty($convert->convertor['test_file'])) + { + // test_file is mandantory at the moment so this should never be reached, but just in case... + $this->p_master->error($user->lang['DEV_NO_TEST_FILE'], __LINE__, __FILE__); + } + + if (!$local_path || !is_writeable($phpbb_root_path . $local_path)) + { + if (!$local_path) + { + $bad_folders[] = sprintf($user->lang['CONFIG_PHPBB_EMPTY'], $folder); + } + else + { + $bad_folders[] = $local_path; + } + } + } + } + + if (sizeof($bad_folders)) + { + $msg = (sizeof($bad_folders) == 1) ? $user->lang['MAKE_FOLDER_WRITABLE'] : $user->lang['MAKE_FOLDERS_WRITABLE']; + sort($bad_folders); + $this->p_master->error(sprintf($msg, implode('<br />', $bad_folders)), __LINE__, __FILE__, true); + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['INSTALL_TEST'], + 'U_ACTION' => $this->p_master->module_url . "?mode=$mode&sub=in_progress&tag={$convert->convertor_tag}", + )); + return; + } + + // Grab all the tables used in convertor + $missing_tables = $tables_list = $aliases = array(); + + foreach ($convert->convertor['schema'] as $schema) + { + // Skip those not used (because of addons/plugins not detected) + if (!$schema['target']) + { + continue; + } + + foreach ($schema as $key => $val) + { + // we're dealing with an array like: + // array('forum_status', 'forums.forum_status', 'is_item_locked') + if (is_int($key) && !empty($val[1])) + { + $temp_data = $val[1]; + if (!is_array($temp_data)) + { + $temp_data = array($temp_data); + } + + foreach ($temp_data as $val) + { + if (preg_match('/([a-z0-9_]+)\.([a-z0-9_]+)\)* ?A?S? ?([a-z0-9_]*?)\.?([a-z0-9_]*)$/i', $val, $m)) + { + $table = $convert->src_table_prefix . $m[1]; + $tables_list[$table] = $table; + + if (!empty($m[3])) + { + $aliases[] = $convert->src_table_prefix . $m[3]; + } + } + } + } + // 'left_join' => 'topics LEFT JOIN vote_desc ON topics.topic_id = vote_desc.topic_id AND topics.topic_vote = 1' + else if ($key == 'left_join') + { + // Convert the value if it wasn't an array already. + if (!is_array($val)) + { + $val = array($val); + } + + for ($j = 0; $j < sizeof($val); ++$j) + { + if (preg_match('/LEFT JOIN ([a-z0-9_]+) AS ([a-z0-9_]+)/i', $val[$j], $m)) + { + $table = $convert->src_table_prefix . $m[1]; + $tables_list[$table] = $table; + + if (!empty($m[2])) + { + $aliases[] = $convert->src_table_prefix . $m[2]; + } + } + } + } + } + } + + // Remove aliased tables from $tables_list + foreach ($aliases as $alias) + { + unset($tables_list[$alias]); + } + + // Check if the tables that we need exist + $db->sql_return_on_error(true); + foreach ($tables_list as $table => $null) + { + $sql = 'SELECT 1 FROM ' . $table; + $_result = $db->sql_query_limit($sql, 1); + + if (!$_result) + { + $missing_tables[] = $table; + } + $db->sql_freeresult($_result); + } + $db->sql_return_on_error(false); + + // Throw an error if some tables are missing + // We used to do some guessing here, but since we have a suggestion of possible values earlier, I don't see it adding anything here to do it again + + if (sizeof($missing_tables) == sizeof($tables_list)) + { + $this->p_master->error($user->lang['NO_TABLES_FOUND'] . ' ' . $user->lang['CHECK_TABLE_PREFIX'], __LINE__, __FILE__); + } + else if (sizeof($missing_tables)) + { + $this->p_master->error(sprintf($user->lang['TABLES_MISSING'], implode(', ', $missing_tables)) . '<br /><br />' . $user->lang['CHECK_TABLE_PREFIX'], __LINE__, __FILE__); + } + + $step = '&confirm=1'; + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->src_table_prefix, 'tag' => $convert->convertor_tag)), true); + + $msg = $user->lang['PRE_CONVERT_COMPLETE'] . '</p><p>' . sprintf($user->lang['AUTHOR_NOTES'], $convert->convertor_data['author_notes']); + $url = $this->p_master->module_url . "?mode=$mode&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'L_MESSAGE' => $msg, + 'U_ACTION' => $url, + )); + + return; + } // if (empty($_REQUEST['confirm'])) + + $template->assign_block_vars('checks', array( + 'S_LEGEND' => true, + 'LEGEND' => $user->lang['STARTING_CONVERT'], + )); + + // Convert the config table and load the settings of the old board + if (!empty($convert->config_schema)) + { + restore_config($convert->config_schema); + } + + $template->assign_block_vars('checks', array( + 'TITLE' => $user->lang['CONFIG_CONVERT'], + 'RESULT' => $user->lang['DONE'], + )); + + // Now process queries and execute functions that have to be executed prior to the conversion + if (!empty($convert->convertor['execute_first'])) + { + eval($convert->convertor['execute_first']); + } + + if (!empty($convert->convertor['query_first'])) + { + if (!is_array($convert->convertor['query_first'])) + { + $convert->convertor['query_first'] = array($convert->convertor['query_first']); + } + + foreach ($convert->convertor['query_first'] as $query_first) + { + $db->sql_query($query_first); + } + } + + $template->assign_block_vars('checks', array( + 'TITLE' => $user->lang['PREPROCESS_STEP'], + 'RESULT' => $user->lang['DONE'], + )); + } // if (!$current_table && !$skip_rows) + + $template->assign_block_vars('checks', array( + 'S_LEGEND' => true, + 'LEGEND' => $user->lang['FILLING_TABLES'], + )); + + // This loop takes one target table and processes it + while ($current_table < sizeof($convert->convertor['schema'])) + { + $schema = $convert->convertor['schema'][$current_table]; + + // The target table isn't set, this can be because a module (for example the attachement mod) is taking care of this. + if (empty($schema['target'])) + { + $current_table++; + continue; + } + + $template->assign_block_vars('checks', array( + 'TITLE' => sprintf($user->lang['FILLING_TABLE'], $schema['target']), + )); + + // This is only the case when we first start working on the tables. + if (!$skip_rows) + { + // process execute_first and query_first for this table... + if (!empty($schema['execute_first'])) + { + eval($schema['execute_first']); + } + + if (!empty($schema['query_first'])) + { + if (!is_array($schema['query_first'])) + { + $schema['query_first'] = array($schema['query_first']); + } + + foreach ($schema['query_first'] as $query_first) + { + $db->sql_query($query_first); + } + } + } + + // Process execute_always for this table + // This is for code which needs to be executed on every pass of this table if + // it gets split because of time restrictions + if (!empty($schema['execute_always'])) + { + eval($schema['execute_always']); + } + + // + // Set up some variables + // + // $waiting_rows holds rows for multirows insertion (MySQL only) + // $src_tables holds unique tables with aliases to select from + // $src_fields will quickly refer source fields (or aliases) corresponding to the current index + // $select_fields holds the names of the fields to retrieve + // + + $sql_data = array( + 'source_fields' => array(), + 'target_fields' => array(), + 'source_tables' => array(), + 'select_fields' => array(), + ); + + // This statement is building the keys for later insertion. + $insert_query = $this->build_insert_query($schema, $sql_data, $current_table); + + // If no source table is affected, we skip the table + if (empty($sql_data['source_tables'])) + { + $skip_rows = 0; + $current_table++; + continue; + } + + $distinct = (!empty($schema['distinct'])) ? 'DISTINCT ' : ''; + + $sql = 'SELECT ' . $distinct . implode(', ', $sql_data['select_fields']) . " \nFROM " . implode(', ', $sql_data['source_tables']); + + // Where + $sql .= (!empty($schema['where'])) ? "\nWHERE (" . $schema['where'] . ')' : ''; + + // Group By + $sql .= (!empty($schema['group_by'])) ? "\nGROUP BY " . $schema['group_by'] : ''; + + // Having + $sql .= (!empty($schema['having'])) ? "\nHAVING " . $schema['having'] : ''; + + // Order By + $sql .= (!empty($schema['order_by'])) ? "\nORDER BY " . $schema['order_by'] : ''; + + // Counting basically holds the amount of rows processed. + $counting = -1; + $batch_time = 0; + + while (($counting === -1 || $counting >= $convert->batch_size) && still_on_time()) + { + $old_current_table = $current_table; + + $rows = ''; + $waiting_rows = array(); + + if (!empty($batch_time)) + { + $mtime = explode(' ', microtime()); + $mtime = $mtime[0] + $mtime[1]; + $rows = ceil($counting/($mtime - $batch_time)) . " rows/s ($counting rows) | "; + } + + $template->assign_block_vars('checks', array( + 'TITLE' => "skip_rows = $skip_rows", + 'RESULT' => $rows . ((defined('DEBUG_EXTRA') && function_exists('memory_get_usage')) ? ceil(memory_get_usage()/1024) . ' KB' : ''), + )); + + $mtime = explode(' ', microtime()); + $batch_time = $mtime[0] + $mtime[1]; + + if ($convert->mysql_convert) + { + $db->sql_query("SET NAMES 'binary'"); + } + + // Take skip rows into account and only fetch batch_size amount of rows + $___result = $db->sql_query_limit($sql, $convert->batch_size, $skip_rows); + + if ($convert->mysql_convert) + { + $db->sql_query("SET NAMES 'utf8'"); + } + + // This loop processes each row + $counting = 0; + + $convert->row = $convert_row = array(); + + // Now handle the rows until time is over or no more rows to process... + while (still_on_time()) + { + $convert_row = $db->sql_fetchrow($___result); + + if (!$convert_row) + { + // move to the next batch or table + $db->sql_freeresult($___result); + break; + } + + // With this we are able to always save the last state + $convert->row = $convert_row; + + // Increment the counting variable, it stores the number of rows we have processed + $counting++; + + $insert_values = array(); + + $sql_flag = $this->process_row($schema, $sql_data, $insert_values); + + if ($sql_flag === true) + { + switch ($db->sql_layer) + { + // If MySQL, we'll wait to have num_wait_rows rows to submit at once + case 'mysql': + case 'mysql4': + case 'mysqli': + $waiting_rows[] = '(' . implode(', ', $insert_values) . ')'; + + if (sizeof($waiting_rows) >= $convert->num_wait_rows) + { + $errored = false; + + $db->sql_return_on_error(true); + + if (!$db->sql_query($insert_query . implode(', ', $waiting_rows))) + { + $errored = true; + } + $db->sql_return_on_error(false); + + if ($errored) + { + $db->sql_return_on_error(true); + + // Because it errored out we will try to insert the rows one by one... most of the time this + // is caused by duplicate entries - but we also do not want to miss one... + foreach ($waiting_rows as $waiting_sql) + { + if (!$db->sql_query($insert_query . $waiting_sql)) + { + $this->p_master->db_error($user->lang['DB_ERR_INSERT'], htmlspecialchars($insert_query . $waiting_sql) . '<br /><br />' . htmlspecialchars(print_r($db->_sql_error(), true)), __LINE__, __FILE__, true); + } + } + + $db->sql_return_on_error(false); + } + + $waiting_rows = array(); + } + + break; + + default: + $insert_sql = $insert_query . '(' . implode(', ', $insert_values) . ')'; + + $db->sql_return_on_error(true); + + if (!$db->sql_query($insert_sql)) + { + $this->p_master->db_error($user->lang['DB_ERR_INSERT'], htmlspecialchars($insert_sql) . '<br /><br />' . htmlspecialchars(print_r($db->_sql_error(), true)), __LINE__, __FILE__, true); + } + $db->sql_return_on_error(false); + + $waiting_rows = array(); + + break; + } + } + + $skip_rows++; + } + $db->sql_freeresult($___result); + + // We might still have some rows waiting + if (sizeof($waiting_rows)) + { + $errored = false; + $db->sql_return_on_error(true); + + if (!$db->sql_query($insert_query . implode(', ', $waiting_rows))) + { + $errored = true; + } + $db->sql_return_on_error(false); + + if ($errored) + { + $db->sql_return_on_error(true); + + // Because it errored out we will try to insert the rows one by one... most of the time this + // is caused by duplicate entries - but we also do not want to miss one... + foreach ($waiting_rows as $waiting_sql) + { + $db->sql_query($insert_query . $waiting_sql); + $this->p_master->db_error($user->lang['DB_ERR_INSERT'], htmlspecialchars($insert_query . $waiting_sql) . '<br /><br />' . htmlspecialchars(print_r($db->_sql_error(), true)), __LINE__, __FILE__, true); + } + + $db->sql_return_on_error(false); + } + + $waiting_rows = array(); + } + } + + // When we reach this point, either the current table has been processed or we're running out of time. + if (still_on_time() && $counting < $convert->batch_size/* && !defined('DEBUG_EXTRA')*/) + { + $skip_rows = 0; + $current_table++; + } + else + {/* + if (still_on_time() && $counting < $convert->batch_size) + { + $skip_rows = 0; + $current_table++; + }*/ + + // Looks like we ran out of time. + $step = '&current_table=' . $current_table . '&skip_rows=' . $skip_rows; + + // Save convertor Status + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->src_table_prefix, 'tag' => $convert->convertor_tag)), true); + + $current_table++; +// $percentage = ($skip_rows == 0) ? 0 : floor(100 / ($total_rows / $skip_rows)); + + $msg = sprintf($user->lang['STEP_PERCENT_COMPLETED'], $current_table, sizeof($convert->convertor['schema'])); + + $url = $this->p_master->module_url . "?mode=$mode&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_MESSAGE' => $msg, + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + } + + // Process execute_last then we'll be done + $step = '&jump=1'; + + // Save convertor Status + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->src_table_prefix, 'tag' => $convert->convertor_tag)), true); + + $url = $this->p_master->module_url . "?mode=$mode&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['FINAL_STEP'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + + /** + * Sync function being executed at the very end... + */ + function sync_forums($sync_batch) + { + global $template, $user, $db, $phpbb_root_path, $phpEx, $config, $cache; + global $convert; + + $template->assign_block_vars('checks', array( + 'S_LEGEND' => true, + 'LEGEND' => $user->lang['SYNC_TOPICS'], + )); + + $batch_size = $convert->batch_size; + + $sql = 'SELECT MIN(topic_id) as min_value, MAX(topic_id) AS max_value + FROM ' . TOPICS_TABLE; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + // Set values of minimum/maximum primary value for this table. + $primary_min = $row['min_value']; + $primary_max = $row['max_value']; + + if ($sync_batch == 0) + { + $sync_batch = (int) $primary_min; + } + + if ($sync_batch == 0) + { + $sync_batch = 1; + } + + // Fetch a batch of rows, process and insert them. + while ($sync_batch <= $primary_max && still_on_time()) + { + $end = ($sync_batch + $batch_size - 1); + + // Sync all topics in batch mode... + sync('topic_approved', 'range', 'topic_id BETWEEN ' . $sync_batch . ' AND ' . $end, true, false); + sync('topic', 'range', 'topic_id BETWEEN ' . $sync_batch . ' AND ' . $end, true, true); + + $template->assign_block_vars('checks', array( + 'TITLE' => sprintf($user->lang['SYNC_TOPIC_ID'], $sync_batch, ($sync_batch + $batch_size)) . ((defined('DEBUG_EXTRA') && function_exists('memory_get_usage')) ? ' [' . ceil(memory_get_usage()/1024) . ' KB]' : ''), + 'RESULT' => $user->lang['DONE'], + )); + + $sync_batch += $batch_size; + } + + if ($sync_batch >= $primary_max) + { + $sync_batch = -1; + + $db->sql_query('DELETE FROM ' . CONFIG_TABLE . " + WHERE config_name = 'convert_progress' OR config_name = 'convert_options'"); + $db->sql_query('DELETE FROM ' . SESSIONS_TABLE); + + @unlink($phpbb_root_path . 'cache/data_global.php'); + cache_moderators(); + + // And finally, add a note to the log + add_log('admin', 'LOG_INSTALL_CONVERTED', $convert->convertor_data['forum_name'], $config['version']); + + $url = $this->p_master->module_url . "?mode={$this->mode}&sub=final"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['FINAL_STEP'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + else + { + $sync_batch -= $batch_size; + } + + $step = '&sync_batch=' . $sync_batch; + + // Save convertor Status + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->options['table_prefix'], 'tag' => $convert->convertor_tag)), true); + + $url = $this->p_master->module_url . "?mode=$this->mode&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + + /** + * This function marks the end of conversion (jump=1) + */ + function jump($jump, $last_statement) + { + global $template, $user, $db, $phpbb_root_path, $phpEx, $config, $cache; + global $convert; + + $template->assign_block_vars('checks', array( + 'S_LEGEND' => true, + 'LEGEND' => $user->lang['PROCESS_LAST'], + )); + + if ($jump == 1) + { + // Execute 'last' statements/queries + if (!empty($convert->convertor['execute_last'])) + { + if (!is_array($convert->convertor['execute_last'])) + { + eval($convert->convertor['execute_last']); + } + else + { + while ($last_statement < sizeof($convert->convertor['execute_last'])) + { + eval($convert->convertor['execute_last'][$last_statement]); + + $template->assign_block_vars('checks', array( + 'TITLE' => $convert->convertor['execute_last'][$last_statement], + 'RESULT' => $user->lang['DONE'], + )); + + $last_statement++; + $step = '&jump=1&last=' . $last_statement; + + // Save convertor Status + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->src_table_prefix, 'tag' => $convert->convertor_tag)), true); + + $percentage = ($last_statement == 0) ? 0 : floor(100 / (sizeof($convert->convertor['execute_last']) / $last_statement)); + $msg = sprintf($user->lang['STEP_PERCENT_COMPLETED'], $last_statement, sizeof($convert->convertor['execute_last']), $percentage); + $url = $this->p_master->module_url . "?mode={$this->mode}&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_LAST'], + 'L_MESSAGE' => $msg, + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + } + } + + if (!empty($convert->convertor['query_last'])) + { + if (!is_array($convert->convertor['query_last'])) + { + $convert->convertor['query_last'] = array($convert->convertor['query_last']); + } + + foreach ($convert->convertor['query_last'] as $query_last) + { + $db->sql_query($query_last); + } + } + + // Sanity check + $db->sql_return_on_error(false); + + fix_empty_primary_groups(); + + if (!isset($config['board_startdate'])) + { + $sql = 'SELECT MIN(user_regdate) AS board_startdate + FROM ' . USERS_TABLE; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if (($row['board_startdate'] < $config['board_startdate'] && $row['board_startdate'] > 0) || !isset($config['board_startdate'])) + { + set_config('board_startdate', $row['board_startdate']); + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_regdate = ' . $row['board_startdate'] . ' WHERE user_id = ' . ANONYMOUS); + } + } + + update_dynamic_config(); + + $template->assign_block_vars('checks', array( + 'TITLE' => $user->lang['CLEAN_VERIFY'], + 'RESULT' => $user->lang['DONE'], + )); + + $step = '&jump=2'; + + // Save convertor Status + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->src_table_prefix, 'tag' => $convert->convertor_tag)), true); + + $url = $this->p_master->module_url . "?mode={$this->mode}&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + + if ($jump == 2) + { + $db->sql_query('UPDATE ' . USERS_TABLE . " SET user_permissions = ''"); + + // TODO: sync() is likely going to bomb out on forums with a considerable amount of topics. + // TODO: the sync function is able to handle FROM-TO values, we should use them here (batch processing) + sync('forum'); + $cache->destroy('sql', FORUMS_TABLE); + + $template->assign_block_vars('checks', array( + 'TITLE' => $user->lang['SYNC_FORUMS'], + 'RESULT' => $user->lang['DONE'], + )); + + $step = '&jump=3'; + + // Save convertor Status + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->src_table_prefix, 'tag' => $convert->convertor_tag)), true); + + $url = $this->p_master->module_url . "?mode={$this->mode}&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + + if ($jump == 3) + { + update_topics_posted(); + + $template->assign_block_vars('checks', array( + 'TITLE' => $user->lang['UPDATE_TOPICS_POSTED'], + 'RESULT' => $user->lang['DONE'], + )); + + // Continue with synchronizing the forums... + $step = '&sync_batch=0'; + + // Save convertor Status + set_config('convert_progress', serialize(array('step' => $step, 'table_prefix' => $convert->src_table_prefix, 'tag' => $convert->convertor_tag)), true); + + $url = $this->p_master->module_url . "?mode={$this->mode}&sub=in_progress&tag={$convert->convertor_tag}$step"; + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + } + + function build_insert_query(&$schema, &$sql_data, $current_table) + { + global $db, $user; + global $convert; + + // Can we use IGNORE with this DBMS? + $sql_ignore = (strpos($db->sql_layer, 'mysql') === 0 && !defined('DEBUG_EXTRA')) ? 'IGNORE ' : ''; + $insert_query = 'INSERT ' . $sql_ignore . 'INTO ' . $schema['target'] . ' ('; + + $aliases = array(); + + $sql_data = array( + 'source_fields' => array(), + 'target_fields' => array(), + 'source_tables' => array(), + 'select_fields' => array(), + ); + + foreach ($schema as $key => $val) + { + // Example: array('group_name', 'extension_groups.group_name', 'htmlspecialchars'), + if (is_int($key)) + { + if (!empty($val[0])) + { + // Target fields + $sql_data['target_fields'][$val[0]] = $key; + $insert_query .= $val[0] . ', '; + } + + if (!is_array($val[1])) + { + $val[1] = array($val[1]); + } + + foreach ($val[1] as $valkey => $value_1) + { + // This should cover about any case: + // + // table.field => SELECT table.field FROM table + // table.field AS alias => SELECT table.field AS alias FROM table + // table.field AS table2.alias => SELECT table2.field AS alias FROM table table2 + // table.field AS table2.field => SELECT table2.field FROM table table2 + // + if (preg_match('/^([a-z0-9_]+)\.([a-z0-9_]+)( +AS +(([a-z0-9_]+?)\.)?([a-z0-9_]+))?$/i', $value_1, $m)) + { + // There is 'AS ...' in the field names + if (!empty($m[3])) + { + $value_1 = ($m[2] == $m[6]) ? $m[1] . '.' . $m[2] : $m[1] . '.' . $m[2] . ' AS ' . $m[6]; + + // Table alias: store it then replace the source table with it + if (!empty($m[5]) && $m[5] != $m[1]) + { + $aliases[$m[5]] = $m[1]; + $value_1 = str_replace($m[1] . '.' . $m[2], $m[5] . '.' . $m[2], $value_1); + } + } + else + { + // No table alias + $sql_data['source_tables'][$m[1]] = (empty($convert->src_table_prefix)) ? $m[1] : $convert->src_table_prefix . $m[1] . ' ' . $m[1]; + } + + $sql_data['select_fields'][$value_1] = $value_1; + $sql_data['source_fields'][$key][$valkey] = (!empty($m[6])) ? $m[6] : $m[2]; + } + } + } + else if ($key == 'where' || $key == 'group_by' || $key == 'order_by' || $key == 'having') + { + if (@preg_match_all('/([a-z0-9_]+)\.([a-z0-9_]+)/i', $val, $m)) + { + foreach ($m[1] as $value) + { + $sql_data['source_tables'][$value] = (empty($convert->src_table_prefix)) ? $value : $convert->src_table_prefix . $value . ' ' . $value; + } + } + } + } + + // Add the aliases to the list of tables + foreach ($aliases as $alias => $table) + { + $sql_data['source_tables'][$alias] = $convert->src_table_prefix . $table . ' ' . $alias; + } + + // 'left_join' => 'forums LEFT JOIN forum_prune ON forums.forum_id = forum_prune.forum_id', + if (!empty($schema['left_join'])) + { + if (!is_array($schema['left_join'])) + { + $schema['left_join'] = array($schema['left_join']); + } + + foreach ($schema['left_join'] as $left_join) + { + // This won't handle concatened LEFT JOINs + if (!preg_match('/([a-z0-9_]+) LEFT JOIN ([a-z0-9_]+) A?S? ?([a-z0-9_]*?) ?(ON|USING)(.*)/i', $left_join, $m)) + { + $this->p_master->error(sprintf($user->lang['NOT_UNDERSTAND'], 'LEFT JOIN', $left_join, $current_table, $schema['target']), __LINE__, __FILE__); + } + + if (!empty($aliases[$m[2]])) + { + if (!empty($m[3])) + { + $this->p_master->error(sprintf($user->lang['NAMING_CONFLICT'], $m[2], $m[3], $schema['left_join']), __LINE__, __FILE__); + } + + $m[2] = $aliases[$m[2]]; + $m[3] = $m[2]; + } + + $right_table = $convert->src_table_prefix . $m[2]; + if (!empty($m[3])) + { + unset($sql_data['source_tables'][$m[3]]); + } + else if ($m[2] != $m[1]) + { + unset($sql_data['source_tables'][$m[2]]); + } + + if (strpos($sql_data['source_tables'][$m[1]], "\nLEFT JOIN") !== false) + { + $sql_data['source_tables'][$m[1]] = '(' . $sql_data['source_tables'][$m[1]] . ")\nLEFT JOIN $right_table"; + } + else + { + $sql_data['source_tables'][$m[1]] .= "\nLEFT JOIN $right_table"; + } + + if (!empty($m[3])) + { + unset($sql_data['source_tables'][$m[3]]); + $sql_data['source_tables'][$m[1]] .= ' AS ' . $m[3]; + } + else if (!empty($convert->src_table_prefix)) + { + $sql_data['source_tables'][$m[1]] .= ' AS ' . $m[2]; + } + $sql_data['source_tables'][$m[1]] .= ' ' . $m[4] . $m[5]; + } + } + + // Remove ", " from the end of the insert query + $insert_query = substr($insert_query, 0, -2) . ') VALUES '; + + return $insert_query; + } + + /** + * Function for processing the currently handled row + */ + function process_row(&$schema, &$sql_data, &$insert_values) + { + global $template, $user, $phpbb_root_path, $phpEx, $db, $lang, $config, $cache; + global $convert, $convert_row; + + $sql_flag = false; + + foreach ($schema as $key => $fields) + { + // We are only interested in the lines with: + // array('comment', 'attachments_desc.comment', 'htmlspecialchars'), + if (is_int($key)) + { + if (!is_array($fields[1])) + { + $fields[1] = array($fields[1]); + } + + $firstkey_set = false; + $firstkey = 0; + + foreach ($fields[1] as $inner_key => $inner_value) + { + if (!$firstkey_set) + { + $firstkey = $inner_key; + $firstkey_set = true; + } + + $src_field = isset($sql_data['source_fields'][$key][$inner_key]) ? $sql_data['source_fields'][$key][$inner_key] : ''; + + if (!empty($src_field)) + { + $fields[1][$inner_key] = $convert->row[$src_field]; + } + } + + if (!empty($fields[0])) + { + // We have a target field, if we haven't set $sql_flag yet it will be set to TRUE. + // If a function has already set it to FALSE it won't change it. + if ($sql_flag === false) + { + $sql_flag = true; + } + + // No function assigned? + if (empty($fields[2])) + { + $value = $fields[1][$firstkey]; + } + else if (is_array($fields[2])) + { + // Execute complex function/eval/typecast + $value = $fields[1]; + + foreach ($fields[2] as $type => $execution) + { + if (strpos($type, 'typecast') === 0) + { + if (!is_array($value)) + { + $value = array($value); + } + $value = $value[0]; + settype($value, $execution); + } + else if (strpos($type, 'function') === 0) + { + if (!is_array($value)) + { + $value = array($value); + } + + $value = call_user_func_array($execution, $value); + } + else if (strpos($type, 'execute') === 0) + { + if (!is_array($value)) + { + $value = array($value); + } + + $execution = str_replace('{RESULT}', '$value', $execution); + $execution = str_replace('{VALUE}', '$value', $execution); + eval($execution); + } + } + } + else + { + $value = call_user_func_array($fields[2], $fields[1]); + } + + if (is_null($value)) + { + $value = ''; + } + + $insert_values[] = $db->_sql_validate_value($value); + } + else if (!empty($fields[2])) + { + if (is_array($fields[2])) + { + // Execute complex function/eval/typecast + $value = ''; + + foreach ($fields[2] as $type => $execution) + { + if (strpos($type, 'typecast') === 0) + { + $value = settype($value, $execution); + } + else if (strpos($type, 'function') === 0) + { + if (!is_array($value)) + { + $value = array($value); + } + + $value = call_user_func_array($execution, $value); + } + else if (strpos($type, 'execute') === 0) + { + if (!is_array($value)) + { + $value = array($value); + } + + $execution = str_replace('{RESULT}', '$value', $execution); + $execution = str_replace('{VALUE}', '$value', $execution); + eval($execution); + } + } + } + else + { + call_user_func_array($fields[2], $fields[1]); + } + } + } + } + + return $sql_flag; + } + + /** + * Own meta refresh function to be able to change the global time used + */ + function meta_refresh($url) + { + global $convert, $template; + + if ($convert->options['refresh']) + { + $template->assign_var('S_REFRESH', true); + meta_refresh(5, $url); + } + } + + /** + * The information below will be used to build the input fields presented to the user + */ + var $convert_options = array( + 'legend1' => 'SPECIFY_OPTIONS', + 'src_table_prefix' => array('lang' => 'TABLE_PREFIX', 'type' => 'text:25:100', 'explain' => false), + //'src_url' => array('lang' => 'FORUM_ADDRESS', 'type' => 'text:50:100', 'explain' => true), + 'forum_path' => array('lang' => 'FORUM_PATH', 'type' => 'text:25:100', 'explain' => true), + 'refresh' => array('lang' => 'REFRESH_PAGE', 'type' => 'radio:yes_no', 'explain' => true), + ); +} + +?>
\ No newline at end of file diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index 0b4f94a5c2..ba80f40eb2 100755 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -97,7 +97,6 @@ class install_install extends module case 'create_table': $this->load_schema($mode, $sub); - break; case 'final' : @@ -134,7 +133,6 @@ class install_install extends module // Test for basic PHP settings $template->assign_block_vars('checks', array( 'S_LEGEND' => true, - 'S_FIRST_ROW' => true, 'LEGEND' => $lang['PHP_SETTINGS'], 'LEGEND_EXPLAIN' => $lang['PHP_SETTINGS_EXPLAIN'], )); @@ -206,10 +204,74 @@ class install_install extends module 'S_LEGEND' => false, )); +/** +* Better not enabling and adding to the loaded extensions due to the specific requirements needed + if (!@extension_loaded('mbstring')) + { + $this->can_load_dll('mbstring'); + } +*/ + + $passed['mbstring'] = true; + if (@extension_loaded('mbstring')) + { + // Test for available database modules + $template->assign_block_vars('checks', array( + 'S_LEGEND' => true, + 'LEGEND' => $lang['MBSTRING_CHECK'], + 'LEGEND_EXPLAIN' => $lang['MBSTRING_CHECK_EXPLAIN'], + )); + + $checks = array( + array('func_overload', '&', MB_OVERLOAD_MAIL|MB_OVERLOAD_STRING), + array('encoding_translation', '!=', 0), + array('http_input', '!=', 'pass'), + array('http_output', '!=', 'pass') + ); + + foreach ($checks as $mb_checks) + { + $ini_val = ini_get('mbstring.' . $mb_checks[0]); + switch ($mb_checks[1]) + { + case '&': + if (intval($ini_val) & $mb_checks[2]) + { + $result = '<b style="color:red">' . $lang['NO'] . '</b>'; + $passed['mbstring'] = false; + } + else + { + $result = '<b style="color:green">' . $lang['YES'] . '</b>'; + } + break; + + case '!=': + if ($ini_val != $mb_checks[2]) + { + $result = '<b style="color:red">' . $lang['NO'] . '</b>'; + $passed['mbstring'] = false; + } + else + { + $result = '<b style="color:green">' . $lang['YES'] . '</b>'; + } + break; + } + $template->assign_block_vars('checks', array( + 'TITLE' => $lang['MBSTRING_' . strtoupper($mb_checks[0])], + 'TITLE_EXPLAIN' => $lang['MBSTRING_' . strtoupper($mb_checks[0]) . '_EXPLAIN'], + 'RESULT' => $result, + + 'S_EXPLAIN' => true, + 'S_LEGEND' => false, + )); + } + } + // Test for available database modules $template->assign_block_vars('checks', array( 'S_LEGEND' => true, - 'S_FIRST_ROW' => false, 'LEGEND' => $lang['PHP_SUPPORTED_DB'], 'LEGEND_EXPLAIN' => $lang['PHP_SUPPORTED_DB_EXPLAIN'], )); @@ -248,7 +310,6 @@ class install_install extends module // Test for other modules $template->assign_block_vars('checks', array( 'S_LEGEND' => true, - 'S_FIRST_ROW' => false, 'LEGEND' => $lang['PHP_OPTIONAL_MODULE'], 'LEGEND_EXPLAIN' => $lang['PHP_OPTIONAL_MODULE_EXPLAIN'], )); @@ -280,7 +341,7 @@ class install_install extends module } // Can we find Imagemagick anywhere on the system? - $exe = ((defined('PHP_OS')) && (preg_match('#^win#i', PHP_OS))) ? '.exe' : ''; + $exe = (defined('PHP_OS') && strpos(strtolower(PHP_OS), 'win') === 0) ? '.exe' : ''; $magic_home = getenv('MAGICK_HOME'); $img_imagick = ''; @@ -321,7 +382,6 @@ class install_install extends module // Check permissions on files/directories we need access to $template->assign_block_vars('checks', array( 'S_LEGEND' => true, - 'S_FIRST_ROW' => false, 'LEGEND' => $lang['FILES_REQUIRED'], 'LEGEND_EXPLAIN' => $lang['FILES_REQUIRED_EXPLAIN'], )); @@ -356,11 +416,12 @@ class install_install extends module $fp = @fopen($phpbb_root_path . $dir . 'test_lock', 'wb'); if ($fp !== false) { - @unlink($phpbb_root_path . $dir . 'test_lock'); $write = true; } @fclose($fp); + @unlink($phpbb_root_path . $dir . 'test_lock'); + $passed['files'] = ($exists && $write && $passed['files']) ? true : false; $exists = ($exists) ? '<b style="color:green">' . $lang['FOUND'] . '</b>' : '<b style="color:red">' . $lang['NOT_FOUND'] . '</b>'; @@ -378,7 +439,6 @@ class install_install extends module // Check permissions on files/directories it would be useful access to $template->assign_block_vars('checks', array( 'S_LEGEND' => true, - 'S_FIRST_ROW' => false, 'LEGEND' => $lang['FILES_OPTIONAL'], 'LEGEND_EXPLAIN' => $lang['FILES_OPTIONAL_EXPLAIN'], )); @@ -415,8 +475,8 @@ class install_install extends module // And finally where do we want to go next (well today is taken isn't it :P) $s_hidden_fields = ($img_imagick) ? '<input type="hidden" name="img_imagick" value="' . addslashes($img_imagick) . '" />' : ''; - $url = ($passed['php'] && $passed['db'] && $passed['files'] && $passed['pcre']) ? $this->p_master->module_url . "?mode=$mode&sub=database&language=$language" : $this->p_master->module_url . "?mode=$mode&sub=requirements&language=$language "; - $submit = ($passed['php'] && $passed['db'] && $passed['files'] && $passed['pcre']) ? $lang['INSTALL_START'] : $lang['INSTALL_TEST']; + $url = ($passed['php'] && $passed['db'] && $passed['files'] && $passed['pcre'] && $passed['mbstring']) ? $this->p_master->module_url . "?mode=$mode&sub=database&language=$language" : $this->p_master->module_url . "?mode=$mode&sub=requirements&language=$language "; + $submit = ($passed['php'] && $passed['db'] && $passed['files'] && $passed['pcre'] && $passed['mbstring']) ? $lang['INSTALL_START'] : $lang['INSTALL_TEST']; $template->assign_vars(array( @@ -456,12 +516,10 @@ class install_install extends module } $dbpasswd = htmlspecialchars_decode($dbpasswd); - $connect_test = $this->connect_check_db(true, $error, $dbms, $table_prefix, $dbhost, $dbuser, $dbpasswd, $dbname, $dbport); $template->assign_block_vars('checks', array( 'S_LEGEND' => true, - 'S_FIRST_ROW' => true, 'LEGEND' => $lang['DB_CONNECTION'], 'LEGEND_EXPLAIN' => false, )); @@ -647,7 +705,6 @@ class install_install extends module $template->assign_block_vars('checks', array( 'S_LEGEND' => true, - 'S_FIRST_ROW' => true, 'LEGEND' => $lang['STAGE_ADMINISTRATOR'], 'LEGEND_EXPLAIN' => false, )); @@ -773,6 +830,8 @@ class install_install extends module $load_extensions = array(); $check_exts = array_merge(array($this->available_dbms[$dbms]['MODULE']), $this->php_dlls_other); + $suffix = (defined('PHP_OS') && strpos(strtolower(PHP_OS), 'win') === 0) ? 'dll' : 'so'; + foreach ($check_exts as $dll) { if (!@extension_loaded($dll)) @@ -781,6 +840,7 @@ class install_install extends module { continue; } + $load_extensions[] = "$dll.$suffix"; } } @@ -929,6 +989,19 @@ class install_install extends module $server_protocol = ($server_protocol !== '') ? $server_protocol : ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://'); $cookie_secure = ($cookie_secure !== '') ? $cookie_secure : ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? true : false); + if ($script_path === '') + { + $name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF'); + if (!$name) + { + $name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI'); + } + + // Replace backslashes and doubled slashes (could happen on some proxy setups) + $name = str_replace(array('\\', '//', '/install'), '/', $name); + $script_path = trim(dirname($name)); + } + foreach ($this->advanced_config_options as $config_key => $vars) { if (!is_array($vars) && strpos($config_key, 'legend') === false) @@ -1015,7 +1088,7 @@ class install_install extends module // If we get here and the extension isn't loaded it should be safe to just go ahead and load it if (!@extension_loaded($this->available_dbms[$dbms]['MODULE'])) { - @dl($this->available_dbms[$dbms]['MODULE'] . ".$prefix"); + $this->can_load_dll($this->available_dbms[$dbms]['MODULE']); } $dbpasswd = htmlspecialchars_decode($dbpasswd); @@ -1108,6 +1181,22 @@ class install_install extends module $user_ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; + if ($script_path !== '/') + { + // Adjust destination path (no trailing slash) + if (substr($script_path, -1) == '/') + { + $script_path = substr($script_path, 0, -1); + } + + $script_path = str_replace(array('../', './'), '', $script_path); + + if ($script_path[0] != '/') + { + $script_path = '/' . $script_path; + } + } + // Set default config and post data, this applies to all DB's $sql_ary = array( 'INSERT INTO ' . $table_prefix . "config (config_name, config_value) @@ -1177,23 +1266,19 @@ class install_install extends module WHERE config_name = 'force_server_vars'", 'UPDATE ' . $table_prefix . "config - SET config_value = '" . $db->sql_escape($server_name) . "' - WHERE config_name = 'server_name'", + SET config_value = '" . $db->sql_escape($script_path) . "' + WHERE config_name = 'script_path'", 'UPDATE ' . $table_prefix . "config SET config_value = '" . $db->sql_escape($server_protocol) . "' WHERE config_name = 'server_protocol'", 'UPDATE ' . $table_prefix . "config - SET config_value = '" . $db->sql_escape($server_port) . "' - WHERE config_name = 'server_port'", - - 'UPDATE ' . $table_prefix . "config SET config_value = '" . $db->sql_escape($admin_name) . "' WHERE config_name = 'newest_username'", 'UPDATE ' . $table_prefix . "users - SET username = '" . $db->sql_escape($admin_name) . "', user_password='" . $db->sql_escape(md5($admin_pass1)) . "', user_ip = '" . $db->sql_escape($user_ip) . "', user_lang = '" . $db->sql_escape($default_lang) . "', user_email='" . $db->sql_escape($board_email1) . "', user_dateformat='" . $db->sql_escape($lang['default_dateformat']) . "', user_email_hash = " . (int) (crc32(strtolower($board_email1)) . strlen($board_email1)) . ", username_clean = '" . $db->sql_escape(utf8_clean_string($admin_name)) . "' + SET username = '" . $db->sql_escape($admin_name) . "', user_password='" . $db->sql_escape(md5($admin_pass1)) . "', user_ip = '" . $db->sql_escape($user_ip) . "', user_lang = '" . $db->sql_escape($default_lang) . "', user_email='" . $db->sql_escape($board_email1) . "', user_dateformat='" . $db->sql_escape($lang['default_dateformat']) . "', user_email_hash = " . (crc32($board_email1) . strlen($board_email1)) . ", username_clean = '" . $db->sql_escape(utf8_clean_string($admin_name)) . "' WHERE username = 'Admin'", 'UPDATE ' . $table_prefix . "moderator_cache @@ -1222,6 +1307,11 @@ class install_install extends module SET forum_last_post_time = $current_time", ); + if (!@extension_loaded('gd')) + { + $this->can_load_dll('gd'); + } + // This is for people who have TTF and GD if (@extension_loaded('gd') && function_exists('imagettfbbox') && function_exists('imagettftext')) { @@ -1230,9 +1320,17 @@ class install_install extends module WHERE config_name = 'captcha_gd'"; } + // We set a (semi-)unique cookie name to bypass login issues related to the cookie name. + $cookie_name = 'phpbb3_'; + $cookie_name .= strtolower(gen_rand_string(5)); + + $sql_ary[] = 'UPDATE ' . $table_prefix . "config + SET config_value = '" . $db->sql_escape($cookie_name) . "' + WHERE config_name = 'cookie_name'"; + foreach ($sql_ary as $sql) { - $sql = trim(str_replace('|', ';', $sql)); + //$sql = trim(str_replace('|', ';', $sql)); if (!$db->sql_query($sql)) { @@ -1273,6 +1371,12 @@ class install_install extends module $dbpasswd = htmlspecialchars_decode($dbpasswd); + // If we get here and the extension isn't loaded it should be safe to just go ahead and load it + if (!@extension_loaded($this->available_dbms[$dbms]['MODULE'])) + { + $this->can_load_dll($this->available_dbms[$dbms]['MODULE']); + } + // Load the appropriate database class if not already loaded include($phpbb_root_path . 'includes/db/' . $this->available_dbms[$dbms]['DRIVER'] . '.' . $phpEx); @@ -1501,6 +1605,12 @@ class install_install extends module global $db, $lang, $phpbb_root_path, $phpEx; $dir = @opendir($phpbb_root_path . 'language'); + + if (!$dir) + { + $this->error('Unable to access the language directory', __LINE__, __FILE__); + } + while (($file = readdir($dir)) !== false) { $path = $phpbb_root_path . 'language/' . $file; @@ -1526,6 +1636,7 @@ class install_install extends module } } } + closedir($dir); } /** @@ -1574,17 +1685,18 @@ class install_install extends module foreach ($this->bot_list as $bot_name => $bot_ary) { $user_row = array( - 'user_type' => USER_IGNORE, - 'group_id' => $group_id, - 'username' => $bot_name, - 'user_regdate' => time(), - 'user_password' => '', - 'user_colour' => '9E8DA7', - 'user_email' => '', - 'user_lang' => $default_lang, - 'user_style' => 1, - 'user_timezone' => 0, - 'user_dateformat' => $lang['default_dateformat'], + 'user_type' => USER_IGNORE, + 'group_id' => $group_id, + 'username' => $bot_name, + 'user_regdate' => time(), + 'user_password' => '', + 'user_colour' => '9E8DA7', + 'user_email' => '', + 'user_lang' => $default_lang, + 'user_style' => 1, + 'user_timezone' => 0, + 'user_dateformat' => $lang['default_dateformat'], + 'user_allow_massemail' => 0, ); $user_id = user_add($user_row); @@ -1653,7 +1765,6 @@ class install_install extends module $messenger->template('installed', $language); - $messenger->replyto($config['board_contact']); $messenger->to($board_email1, $admin_name); $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); @@ -1687,6 +1798,11 @@ class install_install extends module { global $suffix; + if (empty($suffix)) + { + $suffix = (defined('PHP_OS') && strpos(strtolower(PHP_OS), 'win') === 0) ? 'dll' : 'so'; + } + return ((@ini_get('enable_dl') || strtolower(@ini_get('enable_dl')) == 'on') && (!@ini_get('safe_mode') || strtolower(@ini_get('safe_mode')) == 'off') && @dl($dll . ".$suffix")) ? true : false; } @@ -1816,7 +1932,8 @@ class install_install extends module if ($row = $db->sql_fetchrow($result)) { // Likely matches for an existing phpBB installation - $table_ary = array($table_prefix . 'attachments', $table_prefix . 'config', $table_prefix . 'sessions', $table_prefix . 'topics', $table_prefix . 'users'); + $temp_prefix = strtolower($table_prefix); + $table_ary = array($temp_prefix . 'attachments', $temp_prefix . 'config', $temp_prefix . 'sessions', $temp_prefix . 'topics', $temp_prefix . 'users'); do { @@ -1858,6 +1975,14 @@ class install_install extends module { $error[] = $lang['INST_ERR_DB_NO_FIREBIRD']; } + $db_info = @ibase_db_info($db->service_handle, $dbname, IBASE_STS_HDR_PAGES); + + preg_match('/^\\s*Page size\\s*(\\d+)/m', $db_info, $regs); + $page_size = intval($regs[1]); + if ($page_size < 8192) + { + $error[] = $lang['INST_ERR_DB_NO_FIREBIRD_PS']; + } } else { @@ -1885,6 +2010,39 @@ class install_install extends module } $db->sql_freeresult($result); } + + // Setup the stuff for our random table + $char_array = array_merge(range('A', 'Z'), range('0', '9')); + $char_len = mt_rand(7, 9); + $char_array_len = sizeof($char_array) - 1; + + $final = ''; + + for ($i = 0; $i < $char_len; $i++) + { + $final .= $char_array[mt_rand(0, $char_array_len)]; + } + + // Create some random table + $sql = 'CREATE TABLE ' . $final . " ( + FIELD1 VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, + FIELD2 INTEGER DEFAULT 0 NOT NULL);"; + $db->sql_query($sql); + + // Create an index that should fail if the page size is less than 8192 + $sql = 'CREATE INDEX ' . $final . ' ON ' . $final . '(FIELD1, FIELD2);'; + $db->sql_query($sql); + + if (ibase_errmsg() !== false) + { + $error[] = $lang['INST_ERR_DB_NO_FIREBIRD_PS']; + } + else + { + // Kill the old table + $db->sql_query('DROP TABLE ' . $final . ';'); + } + unset($final); } break; @@ -1967,7 +2125,7 @@ class install_install extends module * The variables that we will be passing between pages * Used to retrieve data quickly on each page */ - var $request_vars = array('language', 'dbms', 'dbhost', 'dbport', 'dbuser', 'dbpasswd', 'dbname', 'table_prefix', 'default_lang', 'admin_name', 'admin_pass1', 'admin_pass2', 'board_email1', 'board_email2', 'img_imagick', 'ftp_path', 'ftp_user', 'ftp_pass', 'email_enable', 'smtp_delivery', 'smtp_host', 'smtp_auth', 'smtp_user', 'smtp_pass', 'cookie_secure', 'force_server_vars', 'server_protocol', 'server_name', 'server_port'); + var $request_vars = array('language', 'dbms', 'dbhost', 'dbport', 'dbuser', 'dbpasswd', 'dbname', 'table_prefix', 'default_lang', 'admin_name', 'admin_pass1', 'admin_pass2', 'board_email1', 'board_email2', 'img_imagick', 'ftp_path', 'ftp_user', 'ftp_pass', 'email_enable', 'smtp_delivery', 'smtp_host', 'smtp_auth', 'smtp_user', 'smtp_pass', 'cookie_secure', 'force_server_vars', 'server_protocol', 'server_name', 'server_port', 'script_path'); /** * The information below will be used to build the input fields presented to the user @@ -2006,6 +2164,7 @@ class install_install extends module 'server_protocol' => array('lang' => 'SERVER_PROTOCOL', 'type' => 'text:10:10', 'explain' => true), 'server_name' => array('lang' => 'SERVER_NAME', 'type' => 'text:40:255', 'explain' => true), 'server_port' => array('lang' => 'SERVER_PORT', 'type' => 'text:5:5', 'explain' => true), + 'script_path' => array('lang' => 'SCRIPT_PATH', 'type' => 'text::255', 'explain' => true), ); /** diff --git a/phpBB/install/install_update.php b/phpBB/install/install_update.php index 069022f0e5..3e24cc71ed 100644 --- a/phpBB/install/install_update.php +++ b/phpBB/install/install_update.php @@ -6,6 +6,7 @@ * @copyright (c) 2006 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License * +* @todo check for writeable cache/store/files directory */ /** @@ -39,7 +40,7 @@ if (!empty($setmodules)) 'module_filename' => substr(basename(__FILE__), 0, -strlen($phpEx)-1), 'module_order' => 30, 'module_subs' => '', - 'module_stages' => array('INTRO', 'VERSION_CHECK', 'FILE_CHECK', 'UPDATE_FILES', 'UPDATE_DB'), + 'module_stages' => array('INTRO', 'VERSION_CHECK', 'UPDATE_DB', 'FILE_CHECK', 'UPDATE_FILES'), 'module_reqs' => '' ); } @@ -71,6 +72,8 @@ class install_update extends module global $template, $phpEx, $phpbb_root_path, $user, $db, $config, $cache, $auth; $this->tpl_name = 'install_update'; + $this->page_title = 'UPDATE_INSTALLATION'; + $this->old_location = $phpbb_root_path . 'install/update/old/'; $this->new_location = $phpbb_root_path . 'install/update/new/'; @@ -79,6 +82,12 @@ class install_update extends module require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); require($phpbb_root_path . 'includes/constants.' . $phpEx); + // Special options for conflicts + define('MERGE_NO_MERGE_NEW', 1); + define('MERGE_NO_MERGE_MOD', 2); + define('MERGE_NEW_FILE', 3); + define('MERGE_MOD_FILE', 4); + $db = new $sql_db(); // Connect to DB @@ -87,28 +96,37 @@ class install_update extends module // We do not need this any longer, unset for safety purposes unset($dbpasswd); - $config = $cache->obtain_config(); + $config = array(); + + $sql = 'SELECT config_name, config_value + FROM ' . CONFIG_TABLE; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); // First of all, init the user session $user->session_begin(); $auth->acl($user->data); - $user->setup('install'); - - include_once($phpbb_root_path . 'includes/diff/diff.' . $phpEx); - /** - * Check for user session - * - commented out for beta3 with "broken" install check routine - if (!$user->data['is_registered']) + // Beta4 and below are having a bug displaying an error if the install directory is present. + // This bug got fixed, but we need to get around it by using a tiny 'hack'. + if (!defined('DEBUG_EXTRA')) { - login_box('', $user->lang['LOGIN_UPDATE_EXPLAIN']); + if (version_compare(strtolower($config['version']), '3.0.b4', '<=')) + { + @define('DEBUG_EXTRA', true); + } + else if (!empty($config['version_update_from']) && version_compare(strtolower($config['version_update_from']), '3.0.b4', '<=')) + { + @define('DEBUG_EXTRA', true); + } } - if (!$auth->acl_get('a_')) - { - trigger_error($user->lang['NO_AUTH_UPDATE']); - } - */ + $user->setup('install'); // If we are within the intro page we need to make sure we get up-to-date version info if ($sub == 'intro') @@ -120,8 +138,6 @@ class install_update extends module $template->set_custom_template('../adm/style', 'admin'); // Get current and latest version - $this->current_version = $config['version']; - if (($latest_version = $cache->get('_version_info')) === false) { $this->latest_version = $this->get_file('version_info'); @@ -132,6 +148,9 @@ class install_update extends module $this->latest_version = $latest_version; } + // For the current version we trick a bit. ;) + $this->current_version = (!empty($config['version_update_from'])) ? $config['version_update_from'] : $config['version']; + $up_to_date = (version_compare(strtolower($this->current_version), strtolower($this->latest_version), '<')) ? false : true; // Check for a valid update directory, else point the user to the phpbb.com website @@ -170,20 +189,28 @@ class install_update extends module return; } - // Got the updater template itself updated? If so, we are able to directly use it - but only if all three files are present - if (in_array('adm/style/install_update.html', $this->update_info['files'])) + if ($this->test_update === false) { - $this->tpl_name = '../../install/update/new/adm/style/install_update'; - } + // Got the updater template itself updated? If so, we are able to directly use it - but only if all three files are present + if (in_array('adm/style/install_update.html', $this->update_info['files'])) + { + $this->tpl_name = '../../install/update/new/adm/style/install_update'; + } - // What about the language file? Got it updated? - if (in_array('language/en/install.php', $this->update_info['files'])) - { - $lang = array(); - include('./update/new/language/en/install.php'); - $user->lang = array_merge($user->lang, $lang); + // What about the language file? Got it updated? + if (in_array('language/en/install.php', $this->update_info['files'])) + { + $lang = array(); + include($this->new_location . 'language/en/install.php'); + $user->lang = array_merge($user->lang, $lang); + } } + // Include renderer and engine + $this->include_file('includes/diff/diff.' . $phpEx); + $this->include_file('includes/diff/engine.' . $phpEx); + $this->include_file('includes/diff/renderer.' . $phpEx); + // Make sure we stay at the file check if checking the files again if (!empty($_POST['check_again'])) { @@ -210,14 +237,52 @@ class install_update extends module $template->assign_vars(array( 'S_UP_TO_DATE' => $up_to_date, 'S_VERSION_CHECK' => true, - 'U_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=file_check"), + + 'U_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=file_check"), + 'U_DB_UPDATE_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=update_db"), 'LATEST_VERSION' => $this->latest_version, - 'CURRENT_VERSION' => $config['version']) + 'CURRENT_VERSION' => $this->current_version) ); break; + case 'update_db': + + // Make sure the database update is valid for the latest version + $valid = false; + $updates_to_version = ''; + + if (file_exists($phpbb_root_path . 'install/database_update.' . $phpEx)) + { + include_once($phpbb_root_path . 'install/database_update.' . $phpEx); + + if ($updates_to_version === $this->latest_version) + { + $valid = true; + } + } + + // Should not happen at all + if (!$valid) + { + trigger_error($user->lang['DATABASE_UPDATE_INFO_OLD'], E_USER_ERROR); + } + + // Just a precaution + $cache->purge(); + + // Redirect the user to the database update script with some explanations... + $template->assign_vars(array( + 'S_DB_UPDATE' => true, + 'S_DB_UPDATE_FINISHED' => ($config['version'] == $this->latest_version) ? true : false, + 'U_DB_UPDATE' => $phpbb_root_path . 'install/database_update.' . $phpEx . '?type=1', + 'U_DB_UPDATE_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=update_db"), + 'U_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=file_check"), + )); + + break; + case 'file_check': $this->page_title = 'STAGE_FILE_CHECK'; @@ -286,18 +351,41 @@ class install_update extends module foreach ($filelist as $file_struct) { + $s_binary = (!empty($this->update_info['binary']) && in_array($file_struct['filename'], $this->update_info['binary'])) ? true : false; + + $filename = htmlspecialchars($file_struct['filename']); + if (strrpos($filename, '/') !== false) + { + $dir_part = substr($filename, 0, strrpos($filename, '/') + 1); + $file_part = substr($filename, strrpos($filename, '/') + 1); + } + else + { + $dir_part = ''; + $file_part = $filename; + } + + $diff_url = append_sid($this->p_master->module_url, "mode=$mode&sub=file_check&action=diff&status=$status&file=" . urlencode($file_struct['filename'])); + $template->assign_block_vars('files', array( 'STATUS' => $status, - 'FILENAME' => htmlspecialchars($file_struct['filename']), + 'FILENAME' => $filename, + 'DIR_PART' => $dir_part, + 'FILE_PART' => $file_part, 'NUM_CONFLICTS' => (isset($file_struct['conflicts'])) ? $file_struct['conflicts'] : 0, 'S_CUSTOM' => ($file_struct['custom']) ? true : false, + 'S_BINARY' => $s_binary, 'CUSTOM_ORIGINAL' => ($file_struct['custom']) ? $file_struct['original'] : '', - 'U_SHOW_DIFF' => append_sid($this->p_master->module_url, "mode=$mode&sub=file_check&action=diff&status=$status&file=" . urlencode($file_struct['filename'])), - 'UA_SHOW_DIFF' => append_sid($this->p_master->module_url, "mode=$mode&sub=file_check&action=diff&status=$status&file=" . urlencode($file_struct['filename']), false), + 'U_SHOW_DIFF' => $diff_url, 'L_SHOW_DIFF' => ($status != 'up_to_date') ? $user->lang['SHOW_DIFF_' . strtoupper($status)] : '', + + 'U_VIEW_MOD_FILE' => $diff_url . '&op=' . MERGE_MOD_FILE, + 'U_VIEW_NEW_FILE' => $diff_url . '&op=' . MERGE_NEW_FILE, + 'U_VIEW_NO_MERGE_MOD' => $diff_url . '&op=' . MERGE_NO_MERGE_MOD, + 'U_VIEW_NO_MERGE_NEW' => $diff_url . '&op=' . MERGE_NO_MERGE_NEW, )); } } @@ -321,6 +409,16 @@ class install_update extends module 'U_DB_UPDATE_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=update_db"), )); + if ($all_up_to_date) + { + $db->sql_query('DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'version_update_from'"); + + // Add database update to log + add_log('admin', 'LOG_UPDATE_PHPBB', $this->current_version, $this->latest_version); + + $cache->purge(); + } + break; case 'update_files': @@ -342,7 +440,7 @@ class install_update extends module if (!empty($_POST['download'])) { - include_once($phpbb_root_path . 'includes/functions_compress.' . $phpEx); + $this->include_file('includes/functions_compress.' . $phpEx); $use_method = request_var('use_method', ''); $methods = array('.tar'); @@ -378,6 +476,7 @@ class install_update extends module // To ease the update process create a file location map $update_list = $cache->get('_update_list'); + $script_path = ($config['force_server_vars']) ? (($config['script_path'] == '/') ? '/' : $config['script_path'] . '/') : $user->page['root_script_path']; foreach ($update_list as $status => $files) { @@ -395,7 +494,7 @@ class install_update extends module $template->assign_block_vars('location', array( 'SOURCE' => htmlspecialchars($file_struct['filename']), - 'DESTINATION' => $user->page['root_script_path'] . htmlspecialchars($file_struct['filename']), + 'DESTINATION' => $script_path . htmlspecialchars($file_struct['filename']), )); } } @@ -412,7 +511,7 @@ class install_update extends module } else { - include_once($phpbb_root_path . 'includes/functions_transfer.' . $phpEx); + $this->include_file('includes/functions_transfer.' . $phpEx); // Choose FTP, if not available use fsock... $method = request_var('method', ''); @@ -577,8 +676,11 @@ class install_update extends module break; case 'modified': - $diff = &new diff3(file($this->old_location . $original_filename), file($phpbb_root_path . $file_struct['filename']), file($this->new_location . $original_filename)); + + $diff = $this->return_diff($this->old_location . $original_filename, $phpbb_root_path . $file_struct['filename'], $this->new_location . $original_filename); + $contents = implode("\n", $diff->merged_output()); + unset($diff); if ($update_mode == 'download') { @@ -586,24 +688,46 @@ class install_update extends module } else { + // @todo add option to specify if a backup file should be created? $transfer->rename($file_struct['filename'], $file_struct['filename'] . '.bak'); $transfer->write_file($file_struct['filename'], $contents); } break; case 'conflict': - $diff = &new diff3(file($this->old_location . $original_filename), file($phpbb_root_path . $file_struct['filename']), file($this->new_location . $original_filename)); - if ($conflicts[$file_struct['filename']] == 1) - { - $contents = implode("\n", $diff->merged_new_output()); - } - else if ($conflicts[$file_struct['filename']] == 2) - { - $contents = implode("\n", $diff->merged_orig_output()); - } - else + $option = $conflicts[$file_struct['filename']]; + $contents = ''; + + switch ($option) { + case MERGE_NO_MERGE_NEW: + $contents = file_get_contents($this->new_location . $original_filename); + break; + + case MERGE_NO_MERGE_MOD: + $contents = file_get_contents($phpbb_root_path . $file_struct['filename']); + break; + + default: + + $diff = $this->return_diff($this->old_location . $original_filename, $phpbb_root_path . $file_struct['filename'], $this->new_location . $original_filename); + + if ($option == MERGE_NEW_FILE) + { + $contents = implode("\n", $diff->merged_new_output()); + } + else if ($option == MERGE_MOD_FILE) + { + $contents = implode("\n", $diff->merged_orig_output()); + } + else + { + unset($diff); + break 2; + } + + unset($diff); break; } @@ -643,38 +767,6 @@ class install_update extends module break; - case 'update_db': - - // Make sure the database update is valid for the latest version - $valid = false; - $updates_to_version = ''; - - if (file_exists($phpbb_root_path . 'install/database_update.' . $phpEx)) - { - include_once($phpbb_root_path . 'install/database_update.' . $phpEx); - - if ($updates_to_version === $this->latest_version) - { - $valid = true; - } - } - - // Should not happen at all - if (!$valid) - { - trigger_error($user->lang['DATABASE_UPDATE_INFO_OLD'], E_USER_ERROR); - } - - // Because we are done with the file update we purge the cache directory - $cache->purge(); - - // Redirect the user to the database update script with some explanations... - $template->assign_vars(array( - 'S_DB_UPDATE' => true, - 'U_DB_UPDATE' => $phpbb_root_path . 'install/database_update.' . $phpEx) - ); - - break; } } @@ -719,28 +811,71 @@ class install_update extends module switch ($status) { case 'conflict': - $diff = &new diff3(file($this->old_location . $original_file), file($phpbb_root_path . $file), file($this->new_location . $original_file)); + $option = request_var('op', 0); + + switch ($option) + { + case MERGE_NO_MERGE_NEW: + case MERGE_NO_MERGE_MOD: + + $diff = $this->return_diff(array(), ($option == MERGE_NO_MERGE_NEW) ? $this->new_location . $original_file : $phpbb_root_path . $file); + + $template->assign_var('S_DIFF_NEW_FILE', true); + $diff_mode = 'inline'; + $this->page_title = 'VIEWING_FILE_CONTENTS'; + + break; + + case MERGE_NEW_FILE: + case MERGE_MOD_FILE: + + $diff = $this->return_diff($this->old_location . $original_file, $phpbb_root_path . $file, $this->new_location . $original_file); + + $tmp = array( + 'file1' => array(), + 'file2' => ($option == MERGE_NEW_FILE) ? implode("\n", $diff->merged_new_output()) : implode("\n", $diff->merged_orig_output()), + ); + + $diff = &new diff($tmp['file1'], $tmp['file2']); + + unset($tmp); + + $template->assign_var('S_DIFF_NEW_FILE', true); + $diff_mode = 'inline'; + $this->page_title = 'VIEWING_FILE_CONTENTS'; + + break; + + default: + + $diff = $this->return_diff($this->old_location . $original_file, $phpbb_root_path . $file, $this->new_location . $original_file); + + $template->assign_vars(array( + 'S_DIFF_CONFLICT_FILE' => true, + 'NUM_CONFLICTS' => $diff->merged_output(false, false, false, true)) + ); + break; + } - $template->assign_vars(array( - 'S_DIFF_CONFLICT_FILE' => true, - 'NUM_CONFLICTS' => $diff->merged_output(false, false, false, true)) - ); break; case 'modified': - $diff = &new diff3(file($this->old_location . $original_file), file($phpbb_root_path . $original_file), file($this->new_location . $file)); + $diff = $this->return_diff($this->old_location . $original_file, $phpbb_root_path . $original_file, $this->new_location . $file); break; case 'not_modified': case 'new_conflict': - $diff = &new diff(file($phpbb_root_path . $file), file($this->new_location . $original_file)); + $diff = $this->return_diff($phpbb_root_path . $file, $this->new_location . $original_file); break; case 'new': - $diff = &new diff(array(), file($this->new_location . $original_file)); + + $diff = $this->return_diff(array(), $this->new_location . $original_file); + $template->assign_var('S_DIFF_NEW_FILE', true); $diff_mode = 'inline'; $this->page_title = 'VIEWING_FILE_CONTENTS'; + break; } @@ -762,9 +897,12 @@ class install_update extends module $template->assign_vars(array( 'DIFF_CONTENT' => $renderer->get_diff_content($diff), + 'DIFF_MODE' => $diff_mode, 'S_DIFF_MODE_OPTIONS' => $diff_mode_options, 'S_SHOW_DIFF' => true, )); + + unset($diff, $renderer); } /** @@ -865,11 +1003,19 @@ class install_update extends module // Check for this circumstance, the new file need to be up-to-date with the current file then... if (!file_exists($this->old_location . $original_file) && file_exists($this->new_location . $original_file) && file_exists($phpbb_root_path . $file)) { + $tmp = array( + 'file1' => file_get_contents($this->new_location . $original_file), + 'file2' => file_get_contents($phpbb_root_path . $file), + ); + // We need to diff the contents here to make sure the file is really the one we expect - $diff = &new diff(file($this->new_location . $original_file), file($phpbb_root_path . $file)); + $diff = &new diff($tmp['file1'], $tmp['file2'], false); + $empty = $diff->is_empty(); + + unset($tmp, $diff); // if there are no differences we have an up-to-date file... - if ($diff->is_empty()) + if ($empty) { $update_list['up_to_date'][] = $update_ary; return; @@ -880,22 +1026,40 @@ class install_update extends module return; } - // Check for existance, else abort immediatly + // Check for existance, else abort immediately if (!file_exists($this->old_location . $original_file) || !file_exists($this->new_location . $original_file)) { trigger_error($user->lang['INCOMPLETE_UPDATE_FILES'], E_USER_ERROR); } - $diff = &new diff(file($this->old_location . $original_file), file($phpbb_root_path . $file)); + $tmp = array( + 'file1' => file_get_contents($this->old_location . $original_file), + 'file2' => file_get_contents($phpbb_root_path . $file), + ); + + // We need to diff the contents here to make sure the file is really the one we expect + $diff = &new diff($tmp['file1'], $tmp['file2'], false); + $empty_1 = $diff->is_empty(); + + unset($tmp, $diff); + + $tmp = array( + 'file1' => file_get_contents($this->new_location . $original_file), + 'file2' => file_get_contents($phpbb_root_path . $file), + ); + + // We need to diff the contents here to make sure the file is really the one we expect + $diff = &new diff($tmp['file1'], $tmp['file2'], false); + $empty_2 = $diff->is_empty(); + + unset($tmp, $diff); // If the file is not modified we are finished here... - if ($diff->is_empty()) + if ($empty_1) { // Further check if it is already up to date - it could happen that non-modified files // slip through - $diff = &new diff(file($this->new_location . $original_file), file($phpbb_root_path . $file)); - - if ($diff->is_empty()) + if ($empty_2) { $update_list['up_to_date'][] = $update_ary; return; @@ -906,29 +1070,45 @@ class install_update extends module } // If the file had been modified then we need to check if it is already up to date - $diff = &new diff(file($this->new_location . $original_file), file($phpbb_root_path . $file)); // if there are no differences we have an up-to-date file... - if ($diff->is_empty()) + if ($empty_2) { $update_list['up_to_date'][] = $update_ary; return; } // if the file is modified we try to make sure a merge succeed - $diff = &new diff3(file($this->old_location . $original_file), file($phpbb_root_path . $file), file($this->new_location . $original_file)); + $tmp = array( + 'file1' => file_get_contents($this->old_location . $original_file), + 'file2' => file_get_contents($phpbb_root_path . $file), + 'file3' => file_get_contents($this->new_location . $original_file), + ); + + $diff = &new diff3($tmp['file1'], $tmp['file2'], $tmp['file3'], false); + + unset($tmp); if ($diff->merged_output(false, false, false, true)) { $update_ary['conflicts'] = $diff->_conflicting_blocks; $update_list['conflict'][] = $update_ary; + + unset($diff); + return; } + $tmp = array( + 'file1' => file_get_contents($phpbb_root_path . $file), + 'file2' => implode("\n", $diff->merged_output()), + ); + // now compare the merged output with the original file to see if the modified file is up to date - $diff = &new diff(file($phpbb_root_path . $file), $diff->merged_output()); + $diff = &new diff($tmp['file1'], $tmp['file2'], false); + $empty = $diff->is_empty(); - if ($diff->is_empty()) + if ($empty) { $update_list['up_to_date'][] = $update_ary; return; @@ -1041,6 +1221,54 @@ class install_update extends module return $info; } + + /** + * Function for including files... + */ + function include_file($filename) + { + global $phpbb_root_path, $phpEx; + + if (!empty($this->update_info['files']) && in_array($filename, $this->update_info['files'])) + { + include_once($this->new_location . $filename); + } + else + { + include_once($phpbb_root_path . $filename); + } + } + + /** + * Wrapper for returning a diff object + */ + function &return_diff() + { + $args = func_get_args(); + $three_way_diff = (func_num_args() > 2) ? true : false; + + $file1 = array_shift($args); + $file2 = array_shift($args); + + $tmp['file1'] = (!empty($file1) && is_string($file1)) ? file_get_contents($file1) : $file1; + $tmp['file2'] = (!empty($file2) && is_string($file2)) ? file_get_contents($file2) : $file2; + + if ($three_way_diff) + { + $file3 = array_shift($args); + $tmp['file3'] = (!empty($file3) && is_string($file3)) ? file_get_contents($file3) : $file3; + + $diff = &new diff3($tmp['file1'], $tmp['file2'], $tmp['file3']); + } + else + { + $diff = &new diff($tmp['file1'], $tmp['file2']); + } + + unset($tmp); + + return $diff; + } } ?>
\ No newline at end of file diff --git a/phpBB/install/schemas/firebird_schema.sql b/phpBB/install/schemas/firebird_schema.sql index f06c98b657..dd3e4af9d2 100644 --- a/phpBB/install/schemas/firebird_schema.sql +++ b/phpBB/install/schemas/firebird_schema.sql @@ -226,7 +226,8 @@ CREATE TABLE phpbb_confirm ( confirm_id CHAR(32) CHARACTER SET NONE DEFAULT '' NOT NULL, session_id CHAR(32) CHARACTER SET NONE DEFAULT '' NOT NULL, confirm_type INTEGER DEFAULT 0 NOT NULL, - code VARCHAR(8) CHARACTER SET NONE DEFAULT '' NOT NULL + code VARCHAR(8) CHARACTER SET NONE DEFAULT '' NOT NULL, + seed INTEGER DEFAULT 0 NOT NULL );; ALTER TABLE phpbb_confirm ADD PRIMARY KEY (session_id, confirm_id);; @@ -960,6 +961,7 @@ CREATE TABLE phpbb_sessions ( session_time INTEGER DEFAULT 0 NOT NULL, session_ip VARCHAR(40) CHARACTER SET NONE DEFAULT '' NOT NULL, session_browser VARCHAR(150) CHARACTER SET NONE DEFAULT '' NOT NULL, + session_forwarded_for VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, session_page VARCHAR(255) CHARACTER SET UTF8 DEFAULT '' NOT NULL COLLATE UNICODE, session_viewonline INTEGER DEFAULT 1 NOT NULL, session_autologin INTEGER DEFAULT 0 NOT NULL, @@ -1409,7 +1411,7 @@ CREATE TABLE phpbb_users ( user_allow_viewonline INTEGER DEFAULT 1 NOT NULL, user_allow_viewemail INTEGER DEFAULT 1 NOT NULL, user_allow_massemail INTEGER DEFAULT 1 NOT NULL, - user_options INTEGER DEFAULT 893 NOT NULL, + user_options INTEGER DEFAULT 895 NOT NULL, user_avatar VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, user_avatar_type INTEGER DEFAULT 0 NOT NULL, user_avatar_width INTEGER DEFAULT 0 NOT NULL, @@ -1500,6 +1502,6 @@ CREATE TABLE phpbb_zebra ( foe INTEGER DEFAULT 0 NOT NULL );; -CREATE INDEX phpbb_zebra_user_id ON phpbb_zebra(user_id);; -CREATE INDEX phpbb_zebra_zebra_id ON phpbb_zebra(zebra_id);; +ALTER TABLE phpbb_zebra ADD PRIMARY KEY (user_id, zebra_id);; + diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 804d5eafc8..7f33783072 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -292,7 +292,8 @@ CREATE TABLE [phpbb_confirm] ( [confirm_id] [char] (32) DEFAULT ('') NOT NULL , [session_id] [char] (32) DEFAULT ('') NOT NULL , [confirm_type] [int] DEFAULT (0) NOT NULL , - [code] [varchar] (8) DEFAULT ('') NOT NULL + [code] [varchar] (8) DEFAULT ('') NOT NULL , + [seed] [int] DEFAULT (0) NOT NULL ) ON [PRIMARY] GO @@ -1140,6 +1141,7 @@ CREATE TABLE [phpbb_sessions] ( [session_time] [int] DEFAULT (0) NOT NULL , [session_ip] [varchar] (40) DEFAULT ('') NOT NULL , [session_browser] [varchar] (150) DEFAULT ('') NOT NULL , + [session_forwarded_for] [varchar] (255) DEFAULT ('') NOT NULL , [session_page] [varchar] (255) DEFAULT ('') NOT NULL , [session_viewonline] [int] DEFAULT (1) NOT NULL , [session_autologin] [int] DEFAULT (0) NOT NULL , @@ -1651,7 +1653,7 @@ CREATE TABLE [phpbb_users] ( [user_allow_viewonline] [int] DEFAULT (1) NOT NULL , [user_allow_viewemail] [int] DEFAULT (1) NOT NULL , [user_allow_massemail] [int] DEFAULT (1) NOT NULL , - [user_options] [int] DEFAULT (893) NOT NULL , + [user_options] [int] DEFAULT (895) NOT NULL , [user_avatar] [varchar] (255) DEFAULT ('') NOT NULL , [user_avatar_type] [int] DEFAULT (0) NOT NULL , [user_avatar_width] [int] DEFAULT (0) NOT NULL , @@ -1742,10 +1744,12 @@ CREATE TABLE [phpbb_zebra] ( ) ON [PRIMARY] GO -CREATE INDEX [user_id] ON [phpbb_zebra]([user_id]) ON [PRIMARY] -GO - -CREATE INDEX [zebra_id] ON [phpbb_zebra]([zebra_id]) ON [PRIMARY] +ALTER TABLE [phpbb_zebra] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_zebra] PRIMARY KEY CLUSTERED + ( + [user_id], + [zebra_id] + ) ON [PRIMARY] GO diff --git a/phpBB/install/schemas/mysql_40_schema.sql b/phpBB/install/schemas/mysql_40_schema.sql index cf4d43b768..2b3022a875 100644 --- a/phpBB/install/schemas/mysql_40_schema.sql +++ b/phpBB/install/schemas/mysql_40_schema.sql @@ -163,6 +163,7 @@ CREATE TABLE phpbb_confirm ( session_id char(32) DEFAULT '' NOT NULL, confirm_type tinyint(3) DEFAULT '0' NOT NULL, code varchar(8) DEFAULT '' NOT NULL, + seed int(10) UNSIGNED DEFAULT '0' NOT NULL, PRIMARY KEY (session_id, confirm_id), KEY confirm_type (confirm_type) ); @@ -253,9 +254,9 @@ CREATE TABLE phpbb_forums ( enable_icons tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, enable_prune tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, prune_next int(11) UNSIGNED DEFAULT '0' NOT NULL, - prune_days tinyint(4) DEFAULT '0' NOT NULL, - prune_viewed tinyint(4) DEFAULT '0' NOT NULL, - prune_freq tinyint(4) DEFAULT '0' NOT NULL, + prune_days mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, + prune_viewed mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, + prune_freq mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, PRIMARY KEY (forum_id), KEY left_right_id (left_id, right_id), KEY forum_lastpost_id (forum_last_post_id) @@ -510,7 +511,7 @@ CREATE TABLE phpbb_privmsgs_rules ( rule_user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, rule_group_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, rule_action mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, - rule_folder_id int(4) DEFAULT '0' NOT NULL, + rule_folder_id int(11) DEFAULT '0' NOT NULL, PRIMARY KEY (rule_id), KEY user_id (user_id) ); @@ -527,7 +528,7 @@ CREATE TABLE phpbb_privmsgs_to ( pm_replied tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, pm_marked tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, pm_forwarded tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, - folder_id int(4) DEFAULT '0' NOT NULL, + folder_id int(11) DEFAULT '0' NOT NULL, KEY msg_id (msg_id), KEY author_id (author_id), KEY usr_flder_id (user_id, folder_id) @@ -661,6 +662,7 @@ CREATE TABLE phpbb_sessions ( session_time int(11) UNSIGNED DEFAULT '0' NOT NULL, session_ip varchar(40) DEFAULT '' NOT NULL, session_browser varchar(150) DEFAULT '' NOT NULL, + session_forwarded_for varchar(255) DEFAULT '' NOT NULL, session_page text NOT NULL, session_viewonline tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, session_autologin tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, @@ -1011,7 +1013,7 @@ CREATE TABLE phpbb_users ( user_allow_viewonline tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, user_allow_viewemail tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, user_allow_massemail tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, - user_options int(11) UNSIGNED DEFAULT '893' NOT NULL, + user_options int(11) UNSIGNED DEFAULT '895' NOT NULL, user_avatar varchar(255) DEFAULT '' NOT NULL, user_avatar_type tinyint(2) DEFAULT '0' NOT NULL, user_avatar_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, @@ -1064,8 +1066,7 @@ CREATE TABLE phpbb_zebra ( zebra_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, friend tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, foe tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, - KEY user_id (user_id), - KEY zebra_id (zebra_id) + PRIMARY KEY (user_id, zebra_id) ); diff --git a/phpBB/install/schemas/mysql_41_schema.sql b/phpBB/install/schemas/mysql_41_schema.sql index aaf00d077e..7ade8bd1a4 100644 --- a/phpBB/install/schemas/mysql_41_schema.sql +++ b/phpBB/install/schemas/mysql_41_schema.sql @@ -163,6 +163,7 @@ CREATE TABLE phpbb_confirm ( session_id char(32) DEFAULT '' NOT NULL, confirm_type tinyint(3) DEFAULT '0' NOT NULL, code varchar(8) DEFAULT '' NOT NULL, + seed int(10) UNSIGNED DEFAULT '0' NOT NULL, PRIMARY KEY (session_id, confirm_id), KEY confirm_type (confirm_type) ) CHARACTER SET `utf8` COLLATE `utf8_bin`; @@ -253,9 +254,9 @@ CREATE TABLE phpbb_forums ( enable_icons tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, enable_prune tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, prune_next int(11) UNSIGNED DEFAULT '0' NOT NULL, - prune_days tinyint(4) DEFAULT '0' NOT NULL, - prune_viewed tinyint(4) DEFAULT '0' NOT NULL, - prune_freq tinyint(4) DEFAULT '0' NOT NULL, + prune_days mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, + prune_viewed mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, + prune_freq mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, PRIMARY KEY (forum_id), KEY left_right_id (left_id, right_id), KEY forum_lastpost_id (forum_last_post_id) @@ -510,7 +511,7 @@ CREATE TABLE phpbb_privmsgs_rules ( rule_user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, rule_group_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, rule_action mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, - rule_folder_id int(4) DEFAULT '0' NOT NULL, + rule_folder_id int(11) DEFAULT '0' NOT NULL, PRIMARY KEY (rule_id), KEY user_id (user_id) ) CHARACTER SET `utf8` COLLATE `utf8_bin`; @@ -527,7 +528,7 @@ CREATE TABLE phpbb_privmsgs_to ( pm_replied tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, pm_marked tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, pm_forwarded tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, - folder_id int(4) DEFAULT '0' NOT NULL, + folder_id int(11) DEFAULT '0' NOT NULL, KEY msg_id (msg_id), KEY author_id (author_id), KEY usr_flder_id (user_id, folder_id) @@ -661,6 +662,7 @@ CREATE TABLE phpbb_sessions ( session_time int(11) UNSIGNED DEFAULT '0' NOT NULL, session_ip varchar(40) DEFAULT '' NOT NULL, session_browser varchar(150) DEFAULT '' NOT NULL, + session_forwarded_for varchar(255) DEFAULT '' NOT NULL, session_page varchar(255) DEFAULT '' NOT NULL, session_viewonline tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, session_autologin tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, @@ -1011,7 +1013,7 @@ CREATE TABLE phpbb_users ( user_allow_viewonline tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, user_allow_viewemail tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, user_allow_massemail tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, - user_options int(11) UNSIGNED DEFAULT '893' NOT NULL, + user_options int(11) UNSIGNED DEFAULT '895' NOT NULL, user_avatar varchar(255) DEFAULT '' NOT NULL, user_avatar_type tinyint(2) DEFAULT '0' NOT NULL, user_avatar_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, @@ -1064,8 +1066,7 @@ CREATE TABLE phpbb_zebra ( zebra_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, friend tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, foe tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, - KEY user_id (user_id), - KEY zebra_id (zebra_id) + PRIMARY KEY (user_id, zebra_id) ) CHARACTER SET `utf8` COLLATE `utf8_bin`; diff --git a/phpBB/install/schemas/oracle_schema.sql b/phpBB/install/schemas/oracle_schema.sql index 816d584b97..8634dcd1fe 100644 --- a/phpBB/install/schemas/oracle_schema.sql +++ b/phpBB/install/schemas/oracle_schema.sql @@ -337,6 +337,7 @@ CREATE TABLE phpbb_confirm ( session_id char(32) DEFAULT '' , confirm_type number(3) DEFAULT '0' NOT NULL, code varchar2(8) DEFAULT '' , + seed number(10) DEFAULT '0' NOT NULL, CONSTRAINT pk_phpbb_confirm PRIMARY KEY (session_id, confirm_id) ) / @@ -508,9 +509,9 @@ CREATE TABLE phpbb_forums ( enable_icons number(1) DEFAULT '1' NOT NULL, enable_prune number(1) DEFAULT '0' NOT NULL, prune_next number(11) DEFAULT '0' NOT NULL, - prune_days number(4) DEFAULT '0' NOT NULL, - prune_viewed number(4) DEFAULT '0' NOT NULL, - prune_freq number(4) DEFAULT '0' NOT NULL, + prune_days number(8) DEFAULT '0' NOT NULL, + prune_viewed number(8) DEFAULT '0' NOT NULL, + prune_freq number(8) DEFAULT '0' NOT NULL, CONSTRAINT pk_phpbb_forums PRIMARY KEY (forum_id) ) / @@ -988,7 +989,7 @@ CREATE TABLE phpbb_privmsgs_rules ( rule_user_id number(8) DEFAULT '0' NOT NULL, rule_group_id number(8) DEFAULT '0' NOT NULL, rule_action number(8) DEFAULT '0' NOT NULL, - rule_folder_id number(4) DEFAULT '0' NOT NULL, + rule_folder_id number(11) DEFAULT '0' NOT NULL, CONSTRAINT pk_phpbb_privmsgs_rules PRIMARY KEY (rule_id) ) / @@ -1025,7 +1026,7 @@ CREATE TABLE phpbb_privmsgs_to ( pm_replied number(1) DEFAULT '0' NOT NULL, pm_marked number(1) DEFAULT '0' NOT NULL, pm_forwarded number(1) DEFAULT '0' NOT NULL, - folder_id number(4) DEFAULT '0' NOT NULL + folder_id number(11) DEFAULT '0' NOT NULL ) / @@ -1279,6 +1280,7 @@ CREATE TABLE phpbb_sessions ( session_time number(11) DEFAULT '0' NOT NULL, session_ip varchar2(40) DEFAULT '' , session_browser varchar2(150) DEFAULT '' , + session_forwarded_for varchar2(255) DEFAULT '' , session_page varchar2(765) DEFAULT '' , session_viewonline number(1) DEFAULT '1' NOT NULL, session_autologin number(1) DEFAULT '0' NOT NULL, @@ -1820,7 +1822,7 @@ CREATE TABLE phpbb_users ( user_allow_viewonline number(1) DEFAULT '1' NOT NULL, user_allow_viewemail number(1) DEFAULT '1' NOT NULL, user_allow_massemail number(1) DEFAULT '1' NOT NULL, - user_options number(11) DEFAULT '893' NOT NULL, + user_options number(11) DEFAULT '895' NOT NULL, user_avatar varchar2(255) DEFAULT '' , user_avatar_type number(2) DEFAULT '0' NOT NULL, user_avatar_width number(4) DEFAULT '0' NOT NULL, @@ -1933,12 +1935,9 @@ CREATE TABLE phpbb_zebra ( user_id number(8) DEFAULT '0' NOT NULL, zebra_id number(8) DEFAULT '0' NOT NULL, friend number(1) DEFAULT '0' NOT NULL, - foe number(1) DEFAULT '0' NOT NULL + foe number(1) DEFAULT '0' NOT NULL, + CONSTRAINT pk_phpbb_zebra PRIMARY KEY (user_id, zebra_id) ) / -CREATE INDEX phpbb_zebra_user_id ON phpbb_zebra (user_id) -/ -CREATE INDEX phpbb_zebra_zebra_id ON phpbb_zebra (zebra_id) -/ diff --git a/phpBB/install/schemas/postgres_schema.sql b/phpBB/install/schemas/postgres_schema.sql index aa22d5b0fa..d0005a16a7 100644 --- a/phpBB/install/schemas/postgres_schema.sql +++ b/phpBB/install/schemas/postgres_schema.sql @@ -275,6 +275,7 @@ CREATE TABLE phpbb_confirm ( session_id char(32) DEFAULT '' NOT NULL, confirm_type INT2 DEFAULT '0' NOT NULL, code varchar(8) DEFAULT '' NOT NULL, + seed INT4 DEFAULT '0' NOT NULL CHECK (seed >= 0), PRIMARY KEY (session_id, confirm_id) ); @@ -385,9 +386,9 @@ CREATE TABLE phpbb_forums ( enable_icons INT2 DEFAULT '1' NOT NULL CHECK (enable_icons >= 0), enable_prune INT2 DEFAULT '0' NOT NULL CHECK (enable_prune >= 0), prune_next INT4 DEFAULT '0' NOT NULL CHECK (prune_next >= 0), - prune_days INT2 DEFAULT '0' NOT NULL, - prune_viewed INT2 DEFAULT '0' NOT NULL, - prune_freq INT2 DEFAULT '0' NOT NULL, + prune_days INT4 DEFAULT '0' NOT NULL CHECK (prune_days >= 0), + prune_viewed INT4 DEFAULT '0' NOT NULL CHECK (prune_viewed >= 0), + prune_freq INT4 DEFAULT '0' NOT NULL CHECK (prune_freq >= 0), PRIMARY KEY (forum_id) ); @@ -875,6 +876,7 @@ CREATE TABLE phpbb_sessions ( session_time INT4 DEFAULT '0' NOT NULL CHECK (session_time >= 0), session_ip varchar(40) DEFAULT '' NOT NULL, session_browser varchar(150) DEFAULT '' NOT NULL, + session_forwarded_for varchar(255) DEFAULT '' NOT NULL, session_page varchar(255) DEFAULT '' NOT NULL, session_viewonline INT2 DEFAULT '1' NOT NULL CHECK (session_viewonline >= 0), session_autologin INT2 DEFAULT '0' NOT NULL CHECK (session_autologin >= 0), @@ -1271,7 +1273,7 @@ CREATE TABLE phpbb_users ( user_allow_viewonline INT2 DEFAULT '1' NOT NULL CHECK (user_allow_viewonline >= 0), user_allow_viewemail INT2 DEFAULT '1' NOT NULL CHECK (user_allow_viewemail >= 0), user_allow_massemail INT2 DEFAULT '1' NOT NULL CHECK (user_allow_massemail >= 0), - user_options INT4 DEFAULT '893' NOT NULL CHECK (user_options >= 0), + user_options INT4 DEFAULT '895' NOT NULL CHECK (user_options >= 0), user_avatar varchar(255) DEFAULT '' NOT NULL, user_avatar_type INT2 DEFAULT '0' NOT NULL, user_avatar_width INT2 DEFAULT '0' NOT NULL CHECK (user_avatar_width >= 0), @@ -1333,11 +1335,10 @@ CREATE TABLE phpbb_zebra ( user_id INT4 DEFAULT '0' NOT NULL CHECK (user_id >= 0), zebra_id INT4 DEFAULT '0' NOT NULL CHECK (zebra_id >= 0), friend INT2 DEFAULT '0' NOT NULL CHECK (friend >= 0), - foe INT2 DEFAULT '0' NOT NULL CHECK (foe >= 0) + foe INT2 DEFAULT '0' NOT NULL CHECK (foe >= 0), + PRIMARY KEY (user_id, zebra_id) ); -CREATE INDEX phpbb_zebra_user_id ON phpbb_zebra (user_id); -CREATE INDEX phpbb_zebra_zebra_id ON phpbb_zebra (zebra_id); COMMIT;
\ No newline at end of file diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index c3a438e0de..ce151c020b 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -86,9 +86,11 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_post_confir INSERT INTO phpbb_config (config_name, config_value) VALUES ('flood_interval', '15'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('force_server_vars', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('forward_pm', '1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('forwarded_for_check', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('full_folder_action', '2'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_mysql_max_word_len', '254'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_mysql_min_word_len', '4'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_common_thres', '20'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_load_upd', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_max_chars', '14'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('fulltext_native_min_chars', '3'); @@ -114,8 +116,10 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_resource', '') INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_username', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_base_dn', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_email', ''); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_password', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_server', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_uid', ''); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_user', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('limit_load', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('limit_search_load', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_anon_lastread', '0'); @@ -161,7 +165,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('min_name_chars', ' INSERT INTO phpbb_config (config_name, config_value) VALUES ('min_pass_chars', '6'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('min_search_author_chars', '3'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('override_user_style', '0'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('pass_complex', '.*'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('pass_complex', 'PASS_TYPE_ANY'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('pm_edit_time', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('pm_max_boxes', '4'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('pm_max_msgs', '50'); @@ -170,6 +174,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('print_pm', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('queue_interval', '600'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('ranks_path', 'images/ranks'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('require_activation', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('script_path', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_block_size', '250'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_gc', '7200'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_indexing_state', ''); @@ -180,7 +185,6 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('search_store_resul INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_allow_deny', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_allow_empty_referer', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_downloads', '0'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('send_encoding', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_name', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_port', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('server_protocol', ''); @@ -199,13 +203,14 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('topics_per_page', INSERT INTO phpbb_config (config_name, config_value) VALUES ('tpl_allow_php', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.0.B4'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.0.B5'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400'); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('cache_last_gc', '0', 1); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('database_last_gc', '0', 1); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('last_queue_run', '0', 1); +INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('newest_user_colour', 'AA0000', 1); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('newest_user_id', '2', 1); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('newest_username', '', 1); INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('num_files', '0', 1); @@ -349,28 +354,28 @@ INSERT INTO phpbb_acl_options (auth_option, is_global) VALUES ('u_viewprofile', # -- standard auth roles -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Standard Admin', 'ROLE_DESCRIPTION_ADMIN_STANDARD', 'a_', 1); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Forum Admin', 'ROLE_DESCRIPTION_ADMIN_FORUM', 'a_', 3); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('User and Groups Admin', 'ROLE_DESCRIPTION_ADMIN_USERGROUP', 'a_', 4); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Full Admin', 'ROLE_DESCRIPTION_ADMIN_FULL', 'a_', 2); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('All Features', 'ROLE_DESCRIPTION_USER_FULL', 'u_', 3); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Standard Features', 'ROLE_DESCRIPTION_USER_STANDARD', 'u_', 1); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Limited Features', 'ROLE_DESCRIPTION_USER_LIMITED', 'u_', 2); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('No Private Messages', 'ROLE_DESCRIPTION_USER_NOPM', 'u_', 4); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('No Avatar', 'ROLE_DESCRIPTION_USER_NOAVATAR', 'u_', 5); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Full Moderator', 'ROLE_DESCRIPTION_MOD_FULL', 'm_', 3); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Standard Moderator', 'ROLE_DESCRIPTION_MOD_STANDARD', 'm_', 1); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Simple Moderator', 'ROLE_DESCRIPTION_MOD_SIMPLE', 'm_', 2); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Queue Moderator', 'ROLE_DESCRIPTION_MOD_QUEUE', 'm_', 4); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Full Access', 'ROLE_DESCRIPTION_FORUM_FULL', 'f_', 7); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Standard Access', 'ROLE_DESCRIPTION_FORUM_STANDARD', 'f_', 5); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('No Access', 'ROLE_DESCRIPTION_FORUM_NOACCESS', 'f_', 1); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Read Only Access', 'ROLE_DESCRIPTION_FORUM_READONLY', 'f_', 2); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Limited Access', 'ROLE_DESCRIPTION_FORUM_LIMITED', 'f_', 3); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Bot Access', 'ROLE_DESCRIPTION_FORUM_BOT', 'f_', 9); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('On Moderation Queue', 'ROLE_DESCRIPTION_FORUM_ONQUEUE', 'f_', 8); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Standard Access + Polls', 'ROLE_DESCRIPTION_FORUM_POLLS', 'f_', 6); -INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('Limited Access + Polls', 'ROLE_DESCRIPTION_FORUM_LIMITED_POLLS', 'f_', 4); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_ADMIN_STANDARD', 'ROLE_DESCRIPTION_ADMIN_STANDARD', 'a_', 1); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_ADMIN_FORUM', 'ROLE_DESCRIPTION_ADMIN_FORUM', 'a_', 3); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_ADMIN_USERGROUP', 'ROLE_DESCRIPTION_ADMIN_USERGROUP', 'a_', 4); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_ADMIN_FULL', 'ROLE_DESCRIPTION_ADMIN_FULL', 'a_', 2); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_USER_FULL', 'ROLE_DESCRIPTION_USER_FULL', 'u_', 3); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_USER_STANDARD', 'ROLE_DESCRIPTION_USER_STANDARD', 'u_', 1); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_USER_LIMITED', 'ROLE_DESCRIPTION_USER_LIMITED', 'u_', 2); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_USER_NOPM', 'ROLE_DESCRIPTION_USER_NOPM', 'u_', 4); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_USER_NOAVATAR', 'ROLE_DESCRIPTION_USER_NOAVATAR', 'u_', 5); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_MOD_FULL', 'ROLE_DESCRIPTION_MOD_FULL', 'm_', 3); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_MOD_STANDARD', 'ROLE_DESCRIPTION_MOD_STANDARD', 'm_', 1); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_MOD_SIMPLE', 'ROLE_DESCRIPTION_MOD_SIMPLE', 'm_', 2); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_MOD_QUEUE', 'ROLE_DESCRIPTION_MOD_QUEUE', 'm_', 4); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_FULL', 'ROLE_DESCRIPTION_FORUM_FULL', 'f_', 7); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_STANDARD', 'ROLE_DESCRIPTION_FORUM_STANDARD', 'f_', 5); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_NOACCESS', 'ROLE_DESCRIPTION_FORUM_NOACCESS', 'f_', 1); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_READONLY', 'ROLE_DESCRIPTION_FORUM_READONLY', 'f_', 2); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_LIMITED', 'ROLE_DESCRIPTION_FORUM_LIMITED', 'f_', 3); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_BOT', 'ROLE_DESCRIPTION_FORUM_BOT', 'f_', 9); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_ONQUEUE', 'ROLE_DESCRIPTION_FORUM_ONQUEUE', 'f_', 8); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_POLLS', 'ROLE_DESCRIPTION_FORUM_POLLS', 'f_', 6); +INSERT INTO phpbb_acl_roles (role_name, role_description, role_type, role_order) VALUES ('ROLE_FORUM_LIMITED_POLLS', 'ROLE_DESCRIPTION_FORUM_LIMITED_POLLS', 'f_', 4); # -- phpbb_styles @@ -391,7 +396,7 @@ INSERT INTO phpbb_forums (forum_name, forum_desc, left_id, right_id, parent_id, INSERT INTO phpbb_forums (forum_name, forum_desc, left_id, right_id, parent_id, forum_type, forum_posts, forum_topics, forum_topics_real, forum_last_post_id, forum_last_poster_id, forum_last_poster_name, forum_last_poster_colour, forum_last_post_subject, forum_last_post_time, forum_link, forum_password, forum_image, forum_rules, forum_rules_link, forum_rules_uid, forum_desc_uid, prune_days, prune_viewed, forum_parents) VALUES ('Test Forum 1', 'This is just a test forum.', 2, 3, 1, 1, 1, 1, 1, 1, 2, 'Admin', 'AA0000', 'Welcome to phpBB 3', 972086460, '', '', '', '', '', '', '', 0, 0, ''); # -- Users / Anonymous user -INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_from, user_icq, user_aim, user_yim, user_msnm, user_jabber, user_website, user_occ, user_interests, user_actkey, user_newpasswd) VALUES (2, 1, 'Anonymous', 'anonymous', 0, '', '', 'en', 1, 0, '', 0, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); +INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_from, user_icq, user_aim, user_yim, user_msnm, user_jabber, user_website, user_occ, user_interests, user_actkey, user_newpasswd, user_allow_massemail) VALUES (2, 1, 'Anonymous', 'anonymous', 0, '', '', 'en', 1, 0, '', 0, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0); # -- username: Admin password: admin (change this or remove it once everything is working!) INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_from, user_icq, user_aim, user_yim, user_msnm, user_jabber, user_website, user_occ, user_interests, user_actkey, user_newpasswd) VALUES (3, 5, 'Admin', 'admin', 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', 'en', 1, 1, 'AA0000', 1, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); @@ -466,13 +471,13 @@ INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 16, auth_option_id, 0 FROM phpbb_acl_options WHERE auth_option = 'f_'; # Read Only Access (f_) -INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 17, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option IN ('f_', 'f_download', 'f_list', 'f_read', 'f_search', 'f_subscribe'); +INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 17, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option IN ('f_', 'f_download', 'f_list', 'f_read', 'f_search', 'f_subscribe', 'f_print'); # Limited Access (f_) INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 18, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_attach', 'f_bump', 'f_delete', 'f_flash', 'f_icons', 'f_ignoreflood', 'f_poll', 'f_sticky', 'f_user_lock', 'f_votechg'); # Bot Access (f_) -INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 19, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option IN ('f_', 'f_download', 'f_list', 'f_read'); +INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 19, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option IN ('f_', 'f_download', 'f_list', 'f_read', 'f_print'); # On Moderation Queue (f_) INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 20, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_bump', 'f_delete', 'f_flash', 'f_icons', 'f_ignoreflood', 'f_poll', 'f_sticky', 'f_user_lock', 'f_votechg', 'f_noapprove'); @@ -584,13 +589,20 @@ INSERT INTO phpbb_icons (icons_url, icons_width, icons_height, icons_order, disp # -- wordlist +INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('this', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('example', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('post', 0); +INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('your', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('phpbb', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('installation', 0); +INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('you', 0); +INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('may', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('delete', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('topic', 0); +INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('and', 0); +INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('even', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('forum', 0); +INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('like', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('since', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('everything', 0); INSERT INTO phpbb_search_wordlist (word_text, word_common) VALUES ('seems', 0); @@ -609,8 +621,15 @@ INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (8, 1, INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (9, 1, 0); INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (10, 1, 0); INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (11, 1, 0); -INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (12, 1, 1); -INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (3, 1, 1); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (12, 1, 0); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (13, 1, 0); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (14, 1, 0); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (15, 1, 0); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (16, 1, 0); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (17, 1, 0); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (18, 1, 0); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (5, 1, 1); +INSERT INTO phpbb_search_wordmatch (word_id, post_id, title_match) VALUES (19, 1, 1); # -- reasons @@ -663,12 +682,21 @@ INSERT INTO phpbb_extensions (group_id, extension) VALUES (3, 'js'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (3, 'xml'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'xls'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'xlsx'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'xlsm'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'xlsb'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'doc'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'docx'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'docm'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'dot'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'dotx'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'dotm'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'pdf'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'ai'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'ps'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'ppt'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'pptx'); +INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'pptm'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'odg'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'odp'); INSERT INTO phpbb_extensions (group_id, extension) VALUES (4, 'ods'); diff --git a/phpBB/install/schemas/sqlite_schema.sql b/phpBB/install/schemas/sqlite_schema.sql index ee42bfec4b..93e916a234 100644 --- a/phpBB/install/schemas/sqlite_schema.sql +++ b/phpBB/install/schemas/sqlite_schema.sql @@ -160,6 +160,7 @@ CREATE TABLE phpbb_confirm ( session_id char(32) NOT NULL DEFAULT '', confirm_type tinyint(3) NOT NULL DEFAULT '0', code varchar(8) NOT NULL DEFAULT '', + seed INTEGER UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (session_id, confirm_id) ); @@ -246,9 +247,9 @@ CREATE TABLE phpbb_forums ( enable_icons INTEGER UNSIGNED NOT NULL DEFAULT '1', enable_prune INTEGER UNSIGNED NOT NULL DEFAULT '0', prune_next INTEGER UNSIGNED NOT NULL DEFAULT '0', - prune_days tinyint(4) NOT NULL DEFAULT '0', - prune_viewed tinyint(4) NOT NULL DEFAULT '0', - prune_freq tinyint(4) NOT NULL DEFAULT '0' + prune_days INTEGER UNSIGNED NOT NULL DEFAULT '0', + prune_viewed INTEGER UNSIGNED NOT NULL DEFAULT '0', + prune_freq INTEGER UNSIGNED NOT NULL DEFAULT '0' ); CREATE INDEX phpbb_forums_left_right_id ON phpbb_forums (left_id, right_id); @@ -494,7 +495,7 @@ CREATE TABLE phpbb_privmsgs_rules ( rule_user_id INTEGER UNSIGNED NOT NULL DEFAULT '0', rule_group_id INTEGER UNSIGNED NOT NULL DEFAULT '0', rule_action INTEGER UNSIGNED NOT NULL DEFAULT '0', - rule_folder_id int(4) NOT NULL DEFAULT '0' + rule_folder_id int(11) NOT NULL DEFAULT '0' ); CREATE INDEX phpbb_privmsgs_rules_user_id ON phpbb_privmsgs_rules (user_id); @@ -510,7 +511,7 @@ CREATE TABLE phpbb_privmsgs_to ( pm_replied INTEGER UNSIGNED NOT NULL DEFAULT '0', pm_marked INTEGER UNSIGNED NOT NULL DEFAULT '0', pm_forwarded INTEGER UNSIGNED NOT NULL DEFAULT '0', - folder_id int(4) NOT NULL DEFAULT '0' + folder_id int(11) NOT NULL DEFAULT '0' ); CREATE INDEX phpbb_privmsgs_to_msg_id ON phpbb_privmsgs_to (msg_id); @@ -639,6 +640,7 @@ CREATE TABLE phpbb_sessions ( session_time INTEGER UNSIGNED NOT NULL DEFAULT '0', session_ip varchar(40) NOT NULL DEFAULT '', session_browser varchar(150) NOT NULL DEFAULT '', + session_forwarded_for varchar(255) NOT NULL DEFAULT '', session_page varchar(255) NOT NULL DEFAULT '', session_viewonline INTEGER UNSIGNED NOT NULL DEFAULT '1', session_autologin INTEGER UNSIGNED NOT NULL DEFAULT '0', @@ -982,7 +984,7 @@ CREATE TABLE phpbb_users ( user_allow_viewonline INTEGER UNSIGNED NOT NULL DEFAULT '1', user_allow_viewemail INTEGER UNSIGNED NOT NULL DEFAULT '1', user_allow_massemail INTEGER UNSIGNED NOT NULL DEFAULT '1', - user_options INTEGER UNSIGNED NOT NULL DEFAULT '893', + user_options INTEGER UNSIGNED NOT NULL DEFAULT '895', user_avatar varchar(255) NOT NULL DEFAULT '', user_avatar_type tinyint(2) NOT NULL DEFAULT '0', user_avatar_width INTEGER UNSIGNED NOT NULL DEFAULT '0', @@ -1031,11 +1033,10 @@ CREATE TABLE phpbb_zebra ( user_id INTEGER UNSIGNED NOT NULL DEFAULT '0', zebra_id INTEGER UNSIGNED NOT NULL DEFAULT '0', friend INTEGER UNSIGNED NOT NULL DEFAULT '0', - foe INTEGER UNSIGNED NOT NULL DEFAULT '0' + foe INTEGER UNSIGNED NOT NULL DEFAULT '0', + PRIMARY KEY (user_id, zebra_id) ); -CREATE INDEX phpbb_zebra_user_id ON phpbb_zebra (user_id); -CREATE INDEX phpbb_zebra_zebra_id ON phpbb_zebra (zebra_id); COMMIT;
\ No newline at end of file diff --git a/phpBB/language/en/acp/attachments.php b/phpBB/language/en/acp/attachments.php index 4f8167f13a..121069a6f8 100644 --- a/phpBB/language/en/acp/attachments.php +++ b/phpBB/language/en/acp/attachments.php @@ -50,20 +50,20 @@ $lang = array_merge($lang, array( 'ATTACH_EXTENSIONS_URL' => 'Extensions', 'ATTACH_EXT_GROUPS_URL' => 'Extension groups', 'ATTACH_MAX_FILESIZE' => 'Maximum filesize', - 'ATTACH_MAX_FILESIZE_EXPLAIN' => 'Maximum size of each file, 0 is unlimited.', + 'ATTACH_MAX_FILESIZE_EXPLAIN' => 'Maximum size of each file, with 0 being unlimited.', 'ATTACH_MAX_PM_FILESIZE' => 'Maximum filesize messaging', - 'ATTACH_MAX_PM_FILESIZE_EXPLAIN' => 'Maximum drive space available per user for private message attachments, 0 is unlimited.', + 'ATTACH_MAX_PM_FILESIZE_EXPLAIN' => 'Maximum drive space available per user for private message attachments, with 0 being unlimited.', 'ATTACH_ORPHAN_URL' => 'Orphan attachments', 'ATTACH_POST_ID' => 'Post ID', 'ATTACH_QUOTA' => 'Total attachment quota', - 'ATTACH_QUOTA_EXPLAIN' => 'Maximum drive space available for attachments in total, 0 is unlimited.', + 'ATTACH_QUOTA_EXPLAIN' => 'Maximum drive space available for attachments for the whole board, with 0 being unlimited.', 'ATTACH_TO_POST' => 'Attach file to post', - 'CAT_FLASH_FILES' => 'Flash Files', + 'CAT_FLASH_FILES' => 'Flash files', 'CAT_IMAGES' => 'Images', - 'CAT_QUICKTIME_FILES' => 'Quicktime Media', - 'CAT_RM_FILES' => 'Real Media Streams', - 'CAT_WM_FILES' => 'Window Media Streams', + 'CAT_QUICKTIME_FILES' => 'Quicktime media files', + 'CAT_RM_FILES' => 'RealMedia media files', + 'CAT_WM_FILES' => 'Windows Media media files', 'CREATE_GROUP' => 'Create new group', 'CREATE_THUMBNAIL' => 'Create thumbnail', 'CREATE_THUMBNAIL_EXPLAIN' => 'Create a thumbnail in all possible situations.', @@ -71,8 +71,6 @@ $lang = array_merge($lang, array( 'DEFINE_ALLOWED_IPS' => 'Define allowed IPs/hostnames', 'DEFINE_DISALLOWED_IPS' => 'Define disallowed IPs/hostnames', 'DOWNLOAD_ADD_IPS_EXPLAIN' => 'To specify several different IPs or hostnames enter each on a new line. To specify a range of IP addresses separate the start and end with a hyphen (-), to specify a wildcard use *', - 'DOWNLOAD_MODE' => 'Download mode', - 'DOWNLOAD_MODE_EXPLAIN' => 'If you experience problems downloading files, set this to “physical”, the user will be directed to the file directly. Do not set it to physical if not really needed, it discloses the filename.', 'DOWNLOAD_REMOVE_IPS_EXPLAIN' => 'You can remove (or un-exclude) multiple IP addresses in one go using the appropriate combination of mouse and keyboard for your computer and browser. Excluded IPs have a blue background.', 'DISPLAY_INLINED' => 'Display images inline', 'DISPLAY_INLINED_EXPLAIN' => 'If set to No image attachments will show as a link.', @@ -94,7 +92,7 @@ $lang = array_merge($lang, array( 'GROUP_NAME' => 'Group name', 'IMAGE_LINK_SIZE' => 'Image link dimensions', - 'IMAGE_LINK_SIZE_EXPLAIN' => 'Display image attachment as link if image is larger than this, set to 0px by 0px to disable.', + 'IMAGE_LINK_SIZE_EXPLAIN' => 'Display image attachment as an inline text link if image is larger than this. To disable this behaviour, set the values to 0px by 0px.', 'IMAGICK_PATH' => 'Imagemagick path', 'IMAGICK_PATH_EXPLAIN' => 'Full path to the imagemagick convert application, e.g. <samp>/usr/bin/</samp>', @@ -102,7 +100,7 @@ $lang = array_merge($lang, array( 'MAX_ATTACHMENTS_PM' => 'Max attachments per message', 'MAX_EXTGROUP_FILESIZE' => 'Maximum filesize', 'MAX_IMAGE_SIZE' => 'Maximum image dimensions', - 'MAX_IMAGE_SIZE_EXPLAIN' => 'Maximum size of image attachments, 0px by 0px disables image attachments.', + 'MAX_IMAGE_SIZE_EXPLAIN' => 'Maximum size of image attachments. Set both values to 0px by 0px to disable dimension checking.', 'MAX_THUMB_WIDTH' => 'Maximum thumbnail width in pixel', 'MAX_THUMB_WIDTH_EXPLAIN' => 'A generated thumbnail will not exceed the width set here', 'MIN_THUMB_FILESIZE' => 'Minimum thumbnail filesize', @@ -121,30 +119,31 @@ $lang = array_merge($lang, array( 'NO_UPLOAD_DIR' => 'The upload directory you specified does not exist.', 'NO_WRITE_UPLOAD' => 'The upload directory you specified cannot be written to. Please alter the permissions to allow the webserver to write to it.', + 'ONLY_ALLOWED_IN_PM' => 'Only allowed in private messages', 'ORDER_ALLOW_DENY' => 'Allow', 'ORDER_DENY_ALLOW' => 'Deny', - 'REMOVE_ALLOWED_IPS' => 'Remove or un-exclude allowed IPs/hostnames', - 'REMOVE_DISALLOWED_IPS' => 'Remove or un-exclude disallowed IPs/hostnames', + 'REMOVE_ALLOWED_IPS' => 'Remove or un-exclude <em>allowed</em> IPs/hostnames', + 'REMOVE_DISALLOWED_IPS' => 'Remove or un-exclude <em>disallowed</em> IPs/hostnames', 'SEARCH_IMAGICK' => 'Search for Imagemagick', 'SECURE_ALLOW_DENY' => 'Allow/Deny list', - 'SECURE_ALLOW_DENY_EXPLAIN' => 'Allow or Deny the list of addresses, this setting only applies to downloading files', + 'SECURE_ALLOW_DENY_EXPLAIN' => 'Change the default behaviour when secure downloads are enabled of the Allow/Deny list to that of a <strong>whitelist</strong> (Allow) or a <strong>blacklist</strong> (Deny)', 'SECURE_DOWNLOADS' => 'Enable secure downloads', - 'SECURE_DOWNLOADS_EXPLAIN' => 'With this option enabled, downloads are limited to IP’s/hostnames you defined.', + 'SECURE_DOWNLOADS_EXPLAIN' => 'With this option enabled, downloads are limited to IP’s/hostnames you define.', 'SECURE_DOWNLOAD_NOTICE' => 'Secure Downloads are not enabled. The settings below will be applied after enabling secure downloads.', 'SECURE_DOWNLOAD_UPDATE_SUCCESS'=> 'The IP list has been updated successfully.', 'SECURE_EMPTY_REFERRER' => 'Allow empty referrer', - 'SECURE_EMPTY_REFERRER_EXPLAIN' => 'Secure downloads are based on referrers. Do you want to allow downloads for those ommitting the referrer?', + 'SECURE_EMPTY_REFERRER_EXPLAIN' => 'Secure downloads are based on referrers. Do you want to allow downloads for those omitting the referrer?', 'SETTINGS_CAT_IMAGES' => 'Image category settings', - 'SPECIAL_CATEGORY' => 'Special Category', - 'SPECIAL_CATEGORY_EXPLAIN' => 'Special Categories differ between the way presented within posts.', - 'SUCCESSFULLY_UPLOADED' => 'Succeessfully uploaded', + 'SPECIAL_CATEGORY' => 'Special category', + 'SPECIAL_CATEGORY_EXPLAIN' => 'Special categories differ between the way presented within posts.', + 'SUCCESSFULLY_UPLOADED' => 'Successfully uploaded', 'SUCCESS_EXTENSION_GROUP_ADD' => 'Extension group successfully added', 'SUCCESS_EXTENSION_GROUP_EDIT' => 'Extension group successfully updated', 'UPLOADING_FILES' => 'Uploading files', - 'UPLOADING_FILE_TO' => 'Uploading file “%1$s” to Post Number %2$d…', + 'UPLOADING_FILE_TO' => 'Uploading file “%1$s” to post number %2$d…', 'UPLOAD_DENIED_FORUM' => 'You do not have the permission to upload files to forum “%s”', 'UPLOAD_DIR' => 'Upload directory', 'UPLOAD_DIR_EXPLAIN' => 'Storage path for attachments.', diff --git a/phpBB/language/en/acp/ban.php b/phpBB/language/en/acp/ban.php index 278171ccdd..dd21ee8ad0 100644 --- a/phpBB/language/en/acp/ban.php +++ b/phpBB/language/en/acp/ban.php @@ -56,7 +56,7 @@ $lang = array_merge($lang, array( 'IP_BAN_EXPLAIN' => 'To specify several different IPs or hostnames enter each on a new line. To specify a range of IP addresses separate the start and end with a hyphen (-), to specify a wildcard use *', 'IP_HOSTNAME' => 'IP addresses or hostnames', 'IP_NO_BANNED' => 'No banned IP addresses', - 'IP_UNBAN' => 'Un-ban or Un-exclude IPs', + 'IP_UNBAN' => 'Un-ban or un-exclude IPs', 'IP_UNBAN_EXPLAIN' => 'You can unban (or un-exclude) multiple IP addresses in one go using the appropriate combination of mouse and keyboard for your computer and browser. Excluded IPs have a marked background.', 'PERMANENT' => 'Permanent', @@ -66,7 +66,7 @@ $lang = array_merge($lang, array( 'USER_BAN_EXCLUDE_EXPLAIN' => 'Enable this to exclude the entered users from all current bans.', 'USER_BAN_EXPLAIN' => 'You can ban multiple users in one go by entering each name on a new line. Use the <u>Find a member</u> facility to look up and add one or more users automatically.', 'USER_NO_BANNED' => 'No banned usernames', - 'USER_UNBAN' => 'Un-ban or Un-exclude usernames', + 'USER_UNBAN' => 'Un-ban or un-exclude usernames', 'USER_UNBAN_EXPLAIN' => 'You can unban (or un-exclude) multiple users in one go using the appropriate combination of mouse and keyboard for your computer and browser. Excluded users have a marked background.', )); diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index 481a77d576..865a68d60b 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -18,7 +18,9 @@ if (empty($lang) || !is_array($lang)) $lang = array(); } -// DEVELOPERS PLEASE NOTE +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. // // Placeholders can now contain order information, e.g. instead of // 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows @@ -33,21 +35,21 @@ $lang = array_merge($lang, array( 'ACP_BOARD_SETTINGS_EXPLAIN' => 'Here you can determine the basic operation of your board, from the site name through user registration to private messaging.', 'CUSTOM_DATEFORMAT' => 'Custom…', - 'DEFAULT_DATE_FORMAT' => 'Date Format', + 'DEFAULT_DATE_FORMAT' => 'Date format', 'DEFAULT_DATE_FORMAT_EXPLAIN' => 'The date format is the same as the PHP <code>date</code> function.', 'DEFAULT_LANGUAGE' => 'Default language', 'DEFAULT_STYLE' => 'Default style', 'DISABLE_BOARD' => 'Disable board', 'DISABLE_BOARD_EXPLAIN' => 'This will make the board unavailable to users. You can also enter a short (255 character) message to display if you wish.', 'OVERRIDE_STYLE' => 'Override user style', - 'OVERRIDE_STYLE_EXPLAIN' => 'Replaces users style with the default.', + 'OVERRIDE_STYLE_EXPLAIN' => 'Replaces user’s style with the default.', 'RELATIVE_DAYS' => 'Relative days', 'SITE_DESC' => 'Site description', 'SITE_NAME' => 'Site name', 'SYSTEM_DST' => 'Enable Daylight Savings Time', 'SYSTEM_TIMEZONE' => 'System timezone', 'WARNINGS_EXPIRE' => 'Warning duration', - 'WARNINGS_EXPIRE_EXPLAIN' => 'Number of days after it is issued before a warning will expire from a user’s record', + 'WARNINGS_EXPIRE_EXPLAIN' => 'Number of days that will elapse before the warning will automatically expire from a user’s record', )); // Board Features @@ -60,15 +62,15 @@ $lang = array_merge($lang, array( 'ALLOW_BBCODE' => 'Allow BBCode', 'ALLOW_FORUM_NOTIFY' => 'Allow forum watching', 'ALLOW_NAME_CHANGE' => 'Allow username changes', - 'ALLOW_NO_CENSORS' => 'Allow disable of censors', - 'ALLOW_NO_CENSORS_EXPLAIN' => 'User can disable word censoring.', + 'ALLOW_NO_CENSORS' => 'Allow disabling of word censoring', + 'ALLOW_NO_CENSORS_EXPLAIN' => 'Users can choose to disable the automatic word censoring of posts and private messages.', 'ALLOW_PM_ATTACHMENTS' => 'Allow attachments in private messages', 'ALLOW_SIG' => 'Allow signatures', 'ALLOW_SIG_BBCODE' => 'Allow BBCode in user signatures', 'ALLOW_SIG_FLASH' => 'Allow use of <code>[FLASH]</code> BBCode tag in user signatures', 'ALLOW_SIG_IMG' => 'Allow use of <code>[IMG]</code> BBCode tag in user signatures', 'ALLOW_SIG_LINKS' => 'Allow use of links in user signatures', - 'ALLOW_SIG_LINKS_EXPLAIN' => 'If disallowed the <code>[URL]</code> bbcode tag and automatic/magic URLs are disabled.', + 'ALLOW_SIG_LINKS_EXPLAIN' => 'If disallowed the <code>[URL]</code> BBCode tag and automatic/magic URLs are disabled.', 'ALLOW_SIG_SMILIES' => 'Allow use of smilies in user signatures', 'ALLOW_SMILIES' => 'Allow smilies', 'ALLOW_TOPIC_NOTIFY' => 'Allow topic watching', @@ -85,9 +87,9 @@ $lang = array_merge($lang, array( 'ALLOW_REMOTE_EXPLAIN' => 'Avatars linked to from another website', 'ALLOW_UPLOAD' => 'Enable avatar uploading', 'AVATAR_GALLERY_PATH' => 'Avatar gallery path', - 'AVATAR_GALLERY_PATH_EXPLAIN' => 'Path under your phpBB root dir for pre-loaded images, e.g. <samp>images/avatars/gallery</samp>', + 'AVATAR_GALLERY_PATH_EXPLAIN' => 'Path under your phpBB root directory for pre-loaded images, e.g. <samp>images/avatars/gallery</samp>', 'AVATAR_STORAGE_PATH' => 'Avatar storage path', - 'AVATAR_STORAGE_PATH_EXPLAIN' => 'Path under your phpBB root dir, e.g. <samp>images/avatars/upload</samp>', + 'AVATAR_STORAGE_PATH_EXPLAIN' => 'Path under your phpBB root directory, e.g. <samp>images/avatars/upload</samp>', 'MAX_AVATAR_SIZE' => 'Maximum avatar dimensions', 'MAX_AVATAR_SIZE_EXPLAIN' => '(Height x Width in pixels)', 'MAX_FILESIZE' => 'Maximum avatar file size', @@ -109,51 +111,52 @@ $lang = array_merge($lang, array( 'ALLOW_QUOTE_PM' => 'Allow quotes in private messages', 'ALLOW_SIG_PM' => 'Allow signature in private messages', 'ALLOW_SMILIES_PM' => 'Allow smilies in private messages', - 'BOXES_LIMIT' => 'Max private messages per box', - 'BOXES_LIMIT_EXPLAIN' => 'Users may receive no more than this many messages in each of their private message boxes or zero for unlimited messages.', - 'BOXES_MAX' => 'Max private message folders', + 'BOXES_LIMIT' => 'Maximum private messages per box', + 'BOXES_LIMIT_EXPLAIN' => 'Users may receive no more than this many messages in each of their private message boxes. Set this value to 0 to allow unlimited messages.', + 'BOXES_MAX' => 'Maximum private message folders', 'BOXES_MAX_EXPLAIN' => 'By default users may create this many personal folders for private messages.', 'ENABLE_PM_ICONS' => 'Enable use of topic icons in private messages', 'FULL_FOLDER_ACTION' => 'Full folder default action', - 'FULL_FOLDER_ACTION_EXPLAIN'=> 'Default Action to take if a user’s folder is full and if the users folder action set is not applicable. For the “sent messages” folder the default action is always deleting old messages.', + 'FULL_FOLDER_ACTION_EXPLAIN'=> 'Default action to take if a user’s folder is full assuming the user’s folder action, if set at all, is not applicable. The only exception is for the “Sent messages” folder where the default action is always to delete old messages.', 'HOLD_NEW_MESSAGES' => 'Hold new messages', 'PM_EDIT_TIME' => 'Limit editing time', - 'PM_EDIT_TIME_EXPLAIN' => 'Limits the time available to edit a private message not already delivered, zero equals infinity', + 'PM_EDIT_TIME_EXPLAIN' => 'Limits the time available to edit a private message not already delivered. Setting the value to 0 disables this behaviour.', )); // Post Settings $lang = array_merge($lang, array( 'ACP_POST_SETTINGS_EXPLAIN' => 'Here you can set all default settings for posting', 'ALLOW_POST_LINKS' => 'Allow links in posts/private messages', - 'ALLOW_POST_LINKS_EXPLAIN' => 'If disallowed the URL bbcode tag and automatic/magic urls are disabled.', + 'ALLOW_POST_LINKS_EXPLAIN' => 'If disallowed the <code>[URL]</code> BBCode tag and automatic/magic URLs are disabled.', - 'BUMP_INTERVAL' => 'Bump Interval', + 'BUMP_INTERVAL' => 'Bump interval', 'BUMP_INTERVAL_EXPLAIN' => 'Number of minutes, hours or days between the last post to a topic and the ability to bump this topic.', - 'CHAR_LIMIT' => 'Max characters per post', - 'CHAR_LIMIT_EXPLAIN' => 'Set to 0 for unlimited characters.', + 'CHAR_LIMIT' => 'Maximum characters per post', + 'CHAR_LIMIT_EXPLAIN' => 'The number of characters allowed within a post. Set to 0 for unlimited characters.', 'DISPLAY_LAST_EDITED' => 'Display last edited time information', 'DISPLAY_LAST_EDITED_EXPLAIN' => 'Choose if the last edited by information to be displayed on posts', 'EDIT_TIME' => 'Limit editing time', - 'EDIT_TIME_EXPLAIN' => 'Limits the time available to edit a new post, zero equals infinity', - 'FLOOD_INTERVAL' => 'Flood Interval', + 'EDIT_TIME_EXPLAIN' => 'Limits the time available to edit a new post. Setting the value to 0 disables this behaviour.', + 'FLOOD_INTERVAL' => 'Flood interval', 'FLOOD_INTERVAL_EXPLAIN' => 'Number of seconds a user must wait between posting new messages. To enable users to ignore this alter their permissions.', - 'HOT_THRESHOLD' => 'Posts for Popular Threshold, Set to 0 to disable hot topics.', - 'MAX_POLL_OPTIONS' => 'Max number of poll options', - 'MAX_POST_FONT_SIZE' => 'Max font size per post', - 'MAX_POST_FONT_SIZE_EXPLAIN' => 'Set to 0 for unlimited font size.', - 'MAX_POST_IMG_HEIGHT' => 'Max image height per post', + 'HOT_THRESHOLD' => 'Hot topic threshold', + 'HOT_THRESHOLD_EXPLAIN' => 'Posts per topic threshold required for the hot topic annotation. Set to 0 to disable hot topics.', + 'MAX_POLL_OPTIONS' => 'Maximum number of poll options', + 'MAX_POST_FONT_SIZE' => 'Maximum font size per post', + 'MAX_POST_FONT_SIZE_EXPLAIN' => 'Maximum font size allowed in a post. Set to 0 for unlimited font size.', + 'MAX_POST_IMG_HEIGHT' => 'Maximum image height per post', 'MAX_POST_IMG_HEIGHT_EXPLAIN' => 'Maximum height of an image/flash file in postings. Set to 0 for unlimited size.', - 'MAX_POST_IMG_WIDTH' => 'Max image width per post', + 'MAX_POST_IMG_WIDTH' => 'Maximum image width per post', 'MAX_POST_IMG_WIDTH_EXPLAIN' => 'Maximum width of an image/flash file in postings. Set to 0 for unlimited size.', - 'MAX_POST_URLS' => 'Max links per post', - 'MAX_POST_URLS_EXPLAIN' => 'Set to 0 for unlimited links.', + 'MAX_POST_URLS' => 'Maximum links per post', + 'MAX_POST_URLS_EXPLAIN' => 'Maximum number of URLs in a post. Set to 0 for unlimited links.', 'POSTING' => 'Posting', - 'POSTS_PER_PAGE' => 'Posts Per Page', - 'QUOTE_DEPTH_LIMIT' => 'Max nested quotes per post', - 'QUOTE_DEPTH_LIMIT_EXPLAIN' => 'Set to 0 for unlimited depth.', - 'SMILIES_LIMIT' => 'Max smilies per post', - 'SMILIES_LIMIT_EXPLAIN' => 'Set to 0 for unlimited smilies.', - 'TOPICS_PER_PAGE' => 'Topics Per Page', + 'POSTS_PER_PAGE' => 'Posts per page', + 'QUOTE_DEPTH_LIMIT' => 'Maximum nested quotes per post', + 'QUOTE_DEPTH_LIMIT_EXPLAIN' => 'Maximum number of nested quotes in a post. Set to 0 for unlimited depth.', + 'SMILIES_LIMIT' => 'Maximum smilies per post', + 'SMILIES_LIMIT_EXPLAIN' => 'Maximum number of smilies in a post. Set to 0 for unlimited smilies.', + 'TOPICS_PER_PAGE' => 'Topics per page', )); // Signature Settings @@ -163,13 +166,13 @@ $lang = array_merge($lang, array( 'MAX_SIG_FONT_SIZE' => 'Maximum signature font size', 'MAX_SIG_FONT_SIZE_EXPLAIN' => 'Maximum font size allowed in user signatures. Set to 0 for unlimited size.', 'MAX_SIG_IMG_HEIGHT' => 'Maximum signature image height', - 'MAX_SIG_IMG_HEIGHT_EXPLAIN' => 'Maximum height of an image/flash file in user signatures. Set to 0 for unlimited size.', + 'MAX_SIG_IMG_HEIGHT_EXPLAIN' => 'Maximum height of an image/flash file in user signatures. Set to 0 for unlimited height.', 'MAX_SIG_IMG_WIDTH' => 'Maximum signature image width', - 'MAX_SIG_IMG_WIDTH_EXPLAIN' => 'Maximum width of an image/flash file in user signatures. Set to 0 for unlimited size.', + 'MAX_SIG_IMG_WIDTH_EXPLAIN' => 'Maximum width of an image/flash file in user signatures. Set to 0 for unlimited width.', 'MAX_SIG_LENGTH' => 'Maximum signature length', 'MAX_SIG_LENGTH_EXPLAIN' => 'Maximum number of characters in user signatures.', 'MAX_SIG_SMILIES' => 'Maximum smilies per signature', - 'MAX_SIG_SMILIES_EXPLAIN' => 'Maximum smilies allowed in user signatures. Set to 0 for unlimited size.', + 'MAX_SIG_SMILIES_EXPLAIN' => 'Maximum smilies allowed in user signatures. Set to 0 for unlimited smilies.', 'MAX_SIG_URLS' => 'Maximum signature links', 'MAX_SIG_URLS_EXPLAIN' => 'Maximum number of links in user signatures. Set to 0 for unlimited links.', )); @@ -187,7 +190,7 @@ $lang = array_merge($lang, array( // 'ACC_USER_ADMIN' => 'User + Admin', 'ALLOW_EMAIL_REUSE' => 'Allow email address re-use', 'ALLOW_EMAIL_REUSE_EXPLAIN' => 'Different users can register with the same email address.', - 'COPPA' => 'Coppa', + 'COPPA' => 'COPPA', 'COPPA_FAX' => 'COPPA fax number', 'COPPA_MAIL' => 'COPPA mailing address', 'COPPA_MAIL_EXPLAIN' => 'This is the mailing address where parents will send COPPA registration forms', @@ -202,6 +205,9 @@ $lang = array_merge($lang, array( 'REG_LIMIT_EXPLAIN' => 'Number of attempts users can make at the confirmation code before being locked out that session.', 'USERNAME_ALPHA_ONLY' => 'Alphanumeric only', 'USERNAME_ALPHA_SPACERS' => 'Alphanumeric and spacers', + 'USERNAME_ASCII' => 'ASCII (no international unicode)', + 'USERNAME_LETTER_NUM' => 'Any letter and number', + 'USERNAME_LETTER_NUM_SPACERS' => 'Any letter, number, and spacer', 'USERNAME_CHARS' => 'Limit username chars', 'USERNAME_CHARS_ANY' => 'Any character', 'USERNAME_CHARS_EXPLAIN' => 'Restrict type of characters that may be used in usernames, spacers are; space, -, +, _, [ and ]', @@ -214,7 +220,7 @@ $lang = array_merge($lang, array( 'ACP_VC_SETTINGS_EXPLAIN' => 'Here you are able to define visual confirmation defaults and captcha settings.', 'CAPTCHA_GD' => 'GD CAPTCHA', - 'CAPTCHA_GD_NOISE' => 'GD CAPTCHA Noise', + 'CAPTCHA_GD_NOISE' => 'GD CAPTCHA noise', 'CAPTCHA_GD_EXPLAIN' => 'Use GD to make a more advanced CAPTCHA', 'CAPTCHA_GD_NOISE_EXPLAIN' => 'Use noise to make the GD based CAPTCHA harder', 'VISUAL_CONFIRM_POST' => 'Enable visual confirmation for guest postings', @@ -233,7 +239,7 @@ $lang = array_merge($lang, array( 'COOKIE_SECURE' => 'Cookie secure', 'COOKIE_SECURE_EXPLAIN' => 'If your server is running via SSL set this to enabled else leave as disabled. Having this enabled and not running via SSL will result in server errors during redirects.', 'ONLINE_LENGTH' => 'View online time span', - 'ONLINE_LENGTH_EXPLAIN' => 'Time in minutes after which inactive users will not appear in viewonline listings, lower equals less processing.', + 'ONLINE_LENGTH_EXPLAIN' => 'Number of minutes after which inactive users will not appear in “Who is online” listings. The higher this value the greater is the processing required to generate the listing.', 'SESSION_LENGTH' => 'Session length', 'SESSION_LENGTH_EXPLAIN' => 'Sessions will expire after this time, in seconds.', )); @@ -244,26 +250,26 @@ $lang = array_merge($lang, array( 'CUSTOM_PROFILE_FIELDS' => 'Custom profile fields', 'LIMIT_LOAD' => 'Limit system load', - 'LIMIT_LOAD_EXPLAIN' => 'If the 1 minute system load exceeds this value the board will go offline, 1.0 equals ~100% utilisation of one processor. This only functions on UNIX based servers.', + 'LIMIT_LOAD_EXPLAIN' => 'If the system’s 1-minute load average exceeds this value the board will automatically go offline. A value of 1.0 equals ~100% utilisation of one processor. This only functions on UNIX based servers.', 'LIMIT_SESSIONS' => 'Limit sessions', 'LIMIT_SESSIONS_EXPLAIN' => 'If the number of sessions exceeds this value within a one minute period the board will go offline. Set to 0 for unlimited sessions.', - 'LOAD_CPF_MEMBERLIST' => 'Display custom profile fields in memberlist', + 'LOAD_CPF_MEMBERLIST' => 'Allow styles to display custom profile fields in memberlist', 'LOAD_CPF_VIEWPROFILE' => 'Display custom profile fields in user profiles', 'LOAD_CPF_VIEWTOPIC' => 'Display custom profile fields on viewtopic', - 'LOAD_USER_ACTIVITY' => 'Show users activity', + 'LOAD_USER_ACTIVITY' => 'Show user’s activity', 'LOAD_USER_ACTIVITY_EXPLAIN' => 'Displays active topic/forum in user profiles and user control panel. It is recommended to disable this on boards with more than one million posts.', 'RECOMPILE_TEMPLATES' => 'Recompile stale templates', 'RECOMPILE_TEMPLATES_EXPLAIN' => 'Check for updated template files on filesystem and recompile.', 'YES_ANON_READ_MARKING' => 'Enable topic marking for guests', 'YES_ANON_READ_MARKING_EXPLAIN' => 'Stores read/unread status information for guests. If disabled posts are always read for guests.', 'YES_BIRTHDAYS' => 'Enable birthday listing', - 'YES_JUMPBOX' => 'Enable display of Jumpbox', - 'YES_MODERATORS' => 'Enable display of Moderators', + 'YES_JUMPBOX' => 'Enable display of jumpbox', + 'YES_MODERATORS' => 'Enable display of moderators', 'YES_ONLINE' => 'Enable online user listings', 'YES_ONLINE_EXPLAIN' => 'Display online user information on index, forum and topic pages.', 'YES_ONLINE_GUESTS' => 'Enable online guest listings in viewonline', 'YES_ONLINE_GUESTS_EXPLAIN' => 'Allow display of guest user information in viewonline.', - 'YES_ONLINE_TRACK' => 'Enable display of user online img', + 'YES_ONLINE_TRACK' => 'Enable display of user online/offline information', 'YES_ONLINE_TRACK_EXPLAIN' => 'Display online information for user in profiles and viewtopic.', 'YES_POST_MARKING' => 'Enable dotted topics', 'YES_POST_MARKING_EXPLAIN' => 'Indicates whether user has posted to a topic.', @@ -279,43 +285,48 @@ $lang = array_merge($lang, array( 'APACHE_SETUP_BEFORE_USE' => 'You have to setup apache authentication before you switch phpBB to this authentication method. Keep in mind that the username you use for apache authentication has to be the same as your phpBB username.', - 'LDAP_DN' => 'LDAP base <var>dn</var>', - 'LDAP_DN_EXPLAIN' => 'This is the Distinguished Name, locating the user information, e.g. <samp>o=My Company,c=US</samp>', - 'LDAP_EMAIL' => 'LDAP email attribute', - 'LDAP_EMAIL_EXPLAIN' => 'Set this to the name of your user entry email attribute (if one exists) in order to automatically set the email address for new users. Leaving this empty results in empty email address for users who log in for the first time.', - 'LDAP_NO_EMAIL' => 'The specified email attribute does not exist.', - 'LDAP_NO_IDENTITY' => 'Could not find a login identity for %s', - 'LDAP_SERVER' => 'LDAP server name', - 'LDAP_SERVER_EXPLAIN' => 'If using LDAP this is the name or IP address of the server.', - 'LDAP_UID' => 'LDAP <var>uid</var>', - 'LDAP_UID_EXPLAIN' => 'This is the key under which to search for a given login identity, e.g. <var>uid</var>, <var>sn</var>, etc.', + 'LDAP_DN' => 'LDAP base <var>dn</var>', + 'LDAP_DN_EXPLAIN' => 'This is the Distinguished Name, locating the user information, e.g. <samp>o=My Company,c=US</samp>', + 'LDAP_EMAIL' => 'LDAP email attribute', + 'LDAP_EMAIL_EXPLAIN' => 'Set this to the name of your user entry email attribute (if one exists) in order to automatically set the email address for new users. Leaving this empty results in empty email address for users who log in for the first time.', + 'LDAP_INCORRECT_USER_PASSWORD' => 'Binding to LDAP server failed with specified user/password.', + 'LDAP_NO_EMAIL' => 'The specified email attribute does not exist.', + 'LDAP_NO_IDENTITY' => 'Could not find a login identity for %s', + 'LDAP_PASSWORD' => 'LDAP password', + 'LDAP_PASSWORD_EXPLAIN' => 'Leave blank to use anonymous access. Else fill in the password for the above user. <strong>WARNING:</strong> This password will be stored as plain text in the database visible to everybody who can access your database.', + 'LDAP_SERVER' => 'LDAP server name', + 'LDAP_SERVER_EXPLAIN' => 'If using LDAP this is the name or IP address of the server.', + 'LDAP_UID' => 'LDAP <var>uid</var>', + 'LDAP_UID_EXPLAIN' => 'This is the key under which to search for a given login identity, e.g. <var>uid</var>, <var>sn</var>, etc.', + 'LDAP_USER' => 'LDAP user', + 'LDAP_USER_EXPLAIN' => 'Leave blank to use anonymous access. If filled in phpBB will connect to the LDAP server as the specified user.', )); // Server Settings $lang = array_merge($lang, array( 'ACP_SERVER_SETTINGS_EXPLAIN' => 'Here you define server and domain dependant settings. Please ensure the data you enter is accurate, errors will result in emails containing incorrect information. When entering the domain name remember it does include http:// or other protocol term. Only alter the port number if you know your server uses a different value, port 80 is correct in most cases.', - 'ENABLE_GZIP' => 'Enable GZip Compression', + 'ENABLE_GZIP' => 'Enable GZip compression', 'FORCE_SERVER_VARS' => 'Force server URL settings', 'FORCE_SERVER_VARS_EXPLAIN' => 'If set to yes the server settings defined here will be used in favour of the automatically determined values', 'ICONS_PATH' => 'Post icons storage path', - 'ICONS_PATH_EXPLAIN' => 'Path under your phpBB root dir, e.g. <samp>images/icons</samp>', + 'ICONS_PATH_EXPLAIN' => 'Path under your phpBB root directory, e.g. <samp>images/icons</samp>', 'PATH_SETTINGS' => 'Path settings', 'RANKS_PATH' => 'Rank image storage path', - 'RANKS_PATH_EXPLAIN' => 'Path under your phpBB root dir, e.g. <samp>images/ranks</samp>', - 'SEND_ENCODING' => 'Send encoding', - 'SEND_ENCODING_EXPLAIN' => 'Send the file encoding from phpBB via HTTP overriding the webserver configuration', + 'RANKS_PATH_EXPLAIN' => 'Path under your phpBB root directory, e.g. <samp>images/ranks</samp>', + 'SCRIPT_PATH' => 'Script path', + 'SCRIPT_PATH_EXPLAIN' => 'The path where phpBB is located relative to the domain name, e.g. <samp>/phpBB3</samp>', 'SERVER_NAME' => 'Domain name', 'SERVER_NAME_EXPLAIN' => 'The domain name this board runs from (for example: <samp>www.foo.bar</samp>)', - 'SERVER_PORT' => 'Server Port', + 'SERVER_PORT' => 'Server port', 'SERVER_PORT_EXPLAIN' => 'The port your server is running on, usually 80, only change if different', 'SERVER_PROTOCOL' => 'Server protocol', 'SERVER_PROTOCOL_EXPLAIN' => 'This is used as the server protocol if these settings are forced. If empty or not forced the protocol is determined by the cookie secure settings (<samp>http://</samp> or <samp>https://</samp>)', 'SERVER_URL_SETTINGS' => 'Server URL settings', 'SMILIES_PATH' => 'Smilies storage path', - 'SMILIES_PATH_EXPLAIN' => 'Path under your phpBB root dir, e.g. <samp>images/smilies</samp>', + 'SMILIES_PATH_EXPLAIN' => 'Path under your phpBB root directory, e.g. <samp>images/smilies</samp>', 'UPLOAD_ICONS_PATH' => 'Extension group icons storage path', - 'UPLOAD_ICONS_PATH_EXPLAIN' => 'Path under your phpBB root dir, e.g. <samp>images/upload_icons</samp>', + 'UPLOAD_ICONS_PATH_EXPLAIN' => 'Path under your phpBB root directory, e.g. <samp>images/upload_icons</samp>', )); // Security Settings @@ -330,13 +341,15 @@ $lang = array_merge($lang, array( 'BROWSER_VALID' => 'Validate browser', 'BROWSER_VALID_EXPLAIN' => 'Enables browser validation for each session improving security.', 'CHECK_DNSBL' => 'Check IP against DNS Blackhole List', - 'CHECK_DNSBL_EXPLAIN' => 'If enabled the IP is checked against the following DNSBL services on registration and posting: <a href="http://spamcop.net">spamcop.net</a>, <a href="http://dsbl.org">dsbl.org</a> and <a href="http://spamhaus.org">spamhaus.org</a>. This lookup may take a bit, depending on the servers configuration. If slowdowns are experienced or too much false positives reported it is recommended to disable this check.', + 'CHECK_DNSBL_EXPLAIN' => 'If enabled the user’s IP address is checked against the following DNSBL services on registration and posting: <a href="http://spamcop.net">spamcop.net</a>, <a href="http://dsbl.org">dsbl.org</a> and <a href="http://spamhaus.org">spamhaus.org</a>. This lookup may take a while, depending on the server’s configuration. If slowdowns are experienced or too many false positives reported it is recommended to disable this check.', 'CLASS_B' => 'A.B', 'CLASS_C' => 'A.B.C', - 'EMAIL_CHECK_MX' => 'Check email domain for valid MX Record', + 'EMAIL_CHECK_MX' => 'Check email domain for valid MX record', 'EMAIL_CHECK_MX_EXPLAIN' => 'If enabled, the email domain provided on registration and profile changes is checked for a valid MX record.', 'FORCE_PASS_CHANGE' => 'Force password change', - 'FORCE_PASS_CHANGE_EXPLAIN' => 'Require user to change their password after a set number of days or zero to disable.', + 'FORCE_PASS_CHANGE_EXPLAIN' => 'Require user to change their password after a set number of days. Set this value to 0 disables this behaviour.', + 'FORWARDED_FOR_VALID' => 'Validated <var>X_FORWARDED_FOR</var> header', + 'FORWARDED_FOR_VALID_EXPLAIN' => 'Sessions will only be continued if the sent <var>X_FORWARDED_FOR</var> header equals the one sent with the previous request. Bans will be checked against IPs in <var>X_FORWARDED_FOR</var> too.', 'IP_VALID' => 'Session IP validation', 'IP_VALID_EXPLAIN' => 'Determines how much of the users IP is used to validate a session; <samp>All</samp> compares the complete address, <samp>A.B.C</samp> the first x.x.x, <samp>A.B</samp> the first x.x, <samp>None</samp> disables checking.', 'MAX_LOGIN_ATTEMPTS' => 'Maximum number of login attempts', @@ -357,13 +370,13 @@ $lang = array_merge($lang, array( 'ACP_EMAIL_SETTINGS_EXPLAIN' => 'This information is used when the board sends emails to your users. Please ensure the email address you specify is valid, any bounced or undeliverable messages will likely be sent to that address. If your host does not provide a native (PHP based) email service you can instead send messages directly using SMTP. This requires the address of an appropriate server (ask your provider if necessary), do not specify any old name here! If the server requires authentication (and only if it does) enter the necessary username and password. Please note only basic authentication is offered, different authentication implementations are not currently supported.', 'ADMIN_EMAIL' => 'Return email address', - 'ADMIN_EMAIL_EXPLAIN' => 'This will be used as the return address on all emails.', + 'ADMIN_EMAIL_EXPLAIN' => 'This will be used as the return address on all emails, the technical contact email address. It will always be used as the <samp>Return-Path</samp> and <samp>Sender</samp> address in emails.', 'BOARD_EMAIL_FORM' => 'Users send email via board', 'BOARD_EMAIL_FORM_EXPLAIN' => 'Instead of showing the users email address users are able to send emails via the board.', 'BOARD_HIDE_EMAILS' => 'Hide email addresses', 'BOARD_HIDE_EMAILS_EXPLAIN' => 'This function keeps email addresses completely private.', 'CONTACT_EMAIL' => 'Contact email address', - 'CONTACT_EMAIL_EXPLAIN' => 'This address will be used whenever a specific contact point is needed, e.g. spam, error output, etc.', + 'CONTACT_EMAIL_EXPLAIN' => 'This address will be used whenever a specific contact point is needed, e.g. spam, error output, etc. It will always be used as the <samp>From</samp> and <samp>Reply-To</samp> address in emails.', 'EMAIL_FUNCTION_NAME' => 'Email function name', 'EMAIL_FUNCTION_NAME_EXPLAIN' => 'The email function used to send mails through PHP.', 'EMAIL_PACKAGE_SIZE' => 'Email package size', @@ -377,17 +390,17 @@ $lang = array_merge($lang, array( 'SMTP_CRAM_MD5' => 'CRAM-MD5', 'SMTP_DIGEST_MD5' => 'DIGEST-MD5', 'SMTP_LOGIN' => 'LOGIN', - 'SMTP_PASSWORD' => 'SMTP Password', + 'SMTP_PASSWORD' => 'SMTP password', 'SMTP_PASSWORD_EXPLAIN' => 'Only enter a password if your SMTP server requires it.', 'SMTP_PLAIN' => 'PLAIN', 'SMTP_POP_BEFORE_SMTP' => 'POP-BEFORE-SMTP', - 'SMTP_PORT' => 'SMTP Server Port', + 'SMTP_PORT' => 'SMTP server port', 'SMTP_PORT_EXPLAIN' => 'Only change this if you know your SMTP server is on a different port.', - 'SMTP_SERVER' => 'SMTP Server Address', - 'SMTP_SETTINGS' => 'SMTP Settings', - 'SMTP_USERNAME' => 'SMTP Username', - 'SMTP_USERNAME_EXPLAIN' => 'Only enter a username if your SMTP server requires it.', - 'USE_SMTP' => 'Use SMTP Server for email', + 'SMTP_SERVER' => 'SMTP server address', + 'SMTP_SETTINGS' => 'SMTP settings', + 'SMTP_USERNAME' => 'SMTP username', + 'SMTP_USERNAME_EXPLAIN' => 'Only enter a username if your SMTP server requires it.', + 'USE_SMTP' => 'Use SMTP server for email', 'USE_SMTP_EXPLAIN' => 'Select “Yes” if you want or have to send email via a named server instead of the local mail function.', )); @@ -399,14 +412,14 @@ $lang = array_merge($lang, array( 'ERR_JAB_CONNECT' => 'Could not connect to Jabber server.', 'ERR_JAB_PASSCHG' => 'Could not change password.', 'ERR_JAB_PASSFAIL' => 'Password update failed, %s.', - 'ERR_JAB_REGISTER' => 'An error occured trying to register this account, %s.', + 'ERR_JAB_REGISTER' => 'An error occurred trying to register this account, %s.', 'ERR_JAB_USERNAME' => 'The username specified already exists, please choose an alternative.', 'JAB_CHANGED' => 'Jabber account changed successfully.', 'JAB_ENABLE' => 'Enable Jabber', 'JAB_ENABLE_EXPLAIN' => 'Enables use of jabber messaging and notifications', 'JAB_PACKAGE_SIZE' => 'Jabber package size', - 'JAB_PACKAGE_SIZE_EXPLAIN' => 'This is the number of messages sent in one package. If set to 0 the message is sent immediatly and gets not queued for later sending.', + 'JAB_PACKAGE_SIZE_EXPLAIN' => 'This is the number of messages sent in one package. If set to 0 the message is sent immediately and is not queued for later sending.', 'JAB_PASSWORD' => 'Jabber password', 'JAB_PASS_CHANGED' => 'Jabber password changed successfully.', 'JAB_PORT' => 'Jabber port', diff --git a/phpBB/language/en/acp/bots.php b/phpBB/language/en/acp/bots.php index dda1dcf73f..d06a90d363 100644 --- a/phpBB/language/en/acp/bots.php +++ b/phpBB/language/en/acp/bots.php @@ -18,7 +18,9 @@ if (empty($lang) || !is_array($lang)) $lang = array(); } -// DEVELOPERS PLEASE NOTE +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. // // Placeholders can now contain order information, e.g. instead of // 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows @@ -46,7 +48,7 @@ $lang = array_merge($lang, array( 'BOT_LANG_EXPLAIN' => 'The language presented to the bot as it browses.', 'BOT_LAST_VISIT' => 'Last visit', 'BOT_IP' => 'Bot IP address', - 'BOT_IP_EXPLAIN' => 'Partial matches are allowed, seperate addresses with a comma.', + 'BOT_IP_EXPLAIN' => 'Partial matches are allowed, separate addresses with a comma.', 'BOT_NAME' => 'Bot name', 'BOT_NAME_EXPLAIN' => 'Used only for your own information.', 'BOT_NEVER' => 'Never', diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 76db47b1eb..a35e239a81 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -20,6 +20,8 @@ if (empty($lang) || !is_array($lang)) // DEVELOPERS PLEASE NOTE // +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// // Placeholders can now contain order information, e.g. instead of // 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows // translators to re-order the output of data while ensuring it remains correct @@ -64,7 +66,7 @@ $lang = array_merge($lang, array( 'ACP_CAT_POSTING' => 'Posting', 'ACP_CAT_STYLES' => 'Styles', 'ACP_CAT_SYSTEM' => 'System', - 'ACP_CAT_USERGROUP' => 'Users and groups', + 'ACP_CAT_USERGROUP' => 'Users and Groups', 'ACP_CAT_USERS' => 'Users', 'ACP_CLIENT_COMMUNICATION' => 'Client communication', 'ACP_COOKIE_SETTINGS' => 'Cookie settings', @@ -90,16 +92,16 @@ $lang = array_merge($lang, array( 'ACP_GLOBAL_MODERATORS' => 'Global moderators', 'ACP_GLOBAL_PERMISSIONS' => 'Global permissions', 'ACP_GROUPS' => 'Groups', - 'ACP_GROUPS_FORUM_PERMISSIONS' => 'Groups forum permissions', + 'ACP_GROUPS_FORUM_PERMISSIONS' => 'Groups’ forum permissions', 'ACP_GROUPS_MANAGE' => 'Manage groups', 'ACP_GROUPS_MANAGEMENT' => 'Group management', - 'ACP_GROUPS_PERMISSIONS' => 'Groups permissions', + 'ACP_GROUPS_PERMISSIONS' => 'Groups’ permissions', 'ACP_ICONS' => 'Topic icons', 'ACP_ICONS_SMILIES' => 'Topic icons/smilies', 'ACP_IMAGESETS' => 'Imagesets', 'ACP_INACTIVE_USERS' => 'Inactive users', - 'ACP_INDEX' => 'Admin index', + 'ACP_INDEX' => 'ACP index', 'ACP_JABBER_SETTINGS' => 'Jabber settings', @@ -108,7 +110,7 @@ $lang = array_merge($lang, array( 'ACP_LOAD_SETTINGS' => 'Load settings', 'ACP_LOGGING' => 'Logging', - 'ACP_MAIN' => 'Admin index', + 'ACP_MAIN' => 'ACP index', 'ACP_MANAGE_EXTENSIONS' => 'Manage extensions', 'ACP_MANAGE_FORUMS' => 'Manage forums', 'ACP_MANAGE_RANKS' => 'Manage ranks', @@ -137,7 +139,7 @@ $lang = array_merge($lang, array( 'ACP_QUICK_ACCESS' => 'Quick access', 'ACP_RANKS' => 'Ranks', - 'ACP_REASONS' => 'Report/Denial reasons', + 'ACP_REASONS' => 'Report/denial reasons', 'ACP_REGISTER_SETTINGS' => 'User registration settings', 'ACP_RESTORE' => 'Restore', @@ -160,9 +162,9 @@ $lang = array_merge($lang, array( 'ACP_THEMES' => 'Themes', 'ACP_UPDATE' => 'Updating', - 'ACP_USERS_FORUM_PERMISSIONS' => 'Users forum permissions', + 'ACP_USERS_FORUM_PERMISSIONS' => 'Users’ forum permissions', 'ACP_USERS_LOGS' => 'User logs', - 'ACP_USERS_PERMISSIONS' => 'Users permissions', + 'ACP_USERS_PERMISSIONS' => 'Users’ permissions', 'ACP_USER_ATTACH' => 'Attachments', 'ACP_USER_AVATAR' => 'Avatar', 'ACP_USER_FEEDBACK' => 'Feedback', @@ -183,7 +185,7 @@ $lang = array_merge($lang, array( 'ACP_VIEW_ADMIN_PERMISSIONS' => 'View administrative permissions', 'ACP_VIEW_FORUM_MOD_PERMISSIONS' => 'View forum moderation permissions', 'ACP_VIEW_FORUM_PERMISSIONS' => 'View forum-based permissions', - 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS' => 'View global moderatoration permissions', + 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS' => 'View global moderation permissions', 'ACP_VIEW_USER_PERMISSIONS' => 'View user-based permissions', 'ACP_WORDS' => 'Word censoring', @@ -200,7 +202,6 @@ $lang = array_merge($lang, array( 'COLOUR_SWATCH' => 'Web-safe colour swatch', 'CONFIG_UPDATED' => 'Configuration updated successfully.', - 'CONFIRM_OPERATION' => 'Are you sure you wish to carry out this operation?', 'DEACTIVATE' => 'Deactivate', 'DIMENSIONS' => 'Dimensions', @@ -218,8 +219,6 @@ $lang = array_merge($lang, array( 'EXPORT_DOWNLOAD' => 'Download', 'EXPORT_STORE' => 'Store', - 'FORUM_INDEX' => 'Forum index', - 'GENERAL_OPTIONS' => 'General options', 'GENERAL_SETTINGS' => 'General settings', 'GLOBAL_MASK' => 'Global permission mask', @@ -248,21 +247,21 @@ $lang = array_merge($lang, array( 'PARSE_BBCODE' => 'Parse BBCode', 'PARSE_SMILIES' => 'Parse smilies', 'PARSE_URLS' => 'Parse links', - 'PERMISSIONS_TRANSFERED' => 'Permissions transfered', - 'PERMISSIONS_TRANSFERED_EXPLAIN' => 'You are currently having the permissions from %1$s. You are able to browse the forum with the users permissions but not access the administration control panel since admin permissions were not transfered. You are able to <a href="%2$s"><strong>revert to your permission set</strong></a> at any time.', + 'PERMISSIONS_TRANSFERRED' => 'Permissions transferred', + 'PERMISSIONS_TRANSFERRED_EXPLAIN' => 'You are currently having the permissions from %1$s. You are able to browse the forum with the users permissions but not access the administration control panel since admin permissions were not transferred. You are able to <a href="%2$s"><strong>revert to your permission set</strong></a> at any time.', 'PIXEL' => 'px', 'PROCEED_TO_ACP' => '%sProceed to the ACP%s', 'REMIND' => 'Remind', 'REORDER' => 'Reorder', - 'RESYNC' => 'Resyncronise', + 'RESYNC' => 'Resynchronise', 'RETURN_TO' => 'Return to…', - 'SELECT_ANONYMOUS' => 'Select Anonymous User', + 'SELECT_ANONYMOUS' => 'Select anonymous user', 'SELECT_OPTION' => 'Select option', 'UCP' => 'User Control Panel', - 'USERNAMES_EXPLAIN' => 'Place each username on a seperate line', + 'USERNAMES_EXPLAIN' => 'Place each username on a separate line', 'USER_CONTROL_PANEL' => 'User Control Panel', 'WARNING' => 'Warning', @@ -270,7 +269,9 @@ $lang = array_merge($lang, array( // PHP info $lang = array_merge($lang, array( - 'ACP_PHP_INFO_EXPLAIN' => 'This page lists information on the version of PHP installed on this server. It includes details of loaded modules, available variables and default settings. This information may be useful when diagnosing problems. Please be aware that some hosting companies will limit what information is displayed here for security reasons. You are advised to not give out any details on this page except when asked by support or other Team Member on the support forums.', + 'ACP_PHP_INFO_EXPLAIN' => 'This page lists information on the version of PHP installed on this server. It includes details of loaded modules, available variables and default settings. This information may be useful when diagnosing problems. Please be aware that some hosting companies will limit what information is displayed here for security reasons. You are advised to not give out any details on this page except when asked by <a href="http://www.phpbb.com/about/">official team members</a> on the support forums.', + + 'NO_PHPINFO_AVAILABLE' => 'The PHP informations are unable to be determined. Phpinfo() has been disabled for security reasons.', )); // Logs @@ -318,9 +319,9 @@ $lang = array_merge($lang, array( 'RESET_DATE' => 'Reset date', 'RESET_ONLINE' => 'Reset online', - 'RESYNC_POSTCOUNTS' => 'Resyncronise post counts', - 'RESYNC_POST_MARKING' => 'Resyncronise dotted topics', - 'RESYNC_STATS' => 'Resyncronise statistics', + 'RESYNC_POSTCOUNTS' => 'Resynchronise post counts', + 'RESYNC_POST_MARKING' => 'Resynchronise dotted topics', + 'RESYNC_STATS' => 'Resynchronise statistics', 'STATISTIC' => 'Statistic', @@ -345,8 +346,8 @@ $lang = array_merge($lang, array( 'INACTIVE_REASON_REGISTER' => 'Newly registered account', 'INACTIVE_REASON_REMIND' => 'Forced user account reactivation', 'INACTIVE_REASON_UNKNOWN' => 'Unknown', - 'INACTIVE_USERS' => 'Inactive Users', - 'INACTIVE_USERS_EXPLAIN' => 'This is a list of users who have registered but whos accounts are inactive. You can activate, delete or remind (by sending an email) these users if you wish.', + 'INACTIVE_USERS' => 'Inactive users', + 'INACTIVE_USERS_EXPLAIN' => 'This is a list of users who have registered but whose accounts are inactive. You can activate, delete or remind (by sending an email) these users if you wish.', 'INACTIVE_USERS_EXPLAIN_INDEX' => 'This is a list of the last 10 registered users who have inactive accounts. A full list is available from the appropriate menu item or by following the link below from where you can activate, delete or remind (by sending an email) these users if you wish.', 'NO_INACTIVE_USERS' => 'No inactive users', @@ -365,8 +366,8 @@ $lang = array_merge($lang, array( 'LOG_ACL_ADD_GROUP_GLOBAL_U_' => '<strong>Added or edited groups user permissions</strong><br />» %s', 'LOG_ACL_ADD_USER_GLOBAL_M_' => '<strong>Added or edited users global moderator permissions</strong><br />» %s', 'LOG_ACL_ADD_GROUP_GLOBAL_M_' => '<strong>Added or edited groups global moderator permissions</strong><br />» %s', - 'LOG_ACL_ADD_USER_GLOBAL_A_' => '<strong>Added or edited users admin permissions</strong><br />» %s', - 'LOG_ACL_ADD_GROUP_GLOBAL_A_' => '<strong>Added or edited groups admin permissions</strong><br />» %s', + 'LOG_ACL_ADD_USER_GLOBAL_A_' => '<strong>Added or edited users administrator permissions</strong><br />» %s', + 'LOG_ACL_ADD_GROUP_GLOBAL_A_' => '<strong>Added or edited groups administrator permissions</strong><br />» %s', 'LOG_ACL_ADD_ADMIN_GLOBAL_A_' => '<strong>Added or edited Administrators</strong><br />» %s', 'LOG_ACL_ADD_MOD_GLOBAL_M_' => '<strong>Added or edited Global Moderators</strong><br />» %s', @@ -377,14 +378,14 @@ $lang = array_merge($lang, array( 'LOG_ACL_ADD_GROUP_LOCAL_M_' => '<strong>Added or edited groups forum moderator access</strong> from %1$s<br />» %2$s', 'LOG_ACL_ADD_MOD_LOCAL_M_' => '<strong>Added or edited Moderators</strong> from %1$s<br />» %2$s', - 'LOG_ACL_ADD_FORUM_LOCAL_F_' => '<strong>Added or edited Forum Permissions</strong> from %1$s<br />» %2$s', + 'LOG_ACL_ADD_FORUM_LOCAL_F_' => '<strong>Added or edited forum permissions</strong> from %1$s<br />» %2$s', 'LOG_ACL_DEL_ADMIN_GLOBAL_A_' => '<strong>Removed Administrators</strong><br />» %s', 'LOG_ACL_DEL_MOD_GLOBAL_M_' => '<strong>Removed Global Moderators</strong><br />» %s', 'LOG_ACL_DEL_MOD_LOCAL_M_' => '<strong>Removed Moderators</strong> from %1$s<br />» %2$s', - 'LOG_ACL_DEL_FORUM_LOCAL_F_' => '<strong>Removed User/Group Forum Permissions</strong> from %1$s<br />» %2$s', + 'LOG_ACL_DEL_FORUM_LOCAL_F_' => '<strong>Removed User/Group forum permissions</strong> from %1$s<br />» %2$s', - 'LOG_ACL_TRANSFER_PERMISSIONS' => '<strong>Permissions transfered from</strong><br />» %s', + 'LOG_ACL_TRANSFER_PERMISSIONS' => '<strong>Permissions transferred from</strong><br />» %s', 'LOG_ACL_RESTORE_PERMISSIONS' => '<strong>Own permissions restored after using permissions from</strong><br />» %s', 'LOG_ADMIN_AUTH_FAIL' => '<strong>Failed administration login attempt</strong>', @@ -402,11 +403,11 @@ $lang = array_merge($lang, array( 'LOG_BAN_EXCLUDE_USER' => '<strong>Excluded user from ban</strong> for reason "<em>%1$s</em>"<br />» %2$s ', 'LOG_BAN_EXCLUDE_IP' => '<strong>Excluded IP from ban</strong> for reason "<em>%1$s</em>"<br />» %2$s ', 'LOG_BAN_EXCLUDE_EMAIL' => '<strong>Excluded email from ban</strong> for reason "<em>%1$s</em>"<br />» %2$s ', - 'LOG_BAN_USER' => '<strong>Banned User</strong> for reason "<em>%1$s</em>"<br />» %2$s ', + 'LOG_BAN_USER' => '<strong>Banned user</strong> for reason "<em>%1$s</em>"<br />» %2$s ', 'LOG_BAN_IP' => '<strong>Banned IP</strong> for reason "<em>%1$s</em>"<br />» %2$s', 'LOG_BAN_EMAIL' => '<strong>Banned email</strong> for reason "<em>%1$s</em>"<br />» %2$s', 'LOG_UNBAN_USER' => '<strong>Unbanned user</strong><br />» %s', - 'LOG_UNBAN_IP' => '<strong>Unbanned ip</strong><br />» %s', + 'LOG_UNBAN_IP' => '<strong>Unbanned IP</strong><br />» %s', 'LOG_UNBAN_EMAIL' => '<strong>Unbanned email</strong><br />» %s', 'LOG_BBCODE_ADD' => '<strong>Added new BBCode</strong><br />» %s', @@ -447,8 +448,11 @@ $lang = array_merge($lang, array( 'LOG_FORK' => '<strong>Copied topic</strong><br />» from %s', 'LOG_LOCK' => '<strong>Locked topic</strong><br />» %s', 'LOG_LOCK_POST' => '<strong>Locked post</strong><br />» %s', - 'LOG_MERGE' => '<strong>Merged posts</strong> into topic<br />»%s', + 'LOG_MERGE' => '<strong>Merged posts</strong> into topic<br />» %s', 'LOG_MOVE' => '<strong>Moved topic</strong><br />» from %s', + 'LOG_SPLIT_DESTINATION' => '<strong>Moved splitted posts</strong><br />» to %s', + 'LOG_SPLIT_SOURCE' => '<strong>Splitted posts</strong><br />» from %s', + 'LOG_TOPIC_DELETED' => '<strong>Deleted topic</strong><br />» %s', 'LOG_TOPIC_RESYNC' => '<strong>Resynchronised topic counters</strong><br />» %s', 'LOG_TOPIC_TYPE_CHANGED' => '<strong>Changed topic type</strong><br />» %s', @@ -461,7 +465,7 @@ $lang = array_merge($lang, array( 'LOG_DB_BACKUP' => '<strong>Database backup</strong>', 'LOG_DB_RESTORE' => '<strong>Database restore</strong>', - 'LOG_DOWNLOAD_EXCLUDE_IP' => '<strong>Exluded IP/hostname from download list</strong><br />» %s', + 'LOG_DOWNLOAD_EXCLUDE_IP' => '<strong>Excluded IP/hostname from download list</strong><br />» %s', 'LOG_DOWNLOAD_IP' => '<strong>Added IP/hostname to download list</strong><br />» %s', 'LOG_DOWNLOAD_REMOVE_IP' => '<strong>Removed IP/hostname from download list</strong><br />» %s', @@ -508,7 +512,7 @@ $lang = array_merge($lang, array( 'LOG_INSTALL_CONVERTED' => '<strong>Converted from %1$s to phpBB %2$s</strong>', 'LOG_INSTALL_INSTALLED' => '<strong>Installed phpBB %s</strong>', - 'LOG_IP_BROWSER_CHECK' => '<strong>Session IP/browser check failed</strong><br />»User IP "<em>%1$s</em>" checked against session IP "<em>%2$s</em>" and user browser string "<em>%3$s</em>" checked against session browser string "<em>%4$s</em>".', + 'LOG_IP_BROWSER_FORWARDED_CHECK' => '<strong>Session IP/browser/X_FORWARDED_FOR check failed</strong><br />»User IP "<em>%1$s</em>" checked against session IP "<em>%2$s</em>", user browser string "<em>%3$s</em>" checked against session browser string "<em>%4$s</em>" and user X_FORWARDED_FOR string "<em>%5$s</em>" checked against session X_FORWARDED_FOR string "<em>%6$s</em>".', 'LOG_JAB_CHANGED' => '<strong>Jabber account changed</strong>', 'LOG_JAB_PASSCHG' => '<strong>Jabber password changed</strong>', @@ -557,15 +561,19 @@ $lang = array_merge($lang, array( 'LOG_PRUNE_USER_DEL_DEL' => '<strong>Users pruned and posts deleted</strong><br />» %s', 'LOG_PRUNE_USER_DEL_ANON' => '<strong>Users pruned and posts retained</strong><br />» %s', + 'LOG_RANK_ADDED' => '<strong>Added new rank</strong><br />» %s', + 'LOG_RANK_REMOVED' => '<strong>Removed rank</strong><br />» %s', + 'LOG_RANK_UPDATED' => '<strong>Updated rank</strong><br />» %s', + 'LOG_REASON_ADDED' => '<strong>Added report/denial reason</strong><br />» %s', 'LOG_REASON_REMOVED' => '<strong>Removed report/denial reason</strong><br />» %s', 'LOG_REASON_UPDATED' => '<strong>Updated report/denial reason</strong><br />» %s', 'LOG_RESET_DATE' => '<strong>Board start date reset</strong>', 'LOG_RESET_ONLINE' => '<strong>Most users online reset</strong>', - 'LOG_RESYNC_POSTCOUNTS' => '<strong>User post counts resyncronised</strong>', - 'LOG_RESYNC_POST_MARKING' => '<strong>Dotted topics resyncronised</strong>', - 'LOG_RESYNC_STATS' => '<strong>Post, topic and user statistics resyncronised</strong>', + 'LOG_RESYNC_POSTCOUNTS' => '<strong>User post counts resynchronised</strong>', + 'LOG_RESYNC_POST_MARKING' => '<strong>Dotted topics resynchronised</strong>', + 'LOG_RESYNC_STATS' => '<strong>Post, topic and user statistics resynchronised</strong>', 'LOG_STYLE_ADD' => '<strong>Added new style</strong><br />» %s', 'LOG_STYLE_DELETE' => '<strong>Deleted style</strong><br />» %s', @@ -590,6 +598,9 @@ $lang = array_merge($lang, array( 'LOG_THEME_EXPORT' => '<strong>Exported theme</strong><br />» %s', 'LOG_THEME_REFRESHED' => '<strong>Refreshed theme</strong><br />» %s', + 'LOG_UPDATE_DATABASE' => '<strong>Updated Database from version %1$s to version %2$s</strong>', + 'LOG_UPDATE_PHPBB' => '<strong>Updated phpBB from version %1$s to version %2$s</strong>', + 'LOG_USER_ACTIVE' => '<strong>User activated</strong><br />» %s', 'LOG_USER_BAN_USER' => '<strong>Banned User via user management</strong> for reason "<em>%1$s</em>"<br />» %2$s', 'LOG_USER_BAN_IP' => '<strong>Banned IP via user management</strong> for reason "<em>%1$s</em>"<br />» %2$s', @@ -617,8 +628,8 @@ $lang = array_merge($lang, array( 'LOG_USER_MOVE_POSTS_USER' => '<strong>Moved all posts to forum "%s"</strong>', 'LOG_USER_REACTIVATE_USER' => '<strong>Forced user account re-activation</strong>', 'LOG_USER_UNLOCK' => '<strong>User unlocked own topic</strong><br />» %s', - 'LOG_USER_WARNING' => '<strong>Added user warning</strong><br />»%s', - 'LOG_USER_WARNING_BODY' => '<strong>The following warning was issued to this user</strong><br />»%s', + 'LOG_USER_WARNING' => '<strong>Added user warning</strong><br />» %s', + 'LOG_USER_WARNING_BODY' => '<strong>The following warning was issued to this user</strong><br />» %s', 'LOG_USER_GROUP_CHANGE' => '<strong>User changed default group</strong><br />» %s', 'LOG_USER_GROUP_DEMOTE' => '<strong>User demoted as leaders from usergroup</strong><br />» %s', diff --git a/phpBB/language/en/acp/database.php b/phpBB/language/en/acp/database.php index b03348ba46..07605cc4cb 100644 --- a/phpBB/language/en/acp/database.php +++ b/phpBB/language/en/acp/database.php @@ -18,7 +18,9 @@ if (empty($lang) || !is_array($lang)) $lang = array(); } -// DEVELOPERS PLEASE NOTE +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. // // Placeholders can now contain order information, e.g. instead of // 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows diff --git a/phpBB/language/en/acp/email.php b/phpBB/language/en/acp/email.php index 1bb377fc2f..e57b2a8bea 100644 --- a/phpBB/language/en/acp/email.php +++ b/phpBB/language/en/acp/email.php @@ -30,20 +30,20 @@ if (empty($lang) || !is_array($lang)) // equally where a string contains only two placeholders which are used to wrap text // in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine -// Bot settings +// Email settings $lang = array_merge($lang, array( - 'ACP_MASS_EMAIL_EXPLAIN' => 'Here you can email a message to either all of your users or all users of a specific group. To do this, an email will be sent out to the administrative email address supplied, with a blind carbon copy sent to all recipients. If you are emailing a large group of people please be patient after submitting and do not stop the page halfway through. It is normal for a mass emailing to take a long time, you will be notified when the script has completed', + 'ACP_MASS_EMAIL_EXPLAIN' => 'Here you can email a message to either all of your users or all users of a specific group. To do this, an email will be sent out to the administrative email address supplied, with a blind carbon copy sent to all recipients. If you are emailing a large group of people please be patient after submitting and do not stop the page halfway through. It is normal for a mass emailing to take a long time, you will be notified when the script has completed', 'ALL_USERS' => 'All users', 'COMPOSE' => 'Compose', - 'EMAIL_SEND_ERROR' => 'There were one or more errors while sending the email. Please check the %sError Log%s for detailed error messages.', - 'EMAIL_SENT' => 'Your message has been sent.', - 'EMAIL_SENT_QUEUE' => 'Your message has been queued for sending.', + 'EMAIL_SEND_ERROR' => 'There were one or more errors while sending the email. Please check the %sError log%s for detailed error messages.', + 'EMAIL_SENT' => 'This message has been sent.', + 'EMAIL_SENT_QUEUE' => 'This message has been queued for sending.', 'LOG_SESSION' => 'Log mail session to critical log', - 'SEND_IMMEDIATLY' => 'Send immediately', + 'SEND_IMMEDIATELY' => 'Send immediately', 'SEND_TO_GROUP' => 'Send to group', 'SEND_TO_USERS' => 'Send to users', 'SEND_TO_USERS_EXPLAIN' => 'Entering names here will override any group selected above. Enter each username on a new line.', diff --git a/phpBB/language/en/acp/forums.php b/phpBB/language/en/acp/forums.php index ef67df40ed..443241702b 100644 --- a/phpBB/language/en/acp/forums.php +++ b/phpBB/language/en/acp/forums.php @@ -46,7 +46,7 @@ $lang = array_merge($lang, array( 'DECIDE_MOVE_DELETE_CONTENT' => 'Delete content or move to forum', 'DECIDE_MOVE_DELETE_SUBFORUMS' => 'Delete subforums or move to forum', - 'DEFAULT_STYLE' => 'Default Style', + 'DEFAULT_STYLE' => 'Default style', 'DELETE_ALL_POSTS' => 'Delete posts', 'DELETE_SUBFORUMS' => 'Delete subforums and posts', 'DISPLAY_ACTIVE_TOPICS' => 'Enable active topics', @@ -59,7 +59,7 @@ $lang = array_merge($lang, array( 'ENABLE_POST_REVIEW_EXPLAIN' => 'If set to yes users are able to review their post if new posts were made to the topic while users wrote theirs. This should be disabled for chat forums.', 'ENABLE_RECENT' => 'Display active topics', 'ENABLE_RECENT_EXPLAIN' => 'If set to yes topics made to this forum will be shown in the active topics list.', - 'ENABLE_TOPIC_ICONS' => 'Enable Topic Icons', + 'ENABLE_TOPIC_ICONS' => 'Enable topic icons', 'FORUM_ADMIN' => 'Forum administration', 'FORUM_ADMIN_EXPLAIN' => 'In phpBB3 there are no categories, everything is forum based. Each forum can have an unlimited number of sub-forums and you can determine whether each may be posted to or not (i.e. whether it acts like an old category). Here you can add, edit, delete, lock, unlock individual forums as well as set certain additional controls. If your posts and topics have got out of sync you can also resynchronise a forum.', @@ -67,13 +67,14 @@ $lang = array_merge($lang, array( 'FORUM_AUTO_PRUNE_EXPLAIN' => 'Prunes the forum of topics, set the frequency/age parameters below.', 'FORUM_CREATED' => 'Forum created successfully.', 'FORUM_DATA_NEGATIVE' => 'Pruning parameters cannot be negative.', + 'FORUM_DESC_TOO_LONG' => 'The forum description is too long, it must be less than 4000 characters.', 'FORUM_DELETE' => 'Delete forum', 'FORUM_DELETE_EXPLAIN' => 'The form below will allow you to delete a forum. If the forum is postable you are able to decide where you want to put all topics (or forums) it contained.', 'FORUM_DELETED' => 'Forum successfully deleted.', 'FORUM_DESC' => 'Description', 'FORUM_DESC_EXPLAIN' => 'Any markup entered here will displayed as is.', 'FORUM_EDIT_EXPLAIN' => 'The form below will allow you to customise this forum. Please note that moderation and post count controls are set via forum permissions for each user or usergroup.', - 'FORUM_IMAGE' => 'Forum Image', + 'FORUM_IMAGE' => 'Forum image', 'FORUM_IMAGE_EXPLAIN' => 'Location, relative to the phpBB root directory, of an additional image to associate with this forum.', 'FORUM_LINK_EXPLAIN' => 'Full URL (including the protocol, for example <samp>http://</samp>) to location clicking this forum will take the user.', 'FORUM_LINK_TRACK' => 'Track link redirects', @@ -92,6 +93,7 @@ $lang = array_merge($lang, array( 'FORUM_RULES_LINK' => 'Link to forum rules', 'FORUM_RULES_LINK_EXPLAIN' => 'You are able to enter the URL of the page/post containing your forum rules here. This setting will override the forum rules text you specified.', 'FORUM_RULES_PREVIEW' => 'Forum rules preview', + 'FORUM_RULES_TOO_LONG' => 'The forum rules must be less than 4000 characters.', 'FORUM_SETTINGS' => 'Forum settings', 'FORUM_STATUS' => 'Forum status', 'FORUM_STYLE' => 'Forum style', diff --git a/phpBB/language/en/acp/groups.php b/phpBB/language/en/acp/groups.php index 4d4f08c9b3..dbe22e2154 100644 --- a/phpBB/language/en/acp/groups.php +++ b/phpBB/language/en/acp/groups.php @@ -33,7 +33,7 @@ if (empty($lang) || !is_array($lang)) $lang = array_merge($lang, array( 'ACP_GROUPS_MANAGE_EXPLAIN' => 'From this panel you can administrate all your usergroups, you can delete, create and edit existing groups. You may choose moderators, toggle open/closed group status and set the group name and description.', 'ADD_USERS' => 'Add users', - 'ADD_USERS_EXPLAIN' => 'Here you can add new users to the group. You may select whether this group becomes the new default for the selected users. Additionally you can define them as group leaders. Please enter each username on a seperate line.', + 'ADD_USERS_EXPLAIN' => 'Here you can add new users to the group. You may select whether this group becomes the new default for the selected users. Additionally you can define them as group leaders. Please enter each username on a separate line.', 'COPY_PERMISSIONS' => 'Copy permissions from', 'COPY_PERMISSIONS_EXPLAIN' => 'Once created, the group will have the same permissions as the one you select here.', @@ -41,7 +41,7 @@ $lang = array_merge($lang, array( 'GROUPS_NO_MEMBERS' => 'This group has no members', 'GROUPS_NO_MODS' => 'No group leaders defined', - 'GROUP_APPROVE' => 'Approve', + 'GROUP_APPROVE' => 'Approve member', 'GROUP_APPROVED' => 'Approved members', 'GROUP_AVATAR' => 'Group avatar', 'GROUP_AVATAR_EXPLAIN' => 'This image will be displayed in the Group Control Panel.', @@ -49,11 +49,11 @@ $lang = array_merge($lang, array( 'GROUP_COLOR' => 'Group colour', 'GROUP_COLOR_EXPLAIN' => 'Defines the colour members usernames will appear in, leave blank for user default.', 'GROUP_CREATED' => 'Group has been created successfully.', - 'GROUP_DEFAULT' => 'Default', + 'GROUP_DEFAULT' => 'Make group default for member', 'GROUP_DEFS_UPDATED' => 'Default group set for all selected members.', - 'GROUP_DELETE' => 'Delete', + 'GROUP_DELETE' => 'Remove member from group', 'GROUP_DELETED' => 'Group deleted and user default groups set successfully.', - 'GROUP_DEMOTE' => 'Demote', + 'GROUP_DEMOTE' => 'Demote group leader', 'GROUP_DESC' => 'Group description', 'GROUP_DETAILS' => 'Group details', 'GROUP_DST' => 'Group daylight savings', @@ -69,7 +69,7 @@ $lang = array_merge($lang, array( 'GROUP_LIST' => 'Current members', 'GROUP_LIST_EXPLAIN' => 'This is a complete list of all the current users with membership of this group. You can delete members (except in certain special groups) or add new ones as you see fit.', 'GROUP_MEMBERS' => 'Group members', - 'GROUP_MEMBERS_EXPLAIN' => 'This is a complete listing of all the members of this usergroup. It includes seperate sections for leaders, pending and existing members. From here you can manage all aspects of who has membership of this group and what their role is. To remove a leader but keep them in the group use Demote rather than delete. Similarly use Promote to make an existing member a leader.', + 'GROUP_MEMBERS_EXPLAIN' => 'This is a complete listing of all the members of this usergroup. It includes separate sections for leaders, pending and existing members. From here you can manage all aspects of who has membership of this group and what their role is. To remove a leader but keep them in the group use Demote rather than delete. Similarly use Promote to make an existing member a leader.', 'GROUP_MESSAGE_LIMIT' => 'Group private message limit per folder', 'GROUP_MESSAGE_LIMIT_EXPLAIN' => 'This setting overrides the per-user folder message limit. A value of 0 means the user default limit will be used.', 'GROUP_MODS_ADDED' => 'New group moderators added successfully.', @@ -78,7 +78,7 @@ $lang = array_merge($lang, array( 'GROUP_NAME' => 'Group name', 'GROUP_OPEN' => 'Open', 'GROUP_PENDING' => 'Pending members', - 'GROUP_PROMOTE' => 'Promote', + 'GROUP_PROMOTE' => 'Promote to group leader', 'GROUP_RANK' => 'Group rank', 'GROUP_RECEIVE_PM' => 'Group able to receive private messages', 'GROUP_REQUEST' => 'Request', diff --git a/phpBB/language/en/acp/language.php b/phpBB/language/en/acp/language.php index acfc45e916..4c586e1815 100644 --- a/phpBB/language/en/acp/language.php +++ b/phpBB/language/en/acp/language.php @@ -46,26 +46,26 @@ $lang = array_merge($lang, array( 'INVALID_UPLOAD_METHOD' => 'The selected upload method is not valid, please choose a different method.', 'LANGUAGE_DETAILS_UPDATED' => 'Language details successfully updated.', - 'LANGUAGE_ENTRIES' => 'Language Entries', - 'LANGUAGE_ENTRIES_EXPLAIN' => 'Here you are able to change existing language pack entries or not already translated ones.<br /><strong>Note:</strong> Once you changed a language file, the changes will be stored within a seperate folder for you to download. The changes will not be seen by your users until you replace the original language files at your webspace (by uploading them).', + 'LANGUAGE_ENTRIES' => 'Language entries', + 'LANGUAGE_ENTRIES_EXPLAIN' => 'Here you are able to change existing language pack entries or not already translated ones.<br /><strong>Note:</strong> Once you changed a language file, the changes will be stored within a separate folder for you to download. The changes will not be seen by your users until you replace the original language files at your webspace (by uploading them).', 'LANGUAGE_FILES' => 'Language files', 'LANGUAGE_KEY' => 'Language key', 'LANGUAGE_PACK_ALREADY_INSTALLED' => 'This language pack is already installed.', - 'LANGUAGE_PACK_DELETED' => 'The language pack <strong>%s</strong> has been removed successfully. All users using this language have been resetted to the boards default language.', + 'LANGUAGE_PACK_DELETED' => 'The language pack <strong>%s</strong> has been removed successfully. All users using this language have been reset to the boards default language.', 'LANGUAGE_PACK_DETAILS' => 'Language pack details', 'LANGUAGE_PACK_INSTALLED' => 'The language pack <strong>%s</strong> has been successfully installed.', 'LANGUAGE_PACK_ISO' => 'ISO', 'LANGUAGE_PACK_LOCALNAME' => 'Local name', 'LANGUAGE_PACK_NAME' => 'Name', 'LANGUAGE_PACK_NOT_EXIST' => 'The selected language pack does not exist.', - 'LANGUAGE_PACK_USED_BY' => 'Used by', - 'LANGUAGE_VARIABLE' => 'Language Variable', - 'LANG_AUTHOR' => 'Language Pack Author', + 'LANGUAGE_PACK_USED_BY' => 'Used by (including robots)', + 'LANGUAGE_VARIABLE' => 'Language variable', + 'LANG_AUTHOR' => 'Language pack author', 'LANG_ENGLISH_NAME' => 'English name', - 'LANG_ISO_CODE' => 'ISO Code', + 'LANG_ISO_CODE' => 'ISO code', 'LANG_LOCAL_NAME' => 'Local name', - 'MISSING_LANGUAGE_FILE' => 'Missing Language File: <strong style="color:red">%s</strong>', + 'MISSING_LANGUAGE_FILE' => 'Missing language file: <strong style="color:red">%s</strong>', 'MISSING_LANG_VARIABLES' => 'Missing language variables', 'MODS_FILES' => 'MODs language files', @@ -87,6 +87,7 @@ $lang = array_merge($lang, array( 'UNABLE_TO_WRITE_FILE' => 'The file could not be written to %s.', 'UPLOAD_COMPLETED' => 'The upload was completed successfully.', + 'UPLOAD_FAILED' => 'The upload failed for unknown reasons. You may need to replace the relevant file manually.', 'UPLOAD_METHOD' => 'Upload method', 'UPLOAD_SETTINGS' => 'Upload settings', diff --git a/phpBB/language/en/acp/modules.php b/phpBB/language/en/acp/modules.php index 5a0d98c63b..0edcce9352 100644 --- a/phpBB/language/en/acp/modules.php +++ b/phpBB/language/en/acp/modules.php @@ -31,12 +31,12 @@ if (empty($lang) || !is_array($lang)) // in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine $lang = array_merge($lang, array( - 'ACP_MODULE_MANAGEMENT_EXPLAIN' => 'Here you are able to manage all kind of modules. Please note that the ACP has a three-level menu structure (Category -> Category -> Module) whereby the others having a two-level menu structure (Category -> Module) which must be kept. Please also be aware that you may lock out yourself if you disable or delete the modules responsible for the module management itself.', + 'ACP_MODULE_MANAGEMENT_EXPLAIN' => 'Here you are able to manage all kind of modules. Please note that the ACP has a three-level menu structure (Category -> Category -> Module) whereby the others having a two-level menu structure (Category -> Module) which must be kept. Please also be aware that you may lock out yourself if you disable or delete the modules responsible for the module management itself.', 'ADD_MODULE' => 'Add module', 'ADD_MODULE_CONFIRM' => 'Are you sure you want to add the selected module with the selected mode?', 'ADD_MODULE_TITLE' => 'Add module', - 'CANNOT_REMOVE_MODULE' => 'Unable to remove module, it has assigned childs. Please remove or move all childs before performing this action', + 'CANNOT_REMOVE_MODULE' => 'Unable to remove module, it has assigned children. Please remove or move all children before performing this action.', 'CATEGORY' => 'Category', 'CHOOSE_MODE' => 'Choose module mode', 'CHOOSE_MODE_EXPLAIN' => 'Choose the modules mode being used.', @@ -64,7 +64,7 @@ $lang = array_merge($lang, array( 'MODULE_LANGNAME_EXPLAIN' => 'Enter the displayed module name. Use language constant if name is served from language file.', 'MODULE_TYPE' => 'Module type', - 'NO_CATEGORY_TO_MODULE' => 'Unable to turn category into module. Please remove/move all childs before performing this action.', + 'NO_CATEGORY_TO_MODULE' => 'Unable to turn category into module. Please remove/move all children before performing this action.', 'NO_MODULE' => 'No module found.', 'NO_MODULE_ID' => 'No module id specified.', 'NO_MODULE_LANGNAME' => 'No module language name specified.', diff --git a/phpBB/language/en/acp/permissions.php b/phpBB/language/en/acp/permissions.php index b66389907c..e29067895a 100644 --- a/phpBB/language/en/acp/permissions.php +++ b/phpBB/language/en/acp/permissions.php @@ -35,10 +35,10 @@ $lang = array_merge($lang, array( <p>Permissions are highly granular and grouped into four major sections, which are:</p> <h2>Global Permissions</h2> - <p>These are used to control access on a global level and apply to the entire bulletin board. They are further divided into Users Permissions, Groups Permissions, Administrators and Global Moderators.</p> + <p>These are used to control access on a global level and apply to the entire bulletin board. They are further divided into Users’ Permissions, Groups’ Permissions, Administrators and Global Moderators.</p> <h2>Forum Based Permissions</h2> - <p>These are used to control access on a per forum basis. They are further divided into Forum Permissions, Forum Moderators, Users Forum Permissions and Groups Forum Permissions.</p> + <p>These are used to control access on a per forum basis. They are further divided into Forum Permissions, Forum Moderators, Users’ Forum Permissions and Groups’ Forum Permissions.</p> <h2>Permission Roles</h2> <p>These are used to create different sets of permissions for the different permission types later being able to be assigned on a role-based basis. The default roles should cover the administration of bulletin boards large and small, though within each of the four divisions, you can add/edit/delete roles as you see fit.</p> @@ -77,13 +77,13 @@ $lang = array_merge($lang, array( 'ACP_FORUM_PERMISSIONS_EXPLAIN' => 'Here you can alter which users and groups can access which forums. To assign moderators or define administrators please use the appropriate page.', 'ACP_GLOBAL_MODERATORS_EXPLAIN' => 'Here you can assign global moderator rights to users or groups. These moderators are like ordinary moderators except they have access to every forum on your board.', 'ACP_GROUPS_FORUM_PERMISSIONS_EXPLAIN' => 'Here you can assign forum permissions to groups.', - 'ACP_GROUPS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to groups - user permissions, global moderator permissions and admin permissions. User permissions include capabilities such as the use of avatars, sending private messages, etc. Global moderator permissions are blabla, administrative permissions blabla. Individual users permissions should only be changed in rare occassions, the preferred method is putting users in groups and assigning the groups permissions.', + 'ACP_GROUPS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to groups - user permissions, global moderator permissions and administrator permissions. User permissions include capabilities such as the use of avatars, sending private messages, et cetera; global moderator permissions such as approving posts, manage topics, manage bans, et ecetera and lastly administrator permissions such as altering permissions, define custom BBCodes, manage forums, et cetera. Individual users permissions should only be changed in rare occasions, the preferred method is putting users in groups and assigning the group’s permissions.', 'ACP_ADMIN_ROLES_EXPLAIN' => 'Here you are able to manage the roles for administrative permissions. Roles are effective permissions, if you change a role the items having this role assigned will change it’s permissions too.', 'ACP_FORUM_ROLES_EXPLAIN' => 'Here you are able to manage the roles for forum permissions. Roles are effective permissions, if you change a role the items having this role assigned will change it’s permissions too.', 'ACP_MOD_ROLES_EXPLAIN' => 'Here you are able to manage the roles for moderative permissions. Roles are effective permissions, if you change a role the items having this role assigned will change it’s permissions too.', 'ACP_USER_ROLES_EXPLAIN' => 'Here you are able to manage the roles for user permissions. Roles are effective permissions, if you change a role the items having this role assigned will change it’s permissions too.', 'ACP_USERS_FORUM_PERMISSIONS_EXPLAIN' => 'Here you can assign forum permissions to users.', - 'ACP_USERS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to users - user permissions, global moderator permissions and admin permissions. User permissions include capabilities such as the use of avatars, sending private messages, etc. Global moderator permissions are blabla, administrative permissions blabla. To alter these settings for large numbers of users the Group permissions system is the prefered method. Users permissions should only be changed in rare occassions, the preferred method is putting users in groups and assigning the groups permissions.', + 'ACP_USERS_PERMISSIONS_EXPLAIN' => 'Here you can assign global permissions to users - user permissions, global moderator permissions and administrator permissions. User permissions include capabilities such as the use of avatars, sending private messages, et cetera; global moderator permissions such as approving posts, manage topics, manage bans, et ecetera and lastly administrator permissions such as altering permissions, define custom BBCodes, manage forums, et cetera. To alter these settings for large numbers of users the Group permissions system is the preferred method. User’s permissions should only be changed in rare occasions, the preferred method is putting users in groups and assigning the group’s permissions.', 'ACP_VIEW_ADMIN_PERMISSIONS_EXPLAIN' => 'Here you can view the effective administrative permissions assigned to the selected users/groups', 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS_EXPLAIN' => 'Here you can view the global moderative permissions assigned to the selected users/groups', 'ACP_VIEW_FORUM_PERMISSIONS_EXPLAIN' => 'Here you can view the forum permissions assigned to the selected users/groups and forums', @@ -93,6 +93,7 @@ $lang = array_merge($lang, array( 'ADD_GROUPS' => 'Add groups', 'ADD_PERMISSIONS' => 'Add permissions', 'ADD_USERS' => 'Add users', + 'ADVANCED_PERMISSIONS' => 'Advanced Permissions', 'ALL_GROUPS' => 'Select all groups', 'ALL_NEVER' => 'All <samp>NEVER</samp>', 'ALL_NO' => 'All <samp>NO</samp>', @@ -134,7 +135,7 @@ $lang = array_merge($lang, array( 'ONLY_FORUM_DEFINED' => 'You only defined forums in your selection. Please also select at least one user or one group.', - 'PERMISSION_APPLIED_TO_ALL' => 'Permissions and Role will also be applied to all checked objects', + 'PERMISSION_APPLIED_TO_ALL' => 'Permissions and role will also be applied to all checked objects', 'PLUS_SUBFORUMS' => '+Subforums', 'REMOVE_PERMISSIONS' => 'Remove permissions', @@ -145,6 +146,29 @@ $lang = array_merge($lang, array( 'ROLE_DELETED' => 'Role successfully removed.', 'ROLE_DESCRIPTION' => 'Role description', + 'ROLE_ADMIN_FORUM' => 'Forum Admin', + 'ROLE_ADMIN_FULL' => 'Full Admin', + 'ROLE_ADMIN_STANDARD' => 'Standard Admin', + 'ROLE_ADMIN_USERGROUP' => 'User and Groups Admin', + 'ROLE_FORUM_BOT' => 'Bot Access', + 'ROLE_FORUM_FULL' => 'Full Access', + 'ROLE_FORUM_LIMITED' => 'Limited Access', + 'ROLE_FORUM_LIMITED_POLLS' => 'Limited Access + Polls', + 'ROLE_FORUM_NOACCESS' => 'No Access', + 'ROLE_FORUM_ONQUEUE' => 'On Moderation Queue', + 'ROLE_FORUM_POLLS' => 'Standard Access + Polls', + 'ROLE_FORUM_READONLY' => 'Read Only Access', + 'ROLE_FORUM_STANDARD' => 'Standard Access', + 'ROLE_MOD_FULL' => 'Full Moderator', + 'ROLE_MOD_QUEUE' => 'Queue Moderator', + 'ROLE_MOD_SIMPLE' => 'Simple Moderator', + 'ROLE_MOD_STANDARD' => 'Standard Moderator', + 'ROLE_USER_FULL' => 'All Features', + 'ROLE_USER_LIMITED' => 'Limited Features', + 'ROLE_USER_NOAVATAR' => 'No Avatar', + 'ROLE_USER_NOPM' => 'No Private Messages', + 'ROLE_USER_STANDARD' => 'Standard Features', + 'ROLE_DESCRIPTION_ADMIN_FORUM' => 'Can access the forum management and forum permission settings.', 'ROLE_DESCRIPTION_ADMIN_FULL' => 'Has access to all admin functions of this forum.<br />Not recommended.', 'ROLE_DESCRIPTION_ADMIN_STANDARD' => 'Has access to most admin features but is not allowed to use server or system related tools.', @@ -169,6 +193,7 @@ $lang = array_merge($lang, array( 'ROLE_DESCRIPTION_USER_STANDARD' => 'Can access most but not all user features. Cannot change user name or ignore the flood limit, for instance.', 'ROLE_DESCRIPTION_EXPLAIN' => 'You are able to enter a short explanation of what the role is doing or for what it is meant for. The text you enter here will be displayed within the permissions screens too.', + 'ROLE_DESCRIPTION_LONG' => 'The role description is too long, please limit it to 4000 characters.', 'ROLE_DETAILS' => 'Role details', 'ROLE_EDIT_SUCCESS' => 'Role successfully edited.', 'ROLE_NAME' => 'Role name', @@ -199,7 +224,7 @@ $lang = array_merge($lang, array( 'TRACE_PERMISSION' => 'Trace permission - %s', 'TRACE_SETTING' => 'Trace setting', - 'TRACE_USER_GLOBAL_YES_TOTAL_YES' => 'The forum independent user permission evaluates to <samp>YES</samp> but the total permission is already set to <samp>YES</samp>, so the the total result is kept. %sTrace global permission%s', + 'TRACE_USER_GLOBAL_YES_TOTAL_YES' => 'The forum independent user permission evaluates to <samp>YES</samp> but the total permission is already set to <samp>YES</samp>, so the total result is kept. %sTrace global permission%s', 'TRACE_USER_GLOBAL_YES_TOTAL_NEVER' => 'The forum independent user permission evaluates to <samp>YES</samp> which overwrites the current local result <samp>NEVER</samp>. %sTrace global permission%s', 'TRACE_USER_GLOBAL_NEVER_TOTAL_KEPT' => 'The forum independent user permission evaluates to <samp>NEVER</samp> which doesn’t influence the local permission. %sTrace global permission%s', 'TRACE_USER_FOUNDER' => 'The user has the founder type set, therefore admin permissions are set to <samp>YES</samp> by default.', @@ -219,6 +244,8 @@ $lang = array_merge($lang, array( 'USER_IS_MEMBER_OF_CUSTOM' => 'is a member of the following custom groups', 'VIEW_ASSIGNED_ITEMS' => 'View assigned items', + 'VIEW_LOCAL_PERMS' => 'Local permissions', + 'VIEW_GLOBAL_PERMS' => 'Global permissions', 'VIEW_PERMISSIONS' => 'View permissions', 'WRONG_PERMISSION_TYPE' => 'Wrong permission type selected.', diff --git a/phpBB/language/en/acp/permissions_phpbb.php b/phpBB/language/en/acp/permissions_phpbb.php index df2d9e8c6f..d090dcef1e 100644 --- a/phpBB/language/en/acp/permissions_phpbb.php +++ b/phpBB/language/en/acp/permissions_phpbb.php @@ -31,7 +31,7 @@ if (empty($lang) || !is_array($lang)) /** * MODDERS PLEASE NOTE * -* You are able to put your permission sets into a seperate file too by +* You are able to put your permission sets into a separate file too by * prefixing the new file with permissions_ and putting it into the acp * language folder. * @@ -128,11 +128,11 @@ $lang = array_merge($lang, array( $lang = array_merge($lang, array( 'acl_f_list' => array('lang' => 'Can see forum', 'cat' => 'post'), 'acl_f_read' => array('lang' => 'Can read forum', 'cat' => 'post'), - 'acl_f_post' => array('lang' => 'Can post in forum', 'cat' => 'post'), + 'acl_f_post' => array('lang' => 'Can start new topics', 'cat' => 'post'), + 'acl_f_reply' => array('lang' => 'Can reply to topics', 'cat' => 'post'), + 'acl_f_icons' => array('lang' => 'Can use post icons', 'cat' => 'post'), 'acl_f_announce' => array('lang' => 'Can post announcements', 'cat' => 'post'), 'acl_f_sticky' => array('lang' => 'Can post stickies', 'cat' => 'post'), - 'acl_f_reply' => array('lang' => 'Can reply to posts', 'cat' => 'post'), - 'acl_f_icons' => array('lang' => 'Can use post icons', 'cat' => 'post'), 'acl_f_poll' => array('lang' => 'Can create polls', 'cat' => 'polls'), 'acl_f_vote' => array('lang' => 'Can vote in polls', 'cat' => 'polls'), @@ -157,7 +157,7 @@ $lang = array_merge($lang, array( 'acl_f_search' => array('lang' => 'Can search the forum', 'cat' => 'misc'), 'acl_f_ignoreflood' => array('lang' => 'Can ignore flood limit', 'cat' => 'misc'), - 'acl_f_postcount' => array('lang' => 'Increment post counter', 'cat' => 'misc'), + 'acl_f_postcount' => array('lang' => 'Increment post counter<br /><em>Please note that this setting only affects new posts.</em>', 'cat' => 'misc'), 'acl_f_noapprove' => array('lang' => 'Can post without approval', 'cat' => 'misc'), )); @@ -181,7 +181,7 @@ $lang = array_merge($lang, array( // Admin Permissions $lang = array_merge($lang, array( - 'acl_a_board' => array('lang' => 'Can alter board settings', 'cat' => 'settings'), + 'acl_a_board' => array('lang' => 'Can alter board settings/check for updates', 'cat' => 'settings'), 'acl_a_server' => array('lang' => 'Can alter server/communication settings', 'cat' => 'settings'), 'acl_a_jabber' => array('lang' => 'Can alter Jabber settings', 'cat' => 'settings'), 'acl_a_phpinfo' => array('lang' => 'Can view php settings', 'cat' => 'settings'), @@ -207,12 +207,12 @@ $lang = array_merge($lang, array( 'acl_a_ban' => array('lang' => 'Can manage bans', 'cat' => 'user_group'), 'acl_a_viewauth' => array('lang' => 'Can view permission masks', 'cat' => 'permissions'), - 'acl_a_fauth' => array('lang' => 'Can alter forum permissions', 'cat' => 'permissions'), - 'acl_a_mauth' => array('lang' => 'Can alter moderator permissions', 'cat' => 'permissions'), - 'acl_a_aauth' => array('lang' => 'Can alter admin permissions', 'cat' => 'permissions'), - 'acl_a_uauth' => array('lang' => 'Can alter user permissions', 'cat' => 'permissions'), - 'acl_a_authgroups' => array('lang' => 'Can alter permissions for groups', 'cat' => 'permissions'), - 'acl_a_authusers' => array('lang' => 'Can alter permissions for users', 'cat' => 'permissions'), + 'acl_a_authgroups' => array('lang' => 'Can alter permissions for individual groups', 'cat' => 'permissions'), + 'acl_a_authusers' => array('lang' => 'Can alter permissions for individual users', 'cat' => 'permissions'), + 'acl_a_fauth' => array('lang' => 'Can alter forum permission class', 'cat' => 'permissions'), + 'acl_a_mauth' => array('lang' => 'Can alter moderator permission class', 'cat' => 'permissions'), + 'acl_a_aauth' => array('lang' => 'Can alter admin permission class', 'cat' => 'permissions'), + 'acl_a_uauth' => array('lang' => 'Can alter user permission class', 'cat' => 'permissions'), 'acl_a_roles' => array('lang' => 'Can manage roles', 'cat' => 'permissions'), 'acl_a_switchperm' => array('lang' => 'Can use others permissions', 'cat' => 'permissions'), diff --git a/phpBB/language/en/acp/posting.php b/phpBB/language/en/acp/posting.php index 13dae541ac..fba23e233f 100644 --- a/phpBB/language/en/acp/posting.php +++ b/phpBB/language/en/acp/posting.php @@ -45,16 +45,17 @@ $lang = array_merge($lang, array( 'BBCODE_INVALID_TAG_NAME' => 'The BBCode tag name that you selected already exists.', 'BBCODE_OPEN_ENDED_TAG' => 'Your custom BBCode must contain both an opening and a closing tag.', 'BBCODE_TAG' => 'Tag', - 'BBCODE_TAG_TOO_LONG' => 'The tag definition that you have entered is too long, please shorten your tag definition.', + 'BBCODE_TAG_TOO_LONG' => 'The tag name you selected is too long.', + 'BBCODE_TAG_DEF_TOO_LONG' => 'The tag definition that you have entered is too long, please shorten your tag definition.', 'BBCODE_USAGE' => 'BBCode usage', - 'BBCODE_USAGE_EXAMPLE' => '[colour={COLOR}]{TEXT}[/colour]<br /><br />[font={TEXT1}]{TEXT2}[/font]', + 'BBCODE_USAGE_EXAMPLE' => '[hilight={COLOR}]{TEXT}[/hilight]<br /><br />[font={TEXT1}]{TEXT2}[/font]', 'BBCODE_USAGE_EXPLAIN' => 'Here you define how to use the bbcode. Replace any variable input by the corresponding token (%ssee below%s)', 'EXAMPLE' => 'Example:', 'EXAMPLES' => 'Examples:', 'HTML_REPLACEMENT' => 'HTML replacement', - 'HTML_REPLACEMENT_EXAMPLE' => '<font color="{COLOR}">{TEXT}</font><br /><br /><font face="{TEXT1}">{TEXT2}</font>', + 'HTML_REPLACEMENT_EXAMPLE' => '<span style="background-color:{COLOR};">{TEXT}</span><br /><br /><span style="font-family:{TEXT1};">{TEXT2}</span>', 'HTML_REPLACEMENT_EXPLAIN' => 'Here you define the default HTML replacement (each template can have its own HTML replacement). Do not forget to put back tokens you used above!', 'TOKEN' => 'Token', @@ -67,7 +68,7 @@ $lang = array_merge($lang, array( 'TEXT' => 'Any text, including foreign characters, numbers, etc…', 'NUMBER' => 'Any series of digits', 'EMAIL' => 'A valid email address', - 'URL' => 'A valid URL using any protocol (http, ftp, etc… cannot be used for javascript exploits). If none is given, "http://" is prepended to to the string', + 'URL' => 'A valid URL using any protocol (http, ftp, etc… cannot be used for javascript exploits). If none is given, "http://" is prepended to the string', 'LOCAL_URL' => 'A local URL. The URL must be relative to the topic page and cannot contain a server name or protocol', 'COLOR' => 'A HTML color, can be either in the numeric form <samp>#FF1234</samp> or a <a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS colour keyword</a> such as <samp>fuchsia</samp> or <samp>InactiveBorder</samp>' ) @@ -100,7 +101,7 @@ $lang = array_merge($lang, array( 'FIRST' => 'First', - 'ICONS_ADD' => 'Add a new Icon', + 'ICONS_ADD' => 'Add a new icon', 'ICONS_ADDED' => 'The icon has been added successfully.', 'ICONS_CONFIG' => 'Icon configuration', 'ICONS_DELETED' => 'The icon has been removed successfully.', @@ -137,7 +138,7 @@ $lang = array_merge($lang, array( 'SMILIES_CODE' => 'Smiley code', 'SMILIES_CONFIG' => 'Smiley configuration', 'SMILIES_DELETED' => 'The smiley has been removed successfully.', - 'SMILIES_EDIT' => 'Edit Smiley', + 'SMILIES_EDIT' => 'Edit smiley', 'SMILIES_EDITED' => 'The smiley has been updated successfully.', 'SMILIES_EMOTION' => 'Emotion', 'SMILIES_HEIGHT' => 'Smiley height', @@ -182,7 +183,7 @@ $lang = array_merge($lang, array( 'NO_ASSIGNED_RANK' => 'No special rank assigned.', 'NO_RANK_TITLE' => 'You haven’t specified a title for the rank.', - 'NO_UPDATE_RANKS' => 'The rank was successfully deleted. However user accounts using this rank were not updated. You will need to manually reset the rank on these accounts.', + 'NO_UPDATE_RANKS' => 'The rank was successfully deleted. However user accounts using this rank were not updated. You will need to manually reset the rank on these accounts.', 'RANK_ADDED' => 'The rank was successfully added.', 'RANK_IMAGE' => 'Rank image', @@ -196,7 +197,7 @@ $lang = array_merge($lang, array( // Disallow Usernames $lang = array_merge($lang, array( - 'ACP_DISALLOW_EXPLAIN' => 'Here you can control usernames which will not be allowed to be used. Disallowed usernames are allowed to contain a wildcard character of *. Please note that you will not be allowed to specify any username that has already been registered, you must first delete that name then disallow it', + 'ACP_DISALLOW_EXPLAIN' => 'Here you can control usernames which will not be allowed to be used. Disallowed usernames are allowed to contain a wildcard character of *. Please note that you will not be allowed to specify any username that has already been registered, you must first delete that name then disallow it', 'ADD_DISALLOW_EXPLAIN' => 'You can disallow a username using the wildcard character * to match any character', 'ADD_DISALLOW_TITLE' => 'Add a disallowed username', diff --git a/phpBB/language/en/acp/profile.php b/phpBB/language/en/acp/profile.php index 1866d59490..f690f6fdb7 100644 --- a/phpBB/language/en/acp/profile.php +++ b/phpBB/language/en/acp/profile.php @@ -45,7 +45,7 @@ $lang = array_merge($lang, array( 'CHECKBOX' => 'Checkbox', 'COLUMNS' => 'Columns', 'CP_LANG_DEFAULT_VALUE' => 'Default value', - 'CP_LANG_EXPLAIN' => 'Field Description', + 'CP_LANG_EXPLAIN' => 'Field description', 'CP_LANG_EXPLAIN_EXPLAIN' => 'The explanation for this field presented to the user', 'CP_LANG_NAME' => 'Field name/title presented to the user', 'CP_LANG_OPTIONS' => 'Options', @@ -62,7 +62,7 @@ $lang = array_merge($lang, array( 'DISPLAY_AT_REGISTER' => 'Display at registration screen', 'DISPLAY_AT_REGISTER_EXPLAIN' => 'If this option is enabled, the field will be displayed on registration and able to be changed within the user control panel.', 'DISPLAY_PROFILE_FIELD' => 'Display profile field', - 'DISPLAY_PROFILE_FIELD_EXPLAIN' => 'The profile field will be shown on viewtopic/viewprofile/memberlist/etc.', + 'DISPLAY_PROFILE_FIELD_EXPLAIN' => 'The profile field will be shown on viewtopic/viewprofile/memberlist. if this is enabled within the load settings. Only showing within the users profile is enabled by default.', 'DROPDOWN_ENTRIES_EXPLAIN' => 'Enter your options now, every option in one line', 'EDIT_DROPDOWN_LANG_EXPLAIN' => 'Please note that you are able to change your options text and also able to add new options to the end. It is not advised to add new options between existing options - this could result in wrong options assigned to your users. This can also happen if you remove options in-between. Removing options from the end result in users having assigned this item now reverting back to the default one.', @@ -90,7 +90,7 @@ $lang = array_merge($lang, array( 'FIRST_OPTION' => 'First option', 'HIDE_PROFILE_FIELD' => 'Hide profile field', - 'HIDE_PROFILE_FIELD_EXPLAIN' => 'Only Administrators and Moderators are able to see/fill out this profile field. If this option is enabled, the profile field will be only displayed in user profiles.', + 'HIDE_PROFILE_FIELD_EXPLAIN' => 'Only administrators and moderators are able to see/fill out this profile field. If this option is enabled, the profile field will be only displayed in users’ profiles.', 'INVALID_CHARS_FIELD_IDENT' => 'Field identification can only contain lowercase a-z and _', 'INVALID_FIELD_IDENT_LEN' => 'Field identification can only be 17 characters long', @@ -119,7 +119,7 @@ $lang = array_merge($lang, array( 'RADIO_BUTTONS' => 'Radio buttons', 'REMOVED_PROFILE_FIELD' => 'Successfully removed profile field.', - 'REQUIRED_FIELD' => 'Required Field', + 'REQUIRED_FIELD' => 'Required field', 'REQUIRED_FIELD_EXPLAIN' => 'Force profile field to be filled out or specified by user. This will display the profile field at registration and within the user control panel.', 'ROWS' => 'Rows', diff --git a/phpBB/language/en/acp/search.php b/phpBB/language/en/acp/search.php index 4d6b01cb6c..59a4dbb43a 100644 --- a/phpBB/language/en/acp/search.php +++ b/phpBB/language/en/acp/search.php @@ -34,6 +34,8 @@ $lang = array_merge($lang, array( 'ACP_SEARCH_INDEX_EXPLAIN' => 'Here you can manage the search backend’s indexes. Since you normally use only one backend you should delete all indexes that you do not make use of. After altering some of the search settings (e.g. the number of minimum/maximum chars) it might be worth recreating the index so it reflects those changes.', 'ACP_SEARCH_SETTINGS_EXPLAIN' => 'Here you can define what search backend will be used for indexing posts and performing searches. You can set various options that can influence how much processing these actions require. Some of these settings are the same for all search engine backends.', + 'COMMON_WORD_THRESHOLD' => 'Common word threshold', + 'COMMON_WORD_THRESHOLD_EXPLAIN' => 'Words which are contained in a greater percentage of all posts will be regarded as common. Common words are ignored in search queries. Set to zero to disable. Only takes effect if there are more than 100 posts.', 'CONFIRM_SEARCH_BACKEND' => 'Are you sure you wish to switch to a different search backend? After changing the search backend you will have to create an index for the new search backend. If you don’t plan on switching back to the old search backend you can also delete the old backend’s index in order to free system resources.', 'CONTINUE_DELETING_INDEX' => 'Continue previous index deleting process', 'CONTINUE_DELETING_INDEX_EXPLAIN' => 'An index deleting process has been started. In order to access the search index page again you need to complete it first.', @@ -50,6 +52,8 @@ $lang = array_merge($lang, array( 'FULLTEXT_MYSQL_SUBJECT_CARDINALITY' => 'Cardinality of the post_subject fulltext index (estimate of unique values)', 'FULLTEXT_MYSQL_TEXT_CARDINALITY' => 'Cardinality of the post_text fulltext index (estimate of unique values)', 'FULLTEXT_MYSQL_TOTAL_POSTS' => 'Total number of indexed posts', + 'FULLTEXT_MYSQL_UNICODE' => 'Support for non-latin UTF-8 characters:', + 'FULLTEXT_MYSQL_UNICODE_EXPLAIN' => 'This search backend requires PCRE unicode character properties, only available in PHP 4.4, 5.1 and above, if you want to search for non-latin characters.', 'GENERAL_SEARCH_SETTINGS' => 'General search settings', 'GO_TO_SEARCH_INDEX' => 'Go to search index page', @@ -75,11 +79,11 @@ $lang = array_merge($lang, array( 'SEARCH_INDEX_CREATED' => 'Successfully indexed all posts in the board database.', 'SEARCH_INDEX_REMOVED' => 'Successfully deleted the search index for this backend.', 'SEARCH_INTERVAL' => 'User search flood interval', - 'SEARCH_INTERVAL_EXPLAIN' => 'Number of seconds users must wait between searches. This interval is checked independendly for each user.', + 'SEARCH_INTERVAL_EXPLAIN' => 'Number of seconds users must wait between searches. This interval is checked independently for each user.', 'SEARCH_STORE_RESULTS' => 'Search result cache length', 'SEARCH_STORE_RESULTS_EXPLAIN' => 'Cached search results will expire after this time, in seconds. Set to 0 if you want to disable search cache.', 'SEARCH_TYPE' => 'Search backend', - 'SEARCH_TYPE_EXPLAIN' => 'phpBB allows you to choose the backend that is used for searching text in post contents. By default the search will use phpBB’s own fulltext search.', + 'SEARCH_TYPE_EXPLAIN' => 'phpBB allows you to choose the backend that is used for searching text in post contents. By default the search will use phpBB’s own fulltext search.', 'SWITCHED_SEARCH_BACKEND' => 'You switched the search backend. In order to use the new search backend you should make sure that there is an index for the backend you chose.', 'TOTAL_WORDS' => 'Total number of indexed words', @@ -88,7 +92,7 @@ $lang = array_merge($lang, array( 'YES_SEARCH' => 'Enable search facilities', 'YES_SEARCH_EXPLAIN' => 'Enables user facing search functionality including member search.', 'YES_SEARCH_UPDATE' => 'Enable fulltext updating', - 'YES_SEARCH_UPDATE_EXPLAIN' => 'Updating of fulltext indexes when posting, overriden if search is disabled.', + 'YES_SEARCH_UPDATE_EXPLAIN' => 'Updating of fulltext indexes when posting, overridden if search is disabled.', )); ?>
\ No newline at end of file diff --git a/phpBB/language/en/acp/styles.php b/phpBB/language/en/acp/styles.php index 27ecbdb261..8270614c2a 100644 --- a/phpBB/language/en/acp/styles.php +++ b/phpBB/language/en/acp/styles.php @@ -32,7 +32,7 @@ if (empty($lang) || !is_array($lang)) $lang = array_merge($lang, array( 'ACP_IMAGESETS_EXPLAIN' => 'Imagesets comprise all the button, forum, folder, etc. and other non-style specific images used by the board. Here you can edit, export or delete existing imagesets and import or activate new sets.', - 'ACP_STYLES_EXPLAIN' => 'Here you can manage the available styles on your board. A style consists off a template, theme and imageset. You may alter existing styles, delete, deactivate, reactivate, create or import new ones. You can also see what a style will look like using the preview function. The current default style is noted by the presence of an asterix (*). Also listed is the total user count for each style, note that overriding user styles will not be reflected here.', + 'ACP_STYLES_EXPLAIN' => 'Here you can manage the available styles on your board. A style consists off a template, theme and imageset. You may alter existing styles, delete, deactivate, reactivate, create or import new ones. You can also see what a style will look like using the preview function. The current default style is noted by the presence of an asterisk (*). Also listed is the total user count for each style, note that overriding user styles will not be reflected here.', 'ACP_TEMPLATES_EXPLAIN' => 'A template set comprises all the markup used to generate the layout of your board. Here you can edit existing template sets, delete, export, import and preview sets. You can also modify the templating code used to generate BBCode.', 'ACP_THEMES_EXPLAIN' => 'From here you can create, install, edit, delete and export themes. A theme is the combination of colours and images that are applied to your templates to define the basic look of your forum. The range of options open to you depends on the configuration of your server and phpBB installation, see the manual for further details. Please note that when creating new themes the use of an existing theme as a basis is optional.', 'ADD_IMAGESET' => 'Create imageset', @@ -66,10 +66,10 @@ $lang = array_merge($lang, array( 'CREATE_TEMPLATE' => 'Create new template set', 'CREATE_THEME' => 'Create new theme', 'CSS_CLASS_NAME' => 'CSS class name', - 'CSS_COLOUR_EXPLAIN' => 'You can either enter a hexidecimal number for the colour or use the web safe colour swatch to select one.', + 'CSS_COLOUR_EXPLAIN' => 'You can either enter a hexadecimal number for the colour or use the web safe colour swatch to select one.', 'CURRENT_IMAGE' => 'Current image', 'CUSTOM_CLASS' => 'Custom class', - 'CUSTOM_CLASS_EXPLAIN' => 'You can add additional classes to this theme if you wish. You must provide the actual CSS class name below, it must be the same as that you have or will use in your template. Please remember that class names may contain only alphanumeric characters, periods (.), colons (:), dash (-) and number/hash/pound (#). The new class will be added to class selection above.', + 'CUSTOM_CLASS_EXPLAIN' => 'You can add additional classes to this theme if you wish. You must provide the actual CSS class name below, it must be the same as that you have or will use in your template. Please remember that class names may contain only alphanumeric characters, periods (.), colons (:), dash (-), underscore (_) and number/hash/pound (#). The new class will be added to class selection above.', 'DEACTIVATE_DEFAULT' => 'You cannot deactivate the default style.', 'DELETE_FROM_FS' => 'Delete from filesystem', @@ -105,7 +105,7 @@ $lang = array_merge($lang, array( 'FOREGROUND' => 'Foreground', 'FONT_COLOUR' => 'Font colour', 'FONT_FACE' => 'Font face', - 'FONT_FACE_EXPLAIN' => 'You can specify multiple fonts seperated by commas. If a user doesn’t have the first font installed the first other working font will be chosen.', + 'FONT_FACE_EXPLAIN' => 'You can specify multiple fonts separated by commas. If a user doesn’t have the first font installed the first other working font will be chosen.', 'FONT_SIZE' => 'Font size', 'GLOBAL_IMAGES' => 'Global', @@ -132,10 +132,10 @@ $lang = array_merge($lang, array( 'IMAGESET_ERR_NAME_LONG' => 'The imageset name can be no longer than 30 characters.', 'IMAGESET_ERR_NOT_IMAGESET' => 'The archive you specified does not contain a valid imageset.', 'IMAGESET_ERR_STYLE_NAME' => 'You must supply a name for this imageset.', - 'IMAGESET_EXPORT' => 'Export Imageset', + 'IMAGESET_EXPORT' => 'Export imageset', 'IMAGESET_EXPORT_EXPLAIN' => 'Here you can export an imageset in the form of an archive. This archive will contain all the data necessary to install the set of images on another board. You may select whether to download the file directly or to place it in your store folder for download later or via FTP.', - 'IMAGESET_EXPORTED' => 'Imageset exported succesfully and stored in %s.', - 'IMAGESET_NAME' => 'Imageset Name', + 'IMAGESET_EXPORTED' => 'Imageset exported successfully and stored in %s.', + 'IMAGESET_NAME' => 'Imageset name', 'IMAGESET_REFRESHED' => 'Imageset refreshed successfully.', 'IMAGESET_UPDATED' => 'Imageset updated successfully.', 'ITALIC' => 'Italic', @@ -150,7 +150,7 @@ $lang = array_merge($lang, array( 'IMG_CAT_UI' => 'General user interface elements', 'IMG_CAT_USER' => 'Additional images', - 'IMG_SITE_LOGO' => 'Main Logo', + 'IMG_SITE_LOGO' => 'Main logo', 'IMG_UPLOAD_BAR' => 'Upload progress bar', 'IMG_POLL_LEFT' => 'Poll left end', 'IMG_POLL_CENTER' => 'Poll centre', @@ -264,13 +264,13 @@ $lang = array_merge($lang, array( 'INCLUDE_IMAGESET' => 'Include imageset', 'INCLUDE_TEMPLATE' => 'Include template', 'INCLUDE_THEME' => 'Include theme', - 'INSTALL_IMAGESET' => 'Install Imageset', + 'INSTALL_IMAGESET' => 'Install imageset', 'INSTALL_IMAGESET_EXPLAIN' => 'Here you can install your selected imageset. You can edit certain details if you wish or use the installation defaults.', - 'INSTALL_STYLE' => 'Install Style', + 'INSTALL_STYLE' => 'Install style', 'INSTALL_STYLE_EXPLAIN' => 'Here you can install a new style and if appropriate the corresponding style elements. If you already have the relevant style elements installed they will not be overwritten. Some styles require existing style elements to already be installed. If you try installing such a style and do not have the required elements you will be notified.', 'INSTALL_TEMPLATE' => 'Install Template', 'INSTALL_TEMPLATE_EXPLAIN' => 'Here you can install a new template set. Depending on your server configuration you may have a number of options here.', - 'INSTALL_THEME' => 'Install Theme', + 'INSTALL_THEME' => 'Install theme', 'INSTALL_THEME_EXPLAIN' => 'Here you can install your selected theme. You can edit certain details if you wish or use the installation defaults.', 'INSTALLED_IMAGESET' => 'Installed imagesets', 'INSTALLED_STYLE' => 'Installed styles', @@ -284,7 +284,7 @@ $lang = array_merge($lang, array( 'NO_CLASS' => 'Cannot find class in stylesheet.', 'NO_IMAGESET' => 'Cannot find imageset on filesystem.', - 'NO_IMAGE' => 'No Image', + 'NO_IMAGE' => 'No image', 'NO_STYLE' => 'Cannot find style on filesystem.', 'NO_TEMPLATE' => 'Cannot find template on filesystem.', 'NO_THEME' => 'Cannot find theme on filesystem.', @@ -347,14 +347,14 @@ $lang = array_merge($lang, array( 'STYLE_ERR_NO_IDS' => 'You must select a template, theme and imageset for this style.', 'STYLE_ERR_NOT_STYLE' => 'The imported or uploaded file did not contain a valid style archive.', 'STYLE_ERR_STYLE_NAME' => 'You must supply a name for this style.', - 'STYLE_EXPORT' => 'Export Style', - 'STYLE_EXPORT_EXPLAIN' => 'Here you can export a style in the form of an archive. A style does not need to contain all elements but it must contain at least one. For example if you have created a new theme and imageset for a commonly used template you could simply export the theme and imageset and ommit the template. You may select whether to download the file directly or to place it in your store folder for download later or via FTP.', - 'STYLE_EXPORTED' => 'Style exported succesfully and stored in %s.', + 'STYLE_EXPORT' => 'Export style', + 'STYLE_EXPORT_EXPLAIN' => 'Here you can export a style in the form of an archive. A style does not need to contain all elements but it must contain at least one. For example if you have created a new theme and imageset for a commonly used template you could simply export the theme and imageset and omit the template. You may select whether to download the file directly or to place it in your store folder for download later or via FTP.', + 'STYLE_EXPORTED' => 'Style exported successfully and stored in %s.', 'STYLE_IMAGESET' => 'Imageset', 'STYLE_NAME' => 'Style name', 'STYLE_TEMPLATE' => 'Template', 'STYLE_THEME' => 'Theme', - 'STYLE_USED_BY' => 'Used by', + 'STYLE_USED_BY' => 'Used by (including robots)', 'TEMPLATE_ADDED' => 'Template set added and stored on filesystem.', 'TEMPLATE_ADDED_DB' => 'Template set added and stored in database.', @@ -377,7 +377,7 @@ $lang = array_merge($lang, array( 'TEMPLATE_ERR_STYLE_NAME' => 'You must supply a name for this templates.', 'TEMPLATE_EXPORT' => 'Export templates', 'TEMPLATE_EXPORT_EXPLAIN' => 'Here you can export a template set in the form of an archive. This archive will contain all the files necessary to install the templates on another board. You may select whether to download the file directly or to place it in your store folder for download later or via FTP.', - 'TEMPLATE_EXPORTED' => 'Templates exported succesfully and stored in %s.', + 'TEMPLATE_EXPORTED' => 'Templates exported successfully and stored in %s.', 'TEMPLATE_FILE' => 'Template file', 'TEMPLATE_FILE_UPDATED' => 'Template file updated successfully.', 'TEMPLATE_LOCATION' => 'Store templates in', @@ -394,7 +394,7 @@ $lang = array_merge($lang, array( 'THEME_EDITOR' => 'Raw CSS theme editor', 'THEME_EDITOR_HEIGHT' => 'Theme editor height', 'THEME_ERR_ARCHIVE' => 'Please select an archive method.', - 'THEME_ERR_CLASS_CHARS' => 'Only alphanumeric characters plus ., :, - and # are valid in class names.', + 'THEME_ERR_CLASS_CHARS' => 'Only alphanumeric characters plus ., :, -, _ and # are valid in class names.', 'THEME_ERR_COPY_LONG' => 'The copyright can be no longer than 60 characters.', 'THEME_ERR_NAME_CHARS' => 'The theme name can only contain alphanumeric characters, -, +, _ and space.', 'THEME_ERR_NAME_EXIST' => 'A theme with that name already exists.', @@ -404,10 +404,10 @@ $lang = array_merge($lang, array( 'THEME_ERR_STYLE_NAME' => 'You must supply a name for this theme.', 'THEME_EXPORT' => 'Export Theme', 'THEME_EXPORT_EXPLAIN' => 'Here you can export a theme in the form of an archive. This archive will contain all the data necessary to install the theme on another board. You may select whether to download the file directly or to place it in your store folder for download later or via FTP.', - 'THEME_EXPORTED' => 'Theme exported succesfully and stored in %s.', + 'THEME_EXPORTED' => 'Theme exported successfully and stored in %s.', 'THEME_LOCATION' => 'Store stylesheet in', 'THEME_LOCATION_EXPLAIN' => 'Images are always stored on the filesystem.', - 'THEME_NAME' => 'Theme Name', + 'THEME_NAME' => 'Theme name', 'THEME_REFRESHED' => 'Theme refreshed successfully.', 'THEME_UPDATED' => 'Class updated successfully.', diff --git a/phpBB/language/en/acp/users.php b/phpBB/language/en/acp/users.php index 08bebf2d66..41deacbcaf 100644 --- a/phpBB/language/en/acp/users.php +++ b/phpBB/language/en/acp/users.php @@ -58,10 +58,11 @@ $lang = array_merge($lang, array( 'FOUNDER' => 'Founder', 'FOUNDER_EXPLAIN' => 'Founders have all admin permissions and can never be banned, deleted or altered by non-founder members', - 'GROUP_DEFAULT' => 'Default', - 'GROUP_DELETE' => 'Delete', - 'GROUP_DEMOTE' => 'Demote', - 'GROUP_PROMOTE' => 'Promote', + 'GROUP_APPROVE' => 'Approve member', + 'GROUP_DEFAULT' => 'Make group default for member', + 'GROUP_DELETE' => 'Remove member from group', + 'GROUP_DEMOTE' => 'Demote group leader', + 'GROUP_PROMOTE' => 'Promote to group leader', 'IP_WHOIS_FOR' => 'IP whois for %s', @@ -79,7 +80,7 @@ $lang = array_merge($lang, array( 'RETAIN_POSTS' => 'Retain posts', 'SELECT_FORM' => 'Select form', - 'SELECT_USER' => 'Select User', + 'SELECT_USER' => 'Select user', 'USER_ADMIN' => 'User administration', 'USER_ADMIN_ACTIVATE' => 'Activate account', @@ -113,14 +114,12 @@ $lang = array_merge($lang, array( 'USER_POSTS_DELETED' => 'Successfully removed all posts made by this user.', 'USER_POSTS_MOVED' => 'Successfully moved users posts to target forum.', 'USER_PREFS_UPDATED' => 'User preferences updated.', - 'USER_PROFILE' => 'User Profile', + 'USER_PROFILE' => 'User profile', 'USER_PROFILE_UPDATED' => 'User profile updated.', - 'USER_RANK' => 'User Rank', + 'USER_RANK' => 'User rank', 'USER_RANK_UPDATED' => 'User rank updated.', 'USER_SIG_UPDATED' => 'User signature successfully updated.', 'USER_TOOLS' => 'Basic tools', - - 'WARNINGS_EXPLAIN' => 'You can directly alter the warnings this users has received.', )); ?>
\ No newline at end of file diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 5bba8f92e6..953a5c9644 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -33,9 +33,7 @@ if (empty($lang) || !is_array($lang)) $lang = array_merge($lang, array( 'TRANSLATION_INFO' => '', 'DIRECTION' => 'ltr', - 'LEFT' => 'left', - 'RIGHT' => 'right', - 'DATE_FORMAT' => '|d M Y|', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) 'USER_LANG' => 'en-gb', '1_DAY' => '1 day', @@ -76,7 +74,7 @@ $lang = array_merge($lang, array( 'AVATAR_NO_SIZE' => 'Could not obtain width or height of linked avatar, please enter them manually.', 'AVATAR_PARTIAL_UPLOAD' => 'The uploaded file was only partially uploaded', 'AVATAR_PHP_SIZE_NA' => 'The avatar’s filesize is too large.<br />Could not determine the maximum size defined by PHP in php.ini.', - 'AVATAR_PHP_SIZE_OVERRUN' => 'The avatar’s filesize is too large, maximum upload size is %d MB.<br />Please note this is set in php.ini and cannot be overriden.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'The avatar’s filesize is too large, maximum upload size is %d MB.<br />Please note this is set in php.ini and cannot be overridden.', 'AVATAR_URL_INVALID' => 'The URL you specified is invalid.', 'AVATAR_URL_NOT_FOUND' => 'The file specified could not be found.', 'AVATAR_WRONG_FILESIZE' => 'The avatar must be between 0 and %1d %2s.', @@ -85,7 +83,7 @@ $lang = array_merge($lang, array( 'BACK_TO_TOP' => 'Top', 'BACK_TO_PREV' => 'Back to previous page', 'BAN_TRIGGERED_BY_EMAIL'=> 'This ban has been issued on your email address.', - 'BAN_TRIGGERED_BY_IP' => 'This ban has been issued on your ip address.', + 'BAN_TRIGGERED_BY_IP' => 'This ban has been issued on your IP address.', 'BAN_TRIGGERED_BY_USER' => 'This ban has been issued on your username.', 'BBCODE_GUIDE' => 'BBCode guide', 'BCC' => 'BCC', @@ -103,13 +101,17 @@ $lang = array_merge($lang, array( 'CANCEL' => 'Cancel', 'CHANGE' => 'Change', 'CHANGE_FONT_SIZE' => 'Change font size', + 'CHANGING_PREFERENCES' => 'Changing forum preferences', + 'CHANGING_PROFILE' => 'Changing forum profile settings', 'CLICK_VIEW_PRIVMSG' => '%sGo to your inbox%s', 'CLOSE_WINDOW' => 'Close window', 'COLOUR_SWATCH' => 'Colour swatch', + 'COMMA_SEPARATOR' => ', ', // Used in pagination and secret yet-to-be-release style, use localised comma if appropiate, eg: Ideographic or Arabic 'CONFIRM' => 'Confirm', 'CONFIRM_CODE' => 'Confirmation code', 'CONFIRM_CODE_EXPLAIN' => 'Enter the code exactly as you see it in the image, it is case insensitive. Please note that a zero does not exist.', 'CONFIRM_CODE_WRONG' => 'The confirmation code you entered was incorrect.', + 'CONFIRM_OPERATION' => 'Are you sure you wish to carry out this operation?', 'CONGRATULATIONS' => 'Congratulations to', 'CONNECTION_FAILED' => 'Connection failed', 'CONNECTION_SUCCESS' => 'Connection was successful!', @@ -156,7 +158,7 @@ $lang = array_merge($lang, array( 'FAQ_EXPLAIN' => 'Frequently Asked Questions', 'FILENAME' => 'Filename', 'FILESIZE' => 'Filesize', - 'FILEDATE' => 'Filedate', + 'FILEDATE' => 'File date', 'FILE_COMMENT' => 'File comment', 'FILE_NOT_FOUND' => 'The requested file could not be found', 'FIND_USERNAME' => 'Find a member', @@ -173,6 +175,7 @@ $lang = array_merge($lang, array( 'FORUM_RULES' => 'Forum rules', 'FORUM_RULES_LINK' => 'Please click to view the forum rules', 'FROM' => 'from', + 'FSOCK_DISABLED' => 'The operation is not able to be completed because the fsock functions has been disabled or the server being queried could not be found.', 'FTP_FSOCK_HOST' => 'FTP host', 'FTP_FSOCK_HOST_EXPLAIN' => 'FTP server used to connect your site', @@ -218,9 +221,9 @@ $lang = array_merge($lang, array( 'G_ADMINISTRATORS' => 'Administrators', 'G_BOTS' => 'Bots', 'G_GUESTS' => 'Guests', - 'G_REGISTERED' => 'Registered Users', - 'G_REGISTERED_COPPA' => 'Registered COPPA Users', - 'G_GLOBAL_MODERATORS' => 'Global Moderators', + 'G_REGISTERED' => 'Registered users', + 'G_REGISTERED_COPPA' => 'Registered COPPA users', + 'G_GLOBAL_MODERATORS' => 'Global moderators', 'HIDDEN_USERS_ONLINE' => '%d hidden users online', 'HIDDEN_USERS_TOTAL' => '%d hidden and ', @@ -259,7 +262,7 @@ $lang = array_merge($lang, array( 'LAST_POST' => 'Last post', 'LAST_UPDATED' => 'Last updated', 'LAST_VISIT' => 'Last visit', - 'LDAP_NO_LDAP_EXTENSION' => 'LDAP extension not availible', + 'LDAP_NO_LDAP_EXTENSION' => 'LDAP extension not available', 'LDAP_NO_SERVER_CONNECTION' => 'Could not connect to LDAP server', 'LEGEND' => 'Legend', 'LOCATION' => 'Location', @@ -271,7 +274,7 @@ $lang = array_merge($lang, array( 'LOGIN_CONFIRMATION' => 'Confirmation of login', 'LOGIN_CONFIRM_EXPLAIN' => 'To prevent brute forcing accounts the board administrator requires you to enter a confirmation code after a maximum amount of failed logins. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.', 'LOGIN_ERROR_ATTEMPTS' => 'You exceeded the maximum allowed number of login attempts. In addition to your username and password you now also have to enter the confirm code from the image you see below.', - 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'You have not been authenticated by apache.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'You have not been authenticated by Apache.', 'LOGIN_ERROR_PASSWORD' => 'You have specified an incorrect password. Please check your password and try again. If you continue to have problems please contact the %sBoard Administrator%s.', 'LOGIN_ERROR_USERNAME' => 'You have specified an incorrect username. Please check your username and try again. If you continue to have problems please contact the %sBoard Administrator%s.', 'LOGIN_FORUM' => 'To view or post in this forum you must enter its password.', @@ -289,7 +292,7 @@ $lang = array_merge($lang, array( 'MCP' => 'Moderator Control Panel', 'MEMBERLIST' => 'Members', 'MEMBERLIST_EXPLAIN' => 'View complete list of members', - 'MERGE_TOPIC' => 'Merge Topic', + 'MERGE_TOPIC' => 'Merge topic', 'MESSAGE' => 'Message', 'MESSAGES' => 'Messages', 'MESSAGE_BODY' => 'Message body', @@ -299,11 +302,12 @@ $lang = array_merge($lang, array( 'MODERATORS' => 'Moderators', 'MONTH' => 'Month', 'MOVE' => 'Move', + 'MSNM' => 'MSNM/WLM', 'NA' => 'N/A', 'NEWEST_USER' => 'Our newest member <strong>%s%s%s</strong>', - 'NEW_MESSAGE' => 'New Message', - 'NEW_MESSAGES' => 'New Messages', + 'NEW_MESSAGE' => 'New message', + 'NEW_MESSAGES' => 'New messages', 'NEW_PM' => '<strong>%d</strong> new message', 'NEW_PMS' => '<strong>%d</strong> new messages', 'NEW_POST' => 'New post', @@ -311,7 +315,7 @@ $lang = array_merge($lang, array( 'NEXT' => 'Next', 'NEVER' => 'Never', 'NO' => 'No', - 'NOT_ALLOWED_MANAGE_GROUP' => 'You are not allowed to manage this group from the administration control panel.', + 'NOT_ALLOWED_MANAGE_GROUP' => 'You are not allowed to manage this group from the “Administration Control Panel”.', 'NOT_AUTHORIZED' => 'You are not authorised to access this area.', 'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.', 'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.', @@ -330,7 +334,7 @@ $lang = array_merge($lang, array( 'NO_FORUMS' => 'This board has no forums', 'NO_GROUP' => 'The requested usergroup does not exist.', 'NO_GROUP_MEMBERS' => 'This group currently has no members', - 'NO_IPS_DEFINED' => 'No IPs or Hostnames defined', + 'NO_IPS_DEFINED' => 'No IP addresses or hostnames defined', 'NO_MEMBERS' => 'No members found for this search criteria', 'NO_MESSAGES' => 'No messages', 'NO_MODE' => 'No mode specified.', @@ -355,7 +359,7 @@ $lang = array_merge($lang, array( 'OCCUPATION' => 'Occupation', 'OFFLINE' => 'Offline', 'ONLINE' => 'Online', - 'ONLINE_BUDDIES' => 'Online Buddies', + 'ONLINE_BUDDIES' => 'Online friends', 'ONLINE_USERS_TOTAL' => 'In total there are <strong>%d</strong> users online :: ', 'ONLINE_USERS_ZERO_TOTAL' => 'In total there are <strong>0</strong> users online :: ', 'ONLINE_USER_TOTAL' => 'In total there is <strong>%d</strong> user online :: ', @@ -363,9 +367,10 @@ $lang = array_merge($lang, array( 'PAGE_OF' => 'Page <strong>%1$d</strong> of <strong>%2$d</strong>', 'PASSWORD' => 'Password', - 'PLAY_QUICKTIME_FILE' => 'Play quicktime file', + 'PLAY_QUICKTIME_FILE' => 'Play Quicktime file', 'PM' => 'PM', 'POSTING_MESSAGE' => 'Posting message in %s', + 'POSTING_PRIVATE_MESSAGE' => 'Composing private message', 'POST' => 'Post', 'POST_ANNOUNCEMENT' => 'Announce', 'POST_STICKY' => 'Sticky', @@ -380,7 +385,8 @@ $lang = array_merge($lang, array( 'POST_DETAILS' => 'Post details', 'POST_NEW_TOPIC' => 'Post new topic', 'POST_PCT' => '%.2f%% of all posts', - 'POST_PCT_ACTIVE' => '%.2f%% of your posts', + 'POST_PCT_ACTIVE' => '%.2f%% of user’s posts', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% of your posts', 'POST_REPORTED' => 'Click to view report', 'POST_SUBJECT' => 'Post subject', 'POST_TIME' => 'Post time', @@ -388,17 +394,19 @@ $lang = array_merge($lang, array( 'PREVIEW' => 'Preview', 'PREVIOUS' => 'Previous', 'PRIVACY' => 'Privacy policy', - 'PRIVATE_MESSAGE' => 'Private Message', - 'PRIVATE_MESSAGES' => 'Private Messages', - 'PRIVATE_MESSAGING' => 'Private Messaging', + 'PRIVATE_MESSAGE' => 'Private message', + 'PRIVATE_MESSAGES' => 'Private messages', + 'PRIVATE_MESSAGING' => 'Private messaging', 'PROFILE' => 'User Control Panel', 'READING_FORUM' => 'Viewing topics in %s', 'READING_GLOBAL_ANNOUNCE' => 'Reading global announcement', + 'READING_LINK' => 'Following forum link %s', 'READING_TOPIC' => 'Reading topic in %s', 'READ_PROFILE' => 'Profile', 'REASON' => 'Reason', 'RECORD_ONLINE_USERS' => 'Most users ever online was <strong>%1$s</strong> on %2$s', + 'REDIRECT' => 'Redirect', 'REDIRECTS' => 'Total redirects', 'REGISTER' => 'Register', 'REGISTERED_USERS' => 'Registered users:', @@ -412,7 +420,7 @@ $lang = array_merge($lang, array( 'REMOVE_INSTALL' => 'Please delete, move or rename the install directory before you use your forum. If this directory is still present, only the Administration Control Panel (ACP) will be accessible.', 'REPLIES' => 'Replies', 'REPLY_WITH_QUOTE' => 'Reply with quote', - 'REPLYING_GLOBAL_ANNOUNCE' => 'Replying to Global Announcement', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Replying to global announcement', 'REPLYING_MESSAGE' => 'Replying to message in %s', 'REPORT_BY' => 'Report by', 'REPORT_POST' => 'Report this post', @@ -443,17 +451,18 @@ $lang = array_merge($lang, array( 'RULES_VOTE_CANNOT' => 'You <strong>cannot</strong> vote in polls in this forum', 'SEARCH' => 'Search', + 'SEARCH_MINI' => 'Search…', 'SEARCH_ADV' => 'Advanced search', 'SEARCH_ADV_EXPLAIN' => 'View the advanced search options', 'SEARCH_KEYWORDS' => 'Search for keywords', 'SEARCHING_FORUMS' => 'Searching forums', 'SEARCH_ACTIVE_TOPICS' => 'View active topics', 'SEARCH_FOR' => 'Search for', - 'SEARCH_FORUM' => 'Search this forum', + 'SEARCH_FORUM' => 'Search this forum…', 'SEARCH_NEW' => 'View new posts', 'SEARCH_POSTS_BY' => 'Search posts by', 'SEARCH_SELF' => 'View your posts', - 'SEARCH_TOPIC' => 'Search this topic', + 'SEARCH_TOPIC' => 'Search this topic…', 'SEARCH_UNANSWERED' => 'View unanswered posts', 'SECONDS' => 'Seconds', 'SELECT' => 'Select', @@ -494,9 +503,9 @@ $lang = array_merge($lang, array( 'TOO_LONG_CONFIRM_CODE' => 'The confirm code you entered is too long.', 'TOO_LONG_ICQ' => 'The ICQ number you entered is too long.', 'TOO_LONG_INTERESTS' => 'The interests you entered is too long.', - 'TOO_LONG_JABBER' => 'The jabber account name you entered is too long.', + 'TOO_LONG_JABBER' => 'The Jabber account name you entered is too long.', 'TOO_LONG_LOCATION' => 'The location you entered is too long.', - 'TOO_LONG_MSN' => 'The MSN name you entered is too long.', + 'TOO_LONG_MSN' => 'The MSNM/WLM name you entered is too long.', 'TOO_LONG_NEW_PASSWORD' => 'The password you entered is too long.', 'TOO_LONG_OCCUPATION' => 'The occupation you entered is too long.', 'TOO_LONG_PASSWORD_CONFIRM' => 'The password confirmation you entered is too long.', @@ -505,7 +514,7 @@ $lang = array_merge($lang, array( 'TOO_LONG_EMAIL' => 'The email address you entered is too long.', 'TOO_LONG_EMAIL_CONFIRM' => 'The email address confirmation you entered is too long.', 'TOO_LONG_WEBSITE' => 'The website address you entered is too long.', - 'TOO_LONG_YIM' => 'The yahoo messenger name you entered is too long.', + 'TOO_LONG_YIM' => 'The Yahoo! Messenger name you entered is too long.', 'TOO_MANY_VOTE_OPTIONS' => 'You have tried to vote for too many options.', @@ -513,9 +522,9 @@ $lang = array_merge($lang, array( 'TOO_SHORT_CONFIRM_CODE' => 'The confirm code you entered is too short.', 'TOO_SHORT_ICQ' => 'The ICQ number you entered is too short.', 'TOO_SHORT_INTERESTS' => 'The interests you entered is too short.', - 'TOO_SHORT_JABBER' => 'The jabber account name you entered is too short.', + 'TOO_SHORT_JABBER' => 'The Jabber account name you entered is too short.', 'TOO_SHORT_LOCATION' => 'The location you entered is too short.', - 'TOO_SHORT_MSN' => 'The MSN name you entered is too short.', + 'TOO_SHORT_MSN' => 'The MSNM/WLM name you entered is too short.', 'TOO_SHORT_NEW_PASSWORD' => 'The password you entered is too short.', 'TOO_SHORT_OCCUPATION' => 'The occupation you entered is too short.', 'TOO_SHORT_PASSWORD_CONFIRM' => 'The password confirmation you entered is too short.', @@ -524,7 +533,7 @@ $lang = array_merge($lang, array( 'TOO_SHORT_EMAIL' => 'The email address you entered is too short.', 'TOO_SHORT_EMAIL_CONFIRM' => 'The email address confirmation you entered is too short.', 'TOO_SHORT_WEBSITE' => 'The website address you entered is too short.', - 'TOO_SHORT_YIM' => 'The yahoo messenger name you entered is too short.', + 'TOO_SHORT_YIM' => 'The Yahoo! Messenger name you entered is too short.', 'TOPIC' => 'Topic', 'TOPICS' => 'Topics', @@ -570,13 +579,16 @@ $lang = array_merge($lang, array( 'USER_POST' => '%d Post', 'USER_POSTS' => '%d Posts', 'USERS' => 'Users', - 'USE_PERMISSIONS' => 'Test out users permissions', + 'USE_PERMISSIONS' => 'Test out user’s permissions', 'VIEWED' => 'Viewed', 'VIEWING_FAQ' => 'Viewing FAQ', 'VIEWING_MEMBERS' => 'Viewing member details', 'VIEWING_ONLINE' => 'Viewing who is online', + 'VIEWING_MCP' => 'Viewing moderator control panel', 'VIEWING_MEMBER_PROFILE' => 'Viewing member profile', + 'VIEWING_PRIVATE_MESSAGES' => 'Viewing private messages', + 'VIEWING_REGISTER' => 'Registering account', 'VIEWING_UCP' => 'Viewing user control panel', 'VIEWS' => 'Views', 'VIEW_BOOKMARKS' => 'View bookmarks', @@ -604,10 +616,10 @@ $lang = array_merge($lang, array( 'WHO_IS_ONLINE' => 'Who is online', 'WRONG_PASSWORD' => 'You entered an incorrect password.', - 'WRONG_DATA_ICQ' => 'The number you entered is not a valid icq number.', - 'WRONG_DATA_JABBER' => 'The name you entered is not a valid jabber account name.', + 'WRONG_DATA_ICQ' => 'The number you entered is not a valid ICQ number.', + 'WRONG_DATA_JABBER' => 'The name you entered is not a valid Jabber account name.', 'WRONG_DATA_LANG' => 'The language you specified is not valid.', - 'WRONG_DATA_WEBSITE' => 'The website address has to be a valid url, including the protocol. For example http://www.example.com/.', + 'WRONG_DATA_WEBSITE' => 'The website address has to be a valid URL, including the protocol. For example http://www.example.com/.', 'YEAR' => 'Year', 'YES' => 'Yes', @@ -752,17 +764,17 @@ $lang = array_merge($lang, array( // The value is only an example and will get replaced by the current time on view 'dateformats' => array( - '|d M Y| H:i' => '10 Jan 2005 17:54 [Relative days]', - 'd M Y, H:i' => '10 Jan 2005, 17:57', - 'd M Y H:i' => '10 Jan 2005 17:57', - 'D M d, Y g:i a' => 'Mon Jan 10, 2005 5:57 pm', - 'M j, y, H:i' => 'Jan 10, 05, 5:57 pm', - 'F j, Y, g:i a' => 'January 10, 2005, 5:57 pm' + '|d M Y| H:i' => '01 Jan 2007 13:37 [Relative days]', + 'd M Y, H:i' => '01 Jan 2007, 13:37', + 'd M Y H:i' => '01 Jan 2007 13:37', + 'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm', + 'M jS, y, H:i' => 'Jan 1st, 07, 1:37 pm', + 'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm' ), // The default dateformat which will be used on new installs in this language // Translators should change this if a the usual date format is different - 'default_dateformat' => 'D M d, Y g:i a', // Mon Jan 10, 2005 5:57 pm + 'default_dateformat' => 'D M d, Y g:i a', // Mon Jan 01, 2007 1:37 pm )); diff --git a/phpBB/language/en/email/admin_activate.txt b/phpBB/language/en/email/admin_activate.txt index 0689c1a068..8b11f1b450 100644 --- a/phpBB/language/en/email/admin_activate.txt +++ b/phpBB/language/en/email/admin_activate.txt @@ -2,9 +2,9 @@ Subject: Activate user account Hello, -The account owned by “{USERNAME}” has been deactivated or newly created, you should check the details of this user (if required) and handle it appropiatly. +The account owned by "{USERNAME}" has been deactivated or newly created, you should check the details of this user (if required) and handle it appropriately. -Use this link to view the users profile: +Use this link to view the user's profile: {U_USER_DETAILS} Use this link to activate the account: diff --git a/phpBB/language/en/email/admin_send_email.txt b/phpBB/language/en/email/admin_send_email.txt index 6353312fa9..b778496258 100644 --- a/phpBB/language/en/email/admin_send_email.txt +++ b/phpBB/language/en/email/admin_send_email.txt @@ -1,5 +1,5 @@ -The following is an email sent to you by an administrator of “{SITENAME}”. If this message is spam, contains abusive or other comments you find offensive please contact the webmaster of the board at the following address: +The following is an email sent to you by an administrator of "{SITENAME}". If this message is spam, contains abusive or other comments you find offensive please contact the webmaster of the board at the following address: {CONTACT_EMAIL} diff --git a/phpBB/language/en/email/admin_welcome_activated.txt b/phpBB/language/en/email/admin_welcome_activated.txt index ef3122d13d..0e4658b969 100644 --- a/phpBB/language/en/email/admin_welcome_activated.txt +++ b/phpBB/language/en/email/admin_welcome_activated.txt @@ -2,6 +2,6 @@ Subject: Account activated Hello {USERNAME}, -Your account on “{SITENAME}” has now been activated, you may login using the username and password you received in a previous email. +Your account on "{SITENAME}" has now been activated, you may login using the username and password you received in a previous email. {EMAIL_SIG}
\ No newline at end of file diff --git a/phpBB/language/en/email/admin_welcome_inactive.txt b/phpBB/language/en/email/admin_welcome_inactive.txt index cb502ad334..29d5e7d818 100644 --- a/phpBB/language/en/email/admin_welcome_inactive.txt +++ b/phpBB/language/en/email/admin_welcome_inactive.txt @@ -1,4 +1,4 @@ -Subject: Welcome to “{SITENAME}” — {U_BOARD} +Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} @@ -9,7 +9,7 @@ Username: {USERNAME} Password: {PASSWORD} ---------------------------- -Your account is currently inactive, the administrator of the board will need to activate it before you can log in. You will receive another email when this has occured. +Your account is currently inactive, the administrator of the board will need to activate it before you can log in. You will receive another email when this has occurred. Please do not forget your password as it has been encrypted in our database and we cannot retrieve it for you. However, should you forget your password you can request a new one which will be activated in the same way as this account. diff --git a/phpBB/language/en/email/coppa_resend_inactive.txt b/phpBB/language/en/email/coppa_resend_inactive.txt index fb3326e96a..a69f9086b2 100644 --- a/phpBB/language/en/email/coppa_resend_inactive.txt +++ b/phpBB/language/en/email/coppa_resend_inactive.txt @@ -1,4 +1,4 @@ -Subject: Welcome to “{SITENAME}” — {U_BOARD} +Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} @@ -13,14 +13,14 @@ OR mail it to: {MAIL_INFO} ------------------------------ CUT HERE ------------------------------ -Permission to participate at “{SITENAME}” +Permission to participate at "{SITENAME}" Username: {USERNAME} Email: {EMAIL_ADDRESS} -I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO “{SITENAME}” TO STORE THIS INFORMATION. +I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO "{SITENAME}" TO STORE THIS INFORMATION. I UNDERSTAND THIS INFORMATION CAN BE CHANGED AT ANY TIME BY ENTERING A PASSWORD. -I UNDERSTAND THAT I MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM “{SITENAME}” AT ANY TIME. +I UNDERSTAND THAT I MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM "{SITENAME}" AT ANY TIME. Parent or guardian @@ -33,7 +33,7 @@ Date: _______________ ------------------------------ CUT HERE ------------------------------ -Once the administrator has recived the above form via fax or regular mail your account will be activated. +Once the administrator has received the above form via fax or regular mail your account will be activated. Please do not forget your password as it has been encrypted in our database and we cannot retrieve it for you. However, should you forget your password you can request a new one which will be activated in the same way as this account. diff --git a/phpBB/language/en/email/coppa_welcome_inactive.txt b/phpBB/language/en/email/coppa_welcome_inactive.txt index a325c29927..1cb28f65bd 100644 --- a/phpBB/language/en/email/coppa_welcome_inactive.txt +++ b/phpBB/language/en/email/coppa_welcome_inactive.txt @@ -1,4 +1,4 @@ -Subject: Welcome to “{SITENAME}” — {U_BOARD} +Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} @@ -13,15 +13,15 @@ OR mail it to: {MAIL_INFO} ------------------------------ CUT HERE ------------------------------ -Permission to participate at “{SITENAME}” +Permission to participate at "{SITENAME}" Username: {USERNAME} Password: {PASSWORD} Email: {EMAIL_ADDRESS} -I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO “{SITENAME}” TO STORE THIS INFORMATION. +I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO "{SITENAME}" TO STORE THIS INFORMATION. I UNDERSTAND THIS INFORMATION CAN BE CHANGED AT ANY TIME BY ENTERING A PASSWORD. -I UNDERSTAND THAT I MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM “{SITENAME}” AT ANY TIME. +I UNDERSTAND THAT I MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM "{SITENAME}" AT ANY TIME. Parent or guardian @@ -34,7 +34,7 @@ Date: _______________ ------------------------------ CUT HERE ------------------------------ -Once the administrator has recived the above form via fax or regular mail your account will be activated. +Once the administrator has received the above form via fax or regular mail your account will be activated. Please do not forget your password as it has been encrypted in our database and we cannot retrieve it for you. However, should you forget your password you can request a new one which will be activated in the same way as this account. diff --git a/phpBB/language/en/email/email_notify.txt b/phpBB/language/en/email/email_notify.txt index e8d4e3ae1d..725b52f0cc 100644 --- a/phpBB/language/en/email/email_notify.txt +++ b/phpBB/language/en/email/email_notify.txt @@ -1,8 +1,8 @@ -Subject: “{SITENAME}” — Email a friend +Subject: "{SITENAME}" - Email a friend Hello {TO_USERNAME}, -This email was sent from “{SITENAME}” by {FROM_USERNAME} who thought you may be interested in the following topic: +This email was sent from "{SITENAME}" by {FROM_USERNAME} who thought you may be interested in the following topic: {TOPIC_NAME} @@ -10,7 +10,7 @@ You can find it at: {U_TOPIC} -A message from {FROM_USERNAME} may also be included below. Please note that this message has not been seen or approved by the board administrators. If you wish to complain about having received this email please contact the board administrator at {BOARD_EMAIL}. Please quote the the message headers when contacting this address. +A message from {FROM_USERNAME} may also be included below. Please note that this message has not been seen or approved by the board administrators. If you wish to complain about having received this email please contact the board administrator at {BOARD_CONTACT}. Please quote the message headers when contacting this address. ---------- diff --git a/phpBB/language/en/email/forum_notify.txt b/phpBB/language/en/email/forum_notify.txt index 578b70b3cf..f55e6dd80b 100644 --- a/phpBB/language/en/email/forum_notify.txt +++ b/phpBB/language/en/email/forum_notify.txt @@ -1,12 +1,12 @@ -Subject: Forum post notification — “{FORUM_NAME}” +Subject: Forum post notification - "{FORUM_NAME}" Hello {USERNAME}, -You are receiving this notification because you are watching the forum, “{FORUM_NAME}” at “{SITENAME}”. This forum has received a new reply to the topic “{TOPIC_TITLE}” since your last visit. You can use the following link to view this topic, no more notifications will be sent until you visit the topic. +You are receiving this notification because you are watching the forum, "{FORUM_NAME}" at "{SITENAME}". This forum has received a new reply to the topic "{TOPIC_TITLE}" since your last visit. You can use the following link to view this topic, no more notifications will be sent until you visit the topic. {U_NEWEST_POST} -If you no longer wish to watch this forum you can either click the “Unsubscribe forum” link found in the forum above, or by clicking the following link: +If you no longer wish to watch this forum you can either click the "Unsubscribe forum" link found in the forum above, or by clicking the following link: {U_STOP_WATCHING_FORUM} diff --git a/phpBB/language/en/email/group_added.txt b/phpBB/language/en/email/group_added.txt index eb0c96e58d..9464aae094 100644 --- a/phpBB/language/en/email/group_added.txt +++ b/phpBB/language/en/email/group_added.txt @@ -2,8 +2,8 @@ Subject: You have been added to this usergroup Congratulations, -You have been added to the “{GROUP_NAME}” group on “{SITENAME}”. -This action was done by a group moderator or the site administrator, contact them for more information. +You have been added to the "{GROUP_NAME}" group on "{SITENAME}". +This action was done by a group leader or the site administrator, contact them for more information. You can view your groups information here: {U_GROUP} diff --git a/phpBB/language/en/email/group_approved.txt b/phpBB/language/en/email/group_approved.txt index d0b0745d36..24afefcd07 100644 --- a/phpBB/language/en/email/group_approved.txt +++ b/phpBB/language/en/email/group_approved.txt @@ -2,7 +2,7 @@ Subject: Your request has been approved Congratulations, -Your request to join the “{GROUP_NAME}” group on “{SITENAME}” has been approved. +Your request to join the "{GROUP_NAME}" group on "{SITENAME}" has been approved. Click on the following link to see your group membership. {U_GROUP} diff --git a/phpBB/language/en/email/group_request.txt b/phpBB/language/en/email/group_request.txt index 5ae80c7495..85664857dd 100644 --- a/phpBB/language/en/email/group_request.txt +++ b/phpBB/language/en/email/group_request.txt @@ -2,7 +2,7 @@ Subject: A request to join your group has been made Dear {USERNAME}, -A user has requested to join the group “{GROUP_NAME}” you moderate on “{SITENAME}”. +A user has requested to join the group "{GROUP_NAME}" you moderate on "{SITENAME}". To approve or deny this request for group membership please visit the following link: {U_PENDING} diff --git a/phpBB/language/en/email/installed.txt b/phpBB/language/en/email/installed.txt index 55e4127098..61cd345774 100644 --- a/phpBB/language/en/email/installed.txt +++ b/phpBB/language/en/email/installed.txt @@ -13,8 +13,8 @@ Password: {PASSWORD} Board URL: {U_BOARD} ---------------------------- -Useful information on your phpBB installation can be found in the docs folder of your installation and on phpBB.com’s support page — http://www.phpbb.com/support/ +Useful information on your phpBB installation can be found in the docs folder of your installation and on phpBB.com's support page - http://www.phpbb.com/support/ -In order to keep the board safe and secure, it is highly recommended that you keep current with software releases which can be easily done by subscribing to phpBB.com’s mailing list, located at the above URL. +In order to keep the board safe and secure, it is highly recommended that you keep current with software releases which can be easily done by subscribing to phpBB.com's mailing list, located at the above URL. {EMAIL_SIG}
\ No newline at end of file diff --git a/phpBB/language/en/email/newtopic_notify.txt b/phpBB/language/en/email/newtopic_notify.txt index ebd0f20c09..1c471a3c01 100644 --- a/phpBB/language/en/email/newtopic_notify.txt +++ b/phpBB/language/en/email/newtopic_notify.txt @@ -1,12 +1,12 @@ -Subject: New topic notification — “{FORUM_NAME}” +Subject: New topic notification - "{FORUM_NAME}" Hello {USERNAME}, -You are receiving this notification because you are watching the forum, “{FORUM_NAME}” at “{SITENAME}”. This forum has received a new topic since your last visit, “{TOPIC_TITLE}”. You can use the following link to view forum, no more notifications will be sent until you visit the forum. +You are receiving this notification because you are watching the forum, "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic since your last visit, "{TOPIC_TITLE}". You can use the following link to view forum, no more notifications will be sent until you visit the forum. {U_FORUM} -If you no longer wish to watch this forum you can either click the “Unsubscribe forum” link found in the forum above, or by clicking the following link: +If you no longer wish to watch this forum you can either click the "Unsubscribe forum" link found in the forum above, or by clicking the following link: {U_STOP_WATCHING_FORUM} diff --git a/phpBB/language/en/email/post_approved.txt b/phpBB/language/en/email/post_approved.txt index 5325376e04..e715b54026 100644 --- a/phpBB/language/en/email/post_approved.txt +++ b/phpBB/language/en/email/post_approved.txt @@ -1,8 +1,8 @@ -Subject: Post approved — “{POST_SUBJECT}” +Subject: Post approved - "{POST_SUBJECT}" Hello {USERNAME}, -You are receiving this notification because your post “{POST_SUBJECT}” at “{SITENAME}” was approved by a moderator or administrator. +You are receiving this notification because your post "{POST_SUBJECT}" at "{SITENAME}" was approved by a moderator or administrator. If you want to view the post, click the following link: {U_VIEW_POST} diff --git a/phpBB/language/en/email/post_disapproved.txt b/phpBB/language/en/email/post_disapproved.txt index d384d93784..3bc64bb611 100644 --- a/phpBB/language/en/email/post_disapproved.txt +++ b/phpBB/language/en/email/post_disapproved.txt @@ -1,8 +1,8 @@ -Subject: Post disapproved — “{POST_SUBJECT}” +Subject: Post disapproved - "{POST_SUBJECT}" Hello {USERNAME}, -You are receiving this notification because your post “{POST_SUBJECT}” at “{SITENAME}” was disapproved by a moderator or administrator. +You are receiving this notification because your post "{POST_SUBJECT}" at "{SITENAME}" was disapproved by a moderator or administrator. The following reason was given for the disapproval: diff --git a/phpBB/language/en/email/privmsg_notify.txt b/phpBB/language/en/email/privmsg_notify.txt index f93944dae6..d363df7973 100644 --- a/phpBB/language/en/email/privmsg_notify.txt +++ b/phpBB/language/en/email/privmsg_notify.txt @@ -2,7 +2,7 @@ Subject: New private message has arrived Hello {USERNAME}, -You have received a new private message from “{AUTHOR_NAME}” to your account on “{SITENAME}” with the following subject: +You have received a new private message from "{AUTHOR_NAME}" to your account on "{SITENAME}" with the following subject: {SUBJECT} diff --git a/phpBB/language/en/email/profile_send_email.txt b/phpBB/language/en/email/profile_send_email.txt index b9e03734e4..3e63777c9f 100644 --- a/phpBB/language/en/email/profile_send_email.txt +++ b/phpBB/language/en/email/profile_send_email.txt @@ -1,9 +1,9 @@ Hello {TO_USERNAME}, -The following is an email sent to you by {FROM_USERNAME} via your account on “{SITENAME}”. If this message is spam, contains abusive or other comments you find offensive please contact the webmaster of the board at the following address: +The following is an email sent to you by {FROM_USERNAME} via your account on "{SITENAME}". If this message is spam, contains abusive or other comments you find offensive please contact the webmaster of the board at the following address: -{BOARD_EMAIL} +{BOARD_CONTACT} Include this full email (particularly the headers). Please note that the reply address to this email has been set to that of {FROM_USERNAME}. diff --git a/phpBB/language/en/email/profile_send_im.txt b/phpBB/language/en/email/profile_send_im.txt index 59e06d4fd0..02c820c69d 100644 --- a/phpBB/language/en/email/profile_send_im.txt +++ b/phpBB/language/en/email/profile_send_im.txt @@ -1,9 +1,9 @@ Hello {TO_USERNAME}, -The following is a message sent to you by {FROM_USERNAME} via your account on “{SITENAME}”. If this message is spam, contains abusive or other comments you find offensive please contact the webmaster of the board at the following address: +The following is a message sent to you by {FROM_USERNAME} via your account on "{SITENAME}". If this message is spam, contains abusive or other comments you find offensive please contact the webmaster of the board at the following address: -{BOARD_EMAIL} +{BOARD_CONTACT} Include this full message. Please note that the sender address has been set to the boards IM account. diff --git a/phpBB/language/en/email/report_closed.txt b/phpBB/language/en/email/report_closed.txt index 77b7742eb4..eb7ef22b5e 100644 --- a/phpBB/language/en/email/report_closed.txt +++ b/phpBB/language/en/email/report_closed.txt @@ -1,8 +1,8 @@ -Subject: Report closed — “{POST_SUBJECT}” +Subject: Report closed - "{POST_SUBJECT}" Hello {USERNAME}, -You are receiving this notification because the report you filed on the post “{POST_SUBJECT}” in “{TOPIC_TITLE}” at “{SITENAME}” was handled by a moderator or by an administrator. The report was afterwards closed. If you have further questions contact {CLOSER_NAME} with a personal message. +You are receiving this notification because the report you filed on the post "{POST_SUBJECT}" in "{TOPIC_TITLE}" at "{SITENAME}" was handled by a moderator or by an administrator. The report was afterwards closed. If you have further questions contact {CLOSER_NAME} with a personal message. {EMAIL_SIG}
\ No newline at end of file diff --git a/phpBB/language/en/email/report_deleted.txt b/phpBB/language/en/email/report_deleted.txt index 661886a7cd..4292ca2239 100644 --- a/phpBB/language/en/email/report_deleted.txt +++ b/phpBB/language/en/email/report_deleted.txt @@ -1,8 +1,8 @@ -Subject: Report deleted — “{POST_SUBJECT}” +Subject: Report deleted - "{POST_SUBJECT}" Hello {USERNAME}, -You are receiving this notification because the report you filed on the post “{POST_SUBJECT}” in “{TOPIC_TITLE}” at “{SITENAME}” was deleted by a moderator or by an administrator. +You are receiving this notification because the report you filed on the post "{POST_SUBJECT}" in "{TOPIC_TITLE}" at "{SITENAME}" was deleted by a moderator or by an administrator. {EMAIL_SIG}
\ No newline at end of file diff --git a/phpBB/language/en/email/topic_approved.txt b/phpBB/language/en/email/topic_approved.txt index af47d0ba66..ffda378d30 100644 --- a/phpBB/language/en/email/topic_approved.txt +++ b/phpBB/language/en/email/topic_approved.txt @@ -1,8 +1,8 @@ -Subject: Topic approved — “{TOPIC_TITLE}” +Subject: Topic approved - "{TOPIC_TITLE}" Hello {USERNAME}, -You are receiving this notification because your topic “{TOPIC_TITLE}” at “{SITENAME}” was approved by a moderator or administrator. +You are receiving this notification because your topic "{TOPIC_TITLE}" at "{SITENAME}" was approved by a moderator or administrator. If you want to view the topic, click the following link: {U_VIEW_TOPIC} diff --git a/phpBB/language/en/email/topic_disapproved.txt b/phpBB/language/en/email/topic_disapproved.txt index 58cda4fbf4..49ef58bf39 100644 --- a/phpBB/language/en/email/topic_disapproved.txt +++ b/phpBB/language/en/email/topic_disapproved.txt @@ -1,8 +1,8 @@ -Subject: Topic disapproved — “{TOPIC_TITLE}” +Subject: Topic disapproved - "{TOPIC_TITLE}" Hello {USERNAME}, -You are receiving this notification because your topic “{TOPIC_TITLE}” at “{SITENAME}” was disapproved by a moderator or administrator. +You are receiving this notification because your topic "{TOPIC_TITLE}" at "{SITENAME}" was disapproved by a moderator or administrator. The following reason was given for the disapproval: diff --git a/phpBB/language/en/email/topic_notify.txt b/phpBB/language/en/email/topic_notify.txt index 6e6f52d03f..dc36eed5f5 100644 --- a/phpBB/language/en/email/topic_notify.txt +++ b/phpBB/language/en/email/topic_notify.txt @@ -1,8 +1,8 @@ -Subject: Topic reply notification — “{TOPIC_TITLE}” +Subject: Topic reply notification - "{TOPIC_TITLE}" Hello {USERNAME}, -You are receiving this notification because you are watching the topic, “{TOPIC_TITLE}” at “{SITENAME}”. This topic has received a reply since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic. +You are receiving this notification because you are watching the topic, "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic. If you want to view the newest post made since your last visit, click the following link: {U_NEWEST_POST} @@ -10,7 +10,7 @@ If you want to view the newest post made since your last visit, click the follow If you want to view the topic, click the following link: {U_TOPIC} -If you no longer wish to watch this topic you can either click the “Stop watching this topic” link found at the bottom of the topic above, or by clicking the following link: +If you no longer wish to watch this topic you can either click the "Stop watching this topic" link found at the bottom of the topic above, or by clicking the following link: {U_STOP_WATCHING_TOPIC} diff --git a/phpBB/language/en/email/user_activate.txt b/phpBB/language/en/email/user_activate.txt index fb9f3033b7..7d7960c4c5 100644 --- a/phpBB/language/en/email/user_activate.txt +++ b/phpBB/language/en/email/user_activate.txt @@ -2,7 +2,7 @@ Subject: Reactivate your account Hello {USERNAME}, -Your account on “{SITENAME}” has been deactivated, most likely due to changes made to your profile. In order to reactivate your account you must click on the link below: +Your account on "{SITENAME}" has been deactivated, most likely due to changes made to your profile. In order to reactivate your account you must click on the link below: {U_ACTIVATE} diff --git a/phpBB/language/en/email/user_activate_inactive.txt b/phpBB/language/en/email/user_activate_inactive.txt index 4c1b5a6727..a90773d48c 100644 --- a/phpBB/language/en/email/user_activate_inactive.txt +++ b/phpBB/language/en/email/user_activate_inactive.txt @@ -2,6 +2,6 @@ Subject: Your account has been deactivated Hello {USERNAME}, -Your account on “{SITENAME}” has been deactivated, most likely due to changes made to your profile. The administrator of the board will need to activate it before you can log in. You will receive another notification when this has occured. +Your account on "{SITENAME}" has been deactivated, most likely due to changes made to your profile. The administrator of the board will need to activate it before you can log in. You will receive another notification when this has occurred. {EMAIL_SIG}
\ No newline at end of file diff --git a/phpBB/language/en/email/user_activate_passwd.txt b/phpBB/language/en/email/user_activate_passwd.txt index f90fc1a586..695be115f8 100644 --- a/phpBB/language/en/email/user_activate_passwd.txt +++ b/phpBB/language/en/email/user_activate_passwd.txt @@ -2,7 +2,7 @@ Subject: New password activation Hello {USERNAME} -You are receiving this notification because you have (or someone pretending to be you has) requested a new password be sent for your account on “{SITENAME}”. If you did not request this notification then please ignore it, if you keep receiving it please contact the board administrator. +You are receiving this notification because you have (or someone pretending to be you has) requested a new password be sent for your account on "{SITENAME}". If you did not request this notification then please ignore it, if you keep receiving it please contact the board administrator. To use the new password you need to activate it. To do this click the link provided below. diff --git a/phpBB/language/en/email/user_remind_inactive.txt b/phpBB/language/en/email/user_remind_inactive.txt index f0969dfc9f..601a9ad6f9 100644 --- a/phpBB/language/en/email/user_remind_inactive.txt +++ b/phpBB/language/en/email/user_remind_inactive.txt @@ -2,10 +2,10 @@ Subject: Inactive account reminder Hello {USERNAME}, -On {REGISTER_DATE} you registered a new account at “{SITENAME}”. So far you have not activated this account, you must do this before you can login. For your convenience the activation link is repeated below. - +On {REGISTER_DATE} you registered a new account at "{SITENAME}". To date you have not activated this account which is a prerequisite for forum login. For your convenience the activation link is repeated below. + {U_ACTIVATE} -Thank you for registering at “{SITENAME}”, we look forward to your participation. +Thank you for registering at "{SITENAME}", we look forward to your participation. {EMAIL_SIG}
\ No newline at end of file diff --git a/phpBB/language/en/email/user_resend_inactive.txt b/phpBB/language/en/email/user_resend_inactive.txt index 8338cef0e6..061ffedae1 100644 --- a/phpBB/language/en/email/user_resend_inactive.txt +++ b/phpBB/language/en/email/user_resend_inactive.txt @@ -1,4 +1,4 @@ -Subject: Welcome to “{SITENAME}” — {U_BOARD} +Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} diff --git a/phpBB/language/en/email/user_welcome.txt b/phpBB/language/en/email/user_welcome.txt index fa781a324e..5389e92f4e 100644 --- a/phpBB/language/en/email/user_welcome.txt +++ b/phpBB/language/en/email/user_welcome.txt @@ -1,4 +1,4 @@ -Subject: Welcome to “{SITENAME}” — {U_BOARD} +Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} diff --git a/phpBB/language/en/email/user_welcome_inactive.txt b/phpBB/language/en/email/user_welcome_inactive.txt index 7949087155..65d0d20a56 100644 --- a/phpBB/language/en/email/user_welcome_inactive.txt +++ b/phpBB/language/en/email/user_welcome_inactive.txt @@ -1,4 +1,4 @@ -Subject: Welcome to “{SITENAME}” — {U_BOARD} +Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} diff --git a/phpBB/language/en/groups.php b/phpBB/language/en/groups.php index a936058162..2f9f6826e9 100644 --- a/phpBB/language/en/groups.php +++ b/phpBB/language/en/groups.php @@ -42,7 +42,7 @@ $lang = array_merge($lang, array( 'GROUP_DESC' => 'Group description', 'GROUP_HIDDEN' => 'Hidden', 'GROUP_INFORMATION' => 'Usergroup information', - 'GROUP_IS_CLOSED' => 'This is a closed group, new members cannot automatically join.', + 'GROUP_IS_CLOSED' => 'This is a closed group, where new members cannot automatically join and only upon invitation of a group leader.', 'GROUP_IS_FREE' => 'This is a freely open group, all new members are welcome.', 'GROUP_IS_HIDDEN' => 'This is a hidden group, only members of this group can view its membership.', 'GROUP_IS_OPEN' => 'This is an open group, members can apply to join.', diff --git a/phpBB/language/en/help_bbcode.php b/phpBB/language/en/help_bbcode.php index ada28713e0..63ac19cf28 100644 --- a/phpBB/language/en/help_bbcode.php +++ b/phpBB/language/en/help_bbcode.php @@ -44,7 +44,7 @@ $help = array( ), array( 0 => 'How to change the text colour or size', - 1 => 'To alter the color or size of your text the following tags can be used. Keep in mind that how the output appears will depend on the viewers browser and system: <ul><li>Changing the colour of text is achieved by wrapping it in <strong>[color=][/color]</strong>. You can specify either a recognised colour name (eg. red, blue, yellow, etc.) or the hexadecimal triplet alternative, eg. #FFFFFF, #000000. For example, to create red text you could use:<br /><br /><strong>[color=red]</strong>Hello!<strong>[/color]</strong><br /><br />or<br /><br /><strong>[color=#FF0000]</strong>Hello!<strong>[/color]</strong><br /><br />will both output <span style="color:red">Hello!</span></li><li>Changing the text size is achieved in a similar way using <strong>[size=][/size]</strong>. This tag is dependent on the template you are using but the recommended format is a numerical value representing the text size in pixels, starting at 1 (so tiny you will not see it) through to 29 (very large). For example:<br /><br /><strong>[size=9]</strong>SMALL<strong>[/size]</strong><br /><br />will generally be <span style="font-size:9px;">SMALL</span><br /><br />whereas:<br /><br /><strong>[size=24]</strong>HUGE!<strong>[/size]</strong><br /><br />will be <span style="font-size:24px;">HUGE!</span></li></ul>' + 1 => 'To alter the color or size of your text the following tags can be used. Keep in mind that how the output appears will depend on the viewers browser and system: <ul><li>Changing the colour of text is achieved by wrapping it in <strong>[color=][/color]</strong>. You can specify either a recognised colour name (eg. red, blue, yellow, etc.) or the hexadecimal triplet alternative, eg. #FFFFFF, #000000. For example, to create red text you could use:<br /><br /><strong>[color=red]</strong>Hello!<strong>[/color]</strong><br /><br />or<br /><br /><strong>[color=#FF0000]</strong>Hello!<strong>[/color]</strong><br /><br />will both output <span style="color:red">Hello!</span></li><li>Changing the text size is achieved in a similar way using <strong>[size=][/size]</strong>. This tag is dependent on the template the user has selected but the recommended format is a numerical value representing the text size in pixels, starting at 1 (so tiny you will not see it) through to 29 (very large). For example:<br /><br /><strong>[size=9]</strong>SMALL<strong>[/size]</strong><br /><br />will generally be <span style="font-size:9px;">SMALL</span><br /><br />whereas:<br /><br /><strong>[size=24]</strong>HUGE!<strong>[/size]</strong><br /><br />will be <span style="font-size:24px;">HUGE!</span></li></ul>' ), array( 0 => 'Can I combine formatting tags?', @@ -60,7 +60,7 @@ $help = array( ), array( 0 => 'Outputting code or fixed width data', - 1 => 'If you want to output a piece of code or in fact anything that requires a fixed width, eg. Courier type font you should enclose the text in <strong>[code][/code]</strong> tags, eg.<br /><br /><strong>[code]</strong>echo "This is some code";<strong>[/code]</strong><br /><br />All formatting used within <strong>[code][/code]</strong> tags is retained when you later view it.' + 1 => 'If you want to output a piece of code or in fact anything that requires a fixed width, eg. Courier type font you should enclose the text in <strong>[code][/code]</strong> tags, eg.<br /><br /><strong>[code]</strong>echo "This is some code";<strong>[/code]</strong><br /><br />All formatting used within <strong>[code][/code]</strong> tags is retained when you later view it.' ), array( 0 => '--', @@ -68,7 +68,7 @@ $help = array( ), array( 0 => 'Creating an Un-ordered list', - 1 => 'BBCode supports two types of lists, unordered and ordered. They are essentially the same as their HTML equivalents. An unordered list ouputs each item in your list sequentially one after the other indenting each with a bullet character. To create an unordered list you use <strong>[list][/list]</strong> and define each item within the list using <strong>[*]</strong>. For example to list your favorite colours you could use:<br /><br /><strong>[list]</strong><br /><strong>[*]</strong>Red<br /><strong>[*]</strong>Blue<br /><strong>[*]</strong>Yellow<br /><strong>[/list]</strong><br /><br />This would generate the following list:<ul><li>Red</li><li>Blue</li><li>Yellow</li></ul>' + 1 => 'BBCode supports two types of lists, unordered and ordered. They are essentially the same as their HTML equivalents. An unordered list ouputs each item in your list sequentially one after the other indenting each with a bullet character. To create an unordered list you use <strong>[list][/list]</strong> and define each item within the list using <strong>[*]</strong>. For example to list your favourite colours you could use:<br /><br /><strong>[list]</strong><br /><strong>[*]</strong>Red<br /><strong>[*]</strong>Blue<br /><strong>[*]</strong>Yellow<br /><strong>[/list]</strong><br /><br />This would generate the following list:<ul><li>Red</li><li>Blue</li><li>Yellow</li></ul>' ), array( 0 => 'Creating an Ordered list', @@ -80,7 +80,7 @@ $help = array( ), array( 0 => 'Linking to another site', - 1 => 'phpBB BBCode supports a number of ways of creating URIs, Uniform Resource Indicators better known as URLs.<ul><li>The first of these uses the <strong>[url=][/url]</strong> tag, whatever you type after the = sign will cause the contents of that tag to act as a URL. For example to link to phpBB.com you could use:<br /><br /><strong>[url=http://www.phpbb.com/]</strong>Visit phpBB!<strong>[/url]</strong><br /><br />This would generate the following link, <a href="http://www.phpbb.com/" target="_blank">Visit phpBB!</a> You will notice the link opens in a new window so the user can continue browsing the forums if they wish.</li><li>If you want the URL itself displayed as the link you can do this by simply using:<br /><br /><strong>[url]</strong>http://www.phpbb.com/<strong>[/url]</strong><br /><br />This would generate the following link, <a href="http://www.phpbb.com/" target="_blank">http://www.phpbb.com/</a></li><li>Additionally phpBB features something called <i>Magic Links</i>, this will turn any syntatically correct URL into a link without you needing to specify any tags or even the leading http://. For example typing www.phpbb.com into your message will automatically lead to <a href="http://www.phpbb.com/" target="_blank">www.phpbb.com</a> being output when you view the message.</li><li>The same thing applies equally to email addresses, you can either specify an address explicitly for example:<br /><br /><strong>[email]</strong>no.one@domain.adr<strong>[/email]</strong><br /><br />which will output <a href="emailto:no.one@domain.adr">no.one@domain.adr</a> or you can just type no.one@domain.adr into your message and it will be automatically converted when you view.</li></ul>As with all the BBCode tags you can wrap URLs around any of the other tags such as <strong>[img][/img]</strong> (see next entry), <strong>[b][/b]</strong>, etc. As with the formatting tags it is up to you to ensure the correct open and close order is following, for example:<br /><br /><strong>[url=http://www.phpbb.com/][img]</strong>http://www.phpbb.com/images/phplogo.gif<strong>[/url][/img]</strong><br /><br />is <u>not</u> correct which may lead to your post being deleted so take care.' + 1 => 'phpBB BBCode supports a number of ways of creating URIs, Uniform Resource Indicators better known as URLs.<ul><li>The first of these uses the <strong>[url=][/url]</strong> tag, whatever you type after the = sign will cause the contents of that tag to act as a URL. For example to link to phpBB.com you could use:<br /><br /><strong>[url=http://www.phpbb.com/]</strong>Visit phpBB!<strong>[/url]</strong><br /><br />This would generate the following link, <a href="http://www.phpbb.com/" target="_blank">Visit phpBB!</a> You will notice the link opens in a new window so the user can continue browsing the forums if they wish.</li><li>If you want the URL itself displayed as the link you can do this by simply using:<br /><br /><strong>[url]</strong>http://www.phpbb.com/<strong>[/url]</strong><br /><br />This would generate the following link, <a href="http://www.phpbb.com/" target="_blank">http://www.phpbb.com/</a></li><li>Additionally phpBB features something called <i>Magic Links</i>, this will turn any syntactically correct URL into a link without you needing to specify any tags or even the leading http://. For example typing www.phpbb.com into your message will automatically lead to <a href="http://www.phpbb.com/" target="_blank">www.phpbb.com</a> being output when you view the message.</li><li>The same thing applies equally to email addresses, you can either specify an address explicitly for example:<br /><br /><strong>[email]</strong>no.one@domain.adr<strong>[/email]</strong><br /><br />which will output <a href="mailto:no.one@domain.adr">no.one@domain.adr</a> or you can just type no.one@domain.adr into your message and it will be automatically converted when you view.</li></ul>As with all the BBCode tags you can wrap URLs around any of the other tags such as <strong>[img][/img]</strong> (see next entry), <strong>[b][/b]</strong>, etc. As with the formatting tags it is up to you to ensure the correct open and close order is following, for example:<br /><br /><strong>[url=http://www.google.com/][img]</strong>http://www.google.com/intl/en_ALL/images/logo.gif<strong>[/url][/img]</strong><br /><br />is <u>not</u> correct which may lead to your post being deleted so take care.' ), array( 0 => '--', @@ -88,7 +88,11 @@ $help = array( ), array( 0 => 'Adding an image to a post', - 1 => 'phpBB BBCode incorporates a tag for including images in your posts. Two very important things to remember when using this tag are; many users do not appreciate lots of images being shown in posts and secondly the image you display must already be available on the internet (it cannot exist only on your computer for example, unless you run a webserver!). There is currently no way of storing images locally with phpBB (all these issues are expected to be addressed in the next release of phpBB). To display an image you must surround the URL pointing to the image with <strong>[img][/img]</strong> tags. For example:<br /><br /><strong>[img]</strong>http://www.phpbb.com/images/phplogo.gif<strong>[/img]</strong><br /><br />As noted in the URL section above you can wrap an image in a <strong>[url][/url]</strong> tag if you wish, eg.<br /><br /><strong>[url=http://www.phpbb.com/][img]</strong>http://www.phpbb.com/images/phplogo.gif<strong>[/img][/url]</strong><br /><br />would generate:<br /><br /><a href="http://www.phpbb.com/" target="_blank"><img src="http://www.phpbb.com/images/phplogo.gif" alt="" /></a><br />' + 1 => 'phpBB BBCode incorporates a tag for including images in your posts. Two very important things to remember when using this tag are; many users do not appreciate lots of images being shown in posts and secondly the image you display must already be available on the internet (it cannot exist only on your computer for example, unless you run a webserver!). To display an image you must surround the URL pointing to the image with <strong>[img][/img]</strong> tags. For example:<br /><br /><strong>[img]</strong>http://www.google.com/intl/en_ALL/images/logo.gif<strong>[/img]</strong><br /><br />As noted in the URL section above you can wrap an image in a <strong>[url][/url]</strong> tag if you wish, eg.<br /><br /><strong>[url=http://www.google.com/][img]</strong>http://www.google.com/intl/en_ALL/images/logo.gif<strong>[/img][/url]</strong><br /><br />would generate:<br /><br /><a href="http://www.google.com/" target="_blank"><img src="http://www.google.com/intl/en_ALL/images/logo.gif" alt="" /></a>' + ), + array( + 0 => 'Adding attachments into a post', + 1 => 'Attachments can now be placed in any part of a post by using the new <strong>[attachment=][/attachment]</strong> BBCode, if the attachments functionality has been enabled by a board administrator & if you are given the appropriate permissions to create attachments. Within the posting screen is a drop-down box for placing attachments inline.' ), array( 0 => '--', @@ -96,7 +100,7 @@ $help = array( ), array( 0 => 'Can I add my own tags?', - 1 => 'No, I am afraid not directly in phpBB 2.0. We are looking at offering customisable BBCode tags for the next major version' + 1 => 'If you are an administrator on this board and have the proper permissions, you can add further BBCodes through the Custom BBCodes section.' ) ); diff --git a/phpBB/language/en/help_faq.php b/phpBB/language/en/help_faq.php index 9e68ebf393..49192f91d5 100644 --- a/phpBB/language/en/help_faq.php +++ b/phpBB/language/en/help_faq.php @@ -44,7 +44,7 @@ $help = array( ), array( 0 => 'How do I prevent my username appearing in the online user listings?', - 1 => 'In your profile you will find an option <em>Hide your online status</em>, if you switch this <em>on</em> you’ll only appear to board administrators, moderators, or to yourself. You will be counted as a hidden user.' + 1 => 'Within the UCP under “Forum preferences” you will find an option <em>Hide your online status</em>, if you enable this option with <samp>Yes</samp>, you’ll only appear to the administrators, moderators or yourself. You will be counted as a hidden user.' ), array( 0 => 'I’ve lost my password!', @@ -112,7 +112,7 @@ $help = array( ), array( 0 => 'How do I edit or delete a post?', - 1 => 'Unless you are the board admin or forum moderator you can only edit or delete your own posts. You can edit a post (sometimes for only a limited time after it was made) by clicking the <em>edit</em> button for the relevant post. If someone has already replied to the post you will find a small piece of text output below the post when you return to the topic, this lists the number of times you edited it. This will only appear if no one has replied, it also will not appear if moderators or administrators edit the post (they should leave a message saying what they altered and why). Please note that normal users cannot delete a post once someone has replied.' + 1 => 'Unless you are the board admin or forum moderator you can only edit or delete your own posts. You can edit a post (sometimes for only a limited time after it was made) by clicking the <em>edit</em> button for the relevant post. If someone has already replied to the post you will find a small piece of text output below the post when you return to the topic, which lists the number of times you edited it along with when. This will not appear if no one has replied, nor will not appear if moderators or administrators edit the post though they may leave a note as to why they’ve edited the post at their own disgression. Please note that normal users cannot delete a post once someone has replied.' ), array( 0 => 'How do I add a signature to my post?', @@ -140,7 +140,7 @@ $help = array( ), array( 0 => 'Why did I receive a warning?', - 1 => 'Each board administrator has their own set of rules for their site. If they feel you have broken one of your rules, they may issue you a warning. Please note that this is the board administrator’s decision, and the phpBB Group does not have anything to do with the warning on the given site.' + 1 => 'Each board administrator has their own set of rules for their site. If they feel you have broken one of their rules, they may issue you a warning. Please note that this is the board administrator’s decision, and the phpBB Group does not have anything to do with the warning on the given site.' ), array( 0 => 'How can I report posts to a moderator?', @@ -172,7 +172,7 @@ $help = array( ), array( 0 => 'What are Smilies?', - 1 => 'Smilies, or Emoticons are small graphical images which can be used to express some feeling using a short code, e.g. :) means happy, :( means sad. The full list of emoticons can be seen via the posting form. Try not to overuse smileys though, they can quickly render a post unreadable and a moderator may decide to edit them out or remove the post altogether.' + 1 => 'Smilies, or Emoticons are small graphical images which can be used to express some feeling using a short code, e.g. :) means happy, :( means sad. The full list of emoticons can be seen via the posting form. Try not to overuse smilies though, they can quickly render a post unreadable and a moderator may decide to edit them out or remove the post altogether. The board administrator may also have set a limit to the number of such smilies you may use within a post.' ), array( 0 => 'Can I post images?', @@ -180,7 +180,7 @@ $help = array( ), array( 0 => 'What are global announcements?', - 1 => 'Global announcements contain important information and you should read them as soon as possible. Global announcements will appear at the top of every forum and also within your User Control Panel. Whether or not you can post a gloabl announcement depends on the permissions required, these are set by the administrator.' + 1 => 'Global announcements contain important information and you should read them as soon as possible. Global announcements will appear at the top of every forum and also within your User Control Panel. Whether or not you can post a global announcement depends on the permissions required, these are set by the administrator.' ), array( 0 => 'What are announcements?', @@ -196,7 +196,7 @@ $help = array( ), array( 0 => 'What are topic icons?', - 1 => 'Topic icons are images which can be assosciated with posts to indicate their content. The ability to use topic icons depends on the permissions set by the administrator.' + 1 => 'Topic icons are images which can be associated with posts to indicate their content. The ability to use topic icons depends on the permissions set by the administrator.' ), array( 0 => '--', @@ -216,11 +216,11 @@ $help = array( ), array( 0 => 'How do I join a Usergroup?', - 1 => 'To join a Usergroup click the Usergroup link within your User Control Panel, you can then view all usergroups. Not all groups are <em>open access</em>, some may require approval to join, some are closed and some may even have hidden memberships. If the group is open then you can join it by clicking the appropriate button. If a group requires approval to join you may request to join it by clicking the appropriate button. The user group moderator will need to approve your request, they may ask why you want to join the group. Please do not pester a group moderator if they turn your request down, they will have their reasons.' + 1 => 'To join a Usergroup click the Usergroup link within your User Control Panel, you can then view all usergroups. Not all groups are <em>open access</em>, some may require approval to join, some are closed and some may even have hidden memberships. If the group is open then you can join it by clicking the appropriate button. If a group requires approval to join you may request to join it by clicking the appropriate button. The user group leader will need to approve your request, they may ask why you want to join the group. Please do not pester a group leader if they turn your request down, they will have their reasons.' ), array( - 0 => 'How do I become a Usergroup Moderator?', - 1 => 'When Usergroups are initially created by the board administrator, they also assign a Usergroup moderator. If you are interested in creating a Usergroup then your first point of contact should be the administrator, try sending them a private message.' + 0 => 'How do I become a Usergroup Leader?', + 1 => 'When Usergroups are initially created by the board administrator, they also assign a Usergroup leader. If you are interested in creating a Usergroup then your first point of contact should be the administrator, try sending them a private message.' ), array( 0 => 'Why do some Usergroups appear in a different colour?', @@ -256,7 +256,7 @@ $help = array( ), array( 0 => 'What is my Friends and Foes list?', - 1 => 'You can use these lists to organise other members of the forum. Members added to your friends list will be listed within your User Control Panel for quick access to see their online status and to send them private messages. Subject to template support, posts from these users may also be highlighted. If you add a user to your foes list them any posts made by them will be hidden by default.' + 1 => 'You can use these lists to organise other members of the forum. Members added to your friends list will be listed within your User Control Panel for quick access to see their online status and to send them private messages. Subject to template support, posts from these users may also be highlighted. If you add a user to your foes list then any posts made by them will be hidden by default.' ), array( 0 => 'How can I add / remove users to my friends or foes list?', @@ -284,7 +284,7 @@ $help = array( ), array( 0 => 'How can I find my own posts and topics?', - 1 => 'Your own posts can be retrieved either by clicking the “Search user’s posts” within the User Control Panel or via your own profile page. To search for your topics, use the Advanced search page and fill in the various options appropiately.' + 1 => 'Your own posts can be retrieved either by clicking the “Search user’s posts” within the User Control Panel or via your own profile page. To search for your topics, use the Advanced search page and fill in the various options appropriately.' ), array( 0 => '--', @@ -320,7 +320,7 @@ $help = array( ), array( 0 => 'Who wrote this bulletin board?', - 1 => 'This software (in its unmodified form) is produced, released and is copyright <a href="http://www.phpbb.com/" target="_blank">phpBB Group</a>. It is made available under the GNU General Public Licence and may be freely distributed, see link for more details' + 1 => 'This software (in its unmodified form) is produced, released and is copyright <a href="http://www.phpbb.com/">phpBB Group</a>. It is made available under the GNU General Public Licence and may be freely distributed, see link for more details' ), array( 0 => 'Why isn’t X feature available?', diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index f6c1105d20..42e0cf5ccf 100755 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -31,7 +31,7 @@ if (empty($lang) || !is_array($lang)) // in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine $lang = array_merge($lang, array( - 'ADMIN_CONFIG' => 'Admin Configuration', + 'ADMIN_CONFIG' => 'Administrator configuration', 'ADMIN_PASSWORD' => 'Administrator password', 'ADMIN_PASSWORD_CONFIRM' => 'Confirm administrator password', 'ADMIN_PASSWORD_EXPLAIN' => '(Please enter a password between 6 and 30 characters in length)', @@ -39,16 +39,18 @@ $lang = array_merge($lang, array( 'ADMIN_USERNAME' => 'Administrator username', 'ADMIN_USERNAME_EXPLAIN' => '(Please enter a username between 3 and 20 characters in length)', 'APP_MAGICK' => 'Imagemagick support [ Attachments ]', - 'AUTHOR_NOTES' => 'Author Notes<br />» %s', + 'AUTHOR_NOTES' => 'Author notes<br />» %s', 'AVAILABLE' => 'Available', - 'AVAILABLE_CONVERTORS' => 'Available Convertors', + 'AVAILABLE_CONVERTORS' => 'Available convertors', - 'BEGIN_CONVERT' => 'Begin conversion', - 'BLANK_PREFIX_FOUND' => 'A scan of your tables has shown a valid installation using no table prefix.', + 'BEGIN_CONVERT' => 'Begin conversion', + 'BLANK_PREFIX_FOUND' => 'A scan of your tables has shown a valid installation using no table prefix.', + 'BOARD_NOT_INSTALLED' => 'No installation found', + 'BOARD_NOT_INSTALLED_EXPLAIN' => 'To perform a conversion you need to have a default installation of phpBB3. Please note that for a conversion the new installation and the old installation need to reside within the same database. You may now want to <a href="%s">perform an installation</a>.', 'CATEGORY' => 'Category', 'CACHE_STORE' => 'Cache type', - 'CACHE_STORE_EXPLAIN' => 'The physical location where data is cached, filesystem is prefered.', + 'CACHE_STORE_EXPLAIN' => 'The physical location where data is cached, filesystem is preferred.', 'CAT_CONVERT' => 'Convert', 'CAT_INSTALL' => 'Install', 'CAT_OVERVIEW' => 'Overview', @@ -57,20 +59,24 @@ $lang = array_merge($lang, array( 'CLEAN_VERIFY' => 'Cleaning up and verifying the final structure', 'CONFIG_CONVERT' => 'Converting the configuration', 'CONFIG_FILE_UNABLE_WRITE' => 'It was not possible to write the configuration file. Alternative methods for this file to be created are presented below', - 'CONFIG_FILE_WRITTEN' => 'The configuration file has been written, you may now proceed to the next step of the installation', + 'CONFIG_FILE_WRITTEN' => 'The configuration file has been written. You may now proceed to the next step of the installation', + 'CONFIG_PHPBB_EMPTY' => 'The phpBB3 config variable for "%s" is empty.', 'CONFIG_RETRY' => 'Retry', 'CONTACT_EMAIL_CONFIRM' => 'Confirm contact email', 'CONTINUE_CONVERT' => 'Continue conversion', + 'CONTINUE_CONVERT_BODY' => 'A previous conversion attempt has been determined. You are now able to choose between starting a new conversion or continuing the conversion.', 'CONTINUE_LAST' => 'Continue last statements', + 'CONTINUE_OLD_CONVERSION' => 'Continue previously started conversion', 'CONVERT' => 'Convert', 'CONVERT_COMPLETE' => 'Conversion completed', 'CONVERT_COMPLETE_EXPLAIN' => 'You have now successfully converted your board to phpBB 3.0. You can now login and <a href="../">access your forum</a>. Remember that help on using phpBB is available online via the <a href="http://www.phpbb.com/support/documentation/3.0/">Userguide</a> and the <a href="http://www.phpbb.com/phpBB/viewforum.php?f=46">Beta support forum</a>', 'CONVERT_INTRO' => 'Welcome to the phpBB Unified Convertor Framework', 'CONVERT_INTRO_BODY' => 'From here, you are able to import data from other (installed) forum systems. The list below shows all the conversion modules currently available. If there is no convertor shown in this list for the forum software you wish to convert from, please check our website where further conversion modules may be available for download.', + 'CONVERT_NEW_CONVERSION' => 'New conversion', 'CONVERT_NOT_EXIST' => 'The specified convertor does not exist', 'CONVERT_SETTINGS_VERIFIED' => 'The information you entered has been verified. To start the conversion progress, push the button below to begin', - 'CONV_ERROR_ATTACH_FTP_DIR' => 'FTP Upload for Attachments is enabled at the old board. Please copy all Attachment files to a directory accessible, disable ftp uploading and make sure a valid upload dir is specified. If you have done this, restart the convertor.', + 'CONV_ERROR_ATTACH_FTP_DIR' => 'FTP upload for attachments is enabled at the old board. Please disable the FTP upload option and make sure a valid upload directory is specified, then copy all attachment files to this new web accessible directory. Once you have done this, restart the convertor.', 'CONV_ERROR_CONFIG_EMPTY' => 'There is no configuration information available for the conversion.', 'CONV_ERROR_FORUM_ACCESS' => 'Unable to get forum access information.', 'CONV_ERROR_GET_CATEGORIES' => 'Unable to get categories.', @@ -88,20 +94,21 @@ $lang = array_merge($lang, array( 'CONV_ERROR_NO_GROUP' => 'Group "%1$s" could not be found in %2$s.', 'CONV_ERROR_NO_RANKS_PATH' => 'Note to developer: you must specify $convertor[\'ranks_path\'] to use %s.', 'CONV_ERROR_NO_SMILIES_PATH' => 'Note to developer: you must specify $convertor[\'smilies_path\'] to use %s.', - 'CONV_ERROR_NO_UPLOAD_DIR' => 'Note to developer: you must specify $convertor[\'upload_dir\'] to use %s.', + 'CONV_ERROR_NO_UPLOAD_DIR' => 'Note to developer: you must specify $convertor[\'upload_path\'] to use %s.', 'CONV_ERROR_PERM_SETTING' => 'Unable to insert/update permission setting.', 'CONV_ERROR_PM_COUNT' => 'Unable to select folder pm count.', 'CONV_ERROR_REPLACE_CATEGORY' => 'Unable to insert new forum replacing old category.', 'CONV_ERROR_REPLACE_FORUM' => 'Unable to insert new forum replacing old forum.', 'CONV_ERROR_USER_ACCESS' => 'Unable to get user authentication information.', 'CONV_ERROR_WRONG_GROUP' => 'Wrong group "%1$s" defined in %2$s.', + 'CONV_SAVED_MESSAGES' => 'Saved messages', 'COULD_NOT_COPY' => 'Could not copy file <strong>%1$s</strong> to <strong>%2$s</strong><br /><br />Please check that the target directory exists and is writable by the webserver', 'COULD_NOT_FIND_PATH' => 'Could not find path to your former forum. Please check your settings and try again.<br />» Specified source path was %s', 'DBMS' => 'Database type', - 'DB_CONFIG' => 'Database Configuration', - 'DB_CONNECTION' => 'Database Connection', + 'DB_CONFIG' => 'Database configuration', + 'DB_CONNECTION' => 'Database connection', 'DB_ERR_INSERT' => 'Error while processing <code>INSERT</code> query', 'DB_ERR_LAST' => 'Error while processing <var>query_last</var>', 'DB_ERR_QUERY_FIRST' => 'Error while executing <var>query_first</var>', @@ -114,9 +121,9 @@ $lang = array_merge($lang, array( 'DB_PORT' => 'Database server port', 'DB_PORT_EXPLAIN' => 'Leave this blank unless you know the server operates on a non-standard port.', 'DB_USERNAME' => 'Database username', - 'DB_TEST' => 'Test Connection', + 'DB_TEST' => 'Test connection', 'DEFAULT_LANG' => 'Default board language', - 'DEFAULT_PREFIX_IS' => 'The default table prefix for %1$s is <strong>%2$s</strong>', + 'DEFAULT_PREFIX_IS' => 'The convertor was not able to find tables with the specified prefix. Please make sure you have the old within the same database as your phpBB 3.0.x installation. The default table prefix for %1$s is <strong>%2$s</strong>', 'DEV_NO_TEST_FILE' => 'No value has been specified for the test_file variable in the convertor. If you are a user of this convertor, you should not be seeing this error, please report this message to the convertor author. If you are a convertor author, you must specify the name of a file which exists in the source forum to allow the path to it to be verified.', 'DIRECTORIES_AND_FILES' => 'Directory and file setup', 'DISABLE_KEYS' => 'Disabling keys', @@ -140,32 +147,32 @@ $lang = array_merge($lang, array( 'ENABLE_KEYS' => 'Re-enabling keys. This can take a while', - 'FILES_OPTIONAL' => 'Optional Files and Directories', - 'FILES_OPTIONAL_EXPLAIN' => '<strong>Optional</strong> - These files, directories or permissions are not required. The installation routines will attempt to use various techniques to complete if they do not exist or cannot be written to. However, the presence of these files, directories or permissions will speed installation.', + 'FILES_OPTIONAL' => 'Optional files and directories', + 'FILES_OPTIONAL_EXPLAIN' => '<strong>Optional</strong> - These files, directories or permission settings are not required. The installation system will attempt to use various techniques to create them if they do not exist or cannot be written to. However, the presence of these will speed installation.', 'FILES_REQUIRED' => 'Files and Directories', 'FILES_REQUIRED_EXPLAIN' => '<strong>Required</strong> - In order to function correctly phpBB needs to be able to access or write to certain files or directories. If you see “Not Found” you need to create the relevant file or directory. If you see “Unwriteable” you need to change the permissions on the file or directory to allow phpBB to write to it.', 'FILLING_TABLE' => 'Filling table <strong>%s</strong>', - 'FILLING_TABLES' => 'Filling Tables', - 'FINAL_STEP' => 'Process Final Step', + 'FILLING_TABLES' => 'Filling tables', + 'FINAL_STEP' => 'Processing final step', 'FORUM_ADDRESS' => 'Forum address', - 'FORUM_ADDRESS_EXPLAIN' => 'This is the http address of your former forum', + 'FORUM_ADDRESS_EXPLAIN' => 'This is the URL of your former forum, for example <samp>http://www.example.com/phpBB2/</samp>. If an address is entered here and not left empty every instance of this address will be replaced by your new forum address within messages, private messages and signatures.', 'FORUM_PATH' => 'Forum path', 'FORUM_PATH_EXPLAIN' => 'This is the <strong>relative</strong> path on disk to your former forum from the <strong>root of your phpBB install</strong>', 'FOUND' => 'Found', 'FTP_CONFIG' => 'Transfer config by FTP', 'FTP_CONFIG_EXPLAIN' => 'phpBB has detected the presence of the FTP module on this server. You may attempt to install your config.php via this if you wish. You will need to supply the information listed below. Remember your username and password are those to your server! (ask your hosting provider for details if you are unsure what these are)', - 'FTP_PATH' => 'FTP Path', + 'FTP_PATH' => 'FTP path', 'FTP_PATH_EXPLAIN' => 'This is the path from your root directory to that of phpBB, e.g. htdocs/phpBB3/', 'FTP_UPLOAD' => 'Upload', 'GPL' => 'General Public License', - 'INITIAL_CONFIG' => 'Basic Configuration', - 'INITIAL_CONFIG_EXPLAIN' => 'Now that install has determined your server can run phpBB you need to supply some specific information. If you do not know how to connect to your database please contact your hosting provider (in the first instance) or use the phpBB support forums. When entering data please ensure you check it thoroughly before continuing.', + 'INITIAL_CONFIG' => 'Basic configuration', + 'INITIAL_CONFIG_EXPLAIN' => 'Now that install has determined your server can run phpBB you need to supply some specific information. If you do not know how to connect to your database please contact your hosting provider (in the first instance) or use the phpBB support forums. When entering data please ensure you check it thoroughly before continuing.', 'INSTALL_CONGRATS' => 'Congratulations', 'INSTALL_CONGRATS_EXPLAIN' => 'You have now successfully installed phpBB 3.0. Clicking the button below will take you to your Administration Control Panel (ACP). Take some time to examine the options available to you. Remember that help is available online via the <a href="http://www.phpbb.com/support/documentation/3.0/">Userguide</a> and the <a href="http://www.phpbb.com/phpBB/viewforum.php?f=46">Beta support forum</a>, see the %sREADME%s for further information.<br /><br /><strong>Please now delete, move or rename the install directory before you use your forum. If this directory is still present, only the Administration Control Panel (ACP) will be accessible.</strong>', 'INSTALL_INTRO' => 'Welcome to Installation', - 'INSTALL_INTRO_BODY' => 'With this option, it is possible to install phpBB onto your server.</p><p>In order to proceed, you will need the following information to hand:</p> + 'INSTALL_INTRO_BODY' => 'With this option, it is possible to install phpBB onto your server.</p><p>In order to proceed, you will need the following information on hand:</p> <ul> <li>Database server name</li> <li>Database name</li> @@ -179,8 +186,8 @@ $lang = array_merge($lang, array( 'INSTALL_NEXT_PASS' => 'All the basic tests have been passed and you may proceed to the next stage of installation. If you have changed any permissions, modules, etc. and wish to re-test you can do so if you wish.', 'INSTALL_PANEL' => 'Installation Panel', 'INSTALL_SEND_CONFIG' => 'Unfortunately phpBB could not write the configuration information directly to your config.php. This may be because the file does not exist or is not writeable. A number of options will be listed below enabling you to complete installation of config.php.', - 'INSTALL_START' => 'Start Install', - 'INSTALL_TEST' => 'Test Again', + 'INSTALL_START' => 'Start install', + 'INSTALL_TEST' => 'Test again', 'INST_ERR' => 'Installation error', 'INST_ERR_DB_CONNECT' => 'Could not connect to the database, see error message below', 'INST_ERR_DB_FORUM_PATH' => 'The database file specified is within your forum directory tree. You should put this file in a non web-accessible location', @@ -189,12 +196,13 @@ $lang = array_merge($lang, array( 'INST_ERR_DB_NO_SQLITE' => 'The version of the SQLite extension you have installed is too old, it must be upgraded to at least 2.8.2.', 'INST_ERR_DB_NO_ORACLE' => 'The version of Oracle installed on this machine requires you to set the <var>NLS_CHARACTERSET</var> parameter to <var>UTF8</var>. Either upgrade your installation to 9.2+ or change the parameter.', 'INST_ERR_DB_NO_FIREBIRD' => 'The version of Firebird installed on this machine is older than 2.0, please upgrade to a newer version.', + 'INST_ERR_DB_NO_FIREBIRD_PS'=> 'The database you selected for Firebird has a page size less than 8192, it must be at least 8192.', 'INST_ERR_DB_NO_POSTGRES' => 'The database you have selected was not created in <var>UNICODE</var> or <var>UTF8</var> encoding. Try installing with a database in <var>UNICODE</var> or <var>UTF8</var> encoding', 'INST_ERR_DB_NO_NAME' => 'No database name specified', 'INST_ERR_EMAIL_INVALID' => 'The email address you entered is invalid', 'INST_ERR_EMAIL_MISMATCH' => 'The emails you entered did not match.', 'INST_ERR_FATAL' => 'Fatal installation error', - 'INST_ERR_FATAL_DB' => 'A fatal and unrecoverable database error has occured. This may be because the specified user does not have appropriate rights to <code>CREATE TABLES</code> or <code>INSERT</code> data, etc. Further information may be given below. Please contact your hosting provider in the first instance or the support forums of phpBB for further assistance.', + 'INST_ERR_FATAL_DB' => 'A fatal and unrecoverable database error has occurred. This may be because the specified user does not have appropriate rights to <code>CREATE TABLES</code> or <code>INSERT</code> data, etc. Further information may be given below. Please contact your hosting provider in the first instance or the support forums of phpBB for further assistance.', 'INST_ERR_FTP_PATH' => 'Could not change to the given directory, please check the path.', 'INST_ERR_FTP_LOGIN' => 'Could not login to FTP server, check your username and password', 'INST_ERR_MISSING_DATA' => 'You must fill out all fields in this block', @@ -209,6 +217,18 @@ $lang = array_merge($lang, array( 'INST_ERR_USER_TOO_SHORT' => 'The username you entered is too short. The minimum length is 3 characters.', 'INVALID_PRIMARY_KEY' => 'Invalid primary key : %s', + // mbstring + 'MBSTRING_CHECK' => '<samp>mbstring</samp> extension check', + 'MBSTRING_CHECK_EXPLAIN' => '<samp>mbstring</samp> is a PHP extension that provides multibyte string functions. Certain features of mbstring are not compatible with phpBB and must be disabled.', + 'MBSTRING_FUNC_OVERLOAD' => 'Function overloading', + 'MBSTRING_FUNC_OVERLOAD_EXPLAIN' => '<var>mbstring.func_overload</var> must be set to either 0 or 4', + 'MBSTRING_ENCODING_TRANSLATION' => 'Transparent character encoding', + 'MBSTRING_ENCODING_TRANSLATION_EXPLAIN' => '<var>mbstring.encoding_translation</var> must be set to 0', + 'MBSTRING_HTTP_INPUT' => 'HTTP input character conversion', + 'MBSTRING_HTTP_INPUT_EXPLAIN' => '<var>mbstring.http_input</var> must be set to <samp>pass</samp>', + 'MBSTRING_HTTP_OUTPUT' => 'HTTP output character conversion', + 'MBSTRING_HTTP_OUTPUT_EXPLAIN' => '<var>mbstring.http_output</var> must be set to <samp>pass</samp>', + 'MAKE_FOLDER_WRITABLE' => 'Please make sure that this folder exists and is writable by the webserver then try again:<br />»<strong>%s</strong>', 'MAKE_FOLDERS_WRITABLE' => 'Please make sure that these folders exist and are writable by the webserver then try again:<br />»<strong>%s</strong>', @@ -221,60 +241,62 @@ $lang = array_merge($lang, array( 'NO_LOCATION' => 'Cannot determine location. If you know Imagemagick is installed, you may specify the location later within your Administration Panel', 'NO_TABLES_FOUND' => 'No tables found.', // TODO: Write some explanatory introduction text - 'OVERVIEW_BODY' => 'Welcome to our public beta of the next-generation of phpBB after 2.0.x, phpBB 3.0! This beta release is intended for advanced users to try out on dedicated development enviroments to help us finish creating the best Opensource Bulletin Board solution available.</p><p><strong style="text-transform: uppercase;">Note:</strong> This release is <strong style="text-transform: uppercase;">not final</strong> and made available for testing purposes <strong style="text-transform: uppercase;">only</strong>.</p><p>This installation system will guide you through the process of installing phpBB, converting from a different software package or updating to the latest version of phpBB. For more information on each option, select it from the menu above.', - 'PCRE_UTF_SUPPORT' => 'PCRE UTF-8 Support', + 'OVERVIEW_BODY' => 'Welcome to our public beta of the next-generation of phpBB after 2.0.x, phpBB 3.0! This beta release is intended for advanced users to try out on dedicated development environments to help us finish creating the best Opensource Bulletin Board solution available.</p><p><strong style="text-transform: uppercase;">Note:</strong> This release is <strong style="text-transform: uppercase;">not final</strong> and made available for testing purposes <strong style="text-transform: uppercase;">only</strong>.</p><p>This installation system will guide you through the process of installing phpBB, converting from a different software package or updating to the latest version of phpBB. For more information on each option, select it from the menu above.', + 'PCRE_UTF_SUPPORT' => 'PCRE UTF-8 support', 'PCRE_UTF_SUPPORT_EXPLAIN' => 'phpBB will <strong>not</strong> run if your PHP installation is not compiled with UTF-8 support in the PCRE extension', - 'PHP_OPTIONAL_MODULE' => 'Optional Modules', - 'PHP_OPTIONAL_MODULE_EXPLAIN' => '<strong>Optional</strong> - These modules or applications are optional, you do not need these to use phpBB 3.0. However if you do have them they will will enable greater functionality.', - 'PHP_SUPPORTED_DB' => 'Supported Databases', + 'PHP_OPTIONAL_MODULE' => 'Optional modules', + 'PHP_OPTIONAL_MODULE_EXPLAIN' => '<strong>Optional</strong> - These modules or applications are optional. However, if they are available they will enable extra features.', + 'PHP_SUPPORTED_DB' => 'Supported databases', 'PHP_SUPPORTED_DB_EXPLAIN' => '<strong>Required</strong> - You must have support for at least one compatible database within PHP. If no database modules are shown as available you should contact your hosting provider or review the relevant PHP installation documentation for advice.', 'PHP_REGISTER_GLOBALS' => 'PHP setting <var>register_globals</var> is disabled', 'PHP_REGISTER_GLOBALS_EXPLAIN' => 'phpBB will still run if this setting is enabled, but if possible, it is recommended that register_globals is disabled on your PHP install for security reasons.', - 'PHP_SAFE_MODE' => 'Safe Mode', - 'PHP_SETTINGS' => 'PHP Version and Settings', + 'PHP_SAFE_MODE' => 'Safe mode', + 'PHP_SETTINGS' => 'PHP version and settings', 'PHP_SETTINGS_EXPLAIN' => '<strong>Required</strong> - You must be running at least version 4.3.3 of PHP in order to install phpBB. If <var>safe mode</var> is displayed below your PHP installation is running in that mode. This will impose limitations on remote administration and similar features.', 'PHP_VERSION_REQD' => 'PHP version >= 4.3.3', - 'POST_ID' => 'Post id', + 'POST_ID' => 'Post ID', 'PREFIX_FOUND' => 'A scan of your tables has shown a valid installation using <strong>%s</strong> as table prefix.', 'PREPROCESS_STEP' => 'Executing pre-processing functions/queries', 'PRE_CONVERT_COMPLETE' => 'All pre-conversion steps have successfully been completed. You may now begin the actual conversion process.', 'PROCESS_LAST' => 'Processing last statements', + 'REFRESH_PAGE' => 'Refresh page to continue conversion', + 'REFRESH_PAGE_EXPLAIN' => 'If set to yes, the convertor will refresh the page to continue the conversion after having finished a step. If this is your first conversion for testing purposes and to determine any errors in advance, we suggest to set this to No.', // 'REQUIRED' => 'Required', - 'REQUIREMENTS_TITLE' => 'Installation Compatibility', - 'REQUIREMENTS_EXPLAIN' => 'Before proceeding with full installation phpBB will carry out some tests on your server configuration and files to ensure that you are able to install and run phpBB. Please ensure you read through the results thoroughly and do not proceed until all the required tests are passed. If you wish to enable any of the functionality listed by the optional tests, you should ensure that these tests are passed also.', + 'REQUIREMENTS_TITLE' => 'Installation compatibility', + 'REQUIREMENTS_EXPLAIN' => 'Before proceeding with the full installation phpBB will carry out some tests on your server configuration and files to ensure that you are able to install and run phpBB. Please ensure you read through the results thoroughly and do not proceed until all the required tests are passed. If you wish to use any of the features depending on the optional tests, you should ensure that these tests are passed also.', 'RETRY_WRITE' => 'Retry writing config', 'RETRY_WRITE_EXPLAIN' => 'If you wish you can change the permissions on config.php to allow phpBB to write to it. Should you wish to do that you can click Retry below to try again. Remember to return the permissions on config.php after phpBB has finished installation.', 'SCRIPT_PATH' => 'Script path', - 'SCRIPT_PATH_EXPLAIN' => 'The path where phpBB is located relative to the domain name', + 'SCRIPT_PATH_EXPLAIN' => 'The path where phpBB is located relative to the domain name, e.g. <samp>/phpBB3</samp>', 'SELECT_LANG' => 'Select language', - 'SERVER_CONFIG' => 'Server Configuration', - 'SOFTWARE' => 'Forum Software', - 'SPECIFY_OPTIONS' => 'Specify Conversion Options', - 'STAGE_ADMINISTRATOR' => 'Administrator Details', - 'STAGE_ADVANCED' => 'Advanced Settings', - 'STAGE_ADVANCED_EXPLAIN' => 'The settings on this page are only necessary to set if you know that you require something different from the default. If unsure, just proceed to the next page, this can be altered from the Administration Panel later.', - 'STAGE_CONFIG_FILE' => 'Configuration File', - 'STAGE_CREATE_TABLE' => 'Create Database Tables', + 'SERVER_CONFIG' => 'Server configuration', + 'SOFTWARE' => 'Forum software', + 'SPECIFY_OPTIONS' => 'Specify conversion options', + 'STAGE_ADMINISTRATOR' => 'Administrator details', + 'STAGE_ADVANCED' => 'Advanced settings', + 'STAGE_ADVANCED_EXPLAIN' => 'The settings on this page are only necessary to set if you know that you require something different from the default. If you are unsure, just proceed to the next page, as these settings can be altered from the Administration Control Panel later.', + 'STAGE_CONFIG_FILE' => 'Configuration file', + 'STAGE_CREATE_TABLE' => 'Create database tables', 'STAGE_CREATE_TABLE_EXPLAIN' => 'The database tables used by phpBB 3.0 have been created and populated with some initial data. Proceed to the next screen to finish installing phpBB.', - 'STAGE_DATABASE' => 'Database Settings', - 'STAGE_FINAL' => 'Final Stage', + 'STAGE_DATABASE' => 'Database settings', + 'STAGE_FINAL' => 'Final stage', 'STAGE_INTRO' => 'Introduction', 'STAGE_IN_PROGRESS' => 'Conversion in progress', 'STAGE_REQUIREMENTS' => 'Requirements', 'STAGE_SETTINGS' => 'Settings', - 'STARTING_CONVERT' => 'Starting Conversion Process', - 'STEP_PERCENT_COMPLETED' => 'Step <strong>%d</strong> of <strong>%d</strong>: %d%% completed', + 'STARTING_CONVERT' => 'Starting conversion process', + 'STEP_PERCENT_COMPLETED' => 'Step <strong>%d</strong> of <strong>%d</strong>', 'SUB_INTRO' => 'Introduction', 'SUB_LICENSE' => 'License', 'SUB_SUPPORT' => 'Support', - 'SUCCESSFUL_CONNECT' => 'Successful Connection', + 'SUCCESSFUL_CONNECT' => 'Successful connection', // TODO: Write some text on obtaining support 'SUPPORT_BODY' => 'During the beta phase a minimal level of support will be given at <a href="http://www.phpbb.com/phpBB/viewforum.php?f=46">the phpBB 3.0 Beta support forum</a>. We will provide answers to general setup questions, configuration problems and support for determining common problems mostly related to bugs. We will not support modifications, custom code/style additions or any users using the beta packages within a live environment.</p><p>For additional assistance, please refer to our <a href="http://www.phpbb.com/support/documentation/3.0/quickstart/">Quick Start Guide</a>.</p><p>To ensure you stay up to date with the latest news and releases, why not <a href="http://www.phpbb.com/support/">subscribe to our mailing list</a>', 'SYNC_FORUMS' => 'Starting to sync forums', 'SYNC_TOPICS' => 'Starting to sync topics', - 'SYNC_TOPIC_ID' => 'Synchronising topics from topic_id $1%s to $2%s', + 'SYNC_TOPIC_ID' => 'Synchronising topics from <var>topic_id</var> %1$s to %2$s', 'TABLES_MISSING' => 'Could not find these tables<br />» <strong>%s</strong>.', 'TABLE_PREFIX' => 'Prefix for tables in database', @@ -285,6 +307,7 @@ $lang = array_merge($lang, array( 'UNABLE_WRITE_LOCK' => 'Unable to write lock file', 'UNAVAILABLE' => 'Unavailable', 'UNWRITEABLE' => 'Unwriteable', + 'UPDATE_TOPICS_POSTED' => 'Generating topics posted informations', 'VERSION' => 'Version', @@ -294,18 +317,21 @@ $lang = array_merge($lang, array( // Updater $lang = array_merge($lang, array( - 'ALL_FILES_UP_TO_DATE' => 'All files are up to date with the latest phpBB version. You may want to run the database update tool now.', + 'ALL_FILES_UP_TO_DATE' => 'All files are up to date with the latest phpBB version. You should now <a href="../ucp.php?mode=login">login to your board</a> and check if everything is working fine. Do not forget to delete, rename or move your install directory!', 'ARCHIVE_FILE' => 'Source file within archive', - 'BACK' => 'Back', + 'BACK' => 'Back', + 'BINARY_FILE' => 'Binary file', 'CHECK_FILES' => 'Check files', 'CHECK_FILES_AGAIN' => 'Check files again', 'CHECK_FILES_EXPLAIN' => 'Within the next step all files will be checked against the update files - this can take a while if this is the first file check.', 'CHECK_FILES_UP_TO_DATE' => 'According to your database your version is up to date. You may want to proceed with the file check to make sure all files are really up to date with the latest phpBB version.', + 'CHECK_UPDATE_DATABASE' => 'Continue update process', 'COLLECTED_INFORMATION' => 'Information on collected files', 'COLLECTED_INFORMATION_EXPLAIN' => 'The list below shows information about the files needing an update. Please read the information in front of every status block to see what they mean and what you may need to do to perform a successful update.', - 'COMPLETE_LOGIN_TO_BOARD' => 'You should now <a href="../ucp.php?mode=login">login to your board</a> and check if everything is working fine. Don’t forget to delete, rename or move your install directory!', + 'COMPLETE_LOGIN_TO_BOARD' => 'You should now <a href="../ucp.php?mode=login">login to your board</a> and check if everything is working fine. Do not forget to delete, rename or move your install directory!', + 'CONTINUE_INLINE_UPDATE' => 'The database update was successful. Now please close this window and continue the update process as explained.', 'CURRENT_FILE' => 'Current original file', 'CURRENT_VERSION' => 'Current version', @@ -341,8 +367,8 @@ $lang = array_merge($lang, array( 'FILES_NOT_MODIFIED_EXPLAIN' => 'The following files were not modified and represent the original phpBB files from the version you want to update from.', 'FILES_UP_TO_DATE' => 'Already updated files', 'FILES_UP_TO_DATE_EXPLAIN' => 'The following files are already up to date and do not need to be updated.', - 'FTP_SETTINGS' => 'FTP Settings', - 'FTP_UPDATE_METHOD' => 'FTP Upload', + 'FTP_SETTINGS' => 'FTP settings', + 'FTP_UPDATE_METHOD' => 'FTP upload', 'INCOMPATIBLE_UPDATE_FILES' => 'The update files found are incompatible with your installed version. Your installed version is %1$s and the update file is for updating phpBB %2$s to %3$s.', 'INCOMPLETE_UPDATE_FILES' => 'The update files are incomplete', @@ -356,13 +382,14 @@ $lang = array_merge($lang, array( 'LOGIN_UPDATE_EXPLAIN' => 'In order to update your installation you need to login first.', 'MAPPING_FILE_STRUCTURE' => 'To ease the upload here are the file locations which map your phpBB installation.', - 'MERGE_MOD_FILE_OPTION' => 'Use modified file code on final merge', - 'MERGE_NEW_FILE_OPTION' => 'Use new file code on final merge', + 'MERGE_NO_MERGE_NEW_OPTION' => 'Do not merge - use new file', + 'MERGE_NO_MERGE_MOD_OPTION' => 'Do not merge - use currently installed file', + 'MERGE_MOD_FILE_OPTION' => 'Merge differences and use modified code within conflicting block', + 'MERGE_NEW_FILE_OPTION' => 'Merge differences and use new file code within conflicting block', 'MERGE_SELECT_ERROR' => 'Conflicting file merge modes are not correctly selected.', 'NEW_FILE' => 'New updated file', 'NO_AUTH_UPDATE' => 'Not authorized to update', - 'NO_DATABASE_UPDATE_NEEDED' => 'All of your files seem to be up to date. Since you are already running the latest version you do not need to update your database.', 'NO_ERRORS' => 'No errors', 'NO_UPDATE_FILES' => 'Not updating the following files', 'NO_UPDATE_FILES_EXPLAIN' => 'The following files are new or modified but the directory they normally reside in could not be found on your installation. If this list contains files to other directories than language/ or styles/ than you may have modified your directory structure and the update may be incomplete.', @@ -377,7 +404,7 @@ $lang = array_merge($lang, array( 'OLD_UPDATE_FILES' => 'Update files are out of date. The update files found are for updating from phpBB %1$s to phpBB %2$s but the latest version of phpBB is %3$s.', 'PERFORM_DATABASE_UPDATE' => 'Perform database update', - 'PERFORM_DATABASE_UPDATE_EXPLAIN' => 'Below you will find a link to the database update script. This script needs to be run seperatly because updating the database might result in unexpected behaviour if you are logged in. The database update can take a while, so please do not stop the execution if it only seems to hang. After you clicked the link and the update finished you can close this window too.', + 'PERFORM_DATABASE_UPDATE_EXPLAIN' => 'Below you will find a link to the database update script. This script needs to be run seperatly because updating the database might result in unexpected behaviour if you are logged in. The database update can take a while, so please do not stop the execution if it seems to hang. After you performed the database update, close the database update window and continue the update process.', 'PREVIOUS_VERSION' => 'Previous version', 'PROGRESS' => 'Progress', @@ -386,8 +413,9 @@ $lang = array_merge($lang, array( 'SELECT_DIFF_MODE' => 'Select diff mode', 'SELECT_DOWNLOAD_FORMAT' => 'Select download archive format', - 'SELECT_FTP_SETTINGS' => 'Select FTP Settings', + 'SELECT_FTP_SETTINGS' => 'Select FTP settings', 'SHOW_DIFF_CONFLICT' => 'Show differences/conflicts', + 'SHOW_DIFF_FINAL' => 'Show resulting file', 'SHOW_DIFF_MODIFIED' => 'Show merged differences', 'SHOW_DIFF_NEW' => 'Show file contents', 'SHOW_DIFF_NEW_CONFLICT' => 'Show differences', @@ -398,7 +426,7 @@ $lang = array_merge($lang, array( 'STAGE_FILE_CHECK' => 'Check files', 'STAGE_UPDATE_DB' => 'Update database', 'STAGE_UPDATE_FILES' => 'Update files', - 'STAGE_VERSION_CHECK' => 'Version Check', + 'STAGE_VERSION_CHECK' => 'Version check', 'STATUS_CONFLICT' => 'Modified file producing conflicts', 'STATUS_MODIFIED' => 'Modified file', 'STATUS_NEW' => 'New file', @@ -408,11 +436,12 @@ $lang = array_merge($lang, array( 'UPDATE_COMPLETED' => 'Update completed', 'UPDATE_DATABASE' => 'Update database', + 'UPDATE_DATABASE_EXPLAIN' => 'Within the next step the database will be updated.', 'UPDATE_DATABASE_SCHEMA' => 'Updating database schema', 'UPDATE_FILES' => 'Update files', 'UPDATE_FILES_NOTICE' => 'Please make sure you have updated your board files too, this file is only updating your database.', - 'UPDATE_INSTALLATION' => 'Update phpBB Installation', - 'UPDATE_INSTALLATION_EXPLAIN' => 'With this option, it is possible to update your phpBB installation to the latest version.<br />During the process all of your files will be checked for their integrity. You are able to review all differences and files before the update.<br /><br />The file update itself can be done in two different ways.</p><h2>Manual Update</h2><p>With this update you only download your personal set of changed files to make sure you do not lose your file modifications you may have done. After you downloaded this package you need to manually upload the files to their correct position under your phpBB root directory. Once done, you are able to do the file check stage again to see if you moved the files to their correct location. If everything is correctly updated you will be forwarded to the database updater.</p><h2>Automatic Update with FTP</h2><p>This method is similar to the first one but without the need to download the changed files and uploading them on your own. This will be done for you. In order to use this method you need to know your FTP login details since you will be asked for them. Once finished you will be redirected to the file check again to make sure everything got updated correctly. If so, you will be forwarded to the database updater.', + 'UPDATE_INSTALLATION' => 'Update phpBB installation', + 'UPDATE_INSTALLATION_EXPLAIN' => 'With this option, it is possible to update your phpBB installation to the latest version.<br />During the process all of your files will be checked for their integrity. You are able to review all differences and files before the update.<br /><br />The file update itself can be done in two different ways.</p><h2>Manual Update</h2><p>With this update you only download your personal set of changed files to make sure you do not lose your file modifications you may have done. After you downloaded this package you need to manually upload the files to their correct position under your phpBB root directory. Once done, you are able to do the file check stage again to see if you moved the files to their correct location.</p><h2>Automatic Update with FTP</h2><p>This method is similar to the first one but without the need to download the changed files and uploading them on your own. This will be done for you. In order to use this method you need to know your FTP login details since you will be asked for them. Once finished you will be redirected to the file check again to make sure everything got updated correctly.<br /><br />', 'UPDATE_INSTRUCTIONS' => ' <h1>Release announcement</h1> @@ -426,20 +455,19 @@ $lang = array_merge($lang, array( <p>The recommended way of updating your installation only takes the following steps:</p> <ul style="margin-left: 20px; font-size: 1.1em;"> - <li>Go to the <a href="http://www.phpbb.com/downloads.php" title="http://www.phpbb.com/downloads.php">phpBB.com downloads page</a> and download the correct archive. If you are unsure you can <a href="%2$s" title="%2$s">download the correct archive directly</a> as a zip file.<br /><br /></li> - <li>Unpack the archive<br /><br /></li> + <li>Go to the <a href="http://www.phpbb.com/downloads.php" title="http://www.phpbb.com/downloads.php">phpBB.com downloads page</a> and download the correct "phpBB Update Package" archive.<br /><br /></li> + <li>Unpack the archive.<br /><br /></li> <li>Upload the complete uncompressed install folder to your phpBB root directory (where your config.php file is).<br /><br /></li> </ul> - <p>Once uploaded your board will be offline for normal users.<br /><br /> - <strong><a href="%3$s" title="%3$s">Now start the update process by pointing your browser to the install folder</a>.</strong><br /> + <p>Once uploaded your board will be offline for normal users due to the install directory you uploaded now present.<br /><br /> + <strong><a href="%2$s" title="%2$s">Now start the update process by pointing your browser to the install folder</a>.</strong><br /> <br /> - You will then be guided through the update process. The update is complete after the database update script has been completed successfully - this is the last step within the udpate process. + You will then be guided through the update process. You will be notified after the update is complete. </p> - ', 'UPDATE_METHOD' => 'Update method', - 'UPDATE_METHOD_EXPLAIN' => 'You are now able to choose your preferred update method. Using the FTP Upload will present you with a form you need to enter your FTP account details into. With this method the files will be automatically moved to the new location and backups of the old files being created by appending .bak to the filename. If you choose to download the modified files you are able to unpack and upload them to their correct location manually later.', + 'UPDATE_METHOD_EXPLAIN' => 'You are now able to choose your preferred update method. Using the FTP upload will present you with a form you need to enter your FTP account details into. With this method the files will be automatically moved to the new location and backups of the old files being created by appending .bak to the filename. If you choose to download the modified files you are able to unpack and upload them to their correct location manually later.', 'UPDATE_SUCCESS' => 'Update was successful', 'UPDATE_SUCCESS_EXPLAIN' => 'Successfully updated all files. The next step involves checking all files again to make sure the files got updated correctly.', 'UPDATE_VERSION_OPTIMIZE' => 'Updating version and optimizing tables', @@ -448,7 +476,9 @@ $lang = array_merge($lang, array( 'UPDATED_VERSION' => 'Updated version', 'UPLOAD_METHOD' => 'Upload method', - 'VERSION_CHECK' => 'Version Check', + 'UPDATE_DB_SUCCESS' => 'Database update was successful', + + 'VERSION_CHECK' => 'Version check', 'VERSION_CHECK_EXPLAIN' => 'Checks to see if the version of phpBB you are currently running is up to date.', 'VERSION_NOT_UP_TO_DATE' => 'Your version of phpBB is not up to date. Please continue the update process.', 'VERSION_NOT_UP_TO_DATE_ACP'=> 'Your version of phpBB is not up to date.<br />Below you will find a link to the release announcement for the latest version as well as instructions on how to perform the update.', diff --git a/phpBB/language/en/mcp.php b/phpBB/language/en/mcp.php index 35f537f9db..837ae6f9b1 100644 --- a/phpBB/language/en/mcp.php +++ b/phpBB/language/en/mcp.php @@ -64,6 +64,7 @@ $lang = array_merge($lang, array( 'DELETE_REPORT_CONFIRM' => 'Are you sure you want to delete the selected report?', 'DELETE_REPORTS' => 'Delete reports', 'DELETE_REPORTS_CONFIRM' => 'Are you sure you want to delete the selected reports?', + 'DELETE_SHADOW_TOPIC' => 'Delete shadow topic', 'DELETE_TOPICS' => 'Delete selected topics', 'DELETE_TOPICS_CONFIRM' => 'Are you sure you want to delete these topics?', 'DELETE_TOPIC_CONFIRM' => 'Are you sure you want to delete this topic?', @@ -81,7 +82,7 @@ $lang = array_merge($lang, array( 'FEEDBACK' => 'Feedback', 'FORK' => 'Fork', - 'FORK_TOPIC' => 'Fork Topic', + 'FORK_TOPIC' => 'Fork topic', 'FORK_TOPIC_CONFIRM' => 'Are you sure you want to copy this topic?', 'FORK_TOPICS' => 'Fork selected topics', 'FORK_TOPICS_CONFIRM' => 'Are you sure you want to copy the selected topics?', @@ -92,9 +93,10 @@ $lang = array_merge($lang, array( 'FORUM_STATUS' => 'Forum status', 'FORUM_STYLE' => 'Forum style', - 'GLOBAL_ANNOUNCEMENT' => 'Global Announcement', + 'GLOBAL_ANNOUNCEMENT' => 'Global announcement', - 'IP_INFO' => 'IP Information', + 'IP_INFO' => 'IP address information', + 'IPS_POSTED_FROM' => 'IP addresses this user has posted from', 'LATEST_LOGS' => 'Latest 5 logged actions', 'LATEST_REPORTED' => 'Latest 5 reports', @@ -125,7 +127,7 @@ $lang = array_merge($lang, array( 'MCP_ADD' => 'Add a warning', 'MCP_BAN' => 'Banning', - 'MCP_BAN_EMAILS' => 'Ban Emails', + 'MCP_BAN_EMAILS' => 'Ban emails', 'MCP_BAN_IPS' => 'Ban IPs', 'MCP_BAN_USERNAMES' => 'Ban Usernames', @@ -139,22 +141,22 @@ $lang = array_merge($lang, array( 'MCP_MAIN_FRONT' => 'Front page', 'MCP_MAIN_POST_DETAILS' => 'Post details', 'MCP_MAIN_TOPIC_VIEW' => 'View topic', - 'MCP_MAKE_ANNOUNCEMENT' => 'Make Announcement', - 'MCP_MAKE_ANNOUNCEMENT_CONFIRM' => 'Are you sure you want to change this topic to an Announcement?', - 'MCP_MAKE_ANNOUNCEMENTS' => 'Make Announcements', - 'MCP_MAKE_ANNOUNCEMENTS_CONFIRM'=> 'Are you sure you want to change the selected topics to Announcements?', - 'MCP_MAKE_GLOBAL' => 'Make Global Announcement', - 'MCP_MAKE_GLOBAL_CONFIRM' => 'Are you sure you want to change this topic to a Global Announcement?', - 'MCP_MAKE_GLOBALS' => 'Make Global Announcements', - 'MCP_MAKE_GLOBALS_CONFIRM' => 'Are you sure you want to change the selected topics to Global Announcements?', - 'MCP_MAKE_STICKY' => 'Make Sticky', - 'MCP_MAKE_STICKY_CONFIRM' => 'Are you sure you want to change this topic to a Sticky?', - 'MCP_MAKE_STICKIES' => 'Make Stickies', - 'MCP_MAKE_STICKIES_CONFIRM' => 'Are you sure you want to change the selected topics to Stickies?', - 'MCP_MAKE_NORMAL' => 'Make Standard Topic', - 'MCP_MAKE_NORMAL_CONFIRM' => 'Are you sure you want to change this topic to a Standard Topic?', - 'MCP_MAKE_NORMALS' => 'Make Standard Topics', - 'MCP_MAKE_NORMALS_CONFIRM' => 'Are you sure you want to change the selected topics to Standard Topics?', + 'MCP_MAKE_ANNOUNCEMENT' => 'Modify to “Announcement”', + 'MCP_MAKE_ANNOUNCEMENT_CONFIRM' => 'Are you sure you want to change this topic to an “Announcement”?', + 'MCP_MAKE_ANNOUNCEMENTS' => 'Modify to “Announcements”', + 'MCP_MAKE_ANNOUNCEMENTS_CONFIRM'=> 'Are you sure you want to change the selected topics to “Announcements”?', + 'MCP_MAKE_GLOBAL' => 'Modify to “Global announcement”', + 'MCP_MAKE_GLOBAL_CONFIRM' => 'Are you sure you want to change this topic to a “Global announcement”?', + 'MCP_MAKE_GLOBALS' => 'Modify to “Global announcements”', + 'MCP_MAKE_GLOBALS_CONFIRM' => 'Are you sure you want to change the selected topics to “Global announcements”?', + 'MCP_MAKE_STICKY' => 'Modify to “Sticky”', + 'MCP_MAKE_STICKY_CONFIRM' => 'Are you sure you want to change this topic to a “Sticky”?', + 'MCP_MAKE_STICKIES' => 'Modify to “Stickie”s', + 'MCP_MAKE_STICKIES_CONFIRM' => 'Are you sure you want to change the selected topics to “Stickies”?', + 'MCP_MAKE_NORMAL' => 'Modify to “Standard Topic”', + 'MCP_MAKE_NORMAL_CONFIRM' => 'Are you sure you want to change this topic to a “Standard Topic”?', + 'MCP_MAKE_NORMALS' => 'Modify to “Standard Topics”', + 'MCP_MAKE_NORMALS_CONFIRM' => 'Are you sure you want to change the selected topics to “Standard Topics”?', 'MCP_NOTES' => 'User notes', 'MCP_NOTES_FRONT' => 'Front page', @@ -185,7 +187,7 @@ $lang = array_merge($lang, array( 'MERGE_POSTS' => 'Merge posts', 'MERGE_POSTS_CONFIRM' => 'Are you sure you want to merge the selected posts?', 'MERGE_TOPIC_EXPLAIN' => 'Using the form below you can merge selected posts into another topic. These posts will not be reordered and will appear as if the users posted them to the new topic.<br />Please enter the destination topic id or click on the "Select" button to search for one', - 'MERGE_TOPIC_ID' => 'Destination topic id', + 'MERGE_TOPIC_ID' => 'Destination topic identification number', 'MODERATE_FORUM' => 'Moderate forum', 'MOD_OPTIONS' => 'Moderator options', 'MORE_INFO' => 'Further information', @@ -207,11 +209,11 @@ $lang = array_merge($lang, array( 'NO_POST' => 'You have to select a post in order to warn the user for a post', 'NO_POST_REPORT' => 'This post was not reported.', 'NO_POST_SELECTED' => 'You must select at least one post to perform this action', - 'NO_REASON_DISAPPROVAL' => 'Please give an appropiate reason for disapproval', + 'NO_REASON_DISAPPROVAL' => 'Please give an appropriate reason for disapproval', + 'NO_REPORTS' => 'No reports', 'NO_TOPIC_ICON' => 'None', 'NO_TOPIC_SELECTED' => 'You must select at least one topic to perform this action', - 'OTHER_IPS' => 'Other IP addresses this user has posted from', 'ONLY_TOPIC' => 'Only topic "%s"', 'OTHER_USERS' => 'Users posting from this IP', @@ -261,25 +263,28 @@ $lang = array_merge($lang, array( 'RETURN_POST' => '%sReturn to the post%s', 'RETURN_QUEUE' => '%sReturn to the queue%s', 'RETURN_REPORTS' => '%sReturn to the reports%s', - - 'SEARCH_POSTS_BY_USER' => 'Search posts by', - 'SELECT_ACTION' => 'Select desired action', - 'SELECT_TOPICS_FROM' => 'Select topics from', - 'SELECT_TOPIC' => 'Select topic', - 'SELECT_USER' => 'Select user', - 'SORT_ACTION' => 'Log action', - 'SORT_DATE' => 'Date', - 'SORT_IP' => 'IP address', - 'SORT_WARNINGS' => 'Warnings', - 'SPLIT_AFTER' => 'Split from selected post', - 'SPLIT_FORUM' => 'Forum for new topic', - 'SPLIT_POSTS' => 'Split selected posts', - 'SPLIT_SUBJECT' => 'New topic title', - 'SPLIT_TOPIC_ALL' => 'Split topic from selected posts', - 'SPLIT_TOPIC_ALL_CONFIRM' => 'Are you sure you want to split this topic?', - 'SPLIT_TOPIC_BEYOND' => 'Split topic at selected post', - 'SPLIT_TOPIC_BEYOND_CONFIRM'=> 'Are you sure you want to split this topic at the selected post?', - 'SPLIT_TOPIC_EXPLAIN' => 'Using the form below you can split a topic in two, either by selecting the posts individually or by splitting at a selected post', + 'RETURN_TOPIC_SIMPLE' => '%sReturn to the topic%s', + + 'SEARCH_POSTS_BY_USER' => 'Search posts by', + 'SELECT_ACTION' => 'Select desired action', + 'SELECT_FORUM_GLOBAL_ANNOUNCEMENT' => 'Please select the forum you wish this global announcement to be displayed.', + 'SELECT_FORUM_GLOBAL_ANNOUNCEMENTS' => 'One or more of the selected topics are global announcements. Please select the forum you wish these to be displayed.', + 'SELECT_TOPICS_FROM' => 'Select topics from', + 'SELECT_TOPIC' => 'Select topic', + 'SELECT_USER' => 'Select user', + 'SORT_ACTION' => 'Log action', + 'SORT_DATE' => 'Date', + 'SORT_IP' => 'IP address', + 'SORT_WARNINGS' => 'Warnings', + 'SPLIT_AFTER' => 'Split from selected post', + 'SPLIT_FORUM' => 'Forum for new topic', + 'SPLIT_POSTS' => 'Split selected posts', + 'SPLIT_SUBJECT' => 'New topic title', + 'SPLIT_TOPIC_ALL' => 'Split topic from selected posts', + 'SPLIT_TOPIC_ALL_CONFIRM' => 'Are you sure you want to split this topic?', + 'SPLIT_TOPIC_BEYOND' => 'Split topic at selected post', + 'SPLIT_TOPIC_BEYOND_CONFIRM' => 'Are you sure you want to split this topic at the selected post?', + 'SPLIT_TOPIC_EXPLAIN' => 'Using the form below you can split a topic in two, either by selecting the posts individually or by splitting at a selected post', 'THIS_POST_IP' => 'IP for this post', 'TOPICS_APPROVED_SUCCESS' => 'The selected topics have been approved', @@ -289,6 +294,7 @@ $lang = array_merge($lang, array( 'TOPICS_LOCKED_SUCCESS' => 'The selected topics have been locked', 'TOPICS_MOVED_SUCCESS' => 'The selected topics have been moved successfully', 'TOPICS_RESYNC_SUCCESS' => 'The selected topics have been resynchronised', + 'TOPICS_TYPE_CHANGED' => 'Topic types changed successfully.', 'TOPICS_UNLOCKED_SUCCESS' => 'The selected topics have been unlocked', 'TOPIC_APPROVED_SUCCESS' => 'The selected topic has been approved', 'TOPIC_DELETED_SUCCESS' => 'The selected topic has been successfully removed from the database', @@ -328,7 +334,7 @@ $lang = array_merge($lang, array( 'WARNED_USERS' => 'Warned users', 'WARNED_USERS_EXPLAIN' => 'This is a list of users with unexpired warnings issued to them', 'WARNING_PM_BODY' => 'The following is a warning which has been issued to you by an administrator or moderator of this site.[quote]%s[/quote]', - 'WARNING_PM_SUBJECT' => 'Board Warning Issued', + 'WARNING_PM_SUBJECT' => 'Board warning issued', 'WARNING_POST_DEFAULT' => 'This is a warning regarding the following post made by you: %s', 'WARNINGS_ZERO_TOTAL' => 'No warnings exists', diff --git a/phpBB/language/en/memberlist.php b/phpBB/language/en/memberlist.php index b46fe1c621..2d47c31f38 100644 --- a/phpBB/language/en/memberlist.php +++ b/phpBB/language/en/memberlist.php @@ -92,7 +92,6 @@ $lang = array_merge($lang, array( 'LOGIN_EXPLAIN_VIEWPROFILE' => 'The board administrator requires you to be registered and logged in to view profiles.', 'MORE_THAN' => 'More than', - 'MSNM' => 'MSNM', 'NO_EMAIL' => 'You are not permitted to send email to this user.', 'NO_VIEW_USERS' => 'You are not authorised to view the member list or profiles.', diff --git a/phpBB/language/en/posting.php b/phpBB/language/en/posting.php index 95217c3ac8..2b486f8b8c 100644 --- a/phpBB/language/en/posting.php +++ b/phpBB/language/en/posting.php @@ -61,7 +61,6 @@ $lang = array_merge($lang, array( 'CANNOT_EDIT_POST_LOCKED' => 'This post has been locked. You can no longer edit that post.', 'CANNOT_EDIT_TIME' => 'You can no longer edit or delete that post', 'CANNOT_POST_ANNOUNCE' => 'Sorry but you cannot post announcements.', - 'CANNOT_POST_NEWS' => 'Sorry but you cannot post news topics.', 'CANNOT_POST_STICKY' => 'Sorry but you cannot post sticky topics.', 'CHANGE_TOPIC_TO' => 'Change topic type to', 'CLOSE_TAGS' => 'Close tags', @@ -105,7 +104,7 @@ $lang = array_merge($lang, array( 'LOAD' => 'Load', 'LOAD_DRAFT' => 'Load draft', - 'LOAD_DRAFT_EXPLAIN' => 'Here you are able to select the draft you want to continue writing. Your current post will be canceled, all current post contents will be deleted. View, edit and delete drafts within your User Control Panel.', + 'LOAD_DRAFT_EXPLAIN' => 'Here you are able to select the draft you want to continue writing. Your current post will be cancelled, all current post contents will be deleted. View, edit and delete drafts within your User Control Panel.', 'LOGIN_EXPLAIN_BUMP' => 'You need to login in order to bump topics within this forum.', 'LOGIN_EXPLAIN_DELETE' => 'You need to login in order to delete posts within this forum.', 'LOGIN_EXPLAIN_POST' => 'You need to login in order to post within this forum.', @@ -119,20 +118,20 @@ $lang = array_merge($lang, array( 'MAX_IMG_WIDTH_EXCEEDED' => 'Your images may only be up to %1$d pixels wide.', 'MESSAGE_BODY_EXPLAIN' => 'Enter your message here, it may contain no more than <strong>%d</strong> characters.', - 'MESSAGE_DELETED' => 'Your message has been deleted successfully', + 'MESSAGE_DELETED' => 'This message has been deleted successfully', 'MORE_SMILIES' => 'View more smilies', 'NOTIFY_REPLY' => 'Send me an email when a reply is posted', 'NOT_UPLOADED' => 'File could not be uploaded.', 'NO_DELETE_POLL_OPTIONS' => 'You cannot delete existing poll options', + 'NO_PM_ICON' => 'No PM icon', 'NO_POLL_TITLE' => 'You have to enter a poll title', 'NO_POST' => 'The requested post does not exist.', 'NO_POST_MODE' => 'No post mode specified', - 'NO_TOPIC_ICON' => 'None', 'PARTIAL_UPLOAD' => 'The uploaded file was only partially uploaded', 'PHP_SIZE_NA' => 'The attachment’s filesize is too large.<br />Could not determine the maximum size defined by PHP in php.ini.', - 'PHP_SIZE_OVERRUN' => 'The attachment’s filesize is too large, the maximum upload size is %d MB.<br />Please note this is set in php.ini and cannot be overriden.', + 'PHP_SIZE_OVERRUN' => 'The attachment’s filesize is too large, the maximum upload size is %d MB.<br />Please note this is set in php.ini and cannot be overridden.', 'PLACE_INLINE' => 'Place inline', 'POLL_DELETE' => 'Delete poll', 'POLL_FOR' => 'Run poll for', @@ -147,17 +146,17 @@ $lang = array_merge($lang, array( 'POSTED_ATTACHMENTS' => 'Posted attachments', 'POST_CONFIRMATION' => 'Confirmation of post', 'POST_CONFIRM_EXPLAIN' => 'To prevent automated posts the board administrator requires you to enter a confirmation code. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.', - 'POST_DELETED' => 'Your message has been deleted successfully', - 'POST_EDITED' => 'Your message has been edited successfully', - 'POST_EDITED_MOD' => 'Your message has been edited but requires approval', + 'POST_DELETED' => 'This message has been deleted successfully', + 'POST_EDITED' => 'This message has been edited successfully', + 'POST_EDITED_MOD' => 'This message has been edited but requires approval', 'POST_GLOBAL' => 'Global', 'POST_ICON' => 'Post icon', 'POST_NORMAL' => 'Normal', 'POST_REPLY' => 'Post a reply', 'POST_REVIEW' => 'Post review', 'POST_REVIEW_EXPLAIN' => 'At least one new post has been made to this topic. You may wish to review your post in light of this.', - 'POST_STORED' => 'Your message has been posted successfully', - 'POST_STORED_MOD' => 'Your message has been saved but requires approval', + 'POST_STORED' => 'This message has been posted successfully', + 'POST_STORED_MOD' => 'This message has been saved but requires approval', 'POST_TOPIC' => 'Post a new topic', 'POST_TOPIC_AS' => 'Post topic as', 'PROGRESS_BAR' => 'Progress bar', @@ -166,7 +165,7 @@ $lang = array_merge($lang, array( 'SAVE' => 'Save', 'SAVE_DATE' => 'Saved at', - 'SAVE_DRAFT' => 'Save Draft', + 'SAVE_DRAFT' => 'Save draft', 'SAVE_DRAFT_CONFIRM' => 'Please note that saved drafts only include the subject and the message, any other element will be removed. Do you want to save your draft now?', 'SMILIES' => 'Smilies', 'SMILIES_ARE_OFF' => 'Smilies are <em>OFF</em>', @@ -181,12 +180,12 @@ $lang = array_merge($lang, array( 'TOO_MANY_ATTACHMENTS' => 'Cannot add another attachment, %d is the maxmimum.', 'TOO_MANY_CHARS' => 'Your message contains too many characters.', 'TOO_MANY_POLL_OPTIONS' => 'You have tried to enter too many poll options', - 'TOO_MANY_SMILIES' => 'Your message contains too many smilies. A maximum of %d smilies are allowed.', - 'TOO_MANY_URLS' => 'Your message contains too many urls. A maximum of %d urls are allowed.', - 'TOO_MANY_USER_OPTIONS' => 'You cannot specify more Options per User than existing poll options', + 'TOO_MANY_SMILIES' => 'Your message contains too many smilies. The maximum number of smilies allowed is %d.', + 'TOO_MANY_URLS' => 'Your message contains too many URLs. The maximum number of URLs allowed is %d.', + 'TOO_MANY_USER_OPTIONS' => 'You cannot specify more options per user than existing poll options', 'TOPIC_BUMPED' => 'Topic has been bumped successfully', - 'UNAUTHORISED_BBCODE' => 'You cannot use certain bbcodes: ', + 'UNAUTHORISED_BBCODE' => 'You cannot use certain BBCodes: %s', 'UNGLOBALISE_EXPLAIN' => 'To switch this topic back from being global to a normal topic, you need to select the forum you wish this topic to be displayed.', 'UPDATE_COMMENT' => 'Update comment', 'URL_INVALID' => 'The URL you specified is invalid.', diff --git a/phpBB/language/en/search.php b/phpBB/language/en/search.php index db922f340b..f3db3af503 100644 --- a/phpBB/language/en/search.php +++ b/phpBB/language/en/search.php @@ -45,13 +45,15 @@ $lang = array_merge($lang, array( 'IGNORED_TERMS' => 'ignored', 'IGNORED_TERMS_EXPLAIN' => 'The following words in your search query were ignored: <strong>%s</strong>', + 'JUMP_TO_POST' => 'Jump to post', + 'NO_KEYWORDS' => 'You must specify at least one word to search for. Each word must consist of at least %d characters and must not contain more than %d characters excluding wildcards.', 'NO_RECENT_SEARCHES' => 'No searches have been carried out recently', 'NO_SEARCH' => 'Sorry but you are not permitted to use the search system.', 'NO_SEARCH_RESULTS' => 'No suitable matches were found.', 'NO_SEARCH_TIME' => 'Sorry but you cannot use search at this time. Please try again in a few minutes.', - 'WORD_IN_NO_POST' => 'No posts were found because the word %s is not contained in any post.', - 'WORDS_IN_NO_POST' => 'No posts were found because the words %s are not contained in any post.', + 'WORD_IN_NO_POST' => 'No posts were found because the word <strong>%s</strong> is not contained in any post.', + 'WORDS_IN_NO_POST' => 'No posts were found because the words <strong>%s</strong> are not contained in any post.', 'POST_CHARACTERS' => 'characters of posts', @@ -70,10 +72,10 @@ $lang = array_merge($lang, array( 'SEARCH_FORUMS' => 'Search in forums', 'SEARCH_FORUMS_EXPLAIN' => 'Select the forum or forums you wish to search in. For speed all subforums can be searched by selecting the parent and setting enable search subforums below.', 'SEARCH_IN_RESULTS' => 'Search these results', - 'SEARCH_KEYWORDS_EXPLAIN' => 'Place <strong>+</strong> in front of a word which must be found and <strong>-</strong> in front of a word which must not be found. Put a list of words seperated by <strong>|</strong> into brackets if only one of the words must be found. Use * as a wildcard for partial matches.', + 'SEARCH_KEYWORDS_EXPLAIN' => 'Place <strong>+</strong> in front of a word which must be found and <strong>-</strong> in front of a word which must not be found. Put a list of words separated by <strong>|</strong> into brackets if only one of the words must be found. Use * as a wildcard for partial matches.', 'SEARCH_MSG_ONLY' => 'Message text only', - 'SEARCH_OPTIONS' => 'Search Options', - 'SEARCH_QUERY' => 'Search Query', + 'SEARCH_OPTIONS' => 'Search options', + 'SEARCH_QUERY' => 'Search query', 'SEARCH_SUBFORUMS' => 'Search subforums', 'SEARCH_TITLE_MSG' => 'Post subjects and message text', 'SEARCH_TITLE_ONLY' => 'Topic titles only', diff --git a/phpBB/language/en/ucp.php b/phpBB/language/en/ucp.php index 4761fcdd48..4e9949482c 100644 --- a/phpBB/language/en/ucp.php +++ b/phpBB/language/en/ucp.php @@ -51,23 +51,6 @@ $lang = array_merge($lang, array( ', )); -$lang = array_merge($lang, array( - 'CAPTCHA' =>array( - 'cells' => array( - 'Enter the code on', - ' the right, in ', - ' the order shown ', - ' on the left ', - ), - 'shape' => array( - 'Enter the code on', - ' the right which ', - 'matches the image', - ' on the left ', - ) - ) -)); - // Common language entries $lang = array_merge($lang, array( 'ACCOUNT_ACTIVE' => 'Your account has now been activated. Thank you for registering', @@ -84,15 +67,15 @@ $lang = array_merge($lang, array( 'ADD_FOLDER' => 'Add folder', 'ADD_FRIENDS' => 'Add new friends', 'ADD_FRIENDS_EXPLAIN' => 'You may enter several usernames each on a different line', - 'ADD_NEW_RULE' => 'Add new Rule', - 'ADD_RULE' => 'Add Rule', + 'ADD_NEW_RULE' => 'Add new rule', + 'ADD_RULE' => 'Add rule', 'ADD_TO' => 'Add [To]', 'ADMIN_EMAIL' => 'Administrators can email me information', 'AGREE' => 'I agree to these terms', 'ALLOW_PM' => 'Allow users to send you private messages', - 'ALLOW_PM_EXPLAIN' => 'Note that admins and moderators will always be able to send you messages.', + 'ALLOW_PM_EXPLAIN' => 'Note that administrators and moderators will always be able to send you messages.', 'ALREADY_ACTIVATED' => 'You have already activated your account', - 'ATTACHMENTS_EXPLAIN' => 'This is a list of attachements you have made in posts to this forum.', + 'ATTACHMENTS_EXPLAIN' => 'This is a list of attachments you have made in posts to this forum.', 'ATTACHMENTS_DELETED' => 'Attachments successfully deleted.', 'ATTACHMENT_DELETED' => 'Attachment successfully deleted.', 'AVATAR_CATEGORY' => 'Category', @@ -128,7 +111,7 @@ $lang = array_merge($lang, array( 'CONFIRM_EMAIL' => 'Confirm email address', 'CONFIRM_EMAIL_EXPLAIN' => 'You only need to specify this if you are changing your email address.', 'CONFIRM_EXPLAIN' => 'To prevent automated registrations the board administrator requires you to enter a confirmation code. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.', - 'CONFIRM_PASSWORD' => 'Confirm new password', + 'CONFIRM_PASSWORD' => 'Confirm password', 'CONFIRM_PASSWORD_EXPLAIN' => 'You only need to confirm your password if you changed it above', 'COPPA_BIRTHDAY' => 'To continue with the registration procedure please tell us when you were born.', 'COPPA_COMPLIANCE' => 'COPPA compliance', @@ -183,7 +166,7 @@ $lang = array_merge($lang, array( 'EXPORT_AS_CSV_EXCEL' => 'Export as CSV (Excel)', 'EXPORT_AS_TXT' => 'Export as TXT', 'EXPORT_AS_MSG' => 'Export as MSG', - 'EXPORT_FOLDER' => 'Export Folder', + 'EXPORT_FOLDER' => 'Export folder', 'FIELD_REQUIRED' => 'The field “%s” must be completed.', 'FIELD_TOO_SHORT' => 'The field “%1$s” is too short, a minimum of %2$d characters is required.', @@ -213,14 +196,14 @@ $lang = array_merge($lang, array( 'FRIENDS_OFFLINE' => 'Offline', 'FRIENDS_ONLINE' => 'Online', 'FRIENDS_UPDATED' => 'Your friends list has been updated successfully', - 'FULL_FOLDER_OPTION_CHANGED'=> 'Full Folder Option changed successfully', + 'FULL_FOLDER_OPTION_CHANGED'=> 'The action to take when a folder is full have been changed successfully', 'FWD_ORIGINAL_MESSAGE' => '-------- Original Message --------', 'FWD_SUBJECT' => 'Subject: %s', 'FWD_DATE' => 'Date: %s', 'FWD_FROM' => 'From: %s', 'FWD_TO' => 'To: %s', - 'GLOBAL_ANNOUNCEMENT' => 'Global Announcement', + 'GLOBAL_ANNOUNCEMENT' => 'Global announcement', 'HIDE_ONLINE' => 'Hide my online status', 'HOLD_NEW_MESSAGES' => 'Do not accept new messages (New messages will be held back until enough space is available)', @@ -236,7 +219,7 @@ $lang = array_merge($lang, array( 'LANGUAGE' => 'Language', 'LINK_REMOTE_AVATAR' => 'Link off-site', - 'LINK_REMOTE_AVATAR_EXPLAIN'=> 'Enter the URL of the location containing the Avatar image you wish to link to.', + 'LINK_REMOTE_AVATAR_EXPLAIN'=> 'Enter the URL of the location containing the avatar image you wish to link to.', 'LINK_REMOTE_SIZE' => 'Avatar dimensions', 'LINK_REMOTE_SIZE_EXPLAIN' => 'Specify the width and height of the avatar, leave blank to attempt automatic verification.', 'LOGIN_EXPLAIN_UCP' => 'Please login in order to access the User Control Panel', @@ -245,21 +228,21 @@ $lang = array_merge($lang, array( 'MARK_IMPORTANT' => 'Mark as important', 'MARKED_MESSAGE' => 'Marked message', - 'MAX_FOLDER_REACHED' => 'Maximum number of allowed user defined folder reached', + 'MAX_FOLDER_REACHED' => 'Maximum number of allowed user defined folders reached', 'MESSAGE_BY_AUTHOR' => 'by', 'MESSAGE_COLOURS' => 'Message colours', 'MESSAGE_DELETED' => 'Message successfully deleted', 'MESSAGE_HISTORY' => 'Message history', 'MESSAGE_REMOVED_FROM_OUTBOX' => 'This message has been removed by it’s author before it was delivered', 'MESSAGE_SENT_ON' => 'on', - 'MESSAGE_STORED' => 'Your message has been sent successfully', + 'MESSAGE_STORED' => 'This message has been sent successfully', 'MESSAGE_TO' => 'To', 'MESSAGES_DELETED' => 'Messages successfully deleted', 'MOVE_DELETED_MESSAGES_TO' => 'Move messages from removed folder to', 'MOVE_DOWN' => 'Move down', 'MOVE_MARKED_TO_FOLDER' => 'Move marked to %s', 'MOVE_PM_ERROR' => 'An error occurred while moving the messages to the new folder, only %1d from %2d messages were moved.', - 'MOVE_TO_FOLDER' => 'Move to Folder', + 'MOVE_TO_FOLDER' => 'Move to folder', 'MOVE_UP' => 'Move up', 'NEW_EMAIL_ERROR' => 'The email addresses you entered do not match.', @@ -306,7 +289,7 @@ $lang = array_merge($lang, array( 'NO_FRIENDS_ONLINE' => 'No friends online', 'NO_GROUP_SELECTED' => 'No group specified', 'NO_IMPORTANT_NEWS' => 'No important announcements present', - 'NO_MESSAGE' => 'Private Message could not be found', + 'NO_MESSAGE' => 'Private message could not be found', 'NO_NEW_FOLDER_NAME' => 'You have to specify a new folder name', 'NO_NEWER_PM' => 'No newer messages', 'NO_OLDER_PM' => 'No older messages', @@ -321,28 +304,29 @@ $lang = array_merge($lang, array( 'PASS_TYPE_ANY_EXPLAIN' => 'Must be between %1$d and %2$d characters.', 'PASS_TYPE_CASE_EXPLAIN' => 'Password must be between %1$d and %2$d chars long and must be mixed case', 'PASS_TYPE_SYMBOL_EXPLAIN' => 'Password must be between %1$d and %2$d chars long and must contain symbols', + 'PASSWORD' => 'Password', 'PASSWORD_ACTIVATED' => 'Your new password has been activated', 'PASSWORD_UPDATED' => 'Your password has been sent successfully to your original email address.', 'PERMISSIONS_RESTORED' => 'Successfully restored original permissions.', - 'PERMISSIONS_TRANSFERED' => 'Successfully transfered permissions from <strong>%s</strong>, you are now able to browse the forum with the users permissions.<br />Please note that admin permissions were not transfered. You are able to revert to your permission set at any time.', + 'PERMISSIONS_TRANSFERRED' => 'Successfully transferred permissions from <strong>%s</strong>, you are now able to browse the forum with the users permissions.<br />Please note that admin permissions were not transferred. You are able to revert to your permission set at any time.', 'PM_DISABLED' => 'Private messaging has been disabled on this board', 'PM_FROM' => 'From', 'PM_FROM_REMOVED_AUTHOR' => 'This message was sent by a user no longer registered.', 'PM_ICON' => 'PM icon', 'PM_INBOX' => 'Inbox', 'PM_OUTBOX' => 'Outbox', - 'PM_SENTBOX' => 'Sent Messages', + 'PM_SENTBOX' => 'Sent messages', 'PM_SUBJECT' => 'Message subject', 'PM_TO' => 'Send to', 'POPUP_ON_PM' => 'Pop up window on new private message', 'POST_EDIT_PM' => 'Edit message', 'POST_FORWARD_PM' => 'Forward message', 'POST_NEW_PM' => 'Post message', - 'POST_PM_LOCKED' => 'Private Messaging is locked', + 'POST_PM_LOCKED' => 'Private messaging is locked', 'POST_PM_POST' => 'Quote post', 'POST_QUOTE_PM' => 'Quote message', 'POST_REPLY_PM' => 'Reply to message', - 'PRINT_PM' => 'Print View', + 'PRINT_PM' => 'Print view', 'PREFERENCES_UPDATED' => 'Your preferences have been updated.', 'PROFILE_INFO_NOTICE' => 'Please note that this information will be viewable to other members. Be careful when including any personal details. Any fields marked with a * must be completed.', 'PROFILE_UPDATED' => 'Your profile has been updated.', @@ -351,7 +335,7 @@ $lang = array_merge($lang, array( 'RECIPIENTS' => 'Recipients', 'REGISTRATION' => 'Registration', 'RELATIVE_DAYS' => 'Relative days', - 'RELEASE_MESSAGES' => '%sRelease all on-hold messages%s… they will be re-sorted into the appropiate folder if enough space is made available.', + 'RELEASE_MESSAGES' => '%sRelease all on-hold messages%s… they will be re-sorted into the appropriate folder if enough space is made available.', 'REMOVE_ADDRESS' => 'Remove address', 'REMOVE_SELECTED_BOOKMARKS' => 'Remove selected bookmarks', 'REMOVE_SELECTED_BOOKMARKS_CONFIRM' => 'Are you sure you want to delete all selected bookmarks?', @@ -398,8 +382,8 @@ $lang = array_merge($lang, array( 'UCP_AIM' => 'AOL Instant Messenger', 'UCP_ATTACHMENTS' => 'Attachments', 'UCP_COPPA_BEFORE' => 'Before %s', - 'UCP_COPPA_ON_AFTER' => 'On or After %s', - 'UCP_EMAIL_ACTIVATE' => 'Please note that you will need to enter a valid email address before your account is activated. You will recieve an email at the address you provide that contains an account activation link.', + 'UCP_COPPA_ON_AFTER' => 'On or after %s', + 'UCP_EMAIL_ACTIVATE' => 'Please note that you will need to enter a valid email address before your account is activated. You will receive an email at the address you provide that contains an account activation link.', 'UCP_ICQ' => 'ICQ number', 'UCP_JABBER' => 'Jabber address', @@ -452,6 +436,9 @@ $lang = array_merge($lang, array( 'UPLOAD_AVATAR_URL_EXPLAIN' => 'Enter the URL of the location containing the image, it will be copied to this site.', 'USERNAME_ALPHA_ONLY_EXPLAIN' => 'Username must be between %1$d and %2$d chars long and use only alphanumeric characters', 'USERNAME_ALPHA_SPACERS_EXPLAIN'=> 'Username must be between %1$d and %2$d chars long and use alphanumeric, space or -+_[] characters.', + 'USERNAME_ASCII_EXPLAIN' => 'Username must be between %1$d and %2$d chars long and use only ASCII characters, so no special symbols', + 'USERNAME_LETTER_NUM_EXPLAIN' => 'Username must be between %1$d and %2$d chars long and use only letter or number characters', + 'USERNAME_LETTER_NUM_SPACERS_EXPLAIN'=> 'Username must be between %1$d and %2$d chars long and use letter, number, space or -+_[] characters.', 'USERNAME_CHARS_ANY_EXPLAIN' => 'Length must be between %1$d and %2$d characters.', 'USERNAME_TAKEN_USERNAME' => 'The username you entered is already in use, please select an alternative.', 'USERNAME_DISALLOWED_USERNAME' => 'The username you entered has been banned.', @@ -470,7 +457,7 @@ $lang = array_merge($lang, array( 'VIEW_PREVIOUS_HISTORY' => 'Previous PM in history', 'VIEW_PREVIOUS_PM' => 'Previous PM', 'VIEW_SIGS' => 'Display signatures', - 'VIEW_SMILIES' => 'Display smileys as images', + 'VIEW_SMILIES' => 'Display smilies as images', 'VIEW_TOPICS_DAYS' => 'Display topics from previous days', 'VIEW_TOPICS_DIR' => 'Display topic order direction', 'VIEW_TOPICS_KEY' => 'Display topics ordering by', diff --git a/phpBB/language/en/viewforum.php b/phpBB/language/en/viewforum.php index f18dc37c77..8a1802b414 100644 --- a/phpBB/language/en/viewforum.php +++ b/phpBB/language/en/viewforum.php @@ -41,8 +41,8 @@ $lang = array_merge($lang, array( 'LOGIN_NOTIFY_FORUM' => 'You have been notified about this forum, please login to view it.', - 'MARK_TOPICS_READ' => 'Mark Topics Read', - 'MOVED_TOPIC' => 'Moved Topic', + 'MARK_TOPICS_READ' => 'Mark topics read', + 'MOVED_TOPIC' => 'Moved topic', 'NEW_POSTS_HOT' => 'New posts [ Popular ]', 'NEW_POSTS_LOCKED' => 'New posts [ Locked ]', diff --git a/phpBB/language/en/viewtopic.php b/phpBB/language/en/viewtopic.php index 44276689a7..1361a345f7 100644 --- a/phpBB/language/en/viewtopic.php +++ b/phpBB/language/en/viewtopic.php @@ -32,7 +32,7 @@ if (empty($lang) || !is_array($lang)) $lang = array_merge($lang, array( 'ATTACHMENT' => 'Attachment', - 'ATTACHMENT_FUNCTIONALITY_DISABLED' => 'Attachment has been disabled', + 'ATTACHMENT_FUNCTIONALITY_DISABLED' => 'The attachments feature has been disabled', 'BOOKMARK_ADDED' => 'Bookmarked topic successfully.', 'BOOKMARK_REMOVED' => 'Removed bookmarked topic successfully.', @@ -49,7 +49,7 @@ $lang = array_merge($lang, array( 'EDITED_TIMES_TOTAL' => 'Last edited by %1$s on %2$s, edited %3$d times in total', 'EDITED_TIME_TOTAL' => 'Last edited by %1$s on %2$s, edited %3$d time in total', 'EMAIL_TOPIC' => 'Email friend', - 'ERROR_NO_ATTACHMENT' => 'The selected Attachment does not exist anymore', + 'ERROR_NO_ATTACHMENT' => 'The selected attachment does not exist anymore', 'FILE_NOT_FOUND_404' => 'The file <strong>%s</strong> does not exist.', 'FORK_TOPIC' => 'Copy topic', @@ -58,10 +58,10 @@ $lang = array_merge($lang, array( 'LOGIN_NOTIFY_TOPIC' => 'You have been notified about this topic, please login to view it.', 'LOGIN_VIEWTOPIC' => 'The board administrator requires you to be registered and logged in to view this topic.', - 'MAKE_ANNOUNCE' => 'Change to Announcement', - 'MAKE_GLOBAL' => 'Change to Global', - 'MAKE_NORMAL' => 'Change to Standard Topic', - 'MAKE_STICKY' => 'Change to Sticky', + 'MAKE_ANNOUNCE' => 'Change to “Announcement”', + 'MAKE_GLOBAL' => 'Change to “Global”', + 'MAKE_NORMAL' => 'Change to “Standard Topic”', + 'MAKE_STICKY' => 'Change to “Sticky”', 'MAX_OPTIONS_SELECT' => 'You may select up to <strong>%d</strong> options', 'MAX_OPTION_SELECT' => 'You may select <strong>1</strong> option', 'MISSING_INLINE_ATTACHMENT' => 'The attachment <strong>%s</strong> is no longer available', @@ -95,8 +95,8 @@ $lang = array_merge($lang, array( 'VIEW_NEXT_TOPIC' => 'Next topic', 'VIEW_PREVIOUS_TOPIC' => 'Previous topic', 'VIEW_RESULTS' => 'View results', - 'VIEW_TOPIC_POST' => '1 Post', - 'VIEW_TOPIC_POSTS' => '%d Posts', + 'VIEW_TOPIC_POST' => '1 post', + 'VIEW_TOPIC_POSTS' => '%d posts', 'VIEW_UNREAD_POST' => 'First unread post', 'VISIT_WEBSITE' => 'WWW', 'VOTE_SUBMITTED' => 'Your vote has been cast', diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 98a59a73ed..bf2666102a 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -223,28 +223,38 @@ $module->assign_tpl_vars(append_sid("{$phpbb_root_path}mcp.$phpEx")); // Generate the page, do not display/query online list $module->display($module->get_page_title(), false); - /** * Functions used to generate additional URL paramters */ -function _module_main_url($mode) +function _module__url($mode, &$module_row) { return extra_url(); } -function _module_logs_url($mode) +function _module_main_url($mode, &$module_row) +{ + return extra_url(); +} + +function _module_logs_url($mode, &$module_row) +{ + return extra_url(); +} + +function _module_ban_url($mode, &$module_row) { return extra_url(); } function extra_url() { - global $forum_id, $topic_id, $post_id; + global $forum_id, $topic_id, $post_id, $user_id; $url_extra = ''; $url_extra .= ($forum_id) ? "&f=$forum_id" : ''; $url_extra .= ($topic_id) ? "&t=$topic_id" : ''; $url_extra .= ($post_id) ? "&p=$post_id" : ''; + $url_extra .= ($user_id) ? "&u=$user_id" : ''; return $url_extra; } @@ -252,9 +262,9 @@ function extra_url() /** * Get simple topic data */ -function get_topic_data($topic_ids, $acl_list = false) +function get_topic_data($topic_ids, $acl_list = false, $read_tracking = false) { - global $auth, $db; + global $auth, $db, $config, $user; static $rowset = array(); $topics = array(); @@ -264,15 +274,53 @@ function get_topic_data($topic_ids, $acl_list = false) return array(); } - $cache_topic_ids = array_intersect($topic_ids, array_keys($rowset)); - $topic_ids = array_diff($topic_ids, array_keys($rowset)); + // cache might not contain read tracking info, so we can't use it if read + // tracking information is requested + if (!$read_tracking) + { + $cache_topic_ids = array_intersect($topic_ids, array_keys($rowset)); + $topic_ids = array_diff($topic_ids, array_keys($rowset)); + } + else + { + $cache_topic_ids = array(); + } if (sizeof($topic_ids)) { - $sql = 'SELECT f.*, t.* - FROM ' . TOPICS_TABLE . ' t - LEFT JOIN ' . FORUMS_TABLE . ' f ON t.forum_id = f.forum_id - WHERE ' . $db->sql_in_set('t.topic_id', $topic_ids); + $sql_array = array( + 'SELECT' => 't.*, f.*', + + 'FROM' => array( + TOPICS_TABLE => 't', + ), + + 'LEFT_JOIN' => array( + array( + 'FROM' => array(FORUMS_TABLE => 'f'), + 'ON' => 'f.forum_id = t.forum_id' + ) + ), + + 'WHERE' => $db->sql_in_set('t.topic_id', $topic_ids) + ); + + if ($read_tracking && $config['load_db_lastread']) + { + $sql_array['SELECT'] .= ', tt.mark_time, ft.mark_time as forum_mark_time'; + + $sql_array['LEFT_JOIN'][] = array( + 'FROM' => array(TOPICS_TRACK_TABLE => 'tt'), + 'ON' => 'tt.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tt.topic_id' + ); + + $sql_array['LEFT_JOIN'][] = array( + 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), + 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND t.forum_id = ft.forum_id' + ); + } + + $sql = $db->sql_build_query('SELECT', $sql_array); $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) @@ -309,9 +357,9 @@ function get_topic_data($topic_ids, $acl_list = false) /** * Get simple post data */ -function get_post_data($post_ids, $acl_list = false) +function get_post_data($post_ids, $acl_list = false, $read_tracking = false) { - global $db, $auth; + global $db, $auth, $config, $user; $rowset = array(); @@ -320,27 +368,45 @@ function get_post_data($post_ids, $acl_list = false) return array(); } - $sql = $db->sql_build_query('SELECT', array( + $sql_array = array( 'SELECT' => 'p.*, u.*, t.*, f.*', 'FROM' => array( USERS_TABLE => 'u', + POSTS_TABLE => 'p', TOPICS_TABLE => 't', - POSTS_TABLE => 'p' ), 'LEFT_JOIN' => array( array( 'FROM' => array(FORUMS_TABLE => 'f'), - 'ON' => 'f.forum_id = p.forum_id' + 'ON' => 'f.forum_id = t.forum_id' ) ), 'WHERE' => $db->sql_in_set('p.post_id', $post_ids) . ' AND u.user_id = p.poster_id AND t.topic_id = p.topic_id', - )); + ); + + if ($read_tracking && $config['load_db_lastread']) + { + $sql_array['SELECT'] .= ', tt.mark_time, ft.mark_time as forum_mark_time'; + + $sql_array['LEFT_JOIN'][] = array( + 'FROM' => array(TOPICS_TRACK_TABLE => 'tt'), + 'ON' => 'tt.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tt.topic_id' + ); + + $sql_array['LEFT_JOIN'][] = array( + 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), + 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND t.forum_id = ft.forum_id' + ); + } + + $sql = $db->sql_build_query('SELECT', $sql_array); $result = $db->sql_query($sql); + unset($sql_array); while ($row = $db->sql_fetchrow($result)) { @@ -371,9 +437,9 @@ function get_post_data($post_ids, $acl_list = false) /** * Get simple forum data */ -function get_forum_data($forum_id, $acl_list = 'f_list') +function get_forum_data($forum_id, $acl_list = 'f_list', $read_tracking = false) { - global $auth, $db; + global $auth, $db, $user, $config; $rowset = array(); @@ -387,9 +453,20 @@ function get_forum_data($forum_id, $acl_list = 'f_list') return array(); } - $sql = 'SELECT * - FROM ' . FORUMS_TABLE . ' - WHERE ' . $db->sql_in_set('forum_id', $forum_id); + if ($read_tracking && $config['load_db_lastread']) + { + $read_tracking_join = ' LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft ON (ft.user_id = ' . $user->data['user_id'] . ' + AND ft.forum_id = f.forum_id)'; + $read_tracking_select = ', ft.mark_time'; + } + else + { + $read_tracking_join = $read_tracking_select = ''; + } + + $sql = "SELECT f.* $read_tracking_select + FROM " . FORUMS_TABLE . " f$read_tracking_join + WHERE " . $db->sql_in_set('f.forum_id', $forum_id); $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) @@ -632,6 +709,7 @@ function check_ids(&$ids, $table, $sql_id, $acl_list = false, $single_forum = fa $ids = array(); $forum_id = false; + while ($row = $db->sql_fetchrow($result)) { if ($acl_list && $row['forum_id'] && !$auth->acl_gets($acl_list, $row['forum_id'])) @@ -652,17 +730,26 @@ function check_ids(&$ids, $table, $sql_id, $acl_list = false, $single_forum = fa } // Limit forum to a specific forum id? - if ($single_forum !== true && $row['forum_id'] == (int) $single_forum) - { - $forum_id = (int) $single_forum; - } - else if ($forum_id === false) + // This can get really tricky, because we do not want to create a failure on global topics. :) + if ($row['forum_id']) { - $forum_id = $row['forum_id']; - } + if ($single_forum !== true && $row['forum_id'] == (int) $single_forum) + { + $forum_id = (int) $single_forum; + } + else if ($forum_id === false) + { + $forum_id = $row['forum_id']; + } - if ($row['forum_id'] == $forum_id) + if ($row['forum_id'] == $forum_id) + { + $ids[] = $row[$sql_id]; + } + } + else { + // Always add a global topic $ids[] = $row[$sql_id]; } } @@ -673,6 +760,8 @@ function check_ids(&$ids, $table, $sql_id, $acl_list = false, $single_forum = fa return false; } + // If forum id is false and ids populated we may have only global announcements selected (returning 0 because of (int) $forum_id) + return ($single_forum === false) ? true : (int) $forum_id; } diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index 834a938049..9b43d0be24 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -15,6 +15,7 @@ define('IN_PHPBB', true); $phpbb_root_path = './'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); +include($phpbb_root_path . 'includes/functions_display.' . $phpEx); // Start session management $user->session_begin(); @@ -122,7 +123,7 @@ switch ($mode) $db->sql_freeresult($result); $sql = $db->sql_build_query('SELECT', array( - 'SELECT' => 'u.user_id, u.group_id as default_group, u.username, u.user_colour, u.user_rank, u.user_posts, u.user_allow_pm, g.group_id, g.group_name, g.group_colour, g.group_type, ug.user_id as ug_user_id', + 'SELECT' => 'u.user_id, u.group_id as default_group, u.username, u.username_clean, u.user_colour, u.user_rank, u.user_posts, u.user_allow_pm, g.group_id, g.group_name, g.group_colour, g.group_type, ug.user_id as ug_user_id', 'FROM' => array( USERS_TABLE => 'u', @@ -305,7 +306,7 @@ switch ($mode) $messenger->im($row['user_jabber'], $row['username']); $messenger->assign_vars(array( - 'BOARD_EMAIL' => $config['board_contact'], + 'BOARD_CONTACT' => $config['board_contact'], 'FROM_USERNAME' => htmlspecialchars_decode($user->data['username']), 'TO_USERNAME' => htmlspecialchars_decode($row['username']), 'MESSAGE' => htmlspecialchars_decode($message)) @@ -418,10 +419,6 @@ switch ($mode) if ($config['load_user_activity']) { - if (!function_exists('display_user_activity')) - { - include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx); - } display_user_activity($member); } @@ -518,10 +515,10 @@ switch ($mode) 'U_SWITCH_PERMISSIONS' => ($auth->acl_get('a_switchperm') && $user->data['user_id'] != $user_id) ? append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=switch_perm&u={$user_id}") : '', 'S_ZEBRA' => ($user->data['user_id'] != $user_id && $user->data['is_registered'] && $zebra_enabled) ? true : false, - 'U_ADD_FRIEND' => (!$friend) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&add=' . urlencode($member['username'])) : '', - 'U_ADD_FOE' => (!$foe) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&mode=foes&add=' . urlencode($member['username'])) : '', + 'U_ADD_FRIEND' => (!$friend) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&add=' . urlencode(htmlspecialchars_decode($member['username']))) : '', + 'U_ADD_FOE' => (!$foe) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&mode=foes&add=' . urlencode(htmlspecialchars_decode($member['username']))) : '', 'U_REMOVE_FRIEND' => ($friend) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&remove=1&usernames[]=' . $user_id) : '', - 'U_REMOVE_FOE' => ($foe) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&remove=1&usernames[]=' . $user_id) : '', + 'U_REMOVE_FOE' => ($foe) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&remove=1&mode=foes&usernames[]=' . $user_id) : '', )); if (!empty($profile_fields['row'])) @@ -780,7 +777,7 @@ switch ($mode) $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip); $messenger->assign_vars(array( - 'BOARD_EMAIL' => $config['board_contact'], + 'BOARD_CONTACT' => $config['board_contact'], 'TO_USERNAME' => htmlspecialchars_decode($row['to_name']), 'FROM_USERNAME' => htmlspecialchars_decode($user->data['username']), 'MESSAGE' => htmlspecialchars_decode($message)) @@ -798,7 +795,7 @@ switch ($mode) } meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx")); - $message = ($user_id) ? sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>') : sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$row['forum_id']}&t=$topic_id") . '">', '</a>'); + $message = ($user_id) ? sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>') : sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$row['forum_id']}&t=$topic_id") . '">', '</a>'); trigger_error($user->lang['EMAIL_SENT'] . '<br /><br />' . $message); } } @@ -874,8 +871,9 @@ switch ($mode) // then only admins can make use of this (for ACP functionality) $sql_select = $sql_from = $sql_where = $order_by = ''; - $form = request_var('form', ''); - $field = request_var('field', ''); + $form = request_var('form', ''); + $field = request_var('field', ''); + $select_single = request_var('select_single', false); if ($mode == 'searchuser' && ($config['load_search'] || $auth->acl_get('a_'))) { @@ -940,7 +938,7 @@ switch ($mode) if ($ipdomain && $auth->acl_getf_global('m_info')) { - if (preg_match('#[a-z]#', $ipdomain)) + if (strspn($ipdomain, 'abcdefghijklmnopqrstuvwxyz')) { $hostnames = gethostbynamel($ipdomain); @@ -969,7 +967,7 @@ switch ($mode) $sql = 'SELECT DISTINCT poster_id FROM ' . POSTS_TABLE . ' - WHERE poster_ip ' . ((preg_match('#%#', $ips)) ? 'LIKE' : 'IN') . " ($ips) + WHERE poster_ip ' . ((strpos($ips, '%') !== false) ? 'LIKE' : 'IN') . " ($ips) AND forum_id IN (0, " . implode(', ', $ip_forums) . ')'; $result = $db->sql_query($sql); @@ -1120,7 +1118,7 @@ switch ($mode) $sort_key = $default_key; } - $order_by .= $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC'); + $order_by .= $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC'); // Count the users ... if ($sql_where) @@ -1204,6 +1202,7 @@ switch ($mode) 'S_SEARCH_USER' => true, 'S_FORM_NAME' => $form, 'S_FIELD_NAME' => $field, + 'S_SELECT_SINGLE' => $select_single, 'S_COUNT_OPTIONS' => $s_find_count, 'S_SORT_OPTIONS' => $s_sort_key, 'S_JOINED_TIME_OPTIONS' => $s_find_join_time, @@ -1240,7 +1239,8 @@ switch ($mode) $id_cache = array(); while ($row = $db->sql_fetchrow($result)) { - $row['session_time'] = (!empty($session_times[$row['user_id']])) ? $session_times[$row['user_id']] : ''; + $row['session_time'] = (!empty($session_times[$row['user_id']])) ? $session_times[$row['user_id']] : 0; + $row['last_visit'] = (!empty($row['session_time'])) ? $row['session_time'] : $row['user_lastvisit']; $id_cache[$row['user_id']] = $row; } @@ -1256,6 +1256,13 @@ switch ($mode) $profile_fields_cache = $cp->generate_profile_fields_template('grab', array_keys($id_cache)); } + // If we sort by last active date we need to adjust the id cache due to user_lastvisit not being the last active date... + if ($sort_key == 'l') + { + $lesser_than = ($sort_dir == 'a') ? -1 : 1; + uasort($id_cache, create_function('$first, $second', "return (\$first['last_visit'] == \$second['last_visit']) ? 0 : ((\$first['last_visit'] < \$second['last_visit']) ? $lesser_than : ($lesser_than * -1));")); + } + $i = 0; foreach ($id_cache as $user_id => $row) { @@ -1346,37 +1353,6 @@ make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx")); page_footer(); /** -* Get user rank title and image -*/ -function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src) -{ - global $ranks, $config; - - if (!empty($user_rank)) - { - $rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : ''; - $rank_img = (!empty($ranks['special'][$user_rank]['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] . '" alt="' . $ranks['special'][$user_rank]['rank_title'] . '" title="' . $ranks['special'][$user_rank]['rank_title'] . '" />' : ''; - $rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] : ''; - } - else - { - if (isset($ranks['normal'])) - { - foreach ($ranks['normal'] as $rank) - { - if ($user_posts >= $rank['rank_min']) - { - $rank_title = $rank['rank_title']; - $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $rank['rank_image'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : ''; - $rank_img_src = (!empty($rank['rank_image'])) ? $config['ranks_path'] . '/' . $rank['rank_image'] : ''; - break; - } - } - } - } -} - -/** * Prepare profile data */ function show_profile($data) @@ -1388,7 +1364,7 @@ function show_profile($data) $rank_title = $rank_img = $rank_img_src = ''; get_user_rank($data['user_rank'], $data['user_posts'], $rank_title, $rank_img, $rank_img_src); - + if (!empty($data['user_allow_viewemail']) || $auth->acl_get('a_email')) { $email = ($config['board_email_form'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=email&u=' . $user_id) : (($config['board_hide_emails'] && !$auth->acl_get('a_email')) ? '' : 'mailto:' . $data['user_email']); @@ -1425,7 +1401,7 @@ function show_profile($data) if ($bday_year) { - $now = getdate(time() + $user->timezone + $user->dst - (date('H', time()) - gmdate('H', time())) * 3600); + $now = getdate(time() + $user->timezone + $user->dst - date('Z')); $diff = $now['mon'] - $bday_month; if ($diff == 0) @@ -1444,22 +1420,24 @@ function show_profile($data) // Dump it out to the template return array( 'AGE' => $age, - 'USERNAME' => $username, - 'USER_COLOR' => (!empty($data['user_colour'])) ? $data['user_colour'] : '', 'RANK_TITLE' => $rank_title, 'JOINED' => $user->format_date($data['user_regdate']), 'VISITED' => (empty($last_visit)) ? ' - ' : $user->format_date($last_visit), 'POSTS' => ($data['user_posts']) ? $data['user_posts'] : 0, 'WARNINGS' => isset($data['user_warnings']) ? $data['user_warnings'] : 0, - 'ONLINE_IMG' => (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')), + 'USERNAME_FULL' => get_username_string('full', $user_id, $username, $data['user_colour']), + 'USERNAME' => get_username_string('username', $user_id, $username, $data['user_colour']), + 'USER_COLOR' => get_username_string('colour', $user_id, $username, $data['user_colour']), + 'U_VIEW_PROFILE' => get_username_string('profile', $user_id, $username, $data['user_colour']), + + 'ONLINE_IMG' => (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')), 'S_ONLINE' => ($config['load_onlinetrack'] && $online) ? true : false, 'RANK_IMG' => $rank_img, 'RANK_IMG_SRC' => $rank_img_src, 'ICQ_STATUS_IMG' => (!empty($data['user_icq'])) ? '<img src="http://web.icq.com/whitepages/online?icq=' . $data['user_icq'] . '&img=5" width="18" height="18" />' : '', 'S_JABBER_ENABLED' => ($config['jab_enable']) ? true : false, - 'U_PROFILE' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $user_id), 'U_SEARCH_USER' => ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", "author_id=$user_id&sr=posts") : '', 'U_NOTES' => $auth->acl_getf_global('m_') ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&mode=user_notes&u=' . $user_id, true, $user->session_id) : '', 'U_WARN' => $auth->acl_getf_global('m_warn') ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&mode=warn_user&u=' . $user_id, true, $user->session_id) : '', diff --git a/phpBB/posting.php b/phpBB/posting.php index 654db73a61..2bb1329d16 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -39,7 +39,7 @@ $load = (isset($_POST['load'])) ? true : false; $delete = (isset($_POST['delete'])) ? true : false; $cancel = (isset($_POST['cancel']) && !isset($_POST['save'])) ? true : false; -$refresh = (isset($_POST['add_file']) || isset($_POST['delete_file']) || isset($_POST['edit_comment']) || isset($_POST['cancel_unglobalise']) || $save || $load) ? true : false; +$refresh = (isset($_POST['add_file']) || isset($_POST['delete_file']) || isset($_POST['cancel_unglobalise']) || $save || $load) ? true : false; $mode = ($delete && !$preview && !$refresh && $submit) ? 'delete' : request_var('mode', ''); $error = $post_data = array(); @@ -88,7 +88,7 @@ switch ($mode) trigger_error('NO_POST'); } - $sql = 'SELECT f.*, t.*, p.*, u.username, u.user_sig, u.user_sig_bbcode_uid, u.user_sig_bbcode_bitfield + $sql = 'SELECT f.*, t.*, p.*, u.username, u.username_clean, u.user_sig, u.user_sig_bbcode_uid, u.user_sig_bbcode_bitfield FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . ' f, ' . USERS_TABLE . " u WHERE p.post_id = $post_id AND t.topic_id = p.topic_id @@ -191,6 +191,11 @@ switch ($mode) break; case 'quote': + + $post_data['post_edit_locked'] = 0; + + // no break; + case 'reply': if ($auth->acl_get('f_reply', $forum_id)) { @@ -488,6 +493,18 @@ if ($save && $user->data['is_registered'] && $auth->acl_get('u_savedrafts')) confirm_box(false, 'SAVE_DRAFT', $s_hidden_fields); } } + else + { + if (!$subject) + { + $error[] = $user->lang['EMPTY_SUBJECT']; + } + + if (!$message) + { + $error[] = $user->lang['TOO_FEW_CHARS']; + } + } unset($subject, $message); } @@ -532,7 +549,8 @@ if ($submit || $preview || $refresh) $post_data['username'] = utf8_normalize_nfc(request_var('username', $post_data['username'], true)); $post_data['post_edit_reason'] = (!empty($_POST['edit_reason']) && $mode == 'edit' && $auth->acl_get('m_edit', $forum_id)) ? utf8_normalize_nfc(request_var('edit_reason', '', true)) : ''; - + + $post_data['orig_topic_type'] = $post_data['topic_type']; $post_data['topic_type'] = request_var('topic_type', (($mode != 'post') ? (int) $post_data['topic_type'] : POST_NORMAL)); $post_data['topic_time_limit'] = request_var('topic_time_limit', (($mode != 'post') ? (int) $post_data['topic_time_limit'] : 0)); $post_data['icon_id'] = request_var('icon', 0); @@ -721,7 +739,7 @@ if ($submit || $preview || $refresh) } // Parse subject - if (!$refresh && !$post_data['post_subject'] && ($mode == 'post' || ($mode == 'edit' && $post_data['topic_first_post_id'] == $post_id))) + if (!$preview && !$refresh && !$post_data['post_subject'] && ($mode == 'post' || ($mode == 'edit' && $post_data['topic_first_post_id'] == $post_id))) { $error[] = $user->lang['EMPTY_SUBJECT']; } @@ -782,7 +800,16 @@ if ($submit || $preview || $refresh) if (!$auth->acl_get($auth_option, $forum_id)) { - $error[] = $user->lang['CANNOT_POST_' . str_replace('F_', '', strtoupper($auth_option))]; + // There is a special case where a user edits his post whereby the topic type got changed by an admin/mod + if ($mode == 'edit' && $post_data['poster_id'] == $user->data['user_id']) + { + // To prevent non-authed users messing around with the topic type we reset it to the original one. + $post_data['topic_type'] = $post_data['orig_topic_type']; + } + else + { + $error[] = $user->lang['CANNOT_POST_' . str_replace('F_', '', strtoupper($auth_option))]; + } } } @@ -794,7 +821,7 @@ if ($submit || $preview || $refresh) // DNSBL check if ($config['check_dnsbl'] && !$refresh) { - if (($dnsbl = $user->check_dnsbl()) !== false) + if (($dnsbl = $user->check_dnsbl('post')) !== false) { $error[] = sprintf($user->lang['IP_BLACKLISTED'], $user->ip, $dnsbl[1]); } @@ -987,17 +1014,12 @@ if (!sizeof($error) && $preview) // Attachment Preview if (sizeof($message_parser->attachment_data)) { - $extensions = $update_count = array(); - $template->assign_var('S_HAS_ATTACHMENTS', true); + $update_count = array(); $attachment_data = $message_parser->attachment_data; - $unset_attachments = parse_inline_attachments($preview_message, $attachment_data, $update_count, $forum_id, true); - foreach ($unset_attachments as $index) - { - unset($attachment_data[$index]); - } + parse_attachments($forum_id, $preview_message, $attachment_data, $update_count, true); foreach ($attachment_data as $i => $attachment) { @@ -1005,7 +1027,7 @@ if (!sizeof($error) && $preview) 'DISPLAY_ATTACHMENT' => $attachment) ); } - unset($attachment_data, $attachment); + unset($attachment_data); } if (!sizeof($error)) @@ -1128,12 +1150,17 @@ if ($config['enable_post_confirm'] && !$user->data['is_registered'] && $solved_c // Generate code $code = gen_rand_string(mt_rand(5, 8)); $confirm_id = md5(unique_id($user->ip)); + $seed = hexdec(substr(unique_id(), 4, 10)); + + // compute $seed % 0x7fffffff + $seed -= 0x7fffffff * floor($seed / 0x7fffffff); $sql = 'INSERT INTO ' . CONFIRM_TABLE . ' ' . $db->sql_build_array('INSERT', array( 'confirm_id' => (string) $confirm_id, 'session_id' => (string) $user->session_id, 'confirm_type' => (int) CONFIRM_POST, - 'code' => (string) $code) + 'code' => (string) $code, + 'seed' => (int) $seed) ); $db->sql_query($sql); diff --git a/phpBB/search.php b/phpBB/search.php index 1be3aa8b14..3e4159025a 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -95,7 +95,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) } else if ($author) { - if ((strpos($author, '*') !== false) && (str_replace(array('*', '%'), '', $author) < $config['min_search_author_chars'])) + if ((strpos($author, '*') !== false) && (utf8_strlen(str_replace(array('*', '%'), '', $author)) < $config['min_search_author_chars'])) { trigger_error(sprintf($user->lang['TOO_FEW_AUTHOR_CHARS'], $config['min_search_author_chars'])); } @@ -103,7 +103,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) $sql_where = (strpos($author, '*') !== false) ? ' LIKE ' : ' = '; $sql = 'SELECT user_id FROM ' . USERS_TABLE . " - WHERE username $sql_where '" . $db->sql_escape(preg_replace('#\*+#', '%', $author)) . "' + WHERE username_clean $sql_where '" . $db->sql_escape(preg_replace('#\*+#', '%', utf8_clean_string($author))) . "' AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')'; $result = $db->sql_query_limit($sql, 100); @@ -148,7 +148,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) $sql = 'SELECT f.forum_id, f.forum_name, f.parent_id, f.forum_type, f.right_id, f.forum_password, fa.user_id FROM ' . FORUMS_TABLE . ' f - LEFT JOIN ' . FORUMS_ACCESS_TABLE . " fa ON (fa.forum_id = f.forum_id + LEFT JOIN ' . FORUMS_ACCESS_TABLE . " fa ON (fa.forum_id = f.forum_id AND fa.session_id = '" . $db->sql_escape($user->session_id) . "') $not_in_fid ORDER BY f.left_id"; @@ -250,13 +250,14 @@ if ($keywords || $author || $author_id || $search_id || $submit) $sort_by_sql = array('a' => 'u.username_clean', 't' => (($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time'), 'f' => 'f.forum_id', 'i' => 't.topic_title', 's' => (($show_results == 'posts') ? 'p.post_subject' : 't.topic_title')); // pre-made searches - $sql = $field = ''; + $sql = $field = $l_search_title = ''; if ($search_id) { switch ($search_id) { // Oh holy Bob, bring us some activity... case 'active_topics': + $l_search_title = $user->lang['SEARCH_ACTIVE_TOPICS']; $show_results = 'topics'; $sort_key = 't'; $sort_dir = 'd'; @@ -279,6 +280,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) break; case 'unanswered': + $l_search_title = $user->lang['SEARCH_UNANSWERED']; $show_results = request_var('sr', 'topics'); $show_results = ($show_results == 'posts') ? 'posts' : 'topics'; $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time'; @@ -331,6 +333,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) break; case 'newposts': + $l_search_title = $user->lang['SEARCH_NEW']; // force sorting $show_results = (request_var('sr', 'topics') == 'posts') ? 'posts' : 'topics'; $sort_key = 't'; @@ -363,6 +366,10 @@ if ($keywords || $author || $author_id || $search_id || $submit) $field = 'topic_id'; } break; + + case 'egosearch': + $l_search_title = $user->lang['SEARCH_SELF']; + break; } } @@ -446,7 +453,6 @@ if ($keywords || $author || $author_id || $search_id || $submit) } // define some vars for urls - // @todo preg_replace still needed? $hilit = htmlspecialchars(implode('|', explode(' ', preg_replace('#\s+#u', ' ', str_replace(array('+', '-', '|', '(', ')'), ' ', $keywords))))); $u_hilit = urlencode($keywords); $u_show_results = ($show_results != 'posts') ? '&sr=' . $show_results : ''; @@ -464,6 +470,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) $u_search .= ($return_chars != 200) ? '&ch=' . $return_chars : ''; $template->assign_vars(array( + 'SEARCH_TITLE' => $l_search_title, 'SEARCH_MATCHES' => $l_search_matches, 'SEARCH_WORDS' => preg_replace('#&(\#[0-9]+;)#', '&$1', htmlspecialchars($search->search_query)), 'IGNORED_WORDS' => (sizeof($search->common_words)) ? htmlspecialchars(implode(' ', $search->common_words)) : '', @@ -490,9 +497,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) { if ($show_results == 'posts') { - /** - * @todo Joining this query to the one below? - */ + // @todo Joining this query to the one below? $sql = 'SELECT zebra_id, friend, foe FROM ' . ZEBRA_TABLE . ' WHERE user_id = ' . $user->data['user_id']; @@ -505,7 +510,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) } $db->sql_freeresult($result); - $sql = 'SELECT p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_sig, u.user_sig_bbcode_uid, u.user_colour + $sql = 'SELECT p.*, f.forum_id, f.forum_name, t.*, u.username, u.username_clean, u.user_sig, u.user_sig_bbcode_uid, u.user_colour FROM ' . POSTS_TABLE . ' p LEFT JOIN ' . TOPICS_TABLE . ' t ON (p.topic_id = t.topic_id) LEFT JOIN ' . FORUMS_TABLE . ' f ON (p.forum_id = f.forum_id) @@ -620,14 +625,26 @@ if ($keywords || $author || $author_id || $search_id || $submit) } else { - $bbcode_bitfield = ''; + $bbcode_bitfield = $text_only_message = ''; $attach_list = array(); while ($row = $db->sql_fetchrow($result)) { - $rowset[] = $row; - if (($return_chars == -1) || (utf8_strlen($row['post_text']) < $return_chars + 3)) + // We pre-process some variables here for later usage + $row['post_text'] = censor_text($row['post_text']); + + $text_only_message = $row['post_text']; + // make list items visible as such + if ($row['bbcode_uid']) + { + $text_only_message = str_replace('[*:' . $row['bbcode_uid'] . ']', '⋅ ', $text_only_message); + // no BBCode in text only message + strip_bbcode($text_only_message, $row['bbcode_uid']); + } + + if ($return_chars == -1 || utf8_strlen($text_only_message) < ($return_chars + 3)) { + $row['display_text_only'] = false; $bbcode_bitfield = $bbcode_bitfield | base64_decode($row['bbcode_bitfield']); // Does this post have an attachment? If so, add it to the list @@ -636,9 +653,18 @@ if ($keywords || $author || $author_id || $search_id || $submit) $attach_list[$row['forum_id']][] = $row['post_id']; } } + else + { + $row['post_text'] = $text_only_message; + $row['display_text_only'] = true; + } + + $rowset[] = $row; } $db->sql_freeresult($result); + unset($text_only_message); + // Instantiate BBCode if needed if ($bbcode_bitfield !== '') { @@ -794,50 +820,39 @@ if ($keywords || $author || $author_id || $search_id || $submit) // Replace naughty words such as farty pants $row['post_subject'] = censor_text($row['post_subject']); - $message = $row['post_text']; - if ($return_chars != -1 && utf8_strlen($message) >= ($return_chars + 3)) + if ($row['display_text_only']) { - $message = censor_text($message); - - // make list items visible as such - $message = str_replace('[*:' . $row['bbcode_uid'] . ']', '⋅ ', $message); - - // do not display raw bbcode - strip_bbcode($message, $row['bbcode_uid']); - // now find context for the searched words - $message = get_context($message, array_filter(explode('|', $hilit), 'strlen'), $return_chars); - - $message = str_replace("\n", '<br />', $message); + $row['post_text'] = get_context($row['post_text'], array_filter(explode('|', $hilit), 'strlen'), $return_chars); + $row['post_text'] = str_replace("\n", '<br />', $row['post_text']); } else { - $message = censor_text($message); - $message = str_replace("\n", '<br />', $message); + $row['post_text'] = str_replace("\n", '<br />', $row['post_text']); // Second parse bbcode here if ($row['bbcode_bitfield']) { - $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']); + $bbcode->bbcode_second_pass($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield']); } - if (isset($attachments[$row['post_id']]) && sizeof($attachments[$row['post_id']])) + if (!empty($attachments[$row['post_id']])) { - parse_inline_attachments($message, $attachments[$row['post_id']], $update_count, $forum_id); + parse_attachments($forum_id, $row['post_text'], $attachments[$row['post_id']], $update_count); // we only display inline attachments unset($attachments[$row['post_id']]); } // Always process smilies after parsing bbcodes - $message = smiley_text($message); + $row['post_text'] = smiley_text($row['post_text']); } if ($hilit) { // post highlighting - $message = preg_replace('#(?!<.*)(?<!\w)(' . $hilit . ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span class="posthilit">$1</span>', $message); + $row['post_text'] = preg_replace('#(?!<.*)(?<!\w)(' . $hilit . ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span class="posthilit">$1</span>', $row['post_text']); } $tpl_ary = array( @@ -848,7 +863,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) 'POST_SUBJECT' => $row['post_subject'], 'POST_DATE' => (!empty($row['post_time'])) ? $user->format_date($row['post_time']) : '', - 'MESSAGE' => $message + 'MESSAGE' => $row['post_text'] ); } @@ -878,10 +893,10 @@ if ($keywords || $author || $author_id || $search_id || $submit) } unset($rowset); - page_header($user->lang['SEARCH']); + page_header(($l_search_title) ? $l_search_title : $user->lang['SEARCH']); $template->set_filenames(array( - 'body' => 'search_results.html') + 'body' => 'search_results.html') ); make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx")); @@ -893,7 +908,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) $s_forums = ''; $sql = 'SELECT f.forum_id, f.forum_name, f.parent_id, f.forum_type, f.left_id, f.right_id, f.forum_password, fa.user_id FROM ' . FORUMS_TABLE . ' f - LEFT JOIN ' . FORUMS_ACCESS_TABLE . " fa ON (fa.forum_id = f.forum_id + LEFT JOIN ' . FORUMS_ACCESS_TABLE . " fa ON (fa.forum_id = f.forum_id AND fa.session_id = '" . $db->sql_escape($user->session_id) . "') ORDER BY f.left_id ASC"; $result = $db->sql_query($sql); @@ -960,6 +975,12 @@ while ($row = $db->sql_fetchrow($result)) $holding = ''; } } + +if ($holding) +{ + $s_forums .= $holding; +} + $db->sql_freeresult($result); unset($pad_store); @@ -990,14 +1011,21 @@ $template->assign_vars(array( 'S_SELECT_SORT_DAYS' => $s_limit_days) ); -// Can't do comparisons w/ TEXT on MSSQL, CAST is good enough +// Handle large objects differently for Oracle and MSSQL switch ($db->sql_layer) { + case 'oracle': + $sql = 'SELECT search_time, search_keywords + FROM ' . SEARCH_RESULTS_TABLE . ' + WHERE dbms_lob.getlength(search_keywords) > 0 + ORDER BY search_time DESC'; + break; + case 'mssql': case 'mssql_odbc': $sql = 'SELECT search_time, search_keywords FROM ' . SEARCH_RESULTS_TABLE . ' - WHERE CAST(search_keywords AS varchar) <> \'\' + WHERE DATALENGTH(search_keywords) > 0 ORDER BY search_time DESC'; break; diff --git a/phpBB/style.php b/phpBB/style.php index 496ae7c8e0..a9803aa4e5 100644 --- a/phpBB/style.php +++ b/phpBB/style.php @@ -33,7 +33,7 @@ if (!empty($load_extensions)) $sid = (isset($_GET['sid'])) ? htmlspecialchars($_GET['sid']) : ''; $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0; -if (!preg_match('/^[A-Za-z0-9]*$/', $sid)) +if (!ctype_alnum($sid)) { $sid = ''; } diff --git a/phpBB/styles/subSilver/template/attachment.html b/phpBB/styles/subSilver/template/attachment.html index 2f4ac0d268..daa2bacdef 100644 --- a/phpBB/styles/subSilver/template/attachment.html +++ b/phpBB/styles/subSilver/template/attachment.html @@ -10,7 +10,7 @@ <!-- ENDIF --> <!-- IF _file.S_THUMBNAIL --> - <a href="{_file.U_DOWNLOAD_LINK}" target="_blank"><img src="{_file.THUMB_IMAGE}" alt="{_file.DOWNLOAD_NAME}" /></a><br /> + <a href="{_file.U_DOWNLOAD_LINK}"><img src="{_file.THUMB_IMAGE}" alt="{_file.DOWNLOAD_NAME}" /></a><br /> <span class="gensmall">{_file.DOWNLOAD_NAME} [ {_file.FILESIZE} {_file.SIZE_LANG} | {_file.L_DOWNLOADED_VIEWED} {_file.L_DOWNLOAD_COUNT} ]</span> <!-- ENDIF --> @@ -21,24 +21,39 @@ <!-- IF _file.S_FILE --> <span class="genmed"> - <!-- IF _file.UPLOAD_IMAGE -->{_file.UPLOAD_IMAGE} <!-- ENDIF --> + <!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF --> <a href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a> [{_file.FILESIZE} {_file.SIZE_LANG}] </span><br /> <span class="gensmall">{_file.L_DOWNLOADED_VIEWED} {_file.L_DOWNLOAD_COUNT}</span> <!-- ENDIF --> <!-- IF _file.S_WM_FILE --> - <object classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject"> - <param name="FileName" VALUE="{_file.U_DOWNLOAD_LINK}"> - <param name="ShowControls" value="1"> - <param name="ShowDisplay" value="0"> - <param name="ShowStatusBar" value="1"> - <param name="AutoSize" value="1"> - <param name="AutoStart" value="0"> - <param name="Visible" value="1"> - <param name="AnimationStart" value="0"> - <param name="Loop" value="0"> - <embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/windows/windowsmedia/download/AllDownloads.aspx/" filename="{_file.U_DOWNLOAD_LINK}" src="{_file.U_DOWNLOAD_LINK}" name="MediaPlayer" ShowControls="1" ShowDisplay="0" ShowStatusBar="1" AutoSize="1" AutoStart="0" Visible="1" AnimationStart="0" Loop="0"></embed> + <!-- method used here from http://alistapart.com/articles/byebyeembed / autosizing seems to not work always, this will not fix --> + <object width="320" height="285" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" id="wmstream_{_file.ATTACH_ID}"> + <param name="url" value="{_file.U_DOWNLOAD_LINK}" /> + <param name="showcontrols" value="1" /> + <param name="showdisplay" value="0" /> + <param name="showstatusbar" value="0" /> + <param name="autosize" value="1" /> + <param name="autostart" value="0" /> + <param name="visible" value="1" /> + <param name="animationstart" value="0" /> + <param name="loop" value="0" /> + <param name="src" value="{_file.U_DOWNLOAD_LINK}" /> + <!--[if !IE]>--> + <object width="320" height="285" type="video/x-ms-wmv" data="{_file.U_DOWNLOAD_LINK}"> + <param name="src" value="{_file.U_DOWNLOAD_LINK}" /> + <param name="controller" value="1" /> + <param name="showcontrols" value="1" /> + <param name="showdisplay" value="0" /> + <param name="showstatusbar" value="0" /> + <param name="autosize" value="1" /> + <param name="autostart" value="0" /> + <param name="visible" value="1" /> + <param name="animationstart" value="0" /> + <param name="loop" value="0" /> + </object> + <!--<![endif]--> </object> <!-- ELSEIF _file.S_FLASH_FILE --> @@ -74,7 +89,7 @@ <embed name="ctrls_{_file.ATTACH_ID}" type="audio/x-pn-realaudio-plugin" width="200" height="36" controls="ControlPanel" console="ctrls_{_file.ATTACH_ID}"></embed> </object> - <script language="Javascript"> + <script type="text/javascript"> <!-- if (document.rmstream_{_file.ATTACH_ID}.GetClipWidth) { @@ -96,7 +111,7 @@ <!-- IF _file.S_WM_FILE or _file.S_RM_FILE or _file.S_FLASH_FILE or _file.S_QUICKTIME_FILE --> <br /> <!-- IF _file.S_QUICKTIME_FILE --><a href="javascript:play_qt_file(document.qtstream_{_file.ATTACH_ID});">[ {L_PLAY_QUICKTIME_FILE} ]</a> <!-- ENDIF --> - <span class="gensmall">{_file.DOWNLOAD_NAME} [ {_file.FILESIZE} {_file.SIZE_LANG} | {_file.L_DOWNLOADED_VIEWED} {_file.L_DOWNLOAD_COUNT} ]</span> + <span class="gensmall"><a href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a> [ {_file.FILESIZE} {_file.SIZE_LANG} | {_file.L_DOWNLOADED_VIEWED} {_file.L_DOWNLOAD_COUNT} ]</span> <!-- ENDIF --> <br /> diff --git a/phpBB/styles/subSilver/template/bbcode.html b/phpBB/styles/subSilver/template/bbcode.html index abab909699..1f0e8a72d2 100644 --- a/phpBB/styles/subSilver/template/bbcode.html +++ b/phpBB/styles/subSilver/template/bbcode.html @@ -52,7 +52,7 @@ <!-- BEGIN img --><img src="{URL}" alt="{L_IMAGE}" /><!-- END img --> -<!-- BEGIN url --><a href="{URL}" target="_blank" class="postlink">{DESCRIPTION}</a><!-- END url --> +<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url --> <!-- BEGIN email --><a href="mailto:{EMAIL}">{DESCRIPTION}</a><!-- END email --> diff --git a/phpBB/styles/subSilver/template/editor.js b/phpBB/styles/subSilver/template/editor.js index 54e7e61f3a..2ef2853ed3 100644 --- a/phpBB/styles/subSilver/template/editor.js +++ b/phpBB/styles/subSilver/template/editor.js @@ -13,10 +13,10 @@ var clientPC = navigator.userAgent.toLowerCase(); // Get client info var clientVer = parseInt(navigator.appVersion); // Get browser version var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1)); -var is_nav = ((clientPC.indexOf('mozilla') != -1) && (clientPC.indexOf('spoofer') == -1) && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera') == -1) && (clientPC.indexOf('webtv') == -1) && (clientPC.indexOf('hotjava') == -1)); - var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1)); -var is_mac = (clientPC.indexOf('mac') != -1); + +var baseHeight; +window.onload = initInsertions; /** * Shows the help messages in the helpline window @@ -27,45 +27,20 @@ function helpline(help) } /** -* Replacement for arrayname.length property -*/ -function getarraysize(thearray) +* Fix a bug involving the TextRange object. From +* http://www.frostjedi.com/terra/scripts/demo/caretBug.html +*/ +function initInsertions() { - for (i = 0; i < thearray.length; i++) + var textarea = document.forms[form_name].elements[text_name]; + textarea.focus(); + if (is_ie && typeof(baseHeight) != 'number') { - if (typeof thearray[i] == 'undefined' || thearray[i] == '' || thearray[i] == null) - { - return i; - } + baseHeight = document.selection.createRange().duplicate().boundingHeight; } - - return thearray.length; } /** -* Replacement for arrayname.push(value) not implemented in IE until version 5.5 -* Appends element to the array -*/ -function arraypush(thearray,value) -{ - thearray[getarraysize(thearray)] = value; -} - -/** -* Replacement for arrayname.pop() not implemented in IE until version 5.5 -* Removes and returns the last element of an array -*/ -function arraypop(thearray) -{ - thearraysize = getarraysize(thearray); - retval = thearray[thearraysize - 1]; - delete thearray[thearraysize - 1]; - - return retval; -} - - -/** * bbstyle */ function bbstyle(bbnumber) @@ -168,6 +143,11 @@ function insert_text(text, spaces, popup) else if (textarea.createTextRange && textarea.caretPos) { + if (baseHeight != textarea.caretPos.boundingHeight) + { + textarea.focus(); + storeCaret(textarea); + } var caret_pos = textarea.caretPos; caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; diff --git a/phpBB/styles/subSilver/template/faq_body.html b/phpBB/styles/subSilver/template/faq_body.html index 81c9b6296c..5d2656543b 100644 --- a/phpBB/styles/subSilver/template/faq_body.html +++ b/phpBB/styles/subSilver/template/faq_body.html @@ -38,8 +38,8 @@ <!-- ELSE --> <td class="row2" valign="top"> <!-- ENDIF --> - <p class="postbody"><a name="f{faq_block.S_ROW_COUNT}{faq_block.faq_row.S_ROW_COUNT}"></a><b>» {faq_block.faq_row.FAQ_QUESTION}</b></p> - <p class="postbody">{faq_block.faq_row.FAQ_ANSWER}</p> + <div class="postbody"><a name="f{faq_block.S_ROW_COUNT}{faq_block.faq_row.S_ROW_COUNT}"></a><b>» {faq_block.faq_row.FAQ_QUESTION}</b></div> + <div class="postbody">{faq_block.faq_row.FAQ_ANSWER}</div> <p class="gensmall"><a href="#faqtop">{L_BACK_TO_TOP}</a></p> </td> </tr> diff --git a/phpBB/styles/subSilver/template/forumlist_body.html b/phpBB/styles/subSilver/template/forumlist_body.html index eeee5d914b..90e5e1e0cd 100644 --- a/phpBB/styles/subSilver/template/forumlist_body.html +++ b/phpBB/styles/subSilver/template/forumlist_body.html @@ -1,6 +1,6 @@ <table class="tablebg" cellspacing="1" width="100%"> <tr> - <td class="cat" colspan="5" align="right"><a class="nav" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a> </td> + <td class="cat" colspan="5" align="right"><!-- IF not S_IS_BOT --><a class="nav" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a><!-- ENDIF --> </td> </tr> <tr> <th colspan="2"> {L_FORUM} </th> diff --git a/phpBB/styles/subSilver/template/login_body.html b/phpBB/styles/subSilver/template/login_body.html index 70e147fca8..192613faa0 100644 --- a/phpBB/styles/subSilver/template/login_body.html +++ b/phpBB/styles/subSilver/template/login_body.html @@ -81,12 +81,12 @@ </td> </tr> <tr> - <td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td> - <td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td> + <td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td> + <td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td> </tr> <!-- ENDIF --> <tr> - <td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}<input type="submit" name="login" class="btnmain" value="{L_LOGIN}" tabindex="5" /></td> + <td class="cat" <!-- IF not S_ADMIN_AUTH or S_CONFIRM_CODE -->colspan="2"<!-- ENDIF --> align="center">{S_HIDDEN_FIELDS}<input type="submit" name="login" class="btnmain" value="{L_LOGIN}" tabindex="5" /></td> </tr> </table> diff --git a/phpBB/styles/subSilver/template/mcp_ban.html b/phpBB/styles/subSilver/template/mcp_ban.html index fff3d350d1..1834e729ba 100644 --- a/phpBB/styles/subSilver/template/mcp_ban.html +++ b/phpBB/styles/subSilver/template/mcp_ban.html @@ -43,7 +43,7 @@ <tr> <td class="row1" width="45%" valign="top"><b>{L_BAN_CELL}:</b></td> <td class="row2"> - <textarea name="ban" id="ban" cols="40" rows="3" class="post"></textarea> + <textarea name="ban" id="ban" cols="40" rows="3" class="post">{USERNAMES}</textarea> <!-- IF S_USERNAME_BAN --><br />[ <a href="#" onclick="window.open('{U_FIND_USER}', '_phpbbsearch', 'height=500, resizable=yes, scrollbars=yes, width=740'); return false;">{L_FIND_USERNAME}</a> ]<!-- ENDIF --> </td> </tr> diff --git a/phpBB/styles/subSilver/template/mcp_forum.html b/phpBB/styles/subSilver/template/mcp_forum.html index 536e7bc0b9..8dc7e4d5b3 100644 --- a/phpBB/styles/subSilver/template/mcp_forum.html +++ b/phpBB/styles/subSilver/template/mcp_forum.html @@ -36,11 +36,16 @@ <!-- IF topicrow.S_TOPIC_REPORTED and topicrow.U_MCP_REPORT --> <a href="{topicrow.U_MCP_REPORT}">{REPORTED_IMG}</a> <!-- ENDIF --> + <!-- IF topicrow.S_MOVED_TOPIC and S_CAN_DELETE --> + [ <a href="{topicrow.U_DELETE_TOPIC}">{L_DELETE_SHADOW_TOPIC}</a> ] + <!-- ENDIF --> </p> </td> <td class="row1" width="50" align="center"><p class="topicdetails">{topicrow.REPLIES}</p></td> <td class="row1" width="120" align="center"><p class="topicdetails">{topicrow.LAST_POST_TIME}</p></td> - <td class="row2" align="center"><input type="checkbox" class="radio" name="topic_id_list[]" value="{topicrow.TOPIC_ID}" {topicrow.S_TOPIC_CHECKED}/></td> + <td class="row2" align="center"> + <!-- IF not topicrow.S_MOVED_TOPIC --><input type="checkbox" class="radio" name="topic_id_list[]" value="{topicrow.TOPIC_ID}"<!-- IF topicrow.S_TOPIC_CHECKED --> checked="checked"<!-- ENDIF --> /><!-- ELSE --> <!-- ENDIF --> + </td> </tr> <!-- BEGINELSE --> <tr> @@ -56,6 +61,12 @@ <!-- IF S_CAN_FORK --><option value="fork">{L_FORK}</option><!-- ENDIF --> <!-- IF S_CAN_LOCK --><option value="lock">{L_LOCK}</option><option value="unlock">{L_UNLOCK}</option><!-- ENDIF --> <!-- IF S_CAN_SYNC --><option value="resync">{L_RESYNC}</option><!-- ENDIF --> + <!-- IF S_CAN_MAKE_NORMAL --><option value="make_normal">{L_MAKE_NORMAL}</option><!-- ENDIF --> + <!-- IF S_CAN_MAKE_STICKY --><option value="make_sticky">{L_MAKE_STICKY}</option><!-- ENDIF --> + <!-- IF S_CAN_MAKE_ANNOUNCE --> + <option value="make_announce">{L_MAKE_ANNOUNCE}</option> + <option value="make_global">{L_MAKE_GLOBAL}</option> + <!-- ENDIF --> </select> <input class="btnmain" type="submit" value="{L_SUBMIT}" /> </td> diff --git a/phpBB/styles/subSilver/template/mcp_front.html b/phpBB/styles/subSilver/template/mcp_front.html index 41fbb19a3a..3404663a1c 100644 --- a/phpBB/styles/subSilver/template/mcp_front.html +++ b/phpBB/styles/subSilver/template/mcp_front.html @@ -1,9 +1,11 @@ <!-- INCLUDE mcp_header.html --> <!-- IF S_SHOW_UNAPPROVED --> + <form name="mcp_queue" method="post" action="{S_MCP_QUEUE_ACTION}"> + <table class="tablebg" width="100%" cellspacing="1"> <tr> - <td class="row3" colspan="5" align="center"><b class="gen">{L_LATEST_UNAPPROVED}</b></td> + <td class="row3" colspan="6" align="center"><b class="gen">{L_LATEST_UNAPPROVED}</b></td> </tr> <tr> <th> {L_FORUM} </th> @@ -11,6 +13,7 @@ <th> {L_SUBJECT} </th> <th> {L_AUTHOR} </th> <th> {L_POST_TIME} </th> + <th width="5%"> {L_SELECT} </th> </tr> <!-- BEGIN unapproved --> <tr> @@ -19,17 +22,29 @@ <td class="row1" valign="top"><span class="gen">{unapproved.SUBJECT}</span><br /><span class="gensmall">[ <a href="{unapproved.U_POST_DETAILS}">{L_VIEW_DETAILS}</a> ]</span></td> <td class="row2" align="center" width="15%" nowrap="nowrap" valign="top"><span class="gen"><!-- IF unapproved.U_AUTHOR --><a href="{unapproved.U_AUTHOR}">{unapproved.AUTHOR}</a><!-- ELSE -->{unapproved.AUTHOR}<!-- ENDIF --></span></td> <td class="row1" align="center" width="15%" nowrap="nowrap" valign="top"><span class="gensmall">{unapproved.POST_TIME}</span></td> + <td class="row2" align="center"><input type="checkbox" class="radio" name="post_id_list[]" value="{unapproved.POST_ID}" /></td> </tr> <!-- BEGINELSE --> <tr> - <td class="row1" colspan="5" align="center"><span class="gen">{L_UNAPPROVED_POSTS_ZERO_TOTAL}</span></td> + <td class="row1" colspan="6" align="center"><span class="gen">{L_UNAPPROVED_POSTS_ZERO_TOTAL}</span></td> </tr> <!-- END unapproved --> <!-- IF S_HAS_UNAPPROVED_POSTS --> <tr> - <td class="row3" colspan="5"><span class="gensmall">{L_UNAPPROVED_TOTAL}</span></td> + <td class="row3" colspan="6"><span class="gensmall">{L_UNAPPROVED_TOTAL}</span></td> </tr> <!-- ENDIF --> + <tr> + <td class="cat" colspan="6" align="center"><input class="btnmain" type="submit" name="action[approve]" value="{L_APPROVE}" /> <input class="btnlite" type="submit" name="action[disapprove]" value="{L_DISAPPROVE}" /></td> + </tr> + </table> + + </form> + + <table width="100%" cellspacing="2" cellpadding="2" border="0" align="center"> + <tr> + <td align="right" valign="top" nowrap="nowrap"><b class="gensmall"><a href="#" onclick="marklist('mcp_queue', '', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('mcp_queue', '', false); return false;">{L_UNMARK_ALL}</a></b></td> + </tr> </table> <br clear="all" /><br /> diff --git a/phpBB/styles/subSilver/template/mcp_move.html b/phpBB/styles/subSilver/template/mcp_move.html index 78a0579de6..eed7ca8fe3 100644 --- a/phpBB/styles/subSilver/template/mcp_move.html +++ b/phpBB/styles/subSilver/template/mcp_move.html @@ -20,7 +20,7 @@ <input type="checkbox" class="radio" name="move_leave_shadow" checked="checked" /><span class="gen">{L_LEAVE_SHADOW}</span><br /> <!-- ENDIF --> <br />{S_HIDDEN_FIELDS}<span class="gen">{MESSAGE_TEXT}</span><br /><br /> - <input type="submit" name="confirm" value="{YES_VALUE}" class="btnmain" /> <input type="submit" name="cancel" value="{L_NO}" class="btnlite" /></span> + <input type="submit" name="confirm" value="{YES_VALUE}" class="btnmain" /> <input type="submit" name="cancel" value="{L_NO}" class="btnlite" /> <!-- ELSE --> <span class="gen">{L_NO_DESTINATION_FORUM}</span><br /><br /> {S_HIDDEN_FIELDS} diff --git a/phpBB/styles/subSilver/template/mcp_notes_front.html b/phpBB/styles/subSilver/template/mcp_notes_front.html index c43fad9465..b374773f65 100755 --- a/phpBB/styles/subSilver/template/mcp_notes_front.html +++ b/phpBB/styles/subSilver/template/mcp_notes_front.html @@ -7,7 +7,7 @@ <th colspan="2"align="center">{L_SELECT_USER}</th> </tr> <tr> - <td class="row1" width="40%"><b class="gen">{L_FIND_USERNAME}: </b><br /><span class="gensmall">[ <a href="{U_FIND_MEMBER}" onclick="window.open('{U_FIND_MEMBER}', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;">{L_FIND_USERNAME}</a> ]</span></td> + <td class="row1" width="40%"><b class="gen">{L_FIND_USERNAME}: </b><br /><span class="gensmall">[ <a href="{U_FIND_USERNAME}" onclick="find_username(); return false;">{L_FIND_USERNAME}</a> ]</span></td> <td class="row2"><input type="text" class="post" name="username" maxlength="50" size="20" /></td> </tr> <tr> diff --git a/phpBB/styles/subSilver/template/mcp_notes_user.html b/phpBB/styles/subSilver/template/mcp_notes_user.html index 094ee093d8..095627db4d 100755 --- a/phpBB/styles/subSilver/template/mcp_notes_user.html +++ b/phpBB/styles/subSilver/template/mcp_notes_user.html @@ -12,9 +12,9 @@ <tr> <td class="gen" align="center"><!-- IF USER_COLOR --><b style="color: #{USER_COLOR}"><!-- ELSE --><b><!-- ENDIF -->{USERNAME}</b></td> </tr> - <!-- IF RANK --> + <!-- IF RANK_TITLE --> <tr> - <td class="postdetails" align="center">{RANK}</td> + <td class="postdetails" align="center">{RANK_TITLE}</td> </tr> <!-- ENDIF --> <!-- IF RANK_IMG --> diff --git a/phpBB/styles/subSilver/template/mcp_post.html b/phpBB/styles/subSilver/template/mcp_post.html index a86aacf006..b355f6388d 100644 --- a/phpBB/styles/subSilver/template/mcp_post.html +++ b/phpBB/styles/subSilver/template/mcp_post.html @@ -45,7 +45,7 @@ <th colspan="2" align="center">{L_POST_DETAILS}</th> </tr> <tr> - <td class="row3" colspan="2" align="center"><span class="gensmall"><!-- IF S_MCP_QUEUE -->{RETURN_QUEUE}<!-- ELSEIF S_MCP_REPORT -->{RETURN_REPORTS}<!-- ELSE -->{RETURN_TOPIC}<!-- ENDIF --></span></td> + <td class="row3" colspan="2" align="center"><span class="gensmall"><!-- IF S_MCP_QUEUE -->{RETURN_QUEUE} | {RETURN_TOPIC_SIMPLE} | {RETURN_POST}<!-- ELSEIF S_MCP_REPORT -->{RETURN_REPORTS}<!-- ELSE -->{RETURN_TOPIC}<!-- ENDIF --></span></td> </tr> <tr> <td class="row1"><b class="gen">{L_POST_SUBJECT}: </b></td> @@ -58,7 +58,7 @@ <!-- IF S_CAN_VIEWIP --> <tr> <td class="row1"><b class="gen">{L_THIS_POST_IP}: </b></td> - <td class="row2"><span class="gen">{POST_IP} [ {POST_IPADDR} ]</span></td> + <td class="row2"><span class="gen"><!-- IF U_WHOIS --><a href="{U_WHOIS}">{POST_IP}</a><!-- ELSE -->{POST_IP}<!-- ENDIF --> [ {POST_IPADDR} ]</span></td> </tr> <!-- ENDIF --> <tr> @@ -101,7 +101,7 @@ <tr> <form method="post" name="mcp_chgposter" action="{U_POST_ACTION}"> <td class="row1" valign="top"><b class="gen">{L_CHANGE_POSTER}</b></td> - <td class="row2"><input class="post" type="text" name="username" value="" /> <input class="btnmain" type="submit" value="{L_CONFIRM}" name="action[chgposter]" /><br /><span class="gensmall">[ <a href="{U_FIND_MEMBER}" onclick="window.open('{U_FIND_MEMBER}', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;">{L_FIND_USERNAME}</a> ]</span><!-- IF S_USER_SELECT --><br /><select name="u">{S_USER_SELECT}</select> <input type="submit" class="btnmain" name="action[chgposter_ip]" value="{L_CONFIRM}" /><!-- ENDIF --></td> + <td class="row2"><input class="post" type="text" name="username" value="" /> <input class="btnmain" type="submit" value="{L_CONFIRM}" name="action[chgposter]" /><br /><span class="gensmall">[ <a href="{U_FIND_USERNAME}" onclick="find_username(); return false;">{L_FIND_USERNAME}</a> ]</span><!-- IF S_USER_SELECT --><br /><select name="u">{S_USER_SELECT}</select> <input type="submit" class="btnmain" name="action[chgposter_ip]" value="{L_CONFIRM}" /><!-- ENDIF --></td> </form> </tr> <!-- ENDIF --> @@ -137,7 +137,7 @@ </tr> <!-- END userrow --> <tr> - <td class="cat"><b class="gen">{L_OTHER_IPS}</b></td> + <td class="cat"><b class="gen">{L_IPS_POSTED_FROM}</b></td> <td class="cat" width="10%" nowrap="nowrap"><!-- IF U_LOOKUP_ALL --><span class="gen">[ <a href="{U_LOOKUP_ALL}">{L_LOOKUP_ALL}</a> ]</span><!-- ENDIF --></td> </tr> <!-- BEGIN iprow --> diff --git a/phpBB/styles/subSilver/template/mcp_queue.html b/phpBB/styles/subSilver/template/mcp_queue.html index d12928d50c..0cca2159bb 100644 --- a/phpBB/styles/subSilver/template/mcp_queue.html +++ b/phpBB/styles/subSilver/template/mcp_queue.html @@ -4,10 +4,10 @@ <table width="100%" class="tablebg" cellspacing="1" cellpadding="4" border="0"> <tr> - <th colspan="6" nowrap="nowrap">{L_DISPLAY_OPTIONS}</th> + <th colspan="4" nowrap="nowrap">{L_DISPLAY_OPTIONS}</th> </tr> <tr> - <td colspan="5" class="cat" align="center"><span class="gensmall">{L_DISPLAY_ITEMS}:</span> {S_SELECT_SORT_DAYS} <span class="gensmall">{L_SORT_BY}</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR} <span class="gensmall">{L_FORUM}</span> <select name="f">{S_FORUM_OPTIONS}</select> <!-- IF TOPIC_ID --><input type="checkbox" class="radio" name="t" value="{TOPIC_ID}" checked="checked" /> <b>{L_ONLY_TOPIC}</b> <!-- ENDIF --><input class="btnlite" type="submit" name="sort" value="{L_GO}" /></td> + <td colspan="4" class="cat" align="center"><span class="gensmall">{L_DISPLAY_ITEMS}:</span> {S_SELECT_SORT_DAYS} <span class="gensmall">{L_SORT_BY}</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR} <span class="gensmall">{L_FORUM}</span> <select name="f">{S_FORUM_OPTIONS}</select> <!-- IF TOPIC_ID --><input type="checkbox" class="radio" name="t" value="{TOPIC_ID}" checked="checked" /> <b>{L_ONLY_TOPIC}</b> <!-- ENDIF --><input class="btnlite" type="submit" name="sort" value="{L_GO}" /></td> </tr> <tr> <th> <!-- IF S_TOPICS -->{L_TOPIC}<!-- ELSE -->{L_POST}<!-- ENDIF --> </th> @@ -27,11 +27,11 @@ </tr> <!-- BEGINELSE --> <tr> - <td class="row1" colspan="6" height="30" align="center" valign="middle"><span class="gen">{L_NO_POSTS}</span></td> + <td class="row1" colspan="4" height="30" align="center" valign="middle"><span class="gen">{L_NO_POSTS}</span></td> </tr> <!-- END postrow --> <tr> - <td class="cat" colspan="6" align="center"><input class="btnmain" type="submit" name="action[approve]" value="{L_APPROVE}" /> <input class="btnlite" type="submit" name="action[disapprove]" value="{L_DISAPPROVE}" /></td> + <td class="cat" colspan="4" align="center"><input class="btnmain" type="submit" name="action[approve]" value="{L_APPROVE}" /> <input class="btnlite" type="submit" name="action[disapprove]" value="{L_DISAPPROVE}" /></td> </tr> </table> diff --git a/phpBB/styles/subSilver/template/mcp_reports.html b/phpBB/styles/subSilver/template/mcp_reports.html index fa4a82602a..e350d96d6d 100644 --- a/phpBB/styles/subSilver/template/mcp_reports.html +++ b/phpBB/styles/subSilver/template/mcp_reports.html @@ -18,7 +18,7 @@ </tr> <!-- BEGIN postrow --> - <!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF --> + <!-- IF postrow.S_ROW_ is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF --> <td style="padding: 4px;"><p class="topictitle"><a href="{postrow.U_VIEWPOST}">{postrow.POST_SUBJECT}</a></p> <span class="gensmall"><!-- IF postrow.U_VIEWFORUM -->{L_FORUM}: <a href="{postrow.U_VIEWFORUM}">{postrow.FORUM_NAME}</a><!-- ELSE -->{postrow.FORUM_NAME}<!-- ENDIF --></span></td> <td style="padding: 4px;" align="left" valign="top" nowrap="nowrap"><span class="gen">{postrow.POST_AUTHOR_FULL}</span><br /> diff --git a/phpBB/styles/subSilver/template/mcp_topic.html b/phpBB/styles/subSilver/template/mcp_topic.html index cb398e48e6..5d47730c22 100644 --- a/phpBB/styles/subSilver/template/mcp_topic.html +++ b/phpBB/styles/subSilver/template/mcp_topic.html @@ -25,7 +25,7 @@ <td class="row2" colspan="2"> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> - <td><input type="radio" class="radio" name="icon" value="0"<!-- IF not S_TOPIC_ICON --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NO_TOPIC_ICON}</span> <!-- BEGIN topic_icon --><input type="radio" class="radio" name="icon" value="{topic_icon.ICON_ID}"<!-- IF topic_icon.S_CHECKED --> checked="checked"<!-- ENDIF --> /><img src="{topic_icon.ICON_IMG}" width="{topic_icon.ICON_WIDTH}" height="{topic_icon.ICON_HEIGHT}" alt="" title="" hspace="2" vspace="2" /> <!-- END topic_icon --></td> + <td><span class="genmed nowrap"><input type="radio" class="radio" name="icon" value="0"<!-- IF not S_TOPIC_ICON --> checked="checked"<!-- ENDIF --> />{L_NO_TOPIC_ICON}</span> <!-- BEGIN topic_icon --><span class="nowrap"><input type="radio" class="radio" name="icon" value="{topic_icon.ICON_ID}"<!-- IF topic_icon.S_CHECKED --> checked="checked"<!-- ENDIF --> /><img src="{topic_icon.ICON_IMG}" width="{topic_icon.ICON_WIDTH}" height="{topic_icon.ICON_HEIGHT}" alt="" title="" hspace="2" vspace="2" /></span><!-- END topic_icon --></td> </tr> </table> </td> @@ -51,10 +51,10 @@ <!-- ENDIF --> <!-- ENDIF --> <tr> - <th colspan="3" nowrap="nowrap">{L_DISPLAY_OPTIONS}</th> + <th colspan="3" nowrap="nowrap">{L_DISPLAY_OPTIONS}</th> </tr> <tr> - <td class="row1" nowrap="nowrap"><span class="gen">{L_POSTS_PER_PAGE}</span><br /><span class="gensmall">{L_POSTS_PER_PAGE_EXPLAIN}</span</td> + <td class="row1" nowrap="nowrap"><span class="gen">{L_POSTS_PER_PAGE}</span><br /><span class="gensmall">{L_POSTS_PER_PAGE_EXPLAIN}</span></td> <td class="row2" colspan="2"><input class="post" type="text" name="posts_per_page" size="6" value="{POSTS_PER_PAGE}" /></td> </tr> <tr> diff --git a/phpBB/styles/subSilver/template/mcp_warn_front.html b/phpBB/styles/subSilver/template/mcp_warn_front.html index c77f1c8644..087e9124ff 100755 --- a/phpBB/styles/subSilver/template/mcp_warn_front.html +++ b/phpBB/styles/subSilver/template/mcp_warn_front.html @@ -7,7 +7,7 @@ <th colspan="2"align="center">{L_SELECT_USER}</th> </tr> <tr> - <td class="row1" width="40%"><b class="gen">{L_FIND_USERNAME}: </b><br /><span class="gensmall">[ <a href="{U_FIND_MEMBER}" onclick="window.open('{U_FIND_MEMBER}', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;">{L_FIND_USERNAME}</a> ]</span></td> + <td class="row1" width="40%"><b class="gen">{L_FIND_USERNAME}: </b><br /><span class="gensmall">[ <a href="{U_FIND_USERNAME}" onclick="find_username(); return false;">{L_FIND_USERNAME}</a> ]</span></td> <td class="row2"><input type="text" class="post" name="username" maxlength="50" size="20" /></td> </tr> <tr> @@ -21,7 +21,7 @@ <table class="tablebg" width="100%" cellspacing="1"> <tr> - <td class="row3" colspan="5" align="center"><b class="gen">{L_MOST_WARNINGS}</b></td> + <td class="row3" colspan="4" align="center"><b class="gen">{L_MOST_WARNINGS}</b></td> </tr> <tr> <th> {L_USERNAME} </th> @@ -38,7 +38,7 @@ </tr> <!-- BEGINELSE --> <tr> - <td class="row1" colspan="5" align="center"><span class="gen">{L_WARNINGS_ZERO_TOTAL}</span></td> + <td class="row1" colspan="4" align="center"><span class="gen">{L_WARNINGS_ZERO_TOTAL}</span></td> </tr> <!-- END highest --> </table> @@ -47,7 +47,7 @@ <table class="tablebg" width="100%" cellspacing="1"> <tr> - <td class="row3" colspan="5" align="center"><b class="gen">{L_LATEST_WARNINGS}</b></td> + <td class="row3" colspan="4" align="center"><b class="gen">{L_LATEST_WARNINGS}</b></td> </tr> <tr> <th> {L_USERNAME} </th> @@ -64,7 +64,7 @@ </tr> <!-- BEGINELSE --> <tr> - <td class="row1" colspan="5" align="center"><span class="gen">{L_WARNINGS_ZERO_TOTAL}</span></td> + <td class="row1" colspan="4" align="center"><span class="gen">{L_WARNINGS_ZERO_TOTAL}</span></td> </tr> <!-- END latest --> </table> diff --git a/phpBB/styles/subSilver/template/mcp_warn_list.html b/phpBB/styles/subSilver/template/mcp_warn_list.html index 5beb502b76..fcf2ca5412 100755 --- a/phpBB/styles/subSilver/template/mcp_warn_list.html +++ b/phpBB/styles/subSilver/template/mcp_warn_list.html @@ -4,7 +4,7 @@ <table class="tablebg" width="100%" cellspacing="1"> <tr> - <td class="row3" colspan="5" align="center"><b class="gen">{L_WARNED_USERS}</b></td> + <td class="row3" colspan="4" align="center"><b class="gen">{L_WARNED_USERS}</b></td> </tr> <tr> <th> {L_USERNAME} </th> @@ -21,7 +21,7 @@ </tr> <!-- BEGINELSE --> <tr> - <td class="row1" colspan="5" align="center"><span class="gen">{L_WARNINGS_ZERO_TOTAL}</span></td> + <td class="row1" colspan="4" align="center"><span class="gen">{L_WARNINGS_ZERO_TOTAL}</span></td> </tr> <!-- END user --> <tr align="center"> diff --git a/phpBB/styles/subSilver/template/mcp_warn_post.html b/phpBB/styles/subSilver/template/mcp_warn_post.html index 896f813d75..957e9416d8 100755 --- a/phpBB/styles/subSilver/template/mcp_warn_post.html +++ b/phpBB/styles/subSilver/template/mcp_warn_post.html @@ -10,9 +10,9 @@ <tr> <td class="gen" align="center"><!-- IF USER_COLOR --><b style="color: #{USER_COLOR}"><!-- ELSE --><b><!-- ENDIF -->{USERNAME}</b></td> </tr> - <!-- IF RANK --> + <!-- IF RANK_TITLE --> <tr> - <td class="postdetails" align="center">{RANK}</td> + <td class="postdetails" align="center">{RANK_TITLE}</td> </tr> <!-- ENDIF --> <!-- IF RANK_IMG --> diff --git a/phpBB/styles/subSilver/template/mcp_warn_user.html b/phpBB/styles/subSilver/template/mcp_warn_user.html index 4598faed26..61a1a5da1d 100755 --- a/phpBB/styles/subSilver/template/mcp_warn_user.html +++ b/phpBB/styles/subSilver/template/mcp_warn_user.html @@ -10,9 +10,9 @@ <tr> <td class="gen" align="center"><!-- IF USER_COLOR --><b style="color: #{USER_COLOR}"><!-- ELSE --><b><!-- ENDIF -->{USERNAME}</b></td> </tr> - <!-- IF RANK --> + <!-- IF RANK_TITLE --> <tr> - <td class="postdetails" align="center">{RANK}</td> + <td class="postdetails" align="center">{RANK_TITLE}</td> </tr> <!-- ENDIF --> <!-- IF RANK_IMG --> diff --git a/phpBB/styles/subSilver/template/memberlist_body.html b/phpBB/styles/subSilver/template/memberlist_body.html index 78b2896439..d24d3792bd 100644 --- a/phpBB/styles/subSilver/template/memberlist_body.html +++ b/phpBB/styles/subSilver/template/memberlist_body.html @@ -1,6 +1,12 @@ -<!-- INCLUDE overall_header.html --> +<!-- IF S_SEARCH_USER and S_FORM_NAME --> + <!-- INCLUDE simple_header.html --> +<!-- ELSE --> + <!-- INCLUDE overall_header.html --> +<!-- ENDIF --> -<!-- IF S_SEARCH_USER --><!-- INCLUDE memberlist_search.html --><!-- ENDIF --> +<!-- IF S_SEARCH_USER --> + <!-- INCLUDE memberlist_search.html --> +<!-- ENDIF --> <!-- IF S_SHOW_GROUP --><!-- INCLUDE memberlist_group.html --><!-- ENDIF --> @@ -24,7 +30,6 @@ <!-- ELSE --> <form method="post" action="{S_MODE_ACTION}"> <!-- ENDIF --> - <table class="tablebg" width="100%" cellspacing="1"> <tr> <th nowrap="nowrap">#</th> @@ -35,7 +40,7 @@ <th nowrap="nowrap" width="11%">{L_SEND_MESSAGE}</th> <th nowrap="nowrap" width="11%"><a href="{U_SORT_EMAIL}">{L_EMAIL}</a></th> <th nowrap="nowrap" width="11%"><a href="{U_SORT_WEBSITE}">{L_WEBSITE}</a></th> - <!-- IF S_SEARCH_USER and S_FORM_NAME --><th width="2%" nowrap="nowrap">{L_MARK}</th><!-- ENDIF --> + <!-- IF S_SEARCH_USER and S_FORM_NAME and not S_SELECT_SINGLE --><th width="2%" nowrap="nowrap">{L_MARK}</th><!-- ENDIF --> </tr> <!-- BEGIN memberrow --> @@ -55,18 +60,18 @@ <!-- IF memberrow.S_ROW_COUNT is even --><tr class="row2"><!-- ELSE --> <tr class="row1"><!-- ENDIF --> <td class="gen" align="center"> {memberrow.ROW_NUMBER} </td> - <td class="genmed" align="left"><strong><a<!-- IF memberrow.USER_COLOR --> style="color:#{memberrow.USER_COLOR}"<!-- ENDIF --> href="{memberrow.U_VIEW_PROFILE}">{memberrow.USERNAME}</a></strong></td> + <td class="genmed" align="left">{memberrow.USERNAME_FULL}<!-- IF S_SELECT_SINGLE --> [ <a href="#" onclick="insert_single('{memberrow.USERNAME}'); return false;">{L_SELECT}</a> ]<!-- ENDIF --></td> <td class="genmed" align="center" nowrap="nowrap"> {memberrow.JOINED} </td> <td class="gen" align="center">{memberrow.POSTS}</td> - <td class="gen" align="center">{memberrow.RANK_IMG}</td> + <td class="gen" align="center"><!-- IF memberrow.RANK_IMG -->{memberrow.RANK_IMG}<!-- ELSE -->{memberrow.RANK_TITLE}<!-- ENDIF --></td> <td class="gen" align="center"> <!-- IF memberrow.U_PM --><a href="{memberrow.U_PM}">{PM_IMG}</a><!-- ENDIF --> </td> <td class="gen" align="center"> <!-- IF memberrow.U_EMAIL --><a href="{memberrow.U_EMAIL}">{EMAIL_IMG}</a><!-- ENDIF --> </td> - <td class="gen" align="center"> <!-- IF memberrow.U_WWW --><a href="{memberrow.U_WWW}" target="_blank">{WWW_IMG}</a><!-- ENDIF --> </td> + <td class="gen" align="center"> <!-- IF memberrow.U_WWW --><a href="{memberrow.U_WWW}">{WWW_IMG}</a><!-- ENDIF --> </td> <!-- IF memberrow.S_PROFILE_FIELD1 --> <!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. --> <td class="gen" align="center"> {memberrow.PROFILE_FIELD1_VALUE}</td> <!-- ENDIF --> - <!-- IF S_SEARCH_USER and S_FORM_NAME --><td align="center"><input type="checkbox" class="radio" name="user" value="{memberrow.USERNAME}" /></td><!-- ENDIF --> + <!-- IF S_SEARCH_USER and S_FORM_NAME and not S_SELECT_SINGLE --><td align="center"><input type="checkbox" class="radio" name="user" value="{memberrow.USERNAME}" /></td><!-- ENDIF --> </tr> <!-- BEGINELSE --> @@ -80,7 +85,7 @@ <!-- END memberrow --> <tr> - <td class="cat" colspan="<!-- IF S_SEARCH_USER and S_FORM_NAME -->9<!-- ELSE -->8<!-- ENDIF -->" align="center"><!-- IF S_SEARCH_USER and S_FORM_NAME --><input class="btnlite" type="submit" value="{L_SELECT_MARKED}" /><!-- ELSE --><span class="gensmall">{L_SELECT_SORT_METHOD}:</span> <select name="sk">{S_MODE_SELECT}</select> <span class="gensmall">{L_ORDER}</span> <select name="sd">{S_ORDER_SELECT}</select> <input type="submit" name="submit" value="{L_SUBMIT}" class="btnlite" /><!-- ENDIF --></td> + <td class="cat" colspan="<!-- IF S_SEARCH_USER and S_FORM_NAME -->9<!-- ELSE -->8<!-- ENDIF -->" align="center"><!-- IF S_SEARCH_USER and S_FORM_NAME and not S_SELECT_SINGLE --><input class="btnlite" type="submit" value="{L_SELECT_MARKED}" /><!-- ELSE --><span class="gensmall">{L_SELECT_SORT_METHOD}:</span> <select name="sk">{S_MODE_SELECT}</select> <span class="gensmall">{L_ORDER}</span> <select name="sd">{S_ORDER_SELECT}</select> <input type="submit" name="submit" value="{L_SUBMIT}" class="btnlite" /><!-- ENDIF --></td> </tr> </table> @@ -89,16 +94,21 @@ <table width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="pagination">{PAGE_NUMBER} [ {TOTAL_USERS} ]</td> - <td align="right"><!-- IF S_SEARCH_USER and S_FORM_NAME --><b class="nav"><a href="#" onclick="marklist('results', 'user', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('results', 'user', false); return false;">{L_UNMARK_ALL}</a></b><br /><!-- ENDIF --><span class="pagination"><!-- INCLUDE pagination.html --></span></td> + <td align="right"><!-- IF S_SEARCH_USER and S_FORM_NAME and not S_SELECT_SINGLE --><b class="nav"><a href="#" onclick="marklist('results', 'user', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('results', 'user', false); return false;">{L_UNMARK_ALL}</a></b><br /><!-- ENDIF --><span class="pagination"><!-- INCLUDE pagination.html --></span></td> </tr> </table> -<br clear="all" /> - -<!-- INCLUDE breadcrumbs.html --> -<br clear="all" /> -<div align="right"><!-- INCLUDE jumpbox.html --></div> - -<!-- INCLUDE overall_footer.html -->
\ No newline at end of file +<!-- IF S_SEARCH_USER and S_FORM_NAME --> + <!-- INCLUDE simple_footer.html --> +<!-- ELSE --> + <br clear="all" /> + + <!-- INCLUDE breadcrumbs.html --> + + <br clear="all" /> + + <div align="right"><!-- INCLUDE jumpbox.html --></div> + <!-- INCLUDE overall_footer.html --> +<!-- ENDIF -->
\ No newline at end of file diff --git a/phpBB/styles/subSilver/template/memberlist_email.html b/phpBB/styles/subSilver/template/memberlist_email.html index 4f514e6a7d..40cbed9377 100644 --- a/phpBB/styles/subSilver/template/memberlist_email.html +++ b/phpBB/styles/subSilver/template/memberlist_email.html @@ -1,6 +1,6 @@ <!-- INCLUDE overall_header.html --> -<script language="JavaScript" type="text/javascript"> +<script type="text/javascript"> <!-- function checkForm(formObj) diff --git a/phpBB/styles/subSilver/template/memberlist_group.html b/phpBB/styles/subSilver/template/memberlist_group.html index 4a9b1ddbe0..650868f810 100644 --- a/phpBB/styles/subSilver/template/memberlist_group.html +++ b/phpBB/styles/subSilver/template/memberlist_group.html @@ -1,7 +1,7 @@ <table class="tablebg" width="100%" cellspacing="1"> <tr> - <th colspan="7">{L_GROUP_INFORMATION}</th> + <th colspan="3">{L_GROUP_INFORMATION}</th> </tr> <tr> <td class="row1" width="20%"><b class="genmed">{L_GROUP_NAME}:</b></td> diff --git a/phpBB/styles/subSilver/template/memberlist_im.html b/phpBB/styles/subSilver/template/memberlist_im.html index bfb80ec17a..6fc738129f 100644 --- a/phpBB/styles/subSilver/template/memberlist_im.html +++ b/phpBB/styles/subSilver/template/memberlist_im.html @@ -2,7 +2,7 @@ <br clear="all" /> -<!-- MSNM info from http://www.cdolive.net/ - doesn't seem to work with MSN Messenger --> +<!-- MSNM info from http://www.cdolive.net/ - doesn't seem to work with MSN Messenger --> <form method="post" action="{S_IM_ACTION}"> <table class="tablebg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center"> @@ -19,7 +19,7 @@ <!-- IF S_SEND_AIM --> <tr> - <td class="row1" colspan="2" align="center"><br /><a class="gen" href="aim:addbuddy?screenname={IM_CONTACT}">{L_IM_ADD_CONTACT}</a><br /><a class="gen" href="aim:goim?screenname={IM_CONTACT}&message={SITENAME}">{L_IM_SEND_MESSAGE}</a><br /><br /><a class="gensmall" href="http://www.aol.co.uk/aim/index.html" target="_blank">{L_IM_DOWNLOAD_APP}</a> | <a class="gensmall" href="http://aimexpress.oscar.aol.com/aimexpress/launch.adp?Brand=AIM" target="_blank">{L_IM_AIM_EXPRESS}</a> </td> + <td class="row1" colspan="2" align="center"><br /><a class="gen" href="aim:addbuddy?screenname={IM_CONTACT}">{L_IM_ADD_CONTACT}</a><br /><a class="gen" href="aim:goim?screenname={IM_CONTACT}&message={SITENAME}">{L_IM_SEND_MESSAGE}</a><br /><br /><a class="gensmall" href="http://www.aol.co.uk/aim/index.html">{L_IM_DOWNLOAD_APP}</a> | <a class="gensmall" href="http://aimexpress.oscar.aol.com/aimexpress/launch.adp?Brand=AIM">{L_IM_AIM_EXPRESS}</a> </td> </tr> <tr> <td class="cat" colspan="2" align="center"> </td> @@ -30,7 +30,7 @@ <tr> <td class="row1" colspan="2" align="center"> <object classid="clsid:B69003B3-C55E-4B48-836C-BC5946FC3B28" codetype="application/x-oleobject" id="objMessengerApp" width="0" height="0"></object> - <script language="javascript" type="text/javascript"> + <script type="text/javascript"> <!-- var app = document.getElementById('objMessengerApp'); diff --git a/phpBB/styles/subSilver/template/memberlist_leaders.html b/phpBB/styles/subSilver/template/memberlist_leaders.html index 731be4d2b1..6b7d1726cd 100644 --- a/phpBB/styles/subSilver/template/memberlist_leaders.html +++ b/phpBB/styles/subSilver/template/memberlist_leaders.html @@ -14,50 +14,50 @@ <td colspan="5"><b class="gensmall">{L_ADMINISTRATORS}</b></td> </tr> <!-- BEGIN admin --> - <!-- IF admin.S_ROW_COUNT is even --> <tr class="row2"><!-- ELSE --> <tr class="row1"><!-- ENDIF --> + <!-- IF admin.S_ROW_COUNT is even --><tr class="row2"><!-- ELSE --><tr class="row1"><!-- ENDIF --> <td class="gen" align="center"><strong>{admin.USERNAME_FULL}</strong></td> <td class="gensmall" align="center"> </td> <td class="gensmall" align="center" nowrap="nowrap"> <!-- IF admin.U_GROUP --> - <a<!-- IF admin.GROUP_COLOR --> style="color:#{admin.GROUP_COLOR}"<!-- ENDIF --> href="{admin.U_GROUP}">{admin.GROUP_NAME}</a> + <a<!-- IF admin.GROUP_COLOR --> style="font-weight: bold; color:#{admin.GROUP_COLOR}"<!-- ENDIF --> href="{admin.U_GROUP}">{admin.GROUP_NAME}</a> <!-- ELSE --> {admin.GROUP_NAME} <!-- ENDIF --> </td> - <td class="gen" align="center">{admin.RANK_IMG}</td> + <td class="gen" align="center"><!-- IF admin.RANK_IMG -->{admin.RANK_IMG}<!-- ELSE -->{admin.RANK_TITLE}<!-- ENDIF --></td> <td class="gen" align="center"> <!-- IF admin.U_PM --><a href="{admin.U_PM}">{PM_IMG}</a><!-- ENDIF --> </td> </tr> <!-- BEGINELSE --> <tr> - <td class="row1" colspan="9" align="center"><span class="gen">{L_NO_ADMINISTRATORS}</span></td> + <td class="row1" colspan="5" align="center"><span class="gen">{L_NO_ADMINISTRATORS}</span></td> </tr> <!-- END admin --> <tr class="row3"> - <td colspan="9"><b class="gensmall">{L_MODERATORS}</b></td> + <td colspan="5"><b class="gensmall">{L_MODERATORS}</b></td> </tr> <!-- BEGIN mod --> - <!-- IF mod.S_ROW_COUNT is even --> <tr class="row2"><!-- ELSE --> <tr class="row1"><!-- ENDIF --> + <!-- IF mod.S_ROW_COUNT is even --><tr class="row2"><!-- ELSE --><tr class="row1"><!-- ENDIF --> <td class="gen" align="center"><strong>{mod.USERNAME_FULL}</strong></td> <td align="center"><!-- IF not mod.FORUMS -->{L_ALL_FORUMS}<!-- ELSE --><select style="width: 200px;">{mod.FORUMS}</select><!-- ENDIF --> </td> <td class="gensmall" align="center" nowrap="nowrap"> <!-- IF mod.U_GROUP --> - <a<!-- IF mod.GROUP_COLOR --> style="color:#{mod.GROUP_COLOR}"<!-- ENDIF --> href="{mod.U_GROUP}">{mod.GROUP_NAME}</a> + <a<!-- IF mod.GROUP_COLOR --> style="font-weight: bold; color:#{mod.GROUP_COLOR}"<!-- ENDIF --> href="{mod.U_GROUP}">{mod.GROUP_NAME}</a> <!-- ELSE --> {mod.GROUP_NAME} <!-- ENDIF --> </td> - <td class="gen" align="center">{mod.RANK_IMG}</td> + <td class="gen" align="center"><!-- IF mod.RANK_IMG -->{mod.RANK_IMG}<!-- ELSE -->{mod.RANK_TITLE}<!-- ENDIF --></td> <td class="gen" align="center"> <!-- IF mod.U_PM --><a href="{mod.U_PM}">{PM_IMG}</a><!-- ENDIF --> </td> </tr> <!-- BEGINELSE --> <tr> - <td class="row1" colspan="9" align="center"><span class="gen">{L_NO_MODERATORS}</span></td> + <td class="row1" colspan="5" align="center"><span class="gen">{L_NO_MODERATORS}</span></td> </tr> <!-- END mod --> </table> - + </form> <br clear="all" /> diff --git a/phpBB/styles/subSilver/template/memberlist_search.html b/phpBB/styles/subSilver/template/memberlist_search.html index 042909fa8d..dd104c5fd6 100644 --- a/phpBB/styles/subSilver/template/memberlist_search.html +++ b/phpBB/styles/subSilver/template/memberlist_search.html @@ -1,35 +1,69 @@ - <!-- You should retain this javascript in your own template! --> -<script language="javascript" type="text/javascript"> -<!-- -function insert_user(user) -{ - opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value = ( opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value.length && opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.type == "textarea" ) ? opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value + "\n" + user : user; -} +<!-- IF S_SEARCH_USER and S_FORM_NAME --> + <script type="text/javascript"> + <!-- + function insert_user(user) + { + opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value = ( opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value.length && opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.type == "textarea" ) ? opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value + "\n" + user : user; + } -function insert_marked(users) -{ - if (typeof(users.length) == "undefined") - { - insert_user(users.value); - } - else if (users.length > 0) - { - for (i = 0; i < users.length; i++) + function insert_marked(users) { - if (users[i].checked) + if (typeof(users.length) == "undefined") + { + insert_user(users.value); + } + else if (users.length > 0) { - insert_user(users[i].value); + for (i = 0; i < users.length; i++) + { + if (users[i].checked) + { + insert_user(users[i].value); + } + } } + + self.close(); } - } - self.close(); -} + function insert_single(user) + { + opener.document.forms['{S_FORM_NAME}'].{S_FIELD_NAME}.value = user; + self.close(); + } -//--> -</script> + /** + * Mark/unmark checklist + * id = ID of parent container, name = name prefix, state = state [true/false] + */ + function marklist(id, name, state) + { + var parent = document.getElementById(id); + if (!parent) + { + eval('parent = document.' + id); + } + + if (!parent) + { + return; + } + + var rb = parent.getElementsByTagName('input'); + + for (var r = 0; r < rb.length; r++) + { + if (rb[r].name.substr(0, name.length) == name) + { + rb[r].checked = state; + } + } + } + //--> + </script> +<!-- ENDIF --> <form method="post" action="{S_MODE_ACTION}" name="search"> diff --git a/phpBB/styles/subSilver/template/memberlist_view.html b/phpBB/styles/subSilver/template/memberlist_view.html index d8885370a0..d4ee7ca895 100644 --- a/phpBB/styles/subSilver/template/memberlist_view.html +++ b/phpBB/styles/subSilver/template/memberlist_view.html @@ -22,11 +22,11 @@ </tr> <!-- ENDIF --> <tr> - <td align="center"><!-- IF USER_COLOR --><b class="gen" style="color: #{USER_COLOR}"><!-- ELSE --><b class="gen"><!-- ENDIF -->{USERNAME}</b><!-- IF U_USER_ADMIN --><span class="genmed"> [ <a href="{U_USER_ADMIN}">{L_USER_ADMIN}</a> ]</span><!-- ENDIF --></td> + <td align="center"><!-- IF USER_COLOR --><b class="gen" style="color: {USER_COLOR}"><!-- ELSE --><b class="gen"><!-- ENDIF -->{USERNAME}</b><!-- IF U_USER_ADMIN --><span class="genmed"> [ <a href="{U_USER_ADMIN}">{L_USER_ADMIN}</a> ]</span><!-- ENDIF --></td> </tr> - <!-- IF RANK --> + <!-- IF RANK_TITLE --> <tr> - <td class="postdetails" align="center">{RANK}</td> + <td class="postdetails" align="center">{RANK_TITLE}</td> </tr> <!-- ENDIF --> <!-- IF RANK_IMG --> @@ -83,7 +83,7 @@ </tr> <tr> <td class="gen" align="right" valign="top" nowrap="nowrap">{L_ACTIVE_IN_TOPIC}: </td> - <td><!-- IF ACTIVE_TOPIC_PCT neq 0 --><b><a class="gen" href="{U_ACTIVE_TOPIC}">{ACTIVE_TOPIC}</a></b><br /><span class="gensmall">[ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]</span><!-- ELSE --><span class="gen">-</span><!-- ENDIF --></td> + <td><!-- IF ACTIVE_TOPIC_PCT neq 0 --><b><a class="gen" href="{U_ACTIVE_TOPIC}">{ACTIVE_TOPIC}</a></b><br /><span class="genmed">[ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]</span><!-- ELSE --><span class="gen">-</span><!-- ENDIF --></td> </tr> <!-- ENDIF --> </table> @@ -152,7 +152,7 @@ </tr> <tr> <td class="gen" align="right" nowrap="nowrap">{L_WEBSITE}: </td> - <td><!-- IF U_WWW --><b><a class="genmed" href="{U_WWW}" target="_userwww">{U_WWW}</a></b><!-- ENDIF --></td> + <td><!-- IF U_WWW --><b><a class="genmed" href="{U_WWW}">{U_WWW}</a></b><!-- ENDIF --></td> </tr> <!-- IF S_PROFILE_FIELD1 --> <!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. --> diff --git a/phpBB/styles/subSilver/template/message_body.html b/phpBB/styles/subSilver/template/message_body.html index 03c34041bf..f61a3e6365 100644 --- a/phpBB/styles/subSilver/template/message_body.html +++ b/phpBB/styles/subSilver/template/message_body.html @@ -11,13 +11,6 @@ <br clear="all" /> -<table class="tablebg" width="100%" cellspacing="1" cellpadding="0"> -<tr> - <td class="row1"> - <p class="breadcrumbs"><a href="{U_INDEX}">{L_INDEX}</a></p> - <p class="datetime">{S_TIMEZONE}</p> - </td> -</tr> -</table> +<!-- INCLUDE breadcrumbs.html --> <!-- INCLUDE overall_footer.html -->
\ No newline at end of file diff --git a/phpBB/styles/subSilver/template/overall_footer.html b/phpBB/styles/subSilver/template/overall_footer.html index 70d359c61f..8fb846a32f 100644 --- a/phpBB/styles/subSilver/template/overall_footer.html +++ b/phpBB/styles/subSilver/template/overall_footer.html @@ -14,7 +14,7 @@ <div id="wrapfooter"> <!-- IF U_ACP --><span class="gensmall">[ <a href="{U_ACP}">{L_ACP}</a> ]</span><br /><br /><!-- ENDIF --> - <span class="copyright">Powered by <a href="http://www.phpbb.com/" target="_blank">phpBB</a> © 2002, 2006 phpBB Group + <span class="copyright">Powered by <a href="http://www.phpbb.com/">phpBB</a> © 2002, 2006 phpBB Group <!-- IF TRANSLATION_INFO --><br />{TRANSLATION_INFO}<!-- ENDIF --> <!-- IF DEBUG_OUTPUT --><br />[ {DEBUG_OUTPUT} ]<!-- ENDIF --></span> </div> diff --git a/phpBB/styles/subSilver/template/overall_header.html b/phpBB/styles/subSilver/template/overall_header.html index 22833f0ab2..cb7feca620 100644 --- a/phpBB/styles/subSilver/template/overall_header.html +++ b/phpBB/styles/subSilver/template/overall_header.html @@ -60,8 +60,10 @@ function find_username() return false; } -// Mark/unmark checkboxes -// id = ID of parent container, name = name prefix, state = state [true/false] +/** +* Mark/unmark checklist +* id = ID of parent container, name = name prefix, state = state [true/false] +*/ function marklist(id, name, state) { var parent = document.getElementById(id); @@ -146,15 +148,24 @@ function marklist(id, name, state) <table width="100%" cellspacing="0"> <tr> <td class="genmed"> - <!-- IF not S_IS_BOT --><a href="{U_LOGIN_LOGOUT}"><img src="{T_THEME_PATH}/images/icon_mini_login.gif" width="12" height="13" alt="{L_LOGIN_LOGOUT}" /> {L_LOGIN_LOGOUT}</a> <!-- ENDIF --> - <!-- IF U_RESTORE_PERMISSIONS --> <a href="{U_RESTORE_PERMISSIONS}"><img src="{T_THEME_PATH}/images/icon_mini_login.gif" width="12" height="13" alt="{L_RESTORE_PERMISSIONS}" /> {L_RESTORE_PERMISSIONS}</a><!-- ENDIF --> - <!-- IF S_BOARD_DISABLED --> <span style="color: red;">{L_BOARD_DISABLED}</span><!-- ENDIF --> - <!-- IF S_USER_LOGGED_IN --> - <!-- IF S_DISPLAY_PM --> <a href="{U_PRIVATEMSGS}"><img src="{T_THEME_PATH}/images/icon_mini_message.gif" width="12" height="13" alt="{L_PRIVATE_MESSAGES}" /> {PRIVATE_MESSAGE_INFO}<!-- IF PRIVATE_MESSAGE_INFO_UNREAD -->, {PRIVATE_MESSAGE_INFO_UNREAD}<!-- ENDIF --></a><!-- ENDIF --> - <!-- ELSE --> <a href="{U_REGISTER}"><img src="{T_THEME_PATH}/images/icon_mini_register.gif" width="12" height="13" alt="{L_REGISTER}" /> {L_REGISTER}</a> + <!-- IF not S_IS_BOT --><a href="{U_LOGIN_LOGOUT}"><img src="{T_THEME_PATH}/images/icon_mini_login.gif" width="12" height="13" alt="*" /> {L_LOGIN_LOGOUT}</a> <!-- ENDIF --> + <!-- IF U_RESTORE_PERMISSIONS --> <a href="{U_RESTORE_PERMISSIONS}"><img src="{T_THEME_PATH}/images/icon_mini_login.gif" width="12" height="13" alt="*" /> {L_RESTORE_PERMISSIONS}</a><!-- ENDIF --> + <!-- IF S_BOARD_DISABLED and S_USER_LOGGED_IN --> <span style="color: red;">{L_BOARD_DISABLED}</span><!-- ENDIF --> + <!-- IF not S_IS_BOT --> + <!-- IF S_USER_LOGGED_IN --> + <!-- IF S_DISPLAY_PM --> <a href="{U_PRIVATEMSGS}"><img src="{T_THEME_PATH}/images/icon_mini_message.gif" width="12" height="13" alt="*" /> {PRIVATE_MESSAGE_INFO}<!-- IF PRIVATE_MESSAGE_INFO_UNREAD -->, {PRIVATE_MESSAGE_INFO_UNREAD}<!-- ENDIF --></a><!-- ENDIF --> + <!-- ELSE --> <a href="{U_REGISTER}"><img src="{T_THEME_PATH}/images/icon_mini_register.gif" width="12" height="13" alt="*" /> {L_REGISTER}</a> + <!-- ENDIF --> + <!-- ENDIF --> + </td> + <td class="genmed" align="right"> + <a href="{U_FAQ}"><img src="{T_THEME_PATH}/images/icon_mini_faq.gif" width="12" height="13" alt="*" /> {L_FAQ}</a> + <!-- IF S_DISPLAY_SEARCH --> <a href="{U_SEARCH}"><img src="{T_THEME_PATH}/images/icon_mini_search.gif" width="12" height="13" alt="*" /> {L_SEARCH}</a><!-- ENDIF --> + <!-- IF not S_IS_BOT --> + <!-- IF S_DISPLAY_MEMBERLIST --> <a href="{U_MEMBERLIST}"><img src="{T_THEME_PATH}/images/icon_mini_members.gif" width="12" height="13" alt="*" /> {L_MEMBERLIST}</a><!-- ENDIF --> + <!-- IF S_USER_LOGGED_IN --> <a href="{U_PROFILE}"><img src="{T_THEME_PATH}/images/icon_mini_profile.gif" width="12" height="13" alt="*" /> {L_PROFILE}</a><!-- ENDIF --> <!-- ENDIF --> </td> - <td class="genmed" align="right"><a href="{U_FAQ}"><img src="{T_THEME_PATH}/images/icon_mini_faq.gif" width="12" height="13" alt="{L_FAQ}" /> {L_FAQ}</a><!-- IF S_DISPLAY_SEARCH --> <a href="{U_SEARCH}"><img src="{T_THEME_PATH}/images/icon_mini_search.gif" width="12" height="13" alt="{L_SEARCH}" /> {L_SEARCH}</a><!-- ENDIF --><!-- IF S_DISPLAY_MEMBERLIST --> <a href="{U_MEMBERLIST}"><img src="{T_THEME_PATH}/images/icon_mini_members.gif" width="12" height="13" alt="{L_MEMBERLIST}" /> {L_MEMBERLIST}</a><!-- ENDIF --><!-- IF S_USER_LOGGED_IN --> <a href="{U_PROFILE}"><img src="{T_THEME_PATH}/images/icon_mini_profile.gif" width="12" height="13" alt="{L_PROFILE}" /> {L_PROFILE}</a><!-- ENDIF --></td> </tr> </table> </div> diff --git a/phpBB/styles/subSilver/template/posting_attach_body.html b/phpBB/styles/subSilver/template/posting_attach_body.html index 6510b8f706..e9de2e7516 100644 --- a/phpBB/styles/subSilver/template/posting_attach_body.html +++ b/phpBB/styles/subSilver/template/posting_attach_body.html @@ -30,7 +30,7 @@ <tr> <td class="row1"><b class="genmed">{L_FILENAME}</b></td> - <td class="row2"><input type="file" name="fileupload" size="40" maxlength="{FILESIZE}" value="" class="btnlite" /></td> + <td class="row2"><input type="file" name="fileupload" size="40" maxlength="{FILESIZE}" value="" class="btnfile" /></td> </tr> <tr> <td class="row1"><b class="genmed">{L_FILE_COMMENT}</b></td> @@ -69,9 +69,6 @@ <td valign="top"> <table border="0" cellspacing="4" cellpadding="0"> <tr> - <td><input class="btnlite" type="submit" style="width:150px" name="edit_comment[{attach_row.ASSOC_INDEX}]" value="{L_UPDATE_COMMENT}" /></td> - </tr> - <tr> <td><input class="btnlite" type="submit" style="width:150px" name="delete_file[{attach_row.ASSOC_INDEX}]" value="{L_DELETE_FILE}" /></td> </tr> </table> diff --git a/phpBB/styles/subSilver/template/posting_body.html b/phpBB/styles/subSilver/template/posting_body.html index f0ebd9f3b1..f3eb6ad32e 100644 --- a/phpBB/styles/subSilver/template/posting_body.html +++ b/phpBB/styles/subSilver/template/posting_body.html @@ -121,13 +121,13 @@ </tr> <!-- ENDIF --> -<!-- IF S_SHOW_TOPIC_ICONS --> +<!-- IF S_SHOW_TOPIC_ICONS or S_SHOW_PM_ICONS --> <tr> <td class="row1"><b class="genmed">{L_ICON}:</b></td> <td class="row2"> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> - <td><input type="radio" class="radio" name="icon" value="0"{S_NO_ICON_CHECKED} /><span class="genmed">{L_NO_TOPIC_ICON}</span> <!-- BEGIN topic_icon --><input type="radio" class="radio" name="icon" value="{topic_icon.ICON_ID}"{topic_icon.S_ICON_CHECKED} /><img src="{topic_icon.ICON_IMG}" width="{topic_icon.ICON_WIDTH}" height="{topic_icon.ICON_HEIGHT}" alt="" title="" hspace="2" vspace="2" /> <!-- END topic_icon --></td> + <td><input type="radio" class="radio" name="icon" value="0"{S_NO_ICON_CHECKED} /><span class="genmed"><!-- IF S_SHOW_TOPIC_ICONS -->{L_NO_TOPIC_ICON}<!-- ELSE -->{L_NO_PM_ICON}<!-- ENDIF --></span> <!-- BEGIN topic_icon --><span style="white-space: nowrap;"><input type="radio" class="radio" name="icon" value="{topic_icon.ICON_ID}"{topic_icon.S_ICON_CHECKED} /><img src="{topic_icon.ICON_IMG}" width="{topic_icon.ICON_WIDTH}" height="{topic_icon.ICON_HEIGHT}" alt="" title="" hspace="2" vspace="2" /></span> <!-- END topic_icon --></td> </tr> </table> </td> @@ -147,24 +147,28 @@ <td class="row2"> {S_HIDDEN_ADDRESS_FIELD} <!-- BEGIN to_recipient --> - <span class="genmed"><strong> - <!-- IF to_recipient.IS_GROUP --><a href="{to_recipient.U_VIEW}"><span class="blue">{to_recipient.NAME}</span></a><!-- ELSE -->{to_recipient.NAME_FULL}<!-- ENDIF --></strong> </span><!-- IF not S_EDIT_POST --><input class="post" type="submit" name="remove_{to_recipient.TYPE}[{to_recipient.UG_ID}]" value="{L_REMOVE}" /> <!-- ENDIF --> + <span class="genmed nowrap"><strong> + <!-- IF to_recipient.IS_GROUP --><a href="{to_recipient.U_VIEW}"><span class="blue">{to_recipient.NAME}</span></a><!-- ELSE -->{to_recipient.NAME_FULL}<!-- ENDIF --></strong> <!-- IF not S_EDIT_POST --><input class="post" type="submit" name="remove_{to_recipient.TYPE}[{to_recipient.UG_ID}]" value="{L_REMOVE}" /> <!-- ENDIF --> + </span> <!-- BEGINELSE --> <span class="genmed">{L_NO_TO_RECIPIENT}</span> <!-- END to_recipient --> </td> </tr> + <!-- IF S_ALLOW_MASS_PM --> <tr> <td class="row1"><b class="genmed">{L_BCC}:</b></td> <td class="row2"> <!-- BEGIN bcc_recipient --> - <span class="genmed"><strong> - <!-- IF bcc_recipient.IS_GROUP --><a href="{bcc_recipient.U_VIEW}"><span class="blue">{bcc_recipient.NAME}</span></a><!-- ELSE -->{bcc_recipient.NAME_FULL}<!-- ENDIF --></strong> </span><!-- IF not S_EDIT_POST --><input class="post" type="submit" name="remove_{bcc_recipient.TYPE}[{bcc_recipient.UG_ID}]" value="Remove" /> <!-- ENDIF --> + <span class="genmed nowrap"><strong> + <!-- IF bcc_recipient.IS_GROUP --><a href="{bcc_recipient.U_VIEW}"><span class="blue">{bcc_recipient.NAME}</span></a><!-- ELSE -->{bcc_recipient.NAME_FULL}<!-- ENDIF --></strong> <!-- IF not S_EDIT_POST --><input class="post" type="submit" name="remove_{bcc_recipient.TYPE}[{bcc_recipient.UG_ID}]" value="{L_REMOVE}" /> <!-- ENDIF --> + </span> <!-- BEGINELSE --> <span class="genmed">{L_NO_BCC_RECIPIENT}</span> <!-- END bcc_recipient --> </td> </tr> + <!-- ENDIF --> <!-- ENDIF --> <tr> @@ -196,7 +200,7 @@ <!-- ENDIF --> </td> <td class="row2" valign="top"> - <script language="javascript" type="text/javascript"> + <script type="text/javascript"> <!-- var form_name = 'post'; @@ -339,8 +343,8 @@ </td> </tr> <tr> - <td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td> - <td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td> + <td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td> + <td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td> </tr> <!-- ENDIF --> @@ -349,9 +353,9 @@ <td class="cat" colspan="2" align="center"> <input class="btnlite" type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" /> <input class="btnmain" type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" /> - <!-- IF S_SAVE_ALLOWED --> <input class="btnlite" type="submit" accesskey="k" tabindex="8" name="save" value="{L_SAVE}" /><!-- ENDIF --> - <!-- IF S_HAS_DRAFTS --> <input class="btnlite" type="submit" accesskey="d" tabindex="9" name="load" value="{L_LOAD}" /><!-- ENDIF --> - <input class="btnlite" type="submit" accesskey="c" tabindex="7" name="cancel" value="{L_CANCEL}" /> + <!-- IF S_SAVE_ALLOWED --> <input class="btnlite" type="submit" accesskey="k" tabindex="7" name="save" value="{L_SAVE}" /><!-- ENDIF --> + <!-- IF S_HAS_DRAFTS --> <input class="btnlite" type="submit" accesskey="d" tabindex="8" name="load" value="{L_LOAD}" /><!-- ENDIF --> + <input class="btnlite" type="submit" accesskey="c" tabindex="9" name="cancel" value="{L_CANCEL}" /> </td> </tr> @@ -369,13 +373,13 @@ <tr> <td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS} - <input class="btnlite" type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" /> - <input class="btnmain" type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" /> + <input class="btnlite" type="submit" tabindex="10" name="preview" value="{L_PREVIEW}" /> + <input class="btnmain" type="submit" accesskey="s" tabindex="11" name="post" value="{L_SUBMIT}" /> <!-- IF not S_SHOW_ATTACH_BOX and not S_SHOW_POLL_BOX --> - <!-- IF S_SAVE_ALLOWED --> <input class="btnlite" type="submit" accesskey="k" tabindex="8" name="save" value="{L_SAVE}" /><!-- ENDIF --> - <!-- IF S_HAS_DRAFTS --> <input class="btnlite" type="submit" accesskey="d" tabindex="9" name="load" value="{L_LOAD}" /><!-- ENDIF --> + <!-- IF S_SAVE_ALLOWED --> <input class="btnlite" type="submit" accesskey="k" tabindex="12" name="save" value="{L_SAVE}" /><!-- ENDIF --> + <!-- IF S_HAS_DRAFTS --> <input class="btnlite" type="submit" accesskey="d" tabindex="13" name="load" value="{L_LOAD}" /><!-- ENDIF --> <!-- ENDIF --> - <input class="btnlite" type="submit" accesskey="c" tabindex="7" name="cancel" value="{L_CANCEL}" /> + <input class="btnlite" type="submit" accesskey="c" tabindex="14" name="cancel" value="{L_CANCEL}" /> </td> </tr> </table> diff --git a/phpBB/styles/subSilver/template/posting_buttons.html b/phpBB/styles/subSilver/template/posting_buttons.html index a6540e3634..b07f18a5ea 100644 --- a/phpBB/styles/subSilver/template/posting_buttons.html +++ b/phpBB/styles/subSilver/template/posting_buttons.html @@ -1,94 +1,94 @@ - <tr valign="middle" align="left"> - <td colspan="2"> - <script language="javascript" type="text/javascript"> - <!-- - - // Define the bbCode tags - bbcode = new Array(); - bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->); - imageTag = false; - - // Helpline messages - var help_line = { - b: '{LA_BBCODE_B_HELP}', - i: '{LA_BBCODE_I_HELP}', - u: '{LA_BBCODE_U_HELP}', - q: '{LA_BBCODE_Q_HELP}', - c: '{LA_BBCODE_C_HELP}', - l: '{LA_BBCODE_L_HELP}', - o: '{LA_BBCODE_O_HELP}', - p: '{LA_BBCODE_P_HELP}', - w: '{LA_BBCODE_W_HELP}', - s: '{LA_BBCODE_S_HELP}', - f: '{LA_BBCODE_F_HELP}', - e: '{LA_BBCODE_E_HELP}', - d: '{LA_BBCODE_D_HELP}', - t: '{LA_BBCODE_T_HELP}', - tip: '{L_STYLES_TIP}' - <!-- BEGIN custom_tags --> - ,cb_{custom_tags.BBCODE_ID}: '{custom_tags.BBCODE_HELPLINE}' - <!-- END custom_tags --> - } - - function checkForm() - { - if (document.post.message.value.length < 2) - { - alert('{LA_EMPTY_MESSAGE}'); - return false; - } - else - { - // document.post.post.disabled = true; - return true; - } - } - - //--> - </script> - <script language="javascript" type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script> +<tr valign="middle" align="left"> + <td colspan="2"> + <script type="text/javascript"> + <!-- + + // Define the bbCode tags + bbcode = new Array(); + bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->); + imageTag = false; + + // Helpline messages + var help_line = { + b: '{LA_BBCODE_B_HELP}', + i: '{LA_BBCODE_I_HELP}', + u: '{LA_BBCODE_U_HELP}', + q: '{LA_BBCODE_Q_HELP}', + c: '{LA_BBCODE_C_HELP}', + l: '{LA_BBCODE_L_HELP}', + o: '{LA_BBCODE_O_HELP}', + p: '{LA_BBCODE_P_HELP}', + w: '{LA_BBCODE_W_HELP}', + s: '{LA_BBCODE_S_HELP}', + f: '{LA_BBCODE_F_HELP}', + e: '{LA_BBCODE_E_HELP}', + d: '{LA_BBCODE_D_HELP}', + t: '{LA_BBCODE_T_HELP}', + tip: '{L_STYLES_TIP}' + <!-- BEGIN custom_tags --> + ,cb_{custom_tags.BBCODE_ID}: '{custom_tags.BBCODE_HELPLINE}' + <!-- END custom_tags --> + } + + function checkForm() + { + if (document.post.message.value.length < 2) + { + alert('{LA_EMPTY_MESSAGE}'); + return false; + } + else + { + // document.post.post.disabled = true; + return true; + } + } + + //--> + </script> + <script type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script> - - <input type="button" class="btnbbcode" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px;" onclick="bbstyle(0)" onmouseover="helpline('b')" onmouseout="helpline('tip')" /> - <input type="button" class="btnbbcode" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px;" onclick="bbstyle(2)" onmouseover="helpline('i')" onmouseout="helpline('tip')" /> - <input type="button" class="btnbbcode" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px;" onclick="bbstyle(4)" onmouseover="helpline('u')" onmouseout="helpline('tip')" /> - <!-- IF S_BBCODE_QUOTE --> - <input type="button" class="btnbbcode" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" onmouseover="helpline('q')" onmouseout="helpline('tip')" /> - <!-- ENDIF --> - <input type="button" class="btnbbcode" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" onmouseover="helpline('c')" onmouseout="helpline('tip')" /> - <input type="button" class="btnbbcode" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" onmouseover="helpline('l')" onmouseout="helpline('tip')" /> - <input type="button" class="btnbbcode" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" onmouseover="helpline('o')" onmouseout="helpline('tip')" /> - <input type="button" class="btnbbcode" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" onmouseover="helpline('e')" onmouseout="helpline('tip')" /> - <!-- IF S_BBCODE_IMG --> - <input type="button" class="btnbbcode" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" onmouseover="helpline('p')" onmouseout="helpline('tip')" /> - <!-- ENDIF --> - <!-- IF S_LINKS_ALLOWED --> - <input type="button" class="btnbbcode" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" onmouseover="helpline('w')" onmouseout="helpline('tip')" /> - <!-- ENDIF --> - <!-- IF S_BBCODE_FLASH --> - <input type="button" class="btnbbcode" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" onmouseover="helpline('d')" onmouseout="helpline('tip')" /> - <!-- ENDIF --> - <span class="genmed" style="white-space: nowrap;">{L_FONT_SIZE}: <select class="gensmall" name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" onmouseover="helpline('f')" onmouseout="helpline('tip')"> - <option value="7">{L_FONT_TINY}</option> - <option value="9">{L_FONT_SMALL}</option> - <option value="12" selected="selected">{L_FONT_NORMAL}</option> - <option value="18">{L_FONT_LARGE}</option> - <option value="24">{L_FONT_HUGE}</option> - </select></span> - </td> - </tr> - <!-- IF .custom_tags --> - <tr valign="middle" align="left"> - <td colspan="2"> - <!-- BEGIN custom_tags --> - <input type="button" class="btnbbcode" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})"<!-- IF custom_tags.BBCODE_HELPLINE !== '' --> onmouseover="helpline('cb_{custom_tags.BBCODE_ID}')" onmouseout="helpline('tip')"<!-- ENDIF --> /> - <!-- END custom_tags --> - </td> - </tr> + + <input type="button" class="btnbbcode" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px;" onclick="bbstyle(0)" onmouseover="helpline('b')" onmouseout="helpline('tip')" /> + <input type="button" class="btnbbcode" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px;" onclick="bbstyle(2)" onmouseover="helpline('i')" onmouseout="helpline('tip')" /> + <input type="button" class="btnbbcode" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px;" onclick="bbstyle(4)" onmouseover="helpline('u')" onmouseout="helpline('tip')" /> + <!-- IF S_BBCODE_QUOTE --> + <input type="button" class="btnbbcode" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" onmouseover="helpline('q')" onmouseout="helpline('tip')" /> <!-- ENDIF --> - <tr> - <td><input type="text" name="helpbox" style="width:100%" maxlength="100" class="helpline" value="{L_STYLES_TIP}" /></td> - <!-- IF not $S_SIGNATURE and not S_EDIT_DRAFT --> - <td class="genmed" align="center">{L_FONT_COLOR}</td> - <!-- ENDIF --> - </tr> + <input type="button" class="btnbbcode" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" onmouseover="helpline('c')" onmouseout="helpline('tip')" /> + <input type="button" class="btnbbcode" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" onmouseover="helpline('l')" onmouseout="helpline('tip')" /> + <input type="button" class="btnbbcode" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" onmouseover="helpline('o')" onmouseout="helpline('tip')" /> + <input type="button" class="btnbbcode" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" onmouseover="helpline('e')" onmouseout="helpline('tip')" /> + <!-- IF S_BBCODE_IMG --> + <input type="button" class="btnbbcode" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" onmouseover="helpline('p')" onmouseout="helpline('tip')" /> + <!-- ENDIF --> + <!-- IF S_LINKS_ALLOWED --> + <input type="button" class="btnbbcode" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" onmouseover="helpline('w')" onmouseout="helpline('tip')" /> + <!-- ENDIF --> + <!-- IF S_BBCODE_FLASH --> + <input type="button" class="btnbbcode" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" onmouseover="helpline('d')" onmouseout="helpline('tip')" /> + <!-- ENDIF --> + <span class="genmed nowrap">{L_FONT_SIZE}: <select class="gensmall" name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" onmouseover="helpline('f')" onmouseout="helpline('tip')"> + <option value="7">{L_FONT_TINY}</option> + <option value="9">{L_FONT_SMALL}</option> + <option value="12" selected="selected">{L_FONT_NORMAL}</option> + <option value="18">{L_FONT_LARGE}</option> + <option value="24">{L_FONT_HUGE}</option> + </select></span> + </td> +</tr> +<!-- IF .custom_tags --> + <tr valign="middle" align="left"> + <td colspan="2"> + <!-- BEGIN custom_tags --> + <input type="button" class="btnbbcode" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})"<!-- IF custom_tags.BBCODE_HELPLINE !== '' --> onmouseover="helpline('cb_{custom_tags.BBCODE_ID}')" onmouseout="helpline('tip')"<!-- ENDIF --> /> + <!-- END custom_tags --> + </td> + </tr> +<!-- ENDIF --> +<tr> + <td<!-- IF $S_SIGNATURE or S_EDIT_DRAFT --> colspan="2"<!-- ENDIF -->><input type="text" readonly="readonly" name="helpbox" style="width:100%" maxlength="100" class="helpline" value="{L_STYLES_TIP}" /></td> + <!-- IF not $S_SIGNATURE and not S_EDIT_DRAFT --> + <td class="genmed" align="center">{L_FONT_COLOR}</td> + <!-- ENDIF --> +</tr> diff --git a/phpBB/styles/subSilver/template/posting_progress_bar.html b/phpBB/styles/subSilver/template/posting_progress_bar.html index 7a1489b6ec..9a7daede6d 100644 --- a/phpBB/styles/subSilver/template/posting_progress_bar.html +++ b/phpBB/styles/subSilver/template/posting_progress_bar.html @@ -1,4 +1,5 @@ -<script language="javascript" type="text/javascript"> +<!-- INCLUDE simple_header.html --> +<script type="text/javascript"> <!-- /** * Close upload popup @@ -23,8 +24,6 @@ //--> </script> -<!-- INCLUDE simple_header.html --> - <table width="100%" border="0" cellspacing="0" cellpadding="10"> <tr> <td> @@ -37,10 +36,9 @@ </tr> </table> -<!-- INCLUDE simple_footer.html --> - -<script language="javascript" type="text/javascript"> +<script type="text/javascript"> <!-- close_popup(); //--> </script> +<!-- INCLUDE simple_footer.html --> diff --git a/phpBB/styles/subSilver/template/posting_review.html b/phpBB/styles/subSilver/template/posting_review.html index 0d4d5cd71d..5dae2a6c82 100644 --- a/phpBB/styles/subSilver/template/posting_review.html +++ b/phpBB/styles/subSilver/template/posting_review.html @@ -57,7 +57,7 @@ <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr valign="middle"> <td width="100%"> </td> - <td width="10" nowrap="nowrap"><a href="{post_review_row.U_MINI_POST}" target="post_review">{post_review_row.MINI_POST_IMG}</a></td> + <td width="10" nowrap="nowrap"><a href="{post_review_row.U_MINI_POST}">{post_review_row.MINI_POST_IMG}</a></td> <td class="gensmall" nowrap="nowrap"><b>{L_POSTED}:</b> {post_review_row.POST_DATE}</td> </tr> </table> diff --git a/phpBB/styles/subSilver/template/posting_smilies.html b/phpBB/styles/subSilver/template/posting_smilies.html index 42a58d1153..960e6a23b4 100644 --- a/phpBB/styles/subSilver/template/posting_smilies.html +++ b/phpBB/styles/subSilver/template/posting_smilies.html @@ -1,13 +1,13 @@ <!-- INCLUDE simple_header.html --> -<script language="javascript" type="text/javascript"> +<script type="text/javascript"> <!-- var form_name = 'post'; var text_name = 'message'; //--> </script> -<script language="javascript" type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script> +<script type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script> <table width="100%" cellspacing="1" cellpadding="4" border="0"> <tr> diff --git a/phpBB/styles/subSilver/template/report_body.html b/phpBB/styles/subSilver/template/report_body.html index 7065f0f35d..59072606cc 100644 --- a/phpBB/styles/subSilver/template/report_body.html +++ b/phpBB/styles/subSilver/template/report_body.html @@ -23,10 +23,10 @@ <!-- ENDIF --> <tr> <td class="row1" valign="top"><span class="gen"><b>{L_MORE_INFO}:</b></span><br /><span class="gensmall">{L_CAN_LEAVE_BLANK}</span></td> - <td class="row2"><textarea class="post" style="width: 95%" name="report_text" rows="25" cols="40" class="post">{REPORT_TEXT}</textarea></td> + <td class="row2"><textarea class="post" name="report_text" rows="10" cols="50">{REPORT_TEXT}</textarea></td> </tr> <tr> - <td class="cat" colspan="2" align="center"><input type="submit" name="submit" class="btnmain" value="{L_SUBMIT}" /> <input type="submit" name="cancel" class="btnlite" value="{L_CANCEL}"></td> + <td class="cat" colspan="2" align="center"><input type="submit" name="submit" class="btnmain" value="{L_SUBMIT}" /> <input type="submit" name="cancel" class="btnlite" value="{L_CANCEL}" /></td> </tr> </table> </form> diff --git a/phpBB/styles/subSilver/template/search_body.html b/phpBB/styles/subSilver/template/search_body.html index 70952041e0..20385ef753 100644 --- a/phpBB/styles/subSilver/template/search_body.html +++ b/phpBB/styles/subSilver/template/search_body.html @@ -71,14 +71,7 @@ </div> - <table class="tablebg" width="100%" cellspacing="1" cellpadding="0"> - <tr> - <td class="row1"> - <p class="breadcrumbs"><a href="{U_INDEX}">{L_INDEX}</a></p> - <p class="datetime">{S_TIMEZONE}</p> - </td> - </tr> - </table> + <!-- INCLUDE breadcrumbs.html --> <br clear="all" /> diff --git a/phpBB/styles/subSilver/template/search_results.html b/phpBB/styles/subSilver/template/search_results.html index ab0764254c..79853b83af 100644 --- a/phpBB/styles/subSilver/template/search_results.html +++ b/phpBB/styles/subSilver/template/search_results.html @@ -4,7 +4,7 @@ <table width="100%" cellspacing="1"> <tr> - <td colspan="2"><span class="titles">{SEARCH_MATCHES}</span><br /></td> + <td colspan="2"><span class="titles"><!-- IF SEARCH_TITLE -->{SEARCH_TITLE}<!-- ELSE -->{SEARCH_MATCHES}<!-- ENDIF --></span><br /></td> </tr> <tr> <td class="genmed"><!-- IF SEARCH_TOPIC -->{L_SEARCHED_TOPIC}: <a href="{U_SEARCH_TOPIC}"><b>{SEARCH_TOPIC}</b></a><br /><!-- ENDIF --><!-- IF SEARCH_WORDS -->{L_SEARCHED_FOR}: <a href="{U_SEARCH_WORDS}"><b>{SEARCH_WORDS}</b></a><!-- ENDIF --><!-- IF IGNORED_WORDS --> {L_IGNORED_TERMS}: <b>{IGNORED_WORDS}</b><!-- ENDIF --></td> @@ -84,14 +84,23 @@ <!-- IF searchresults.S_IGNORE_POST --> <td class="gensmall" colspan="2" height="25" align="center">{searchresults.L_IGNORE_POST}</td> <!-- ELSE --> - <td colspan="2" height="25"><p class="topictitle"><a name="p{searchresults.POST_ID}" id="p{searchresults.POST_ID}"></a> <!-- IF searchresults.FORUM_TITLE -->{L_FORUM}: <a href="{searchresults.U_VIEW_FORUM}">{searchresults.FORUM_TITLE}</a><!-- ELSE -->{L_GLOBAL}<!-- ENDIF --> {L_TOPIC}: <a href="{searchresults.U_VIEW_TOPIC}">{searchresults.TOPIC_TITLE}</a></p></td> + <td colspan="2" height="25"><p class="topictitle"><a name="p{searchresults.POST_ID}" id="p{searchresults.POST_ID}"></a> <!-- IF searchresults.FORUM_TITLE -->{L_FORUM}: <a href="{searchresults.U_VIEW_FORUM}">{searchresults.FORUM_TITLE}</a><!-- ELSE -->{L_GLOBAL}<!-- ENDIF --> {L_TOPIC}: <a href="{searchresults.U_VIEW_TOPIC}">{searchresults.TOPIC_TITLE}</a> </p></td> </tr> <tr class="row1"> <td width="150" align="center" valign="middle"><b class="postauthor">{searchresults.POST_AUTHOR_FULL}</b></td> <td height="25"> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> - <td class="gensmall"><div style="float:left"> <b>{L_POST_SUBJECT}:</b> <a href="{searchresults.U_VIEW_POST}">{searchresults.POST_SUBJECT}</a></div><div style="float:right"><a href="{searchresults.U_VIEW_POST}">{searchresults.MINI_POST_IMG}</a><b>{L_POSTED}:</b> {searchresults.POST_DATE} </div></td> + <td class="gensmall"> + <div style="float:left"> + <!-- IF searchresults.POST_SUBJECT neq "" --> + <b>{L_POST_SUBJECT}:</b> <a href="{searchresults.U_VIEW_POST}">{searchresults.POST_SUBJECT}</a> + <!-- ELSE --> + [ <a href="{searchresults.U_VIEW_POST}">{L_JUMP_TO_POST}</a> ] + <!-- ENDIF --> + </div> + <div style="float:right"><b>{L_POSTED}:</b> {searchresults.POST_DATE} </div> + </td> </tr> </table> </td> @@ -123,7 +132,8 @@ </form> -<div class="nav" style="float:left"><!-- INCLUDE pagination.html --></div> +<div class="gensmall" style="float:left"><span class="nav">{PAGE_NUMBER}</span> [ {SEARCH_MATCHES} ]</div> +<div class="nav" style="float:right"><!-- INCLUDE pagination.html --></div> <br clear="all" /><br /> diff --git a/phpBB/styles/subSilver/template/simple_footer.html b/phpBB/styles/subSilver/template/simple_footer.html index 1d627c1dda..b8f1cc865b 100644 --- a/phpBB/styles/subSilver/template/simple_footer.html +++ b/phpBB/styles/subSilver/template/simple_footer.html @@ -10,10 +10,10 @@ forums may be affected. The phpBB Group : 2006 -// --> +//--> <div id="wrapfooter"> - <span class="copyright">Powered by <a href="http://www.phpbb.com/" target="_blank">phpBB</a> © 2002, 2006 phpBB Group</span> + <span class="copyright">Powered by <a href="http://www.phpbb.com/">phpBB</a> © 2002, 2006 phpBB Group</span> </div> </body> diff --git a/phpBB/styles/subSilver/template/simple_header.html b/phpBB/styles/subSilver/template/simple_header.html index eab8b10dca..3b97809f50 100644 --- a/phpBB/styles/subSilver/template/simple_header.html +++ b/phpBB/styles/subSilver/template/simple_header.html @@ -17,6 +17,6 @@ <link rel="stylesheet" href="{T_STYLESHEET_LINK}" type="text/css" /> </head> -<body> +<body class="{S_CONTENT_DIRECTION}"> <a name="top"></a> <div id="wrapcentre">
\ No newline at end of file diff --git a/phpBB/styles/subSilver/template/ucp_attachments.html b/phpBB/styles/subSilver/template/ucp_attachments.html index 4e3a12cb3b..f4e4fb9815 100644 --- a/phpBB/styles/subSilver/template/ucp_attachments.html +++ b/phpBB/styles/subSilver/template/ucp_attachments.html @@ -28,7 +28,7 @@ <!-- IF attachrow.S_ROW_COUNT is even --><tr class="row2"><!-- ELSE --><tr class="row1"><!-- ENDIF --> <td class="genmed" style="padding: 4px;" align="center" width="2%"> {attachrow.ROW_NUMBER} </td> - <td style="padding: 4px;"><a class="gen" href="{attachrow.U_VIEW_ATTACHMENT}" target="file">{attachrow.FILENAME}</a><br /><span class="gensmall"><!-- IF attachrow.S_IN_MESSAGE --><b>{L_PM}: </b><!-- ELSE --><b>{L_TOPIC}: </b><!-- ENDIF --><a href="{attachrow.U_VIEW_TOPIC}">{attachrow.TOPIC_TITLE}</a></span></td> + <td style="padding: 4px;"><a class="gen" href="{attachrow.U_VIEW_ATTACHMENT}">{attachrow.FILENAME}</a><br /><span class="gensmall"><!-- IF attachrow.S_IN_MESSAGE --><b>{L_PM}: </b><!-- ELSE --><b>{L_TOPIC}: </b><!-- ENDIF --><a href="{attachrow.U_VIEW_TOPIC}">{attachrow.TOPIC_TITLE}</a></span></td> <td class="gensmall" style="padding: 4px;" align="center" valign="middle" nowrap="nowrap"> {attachrow.POST_TIME} </td> <td class="genmed" style="padding: 4px;" align="center" valign="middle" nowrap="nowrap">{attachrow.SIZE}</td> <td class="genmed" style="padding: 4px;" align="center">{attachrow.DOWNLOAD_COUNT}</td> @@ -40,7 +40,7 @@ </tr> </table> - <div style="float:right"><b class="gensmall"><a href="#" onclick="marklist('ucp', 'attachment', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('ucp', 'attachment', false); return false;">{L_UNMARK_ALL}</a></b></div> + <div style="float:right"><b class="gensmall"><a href="#" onclick="marklist('ucp', 'attachment', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('ucp', 'attachment', false); return false;">{L_UNMARK_ALL}</a></b></div> <!-- ELSE --> diff --git a/phpBB/styles/subSilver/template/ucp_footer.html b/phpBB/styles/subSilver/template/ucp_footer.html index 2160717aba..3b40f90852 100644 --- a/phpBB/styles/subSilver/template/ucp_footer.html +++ b/phpBB/styles/subSilver/template/ucp_footer.html @@ -6,11 +6,7 @@ <br clear="all" /> -<table class="tablebg" width="100%" cellspacing="1"> -<tr> - <td class="row1"><div class="nav" style="float:left"><a href="{U_INDEX}">{L_INDEX}</a></div><div class="gensmall" style="float:right">{S_TIMEZONE}</div></td> -</tr> -</table> +<!-- INCLUDE breadcrumbs.html --> <div align="right"><!-- INCLUDE jumpbox.html --></div> diff --git a/phpBB/styles/subSilver/template/ucp_groups_manage.html b/phpBB/styles/subSilver/template/ucp_groups_manage.html index 80113b08ad..d42a4b7fc6 100644 --- a/phpBB/styles/subSilver/template/ucp_groups_manage.html +++ b/phpBB/styles/subSilver/template/ucp_groups_manage.html @@ -227,18 +227,18 @@ <table class="tablebg" width="100%" cellspacing="1"> <tr> - <th colspan="4">{L_USERGROUPS}</th> + <th colspan="3">{L_USERGROUPS}</th> </tr> <tr> - <td class="row3" colspan="4"><span class="genmed">{L_GROUPS_EXPLAIN}</span></td> + <td class="row3" colspan="3"><span class="genmed">{L_GROUPS_EXPLAIN}</span></td> </tr> <tr> <th>{L_GROUP_DETAILS}</th> - <th colspan="3">{L_OPTIONS}</th> + <th colspan="2">{L_OPTIONS}</th> </tr> <tr> - <td class="row3" colspan="4"><b class="gensmall">{L_GROUP_LEADER}</b></td> + <td class="row3" colspan="3"><b class="gensmall">{L_GROUP_LEADER}</b></td> </tr> <!-- BEGIN leader --> <!-- IF leader.S_ROW_COUNT is odd --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF --> @@ -250,12 +250,12 @@ </tr> <!-- BEGINELSE --> <tr> - <td class="row2" align="center" colspan="4"><b class="genmed">{L_NO_LEADERS}</b></td> + <td class="row2" align="center" colspan="3"><b class="genmed">{L_NO_LEADERS}</b></td> </tr> <!-- END leader --> <tr> - <td class="cat" align="right" colspan="4"> </td> + <td class="cat" align="right" colspan="3"> </td> </tr> </table> diff --git a/phpBB/styles/subSilver/template/ucp_header.html b/phpBB/styles/subSilver/template/ucp_header.html index c1eee778ee..72d96c8a9d 100644 --- a/phpBB/styles/subSilver/template/ucp_header.html +++ b/phpBB/styles/subSilver/template/ucp_header.html @@ -13,21 +13,21 @@ <tr> <th>{L_PM_TO}</th> </tr> + <!-- IF not S_ALLOW_MASS_PM --> <tr> - <td class="row1"><b class="genmed">{L_USERNAME}:</b></td> + <td class="row1"><b class="genmed">{L_USERNAME}:</b><br />[ <a href="{U_FIND_USERNAME}" onclick="find_username(); return false">{L_FIND_USERNAME}</a> ]</td> </tr> + <tr> - <td class="row2"><input class="post" type="text" name="username" size="20" maxlength="40" value="" /> <input class="post" type="submit" name="add_to" value="{L_ADD}" /></td> + <td class="row2"><input class="post" type="text" name="username_list" size="20" maxlength="40" value="" /> <input class="post" type="submit" name="add_to" value="{L_ADD}" /></td> </tr> - <!-- IF S_ALLOW_MASS_PM --> + <!-- ELSE --> <tr> <td class="row1"><b class="genmed">{L_USERNAMES}:</b></td> </tr> <tr> <td class="row2"><textarea name="username_list" rows="5" cols="22"></textarea><br /> - <ul class="nav" style="margin: 0px; padding: 0px; list-style-type: none; line-height: 175%;"> - <li>» <a href="{U_SEARCH_USER}" onclick="window.open('{U_SEARCH_USER}', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false">{L_FIND_USERNAME}</a></li> - </ul> + [ <a href="{U_FIND_USERNAME}" onclick="find_username(); return false">{L_FIND_USERNAME}</a> ] </td> </tr> <!-- ENDIF --> diff --git a/phpBB/styles/subSilver/template/ucp_main_drafts.html b/phpBB/styles/subSilver/template/ucp_main_drafts.html index 4e820acd0d..05c72a4181 100644 --- a/phpBB/styles/subSilver/template/ucp_main_drafts.html +++ b/phpBB/styles/subSilver/template/ucp_main_drafts.html @@ -60,7 +60,7 @@ <tr> <td class="row1" width="22%"><b class="genmed">{L_MESSAGE}: </b><br /><span class="gensmall">{L_EDIT_DRAFT_EXPLAIN}</span></td> <td class="row2"> - <script language="javascript" type="text/javascript"> + <script type="text/javascript"> <!-- var form_name = 'ucp'; diff --git a/phpBB/styles/subSilver/template/ucp_main_front.html b/phpBB/styles/subSilver/template/ucp_main_front.html index 54257d72ea..af749b314b 100644 --- a/phpBB/styles/subSilver/template/ucp_main_front.html +++ b/phpBB/styles/subSilver/template/ucp_main_front.html @@ -52,7 +52,7 @@ </tr> <tr> <td align="right" valign="top" nowrap="nowrap"><b class="genmed">{L_ACTIVE_IN_TOPIC}: </b></td> - <td><!-- IF ACTIVE_TOPIC_PCT neq 0 --><b><a class="gen" href="{U_ACTIVE_TOPIC}">{ACTIVE_TOPIC}</a></b><br /><span class="gensmall">[ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]</span><!-- ELSE --><span class="gen">-</span><!-- ENDIF --></td> + <td><!-- IF ACTIVE_TOPIC_PCT neq 0 --><b><a class="gen" href="{U_ACTIVE_TOPIC}">{ACTIVE_TOPIC}</a></b><br /><span class="genmed">[ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]</span><!-- ELSE --><span class="gen">-</span><!-- ENDIF --></td> </tr> <!-- ENDIF --> <!-- IF WARNINGS --> diff --git a/phpBB/styles/subSilver/template/ucp_pm_message_footer.html b/phpBB/styles/subSilver/template/ucp_pm_message_footer.html index 0dbd6a0f33..e241a1742c 100644 --- a/phpBB/styles/subSilver/template/ucp_pm_message_footer.html +++ b/phpBB/styles/subSilver/template/ucp_pm_message_footer.html @@ -37,5 +37,5 @@ </table> <!-- IF not S_VIEW_MESSAGE --> - <div style="float:right"><b class="gensmall"><a href="#" onclick="marklist('viewfolder', 'marked_msg_id', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('viewfolder', 'marked_msg_id', false); return false;">{L_UNMARK_ALL}</a></b></div> + <div style="float:right"><b class="gensmall"><a href="#" onclick="marklist('viewfolder', 'marked_msg_id', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('viewfolder', 'marked_msg_id', false); return false;">{L_UNMARK_ALL}</a></b></div> <!-- ENDIF --> diff --git a/phpBB/styles/subSilver/template/ucp_pm_message_header.html b/phpBB/styles/subSilver/template/ucp_pm_message_header.html index f3c5cc828b..d73d744c15 100644 --- a/phpBB/styles/subSilver/template/ucp_pm_message_header.html +++ b/phpBB/styles/subSilver/template/ucp_pm_message_header.html @@ -9,7 +9,11 @@ <table width="100%" cellspacing="1"> <tr> <td class="nav" valign="middle" nowrap="nowrap"> {PAGE_NUMBER}<br /></td> - <td class="gensmall" nowrap="nowrap" width="100%"> [ <b>{FOLDER_CUR_MESSAGES}</b>/{FOLDER_MAX_MESSAGES} {L_MESSAGES} ({FOLDER_PERCENT}%) ] </td> + <!-- IF FOLDER_MAX_MESSAGES neq 0 --> + <td class="gensmall" nowrap="nowrap" width="100%"> [ <b>{FOLDER_CUR_MESSAGES}</b>/{FOLDER_MAX_MESSAGES} {L_MESSAGES} ({FOLDER_PERCENT}%) ] </td> + <!-- ELSE --> + <td class="gensmall" nowrap="nowrap" width="100%"> [ <b>{FOLDER_CUR_MESSAGES}</b> {L_MESSAGES} ] </td> + <!-- ENDIF --> </tr> </table> <!-- ENDIF --> diff --git a/phpBB/styles/subSilver/template/ucp_pm_options.html b/phpBB/styles/subSilver/template/ucp_pm_options.html index 05040e529a..ab3b6b9a26 100644 --- a/phpBB/styles/subSilver/template/ucp_pm_options.html +++ b/phpBB/styles/subSilver/template/ucp_pm_options.html @@ -113,6 +113,7 @@ <div style="padding: 2px;"></div> <!-- ENDIF --> +<!-- IF not S_MAX_FOLDER_ZERO --> <table class="tablebg" width="100%" cellspacing="1"> <tr> <th colspan="2">{L_ADD_FOLDER}</th> @@ -131,6 +132,7 @@ </tr> <!-- ENDIF --> </table> +<!-- ENDIF --> <div style="padding: 2px;"></div> diff --git a/phpBB/styles/subSilver/template/ucp_pm_popup.html b/phpBB/styles/subSilver/template/ucp_pm_popup.html index 6b13b186f7..ee49eb2a6b 100644 --- a/phpBB/styles/subSilver/template/ucp_pm_popup.html +++ b/phpBB/styles/subSilver/template/ucp_pm_popup.html @@ -1,6 +1,6 @@ <!-- INCLUDE simple_header.html --> -<script language="javascript" type="text/javascript"> +<script type="text/javascript"> <!-- /** * Jump to inbox diff --git a/phpBB/styles/subSilver/template/ucp_prefs_personal.html b/phpBB/styles/subSilver/template/ucp_prefs_personal.html index ccab661587..ffff4a4280 100644 --- a/phpBB/styles/subSilver/template/ucp_prefs_personal.html +++ b/phpBB/styles/subSilver/template/ucp_prefs_personal.html @@ -48,7 +48,7 @@ <!-- IF S_SELECT_NOTIFY --> <tr> <td class="row1" width="50%"><b class="genmed">{L_NOTIFY_METHOD}:</b><br /><span class="gensmall">{L_NOTIFY_METHOD_EXPLAIN}</span></td> - <td class="row2"><input type="radio" class="radio" name="notifymethod" value="0"<!-- IF S_NOTIFY_EMAIL --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NOTIFY_METHOD_EMAIL}</span> <input type="radio" class="radio" name="notifymethod" value="1"<!-- IF S_NOTIFY_IM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NOTIFY_METHOD_IM}</span> <input type="radio" name="notifymethod" value="2"<!-- IF S_NOTIFY_BOTH --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NOTIFY_METHOD_BOTH}</span></td> + <td class="row2"><input type="radio" class="radio" name="notifymethod" value="0"<!-- IF S_NOTIFY_EMAIL --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NOTIFY_METHOD_EMAIL}</span> <input type="radio" class="radio" name="notifymethod" value="1"<!-- IF S_NOTIFY_IM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NOTIFY_METHOD_IM}</span> <input type="radio" class="radio" name="notifymethod" value="2"<!-- IF S_NOTIFY_BOTH --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NOTIFY_METHOD_BOTH}</span></td> </tr> <!-- ENDIF --> <tr> diff --git a/phpBB/styles/subSilver/template/ucp_profile_signature.html b/phpBB/styles/subSilver/template/ucp_profile_signature.html index be01f098e9..b01911583d 100644 --- a/phpBB/styles/subSilver/template/ucp_profile_signature.html +++ b/phpBB/styles/subSilver/template/ucp_profile_signature.html @@ -17,21 +17,20 @@ <tr> <td colspan="2" class="row2"> - <script language="javascript" type="text/javascript"> + <script type="text/javascript"> <!-- var form_name = 'ucp'; var text_name = 'signature'; --> </script> - <table cellspacing="0" cellpadding="2" border="0"> + <table cellspacing="0" cellpadding="2" border="0" width="99%"> <!-- INCLUDE posting_buttons.html --> <tr> - <td><textarea class="post" name="signature" rows="10" cols="76" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">{SIGNATURE}</textarea></td> - <td></td> + <td colspan="2"><textarea class="post" name="signature" rows="10" cols="76" style="width: 90%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">{SIGNATURE}</textarea></td> </tr> <tr> - <td colspan="9"> + <td colspan="2"> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td align="left"> diff --git a/phpBB/styles/subSilver/template/ucp_register.html b/phpBB/styles/subSilver/template/ucp_register.html index ccbcb4505f..870c2ae1c7 100644 --- a/phpBB/styles/subSilver/template/ucp_register.html +++ b/phpBB/styles/subSilver/template/ucp_register.html @@ -39,7 +39,7 @@ <tr> <td class="row1" width="38%"><b class="genmed">{L_USERNAME}: </b><br /><span class="gensmall">{L_USERNAME_EXPLAIN}</span></td> - <td class="row2"><input class="post" type="text" name="username" size="25" maxlength="40" value="{USERNAME}" /></td> + <td class="row2"><input class="post" type="text" name="username" size="25" maxlength="40" value="{USERNAME}" /></td> </tr> <tr> <td class="row1"><b class="genmed">{L_EMAIL_ADDRESS}: </b></td> @@ -47,10 +47,10 @@ </tr> <tr> <td class="row1"><b class="genmed">{L_CONFIRM_EMAIL}: </b></td> - <td class="row2"><input class="post" type="text" name="email_confirm" size="25" maxlength="255" value="{EMAIL_CONFIRM}" /></td> + <td class="row2"><input class="post" type="text" name="email_confirm" size="25" maxlength="255" value="{EMAIL_CONFIRM}" /></td> </tr> <tr> - <td class="row1"><b class="genmed">{L_NEW_PASSWORD}: </b><br /><span class="gensmall">{L_NEW_PASSWORD_EXPLAIN}</span></td> + <td class="row1"><b class="genmed">{L_PASSWORD}: </b><br /><span class="gensmall">{L_PASSWORD_EXPLAIN}</span></td> <td class="row2"><input class="post" type="password" name="new_password" size="25" maxlength="100" value="{PASSWORD}" /></td> </tr> <tr> @@ -87,8 +87,8 @@ <td class="row1" colspan="2" align="center">{CONFIRM_IMG}</td> </tr> <tr> - <td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td> - <td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td> + <td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td> + <td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td> </tr> <!-- ENDIF --> diff --git a/phpBB/styles/subSilver/template/ucp_zebra_foes.html b/phpBB/styles/subSilver/template/ucp_zebra_foes.html index 7ff375ce79..d87eed567c 100644 --- a/phpBB/styles/subSilver/template/ucp_zebra_foes.html +++ b/phpBB/styles/subSilver/template/ucp_zebra_foes.html @@ -17,12 +17,14 @@ <td class="row2" align="center"><!-- IF S_USERNAME_OPTIONS --><select name="usernames[]" multiple="multiple" size="5">{S_USERNAME_OPTIONS}</select><!-- ELSE --><b class="genmed">{L_NO_FOES}</b><!-- ENDIF --></td> </tr> <tr> - <td class="row1"><b class="genmed">{L_ADD_FOES}:</b><br /><span class="gensmall">{L_ADD_FOES_EXPLAIN} [ <a href="{U_SEARCH_USER}" onclick="window.open('{U_SEARCH_USER}', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false">{L_FIND_USERNAME}</a> ]</span></td> + <td class="row1"><b class="genmed">{L_ADD_FOES}:</b><br /><span class="gensmall">{L_ADD_FOES_EXPLAIN} [ <a href="{U_FIND_USERNAME}" onclick="find_username(); return false;">{L_FIND_USERNAME}</a> ]</span></td> <td class="row2" align="center"><textarea name="add" rows="5" cols="30">{USERNAMES}</textarea><br /></td> </tr> <tr> <td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}<input class="btnmain" type="submit" name="submit" value="{L_SUBMIT}" /> <input class="btnlite" type="reset" value="{L_RESET}" name="reset" /></td> </tr> </table> +<!-- TEST --> + <!-- INCLUDE ucp_footer.html -->
\ No newline at end of file diff --git a/phpBB/styles/subSilver/template/ucp_zebra_friends.html b/phpBB/styles/subSilver/template/ucp_zebra_friends.html index fa0403002f..4be2b8838f 100644 --- a/phpBB/styles/subSilver/template/ucp_zebra_friends.html +++ b/phpBB/styles/subSilver/template/ucp_zebra_friends.html @@ -17,7 +17,7 @@ <td class="row2" align="center"><!-- IF S_USERNAME_OPTIONS --><select name="usernames[]" multiple="multiple" size="5">{S_USERNAME_OPTIONS}</select><!-- ELSE --><b class="genmed">{L_NO_FRIENDS}</b><!-- ENDIF --></td> </tr> <tr> - <td class="row1"><b class="genmed">{L_ADD_FRIENDS}:</b><br /><span class="gensmall">{L_ADD_FRIENDS_EXPLAIN} [ <a href="{U_SEARCH_USER}" onclick="window.open('{U_SEARCH_USER}', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false">{L_FIND_USERNAME}</a> ]</span></td> + <td class="row1"><b class="genmed">{L_ADD_FRIENDS}:</b><br /><span class="gensmall">{L_ADD_FRIENDS_EXPLAIN} [ <a href="{U_FIND_USERNAME}" onclick="find_username(); return false">{L_FIND_USERNAME}</a> ]</span></td> <td class="row2" align="center"><textarea name="add" rows="5" cols="30">{USERNAMES}</textarea><br /></td> </tr> <tr> diff --git a/phpBB/styles/subSilver/template/viewforum_body.html b/phpBB/styles/subSilver/template/viewforum_body.html index d357f45279..d49feb9780 100644 --- a/phpBB/styles/subSilver/template/viewforum_body.html +++ b/phpBB/styles/subSilver/template/viewforum_body.html @@ -41,7 +41,7 @@ <!-- ENDIF --> <td class="row1"> <!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a><!-- ENDIF --> - {topicrow.ATTACH_ICON_IMG} <!-- IF topicrow.S_HAS_POLL or topicrow.S_TOPIC_MOVED --><b>{topicrow.TOPIC_TYPE}</b> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a> + {topicrow.ATTACH_ICON_IMG} <!-- IF topicrow.S_HAS_POLL or topicrow.S_TOPIC_MOVED --><b>{topicrow.TOPIC_TYPE}</b> <!-- ENDIF --><a title="{L_POSTED}: {topicrow.FIRST_POST_TIME}" href="{topicrow.U_VIEW_TOPIC}"class="topictitle">{topicrow.TOPIC_TITLE}</a> <!-- IF topicrow.S_TOPIC_UNAPPROVED or topicrow.S_POSTS_UNAPPROVED --> <a href="{topicrow.U_MCP_QUEUE}">{UNAPPROVED_IMG}</a> <!-- ENDIF --> @@ -52,7 +52,7 @@ <p class="gensmall"> [ {GOTO_PAGE_IMG}{L_GOTO_PAGE}: {topicrow.PAGINATION} ] </p> <!-- ENDIF --> </td> - <td class="row2" width="100" align="center"><p class="topicauthor">{topicrow.TOPIC_AUTHOR_FULL}</p></td> + <td class="row2" width="130" align="center"><p class="topicauthor">{topicrow.TOPIC_AUTHOR_FULL}</p></td> <td class="row1" width="50" align="center"><p class="topicdetails">{topicrow.REPLIES}</p></td> <td class="row2" width="50" align="center"><p class="topicdetails">{topicrow.VIEWS}</p></td> <td class="row1" width="140" align="center"> @@ -75,7 +75,7 @@ <!-- END topicrow --> <tr align="center"> - <td class="cat" colspan="<!-- IF S_TOPIC_ICONS -->8<!-- ELSE -->7<!-- ENDIF -->"> </td> + <td class="cat" colspan="<!-- IF S_TOPIC_ICONS -->7<!-- ELSE -->6<!-- ENDIF -->"> </td> </tr> </table> @@ -116,7 +116,7 @@ <br /><br /> <form method="post" action="{S_LOGIN_ACTION}"> - + <table class="tablebg" width="100%" cellspacing="1"> <tr> <td class="cat"><h4><a href="{U_LOGIN_LOGOUT}">{L_LOGIN_LOGOUT}</a></h4></td> @@ -136,7 +136,7 @@ <!-- IF S_IS_POSTABLE or TOTAL_TOPICS --> <table width="100%" cellspacing="1"> <tr> - <!-- IF S_IS_POSTABLE --> + <!-- IF S_IS_POSTABLE and not S_IS_BOT --> <td align="left" valign="middle"><a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a></td> <!-- ENDIF --> <!-- IF TOTAL_TOPICS --> @@ -154,8 +154,8 @@ <td class="cat" colspan="<!-- IF S_TOPIC_ICONS -->7<!-- ELSE -->6<!-- ENDIF -->"> <table width="100%" cellspacing="0"> <tr class="nav"> - <td valign="middle"> <!-- IF S_WATCH_FORUM_LINK --><a href="{S_WATCH_FORUM_LINK}">{S_WATCH_FORUM_TITLE}</a><!-- ENDIF --></td> - <td align="right" valign="middle"><a href="{U_MARK_TOPICS}">{L_MARK_TOPICS_READ}</a> </td> + <td valign="middle"> <!-- IF S_WATCH_FORUM_LINK and not S_IS_BOT --><a href="{S_WATCH_FORUM_LINK}">{S_WATCH_FORUM_TITLE}</a><!-- ENDIF --></td> + <td align="right" valign="middle"><!-- IF not S_IS_BOT --><a href="{U_MARK_TOPICS}">{L_MARK_TOPICS_READ}</a><!-- ENDIF --> </td> </tr> </table> </td> @@ -192,7 +192,7 @@ <!-- ENDIF --> <td class="row1"> <!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a><!-- ENDIF --> - {topicrow.ATTACH_ICON_IMG} <!-- IF topicrow.S_HAS_POLL or topicrow.S_TOPIC_MOVED --><b>{topicrow.TOPIC_TYPE}</b> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a> + {topicrow.ATTACH_ICON_IMG} <!-- IF topicrow.S_HAS_POLL or topicrow.S_TOPIC_MOVED --><b>{topicrow.TOPIC_TYPE}</b> <!-- ENDIF --><a title="{L_POSTED}: {topicrow.FIRST_POST_TIME}" href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a> <!-- IF topicrow.S_TOPIC_UNAPPROVED or topicrow.S_POSTS_UNAPPROVED --> <a href="{topicrow.U_MCP_QUEUE}">{topicrow.UNAPPROVED_IMG}</a> <!-- ENDIF --> @@ -203,7 +203,7 @@ <p class="gensmall"> [ {GOTO_PAGE_IMG}{L_GOTO_PAGE}: {topicrow.PAGINATION} ] </p> <!-- ENDIF --> </td> - <td class="row2" width="100" align="center"><p class="topicauthor">{topicrow.TOPIC_AUTHOR_FULL}</p></td> + <td class="row2" width="130" align="center"><p class="topicauthor">{topicrow.TOPIC_AUTHOR_FULL}</p></td> <td class="row1" width="50" align="center"><p class="topicdetails">{topicrow.REPLIES}</p></td> <td class="row2" width="50" align="center"><p class="topicdetails">{topicrow.VIEWS}</p></td> <td class="row1" width="140" align="center"> @@ -227,9 +227,9 @@ <tr align="center"> <!-- IF S_TOPIC_ICONS --> - <td class="cat" colspan="8"> - <!-- ELSE --> <td class="cat" colspan="7"> + <!-- ELSE --> + <td class="cat" colspan="6"> <!-- ENDIF --> <form method="post" action="{S_FORUM_ACTION}"><span class="gensmall">{L_DISPLAY_TOPICS}:</span> {S_SELECT_SORT_DAYS} <span class="gensmall">{L_SORT_BY}</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR} <input class="btnlite" type="submit" name="sort" value="{L_GO}" /></form> </td> @@ -238,7 +238,7 @@ <table width="100%" cellspacing="1"> <tr> - <td align="left" valign="middle"><a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a></td> + <td align="left" valign="middle"><!-- IF not S_IS_BOT --><a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a><!-- ENDIF --></td> <td class="nav" nowrap="nowrap"> {PAGE_NUMBER}</td> <td class="gensmall" nowrap="nowrap"> [ {TOTAL_TOPICS} ]</td> <td class="nav" width="100%" align="right" nowrap="nowrap"><!-- INCLUDE pagination.html --></td> @@ -273,33 +273,33 @@ <td align="left" valign="top"> <table cellspacing="3" cellpadding="0" border="0"> <tr> - <td width="20" align="left">{FOLDER_NEW_IMG}</td> + <td width="20" style="text-align: center;">{FOLDER_NEW_IMG}</td> <td class="gensmall">{L_NEW_POSTS}</td> <td> </td> - <td width="20" align="center">{FOLDER_IMG}</td> + <td width="20" style="text-align: center;">{FOLDER_IMG}</td> <td class="gensmall">{L_NO_NEW_POSTS}</td> <td> </td> - <td width="20" align="center">{FOLDER_ANNOUNCE_IMG}</td> + <td width="20" style="text-align: center;">{FOLDER_ANNOUNCE_IMG}</td> <td class="gensmall">{L_ICON_ANNOUNCEMENT}</td> </tr> <tr> - <td width="20" align="center">{FOLDER_HOT_NEW_IMG}</td> + <td style="text-align: center;">{FOLDER_HOT_NEW_IMG}</td> <td class="gensmall">{L_NEW_POSTS_HOT}</td> <td> </td> - <td width="20" align="center">{FOLDER_HOT_IMG}</td> + <td style="text-align: center;">{FOLDER_HOT_IMG}</td> <td class="gensmall">{L_NO_NEW_POSTS_HOT}</td> <td> </td> - <td width="20" align="center">{FOLDER_STICKY_IMG}</td> + <td style="text-align: center;">{FOLDER_STICKY_IMG}</td> <td class="gensmall">{L_ICON_STICKY}</td> </tr> <tr> - <td class="gensmall">{FOLDER_LOCKED_NEW_IMG}</td> + <td style="text-align: center;">{FOLDER_LOCKED_NEW_IMG}</td> <td class="gensmall">{L_NEW_POSTS_LOCKED}</td> <td> </td> - <td class="gensmall">{FOLDER_LOCKED_IMG}</td> + <td style="text-align: center;">{FOLDER_LOCKED_IMG}</td> <td class="gensmall">{L_NO_NEW_POSTS_LOCKED}</td> <td> </td> - <td width="20" align="center">{FOLDER_MOVED_IMG}</td> + <td style="text-align: center;">{FOLDER_MOVED_IMG}</td> <td class="gensmall">{L_MOVED_TOPIC}</td> </tr> </table> diff --git a/phpBB/styles/subSilver/template/viewtopic_body.html b/phpBB/styles/subSilver/template/viewtopic_body.html index bee02f94ee..e3bb8c2fa2 100644 --- a/phpBB/styles/subSilver/template/viewtopic_body.html +++ b/phpBB/styles/subSilver/template/viewtopic_body.html @@ -31,7 +31,7 @@ <table width="100%" cellspacing="1"> <tr> - <td align="left" valign="middle" nowrap="nowrap"><a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a> <a href="{U_POST_REPLY_TOPIC}">{REPLY_IMG}</a></td> + <td align="left" valign="middle" nowrap="nowrap"><!-- IF not S_IS_BOT --><a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a> <a href="{U_POST_REPLY_TOPIC}">{REPLY_IMG}</a><!-- ENDIF --></td> <!-- IF TOTAL_POSTS --> <td class="nav" valign="middle" nowrap="nowrap"> {PAGE_NUMBER}<br /></td> <td class="gensmall" nowrap="nowrap"> [ {TOTAL_POSTS} ] </td> @@ -42,17 +42,19 @@ <table class="tablebg" width="100%" cellspacing="1"> <tr> - <td class="cat" colspan="2"> + <td class="cat"> <table width="100%" cellspacing="0"> <tr> <td class="nav" nowrap="nowrap"> - <!-- IF U_WATCH_TOPIC --><a href="{U_WATCH_TOPIC}" title="{L_WATCH_TOPIC}">{L_WATCH_TOPIC}</a><!-- IF U_PRINT_TOPIC or U_EMAIL_TOPIC or U_BUMP_TOPIC or U_BOOKMARK_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> - <!-- IF U_BOOKMARK_TOPIC --><a href="{U_BOOKMARK_TOPIC}" title="{L_BOOKMARK_TOPIC}">{L_BOOKMARK_TOPIC}</a><!-- IF U_PRINT_TOPIC or U_EMAIL_TOPIC or U_BUMP_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> - <!-- IF U_PRINT_TOPIC --><a href="{U_PRINT_TOPIC}" title="{L_PRINT_TOPIC}">{L_PRINT_TOPIC}</a><!-- IF U_EMAIL_TOPIC or U_BUMP_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> - <!-- IF U_EMAIL_TOPIC --><a href="{U_EMAIL_TOPIC}" title="{L_EMAIL_TOPIC}">{L_EMAIL_TOPIC}</a><!-- IF U_BUMP_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> - <!-- IF U_BUMP_TOPIC --><a href="{U_BUMP_TOPIC}" title="{L_BUMP_TOPIC}">{L_BUMP_TOPIC}</a><!-- ENDIF --> + <!-- IF not S_IS_BOT --> + <!-- IF U_WATCH_TOPIC --><a href="{U_WATCH_TOPIC}" title="{L_WATCH_TOPIC}">{L_WATCH_TOPIC}</a><!-- IF U_PRINT_TOPIC or U_EMAIL_TOPIC or U_BUMP_TOPIC or U_BOOKMARK_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> + <!-- IF U_BOOKMARK_TOPIC --><a href="{U_BOOKMARK_TOPIC}" title="{L_BOOKMARK_TOPIC}">{L_BOOKMARK_TOPIC}</a><!-- IF U_PRINT_TOPIC or U_EMAIL_TOPIC or U_BUMP_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> + <!-- IF U_PRINT_TOPIC --><a href="{U_PRINT_TOPIC}" title="{L_PRINT_TOPIC}">{L_PRINT_TOPIC}</a><!-- IF U_EMAIL_TOPIC or U_BUMP_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> + <!-- IF U_EMAIL_TOPIC --><a href="{U_EMAIL_TOPIC}" title="{L_EMAIL_TOPIC}">{L_EMAIL_TOPIC}</a><!-- IF U_BUMP_TOPIC --> | <!-- ENDIF --><!-- ENDIF --> + <!-- IF U_BUMP_TOPIC --><a href="{U_BUMP_TOPIC}" title="{L_BUMP_TOPIC}">{L_BUMP_TOPIC}</a><!-- ENDIF --> + <!-- ENDIF --> </td> - <td class="nav" align="right" nowrap="nowrap"><a href="{U_VIEW_OLDER_TOPIC}">{L_VIEW_PREVIOUS_TOPIC}</a><!-- IF U_VIEW_UNREAD_POST --> | <a href="{U_VIEW_UNREAD_POST}">{L_VIEW_UNREAD_POST}</a><!-- ENDIF --> | <a href="{U_VIEW_NEWER_TOPIC}">{L_VIEW_NEXT_TOPIC}</a> </td> + <td class="nav" align="right" nowrap="nowrap"><a href="{U_VIEW_OLDER_TOPIC}">{L_VIEW_PREVIOUS_TOPIC}</a><!-- IF U_VIEW_UNREAD_POST and not S_IS_BOT --> | <a href="{U_VIEW_UNREAD_POST}">{L_VIEW_UNREAD_POST}</a><!-- ENDIF --> | <a href="{U_VIEW_NEWER_TOPIC}">{L_VIEW_NEXT_TOPIC}</a> </td> </tr> </table> </td> @@ -158,14 +160,14 @@ <td>{postrow.ONLINE_IMG}</td> </tr> <!-- ENDIF --> - <!-- IF postrow.POSTER_RANK --> + <!-- IF postrow.RANK_TITLE --> <tr> - <td class="postdetails">{postrow.POSTER_RANK}</td> + <td class="postdetails">{postrow.RANK_TITLE}</td> </tr> <!-- ENDIF --> - <!-- IF postrow.RANK_IMAGE --> + <!-- IF postrow.RANK_IMG --> <tr> - <td>{postrow.RANK_IMAGE}</td> + <td>{postrow.RANK_IMG}</td> </tr> <!-- ENDIF --> <!-- IF postrow.POSTER_AVATAR --> @@ -255,10 +257,12 @@ <table width="100%" cellspacing="0"> <tr valign="middle"> <td class="gensmall" align="right"> + <!-- IF not S_IS_BOT --> <!-- IF postrow.U_REPORT --><a href="{postrow.U_REPORT}">{REPORT_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_INFO --><a href="{postrow.U_INFO}">{INFO_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_WARN --><a href="{postrow.U_WARN}">{WARN_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_DELETE --><a href="{postrow.U_DELETE}">{DELETE_IMG}</a> <!-- ENDIF --> + <!-- ENDIF --> </td> </tr> </table> @@ -271,7 +275,7 @@ <!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF --> <td nowrap="nowrap"> </td> - <td><div class="gensmall" style="float: left;"> <!-- IF postrow.U_PROFILE --><a href="{postrow.U_PROFILE}">{PROFILE_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_PM --><a href="{postrow.U_PM}">{PM_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_EMAIL --><a href="{postrow.U_EMAIL}">{EMAIL_IMG}</a> <!-- ENDIF --> </div> <div class="gensmall" style="float:right"><!-- IF postrow.U_EDIT --><a href="{postrow.U_EDIT}">{EDIT_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_QUOTE --><a href="{postrow.U_QUOTE}">{QUOTE_IMG}</a> <!-- ENDIF --> </div></td> + <td><div class="gensmall" style="float: left;"> <!-- IF postrow.U_PROFILE --><a href="{postrow.U_PROFILE}">{PROFILE_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_PM --><a href="{postrow.U_PM}">{PM_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_EMAIL --><a href="{postrow.U_EMAIL}">{EMAIL_IMG}</a> <!-- ENDIF --> </div> <div class="gensmall" style="float:right"><!-- IF not S_IS_BOT --><!-- IF postrow.U_EDIT --><a href="{postrow.U_EDIT}">{EDIT_IMG}</a> <!-- ENDIF --> <!-- IF postrow.U_QUOTE --><a href="{postrow.U_QUOTE}">{QUOTE_IMG}</a> <!-- ENDIF --> <!-- ENDIF --> </div></td> </tr> <!-- ENDIF --> @@ -284,13 +288,13 @@ <table width="100%" cellspacing="1" class="tablebg"> <tr align="center"> - <td class="cat" colspan="2"><form name="viewtopic" method="post" action="{S_TOPIC_ACTION}"><span class="gensmall">{L_DISPLAY_POSTS}:</span> {S_SELECT_SORT_DAYS} <span class="gensmall">{L_SORT_BY}</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR} <input class="btnlite" type="submit" value="{L_GO}" name="sort" /></form></td> + <td class="cat"><form name="viewtopic" method="post" action="{S_TOPIC_ACTION}"><span class="gensmall">{L_DISPLAY_POSTS}:</span> {S_SELECT_SORT_DAYS} <span class="gensmall">{L_SORT_BY}</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR} <input class="btnlite" type="submit" value="{L_GO}" name="sort" /></form></td> </tr> </table> <table width="100%" cellspacing="1"> <tr> - <td align="left" valign="middle" nowrap="nowrap"><a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a> <a href="{U_POST_REPLY_TOPIC}">{REPLY_IMG}</a></td> + <td align="left" valign="middle" nowrap="nowrap"><!-- IF not S_IS_BOT --><a href="{U_POST_NEW_TOPIC}">{POST_IMG}</a> <a href="{U_POST_REPLY_TOPIC}">{REPLY_IMG}</a><!-- ENDIF --></td> <!-- IF TOTAL_POSTS --> <td class="nav" valign="middle" nowrap="nowrap"> {PAGE_NUMBER}<br /></td> <td class="gensmall" nowrap="nowrap"> [ {TOTAL_POSTS} ] </td> diff --git a/phpBB/styles/subSilver/theme/stylesheet.css b/phpBB/styles/subSilver/theme/stylesheet.css index 066b051cc5..93ae44a542 100644 --- a/phpBB/styles/subSilver/theme/stylesheet.css +++ b/phpBB/styles/subSilver/theme/stylesheet.css @@ -12,8 +12,6 @@ -------------------------------------------------------------- */ - - /* Layout ------------ */ * { @@ -143,12 +141,20 @@ p.moderators { font-weight: bold; } +.rtl p.moderators { + float: right; +} + p.linkmcp { margin: 0px; float: right; white-space: nowrap; } +.rtl p.linkmcp { + float: left; +} + p.breadcrumbs { margin: 0px; float: left; @@ -158,6 +164,10 @@ p.breadcrumbs { font-size: 1em; } +.rtl p.breadcrumbs { + float: right; +} + p.datetime { margin: 0px; float: right; @@ -165,6 +175,10 @@ p.datetime { font-size: 1em; } +.rtl p.datetime { + float: left; +} + p.searchbar { padding: 2px 0; white-space: nowrap; @@ -176,6 +190,10 @@ p.searchbarreg { white-space: nowrap; } +.rtl p.searchbarreg { + float: left; +} + p.forumdesc { padding-bottom: 4px; } @@ -218,7 +236,11 @@ p.topicdetails { } .postbody li, ol, ul { - margin-left: 1.5em; + margin: 0 0 0 1.5em; +} + +.rtl .postbody li, .rtl ol, .rtl ul { + margin: 0 1.5em 0 0; } .posthilit { @@ -300,12 +322,10 @@ td { margin: 0px; padding: 0px; border: 0px; - background-color: white; - background-image: url('./images/cellpic2.jpg'); - background-repeat: repeat-y; + background: white url('./images/cellpic2.jpg') repeat-y scroll top left; } .rtl .catdiv { - background-image: url('./images/cellpic2_rtl.jpg'); + background: white url('./images/cellpic2_rtl.jpg') repeat-y scroll top right; } .cat { @@ -452,7 +472,11 @@ select { } option { - padding-right: 1em; + padding: 0 1em 0 0; +} + +.rtl option { + padding: 0 0 0 1em; } input.radio { @@ -493,6 +517,14 @@ input.radio { font-size: 1.1em; } +.btnfile { + font-weight: normal; + background-color: #ECECEC; + border: 1px solid #A9B8C2; + padding: 1px 5px; + font-size: 1.1em; +} + .helpline { background-color: #DEE3E7; border-style: none; @@ -606,7 +638,7 @@ input.radio { /* Misc ------------ */ - img { +img { border: none; } @@ -627,3 +659,7 @@ pre { font-size: 1.1em; font-family: Monaco, 'Courier New', monospace; } + +.nowrap { + white-space: nowrap; +}
\ No newline at end of file diff --git a/phpBB/styles/subSilver/theme/theme.cfg b/phpBB/styles/subSilver/theme/theme.cfg index 695e0e8213..09d5d0d50c 100644 --- a/phpBB/styles/subSilver/theme/theme.cfg +++ b/phpBB/styles/subSilver/theme/theme.cfg @@ -15,7 +15,7 @@ # Single and double quotes do not need to be escaped. # # Available and used values: -# parse_css_file, pagination_sep +# parse_css_file # # General Information about this theme @@ -33,9 +33,3 @@ version = 2.1.1 # images within your css file. # parse_css_file = off - -# -# This option defines the pagination seperator in templates. -# -pagination_sep = ', ' - diff --git a/phpBB/ucp.php b/phpBB/ucp.php index d1461c1764..2713f794eb 100755 --- a/phpBB/ucp.php +++ b/phpBB/ucp.php @@ -22,7 +22,7 @@ require($phpbb_root_path . 'includes/functions_module.' . $phpEx); $id = request_var('i', ''); $mode = request_var('mode', ''); -if ($mode == 'login' || $mode == 'logout') +if ($mode == 'login' || $mode == 'logout' || $mode == 'confirm') { define('IN_LOGIN', true); } @@ -78,7 +78,7 @@ switch ($mode) redirect(append_sid("{$phpbb_root_path}index.$phpEx")); } - login_box("index.$phpEx"); + login_box(request_var('redirect', "index.$phpEx")); break; case 'logout': @@ -139,7 +139,9 @@ switch ($mode) foreach ($_COOKIE as $cookie_name => $cookie_data) { $cookie_name = str_replace($config['cookie_name'] . '_', '', $cookie_name); - if (strpos($cookie_name, '_poll') === false) + + // Polls are stored as {cookie_name}_poll_{topic_id}, cookie_name_ got removed, therefore checking for poll_ + if (strpos($cookie_name, 'poll_') !== 0) { $user->set_cookie($cookie_name, '', $set_time); } @@ -194,7 +196,7 @@ switch ($mode) add_log('admin', 'LOG_ACL_TRANSFER_PERMISSIONS', $user_row['username']); - $message = sprintf($user->lang['PERMISSIONS_TRANSFERED'], $user_row['username']) . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); + $message = sprintf($user->lang['PERMISSIONS_TRANSFERRED'], $user_row['username']) . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>'); trigger_error($message); break; @@ -244,7 +246,7 @@ if (!$user->data['is_registered']) $update_time = $config['load_online_time'] * 60; $sql = $db->sql_build_query('SELECT_DISTINCT', array( - 'SELECT' => 'u.user_id, u.username, u.user_colour, u.user_allow_viewonline, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline', + 'SELECT' => 'u.user_id, u.username, u.username_clean, u.user_colour, u.user_allow_viewonline, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline', 'FROM' => array( USERS_TABLE => 'u', @@ -262,7 +264,7 @@ $sql = $db->sql_build_query('SELECT_DISTINCT', array( AND z.friend = 1 AND u.user_id = z.zebra_id', - 'GROUP_BY' => 'z.zebra_id, u.user_id, u.username, u.user_allow_viewonline, u.user_colour', + 'GROUP_BY' => 'z.zebra_id, u.user_id, u.username_clean, u.user_allow_viewonline, u.user_colour, u.username', 'ORDER_BY' => 'u.username_clean ASC', )); diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php index 9d6da5c31c..990a635c7a 100644 --- a/phpBB/viewforum.php +++ b/phpBB/viewforum.php @@ -152,9 +152,11 @@ if (!($forum_data['forum_type'] == FORUM_POST || (($forum_data['forum_flags'] & if (!$auth->acl_get('f_read', $forum_id)) { $template->assign_vars(array( + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&start=$start"), + 'S_NO_READ_ACCESS' => true, 'S_AUTOLOGIN_ENABLED' => ($config['allow_autologin']) ? true : false, - 'S_LOGIN_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login&redirect=' . urlencode(build_url(array('_f_')))) + 'S_LOGIN_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login') . '&redirect=' . urlencode(str_replace('&', '&', build_url(array('_f_')))), )); page_footer(); @@ -241,9 +243,6 @@ $post_alt = ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->lang['FORUM_LO $s_display_active = ($forum_data['forum_type'] == FORUM_CAT && ($forum_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS)) ? true : false; $template->assign_vars(array( - 'PAGINATION' => generate_pagination(append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&$u_sort_param"), $topics_count, $config['topics_per_page'], $start), - 'PAGE_NUMBER' => on_page($topics_count, $config['topics_per_page'], $start), - 'TOTAL_TOPICS' => ($s_display_active) ? false : (($topics_count == 1) ? $user->lang['VIEW_FORUM_TOPIC'] : sprintf($user->lang['VIEW_FORUM_TOPICS'], $topics_count)), 'MODERATORS' => (!empty($moderators[$forum_id])) ? implode(', ', $moderators[$forum_id]) : '', 'POST_IMG' => ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', $post_alt) : $user->img('button_topic_new', $post_alt), @@ -441,6 +440,17 @@ if (sizeof($shadow_topic_list)) { $orig_topic_id = $shadow_topic_list[$row['topic_id']]; + // Do not include those topics the user has no permission to access + if (!$auth->acl_get('f_read', $row['forum_id'])) + { + // We need to remove any trace regarding this topic. :) + unset($rowset[$orig_topic_id]); + unset($topic_list[array_search($orig_topic_id, $topic_list)]); + $topics_count--; + + continue; + } + // We want to retain some values $row = array_merge($row, array( 'topic_moved_id' => $rowset[$orig_topic_id]['topic_moved_id'], @@ -453,6 +463,12 @@ if (sizeof($shadow_topic_list)) } unset($shadow_topic_list); +$template->assign_vars(array( + 'PAGINATION' => generate_pagination(append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&$u_sort_param"), $topics_count, $config['topics_per_page'], $start), + 'PAGE_NUMBER' => on_page($topics_count, $config['topics_per_page'], $start), + 'TOTAL_TOPICS' => ($s_display_active) ? false : (($topics_count == 1) ? $user->lang['VIEW_FORUM_TOPIC'] : sprintf($user->lang['VIEW_FORUM_TOPICS'], $topics_count))) +); + $topic_list = ($store_reverse) ? array_merge($announcement_list, array_reverse($topic_list)) : array_merge($announcement_list, $topic_list); $topic_tracking_info = $tracking_topics = array(); @@ -515,7 +531,7 @@ if (sizeof($topic_list)) $row = &$rowset[$topic_id]; // This will allow the style designer to output a different header - // or even seperate the list of announcements from sticky and normal topics + // or even separate the list of announcements from sticky and normal topics $s_type_switch_test = ($row['topic_type'] == POST_ANNOUNCE || $row['topic_type'] == POST_GLOBAL) ? 1 : 0; // Replies diff --git a/phpBB/viewonline.php b/phpBB/viewonline.php index 8d5f73f0ef..f202dceb5b 100644 --- a/phpBB/viewonline.php +++ b/phpBB/viewonline.php @@ -83,7 +83,7 @@ $result = $db->sql_query($sql, 600); while ($row = $db->sql_fetchrow($result)) { - $forum_data[$row['forum_id']] = $row['forum_name']; + $forum_data[$row['forum_id']] = $row; } $db->sql_freeresult($result); @@ -117,7 +117,7 @@ if (!$show_guests) } // Get user list -$sql = 'SELECT u.user_id, u.username, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_id, s.session_time, s.session_page, s.session_ip, s.session_viewonline +$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_id, s.session_time, s.session_page, s.session_ip, s.session_viewonline FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s WHERE u.user_id = s.session_user_id AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) . @@ -209,6 +209,14 @@ while ($row = $db->sql_fetchrow($result)) if ($forum_id && $auth->acl_get('f_list', $forum_id)) { $location = ''; + $location_url = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id); + + if ($forum_data[$forum_id]['forum_type'] == FORUM_LINK) + { + $location = sprintf($user->lang['READING_LINK'], $forum_data[$forum_id]['forum_name']); + break; + } + switch ($on_page[1]) { case 'posting': @@ -217,25 +225,24 @@ while ($row = $db->sql_fetchrow($result)) switch ($on_page[1]) { case 'reply': - $location = sprintf($user->lang['REPLYING_MESSAGE'], $forum_data[$forum_id]); + case 'quote': + $location = sprintf($user->lang['REPLYING_MESSAGE'], $forum_data[$forum_id]['forum_name']); break; default: - $location = sprintf($user->lang['POSTING_MESSAGE'], $forum_data[$forum_id]); + $location = sprintf($user->lang['POSTING_MESSAGE'], $forum_data[$forum_id]['forum_name']); break; } break; case 'viewtopic': - $location = sprintf($user->lang['READING_TOPIC'], $forum_data[$forum_id]); + $location = sprintf($user->lang['READING_TOPIC'], $forum_data[$forum_id]['forum_name']); break; case 'viewforum': - $location = sprintf($user->lang['READING_FORUM'], $forum_data[$forum_id]); + $location = sprintf($user->lang['READING_FORUM'], $forum_data[$forum_id]['forum_name']); break; } - - $location_url = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id); } else { @@ -265,16 +272,30 @@ while ($row = $db->sql_fetchrow($result)) break; case 'mcp': + $location = $user->lang['VIEWING_MCP']; + $location_url = append_sid("{$phpbb_root_path}index.$phpEx"); + break; + case 'ucp': $location = $user->lang['VIEWING_UCP']; - /** - * @todo getting module/mode for ucp and mcp - */ -/* if (strpos($row['session_page'], 'i=pm&mode=compose') !== false) + // Grab some common modules + $url_params = array( + 'mode=register' => 'VIEWING_REGISTER', + 'i=pm&mode=compose' => 'POSTING_PRIVATE_MESSAGE', + 'i=pm&' => 'VIEWING_PRIVATE_MESSAGES', + 'i=profile&' => 'CHANGING_PROFILE', + 'i=prefs&' => 'CHANGING_PREFERENCES', + ); + + foreach ($url_params as $param => $lang) { - $location = 'Composing PM'; - }*/ + if (strpos($row['session_page'], $param) !== false) + { + $location = $user->lang[$lang]; + break; + } + } $location_url = append_sid("{$phpbb_root_path}index.$phpEx"); break; diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index d7ef0697c1..4ef45eddc0 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -480,7 +480,7 @@ $icons = $cache->obtain_icons(); $extensions = array(); if ($topic_data['topic_attachment']) { - $extensions = $cache->obtain_attach_extensions(); + $extensions = $cache->obtain_attach_extensions($forum_id); } // Forum rules listing @@ -493,7 +493,7 @@ $allow_change_type = ($auth->acl_get('m_', $forum_id) || ($user->data['is_regist $topic_mod = ''; $topic_mod .= ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && $user->data['user_id'] == $topic_data['topic_poster'] && $topic_data['topic_status'] == ITEM_UNLOCKED)) ? (($topic_data['topic_status'] == ITEM_UNLOCKED) ? '<option value="lock">' . $user->lang['LOCK_TOPIC'] . '</option>' : '<option value="unlock">' . $user->lang['UNLOCK_TOPIC'] . '</option>') : ''; $topic_mod .= ($auth->acl_get('m_delete', $forum_id)) ? '<option value="delete_topic">' . $user->lang['DELETE_TOPIC'] . '</option>' : ''; -$topic_mod .= ($auth->acl_get('m_move', $forum_id)) ? '<option value="move">' . $user->lang['MOVE_TOPIC'] . '</option>' : ''; +$topic_mod .= ($auth->acl_get('m_move', $forum_id) && $topic_data['topic_status'] != ITEM_MOVED) ? '<option value="move">' . $user->lang['MOVE_TOPIC'] . '</option>' : ''; $topic_mod .= ($auth->acl_get('m_split', $forum_id)) ? '<option value="split">' . $user->lang['SPLIT_TOPIC'] . '</option>' : ''; $topic_mod .= ($auth->acl_get('m_merge', $forum_id)) ? '<option value="merge">' . $user->lang['MERGE_TOPIC'] . '</option>' : ''; $topic_mod .= ($auth->acl_get('m_move', $forum_id)) ? '<option value="fork">' . $user->lang['FORK_TOPIC'] . '</option>' : ''; @@ -674,7 +674,7 @@ if (!empty($topic_data['poll_start'])) 'vote_user_ip' => (string) $user->ip, ); - $sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); $db->sql_query($sql); } } @@ -880,7 +880,7 @@ $sql = $db->sql_build_query('SELECT', array( $result = $db->sql_query($sql); -$now = getdate(time() + $user->timezone + $user->dst - (date('H', time()) - gmdate('H', time())) * 3600); +$now = getdate(time() + $user->timezone + $user->dst - date('Z')); // Posts are stored in the $rowset array while $attach_list, $user_cache // and the global bbcode_bitfield are built @@ -1005,8 +1005,8 @@ while ($row = $db->sql_fetchrow($result)) 'from' => (!empty($row['user_from'])) ? $row['user_from'] : '', 'sig' => $user_sig, - 'sig_bbcode_uid' => (!empty($row['user_sig_bbcode_uid'])) ? $row['user_sig_bbcode_uid'] : '', - 'sig_bbcode_bitfield' => (!empty($row['user_sig_bbcode_bitfield'])) ? $row['user_sig_bbcode_bitfield'] : '', + 'sig_bbcode_uid' => (!empty($row['user_sig_bbcode_uid'])) ? $row['user_sig_bbcode_uid'] : '', + 'sig_bbcode_bitfield' => (!empty($row['user_sig_bbcode_bitfield'])) ? $row['user_sig_bbcode_bitfield'] : '', 'viewonline' => $row['user_allow_viewonline'], 'allow_pm' => $row['user_allow_pm'], @@ -1050,28 +1050,7 @@ while ($row = $db->sql_fetchrow($result)) $user_cache[$poster_id]['avatar'] = '<img src="' . $avatar_img . '" width="' . $row['user_avatar_width'] . '" height="' . $row['user_avatar_height'] . '" alt="" />'; } - if (!empty($row['user_rank'])) - { - $user_cache[$poster_id]['rank_title'] = (isset($ranks['special'][$row['user_rank']])) ? $ranks['special'][$row['user_rank']]['rank_title'] : ''; - $user_cache[$poster_id]['rank_image'] = (!empty($ranks['special'][$row['user_rank']]['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $ranks['special'][$row['user_rank']]['rank_image'] . '" alt="' . $ranks['special'][$row['user_rank']]['rank_title'] . '" title="' . $ranks['special'][$row['user_rank']]['rank_title'] . '" /><br />' : ''; - $user_cache[$poster_id]['rank_image_src'] = (!empty($ranks['special'][$row['user_rank']]['rank_image'])) ? $config['ranks_path'] . '/' . $ranks['special'][$row['user_rank']]['rank_image'] : ''; - } - else - { - if (isset($ranks['normal']) && sizeof($ranks['normal'])) - { - foreach ($ranks['normal'] as $rank) - { - if ($row['user_posts'] >= $rank['rank_min']) - { - $user_cache[$poster_id]['rank_title'] = $rank['rank_title']; - $user_cache[$poster_id]['rank_image'] = (!empty($rank['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $rank['rank_image'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" /><br />' : ''; - $user_cache[$poster_id]['rank_image_src'] = (!empty($rank['rank_image'])) ? $config['ranks_path'] . '/' . $rank['rank_image'] : ''; - break; - } - } - } - } + get_user_rank($row['user_rank'], $row['user_posts'], $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']); if (!empty($row['user_allow_viewemail']) || $auth->acl_get('a_email')) { @@ -1255,7 +1234,6 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) // Parse the message and subject $message = censor_text($row['post_text']); - $message = str_replace("\n", '<br />', $message); // Second parse bbcode here if ($row['bbcode_bitfield']) @@ -1263,18 +1241,14 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']); } + $message = str_replace("\n", '<br />', $message); + // Always process smilies after parsing bbcodes $message = smiley_text($message); - if (isset($attachments[$row['post_id']]) && sizeof($attachments[$row['post_id']])) + if (!empty($attachments[$row['post_id']])) { - $unset_attachments = parse_inline_attachments($message, $attachments[$row['post_id']], $update_count, $forum_id); - - // Needed to let not display the inlined attachments at the end of the post again - foreach ($unset_attachments as $index) - { - unset($attachments[$row['post_id']][$index]); - } + parse_attachments($forum_id, $message, $attachments[$row['post_id']], $update_count); } // Highlight active words (primarily for search) @@ -1388,9 +1362,9 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) 'POST_AUTHOR' => get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username']), 'U_POST_AUTHOR' => get_username_string('profile', $poster_id, $row['username'], $row['user_colour'], $row['post_username']), - 'POSTER_RANK' => $user_cache[$poster_id]['rank_title'], - 'RANK_IMAGE' => $user_cache[$poster_id]['rank_image'], - 'RANK_IMAGE_SRC' => $user_cache[$poster_id]['rank_image_src'], + 'RANK_TITLE' => $user_cache[$poster_id]['rank_title'], + 'RANK_IMG' => $user_cache[$poster_id]['rank_image'], + 'RANK_IMG_SRC' => $user_cache[$poster_id]['rank_image_src'], 'POSTER_JOINED' => $user_cache[$poster_id]['joined'], 'POSTER_POSTS' => $user_cache[$poster_id]['posts'], 'POSTER_FROM' => $user_cache[$poster_id]['from'], |
