diff --git a/README.ADD_LOCALE b/README.ADD_LOCALE deleted file mode 100644 index d78b199..0000000 --- a/README.ADD_LOCALE +++ /dev/null @@ -1,34 +0,0 @@ -If you like to add Validate subpackages for a country or -some specific (like Finance) needs, please send a mail -to the pear-dev Mailing list to discuss it. - -There is no need to create a proposal. There is no vote -or other community requests to add a locale to validate. - -We do not have many requirements, but the following must -be fullfilled: - -- Validate API compliant -- No conflict with existing sub packages -- If possible more than one maintainer (asking other - validate_xx maintainers help) -- PEAR CS - -Only the current active leads of Validate can agree or -not to publish a subpackage (actually pajoye, dufuz). - -If you need an starting point then take a look at Example_Locale.php in -the docs dir (http://cvs.php.net/pear/Validate/docs/) -You can take that file to have something to start from and also to have -three functions to start implementing before doing your first release. - -To make things even easier then you just go in there and replace [Your Name] -with your real name with your email (but still keeping -the <> around the email) and [LocaleName] should be replaced with your locale -name, like say HU or IS or such. - -Now you just have to implement those functions and write further info for each -function where relevant (some countries have more requirements than others -and the end developer has to know those things, urls to those infos are also fine) -and if you have any extra functions in mind then just go and implement -those also! ;) diff --git a/TODO b/TODO deleted file mode 100644 index 08344f5..0000000 --- a/TODO +++ /dev/null @@ -1,11 +0,0 @@ -Date: -Create warnings for ambiguous date format with %j, or %n (currently test 5,6 and 7 failed) -Adding 'r' format (RFC 822) - -More Countries support -Mail on peardev if you are interested to add validations for your area - -Update banks SWIFT or IBANN validation for each country (when possible) - -Check that for the postal codes: -http://www.magma.ca/~djcl/postcd.txt diff --git a/Validate.php b/Validate.php deleted file mode 100644 index a8f621c..0000000 --- a/Validate.php +++ /dev/null @@ -1,1149 +0,0 @@ - - * Pierre-Alain Joye - * Amir Mohammad Saied - * - * - * Package to validate various datas. It includes : - * - numbers (min/max, decimal or not) - * - email (syntax, domain check) - * - string (predifined type alpha upper and/or lowercase, numeric,...) - * - date (min, max, rfc822 compliant) - * - uri (RFC2396) - * - possibility valid multiple data with a single method call (::multiple) - * - * @category Validate - * @package Validate - * @author Tomas V.V.Cox - * @author Pierre-Alain Joye - * @author Amir Mohammad Saied - * @copyright 1997-2006 Pierre-Alain Joye,Tomas V.V.Cox,Amir Mohammad Saied - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id$ - * @link http://pear.php.net/package/Validate - */ - -// {{{ Constants -/** - * Methods for common data validations - */ -define('VALIDATE_NUM', '0-9'); -define('VALIDATE_SPACE', '\s'); -define('VALIDATE_ALPHA_LOWER', 'a-z'); -define('VALIDATE_ALPHA_UPPER', 'A-Z'); -define('VALIDATE_ALPHA', VALIDATE_ALPHA_LOWER . VALIDATE_ALPHA_UPPER); -define('VALIDATE_EALPHA_LOWER', VALIDATE_ALPHA_LOWER . 'áéíóúýàèìòùäëïöüÿâêîôûãñõ¨åæç½ðøþß'); -define('VALIDATE_EALPHA_UPPER', VALIDATE_ALPHA_UPPER . 'ÁÉÍÓÚÝÀÈÌÒÙÄËÏÖܾÂÊÎÔÛÃÑÕ¦ÅÆǼÐØÞ'); -define('VALIDATE_EALPHA', VALIDATE_EALPHA_LOWER . VALIDATE_EALPHA_UPPER); -define('VALIDATE_PUNCTUATION', VALIDATE_SPACE . '\.,;\:&"\'\?\!\(\)'); -define('VALIDATE_NAME', VALIDATE_EALPHA . VALIDATE_SPACE . "'" . '\-'); -define('VALIDATE_STREET', VALIDATE_NUM . VALIDATE_NAME . "/\\ºª\."); - -define('VALIDATE_ITLD_EMAILS', 1); -define('VALIDATE_GTLD_EMAILS', 2); -define('VALIDATE_CCTLD_EMAILS', 4); -define('VALIDATE_ALL_EMAILS', 8); -// }}} - -/** - * Validation class - * - * Package to validate various datas. It includes : - * - numbers (min/max, decimal or not) - * - email (syntax, domain check) - * - string (predifined type alpha upper and/or lowercase, numeric,...) - * - date (min, max) - * - uri (RFC2396) - * - possibility valid multiple data with a single method call (::multiple) - * - * @category Validate - * @package Validate - * @author Tomas V.V.Cox - * @author Pierre-Alain Joye - * @author Amir Mohammad Saied - * @copyright 1997-2006 Pierre-Alain Joye,Tomas V.V.Cox,Amir Mohammad Saied - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/Validate - */ -class Validate -{ - // {{{ International, Generic and Country code TLDs - /** - * International Top-Level Domain - * - * This is an array of the known international - * top-level domain names. - * - * @access protected - * @var array $_iTld (International top-level domains) - */ - var $_itld = array( - 'arpa', - 'root', - ); - - /** - * Generic top-level domain - * - * This is an array of the official - * generic top-level domains. - * - * @access protected - * @var array $_gTld (Generic top-level domains) - */ - var $_gtld = array( - 'aero', - 'biz', - 'cat', - 'com', - 'coop', - 'edu', - 'gov', - 'info', - 'int', - 'jobs', - 'mil', - 'mobi', - 'museum', - 'name', - 'net', - 'org', - 'pro', - 'travel', - 'asia', - 'post', - 'tel', - 'geo', - ); - - /** - * Country code top-level domains - * - * This is an array of the official country - * codes top-level domains - * - * @access protected - * @var array $_ccTld (Country Code Top-Level Domain) - */ - var $_cctld = array( - 'ac', - 'ad','ae','af','ag', - 'ai','al','am','an', - 'ao','aq','ar','as', - 'at','au','aw','ax', - 'az','ba','bb','bd', - 'be','bf','bg','bh', - 'bi','bj','bm','bn', - 'bo','br','bs','bt', - 'bu','bv','bw','by', - 'bz','ca','cc','cd', - 'cf','cg','ch','ci', - 'ck','cl','cm','cn', - 'co','cr','cs','cu', - 'cv','cx','cy','cz', - 'de','dj','dk','dm', - 'do','dz','ec','ee', - 'eg','eh','er','es', - 'et','eu','fi','fj', - 'fk','fm','fo','fr', - 'ga','gb','gd','ge', - 'gf','gg','gh','gi', - 'gl','gm','gn','gp', - 'gq','gr','gs','gt', - 'gu','gw','gy','hk', - 'hm','hn','hr','ht', - 'hu','id','ie','il', - 'im','in','io','iq', - 'ir','is','it','je', - 'jm','jo','jp','ke', - 'kg','kh','ki','km', - 'kn','kp','kr','kw', - 'ky','kz','la','lb', - 'lc','li','lk','lr', - 'ls','lt','lu','lv', - 'ly','ma','mc','md', - 'me','mg','mh','mk', - 'ml','mm','mn','mo', - 'mp','mq','mr','ms', - 'mt','mu','mv','mw', - 'mx','my','mz','na', - 'nc','ne','nf','ng', - 'ni','nl','no','np', - 'nr','nu','nz','om', - 'pa','pe','pf','pg', - 'ph','pk','pl','pm', - 'pn','pr','ps','pt', - 'pw','py','qa','re', - 'ro','rs','ru','rw', - 'sa','sb','sc','sd', - 'se','sg','sh','si', - 'sj','sk','sl','sm', - 'sn','so','sr','st', - 'su','sv','sy','sz', - 'tc','td','tf','tg', - 'th','tj','tk','tl', - 'tm','tn','to','tp', - 'tr','tt','tv','tw', - 'tz','ua','ug','uk', - 'us','uy','uz','va', - 'vc','ve','vg','vi', - 'vn','vu','wf','ws', - 'ye','yt','yu','za', - 'zm','zw', - ); - // }}} - - /** - * Validate a tag URI (RFC4151) - * - * @param string $uri tag URI to validate - * - * @return boolean true if valid tag URI, false if not - * - * @access private - */ - function __uriRFC4151($uri) - { - $datevalid = false; - if (preg_match( - '/^tag:(?.*),(?\d{4}-?\d{0,2}-?\d{0,2}):(?.*)(.*:)*$/', $uri, $matches)) { - $date = $matches['date']; - $date6 = strtotime($date); - if ((strlen($date) == 4) && $date <= date('Y')) { - $datevalid = true; - } elseif ((strlen($date) == 7) && ($date6 < strtotime("now"))) { - $datevalid = true; - } elseif ((strlen($date) == 10) && ($date6 < strtotime("now"))) { - $datevalid = true; - } - if (self::email($matches['name'])) { - $namevalid = true; - } else { - $namevalid = self::email('info@' . $matches['name']); - } - return $datevalid && $namevalid; - } else { - return false; - } - } - - /** - * Validate a number - * - * @param string $number Number to validate - * @param array $options array where: - * 'decimal' is the decimal char or false when decimal - * not allowed. - * i.e. ',.' to allow both ',' and '.' - * 'dec_prec' Number of allowed decimals - * 'min' minimum value - * 'max' maximum value - * - * @return boolean true if valid number, false if not - * - * @access public - */ - function number($number, $options = array()) - { - $decimal = $dec_prec = $min = $max = null; - if (is_array($options)) { - extract($options); - } - - $dec_prec = $dec_prec ? "{1,$dec_prec}" : '+'; - $dec_regex = $decimal ? "[$decimal][0-9]$dec_prec" : ''; - - if (!preg_match("|^[-+]?\s*[0-9]+($dec_regex)?\$|", $number)) { - return false; - } - - if ($decimal != '.') { - $number = strtr($number, $decimal, '.'); - } - - $number = (float)str_replace(' ', '', $number); - if ($min !== null && $min > $number) { - return false; - } - - if ($max !== null && $max < $number) { - return false; - } - return true; - } - - /** - * Converting a string to UTF-7 (RFC 2152) - * - * @param string $string string to be converted - * - * @return string converted string - * - * @access private - */ - function __stringToUtf7($string) - { - $return = ''; - $utf7 = array( - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', - 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', - 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', - 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', - '3', '4', '5', '6', '7', '8', '9', '+', ',' - ); - - - $state = 0; - - if (!empty($string)) { - $i = 0; - while ($i <= strlen($string)) { - $char = substr($string, $i, 1); - if ($state == 0) { - if ((ord($char) >= 0x7F) || (ord($char) <= 0x1F)) { - if ($char) { - $return .= '&'; - } - $state = 1; - } elseif ($char == '&') { - $return .= '&-'; - } else { - $return .= $char; - } - } elseif (($i == strlen($string) || - !((ord($char) >= 0x7F)) || (ord($char) <= 0x1F))) { - if ($state != 1) { - if (ord($char) > 64) { - $return .= ''; - } else { - $return .= $utf7[ord($char)]; - } - } - $return .= '-'; - $state = 0; - } else { - switch($state) { - case 1: - $return .= $utf7[ord($char) >> 2]; - $residue = (ord($char) & 0x03) << 4; - $state = 2; - break; - case 2: - $return .= $utf7[$residue | (ord($char) >> 4)]; - $residue = (ord($char) & 0x0F) << 2; - $state = 3; - break; - case 3: - $return .= $utf7[$residue | (ord($char) >> 6)]; - $return .= $utf7[ord($char) & 0x3F]; - $state = 1; - break; - } - } - $i++; - } - return $return; - } - return ''; - } - - /** - * Validate an email according to full RFC822 (inclusive human readable part) - * - * @param string $email email to validate, - * will return the address for optional dns validation - * @param array $options email() options - * - * @return boolean true if valid email, false if not - * - * @access private - */ - function __emailRFC822(&$email, &$options) - { - static $address = null; - static $uncomment = null; - if (!$address) { - // atom = 1* - $atom = '[^][()<>@,;:\\".\s\000-\037\177-\377]+\s*'; - // qtext = , ; => may be folded - // "\" & CR, and including linear-white-space> - $qtext = '[^"\\\\\r]'; - // quoted-pair = "\" CHAR ; may quote any char - $quoted_pair = '\\\\.'; - // quoted-string = <"> *(qtext/quoted-pair) <">; Regular qtext or - // ; quoted chars. - $quoted_string = '"(?:' . $qtext . '|' . $quoted_pair . ')*"\s*'; - // word = atom / quoted-string - $word = '(?:' . $atom . '|' . $quoted_string . ')'; - // local-part = word *("." word) ; uninterpreted - // ; case-preserved - $local_part = $word . '(?:\.\s*' . $word . ')*'; - // dtext = may be folded - // "]", "\" & CR, & including linear-white-space> - $dtext = '[^][\\\\\r]'; - // domain-literal = "[" *(dtext / quoted-pair) "]" - $domain_literal = '\[(?:' . $dtext . '|' . $quoted_pair . ')*\]\s*'; - // sub-domain = domain-ref / domain-literal - // domain-ref = atom ; symbolic reference - $sub_domain = '(?:' . $atom . '|' . $domain_literal . ')'; - // domain = sub-domain *("." sub-domain) - $domain = $sub_domain . '(?:\.\s*' . $sub_domain . ')*'; - // addr-spec = local-part "@" domain ; global address - $addr_spec = $local_part . '@\s*' . $domain; - // route = 1#("@" domain) ":" ; path-relative - $route = '@' . $domain . '(?:,@\s*' . $domain . ')*:\s*'; - // route-addr = "<" [route] addr-spec ">" - $route_addr = '<\s*(?:' . $route . ')?' . $addr_spec . '>\s*'; - // phrase = 1*word ; Sequence of words - $phrase = $word . '+'; - // mailbox = addr-spec ; simple address - // / phrase route-addr ; name & addr-spec - $mailbox = '(?:' . $addr_spec . '|' . $phrase . $route_addr . ')'; - // group = phrase ":" [#mailbox] ";" - $group = $phrase . ':\s*(?:' . $mailbox . '(?:,\s*' . $mailbox . ')*)?;\s*'; - // address = mailbox ; one addressee - // / group ; named list - $address = '/^\s*(?:' . $mailbox . '|' . $group . ')$/'; - - $uncomment = - '/((?:(?:\\\\"|[^("])*(?:' . $quoted_string . - ')?)*)((?{$tmpVar}; - } - - $e = $self->executeFullEmailValidation($email, $toValidate); - - return $e; - } - - /** - * Execute the validation - * - * This function will execute the full email vs tld - * validation using an array of tlds passed to it. - * - * @param string $email The email to validate. - * @param array $arrayOfTLDs The array of the TLDs to validate - * - * @access public - * - * @return true or false (Depending on if it validates or if it does not) - */ - function executeFullEmailValidation($email, $arrayOfTLDs) - { - $emailEnding = explode('.', $email); - $emailEnding = $emailEnding[count($emailEnding)-1]; - foreach ($arrayOfTLDs as $validator => $keys) { - if (in_array($emailEnding, $keys)) { - return true; - } - } - return false; - } - - /** - * Validate an email - * - * @param string $email email to validate - * @param mixed boolean (BC) $check_domain Check or not if the domain exists - * array $options associative array of options - * 'check_domain' boolean Check or not if the domain exists - * 'use_rfc822' boolean Apply the full RFC822 grammar - * - * Ex. - * $options = array( - * 'check_domain' => 'true', - * 'fullTLDValidation' => 'true', - * 'use_rfc822' => 'true', - * 'VALIDATE_GTLD_EMAILS' => 'true', - * 'VALIDATE_CCTLD_EMAILS' => 'true', - * 'VALIDATE_ITLD_EMAILS' => 'true', - * ); - * - * @return boolean true if valid email, false if not - * - * @access public - */ - function email($email, $options = null) - { - $check_domain = false; - $use_rfc822 = false; - if (is_bool($options)) { - $check_domain = $options; - } elseif (is_array($options)) { - extract($options); - } - - /** - * Check for IDN usage so we can encode the domain as Punycode - * before continuing. - */ - $hasIDNA = false; - - if (Validate::_includePathFileExists('Net/IDNA.php')) { - include_once('Net/IDNA.php'); - $hasIDNA = true; - } - - if ($hasIDNA === true) { - if (strpos($email, '@') !== false) { - $tmpEmail = explode('@', $email); - $domain = array_pop($tmpEmail); - - // Check if the domain contains characters > 127 which means - // it's an idn domain name. - $chars = count_chars($domain, 1); - if (!empty($chars) && max(array_keys($chars)) > 127) { - $idna =& Net_IDNA::singleton(); - $domain = $idna->encode($domain); - } - - array_push($tmpEmail, $domain); - $email = implode('@', $tmpEmail); - } - } - - /** - * @todo Fix bug here.. even if it passes this, it won't be passing - * The regular expression below - */ - if (isset($fullTLDValidation)) { - //$valid = Validate::_fullTLDValidation($email, $fullTLDValidation); - $valid = Validate::_fullTLDValidation($email, $options); - - if (!$valid) { - return false; - } - } - - // the base regexp for address - $regex = '&^(?: # recipient: - ("\s*(?:[^"\f\n\r\t\v\b\s]+\s*)+")| #1 quoted name - ([-\w!\#\$%\&\'*+~/^`|{}]+(?:\.[-\w!\#\$%\&\'*+~/^`|{}]+)*)) #2 OR dot-atom - @(((\[)? #3 domain, 4 as IPv4, 5 optionally bracketed - (?:(?:(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:[0-1]?[0-9]?[0-9]))\.){3} - (?:(?:25[0-5])|(?:2[0-4][0-9])|(?:[0-1]?[0-9]?[0-9]))))(?(5)\])| - ((?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)*[a-z0-9](?:[-a-z0-9]*[a-z0-9])?) #6 domain as hostname - \.((?:([^- ])[-a-z]*[-a-z]))) #7 TLD - $&xi'; - - //checks if exists the domain (MX or A) - if ($use_rfc822? Validate::__emailRFC822($email, $options) : - preg_match($regex, $email)) { - if ($check_domain && function_exists('checkdnsrr')) { - $domain = preg_replace('/[^-a-z.0-9]/i', '', array_pop(explode('@', $email))); - if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) { - return true; - } - return false; - } - return true; - } - return false; - } - - /** - * Validate a string using the given format 'format' - * - * @param string $string String to validate - * @param array $options Options array where: - * 'format' is the format of the string - * Ex:VALIDATE_NUM . VALIDATE_ALPHA (see constants) - * 'min_length' minimum length - * 'max_length' maximum length - * - * @return boolean true if valid string, false if not - * - * @access public - */ - function string($string, $options) - { - $format = null; - $min_length = 0; - $max_length = 0; - - if (is_array($options)) { - extract($options); - } - - if ($format && !preg_match("|^[$format]*\$|s", $string)) { - return false; - } - - if ($min_length && strlen($string) < $min_length) { - return false; - } - - if ($max_length && strlen($string) > $max_length) { - return false; - } - - return true; - } - - /** - * Validate an URI (RFC2396) - * This function will validate 'foobarstring' by default, to get it to validate - * only http, https, ftp and such you have to pass it in the allowed_schemes - * option, like this: - * - * $options = array('allowed_schemes' => array('http', 'https', 'ftp')) - * var_dump(Validate::uri('http://www.example.org', $options)); - * - * - * NOTE 1: The rfc2396 normally allows middle '-' in the top domain - * e.g. http://example.co-m should be valid - * However, as '-' is not used in any known TLD, it is invalid - * NOTE 2: As double shlashes // are allowed in the path part, only full URIs - * including an authority can be valid, no relative URIs - * the // are mandatory (optionally preceeded by the 'sheme:' ) - * NOTE 3: the full complience to rfc2396 is not achieved by default - * the characters ';/?:@$,' will not be accepted in the query part - * if not urlencoded, refer to the option "strict'" - * - * @param string $url URI to validate - * @param array $options Options used by the validation method. - * key => type - * 'domain_check' => boolean - * Whether to check the DNS entry or not - * 'allowed_schemes' => array, list of protocols - * List of allowed schemes ('http', - * 'ssh+svn', 'mms') - * 'strict' => string the refused chars - * in query and fragment parts - * default: ';/?:@$,' - * empty: accept all rfc2396 foreseen chars - * - * @return boolean true if valid uri, false if not - * - * @access public - */ - function uri($url, $options = null) - { - $strict = ';/?:@$,'; - $domain_check = false; - $allowed_schemes = null; - if (is_array($options)) { - extract($options); - } - if (is_array($allowed_schemes) && - in_array("tag", $allowed_schemes) - ) { - if (strpos($url, "tag:") === 0) { - return self::__uriRFC4151($url); - } - } - - if (preg_match( - '&^(?:([a-z][-+.a-z0-9]*):)? # 1. scheme - (?:// # authority start - (?:((?:%[0-9a-f]{2}|[-a-z0-9_.!~*\'();:\&=+$,])*)@)? # 2. authority-userinfo - (?:((?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)*[a-z](?:[a-z0-9]+)?\.?) # 3. authority-hostname OR - |([0-9]{1,3}(?:\.[0-9]{1,3}){3})) # 4. authority-ipv4 - (?::([0-9]*))?) # 5. authority-port - ((?:/(?:%[0-9a-f]{2}|[-a-z0-9_.!~*\'():@\&=+$,;])*)*/?)? # 6. path - (?:\?([^#]*))? # 7. query - (?:\#((?:%[0-9a-f]{2}|[-a-z0-9_.!~*\'();/?:@\&=+$,])*))? # 8. fragment - $&xi', $url, $matches)) { - $scheme = isset($matches[1]) ? $matches[1] : ''; - $authority = isset($matches[3]) ? $matches[3] : '' ; - if (is_array($allowed_schemes) && - !in_array($scheme, $allowed_schemes) - ) { - return false; - } - if (!empty($matches[4])) { - $parts = explode('.', $matches[4]); - foreach ($parts as $part) { - if ($part > 255) { - return false; - } - } - } elseif ($domain_check && function_exists('checkdnsrr')) { - if (!checkdnsrr($authority, 'A')) { - return false; - } - } - if ($strict) { - $strict = '#[' . preg_quote($strict, '#') . ']#'; - if ((!empty($matches[7]) && preg_match($strict, $matches[7])) - || (!empty($matches[8]) && preg_match($strict, $matches[8]))) { - return false; - } - } - return true; - } - return false; - } - - /** - * Validate date and times. Note that this method need the Date_Calc class - * - * @param string $date Date to validate - * @param array $options array options where : - * 'format' The format of the date (%d-%m-%Y) - * or rfc822_compliant - * 'min' The date has to be greater - * than this array($day, $month, $year) - * or PEAR::Date object - * 'max' The date has to be smaller than - * this array($day, $month, $year) - * or PEAR::Date object - * - * @return boolean true if valid date/time, false if not - * - * @access public - */ - function date($date, $options) - { - $max = false; - $min = false; - $format = ''; - - if (is_array($options)) { - extract($options); - } - - if (strtolower($format) == 'rfc822_compliant') { - $preg = '&^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),) \s+ - (?:(\d{2})?) \s+ - (?:(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)?) \s+ - (?:(\d{2}(\d{2})?)?) \s+ - (?:(\d{2}?)):(?:(\d{2}?))(:(?:(\d{2}?)))? \s+ - (?:[+-]\d{4}|UT|GMT|EST|EDT|CST|CDT|MST|MDT|PST|PDT|[A-IK-Za-ik-z])$&xi'; - - if (!preg_match($preg, $date, $matches)) { - return false; - } - - $year = (int)$matches[4]; - $months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); - $month = array_keys($months, $matches[3]); - $month = (int)$month[0]+1; - $day = (int)$matches[2]; - $weekday = $matches[1]; - $hour = (int)$matches[6]; - $minute = (int)$matches[7]; - isset($matches[9]) ? $second = (int)$matches[9] : $second = 0; - - if ((strlen($year) != 4) || - ($day > 31 || $day < 1)|| - ($hour > 23) || - ($minute > 59) || - ($second > 59)) { - return false; - } - } else { - $date_len = strlen($format); - for ($i = 0; $i < $date_len; $i++) { - $c = $format{$i}; - if ($c == '%') { - $next = $format{$i + 1}; - switch ($next) { - case 'j': - case 'd': - if ($next == 'j') { - $day = (int)Validate::_substr($date, 1, 2); - } else { - $day = (int)Validate::_substr($date, 0, 2); - } - if ($day < 1 || $day > 31) { - return false; - } - break; - case 'm': - case 'n': - if ($next == 'm') { - $month = (int)Validate::_substr($date, 0, 2); - } else { - $month = (int)Validate::_substr($date, 1, 2); - } - if ($month < 1 || $month > 12) { - return false; - } - break; - case 'Y': - case 'y': - if ($next == 'Y') { - $year = Validate::_substr($date, 4); - $year = (int)$year?$year:''; - } else { - $year = (int)(substr(date('Y'), 0, 2) . - Validate::_substr($date, 2)); - } - if (strlen($year) != 4 || $year < 0 || $year > 9999) { - return false; - } - break; - case 'g': - case 'h': - if ($next == 'g') { - $hour = Validate::_substr($date, 1, 2); - } else { - $hour = Validate::_substr($date, 2); - } - if (!preg_match('/^\d+$/', $hour) || $hour < 0 || $hour > 12) { - return false; - } - break; - case 'G': - case 'H': - if ($next == 'G') { - $hour = Validate::_substr($date, 1, 2); - } else { - $hour = Validate::_substr($date, 2); - } - if (!preg_match('/^\d+$/', $hour) || $hour < 0 || $hour > 24) { - return false; - } - break; - case 's': - case 'i': - $t = Validate::_substr($date, 2); - if (!preg_match('/^\d+$/', $t) || $t < 0 || $t > 59) { - return false; - } - break; - default: - trigger_error("Not supported char `$next' after % in offset " . ($i+2), E_USER_WARNING); - } - $i++; - } else { - //literal - if (Validate::_substr($date, 1) != $c) { - return false; - } - } - } - } - // there is remaing data, we don't want it - if (strlen($date) && (strtolower($format) != 'rfc822_compliant')) { - return false; - } - - if (isset($day) && isset($month) && isset($year)) { - if (!checkdate($month, $day, $year)) { - return false; - } - - if (strtolower($format) == 'rfc822_compliant') { - if ($weekday != date("D", mktime(0, 0, 0, $month, $day, $year))) { - return false; - } - } - - if ($min) { - include_once 'Date/Calc.php'; - if (is_a($min, 'Date') && - (Date_Calc::compareDates($day, $month, $year, - $min->getDay(), $min->getMonth(), $min->getYear()) < 0) - ) { - return false; - } elseif (is_array($min) && - (Date_Calc::compareDates($day, $month, $year, - $min[0], $min[1], $min[2]) < 0) - ) { - return false; - } - } - - if ($max) { - include_once 'Date/Calc.php'; - if (is_a($max, 'Date') && - (Date_Calc::compareDates($day, $month, $year, - $max->getDay(), $max->getMonth(), $max->getYear()) > 0) - ) { - return false; - } elseif (is_array($max) && - (Date_Calc::compareDates($day, $month, $year, - $max[0], $max[1], $max[2]) > 0) - ) { - return false; - } - } - } - - return true; - } - - /** - * Substr - * - * @param string &$date Date - * @param string $num Length - * @param string $opt Unknown - * - * @access private - * @return string - */ - function _substr(&$date, $num, $opt = false) - { - if ($opt && strlen($date) >= $opt && preg_match('/^[0-9]{'.$opt.'}/', $date, $m)) { - $ret = $m[0]; - } else { - $ret = substr($date, 0, $num); - } - $date = substr($date, strlen($ret)); - return $ret; - } - - function _modf($val, $div) - { - if (function_exists('bcmod')) { - return bcmod($val, $div); - } elseif (function_exists('fmod')) { - return fmod($val, $div); - } - $r = $val / $div; - $i = intval($r); - return intval($val - $i * $div + .1); - } - - /** - * Calculates sum of product of number digits with weights - * - * @param string $number number string - * @param array $weights reference to array of weights - * - * @access protected - * - * @return int returns product of number digits with weights - */ - function _multWeights($number, &$weights) - { - if (!is_array($weights)) { - return -1; - } - $sum = 0; - - $count = min(count($weights), strlen($number)); - if ($count == 0) { // empty string or weights array - return -1; - } - for ($i = 0; $i < $count; ++$i) { - $sum += intval(substr($number, $i, 1)) * $weights[$i]; - } - - return $sum; - } - - /** - * Calculates control digit for a given number - * - * @param string $number number string - * @param array $weights reference to array of weights - * @param int $modulo (optionsl) number - * @param int $subtract (optional) number - * @param bool $allow_high (optional) true if function can return number higher than 10 - * - * @access protected - * - * @return int -1 calculated control number is returned - */ - function _getControlNumber($number, &$weights, $modulo = 10, $subtract = 0, $allow_high = false) - { - // calc sum - $sum = Validate::_multWeights($number, $weights); - if ($sum == -1) { - return -1; - } - $mod = Validate::_modf($sum, $modulo); // calculate control digit - - if ($subtract > $mod && $mod > 0) { - $mod = $subtract - $mod; - } - if ($allow_high === false) { - $mod %= 10; // change 10 to zero - } - return $mod; - } - - /** - * Validates a number - * - * @param string $number number to validate - * @param array $weights reference to array of weights - * @param int $modulo (optional) number - * @param int $subtract (optional) number - * - * @access protected - * - * @return bool true if valid, false if not - */ - function _checkControlNumber($number, &$weights, $modulo = 10, $subtract = 0) - { - if (strlen($number) < count($weights)) { - return false; - } - $target_digit = substr($number, count($weights), 1); - $control_digit = Validate::_getControlNumber($number, $weights, $modulo, $subtract, $modulo > 10); - - if ($control_digit == -1) { - return false; - } - if ($target_digit === 'X' && $control_digit == 10) { - return true; - } - if ($control_digit != $target_digit) { - return false; - } - return true; - } - - /** - * Bulk data validation for data introduced in the form of an - * assoc array in the form $var_name => $value. - * Can be used on any of Validate subpackages - * - * @param array $data Ex: array('name' => 'toto', 'email' => 'toto@thing.info'); - * @param array $val_type Contains the validation type and all parameters used in. - * 'val_type' is not optional - * others validations properties must have the same name as the function - * parameters. - * Ex: array('toto'=>array('type'=>'string','format'='toto@thing.info','min_length'=>5)); - * @param boolean $remove if set, the elements not listed in data will be removed - * - * @return array value name => true|false the value name comes from the data key - * - * @access public - */ - function multiple(&$data, &$val_type, $remove = false) - { - $keys = array_keys($data); - $valid = array(); - - foreach ($keys as $var_name) { - if (!isset($val_type[$var_name])) { - if ($remove) { - unset($data[$var_name]); - } - continue; - } - $opt = $val_type[$var_name]; - $methods = get_class_methods('Validate'); - $val2check = $data[$var_name]; - // core validation method - if (in_array(strtolower($opt['type']), $methods)) { - //$opt[$opt['type']] = $data[$var_name]; - $method = $opt['type']; - unset($opt['type']); - - if (sizeof($opt) == 1 && is_array(reset($opt))) { - $opt = array_pop($opt); - } - $valid[$var_name] = call_user_func(array('Validate', $method), $val2check, $opt); - - /** - * external validation method in the form: - * "" - * Ex: us_ssn will include class Validate/US.php and call method ssn() - */ - } elseif (strpos($opt['type'], '_') !== false) { - $validateType = explode('_', $opt['type']); - $method = array_pop($validateType); - $class = implode('_', $validateType); - $classPath = str_replace('_', DIRECTORY_SEPARATOR, $class); - $class = 'Validate_' . $class; - if (Validate::_includePathFileExists("Validate/$classPath.php")) { - include_once "Validate/$classPath.php"; - } else { - trigger_error("$class isn't installed or you may have some permission issues", E_USER_ERROR); - } - - $ce = substr(phpversion(), 0, 1) > 4 ? - class_exists($class, false) : class_exists($class); - if (!$ce || - !in_array($method, get_class_methods($class)) - ) { - trigger_error("Invalid validation type $class::$method", - E_USER_WARNING); - continue; - } - unset($opt['type']); - if (sizeof($opt) == 1) { - $opt = array_pop($opt); - } - $valid[$var_name] = call_user_func(array($class, $method), - $data[$var_name], $opt); - } else { - trigger_error("Invalid validation type {$opt['type']}", - E_USER_WARNING); - } - } - return $valid; - } - - /** - * Determine whether specified file exists along the include path. - * - * @param string $filename file to search for - * - * @access private - * - * @return bool true if file exists - */ - function _includePathFileExists($filename) - { - $paths = explode(":", ini_get("include_path")); - $result = false; - - while ((!($result)) && (list($key,$val) = each($paths))) { - $result = file_exists($val . "/" . $filename); - } - return $result; - } -} - diff --git a/Validate/IR.php b/Validate/IR.php deleted file mode 100644 index 815926f..0000000 --- a/Validate/IR.php +++ /dev/null @@ -1,153 +0,0 @@ - - * @copyright 2011 Arash Hemmat - * @license http://www.opensource.org/licenses/bsd-license.php new BSD - * @link http://pear.php.net/package/Validate_IR - */ -class Validate_IR -{ - /** - * Check for Persian/Farsi characters and number an zero width non-joiner space. - * Also accpets latin numbers preventing potential problem until PHP becomes fully unicode compatible. - * - * @param string $check The value to check. - * - * @return boolean - * @access public - */ - function alphaNumeric($check) - { - $pattern = '/[^\x{0600}-\x{06FF}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}\x{0750}-\x{077F}0-9\s\x{200C}]+/u'; - return !preg_match($pattern, $check); - } - - /** - * Checks for Persian/Farsi digits only and won't accept Arabic and Latin digits. - * - * @param string $check The value to check. - * - * @return boolean - * @access public - */ - function numeric($check) - { - $pattern = '/[^\x{06F0}-\x{06F9}\x]+/u'; - return !preg_match($pattern, $check); - } - - /** - * Validation of Iran credit card numbers. - * - * @param string $check The value to check. - * - * @return boolean - * @access public - */ - function creditCard($check) - { - $pattern = '/^[0-9]{4}-?[0-9]{4}-?[0-9]{4}-?[0-9]{4}$/'; - return preg_match($pattern, $check); - } - - /** - * Checks phone numbers for Iran - * - * @param string $check The value to check. - * - * @return boolean - * @access public - */ - function phoneNumber($check) - { - $pattern = '/^[- .\(\)]?((98)|(\+98)|(0098)|0){1}[- .\(\)]{0,3}[1-9]{1}[0-9]{1,}[- .\(\)]*[0-9]{3,8}[- .\(\)]?$/'; - return preg_match($pattern, $check); - } - - /** - * Checks mobile numbers for Iran - * - * @param string $check The value to check. - * - * @return boolean - * @access public 0 9 124061351 - */ - function mobileNumber($check) - { - $pattern = '/^[- .\(\)]?((98)|(\+98)|(0098)|0){1}[- .\(\)]{0,3}((91)|(93)){1}[0-9]{8}$/'; - return preg_match($pattern, $check); - } - - /** - * Checks postal codes for Iran - * - * @param string $check The value to check. - * - * @return boolean - * @access public - */ - function postalCode($check) - { - $pattern = '/^\d{10}$/'; - return preg_match($pattern, $check); - } - - /** - * Checks social security numbers for Iran called "kode melli". - * kode melli's last digit from left is the check digit, here is the algorithm: - * A= last digit from left - * B= (first digit*10) + (2th digit*9) + ... (9th digit *2) - * C= B – (B/11)*11 - * if C==0 and A==0 OK - * if C==1 and A==1 OK - * if C>1 and A==(C-11) OK - * - * @param string $check The value to check. - * - * @return boolean - * @access public - */ - function ssn($check) - { - $pattern = '/^\d{10}$/'; - if (!preg_match($pattern, $check)) { - return false; - } - - $sum = 0; - $equivalent = 0; - - for ($i = 0; $i < 9; $i++) { - $sum += $check{$i} * (10 - $i); - if ($check{1} == $check{$i}) { - $equivalent++; - } - } - - if ($equivalent == 9) { - return false; - } - - $remaining = $sum % 11; - - if ($remaining <= 1) { - return (bool)($remaining == $check{9}); - } - - return (bool)((11 - $remaining) == $check{9}); - } -} diff --git a/Validate/IT.php b/Validate/IT.php deleted file mode 100644 index c57f720..0000000 --- a/Validate/IT.php +++ /dev/null @@ -1,540 +0,0 @@ - - * @copyright 2008 Jacopo Andrea Nuzzi - * @license http://www.opensource.org/licenses/bsd-license.php New BSD - * @version CVS: $Id$ - * @link http://pear.php.net/package/Validate_IT - */ - -/** - * Data validation class for Italy - * - * This class provides methods to validate: - * o Postal code - * (The italian CAP) - * o Telephone number (and prefix) - * o Mobile number (and prefix) - * o Regions (and regions code) - * o Cities (and cities code) - * o Fiscal code - * o Value Added Tax Identification Number (VATIN) - * (The italian Partita IVA) - * o Driver license - * - * @category Validate - * @package Validate_IT - * @author Jacopo Andrea Nuzzi - * @copyright 2008 Jacopo Andrea Nuzzi - * @license http://www.opensource.org/licenses/bsd-license.php New BSD - * @version Release: 0.2.0alpha - * @link http://pear.php.net/package/Validate_IT - */ -class Validate_IT -{ - /** - * Validate postal code - * (CAP - Codice d'Avviamento Postale) - * - * @param string $postalCode Postal code - * - * @static - * @access public - * @return bool true if postal code is ok - * @return bool false if postal code isn't correct - */ - function postalCode($postalCode) - { - $postalCode = trim($postalCode); - $postalCode = str_replace(' ', '', $postalCode); - - // Postal code has to be a number and has to be 5 characters long - return (bool)preg_match('/^[0-9]{5}$/', $postalCode); - } - - /** - * Validate phone number - * - * @param string $number Phone number - * - * @static - * @access public - * @return bool true if phone number is ok - * @return bool false if phone number isn't correct - */ - function phoneNumber($number) - { - // Erase spaces (and other symbols) and the state prefix "39" - $number = trim($number); - - // Erase chars contained in this array - $rchars = array(' ', '-', '/', '\\', '+39', '+0039'); - $number = str_replace($rchars, '', $number); - - // If the prefix is not correct return false - if (Validate_IT::phoneNumberPrefix($number) === false) { - return false; - } - - // Phone number has to be a number and has to be 8 to 10 characters long - return (bool)preg_match('/^[0-9]{8,10}$/', $number); - } - - /** - * Validate phone number prefix - * - * @param string $number Phone number prefix - * - * @static - * @access public - * @return bool true if prefix is ok - * @return bool false if prefix isn't correct - */ - function phoneNumberPrefix($number) - { - // Erase spaces (and other symbols) and the state prefix "39" - $number = trim($number); - - // Erase chars contained in this array - $rchars = array(' ', '-', '/', '\\', '+39', '+0039'); - $number = str_replace($rchars, '', $number); - - // Italian prefixes are not all equally long. - // They could be of 2, 3, 4 and 6 charachters - $prefix2 = str_repeat('0', 4) . substr($number, 0, 2); // 2 charachters - $prefix3 = str_repeat('0', 3) . substr($number, 0, 3); // 3 charachters - $prefix4 = str_repeat('0', 2) . substr($number, 0, 4); // 4 charachters - $prefix6 = substr($number, 0, 5); // 6 charachters - - // Prefixes array - $prefixes = array( - '004191', '000010', '000011', '000121', '000122', '000123', '000124', - '000125', '000131', '000141', '000142', '000143', '000144', '000015', - '000161', '000163', '000165', '000166', '000171', '000172', '000173', - '000174', '000175', '000182', '000183', '000184', '000185', '000187', - '000019', '000002', '000030', '000031', '000321', '000322', '000323', - '000324', '000331', '000332', '000341', '000342', '000343', '000344', - '000345', '000346', '000035', '000362', '000363', '000364', '000365', - '000371', '000372', '000373', '000374', '000375', '000376', '000377', - '000381', '000382', '000383', '000384', '000385', '000386', '000039', - '000040', '000041', '000421', '000422', '000423', '000424', '000425', - '000426', '000427', '000428', '000429', '000431', '000432', '000433', - '000434', '000435', '000436', '000437', '000438', '000439', '000442', - '000444', '000445', '000045', '000461', '000462', '000463', '000464', - '000465', '000471', '000472', '000473', '000474', '000481', '000049', - '000050', '000051', '000521', '000522', '000523', '000524', '000525', - '000532', '000533', '000534', '000535', '000536', '000541', '000542', - '000543', '000544', '000545', '000546', '000547', '000055', '000564', - '000565', '000566', '000571', '000572', '000573', '000574', '000575', - '000577', '000578', '000583', '000584', '000585', '000586', '000587', - '000588', '000059', '000006', '000700', '000071', '000721', '000722', - '000731', '000732', '000733', '000734', '000735', '000736', '000737', - '000742', '000743', '000744', '000746', '000075', '000761', '000763', - '000765', '000766', '000771', '000773', '000774', '000775', '000776', - '000781', '000782', '000783', '000784', '000785', '000789', '000079', - '000800', '000081', '000823', '000824', '000825', '000827', '000828', - '000831', '000832', '000833', '000835', '000836', '000085', '000861', - '000862', '000863', '000864', '000865', '000871', '000872', '000873', - '000874', '000875', '000881', '000882', '000883', '000884', '000885', - '000089', '000090', '000091', '000921', '000922', '000923', '000924', - '000925', '000931', '000932', '000933', '000934', '000935', '000941', - '000942', '000095', '000961', '000962', '000963', '000964', '000965', - '000966', '000967', '000968', '000971', '000972', '000973', '000974', - '000975', '000976', '000981', '000982', '000983', '000984', '000985', - '000099', - ); - // If the prefix has been found in array returns true otherwise false - if (in_array($prefix2, $prefixes) || - in_array($prefix3, $prefixes) || - in_array($prefix4, $prefixes) || - in_array($prefix6, $prefixes) - ) { - return true; - } - - return false; - } - - /** - * Validate mobile phone number - * - * @param string $number Mobile phone number - * - * @static - * @access public - * @return bool true if phone number is ok - * @return bool false if phone number isn't correct - */ - function mobilePhoneNumber($number) - { - // Erase spaces (and other symbols) and the state prefix "39" - $number = trim($number); - - // Erase chars contained in this array - $rchars = array(' ', '-', '/', '\\', '+39', '+0039'); - $number = str_replace($rchars, '', $number); - - // If the prefix is not correct return false - if (Validate_IT::mobilePhoneNumberPrefix($number) === false) { - return false; - } - - // Mobile phone number has to be a number and has to be 10 characters long - return (bool)preg_match('/^[0-9]{10}$/', $number); - } - - /** - * Validate mobile phone number prefix - * - * @param string $number Mobile phone number prefix - * - * @static - * @access public - * @return bool true if prefix is ok - * @return bool false if prefix isn't correct - */ - function mobilePhoneNumberPrefix($number) - { - // Erase spaces (and other symbols) and the state prefix "39" - $number = trim($number); - - // Erase chars contained in this array - $rchars = array(' ', '-', '/', '\\', '+39', '+0039'); - $number = str_replace($rchars, '', $number); - - // Get the prefix that has to be 3 charachters long - $prefix = substr($number, 0, 3); - - // Prefixes array - // - // 320 to 329, 380 to 389 WIND - // 330 to 339, 360 to 368 TIM - // 340 to 349 VODAFONE - // 390 to 393 H3G - $prefixes = array( - '320', '323', '327', '328', '329', '330', - '333', '334', '335', '336', '337', '338', - '339', '340', '343', '346', '347', '348', - '349', '360', '363', '366', '368', '380', - '383', '388', '389', '390', '391', '392', - '393' - ); - // If the prefix has been found in array returns true otherwise false - if (in_array($prefix, $prefixes)) { - return true; - } - - return false; - } - - /** - * Validate region code - * - * @param string $region Region code - * - * @static - * @access public - * @return bool true if region code is ok - * @return bool false if region code isn't correct - */ - function region($region) - { - $region = trim($region); - $region = strtoupper($region); - - // If region code isn't 3 charachters long returns false - if (!preg_match('/^[A-Z]{3}$/', $region)) { - return false; - } - - // Regions code array - $regionsCode = array( - 'ABR', 'BAS', 'CAL', 'CAM', 'EMR', 'FVG', 'LAZ', 'LIG', 'LOM', 'MAR', - 'MOL', 'PIE', 'PUG', 'SAR', 'SIC', 'TOS', 'TAA', 'UMB', 'VDA', 'VEN' - ); - // If the region code has been found in array returns true otherwise false - if (in_array($region, $regionsCode)) { - return true; - } - - return false; - } - - /** - * Validate region name - * - * @param string $region Region name - * - * @static - * @access public - * @return bool true if region is ok - * @return bool false if region isn't correct - */ - function regionName($region) - { - $region = trim($region); - $region = strtoupper($region); - - // Regions array - $regions = array( - 'ABRUZZO', 'BASILICATA', 'CALABRIA', 'CAMPANIA', 'EMILIA ROMAGNA', - 'FRIULI VENEZIA GIULIA', 'LAZIO', 'LIGURIA', 'LOMBARDIA', 'MARCHE', - 'MOLISE', 'PIEMONTE', 'PUGLIA', 'SARDEGNA', 'SICILIA', - 'TOSCANA', 'TRENTINO ALTO ADIGE', 'UMBRIA', 'VALLE D\'AOSTA', 'VENETO' - ); - // If the region has been found in array returns true otherwise false - if (in_array($region, $regions)) { - return true; - } - - return false; - } - - /** - * Validate city code - * - * @param string $city City code - * - * @static - * @access public - * @return bool true if city code is ok - * @return bool false if city code isn't correct - */ - function city($city) - { - $city = trim($city); - $city = strtoupper($city); - - // If city code isn't 2 charachters long returns false - if (!preg_match('/^[A-Z]{2}$/', $city)) { - return false; - } - - // Cities array - $cities = array( - 'AG', 'AL', 'AN', 'AO', 'AR', 'AP', 'AT', 'AV', - 'BA', 'BL', 'BN', 'BG', 'BI', 'BO', 'BZ', 'BS', - 'BR', 'CA', 'CL', 'CB', 'CI', 'CE', 'CT', 'CZ', - 'CH', 'CO', 'CS', 'CR', 'KR', 'CN', 'EN', 'FE', - 'FI', 'FG', 'FC', 'FR', 'GE', 'GO', 'GR', 'IM', - 'IS', 'SP', 'AQ', 'LT', 'LE', 'LC', 'LI', 'LO', - 'LU', 'MC', 'MN', 'MS', 'MT', 'VS', 'ME', 'MI', - 'MO', 'NA', 'NO', 'NU', 'OG', 'OT', 'OR', 'PD', - 'PA', 'PR', 'PV', 'PG', 'PU', 'PE', 'PC', 'PI', - 'PT', 'PN', 'PZ', 'PO', 'RG', 'RA', 'RC', 'RE', - 'RI', 'RN', 'RM', 'RO', 'SA', 'SS', 'SV', 'SI', - 'SR', 'SO', 'TA', 'TE', 'TR', 'TO', 'TP', 'TN', - 'TV', 'TS', 'UD', 'VA', 'VE', 'VB', 'VC', 'VR', - 'VV', 'VI', 'VT' - ); - // If the city code has been found in array returns true otherwise false - if (in_array($city, $cities)) { - return true; - } - - return false; - } - - /** - * Validate city name - * - * @param string $city City name - * - * @static - * @access public - * @return bool true if city is ok - * @return bool false if city isn't correct - */ - function cityName($city) - { - $city = trim($city); - $city = strtoupper($city); - - // Cities array - $cities = array( - 'AGRIGENTO', 'ALESSANDRIA', 'ANCONA', 'AOSTA', 'AREZZO', - 'ASCOLI PICENO', 'ASTI', 'AVELLINO', 'BARI', 'BELLUNO', - 'BENEVENTO', 'BERGAMO', 'BIELLA', 'BOLOGNA', 'BOLZANO', - 'BRESCIA', 'BRINDISI', 'CAGLIARI', 'CALTANISSETTA', 'CAMPOBASSO', - 'CARBONIA-IGLESIAS', 'CASERTA', 'CATANIA', 'CATANZARO', 'CHIETI', - 'COMO', 'COSENZA', 'CREMONA', 'CROTONE', 'CUNEO', - 'ENNA', 'FERRARA', 'FIRENZE', 'FOGGIA', 'FORL-CESENA', - 'FROSINONE', 'GENOVA', 'GORIZIA', 'GROSSETO', 'IMPERIA', - 'ISERNIA', 'LA SPEZIA', 'L\'AQUILA', 'LATINA', 'LECCE', - 'LECCO', 'LIVORNO', 'LODI', 'LUCCA', 'MACERATA', - 'MANTOVA', 'MASSA-CARRARA', 'MATERA', 'MEDIO CAMPIDANO', 'MESSINA', - 'MILANO', 'MODENA', 'NAPOLI', 'NOVARA', 'NUORO', - 'OGLIASTRA', 'OLBIA-TEMPIO', 'ORISTANO', 'PADOVA', 'PALERMO', - 'PARMA', 'PAVIA', 'PERUGIA', 'PESARO E URBINO', 'PESCARA', - 'PIACENZA', 'PISA', 'PISTOIA', 'PORDENONE', 'POTENZA', - 'PRATO', 'RAGUSA', 'RAVENNA', 'REGGIO CALABRIA', 'REGGIO EMILIA', - 'RIETI', 'RIMINI', 'ROMA', 'ROVIGO', 'SALERNO', - 'SASSARI', 'SAVONA', 'SIENA', 'SIRACUSA', 'SONDRIO', - 'TARANTO', 'TERAMO', 'TERNI', 'TORINO', 'TRAPANI', - 'TRENTO', 'TREVISO', 'TRIESTE', 'UDINE', 'VARESE', - 'VENEZIA', 'VERBANO-CUSIO-OSSOLA', 'VERCELLI', 'VERONA', - 'VIBO VALENTIA', 'VICENZA', 'VITERBO', - ); - // If the city has been found in array returns true otherwise false - if (in_array($city, $cities)) { - return true; - } - - return false; - } - - /** - * Validate fiscal code - * - * @param string $code Fiscal code - * - * @static - * @access public - * @return bool true if fiscal code is ok - * @return bool false if fiscal code isn't correct - * @link http://it.wikipedia.org/wiki/Codice_fiscale - */ - function fiscalCode($code) - { - $code = str_replace(' ', '', strtoupper(trim($code))); - - $numbers1 = 0; - $numbers2 = 0; - - // Array of values in not odd position - $numbers1Array = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', - '4' => '4', '5' => '5', '6' => '6', '7' => '7', - '8' => '8', '9' => '9', 'A' => '0', 'B' => '1', - 'C' => '2', 'D' => '3', 'E' => '4', 'F' => '5', - 'G' => '6', 'H' => '7', 'I' => '8', 'J' => '9', - 'K' => '10', 'L' => '11', 'M' => '12', 'N' => '13', - 'O' => '14', 'P' => '15', 'Q' => '16', 'R' => '17', - 'S' => '18', 'T' => '19', 'U' => '20', 'V' => '21', - 'W' => '22', 'X' => '23', 'Y' => '24', 'Z' => '25'); - - // Array of values in odd position - $numbers2Array = array('0' => '1', '1' => '0', '2' => '5', '3' => '7', - '4' => '9', '5' => '13', '6' => '15', '7' => '17', - '8' => '19', '9' => '21', 'A' => '1', 'B' => '0', - 'C' => '5', 'D' => '7', 'E' => '9', 'F' => '13', - 'G' => '15', 'H' => '17', 'I' => '19', 'J' => '21', - 'K' => '2', 'L' => '4', 'M' => '18', 'N' => '20', - 'O' => '11', 'P' => '3', 'Q' => '6', 'R' => '8', - 'S' => '12', 'T' => '14', 'U' => '16', 'V' => '10', - 'W' => '22', 'X' => '25', 'Y' => '24', 'Z' => '23'); - - // Division result array - $resultArray = array('0' => 'A', '1' => 'B', '2' => 'C', '3' => 'D', - '4' => 'E', '5' => 'F', '6' => 'G', '7' => 'H', - '8' => 'I', '9' => 'J', '10' => 'K', '11' => 'L', - '12' => 'M', '13' => 'N', '14' => 'O', '15' => 'P', - '16' => 'Q', '17' => 'R', '18' => 'S', '19' => 'T', - '20' => 'U', '21' => 'V', '22' => 'W', '23' => 'X', - '24' => 'Y', '25' => 'Z'); - - for ($i = 0; $i < 15; $i++) { - if (($i + 1) % 2 == 0) { - $numbers1 += $numbers1Array[$code{$i}]; - } else { - $numbers2 += $numbers2Array[$code{$i}]; - } - } - // Sum odd and not odd numbers and take the rest of the division - $controlLetter = $resultArray[(($numbers1 + $numbers2) % 26)]; - - // Italian fiscal code identify a person and it contains several details - // like first and second name, bitrh date and place. - // - // It has to be like this: XXX XXX 11X11 X111X without spaces. - // If it's not like that returns false - return (bool)preg_match('/' . - '([A-Z]+){6}' . - '([0-9]+){2}([A|B|C|D|E|H|L|M|P|R|S|T]+){1}([0-9]+){2}' . - '([A-Z]+){1}([0-9]+){3}([' . $controlLetter . ']+){1}' . - '/', $code); - } - - /** - * Validate Value Added Tax Identification Number (VATIN) - * Italian "Partita IVA" - * - * @param string $iva P.IVA - * - * @static - * @access public - * @return bool true if P.IVA is ok - * @return bool false if P.IVA isn't correct - * @link http://en.wikipedia.org/wiki/Value_added_tax_identification_number - * @link http://it.wikipedia.org/wiki/Partita_IVA - */ - function pIva($iva) - { - $iva = str_replace(' ', '', trim($iva)); - - // If the P.IVA isn't 11 charachters long and isn't a number returns false - if (!preg_match('!^([0-9]+){11}$!', $iva)) { - return false; - } - - // Get the length of the the code ($iva) - $length = strlen($iva); - $numbers1 = 0; - $numbers2 = 0; - for ($i = 0; $i <= $length; $i++) { - if (($i + 1) % 2 == 0) { - // Multiply not odd numbers - $num = ($iva{$i} * 2); - // If number is greater than 9 then here we have to subtract 9 - // to the number - if ($num > 9) { - $num -= 9; - } - - // Sum not odd numbers - $numbers1 += $num; - } else { - // Sum odd numbers - $numbers2 += $iva{$i}; - } - } - - // Sum the two numbers and divide to 10 - // If the result is zero rest then the P.IVA is correct - $op = (($numbers1 + $numbers2) / 10); - if (!preg_match('!\.!', $op)) { - return true; - } - - return false; - } - - /** - * Validate the driver license - * - * @param string $license Driver license - * - * @static - * @access public - * @return bool true if driver license is ok - * @return bool false if driver license isn't correct - */ - function driverLicense($license) { - $license = strtoupper(trim($license)); - - return (bool)preg_match('/^([A-Z]+){2}([0-9]+){7}([A-Z]+){1}$/', $license); - } -} -?> \ No newline at end of file diff --git a/Validate/LV.php b/Validate/LV.php deleted file mode 100644 index 035b606..0000000 --- a/Validate/LV.php +++ /dev/null @@ -1,221 +0,0 @@ - - * @copyright 2006 Vide Infra Grupa SIA - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version 1.1 $id: $ - * @link http://pear.php.net/package/Validate_LV - */ - -/** - * Data validation class for Latvia - * - * This class provides methods to validate: - * - VAT number - * - Registration number - * - Swift code - * - Telephone number - * - Person ID - * - IBAN Bank account number for Latvian Banks - * - Postal code - * - Passport - * - Person name - * - */ -class Validate_LV { - /** - * Validates VAT number of an organization - * - * @access public - * @param string The VAT number to be validated - * @return bool - */ - function vatNumber($vat) { - return preg_match('/^LV\d{11}$/i', $vat); - } - - /** - * Validates registration number of an organization - * - * @access public - * @param string The registration number to be validated - * @return bool - */ - function registrationNumber($regNr) { - return preg_match('/^\d{11}$/', $regNr); - } - /** - * Validates Latvian bank SWIFT code - * e.g. AIZKLV22 - * - * @access public - * @param string The swift code to be validated - * @return bool - */ - function swift($swift) { - return preg_match('/^[a-z0-9]{4}LV[a-z0-9]{2}$/i', $swift); - } - - /** - * Validates phone number - * Latvian phone code is +371 - * Phone number without country code consists of 7 or 8 digits - * - * @access public - * @param string The phone number to be validated - * @return bool - */ - function phoneNumber($number) { - $number = str_replace(array ( - '(', - ')', - '-', - '.', - ' ' - ), '', $number); - return preg_match('/^(\+371)?[\d]{7,8}$/', $number); - } - - /** - * Validate latvian person Id (latvian social security number) - * e.g. 111111-11111 is valid person id for person born in November 11th 1911. - * The last digit serves as checkdigit - * - * @access public - * @param string The person id to be validated - * @return bool - */ - function personId($personId) { - - // Checking pattern - if (!preg_match('/^\d{6}-[1-9]\d{4}$/', $personId)) - return false; - $personId = str_replace('-', '', $personId); - - // Century '20' isn't picked ocasionaly: - // It's because we can't know century and 2000 year is leap, but 1900 isn't - // (in 2000 there is the February 29th, in 1900 isn't) - // In fact everything between 4 and 324 would match - $validDate = checkdate(substr($personId, 2, 2), substr($personId, 0, 2), '20' . substr($personId, 4, 2)); - if (!$validDate) - { - return false; - } - - - // Checking last digit - $mult = Array ( - 1, - 6, - 3, - 7, - 9, - 10, - 5, - 8, - 4, - 2, - 1 - ); - $sum = 0; - for ($i = 0; $i < 11; $i++) { - $sum += $mult[$i] * $personId { - $i }; - } - return $sum % 11 == 1; - } - - /** - * Validate latvian account number - * - * @access public - * @param string The account number to be validated - * @return bool - */ - function IBAN($iban, $swift = false) { - if ($swift) { - $swift = substr($swift, 0, 4); - if (substr($iban, 4, 4) != $swift) { - return false; - } - } - $iban = strtoupper($iban); - if (!preg_match('/^LV[0-9]{2}[A-Z]{4}[0-9A-Z]{13}$/', $iban)) - return false; - $iban = substr($iban, 4) . substr($iban, 0, 4); - $sNew = ''; - for ($i = 0; $i < 21; $i++) { - $digit = $iban { - $i }; - $code = ord($digit); - if ($code > 64 && $code < 91) - $digit = $code -55; - $sNew = $sNew . $digit; - $sNew = (int) $sNew % 97; - if ($sNew == 0) - $sNew = ''; - } - return ($sNew == 1); - } - - /** - * Validate Latvian postcode - * e.g. LV-1004 - * - * @access public - * @param string the postcode to be validated - * @return bool - */ - function postalCode($postcode) { - $postcode = strtoupper(str_replace(' ', '', $postcode)); - return preg_match('/^LV-[1-9]\d{3}$/', $postcode); - } - - /** - * Validates a Latvian passport number - * e.g. LF321654741 - * - * @access public - * @param string - * @return bool - */ - function passport($passportNumber) { - return preg_match('/^[a-z]{2}[0-9]{7}$/i', $passportNumber); - } - - /** - * Validates a Latvian person name - * First letter must be uppercase - * Can contain latin letters, latvian standart letters, symbols ' ' and '-' - * e.g. Jānis Kārkliņš - * - * @access public - * @param string - * @param integer - * @return bool - */ - function personName($name, $length = 50) { - $length--; - return preg_match('/^([A-Z]|Ē|Ū|Ī|Ā|Š|Ģ|Ķ|Ļ|Ž|Č|Ņ)[a-zA-ZēūīāšģķļžčņĒŪĪĀŠĢĶĻŽČŅ -]{1,'.$length.'}$/',$name); - } - -} -?> diff --git a/Validate/NZ.php b/Validate/NZ.php deleted file mode 100644 index 1e843ca..0000000 --- a/Validate/NZ.php +++ /dev/null @@ -1,361 +0,0 @@ - - * @copyright 2006 Byron Adams - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id$ - * @link http://pear.php.net/package/Validate_NZ - */ - -/** - * Data validation class for New Zealand - * - * This class provides methods to validate: - * - * - IRD numbers - * - Regional codes - * - Telephone number - * - Postal code - * - Bank AC - * - Car Registration - * - * @category Validate - * @package Validate_NZ - * @author Byron Adams - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/Validate_NZ - */ -class Validate_NZ -{ - /** - * Validate New Zealand postal codes - * - * @param string $postcode postcode to validate - * @param bool $strong optional; strong checks against a list of - * postcodes - * - * @static array $postcodes - * @return bool The valid or invalid postal code - * @link www.nzpost.co.nz/nzpost/images/addressing.nzpost/pdfs/postcodedirectory_nomaps.pdf - * @access public - */ - function postalCode($postcode, $strong = false, $dataDir = null) - { - if (!ctype_digit($postcode)) { - return false; - } - - if ($strong) { - static $postcodes; - - if (!isset($postcodes)) { - if ($dataDir != null && (is_file($dataDir . '/NZ_postcodes.txt'))) { - $file = $dataDir . '/NZ_postcodes.txt'; - } else { - $file = '@DATADIR@/Validate_NZ/data/NZ_postcodes.txt'; - } - $postcodes = array_map('trim', file($file)); - } - - return in_array((string)$postcode, $postcodes, true); - } - - return preg_match('/^[0-9]{4}$/', $postcode); - } - /** - * Validates a New Zealand IRD Number (ssn equiv) - * - * recently the format has changed to having a - * prefix of 0, this will work with both new and old IRD numbers. - * - * @param string $ssn IRD number to validate - * - * @access public - * @return bool The valid or invalid ird number - * - * @link www.ird.govt.nz/resources/file/eb70020dbbadb13/rwt-nrwt-spec-2006.pdf - */ - function ssn($ssn) - { - $ssn = str_replace(array("-", " ", "."), "", trim($ssn)); - if (!ctype_digit($ssn)) { - return false; - } - switch (strlen($ssn)) { - case 8: - return Validate_NZ::checkIRD($ssn); - break; - case 9: - if ($ssn{0} == "0") { - return Validate_NZ::checkIRD($ssn); - } - break; - } - return false; - } - /** - * Validates a New Zealand Regional Code - * - * @param string $region regional code to validate - * - * @access public - * @static array $regions - * @return bool The valid or invalid regional code - * @link www.google.com/apis/adwords/developer/adwords_api_regions.html - */ - function region($region) - { - static $regions = array("AUK", "BOP", "CAN", "GIS", "HKB", "MBH", "MWT", - "NSN", "NTL", "OTA", "STL", "TAS", "TKI", "WGN", - "WKO", "WTC"); - return in_array(strtoupper($region), $regions); - } - /** - * Validates a New Zealand phone number - * - * This function validates all New Zealand phone numbers - * checks for landline,0800,0900,0508,021,027 and 025 numbers - * allows for various combinations with spaces dashes and parentheses. - * - * @param string $number the number to validate - * @param bool $requireAreaCode Optional (default: true) - * - * @see http://en.wikipedia.org/wiki/Telephone_numbers_in_New_Zealand - * @access public - * @static array $servicePrefix, $mobilePrefix - * @return bool The valid or invalid phone number - */ - function phoneNumber($number, $requireAreaCode = true) - { - $servicePrefix = array("0800", "0900", "0508"); - - $areaCodes = array("024099", // for the Scott Base in the Ross Dependency - "03", // for the South Island and the Chatham Islands - "04", // for the Wellington Region to Kapiti, but not the Wairarapa and Otaki - "06", // for the he remaining southern and eastern North Island including Taranaki, Manawatu-Wanganui (excluding Taumarunui), Hawke's Bay, Gisborne, the Wairarapa, and Otaki - "07", // for the Waikato, the Bay of Plenty and Taumarunui - "09", // for Auckland and Northland - ); - - // Remove non-numeric characters that we still accept - $number = str_replace(array("+", " ", "(", ")", "-",), "", trim($number)); - - // Sanity check - if (!ctype_digit($number)) { - return false; - } - - // http://en.wikipedia.org/wiki/Telephone_numbers_in_New_Zealand#Mobile_Phones - $mobilePrefix = array("orcon" => "020", // Orcon - "vodafone" => "021", // Vodafone; 6-8 digits - "2degrees" => "022", // 2degrees; 7 digits; 2degrees was launched in August 2009. - "telstraClear_unused" => "023", // Unused; Owned by TelstraClear - "expansion" => "024", // Unused; Protected by Management Committee 30.01.09 to preserve the potential code expansion option. - "telecomNZ_deprecated" => "025", // Was used by Telecom New Zealand until it was shut down on 31 March 2007. All numbers have now migrated to 027 (7-digit) and 0274 (6-digit). - "telecomNZ" => "027", // Telecom New Zealand; 7 digits - "compass" => "0280", // Compass Communications - "callPlus" => "028", // CallPlus or BLACK + WHITE - "teletraders" => "0283", // Teletraders MVNO - "m2" => "02885", // M2 MVNO - "airnet" => "02896", // Airnet NZ Ltd - "telstraClear" => "029", // TelstraClear - ); - - // Is it a mobile number? - foreach ($mobilePrefix as $provider => $prefix) { - // Does it start with a recognised provider prefix? - if (substr($number, 0, strlen($prefix)) != $prefix) { - continue; - } - // Is it the Scott base / Ross Dependency? - if (substr($number, 0, 6) == '024099') { - continue; - } - - switch ($provider) { - // Vodafone; 6-8 digits - case 'vodafone': - if (preg_match('/^021[0-9]{6,8}$/', $number)) { - return true; - } - break; - // 2degress; 7 digits - case '2degrees': - if (preg_match('/^022[0-9]{7}$/', $number)) { - return true; - } - break; - - // These providers offer numbers with 02, then 7-9 digits - case 'orcon': - case 'compass': - case 'callPlus': - case 'teletraders': - case 'm2': - case 'airnet': - case 'telstraClear': - case 'telecomNZ': - if (preg_match('/^02[0,7,8,9][0-9]{6,8}$/', $number)) { - return true; - } - break; - - // These providers aren't valid as of 1/03/2011 - case 'expansion': - case 'telstraClear_unused': - case 'telecomNZ_deprecated': - break; - } - } - - // Is it a service number of some type? - if (in_array(substr($number, 0, 4), $servicePrefix)) { - // Is 0800,0900 or 0508 number - if (preg_match("(^0(8|9|5)0(0|8)[0-9]{6}$)", $number)) { - return true; - } - } - - // Is 0800 with 7 digits? - if (substr($number, 0, 4) == '0800') { - if (preg_match("(^0800[0-9]{7}$)", $number)) { - return true; - } - } - - // Is it a general landline of some type? - foreach ($areaCodes as $prefix) { - // Does it start with a recognised area prefix? - if (substr($number, 0, strlen($prefix) != $prefix)) { - continue; - } - - if (!$requireAreaCode) { - // Is land line w/o area code - if (preg_match("(^[0-9]{7}$)", $number)) { - return true; - } - } else { - // Is land line with area code - if (preg_match("(^0(3|4|6|7|9)[0-9]{7}$)", $number)) { - return true; - } - } - } - - // Is land line with country code - if (substr($number, 0, 3) == "640") { - if (preg_match("(^640(3|4|6|7|9)[0-9]{7})", $number)) { - return true; - } - } - - return false; - } - /** - * Validates a New Zealand Bank Account Number - * - * This function checks wheather the given value - * is a valid New Zealand bank account number. - * allows several formats. - * - * @param string $bankcode number to validate - * - * @access public - * @return bool The valid or invalid Bank Account Number - */ - function bankCode($bankcode) - { - $bankcode = str_replace(array("-", " ", "."), '', trim($bankcode)); - return (ctype_digit($bankcode) && strlen($bankcode) == 15); - } - /** - * Validates a New Zealand Vehicle license plates - * - * This function checks wheather the given value - * is a valid New Zealand Vehicle license plate - * - * 6 characters for cars or trucks and - * 5 characters for motorbikes and trailors - * - * @param string $reg string to validate - * - * @access public - * @return bool The valid or invalid license plate number - */ - function carReg($reg) - { - $reg = trim($reg); - return (ctype_alnum($reg) && - !ctype_alpha($reg) && - !ctype_digit($reg) && - in_array(strlen($reg), array("6", "5"))); - } - /** - * Return true if the checksum[s] in the specified value is valid as - * regards the value being a valid IRD number. - * - * @param string $ssn Value to perform the validation on - * - * @access public - * @return boolean - */ - function checkIRD($ssn) - { - $ird = (int) str_replace("-", "", $ssn); - if (strlen("$ird") == 8 ) { - //should be 8 characters in length: converting to int drops leading zero. - if ($ird < 10000000) { - return false; - } - $weights = array(2,7,6,5,4,3,2); - $sird = "$ird"; - $sum = 0; - for ($i = 0; $i < 7; ++$i) { - $sum += $sird[$i] * $weights[$i]; - } - $remainder = ($sum%11); - $checkdigit = 11 - $remainder; - if ($sird[7] == $checkdigit) { - return true; - } - if ($checkdigit == 10) { - $weights = array(4,3,2,5,2,7,6); - $sum = 0; - for ($i = 0; $i < 7; ++$i) { - $sum += $sird[$i] * $weights[$i]; - } - $remainder = ($sum%11); - $checkdigit = 11 - $remainder; - if ($checkdigit == 10) { - return false; - } - return ($sird[7] == $checkdigit); - } - } - return false; - } -} diff --git a/Validate/World.php b/Validate/World.php deleted file mode 100644 index bf134b8..0000000 --- a/Validate/World.php +++ /dev/null @@ -1,240 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -/** - * A wrapper to call common local Validate methods - * - * @category Validate - * @package Validate_World - * @author Bertrand Gugger - * @copyright 2007-2007 Bertrand Gugger - * @license http://www.opensource.org/licenses/bsd-license.php new BSD - * @version CVS: $Id$ - * @link http://pear.php.net/package/Validate_World - */ - -/** -* The value returned when nation class or method does not exists -*/ -if (!defined('VALIDATE_WORLD_DEFAULT')) { - define('VALIDATE_WORLD_DEFAULT', 1); -} - -/** - * Worldwide data validation class for installed locals - * - * This class provides methods to validate, if implemented by the local package: - * - Identity number - * - Social insurance number (ssn) - * - Postal code - * - Region - * - Phone number - * - * Any of these functions takes as first argument the nation code - * then the data to check and method/nation depending extra arguments - * (following each nation implementation) - * - * If nation Validate_XX package is installed and method is available - * methods return an actual boolean, else VALIDATE_WORLD_DEFAULT default to 1 - * so, the check is weak by default, but 1 indicates it's this default - * false or true indicate that the check was actually run - * - * To set the check as bad if nation method is unavailable, define it to 0 as - * define('VALIDATE_WORLD_DEFAULT', 0); // please dont use false here - * - * - * @category PHP - * @package Validate - * @subpackage Validate_World - * @author Bertrand Gugger - * @copyright 2007-2007 Bertrand Gugger - * @license http://www.opensource.org/licenses/bsd-license.php new BSD - * @version Release: @package_version@ - * @link http://pear.php.net/package/Validate_World - */ -class Validate_World -{ - /** - * Validate a personal identity number - * Formerly mixed with ssn, social security number, - * but some nations make the distinction - * - * @param string $nationCode nation code - * @param string $pin national identity number to check - * @param mixed optionnal extra parameters depending on the implementation - * @return mixed bool if method available: data is valid - * number if method unavailable - * @access public - * @static - */ - function pin($nationCode, $pin) - { - // some packages have national signifiant function names - static $compat = array( 'BE' => 'nationalId', - 'esMX' => 'dni', - 'ES' => 'dni', - 'FI' => 'pin', - 'IE' => 'passport', - 'LV' => 'personId', - 'PL' => 'pesel'); - - // we keep the behaviour to default to ssn - $fun = isset($compat[$nationCode]) ? $compat[$nationCode] : 'ssn'; - return Validate_World::check($fun, func_get_args()); - } - - /** - * Validate a social insurance (or security) number - * - * @param string $nationCode nation code - * @param string $ssn national identity number to check - * @param mixed optionnal extra parameters depending on the implementation - * @return mixed bool if method available: data is valid - * number if method unavailable - * @access public - * @static - */ - function ssn($nationCode, $ssn) - { - // some packages have national signifiant function names - static $compat = array('esMX' => 'dni', - 'ES' => 'dni', - 'FI' => 'pin', - 'IE' => 'ppsn', - 'LV' => 'personId', - 'PL' => 'pesel'); - - $fun = isset($compat[$nationCode]) ? $compat[$nationCode] : 'ssn'; - return Validate_World::check($fun, func_get_args()); - } - - /** - * Validates a postal code format - * - * @param string $nationCode nation code - * @param string $postalCode postal code to check - * @param mixed optionnal extra parameters depending on the implementation - * @return mixed bool if method available: data is valid - * number if method unavailable - * @access public - * @static - */ - function postalCode($nationCode, $postalCode) - { - return Validate_World::check('postalCode', func_get_args()); - } - - /** - * Validate a region code as US states, french departements, etc. - * - * @param string $nationCode nation code - * @param string $region region code to check - * @param mixed optionnal extra parameters depending on the implementation - * @return mixed bool if method available: data is valid - * number if method unavailable - * @access public - * @static - */ - function region($nationCode, $region) - { - return Validate_World::check('region', func_get_args()); - } - - /** - * Validates a phone number - * - * @param string $nationCode nation code - * @param string $phoneNumber phone number to check - * @param mixed optionnal extra parameters depending on the implementation - * @return mixed bool if method available: data is valid - * number if method unavailable - * @access public - * @static - */ - function phoneNumber($nationCode, $phoneNumber) - { - return Validate_World::check('phoneNumber', func_get_args()); - } - - /** - * Abstract method to call the national Validate methods - * - * @param string $what method to call - * @param array $args nation code followed by method's own arguments - * @return mixed bool if method available: data is valid - * number if method unavailable - * @access public - * @static - */ - function check($what, $args) - { - static $nations = array(); - $nationCode = array_shift($args); - if (!isset($nations[$nationCode])) { - $nations[$nationCode] = is_readable(dirname(__FILE__) . - DIRECTORY_SEPARATOR . $nationCode . '.php') - && require_once 'Validate' . DIRECTORY_SEPARATOR . $nationCode . '.php'; - } - - if (!$nations[$nationCode] || !method_exists( - $class = 'Validate' . '_' . $nationCode, $what)) - { - return VALIDATE_WORLD_DEFAULT; - } - - return (bool) call_user_func_array(array($class, $what), $args); - } - - /** - * Lists available locales for Validate - * - * @param mixed string/array of strings $locale - * Optional searched locale code(s). - * If not present: all available locales. - * - * @return array The available locales (optionaly only the requested ones) - * - * @access public - * @static - */ - function getLocales($locale = null) - { - static $last = ''; - static $ret = null; - if ($locale === $last and isset($ret)) { - return $ret; - } - $last = $locale; - $ret = array(); - if (!empty($locale) && is_string($locale)) { - $locale = array($locale); - } - $dh = opendir(dirname(__FILE__)); - if ($dh) { - while ($fname = readdir($dh)) { - if (preg_match('#^([A-Z]{2}[a-z_]*)\.php$#i', $fname, $matches)) { - if (is_file($dname . $fname) && is_readable($dname . $fname) && - (empty($locale) || in_array($matches[1], $locale))) { - $ret[] = $matches[1]; - } - } - } - closedir($dh); - sort($ret); - } - return $ret; - } -} diff --git a/Validate/esMX.php b/Validate/esMX.php deleted file mode 100644 index b2ef45a..0000000 --- a/Validate/esMX.php +++ /dev/null @@ -1,297 +0,0 @@ - - * @copyright 2006 The PHP Group - * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 - * @version CVS: $Id$ - * @link http://pear.php.net/package/Validate_esMX - */ - -/** - * Data validation class for Mexico - * - * This class provides methods to validate: - * - DNI - Nacional Identity document (aka CURP) - * - Postal code - * - Region (states) - * - Phone numbers - * - * @category Validate - * @package Validate_EsMX - * @author Pablo Fischer - * @copyright 2006 The PHP Group - * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 - * @version Release: @package_version@ - * @link http://pear.php.net/package/Validate_esMX - */ -class Validate_EsMX -{ - /** - * Validates a postal code - * - * Validates the given postal code in two ways: - * - * - Check that the postal code really exists. It uses a file where - * all postal codes are. - * - Doing a simple regexp: postal codes should be formed of 5 numbers. - * - * @param int $postalCode Postal code to validate - * @param bool $strongCheck True = It uses a file and checks that the - * postal code exists (Default) - * False = It uses a regexp to do the validation. - * @param string $dir Optional; /path/to/data/dir - * - * @access public - * @return bool Passed / Not passed - */ - function postalCode($postalCode, $strongCheck = false, $dir = null) - { - if ($strongCheck) { - static $postalCodes; - - if (!isset($postalCodes)) { - if ($dir != null && (is_file($dir . '/esMX_postcodes.txt'))) { - $file = $dir . '/esMX_postcodes.txt'; - } else { - $file = '@DATADIR@/Validate_esMX/esMX_postcodes.txt'; - } - - if (!file_exists($file)) { - return false; - } - $postalCodes = file($file, FILE_IGNORE_NEW_LINES); - } - if (!is_array($postalCodes)) { - return false; - } - return in_array((int)$postalCode, $postalCodes); - } - return (bool)preg_match('/^[0-9]{5}$/', $postalCode); - } - - /** - * Validates the DNI (CURP) - * - * It uses the following explanation: - * - * http://web2.tramitanet.gob.mx/info/curp/gifs/ayuda.gif - * - * @param string $dni The CURP code - * - * @access public - * @return bool Passed / Not passed - */ - function dni($dni) - { - $dns = strtoupper($dni); - //Clean it - $dni = str_replace(array('-', ' '), '', $dni); - //How big is it? - if (strlen($dni) !== 18) { - return false; - } - $regexp = '/^([A-Z][AEIOU][A-Z]{2})([0-9]{2})(0?[1-9]|1[0-2])'. - '(0[1-9]|[1-2][0-9]|3[0-1])(H|M)([A-Z]{2})'. - '([B-DF-HJ-NP-TV-Z]{3})([0-9]|[A-Z])([0-9]|[A-Z])/i'; - if (preg_match($regexp, $dni, $matches) === 1) { - //Check the region. - if (isset($matches[6])) { - //Not a state or NE (foreign) - if ($matches[6] != 'NE' && !Validate_esMX::region($matches[6])) { - return false; - } - } else { - return false; - } - - //Unique key - if (isset($matches[8]) && isset($matches[2])) { - if ((int)$matches[2]{0} == 0) { //On 2000 - if (!preg_match('/^[A-Z]/i', $matches[8])) { - //If born in 2000 the unique key should be a letter. - return false; - } - } else { - if (!preg_match('/^[0-9]/i', $matches[8])) { - return false; - } - } - } else { - return false; - } - - if (isset($matches[9])) { - //There's no sense in continue the process if $dni is < 17 chars - if (strlen($dni) < 17) { - return false; - } - //CURP algorithm to get the digitVerifier. - $algChar = ''; - $curpVerifier = ''; - $counterDigit = ''; - $l_digito = ''; - $l_posicion = ''; - $digitModule = ''; - $digitVerifier = ''; - $combinations = '0123456789ABCDEFGHIJKLMN-OPQRSTUVWXYZ*'; - $combinationsValues = explode(',', '00,01,02,03,04,05,06,07,08,09'. - ',10,11,12,13,14,15,16,17,18,19,20,'. - '21,22,23,24,25,26,27,28,29,30,31,'. - '32,33,34,35,36,37'); - for ($i=0; $i -1) { - $curpVerifier = $curpVerifier . - $combinationsValues[$combinationPos]; - } else { - $curpVerifier = $curpVerifier . '00'; - } - } - - for ($i=1; $i 1) { - $digitVerifier = substr($digitVerifier, -1); - } - - if ($digitVerifier != $matches[9]) { - return false; - } - } else { - return false; - } - } else { - return false; - } - return true; - } - - /** - * Validates a "region" (aka state) code - * - * @param string $region Region/State code - * - * @access public - * @return bool Passed / Not passed - */ - function region($region) - { - switch (strtoupper($region)) { - case 'AS': //Aguascalientes - case 'BC': //Baja California - case 'BS': //Baja California Sur - case 'CC': //Campeche - case 'CL': //Coahuila - case 'CM': //Colima - case 'CS': //Chiapas - case 'CH': //Chihuahua - case 'DF': //Distrito Federal - case 'DG': //Durango - case 'GT': //Guanajuato - case 'GR': //Guerrero - case 'HG': //Hidalgo - case 'JC': //Jalisco - case 'MC': //Mexico - case 'MN': //Michoacn - case 'MS': //Morelos - case 'NT': //Nayarit - case 'NL': //Nuevo Len - case 'OC': //Oaxaca - case 'PL': //Puebla - case 'QT': //Quertaro - case 'QR': //Quintana Roo - case 'SP': //San Luis Potos - case 'SL': //Sinaloa - case 'SR': //Sonora - case 'TC': //Tabasco - case 'TS': //Tamaulipas - case 'TL': //Tlaxcala - case 'VZ': //Veracruz - case 'YN': //Yucatn - case 'ZS': //Zacatecas - return true; - } - return false; - } - - /** - * Check that the given telephone number is valid. - * - * According to COFETEL (Comision Federal de Telecomunicaciones) the telephone - * numbers can have 7 or 8 digits. Only 3 states can have 8 digit numbers, - * which are: Distrito Federal, Guadalajara and Monterrey. Others need - * to have 7 digits. - * - * In the case of a required area code the required length should be 12 - * (including the 01). This is for all states. - * - * @param string $phone Phone number - * @param bool $requireAreaCode require the area code? (default: true) - * - * @access public - * @return bool Passed / Not passed - */ - function phone($phone, $requireAreaCode = true) - { - return Validate_esMX::phoneNumber($phone, $requireAreaCode); - } - - /** - * Check that the given telephone number is valid. - * - * According to COFETEL (Comision Federal de Telecomunicaciones) the telephone - * numbers can have 7 or 8 digits. Only 3 states can have 8 digit numbers, - * which are: Distrito Federal, Guadalajara and Monterrey. Others need - * to have 7 digits. - * - * In the case of a required area code the required length should be 12 - * (including the 01). This is for all states. - * - * @param string $phone Phone number - * @param bool $requireAreaCode Require the area code? (default: true) - * - * @access public - * @return bool Passed / Not passed - */ - function phoneNumber($phone, $requireAreaCode = true) - { - $phone = str_replace(array('(', ')', '-', '+', '.', ' '), '', $phone); - if ($requireAreaCode) { - $regexp = '/^01[0-9]{10}$/'; - $match = (preg_match($regexp, $phone)) ? true : false; - return $match; - } else { - $regexp = '/^[0-9]{7,8}$/'; - $match = (preg_match($regexp, $phone)) ? true : false; - return $match; - } - } -} diff --git a/data/NZ_postcodes.txt b/data/NZ_postcodes.txt deleted file mode 100644 index e3e98fd..0000000 --- a/data/NZ_postcodes.txt +++ /dev/null @@ -1,987 +0,0 @@ -0110 -0112 -0114 -0116 -0118 -0170 -0171 -0172 -0173 -0174 -0175 -0176 -0178 -0179 -0181 -0182 -0184 -0185 -0192 -0193 -0200 -0202 -0204 -0210 -0211 -0230 -0272 -0281 -0282 -0283 -0293 -0294 -0295 -0310 -0370 -0371 -0372 -0373 -0374 -0376 -0377 -0379 -0381 -0391 -0405 -0410 -0420 -0472 -0473 -0474 -0475 -0476 -0478 -0479 -0481 -0482 -0483 -0484 -0486 -0491 -0492 -0494 -0496 -0505 -0510 -0520 -0530 -0571 -0573 -0582 -0583 -0587 -0588 -0589 -0591 -0592 -0593 -0594 -0600 -0602 -0604 -0610 -0612 -0614 -0618 -0620 -0622 -0624 -0626 -0627 -0629 -0630 -0632 -0772 -0781 -0782 -0792 -0793 -0794 -0800 -0810 -0812 -0814 -0820 -0830 -0871 -0873 -0874 -0875 -0881 -0882 -0883 -0891 -0892 -0900 -0910 -0920 -0930 -0931 -0932 -0972 -0973 -0974 -0975 -0977 -0981 -0982 -0983 -0984 -0985 -0986 -0991 -0992 -0993 -0994 -1010 -1011 -1021 -1022 -1023 -1024 -1025 -1026 -1041 -1042 -1050 -1051 -1052 -1060 -1061 -1062 -1071 -1072 -1081 -1971 -2010 -2012 -2013 -2014 -2016 -2018 -2022 -2023 -2024 -2025 -2102 -2103 -2104 -2105 -2110 -2112 -2113 -2120 -2121 -2122 -2123 -2471 -2472 -2473 -2474 -2571 -2576 -2577 -2578 -2579 -2580 -2582 -2583 -2584 -2585 -2675 -2676 -2677 -2678 -2679 -2681 -2682 -2683 -2684 -2693 -2694 -2695 -2696 -2697 -3010 -3015 -3020 -3025 -3072 -3073 -3074 -3076 -3077 -3078 -3079 -3081 -3083 -3096 -3097 -3114 -3119 -3120 -3121 -3122 -3123 -3127 -3129 -3171 -3172 -3173 -3176 -3177 -3178 -3182 -3183 -3186 -3187 -3188 -3189 -3191 -3192 -3193 -3194 -3196 -3197 -3198 -3199 -3200 -3204 -3206 -3210 -3214 -3216 -3218 -3225 -3281 -3282 -3283 -3284 -3285 -3286 -3287 -3288 -3289 -3290 -3293 -3295 -3296 -3297 -3330 -3332 -3334 -3377 -3378 -3379 -3381 -3382 -3410 -3411 -3415 -3420 -3421 -3432 -3434 -3481 -3482 -3483 -3484 -3485 -3491 -3492 -3493 -3494 -3495 -3496 -3503 -3574 -3576 -3597 -3600 -3610 -3611 -3671 -3672 -3673 -3674 -3681 -3682 -3700 -3710 -3720 -3721 -3771 -3772 -3781 -3782 -3784 -3791 -3792 -3793 -3794 -3800 -3802 -3803 -3872 -3873 -3874 -3875 -3876 -3877 -3878 -3879 -3880 -3881 -3882 -3883 -3885 -3886 -3889 -3894 -3895 -3900 -3910 -3912 -3920 -3924 -3926 -3970 -3971 -3972 -3973 -3974 -3975 -3976 -3977 -3978 -3979 -3980 -3981 -3982 -3983 -3985 -3986 -3987 -3988 -3989 -3990 -3991 -3992 -3993 -3994 -3995 -3996 -3997 -3998 -4010 -4022 -4032 -4071 -4072 -4073 -4075 -4077 -4078 -4079 -4081 -4082 -4083 -4086 -4087 -4091 -4092 -4093 -4094 -4102 -4104 -4108 -4110 -4112 -4120 -4122 -4130 -4171 -4172 -4174 -4175 -4178 -4179 -4181 -4182 -4183 -4184 -4186 -4188 -4189 -4191 -4193 -4195 -4196 -4197 -4198 -4294 -4310 -4312 -4314 -4320 -4322 -4330 -4332 -4335 -4371 -4372 -4373 -4374 -4375 -4376 -4377 -4378 -4379 -4381 -4382 -4383 -4386 -4387 -4388 -4389 -4390 -4391 -4392 -4393 -4394 -4395 -4396 -4397 -4398 -4399 -4410 -4412 -4414 -4470 -4471 -4473 -4474 -4475 -4476 -4477 -4478 -4479 -4481 -4500 -4501 -4510 -4520 -4571 -4572 -4573 -4574 -4575 -4576 -4577 -4578 -4581 -4582 -4584 -4585 -4586 -4587 -4588 -4591 -4592 -4597 -4598 -4610 -4612 -4614 -4616 -4625 -4632 -4671 -4672 -4673 -4674 -4675 -4678 -4679 -4681 -4682 -4684 -4685 -4691 -4694 -4696 -4702 -4710 -4720 -4730 -4771 -4774 -4775 -4777 -4779 -4780 -4781 -4782 -4783 -4784 -4785 -4786 -4787 -4788 -4789 -4791 -4792 -4793 -4794 -4795 -4796 -4797 -4810 -4814 -4815 -4817 -4818 -4820 -4821 -4822 -4825 -4884 -4891 -4893 -4894 -4900 -4910 -4920 -4930 -4970 -4971 -4972 -4973 -4974 -4975 -4976 -4977 -4978 -4979 -4981 -4982 -4983 -4984 -4985 -4986 -4987 -4988 -4989 -4990 -4991 -4992 -4993 -4994 -4995 -4996 -4997 -4998 -4999 -5010 -5011 -5012 -5013 -5014 -5016 -5018 -5019 -5022 -5024 -5026 -5028 -5032 -5034 -5036 -5371 -5372 -5373 -5381 -5391 -5510 -5512 -5570 -5571 -5572 -5573 -5574 -5575 -5581 -5582 -5583 -5710 -5711 -5712 -5713 -5771 -5772 -5773 -5781 -5782 -5783 -5784 -5791 -5792 -5794 -5810 -5871 -5872 -5881 -5882 -5883 -5884 -5885 -5886 -5887 -5888 -5889 -5890 -5894 -6011 -6012 -6021 -6022 -6023 -6035 -6037 -6972 -7005 -7007 -7010 -7011 -7020 -7022 -7025 -7071 -7072 -7073 -7077 -7081 -7091 -7095 -7096 -7100 -7110 -7120 -7173 -7175 -7178 -7182 -7183 -7192 -7193 -7194 -7195 -7196 -7197 -7198 -7201 -7202 -7204 -7206 -7210 -7220 -7271 -7272 -7273 -7274 -7275 -7276 -7281 -7282 -7284 -7285 -7300 -7310 -7332 -7334 -7371 -7373 -7374 -7379 -7381 -7382 -7383 -7384 -7385 -7387 -7391 -7392 -7395 -7400 -7402 -7410 -7420 -7430 -7471 -7472 -7473 -7475 -7476 -7481 -7482 -7483 -7491 -7495 -7500 -7510 -7520 -7571 -7572 -7580 -7581 -7582 -7583 -7591 -7600 -7602 -7604 -7608 -7610 -7614 -7616 -7630 -7632 -7670 -7671 -7672 -7673 -7674 -7675 -7676 -7677 -7678 -7681 -7682 -7683 -7691 -7692 -7700 -7710 -7730 -7771 -7772 -7773 -7774 -7775 -7776 -7777 -7778 -7781 -7782 -7783 -7784 -7791 -7802 -7803 -7804 -7805 -7810 -7811 -7812 -7822 -7823 -7825 -7830 -7832 -7871 -7872 -7873 -7875 -7881 -7882 -7883 -7884 -7885 -7886 -7891 -7892 -7893 -7895 -7901 -7903 -7910 -7912 -7920 -7924 -7925 -7930 -7971 -7972 -7973 -7974 -7977 -7978 -7979 -7980 -7982 -7983 -7984 -7985 -7986 -7987 -7988 -7990 -7991 -7992 -7999 -8011 -8013 -8014 -8022 -8023 -8024 -8025 -8041 -8042 -8051 -8052 -8053 -8061 -8062 -8081 -8082 -8083 -8971 -8972 -9010 -9011 -9012 -9013 -9014 -9016 -9018 -9019 -9022 -9023 -9024 -9035 -9073 -9074 -9076 -9077 -9081 -9082 -9085 -9091 -9092 -9210 -9220 -9230 -9231 -9271 -9272 -9273 -9274 -9281 -9282 -9291 -9292 -9310 -9320 -9330 -9332 -9376 -9377 -9383 -9384 -9386 -9387 -9391 -9392 -9393 -9395 -9396 -9397 -9398 -9400 -9401 -9410 -9412 -9430 -9435 -9471 -9472 -9481 -9482 -9483 -9491 -9492 -9493 -9494 -9495 -9498 -9500 -9510 -9522 -9532 -9534 -9535 -9571 -9572 -9583 -9584 -9585 -9586 -9587 -9591 -9593 -9596 -9597 -9598 -9600 -9610 -9620 -9630 -9635 -9672 -9679 -9682 -9683 -9689 -9691 -9710 -9712 -9720 -9730 -9771 -9772 -9773 -9774 -9775 -9776 -9777 -9778 -9779 -9781 -9782 -9783 -9791 -9792 -9793 -9794 -9810 -9812 -9814 -9816 -9818 -9822 -9825 -9831 -9871 -9872 -9874 -9875 -9876 -9877 -9879 -9881 -9883 -9884 -9891 -9892 -9893 \ No newline at end of file diff --git a/data/esMX_postcodes.txt b/data/esMX_postcodes.txt deleted file mode 100644 index 3125a38..0000000 --- a/data/esMX_postcodes.txt +++ /dev/null @@ -1,29111 +0,0 @@ -01000 -01010 -01020 -01028 -01029 -01030 -01040 -01048 -01049 -01050 -01060 -01070 -01080 -01089 -01090 -01109 -01110 -01115 -01116 -01120 -01125 -01130 -01139 -01140 -01150 -01159 -01160 -01170 -01180 -01183 -01184 -01200 -01209 -01219 -01220 -01230 -01235 -01239 -01240 -01250 -01259 -01260 -01268 -01269 -01270 -01275 -01276 -01278 -01279 -01280 -01285 -01286 -01289 -01290 -01296 -01297 -01299 -01300 -01310 -01320 -01329 -01330 -01339 -01340 -01376 -01377 -01378 -01379 -01388 -01389 -01400 -01407 -01408 -01409 -01410 -01419 -01420 -01430 -01440 -01450 -01460 -01470 -01480 -01490 -01500 -01504 -01505 -01506 -01507 -01508 -01509 -01510 -01520 -01529 -01530 -01537 -01538 -01539 -01540 -01548 -01549 -01550 -01559 -01560 -01566 -01567 -01568 -01569 -01580 -01586 -01587 -01588 -01589 -01590 -01600 -01610 -01618 -01619 -01620 -01630 -01640 -01645 -01650 -01700 -01706 -01707 -01708 -01709 -01710 -01720 -01729 -01730 -01739 -01740 -01759 -01760 -01769 -01770 -01779 -01780 -01787 -01788 -01789 -01790 -01799 -01800 -01807 -01809 -01810 -01820 -01830 -01840 -01848 -01849 -01850 -01856 -01857 -01858 -01859 -01860 -01870 -01900 -01940 -01950 -01990 -02000 -02008 -02009 -02010 -02020 -02040 -02050 -02060 -02070 -02080 -02090 -02099 -02100 -02109 -02110 -02120 -02125 -02127 -02128 -02129 -02130 -02140 -02150 -02160 -02169 -02200 -02230 -02240 -02250 -02260 -02300 -02310 -02320 -02330 -02340 -02350 -02360 -02400 -02409 -02410 -02419 -02420 -02430 -02440 -02450 -02459 -02460 -02470 -02479 -02480 -02490 -02500 -02510 -02519 -02520 -02525 -02530 -02540 -02600 -02640 -02650 -02660 -02670 -02680 -02700 -02710 -02718 -02719 -02720 -02729 -02730 -02739 -02750 -02760 -02770 -02780 -02790 -02800 -02810 -02820 -02830 -02840 -02850 -02860 -02870 -02900 -02910 -02920 -02930 -02940 -02950 -02960 -02970 -02980 -02990 -03000 -03010 -03020 -03023 -03027 -03028 -03100 -03103 -03104 -03109 -03199 -03200 -03219 -03220 -03229 -03230 -03240 -03300 -03303 -03310 -03313 -03319 -03320 -03330 -03339 -03340 -03400 -03410 -03420 -03430 -03440 -03500 -03510 -03520 -03530 -03540 -03550 -03560 -03570 -03580 -03590 -03600 -03610 -03620 -03630 -03640 -03650 -03660 -03700 -03710 -03720 -03730 -03740 -03800 -03809 -03810 -03811 -03818 -03819 -03820 -03840 -03849 -03900 -03910 -03920 -03930 -03940 -03949 -04000 -04009 -04010 -04020 -04030 -04040 -04100 -04110 -04120 -04129 -04200 -04210 -04220 -04230 -04239 -04240 -04250 -04259 -04260 -04269 -04270 -04280 -04300 -04307 -04309 -04310 -04317 -04318 -04319 -04320 -04326 -04327 -04330 -04336 -04337 -04338 -04340 -04350 -04359 -04360 -04368 -04369 -04370 -04380 -04389 -04390 -04400 -04410 -04420 -04430 -04440 -04450 -04460 -04470 -04480 -04484 -04489 -04490 -04500 -04510 -04513 -04519 -04530 -04535 -04539 -04600 -04610 -04620 -04630 -04640 -04650 -04660 -04700 -04710 -04718 -04719 -04720 -04729 -04730 -04737 -04738 -04739 -04800 -04810 -04815 -04830 -04840 -04843 -04849 -04850 -04859 -04870 -04890 -04899 -04908 -04909 -04910 -04918 -04919 -04920 -04921 -04929 -04930 -04938 -04939 -04940 -04950 -04960 -04970 -04980 -05000 -05008 -05009 -05010 -05020 -05030 -05039 -05050 -05060 -05080 -05086 -05088 -05089 -05100 -05109 -05110 -05118 -05119 -05120 -05126 -05128 -05130 -05200 -05210 -05214 -05219 -05220 -05230 -05238 -05239 -05240 -05249 -05260 -05268 -05269 -05270 -05280 -05300 -05310 -05320 -05330 -05340 -05348 -05349 -05360 -05370 -05379 -05400 -05410 -05480 -05500 -05509 -05510 -05520 -05530 -05600 -05619 -05639 -05700 -05710 -05719 -05720 -05730 -05750 -05760 -05770 -05780 -06000 -06007 -06010 -06018 -06020 -06030 -06037 -06038 -06039 -06040 -06050 -06057 -06058 -06059 -06060 -06065 -06066 -06067 -06068 -06070 -06079 -06080 -06090 -06100 -06140 -06170 -06171 -06179 -06199 -06200 -06220 -06240 -06250 -06270 -06280 -06300 -06309 -06350 -06357 -06359 -06400 -06430 -06450 -06470 -06479 -06500 -06589 -06597 -06598 -06599 -06600 -06606 -06609 -06691 -06692 -06693 -06694 -06695 -06696 -06698 -06699 -06700 -06704 -06707 -06720 -06724 -06725 -06727 -06728 -06729 -06740 -06760 -06780 -06796 -06797 -06798 -06800 -06802 -06820 -06840 -06850 -06860 -06870 -06880 -06890 -06900 -06920 -06995 -07000 -07010 -07020 -07040 -07049 -07050 -07058 -07059 -07060 -07069 -07070 -07080 -07089 -07090 -07100 -07109 -07110 -07130 -07148 -07149 -07150 -07160 -07164 -07170 -07180 -07183 -07187 -07188 -07189 -07190 -07199 -07200 -07206 -07207 -07208 -07209 -07210 -07219 -07230 -07239 -07240 -07248 -07250 -07258 -07259 -07260 -07268 -07269 -07270 -07279 -07280 -07290 -07300 -07309 -07310 -07320 -07323 -07326 -07327 -07328 -07329 -07330 -07340 -07348 -07349 -07350 -07359 -07360 -07363 -07369 -07370 -07380 -07400 -07410 -07420 -07430 -07440 -07450 -07455 -07456 -07457 -07458 -07459 -07460 -07469 -07470 -07480 -07490 -07500 -07510 -07520 -07530 -07540 -07548 -07549 -07550 -07560 -07570 -07573 -07580 -07600 -07620 -07630 -07640 -07650 -07660 -07670 -07680 -07700 -07707 -07708 -07709 -07710 -07720 -07729 -07730 -07738 -07739 -07740 -07750 -07760 -07780 -07790 -07800 -07810 -07820 -07830 -07839 -07840 -07850 -07858 -07859 -07860 -07869 -07870 -07880 -07889 -07890 -07899 -07900 -07909 -07910 -07918 -07919 -07920 -07930 -07939 -07940 -07950 -07958 -07959 -07960 -07970 -07980 -08000 -08009 -08010 -08020 -08029 -08030 -08040 -08100 -08160 -08170 -08180 -08188 -08189 -08200 -08210 -08220 -08230 -08240 -08300 -08310 -08320 -08400 -08420 -08500 -08510 -08520 -08560 -08580 -08600 -08610 -08619 -08620 -08630 -08640 -08650 -08700 -08710 -08720 -08730 -08760 -08770 -08800 -08810 -08820 -08830 -08840 -08900 -08910 -08920 -08930 -09000 -09009 -09020 -09030 -09040 -09060 -09079 -09080 -09089 -09090 -09099 -09100 -09110 -09120 -09130 -09140 -09150 -09160 -09170 -09180 -09200 -09207 -09208 -09209 -09210 -09219 -09220 -09225 -09226 -09227 -09228 -09229 -09230 -09239 -09240 -09249 -09250 -09260 -09270 -09280 -09290 -09300 -09309 -09320 -09330 -09340 -09350 -09359 -09360 -09366 -09367 -09368 -09369 -09400 -09410 -09420 -09429 -09430 -09437 -09438 -09439 -09440 -09450 -09460 -09470 -09479 -09480 -09500 -09510 -09519 -09520 -09530 -09540 -09550 -09560 -09570 -09577 -09578 -09579 -09600 -09608 -09609 -09620 -09630 -09636 -09637 -09638 -09640 -09648 -09649 -09660 -09670 -09680 -09685 -09688 -09689 -09690 -09695 -09696 -09697 -09698 -09699 -09700 -09704 -09705 -09706 -09707 -09708 -09709 -09710 -09719 -09720 -09730 -09739 -09740 -09750 -09759 -09760 -09767 -09768 -09769 -09770 -09779 -09780 -09789 -09790 -09800 -09809 -09810 -09819 -09820 -09828 -09829 -09830 -09836 -09837 -09838 -09839 -09840 -09849 -09850 -09856 -09857 -09858 -09859 -09860 -09864 -09868 -09869 -09870 -09880 -09885 -09889 -09890 -09897 -09898 -09899 -09900 -09910 -09919 -09920 -09930 -09940 -09960 -09968 -09969 -09970 -09979 -10000 -10010 -10020 -10100 -10110 -10120 -10130 -10200 -10210 -10290 -10300 -10309 -10320 -10330 -10340 -10350 -10360 -10368 -10369 -10370 -10378 -10379 -10380 -10400 -10500 -10508 -10509 -10580 -10589 -10600 -10610 -10620 -10630 -10640 -10650 -10660 -10700 -10710 -10720 -10730 -10740 -10800 -10810 -10820 -10830 -10840 -10900 -10910 -10920 -10926 -10927 -10928 -10929 -11009 -11040 -11109 -11111 -11200 -11209 -11210 -11219 -11220 -11230 -11239 -11240 -11250 -11259 -11260 -11270 -11280 -11289 -11290 -11300 -11310 -11311 -11330 -11340 -11350 -11360 -11370 -11379 -11400 -11410 -11420 -11430 -11440 -11450 -11460 -11470 -11479 -11480 -11489 -11490 -11500 -11501 -11510 -11511 -11520 -11529 -11530 -11540 -11550 -11560 -11580 -11587 -11588 -11590 -11600 -11610 -11619 -11640 -11649 -11650 -11700 -11810 -11820 -11830 -11840 -11860 -11869 -11870 -11910 -11920 -11930 -11950 -12000 -12009 -12010 -12020 -12070 -12080 -12100 -12200 -12210 -12250 -12300 -12400 -12500 -12600 -12700 -12800 -13000 -13009 -13010 -13020 -13030 -13040 -13060 -13063 -13070 -13080 -13090 -13099 -13100 -13110 -13119 -13120 -13123 -13129 -13150 -13180 -13200 -13209 -13210 -13219 -13220 -13229 -13230 -13240 -13250 -13270 -13273 -13278 -13280 -13300 -13310 -13316 -13317 -13318 -13319 -13360 -13363 -13364 -13400 -13410 -13419 -13420 -13429 -13430 -13440 -13450 -13460 -13500 -13508 -13509 -13510 -13520 -13529 -13530 -13549 -13550 -13559 -13570 -13600 -13610 -13625 -13630 -13640 -13700 -13710 -13720 -14000 -14009 -14010 -14017 -14018 -14020 -14030 -14038 -14039 -14040 -14049 -14050 -14060 -14070 -14080 -14090 -14097 -14098 -14099 -14100 -14108 -14109 -14110 -14120 -14129 -14130 -14140 -14141 -14148 -14149 -14150 -14160 -14200 -14208 -14209 -14210 -14219 -14220 -14230 -14239 -14240 -14248 -14249 -14250 -14260 -14264 -14265 -14266 -14267 -14268 -14269 -14270 -14273 -14275 -14276 -14300 -14307 -14308 -14309 -14310 -14320 -14324 -14325 -14326 -14327 -14328 -14329 -14330 -14334 -14335 -14337 -14338 -14339 -14340 -14350 -14356 -14358 -14359 -14360 -14370 -14376 -14377 -14378 -14380 -14386 -14387 -14388 -14389 -14390 -14399 -14400 -14404 -14405 -14406 -14408 -14409 -14410 -14420 -14426 -14427 -14428 -14429 -14430 -14438 -14439 -14440 -14449 -14450 -14456 -14460 -14470 -14476 -14477 -14478 -14479 -14480 -14490 -14500 -14520 -14529 -14540 -14543 -14545 -14550 -14560 -14600 -14607 -14608 -14609 -14610 -14620 -14629 -14630 -14639 -14640 -14643 -14645 -14646 -14647 -14648 -14649 -14650 -14651 -14654 -14655 -14656 -14657 -14658 -14659 -14700 -14710 -14713 -14720 -14730 -14734 -14735 -14737 -14738 -14739 -14740 -14749 -14750 -14760 -14780 -14790 -14820 -14829 -14830 -14839 -14900 -15000 -15010 -15020 -15100 -15120 -15200 -15210 -15220 -15230 -15240 -15250 -15260 -15270 -15280 -15290 -15299 -15300 -15309 -15310 -15320 -15330 -15339 -15340 -15350 -15360 -15370 -15380 -15390 -15400 -15410 -15420 -15430 -15440 -15450 -15460 -15470 -15500 -15510 -15520 -15530 -15540 -15600 -15610 -15620 -15630 -15640 -15650 -15660 -15669 -15670 -15680 -15690 -15700 -15710 -15720 -15730 -15740 -15750 -15800 -15810 -15820 -15829 -15830 -15840 -15850 -15860 -15870 -15900 -15909 -15940 -15950 -15960 -15968 -15970 -15980 -15990 -16000 -16010 -16019 -16020 -16025 -16028 -16029 -16030 -16034 -16035 -16036 -16038 -16039 -16040 -16050 -16057 -16058 -16059 -16060 -16070 -16080 -16090 -16095 -16098 -16099 -16100 -16105 -16109 -16200 -16210 -16220 -16243 -16244 -16245 -16246 -16247 -16248 -16249 -16300 -16310 -16320 -16330 -16340 -16350 -16400 -16410 -16420 -16428 -16429 -16430 -16440 -16450 -16459 -16480 -16500 -16510 -16515 -16520 -16530 -16540 -16550 -16600 -16609 -16610 -16620 -16628 -16629 -16630 -16640 -16700 -16710 -16720 -16725 -16730 -16739 -16740 -16749 -16750 -16770 -16776 -16780 -16790 -16797 -16799 -16800 -16808 -16809 -16810 -16819 -16820 -16840 -16850 -16860 -16866 -16869 -16870 -16880 -16888 -16889 -16900 -16908 -16909 -16910 -19000 -20000 -20008 -20009 -20010 -20016 -20018 -20019 -20020 -20029 -20030 -20038 -20040 -20046 -20049 -20050 -20059 -20060 -20064 -20070 -20078 -20080 -20089 -20090 -20100 -20105 -20110 -20115 -20116 -20117 -20118 -20119 -20120 -20123 -20125 -20126 -20127 -20128 -20129 -20130 -20135 -20136 -20137 -20138 -20139 -20140 -20146 -20149 -20150 -20157 -20158 -20159 -20160 -20164 -20169 -20170 -20172 -20174 -20175 -20177 -20178 -20179 -20180 -20190 -20196 -20197 -20198 -20199 -20200 -20205 -20206 -20207 -20208 -20210 -20216 -20217 -20218 -20219 -20220 -20229 -20230 -20234 -20235 -20236 -20237 -20238 -20239 -20240 -20246 -20247 -20248 -20249 -20250 -20255 -20256 -20257 -20259 -20260 -20263 -20264 -20265 -20266 -20267 -20268 -20269 -20270 -20275 -20276 -20277 -20278 -20280 -20284 -20286 -20287 -20288 -20289 -20290 -20291 -20295 -20296 -20297 -20298 -20299 -20300 -20303 -20304 -20305 -20310 -20311 -20312 -20313 -20314 -20315 -20316 -20317 -20318 -20320 -20321 -20322 -20323 -20324 -20326 -20328 -20330 -20333 -20334 -20335 -20336 -20337 -20338 -20340 -20341 -20342 -20344 -20345 -20346 -20348 -20349 -20350 -20353 -20355 -20356 -20357 -20358 -20363 -20364 -20366 -20367 -20369 -20370 -20371 -20372 -20373 -20375 -20376 -20377 -20379 -20382 -20384 -20385 -20386 -20389 -20390 -20391 -20392 -20394 -20395 -20396 -20399 -20400 -20403 -20404 -20405 -20406 -20410 -20415 -20416 -20417 -20420 -20423 -20424 -20425 -20426 -20427 -20430 -20434 -20435 -20436 -20437 -20440 -20444 -20445 -20446 -20447 -20450 -20454 -20456 -20457 -20460 -20462 -20467 -20468 -20469 -20470 -20472 -20476 -20478 -20500 -20501 -20502 -20503 -20504 -20506 -20508 -20510 -20516 -20520 -20525 -20530 -20534 -20538 -20540 -20545 -20550 -20560 -20564 -20567 -20570 -20574 -20576 -20578 -20580 -20584 -20590 -20600 -20602 -20603 -20605 -20607 -20608 -20610 -20612 -20613 -20614 -20615 -20616 -20622 -20624 -20625 -20631 -20634 -20637 -20640 -20645 -20646 -20650 -20654 -20656 -20657 -20658 -20659 -20663 -20664 -20665 -20666 -20667 -20668 -20670 -20673 -20674 -20675 -20676 -20677 -20678 -20700 -20704 -20705 -20708 -20709 -20710 -20712 -20713 -20714 -20715 -20716 -20720 -20721 -20722 -20723 -20724 -20727 -20728 -20729 -20730 -20732 -20734 -20736 -20738 -20739 -20740 -20741 -20742 -20744 -20746 -20748 -20749 -20750 -20760 -20765 -20768 -20770 -20771 -20773 -20775 -20777 -20779 -20780 -20782 -20785 -20790 -20792 -20794 -20795 -20796 -20797 -20799 -20800 -20802 -20803 -20804 -20805 -20810 -20814 -20816 -20820 -20824 -20830 -20832 -20834 -20840 -20842 -20844 -20850 -20852 -20854 -20856 -20860 -20862 -20864 -20870 -20872 -20874 -20880 -20882 -20884 -20890 -20892 -20899 -20900 -20901 -20902 -20903 -20904 -20905 -20906 -20907 -20908 -20909 -20912 -20914 -20916 -20917 -20919 -20920 -20922 -20923 -20924 -20925 -20926 -20927 -20928 -20940 -20943 -20945 -20947 -20950 -20953 -20955 -20957 -20959 -20960 -20964 -20967 -20970 -20974 -20980 -20981 -20983 -20984 -20986 -20987 -20990 -20992 -20994 -20996 -20997 -21000 -21009 -21010 -21020 -21030 -21038 -21039 -21040 -21050 -21060 -21070 -21079 -21080 -21090 -21100 -21110 -21120 -21130 -21135 -21137 -21138 -21139 -21140 -21147 -21150 -21160 -21165 -21170 -21178 -21179 -21180 -21185 -21188 -21189 -21190 -21200 -21210 -21215 -21216 -21217 -21218 -21219 -21220 -21225 -21229 -21230 -21239 -21240 -21250 -21254 -21255 -21257 -21258 -21259 -21260 -21270 -21279 -21280 -21285 -21289 -21290 -21297 -21298 -21299 -21300 -21307 -21308 -21309 -21310 -21320 -21323 -21324 -21325 -21326 -21327 -21330 -21337 -21338 -21339 -21340 -21350 -21353 -21354 -21355 -21356 -21359 -21360 -21370 -21371 -21376 -21377 -21378 -21379 -21380 -21383 -21384 -21385 -21386 -21387 -21389 -21390 -21394 -21395 -21396 -21397 -21398 -21399 -21400 -21410 -21420 -21430 -21432 -21440 -21442 -21447 -21448 -21449 -21450 -21452 -21453 -21460 -21462 -21463 -21470 -21472 -21477 -21478 -21479 -21480 -21482 -21485 -21490 -21500 -21505 -21506 -21510 -21511 -21517 -21520 -21530 -21560 -21570 -21600 -21601 -21602 -21603 -21604 -21605 -21610 -21611 -21612 -21613 -21620 -21621 -21622 -21623 -21624 -21700 -21701 -21704 -21705 -21706 -21710 -21720 -21721 -21722 -21723 -21730 -21731 -21735 -21738 -21739 -21740 -21741 -21742 -21743 -21800 -21801 -21802 -21803 -21810 -21820 -21821 -21830 -21831 -21832 -21833 -21840 -21841 -21850 -21852 -21900 -21902 -21903 -21904 -21905 -21909 -21910 -21911 -21912 -21913 -21920 -21921 -21922 -21930 -21950 -21951 -21960 -21961 -21962 -21963 -21964 -21966 -21970 -21971 -21980 -22000 -22010 -22014 -22015 -22020 -22024 -22025 -22030 -22034 -22035 -22040 -22044 -22045 -22046 -22050 -22054 -22055 -22056 -22100 -22104 -22105 -22106 -22110 -22114 -22115 -22116 -22117 -22120 -22123 -22124 -22125 -22126 -22127 -22130 -22139 -22160 -22170 -22180 -22183 -22184 -22185 -22186 -22190 -22194 -22195 -22196 -22200 -22203 -22204 -22205 -22206 -22207 -22210 -22214 -22215 -22216 -22220 -22223 -22224 -22225 -22226 -22230 -22234 -22235 -22244 -22245 -22246 -22250 -22253 -22254 -22255 -22330 -22339 -22349 -22358 -22397 -22400 -22404 -22405 -22406 -22410 -22414 -22415 -22416 -22420 -22424 -22425 -22426 -22427 -22434 -22435 -22436 -22440 -22444 -22446 -22450 -22454 -22455 -22456 -22457 -22460 -22464 -22465 -22470 -22473 -22476 -22477 -22497 -22500 -22502 -22504 -22505 -22506 -22510 -22515 -22516 -22517 -22519 -22520 -22523 -22524 -22525 -22526 -22530 -22534 -22535 -22536 -22537 -22540 -22544 -22545 -22547 -22550 -22557 -22559 -22560 -22563 -22564 -22565 -22566 -22575 -22578 -22585 -22586 -22590 -22600 -22604 -22605 -22606 -22607 -22610 -22614 -22615 -22616 -22620 -22624 -22625 -22626 -22630 -22634 -22635 -22636 -22637 -22640 -22643 -22644 -22645 -22646 -22647 -22650 -22654 -22656 -22660 -22663 -22664 -22665 -22666 -22667 -22673 -22683 -22689 -22700 -22703 -22704 -22705 -22706 -22707 -22710 -22713 -22714 -22715 -22716 -22717 -22720 -22723 -22724 -22740 -22744 -22745 -22750 -22755 -22756 -22760 -22765 -22766 -22770 -22771 -22780 -22785 -22790 -22793 -22794 -22795 -22800 -22810 -22812 -22813 -22815 -22818 -22819 -22820 -22822 -22823 -22830 -22835 -22839 -22840 -22842 -22847 -22850 -22852 -22855 -22859 -22860 -22870 -22872 -22879 -22880 -22887 -22888 -22889 -22890 -22892 -22895 -22897 -22898 -22900 -22903 -22904 -22905 -22907 -22908 -22909 -22910 -22914 -22915 -22916 -22917 -22920 -22921 -22922 -22925 -22930 -22931 -22932 -22933 -22934 -22940 -22945 -22950 -22951 -22952 -22955 -22960 -22964 -22965 -22967 -22969 -22970 -22971 -22980 -22984 -22990 -22991 -22997 -23000 -23006 -23007 -23008 -23009 -23010 -23017 -23018 -23019 -23020 -23026 -23029 -23030 -23034 -23037 -23038 -23039 -23040 -23050 -23052 -23054 -23056 -23057 -23060 -23068 -23069 -23070 -23075 -23076 -23077 -23078 -23079 -23080 -23083 -23084 -23085 -23086 -23088 -23089 -23090 -23091 -23094 -23095 -23096 -23097 -23098 -23099 -23100 -23109 -23130 -23150 -23170 -23200 -23203 -23205 -23206 -23207 -23208 -23209 -23210 -23211 -23212 -23213 -23215 -23216 -23217 -23230 -23231 -23232 -23233 -23234 -23236 -23240 -23241 -23248 -23249 -23250 -23251 -23252 -23253 -23254 -23257 -23258 -23280 -23284 -23285 -23289 -23300 -23302 -23303 -23304 -23306 -23307 -23308 -23310 -23311 -23312 -23317 -23318 -23320 -23321 -23322 -23328 -23329 -23330 -23333 -23334 -23350 -23351 -23360 -23361 -23362 -23363 -23364 -23365 -23390 -23400 -23403 -23405 -23406 -23407 -23420 -23425 -23426 -23427 -23428 -23429 -23430 -23434 -23435 -23436 -23437 -23440 -23443 -23444 -23445 -23450 -23453 -23454 -23455 -23456 -23460 -23462 -23463 -23467 -23468 -23469 -23470 -23472 -23473 -23474 -23477 -23478 -23500 -23501 -23510 -23520 -23521 -23522 -23530 -23531 -23532 -23540 -23541 -23542 -23550 -23551 -23552 -23560 -23567 -23570 -23571 -23572 -23573 -23574 -23575 -23580 -23581 -23582 -23585 -23586 -23587 -23588 -23590 -23593 -23595 -23600 -23610 -23620 -23630 -23631 -23640 -23641 -23650 -23658 -23660 -23670 -23676 -23677 -23678 -23680 -23690 -23695 -23696 -23697 -23700 -23701 -23708 -23710 -23712 -23713 -23715 -23720 -23721 -23722 -23730 -23731 -23733 -23734 -23736 -23737 -23739 -23740 -23748 -23749 -23750 -23760 -23766 -23767 -23770 -23771 -23773 -23774 -23780 -23782 -23789 -23790 -23800 -23801 -23802 -23803 -23805 -23808 -23810 -23811 -23812 -23813 -23816 -23818 -23820 -23823 -23824 -23828 -23829 -23830 -23832 -23834 -23837 -23838 -23840 -23844 -23845 -23846 -23847 -23851 -23853 -23854 -23860 -23861 -23862 -23870 -23873 -23880 -23883 -23884 -23885 -23886 -23887 -23888 -23889 -23890 -23893 -23894 -23895 -23896 -23897 -23898 -23899 -23900 -23902 -23903 -23904 -23910 -23911 -23912 -23913 -23914 -23915 -23916 -23920 -23921 -23922 -23923 -23924 -23926 -23929 -23930 -23935 -23936 -23938 -23940 -23944 -23945 -23948 -23949 -23950 -23951 -23952 -23959 -23960 -23969 -23970 -23971 -23972 -23973 -23980 -23983 -23988 -23990 -23995 -23997 -24000 -24005 -24008 -24009 -24010 -24014 -24019 -24020 -24023 -24024 -24025 -24026 -24027 -24028 -24029 -24030 -24035 -24036 -24037 -24038 -24039 -24040 -24044 -24048 -24049 -24050 -24058 -24060 -24067 -24069 -24070 -24075 -24079 -24080 -24083 -24085 -24086 -24087 -24088 -24089 -24090 -24093 -24094 -24095 -24096 -24097 -24098 -24099 -24100 -24108 -24109 -24110 -24114 -24115 -24116 -24117 -24118 -24119 -24120 -24129 -24130 -24139 -24140 -24150 -24154 -24155 -24157 -24158 -24160 -24165 -24166 -24167 -24168 -24169 -24170 -24178 -24179 -24180 -24185 -24186 -24187 -24188 -24189 -24190 -24195 -24197 -24198 -24199 -24200 -24201 -24202 -24204 -24205 -24207 -24230 -24300 -24304 -24307 -24310 -24313 -24314 -24315 -24316 -24317 -24320 -24323 -24324 -24325 -24326 -24327 -24328 -24330 -24332 -24333 -24334 -24335 -24336 -24337 -24338 -24343 -24344 -24345 -24346 -24347 -24348 -24350 -24353 -24354 -24357 -24358 -24364 -24365 -24367 -24368 -24369 -24372 -24381 -24400 -24402 -24403 -24410 -24411 -24412 -24413 -24414 -24415 -24416 -24418 -24419 -24420 -24421 -24423 -24425 -24430 -24434 -24435 -24439 -24440 -24441 -24450 -24451 -24459 -24460 -24462 -24464 -24475 -24476 -24477 -24478 -24479 -24480 -24481 -24482 -24483 -24484 -24485 -24488 -24495 -24500 -24510 -24511 -24517 -24520 -24522 -24530 -24532 -24536 -24537 -24538 -24540 -24541 -24549 -24550 -24552 -24557 -24560 -24561 -24562 -24564 -24570 -24572 -24575 -24576 -24600 -24603 -24604 -24605 -24606 -24607 -24609 -24610 -24611 -24612 -24613 -24615 -24620 -24622 -24640 -24643 -24644 -24645 -24646 -24647 -24648 -24653 -24654 -24655 -24656 -24660 -24663 -24665 -24667 -24668 -24670 -24678 -24700 -24703 -24704 -24705 -24706 -24707 -24720 -24730 -24732 -24800 -24810 -24813 -24820 -24826 -24827 -24828 -24830 -24831 -24836 -24837 -24839 -24860 -24900 -24902 -24903 -24904 -24905 -24910 -24914 -24915 -24916 -24917 -24919 -24920 -24921 -24922 -24923 -24925 -24929 -24930 -24933 -24934 -24935 -24936 -25000 -25008 -25009 -25010 -25013 -25014 -25015 -25016 -25017 -25018 -25019 -25020 -25022 -25023 -25030 -25034 -25036 -25038 -25039 -25040 -25043 -25044 -25045 -25047 -25048 -25049 -25050 -25055 -25056 -25057 -25060 -25065 -25067 -25068 -25069 -25070 -25075 -25076 -25077 -25078 -25079 -25080 -25083 -25084 -25085 -25086 -25087 -25088 -25090 -25092 -25093 -25096 -25100 -25107 -25110 -25113 -25114 -25115 -25116 -25120 -25124 -25125 -25128 -25129 -25130 -25137 -25138 -25140 -25146 -25147 -25150 -25155 -25156 -25157 -25160 -25167 -25168 -25169 -25170 -25179 -25180 -25186 -25187 -25188 -25189 -25190 -25194 -25195 -25196 -25197 -25198 -25199 -25200 -25203 -25204 -25205 -25206 -25207 -25208 -25209 -25210 -25215 -25220 -25225 -25226 -25230 -25239 -25240 -25250 -25253 -25254 -25255 -25260 -25264 -25265 -25270 -25279 -25280 -25284 -25285 -25286 -25289 -25290 -25293 -25294 -25295 -25296 -25297 -25298 -25299 -25300 -25301 -25302 -25303 -25305 -25306 -25307 -25308 -25310 -25311 -25312 -25313 -25314 -25315 -25316 -25319 -25320 -25324 -25325 -25326 -25327 -25328 -25329 -25330 -25331 -25332 -25333 -25334 -25335 -25336 -25337 -25338 -25340 -25343 -25344 -25345 -25346 -25347 -25348 -25350 -25352 -25353 -25354 -25355 -25360 -25363 -25364 -25365 -25366 -25370 -25372 -25373 -25374 -25375 -25376 -25380 -25382 -25385 -25386 -25387 -25389 -25390 -25395 -25396 -25399 -25400 -25402 -25410 -25414 -25415 -25416 -25418 -25419 -25420 -25430 -25431 -25440 -25443 -25446 -25447 -25450 -25457 -25458 -25460 -25469 -25470 -25479 -25480 -25483 -25490 -25492 -25496 -25500 -25503 -25504 -25505 -25506 -25507 -25508 -25530 -25532 -25533 -25534 -25535 -25536 -25540 -25550 -25557 -25570 -25571 -25576 -25590 -25600 -25610 -25616 -25617 -25618 -25619 -25620 -25626 -25627 -25628 -25629 -25630 -25640 -25643 -25644 -25650 -25660 -25668 -25669 -25670 -25680 -25700 -25710 -25714 -25715 -25716 -25717 -25718 -25720 -25724 -25725 -25726 -25730 -25732 -25733 -25734 -25736 -25740 -25743 -25745 -25746 -25747 -25748 -25749 -25750 -25756 -25757 -25758 -25759 -25760 -25766 -25767 -25768 -25769 -25770 -25771 -25773 -25775 -25776 -25777 -25779 -25780 -25785 -25790 -25793 -25796 -25799 -25800 -25802 -25803 -25805 -25810 -25815 -25820 -25823 -25830 -25831 -25832 -25833 -25834 -25836 -25839 -25843 -25844 -25845 -25847 -25851 -25852 -25853 -25855 -25866 -25870 -25873 -25874 -25875 -25876 -25877 -25880 -25884 -25885 -25886 -25887 -25890 -25893 -25895 -25896 -25898 -25900 -25902 -25903 -25904 -25905 -25906 -25907 -25909 -25910 -25912 -25913 -25914 -25915 -25916 -25917 -25918 -25920 -25923 -25924 -25925 -25926 -25927 -25929 -25930 -25932 -25933 -25934 -25935 -25937 -25940 -25942 -25946 -25947 -25948 -25949 -25950 -25952 -25953 -25954 -25955 -25960 -25961 -25966 -25967 -25970 -25974 -25975 -25976 -25977 -25978 -25979 -25980 -25981 -25984 -25985 -25987 -25989 -25990 -25992 -25994 -25998 -26000 -26010 -26013 -26014 -26015 -26016 -26017 -26018 -26020 -26025 -26030 -26040 -26050 -26060 -26068 -26069 -26070 -26073 -26080 -26083 -26085 -26088 -26089 -26090 -26092 -26093 -26094 -26095 -26110 -26114 -26119 -26120 -26124 -26133 -26137 -26169 -26170 -26172 -26173 -26174 -26175 -26176 -26185 -26190 -26193 -26196 -26200 -26210 -26215 -26220 -26230 -26233 -26235 -26236 -26237 -26238 -26239 -26240 -26248 -26249 -26250 -26260 -26262 -26263 -26264 -26269 -26270 -26272 -26278 -26279 -26280 -26282 -26283 -26284 -26288 -26289 -26290 -26293 -26298 -26299 -26300 -26301 -26304 -26305 -26307 -26308 -26309 -26310 -26315 -26317 -26320 -26328 -26340 -26342 -26343 -26344 -26345 -26346 -26350 -26355 -26360 -26364 -26365 -26366 -26370 -26378 -26400 -26401 -26402 -26405 -26406 -26409 -26410 -26411 -26412 -26415 -26420 -26429 -26430 -26431 -26435 -26450 -26452 -26453 -26454 -26459 -26460 -26463 -26464 -26465 -26467 -26500 -26504 -26530 -26532 -26533 -26534 -26540 -26541 -26553 -26560 -26562 -26600 -26610 -26611 -26612 -26613 -26614 -26615 -26619 -26620 -26623 -26624 -26640 -26650 -26655 -26659 -26660 -26662 -26670 -26700 -26710 -26719 -26720 -26729 -26730 -26736 -26737 -26738 -26739 -26740 -26741 -26742 -26747 -26748 -26749 -26750 -26759 -26760 -26763 -26764 -26765 -26766 -26767 -26768 -26769 -26770 -26779 -26780 -26788 -26790 -26799 -26800 -26809 -26810 -26813 -26820 -26827 -26830 -26832 -26834 -26840 -26843 -26850 -26860 -26862 -26870 -26875 -26879 -26880 -26885 -26886 -26887 -26890 -26900 -26905 -26908 -26910 -26930 -26940 -26942 -26950 -26952 -26960 -26963 -26980 -27000 -27009 -27010 -27015 -27016 -27017 -27018 -27019 -27020 -27029 -27030 -27039 -27040 -27050 -27053 -27054 -27055 -27056 -27057 -27058 -27059 -27060 -27070 -27080 -27083 -27084 -27085 -27086 -27087 -27088 -27090 -27096 -27098 -27100 -27104 -27105 -27106 -27108 -27110 -27120 -27130 -27140 -27148 -27150 -27159 -27160 -27167 -27168 -27170 -27180 -27189 -27190 -27199 -27200 -27210 -27217 -27218 -27219 -27220 -27228 -27229 -27230 -27240 -27250 -27258 -27259 -27260 -27265 -27266 -27267 -27268 -27269 -27270 -27272 -27273 -27274 -27275 -27276 -27277 -27278 -27279 -27280 -27287 -27288 -27289 -27290 -27294 -27295 -27296 -27297 -27298 -27299 -27300 -27309 -27310 -27318 -27319 -27320 -27329 -27330 -27337 -27338 -27340 -27349 -27350 -27357 -27360 -27364 -27367 -27368 -27370 -27376 -27377 -27380 -27390 -27397 -27398 -27400 -27402 -27404 -27405 -27408 -27409 -27410 -27411 -27412 -27414 -27417 -27420 -27422 -27430 -27431 -27432 -27433 -27434 -27435 -27437 -27440 -27442 -27443 -27444 -27445 -27446 -27447 -27448 -27449 -27450 -27451 -27452 -27453 -27454 -27455 -27456 -27457 -27461 -27462 -27464 -27465 -27467 -27468 -27469 -27470 -27474 -27475 -27476 -27477 -27478 -27479 -27480 -27484 -27485 -27486 -27487 -27488 -27489 -27490 -27494 -27497 -27498 -27499 -27500 -27502 -27505 -27507 -27508 -27510 -27511 -27512 -27514 -27515 -27516 -27517 -27518 -27520 -27521 -27525 -27526 -27527 -27529 -27530 -27531 -27533 -27534 -27537 -27538 -27540 -27543 -27544 -27546 -27547 -27549 -27550 -27555 -27560 -27562 -27565 -27570 -27579 -27580 -27587 -27588 -27600 -27601 -27602 -27603 -27604 -27605 -27606 -27607 -27608 -27610 -27612 -27614 -27616 -27620 -27622 -27623 -27625 -27626 -27630 -27636 -27640 -27642 -27643 -27645 -27646 -27647 -27650 -27652 -27655 -27656 -27657 -27658 -27660 -27670 -27680 -27682 -27689 -27690 -27695 -27700 -27709 -27720 -27739 -27750 -27758 -27780 -27800 -27804 -27805 -27810 -27811 -27822 -27830 -27838 -27839 -27840 -27845 -27846 -27848 -27849 -27850 -27859 -27860 -27870 -27880 -27890 -27900 -27902 -27904 -27905 -27906 -27907 -27908 -27910 -27911 -27913 -27915 -27920 -27921 -27922 -27923 -27929 -27930 -27940 -27941 -27942 -27943 -27944 -27945 -27946 -27947 -27950 -27951 -27952 -27953 -27954 -27955 -27956 -27960 -27961 -27962 -27963 -27964 -27970 -27971 -27972 -27973 -27974 -27975 -27976 -27980 -27983 -27984 -27985 -27986 -27987 -27988 -27989 -27990 -27991 -27992 -27993 -27994 -27995 -27996 -27997 -28000 -28004 -28005 -28006 -28007 -28008 -28009 -28010 -28012 -28014 -28015 -28016 -28017 -28018 -28019 -28020 -28025 -28030 -28035 -28037 -28040 -28043 -28044 -28045 -28046 -28047 -28048 -28050 -28060 -28061 -28062 -28063 -28067 -28068 -28069 -28070 -28075 -28077 -28078 -28079 -28080 -28085 -28089 -28090 -28100 -28110 -28113 -28114 -28120 -28130 -28134 -28140 -28143 -28150 -28159 -28160 -28170 -28180 -28184 -28189 -28190 -28200 -28209 -28210 -28217 -28218 -28219 -28230 -28237 -28238 -28239 -28240 -28250 -28259 -28260 -28269 -28270 -28277 -28278 -28279 -28280 -28300 -28304 -28305 -28306 -28307 -28310 -28315 -28317 -28320 -28330 -28335 -28340 -28348 -28349 -28350 -28362 -28400 -28402 -28405 -28410 -28450 -28452 -28454 -28455 -28457 -28459 -28460 -28461 -28462 -28463 -28464 -28465 -28466 -28469 -28500 -28504 -28506 -28507 -28509 -28510 -28514 -28515 -28516 -28517 -28520 -28521 -28522 -28523 -28530 -28531 -28532 -28550 -28553 -28554 -28555 -28590 -28599 -28600 -28602 -28610 -28613 -28615 -28619 -28620 -28624 -28627 -28628 -28629 -28630 -28634 -28638 -28640 -28641 -28645 -28646 -28647 -28650 -28655 -28668 -28700 -28701 -28702 -28703 -28704 -28705 -28712 -28717 -28720 -28722 -28724 -28731 -28732 -28733 -28734 -28735 -28739 -28750 -28760 -28761 -28765 -28767 -28772 -28774 -28780 -28783 -28784 -28785 -28788 -28792 -28795 -28796 -28800 -28808 -28809 -28810 -28811 -28812 -28813 -28814 -28815 -28817 -28818 -28819 -28820 -28825 -28826 -28830 -28833 -28834 -28836 -28837 -28838 -28840 -28849 -28850 -28855 -28858 -28860 -28863 -28864 -28867 -28868 -28869 -28870 -28872 -28875 -28876 -28877 -28878 -28879 -28880 -28884 -28885 -28886 -28887 -28900 -28906 -28910 -28915 -28920 -28929 -28930 -28934 -28935 -28936 -28937 -28938 -28940 -28944 -28945 -28947 -28950 -28952 -28955 -28958 -28959 -28960 -28963 -28964 -28965 -28966 -28968 -28970 -28972 -28973 -28974 -28975 -28976 -28977 -28978 -28979 -28980 -28982 -28983 -28984 -28985 -28986 -28987 -28988 -28989 -29000 -29001 -29007 -29008 -29009 -29010 -29014 -29016 -29017 -29018 -29019 -29020 -29023 -29024 -29025 -29026 -29027 -29028 -29029 -29030 -29034 -29035 -29037 -29038 -29039 -29040 -29043 -29044 -29045 -29047 -29049 -29050 -29054 -29056 -29057 -29058 -29059 -29060 -29064 -29065 -29066 -29067 -29069 -29070 -29073 -29075 -29076 -29077 -29078 -29079 -29080 -29086 -29087 -29089 -29090 -29094 -29095 -29096 -29097 -29098 -29100 -29110 -29112 -29120 -29125 -29126 -29129 -29130 -29133 -29136 -29140 -29142 -29143 -29144 -29145 -29146 -29147 -29148 -29149 -29150 -29151 -29160 -29163 -29165 -29166 -29169 -29170 -29175 -29176 -29178 -29179 -29180 -29183 -29190 -29191 -29200 -29210 -29213 -29214 -29215 -29216 -29217 -29218 -29220 -29223 -29227 -29228 -29229 -29230 -29239 -29240 -29242 -29243 -29244 -29246 -29247 -29249 -29250 -29254 -29255 -29256 -29257 -29259 -29260 -29263 -29264 -29265 -29267 -29269 -29270 -29276 -29277 -29278 -29279 -29280 -29285 -29286 -29288 -29289 -29290 -29292 -29293 -29294 -29295 -29296 -29297 -29298 -29299 -29300 -29310 -29320 -29321 -29322 -29323 -29324 -29325 -29326 -29327 -29329 -29330 -29332 -29333 -29335 -29336 -29337 -29340 -29341 -29342 -29345 -29346 -29347 -29348 -29349 -29350 -29353 -29355 -29360 -29365 -29369 -29370 -29372 -29373 -29374 -29378 -29379 -29380 -29387 -29388 -29390 -29395 -29400 -29410 -29412 -29420 -29430 -29432 -29433 -29434 -29435 -29440 -29441 -29442 -29444 -29446 -29450 -29451 -29454 -29455 -29460 -29461 -29462 -29470 -29471 -29472 -29473 -29474 -29475 -29480 -29481 -29483 -29489 -29490 -29495 -29500 -29503 -29504 -29506 -29507 -29508 -29510 -29514 -29515 -29516 -29517 -29518 -29519 -29520 -29522 -29524 -29525 -29530 -29531 -29540 -29550 -29554 -29555 -29556 -29557 -29558 -29560 -29564 -29570 -29571 -29573 -29578 -29579 -29580 -29583 -29590 -29600 -29601 -29603 -29604 -29609 -29610 -29612 -29613 -29614 -29615 -29616 -29618 -29620 -29623 -29624 -29625 -29626 -29630 -29632 -29633 -29634 -29635 -29636 -29639 -29640 -29650 -29652 -29653 -29654 -29655 -29660 -29661 -29670 -29680 -29690 -29691 -29692 -29693 -29700 -29702 -29703 -29704 -29705 -29706 -29707 -29708 -29710 -29712 -29713 -29716 -29717 -29718 -29720 -29721 -29722 -29723 -29724 -29725 -29726 -29729 -29730 -29734 -29740 -29750 -29751 -29754 -29755 -29756 -29757 -29759 -29760 -29761 -29764 -29765 -29766 -29767 -29768 -29770 -29772 -29773 -29774 -29775 -29777 -29778 -29780 -29782 -29783 -29790 -29792 -29793 -29794 -29795 -29796 -29797 -29798 -29800 -29802 -29803 -29804 -29810 -29814 -29815 -29820 -29822 -29823 -29824 -29827 -29828 -29829 -29830 -29831 -29834 -29840 -29843 -29844 -29845 -29846 -29847 -29850 -29851 -29852 -29853 -29854 -29855 -29856 -29857 -29860 -29863 -29865 -29867 -29868 -29869 -29870 -29871 -29872 -29873 -29875 -29876 -29877 -29878 -29879 -29880 -29881 -29884 -29885 -29887 -29890 -29891 -29895 -29896 -29900 -29901 -29902 -29903 -29905 -29906 -29907 -29908 -29909 -29910 -29912 -29913 -29914 -29915 -29916 -29920 -29921 -29930 -29932 -29933 -29940 -29942 -29943 -29944 -29945 -29946 -29947 -29948 -29949 -29950 -29952 -29953 -29954 -29955 -29956 -29957 -29958 -29959 -29960 -29963 -29964 -29966 -29968 -29969 -29970 -29971 -29973 -29976 -29977 -29980 -29983 -29984 -29985 -29990 -29995 -29997 -30000 -30010 -30015 -30017 -30018 -30019 -30020 -30028 -30029 -30030 -30037 -30038 -30039 -30040 -30060 -30063 -30064 -30065 -30067 -30068 -30069 -30070 -30077 -30090 -30098 -30099 -30100 -30101 -30102 -30103 -30104 -30105 -30106 -30107 -30108 -30109 -30110 -30111 -30120 -30121 -30123 -30124 -30125 -30126 -30129 -30130 -30131 -30134 -30135 -30136 -30137 -30138 -30139 -30140 -30143 -30145 -30146 -30147 -30148 -30149 -30150 -30151 -30152 -30153 -30154 -30155 -30160 -30161 -30162 -30163 -30165 -30168 -30170 -30171 -30172 -30173 -30175 -30177 -30178 -30179 -30180 -30182 -30183 -30184 -30185 -30187 -30188 -30189 -30190 -30191 -30194 -30195 -30196 -30197 -30198 -30200 -30210 -30220 -30230 -30240 -30250 -30260 -30270 -30280 -30290 -30300 -30301 -30303 -30310 -30315 -30320 -30321 -30322 -30330 -30340 -30350 -30352 -30353 -30354 -30357 -30358 -30360 -30361 -30362 -30363 -30364 -30365 -30369 -30370 -30374 -30375 -30378 -30379 -30380 -30382 -30383 -30384 -30385 -30386 -30387 -30388 -30389 -30390 -30400 -30403 -30404 -30408 -30409 -30410 -30411 -30413 -30414 -30415 -30420 -30425 -30426 -30427 -30430 -30431 -30434 -30437 -30438 -30439 -30440 -30441 -30442 -30443 -30445 -30446 -30447 -30448 -30449 -30450 -30453 -30454 -30455 -30456 -30457 -30458 -30461 -30462 -30463 -30464 -30465 -30470 -30471 -30472 -30473 -30474 -30475 -30476 -30478 -30479 -30480 -30484 -30485 -30486 -30487 -30488 -30491 -30492 -30493 -30494 -30495 -30496 -30498 -30499 -30500 -30503 -30505 -30506 -30507 -30509 -30510 -30511 -30513 -30515 -30520 -30523 -30525 -30526 -30528 -30529 -30530 -30533 -30540 -30543 -30544 -30545 -30546 -30547 -30548 -30550 -30554 -30560 -30562 -30563 -30564 -30565 -30566 -30567 -30568 -30574 -30575 -30580 -30582 -30583 -30584 -30585 -30586 -30587 -30588 -30589 -30590 -30592 -30593 -30594 -30596 -30598 -30599 -30600 -30601 -30604 -30605 -30606 -30607 -30608 -30610 -30611 -30612 -30613 -30614 -30615 -30619 -30620 -30625 -30626 -30630 -30631 -30632 -30640 -30644 -30645 -30646 -30647 -30648 -30649 -30650 -30651 -30654 -30655 -30660 -30662 -30664 -30665 -30666 -30667 -30668 -30670 -30673 -30674 -30675 -30676 -30677 -30680 -30690 -30695 -30700 -30705 -30709 -30710 -30716 -30717 -30718 -30719 -30720 -30725 -30726 -30727 -30728 -30729 -30730 -30735 -30737 -30738 -30739 -30740 -30745 -30747 -30748 -30749 -30750 -30755 -30756 -30757 -30760 -30764 -30765 -30766 -30767 -30768 -30769 -30770 -30776 -30777 -30778 -30779 -30780 -30785 -30786 -30787 -30788 -30789 -30790 -30792 -30793 -30794 -30795 -30796 -30797 -30798 -30799 -30800 -30801 -30802 -30803 -30804 -30805 -30806 -30807 -30810 -30813 -30815 -30816 -30817 -30818 -30820 -30828 -30829 -30830 -30832 -30833 -30834 -30835 -30837 -30840 -30841 -30843 -30844 -30845 -30850 -30851 -30852 -30853 -30854 -30855 -30858 -30860 -30861 -30862 -30867 -30868 -30869 -30870 -30871 -30875 -30880 -30881 -30885 -30890 -30892 -30893 -30894 -30895 -30896 -30897 -30898 -30900 -30902 -30910 -30911 -30917 -30918 -30919 -30920 -30921 -30924 -30925 -30930 -30931 -30939 -30940 -30941 -30942 -30943 -30944 -30945 -30946 -30947 -30948 -30950 -30953 -30960 -30970 -30973 -30978 -30980 -30984 -30987 -30990 -31000 -31008 -31009 -31020 -31029 -31030 -31034 -31050 -31054 -31060 -31063 -31064 -31065 -31066 -31067 -31074 -31075 -31076 -31091 -31100 -31104 -31105 -31106 -31107 -31110 -31114 -31115 -31120 -31123 -31124 -31125 -31126 -31130 -31134 -31135 -31136 -31137 -31140 -31144 -31146 -31150 -31170 -31173 -31174 -31180 -31183 -31184 -31185 -31186 -31190 -31193 -31200 -31203 -31204 -31205 -31206 -31207 -31210 -31213 -31214 -31215 -31216 -31217 -31220 -31223 -31300 -31304 -31310 -31313 -31314 -31350 -31370 -31375 -31376 -31380 -31384 -31385 -31389 -31399 -31410 -31414 -31415 -31416 -31417 -31450 -31453 -31454 -31455 -31456 -31460 -31470 -31483 -31484 -31485 -31500 -31510 -31512 -31517 -31520 -31522 -31523 -31524 -31527 -31528 -31529 -31530 -31532 -31540 -31542 -31543 -31544 -31550 -31552 -31555 -31557 -31558 -31559 -31560 -31570 -31572 -31578 -31579 -31580 -31590 -31600 -31604 -31605 -31606 -31607 -31608 -31609 -31610 -31611 -31612 -31613 -31614 -31615 -31619 -31620 -31622 -31623 -31624 -31625 -31627 -31628 -31630 -31631 -31632 -31633 -31640 -31641 -31643 -31644 -31646 -31647 -31649 -31650 -31651 -31652 -31660 -31661 -31662 -31664 -31665 -31669 -31670 -31671 -31672 -31673 -31674 -31675 -31680 -31681 -31684 -31685 -31686 -31687 -31688 -31690 -31691 -31692 -31693 -31694 -31695 -31696 -31697 -31698 -31699 -31700 -31704 -31710 -31720 -31730 -31735 -31740 -31750 -31755 -31758 -31760 -31770 -31776 -31777 -31778 -31779 -31780 -31789 -31800 -31803 -31804 -31806 -31807 -31810 -31820 -31821 -31822 -31823 -31829 -31830 -31831 -31832 -31837 -31840 -31844 -31845 -31846 -31847 -31849 -31850 -31851 -31852 -31855 -31856 -31857 -31858 -31859 -31860 -31861 -31862 -31863 -31870 -31880 -31881 -31883 -31884 -31885 -31890 -31891 -31894 -31895 -31896 -31897 -31898 -31899 -31900 -31901 -31902 -31905 -31908 -31910 -31911 -31915 -31920 -31921 -31922 -31924 -31927 -31928 -31930 -31931 -31933 -31940 -31942 -31943 -31944 -31945 -31950 -31953 -31954 -31955 -31956 -31957 -31959 -31960 -31962 -31963 -31964 -31965 -31966 -31967 -31969 -31970 -31971 -31972 -31973 -31974 -31976 -31977 -31978 -31979 -31980 -31982 -31983 -31984 -31985 -31986 -31987 -31988 -31990 -31991 -31992 -31994 -31996 -31997 -32000 -32010 -32020 -32030 -32040 -32050 -32060 -32070 -32080 -32090 -32100 -32107 -32108 -32109 -32110 -32120 -32127 -32130 -32140 -32150 -32153 -32159 -32160 -32170 -32177 -32178 -32180 -32190 -32200 -32210 -32215 -32217 -32220 -32223 -32230 -32234 -32240 -32250 -32260 -32270 -32280 -32290 -32295 -32299 -32300 -32310 -32315 -32317 -32319 -32320 -32328 -32330 -32340 -32344 -32345 -32349 -32350 -32354 -32360 -32369 -32370 -32376 -32377 -32379 -32380 -32385 -32388 -32389 -32390 -32395 -32398 -32399 -32400 -32401 -32402 -32403 -32404 -32405 -32407 -32408 -32409 -32410 -32413 -32414 -32415 -32416 -32417 -32419 -32422 -32423 -32424 -32425 -32427 -32430 -32434 -32435 -32437 -32439 -32440 -32446 -32448 -32449 -32450 -32451 -32452 -32457 -32459 -32460 -32468 -32469 -32470 -32471 -32472 -32500 -32505 -32507 -32508 -32509 -32510 -32517 -32519 -32520 -32528 -32530 -32534 -32535 -32536 -32537 -32538 -32539 -32540 -32543 -32544 -32545 -32546 -32548 -32550 -32553 -32557 -32560 -32563 -32564 -32573 -32574 -32575 -32576 -32577 -32580 -32583 -32584 -32585 -32586 -32587 -32590 -32594 -32598 -32599 -32600 -32605 -32606 -32607 -32609 -32616 -32617 -32618 -32620 -32625 -32628 -32629 -32630 -32640 -32647 -32648 -32649 -32650 -32652 -32653 -32654 -32658 -32659 -32660 -32661 -32662 -32663 -32664 -32665 -32667 -32668 -32669 -32670 -32673 -32674 -32675 -32676 -32677 -32678 -32679 -32680 -32683 -32685 -32688 -32690 -32692 -32693 -32694 -32695 -32696 -32697 -32698 -32699 -32700 -32701 -32702 -32720 -32721 -32722 -32724 -32725 -32726 -32730 -32740 -32741 -32742 -32743 -32750 -32752 -32754 -32758 -32760 -32765 -32767 -32770 -32774 -32776 -32777 -32780 -32783 -32784 -32789 -32790 -32791 -32792 -32800 -32811 -32812 -32813 -32814 -32815 -32818 -32820 -32840 -32845 -32847 -32850 -32853 -32854 -32880 -32882 -32883 -32884 -32885 -32886 -32887 -32888 -32889 -32890 -32891 -32893 -32894 -32895 -32896 -32897 -32901 -32902 -32910 -32912 -32914 -32917 -32918 -32930 -32931 -32932 -32933 -32939 -32940 -32944 -32948 -32949 -32950 -32951 -32952 -32953 -32955 -32957 -32958 -32980 -32985 -32992 -32994 -32995 -32996 -32997 -32998 -33000 -33010 -33016 -33017 -33018 -33019 -33020 -33029 -33030 -33038 -33039 -33040 -33050 -33058 -33059 -33060 -33065 -33066 -33067 -33068 -33069 -33070 -33076 -33077 -33078 -33079 -33080 -33084 -33085 -33086 -33087 -33088 -33089 -33090 -33100 -33101 -33102 -33103 -33106 -33107 -33110 -33120 -33123 -33124 -33125 -33127 -33128 -33130 -33131 -33132 -33133 -33135 -33136 -33137 -33138 -33139 -33140 -33142 -33145 -33146 -33147 -33148 -33150 -33151 -33153 -33154 -33156 -33157 -33158 -33159 -33160 -33165 -33166 -33167 -33170 -33179 -33180 -33181 -33182 -33183 -33184 -33185 -33187 -33188 -33190 -33194 -33195 -33198 -33200 -33201 -33202 -33203 -33205 -33208 -33209 -33210 -33211 -33217 -33220 -33221 -33226 -33227 -33228 -33229 -33233 -33237 -33240 -33243 -33244 -33245 -33247 -33248 -33250 -33251 -33252 -33253 -33255 -33256 -33257 -33258 -33259 -33260 -33261 -33262 -33263 -33264 -33265 -33266 -33268 -33269 -33270 -33271 -33272 -33273 -33274 -33280 -33281 -33283 -33284 -33285 -33286 -33287 -33288 -33295 -33296 -33297 -33298 -33299 -33300 -33301 -33309 -33310 -33314 -33318 -33320 -33321 -33324 -33325 -33326 -33327 -33328 -33329 -33330 -33331 -33339 -33340 -33346 -33347 -33350 -33360 -33361 -33364 -33365 -33369 -33370 -33380 -33383 -33384 -33385 -33388 -33390 -33391 -33392 -33393 -33400 -33407 -33408 -33410 -33413 -33418 -33419 -33420 -33421 -33422 -33424 -33425 -33426 -33430 -33431 -33432 -33433 -33435 -33440 -33443 -33444 -33450 -33451 -33453 -33454 -33455 -33456 -33460 -33463 -33464 -33470 -33471 -33474 -33475 -33476 -33478 -33480 -33481 -33482 -33483 -33484 -33485 -33486 -33487 -33488 -33490 -33491 -33492 -33493 -33494 -33495 -33496 -33498 -33499 -33500 -33505 -33530 -33531 -33535 -33536 -33537 -33538 -33539 -33540 -33544 -33545 -33550 -33551 -33553 -33555 -33560 -33561 -33563 -33564 -33566 -33567 -33568 -33570 -33571 -33573 -33574 -33575 -33576 -33577 -33580 -33583 -33585 -33587 -33589 -33600 -33601 -33604 -33605 -33610 -33618 -33620 -33621 -33622 -33623 -33624 -33625 -33626 -33627 -33628 -33640 -33647 -33649 -33650 -33651 -33652 -33653 -33655 -33663 -33665 -33669 -33670 -33671 -33673 -33677 -33679 -33680 -33681 -33682 -33690 -33700 -33710 -33720 -33730 -33737 -33738 -33739 -33740 -33747 -33748 -33749 -33750 -33759 -33760 -33765 -33767 -33768 -33769 -33770 -33777 -33778 -33779 -33800 -33810 -33814 -33815 -33820 -33825 -33826 -33830 -33834 -33836 -33838 -33839 -33840 -33846 -33848 -33850 -33855 -33856 -33857 -33858 -33860 -33863 -33868 -33869 -33870 -33879 -33880 -33884 -33885 -33886 -33890 -33896 -33898 -33900 -33902 -33903 -33904 -33910 -33920 -33921 -33922 -33924 -33925 -33929 -33930 -33936 -33939 -33940 -33941 -33942 -33943 -33944 -33960 -33961 -33962 -33963 -33964 -33969 -33980 -33982 -33984 -33985 -33986 -33989 -33990 -33991 -33992 -33993 -33996 -34000 -34005 -34008 -34009 -34010 -34014 -34015 -34016 -34017 -34018 -34020 -34024 -34027 -34028 -34029 -34030 -34037 -34038 -34039 -34040 -34043 -34044 -34045 -34046 -34047 -34048 -34049 -34050 -34058 -34060 -34069 -34070 -34074 -34075 -34076 -34077 -34078 -34079 -34080 -34090 -34095 -34100 -34101 -34104 -34105 -34106 -34107 -34108 -34109 -34110 -34116 -34119 -34120 -34123 -34124 -34125 -34127 -34128 -34129 -34130 -34135 -34136 -34137 -34138 -34139 -34140 -34144 -34145 -34146 -34147 -34149 -34150 -34156 -34157 -34158 -34159 -34160 -34162 -34163 -34164 -34165 -34166 -34167 -34168 -34169 -34170 -34175 -34176 -34177 -34178 -34179 -34180 -34186 -34187 -34188 -34189 -34190 -34194 -34195 -34196 -34197 -34198 -34199 -34200 -34204 -34205 -34206 -34207 -34208 -34209 -34210 -34214 -34215 -34216 -34217 -34218 -34219 -34220 -34224 -34225 -34226 -34227 -34228 -34229 -34230 -34233 -34234 -34235 -34236 -34237 -34238 -34239 -34240 -34250 -34260 -34269 -34270 -34277 -34278 -34279 -34280 -34284 -34285 -34286 -34287 -34288 -34289 -34290 -34298 -34299 -34300 -34301 -34302 -34303 -34304 -34305 -34306 -34307 -34308 -34309 -34310 -34311 -34312 -34313 -34315 -34316 -34317 -34318 -34319 -34320 -34321 -34323 -34324 -34325 -34327 -34329 -34330 -34331 -34332 -34333 -34338 -34339 -34340 -34341 -34342 -34344 -34345 -34346 -34348 -34349 -34350 -34351 -34353 -34355 -34358 -34360 -34361 -34362 -34363 -34369 -34370 -34371 -34372 -34373 -34374 -34375 -34376 -34380 -34385 -34390 -34399 -34400 -34401 -34402 -34403 -34404 -34405 -34406 -34407 -34408 -34410 -34411 -34412 -34413 -34414 -34415 -34417 -34418 -34419 -34420 -34421 -34423 -34426 -34427 -34428 -34429 -34430 -34431 -34432 -34433 -34438 -34439 -34440 -34441 -34442 -34443 -34445 -34447 -34448 -34450 -34453 -34454 -34455 -34456 -34457 -34460 -34461 -34462 -34463 -34464 -34465 -34466 -34467 -34468 -34470 -34471 -34472 -34473 -34474 -34475 -34476 -34477 -34480 -34482 -34483 -34484 -34485 -34486 -34487 -34488 -34489 -34490 -34492 -34493 -34494 -34495 -34496 -34497 -34498 -34500 -34513 -34514 -34515 -34516 -34517 -34518 -34520 -34522 -34523 -34526 -34530 -34531 -34540 -34543 -34544 -34545 -34548 -34550 -34551 -34553 -34555 -34557 -34559 -34560 -34563 -34568 -34570 -34572 -34575 -34579 -34580 -34583 -34584 -34585 -34586 -34587 -34589 -34590 -34591 -34592 -34595 -34596 -34599 -34600 -34601 -34602 -34603 -34606 -34607 -34608 -34609 -34610 -34611 -34613 -34614 -34615 -34616 -34617 -34619 -34620 -34621 -34622 -34623 -34624 -34625 -34629 -34630 -34634 -34635 -34636 -34637 -34638 -34639 -34640 -34644 -34646 -34647 -34648 -34649 -34650 -34651 -34653 -34654 -34657 -34658 -34659 -34660 -34666 -34667 -34668 -34669 -34670 -34671 -34672 -34673 -34674 -34675 -34676 -34679 -34680 -34682 -34683 -34684 -34687 -34688 -34690 -34691 -34692 -34694 -34695 -34696 -34699 -34700 -34701 -34703 -34710 -34715 -34720 -34724 -34728 -34729 -34730 -34731 -34739 -34740 -34742 -34743 -34744 -34745 -34746 -34747 -34748 -34749 -34750 -34753 -34754 -34758 -34760 -34763 -34765 -34766 -34767 -34768 -34770 -34771 -34774 -34775 -34776 -34777 -34780 -34782 -34785 -34787 -34788 -34790 -34791 -34793 -34799 -34800 -34801 -34802 -34804 -34808 -34810 -34811 -34819 -34820 -34821 -34822 -34825 -34829 -34830 -34840 -34842 -34843 -34844 -34845 -34848 -34850 -34851 -34852 -34853 -34854 -34855 -34858 -34860 -34861 -34862 -34863 -34864 -34866 -34867 -34880 -34881 -34885 -34890 -34892 -34893 -34895 -34896 -34898 -34899 -34900 -34902 -34904 -34905 -34906 -34908 -34920 -34931 -34933 -34940 -34942 -34945 -34946 -34947 -34948 -34950 -34951 -34952 -34954 -34956 -34957 -34958 -34960 -34962 -34963 -34964 -34966 -34967 -34968 -34970 -34971 -34972 -34974 -34975 -34976 -34977 -34980 -34982 -34985 -34986 -34987 -34989 -34990 -34993 -34994 -34995 -34996 -34997 -35000 -35003 -35010 -35014 -35015 -35017 -35018 -35019 -35020 -35024 -35025 -35026 -35027 -35028 -35029 -35030 -35038 -35039 -35040 -35043 -35044 -35045 -35046 -35047 -35048 -35049 -35050 -35054 -35055 -35056 -35057 -35058 -35059 -35060 -35064 -35065 -35067 -35068 -35069 -35070 -35072 -35073 -35077 -35078 -35079 -35080 -35090 -35099 -35100 -35101 -35102 -35103 -35104 -35105 -35106 -35107 -35110 -35111 -35112 -35113 -35114 -35115 -35117 -35118 -35119 -35120 -35121 -35122 -35123 -35127 -35128 -35129 -35130 -35131 -35132 -35133 -35134 -35135 -35136 -35137 -35139 -35140 -35141 -35143 -35144 -35146 -35147 -35150 -35153 -35154 -35155 -35156 -35157 -35158 -35159 -35160 -35164 -35165 -35166 -35167 -35168 -35169 -35170 -35171 -35173 -35174 -35175 -35179 -35180 -35181 -35182 -35183 -35184 -35185 -35186 -35187 -35188 -35189 -35190 -35191 -35192 -35193 -35196 -35197 -35199 -35200 -35210 -35213 -35214 -35216 -35219 -35220 -35222 -35223 -35224 -35226 -35227 -35230 -35233 -35235 -35236 -35237 -35238 -35239 -35241 -35244 -35245 -35246 -35247 -35248 -35270 -35276 -35279 -35287 -35288 -35289 -35290 -35291 -35292 -35293 -35296 -35297 -35298 -35299 -35300 -35306 -35310 -35312 -35318 -35320 -35321 -35327 -35328 -35332 -35335 -35340 -35341 -35343 -35345 -35350 -35357 -35360 -35363 -35364 -35366 -35367 -35368 -35370 -35371 -35372 -35373 -35374 -35375 -35380 -35381 -35383 -35385 -35386 -35390 -35393 -35395 -35400 -35404 -35406 -35407 -35409 -35410 -35413 -35414 -35417 -35422 -35424 -35430 -35436 -35440 -35444 -35445 -35446 -35447 -35448 -35450 -35459 -35460 -35470 -35474 -35475 -35476 -35477 -35478 -35480 -35481 -35482 -35483 -35485 -35486 -35487 -35488 -35490 -35493 -35497 -35498 -35499 -35500 -35501 -35502 -35503 -35504 -35505 -35506 -35510 -35512 -35513 -35514 -35519 -35520 -35521 -35525 -35526 -35530 -35531 -35532 -35533 -35540 -35547 -35549 -35550 -35553 -35560 -35561 -35570 -35576 -35580 -35590 -35596 -35597 -35600 -35604 -35605 -35606 -35607 -35609 -35610 -35614 -35615 -35616 -35617 -35619 -35626 -35627 -35630 -35631 -35632 -35634 -35636 -35637 -35638 -35640 -35641 -35644 -35645 -35646 -35647 -35648 -35650 -35651 -35653 -35654 -35658 -35659 -35660 -35661 -35663 -35665 -35666 -35667 -35668 -35670 -35671 -35672 -35676 -35678 -35679 -35680 -35681 -35682 -35683 -35684 -35685 -35686 -35687 -35690 -35693 -35695 -35696 -35697 -35698 -35700 -35701 -35702 -35703 -35704 -35705 -35706 -35710 -35711 -35712 -35717 -35718 -35719 -35720 -35725 -35729 -35730 -35740 -35750 -35751 -35752 -35753 -35754 -35760 -35762 -35763 -35764 -35766 -35767 -35769 -35770 -35779 -35780 -35781 -35782 -35783 -35784 -35787 -35789 -35790 -35791 -35792 -35793 -35794 -35795 -35797 -35798 -35799 -35800 -35801 -35802 -35803 -35804 -35806 -35807 -35810 -35811 -35812 -35813 -35814 -35815 -35820 -35822 -35823 -35830 -35837 -35838 -35839 -35840 -35841 -35842 -35843 -35844 -35845 -35850 -35851 -35852 -35853 -35854 -35857 -35860 -35861 -35862 -35863 -35870 -35871 -35874 -35880 -35882 -35883 -35890 -35891 -35895 -35899 -35900 -35901 -35903 -35904 -35905 -35907 -35910 -35911 -35917 -35918 -35920 -35922 -35923 -35925 -35930 -35932 -35937 -35938 -35940 -35942 -35944 -35945 -35947 -35950 -35951 -35952 -35955 -35960 -35963 -35964 -35965 -35970 -35973 -35990 -35996 -35998 -36000 -36003 -36008 -36009 -36010 -36020 -36030 -36040 -36050 -36059 -36060 -36070 -36080 -36089 -36090 -36093 -36100 -36110 -36112 -36113 -36118 -36119 -36120 -36122 -36125 -36126 -36127 -36128 -36130 -36132 -36135 -36140 -36142 -36143 -36149 -36150 -36155 -36158 -36159 -36160 -36169 -36170 -36172 -36200 -36202 -36203 -36204 -36206 -36207 -36210 -36211 -36212 -36213 -36214 -36215 -36216 -36217 -36218 -36219 -36220 -36230 -36232 -36233 -36234 -36240 -36243 -36244 -36245 -36246 -36249 -36250 -36252 -36253 -36255 -36256 -36257 -36258 -36260 -36262 -36263 -36264 -36266 -36267 -36268 -36269 -36270 -36272 -36273 -36274 -36275 -36276 -36277 -36278 -36279 -36280 -36281 -36282 -36283 -36284 -36285 -36286 -36289 -36290 -36292 -36293 -36294 -36296 -36298 -36300 -36310 -36312 -36313 -36320 -36322 -36330 -36333 -36340 -36342 -36350 -36352 -36353 -36354 -36360 -36361 -36364 -36365 -36369 -36370 -36372 -36379 -36380 -36390 -36400 -36402 -36403 -36404 -36405 -36406 -36407 -36408 -36410 -36411 -36412 -36413 -36414 -36416 -36418 -36420 -36424 -36425 -36427 -36428 -36430 -36432 -36433 -36434 -36435 -36436 -36438 -36440 -36441 -36442 -36443 -36444 -36445 -36446 -36447 -36450 -36452 -36454 -36455 -36456 -36457 -36458 -36459 -36460 -36463 -36465 -36467 -36468 -36469 -36470 -36471 -36472 -36473 -36474 -36475 -36476 -36479 -36480 -36481 -36482 -36483 -36484 -36485 -36486 -36487 -36490 -36493 -36497 -36500 -36510 -36511 -36512 -36513 -36514 -36515 -36520 -36524 -36525 -36526 -36530 -36540 -36541 -36542 -36543 -36544 -36545 -36546 -36547 -36550 -36554 -36555 -36556 -36557 -36559 -36560 -36566 -36567 -36568 -36570 -36576 -36577 -36578 -36580 -36584 -36586 -36587 -36588 -36589 -36590 -36595 -36597 -36599 -36600 -36610 -36611 -36612 -36613 -36614 -36615 -36620 -36622 -36624 -36625 -36626 -36630 -36631 -36633 -36640 -36643 -36644 -36648 -36649 -36650 -36659 -36660 -36666 -36667 -36668 -36669 -36670 -36680 -36683 -36687 -36690 -36691 -36698 -36699 -36700 -36704 -36710 -36714 -36715 -36720 -36722 -36723 -36724 -36725 -36726 -36730 -36732 -36733 -36740 -36743 -36744 -36746 -36747 -36748 -36749 -36750 -36752 -36753 -36754 -36759 -36760 -36764 -36765 -36770 -36772 -36773 -36774 -36775 -36776 -36780 -36782 -36783 -36784 -36785 -36786 -36790 -36793 -36800 -36801 -36802 -36805 -36806 -36807 -36810 -36811 -36812 -36813 -36815 -36816 -36820 -36821 -36822 -36824 -36825 -36826 -36827 -36829 -36830 -36832 -36834 -36835 -36836 -36837 -36838 -36840 -36843 -36844 -36845 -36846 -36847 -36849 -36850 -36852 -36855 -36856 -36857 -36860 -36861 -36862 -36863 -36867 -36868 -36869 -36870 -36871 -36872 -36873 -36874 -36875 -36877 -36878 -36880 -36881 -36882 -36883 -36885 -36886 -36887 -36888 -36890 -36892 -36893 -36895 -36896 -36897 -36899 -36900 -36902 -36903 -36905 -36907 -36908 -36910 -36911 -36912 -36913 -36916 -36917 -36918 -36920 -36921 -36922 -36925 -36926 -36927 -36928 -36929 -36930 -36931 -36932 -36933 -36934 -36940 -36941 -36942 -36943 -36944 -36945 -36947 -36948 -36950 -36951 -36952 -36953 -36954 -36955 -36956 -36959 -36960 -36962 -36963 -36964 -36967 -36968 -36969 -36970 -36972 -36973 -36974 -36975 -36976 -36977 -36978 -36979 -36980 -36981 -36982 -36983 -36984 -36988 -36989 -36990 -36992 -36993 -36994 -36995 -36996 -36997 -36998 -37000 -37004 -37010 -37020 -37100 -37104 -37105 -37106 -37107 -37108 -37109 -37110 -37118 -37119 -37120 -37123 -37125 -37128 -37129 -37130 -37134 -37138 -37139 -37140 -37147 -37148 -37149 -37150 -37156 -37157 -37160 -37168 -37170 -37178 -37179 -37180 -37187 -37188 -37189 -37190 -37199 -37200 -37204 -37205 -37206 -37207 -37208 -37209 -37210 -37217 -37218 -37219 -37220 -37225 -37227 -37230 -37233 -37234 -37235 -37236 -37237 -37238 -37239 -37240 -37249 -37250 -37257 -37258 -37259 -37260 -37266 -37267 -37268 -37269 -37270 -37276 -37277 -37278 -37279 -37280 -37287 -37288 -37289 -37290 -37294 -37295 -37296 -37297 -37298 -37299 -37300 -37306 -37315 -37316 -37317 -37318 -37319 -37320 -37327 -37328 -37330 -37340 -37350 -37353 -37355 -37356 -37357 -37358 -37360 -37364 -37366 -37368 -37369 -37380 -37390 -37399 -37400 -37407 -37408 -37410 -37414 -37415 -37416 -37417 -37418 -37419 -37420 -37425 -37426 -37427 -37428 -37430 -37433 -37434 -37436 -37438 -37439 -37440 -37443 -37444 -37446 -37448 -37450 -37455 -37456 -37457 -37458 -37460 -37468 -37470 -37477 -37478 -37479 -37480 -37487 -37490 -37499 -37500 -37510 -37520 -37526 -37530 -37536 -37537 -37538 -37539 -37545 -37547 -37548 -37549 -37550 -37555 -37557 -37560 -37564 -37565 -37566 -37570 -37580 -37590 -37600 -37601 -37602 -37603 -37604 -37605 -37606 -37608 -37610 -37611 -37612 -37613 -37614 -37615 -37616 -37620 -37622 -37623 -37624 -37625 -37629 -37630 -37631 -37632 -37633 -37634 -37635 -37640 -37641 -37642 -37643 -37644 -37645 -37647 -37650 -37654 -37655 -37656 -37660 -37663 -37664 -37665 -37666 -37667 -37668 -37669 -37670 -37672 -37673 -37675 -37680 -37683 -37684 -37685 -37686 -37687 -37688 -37689 -37700 -37710 -37712 -37713 -37715 -37716 -37717 -37720 -37725 -37727 -37728 -37729 -37730 -37732 -37733 -37734 -37735 -37736 -37737 -37740 -37745 -37746 -37747 -37748 -37750 -37755 -37759 -37760 -37765 -37768 -37769 -37770 -37790 -37795 -37796 -37797 -37800 -37802 -37803 -37804 -37805 -37806 -37807 -37808 -37810 -37812 -37813 -37814 -37815 -37816 -37817 -37819 -37820 -37821 -37823 -37824 -37825 -37826 -37828 -37829 -37830 -37832 -37838 -37840 -37842 -37843 -37844 -37848 -37849 -37850 -37851 -37852 -37853 -37854 -37855 -37857 -37858 -37859 -37860 -37861 -37862 -37863 -37864 -37865 -37867 -37868 -37869 -37880 -37882 -37883 -37884 -37885 -37886 -37888 -37890 -37893 -37894 -37895 -37896 -37897 -37898 -37899 -37900 -37902 -37903 -37904 -37905 -37906 -37908 -37910 -37911 -37912 -37913 -37914 -37915 -37916 -37917 -37920 -37921 -37923 -37924 -37925 -37926 -37927 -37928 -37930 -37932 -37933 -37934 -37935 -37936 -37937 -37938 -37939 -37940 -37942 -37943 -37945 -37946 -37947 -37948 -37949 -37950 -37952 -37955 -37958 -37960 -37961 -37962 -37963 -37964 -37965 -37966 -37967 -37968 -37970 -37971 -37973 -37975 -37976 -37977 -37980 -37981 -37982 -37983 -37984 -37985 -37988 -37989 -37990 -37991 -37992 -37993 -37995 -37996 -37997 -37998 -38000 -38008 -38009 -38010 -38013 -38014 -38015 -38016 -38017 -38018 -38019 -38020 -38022 -38023 -38024 -38027 -38028 -38030 -38033 -38034 -38035 -38036 -38040 -38044 -38046 -38047 -38048 -38049 -38050 -38057 -38060 -38065 -38067 -38068 -38070 -38077 -38078 -38079 -38080 -38083 -38085 -38088 -38089 -38090 -38095 -38096 -38097 -38098 -38099 -38100 -38102 -38104 -38110 -38111 -38114 -38115 -38117 -38118 -38119 -38120 -38121 -38125 -38127 -38130 -38132 -38133 -38135 -38137 -38140 -38141 -38142 -38143 -38144 -38145 -38146 -38147 -38150 -38152 -38153 -38154 -38155 -38156 -38157 -38158 -38159 -38160 -38162 -38165 -38170 -38171 -38172 -38173 -38175 -38180 -38181 -38182 -38185 -38190 -38191 -38192 -38193 -38194 -38198 -38200 -38202 -38203 -38204 -38205 -38206 -38208 -38209 -38210 -38212 -38213 -38214 -38215 -38219 -38220 -38222 -38224 -38225 -38227 -38229 -38240 -38241 -38243 -38244 -38245 -38246 -38248 -38250 -38251 -38253 -38254 -38255 -38256 -38258 -38260 -38269 -38270 -38271 -38272 -38273 -38280 -38285 -38290 -38291 -38293 -38294 -38300 -38309 -38310 -38312 -38314 -38315 -38317 -38320 -38322 -38324 -38329 -38330 -38332 -38337 -38338 -38342 -38343 -38344 -38345 -38346 -38349 -38350 -38356 -38357 -38358 -38359 -38360 -38362 -38363 -38370 -38380 -38382 -38390 -38400 -38402 -38403 -38405 -38406 -38407 -38410 -38411 -38412 -38413 -38414 -38420 -38422 -38423 -38430 -38432 -38434 -38437 -38438 -38440 -38441 -38442 -38443 -38444 -38445 -38446 -38447 -38450 -38452 -38453 -38454 -38457 -38458 -38459 -38460 -38461 -38462 -38463 -38464 -38465 -38466 -38467 -38470 -38472 -38473 -38474 -38475 -38476 -38477 -38478 -38479 -38480 -38481 -38482 -38483 -38484 -38485 -38486 -38487 -38500 -38501 -38502 -38507 -38510 -38511 -38512 -38513 -38517 -38519 -38520 -38521 -38522 -38525 -38526 -38528 -38530 -38531 -38532 -38533 -38534 -38535 -38536 -38537 -38538 -38539 -38540 -38542 -38543 -38544 -38545 -38546 -38548 -38549 -38550 -38552 -38553 -38554 -38555 -38556 -38558 -38560 -38561 -38562 -38563 -38564 -38567 -38568 -38570 -38574 -38576 -38580 -38582 -38586 -38590 -38592 -38593 -38594 -38595 -38596 -38597 -38598 -38600 -38610 -38612 -38613 -38620 -38630 -38640 -38642 -38650 -38652 -38660 -38663 -38664 -38672 -38673 -38679 -38680 -38682 -38689 -38700 -38701 -38702 -38703 -38704 -38705 -38706 -38708 -38709 -38710 -38712 -38713 -38714 -38715 -38716 -38717 -38720 -38724 -38725 -38730 -38731 -38732 -38733 -38734 -38735 -38736 -38737 -38738 -38739 -38740 -38741 -38742 -38743 -38747 -38748 -38750 -38751 -38752 -38753 -38756 -38760 -38761 -38762 -38763 -38767 -38770 -38771 -38772 -38780 -38781 -38783 -38784 -38785 -38786 -38790 -38792 -38793 -38794 -38795 -38796 -38797 -38798 -38799 -38800 -38810 -38817 -38820 -38823 -38825 -38826 -38827 -38830 -38833 -38834 -38835 -38836 -38837 -38840 -38844 -38845 -38848 -38850 -38853 -38854 -38855 -38860 -38863 -38864 -38865 -38866 -38867 -38868 -38870 -38873 -38874 -38880 -38887 -38900 -38902 -38903 -38904 -38905 -38909 -38910 -38911 -38912 -38913 -38914 -38915 -38919 -38920 -38921 -38930 -38931 -38932 -38933 -38940 -38942 -38943 -38944 -38945 -38946 -38947 -38949 -38950 -38951 -38952 -38953 -38954 -38955 -38956 -38960 -38961 -38964 -38965 -38967 -38968 -38969 -38970 -38972 -38973 -38974 -38975 -38976 -38977 -38978 -38979 -38980 -38982 -38983 -38984 -38985 -38986 -38987 -38988 -38989 -38990 -38991 -38992 -38993 -38994 -38995 -38996 -38997 -38998 -39000 -39008 -39009 -39010 -39012 -39014 -39015 -39016 -39017 -39018 -39020 -39022 -39025 -39026 -39028 -39029 -39030 -39034 -39035 -39036 -39037 -39038 -39039 -39040 -39043 -39044 -39047 -39048 -39049 -39050 -39056 -39058 -39059 -39060 -39068 -39069 -39070 -39073 -39074 -39075 -39076 -39077 -39078 -39079 -39080 -39085 -39086 -39087 -39089 -39090 -39091 -39092 -39095 -39096 -39097 -39100 -39101 -39102 -39103 -39104 -39105 -39106 -39107 -39110 -39111 -39112 -39113 -39115 -39116 -39118 -39119 -39120 -39122 -39123 -39125 -39126 -39127 -39128 -39129 -39130 -39131 -39132 -39133 -39134 -39135 -39136 -39137 -39138 -39140 -39141 -39142 -39143 -39144 -39145 -39149 -39150 -39151 -39154 -39155 -39159 -39160 -39161 -39162 -39163 -39164 -39165 -39166 -39169 -39170 -39172 -39173 -39174 -39175 -39177 -39178 -39179 -39180 -39181 -39183 -39190 -39193 -39195 -39196 -39197 -39198 -39199 -39200 -39202 -39203 -39204 -39205 -39206 -39207 -39208 -39209 -39210 -39211 -39212 -39216 -39217 -39218 -39219 -39220 -39221 -39222 -39223 -39224 -39225 -39229 -39230 -39232 -39233 -39234 -39235 -39236 -39237 -39240 -39241 -39249 -39250 -39251 -39252 -39253 -39255 -39256 -39257 -39258 -39259 -39260 -39261 -39263 -39264 -39265 -39266 -39267 -39269 -39270 -39271 -39272 -39273 -39274 -39275 -39277 -39279 -39280 -39281 -39282 -39283 -39284 -39286 -39287 -39288 -39289 -39290 -39291 -39294 -39299 -39300 -39350 -39355 -39357 -39358 -39359 -39360 -39370 -39380 -39385 -39386 -39390 -39400 -39405 -39406 -39407 -39410 -39412 -39420 -39422 -39425 -39430 -39450 -39460 -39463 -39467 -39470 -39473 -39474 -39475 -39480 -39489 -39490 -39493 -39499 -39500 -39510 -39520 -39527 -39528 -39529 -39530 -39540 -39550 -39560 -39562 -39570 -39573 -39574 -39580 -39589 -39590 -39598 -39599 -39600 -39610 -39613 -39614 -39615 -39620 -39630 -39633 -39639 -39640 -39649 -39650 -39652 -39660 -39670 -39679 -39680 -39683 -39689 -39690 -39699 -39700 -39703 -39710 -39713 -39714 -39715 -39720 -39723 -39729 -39730 -39740 -39745 -39746 -39747 -39748 -39750 -39753 -39759 -39760 -39770 -39773 -39774 -39780 -39787 -39790 -39799 -39800 -39803 -39810 -39813 -39814 -39820 -39823 -39830 -39840 -39845 -39850 -39859 -39860 -39865 -39866 -39867 -39868 -39869 -39870 -39880 -39887 -39888 -39889 -39890 -39893 -39897 -39898 -39899 -39900 -39901 -39902 -39903 -39904 -39905 -39906 -39908 -39909 -39910 -39912 -39915 -39917 -39918 -39919 -39920 -39921 -39922 -39923 -39924 -39925 -39926 -39927 -39928 -39930 -39931 -39932 -39933 -39934 -39935 -39936 -39937 -39940 -39941 -39942 -39944 -39946 -39948 -39949 -39950 -39951 -39952 -39956 -39957 -39958 -39959 -39960 -39962 -39963 -39964 -39965 -39966 -39967 -39968 -39970 -39971 -39972 -39976 -39980 -39981 -39984 -39985 -39986 -39987 -39989 -39990 -39992 -39995 -39997 -40000 -40010 -40011 -40014 -40015 -40020 -40023 -40024 -40025 -40030 -40032 -40033 -40034 -40036 -40040 -40044 -40045 -40046 -40050 -40052 -40053 -40054 -40057 -40060 -40066 -40067 -40068 -40070 -40080 -40083 -40090 -40095 -40096 -40097 -40098 -40099 -40100 -40101 -40102 -40104 -40110 -40111 -40112 -40113 -40114 -40120 -40130 -40132 -40133 -40134 -40136 -40137 -40138 -40140 -40141 -40142 -40143 -40144 -40150 -40151 -40152 -40160 -40162 -40163 -40164 -40165 -40166 -40170 -40171 -40172 -40173 -40174 -40180 -40181 -40182 -40185 -40186 -40187 -40188 -40189 -40190 -40191 -40192 -40193 -40194 -40195 -40196 -40199 -40200 -40210 -40211 -40213 -40220 -40221 -40222 -40223 -40225 -40230 -40238 -40239 -40240 -40250 -40252 -40253 -40260 -40265 -40270 -40272 -40273 -40274 -40275 -40280 -40288 -40289 -40290 -40293 -40300 -40301 -40302 -40303 -40305 -40306 -40307 -40310 -40311 -40312 -40314 -40315 -40316 -40318 -40319 -40320 -40321 -40322 -40323 -40325 -40326 -40327 -40329 -40330 -40333 -40334 -40335 -40336 -40337 -40338 -40340 -40341 -40342 -40347 -40348 -40350 -40351 -40352 -40355 -40360 -40361 -40362 -40363 -40364 -40370 -40371 -40372 -40373 -40374 -40376 -40380 -40381 -40382 -40383 -40387 -40390 -40391 -40392 -40394 -40395 -40396 -40397 -40398 -40400 -40402 -40403 -40404 -40405 -40406 -40407 -40408 -40409 -40410 -40411 -40412 -40413 -40414 -40415 -40416 -40417 -40420 -40421 -40422 -40423 -40424 -40425 -40426 -40428 -40429 -40430 -40431 -40436 -40440 -40441 -40444 -40450 -40451 -40453 -40460 -40461 -40463 -40464 -40465 -40466 -40469 -40470 -40471 -40472 -40473 -40474 -40476 -40477 -40479 -40480 -40481 -40482 -40483 -40485 -40486 -40487 -40488 -40489 -40490 -40491 -40494 -40496 -40497 -40498 -40500 -40502 -40503 -40505 -40506 -40507 -40508 -40509 -40510 -40511 -40512 -40513 -40514 -40515 -40516 -40517 -40518 -40520 -40521 -40522 -40523 -40528 -40529 -40531 -40532 -40533 -40534 -40535 -40537 -40538 -40539 -40540 -40541 -40542 -40543 -40544 -40545 -40547 -40548 -40549 -40550 -40551 -40552 -40553 -40560 -40561 -40562 -40563 -40568 -40570 -40571 -40572 -40573 -40574 -40579 -40580 -40581 -40582 -40583 -40584 -40585 -40586 -40590 -40591 -40592 -40593 -40595 -40596 -40597 -40598 -40599 -40600 -40602 -40603 -40604 -40605 -40606 -40607 -40609 -40610 -40611 -40616 -40620 -40621 -40630 -40631 -40632 -40633 -40634 -40635 -40636 -40638 -40639 -40640 -40642 -40643 -40644 -40645 -40646 -40647 -40648 -40649 -40650 -40652 -40653 -40655 -40657 -40658 -40659 -40660 -40661 -40662 -40663 -40664 -40665 -40670 -40671 -40672 -40673 -40674 -40675 -40676 -40677 -40678 -40679 -40680 -40681 -40682 -40683 -40684 -40687 -40688 -40689 -40690 -40691 -40692 -40693 -40695 -40696 -40700 -40701 -40702 -40703 -40704 -40705 -40706 -40708 -40709 -40710 -40711 -40712 -40715 -40716 -40717 -40719 -40720 -40723 -40727 -40729 -40730 -40731 -40732 -40733 -40734 -40735 -40736 -40737 -40740 -40741 -40744 -40745 -40746 -40747 -40748 -40750 -40751 -40754 -40758 -40760 -40761 -40762 -40764 -40766 -40769 -40770 -40771 -40772 -40773 -40775 -40780 -40781 -40782 -40783 -40784 -40785 -40786 -40788 -40789 -40790 -40791 -40792 -40793 -40795 -40796 -40798 -40799 -40800 -40802 -40803 -40806 -40810 -40811 -40812 -40814 -40815 -40816 -40820 -40824 -40825 -40826 -40827 -40828 -40829 -40830 -40831 -40832 -40833 -40834 -40835 -40836 -40837 -40840 -40841 -40843 -40845 -40847 -40849 -40850 -40852 -40853 -40854 -40855 -40857 -40859 -40860 -40861 -40862 -40864 -40865 -40866 -40867 -40868 -40870 -40871 -40872 -40873 -40874 -40876 -40877 -40878 -40880 -40881 -40882 -40883 -40884 -40885 -40886 -40888 -40889 -40890 -40892 -40893 -40894 -40895 -40896 -40897 -40900 -40902 -40903 -40904 -40905 -40906 -40908 -40909 -40912 -40913 -40914 -40915 -40919 -40920 -40922 -40928 -40929 -40930 -40932 -40933 -40934 -40935 -40936 -40937 -40938 -40939 -40940 -40941 -40942 -40943 -40944 -40947 -40949 -40950 -40951 -40952 -40953 -40954 -40955 -40956 -40957 -40958 -40960 -40961 -40962 -40963 -40964 -40966 -40967 -40968 -40970 -40972 -40973 -40974 -40975 -40976 -40977 -40978 -40980 -40981 -40982 -40983 -40984 -40985 -40986 -40987 -40988 -40989 -40990 -40992 -40994 -40997 -41000 -41002 -41003 -41004 -41007 -41008 -41009 -41010 -41011 -41012 -41013 -41014 -41015 -41019 -41020 -41021 -41022 -41024 -41025 -41028 -41029 -41030 -41031 -41032 -41033 -41034 -41040 -41060 -41061 -41062 -41063 -41070 -41077 -41080 -41083 -41084 -41085 -41086 -41087 -41090 -41091 -41092 -41100 -41102 -41105 -41106 -41107 -41108 -41109 -41110 -41114 -41115 -41116 -41117 -41118 -41119 -41120 -41121 -41122 -41123 -41124 -41126 -41127 -41128 -41129 -41130 -41131 -41132 -41133 -41134 -41137 -41140 -41141 -41142 -41145 -41146 -41147 -41148 -41149 -41150 -41151 -41155 -41156 -41157 -41160 -41161 -41164 -41165 -41166 -41167 -41168 -41170 -41171 -41172 -41173 -41179 -41180 -41190 -41191 -41193 -41194 -41197 -41198 -41199 -41200 -41202 -41204 -41205 -41206 -41207 -41220 -41222 -41230 -41232 -41234 -41240 -41241 -41250 -41251 -41260 -41270 -41272 -41280 -41300 -41302 -41303 -41305 -41310 -41311 -41312 -41320 -41322 -41327 -41328 -41330 -41331 -41340 -41347 -41348 -41349 -41350 -41352 -41353 -41354 -41355 -41356 -41380 -41381 -41384 -41390 -41391 -41392 -41400 -41402 -41403 -41404 -41405 -41406 -41407 -41408 -41410 -41423 -41424 -41425 -41426 -41427 -41428 -41430 -41433 -41434 -41435 -41436 -41437 -41438 -41439 -41440 -41441 -41442 -41443 -41444 -41446 -41450 -41451 -41452 -41460 -41461 -41462 -41463 -41470 -41471 -41480 -41481 -41490 -41491 -41498 -41499 -41500 -41502 -41503 -41505 -41507 -41508 -41510 -41511 -41512 -41520 -41521 -41522 -41523 -41524 -41525 -41530 -41531 -41534 -41535 -41540 -41541 -41542 -41545 -41547 -41550 -41551 -41552 -41554 -41560 -41570 -41600 -41602 -41604 -41605 -41606 -41607 -41610 -41614 -41615 -41620 -41621 -41630 -41640 -41641 -41642 -41643 -41644 -41645 -41646 -41647 -41650 -41651 -41652 -41653 -41654 -41656 -41657 -41660 -41661 -41662 -41667 -41668 -41669 -41670 -41671 -41676 -41677 -41678 -41679 -41680 -41681 -41682 -41688 -41690 -41695 -41700 -41701 -41702 -41703 -41704 -41705 -41707 -41708 -41710 -41711 -41713 -41719 -41720 -41721 -41722 -41723 -41725 -41726 -41729 -41730 -41731 -41733 -41734 -41735 -41736 -41740 -41741 -41742 -41743 -41750 -41753 -41754 -41755 -41760 -41761 -41762 -41763 -41769 -41770 -41771 -41772 -41774 -41775 -41780 -41781 -41782 -41783 -41790 -41800 -41810 -41811 -41820 -41821 -41828 -41829 -41830 -41840 -41841 -41842 -41843 -41844 -41846 -41850 -41851 -41852 -41860 -41870 -41872 -41873 -41874 -41875 -41879 -41880 -41887 -41890 -41892 -41900 -41902 -41903 -41904 -41905 -41906 -41907 -41908 -41911 -41912 -41913 -41914 -41915 -41916 -41920 -41921 -41922 -41925 -41929 -41930 -41933 -41934 -41935 -41936 -41937 -41940 -41943 -41944 -41945 -41946 -41947 -41948 -41949 -41950 -41951 -41952 -41953 -41954 -41955 -41960 -41961 -41962 -41963 -41965 -41968 -41970 -41971 -41972 -41980 -41981 -41990 -41993 -42000 -42004 -42008 -42009 -42010 -42015 -42017 -42018 -42020 -42026 -42027 -42028 -42029 -42030 -42032 -42033 -42034 -42035 -42036 -42037 -42039 -42040 -42050 -42055 -42056 -42057 -42058 -42059 -42060 -42064 -42065 -42070 -42075 -42078 -42079 -42080 -42081 -42082 -42083 -42084 -42086 -42087 -42088 -42090 -42092 -42094 -42095 -42096 -42097 -42098 -42099 -42100 -42101 -42103 -42110 -42111 -42115 -42119 -42120 -42122 -42123 -42125 -42127 -42130 -42139 -42140 -42149 -42150 -42151 -42152 -42160 -42161 -42162 -42163 -42170 -42171 -42177 -42178 -42179 -42180 -42181 -42182 -42183 -42184 -42186 -42190 -42191 -42192 -42200 -42201 -42203 -42205 -42208 -42209 -42210 -42211 -42215 -42220 -42221 -42223 -42230 -42232 -42233 -42234 -42235 -42236 -42237 -42239 -42240 -42241 -42250 -42251 -42253 -42255 -42256 -42259 -42260 -42261 -42262 -42265 -42266 -42267 -42268 -42273 -42274 -42280 -42282 -42284 -42285 -42290 -42291 -42294 -42295 -42298 -42300 -42302 -42303 -42304 -42305 -42306 -42315 -42316 -42317 -42320 -42321 -42323 -42324 -42330 -42332 -42333 -42334 -42335 -42336 -42337 -42338 -42339 -42340 -42341 -42342 -42343 -42344 -42345 -42346 -42348 -42349 -42350 -42351 -42352 -42353 -42354 -42355 -42356 -42357 -42359 -42360 -42361 -42363 -42364 -42366 -42367 -42368 -42370 -42371 -42372 -42373 -42374 -42375 -42376 -42379 -42380 -42381 -42382 -42383 -42384 -42386 -42387 -42389 -42390 -42391 -42392 -42393 -42394 -42395 -42397 -42399 -42400 -42410 -42411 -42412 -42413 -42420 -42422 -42423 -42424 -42430 -42434 -42436 -42438 -42439 -42440 -42443 -42444 -42445 -42446 -42447 -42450 -42457 -42459 -42460 -42461 -42462 -42470 -42471 -42474 -42480 -42481 -42486 -42488 -42490 -42491 -42492 -42495 -42500 -42510 -42523 -42564 -42600 -42601 -42602 -42603 -42604 -42608 -42610 -42620 -42621 -42622 -42623 -42629 -42630 -42640 -42641 -42642 -42643 -42644 -42645 -42646 -42647 -42650 -42651 -42660 -42661 -42670 -42671 -42672 -42680 -42681 -42682 -42683 -42689 -42690 -42700 -42710 -42718 -42719 -42723 -42724 -42725 -42727 -42728 -42729 -42730 -42740 -42750 -42751 -42752 -42753 -42754 -42755 -42757 -42760 -42764 -42765 -42767 -42770 -42771 -42772 -42780 -42789 -42790 -42800 -42803 -42804 -42805 -42806 -42807 -42808 -42809 -42810 -42812 -42815 -42820 -42825 -42827 -42830 -42831 -42832 -42833 -42840 -42842 -42843 -42844 -42845 -42846 -42847 -42848 -42849 -42850 -42852 -42853 -42854 -42855 -42858 -42860 -42865 -42870 -42880 -42890 -42894 -42900 -42902 -42903 -42904 -42910 -42911 -42912 -42918 -42920 -42921 -42928 -42930 -42931 -42940 -42950 -42952 -42953 -42954 -42955 -42956 -42957 -42960 -42963 -42970 -42980 -42981 -42982 -42985 -42990 -42992 -43000 -43001 -43002 -43003 -43004 -43005 -43006 -43010 -43011 -43015 -43016 -43017 -43018 -43019 -43020 -43021 -43022 -43023 -43029 -43030 -43031 -43034 -43035 -43036 -43037 -43038 -43039 -43040 -43041 -43042 -43045 -43046 -43047 -43050 -43051 -43052 -43053 -43054 -43055 -43056 -43059 -43060 -43061 -43062 -43063 -43066 -43067 -43070 -43071 -43072 -43080 -43081 -43084 -43085 -43086 -43087 -43089 -43090 -43091 -43092 -43093 -43094 -43098 -43099 -43100 -43101 -43104 -43106 -43108 -43109 -43110 -43111 -43112 -43113 -43120 -43121 -43123 -43124 -43125 -43126 -43127 -43130 -43131 -43132 -43138 -43139 -43140 -43141 -43142 -43143 -43144 -43145 -43150 -43151 -43153 -43154 -43155 -43156 -43157 -43159 -43160 -43161 -43162 -43163 -43164 -43165 -43167 -43168 -43170 -43172 -43177 -43179 -43180 -43181 -43183 -43184 -43186 -43189 -43190 -43191 -43192 -43200 -43201 -43202 -43203 -43204 -43205 -43206 -43210 -43211 -43212 -43218 -43219 -43220 -43221 -43222 -43230 -43231 -43232 -43240 -43243 -43244 -43245 -43250 -43254 -43256 -43257 -43260 -43263 -43264 -43265 -43269 -43270 -43271 -43272 -43273 -43274 -43275 -43277 -43279 -43280 -43281 -43282 -43283 -43285 -43287 -43290 -43291 -43300 -43301 -43302 -43307 -43308 -43309 -43310 -43311 -43320 -43321 -43325 -43326 -43329 -43330 -43340 -43343 -43344 -43345 -43350 -43352 -43353 -43354 -43356 -43357 -43358 -43359 -43360 -43361 -43362 -43364 -43370 -43371 -43373 -43375 -43379 -43380 -43381 -43382 -43383 -43386 -43387 -43389 -43390 -43391 -43392 -43398 -43400 -43401 -43403 -43404 -43406 -43407 -43408 -43409 -43410 -43411 -43412 -43420 -43421 -43422 -43424 -43425 -43430 -43431 -43440 -43442 -43443 -43444 -43445 -43446 -43447 -43448 -43450 -43451 -43452 -43455 -43459 -43460 -43462 -43468 -43469 -43470 -43472 -43480 -43481 -43483 -43490 -43491 -43494 -43495 -43496 -43500 -43502 -43503 -43505 -43508 -43510 -43514 -43515 -43516 -43523 -43525 -43527 -43530 -43538 -43540 -43542 -43543 -43544 -43545 -43546 -43547 -43550 -43558 -43559 -43560 -43567 -43569 -43570 -43571 -43573 -43580 -43584 -43585 -43587 -43590 -43592 -43600 -43602 -43610 -43612 -43615 -43620 -43623 -43624 -43625 -43626 -43627 -43628 -43629 -43630 -43632 -43633 -43640 -43642 -43644 -43645 -43646 -43647 -43648 -43649 -43650 -43652 -43659 -43660 -43667 -43669 -43670 -43679 -43680 -43685 -43688 -43689 -43690 -43694 -43695 -43696 -43697 -43698 -43699 -43700 -43701 -43703 -43705 -43706 -43707 -43709 -43710 -43720 -43721 -43730 -43731 -43739 -43740 -43745 -43748 -43749 -43750 -43759 -43760 -43762 -43763 -43764 -43767 -43770 -43773 -43780 -43781 -43782 -43783 -43784 -43790 -43793 -43794 -43797 -43800 -43802 -43803 -43804 -43805 -43806 -43807 -43808 -43810 -43814 -43815 -43820 -43823 -43824 -43830 -43831 -43832 -43833 -43834 -43835 -43836 -43838 -43840 -43841 -43846 -43848 -43850 -43851 -43852 -43853 -43859 -43860 -43862 -43865 -43870 -43880 -43882 -43890 -43896 -43900 -43902 -43903 -43904 -43905 -43906 -43907 -43908 -43909 -43915 -43916 -43917 -43918 -43919 -43920 -43921 -43922 -43923 -43930 -43934 -43937 -43940 -43941 -43947 -43949 -43950 -43960 -43961 -43970 -43971 -43972 -43973 -43975 -43976 -43977 -43980 -43984 -43985 -43986 -43988 -43990 -43991 -43993 -43994 -43995 -43996 -43997 -43998 -44008 -44009 -44100 -44110 -44130 -44140 -44150 -44158 -44159 -44160 -44170 -44180 -44190 -44200 -44210 -44214 -44215 -44216 -44217 -44218 -44219 -44220 -44226 -44227 -44228 -44229 -44230 -44240 -44246 -44247 -44248 -44249 -44250 -44257 -44258 -44259 -44260 -44265 -44266 -44267 -44268 -44269 -44270 -44280 -44290 -44298 -44299 -44300 -44306 -44307 -44309 -44320 -44329 -44330 -44339 -44340 -44348 -44349 -44350 -44360 -44367 -44370 -44379 -44380 -44390 -44395 -44396 -44398 -44399 -44400 -44409 -44410 -44419 -44420 -44430 -44437 -44438 -44439 -44440 -44450 -44460 -44467 -44468 -44469 -44470 -44490 -44500 -44509 -44510 -44520 -44530 -44535 -44536 -44538 -44539 -44540 -44549 -44550 -44559 -44560 -44570 -44580 -44600 -44610 -44619 -44620 -44630 -44635 -44638 -44639 -44647 -44648 -44650 -44656 -44657 -44658 -44659 -44660 -44665 -44667 -44668 -44670 -44678 -44679 -44680 -44689 -44690 -44700 -44705 -44710 -44715 -44716 -44717 -44718 -44719 -44720 -44723 -44724 -44725 -44726 -44727 -44729 -44730 -44735 -44737 -44739 -44740 -44748 -44749 -44750 -44755 -44756 -44757 -44760 -44765 -44766 -44767 -44768 -44769 -44770 -44780 -44790 -44799 -44800 -44808 -44809 -44810 -44814 -44815 -44817 -44818 -44819 -44820 -44824 -44825 -44827 -44828 -44829 -44840 -44849 -44860 -44869 -44870 -44878 -44879 -44890 -44895 -44896 -44897 -44898 -44899 -44900 -44906 -44907 -44908 -44910 -44918 -44919 -44920 -44929 -44930 -44940 -44948 -44949 -44950 -44955 -44956 -44959 -44960 -44965 -44966 -44967 -44968 -44969 -44970 -44977 -44978 -44979 -44980 -44983 -44984 -44985 -44986 -44987 -44989 -44990 -45010 -45012 -45013 -45016 -45017 -45018 -45019 -45020 -45027 -45030 -45034 -45035 -45036 -45037 -45038 -45039 -45040 -45041 -45047 -45049 -45050 -45052 -45053 -45054 -45055 -45056 -45058 -45059 -45060 -45065 -45066 -45067 -45068 -45069 -45070 -45076 -45077 -45078 -45079 -45080 -45081 -45085 -45086 -45087 -45088 -45089 -45100 -45110 -45116 -45117 -45118 -45119 -45120 -45125 -45126 -45128 -45129 -45130 -45133 -45134 -45135 -45136 -45137 -45138 -45140 -45145 -45146 -45147 -45148 -45149 -45150 -45157 -45158 -45159 -45160 -45167 -45168 -45169 -45170 -45176 -45177 -45178 -45179 -45180 -45184 -45185 -45186 -45187 -45188 -45189 -45190 -45195 -45196 -45198 -45199 -45200 -45205 -45206 -45207 -45215 -45220 -45221 -45222 -45226 -45230 -45232 -45234 -45235 -45236 -45237 -45238 -45239 -45250 -45255 -45256 -45257 -45259 -45260 -45265 -45270 -45275 -45276 -45277 -45279 -45280 -45281 -45286 -45287 -45290 -45298 -45299 -45300 -45302 -45303 -45305 -45306 -45307 -45308 -45310 -45315 -45320 -45325 -45330 -45331 -45335 -45340 -45341 -45345 -45347 -45348 -45349 -45350 -45359 -45360 -45368 -45380 -45390 -45395 -45398 -45399 -45400 -45402 -45403 -45404 -45405 -45406 -45407 -45408 -45410 -45412 -45413 -45414 -45416 -45417 -45418 -45419 -45420 -45422 -45424 -45425 -45426 -45427 -45428 -45429 -45430 -45434 -45435 -45436 -45437 -45438 -45439 -45440 -45443 -45444 -45445 -45446 -45448 -45450 -45452 -45453 -45454 -45455 -45460 -45462 -45463 -45464 -45465 -45466 -45470 -45473 -45474 -45475 -45476 -45477 -45478 -45479 -45480 -45482 -45483 -45484 -45485 -45486 -45488 -45490 -45492 -45493 -45494 -45495 -45496 -45500 -45509 -45510 -45519 -45520 -45525 -45526 -45527 -45528 -45529 -45530 -45535 -45540 -45545 -45550 -45559 -45560 -45567 -45570 -45579 -45580 -45588 -45589 -45590 -45593 -45595 -45596 -45597 -45598 -45599 -45600 -45601 -45602 -45604 -45605 -45606 -45607 -45608 -45609 -45610 -45613 -45615 -45618 -45619 -45620 -45623 -45625 -45626 -45628 -45629 -45630 -45638 -45640 -45641 -45643 -45644 -45645 -45646 -45647 -45650 -45653 -45654 -45655 -45659 -45660 -45663 -45665 -45670 -45672 -45675 -45678 -45679 -45680 -45685 -45686 -45690 -45692 -45693 -45694 -45696 -45699 -45700 -45706 -45710 -45713 -45718 -45720 -45723 -45730 -45732 -45737 -45740 -45744 -45745 -45746 -45750 -45752 -45753 -45754 -45755 -45756 -45757 -45760 -45765 -45766 -45767 -45770 -45780 -45785 -45788 -45789 -45790 -45796 -45798 -45799 -45800 -45802 -45803 -45804 -45805 -45806 -45807 -45810 -45811 -45812 -45815 -45816 -45820 -45825 -45830 -45840 -45850 -45857 -45860 -45870 -45876 -45877 -45880 -45883 -45884 -45886 -45890 -45895 -45896 -45899 -45900 -45902 -45906 -45907 -45908 -45915 -45920 -45922 -45930 -45935 -45940 -45950 -45954 -45955 -45956 -45957 -45958 -45959 -45960 -45961 -45963 -45964 -45965 -45970 -45975 -45976 -45977 -45978 -45979 -45980 -45981 -45982 -45983 -45984 -45986 -45987 -45988 -45990 -45992 -45993 -45995 -45996 -45997 -45998 -46000 -46002 -46004 -46005 -46007 -46010 -46015 -46016 -46017 -46018 -46020 -46025 -46029 -46030 -46040 -46043 -46045 -46047 -46048 -46050 -46053 -46060 -46065 -46090 -46100 -46110 -46118 -46120 -46130 -46140 -46145 -46170 -46174 -46175 -46176 -46180 -46188 -46190 -46194 -46196 -46197 -46200 -46202 -46203 -46204 -46205 -46206 -46207 -46208 -46210 -46220 -46225 -46227 -46230 -46234 -46235 -46236 -46237 -46238 -46239 -46240 -46243 -46245 -46248 -46249 -46250 -46255 -46256 -46259 -46260 -46270 -46280 -46281 -46282 -46288 -46290 -46299 -46300 -46305 -46310 -46330 -46350 -46360 -46370 -46380 -46385 -46386 -46400 -46402 -46403 -46404 -46405 -46407 -46408 -46409 -46420 -46430 -46433 -46440 -46445 -46446 -46448 -46450 -46454 -46455 -46457 -46460 -46470 -46472 -46473 -46474 -46475 -46480 -46488 -46489 -46490 -46495 -46500 -46502 -46503 -46506 -46507 -46509 -46520 -46525 -46530 -46532 -46535 -46540 -46545 -46560 -46565 -46566 -46570 -46572 -46573 -46574 -46580 -46600 -46610 -46614 -46615 -46616 -46620 -46626 -46627 -46630 -46639 -46640 -46649 -46680 -46686 -46687 -46688 -46689 -46700 -46706 -46707 -46708 -46709 -46710 -46715 -46716 -46717 -46718 -46719 -46720 -46723 -46725 -46726 -46728 -46729 -46730 -46732 -46733 -46734 -46735 -46736 -46737 -46738 -46740 -46744 -46745 -46746 -46749 -46750 -46756 -46758 -46760 -46762 -46763 -46764 -46765 -46770 -46772 -46775 -46776 -46780 -46781 -46783 -46785 -46790 -46792 -46794 -46797 -46798 -46799 -46800 -46810 -46815 -46820 -46826 -46827 -46829 -46830 -46840 -46845 -46846 -46850 -46855 -46900 -46905 -46907 -46920 -46930 -46934 -46935 -46950 -46955 -46960 -46967 -46968 -46970 -46974 -46975 -46980 -46984 -46990 -46995 -46996 -46997 -47000 -47002 -47010 -47011 -47013 -47015 -47020 -47023 -47030 -47040 -47050 -47059 -47060 -47069 -47070 -47073 -47078 -47079 -47080 -47089 -47090 -47095 -47100 -47105 -47106 -47109 -47110 -47116 -47117 -47118 -47120 -47122 -47123 -47124 -47125 -47126 -47127 -47128 -47129 -47130 -47133 -47135 -47138 -47139 -47140 -47142 -47143 -47144 -47146 -47147 -47150 -47154 -47157 -47160 -47170 -47172 -47173 -47174 -47175 -47179 -47180 -47182 -47183 -47184 -47185 -47186 -47187 -47188 -47189 -47190 -47192 -47193 -47194 -47195 -47196 -47197 -47200 -47202 -47203 -47204 -47206 -47207 -47210 -47215 -47216 -47218 -47220 -47225 -47227 -47228 -47230 -47235 -47238 -47239 -47240 -47245 -47248 -47249 -47250 -47252 -47253 -47254 -47256 -47258 -47259 -47260 -47263 -47264 -47265 -47267 -47268 -47269 -47270 -47275 -47280 -47281 -47282 -47283 -47285 -47288 -47290 -47293 -47294 -47295 -47296 -47298 -47300 -47302 -47303 -47308 -47309 -47310 -47313 -47314 -47315 -47320 -47325 -47327 -47330 -47334 -47335 -47336 -47337 -47338 -47339 -47340 -47343 -47344 -47347 -47348 -47350 -47359 -47360 -47368 -47369 -47370 -47373 -47374 -47378 -47380 -47383 -47384 -47386 -47398 -47400 -47410 -47420 -47423 -47425 -47430 -47432 -47433 -47440 -47443 -47450 -47457 -47460 -47463 -47470 -47472 -47473 -47474 -47479 -47480 -47487 -47490 -47500 -47503 -47504 -47505 -47506 -47507 -47510 -47513 -47514 -47515 -47519 -47525 -47530 -47532 -47536 -47537 -47538 -47539 -47540 -47545 -47546 -47547 -47548 -47549 -47550 -47557 -47560 -47563 -47564 -47565 -47570 -47572 -47573 -47574 -47575 -47576 -47577 -47580 -47584 -47585 -47586 -47587 -47588 -47590 -47592 -47593 -47595 -47596 -47597 -47599 -47600 -47610 -47614 -47620 -47624 -47630 -47634 -47635 -47639 -47640 -47649 -47650 -47655 -47656 -47660 -47664 -47670 -47674 -47675 -47680 -47684 -47685 -47690 -47694 -47698 -47700 -47707 -47710 -47714 -47715 -47716 -47720 -47723 -47724 -47725 -47726 -47728 -47729 -47730 -47732 -47733 -47734 -47736 -47740 -47741 -47742 -47743 -47744 -47746 -47747 -47748 -47749 -47750 -47752 -47753 -47755 -47760 -47764 -47765 -47766 -47767 -47768 -47769 -47770 -47775 -47777 -47778 -47779 -47780 -47785 -47786 -47795 -47796 -47797 -47798 -47799 -47800 -47810 -47820 -47829 -47830 -47840 -47849 -47850 -47860 -47862 -47870 -47880 -47882 -47890 -47892 -47898 -47899 -47900 -47902 -47903 -47905 -47909 -47910 -47912 -47913 -47914 -47915 -47916 -47917 -47918 -47920 -47924 -47925 -47926 -47927 -47930 -47934 -47935 -47936 -47937 -47938 -47939 -47940 -47944 -47945 -47946 -47947 -47948 -47949 -47950 -47952 -47955 -47956 -47958 -47959 -47960 -47964 -47965 -47970 -47974 -47975 -47976 -47977 -47980 -47983 -47984 -47986 -47987 -47988 -47989 -47990 -47993 -47994 -47995 -47996 -47997 -47998 -48000 -48010 -48017 -48020 -48026 -48030 -48035 -48040 -48047 -48048 -48050 -48060 -48064 -48065 -48068 -48070 -48075 -48076 -48077 -48078 -48080 -48084 -48085 -48086 -48087 -48089 -48090 -48093 -48095 -48096 -48098 -48100 -48110 -48120 -48130 -48135 -48136 -48139 -48140 -48145 -48146 -48150 -48155 -48159 -48160 -48165 -48166 -48170 -48175 -48180 -48185 -48190 -48193 -48199 -48200 -48202 -48203 -48205 -48207 -48210 -48211 -48212 -48220 -48230 -48240 -48250 -48255 -48256 -48259 -48260 -48262 -48265 -48266 -48270 -48272 -48274 -48280 -48282 -48290 -48291 -48292 -48294 -48295 -48296 -48298 -48300 -48304 -48309 -48310 -48312 -48313 -48314 -48315 -48316 -48317 -48318 -48320 -48324 -48325 -48327 -48328 -48330 -48333 -48334 -48335 -48338 -48340 -48343 -48344 -48350 -48353 -48360 -48370 -48373 -48380 -48389 -48390 -48399 -48400 -48408 -48410 -48414 -48415 -48417 -48419 -48420 -48423 -48427 -48440 -48445 -48447 -48449 -48450 -48451 -48453 -48455 -48456 -48457 -48458 -48460 -48461 -48464 -48465 -48466 -48470 -48475 -48479 -48480 -48481 -48485 -48486 -48490 -48491 -48495 -48496 -48499 -48500 -48502 -48503 -48504 -48506 -48507 -48508 -48509 -48510 -48512 -48520 -48525 -48526 -48530 -48532 -48540 -48542 -48546 -48550 -48553 -48554 -48555 -48556 -48558 -48559 -48560 -48563 -48564 -48565 -48568 -48569 -48570 -48575 -48577 -48580 -48585 -48590 -48592 -48595 -48600 -48605 -48610 -48615 -48620 -48628 -48630 -48635 -48640 -48650 -48654 -48655 -48670 -48679 -48680 -48685 -48686 -48700 -48708 -48710 -48715 -48720 -48725 -48730 -48739 -48740 -48742 -48743 -48744 -48745 -48747 -48748 -48749 -48750 -48753 -48760 -48763 -48764 -48765 -48766 -48767 -48768 -48769 -48770 -48775 -48777 -48778 -48780 -48785 -48786 -48788 -48790 -48795 -48799 -48800 -48805 -48810 -48815 -48820 -48825 -48826 -48827 -48828 -48830 -48840 -48845 -48850 -48852 -48854 -48860 -48862 -48865 -48868 -48869 -48870 -48872 -48876 -48878 -48880 -48889 -48890 -48892 -48893 -48894 -48895 -48896 -48898 -48900 -48902 -48903 -48904 -48905 -48906 -48907 -48908 -48909 -48910 -48914 -48915 -48916 -48917 -48918 -48919 -48920 -48922 -48923 -48926 -48929 -48930 -48938 -48939 -48940 -48943 -48946 -48947 -48948 -48950 -48953 -48954 -48955 -48959 -48960 -48962 -48963 -48964 -48965 -48966 -48967 -48970 -48972 -48974 -48976 -48980 -48981 -48983 -48985 -48987 -48990 -48995 -49000 -49010 -49011 -49012 -49013 -49014 -49015 -49019 -49020 -49023 -49024 -49026 -49027 -49028 -49029 -49031 -49032 -49033 -49035 -49040 -49050 -49051 -49052 -49053 -49055 -49056 -49057 -49059 -49060 -49063 -49064 -49065 -49066 -49070 -49076 -49077 -49078 -49079 -49080 -49086 -49087 -49088 -49089 -49090 -49092 -49093 -49094 -49095 -49096 -49097 -49098 -49099 -49100 -49109 -49120 -49125 -49130 -49140 -49170 -49176 -49177 -49178 -49200 -49220 -49223 -49224 -49225 -49228 -49229 -49230 -49239 -49240 -49250 -49253 -49255 -49260 -49265 -49270 -49274 -49275 -49276 -49277 -49280 -49285 -49286 -49290 -49295 -49296 -49300 -49302 -49303 -49304 -49305 -49306 -49310 -49312 -49313 -49314 -49315 -49316 -49317 -49318 -49330 -49333 -49334 -49338 -49339 -49340 -49344 -49346 -49350 -49355 -49356 -49358 -49360 -49369 -49370 -49375 -49380 -49388 -49400 -49410 -49420 -49421 -49423 -49427 -49430 -49436 -49439 -49440 -49446 -49460 -49470 -49500 -49510 -49514 -49515 -49530 -49540 -49542 -49544 -49547 -49548 -49570 -49574 -49575 -49576 -49578 -49580 -49583 -49584 -49585 -49586 -49590 -49595 -49597 -49600 -49602 -49603 -49604 -49605 -49606 -49607 -49608 -49610 -49615 -49620 -49635 -49638 -49639 -49640 -49647 -49650 -49652 -49653 -49654 -49655 -49656 -49657 -49658 -49659 -49660 -49663 -49664 -49665 -49667 -49670 -49675 -49676 -49677 -49678 -49679 -49680 -49685 -49687 -49690 -49700 -49705 -49710 -49714 -49720 -49728 -49730 -49735 -49738 -49740 -49744 -49750 -49754 -49755 -49756 -49757 -49758 -49759 -49760 -49764 -49765 -49767 -49769 -49770 -49775 -49779 -49780 -49783 -49784 -49786 -49789 -49800 -49805 -49806 -49807 -49808 -49810 -49815 -49816 -49817 -49818 -49820 -49825 -49828 -49829 -49830 -49834 -49835 -49836 -49837 -49840 -49848 -49850 -49860 -49867 -49868 -49869 -49870 -49873 -49875 -49876 -49877 -49879 -49880 -49900 -49902 -49903 -49904 -49910 -49915 -49920 -49924 -49925 -49940 -49950 -49952 -49955 -49956 -49957 -49959 -49960 -49968 -49970 -49977 -49979 -50000 -50009 -50010 -50016 -50017 -50018 -50019 -50020 -50026 -50039 -50040 -50050 -50060 -50069 -50070 -50071 -50075 -50076 -50080 -50090 -50100 -50110 -50120 -50122 -50123 -50130 -50140 -50150 -50160 -50168 -50170 -50180 -50190 -50200 -50205 -50206 -50209 -50210 -50214 -50220 -50225 -50226 -50227 -50228 -50230 -50235 -50236 -50240 -50245 -50246 -50250 -50255 -50260 -50265 -50266 -50270 -50280 -50285 -50290 -50295 -50300 -50302 -50303 -50304 -50305 -50306 -50307 -50308 -50312 -50313 -50314 -50315 -50316 -50317 -50318 -50319 -50320 -50322 -50323 -50324 -50325 -50326 -50327 -50328 -50330 -50333 -50334 -50335 -50336 -50337 -50338 -50339 -50340 -50343 -50344 -50345 -50346 -50347 -50348 -50349 -50354 -50355 -50356 -50357 -50358 -50359 -50360 -50364 -50365 -50367 -50370 -50371 -50372 -50373 -50376 -50380 -50381 -50384 -50385 -50386 -50387 -50400 -50408 -50410 -50417 -50418 -50419 -50420 -50429 -50440 -50443 -50445 -50446 -50447 -50448 -50449 -50450 -50453 -50454 -50455 -50456 -50457 -50460 -50463 -50464 -50466 -50470 -50473 -50474 -50475 -50476 -50480 -50483 -50484 -50485 -50486 -50487 -50490 -50495 -50496 -50500 -50507 -50508 -50509 -50510 -50520 -50525 -50540 -50550 -50559 -50570 -50580 -50582 -50583 -50590 -50600 -50601 -50610 -50615 -50619 -50620 -50621 -50625 -50626 -50627 -50629 -50630 -50632 -50633 -50634 -50635 -50636 -50637 -50638 -50639 -50640 -50645 -50646 -50648 -50649 -50650 -50659 -50660 -50661 -50663 -50664 -50665 -50666 -50667 -50668 -50670 -50673 -50674 -50675 -50676 -50677 -50678 -50680 -50682 -50684 -50685 -50689 -50690 -50700 -50704 -50707 -50708 -50709 -50710 -50720 -50724 -50726 -50727 -50728 -50729 -50730 -50737 -50738 -50739 -50740 -50743 -50744 -50745 -50746 -50747 -50748 -50750 -50760 -50761 -50770 -50771 -50780 -50785 -50789 -50800 -50805 -50806 -50807 -50808 -50809 -50810 -50812 -50813 -50814 -50815 -50820 -50830 -50839 -50840 -50847 -50848 -50849 -50850 -50856 -50860 -50870 -50878 -50879 -50880 -50882 -50884 -50888 -50889 -50890 -50900 -50902 -50903 -50907 -50908 -50909 -50910 -50918 -50919 -50920 -50921 -50922 -50923 -50924 -50925 -50926 -50927 -50928 -50929 -50930 -50935 -50938 -50940 -50941 -50942 -50943 -50944 -50945 -50947 -50948 -50960 -50965 -50966 -50967 -50968 -50969 -50970 -50979 -50980 -50981 -50988 -50989 -50990 -50994 -50995 -50996 -51000 -51007 -51008 -51009 -51010 -51015 -51016 -51017 -51018 -51019 -51020 -51026 -51027 -51028 -51029 -51030 -51036 -51038 -51039 -51050 -51056 -51057 -51058 -51059 -51070 -51071 -51080 -51089 -51090 -51098 -51099 -51100 -51104 -51105 -51106 -51107 -51108 -51109 -51110 -51116 -51117 -51130 -51136 -51137 -51138 -51139 -51140 -51144 -51149 -51160 -51167 -51168 -51169 -51200 -51206 -51207 -51208 -51209 -51210 -51217 -51218 -51219 -51220 -51225 -51226 -51227 -51229 -51230 -51237 -51238 -51239 -51240 -51245 -51246 -51247 -51248 -51260 -51270 -51280 -51285 -51287 -51288 -51289 -51290 -51300 -51303 -51304 -51305 -51306 -51310 -51317 -51318 -51319 -51320 -51324 -51325 -51326 -51327 -51328 -51329 -51340 -51342 -51344 -51345 -51346 -51347 -51348 -51349 -51350 -51354 -51355 -51356 -51357 -51360 -51361 -51363 -51364 -51365 -51367 -51368 -51369 -51370 -51372 -51375 -51376 -51378 -51379 -51385 -51400 -51410 -51412 -51413 -51414 -51415 -51416 -51417 -51418 -51422 -51423 -51424 -51425 -51426 -51427 -51428 -51430 -51432 -51433 -51434 -51435 -51436 -51437 -51440 -51442 -51443 -51445 -51446 -51453 -51454 -51455 -51456 -51457 -51458 -51462 -51463 -51464 -51465 -51466 -51467 -51468 -51470 -51479 -51480 -51500 -51502 -51508 -51509 -51510 -51516 -51517 -51518 -51519 -51520 -51525 -51526 -51527 -51528 -51529 -51530 -51533 -51534 -51535 -51536 -51537 -51538 -51539 -51543 -51550 -51554 -51555 -51556 -51560 -51565 -51566 -51568 -51569 -51570 -51575 -51576 -51577 -51578 -51579 -51580 -51582 -51583 -51584 -51585 -51586 -51587 -51588 -51589 -51590 -51598 -51599 -51600 -51605 -51607 -51608 -51609 -51610 -51613 -51614 -51615 -51616 -51617 -51618 -51619 -51625 -51626 -51627 -51628 -51629 -51634 -51635 -51636 -51637 -51639 -51640 -51646 -51647 -51648 -51649 -51650 -51651 -51653 -51654 -51655 -51656 -51657 -51660 -51664 -51665 -51666 -51667 -51668 -51669 -51670 -51671 -51672 -51673 -51674 -51675 -51676 -51680 -51690 -51695 -51696 -51697 -51698 -51699 -51700 -51704 -51705 -51706 -51707 -51709 -51720 -51724 -51725 -51726 -51727 -51728 -51729 -51730 -51738 -51739 -51740 -51750 -51751 -51752 -51753 -51760 -51763 -51766 -51767 -51768 -51769 -51770 -51777 -51778 -51779 -51780 -51787 -51788 -51789 -51800 -51804 -51806 -51807 -51808 -51809 -51810 -51817 -51818 -51819 -51820 -51825 -51826 -51827 -51828 -51829 -51850 -51857 -51859 -51860 -51862 -51863 -51864 -51865 -51866 -51867 -51869 -51870 -51878 -51880 -51881 -51887 -51888 -51889 -51900 -51905 -51910 -51916 -51917 -51918 -51919 -51920 -51928 -51929 -51930 -51933 -51936 -51937 -51938 -51939 -51950 -51960 -51963 -51964 -51966 -51967 -51970 -51973 -51974 -51977 -51980 -51983 -51984 -51985 -51986 -51987 -51988 -51989 -51990 -52000 -52004 -52005 -52006 -52010 -52011 -52020 -52030 -52031 -52040 -52045 -52050 -52055 -52059 -52060 -52062 -52065 -52070 -52073 -52080 -52081 -52082 -52083 -52084 -52088 -52089 -52090 -52100 -52104 -52105 -52106 -52107 -52110 -52120 -52140 -52143 -52144 -52145 -52146 -52147 -52148 -52149 -52150 -52154 -52155 -52156 -52157 -52158 -52159 -52160 -52161 -52163 -52164 -52165 -52166 -52167 -52168 -52169 -52170 -52172 -52175 -52176 -52177 -52178 -52179 -52180 -52189 -52200 -52230 -52231 -52232 -52233 -52240 -52280 -52300 -52314 -52320 -52330 -52332 -52338 -52340 -52350 -52360 -52370 -52371 -52379 -52380 -52400 -52409 -52420 -52428 -52429 -52430 -52436 -52437 -52438 -52439 -52440 -52448 -52449 -52460 -52463 -52464 -52465 -52466 -52467 -52468 -52469 -52470 -52471 -52473 -52475 -52476 -52477 -52478 -52479 -52480 -52483 -52484 -52485 -52486 -52487 -52488 -52489 -52490 -52495 -52498 -52499 -52500 -52540 -52570 -52600 -52640 -52649 -52650 -52653 -52660 -52663 -52664 -52665 -52680 -52684 -52685 -52686 -52687 -52688 -52689 -52690 -52700 -52710 -52719 -52740 -52742 -52743 -52746 -52749 -52750 -52752 -52760 -52763 -52764 -52765 -52766 -52767 -52768 -52769 -52770 -52772 -52773 -52774 -52775 -52776 -52777 -52778 -52779 -52783 -52784 -52785 -52786 -52787 -52788 -52789 -52790 -52793 -52794 -52795 -52796 -52797 -52798 -52799 -52909 -52910 -52915 -52916 -52918 -52919 -52920 -52923 -52924 -52925 -52926 -52927 -52928 -52929 -52930 -52936 -52938 -52939 -52940 -52945 -52946 -52947 -52948 -52949 -52950 -52953 -52954 -52955 -52956 -52957 -52958 -52959 -52960 -52965 -52966 -52967 -52970 -52975 -52976 -52977 -52978 -52979 -52980 -52985 -52986 -52987 -52988 -52989 -52990 -52994 -52995 -52996 -52997 -52998 -53000 -53010 -53020 -53030 -53040 -53049 -53050 -53060 -53070 -53100 -53110 -53114 -53115 -53116 -53117 -53118 -53119 -53120 -53123 -53124 -53125 -53126 -53128 -53129 -53130 -53138 -53139 -53140 -53150 -53160 -53169 -53170 -53176 -53177 -53178 -53179 -53200 -53210 -53215 -53216 -53217 -53218 -53219 -53220 -53223 -53224 -53225 -53226 -53227 -53228 -53230 -53235 -53237 -53238 -53239 -53240 -53247 -53248 -53249 -53250 -53260 -53270 -53276 -53277 -53278 -53279 -53280 -53283 -53290 -53296 -53297 -53298 -53300 -53309 -53310 -53320 -53329 -53330 -53337 -53338 -53339 -53340 -53348 -53350 -53370 -53377 -53378 -53379 -53380 -53390 -53398 -53400 -53410 -53420 -53425 -53426 -53427 -53428 -53429 -53430 -53440 -53450 -53458 -53459 -53460 -53465 -53466 -53467 -53468 -53469 -53470 -53478 -53480 -53489 -53490 -53500 -53509 -53510 -53519 -53520 -53529 -53530 -53538 -53539 -53550 -53554 -53560 -53569 -53570 -53580 -53590 -53598 -53600 -53610 -53618 -53619 -53620 -53630 -53640 -53650 -53660 -53663 -53665 -53666 -53667 -53668 -53669 -53670 -53680 -53687 -53688 -53689 -53690 -53694 -53695 -53697 -53698 -53699 -53708 -53709 -53710 -53713 -53714 -53715 -53716 -53718 -53719 -53720 -53729 -53730 -53740 -53750 -53760 -53768 -53769 -53770 -53780 -53787 -53788 -53790 -53798 -53799 -53800 -53809 -53810 -53819 -53820 -53830 -53839 -53840 -53849 -53900 -53909 -53910 -53920 -53930 -53940 -53950 -53960 -53970 -54000 -54009 -54010 -54014 -54015 -54016 -54017 -54020 -54021 -54022 -54023 -54025 -54026 -54027 -54028 -54029 -54030 -54033 -54035 -54037 -54038 -54040 -54047 -54048 -54049 -54050 -54052 -54054 -54057 -54058 -54059 -54060 -54063 -54064 -54066 -54067 -54068 -54069 -54070 -54073 -54075 -54076 -54079 -54080 -54088 -54089 -54090 -54092 -54093 -54094 -54098 -54099 -54100 -54109 -54110 -54113 -54118 -54119 -54120 -54124 -54126 -54127 -54128 -54130 -54134 -54135 -54136 -54140 -54142 -54143 -54145 -54146 -54147 -54148 -54149 -54150 -54152 -54157 -54158 -54159 -54160 -54162 -54163 -54165 -54168 -54170 -54172 -54173 -54174 -54180 -54185 -54186 -54187 -54188 -54189 -54190 -54196 -54197 -54198 -54200 -54240 -54243 -54244 -54250 -54259 -54270 -54275 -54276 -54280 -54285 -54290 -54296 -54297 -54300 -54304 -54305 -54306 -54310 -54319 -54320 -54330 -54339 -54340 -54350 -54351 -54355 -54357 -54358 -54359 -54360 -54369 -54370 -54380 -54385 -54389 -54390 -54391 -54399 -54400 -54402 -54405 -54406 -54407 -54408 -54409 -54413 -54414 -54416 -54417 -54420 -54423 -54424 -54425 -54426 -54434 -54435 -54439 -54440 -54448 -54449 -54450 -54455 -54457 -54459 -54460 -54463 -54466 -54467 -54468 -54469 -54470 -54473 -54474 -54475 -54476 -54477 -54480 -54483 -54484 -54485 -54570 -54571 -54600 -54602 -54603 -54604 -54605 -54607 -54608 -54610 -54614 -54616 -54640 -54645 -54650 -54655 -54656 -54657 -54658 -54660 -54665 -54666 -54667 -54668 -54680 -54683 -54684 -54685 -54700 -54707 -54710 -54712 -54713 -54714 -54715 -54719 -54720 -54725 -54728 -54729 -54730 -54740 -54743 -54744 -54745 -54750 -54753 -54758 -54759 -54760 -54763 -54764 -54765 -54766 -54767 -54769 -54770 -54783 -54784 -54785 -54786 -54800 -54803 -54804 -54805 -54807 -54810 -54820 -54830 -54831 -54834 -54840 -54845 -54850 -54853 -54855 -54857 -54858 -54860 -54865 -54870 -54875 -54877 -54878 -54879 -54880 -54882 -54883 -54884 -54890 -54892 -54900 -54909 -54910 -54913 -54914 -54915 -54916 -54918 -54920 -54924 -54925 -54926 -54927 -54929 -54930 -54932 -54933 -54934 -54935 -54938 -54939 -54940 -54942 -54943 -54944 -54945 -54946 -54948 -54949 -54950 -54954 -54955 -54957 -54958 -54959 -54960 -54963 -54964 -54965 -54966 -54967 -54968 -54970 -54973 -54975 -54976 -54978 -54980 -54983 -54984 -54985 -54987 -54990 -55000 -55010 -55014 -55016 -55017 -55018 -55019 -55020 -55024 -55025 -55027 -55028 -55029 -55030 -55035 -55036 -55037 -55038 -55039 -55040 -55044 -55045 -55050 -55055 -55056 -55057 -55059 -55060 -55063 -55064 -55065 -55066 -55067 -55068 -55069 -55070 -55074 -55075 -55076 -55080 -55084 -55085 -55087 -55089 -55090 -55094 -55095 -55100 -55104 -55105 -55107 -55114 -55115 -55117 -55118 -55119 -55126 -55127 -55128 -55129 -55130 -55135 -55137 -55138 -55139 -55140 -55146 -55147 -55148 -55149 -55158 -55170 -55176 -55179 -55180 -55187 -55188 -55189 -55190 -55200 -55210 -55218 -55220 -55230 -55234 -55235 -55236 -55237 -55238 -55240 -55242 -55243 -55244 -55245 -55246 -55247 -55248 -55249 -55260 -55264 -55266 -55267 -55268 -55269 -55270 -55280 -55284 -55287 -55288 -55289 -55290 -55294 -55295 -55296 -55297 -55298 -55299 -55300 -55308 -55310 -55316 -55317 -55320 -55329 -55330 -55338 -55339 -55340 -55346 -55347 -55348 -55349 -55360 -55369 -55390 -55400 -55404 -55405 -55406 -55407 -55410 -55411 -55414 -55415 -55416 -55417 -55418 -55419 -55420 -55425 -55429 -55430 -55450 -55458 -55459 -55490 -55498 -55499 -55500 -55506 -55507 -55508 -55509 -55510 -55515 -55516 -55517 -55518 -55519 -55520 -55530 -55540 -55546 -55547 -55548 -55549 -55600 -55607 -55609 -55610 -55619 -55620 -55628 -55629 -55630 -55635 -55640 -55650 -55653 -55654 -55655 -55657 -55660 -55669 -55670 -55676 -55679 -55680 -55683 -55684 -55689 -55690 -55694 -55697 -55700 -55705 -55707 -55708 -55709 -55710 -55713 -55714 -55715 -55716 -55717 -55718 -55719 -55720 -55726 -55728 -55729 -55730 -55737 -55738 -55739 -55740 -55743 -55744 -55745 -55748 -55749 -55750 -55752 -55754 -55755 -55757 -55760 -55763 -55764 -55765 -55767 -55768 -55769 -55770 -55771 -55776 -55780 -55785 -55790 -55797 -55799 -55800 -55810 -55812 -55813 -55814 -55815 -55816 -55820 -55821 -55822 -55823 -55825 -55830 -55831 -55835 -55840 -55842 -55843 -55847 -55850 -55851 -55852 -55853 -55855 -55859 -55870 -55874 -55875 -55878 -55879 -55880 -55882 -55883 -55884 -55885 -55886 -55887 -55890 -55894 -55895 -55896 -55899 -55900 -55908 -55910 -55915 -55919 -55920 -55925 -55926 -55930 -55935 -55939 -55940 -55950 -55951 -55952 -55954 -55955 -55956 -55960 -55963 -55965 -55970 -55974 -55975 -55980 -55989 -55990 -55993 -55994 -55995 -55996 -55997 -55998 -56000 -56020 -56030 -56031 -56034 -56035 -56036 -56050 -56070 -56078 -56079 -56080 -56084 -56085 -56086 -56087 -56100 -56108 -56109 -56110 -56111 -56116 -56117 -56118 -56119 -56120 -56121 -56125 -56126 -56130 -56140 -56150 -56151 -56152 -56153 -56160 -56168 -56169 -56170 -56176 -56177 -56178 -56180 -56188 -56189 -56190 -56198 -56199 -56200 -56204 -56206 -56207 -56208 -56209 -56220 -56225 -56226 -56227 -56228 -56230 -56232 -56233 -56234 -56235 -56236 -56237 -56238 -56239 -56240 -56249 -56250 -56251 -56253 -56255 -56256 -56257 -56258 -56259 -56260 -56263 -56264 -56265 -56266 -56267 -56268 -56269 -56270 -56272 -56300 -56301 -56303 -56310 -56320 -56330 -56333 -56334 -56335 -56336 -56337 -56340 -56343 -56346 -56350 -56353 -56354 -56355 -56356 -56360 -56363 -56364 -56365 -56366 -56370 -56373 -56376 -56377 -56380 -56390 -56394 -56395 -56400 -56409 -56410 -56420 -56428 -56429 -56440 -56490 -56495 -56500 -56506 -56507 -56508 -56509 -56510 -56512 -56513 -56514 -56515 -56520 -56523 -56524 -56525 -56527 -56528 -56529 -56530 -56535 -56536 -56537 -56539 -56540 -56550 -56553 -56554 -56555 -56556 -56557 -56558 -56560 -56563 -56564 -56565 -56566 -56567 -56568 -56569 -56570 -56576 -56577 -56578 -56579 -56580 -56584 -56585 -56586 -56587 -56588 -56589 -56590 -56599 -56600 -56604 -56605 -56606 -56607 -56608 -56609 -56610 -56614 -56615 -56616 -56617 -56618 -56619 -56620 -56623 -56624 -56625 -56640 -56641 -56642 -56643 -56644 -56645 -56646 -56647 -56650 -56653 -56655 -56680 -56700 -56704 -56720 -56723 -56730 -56731 -56735 -56740 -56760 -56766 -56767 -56776 -56777 -56780 -56800 -56806 -56860 -56864 -56880 -56890 -56900 -56930 -56935 -56940 -56941 -56950 -56955 -56960 -56970 -56979 -56980 -56982 -56990 -56993 -57000 -57100 -57109 -57120 -57129 -57130 -57138 -57139 -57140 -57150 -57158 -57159 -57170 -57171 -57176 -57177 -57178 -57179 -57180 -57185 -57188 -57189 -57200 -57209 -57210 -57300 -57310 -57400 -57410 -57420 -57425 -57430 -57440 -57450 -57460 -57470 -57500 -57510 -57520 -57530 -57600 -57610 -57630 -57700 -57708 -57709 -57710 -57718 -57719 -57720 -57730 -57739 -57740 -57750 -57760 -57800 -57809 -57810 -57815 -57816 -57819 -57820 -57830 -57840 -57848 -57849 -57850 -57859 -57900 -57910 -57920 -57930 -57940 -57950 -58000 -58002 -58003 -58004 -58006 -58007 -58009 -58010 -58012 -58013 -58020 -58030 -58040 -58048 -58050 -58055 -58056 -58057 -58058 -58060 -58067 -58068 -58069 -58070 -58078 -58079 -58080 -58085 -58086 -58087 -58088 -58089 -58090 -58095 -58096 -58097 -58098 -58099 -58100 -58110 -58114 -58115 -58116 -58117 -58118 -58120 -58127 -58128 -58130 -58140 -58146 -58147 -58148 -58149 -58150 -58158 -58160 -58168 -58170 -58175 -58178 -58179 -58180 -58186 -58187 -58188 -58189 -58190 -58191 -58192 -58194 -58195 -58196 -58197 -58199 -58200 -58210 -58216 -58217 -58218 -58219 -58220 -58226 -58228 -58229 -58230 -58240 -58244 -58245 -58248 -58249 -58250 -58254 -58255 -58256 -58257 -58258 -58259 -58261 -58270 -58277 -58278 -58280 -58281 -58290 -58295 -58296 -58297 -58300 -58301 -58302 -58303 -58310 -58312 -58317 -58320 -58321 -58322 -58323 -58324 -58330 -58331 -58332 -58333 -58334 -58335 -58336 -58337 -58338 -58340 -58341 -58342 -58343 -58344 -58345 -58346 -58347 -58348 -58350 -58352 -58353 -58354 -58355 -58356 -58359 -58360 -58362 -58363 -58380 -58390 -58391 -58398 -58399 -58400 -58401 -58402 -58403 -58404 -58410 -58411 -58412 -58413 -58414 -58415 -58416 -58420 -58423 -58425 -58430 -58431 -58440 -58442 -58443 -58445 -58450 -58460 -58464 -58465 -58466 -58467 -58468 -58480 -58481 -58483 -58484 -58485 -58486 -58487 -58488 -58489 -58490 -58491 -58493 -58494 -58495 -58496 -58497 -58498 -58499 -58500 -58502 -58503 -58504 -58505 -58506 -58507 -58508 -58510 -58511 -58512 -58513 -58514 -58515 -58516 -58517 -58520 -58523 -58524 -58530 -58531 -58532 -58533 -58540 -58541 -58542 -58543 -58544 -58545 -58547 -58550 -58551 -58552 -58557 -58558 -58559 -58560 -58561 -58570 -58571 -58578 -58579 -58580 -58581 -58582 -58585 -58590 -58591 -58594 -58598 -58600 -58609 -58610 -58616 -58617 -58620 -58624 -58627 -58628 -58629 -58630 -58635 -58637 -58638 -58639 -58640 -58649 -58650 -58653 -58654 -58660 -58664 -58665 -58667 -58670 -58674 -58676 -58677 -58680 -58685 -58688 -58689 -58690 -58694 -58698 -58700 -58701 -58702 -58710 -58711 -58716 -58720 -58730 -58731 -58739 -58740 -58741 -58742 -58743 -58744 -58745 -58746 -58750 -58751 -58754 -58760 -58770 -58780 -58781 -58782 -58783 -58785 -58790 -58791 -58793 -58794 -58795 -58800 -58801 -58803 -58804 -58805 -58806 -58807 -58820 -58825 -58827 -58830 -58840 -58841 -58842 -58843 -58850 -58851 -58855 -58860 -58861 -58862 -58863 -58864 -58865 -58866 -58868 -58869 -58870 -58871 -58872 -58873 -58874 -58875 -58880 -58881 -58883 -58885 -58886 -58887 -58890 -58891 -58893 -58895 -58900 -58904 -58909 -58910 -58911 -58912 -58913 -58918 -58919 -58920 -58923 -58924 -58925 -58926 -58927 -58928 -58929 -58930 -58931 -58932 -58933 -58935 -58936 -58937 -58938 -58940 -58941 -58942 -58944 -58945 -58946 -58948 -58949 -58950 -58956 -58957 -58958 -58959 -58960 -58961 -58962 -58963 -58964 -58966 -58969 -58970 -58973 -58974 -58975 -58976 -58977 -58978 -58980 -58981 -58983 -58984 -58985 -58986 -58987 -58990 -58991 -58997 -59000 -59010 -59012 -59013 -59020 -59023 -59026 -59027 -59028 -59030 -59033 -59034 -59035 -59036 -59040 -59050 -59053 -59057 -59058 -59100 -59102 -59104 -59105 -59118 -59120 -59121 -59122 -59140 -59150 -59160 -59161 -59162 -59164 -59165 -59170 -59171 -59180 -59183 -59184 -59185 -59190 -59191 -59192 -59200 -59201 -59204 -59210 -59220 -59230 -59231 -59237 -59250 -59253 -59254 -59256 -59257 -59258 -59262 -59263 -59264 -59265 -59266 -59267 -59280 -59281 -59283 -59285 -59290 -59295 -59296 -59300 -59310 -59319 -59320 -59330 -59334 -59335 -59340 -59349 -59350 -59359 -59360 -59370 -59374 -59375 -59377 -59379 -59380 -59384 -59386 -59387 -59389 -59390 -59392 -59400 -59401 -59410 -59420 -59424 -59425 -59428 -59430 -59434 -59436 -59438 -59440 -59442 -59443 -59444 -59445 -59446 -59447 -59450 -59451 -59454 -59455 -59460 -59470 -59471 -59472 -59473 -59474 -59475 -59476 -59478 -59480 -59481 -59482 -59490 -59491 -59493 -59494 -59497 -59498 -59500 -59505 -59506 -59507 -59510 -59512 -59513 -59514 -59515 -59516 -59517 -59518 -59520 -59530 -59531 -59532 -59540 -59550 -59551 -59552 -59553 -59560 -59561 -59570 -59571 -59580 -59590 -59593 -59600 -59610 -59613 -59614 -59615 -59616 -59617 -59618 -59619 -59620 -59624 -59625 -59626 -59627 -59630 -59633 -59634 -59636 -59640 -59650 -59655 -59656 -59660 -59663 -59664 -59665 -59669 -59670 -59673 -59674 -59675 -59676 -59680 -59683 -59684 -59688 -59689 -59690 -59695 -59696 -59698 -59699 -59700 -59701 -59704 -59710 -59711 -59712 -59720 -59721 -59722 -59723 -59724 -59725 -59730 -59731 -59732 -59734 -59735 -59736 -59740 -59744 -59745 -59750 -59753 -59758 -59759 -59760 -59761 -59762 -59763 -59764 -59765 -59766 -59770 -59773 -59774 -59775 -59780 -59783 -59786 -59790 -59791 -59792 -59793 -59794 -59795 -59796 -59797 -59799 -59800 -59810 -59813 -59816 -59817 -59820 -59823 -59824 -59827 -59828 -59830 -59833 -59834 -59835 -59836 -59840 -59843 -59844 -59845 -59850 -59853 -59854 -59855 -59856 -59857 -59860 -59863 -59864 -59865 -59870 -59873 -59874 -59875 -59880 -59884 -59885 -59890 -59893 -59894 -59900 -59920 -59921 -59922 -59923 -59925 -59930 -59931 -59935 -59940 -59942 -59943 -59944 -59945 -59946 -59948 -59949 -59950 -59951 -59952 -59953 -59960 -59961 -59970 -59971 -59972 -59980 -59981 -59990 -59991 -59993 -59995 -60000 -60010 -60013 -60014 -60015 -60016 -60017 -60020 -60024 -60030 -60040 -60044 -60050 -60054 -60060 -60063 -60070 -60073 -60074 -60080 -60090 -60094 -60095 -60100 -60105 -60110 -60120 -60123 -60124 -60125 -60128 -60130 -60133 -60134 -60135 -60136 -60137 -60143 -60150 -60153 -60154 -60155 -60156 -60157 -60160 -60169 -60170 -60173 -60174 -60180 -60183 -60190 -60200 -60201 -60202 -60203 -60210 -60211 -60215 -60220 -60221 -60222 -60223 -60230 -60235 -60238 -60240 -60241 -60242 -60250 -60251 -60252 -60254 -60255 -60256 -60257 -60258 -60259 -60260 -60261 -60262 -60263 -60264 -60265 -60266 -60267 -60270 -60271 -60280 -60281 -60282 -60283 -60284 -60285 -60290 -60291 -60293 -60300 -60310 -60322 -60330 -60340 -60350 -60360 -60364 -60365 -60370 -60373 -60374 -60376 -60378 -60379 -60380 -60383 -60390 -60400 -60401 -60410 -60413 -60420 -60421 -60422 -60430 -60431 -60432 -60433 -60440 -60441 -60442 -60443 -60445 -60446 -60447 -60460 -60461 -60462 -60465 -60470 -60471 -60475 -60480 -60485 -60490 -60492 -60493 -60494 -60495 -60500 -60501 -60520 -60521 -60522 -60530 -60531 -60532 -60533 -60536 -60537 -60538 -60539 -60540 -60542 -60544 -60545 -60550 -60555 -60556 -60560 -60561 -60570 -60571 -60575 -60580 -60581 -60582 -60583 -60590 -60600 -60610 -60615 -60616 -60618 -60619 -60620 -60626 -60627 -60628 -60630 -60633 -60637 -60639 -60640 -60650 -60653 -60654 -60655 -60656 -60657 -60658 -60660 -60663 -60668 -60669 -60670 -60673 -60674 -60676 -60677 -60680 -60683 -60684 -60685 -60689 -60690 -60693 -60694 -60695 -60696 -60697 -60698 -60699 -60700 -60710 -60711 -60712 -60720 -60721 -60730 -60740 -60741 -60742 -60743 -60744 -60745 -60746 -60747 -60750 -60760 -60761 -60770 -60775 -60778 -60780 -60781 -60782 -60783 -60784 -60785 -60790 -60800 -60804 -60805 -60807 -60810 -60820 -60821 -60822 -60823 -60840 -60849 -60850 -60864 -60870 -60880 -60884 -60900 -60910 -60920 -60921 -60925 -60929 -60930 -60932 -60933 -60934 -60940 -60943 -60945 -60948 -60950 -60952 -60953 -60954 -60955 -60956 -60957 -60958 -60959 -60960 -60965 -60966 -60970 -60971 -60980 -60981 -60982 -60983 -60985 -60986 -60990 -60992 -60993 -60994 -60996 -60997 -61000 -61001 -61002 -61003 -61004 -61005 -61006 -61007 -61008 -61010 -61011 -61012 -61014 -61015 -61016 -61020 -61025 -61030 -61034 -61035 -61036 -61037 -61040 -61041 -61042 -61043 -61045 -61046 -61047 -61048 -61050 -61051 -61052 -61053 -61054 -61060 -61061 -61062 -61070 -61071 -61072 -61073 -61080 -61082 -61100 -61105 -61110 -61112 -61113 -61114 -61115 -61116 -61120 -61125 -61128 -61129 -61130 -61133 -61134 -61135 -61136 -61137 -61139 -61140 -61143 -61149 -61150 -61153 -61154 -61155 -61156 -61160 -61165 -61166 -61168 -61169 -61170 -61173 -61174 -61180 -61182 -61183 -61190 -61192 -61194 -61195 -61196 -61200 -61201 -61203 -61204 -61205 -61206 -61207 -61209 -61210 -61211 -61213 -61214 -61216 -61220 -61222 -61223 -61224 -61225 -61226 -61227 -61230 -61231 -61232 -61233 -61235 -61236 -61237 -61239 -61240 -61241 -61247 -61248 -61250 -61252 -61253 -61254 -61255 -61256 -61257 -61258 -61259 -61260 -61261 -61262 -61264 -61266 -61267 -61268 -61269 -61270 -61271 -61272 -61273 -61274 -61275 -61276 -61277 -61278 -61279 -61280 -61281 -61282 -61285 -61287 -61288 -61290 -61291 -61292 -61295 -61297 -61300 -61301 -61305 -61310 -61311 -61312 -61313 -61314 -61320 -61321 -61322 -61323 -61324 -61325 -61326 -61330 -61340 -61341 -61350 -61365 -61370 -61371 -61374 -61375 -61378 -61380 -61393 -61399 -61400 -61401 -61402 -61403 -61410 -61411 -61412 -61420 -61425 -61438 -61450 -61451 -61452 -61454 -61455 -61458 -61460 -61465 -61467 -61468 -61470 -61471 -61472 -61473 -61474 -61475 -61480 -61490 -61498 -61500 -61502 -61503 -61505 -61506 -61507 -61508 -61509 -61510 -61511 -61512 -61514 -61515 -61516 -61517 -61518 -61519 -61530 -61531 -61533 -61539 -61540 -61543 -61544 -61545 -61549 -61553 -61554 -61560 -61570 -61573 -61575 -61577 -61578 -61585 -61587 -61590 -61592 -61593 -61594 -61596 -61597 -61600 -61604 -61605 -61606 -61607 -61608 -61609 -61610 -61611 -61612 -61613 -61614 -61615 -61616 -61617 -61618 -61620 -61625 -61627 -61630 -61631 -61632 -61633 -61634 -61640 -61641 -61642 -61645 -61650 -61652 -61653 -61654 -61655 -61656 -61657 -61658 -61659 -61661 -61662 -61663 -61664 -61665 -61670 -61671 -61675 -61680 -61681 -61682 -61683 -61690 -61700 -61701 -61702 -61703 -61710 -61711 -61712 -61713 -61714 -61716 -61717 -61730 -61731 -61732 -61735 -61740 -61745 -61746 -61750 -61751 -61753 -61755 -61756 -61757 -61759 -61760 -61767 -61768 -61769 -61770 -61790 -61794 -61795 -61800 -61801 -61802 -61803 -61804 -61805 -61806 -61807 -61809 -61810 -61812 -61813 -61815 -61816 -61817 -61820 -61823 -61824 -61830 -61834 -61835 -61836 -61837 -61838 -61839 -61840 -61841 -61842 -61844 -61845 -61846 -61847 -61848 -61849 -61850 -61851 -61852 -61855 -61860 -61863 -61864 -61865 -61868 -61870 -61875 -61880 -61881 -61885 -61890 -61892 -61893 -61894 -61896 -61899 -61900 -61907 -61908 -61909 -61910 -61911 -61913 -61917 -61920 -61925 -61929 -61930 -61933 -61934 -61935 -61936 -61940 -61942 -61943 -61946 -61947 -61950 -61952 -61954 -61956 -61957 -61958 -61959 -61960 -61963 -61969 -61970 -61971 -61972 -61973 -61974 -61975 -61976 -61978 -61979 -61980 -61984 -61985 -61990 -61991 -61992 -61993 -61994 -61995 -61996 -61997 -61998 -62000 -62008 -62009 -62010 -62017 -62018 -62019 -62020 -62028 -62029 -62030 -62037 -62038 -62039 -62040 -62050 -62057 -62059 -62060 -62070 -62076 -62080 -62083 -62084 -62100 -62103 -62110 -62115 -62116 -62117 -62120 -62123 -62130 -62133 -62136 -62137 -62139 -62140 -62143 -62144 -62145 -62150 -62153 -62154 -62156 -62157 -62158 -62159 -62160 -62163 -62164 -62165 -62166 -62170 -62173 -62175 -62179 -62180 -62190 -62193 -62200 -62203 -62204 -62205 -62209 -62210 -62214 -62215 -62217 -62218 -62219 -62220 -62226 -62227 -62228 -62229 -62230 -62233 -62237 -62239 -62240 -62243 -62245 -62247 -62248 -62249 -62250 -62253 -62260 -62269 -62270 -62280 -62283 -62284 -62285 -62290 -62293 -62294 -62295 -62296 -62300 -62303 -62304 -62305 -62306 -62309 -62320 -62323 -62324 -62325 -62328 -62330 -62334 -62335 -62340 -62343 -62345 -62350 -62360 -62363 -62370 -62373 -62374 -62375 -62376 -62377 -62380 -62382 -62384 -62385 -62387 -62388 -62389 -62390 -62398 -62399 -62400 -62409 -62410 -62420 -62428 -62430 -62433 -62440 -62445 -62446 -62447 -62448 -62450 -62460 -62466 -62467 -62468 -62469 -62470 -62473 -62474 -62475 -62480 -62490 -62493 -62496 -62497 -62498 -62499 -62500 -62507 -62508 -62509 -62510 -62514 -62515 -62517 -62520 -62523 -62524 -62525 -62526 -62527 -62528 -62529 -62530 -62535 -62536 -62540 -62542 -62550 -62553 -62554 -62555 -62556 -62560 -62563 -62564 -62565 -62566 -62567 -62570 -62573 -62574 -62575 -62576 -62577 -62578 -62580 -62583 -62584 -62585 -62586 -62587 -62588 -62590 -62593 -62594 -62595 -62596 -62599 -62600 -62605 -62606 -62607 -62608 -62610 -62615 -62616 -62617 -62618 -62620 -62622 -62630 -62631 -62640 -62642 -62643 -62646 -62647 -62650 -62652 -62653 -62654 -62660 -62662 -62663 -62664 -62665 -62666 -62668 -62674 -62675 -62676 -62680 -62683 -62684 -62685 -62686 -62690 -62693 -62694 -62695 -62696 -62697 -62700 -62701 -62703 -62709 -62713 -62714 -62715 -62718 -62720 -62722 -62723 -62724 -62725 -62730 -62732 -62733 -62735 -62736 -62737 -62738 -62739 -62740 -62742 -62743 -62744 -62745 -62746 -62747 -62748 -62749 -62751 -62752 -62753 -62757 -62758 -62759 -62760 -62763 -62764 -62765 -62766 -62767 -62768 -62770 -62772 -62773 -62774 -62775 -62776 -62777 -62779 -62780 -62783 -62784 -62785 -62790 -62795 -62800 -62805 -62809 -62810 -62820 -62823 -62824 -62825 -62826 -62827 -62828 -62830 -62832 -62835 -62836 -62837 -62838 -62840 -62843 -62844 -62845 -62848 -62849 -62850 -62853 -62856 -62859 -62870 -62877 -62878 -62879 -62890 -62895 -62900 -62905 -62906 -62907 -62908 -62909 -62910 -62913 -62914 -62915 -62916 -62917 -62920 -62921 -62922 -62923 -62924 -62925 -62926 -62927 -62930 -62934 -62940 -62950 -62951 -62952 -62956 -62957 -62960 -62962 -62963 -62970 -62972 -62975 -62977 -62980 -62983 -62984 -62985 -62986 -62987 -62988 -62990 -62993 -62994 -62995 -62996 -63000 -63009 -63010 -63018 -63019 -63020 -63021 -63022 -63023 -63030 -63035 -63037 -63038 -63039 -63040 -63050 -63058 -63059 -63060 -63061 -63062 -63066 -63067 -63068 -63069 -63070 -63080 -63081 -63082 -63083 -63084 -63088 -63089 -63100 -63109 -63110 -63114 -63115 -63116 -63117 -63119 -63120 -63125 -63129 -63130 -63135 -63136 -63137 -63138 -63139 -63147 -63149 -63150 -63155 -63156 -63157 -63158 -63159 -63160 -63163 -63164 -63166 -63167 -63168 -63169 -63170 -63173 -63174 -63175 -63176 -63177 -63178 -63179 -63180 -63183 -63184 -63185 -63186 -63189 -63190 -63193 -63194 -63195 -63196 -63197 -63198 -63199 -63200 -63202 -63203 -63205 -63207 -63225 -63227 -63300 -63310 -63311 -63312 -63313 -63320 -63321 -63330 -63340 -63341 -63350 -63351 -63352 -63360 -63400 -63402 -63403 -63404 -63406 -63407 -63408 -63410 -63411 -63412 -63413 -63415 -63420 -63421 -63424 -63425 -63426 -63427 -63429 -63430 -63432 -63433 -63434 -63435 -63436 -63437 -63440 -63441 -63442 -63445 -63446 -63447 -63449 -63450 -63453 -63454 -63455 -63456 -63457 -63460 -63463 -63467 -63468 -63469 -63470 -63477 -63478 -63479 -63480 -63481 -63482 -63483 -63489 -63490 -63491 -63492 -63493 -63495 -63500 -63501 -63502 -63503 -63504 -63505 -63506 -63507 -63508 -63509 -63510 -63511 -63512 -63513 -63514 -63515 -63516 -63517 -63518 -63519 -63520 -63522 -63523 -63524 -63525 -63526 -63527 -63528 -63529 -63530 -63531 -63533 -63534 -63535 -63536 -63537 -63538 -63539 -63540 -63543 -63546 -63550 -63552 -63553 -63554 -63555 -63556 -63558 -63560 -63561 -63562 -63563 -63564 -63565 -63567 -63568 -63569 -63570 -63573 -63574 -63575 -63576 -63577 -63578 -63579 -63580 -63581 -63582 -63583 -63584 -63585 -63587 -63590 -63594 -63595 -63600 -63604 -63605 -63606 -63610 -63613 -63614 -63615 -63616 -63618 -63619 -63620 -63621 -63622 -63623 -63625 -63626 -63628 -63630 -63631 -63633 -63634 -63635 -63636 -63637 -63638 -63640 -63645 -63646 -63648 -63650 -63651 -63652 -63655 -63656 -63658 -63660 -63670 -63700 -63702 -63703 -63704 -63705 -63706 -63707 -63708 -63709 -63710 -63712 -63714 -63715 -63717 -63718 -63720 -63722 -63723 -63724 -63726 -63728 -63729 -63730 -63732 -63734 -63735 -63736 -63737 -63738 -63739 -63740 -63742 -63743 -63744 -63745 -63750 -63751 -63752 -63753 -63754 -63755 -63756 -63757 -63758 -63760 -63762 -63763 -63764 -63765 -63766 -63770 -63771 -63772 -63773 -63774 -63775 -63776 -63777 -63779 -63780 -63782 -63783 -63784 -63785 -63786 -63787 -63790 -63791 -63792 -63793 -63794 -63795 -63796 -63797 -63798 -63799 -63804 -63806 -63807 -63809 -63810 -63820 -63826 -63830 -63831 -63833 -63834 -63835 -63836 -63837 -63840 -63843 -63844 -63845 -63846 -63850 -63853 -63854 -63857 -63865 -63866 -63867 -63868 -63870 -63873 -63874 -63877 -63880 -63881 -63882 -63883 -63884 -63885 -63890 -63892 -63896 -63897 -63898 -63900 -63904 -63905 -63910 -63911 -63915 -63920 -63923 -63925 -63927 -63928 -63930 -63935 -63938 -63940 -63943 -63944 -63948 -63954 -63957 -63958 -63959 -63960 -63965 -63966 -63967 -63968 -63969 -63970 -63971 -63973 -63974 -63975 -63980 -63985 -63990 -64000 -64004 -64006 -64007 -64009 -64010 -64018 -64019 -64020 -64030 -64040 -64049 -64050 -64060 -64070 -64100 -64102 -64103 -64105 -64106 -64107 -64108 -64109 -64110 -64115 -64116 -64117 -64118 -64119 -64120 -64130 -64140 -64145 -64148 -64150 -64157 -64158 -64159 -64160 -64165 -64166 -64167 -64168 -64170 -64178 -64180 -64186 -64190 -64200 -64204 -64205 -64206 -64207 -64208 -64209 -64210 -64215 -64216 -64217 -64218 -64219 -64220 -64225 -64226 -64227 -64228 -64229 -64230 -64233 -64234 -64235 -64236 -64237 -64238 -64239 -64240 -64244 -64245 -64246 -64247 -64248 -64249 -64250 -64258 -64259 -64260 -64264 -64265 -64266 -64268 -64269 -64270 -64280 -64290 -64299 -64300 -64310 -64320 -64330 -64340 -64344 -64345 -64346 -64347 -64348 -64349 -64350 -64355 -64360 -64365 -64366 -64367 -64368 -64369 -64370 -64380 -64390 -64400 -64408 -64410 -64419 -64420 -64429 -64430 -64440 -64442 -64447 -64449 -64450 -64460 -64469 -64470 -64480 -64488 -64489 -64490 -64500 -64508 -64510 -64517 -64520 -64530 -64536 -64540 -64549 -64550 -64560 -64568 -64569 -64570 -64571 -64580 -64590 -64600 -64610 -64618 -64619 -64620 -64630 -64632 -64633 -64634 -64635 -64636 -64637 -64638 -64639 -64640 -64649 -64650 -64659 -64660 -64700 -64707 -64708 -64710 -64714 -64715 -64716 -64718 -64720 -64725 -64726 -64727 -64728 -64729 -64730 -64736 -64740 -64745 -64750 -64753 -64754 -64755 -64756 -64758 -64759 -64760 -64763 -64764 -64765 -64766 -64767 -64769 -64770 -64780 -64783 -64784 -64785 -64788 -64789 -64790 -64798 -64799 -64809 -64810 -64820 -64830 -64833 -64834 -64835 -64839 -64840 -64844 -64845 -64846 -64849 -64850 -64857 -64858 -64859 -64860 -64863 -64865 -64870 -64878 -64879 -64880 -64890 -64897 -64898 -64899 -64900 -64909 -64910 -64920 -64925 -64926 -64930 -64940 -64949 -64950 -64960 -64968 -64969 -64970 -64978 -64979 -64980 -64984 -64985 -64986 -64987 -64988 -64989 -64990 -64998 -65000 -65001 -65002 -65004 -65008 -65010 -65030 -65032 -65033 -65034 -65036 -65040 -65042 -65057 -65059 -65070 -65075 -65076 -65080 -65088 -65090 -65092 -65100 -65105 -65110 -65118 -65120 -65140 -65150 -65200 -65210 -65220 -65230 -65233 -65240 -65243 -65244 -65250 -65255 -65256 -65257 -65260 -65270 -65272 -65276 -65280 -65288 -65289 -65290 -65299 -65300 -65302 -65336 -65340 -65347 -65348 -65350 -65357 -65370 -65380 -65386 -65389 -65390 -65395 -65400 -65410 -65415 -65419 -65420 -65429 -65430 -65436 -65440 -65449 -65450 -65480 -65500 -65520 -65530 -65534 -65535 -65538 -65550 -65554 -65556 -65558 -65560 -65562 -65563 -65564 -65565 -65600 -65650 -65700 -65750 -65760 -65780 -65800 -65810 -65813 -65814 -65815 -65819 -65830 -65835 -65836 -65850 -65880 -65900 -65920 -65930 -65936 -65940 -65950 -66000 -66003 -66004 -66005 -66006 -66007 -66008 -66009 -66010 -66020 -66022 -66023 -66030 -66040 -66042 -66050 -66051 -66052 -66053 -66054 -66055 -66056 -66057 -66058 -66059 -66060 -66061 -66062 -66063 -66064 -66065 -66067 -66070 -66072 -66073 -66074 -66075 -66079 -66080 -66084 -66085 -66100 -66110 -66114 -66115 -66116 -66118 -66119 -66120 -66129 -66130 -66138 -66139 -66140 -66143 -66144 -66145 -66147 -66148 -66149 -66150 -66159 -66160 -66165 -66166 -66167 -66168 -66169 -66170 -66179 -66180 -66186 -66187 -66188 -66189 -66190 -66195 -66196 -66197 -66198 -66199 -66200 -66210 -66214 -66215 -66216 -66217 -66218 -66219 -66220 -66223 -66225 -66226 -66227 -66228 -66230 -66233 -66234 -66235 -66236 -66237 -66238 -66239 -66240 -66244 -66245 -66246 -66247 -66248 -66249 -66250 -66254 -66255 -66257 -66258 -66259 -66260 -66264 -66265 -66266 -66267 -66268 -66269 -66270 -66273 -66274 -66275 -66276 -66277 -66278 -66279 -66280 -66285 -66286 -66287 -66288 -66289 -66290 -66294 -66295 -66296 -66297 -66298 -66299 -66350 -66353 -66354 -66355 -66356 -66357 -66358 -66359 -66360 -66362 -66363 -66364 -66365 -66366 -66367 -66368 -66369 -66370 -66373 -66374 -66375 -66376 -66377 -66378 -66379 -66387 -66390 -66400 -66409 -66410 -66412 -66413 -66414 -66415 -66417 -66418 -66420 -66422 -66423 -66424 -66425 -66427 -66428 -66430 -66434 -66435 -66436 -66437 -66438 -66440 -66444 -66445 -66446 -66447 -66448 -66449 -66450 -66452 -66455 -66456 -66457 -66458 -66459 -66460 -66463 -66464 -66465 -66466 -66468 -66469 -66470 -66473 -66475 -66476 -66477 -66478 -66479 -66480 -66482 -66484 -66485 -66486 -66488 -66489 -66490 -66492 -66493 -66494 -66495 -66496 -66499 -66550 -66559 -66600 -66601 -66603 -66604 -66605 -66606 -66609 -66610 -66612 -66613 -66614 -66615 -66620 -66623 -66626 -66627 -66630 -66632 -66633 -66634 -66635 -66636 -66637 -66640 -66643 -66644 -66645 -66646 -66647 -66648 -66649 -66650 -66655 -66670 -66679 -66680 -66683 -66690 -66693 -66700 -66708 -66750 -66770 -66790 -66800 -66810 -66812 -66820 -66824 -66825 -66826 -66830 -66835 -66840 -66842 -66847 -66848 -66849 -66850 -66860 -66861 -66865 -66870 -66872 -66880 -66900 -66910 -66930 -66940 -66945 -66950 -66955 -66960 -66963 -66964 -66980 -67000 -67002 -67003 -67010 -67012 -67030 -67050 -67052 -67055 -67060 -67097 -67099 -67100 -67102 -67105 -67110 -67112 -67113 -67114 -67115 -67116 -67117 -67118 -67119 -67120 -67124 -67128 -67129 -67130 -67137 -67138 -67139 -67140 -67142 -67143 -67144 -67145 -67146 -67147 -67148 -67149 -67150 -67153 -67155 -67160 -67164 -67167 -67168 -67169 -67170 -67173 -67174 -67176 -67177 -67178 -67179 -67180 -67182 -67183 -67184 -67185 -67186 -67187 -67188 -67189 -67190 -67192 -67193 -67194 -67195 -67196 -67197 -67198 -67199 -67250 -67253 -67254 -67255 -67256 -67257 -67259 -67260 -67262 -67265 -67266 -67267 -67269 -67270 -67275 -67276 -67277 -67279 -67280 -67286 -67287 -67288 -67289 -67290 -67296 -67298 -67300 -67302 -67303 -67304 -67307 -67308 -67310 -67312 -67313 -67314 -67315 -67316 -67317 -67318 -67320 -67322 -67323 -67324 -67325 -67327 -67328 -67329 -67330 -67334 -67337 -67338 -67340 -67344 -67350 -67353 -67360 -67362 -67363 -67370 -67372 -67374 -67380 -67382 -67400 -67403 -67405 -67406 -67413 -67414 -67415 -67416 -67417 -67423 -67430 -67440 -67448 -67451 -67453 -67454 -67456 -67459 -67460 -67462 -67463 -67464 -67467 -67469 -67470 -67473 -67474 -67475 -67480 -67483 -67484 -67485 -67490 -67492 -67493 -67496 -67498 -67500 -67510 -67512 -67515 -67520 -67528 -67530 -67535 -67540 -67541 -67542 -67543 -67544 -67550 -67554 -67560 -67563 -67570 -67580 -67587 -67588 -67589 -67590 -67599 -67600 -67604 -67606 -67607 -67608 -67610 -67611 -67612 -67613 -67614 -67615 -67616 -67617 -67618 -67619 -67637 -67639 -67640 -67650 -67670 -67680 -67690 -67700 -67710 -67713 -67714 -67715 -67716 -67720 -67730 -67735 -67740 -67750 -67754 -67755 -67756 -67760 -67767 -67768 -67769 -67770 -67778 -67779 -67780 -67790 -67800 -67802 -67803 -67804 -67805 -67806 -67808 -67809 -67812 -67815 -67816 -67817 -67819 -67824 -67825 -67826 -67828 -67830 -67842 -67844 -67845 -67846 -67847 -67849 -67850 -67853 -67854 -67855 -67856 -67857 -67858 -67860 -67863 -67864 -67865 -67866 -67867 -67868 -67870 -67872 -67873 -67874 -67875 -67876 -67877 -67878 -67880 -67881 -67884 -67885 -67890 -67895 -67896 -67897 -67898 -67899 -67900 -67902 -67904 -67905 -67906 -67907 -67908 -67912 -67913 -67914 -67915 -67916 -67917 -67920 -67921 -67923 -67924 -67925 -67926 -67928 -67930 -67931 -67932 -67933 -67934 -67935 -67936 -67937 -67938 -67940 -67941 -67942 -67943 -67944 -67947 -67950 -67952 -67954 -67955 -67956 -67957 -67958 -67959 -67960 -67965 -67966 -67972 -67973 -67974 -67975 -67976 -67977 -67978 -67980 -67982 -67983 -67984 -67985 -67986 -67990 -67996 -68000 -68003 -68008 -68009 -68010 -68013 -68014 -68015 -68016 -68017 -68018 -68020 -68023 -68024 -68025 -68026 -68027 -68028 -68030 -68035 -68036 -68037 -68039 -68040 -68043 -68044 -68045 -68046 -68047 -68048 -68050 -68055 -68058 -68059 -68060 -68065 -68066 -68067 -68068 -68070 -68075 -68080 -68083 -68087 -68088 -68089 -68090 -68093 -68100 -68101 -68103 -68104 -68110 -68115 -68116 -68117 -68118 -68120 -68125 -68126 -68127 -68128 -68129 -68130 -68140 -68143 -68145 -68146 -68148 -68149 -68150 -68153 -68154 -68157 -68158 -68159 -68160 -68164 -68165 -68166 -68169 -68200 -68201 -68204 -68207 -68208 -68209 -68210 -68213 -68214 -68217 -68218 -68219 -68220 -68223 -68224 -68226 -68227 -68229 -68230 -68232 -68234 -68235 -68236 -68237 -68240 -68244 -68247 -68250 -68254 -68256 -68257 -68258 -68259 -68260 -68262 -68263 -68264 -68266 -68267 -68268 -68269 -68270 -68274 -68275 -68276 -68285 -68287 -68290 -68293 -68297 -68299 -68300 -68310 -68313 -68314 -68320 -68322 -68323 -68324 -68325 -68330 -68333 -68334 -68335 -68336 -68337 -68340 -68345 -68347 -68350 -68353 -68360 -68363 -68364 -68370 -68373 -68374 -68375 -68376 -68396 -68400 -68401 -68402 -68403 -68404 -68405 -68406 -68407 -68410 -68411 -68412 -68415 -68416 -68417 -68418 -68419 -68420 -68422 -68424 -68425 -68426 -68427 -68428 -68430 -68432 -68433 -68434 -68435 -68436 -68437 -68439 -68440 -68442 -68443 -68444 -68445 -68446 -68447 -68448 -68449 -68450 -68451 -68452 -68456 -68457 -68458 -68459 -68460 -68461 -68462 -68464 -68465 -68466 -68467 -68468 -68470 -68471 -68472 -68473 -68474 -68475 -68476 -68479 -68480 -68482 -68483 -68484 -68485 -68486 -68487 -68488 -68490 -68491 -68492 -68493 -68494 -68495 -68496 -68497 -68500 -68501 -68502 -68503 -68504 -68505 -68506 -68508 -68510 -68511 -68512 -68513 -68515 -68518 -68520 -68524 -68527 -68530 -68535 -68540 -68542 -68543 -68544 -68547 -68548 -68550 -68553 -68555 -68557 -68558 -68560 -68561 -68562 -68565 -68569 -68570 -68571 -68575 -68577 -68578 -68580 -68581 -68582 -68583 -68584 -68585 -68590 -68595 -68600 -68601 -68602 -68603 -68604 -68605 -68606 -68607 -68609 -68610 -68611 -68614 -68617 -68620 -68621 -68622 -68624 -68627 -68630 -68631 -68632 -68633 -68635 -68636 -68640 -68641 -68643 -68644 -68645 -68650 -68651 -68652 -68655 -68659 -68660 -68661 -68665 -68670 -68672 -68675 -68680 -68685 -68690 -68691 -68692 -68693 -68694 -68695 -68696 -68700 -68701 -68704 -68706 -68707 -68708 -68710 -68711 -68712 -68714 -68715 -68720 -68722 -68725 -68726 -68727 -68728 -68730 -68734 -68735 -68737 -68740 -68745 -68748 -68750 -68754 -68757 -68760 -68764 -68765 -68767 -68768 -68770 -68774 -68775 -68776 -68777 -68778 -68780 -68783 -68785 -68786 -68790 -68795 -68796 -68797 -68800 -68801 -68803 -68804 -68805 -68806 -68807 -68810 -68811 -68812 -68814 -68817 -68820 -68821 -68822 -68824 -68826 -68827 -68828 -68830 -68834 -68837 -68840 -68844 -68846 -68847 -68850 -68851 -68854 -68857 -68860 -68861 -68865 -68866 -68870 -68875 -68880 -68885 -68890 -68895 -68900 -68901 -68903 -68920 -68921 -68922 -68923 -68924 -68928 -68940 -68941 -68942 -68943 -68944 -68950 -68957 -68960 -68961 -68962 -68963 -68965 -68980 -68987 -68990 -69000 -69001 -69002 -69003 -69005 -69006 -69007 -69008 -69009 -69010 -69011 -69012 -69013 -69014 -69015 -69016 -69017 -69020 -69021 -69022 -69023 -69030 -69031 -69032 -69033 -69034 -69038 -69040 -69041 -69045 -69047 -69050 -69055 -69059 -69060 -69064 -69065 -69070 -69080 -69090 -69091 -69092 -69093 -69094 -69100 -69101 -69104 -69105 -69106 -69110 -69120 -69122 -69128 -69130 -69139 -69140 -69145 -69150 -69154 -69158 -69160 -69170 -69171 -69180 -69190 -69200 -69201 -69202 -69203 -69204 -69205 -69206 -69207 -69209 -69210 -69211 -69212 -69220 -69230 -69231 -69235 -69240 -69241 -69243 -69244 -69249 -69250 -69252 -69253 -69254 -69255 -69257 -69260 -69262 -69265 -69270 -69280 -69282 -69287 -69290 -69291 -69292 -69293 -69296 -69300 -69302 -69304 -69305 -69307 -69310 -69312 -69314 -69320 -69321 -69330 -69333 -69340 -69345 -69350 -69355 -69360 -69361 -69369 -69370 -69375 -69380 -69390 -69394 -69400 -69401 -69402 -69403 -69404 -69405 -69406 -69407 -69408 -69409 -69410 -69411 -69412 -69420 -69421 -69430 -69440 -69449 -69450 -69457 -69460 -69470 -69480 -69481 -69490 -69492 -69500 -69501 -69502 -69503 -69504 -69507 -69508 -69509 -69510 -69512 -69513 -69516 -69519 -69520 -69524 -69526 -69530 -69531 -69535 -69536 -69540 -69541 -69545 -69546 -69547 -69548 -69550 -69551 -69556 -69560 -69561 -69562 -69563 -69565 -69566 -69567 -69569 -69570 -69574 -69577 -69580 -69581 -69582 -69584 -69585 -69590 -69591 -69595 -69600 -69602 -69603 -69604 -69605 -69606 -69607 -69608 -69609 -69610 -69615 -69620 -69621 -69625 -69630 -69631 -69632 -69640 -69641 -69645 -69651 -69657 -69659 -69660 -69661 -69665 -69670 -69675 -69676 -69680 -69681 -69685 -69686 -69690 -69695 -69700 -69702 -69703 -69704 -69705 -69706 -69707 -69708 -69709 -69710 -69711 -69712 -69713 -69714 -69715 -69716 -69717 -69718 -69719 -69720 -69724 -69725 -69729 -69730 -69731 -69735 -69737 -69740 -69742 -69743 -69744 -69750 -69751 -69760 -69770 -69771 -69772 -69773 -69774 -69776 -69777 -69780 -69787 -69790 -69792 -69799 -69800 -69802 -69803 -69804 -69805 -69806 -69807 -69808 -69809 -69810 -69811 -69812 -69815 -69816 -69817 -69818 -69820 -69824 -69825 -69826 -69827 -69830 -69834 -69836 -69837 -69838 -69840 -69841 -69845 -69848 -69850 -69855 -69859 -69860 -69865 -69866 -69867 -69868 -69869 -69870 -69875 -69880 -69885 -69890 -69891 -69895 -69900 -69901 -69902 -69909 -69915 -69920 -69925 -69930 -69935 -69940 -69941 -69942 -69946 -69950 -69951 -69955 -69956 -69960 -69970 -69980 -69990 -69991 -69995 -70000 -70010 -70013 -70014 -70020 -70023 -70024 -70030 -70040 -70043 -70044 -70045 -70050 -70100 -70101 -70102 -70103 -70110 -70113 -70114 -70115 -70117 -70120 -70121 -70124 -70125 -70130 -70135 -70137 -70140 -70141 -70142 -70143 -70144 -70146 -70150 -70155 -70156 -70157 -70158 -70160 -70161 -70163 -70164 -70165 -70169 -70170 -70175 -70177 -70178 -70180 -70185 -70189 -70190 -70200 -70201 -70206 -70210 -70211 -70212 -70213 -70215 -70220 -70221 -70222 -70223 -70224 -70225 -70226 -70229 -70230 -70231 -70232 -70234 -70235 -70236 -70240 -70241 -70242 -70243 -70244 -70249 -70250 -70251 -70252 -70253 -70254 -70255 -70256 -70257 -70260 -70261 -70265 -70267 -70270 -70271 -70276 -70280 -70281 -70282 -70283 -70284 -70286 -70288 -70289 -70290 -70293 -70294 -70296 -70298 -70300 -70304 -70305 -70306 -70307 -70308 -70309 -70310 -70312 -70313 -70314 -70315 -70317 -70318 -70319 -70320 -70322 -70323 -70324 -70325 -70326 -70327 -70328 -70329 -70330 -70331 -70332 -70333 -70334 -70335 -70336 -70337 -70338 -70340 -70341 -70342 -70343 -70350 -70351 -70353 -70354 -70355 -70356 -70360 -70370 -70371 -70372 -70373 -70380 -70382 -70383 -70390 -70392 -70393 -70400 -70402 -70403 -70404 -70405 -70406 -70407 -70408 -70410 -70411 -70412 -70417 -70420 -70424 -70426 -70428 -70430 -70435 -70436 -70437 -70439 -70440 -70442 -70445 -70446 -70450 -70453 -70456 -70458 -70460 -70461 -70464 -70467 -70470 -70474 -70477 -70478 -70479 -70480 -70482 -70486 -70490 -70495 -70496 -70500 -70501 -70502 -70503 -70505 -70506 -70509 -70510 -70511 -70512 -70520 -70521 -70529 -70530 -70531 -70532 -70533 -70534 -70540 -70546 -70550 -70560 -70561 -70563 -70565 -70569 -70570 -70571 -70575 -70580 -70586 -70590 -70595 -70600 -70610 -70612 -70613 -70614 -70620 -70630 -70633 -70640 -70650 -70660 -70670 -70680 -70690 -70700 -70701 -70703 -70704 -70705 -70706 -70707 -70710 -70711 -70713 -70716 -70720 -70723 -70725 -70730 -70735 -70740 -70742 -70744 -70746 -70750 -70755 -70760 -70762 -70763 -70765 -70769 -70770 -70771 -70772 -70773 -70774 -70777 -70780 -70786 -70789 -70790 -70795 -70800 -70801 -70802 -70803 -70805 -70806 -70808 -70810 -70811 -70813 -70814 -70816 -70818 -70820 -70823 -70826 -70827 -70828 -70830 -70833 -70835 -70836 -70837 -70838 -70839 -70840 -70843 -70844 -70850 -70851 -70854 -70855 -70860 -70861 -70862 -70866 -70868 -70869 -70870 -70872 -70874 -70877 -70878 -70880 -70884 -70887 -70888 -70889 -70890 -70894 -70897 -70899 -70900 -70902 -70904 -70905 -70906 -70907 -70908 -70910 -70920 -70921 -70930 -70934 -70935 -70936 -70937 -70939 -70940 -70944 -70945 -70946 -70947 -70948 -70949 -70950 -70951 -70952 -70953 -70954 -70959 -70960 -70961 -70962 -70966 -70967 -70970 -70971 -70972 -70980 -70984 -70985 -70987 -70988 -70989 -70990 -70991 -70992 -70993 -71000 -71001 -71002 -71003 -71004 -71005 -71006 -71007 -71009 -71010 -71011 -71012 -71014 -71015 -71016 -71017 -71018 -71020 -71030 -71031 -71039 -71040 -71041 -71047 -71048 -71050 -71052 -71053 -71054 -71055 -71059 -71060 -71061 -71063 -71070 -71076 -71077 -71080 -71081 -71087 -71090 -71091 -71092 -71100 -71101 -71103 -71104 -71105 -71106 -71107 -71108 -71109 -71110 -71111 -71112 -71113 -71114 -71115 -71116 -71120 -71121 -71122 -71123 -71124 -71125 -71130 -71131 -71132 -71133 -71134 -71136 -71140 -71142 -71143 -71145 -71146 -71150 -71151 -71153 -71156 -71157 -71160 -71161 -71162 -71170 -71176 -71180 -71181 -71182 -71183 -71184 -71185 -71186 -71187 -71190 -71193 -71194 -71195 -71196 -71200 -71202 -71203 -71204 -71205 -71210 -71211 -71213 -71214 -71215 -71217 -71218 -71220 -71221 -71223 -71224 -71226 -71228 -71230 -71231 -71232 -71233 -71234 -71236 -71238 -71240 -71241 -71244 -71246 -71248 -71250 -71252 -71253 -71254 -71256 -71257 -71259 -71260 -71263 -71264 -71268 -71269 -71270 -71273 -71274 -71275 -71276 -71278 -71279 -71280 -71281 -71282 -71283 -71284 -71286 -71287 -71295 -71296 -71297 -71300 -71301 -71310 -71314 -71320 -71321 -71329 -71330 -71331 -71340 -71342 -71350 -71360 -71370 -71380 -71384 -71387 -71390 -71399 -71400 -71401 -71407 -71408 -71409 -71410 -71413 -71414 -71416 -71422 -71429 -71430 -71440 -71450 -71459 -71460 -71461 -71470 -71480 -71490 -71492 -71494 -71500 -71502 -71503 -71504 -71505 -71506 -71507 -71508 -71510 -71512 -71513 -71515 -71516 -71517 -71518 -71520 -71523 -71525 -71526 -71529 -71530 -71534 -71537 -71540 -71543 -71545 -71548 -71550 -71554 -71557 -71560 -71562 -71565 -71566 -71567 -71568 -71569 -71570 -71573 -71574 -71575 -71576 -71577 -71580 -71586 -71588 -71590 -71595 -71600 -71602 -71603 -71604 -71605 -71606 -71607 -71608 -71609 -71610 -71612 -71613 -71620 -71624 -71630 -71631 -71640 -71641 -71642 -71643 -71648 -71650 -71655 -71656 -71660 -71670 -71671 -71675 -71678 -71680 -71686 -71690 -71699 -71700 -71702 -71703 -71704 -71705 -71706 -71707 -71708 -71710 -71715 -71720 -71721 -71722 -71730 -71740 -71741 -71742 -71743 -71747 -71750 -71760 -71761 -71762 -71764 -71765 -71766 -71767 -71770 -71771 -71780 -71784 -71785 -71786 -71787 -71788 -71789 -71790 -71791 -71792 -71799 -71800 -71801 -71802 -71803 -71804 -71805 -71806 -71807 -71808 -71809 -71810 -71820 -71821 -71830 -71831 -71833 -71834 -71835 -71836 -71837 -71838 -71839 -71840 -71850 -71851 -71852 -71870 -71890 -71900 -71901 -71910 -71920 -71930 -71940 -71941 -71950 -71960 -71961 -71962 -71963 -71970 -71971 -71980 -71982 -71983 -71984 -71985 -71986 -71987 -71988 -71989 -71990 -71992 -71993 -71994 -71995 -71996 -72000 -72007 -72008 -72009 -72010 -72013 -72014 -72015 -72016 -72017 -72018 -72019 -72020 -72029 -72030 -72034 -72040 -72044 -72045 -72047 -72050 -72060 -72070 -72080 -72089 -72090 -72094 -72095 -72097 -72100 -72103 -72104 -72105 -72106 -72107 -72108 -72110 -72114 -72115 -72116 -72120 -72124 -72127 -72130 -72133 -72134 -72135 -72136 -72140 -72150 -72154 -72159 -72160 -72161 -72170 -72173 -72175 -72176 -72179 -72180 -72185 -72189 -72190 -72197 -72198 -72199 -72200 -72205 -72210 -72216 -72217 -72219 -72220 -72225 -72226 -72227 -72228 -72229 -72230 -72237 -72240 -72243 -72250 -72260 -72266 -72267 -72270 -72280 -72290 -72300 -72303 -72307 -72308 -72309 -72310 -72313 -72314 -72315 -72320 -72329 -72330 -72340 -72350 -72359 -72360 -72361 -72363 -72365 -72366 -72370 -72377 -72378 -72379 -72380 -72390 -72400 -72410 -72411 -72420 -72422 -72424 -72425 -72426 -72430 -72440 -72450 -72456 -72457 -72459 -72460 -72464 -72466 -72468 -72470 -72474 -72476 -72477 -72478 -72480 -72488 -72489 -72490 -72492 -72494 -72495 -72496 -72498 -72499 -72500 -72501 -72503 -72504 -72505 -72506 -72509 -72510 -72520 -72530 -72532 -72533 -72534 -72538 -72539 -72540 -72543 -72544 -72550 -72553 -72557 -72560 -72563 -72564 -72565 -72567 -72570 -72573 -72574 -72575 -72576 -72577 -72580 -72582 -72587 -72588 -72589 -72590 -72593 -72594 -72595 -72596 -72599 -72600 -72620 -72640 -72660 -72665 -72668 -72669 -72670 -72680 -72685 -72700 -72702 -72705 -72706 -72710 -72720 -72725 -72729 -72730 -72735 -72750 -72755 -72756 -72757 -72760 -72762 -72764 -72765 -72766 -72767 -72768 -72770 -72771 -72772 -72774 -72775 -72776 -72777 -72778 -72788 -72810 -72812 -72813 -72814 -72815 -72817 -72819 -72820 -72824 -72825 -72828 -72830 -72840 -72844 -72845 -72846 -72848 -72850 -72860 -72861 -72864 -72867 -72900 -72920 -72940 -72943 -72960 -72965 -72968 -72970 -72971 -72973 -72975 -72977 -72978 -72980 -72982 -72992 -72993 -72994 -72996 -73000 -73005 -73008 -73010 -73011 -73012 -73013 -73014 -73020 -73021 -73023 -73025 -73026 -73027 -73028 -73029 -73030 -73036 -73037 -73040 -73042 -73045 -73046 -73048 -73049 -73050 -73053 -73055 -73056 -73057 -73058 -73060 -73063 -73064 -73065 -73068 -73069 -73070 -73071 -73072 -73073 -73074 -73075 -73076 -73077 -73080 -73088 -73089 -73090 -73091 -73094 -73095 -73096 -73097 -73098 -73099 -73100 -73101 -73103 -73110 -73112 -73113 -73115 -73117 -73119 -73120 -73128 -73129 -73130 -73133 -73134 -73135 -73140 -73141 -73142 -73147 -73160 -73161 -73162 -73163 -73164 -73165 -73166 -73167 -73168 -73169 -73170 -73172 -73173 -73174 -73175 -73176 -73177 -73178 -73180 -73181 -73185 -73190 -73191 -73193 -73195 -73200 -73211 -73217 -73220 -73226 -73227 -73228 -73230 -73234 -73235 -73237 -73240 -73241 -73242 -73246 -73250 -73251 -73253 -73255 -73259 -73260 -73270 -73271 -73274 -73280 -73282 -73283 -73284 -73286 -73288 -73289 -73298 -73299 -73300 -73301 -73302 -73303 -73304 -73305 -73306 -73307 -73308 -73309 -73310 -73312 -73313 -73314 -73315 -73316 -73317 -73318 -73319 -73320 -73321 -73324 -73327 -73328 -73329 -73330 -73337 -73338 -73340 -73341 -73342 -73343 -73344 -73348 -73350 -73357 -73360 -73364 -73370 -73376 -73380 -73390 -73392 -73395 -73396 -73397 -73400 -73401 -73406 -73410 -73420 -73425 -73430 -73431 -73438 -73440 -73450 -73455 -73456 -73460 -73464 -73466 -73467 -73468 -73470 -73471 -73473 -73475 -73476 -73477 -73480 -73482 -73486 -73490 -73497 -73500 -73502 -73503 -73504 -73505 -73506 -73507 -73509 -73510 -73514 -73515 -73516 -73517 -73518 -73520 -73530 -73537 -73538 -73539 -73540 -73550 -73554 -73557 -73560 -73563 -73564 -73566 -73568 -73569 -73570 -73572 -73573 -73579 -73580 -73581 -73583 -73584 -73586 -73587 -73588 -73590 -73591 -73592 -73593 -73595 -73600 -73610 -73611 -73613 -73615 -73620 -73621 -73625 -73630 -73631 -73633 -73635 -73637 -73638 -73640 -73644 -73645 -73646 -73647 -73650 -73654 -73655 -73656 -73657 -73658 -73659 -73660 -73661 -73663 -73665 -73666 -73680 -73681 -73683 -73684 -73685 -73686 -73688 -73690 -73691 -73692 -73693 -73694 -73697 -73700 -73702 -73720 -73721 -73722 -73723 -73724 -73725 -73726 -73730 -73732 -73734 -73735 -73736 -73737 -73738 -73739 -73740 -73742 -73743 -73746 -73747 -73748 -73750 -73751 -73752 -73753 -73754 -73756 -73759 -73760 -73761 -73764 -73765 -73766 -73780 -73790 -73791 -73792 -73795 -73796 -73797 -73798 -73799 -73800 -73810 -73811 -73815 -73816 -73820 -73830 -73831 -73840 -73841 -73850 -73860 -73870 -73880 -73881 -73885 -73886 -73887 -73890 -73895 -73899 -73900 -73903 -73904 -73905 -73906 -73907 -73909 -73910 -73915 -73918 -73920 -73926 -73927 -73928 -73930 -73935 -73938 -73939 -73940 -73941 -73944 -73948 -73949 -73950 -73954 -73956 -73960 -73965 -73966 -73967 -73968 -73969 -73970 -73972 -73974 -73976 -73977 -73980 -73982 -73983 -73985 -73986 -73987 -73989 -73990 -73992 -73993 -73994 -73995 -73996 -73997 -73998 -74000 -74010 -74013 -74020 -74021 -74030 -74031 -74040 -74041 -74042 -74043 -74050 -74053 -74058 -74059 -74060 -74064 -74068 -74069 -74070 -74074 -74078 -74079 -74080 -74088 -74089 -74090 -74099 -74100 -74102 -74103 -74104 -74105 -74106 -74107 -74108 -74109 -74110 -74115 -74116 -74117 -74120 -74122 -74125 -74126 -74128 -74129 -74130 -74135 -74137 -74140 -74144 -74150 -74155 -74160 -74161 -74162 -74163 -74165 -74166 -74167 -74168 -74169 -74170 -74180 -74183 -74190 -74200 -74210 -74215 -74218 -74220 -74227 -74230 -74233 -74239 -74240 -74250 -74260 -74270 -74280 -74290 -74293 -74294 -74295 -74296 -74300 -74305 -74310 -74320 -74325 -74330 -74334 -74335 -74336 -74337 -74339 -74340 -74342 -74343 -74348 -74350 -74355 -74357 -74358 -74360 -74362 -74363 -74365 -74367 -74368 -74369 -74370 -74373 -74374 -74375 -74376 -74377 -74378 -74379 -74380 -74382 -74385 -74389 -74390 -74393 -74394 -74395 -74397 -74400 -74410 -74418 -74419 -74420 -74426 -74430 -74435 -74440 -74443 -74448 -74449 -74450 -74460 -74463 -74467 -74468 -74470 -74480 -74490 -74500 -74505 -74506 -74507 -74508 -74510 -74514 -74516 -74520 -74521 -74522 -74530 -74534 -74540 -74544 -74545 -74546 -74547 -74550 -74557 -74560 -74565 -74566 -74567 -74568 -74570 -74573 -74575 -74576 -74577 -74578 -74580 -74582 -74584 -74585 -74586 -74587 -74588 -74589 -74590 -74600 -74610 -74620 -74630 -74633 -74634 -74635 -74640 -74641 -74645 -74649 -74650 -74651 -74653 -74656 -74660 -74670 -74680 -74684 -74685 -74688 -74690 -74691 -74692 -74693 -74694 -74695 -74696 -74697 -74698 -74699 -74700 -74702 -74703 -74708 -74710 -74714 -74716 -74720 -74724 -74727 -74729 -74730 -74732 -74733 -74734 -74735 -74736 -74737 -74740 -74741 -74750 -74755 -74757 -74760 -74770 -74773 -74777 -74780 -74790 -74792 -74793 -74794 -74795 -74796 -74798 -74800 -74801 -74802 -74803 -74806 -74807 -74808 -74810 -74813 -74815 -74816 -74817 -74818 -74820 -74826 -74830 -74835 -74838 -74840 -74842 -74844 -74846 -74847 -74850 -74853 -74855 -74859 -74860 -74863 -74865 -74867 -74870 -74872 -74874 -74875 -74876 -74880 -74884 -74885 -74886 -74887 -74889 -74890 -74893 -74895 -74896 -74900 -74905 -74906 -74907 -74908 -74909 -74910 -74915 -74917 -74920 -74930 -74935 -74940 -74941 -74942 -74943 -74944 -74945 -74946 -74947 -74949 -74950 -74955 -74960 -74963 -74966 -74970 -74974 -74975 -74976 -74977 -74978 -74979 -74980 -74990 -74993 -74995 -74996 -74998 -75000 -75010 -75012 -75014 -75016 -75020 -75021 -75023 -75029 -75030 -75035 -75036 -75037 -75039 -75040 -75043 -75044 -75046 -75049 -75050 -75052 -75053 -75054 -75055 -75056 -75057 -75059 -75060 -75063 -75065 -75069 -75070 -75071 -75072 -75073 -75074 -75080 -75081 -75082 -75083 -75084 -75087 -75088 -75089 -75090 -75092 -75095 -75096 -75098 -75100 -75110 -75112 -75113 -75114 -75116 -75117 -75118 -75119 -75120 -75125 -75126 -75127 -75128 -75129 -75130 -75137 -75140 -75142 -75145 -75150 -75151 -75154 -75158 -75159 -75160 -75163 -75165 -75166 -75167 -75169 -75170 -75171 -75175 -75176 -75179 -75180 -75186 -75187 -75190 -75194 -75196 -75200 -75204 -75205 -75206 -75207 -75210 -75211 -75212 -75215 -75219 -75220 -75221 -75225 -75230 -75232 -75235 -75240 -75245 -75250 -75254 -75255 -75258 -75259 -75260 -75270 -75280 -75290 -75300 -75301 -75306 -75307 -75310 -75311 -75320 -75330 -75332 -75335 -75336 -75338 -75340 -75360 -75380 -75389 -75390 -75395 -75396 -75397 -75398 -75399 -75400 -75404 -75410 -75412 -75415 -75420 -75421 -75440 -75460 -75467 -75468 -75470 -75471 -75472 -75476 -75478 -75480 -75483 -75484 -75485 -75486 -75487 -75490 -75491 -75492 -75495 -75497 -75498 -75499 -75500 -75505 -75507 -75510 -75512 -75515 -75520 -75524 -75525 -75526 -75527 -75528 -75529 -75530 -75535 -75536 -75537 -75538 -75539 -75540 -75541 -75547 -75550 -75551 -75558 -75560 -75561 -75562 -75563 -75565 -75570 -75571 -75580 -75584 -75585 -75587 -75588 -75589 -75590 -75591 -75592 -75593 -75597 -75600 -75610 -75613 -75615 -75617 -75620 -75630 -75635 -75640 -75641 -75650 -75653 -75655 -75657 -75659 -75660 -75664 -75670 -75673 -75675 -75678 -75679 -75680 -75681 -75685 -75686 -75687 -75689 -75690 -75694 -75695 -75698 -75699 -75700 -75710 -75717 -75718 -75719 -75720 -75725 -75726 -75730 -75731 -75732 -75740 -75741 -75742 -75743 -75750 -75758 -75760 -75763 -75764 -75765 -75766 -75768 -75769 -75770 -75780 -75784 -75786 -75790 -75793 -75794 -75795 -75796 -75797 -75799 -75800 -75805 -75807 -75809 -75810 -75820 -75822 -75825 -75830 -75835 -75837 -75840 -75841 -75845 -75847 -75848 -75849 -75850 -75853 -75855 -75856 -75857 -75859 -75860 -75865 -75867 -75870 -75873 -75874 -75875 -75876 -75877 -75878 -75879 -75880 -75885 -75886 -75890 -75894 -75895 -75896 -75897 -75900 -75904 -75905 -75906 -75907 -75908 -75909 -75910 -75914 -75915 -75916 -75917 -75918 -75920 -75921 -75922 -75925 -75930 -75934 -75935 -75940 -75941 -75943 -75944 -75945 -75947 -75949 -75950 -75960 -75970 -75972 -75973 -75975 -75980 -75981 -75985 -75986 -75988 -75989 -75990 -75991 -75993 -75995 -75997 -76000 -76005 -76006 -76007 -76008 -76009 -76010 -76017 -76020 -76024 -76025 -76026 -76027 -76028 -76029 -76030 -76036 -76037 -76038 -76039 -76040 -76046 -76047 -76048 -76049 -76050 -76057 -76058 -76059 -76060 -76063 -76067 -76069 -76070 -76074 -76078 -76079 -76080 -76085 -76086 -76087 -76089 -76090 -76093 -76095 -76100 -76110 -76112 -76113 -76114 -76115 -76116 -76117 -76118 -76120 -76121 -76122 -76125 -76127 -76130 -76131 -76134 -76135 -76136 -76137 -76138 -76139 -76140 -76144 -76146 -76147 -76148 -76149 -76150 -76154 -76155 -76156 -76157 -76158 -76159 -76160 -76164 -76165 -76166 -76168 -76169 -76170 -76175 -76176 -76177 -76178 -76179 -76180 -76185 -76186 -76187 -76188 -76190 -76197 -76199 -76206 -76208 -76209 -76210 -76211 -76212 -76213 -76214 -76215 -76216 -76217 -76218 -76219 -76220 -76221 -76223 -76224 -76225 -76226 -76227 -76228 -76229 -76230 -76232 -76233 -76234 -76235 -76236 -76237 -76238 -76239 -76240 -76243 -76244 -76245 -76246 -76247 -76248 -76249 -76250 -76251 -76252 -76253 -76254 -76255 -76256 -76257 -76258 -76259 -76260 -76261 -76262 -76263 -76264 -76265 -76266 -76267 -76268 -76270 -76272 -76274 -76275 -76276 -76277 -76279 -76280 -76281 -76282 -76283 -76284 -76286 -76288 -76289 -76290 -76293 -76294 -76295 -76296 -76297 -76298 -76299 -76300 -76301 -76302 -76305 -76306 -76307 -76308 -76309 -76310 -76311 -76313 -76314 -76315 -76316 -76317 -76318 -76319 -76320 -76321 -76323 -76325 -76326 -76327 -76328 -76330 -76337 -76340 -76341 -76342 -76344 -76345 -76346 -76347 -76348 -76350 -76356 -76357 -76358 -76359 -76360 -76367 -76368 -76370 -76372 -76378 -76379 -76380 -76381 -76382 -76383 -76385 -76388 -76390 -76391 -76393 -76395 -76399 -76400 -76401 -76402 -76410 -76411 -76413 -76414 -76417 -76420 -76421 -76424 -76425 -76434 -76436 -76440 -76450 -76460 -76470 -76471 -76474 -76476 -76478 -76483 -76484 -76485 -76486 -76489 -76490 -76492 -76493 -76494 -76495 -76496 -76499 -76500 -76501 -76502 -76503 -76504 -76505 -76506 -76507 -76508 -76509 -76510 -76513 -76514 -76520 -76521 -76522 -76527 -76528 -76529 -76530 -76534 -76535 -76536 -76537 -76538 -76539 -76540 -76541 -76543 -76545 -76546 -76547 -76548 -76550 -76553 -76555 -76560 -76563 -76564 -76600 -76603 -76604 -76605 -76616 -76620 -76623 -76625 -76630 -76631 -76632 -76633 -76634 -76637 -76640 -76646 -76649 -76650 -76651 -76670 -76675 -76680 -76681 -76685 -76686 -76687 -76697 -76698 -76700 -76703 -76707 -76708 -76709 -76720 -76721 -76722 -76723 -76724 -76725 -76740 -76741 -76743 -76746 -76750 -76757 -76770 -76774 -76775 -76780 -76781 -76783 -76785 -76786 -76790 -76791 -76795 -76796 -76799 -76800 -76803 -76804 -76805 -76806 -76807 -76809 -76810 -76812 -76813 -76814 -76815 -76819 -76820 -76821 -76823 -76826 -76827 -76828 -76829 -76830 -76831 -76833 -76834 -76835 -76836 -76837 -76838 -76840 -76841 -76842 -76846 -76847 -76848 -76849 -76850 -76851 -76853 -76858 -76860 -76861 -76862 -76870 -76875 -76876 -76877 -76879 -76880 -76883 -76884 -76885 -76886 -76887 -76888 -76889 -76890 -76893 -76894 -76895 -76896 -76897 -76900 -76902 -76903 -76904 -76905 -76906 -76907 -76908 -76920 -76921 -76922 -76923 -76924 -76925 -76926 -76927 -76928 -76950 -76951 -76952 -76953 -76956 -76957 -76958 -76970 -76971 -76973 -76974 -76976 -76977 -76980 -76981 -76983 -76984 -76990 -76992 -76993 -76995 -76997 -77000 -77008 -77009 -77010 -77011 -77012 -77013 -77014 -77015 -77016 -77017 -77018 -77019 -77020 -77023 -77024 -77025 -77026 -77027 -77028 -77029 -77030 -77034 -77035 -77036 -77037 -77038 -77039 -77040 -77041 -77048 -77049 -77050 -77059 -77060 -77070 -77079 -77080 -77082 -77083 -77084 -77086 -77090 -77098 -77099 -77100 -77104 -77105 -77106 -77107 -77108 -77110 -77114 -77115 -77116 -77117 -77118 -77120 -77121 -77123 -77125 -77130 -77135 -77140 -77144 -77145 -77146 -77147 -77148 -77150 -77156 -77158 -77160 -77163 -77169 -77170 -77174 -77175 -77176 -77177 -77178 -77180 -77185 -77188 -77189 -77190 -77192 -77196 -77197 -77198 -77200 -77210 -77214 -77215 -77216 -77217 -77220 -77229 -77230 -77238 -77239 -77240 -77249 -77250 -77259 -77300 -77302 -77303 -77304 -77305 -77306 -77307 -77310 -77320 -77330 -77333 -77350 -77355 -77360 -77365 -77366 -77367 -77368 -77369 -77370 -77376 -77380 -77385 -77390 -77398 -77400 -77402 -77403 -77404 -77406 -77407 -77408 -77409 -77500 -77503 -77504 -77505 -77508 -77509 -77510 -77516 -77517 -77518 -77519 -77520 -77524 -77525 -77526 -77527 -77528 -77529 -77530 -77533 -77534 -77535 -77536 -77537 -77538 -77539 -77540 -77560 -77569 -77580 -77600 -77609 -77610 -77613 -77620 -77622 -77645 -77660 -77663 -77664 -77665 -77666 -77667 -77670 -77673 -77675 -77676 -77710 -77712 -77713 -77714 -77717 -77720 -77724 -77727 -77728 -77730 -77735 -77737 -77740 -77749 -77750 -77758 -77759 -77760 -77768 -77769 -77780 -77782 -77789 -77790 -77799 -77800 -77805 -77806 -77807 -77808 -77809 -77850 -77858 -77859 -77870 -77873 -77874 -77875 -77876 -77880 -77882 -77889 -77890 -77893 -77894 -77895 -77896 -77898 -77899 -77900 -77905 -77906 -77907 -77910 -77913 -77914 -77917 -77918 -77919 -77920 -77923 -77925 -77927 -77928 -77930 -77934 -77938 -77940 -77943 -77944 -77950 -77952 -77953 -77954 -77955 -77957 -77958 -77959 -77960 -77963 -77964 -77965 -77966 -77973 -77974 -77975 -77976 -77980 -77981 -77983 -77984 -77985 -77988 -77990 -77991 -77992 -77994 -78000 -78008 -78009 -78025 -78037 -78038 -78040 -78048 -78049 -78100 -78106 -78107 -78109 -78110 -78115 -78116 -78117 -78120 -78130 -78136 -78137 -78140 -78143 -78144 -78145 -78146 -78147 -78148 -78150 -78153 -78154 -78165 -78170 -78173 -78174 -78175 -78176 -78177 -78178 -78180 -78200 -78209 -78210 -78213 -78214 -78215 -78216 -78217 -78218 -78219 -78220 -78230 -78233 -78234 -78235 -78236 -78238 -78239 -78240 -78250 -78258 -78259 -78260 -78268 -78269 -78270 -78280 -78290 -78294 -78298 -78300 -78306 -78307 -78308 -78309 -78310 -78318 -78319 -78320 -78328 -78330 -78338 -78339 -78340 -78342 -78348 -78349 -78350 -78356 -78357 -78358 -78359 -78360 -78364 -78365 -78366 -78367 -78368 -78369 -78370 -78377 -78378 -78379 -78380 -78384 -78385 -78386 -78387 -78388 -78389 -78390 -78391 -78394 -78395 -78396 -78397 -78398 -78399 -78400 -78401 -78402 -78403 -78404 -78405 -78406 -78408 -78410 -78411 -78412 -78413 -78415 -78416 -78418 -78419 -78420 -78421 -78422 -78423 -78424 -78426 -78427 -78430 -78432 -78433 -78434 -78435 -78436 -78437 -78438 -78440 -78441 -78444 -78450 -78451 -78452 -78453 -78455 -78456 -78458 -78459 -78460 -78461 -78462 -78463 -78464 -78465 -78468 -78470 -78471 -78472 -78473 -78474 -78476 -78477 -78479 -78480 -78481 -78482 -78483 -78484 -78485 -78486 -78490 -78491 -78492 -78493 -78495 -78496 -78497 -78498 -78500 -78502 -78503 -78508 -78510 -78511 -78512 -78513 -78514 -78520 -78521 -78522 -78523 -78525 -78526 -78527 -78528 -78531 -78533 -78534 -78536 -78537 -78538 -78540 -78541 -78542 -78546 -78550 -78551 -78552 -78553 -78560 -78561 -78562 -78563 -78564 -78565 -78566 -78570 -78571 -78572 -78574 -78575 -78576 -78577 -78584 -78585 -78586 -78587 -78589 -78590 -78595 -78596 -78597 -78600 -78601 -78602 -78603 -78604 -78609 -78610 -78612 -78620 -78622 -78623 -78624 -78625 -78626 -78630 -78633 -78634 -78635 -78638 -78639 -78640 -78644 -78649 -78660 -78665 -78670 -78671 -78680 -78681 -78685 -78689 -78690 -78695 -78696 -78697 -78700 -78710 -78712 -78715 -78716 -78717 -78720 -78721 -78722 -78723 -78724 -78725 -78726 -78727 -78730 -78740 -78745 -78746 -78747 -78750 -78759 -78760 -78769 -78770 -78779 -78780 -78783 -78784 -78785 -78786 -78787 -78788 -78789 -78790 -78792 -78796 -78797 -78798 -78799 -78800 -78801 -78802 -78803 -78804 -78805 -78808 -78810 -78811 -78812 -78814 -78815 -78819 -78820 -78821 -78822 -78824 -78827 -78830 -78831 -78835 -78836 -78837 -78840 -78841 -78843 -78844 -78847 -78850 -78851 -78853 -78855 -78858 -78859 -78860 -78862 -78863 -78864 -78866 -78868 -78870 -78871 -78872 -78873 -78874 -78875 -78876 -78877 -78878 -78879 -78880 -78881 -78882 -78883 -78886 -78889 -78890 -78891 -78893 -78894 -78896 -78900 -78901 -78902 -78903 -78905 -78906 -78908 -78909 -78910 -78911 -78918 -78919 -78920 -78921 -78922 -78923 -78924 -78925 -78926 -78928 -78930 -78932 -78933 -78934 -78937 -78940 -78950 -78951 -78960 -78961 -78963 -78964 -78965 -78966 -78967 -78969 -78970 -78971 -78973 -78976 -78978 -78979 -78980 -78981 -78983 -78984 -78987 -78988 -78990 -78991 -78993 -78994 -79000 -79010 -79019 -79020 -79025 -79026 -79027 -79028 -79029 -79030 -79033 -79034 -79040 -79049 -79050 -79055 -79058 -79059 -79060 -79068 -79069 -79070 -79080 -79082 -79088 -79090 -79092 -79094 -79095 -79096 -79097 -79098 -79099 -79100 -79110 -79120 -79122 -79130 -79139 -79140 -79142 -79143 -79150 -79152 -79153 -79160 -79161 -79162 -79170 -79180 -79182 -79183 -79190 -79200 -79202 -79203 -79204 -79205 -79206 -79207 -79208 -79210 -79212 -79214 -79219 -79220 -79225 -79228 -79230 -79231 -79232 -79236 -79237 -79238 -79239 -79240 -79241 -79242 -79245 -79246 -79247 -79250 -79251 -79252 -79256 -79257 -79260 -79261 -79264 -79266 -79267 -79268 -79269 -79290 -79292 -79293 -79294 -79295 -79296 -79300 -79302 -79303 -79304 -79306 -79307 -79308 -79310 -79313 -79314 -79315 -79316 -79317 -79320 -79322 -79323 -79327 -79330 -79331 -79334 -79335 -79336 -79360 -79362 -79366 -79370 -79380 -79382 -79383 -79384 -79385 -79386 -79387 -79390 -79392 -79393 -79394 -79397 -79400 -79401 -79407 -79408 -79410 -79413 -79420 -79421 -79427 -79428 -79429 -79430 -79431 -79432 -79433 -79434 -79435 -79436 -79437 -79440 -79442 -79443 -79444 -79445 -79446 -79447 -79450 -79460 -79466 -79467 -79470 -79471 -79480 -79482 -79483 -79484 -79485 -79486 -79487 -79488 -79489 -79490 -79491 -79493 -79500 -79502 -79503 -79505 -79506 -79507 -79508 -79509 -79510 -79511 -79512 -79513 -79520 -79521 -79524 -79525 -79530 -79532 -79533 -79540 -79541 -79543 -79544 -79545 -79546 -79547 -79548 -79549 -79550 -79552 -79553 -79554 -79557 -79560 -79561 -79562 -79563 -79564 -79565 -79569 -79570 -79573 -79574 -79575 -79576 -79580 -79581 -79583 -79584 -79585 -79586 -79588 -79589 -79590 -79592 -79593 -79594 -79595 -79600 -79601 -79602 -79603 -79604 -79605 -79606 -79607 -79608 -79609 -79610 -79613 -79614 -79615 -79616 -79617 -79618 -79619 -79620 -79623 -79624 -79625 -79626 -79630 -79635 -79637 -79640 -79641 -79644 -79645 -79647 -79650 -79660 -79670 -79671 -79672 -79673 -79674 -79675 -79680 -79684 -79685 -79686 -79687 -79692 -79702 -79703 -79705 -79707 -79708 -79709 -79710 -79712 -79713 -79714 -79716 -79717 -79720 -79721 -79722 -79729 -79730 -79731 -79732 -79733 -79740 -79745 -79746 -79747 -79748 -79750 -79751 -79754 -79755 -79760 -79761 -79764 -79765 -79766 -79767 -79768 -79769 -79780 -79781 -79782 -79783 -79784 -79785 -79786 -79790 -79792 -79795 -79797 -79800 -79804 -79805 -79810 -79811 -79812 -79814 -79819 -79820 -79821 -79822 -79823 -79825 -79826 -79830 -79834 -79840 -79841 -79842 -79843 -79849 -79850 -79851 -79852 -79853 -79856 -79859 -79860 -79861 -79864 -79867 -79870 -79871 -79879 -79880 -79888 -79889 -79890 -79892 -79895 -79900 -79901 -79904 -79905 -79908 -79910 -79920 -79923 -79924 -79930 -79931 -79936 -79938 -79940 -79941 -79942 -79943 -79946 -79948 -79950 -79951 -79952 -79954 -79959 -79960 -79962 -79965 -79966 -79970 -79973 -79974 -79975 -79978 -79980 -79981 -79982 -79983 -79990 -79991 -79993 -79994 -79995 -79996 -79997 -80000 -80007 -80008 -80009 -80010 -80013 -80014 -80015 -80016 -80017 -80018 -80019 -80020 -80024 -80025 -80026 -80027 -80028 -80029 -80030 -80034 -80040 -80050 -80054 -80055 -80058 -80059 -80060 -80063 -80064 -80070 -80080 -80088 -80090 -80100 -80101 -80102 -80103 -80104 -80105 -80110 -80120 -80128 -80129 -80130 -80135 -80139 -80140 -80143 -80144 -80145 -80148 -80150 -80155 -80159 -80160 -80170 -80176 -80177 -80178 -80179 -80180 -80184 -80186 -80189 -80190 -80194 -80197 -80199 -80200 -80210 -80220 -80225 -80226 -80227 -80228 -80230 -80240 -80246 -80247 -80248 -80249 -80250 -80260 -80270 -80279 -80280 -80290 -80295 -80296 -80297 -80298 -80299 -80300 -80301 -80302 -80303 -80304 -80305 -80306 -80308 -80309 -80310 -80311 -80313 -80316 -80317 -80318 -80319 -80320 -80322 -80323 -80324 -80327 -80330 -80331 -80332 -80333 -80334 -80335 -80336 -80337 -80338 -80339 -80345 -80347 -80348 -80349 -80360 -80363 -80365 -80366 -80367 -80370 -80371 -80372 -80373 -80374 -80376 -80378 -80380 -80383 -80384 -80385 -80386 -80390 -80391 -80393 -80394 -80396 -80397 -80398 -80399 -80400 -80402 -80403 -80408 -80409 -80410 -80411 -80415 -80416 -80417 -80419 -80420 -80430 -80434 -80439 -80440 -80441 -80442 -80443 -80447 -80449 -80450 -80451 -80452 -80453 -80454 -80455 -80460 -80463 -80465 -80466 -80467 -80468 -80470 -80475 -80480 -80481 -80483 -80484 -80485 -80489 -80490 -80491 -80492 -80493 -80496 -80498 -80500 -80527 -80530 -80531 -80534 -80535 -80536 -80537 -80539 -80540 -80544 -80550 -80551 -80554 -80556 -80560 -80561 -80565 -80567 -80570 -80583 -80585 -80599 -80600 -80601 -80610 -80627 -80639 -80640 -80670 -80672 -80677 -80679 -80680 -80700 -80702 -80704 -80705 -80706 -80707 -80708 -80720 -80721 -80737 -80738 -80739 -80743 -80760 -80768 -80770 -80773 -80776 -80778 -80780 -80784 -80786 -80800 -80804 -80805 -80806 -80807 -80830 -80833 -80834 -80836 -80840 -80845 -80846 -80850 -80853 -80854 -80855 -80856 -80857 -80870 -80873 -80875 -80876 -80880 -80883 -80884 -80885 -80886 -80887 -80890 -80893 -80894 -80895 -80896 -80920 -80925 -80926 -80927 -80930 -80936 -80950 -80954 -80955 -80956 -80957 -80960 -80963 -80964 -80965 -81000 -81010 -81014 -81015 -81016 -81017 -81018 -81019 -81020 -81023 -81028 -81029 -81030 -81040 -81042 -81043 -81044 -81045 -81048 -81049 -81050 -81055 -81060 -81065 -81066 -81070 -81075 -81077 -81080 -81083 -81084 -81090 -81095 -81100 -81101 -81102 -81105 -81110 -81117 -81118 -81119 -81120 -81121 -81122 -81123 -81124 -81127 -81130 -81131 -81132 -81133 -81140 -81141 -81142 -81143 -81144 -81148 -81149 -81160 -81161 -81162 -81170 -81176 -81178 -81180 -81181 -81182 -81183 -81189 -81190 -81197 -81200 -81210 -81215 -81216 -81217 -81218 -81220 -81223 -81224 -81225 -81226 -81227 -81228 -81229 -81230 -81233 -81234 -81235 -81236 -81237 -81238 -81239 -81240 -81244 -81245 -81246 -81247 -81248 -81249 -81250 -81254 -81255 -81256 -81257 -81259 -81260 -81265 -81270 -81271 -81277 -81278 -81280 -81285 -81289 -81290 -81292 -81293 -81294 -81295 -81300 -81304 -81305 -81306 -81307 -81308 -81310 -81311 -81312 -81315 -81316 -81317 -81318 -81320 -81324 -81325 -81326 -81330 -81334 -81335 -81336 -81337 -81340 -81341 -81343 -81349 -81350 -81351 -81360 -81361 -81363 -81364 -81366 -81367 -81369 -81370 -81372 -81373 -81374 -81375 -81376 -81379 -81384 -81400 -81401 -81410 -81413 -81420 -81426 -81427 -81429 -81430 -81440 -81448 -81450 -81460 -81469 -81470 -81474 -81475 -81476 -81477 -81478 -81479 -81480 -81489 -81490 -81498 -81499 -81500 -81520 -81600 -81605 -81607 -81610 -81620 -81621 -81622 -81623 -81624 -81625 -81630 -81632 -81639 -81640 -81642 -81649 -81650 -81652 -81653 -81655 -81660 -81661 -81664 -81666 -81670 -81675 -81680 -81690 -81700 -81703 -81705 -81706 -81707 -81708 -81709 -81710 -81712 -81714 -81715 -81716 -81717 -81718 -81719 -81727 -81737 -81740 -81741 -81743 -81745 -81746 -81749 -81757 -81760 -81761 -81764 -81770 -81771 -81800 -81802 -81803 -81804 -81805 -81806 -81807 -81810 -81811 -81812 -81820 -81825 -81827 -81828 -81830 -81832 -81833 -81834 -81835 -81836 -81837 -81838 -81839 -81840 -81843 -81845 -81847 -81850 -81854 -81860 -81864 -81870 -81871 -81872 -81873 -81875 -81877 -81880 -81887 -81888 -81889 -81890 -81891 -81892 -81893 -81894 -81897 -81900 -81902 -81903 -81906 -81907 -81910 -81912 -81913 -81915 -81916 -81920 -81930 -81933 -81940 -81945 -81947 -81950 -81960 -81970 -81971 -81973 -81976 -81977 -81979 -81980 -81983 -81986 -81988 -81989 -81990 -81991 -82000 -82007 -82008 -82009 -82010 -82013 -82014 -82015 -82016 -82017 -82018 -82019 -82020 -82028 -82030 -82035 -82036 -82037 -82038 -82040 -82043 -82046 -82048 -82050 -82057 -82058 -82059 -82060 -82069 -82070 -82080 -82088 -82089 -82090 -82099 -82100 -82102 -82110 -82112 -82113 -82118 -82119 -82120 -82123 -82124 -82125 -82126 -82127 -82128 -82129 -82130 -82132 -82133 -82134 -82136 -82137 -82138 -82139 -82140 -82143 -82144 -82145 -82146 -82147 -82148 -82149 -82150 -82153 -82154 -82155 -82156 -82157 -82158 -82159 -82160 -82163 -82164 -82165 -82166 -82170 -82180 -82183 -82185 -82186 -82187 -82188 -82189 -82190 -82195 -82196 -82197 -82198 -82199 -82200 -82206 -82210 -82213 -82214 -82215 -82216 -82217 -82233 -82236 -82238 -82240 -82245 -82247 -82248 -82249 -82266 -82267 -82269 -82270 -82275 -82300 -82313 -82329 -82350 -82369 -82384 -82400 -82410 -82419 -82420 -82430 -82440 -82450 -82457 -82458 -82459 -82460 -82470 -82478 -82500 -82530 -82532 -82535 -82540 -82550 -82560 -82580 -82590 -82591 -82600 -82601 -82604 -82605 -82620 -82624 -82630 -82640 -82642 -82644 -82648 -82649 -82650 -82651 -82656 -82658 -82660 -82663 -82667 -82680 -82700 -82702 -82703 -82704 -82705 -82706 -82707 -82708 -82720 -82721 -82725 -82728 -82730 -82739 -82740 -82741 -82743 -82745 -82747 -82757 -82758 -82760 -82763 -82764 -82766 -82770 -82773 -82777 -82780 -82787 -82788 -82790 -82791 -82792 -82793 -82800 -82802 -82803 -82804 -82805 -82806 -82807 -82808 -82809 -82810 -82820 -82821 -82826 -82830 -82832 -82839 -82850 -82860 -82870 -82871 -82872 -82874 -82880 -82884 -82885 -82902 -82909 -82910 -82912 -82913 -82916 -82917 -82918 -82921 -82940 -82945 -82950 -82960 -82961 -82966 -82968 -82969 -82970 -82971 -82972 -82990 -83000 -83001 -83009 -83010 -83013 -83015 -83016 -83018 -83020 -83029 -83030 -83040 -83050 -83060 -83067 -83068 -83070 -83076 -83078 -83079 -83080 -83089 -83090 -83100 -83103 -83104 -83105 -83106 -83110 -83113 -83114 -83115 -83116 -83117 -83118 -83120 -83125 -83126 -83127 -83128 -83129 -83130 -83136 -83137 -83138 -83139 -83140 -83144 -83145 -83146 -83147 -83148 -83149 -83150 -83154 -83155 -83156 -83157 -83159 -83160 -83164 -83165 -83166 -83170 -83171 -83174 -83175 -83177 -83178 -83179 -83180 -83188 -83190 -83198 -83200 -83204 -83205 -83206 -83207 -83208 -83209 -83210 -83214 -83220 -83223 -83224 -83229 -83230 -83240 -83243 -83245 -83246 -83247 -83248 -83249 -83250 -83255 -83260 -83269 -83270 -83278 -83279 -83280 -83284 -83285 -83286 -83287 -83288 -83289 -83290 -83293 -83294 -83295 -83296 -83297 -83299 -83300 -83301 -83302 -83303 -83304 -83305 -83308 -83310 -83320 -83325 -83328 -83329 -83330 -83340 -83341 -83342 -83343 -83344 -83346 -83347 -83349 -83350 -83360 -83370 -83376 -83377 -83380 -83400 -83419 -83420 -83430 -83439 -83440 -83447 -83448 -83449 -83450 -83455 -83457 -83458 -83459 -83470 -83479 -83480 -83487 -83489 -83490 -83496 -83497 -83498 -83499 -83500 -83502 -83503 -83504 -83505 -83509 -83531 -83532 -83540 -83542 -83543 -83544 -83550 -83552 -83553 -83554 -83555 -83556 -83559 -83570 -83574 -83575 -83576 -83600 -83610 -83620 -83621 -83624 -83630 -83634 -83635 -83640 -83650 -83660 -83664 -83665 -83670 -83680 -83690 -83695 -83700 -83720 -83723 -83724 -83725 -83726 -83727 -83730 -83733 -83734 -83736 -83739 -83740 -83742 -83745 -83746 -83750 -83758 -83760 -83770 -83800 -83801 -83805 -83810 -83817 -83818 -83820 -83840 -83860 -83870 -83890 -83900 -83905 -83910 -83930 -83931 -83935 -83960 -83961 -83970 -83974 -83980 -83981 -83983 -83990 -84000 -84009 -84010 -84014 -84015 -84016 -84017 -84018 -84020 -84024 -84025 -84030 -84035 -84036 -84040 -84046 -84047 -84048 -84050 -84055 -84060 -84062 -84063 -84064 -84065 -84066 -84069 -84070 -84074 -84075 -84076 -84080 -84085 -84086 -84090 -84093 -84094 -84100 -84105 -84110 -84118 -84120 -84124 -84125 -84127 -84129 -84130 -84139 -84140 -84147 -84160 -84161 -84163 -84164 -84165 -84166 -84167 -84170 -84176 -84180 -84183 -84190 -84200 -84210 -84220 -84230 -84240 -84250 -84259 -84260 -84267 -84268 -84269 -84270 -84279 -84300 -84304 -84305 -84306 -84307 -84308 -84320 -84326 -84329 -84330 -84336 -84340 -84346 -84347 -84348 -84349 -84350 -84352 -84353 -84360 -84365 -84369 -84380 -84390 -84395 -84400 -84410 -84440 -84445 -84446 -84447 -84450 -84458 -84459 -84460 -84480 -84500 -84504 -84506 -84508 -84510 -84511 -84518 -84520 -84524 -84530 -84560 -84563 -84567 -84580 -84583 -84600 -84601 -84602 -84603 -84610 -84611 -84617 -84620 -84622 -84623 -84624 -84625 -84626 -84627 -84628 -84634 -84635 -84640 -84641 -84643 -84644 -84646 -84648 -84650 -84660 -84661 -84664 -84668 -84680 -84690 -84694 -84699 -84700 -84703 -84705 -84709 -84710 -84711 -84730 -84750 -84754 -84760 -84770 -84775 -84790 -84800 -84820 -84824 -84830 -84850 -84860 -84862 -84866 -84880 -84882 -84883 -84900 -84903 -84905 -84906 -84907 -84910 -84911 -84918 -84919 -84920 -84928 -84929 -84940 -84942 -84945 -84946 -84948 -84950 -84951 -84955 -84960 -84969 -84980 -84984 -84987 -84988 -84990 -85000 -85010 -85018 -85019 -85020 -85023 -85024 -85030 -85038 -85039 -85040 -85050 -85053 -85059 -85060 -85063 -85064 -85065 -85070 -85080 -85090 -85095 -85096 -85097 -85098 -85099 -85100 -85110 -85120 -85130 -85134 -85136 -85137 -85138 -85139 -85140 -85148 -85149 -85150 -85153 -85154 -85157 -85160 -85167 -85168 -85169 -85170 -85180 -85190 -85194 -85195 -85196 -85197 -85198 -85199 -85200 -85203 -85204 -85205 -85206 -85207 -85208 -85209 -85210 -85212 -85215 -85216 -85217 -85218 -85219 -85220 -85222 -85223 -85224 -85225 -85226 -85227 -85228 -85229 -85230 -85232 -85233 -85234 -85235 -85236 -85237 -85238 -85239 -85240 -85241 -85243 -85244 -85245 -85246 -85247 -85248 -85249 -85250 -85251 -85252 -85253 -85254 -85255 -85256 -85257 -85258 -85259 -85260 -85263 -85267 -85268 -85270 -85271 -85272 -85275 -85276 -85277 -85278 -85280 -85283 -85284 -85285 -85286 -85287 -85288 -85290 -85293 -85294 -85295 -85296 -85297 -85298 -85300 -85310 -85319 -85320 -85330 -85338 -85339 -85340 -85347 -85349 -85350 -85360 -85370 -85380 -85385 -85386 -85387 -85388 -85389 -85397 -85398 -85399 -85400 -85405 -85406 -85409 -85410 -85415 -85420 -85423 -85424 -85425 -85427 -85428 -85430 -85440 -85444 -85447 -85448 -85450 -85454 -85455 -85456 -85460 -85463 -85465 -85467 -85470 -85476 -85477 -85478 -85480 -85484 -85485 -85486 -85490 -85499 -85500 -85501 -85502 -85505 -85506 -85507 -85508 -85509 -85510 -85511 -85513 -85514 -85515 -85516 -85518 -85519 -85520 -85523 -85524 -85525 -85530 -85532 -85533 -85534 -85535 -85536 -85537 -85540 -85549 -85550 -85551 -85552 -85555 -85560 -85580 -85600 -85606 -85608 -85609 -85610 -85613 -85614 -85615 -85618 -85619 -85620 -85640 -85641 -85643 -85650 -85656 -85660 -85663 -85664 -85670 -85675 -85680 -85681 -85690 -85699 -85700 -85704 -85707 -85708 -85710 -85711 -85712 -85714 -85715 -85716 -85717 -85720 -85725 -85726 -85727 -85728 -85730 -85736 -85740 -85760 -85761 -85762 -85764 -85765 -85766 -85767 -85768 -85769 -85770 -85773 -85774 -85775 -85776 -85778 -85779 -85780 -85785 -85789 -85790 -85793 -85794 -85795 -85796 -85797 -85798 -85800 -85810 -85820 -85825 -85827 -85830 -85835 -85840 -85845 -85850 -85860 -85864 -85870 -85874 -85880 -85890 -85893 -85894 -85895 -85900 -85910 -85912 -85913 -85920 -85925 -85930 -85935 -85936 -85937 -85940 -85943 -85950 -85960 -85966 -85967 -85968 -85969 -85970 -85977 -85978 -85979 -85980 -85984 -85990 -85994 -86000 -86005 -86006 -86007 -86008 -86009 -86010 -86012 -86013 -86015 -86016 -86017 -86018 -86019 -86020 -86025 -86026 -86027 -86028 -86029 -86030 -86034 -86035 -86036 -86037 -86038 -86039 -86040 -86049 -86050 -86058 -86059 -86060 -86067 -86068 -86069 -86070 -86073 -86079 -86080 -86086 -86087 -86088 -86090 -86094 -86095 -86096 -86097 -86098 -86099 -86100 -86104 -86105 -86107 -86108 -86109 -86120 -86125 -86126 -86127 -86128 -86129 -86130 -86137 -86139 -86140 -86143 -86144 -86149 -86150 -86153 -86160 -86167 -86168 -86169 -86170 -86179 -86180 -86189 -86190 -86191 -86193 -86194 -86200 -86201 -86203 -86204 -86205 -86207 -86208 -86209 -86214 -86215 -86216 -86220 -86230 -86240 -86250 -86253 -86254 -86255 -86257 -86270 -86271 -86272 -86273 -86274 -86275 -86276 -86277 -86278 -86279 -86280 -86281 -86283 -86284 -86285 -86286 -86287 -86288 -86289 -86290 -86291 -86292 -86293 -86294 -86295 -86298 -86300 -86320 -86323 -86324 -86329 -86330 -86340 -86350 -86357 -86359 -86360 -86369 -86370 -86380 -86388 -86389 -86400 -86402 -86403 -86406 -86407 -86410 -86412 -86413 -86414 -86415 -86416 -86418 -86420 -86421 -86422 -86423 -86424 -86425 -86426 -86428 -86430 -86432 -86433 -86434 -86436 -86437 -86438 -86440 -86442 -86443 -86444 -86445 -86447 -86449 -86450 -86456 -86460 -86461 -86462 -86463 -86464 -86466 -86467 -86468 -86470 -86471 -86472 -86475 -86476 -86477 -86478 -86479 -86480 -86481 -86482 -86483 -86484 -86485 -86486 -86490 -86491 -86493 -86494 -86495 -86496 -86497 -86498 -86499 -86500 -86504 -86510 -86520 -86528 -86529 -86530 -86532 -86533 -86540 -86545 -86546 -86550 -86553 -86560 -86570 -86590 -86597 -86598 -86599 -86600 -86601 -86602 -86603 -86605 -86606 -86607 -86608 -86609 -86610 -86611 -86612 -86613 -86617 -86618 -86620 -86621 -86630 -86633 -86638 -86640 -86641 -86643 -86645 -86646 -86650 -86651 -86652 -86654 -86655 -86656 -86657 -86658 -86660 -86662 -86663 -86665 -86666 -86667 -86669 -86670 -86671 -86675 -86680 -86681 -86682 -86683 -86684 -86685 -86686 -86687 -86690 -86692 -86693 -86694 -86695 -86696 -86697 -86698 -86700 -86701 -86702 -86703 -86704 -86706 -86707 -86708 -86709 -86710 -86711 -86713 -86714 -86716 -86717 -86718 -86719 -86720 -86723 -86724 -86725 -86726 -86727 -86728 -86730 -86732 -86733 -86734 -86736 -86738 -86739 -86740 -86741 -86742 -86743 -86745 -86746 -86747 -86748 -86750 -86752 -86753 -86754 -86756 -86758 -86759 -86760 -86761 -86762 -86763 -86764 -86765 -86767 -86770 -86771 -86773 -86775 -86776 -86777 -86780 -86781 -86782 -86783 -86785 -86786 -86787 -86788 -86789 -86790 -86793 -86795 -86797 -86799 -86800 -86801 -86802 -86803 -86805 -86806 -86807 -86808 -86810 -86812 -86813 -86814 -86815 -86820 -86821 -86823 -86824 -86826 -86827 -86830 -86835 -86837 -86840 -86849 -86850 -86852 -86855 -86856 -86859 -86860 -86861 -86870 -86871 -86873 -86875 -86876 -86877 -86878 -86880 -86881 -86882 -86885 -86886 -86887 -86888 -86890 -86891 -86892 -86893 -86894 -86895 -86896 -86898 -86899 -86900 -86901 -86902 -86904 -86905 -86906 -86908 -86909 -86910 -86911 -86912 -86915 -86916 -86918 -86919 -86920 -86921 -86922 -86923 -86924 -86925 -86926 -86927 -86928 -86930 -86931 -86932 -86933 -86934 -86935 -86936 -86937 -86938 -86940 -86942 -86948 -86949 -86950 -86951 -86952 -86954 -86959 -86960 -86961 -86962 -86963 -86965 -86967 -86968 -86969 -86970 -86971 -86972 -86973 -86974 -86980 -86982 -86983 -86985 -86986 -86988 -86989 -86990 -86992 -86993 -86994 -86995 -86996 -86997 -86998 -87000 -87009 -87010 -87014 -87015 -87018 -87019 -87020 -87024 -87025 -87026 -87027 -87028 -87029 -87030 -87032 -87033 -87037 -87039 -87040 -87047 -87048 -87049 -87050 -87058 -87059 -87060 -87070 -87071 -87076 -87078 -87080 -87086 -87087 -87088 -87089 -87090 -87099 -87100 -87101 -87102 -87110 -87120 -87130 -87134 -87135 -87140 -87149 -87150 -87156 -87160 -87170 -87180 -87189 -87200 -87202 -87203 -87205 -87206 -87207 -87208 -87209 -87210 -87211 -87212 -87213 -87214 -87215 -87216 -87220 -87224 -87228 -87229 -87230 -87232 -87233 -87235 -87236 -87237 -87238 -87239 -87240 -87244 -87245 -87247 -87248 -87249 -87250 -87253 -87257 -87258 -87260 -87261 -87262 -87263 -87265 -87266 -87267 -87270 -87273 -87274 -87276 -87277 -87278 -87279 -87300 -87310 -87313 -87314 -87315 -87316 -87318 -87320 -87323 -87324 -87325 -87326 -87330 -87340 -87343 -87344 -87345 -87347 -87348 -87349 -87350 -87353 -87359 -87360 -87368 -87369 -87370 -87380 -87382 -87383 -87385 -87387 -87389 -87390 -87394 -87395 -87396 -87397 -87398 -87399 -87400 -87409 -87410 -87413 -87415 -87420 -87425 -87426 -87430 -87438 -87440 -87444 -87445 -87446 -87447 -87448 -87449 -87450 -87453 -87454 -87455 -87456 -87457 -87458 -87459 -87460 -87469 -87470 -87475 -87476 -87477 -87478 -87479 -87480 -87489 -87490 -87494 -87495 -87496 -87497 -87498 -87499 -87500 -87503 -87504 -87505 -87506 -87507 -87510 -87511 -87512 -87513 -87514 -87520 -87522 -87524 -87525 -87530 -87535 -87540 -87544 -87547 -87550 -87551 -87552 -87553 -87554 -87555 -87557 -87558 -87559 -87560 -87563 -87565 -87569 -87570 -87577 -87580 -87585 -87589 -87600 -87602 -87604 -87605 -87606 -87607 -87610 -87612 -87613 -87616 -87617 -87618 -87619 -87620 -87622 -87624 -87625 -87626 -87627 -87628 -87629 -87630 -87636 -87640 -87650 -87655 -87660 -87666 -87668 -87670 -87673 -87676 -87677 -87678 -87679 -87680 -87690 -87694 -87695 -87696 -87697 -87700 -87709 -87710 -87720 -87730 -87735 -87738 -87739 -87740 -87743 -87744 -87746 -87747 -87748 -87750 -87755 -87760 -87766 -87767 -87768 -87769 -87770 -87780 -87785 -87790 -87794 -87795 -87797 -87798 -87799 -87800 -87801 -87803 -87805 -87806 -87808 -87810 -87816 -87819 -87820 -87822 -87823 -87824 -87825 -87826 -87827 -87829 -87830 -87831 -87832 -87834 -87835 -87840 -87841 -87843 -87844 -87847 -87848 -87849 -87850 -87853 -87854 -87858 -87860 -87865 -87870 -87873 -87875 -87880 -87883 -87884 -87885 -87886 -87887 -87889 -87890 -87892 -87895 -87896 -87898 -87900 -87902 -87903 -87904 -87905 -87906 -87907 -87910 -87911 -87912 -87913 -87914 -87915 -87918 -87920 -87922 -87923 -87924 -87925 -87926 -87928 -87929 -87930 -87932 -87933 -87935 -87936 -87937 -87938 -87939 -87940 -87943 -87945 -87946 -87947 -87949 -87950 -87954 -87957 -87960 -87961 -87962 -87963 -87964 -87965 -87968 -87969 -87970 -87972 -87973 -87980 -87982 -87983 -87984 -87985 -87986 -87988 -87990 -87993 -87994 -87995 -87996 -87997 -88000 -88009 -88020 -88030 -88040 -88050 -88060 -88070 -88100 -88104 -88105 -88110 -88120 -88123 -88124 -88125 -88126 -88130 -88134 -88135 -88136 -88140 -88143 -88144 -88145 -88146 -88147 -88150 -88160 -88170 -88174 -88175 -88176 -88177 -88179 -88180 -88184 -88185 -88186 -88187 -88190 -88194 -88195 -88200 -88209 -88210 -88220 -88230 -88240 -88250 -88260 -88270 -88274 -88275 -88276 -88277 -88278 -88280 -88283 -88284 -88285 -88287 -88289 -88290 -88293 -88294 -88295 -88296 -88298 -88299 -88300 -88302 -88303 -88304 -88305 -88306 -88307 -88310 -88321 -88330 -88335 -88336 -88338 -88340 -88346 -88349 -88350 -88370 -88372 -88373 -88374 -88390 -88400 -88402 -88403 -88404 -88405 -88406 -88407 -88408 -88410 -88412 -88415 -88420 -88425 -88430 -88434 -88439 -88440 -88442 -88443 -88444 -88446 -88447 -88448 -88449 -88450 -88455 -88456 -88459 -88460 -88468 -88469 -88470 -88479 -88480 -88490 -88500 -88509 -88510 -88520 -88530 -88540 -88542 -88543 -88550 -88560 -88570 -88579 -88580 -88589 -88590 -88595 -88596 -88597 -88598 -88599 -88600 -88610 -88614 -88615 -88616 -88620 -88622 -88630 -88631 -88632 -88639 -88640 -88649 -88650 -88651 -88653 -88654 -88655 -88656 -88670 -88680 -88684 -88687 -88689 -88690 -88699 -88700 -88703 -88704 -88705 -88706 -88707 -88708 -88709 -88710 -88715 -88719 -88720 -88727 -88729 -88730 -88735 -88736 -88740 -88743 -88744 -88745 -88746 -88747 -88748 -88749 -88750 -88754 -88755 -88756 -88757 -88758 -88759 -88760 -88763 -88769 -88770 -88776 -88777 -88778 -88779 -88780 -88783 -88784 -88785 -88786 -88787 -88788 -88789 -88790 -88793 -88795 -88796 -88797 -88798 -88799 -88800 -88803 -88808 -88809 -88810 -88811 -88812 -88813 -88815 -88818 -88819 -88820 -88821 -88825 -88826 -88827 -88828 -88830 -88836 -88837 -88839 -88840 -88841 -88849 -88850 -88854 -88855 -88856 -88857 -88859 -88880 -88882 -88890 -88894 -88895 -88896 -88897 -88898 -88900 -88910 -88920 -88925 -88930 -88933 -88934 -88935 -88936 -88940 -88943 -88945 -88950 -88959 -88960 -88970 -88980 -88990 -88993 -89000 -89050 -89060 -89070 -89080 -89090 -89100 -89106 -89107 -89108 -89109 -89110 -89118 -89119 -89120 -89130 -89136 -89137 -89138 -89139 -89140 -89150 -89159 -89160 -89169 -89170 -89176 -89177 -89180 -89190 -89199 -89210 -89215 -89217 -89218 -89219 -89220 -89229 -89230 -89239 -89240 -89250 -89258 -89260 -89268 -89270 -89280 -89290 -89298 -89300 -89309 -89314 -89316 -89317 -89318 -89319 -89320 -89325 -89326 -89327 -89328 -89329 -89330 -89336 -89337 -89338 -89339 -89340 -89344 -89345 -89346 -89347 -89348 -89349 -89350 -89355 -89356 -89357 -89358 -89360 -89364 -89365 -89366 -89367 -89368 -89369 -89400 -89410 -89415 -89416 -89417 -89420 -89430 -89440 -89450 -89460 -89464 -89470 -89479 -89480 -89490 -89496 -89497 -89500 -89505 -89506 -89510 -89512 -89513 -89514 -89515 -89518 -89519 -89520 -89530 -89540 -89547 -89550 -89553 -89554 -89555 -89556 -89560 -89566 -89567 -89580 -89590 -89600 -89602 -89603 -89604 -89605 -89606 -89607 -89610 -89613 -89614 -89615 -89620 -89625 -89630 -89632 -89635 -89636 -89637 -89640 -89641 -89642 -89643 -89644 -89645 -89650 -89652 -89670 -89672 -89673 -89674 -89677 -89678 -89679 -89700 -89703 -89704 -89705 -89706 -89710 -89712 -89713 -89715 -89716 -89720 -89723 -89725 -89727 -89729 -89730 -89731 -89732 -89734 -89735 -89736 -89740 -89744 -89746 -89750 -89751 -89752 -89753 -89755 -89756 -89757 -89758 -89759 -89760 -89762 -89763 -89764 -89767 -89768 -89774 -89778 -89780 -89783 -89784 -89789 -89790 -89791 -89792 -89795 -89796 -89797 -89800 -89810 -89815 -89816 -89817 -89818 -89819 -89820 -89827 -89829 -89830 -89837 -89838 -89839 -89840 -89843 -89846 -89848 -89849 -89850 -89858 -89860 -89865 -89866 -89867 -89869 -89870 -89880 -89884 -89885 -89886 -89887 -89888 -89889 -89895 -89896 -89897 -89898 -89899 -89900 -89910 -89912 -89913 -89914 -89917 -89918 -89920 -89922 -89923 -89925 -89928 -89929 -89930 -89939 -89940 -89942 -89943 -89945 -89950 -89953 -89955 -89960 -89963 -89965 -89966 -89967 -89968 -89969 -89970 -90000 -90006 -90007 -90008 -90009 -90010 -90013 -90014 -90019 -90020 -90030 -90039 -90040 -90050 -90060 -90062 -90070 -90080 -90090 -90099 -90100 -90102 -90103 -90105 -90110 -90111 -90112 -90114 -90115 -90117 -90118 -90120 -90121 -90122 -90123 -90125 -90126 -90127 -90128 -90130 -90131 -90132 -90133 -90134 -90135 -90140 -90145 -90147 -90150 -90151 -90152 -90160 -90163 -90165 -90166 -90168 -90180 -90182 -90190 -90195 -90200 -90202 -90203 -90204 -90205 -90207 -90208 -90210 -90220 -90222 -90224 -90230 -90231 -90233 -90234 -90235 -90240 -90241 -90243 -90244 -90245 -90247 -90250 -90251 -90255 -90256 -90260 -90261 -90262 -90263 -90264 -90265 -90270 -90271 -90274 -90275 -90280 -90281 -90290 -90291 -90292 -90293 -90294 -90297 -90298 -90300 -90308 -90309 -90310 -90319 -90320 -90321 -90323 -90329 -90330 -90337 -90338 -90339 -90340 -90341 -90342 -90347 -90350 -90354 -90355 -90356 -90357 -90358 -90359 -90360 -90370 -90378 -90379 -90380 -90400 -90401 -90402 -90403 -90404 -90406 -90407 -90410 -90411 -90418 -90420 -90421 -90430 -90431 -90432 -90433 -90434 -90435 -90440 -90443 -90444 -90445 -90450 -90453 -90456 -90459 -90460 -90465 -90480 -90482 -90484 -90490 -90491 -90493 -90494 -90495 -90500 -90502 -90503 -90505 -90506 -90507 -90508 -90510 -90513 -90514 -90520 -90525 -90526 -90527 -90530 -90534 -90535 -90540 -90541 -90543 -90544 -90545 -90547 -90550 -90551 -90553 -90554 -90555 -90556 -90557 -90558 -90560 -90561 -90562 -90563 -90570 -90575 -90580 -90590 -90592 -90596 -90600 -90605 -90606 -90608 -90610 -90620 -90640 -90641 -90650 -90660 -90670 -90680 -90690 -90691 -90692 -90693 -90700 -90710 -90712 -90715 -90718 -90720 -90721 -90725 -90730 -90733 -90734 -90735 -90738 -90740 -90750 -90760 -90770 -90780 -90790 -90791 -90796 -90800 -90802 -90803 -90804 -90805 -90806 -90807 -90808 -90810 -90820 -90821 -90830 -90840 -90850 -90855 -90860 -90861 -90864 -90867 -90870 -90880 -90890 -90900 -90920 -90930 -90940 -90950 -90960 -90970 -90980 -90990 -91000 -91008 -91009 -91010 -91014 -91015 -91016 -91018 -91019 -91020 -91026 -91027 -91028 -91029 -91030 -91034 -91035 -91036 -91037 -91038 -91039 -91040 -91043 -91044 -91045 -91046 -91047 -91048 -91049 -91050 -91058 -91059 -91060 -91063 -91064 -91065 -91066 -91069 -91070 -91076 -91077 -91078 -91079 -91080 -91089 -91090 -91093 -91095 -91096 -91097 -91098 -91100 -91110 -91119 -91120 -91129 -91130 -91140 -91149 -91150 -91152 -91153 -91154 -91155 -91156 -91157 -91158 -91159 -91160 -91169 -91170 -91177 -91178 -91179 -91180 -91183 -91185 -91190 -91191 -91193 -91194 -91210 -91211 -91215 -91216 -91220 -91230 -91231 -91240 -91241 -91243 -91244 -91245 -91246 -91247 -91248 -91250 -91252 -91253 -91255 -91257 -91260 -91262 -91270 -91271 -91273 -91274 -91275 -91276 -91277 -91280 -91282 -91283 -91285 -91290 -91300 -91302 -91303 -91304 -91305 -91306 -91307 -91315 -91320 -91325 -91327 -91330 -91334 -91335 -91336 -91337 -91339 -91340 -91341 -91345 -91350 -91360 -91370 -91375 -91380 -91390 -91400 -91407 -91409 -91410 -91420 -91430 -91434 -91435 -91436 -91440 -91441 -91443 -91445 -91446 -91448 -91449 -91450 -91451 -91460 -91465 -91466 -91469 -91470 -91473 -91476 -91477 -91478 -91480 -91481 -91482 -91484 -91485 -91486 -91487 -91488 -91489 -91490 -91492 -91493 -91494 -91495 -91496 -91498 -91500 -91505 -91506 -91510 -91513 -91514 -91515 -91516 -91517 -91518 -91519 -91520 -91521 -91527 -91528 -91529 -91530 -91533 -91537 -91538 -91539 -91540 -91548 -91549 -91550 -91556 -91557 -91558 -91559 -91560 -91565 -91567 -91568 -91569 -91570 -91575 -91576 -91578 -91579 -91580 -91581 -91583 -91589 -91601 -91602 -91603 -91604 -91605 -91606 -91607 -91608 -91609 -91610 -91615 -91618 -91619 -91620 -91621 -91622 -91625 -91626 -91627 -91630 -91633 -91634 -91635 -91636 -91637 -91639 -91640 -91643 -91644 -91645 -91646 -91647 -91649 -91650 -91652 -91653 -91654 -91655 -91656 -91657 -91658 -91660 -91661 -91663 -91664 -91665 -91666 -91667 -91668 -91670 -91672 -91673 -91674 -91675 -91676 -91677 -91680 -91685 -91686 -91687 -91688 -91690 -91693 -91694 -91695 -91696 -91697 -91698 -91699 -91700 -91708 -91709 -91710 -91712 -91713 -91714 -91715 -91716 -91717 -91718 -91720 -91725 -91726 -91727 -91728 -91729 -91730 -91739 -91740 -91749 -91750 -91755 -91756 -91757 -91758 -91759 -91760 -91769 -91770 -91775 -91777 -91778 -91779 -91780 -91787 -91788 -91789 -91790 -91799 -91800 -91808 -91809 -91810 -91817 -91820 -91826 -91829 -91830 -91839 -91840 -91841 -91850 -91855 -91859 -91860 -91870 -91880 -91888 -91889 -91890 -91891 -91897 -91898 -91899 -91900 -91909 -91910 -91916 -91917 -91918 -91919 -91920 -91928 -91929 -91930 -91936 -91937 -91938 -91939 -91940 -91947 -91948 -91949 -91960 -91963 -91965 -91966 -91967 -91968 -91969 -92000 -92001 -92002 -92004 -92005 -92006 -92009 -92010 -92012 -92013 -92014 -92015 -92016 -92017 -92018 -92019 -92020 -92025 -92027 -92030 -92033 -92034 -92035 -92036 -92037 -92038 -92039 -92040 -92042 -92043 -92044 -92045 -92047 -92048 -92049 -92050 -92053 -92054 -92055 -92056 -92060 -92062 -92063 -92064 -92065 -92066 -92072 -92073 -92074 -92075 -92076 -92077 -92078 -92080 -92081 -92083 -92084 -92085 -92086 -92090 -92092 -92093 -92095 -92096 -92097 -92100 -92103 -92104 -92105 -92106 -92107 -92108 -92110 -92118 -92120 -92122 -92123 -92124 -92125 -92126 -92127 -92130 -92131 -92140 -92142 -92144 -92145 -92146 -92147 -92148 -92150 -92159 -92160 -92161 -92165 -92170 -92173 -92180 -92182 -92183 -92184 -92190 -92200 -92204 -92207 -92220 -92230 -92240 -92256 -92257 -92259 -92268 -92270 -92280 -92290 -92300 -92310 -92320 -92330 -92340 -92350 -92360 -92370 -92380 -92385 -92388 -92389 -92390 -92400 -92403 -92404 -92405 -92406 -92407 -92408 -92409 -92410 -92412 -92415 -92417 -92419 -92420 -92430 -92435 -92440 -92448 -92450 -92454 -92456 -92470 -92480 -92483 -92486 -92488 -92490 -92495 -92500 -92510 -92513 -92514 -92515 -92516 -92517 -92518 -92519 -92520 -92523 -92525 -92530 -92534 -92535 -92537 -92539 -92540 -92549 -92550 -92560 -92564 -92570 -92571 -92576 -92580 -92582 -92590 -92592 -92596 -92597 -92600 -92604 -92605 -92606 -92607 -92608 -92610 -92611 -92613 -92615 -92616 -92617 -92618 -92619 -92620 -92623 -92625 -92630 -92633 -92635 -92636 -92637 -92638 -92639 -92640 -92644 -92646 -92647 -92650 -92654 -92656 -92658 -92660 -92663 -92665 -92668 -92670 -92673 -92676 -92678 -92680 -92681 -92684 -92685 -92686 -92687 -92690 -92692 -92694 -92695 -92696 -92698 -92700 -92701 -92702 -92703 -92704 -92705 -92706 -92707 -92708 -92710 -92711 -92720 -92724 -92725 -92726 -92727 -92728 -92730 -92733 -92734 -92735 -92736 -92737 -92740 -92750 -92752 -92753 -92754 -92755 -92756 -92760 -92762 -92763 -92769 -92770 -92772 -92773 -92774 -92775 -92776 -92780 -92783 -92784 -92785 -92789 -92800 -92810 -92820 -92830 -92834 -92840 -92845 -92850 -92853 -92854 -92860 -92863 -92870 -92875 -92876 -92880 -92883 -92888 -92890 -92893 -92894 -92895 -92900 -92902 -92903 -92904 -92905 -92906 -92907 -92909 -92910 -92911 -92912 -92913 -92916 -92917 -92930 -92933 -92934 -92935 -92936 -92937 -92940 -92941 -92970 -92973 -92974 -92975 -92977 -92980 -92983 -92984 -92985 -92987 -92990 -92994 -92997 -93000 -93003 -93010 -93015 -93020 -93030 -93040 -93041 -93050 -93060 -93062 -93063 -93065 -93068 -93070 -93071 -93072 -93074 -93075 -93076 -93077 -93080 -93085 -93086 -93100 -93110 -93116 -93120 -93124 -93140 -93144 -93146 -93147 -93150 -93152 -93154 -93157 -93158 -93160 -93162 -93163 -93164 -93165 -93166 -93169 -93170 -93172 -93173 -93174 -93175 -93180 -93181 -93182 -93183 -93184 -93185 -93190 -93193 -93194 -93195 -93197 -93198 -93199 -93200 -93210 -93213 -93215 -93220 -93228 -93229 -93230 -93235 -93236 -93240 -93247 -93248 -93249 -93250 -93260 -93269 -93270 -93276 -93279 -93280 -93290 -93294 -93295 -93300 -93305 -93306 -93308 -93310 -93319 -93320 -93327 -93330 -93340 -93350 -93360 -93367 -93368 -93369 -93370 -93380 -93384 -93386 -93387 -93388 -93389 -93390 -93393 -93396 -93397 -93398 -93399 -93400 -93410 -93413 -93418 -93419 -93420 -93425 -93426 -93427 -93428 -93429 -93430 -93438 -93439 -93440 -93449 -93450 -93457 -93458 -93460 -93466 -93467 -93468 -93470 -93477 -93478 -93479 -93480 -93484 -93485 -93486 -93487 -93488 -93489 -93490 -93498 -93499 -93518 -93520 -93523 -93524 -93525 -93526 -93527 -93530 -93532 -93533 -93534 -93535 -93536 -93537 -93538 -93540 -93541 -93542 -93543 -93544 -93545 -93548 -93549 -93550 -93552 -93553 -93556 -93557 -93558 -93559 -93560 -93562 -93564 -93568 -93569 -93570 -93571 -93575 -93576 -93577 -93578 -93579 -93580 -93585 -93588 -93590 -93600 -93603 -93604 -93605 -93606 -93607 -93608 -93610 -93620 -93623 -93624 -93625 -93626 -93627 -93628 -93629 -93633 -93635 -93636 -93638 -93640 -93641 -93643 -93645 -93650 -93653 -93654 -93655 -93656 -93657 -93658 -93660 -93662 -93664 -93666 -93668 -93670 -93671 -93672 -93676 -93680 -93684 -93685 -93687 -93688 -93689 -93690 -93692 -93693 -93694 -93695 -93697 -93698 -93700 -93710 -93714 -93715 -93720 -93721 -93723 -93725 -93730 -93732 -93733 -93735 -93737 -93740 -93760 -93761 -93780 -93790 -93800 -93803 -93808 -93810 -93814 -93815 -93816 -93820 -93825 -93826 -93827 -93828 -93829 -93830 -93831 -93833 -93834 -93835 -93839 -93840 -93845 -93846 -93848 -93850 -93851 -93855 -93856 -93857 -93860 -93880 -93882 -93885 -93890 -93892 -93893 -93894 -93900 -93910 -93915 -93918 -93930 -93936 -93940 -93950 -93960 -93965 -93970 -93980 -93986 -93990 -93994 -93995 -93996 -93997 -93998 -94000 -94019 -94020 -94021 -94030 -94035 -94050 -94054 -94057 -94059 -94060 -94080 -94090 -94100 -94103 -94106 -94107 -94108 -94110 -94113 -94117 -94120 -94130 -94135 -94140 -94150 -94151 -94153 -94155 -94160 -94170 -94180 -94183 -94184 -94188 -94190 -94191 -94200 -94210 -94216 -94220 -94222 -94230 -94235 -94240 -94242 -94243 -94244 -94247 -94248 -94249 -94250 -94251 -94253 -94254 -94255 -94256 -94260 -94270 -94271 -94273 -94274 -94276 -94277 -94280 -94285 -94290 -94292 -94293 -94294 -94295 -94296 -94297 -94298 -94299 -94300 -94310 -94311 -94315 -94320 -94323 -94324 -94325 -94326 -94327 -94328 -94329 -94330 -94333 -94334 -94335 -94337 -94339 -94340 -94344 -94345 -94346 -94347 -94349 -94350 -94360 -94370 -94379 -94380 -94389 -94390 -94393 -94399 -94400 -94410 -94420 -94421 -94422 -94423 -94424 -94427 -94430 -94440 -94442 -94450 -94451 -94452 -94453 -94455 -94456 -94457 -94458 -94459 -94460 -94462 -94463 -94464 -94465 -94467 -94470 -94472 -94473 -94474 -94475 -94476 -94477 -94478 -94479 -94480 -94483 -94484 -94485 -94486 -94487 -94488 -94500 -94510 -94515 -94516 -94517 -94518 -94519 -94520 -94530 -94533 -94534 -94540 -94542 -94543 -94544 -94545 -94546 -94547 -94549 -94550 -94552 -94553 -94554 -94555 -94556 -94557 -94558 -94559 -94560 -94570 -94575 -94577 -94580 -94587 -94588 -94589 -94590 -94600 -94610 -94613 -94620 -94630 -94635 -94640 -94649 -94650 -94656 -94657 -94660 -94670 -94677 -94678 -94679 -94680 -94687 -94688 -94689 -94690 -94693 -94696 -94699 -94700 -94720 -94722 -94723 -94724 -94725 -94726 -94727 -94729 -94730 -94732 -94733 -94734 -94735 -94740 -94743 -94744 -94745 -94746 -94748 -94750 -94755 -94760 -94762 -94763 -94765 -94766 -94767 -94770 -94772 -94775 -94777 -94780 -94782 -94783 -94800 -94805 -94810 -94815 -94820 -94825 -94830 -94840 -94842 -94846 -94847 -94850 -94860 -94862 -94870 -94877 -94880 -94890 -94900 -94902 -94903 -94905 -94906 -94907 -94908 -94910 -94912 -94915 -94916 -94917 -94918 -94920 -94925 -94929 -94930 -94934 -94939 -94940 -94943 -94946 -94950 -94952 -94953 -94954 -94955 -94956 -94957 -94958 -94959 -94960 -94961 -94964 -94965 -94966 -94969 -94970 -94972 -94975 -94976 -94980 -94987 -94988 -94989 -94990 -94992 -94995 -94996 -95000 -95002 -95003 -95004 -95005 -95006 -95007 -95010 -95011 -95012 -95013 -95016 -95017 -95019 -95020 -95023 -95025 -95028 -95030 -95033 -95035 -95040 -95045 -95046 -95060 -95061 -95064 -95070 -95081 -95082 -95083 -95086 -95087 -95088 -95089 -95090 -95091 -95094 -95095 -95096 -95097 -95098 -95099 -95100 -95110 -95118 -95119 -95120 -95130 -95140 -95150 -95160 -95170 -95179 -95180 -95190 -95193 -95200 -95201 -95203 -95205 -95206 -95207 -95215 -95216 -95220 -95223 -95225 -95226 -95228 -95230 -95235 -95236 -95237 -95240 -95244 -95245 -95247 -95250 -95253 -95258 -95259 -95260 -95261 -95263 -95264 -95265 -95268 -95269 -95270 -95272 -95274 -95275 -95276 -95277 -95278 -95280 -95281 -95283 -95284 -95285 -95286 -95287 -95294 -95295 -95300 -95330 -95334 -95335 -95336 -95337 -95338 -95339 -95340 -95345 -95346 -95347 -95348 -95349 -95358 -95360 -95370 -95390 -95394 -95395 -95396 -95397 -95398 -95399 -95400 -95411 -95420 -95422 -95423 -95425 -95426 -95427 -95429 -95430 -95440 -95450 -95454 -95456 -95460 -95480 -95493 -95494 -95500 -95508 -95510 -95513 -95520 -95525 -95526 -95530 -95533 -95536 -95540 -95560 -95563 -95570 -95575 -95576 -95580 -95585 -95587 -95588 -95590 -95593 -95594 -95595 -95597 -95598 -95600 -95603 -95604 -95605 -95606 -95607 -95609 -95614 -95618 -95619 -95620 -95624 -95627 -95628 -95629 -95630 -95633 -95634 -95635 -95636 -95637 -95640 -95642 -95643 -95645 -95646 -95647 -95648 -95650 -95652 -95654 -95655 -95657 -95658 -95659 -95670 -95672 -95673 -95674 -95676 -95677 -95680 -95683 -95690 -95693 -95694 -95695 -95696 -95697 -95700 -95710 -95714 -95716 -95717 -95718 -95719 -95720 -95724 -95725 -95726 -95728 -95729 -95730 -95736 -95738 -95739 -95740 -95746 -95747 -95748 -95749 -95750 -95755 -95756 -95760 -95765 -95766 -95767 -95769 -95770 -95775 -95777 -95778 -95779 -95780 -95786 -95790 -95795 -95796 -95797 -95798 -95799 -95800 -95801 -95802 -95803 -95804 -95805 -95806 -95807 -95810 -95812 -95813 -95814 -95815 -95816 -95817 -95818 -95819 -95820 -95821 -95824 -95825 -95830 -95832 -95833 -95834 -95835 -95836 -95837 -95838 -95839 -95840 -95842 -95843 -95844 -95845 -95846 -95847 -95848 -95849 -95850 -95852 -95853 -95854 -95855 -95856 -95857 -95858 -95863 -95864 -95865 -95866 -95867 -95869 -95870 -95874 -95876 -95877 -95879 -95880 -95884 -95888 -95890 -95897 -95898 -95900 -95902 -95905 -95907 -95910 -95920 -95930 -95931 -95932 -95933 -95950 -95960 -95970 -95980 -95990 -95997 -96000 -96009 -96010 -96014 -96020 -96025 -96026 -96027 -96028 -96029 -96030 -96034 -96039 -96040 -96045 -96048 -96049 -96050 -96054 -96055 -96056 -96057 -96058 -96059 -96060 -96067 -96068 -96069 -96070 -96079 -96100 -96102 -96103 -96107 -96108 -96110 -96112 -96114 -96117 -96120 -96123 -96125 -96126 -96127 -96128 -96130 -96132 -96135 -96140 -96141 -96143 -96145 -96147 -96148 -96149 -96150 -96151 -96152 -96154 -96155 -96157 -96158 -96159 -96160 -96165 -96169 -96170 -96172 -96174 -96176 -96178 -96180 -96182 -96184 -96185 -96186 -96188 -96200 -96210 -96215 -96216 -96218 -96219 -96220 -96225 -96230 -96240 -96250 -96260 -96270 -96278 -96279 -96280 -96290 -96307 -96308 -96316 -96318 -96320 -96330 -96340 -96342 -96343 -96344 -96345 -96346 -96347 -96348 -96349 -96350 -96353 -96357 -96358 -96360 -96365 -96367 -96370 -96372 -96374 -96376 -96380 -96382 -96383 -96384 -96385 -96386 -96387 -96390 -96393 -96394 -96397 -96398 -96399 -96400 -96409 -96410 -96419 -96420 -96430 -96440 -96450 -96458 -96459 -96460 -96470 -96480 -96490 -96495 -96496 -96497 -96499 -96500 -96510 -96518 -96519 -96520 -96529 -96530 -96535 -96536 -96537 -96538 -96539 -96540 -96550 -96556 -96557 -96559 -96560 -96564 -96565 -96566 -96567 -96568 -96569 -96570 -96575 -96576 -96577 -96578 -96579 -96580 -96588 -96590 -96598 -96599 -96600 -96610 -96620 -96630 -96640 -96650 -96660 -96670 -96673 -96680 -96684 -96687 -96690 -96699 -96700 -96710 -96716 -96717 -96718 -96719 -96720 -96728 -96729 -96730 -96734 -96735 -96736 -96737 -96738 -96739 -96740 -96747 -96749 -96750 -96757 -96760 -96770 -96773 -96780 -96790 -96798 -96799 -96810 -96816 -96817 -96818 -96819 -96840 -96846 -96847 -96848 -96849 -96850 -96858 -96860 -96870 -96879 -96880 -96890 -96900 -96902 -96903 -96904 -96905 -96906 -96907 -96914 -96915 -96917 -96918 -96920 -96921 -96926 -96927 -96930 -96931 -96933 -96934 -96935 -96936 -96937 -96938 -96940 -96941 -96942 -96943 -96944 -96945 -96947 -96948 -96950 -96955 -96956 -96957 -96959 -96960 -96970 -96972 -96973 -96974 -96975 -96976 -96977 -96978 -96979 -96980 -96983 -96984 -96985 -96986 -96987 -96988 -96989 -96990 -96992 -96993 -96994 -96995 -96996 -96997 -96998 -97000 -97001 -97007 -97009 -97050 -97059 -97060 -97068 -97069 -97070 -97080 -97088 -97089 -97098 -97099 -97100 -97106 -97107 -97108 -97109 -97110 -97113 -97114 -97115 -97116 -97118 -97119 -97120 -97121 -97125 -97127 -97128 -97129 -97130 -97133 -97134 -97135 -97136 -97137 -97138 -97139 -97140 -97142 -97143 -97144 -97145 -97146 -97147 -97148 -97150 -97155 -97156 -97157 -97158 -97159 -97160 -97165 -97166 -97167 -97168 -97169 -97170 -97173 -97174 -97176 -97177 -97178 -97179 -97180 -97189 -97195 -97196 -97197 -97198 -97199 -97203 -97204 -97205 -97206 -97207 -97208 -97209 -97210 -97215 -97217 -97218 -97219 -97220 -97225 -97226 -97227 -97229 -97230 -97237 -97238 -97239 -97240 -97245 -97246 -97247 -97249 -97250 -97255 -97256 -97258 -97259 -97260 -97267 -97268 -97269 -97270 -97277 -97278 -97279 -97280 -97284 -97285 -97286 -97287 -97288 -97289 -97290 -97295 -97296 -97298 -97299 -97300 -97301 -97302 -97303 -97304 -97305 -97306 -97310 -97314 -97315 -97320 -97321 -97322 -97324 -97330 -97340 -97343 -97345 -97348 -97350 -97355 -97356 -97357 -97360 -97364 -97367 -97370 -97373 -97377 -97378 -97380 -97382 -97386 -97387 -97389 -97390 -97391 -97392 -97395 -97400 -97404 -97407 -97410 -97420 -97425 -97426 -97430 -97432 -97433 -97434 -97436 -97437 -97438 -97439 -97440 -97445 -97446 -97447 -97450 -97454 -97455 -97457 -97460 -97466 -97470 -97475 -97476 -97478 -97480 -97489 -97490 -97500 -97510 -97520 -97522 -97524 -97527 -97530 -97535 -97540 -97545 -97550 -97551 -97555 -97558 -97560 -97561 -97566 -97570 -97573 -97577 -97580 -97581 -97587 -97590 -97600 -97606 -97610 -97614 -97615 -97616 -97620 -97630 -97640 -97641 -97646 -97647 -97650 -97652 -97655 -97660 -97668 -97670 -97675 -97676 -97680 -97690 -97700 -97702 -97703 -97704 -97709 -97710 -97712 -97713 -97714 -97715 -97716 -97717 -97719 -97720 -97721 -97730 -97736 -97740 -97743 -97744 -97745 -97746 -97749 -97750 -97751 -97752 -97753 -97754 -97755 -97758 -97759 -97760 -97762 -97764 -97766 -97768 -97770 -97775 -97779 -97780 -97782 -97783 -97784 -97785 -97790 -97792 -97796 -97800 -97805 -97806 -97807 -97810 -97811 -97813 -97814 -97816 -97818 -97820 -97825 -97826 -97827 -97830 -97831 -97840 -97844 -97845 -97850 -97851 -97854 -97857 -97860 -97862 -97863 -97864 -97870 -97872 -97880 -97886 -97890 -97899 -97900 -97904 -97908 -97910 -97915 -97920 -97921 -97922 -97923 -97924 -97925 -97930 -97935 -97940 -97945 -97950 -97955 -97960 -97961 -97969 -97970 -97971 -97980 -97990 -98000 -98007 -98008 -98009 -98010 -98015 -98016 -98017 -98018 -98019 -98023 -98030 -98039 -98040 -98045 -98046 -98049 -98050 -98051 -98053 -98054 -98056 -98057 -98058 -98059 -98060 -98064 -98065 -98066 -98067 -98068 -98069 -98070 -98077 -98078 -98079 -98080 -98083 -98084 -98085 -98086 -98087 -98088 -98089 -98090 -98097 -98098 -98099 -98100 -98140 -98150 -98160 -98170 -98174 -98175 -98176 -98177 -98180 -98183 -98184 -98185 -98186 -98200 -98204 -98205 -98209 -98210 -98211 -98212 -98220 -98222 -98223 -98229 -98230 -98236 -98237 -98238 -98239 -98240 -98241 -98245 -98250 -98253 -98254 -98256 -98260 -98261 -98262 -98264 -98265 -98267 -98270 -98275 -98277 -98278 -98279 -98280 -98281 -98285 -98286 -98287 -98290 -98300 -98303 -98304 -98307 -98310 -98311 -98320 -98330 -98340 -98350 -98351 -98360 -98367 -98368 -98369 -98370 -98380 -98390 -98400 -98401 -98403 -98404 -98405 -98406 -98409 -98410 -98413 -98416 -98419 -98420 -98422 -98423 -98424 -98425 -98426 -98429 -98430 -98432 -98435 -98436 -98440 -98445 -98450 -98451 -98452 -98453 -98460 -98461 -98471 -98473 -98490 -98500 -98502 -98503 -98504 -98505 -98506 -98507 -98508 -98510 -98515 -98519 -98520 -98540 -98541 -98545 -98548 -98560 -98561 -98600 -98604 -98605 -98606 -98607 -98608 -98609 -98610 -98612 -98613 -98614 -98615 -98616 -98617 -98618 -98619 -98620 -98621 -98630 -98631 -98640 -98644 -98645 -98646 -98647 -98648 -98650 -98658 -98659 -98660 -98680 -98689 -98690 -98692 -98693 -98694 -98695 -98696 -98697 -98698 -98700 -98704 -98705 -98706 -98707 -98710 -98712 -98713 -98714 -98715 -98716 -98717 -98718 -98720 -98723 -98724 -98725 -98726 -98727 -98730 -98740 -98750 -98760 -98770 -98772 -98773 -98775 -98776 -98780 -98785 -98790 -98794 -98795 -98800 -98804 -98807 -98810 -98815 -98817 -98820 -98824 -98827 -98830 -98832 -98833 -98834 -98835 -98836 -98837 -98838 -98839 -98840 -98850 -98870 -98880 -98890 -98900 -98910 -98918 -98919 -98920 -98921 -98930 -98931 -98940 -98941 -98942 -98950 -98951 -98955 -98959 -98960 -98961 -98965 -98969 -98970 -98971 -98979 -98980 -98986 -98988 -98990 -98994 -98995 -99000 -99010 -99011 -99013 -99014 -99020 -99030 -99033 -99034 -99036 -99039 -99040 -99049 -99050 -99054 -99055 -99056 -99059 -99060 -99070 -99080 -99084 -99088 -99089 -99090 -99094 -99099 -99100 -99102 -99103 -99104 -99106 -99109 -99110 -99119 -99120 -99121 -99128 -99129 -99130 -99132 -99141 -99150 -99158 -99159 -99160 -99170 -99178 -99179 -99180 -99182 -99188 -99189 -99190 -99198 -99199 -99200 -99201 -99202 -99203 -99208 -99209 -99210 -99220 -99225 -99230 -99231 -99237 -99238 -99239 -99240 -99250 -99252 -99253 -99254 -99255 -99256 -99257 -99258 -99259 -99260 -99270 -99279 -99280 -99300 -99310 -99311 -99312 -99313 -99314 -99315 -99316 -99320 -99322 -99323 -99324 -99330 -99340 -99342 -99343 -99344 -99350 -99352 -99353 -99360 -99361 -99362 -99363 -99370 -99379 -99380 -99382 -99389 -99390 -99392 -99393 -99400 -99410 -99420 -99430 -99440 -99442 -99443 -99447 -99454 -99456 -99457 -99458 -99460 -99467 -99468 -99469 -99471 -99473 -99476 -99478 -99479 -99480 -99500 -99506 -99510 -99520 -99530 -99540 -99542 -99543 -99544 -99545 -99546 -99547 -99550 -99552 -99559 -99560 -99570 -99580 -99581 -99590 -99592 -99593 -99600 -99602 -99603 -99606 -99607 -99608 -99609 -99620 -99630 -99650 -99670 -99700 -99704 -99705 -99707 -99720 -99730 -99750 -99755 -99760 -99770 -99780 -99781 -99800 -99806 -99810 -99814 -99820 -99823 -99824 -99825 -99826 -99827 -99828 -99830 -99860 -99890 -99900 -99902 -99904 -99905 -99906 -99907 -99908 -99909 -99910 -99913 -99914 -99915 -99917 -99918 -99919 -99920 -99921 -99925 -99930 -99940 -99949 -99950 -99960 -99969 -99970 -99974 -99979 -99980 -99984 -99987 -99990 -99993 -99994 -99998 diff --git a/docs/Example_Locale.php b/docs/Example_Locale.php deleted file mode 100644 index 7f3cf8d..0000000 --- a/docs/Example_Locale.php +++ /dev/null @@ -1,109 +0,0 @@ - | -// | Pierre-Alain Joye | -// +----------------------------------------------------------------------+ -// -/** - * Specific validation methods for data used in the [LocaleName] - * - * @category Validate - * @package Validate_[LocaleName] - * @author [Your Name] - * @copyright 1997-2005 [Your name] - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id$ - * @link http://pear.php.net/package/Validate_[LocaleName] - */ - -/** - * Data validation class for the [LocaleName] - * - * This class provides methods to validate: - * - SSN - * - Postal code - * - Telephone number - * - * @category Validate - * @package Validate_[LocaleName] - * @author [Your Name] - * @copyright 1997-2005 [Your name] - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/Validate_[LocaleName] - */ -class Validate_LocaleName -{ - /** - * validates a postcode - * - * [Further info goes here] - * - * @access public - * @author [Your name] - * @param string the postcode to be validated - * @param bool optional; strong checks (e.g. against a list of postcodes) (not implanted) - * - * @return bool true on success false on failure - */ - function postalCode($postcode, $strong = false) - { - if (ctype_digit($number)) { - return true; - } - - return false; - } - - /** - * Validates a social security number - * - * [Further info goes here] - * - * @access public - * @author [Your name] - * @param string $ssn SSN - * - * @return bool true on success false on failure - */ - function ssn($ssn) - { - if (ctype_digit($number)) { - return true; - } - - return false; - } - - /** - * Validate a phone number - * - * [Further info goes here] - * - * @access public - * @author [Your name] - * @param string $number the tel number - * - * @return bool true on success false on failure - */ - function phoneNumber($number) - { - if (ctype_digit($number)) { - return true; - } - - return false; - } -} -?> diff --git a/docs/sample_multiple.php b/docs/sample_multiple.php deleted file mode 100644 index 4295d02..0000000 --- a/docs/sample_multiple.php +++ /dev/null @@ -1,51 +0,0 @@ - '13234,344343', - 'name' => 'foo@example.com', - 'rib' => array( - 'codebanque' => '33287', - 'codeguichet' => '00081', - 'nocompte' => '00923458141C', - 'key' => '52' - ), - 'rib2' => array( - 'codebanque' => '12345', - 'codeguichet' => '12345', - 'nocompte' => '12345678901', - 'key' => '46' - ), - 'mail' => 'foo@example.com', - 'hissiret' => '441 751 245 00016', - 'mystring' => 'ABCDEabcde', - 'iban' => 'CH10002300A1023502601', - 'cep' => '12345-123' - ); -$opts = array( - 'amount'=> array('type'=>'number','decimal'=>',.','dec_prec'=>null,'min'=>1,'max'=>32000), - 'name' => array('type'=>'email','check_domain'=>false), - 'rib' => array('type'=>'FR_rib'), - 'rib2' => array('type'=>'FR_rib'), - 'mail' => array('type'=>'email'), - 'hissiret' => array('type'=>'FR_siret'), - 'mystring' => array('type'=>'string',array('format'=>VALIDATE_ALPHA, 'min_length'=>3)), - 'iban' => array('type'=>'Finance_iban'), - 'cep' => array('type'=>'ptBR_postalcode') - ); - -$result = Validate::multiple($values, $opts); - -print_r($result); - -?> diff --git a/docs/validate_it_examples.php b/docs/validate_it_examples.php deleted file mode 100644 index 5fa7e62..0000000 --- a/docs/validate_it_examples.php +++ /dev/null @@ -1,78 +0,0 @@ - - * @copyright 2008 Jacopo Andrea Nuzzi - * @license http://www.opensource.org/licenses/bsd-license.php New BSD - * @version CVS: $Id$ - * @link http://pear.php.net/package/Validate_IT - */ - -require_once 'Validate/IT.php'; - -if (Validate_IT::region('lom')) { - echo 'Valid region code.'; -} else { - echo 'NOT valid region code.'; -} - -if (Validate_IT::regionName('lombardia')) { - echo 'Valid region name.'; -} else { - echo 'NOT valid region name.'; -} - -if (Validate_IT::postalCode('20126')) { - echo 'Valid postal code (CAP).'; -} else { - echo 'NOT valid postal code (CAP).'; -} - - -if (Validate_IT::city('mi')) { - echo 'Valid city code.'; -} else { - echo 'NOT valid city code.'; -} - -if (Validate_IT::cityName('milano')) { - echo 'Valid city name.'; -} else { - echo 'NOT valid city name.'; -} - -if (Validate_IT::driverLicense('XX00000000X')) { - echo 'Valid driver license.'; -} else { - echo 'NOT valid driver license.'; -} -if (Validate_IT::mobilePhoneNumber('3330000000')) { - echo 'Valid mobile phone number.'; -} else { - echo 'NOT valid mobile phone number.'; -} - -if (Validate_IT::phoneNumberPrefix('+39 02/00000000')) { - echo 'Valid phone number.'; -} else { - echo 'NOT valid phone number.'; -} - -if (Validate_IT::fiscalCode('xxx xxx 00a00 x000x')) { - echo 'Valid fiscal code.'; -} else { - echo 'NOT valid fiscal code.'; -} -?> \ No newline at end of file diff --git a/package.xml b/package.xml index e520b3d..85882b6 100644 --- a/package.xml +++ b/package.xml @@ -1,473 +1,151 @@ - - - Validate + + Validate_IE pear.php.net - Validation class - Package to validate various datas. It includes : - - numbers (min/max, decimal or not) - - email (syntax, domain check, rfc822) - - string (predifined type alpha upper and/or lowercase, numeric,...) - - date (min, max, rfc822 compliant) - - uri (RFC2396) - - possibility valid multiple data with a single method call (::multiple) - - Pierre-Alain Joye - pajoye - pierre.php@gmail.com - no - - - Thomas V.V.Cox - cox - cox@php.net - no - - - Helgi Þormar Þorbjörnsson - dufuz - dufuz@php.net - no - - - Amir Mohammad Saied - amir - amirsaied@gmail.com - yes - + Validation class for Ireland + Package contains validation for Irish credentials: +- Postal Codes +- Passport Numbers +- Phone Numbers +- Bank Account Numbers +- Bank Sort Codes +- Swift Codes +- IBANs +- Drivers Licence Numbers +- PPSN / Social Security Numbers David Coallier davidc - david@echolibre.com + davidc@agoraproduction.com yes - bertrand Gugger - toggg - bertrand@toggg.com - no + Ken Guest + kguest + ken@linux.ie + yes - - Stefan Neufeind - neufeind - pear.neufeind@speedpartner.de - no - - 2010-10-10 - + 2013-01-22 + - 0.8.5 - 0.7.0 + 1.1.0a1 + 1.0.1 - beta - beta + alpha + alpha - New BSD + LGPL -QA Release -Request #17963: Allow test suite to run without DNS resolver [patch by remicollet, adjustments by dufuz] -Bug #17279 Validate::email() with 'fullTLDValidation' => 'true' always return false. -Bug #17947 testdate test fails if date.timezone not set -Bug #17948 multicard test fails - +* Now also validate the form of bank sort codes. + - - - - - - - - - - - - - + + + + + + + + - - + + + + - 4.2.0 + 4.4.0 1.4.0b1 - - - - Date - pear.php.net - - Net_IDNA + Validate_Finance pear.php.net - 0.7.1 + 0.5.4 - + - - 2010-10-10 - - - 0.8.4 - 0.7.0 - - - beta - beta - - New BSD - -QA release -Bug #17555 Use correct pattern delim -Bug #17755 Encoding to UTF-8 in Validate.php -Bug #17756 Avoiding ereg - - - - 2009-11-24 - - - 0.8.3 - 0.7.0 - - - beta - beta - - New BSD - - - * Bug #14865 Fixing some unit test failures (amir) - - * Bug #15945 Improper string used to check domain dns (amir) - - * Bug #16381 String format validation fails for VALIDATE_NAME.VALIDATE_XXX (amir) - - * Bug #16427 Email Validation not working for check_domain (amir) - - * Bug #16811 Should determine whether Net/IDNA.php is available less "destructively" (kguest) - - - - 0.8.2 - 0.7.0 + 1.1.0a1 + 1.0.0 - beta - beta + stable + stable - 2009-01-31 - New BSD + 2013-01-22 + LGPL - * Bug #12658: New lines at end of file create output (davidc) - * Bug #11001 RFC822 Comments break PCRE (davidc) - * Bug #14075 Validate::uri() rejects valid tag: URIs (davidc) - * Bug #14866 Notice: Undefined index: VALIDATE_ITLD_EMAILS (amir) - * Bug #14931 Warning: max(): Array must contain atleast one element (doconnor) - * Doc Bug #14180 Typo in $modulo variable description (amir) - * Doc Bug #14046 Docs desperately needed (amir) - * Request #956 Validate::email() doesn't allow Internationalized Domain Names (IDN) (davidc) - * Request #14791 Improve PHPCS Results [amir] - * Removed Net_IDNA Dependency [davidc] +* Now also validate the form of bank sort codes. - 0.8.1 - 0.7.0 - - - beta - beta - - 2007-12-10 - New BSD - * Fix Bug #2662: Invalid email addresses are validated [dufuz] -* Fix Bug #2936: Typo in sample_multiple.php [dufuz] -* Fix Bug #4068: errant "return true;" in Validate_US::phoneNumber [dufuz] -* Fix Bug #5390: XML Package Error [dufuz] -* Fix Bug #7531: Email-checks need to be more RFC-compliant [amir] -* Fix Bug #7648: VALIDATE_EALPHA does not include the Ã� character [amir] -* Fix Bug #7864: uris rejected if subdomain contains underscores [amir] -* Fix Bug #8442: Undefined variable "return" [amir] -* Fix Bug #8629: eMail validation fails [amir] -* Fix Bug #8768: Valid URL's are marked invalid [amir] -* Fix Bug #8839: defect [amir] -* Fix Bug #8851: date-validation allows letters in time. [amir] -* Fix Bug #8853: E-Mail validation allows space before TLD [amir] -* Fix Bug #9156: Missing characters in validation sequence [amir] -* Fix Bug #9385: Missing characters in validation sequence [amir] -* Fix Bug #9386: Missing punctuation mark (hyphen) in VALIDATE_NAME [amir] -* Fix Bug #10044: email validation bug [davidc] -* Fix Bug #10167: ISSN/ISBN validation is broken by _checkControlNumber [dufuz] -* Fix Bug #10844: Validate::multiple() breaks by consolidating single field array [toggg] -* Fix Bug #11073: date() %d validates \d{1,2} as correct [amir] -* Fix Bug #11592: Email validation not working properly [davidc] -* Fix Bug #12452: EALPHA_LOWER is missing a Ã� [thesaur] -* Implement Feature #11244: documentation [davidc] -* Implement Feature #8073: a@a is valid email [amir] -* Removed dependency on Net_IDNA [davidc] - - - - 0.8.0 - 0.7.0 - - - beta - beta - - 2006-11-17 - New BSD - - string(): - * New chars in VALIDATE_EALPHA_LOWER and UPPER -- date(): - * RFC822 date-time format compliant - - - - 0.6.5 - 0.6.5 - - - beta - beta - - 2006-10-05 - New BSD - - __stringToUtf7(): - * #8442, Preventing a Notice -- email(): - * #8629, hostnames starting with numbers are valid because of their popularity - * #8853, E-Mail validation allows space before TLD. -- date(): - * #8851, date-validation allows letters in time. - - - - 0.6.4 - 0.6.4 - - - beta - beta - - 2006-07-31 - New BSD - - string(): - * #7648, Adding a new character to VALIDATE_EALPHA -- email(): - * #8073, a@a is a valid email address just in RFC restricted mode -- email(): - * #7531, utf-7 encoding -- __stringToUtf7(): - * new method added to do care about utf-7 - - - - 0.6.3 - 0.6.3 - - - beta - beta - - 2006-04-20 - New BSD - - email(): - * #6930, accepts options as an array to confirm to the Validate standard - previous boolean $check_domain still accepted for backwards compatibility - * #7176, introduces an experimental option "use_rfc822" - which switch to a full RFC822 new checker - * unit test enhanced and completed -- class_exists call in mulitple() now passes false to the autoload param -- uri(): - * #6181, Accept URI terminating with a / - * use !empty() instead of isset() - * minus in the top domain as http://example.co-m is invalid - * Double slashes are accepted in the path part (requested by bjori) - As a consequence, only URIs with full authority can be valid, no relative URI - * documentation header completed : usage notes , options and "strict" parameter - * unit tests completed and updated , use php.net instead of unavailable example.org - - - - 0.6.2 - 0.6.2 - - - beta - beta - - 2005-11-04 - New BSD - - Change licence to the new BSD License - (see http://www.opensource.org/licenses/bsd-license.php) -- The path part in uri cannot contain two slash characters. -- Refactored email() regexp, hardened hostname check (taken from uri()) (bug #5804) -- Empty quoted email recipient is not valid, must at least contain a non blank char -- Use & as delimiter as Ã�£ is problematic if the script is saved utf8 -- Enhanced uri.phpt and email.phpt tests - - - - 0.6.1 - 0.6.1 - - - beta - beta - - 2005-09-13 - New BSD - - Bug #5390 XML Package Error -- uri was enchanced to fully comply with RFC2396 (Bertrand) (forgotten in last release changelog) - - - - 0.6.0 - 0.6.0 - - - beta - beta - - 2005-09-13 - New BSD - - Move to Beta state -- Enhance again email validation and unit test it -- modulus methods fix if bcmath is not present - - - - 0.5.0 - 0.5.0 - - - alpha - alpha - - 2005-05-20 - New BSD - - Bug #2936, typo -- Bug #2879, Issn wrong validation -- Better email validation -- Request #997 validate:date minium and maximum accept Date objects (By Torsten Roehr) -- Request #4055 Making multiple() cope with new dir structure (By Torsten Roehr) - To use with Validate_Finance_CreditCard then do 'type' => 'Finance_CreditCard_number' - For Validate_US it would be 'type' => 'US_ssn' - This applies to all packages like that under Validate. -- unit testing for multiple (By Torsten Roehr) -- CS fixes -- Split country and finance classes and credit card functions into their own sub packages of Validate -- New lead/developer (Helgi) -- Few more none alpha chars added -- _check_control_number renamed to _checkControlNumber - _get_control_number renamed to _getControlNumber - _mult_weights renamed to _multWeights -- added email test -- Split these functions over to a new sub package called Validate_ISPN (International Standard Product Numbers) - * ISSN - * ISBN - * ISMN - * EAN8 - * EAN13 - * EAN14 - * UCC12 - * SSCC -- splited multiple() test in with (skipif not installed) or without card, - - - - 0.4.1 - 0.4.1 - - - alpha - alpha - - 2004-03-17 - New BSD - - fixed issue when validating IBANs via a static call -- added missing test validate_UK.php to package.xml - - - - 0.4.0 - 0.4.0 + 1.0.3 + 1.0.0 - alpha - alpha + stable + stable - 2004-03-16 - New BSD - - pt_BR moved to ptBR required for multiple support(BC break) -- Add CH validation (Switzerland) -- added Euro banknotes IDs -- Improved UK postcodes validation -- Fixed allowed_scheme options in Validate::uri() (Torsten Roehr) -- Fixed optional arguments in Validate::number() (Torsten Roehr) + 2013-01-01 + LGPL + +* Validate the first component of license plates that consist of three digits. + - 0.3.0 - 0.3.0 + 1.0.2 + 1.0.0 - alpha - alpha + stable + stable - 2003-12-05 - New BSD - - Added Finance Validations for Financial related datas - (S. Neufeind, Piotr Klaban) -- Add polish validation (Piotr Klaban) -- Add German validation (Stefan Neufeind) -- Add EAN-UCC validtatio (see http://www.ean-ucc.org) (Piotr Klaban) -- Add International Standard Serial Number (ISSN) - and Music Number(ISMN) (Piotr Klaban, David Grant) -- Drop Validate::url() in preferenc of Validate::uri() which is fully - RFC2396 compliant -- Move to PHP 3.0 license + 2008-11-20 + LGPL + +* bug fix: #15097 - package not marked as depending on validate_finance + - 0.2.0 - 0.2.0 + 1.0.1 + 1.0.0 - alpha - alpha + stable + stable - 2003-06-15 - New BSD - - Add some dutch validations + 2008-04-11 + LGPL + +* bug fix: #13633 - support for the 089 mobile phone network + - 0.1.1 - 0.1.1 + 1.0.0 + 1.0.0 - alpha - alpha + stable + stable - 2003-03-12 + 2008-02-14 New BSD - - Validate::date(); argument parsing fixed + diff --git a/package_FR.xml b/package_FR.xml deleted file mode 100644 index 2ee7361..0000000 --- a/package_FR.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - Validate_FR - pear.php.net - Validation class for FR - Package containes locale validation for FR such as: - * SSN - * Postal Code - * RIB - * SIREN - * SIRET - * Region (Departements) - - - - Christophe Gesché - moosh - moosh@php.net - yes - - - bertrand Gugger - toggg - toggg@php.net - no - - 2009-09-21 - - - 0.6.0 - 0.6.0 - - - beta - beta - - New BSD - - QA release - - release in beta - - Moosh take lead - - Updated to package 2.0 (doconnor) - - - - - - - - - - - - - - - - - - 4.4.0 - - - 1.7.0 - - - Validate - pear.php.net - 0.6.2 - - - - - - - - 0.5.2 - 0.5.2 - - - alpha - alpha - - 2006-04-18 - New BSD - - bug #7389, DOM/TOM and some regions are not recognized - - - - - 0.5.1 - 0.5.1 - - - alpha - alpha - - 2005-11-04 - New BSD - - Switch to the new BSD License -(see http://www.opensource.org/licenses/bsd-license.php) - - - - - - 0.5.0 - 0.5.0 - - - alpha - alpha - - 2005-05-20 - New BSD - - Split from Validate into independent package -- CS fixes -- BC break! -postalCode unified between countries (name wise), now all postcode validation funcs are named postalCode -- added region() (departments) and postalCode -- fixed rib calculation -- bertrand Gugger added as lead/maintainer - - - - - diff --git a/package_IE.xml b/package_IE.xml deleted file mode 100644 index 85882b6..0000000 --- a/package_IE.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - Validate_IE - pear.php.net - Validation class for Ireland - Package contains validation for Irish credentials: -- Postal Codes -- Passport Numbers -- Phone Numbers -- Bank Account Numbers -- Bank Sort Codes -- Swift Codes -- IBANs -- Drivers Licence Numbers -- PPSN / Social Security Numbers - - David Coallier - davidc - davidc@agoraproduction.com - yes - - - Ken Guest - kguest - ken@linux.ie - yes - - 2013-01-22 - - - 1.1.0a1 - 1.0.1 - - - alpha - alpha - - LGPL - -* Now also validate the form of bank sort codes. - - - - - - - - - - - - - - - - - - - - - - - 4.4.0 - - - 1.4.0b1 - - - Validate_Finance - pear.php.net - 0.5.4 - - - - - - - - 1.1.0a1 - 1.0.0 - - - stable - stable - - 2013-01-22 - LGPL - -* Now also validate the form of bank sort codes. - - - - - 1.0.3 - 1.0.0 - - - stable - stable - - 2013-01-01 - LGPL - -* Validate the first component of license plates that consist of three digits. - - - - - 1.0.2 - 1.0.0 - - - stable - stable - - 2008-11-20 - LGPL - -* bug fix: #15097 - package not marked as depending on validate_finance - - - - - 1.0.1 - 1.0.0 - - - stable - stable - - 2008-04-11 - LGPL - -* bug fix: #13633 - support for the 089 mobile phone network - - - - - 1.0.0 - 1.0.0 - - - stable - stable - - 2008-02-14 - New BSD - - - - diff --git a/package_IR.xml b/package_IR.xml deleted file mode 100644 index 507b81f..0000000 --- a/package_IR.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - Validate_IR - pear.php.net - Data validation class for Iran. - Package containes locale validation for IR such as: - * Phone Number - * Mobile Number - * Postal Code - * SSN (This is called "Code Melli" in Iran) - * Persian Digits - * Persian alphaNumeric - * Iranian credit card - - - Arash Hemmat - arash - arash.hemmat@gmail.com - yes - - 2011-02-06 - - - 0.1.0 - 0.1.0 - - - alpha - alpha - - BSD License - Initial release - - - - - - - - - - - - - - - - - 5.0.0 - 6.0.0 - - - 1.9.0 - - - - - diff --git a/package_IT.xml b/package_IT.xml deleted file mode 100644 index 0fe126d..0000000 --- a/package_IT.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - Validate_IT - pear.php.net - Validation class for Italy - This class provides methods to validate: - * Postal code (CAP) - * Telephone number (and prefix) - * Mobile number (and prefix) - * Regions (and regions code) - * Cities (and cities code) - * Fiscal code - * Value Added Tax Identification Number (VATIN) (Partita IVA) - * Driver license - - Jacopo Andrea Nuzzi - jan267 - jacopo.nuzzi@gmail.com - yes - - 2008-02-26 - - - 0.2.0 - 1.0.1 - - - alpha - alpha - - New BSD - - Improved fiscalCode() function. - - Added pIva() function. With this function you validate Value Added Tax Identification Number (VATIN) (the italian Partita IVA). - - Added driverLicense() function. With this function you can validate an italian driver license. - - - - - - - - - - - 4.3.0 - - - 1.7.0 - - - - - diff --git a/package_LV.xml b/package_LV.xml deleted file mode 100644 index 51eb4da..0000000 --- a/package_LV.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - Validate_LV - pear.php.net - Validation class for Latvia - Data validation class for Latvia -Provides methods to validate: -- VAT number -- Registration number -- Swift code -- Telephone number -- Person ID -- IBAN Bank account number for Latvian Banks -- Postal code -- Passport -- Person name - - - - Roman Roan - videinfra - opensource@videinfra.com - yes - - 2007-09-08 - - - 1.0.0RC2 - 1.0 - - - beta - stable - - New BSD - - Fixed person id check date bug (Thanks Igor Istochnick) - - - - - - - - - - - - - 4.2.0 - - - 1.4.0b1 - - - - - - - - - 1.0.0RC1 - 1.0 - - - stable - stable - - 2007-03-07 - New BSD - Initial Release. - - - - - diff --git a/package_NZ.xml b/package_NZ.xml deleted file mode 100644 index b4e0248..0000000 --- a/package_NZ.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - Validate_NZ - pear.php.net - Validation class for NZ - Package containes locale validation for NZ such as: - * IRD numbers - * Regional codes - * Telephone number - * Postal code - * Bank AC - * Vehicle License Plates - - - Byron Adams - badams - byron.adams54@gmail.com - yes - - 2011-03-01 - - - 0.1.6 - 0.1.6 - - - alpha - alpha - - New BSD - -Updated phone number validation to reflect mobile operators; as per http://en.wikipedia.org/wiki/Telephone_numbers_in_New_Zealand#Mobile_Phones - - - - - - - - - - - - - - - - - - - - 4.2.0 - - - 1.4.0b1 - - - - - diff --git a/package_esMX.xml b/package_esMX.xml deleted file mode 100644 index d6394c5..0000000 --- a/package_esMX.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - Validate_esMX - pear.php.net - Validation class for esMX - Package contains locale validation for esMX such as: - * Postal Code - * DNI (aka CURP) - * Region (states) - * Phone numbers - - - Pablo Fischer - pfischer - pfischer@php.net - yes - - 2010-03-11 - - - 0.1.0 - 0.1.0 - - - alpha - alpha - - LGPL - - New support for esMX. - Supported methods: - - Postal Codes: strong and fast check (regexp) - - Regions (states) - - DNI (aka CURP) - - Phone numbers - - - - - - - - - - - - - - - - - - - - - 4.2.0 - - - 1.4.0b1 - - - - - - - - - - - - 0.1.0 - 0.1.0 - - - alpha - alpha - - 2007-08-19 - LGPL - - Initial release - - - - diff --git a/tests/Validate_NZ.phpt b/tests/Validate_NZ.phpt deleted file mode 100644 index b551f39..0000000 --- a/tests/Validate_NZ.phpt +++ /dev/null @@ -1,312 +0,0 @@ ---TEST-- -Validate_NZ.phpt: Unit tests for ---FILE-- - - ---EXPECT-- - -Test Validate_NZ -**************** -----Test postalCode (lax)---- -0110: YES -1010: YES -0000: YES -1501: YES -1111: YES -0800: YES -011: NO -a112: NO -101010: NO -O1lO: NO -0610: YES -0600: YES -2012: YES -2105: YES -0505: YES -1081: YES -1022: YES -2102: YES -2010: YES -2022: YES -2013: YES -0630: YES -0614: YES -0612: YES -2014: YES -1025: YES -0931: YES -9893: YES -----Test postalCode (strict)---- -0110: YES -1010: YES -0000: NO -1501: NO -1111: NO -0800: YES -011: NO -a112: NO -101010: NO -O1lO: NO -0610: YES -0600: YES -2012: YES -2105: YES -0505: YES -1081: YES -1022: YES -2102: YES -2010: YES -2022: YES -2013: YES -0630: YES -0614: YES -0612: YES -2014: YES -1025: YES -0931: YES -9893: YES -----Test phonenumber---- -(03) 684-5018: YES -063471122: YES -(06)3471122: YES -03-684-5018: YES -056845018: NO -08-684-5018: NO -(02) 631-7658: NO -+64 03 684-5018: YES -64-03-684-5018: YES -64036845018: YES -64 03 684 5018: YES -0-21-343 183: YES -0272913164: YES -021 234 5678: YES -027-123-4567: YES -(025) 234-5678: NO -0232345678: NO -024-321-8765: NO -1112223456: NO -0800 838383: YES -0800-30-40-50: YES -0508 333245: YES -0900 202 020: YES -0508304050: YES -0300-603232: NO -1800 321 321: NO -0500 123123: NO -0808 505050: NO -0908123456: NO -0800 269 296: YES -0800 803 804: YES -0800 275 269: YES -0800 11 33 55: YES -0800 400 600: YES -0800 269 4663: YES -0800 306 3010: YES -----Test region---- -AUK: YES -WTC: YES -WGN: YES -FIS: NO -SC: NO -CAB: NO -CAN: YES -----Test BankAccount---- -06-0889-0262506-00: YES -06 0889 0262506 00: YES -060889026250600: YES -00889026250600: NO -06-088902625060: NO -----Test IRD Numbers (SSN)---- -087 784 215: YES -036-410-232: YES -071-321-321: NO -97 654 456: NO -83-366-3215: NO -987 784 215: NO -----Test Vehicle License plates ---- -AE12Y3: YES -000000: NO -NY3Z14: YES -ABCDEF: NO -AI14W: YES diff --git a/tests/bug11592.phpt b/tests/bug11592.phpt deleted file mode 100644 index f24502c..0000000 --- a/tests/bug11592.phpt +++ /dev/null @@ -1,14 +0,0 @@ ---TEST-- -Validate::email ---FILE-- -email($wrongEmail)); -var_dump($validate->email($goodEmail)); -?> ---EXPECT-- -bool(false) -bool(true) diff --git a/tests/bug12279.phpt b/tests/bug12279.phpt deleted file mode 100644 index 30b84ee..0000000 --- a/tests/bug12279.phpt +++ /dev/null @@ -1,11 +0,0 @@ ---TEST-- -Bug #12279: Validate_ISPN Incorrectly Validates 10 digit Isbn Numbers ---FILE-- - ---EXPECT-- -bool(true) -bool(false) diff --git a/tests/bug14075.phpt b/tests/bug14075.phpt deleted file mode 100644 index bd21053..0000000 --- a/tests/bug14075.phpt +++ /dev/null @@ -1,10 +0,0 @@ ---TEST-- -Validate::uri Tag URIs ---FILE-- - array("tag")))); -?> ---EXPECT-- -bool(true) diff --git a/tests/bug17279.phpt b/tests/bug17279.phpt deleted file mode 100644 index 02b3da9..0000000 --- a/tests/bug17279.phpt +++ /dev/null @@ -1,24 +0,0 @@ ---TEST-- -Validate::email ---FILE-- - true, - 'use_rfc822' => true, - 'VALIDATE_CCTLD_EMAILS' => true - ) -)); -var_dump(Validate::email( - 'afanstudio@gmail.com', - array( - 'fullTLDValidation' => true, - 'use_rfc822' => true, - ) -)); -?> ---EXPECT-- -bool(false) -bool(true) diff --git a/tests/bug7038.phpt b/tests/bug7038.phpt deleted file mode 100644 index dce9f58..0000000 --- a/tests/bug7038.phpt +++ /dev/null @@ -1,19 +0,0 @@ ---TEST-- -#7038, validate::email: accentued characters are not allowed ---FILE-- - ---EXPECT-- -Ok -Ok -Ok diff --git a/tests/bug7176.phpt b/tests/bug7176.phpt deleted file mode 100644 index 8663084..0000000 --- a/tests/bug7176.phpt +++ /dev/null @@ -1,23 +0,0 @@ ---TEST-- -#7176, email RFC 822 ---FILE-- -', array('use_rfc822' => true))) { - echo "Ok 1\n"; -} -if (validate::email('"George, Ted" ', array('use_rfc822' => true))) { - echo "Ok 2\n"; -} -if (validate::email('Wilt . (the Stilt) Chamberlain@NBA.US', array('use_rfc822' => true))) { - echo "Ok 3\n"; -} -if (validate::email('Some User ', array('use_rfc822' => true))) { - echo "Ok 4\n"; -} -?> ---EXPECT-- -Ok 1 -Ok 2 -Ok 3 -Ok 4 diff --git a/tests/bug7531.phpt b/tests/bug7531.phpt deleted file mode 100644 index fd3d18d..0000000 --- a/tests/bug7531.phpt +++ /dev/null @@ -1,13 +0,0 @@ ---TEST-- -#7531, validate::email: Email-checks need to be more RFC-compliant ---FILE-- - true - ))) { - echo "Ok\n"; -} -?> ---EXPECT-- -Ok diff --git a/tests/bug7648.phpt b/tests/bug7648.phpt deleted file mode 100644 index a1847b2..0000000 --- a/tests/bug7648.phpt +++ /dev/null @@ -1,26 +0,0 @@ ---TEST-- -#7648, validate::string, VALIDATE_EALPHA does not include the Å character ---FILE-- - VALIDATE_EALPHA))) { - echo "Ok\n"; - } -} -?> ---EXPECT-- -Ok -Ok -Ok -Ok diff --git a/tests/bug8073.phpt b/tests/bug8073.phpt deleted file mode 100644 index a984958..0000000 --- a/tests/bug8073.phpt +++ /dev/null @@ -1,17 +0,0 @@ ---TEST-- -#8073, validate::email: a@a is valid email ---FILE-- - true - ))) { - echo "Ok\n"; -} -?> ---EXPECT-- -Ok -Ok diff --git a/tests/bug8629.phpt b/tests/bug8629.phpt deleted file mode 100644 index 3f9fabc..0000000 --- a/tests/bug8629.phpt +++ /dev/null @@ -1,11 +0,0 @@ ---TEST-- -#8629, validate::email: fails with numbers at start of hostname. ---FILE-- - ---EXPECT-- -Ok diff --git a/tests/bug8851.phpt b/tests/bug8851.phpt deleted file mode 100644 index 2dedf90..0000000 --- a/tests/bug8851.phpt +++ /dev/null @@ -1,13 +0,0 @@ ---TEST-- -#8851, validate::date: date-validation allows letters in time. ---FILE-- -date($time,array("format"=>"%h:%i"))) { - echo "Ok"; -} -?> ---EXPECT-- -Ok diff --git a/tests/bug8853.phpt b/tests/bug8853.phpt deleted file mode 100644 index 78ede50..0000000 --- a/tests/bug8853.phpt +++ /dev/null @@ -1,11 +0,0 @@ ---TEST-- -#8853, validate::email: E-Mail validation allows space before TLD ---FILE-- - ---EXPECT-- -Ok diff --git a/tests/email.phpt b/tests/email.phpt deleted file mode 100644 index 8a77c0a..0000000 --- a/tests/email.phpt +++ /dev/null @@ -1,166 +0,0 @@ ---TEST-- -email.phpt: Unit tests for email validation ---FILE-- - true, 'VALIDATE_GTLD_EMAILS' => true)), - array('example (though bad)@example.com', array('use_rfc822' => true)), // OK - 'bugme@not./com', // OK - - // Some none english chars, those should fail until we fix the IDN stuff - 'hjj@homms.com', // NOK - '@example.com', // NOK - 'postmaster@tv.de', // NOK - - // Test for various ways with _ - 'mark_@example.com', // OK - '_mark@example.com', // OK - 'mark_foo@example.com', // OK - - // Test for various ways with - - 'mark-@example.com', // OK - '-mark@example.com', // OK - 'mark-foo@example.com', // OK - - // Test for various ways with . - 'mark.@example.com', // NOK - '.mark@example.com', // NOK - 'mark.foo@example.com', // OK - - // Test for various ways with , - 'mark,@example.com', // NOK - ',mark@example.com', // NOK - 'mark,foo@example.com', // NOK - - // Test for various ways with : - 'mark:@example.com', // NOK - ':mark@example.com', // NOK - 'mark:foo@example.com', // NOK - - // Test for various ways with ; - 'mark;@example.com', // NOK - ';mark@example.com', // NOK - 'mark;foo@example.com', // NOK - - // Test for various ways with | - 'mark|@example.com', // OK - '|mark@example.com', // OK - 'mark|foo@example.com', // OK - - // Test for various ways with double @ - 'mark@home@example.com', // NOK - 'mark@example.home@com', // NOK - 'mark@example.com@home', // NOK - - // Killers ' tests - 'ha"ho@example.com', // NOK - 'blah@example.com', // NOK - '@example.com', // NOK - '"blah"@example.com', // OK - '" "@example.com', // NOK - '@example.com', // NOK - - // Minus ' tests (#5804) - 'minus@example-minus.com', // OK - 'minus@example.co-m', // OK - 'mi-nus@example-minus.co-m', // OK - 'minus@example-.com', // NOK - 'minus@-example.com', // NOK - 'minus@-.com', // NOK - 'minus@example.-com', // NOK - 'minus@-example.com-', // NOK - - // IP domain - 'ip@127.0.0.1', // OK - '"the ip"@[127.0.0.1]', // OK - 'ip@127.0.333.1', // NOK - 'ip@[277.0.0.1]', // NOK - 'ip@[127.0.0.1', // NOK - 'ip@127.0.0.1]' // NOK - ); - -list($version) = explode(".", phpversion(), 2); -foreach ($emails as $email) { - if (is_array($email)) { - echo "{$email[0]}:"; - if (!is_array($email[1])) { - echo " with". ($email[1] ? '' : 'out') . ' domain check :'; - } - echo ' ' . $noYes[Validate::email($email[0], $email[1])]."\n"; - } else { - echo "{$email}: "; - if ((int)$version > 4) { - try { - echo $noYes[Validate::email($email)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate::email($email)]."\n"; - } - } -} -?> ---EXPECT-- -Test Validate_Email -example@fluffffffrefrffrfrfrfrfrfr.is: YES -davidc@php.net: YES -example (though bad)@example.com: YES -bugme@not./com: YES -hjj@homms.com: NO -@example.com: NO -postmaster@tv.de: NO -mark_@example.com: YES -_mark@example.com: YES -mark_foo@example.com: YES -mark-@example.com: YES --mark@example.com: YES -mark-foo@example.com: YES -mark.@example.com: NO -.mark@example.com: NO -mark.foo@example.com: YES -mark,@example.com: NO -,mark@example.com: NO -mark,foo@example.com: NO -mark:@example.com: NO -:mark@example.com: NO -mark:foo@example.com: NO -mark;@example.com: NO -;mark@example.com: NO -mark;foo@example.com: NO -mark|@example.com: YES -|mark@example.com: YES -mark|foo@example.com: YES -mark@home@example.com: NO -mark@example.home@com: NO -mark@example.com@home: NO -ha"ho@example.com: NO -blah@example.com: NO -@example.com: NO -"blah"@example.com: YES -" "@example.com: NO -@example.com: NO -minus@example-minus.com: YES -minus@example.co-m: YES -mi-nus@example-minus.co-m: YES -minus@example-.com: NO -minus@-example.com: NO -minus@-.com: NO -minus@example.-com: NO -minus@-example.com-: NO -ip@127.0.0.1: YES -"the ip"@[127.0.0.1]: YES -ip@127.0.333.1: NO -ip@[277.0.0.1]: NO -ip@[127.0.0.1: NO -ip@127.0.0.1]: NO diff --git a/tests/email_domaincheck.phpt b/tests/email_domaincheck.phpt deleted file mode 100644 index 22a5595..0000000 --- a/tests/email_domaincheck.phpt +++ /dev/null @@ -1,49 +0,0 @@ ---TEST-- -domaincheck.phpt: Unit tests for email validation with dns checks ---SKIPIF-- - ---FILE-- - 4) { - try { - echo $noYes[Validate::email($email)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate::email($email)]."\n"; - } - } -} -?> ---EXPECT-- -Test Validate_Email -pear-general@lists.php.net: with domain check : YES -example@fluffffffrefrffrfrfrfrfrfr.is: with domain check : NO \ No newline at end of file diff --git a/tests/multicard.phpt b/tests/multicard.phpt deleted file mode 100644 index 9d5ada8..0000000 --- a/tests/multicard.phpt +++ /dev/null @@ -1,60 +0,0 @@ ---TEST-- -multicard.phpt: Unit tests for 'Validate.php' : mutltiple() with credit card -This test needs Validate_Finance_CreditCard installed to be enabled ---SKIPIF-- - ---FILE-- - array('type' => 'email'), - 'myemail1' => array('type' => 'email'), - 'no' => array('type' => 'number', array('min' => -8, 'max' => -7)), - 'teststring' => array('type' => 'string', array('format' => VALIDATE_ALPHA)), - 'date' => array('type' => 'date', array('format' => '%d%m%Y')), - 'cc_no' => array('type' => 'Finance_CreditCard_number') -); - -$data = array( - array( - 'myemail' => 'webmaster@google.com', // OK - 'myemail1' => 'webmaster.@google.com', // NOK - 'no' => '-8', // OK - 'teststring' => 'PEARrocks', // OK - 'date' => '12121996', // OK - 'cc_no' => '6762 1955 1506 1813' // OK - ) -); - -echo "Test Validate_Multiple\n"; -echo "**********************\n\n"; -foreach ($data as $value) { - $res = Validate::multiple($value, $types); - foreach ($value as $fld=>$val) { - echo "{$fld}: {$val} =>".(isset($res[$fld])? $noYes[$res[$fld]]: 'null')."\n"; - } - echo "*****************************************\n\n"; -} - -?> ---EXPECT-- -Test Validate_Multiple -********************** - -myemail: webmaster@google.com =>YES -myemail1: webmaster.@google.com =>NO -no: -8 =>YES -teststring: PEARrocks =>YES -date: 12121996 =>YES -cc_no: 6762 1955 1506 1813 =>YES -***************************************** - diff --git a/tests/multiple.phpt b/tests/multiple.phpt deleted file mode 100644 index 883100a..0000000 --- a/tests/multiple.phpt +++ /dev/null @@ -1,53 +0,0 @@ ---TEST-- -multiple.phpt: Unit tests for 'Validate.php' without extension (credit card) ---FILE-- - array('type' => 'email'), - 'myemail1' => array('type' => 'email'), - 'no' => array('type' => 'number', array('min' => -8, 'max' => -7)), - 'teststring' => array('type' => 'string', array('format' => VALIDATE_ALPHA)), - 'test10844' => array('type' => 'string', 'format' => '0-9'), - 'date' => array('type' => 'date', array('format' => '%d%m%Y')) -); - -$data = array( - array( - 'myemail' => 'webmaster@google.com', // OK - 'myemail1' => 'webmaster.@google.com', // NOK - 'no' => '-8', // OK - 'teststring' => 'PEARrocks', // OK - 'test10844' => 'dsfasdf', // NOK - 'date' => '12121996' // OK - ) -); - -echo "Test Validate_Multiple\n"; -echo "**********************\n\n"; -foreach ($data as $value) { - $res = Validate::multiple($value, $types); - foreach ($value as $fld=>$val) { - echo "{$fld}: {$val} =>".(isset($res[$fld])? $noYes[$res[$fld]]: 'null')."\n"; - } - echo "*****************************************\n\n"; -} - -?> ---EXPECT-- -Test Validate_Multiple -********************** - -myemail: webmaster@google.com =>YES -myemail1: webmaster.@google.com =>NO -no: -8 =>YES -teststring: PEARrocks =>YES -test10844: dsfasdf =>NO -date: 12121996 =>YES -***************************************** - diff --git a/tests/number.phpt b/tests/number.phpt deleted file mode 100644 index 2f15fb7..0000000 --- a/tests/number.phpt +++ /dev/null @@ -1,52 +0,0 @@ ---TEST-- -number.phpt: Unit tests for 'Validate.php' ---FILE-- -','), // NOK - array('-8.0', 'decimal'=>','), // NOK - array('-8,0', 'decimal'=>',', 'dec_prec'=>2), // OK - array(8.0004, 'decimal'=>'.', 'dec_prec'=>3), // NOK - array(8.0004, 'decimal'=>'.', 'dec_prec'=>4), // OK - array('-8', 'min'=>1, 'max'=>9), // NOK - array('-8', 'min'=>-8, 'max'=>-7), // OK - array('-8.02', 'decimal'=>'.', 'min'=>-8, 'max'=>-7), // NOK - array('-8.02', 'decimal'=>'.', 'min'=>-9, 'max'=>-7), // OK - array('-8.02', 'decimal'=>'.,','min'=>-9, 'max'=>-7) // OK -); - -foreach($numbers as $data) { - $number = array_shift($data); - echo "{$number} ("; - foreach ($data as $key=>$val) { - echo "{$key}=>{$val} "; - } - echo "): ".$noYes[Validate::number($number,$data)]."\n"; -} -?> ---EXPECT-- -Test Validate_Number -******************** -8 (): YES --8 (): YES --8 (): YES --8, (decimal=>, ): NO --8.0 (decimal=>, ): NO --8,0 (decimal=>, dec_prec=>2 ): YES -8.0004 (decimal=>. dec_prec=>3 ): NO -8.0004 (decimal=>. dec_prec=>4 ): YES --8 (min=>1 max=>9 ): NO --8 (min=>-8 max=>-7 ): YES --8.02 (decimal=>. min=>-8 max=>-7 ): NO --8.02 (decimal=>. min=>-9 max=>-7 ): YES --8.02 (decimal=>., min=>-9 max=>-7 ): YES diff --git a/tests/rfc822nok.phpt b/tests/rfc822nok.phpt deleted file mode 100644 index adae1b5..0000000 --- a/tests/rfc822nok.phpt +++ /dev/null @@ -1,40 +0,0 @@ ---TEST-- -Tests for rfc822 emails (malformed) -$Id$ ---ARGS-- -2>&1 < - -# left over as for 0.6.3, this "(fo(o)" is considered ok in our parser -# but should certainly not according to rfc822 well formed comments (missing closing) -Abigail - -Abigail -"Abi"gail" -abigail@[exa]ple.com] -abigail@[exa[ple.com] -abigail@[exaple].com] -abigail@ -@example.com -phrase: abigail@example.com abigail@example.com ; -invalid£char@example.com -INVALIDS -user@yahoo..com ---FILE-- - true))) { - echo $email . " failed\n"; - } -} -?> ---EXPECT-- diff --git a/tests/rfc822ok.phpt b/tests/rfc822ok.phpt deleted file mode 100644 index 645f7af..0000000 --- a/tests/rfc822ok.phpt +++ /dev/null @@ -1,63 +0,0 @@ ---TEST-- -Tests for rfc822 emails (well-formed) -$Id$ ---ARGS-- -2>&1 < -Abigail -Abigail<@a,@b,@c:abigail@example.com> -"This is a phrase" -"Abigail " -"Joe & J. Harvey" -Abigail -Abigail made this < abigail @ example . com > -Abigail(the bitch)@example.com -Abigail -Abigail < (one) abigail (two) @(three)example . (bar) com (quz) > -Abigail (foo) (((baz)(nested) (comment)) ! ) < (one) abigail (two) @(three)example . (bar) com (quz) > -Abigail -Abigail -(foo) abigail@example.com -abigail@example.com (foo) -"Abi\"gail" -abigail@[example.com] -abigail@[exa\[ple.com] -abigail@[exa\]ple.com] -":sysmail"@ Some-Group. Some-Org -Muhammed.(I am the greatest) Ali @(the)Vegas.WBA -mailbox.sub1.sub2@this-domain -sub-net.mailbox@sub-domain.domain -name:; -':; -name: ; -Alfred Neuman -Neuman@BBN-TENEXA -"George, Ted" -Wilt . (the Stilt) Chamberlain@NBA.US -Cruisers: Port@Portugal, Jones@SEA; -\$@[] -*()@[] -"quoted ( brackets" ( a comment )@example.com -VALIDS ---FILE-- - true))) { - echo $email . " failed\n"; - } -} -?> ---EXPECT-- diff --git a/tests/testdate.phpt b/tests/testdate.phpt deleted file mode 100644 index 4b4084f..0000000 --- a/tests/testdate.phpt +++ /dev/null @@ -1,98 +0,0 @@ ---TEST-- -testdate.phpt: Unit tests for 'Validate.php' ---INI-- -date.timezone=UTC ---FILE-- -'%d%m%y'), // OK - array('21202', 'format'=>'%d%m%y'), // NOK - array('02122', 'format'=>'%y%m%d'), // NOK - array('02229', 'format'=>'%y%d%m'), // NOK - array('121402', 'format'=>'%d%m%y'), // NOK - array('12120001', 'format'=>'%d%m%Y'), // OK - - /* Ambiguous date >> false - * They should be still valid. Maybe by changing the loop - * 1st check for the Y (4digits), and then m (2digits) - * if you got the idea ;) - */ - array('220001', 'format'=>'%j%n%Y'), // NOK - array('2299', 'format'=>'%j%n%y'), // NOK - array('2120001', 'format'=>'%j%m%Y'), // NOK - /* End */ - - array('12121999', 'format'=>'%d%m%Y', 'min'=>array('01','01','1995')), // OK - array('12121996', 'format'=>'%d%m%Y', 'min'=>array('01','01','1995'), - 'max'=>array('01','01','1997')), // OK - array('29022002', 'format'=>'%d%m%Y'), // NOK - array('12.12.1902', 'format'=>'%d.%m.%Y'), // OK - array('12/12/1902', 'format'=>'%d/%m/%Y'), // OK - array('12/12/1902', 'format'=>'%d/%m/%Y'), // OK - array('12:12:1902', 'format'=>'%d:%m:%Y'), // OK - array('12', 'format'=>'%g'), // OK - array('12', 'format'=>'%G'), // OK - array('13:00', 'format'=>'%g:%i'), // NOK - array('24:59', 'format'=>'%G:%i'), // OK - array('25:00', 'format'=>'%G:%i'), // NOK - array('25:00', 'format'=>'%G:%i:%s'), // NOK - array('121902', 'format'=>'%m%Y'), // OK - array('13120001', 'format'=>'%d%m%Y') // OK -); - -echo "\nTest dates\n"; -foreach ($dates as $data){ - $date = array_shift($data); - echo "{$date} ("; - foreach ($data as $key=>$val) { - if (is_array($val)) { - echo "{$key}=>[ "; - foreach($val as $elt) { - echo "{$elt} "; - } - echo "] "; - } else { - echo "{$key}=>{$val} "; - } - } - echo "): ".$noYes[Validate::date($date, $data)]."\n"; -} -?> ---EXPECT-- -Test Validate_Date -****************** - -Test dates -121202 (format=>%d%m%y ): YES -21202 (format=>%d%m%y ): NO -02122 (format=>%y%m%d ): NO -02229 (format=>%y%d%m ): NO -121402 (format=>%d%m%y ): NO -12120001 (format=>%d%m%Y ): YES -220001 (format=>%j%n%Y ): NO -2299 (format=>%j%n%y ): NO -2120001 (format=>%j%m%Y ): NO -12121999 (format=>%d%m%Y min=>[ 01 01 1995 ] ): YES -12121996 (format=>%d%m%Y min=>[ 01 01 1995 ] max=>[ 01 01 1997 ] ): YES -29022002 (format=>%d%m%Y ): NO -12.12.1902 (format=>%d.%m.%Y ): YES -12/12/1902 (format=>%d/%m/%Y ): YES -12/12/1902 (format=>%d/%m/%Y ): YES -12:12:1902 (format=>%d:%m:%Y ): YES -12 (format=>%g ): YES -12 (format=>%G ): YES -13:00 (format=>%g:%i ): NO -24:59 (format=>%G:%i ): YES -25:00 (format=>%G:%i ): NO -25:00 (format=>%G:%i:%s ): NO -121902 (format=>%m%Y ): YES -13120001 (format=>%d%m%Y ): YES diff --git a/tests/testdate_minmax.phpt b/tests/testdate_minmax.phpt deleted file mode 100644 index 9f7822d..0000000 --- a/tests/testdate_minmax.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Unit tests for date() with min / max functionality ---INI-- -date.timezone=UTC ---SKIPIF-- - ---FILE-- -'%d%m%Y', 'min' => new Date('19950101')), // OK - array('12121996', 'format'=>'%d%m%Y', 'min' => new Date('19970101')), // NOK - array('10101994', 'format'=>'%d%m%Y', 'max' => new Date('2005-04-27 06:24:05')), // OK - array('11111994', 'format'=>'%d%m%Y', 'max' => new Date('19920101')), // NOK - array('12121996', 'format'=>'%d%m%Y', - 'min' => new Date('19950101'), 'max' => new Date('2005-04-27 06:24:05')) // OK -); - -echo "\nTest dates with min max object\n"; -foreach ($dateObjects as $data){ - $date = array_shift($data); - echo "{$date} ("; - foreach ($data as $key=>$val) { - if (($key == 'min') or ($key == 'max')) { - echo "{$key}=>".$val->getDate()." "; - } else { - echo "{$key}=>{$val} "; - } - } - echo "): ".$noYes[Validate::date($date, $data)]."\n"; -} -?> ---EXPECT-- -Test Validate_Date -****************** - -Test dates with min max object -11111996 (format=>%d%m%Y min=>1995-01-01 00:00:00 ): YES -12121996 (format=>%d%m%Y min=>1997-01-01 00:00:00 ): NO -10101994 (format=>%d%m%Y max=>2005-04-27 06:24:05 ): YES -11111994 (format=>%d%m%Y max=>1992-01-01 00:00:00 ): NO -12121996 (format=>%d%m%Y min=>1995-01-01 00:00:00 max=>2005-04-27 06:24:05 ): YES diff --git a/tests/uri.phpt b/tests/uri.phpt deleted file mode 100644 index 07d6185..0000000 --- a/tests/uri.phpt +++ /dev/null @@ -1,87 +0,0 @@ ---TEST-- -uri.phpt: Unit tests for Validate::uri() ---FILE-- - array('ftp', 'http')), // NOK - array('http://example.org', 'allowed_schemes' => array('ftp', 'http')), // OK - array( - '//example.org/tkik-wkik_rss.php?ver=2http://www.hyperlecture.info//http://www.hyperlecture.info/accueil', - 'strict' => ''), // OK -/* the bjori's sequence */ - 'http://domain.tld//', // OK - 'http://domain.tld/.', // OK - 'http://domain.tld/./folder/.././/.folder/subfolder/../../', // OK - 'http://domain.tld//./' // OK - ); - -foreach ($uris as $uri) { - if (is_array($uri)) { - $options = $uri; - unset($options[0]); - echo "{$uri[0]}: schemes(" . - (isset($options['allowed_schemes']) ? - implode(',', $options['allowed_schemes']) : '') .") with". - (isset($options['domain_check']) && $options['domain_check'] ? - '' : 'out') . ' domain check : '. - (isset($options['strict']) ? "(strict : {$options['strict']}) " : '') . - $noYes[Validate::uri($uri[0], $options )]."\n"; - } else { - echo "{$uri}: ". - $noYes[Validate::uri($uri)]."\n"; - } -} -?> ---EXPECT-- -Test Validate::uri() -not @ goodurl123: NO -http://www.example.com//: YES -http://www.example.com/: YES -http://www.ics.uci.edu/pub/ietf/uri/#Related: YES -http://user:password@www.ics.uci.edu:8080/pub/ietf/uri;rfc2396?test=ok&end=next#Related: YES -//127.0.0.1: YES -//127.0.333.1: NO -http://user:password@127.0.0.1:8080/pub/ietf/uri;rfc2396?test=ok&end=next#Related: YES -127.0.0.1: NO -//example.org/tkik-wkik_rss.php?ver=2http://www.hyperlecture.info//http://www.hyperlecture.info/accueil: NO -//example-minus.com: YES -//example.co-m: NO -//example-.com: NO -//-example.com: NO -//-.com: NO -//example.-com: NO -//-example.com-: NO -//example.org: schemes(ftp,http) without domain check : NO -http://example.org: schemes(ftp,http) without domain check : YES -//example.org/tkik-wkik_rss.php?ver=2http://www.hyperlecture.info//http://www.hyperlecture.info/accueil: schemes() without domain check : (strict : ) YES -http://domain.tld//: YES -http://domain.tld/.: YES -http://domain.tld/./folder/.././/.folder/subfolder/../../: YES -http://domain.tld//./: YES diff --git a/tests/uri_domaincheck.phpt b/tests/uri_domaincheck.phpt deleted file mode 100644 index d562ac7..0000000 --- a/tests/uri_domaincheck.phpt +++ /dev/null @@ -1,48 +0,0 @@ ---TEST-- -domaincheck.phpt: Unit tests for uri validation with dns check ---SKIPIF-- - ---FILE-- - true), // OK - array('//example.gor', 'domain_check' => true), // NOK - // Try schemes lookup - array('http://php.net', 'allowed_schemes' => array('ftp', 'http'), - 'domain_check' => true) // OK - ); - -foreach ($uris as $uri) { - if (is_array($uri)) { - $options = $uri; - unset($options[0]); - echo "{$uri[0]}: schemes(" . - (isset($options['allowed_schemes']) ? - implode(',', $options['allowed_schemes']) : '') .") with". - (isset($options['domain_check']) && $options['domain_check'] ? - '' : 'out') . ' domain check : '. - (isset($options['strict']) ? "(strict : {$options['strict']}) " : '') . - $noYes[Validate::uri($uri[0], $options )]."\n"; - } else { - echo "{$uri}: ". - $noYes[Validate::uri($uri)]."\n"; - } -} -?> ---EXPECT-- -Test Validate::uri() -//php.net: schemes() with domain check : YES -//example.gor: schemes() with domain check : NO -http://php.net: schemes(ftp,http) with domain check : YES diff --git a/tests/validate_IR_alphaNumeric.phpt b/tests/validate_IR_alphaNumeric.phpt deleted file mode 100644 index 63f0dcd..0000000 --- a/tests/validate_IR_alphaNumeric.phpt +++ /dev/null @@ -1,48 +0,0 @@ ---TEST-- -alphaNumeric.phpt: Unit tests for ---FILE-- - 4) { - try { - echo $noYes[Validate_IR::alphaNumeric($string)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate_IR::alphaNumeric($string)]."\n"; - } -} -?> ---EXPECT-- -Test alphaNumeric -آزمایش ۱۲۳۴۵۶۷۸۹۰: YES -آزمایش 1234567890: YES -هِمّت بُلَند دار کِه مَردانِ روزگار اَز همّتِ بُلَند به جایی رسیده‌اَند: YES -﷼: YES -teststring: NO -test1234567890: NO -test آزمایش: NO diff --git a/tests/validate_IR_creditCard.phpt b/tests/validate_IR_creditCard.phpt deleted file mode 100644 index 02f8e5e..0000000 --- a/tests/validate_IR_creditCard.phpt +++ /dev/null @@ -1,44 +0,0 @@ ---TEST-- -creditCard.phpt: Unit tests for ---FILE-- - 4) { - try { - echo $noYes[Validate_IR::creditCard($string)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate_IR::creditCard($string)]."\n"; - } -} -?> ---EXPECT-- -Test creditCard -1111222233334444: YES -1111-2222-3333-4444: YES -teststring: NO -1111: NO -111-122-223-333-444-4: NO diff --git a/tests/validate_IR_mobileNumber.phpt b/tests/validate_IR_mobileNumber.phpt deleted file mode 100644 index 29b9948..0000000 --- a/tests/validate_IR_mobileNumber.phpt +++ /dev/null @@ -1,60 +0,0 @@ ---TEST-- -mobileNumber.phpt: Unit tests for ---FILE-- - 4) { - try { - echo $noYes[Validate_IR::mobileNumber($string)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate_IR::mobileNumber($string)]."\n"; - } -} -?> ---EXPECT-- -Test mobileNumber -989123334444: YES -00989353334444: YES -+989363334444: YES -+98 9373334444: YES -(+98) 9383334444: YES -+98-9323334444: YES -teststring: NO -999123334444: NO -+999353334444: NO -00999363334444: NO -000989373334444: NO -+00989383334444: NO -+0989323334444: NO diff --git a/tests/validate_IR_numeric.phpt b/tests/validate_IR_numeric.phpt deleted file mode 100644 index 47cbbce..0000000 --- a/tests/validate_IR_numeric.phpt +++ /dev/null @@ -1,42 +0,0 @@ ---TEST-- -numeric.phpt: Unit tests for ---FILE-- - 4) { - try { - echo $noYes[Validate_IR::numeric($string)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate_IR::numeric($string)]."\n"; - } -} -?> ---EXPECT-- -Test numeric -۱۲۳۴۵۶۷۸۹۰: YES -teststring: NO -1234567890: NO -١٢٣٤٥٦٧٨٩٠: NO diff --git a/tests/validate_IR_phoneNumber.phpt b/tests/validate_IR_phoneNumber.phpt deleted file mode 100644 index 3d43a7b..0000000 --- a/tests/validate_IR_phoneNumber.phpt +++ /dev/null @@ -1,80 +0,0 @@ ---TEST-- -mobileNumber.phpt: Unit tests for ---FILE-- - 4) { - try { - echo $noYes[Validate_IR::phoneNumber($string)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate_IR::phoneNumber($string)]."\n"; - } -} -?> ---EXPECT-- -Test phoneNumber -982133334444: YES -00982133334444: YES -+982133334444: YES -+98 2133334444: YES -+98 21 33334444: YES -+98-21-33334444: YES -(+98) (21) (33334444): YES -02133334444: YES -021 33334444: YES -021 33334444: YES -(021) (118): YES -0411 3334444: YES -(0411) (3334444): YES -teststring: NO -992133334444: NO -+992133334444: NO -00992133334444: NO -000982133334444: NO -+00982133334444: NO -+0982133334444: NO -+98/21/33334444: NO -+02133334444: NO -021 22: NO diff --git a/tests/validate_IR_postalCode.phpt b/tests/validate_IR_postalCode.phpt deleted file mode 100644 index 300dbe5..0000000 --- a/tests/validate_IR_postalCode.phpt +++ /dev/null @@ -1,40 +0,0 @@ ---TEST-- -postalCode.phpt: Unit tests for ---FILE-- - 4) { - try { - echo $noYes[Validate_IR::postalCode($string)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate_IR::postalCode($string)]."\n"; - } -} -?> ---EXPECT-- -Test postalCode -1234567890: YES -teststring: NO -123456789: NO diff --git a/tests/validate_IR_ssn.phpt b/tests/validate_IR_ssn.phpt deleted file mode 100644 index 731e6c9..0000000 --- a/tests/validate_IR_ssn.phpt +++ /dev/null @@ -1,50 +0,0 @@ ---TEST-- -ssn.phpt: Unit tests for ---FILE-- - 4) { - try { - echo $noYes[Validate_IR::ssn($string)]."\n"; - } catch (Exception $e) { - echo $e->getMessage()."\n"; - } - } else { - echo $noYes[Validate_IR::ssn($string)]."\n"; - } -} -?> ---EXPECT-- -Test ssn -9876543210: YES -1234567891: YES -0324354657: YES -teststring: NO -1234567890: NO -3333333333: NO -0324354654: NO -12345: NO diff --git a/tests/validate_esMX.phpt b/tests/validate_esMX.phpt deleted file mode 100644 index d4031cb..0000000 --- a/tests/validate_esMX.phpt +++ /dev/null @@ -1,157 +0,0 @@ ---TEST-- -validate_esMX.phpt: Unit tests for validate_esMX - ---FILE-- -postalCode($code, false, $postcodes_dir)]."\n"; -} - -echo "\nTest postalCode (strong)\n"; -foreach($postalCodes as $code) { - echo $code . ':' . $noYes[$validate->postalCode($code, true, $postcodes_dir)]."\n"; -} - -$dnis = array( - 'AAPR630321HDFLRC09', //YES - 'AAPR630321HDFLRC04', //NO - 'ACPR630321HDFLRC09', //NO - 'AAPR630321LDFLRC09', //NO - 'AAPR630321HIOLRC49', //NO - 'OIBR780920HDFRNN09', //YES - 'GIBR780920HDFRNN09', // - 'OMBR780920HDFRNN09', //NO - 'ACPR63032', //NO - 'xxxxxxxxxxxxxxxxxx', //NO - '', //NO - ); - -echo "\nTest dnis\n"; -foreach($dnis as $dni) { - echo $dni . ':' . $noYes[$validate->dni($dni)]."\n"; -} - -$phones = array( - '56 16 15 60', //YES - '56220565', //YES - '213 6076', //YES - '414 33 33', //YES - '5063-3000', //YES - '506303000', //NO - '(50)3000', //NO - '(998)884 52 52', //NO - '413-7452', //YES - ); -echo "\nTest phones (no area code)\n"; -foreach($phones as $phone) { - echo $phone . ':' . $noYes[$validate->phone($phone, false)]."\n"; -} - -$phones = array( - '01 (614) 413-7474', //YES - '01 59 7 54 7 14 43', //YES - '(614) 414 52 97', //NO - '01 444 811 66 66', //YES - '01 77 73 29 40 66', //YES - '56220565', //NO - '213 6076', //NO - '414 33 33', //NO - ); - -echo "\nTest phones (with area code)\n"; -foreach($phones as $phone) { - echo $phone . ':' . $noYes[$validate->phone($phone, true)]."\n"; -} -exit(0); -?> - ---EXPECT-- -Test Validate_esMX -**************** -Test postalCode -061444:NO -0434 5:NO -423dd4:NO -68405:YES -06140:YES -:NO - :NO -63783:YES -15490:YES -75684:YES - -Test postalCode (strong) -061444:NO -0434 5:NO -423dd4:NO -68405:YES -06140:YES -:NO - :NO -63783:YES -15490:NO -75684:NO - -Test dnis -AAPR630321HDFLRC09:YES -AAPR630321HDFLRC04:NO -ACPR630321HDFLRC09:NO -AAPR630321LDFLRC09:NO -AAPR630321HIOLRC49:NO -OIBR780920HDFRNN09:YES -GIBR780920HDFRNN09:NO -OMBR780920HDFRNN09:NO -ACPR63032:NO -xxxxxxxxxxxxxxxxxx:NO -:NO - -Test phones (no area code) -56 16 15 60:YES -56220565:YES -213 6076:YES -414 33 33:YES -5063-3000:YES -506303000:NO -(50)3000:NO -(998)884 52 52:NO -413-7452:YES - -Test phones (with area code) -01 (614) 413-7474:YES -01 59 7 54 7 14 43:YES -(614) 414 52 97:NO -01 444 811 66 66:YES -01 77 73 29 40 66:YES -56220565:NO -213 6076:NO -414 33 33:NO diff --git a/tests/validate_functions.inc b/tests/validate_functions.inc deleted file mode 100644 index 404291d..0000000 --- a/tests/validate_functions.inc +++ /dev/null @@ -1,42 +0,0 @@ - $resultWaited) { - if ((is_array($func_name) && - method_exists($func_name[0],$func_name[1])) || - function_exists($func_name)) { - $result = $noYes[call_user_func_array($func_name,array_merge(array($value),$scndParam))]; - } else { - echo 'Not found ' . implode('::',$func_name); - } - - echo ($resultWaited == $result ? ' V ' : '!X!') . - str_pad($value, 20) . " : ".$resultWaited . ' ' . $result ."\n"; - - } - return ($resultWaited != $result ); - -} - -?>