diff options
author | Stefan Wintermeyer <stefan.wintermeyer@amooma.de> | 2012-12-17 12:01:45 +0100 |
---|---|---|
committer | Stefan Wintermeyer <stefan.wintermeyer@amooma.de> | 2012-12-17 12:01:45 +0100 |
commit | b80bd744ad873f6fc43018bc4bfb90677de167bd (patch) | |
tree | 072c4b0e33d442528555b82c415f5e7a1712b2b0 /lib | |
parent | 3e706c2025ecc5523e81ad649639ef2ff75e7bac (diff) |
Start of GS5.
Diffstat (limited to 'lib')
107 files changed, 9092 insertions, 0 deletions
diff --git a/lib/activerecord_extensions.rb b/lib/activerecord_extensions.rb new file mode 100644 index 0000000..50c44be --- /dev/null +++ b/lib/activerecord_extensions.rb @@ -0,0 +1,72 @@ +class ActiveRecord::Base + + before_validation :populate_uuid, :on => :create + before_validation :populate_gs_node_id, :on => :create + + # Set a UUID. + # + def populate_uuid + if self.attribute_names.include?('uuid') && self.uuid.blank? + uuid = UUID.new + self.uuid = uuid.generate + end + end + + # Set the gs_node_id if not already set. + # + def populate_gs_node_id + if self.attribute_names.include?('gs_node_id') && self.gs_node_id.blank? + self.gs_node_id = GsNode.where(:ip_address => HOMEBASE_IP_ADDRESS).first.try(:id) + end + end + + # Create a new GsClusterSyncLogEntry. + # This will be populated automatically to GsNode.all.where(...) + # + def create_on_other_gs_nodes(association_method = nil, association_uuid = nil) + action_on_other_gs_nodes('create', self.to_json, nil, association_method, association_uuid) + end + + def destroy_on_other_gs_nodes + action_on_other_gs_nodes('destroy', self.to_json) + end + + def update_on_other_gs_nodes(association_method = nil, association_uuid = nil) + action_on_other_gs_nodes('update', self.changes.to_json, 'Changed: ' + self.changed.to_json, association_method, association_uuid) + end + + def action_on_other_gs_nodes(action, content, history = nil, association_method = nil, association_uuid = nil) + # One doesn't make sense without the other. + # + if association_method.blank? || association_uuid.blank? + association_method = nil + association_uuid = nil + end + history = nil if history.blank? + if !self.attribute_names.include?('is_native') + logger.error "Couldn't #{action} #{self.class} with the ID #{self.id} on other GsNodes because #{self.class} doesn't have a is_native attribute." + else + if self.is_native != false + if defined? WRITE_GS_CLUSTER_SYNC_LOG && WRITE_GS_CLUSTER_SYNC_LOG == true + if !(defined? $gs_cluster_loop_protection) || $gs_cluster_loop_protection != true + begin + GsClusterSyncLogEntry.create( + :class_name => self.class.name, + :action => action, + :content => content, + :history => history, + :homebase_ip_address => HOMEBASE_IP_ADDRESS, + :waiting_to_be_synced => true, + :association_method => association_method, + :association_uuid => association_uuid + ) + rescue + logger.error "Couldn't add action: #{action} for #{self.class} with the ID #{self.id} to gs_cluster_log_entries." + end + end + end + end + end + end + +end
\ No newline at end of file diff --git a/lib/agi_server.rb b/lib/agi_server.rb new file mode 100644 index 0000000..29c06c4 --- /dev/null +++ b/lib/agi_server.rb @@ -0,0 +1,123 @@ +module AGIServer + DEFAULT_AGI_SERVER_HOST = nil + DEFAULT_AGI_SERVER_PORT = 4573 + + def self.log_debug(message) + puts "DEBUG-AGI-Server: #{message.to_s}" + #Rails.logger.debug "AGI-Server: #{message}" + end + + def self.log_error(message) + puts "ERROR-AGI-Server: #{message.to_s}" + #Rails.logger.error "AGI-Server: #{message}" + end + + class Client + AGI_AVAILABLE_METHODS = ['directory_lookup'] + @client = nil + @options = nil + + def set_variable(variable_name, variable_value) + if !@client + return false + end + @client.puts "SET VARIABLE #{variable_name.to_s} \"#{variable_value.to_s}\"" + end + + def directory_lookup + number = @options['agi_arg_1'].to_s.gsub(/[^0-9A-Za-z\*_-]/, '') + number_type = @options['agi_arg_3'].to_s + client_id = @options['agi_arg_2'].to_i + + if number.blank? + number = @options['agi_dnid'].to_s.gsub(/[^0-9A-Za-z\*_-]/, '') + number_type = "unknown" + client_id = 1 + end + + if client_id > 0 + if number != "" + phone_number = PhoneNumber.where(:number => number, :phone_numberable_type => "SipAccount").first + if phone_number.blank? + set_variable(:directory_status, 'unknown') + set_variable(:directory_message, 'Number not found in directory') + return nil + end + + set_variable(:directory_status, 'exact_match') + set_variable(:directory_message, 'Exact match') + set_variable(:directory_number_type, phone_number.phone_numberable_type) + set_variable(:directory_number_destination, phone_number.phone_numberable.to_s) + set_variable(:directory_number_host, "1") + set_variable(:directory_number_name, phone_number.name) + set_variable(:directory_number_number, phone_number.number) + set_variable(:directory_number_country_code, phone_number.country_code) + set_variable(:directory_number_area_code, phone_number.area_code) + set_variable(:directory_number_central_office_code, phone_number.central_office_code) + set_variable(:directory_number_subscriber_number, phone_number.subscriber_number) + set_variable(:directory_number_extension, phone_number.extension) + + if phone_number.phone_numberable_type == "SipAccount" + set_variable(:directory_caller_name, phone_number.phone_numberable.caller_name) + end + else + set_variable(:directory_status, 'error') + set_variable(:directory_message, 'No number specified') + end + else + set_variable(:directory_status, 'error') + set_variable(:directory_message, 'No ID') + end + end + + def handler(client) + @client = client + @options = Hash.new + while @client + buffer = @client.gets().strip + if buffer == "" + if @options['agi_network_script'] && AGI_AVAILABLE_METHODS.include?(@options['agi_network_script'].to_s.downcase) + self.send(@options['agi_network_script'].to_s.downcase) + end + break + elsif buffer =~ /^.*:\s/ + key, value = buffer.split(': ') + @options[key]= value + end + end + @client.close + end + end + + def self.server( host = DEFAULT_AGI_SERVER_HOST, port = DEFAULT_AGI_SERVER_PORT ) + + log_debug("Starting server process.") + require 'socket' + server = TCPServer.open(4573) + if server + run_server = true + end + + client_handler_id = 0 + while run_server + log_debug("Server listening on: #{server.local_address.ip_address}:#{server.local_address.ip_port}") + + Thread.start(server.accept) do |client| + remote_ip = client.remote_address.ip_address + remote_port = client.remote_address.ip_port + + begin + client_handler = Client.new + client_handler_id = client_handler.object_id + log_debug("[#{client_handler_id}] Connection opened: #{remote_ip}:#{remote_port}") + client_handler.handler(client) + log_debug("[#{client_handler_id}] Connection closed: #{remote_ip}:#{remote_port}") + rescue => e + log_error("[#{client_handler_id}] #{e.class.to_s}: #{e.to_s}, closing connection: #{remote_ip}:#{remote_port}") + ensure + client.close() + end + end + end + end +end diff --git a/lib/assets/.gitkeep b/lib/assets/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/lib/assets/.gitkeep diff --git a/lib/freeswitch_event.rb b/lib/freeswitch_event.rb new file mode 100644 index 0000000..b6e5cbc --- /dev/null +++ b/lib/freeswitch_event.rb @@ -0,0 +1,133 @@ +class FreeswitchEventSocket + DEFAULT_HOST = "127.0.0.1" + DEFAULT_PORT = 8021 + DEFAULT_PASSWORD = "ClueCon" + DEFAULT_SOCKET_TIMEOUT = 20 + @socket = nil + + def auth(password) + self.command("auth #{password}") + result = self.result() + + if result && result["Reply-Text"] == "+OK accepted" + return true + end + return false + end + + def connect(password = DEFAULT_PASSWORD, event_host = DEFAULT_HOST, event_port = DEFAULT_PORT) + begin + @socket = TCPSocket.open(event_host, event_port) + rescue + return false + end + + if not @socket + return false + end + + result = self.result() + if result && result["Content-Type"] == "auth/request" then + if not self.auth(password) + return false + end + end + + return true + end + + def command(command) + @socket.puts("#{command}\n\n") + end + + def close() + @socket.close + end + + def read() + return @socket.recv(1024) + end + + def result() + reply = self.read() + if reply.class == String + message = Hash.new() + header, body = reply.split("\n\n", 2) + if ! body.blank? + message['_BODY'] = body + end + header.split("\n").each do |line| + key, value = line.split(/\: */, 2) + message[key] = value + end + return message + end + return nil + end +end + +class FreeswitchEvent + def initialize(event_type) + @event_type = event_type + @event_header = Array.new() + @event_body = nil + @event_header.push("sendevent #{@event_type}") + end + + def add_header(name, value) + @event_header.push("#{name}: #{value}") + end + + def add_body(body) + @event_body = body + end + + def fire() + if @event_body && @event_body.length > 0 + self.add_header("content-length", @event_body.length); + end + + event = FreeswitchEventSocket.new() + if event && event.connect() + event.command(@event_header.join("\n")) + event.command( @event_body) + result = event.result() + event.close() + + if result && result["Reply-Text"] == "+OK" + return true + end + end + return false + end +end + +class FreeswitchAPI + def self.execute(command, arguments, bgapi = false) + + event = FreeswitchEventSocket.new() + if event && event.connect() + api = bgapi ? 'bgapi' : 'api' + event.command( "#{api} #{command} #{arguments}") + result = event.result() + if result && result["Content-Type"] == 'api/response' && result["_BODY"].blank? + result = event.result() + end + event.close() + + if result + if result.has_key?('Reply-Text') && result['Reply-Text'] =~ /^\+OK/ + if result.has_key?('Job-UUID') && ! result['Job-UUID'].blank? + return result['Job-UUID']; + else + return true; + end + elsif result.has_key?('_BODY') && result['_BODY'] =~ /^\+OK/ + return true; + end + end + end + + return false + end +end diff --git a/lib/generators/nifty.rb b/lib/generators/nifty.rb new file mode 100644 index 0000000..1c3d6d7 --- /dev/null +++ b/lib/generators/nifty.rb @@ -0,0 +1,28 @@ +require 'rails/generators/base' + +module Nifty + module Generators + class Base < Rails::Generators::Base #:nodoc: + def self.source_root + @_nifty_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'nifty', generator_name, 'templates')) + end + + def self.banner + "rails generate nifty:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]" + end + + private + + def add_gem(name, options = {}) + gemfile_content = File.read(destination_path("Gemfile")) + File.open(destination_path("Gemfile"), 'a') { |f| f.write("\n") } unless gemfile_content =~ /\n\Z/ + gem name, options unless gemfile_content.include? name + end + + def print_usage + self.class.help(Thor::Base.shell.new) + exit + end + end + end +end diff --git a/lib/generators/nifty/authentication/USAGE b/lib/generators/nifty/authentication/USAGE new file mode 100644 index 0000000..89f0a64 --- /dev/null +++ b/lib/generators/nifty/authentication/USAGE @@ -0,0 +1,50 @@ +Description: + Generates a user model, users controller, and sessions controller. The + users controller handles the registration and the sessions controller + handles authentication. This is similar to restful_authentication, but + simpler. + + IMPORTANT: This generator uses the "title" helper method which is generated + by the nifty_layout generator. You may want to run that generator first. + +Usage: + If you do not pass any arguments, the model name will default to "user", and + the authentication controller will default to "session". You can override + each of these respectively by passing one or two arguments. Either name can + be CamelCased or under_scored. + + Make sure to setup the authlogic gem if you are using that option. + + gem "authlogic" # in Gemfile + +Examples: + rails generate nifty:authentication + + Creates user model, users_controller, and sessions_controller. + + rails generate nifty:authentication account + + Creates account model, accounts_controller, and sessions_controller. + + rails generate nifty:authentication Account UserSession + + Creates account model, accounts_controller, and user_sessions_controller. + +Methods: + There are several methods generated which you can use in your application. + Here's a common example of what you might add to your layout. + + <% if logged_in? %> + Welcome <%= current_user.username %>! Not you? + <%= link_to "Log out", logout_path %> + <% else %> + <%= link_to "Sign up", signup_path %> or + <%= link_to "log in", login_path %>. + <% end %> + + You can also restrict unregistered users from accessing a controller using + a before filter. For example. + + before_filter :login_required, :except => [:index, :show] + + See the generated file lib/authentication.rb for details.
\ No newline at end of file diff --git a/lib/generators/nifty/authentication/authentication_generator.rb b/lib/generators/nifty/authentication/authentication_generator.rb new file mode 100644 index 0000000..d4dcbde --- /dev/null +++ b/lib/generators/nifty/authentication/authentication_generator.rb @@ -0,0 +1,154 @@ +require 'generators/nifty' +require 'rails/generators/migration' + +module Nifty + module Generators + class AuthenticationGenerator < Base + include Rails::Generators::Migration + + argument :user_name, :type => :string, :default => 'user', :banner => 'user_name' + argument :session_name, :type => :string, :default => '[[DEFAULT]]', :banner => 'sessions_controller_name' + + class_option :testunit, :desc => 'Use test/unit for test files.', :group => 'Test framework', :type => :boolean + class_option :rspec, :desc => 'Use RSpec for test files.', :group => 'Test framework', :type => :boolean + class_option :shoulda, :desc => 'Use shoulda for test files.', :group => 'Test framework', :type => :boolean + + class_option :haml, :desc => 'Generate HAML views instead of ERB.', :type => :boolean + class_option :authlogic, :desc => 'Use Authlogic for authentication.', :type => :boolean + + def add_gems + add_gem "bcrypt-ruby", :require => "bcrypt" + add_gem "mocha", :group => :test + end + + def create_model_files + template 'user.rb', "app/models/#{user_singular_name}.rb" + template 'authlogic_session.rb', "app/models/#{user_singular_name}_session.rb" if options.authlogic? + end + + def create_controller_files + template 'users_controller.rb', "app/controllers/#{user_plural_name}_controller.rb" + template 'sessions_controller.rb', "app/controllers/#{session_plural_name}_controller.rb" + end + + def create_helper_files + template 'users_helper.rb', "app/helpers/#{user_plural_name}_helper.rb" + template 'sessions_helper.rb', "app/helpers/#{session_plural_name}_helper.rb" + end + + def create_view_files + template "views/#{view_language}/signup.html.#{view_language}", "app/views/#{user_plural_name}/new.html.#{view_language}" + template "views/#{view_language}/edit.html.#{view_language}", "app/views/#{user_plural_name}/edit.html.#{view_language}" + template "views/#{view_language}/_form.html.#{view_language}", "app/views/#{user_plural_name}/_form.html.#{view_language}" + template "views/#{view_language}/login.html.#{view_language}", "app/views/#{session_plural_name}/new.html.#{view_language}" + end + + def create_lib_files + template 'controller_authentication.rb', 'lib/controller_authentication.rb' + end + + def create_routes + route "resources #{user_plural_name.to_sym.inspect}" + route "resources #{session_plural_name.to_sym.inspect}" + route "match 'login' => '#{session_plural_name}#new', :as => :login" + route "match 'logout' => '#{session_plural_name}#destroy', :as => :logout" + route "match 'signup' => '#{user_plural_name}#new', :as => :signup" + route "match '#{user_singular_name}/edit' => '#{user_plural_name}#edit', :as => :edit_current_#{user_singular_name}" + end + + def create_migration + migration_template 'migration.rb', "db/migrate/create_#{user_plural_name}.rb" + end + + def load_and_include_authentication + inject_into_class "config/application.rb", "Application", " config.autoload_paths << \"\#{config.root}/lib\"" + inject_into_class "app/controllers/application_controller.rb", "ApplicationController", " include ControllerAuthentication\n" + end + + def create_test_files + if test_framework == :rspec + template 'fixtures.yml', "spec/fixtures/#{user_plural_name}.yml" + template 'tests/rspec/user.rb', "spec/models/#{user_singular_name}_spec.rb" + template 'tests/rspec/users_controller.rb', "spec/controllers/#{user_plural_name}_controller_spec.rb" + template 'tests/rspec/sessions_controller.rb', "spec/controllers/#{session_plural_name}_controller_spec.rb" + else + template 'fixtures.yml', "test/fixtures/#{user_plural_name}.yml" + template "tests/#{test_framework}/user.rb", "test/unit/#{user_singular_name}_test.rb" + template "tests/#{test_framework}/users_controller.rb", "test/functional/#{user_plural_name}_controller_test.rb" + template "tests/#{test_framework}/sessions_controller.rb", "test/functional/#{session_plural_name}_controller_test.rb" + end + end + + private + + def session_name + @_session_name ||= @session_name == '[[DEFAULT]]' ? + (options.authlogic? ? user_name + '_session' : 'session') : + @session_name + end + + def user_singular_name + user_name.underscore + end + + def user_plural_name + user_singular_name.pluralize + end + + def user_class_name + user_name.camelize + end + + def user_plural_class_name + user_plural_name.camelize + end + + def session_singular_name + session_name.underscore + end + + def session_plural_name + session_singular_name.pluralize + end + + def session_class_name + session_name.camelize + end + + def session_plural_class_name + session_plural_name.camelize + end + + def view_language + options.haml? ? 'haml' : 'erb' + end + + def test_framework + return @test_framework if defined?(@test_framework) + if options.testunit? + return @test_framework = :testunit + elsif options.rspec? + return @test_framework = :rspec + elsif options.shoulda? + return @test_framework = :shoulda + else + return @test_framework = File.exist?(destination_path('spec')) ? :rspec : :testunit + end + end + + def destination_path(path) + File.join(destination_root, path) + end + + # FIXME: Should be proxied to ActiveRecord::Generators::Base + # Implement the required interface for Rails::Generators::Migration. + def self.next_migration_number(dirname) #:nodoc: + if ActiveRecord::Base.timestamped_migrations + Time.now.utc.strftime("%Y%m%d%H%M%S") + else + "%.3d" % (current_migration_number(dirname) + 1) + end + end + end + end +end diff --git a/lib/generators/nifty/authentication/templates/authlogic_session.rb b/lib/generators/nifty/authentication/templates/authlogic_session.rb new file mode 100644 index 0000000..676cfd0 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/authlogic_session.rb @@ -0,0 +1,2 @@ +class <%= session_class_name %> < Authlogic::Session::Base +end diff --git a/lib/generators/nifty/authentication/templates/controller_authentication.rb b/lib/generators/nifty/authentication/templates/controller_authentication.rb new file mode 100644 index 0000000..6d34ab0 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/controller_authentication.rb @@ -0,0 +1,60 @@ +# This module is included in your application controller which makes +# several methods available to all controllers and views. Here's a +# common example you might add to your application layout file. +# +# <%% if logged_in? %> +# Welcome <%%= current_<%= user_singular_name %>.username %>. +# <%%= link_to "Edit profile", edit_current_<%= user_singular_name %>_path %> or +# <%%= link_to "Log out", logout_path %> +# <%% else %> +# <%%= link_to "Sign up", signup_path %> or +# <%%= link_to "log in", login_path %>. +# <%% end %> +# +# You can also restrict unregistered users from accessing a controller using +# a before filter. For example. +# +# before_filter :login_required, :except => [:index, :show] +module ControllerAuthentication + def self.included(controller) + controller.send :helper_method, :current_<%= user_singular_name %>, :logged_in?, :redirect_to_target_or_default + end + +<%- if options[:authlogic] -%> + def current_<%= session_singular_name %> + return @current_<%= session_singular_name %> if defined?(@current_<%= session_singular_name %>) + @current_<%= session_singular_name %> = <%= session_class_name %>.find + end + + def current_<%= user_singular_name %> + return @current_<%= user_singular_name %> if defined?(@current_<%= user_singular_name %>) + @current_<%= user_singular_name %> = current_<%= session_singular_name %> && current_<%= session_singular_name %>.record + end +<%- else -%> + def current_<%= user_singular_name %> + @current_<%= user_singular_name %> ||= <%= user_class_name %>.find(session[:<%= user_singular_name %>_id]) if session[:<%= user_singular_name %>_id] + end +<%- end -%> + + def logged_in? + current_<%= user_singular_name %> + end + + def login_required + unless logged_in? + store_target_location + redirect_to login_url, :alert => "You must first log in or sign up before accessing this page." + end + end + + def redirect_to_target_or_default(default, *args) + redirect_to(session[:return_to] || default, *args) + session[:return_to] = nil + end + + private + + def store_target_location + session[:return_to] = request.url + end +end diff --git a/lib/generators/nifty/authentication/templates/fixtures.yml b/lib/generators/nifty/authentication/templates/fixtures.yml new file mode 100644 index 0000000..c52532b --- /dev/null +++ b/lib/generators/nifty/authentication/templates/fixtures.yml @@ -0,0 +1,24 @@ +# password: "secret" +foo: + username: foo + email: foo@example.com +<%- if options[:authlogic] -%> + persistence_token: d5ddba13ed4408ea2b0a12ab18ed2d2eda086279736bdc121ca726a11f1e4b99217d9c534c2cc4ebb22729349c8c5fdbe1529e1f2c3c5859c62ef4dd9feea25c + crypted_password: 3d16c326648cccafe3d4b4cb024475c381dda92f430dfedf6f933e1f61203bacb6bae2437849bdb43b06be335e23790e4aa03902b3c28c3bbbbe27d501e521f3 + password_salt: n6z_wtpWoIsHgQb5IcFd +<%- else -%> + password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f + password_salt: bef65e058905c379436d80d1a32e7374b139e7b0 +<%- end -%> + +bar: + username: bar + email: bar@example.com +<%- if options[:authlogic] -%> + persistence_token: 19e074bd7cb506ab3e7e53e41f24f0ab3221c8cb68111f4c1aa43965114ad734233979a50a9463537487cdca18c279ac91c4bc83693d589625d446493322394c + crypted_password: 3bc9f4113ca645a186765df3d31a9352d0067bf2304ba0cdd6b08a7f3d58c6668ab1762fa3e76aef466ea2ff188399d8e6c40244fa59312bb4112292dac9f7f0 + password_salt: UiAh9ejabnKRxqsiK0xO +<%- else -%> + password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f + password_salt: bef65e058905c379436d80d1a32e7374b139e7b0 +<%- end -%> diff --git a/lib/generators/nifty/authentication/templates/migration.rb b/lib/generators/nifty/authentication/templates/migration.rb new file mode 100644 index 0000000..c945df3 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/migration.rb @@ -0,0 +1,20 @@ +class Create<%= user_plural_class_name %> < ActiveRecord::Migration + def self.up + create_table :<%= user_plural_name %> do |t| + t.string :username + t.string :email + <%- if options[:authlogic] -%> + t.string :persistence_token + t.string :crypted_password + <%- else -%> + t.string :password_hash + <%- end -%> + t.string :password_salt + t.timestamps + end + end + + def self.down + drop_table :<%= user_plural_name %> + end +end diff --git a/lib/generators/nifty/authentication/templates/sessions_controller.rb b/lib/generators/nifty/authentication/templates/sessions_controller.rb new file mode 100644 index 0000000..65e77c1 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/sessions_controller.rb @@ -0,0 +1,41 @@ +class <%= session_plural_class_name %>Controller < ApplicationController +<%- if options[:authlogic] -%> + def new + @<%= session_singular_name %> = <%= session_class_name %>.new + end + + def create + @<%= session_singular_name %> = <%= session_class_name %>.new(params[:<%= session_singular_name %>]) + if @<%= session_singular_name %>.save + redirect_to_target_or_default root_url, :notice => "Logged in successfully." + else + render :new + end + end + + def destroy + @<%= session_singular_name %> = <%= session_class_name %>.find + @<%= session_singular_name %>.destroy + redirect_to root_url, :notice => "You have been logged out." + end +<%- else -%> + def new + end + + def create + <%= user_singular_name %> = <%= user_class_name %>.authenticate(params[:login], params[:password]) + if <%= user_singular_name %> + session[:<%= user_singular_name %>_id] = <%= user_singular_name %>.id + redirect_to_target_or_default root_url, :notice => "Logged in successfully." + else + flash.now[:alert] = "Invalid login or password." + render :new + end + end + + def destroy + session[:<%= user_singular_name %>_id] = nil + redirect_to root_url, :notice => "You have been logged out." + end +<%- end -%> +end diff --git a/lib/generators/nifty/authentication/templates/sessions_helper.rb b/lib/generators/nifty/authentication/templates/sessions_helper.rb new file mode 100644 index 0000000..0958537 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/sessions_helper.rb @@ -0,0 +1,2 @@ +module <%= session_plural_class_name %>Helper +end diff --git a/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb b/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb new file mode 100644 index 0000000..e0953cc --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb @@ -0,0 +1,39 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe <%= session_plural_class_name %>Controller do + fixtures :all + render_views + + it "new action should render new template" do + get :new + response.should render_template(:new) + end + +<%- if options[:authlogic] -%> + it "create action should render new template when authentication is invalid" do + post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" } + response.should render_template(:new) + <%= session_class_name %>.find.should be_nil + end + + it "create action should redirect when authentication is valid" do + post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" } + response.should redirect_to(root_url) + <%= session_class_name %>.find.<%= user_singular_name %>.should == <%= user_plural_name %>(:foo) + end +<%- else -%> + it "create action should render new template when authentication is invalid" do + <%= user_class_name %>.stubs(:authenticate).returns(nil) + post :create + response.should render_template(:new) + session['<%= user_singular_name %>_id'].should be_nil + end + + it "create action should redirect when authentication is valid" do + <%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first) + post :create + response.should redirect_to(root_url) + session['<%= user_singular_name %>_id'].should == <%= user_class_name %>.first.id + end +<%- end -%> +end diff --git a/lib/generators/nifty/authentication/templates/tests/rspec/user.rb b/lib/generators/nifty/authentication/templates/tests/rspec/user.rb new file mode 100644 index 0000000..a3f7e92 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/rspec/user.rb @@ -0,0 +1,83 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe <%= user_class_name %> do +<%- unless options[:authlogic] -%> + def new_<%= user_singular_name %>(attributes = {}) + attributes[:username] ||= 'foo' + attributes[:email] ||= 'foo@example.com' + attributes[:password] ||= 'abc123' + attributes[:password_confirmation] ||= attributes[:password] + <%= user_class_name %>.new(attributes) + end + + before(:each) do + <%= user_class_name %>.delete_all + end + + it "should be valid" do + new_<%= user_singular_name %>.should be_valid + end + + it "should require username" do + new_<%= user_singular_name %>(:username => '').should have(1).error_on(:username) + end + + it "should require password" do + new_<%= user_singular_name %>(:password => '').should have(1).error_on(:password) + end + + it "should require well formed email" do + new_<%= user_singular_name %>(:email => 'foo@bar@example.com').should have(1).error_on(:email) + end + + it "should validate uniqueness of email" do + new_<%= user_singular_name %>(:email => 'bar@example.com').save! + new_<%= user_singular_name %>(:email => 'bar@example.com').should have(1).error_on(:email) + end + + it "should validate uniqueness of username" do + new_<%= user_singular_name %>(:username => 'uniquename').save! + new_<%= user_singular_name %>(:username => 'uniquename').should have(1).error_on(:username) + end + + it "should not allow odd characters in username" do + new_<%= user_singular_name %>(:username => 'odd ^&(@)').should have(1).error_on(:username) + end + + it "should validate password is longer than 3 characters" do + new_<%= user_singular_name %>(:password => 'bad').should have(1).error_on(:password) + end + + it "should require matching password confirmation" do + new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').should have(1).error_on(:password) + end + + it "should generate password hash and salt on create" do + <%= user_singular_name %> = new_<%= user_singular_name %> + <%= user_singular_name %>.save! + <%= user_singular_name %>.password_hash.should_not be_nil + <%= user_singular_name %>.password_salt.should_not be_nil + end + + it "should authenticate by username" do + <%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret') + <%= user_singular_name %>.save! + <%= user_class_name %>.authenticate('foobar', 'secret').should == <%= user_singular_name %> + end + + it "should authenticate by email" do + <%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret') + <%= user_singular_name %>.save! + <%= user_class_name %>.authenticate('foo@bar.com', 'secret').should == <%= user_singular_name %> + end + + it "should not authenticate bad username" do + <%= user_class_name %>.authenticate('nonexisting', 'secret').should be_nil + end + + it "should not authenticate bad password" do + new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save! + <%= user_class_name %>.authenticate('foobar', 'badpassword').should be_nil + end +<%- end -%> +end diff --git a/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb b/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb new file mode 100644 index 0000000..60bcff9 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb @@ -0,0 +1,56 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe <%= user_plural_class_name %>Controller do + fixtures :all + render_views + + it "new action should render new template" do + get :new + response.should render_template(:new) + end + + it "create action should render new template when model is invalid" do + <%= user_class_name %>.any_instance.stubs(:valid?).returns(false) + post :create + response.should render_template(:new) + end + + it "create action should redirect when model is valid" do + <%= user_class_name %>.any_instance.stubs(:valid?).returns(true) + post :create + response.should redirect_to(root_url) + <%- unless options[:authlogic] -%> + session['<%= user_singular_name %>_id'].should == assigns['<%= user_singular_name %>'].id + <%- end -%> + end + + it "edit action should redirect when not logged in" do + get :edit, :id => "ignored" + response.should redirect_to(login_url) + end + + it "edit action should render edit template" do + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + get :edit, :id => "ignored" + response.should render_template(:edit) + end + + it "update action should redirect when not logged in" do + put :update, :id => "ignored" + response.should redirect_to(login_url) + end + + it "update action should render edit template when <%= user_singular_name %> is invalid" do + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + <%= user_class_name %>.any_instance.stubs(:valid?).returns(false) + put :update, :id => "ignored" + response.should render_template(:edit) + end + + it "update action should redirect when <%= user_singular_name %> is valid" do + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + <%= user_class_name %>.any_instance.stubs(:valid?).returns(true) + put :update, :id => "ignored" + response.should redirect_to(root_url) + end +end diff --git a/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb b/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb new file mode 100644 index 0000000..e2f9005 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb @@ -0,0 +1,40 @@ +require 'test_helper' + +class <%= session_plural_class_name %>ControllerTest < ActionController::TestCase + context "new action" do + should "render new template" do + get :new + assert_template 'new' + end + end + + context "create action" do + <%- if options[:authlogic] -%> + should "render new template when authentication is invalid" do + post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" } + assert_template 'new' + assert_nil <%= session_class_name %>.find + end + + should "redirect when authentication is valid" do + post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" } + assert_redirected_to root_url + assert_equal <%= user_plural_name %>(:foo), <%= session_class_name %>.find.<%= user_singular_name %> + end + <%- else -%> + should "render new template when authentication is invalid" do + <%= user_class_name %>.stubs(:authenticate).returns(nil) + post :create + assert_template 'new' + assert_nil session['<%= user_singular_name %>_id'] + end + + should "redirect when authentication is valid" do + <%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first) + post :create + assert_redirected_to root_url + assert_equal <%= user_class_name %>.first.id, session['<%= user_singular_name %>_id'] + end + <%- end -%> + end +end diff --git a/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb b/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb new file mode 100644 index 0000000..beb8bf4 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb @@ -0,0 +1,85 @@ +require 'test_helper' + +class <%= user_class_name %>Test < ActiveSupport::TestCase +<%- unless options[:authlogic] -%> + def new_<%= user_singular_name %>(attributes = {}) + attributes[:username] ||= 'foo' + attributes[:email] ||= 'foo@example.com' + attributes[:password] ||= 'abc123' + attributes[:password_confirmation] ||= attributes[:password] + <%= user_singular_name %> = <%= user_class_name %>.new(attributes) + <%= user_singular_name %>.valid? # run validations + <%= user_singular_name %> + end + + def setup + <%= user_class_name %>.delete_all + end + + should "be valid" do + assert new_<%= user_singular_name %>.valid? + end + + should "require username" do + assert_equal ["can't be blank"], new_<%= user_singular_name %>(:username => '').errors[:username] + end + + should "require password" do + assert_equal ["can't be blank"], new_<%= user_singular_name %>(:password => '').errors[:password] + end + + should "require well formed email" do + assert_equal ["is invalid"], new_<%= user_singular_name %>(:email => 'foo@bar@example.com').errors[:email] + end + + should "validate uniqueness of email" do + new_<%= user_singular_name %>(:email => 'bar@example.com').save! + assert_equal ["has already been taken"], new_<%= user_singular_name %>(:email => 'bar@example.com').errors[:email] + end + + should "validate uniqueness of username" do + new_<%= user_singular_name %>(:username => 'uniquename').save! + assert_equal ["has already been taken"], new_<%= user_singular_name %>(:username => 'uniquename').errors[:username] + end + + should "not allow odd characters in username" do + assert_equal ["should only contain letters, numbers, or .-_@"], new_<%= user_singular_name %>(:username => 'odd ^&(@)').errors[:username] + end + + should "validate password is longer than 3 characters" do + assert_equal ["is too short (minimum is 4 characters)"], new_<%= user_singular_name %>(:password => 'bad').errors[:password] + end + + should "require matching password confirmation" do + assert_equal ["doesn't match confirmation"], new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').errors[:password] + end + + should "generate password hash and salt on create" do + <%= user_singular_name %> = new_<%= user_singular_name %> + <%= user_singular_name %>.save! + assert <%= user_singular_name %>.password_hash + assert <%= user_singular_name %>.password_salt + end + + should "authenticate by username" do + <%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret') + <%= user_singular_name %>.save! + assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foobar', 'secret') + end + + should "authenticate by email" do + <%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret') + <%= user_singular_name %>.save! + assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foo@bar.com', 'secret') + end + + should "not authenticate bad username" do + assert_nil <%= user_class_name %>.authenticate('nonexisting', 'secret') + end + + should "not authenticate bad password" do + new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save! + assert_nil <%= user_class_name %>.authenticate('foobar', 'badpassword') + end +<%- end -%> +end diff --git a/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb b/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb new file mode 100644 index 0000000..1728329 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb @@ -0,0 +1,61 @@ +require 'test_helper' + +class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase + context "new action" do + should "render new template" do + get :new + assert_template 'new' + end + end + + context "create action" do + should "render new template when <%= user_singular_name %> is invalid" do + <%= user_class_name %>.any_instance.stubs(:valid?).returns(false) + post :create + assert_template 'new' + end + + should "redirect when <%= user_singular_name %> is valid" do + <%= user_class_name %>.any_instance.stubs(:valid?).returns(true) + post :create + assert_redirected_to root_url + <%- unless options[:authlogic] -%> + assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id'] + <%- end -%> + end + end + + context "edit action" do + should "redirect when not logged in" do + get :edit, :id => "ignored" + assert_redirected_to login_url + end + + should "render edit template" do + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + get :edit, :id => "ignored" + assert_template 'edit' + end + end + + context "update action" do + should "redirect when not logged in" do + put :update, :id => "ignored" + assert_redirected_to login_url + end + + should "render edit template when <%= user_singular_name %> is invalid" do + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + <%= user_class_name %>.any_instance.stubs(:valid?).returns(false) + put :update, :id => "ignored" + assert_template 'edit' + end + + should "redirect when <%= user_singular_name %> is valid" do + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + <%= user_class_name %>.any_instance.stubs(:valid?).returns(true) + put :update, :id => "ignored" + assert_redirected_to root_url + end + end +end diff --git a/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb b/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb new file mode 100644 index 0000000..fe2a65b --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb @@ -0,0 +1,36 @@ +require 'test_helper' + +class <%= session_plural_class_name %>ControllerTest < ActionController::TestCase + def test_new + get :new + assert_template 'new' + end + +<%- if options[:authlogic] -%> + def test_create_invalid + post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" } + assert_template 'new' + assert_nil <%= session_class_name %>.find + end + + def test_create_valid + post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" } + assert_redirected_to root_url + assert_equal <%= user_plural_name %>(:foo), <%= session_class_name %>.find.<%= user_singular_name %> + end +<%- else -%> + def test_create_invalid + <%= user_class_name %>.stubs(:authenticate).returns(nil) + post :create + assert_template 'new' + assert_nil session['<%= user_singular_name %>_id'] + end + + def test_create_valid + <%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first) + post :create + assert_redirected_to root_url + assert_equal <%= user_class_name %>.first.id, session['<%= user_singular_name %>_id'] + end +<%- end -%> +end diff --git a/lib/generators/nifty/authentication/templates/tests/testunit/user.rb b/lib/generators/nifty/authentication/templates/tests/testunit/user.rb new file mode 100644 index 0000000..c036cf1 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/testunit/user.rb @@ -0,0 +1,88 @@ +require 'test_helper' + +class <%= user_class_name %>Test < ActiveSupport::TestCase +<%- unless options[:authlogic] -%> + def new_<%= user_singular_name %>(attributes = {}) + attributes[:username] ||= 'foo' + attributes[:email] ||= 'foo@example.com' + attributes[:password] ||= 'abc123' + attributes[:password_confirmation] ||= attributes[:password] + <%= user_singular_name %> = <%= user_class_name %>.new(attributes) + <%= user_singular_name %>.valid? # run validations + <%= user_singular_name %> + end + + def setup + <%= user_class_name %>.delete_all + end + + def test_valid + assert new_<%= user_singular_name %>.valid? + end + + def test_require_username + assert_equal ["can't be blank"], new_<%= user_singular_name %>(:username => '').errors[:username] + end + + def test_require_password + assert_equal ["can't be blank"], new_<%= user_singular_name %>(:password => '').errors[:password] + end + + def test_require_well_formed_email + assert_equal ["is invalid"], new_<%= user_singular_name %>(:email => 'foo@bar@example.com').errors[:email] + end + + def test_validate_uniqueness_of_email + new_<%= user_singular_name %>(:email => 'bar@example.com').save! + assert_equal ["has already been taken"], new_<%= user_singular_name %>(:email => 'bar@example.com').errors[:email] + end + + def test_validate_uniqueness_of_username + new_<%= user_singular_name %>(:username => 'uniquename').save! + assert_equal ["has already been taken"], new_<%= user_singular_name %>(:username => 'uniquename').errors[:username] + end + + def test_validate_odd_characters_in_username + assert_equal ["should only contain letters, numbers, or .-_@"], new_<%= user_singular_name %>(:username => 'odd ^&(@)').errors[:username] + end + + def test_validate_password_length + assert_equal ["is too short (minimum is 4 characters)"], new_<%= user_singular_name %>(:password => 'bad').errors[:password] + end + + def test_require_matching_password_confirmation + assert_equal ["doesn't match confirmation"], new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').errors[:password] + end + + def test_generate_password_hash_and_salt_on_create + <%= user_singular_name %> = new_<%= user_singular_name %> + <%= user_singular_name %>.save! + assert <%= user_singular_name %>.password_hash + assert <%= user_singular_name %>.password_salt + end + + def test_authenticate_by_username + <%= user_class_name %>.delete_all + <%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret') + <%= user_singular_name %>.save! + assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foobar', 'secret') + end + + def test_authenticate_by_email + <%= user_class_name %>.delete_all + <%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret') + <%= user_singular_name %>.save! + assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foo@bar.com', 'secret') + end + + def test_authenticate_bad_username + assert_nil <%= user_class_name %>.authenticate('nonexisting', 'secret') + end + + def test_authenticate_bad_password + <%= user_class_name %>.delete_all + new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save! + assert_nil <%= user_class_name %>.authenticate('foobar', 'badpassword') + end +<%- end -%> +end diff --git a/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb b/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb new file mode 100644 index 0000000..ef8a3f7 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb @@ -0,0 +1,53 @@ +require 'test_helper' + +class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase + def test_new + get :new + assert_template 'new' + end + + def test_create_invalid + <%= user_class_name %>.any_instance.stubs(:valid?).returns(false) + post :create + assert_template 'new' + end + + def test_create_valid + <%= user_class_name %>.any_instance.stubs(:valid?).returns(true) + post :create + assert_redirected_to root_url + <%- unless options[:authlogic] -%> + assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id'] + <%- end -%> + end + + def test_edit_without_user + get :edit, :id => "ignored" + assert_redirected_to login_url + end + + def test_edit + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + get :edit, :id => "ignored" + assert_template 'edit' + end + + def test_update_without_user + put :update, :id => "ignored" + assert_redirected_to login_url + end + + def test_update_invalid + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + <%= user_class_name %>.any_instance.stubs(:valid?).returns(false) + put :update, :id => "ignored" + assert_template 'edit' + end + + def test_update_valid + @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first) + <%= user_class_name %>.any_instance.stubs(:valid?).returns(true) + put :update, :id => "ignored" + assert_redirected_to root_url + end +end diff --git a/lib/generators/nifty/authentication/templates/user.rb b/lib/generators/nifty/authentication/templates/user.rb new file mode 100644 index 0000000..ec18524 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/user.rb @@ -0,0 +1,38 @@ +class <%= user_class_name %> < ActiveRecord::Base +<%- if options[:authlogic] -%> + acts_as_authentic +<%- else -%> + # new columns need to be added here to be writable through mass assignment + attr_accessible :username, :email, :password, :password_confirmation + + attr_accessor :password + before_save :prepare_password + + validates_presence_of :username + validates_uniqueness_of :username, :email, :allow_blank => true + validates_format_of :username, :with => /^[-\w\._@]+$/i, :allow_blank => true, :message => "should only contain letters, numbers, or .-_@" + validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i + validates_presence_of :password, :on => :create + validates_confirmation_of :password + validates_length_of :password, :minimum => 4, :allow_blank => true + + # login can be either username or email address + def self.authenticate(login, pass) + <%= user_singular_name %> = find_by_username(login) || find_by_email(login) + return <%= user_singular_name %> if <%= user_singular_name %> && <%= user_singular_name %>.password_hash == <%= user_singular_name %>.encrypt_password(pass) + end + + def encrypt_password(pass) + BCrypt::Engine.hash_secret(pass, password_salt) + end + + private + + def prepare_password + unless password.blank? + self.password_salt = BCrypt::Engine.generate_salt + self.password_hash = encrypt_password(password) + end + end +<%- end -%> +end diff --git a/lib/generators/nifty/authentication/templates/users_controller.rb b/lib/generators/nifty/authentication/templates/users_controller.rb new file mode 100644 index 0000000..2faed00 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/users_controller.rb @@ -0,0 +1,32 @@ +class <%= user_plural_class_name %>Controller < ApplicationController + before_filter :login_required, :except => [:new, :create] + + def new + @<%= user_singular_name %> = <%= user_class_name %>.new + end + + def create + @<%= user_singular_name %> = <%= user_class_name %>.new(params[:<%= user_singular_name %>]) + if @<%= user_singular_name %>.save + <%- unless options[:authlogic] -%> + session[:<%= user_singular_name %>_id] = @<%= user_singular_name %>.id + <%- end -%> + redirect_to root_url, :notice => "Thank you for signing up! You are now logged in." + else + render :new + end + end + + def edit + @<%= user_singular_name %> = current_<%= user_singular_name %> + end + + def update + @<%= user_singular_name %> = current_<%= user_singular_name %> + if @<%= user_singular_name %>.update_attributes(params[:<%= user_singular_name %>]) + redirect_to root_url, :notice => "Your profile has been updated." + else + render :edit + end + end +end diff --git a/lib/generators/nifty/authentication/templates/users_helper.rb b/lib/generators/nifty/authentication/templates/users_helper.rb new file mode 100644 index 0000000..7eb9040 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/users_helper.rb @@ -0,0 +1,2 @@ +module <%= user_plural_class_name %>Helper +end diff --git a/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb b/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb new file mode 100644 index 0000000..4e1c47d --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb @@ -0,0 +1,20 @@ +<%%= form_for @<%= user_singular_name %> do |f| %> + <%%= f.error_messages %> + <div class="field"> + <%%= f.label :username %> + <%%= f.text_field :username %> + </div> + <div class="field"> + <%%= f.label :email, "Email Address" %> + <%%= f.text_field :email %> + </div> + <div class="field"> + <%%= f.label :password %> + <%%= f.password_field :password %> + </div> + <div class="field"> + <%%= f.label :password_confirmation, "Confirm Password" %> + <%%= f.password_field :password_confirmation %> + </div> + <div class="actions"><%%= f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update") %></div> +<%% end %> diff --git a/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb b/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb new file mode 100644 index 0000000..75de67e --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb @@ -0,0 +1,3 @@ +<%% title "Update Profile" %> + +<%%= render "form" %> diff --git a/lib/generators/nifty/authentication/templates/views/erb/login.html.erb b/lib/generators/nifty/authentication/templates/views/erb/login.html.erb new file mode 100644 index 0000000..1cbc428 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/erb/login.html.erb @@ -0,0 +1,30 @@ +<%% title "Log in" %> + +<p>Don't have an account? <%%= link_to "Sign up!", signup_path %></p> + +<%- if options[:authlogic] -%> +<%%= form_for @<%= session_singular_name %> do |f| %> + <%%= f.error_messages %> + <div class="field"> + <%%= f.label :username %> + <%%= f.text_field :username %> + </div> + <div class="field"> + <%%= f.label :password %> + <%%= f.password_field :password %> + </div> + <div class="actions"><%%= f.submit "Log in" %></div> +<%% end %> +<%- else -%> +<%%= form_tag <%= session_plural_name %>_path do %> + <div class="field"> + <%%= label_tag :login, "Username or Email Address" %> + <%%= text_field_tag :login, params[:login] %> + </div> + <div class="field"> + <%%= label_tag :password %> + <%%= password_field_tag :password %> + </div> + <div class="actions"><%%= submit_tag "Log in" %></div> +<%% end %> +<%- end -%> diff --git a/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb b/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb new file mode 100644 index 0000000..6f282b5 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb @@ -0,0 +1,5 @@ +<%% title "Sign up" %> + +<p>Already have an account? <%%= link_to "Log in", login_path %>.</p> + +<%%= render "form" %> diff --git a/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml b/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml new file mode 100644 index 0000000..992ee9c --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml @@ -0,0 +1,16 @@ += form_for @<%= user_singular_name %> do |f| + = f.error_messages + .field + = f.label :username + = f.text_field :username + .field + = f.label :email, "Email Address" + = f.text_field :email + .field + = f.label :password + = f.password_field :password + .field + = f.label :password_confirmation, "Confirm Password" + = f.password_field :password_confirmation + .actions + = f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update") diff --git a/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml b/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml new file mode 100644 index 0000000..4b43a3b --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml @@ -0,0 +1,3 @@ +- title "Sign up" + += render "form" diff --git a/lib/generators/nifty/authentication/templates/views/haml/login.html.haml b/lib/generators/nifty/authentication/templates/views/haml/login.html.haml new file mode 100644 index 0000000..22fc95b --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/haml/login.html.haml @@ -0,0 +1,26 @@ +- title "Log in" + +%p== Don't have an account? #{link_to "Sign up!", signup_path} + +<%- if options[:authlogic] -%> += form_for @<%= session_singular_name %> do |f| + = f.error_messages + .field + = f.label :username + = f.text_field :username + .field + = f.label :password + = f.password_field :password + .actions + = f.submit "Log in" +<%- else -%> +- form_tag <%= session_plural_name %>_path do + .field + = label_tag :login, "Username or Email Address" + = text_field_tag :login, params[:login] + .field + = label_tag :password + = password_field_tag :password + .actions + = submit_tag "Log in" +<%- end -%> diff --git a/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml b/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml new file mode 100644 index 0000000..dc75c13 --- /dev/null +++ b/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml @@ -0,0 +1,5 @@ +- title "Sign up" + +%p== Already have an account? #{link_to "Log in", login_path}. + += render "form" diff --git a/lib/generators/nifty/config/USAGE b/lib/generators/nifty/config/USAGE new file mode 100644 index 0000000..f98972c --- /dev/null +++ b/lib/generators/nifty/config/USAGE @@ -0,0 +1,23 @@ +Description: + The nifty_config generator creates YAML file in your config + directory and an initializer to load this config. The config has a + separate section for each environment. This is a great place to put + any config settings you don't want in your app. + + The config is loaded into a constant called APP_CONFIG by default, + this changes depending on the name you choose to pass the generator. + Use this constant to access the config settings like this. + + APP_CONFIG[:some_setting] + + +Examples: + rails generate nifty:config + + Config: config/app_config.yml + Initializer: config/initializers/load_app_config.rb + + rails generate nifty:config passwords + + Config: config/passwords_config.yml + Initializer: config/initializers/load_passwords_config.rb diff --git a/lib/generators/nifty/config/config_generator.rb b/lib/generators/nifty/config/config_generator.rb new file mode 100644 index 0000000..811c80e --- /dev/null +++ b/lib/generators/nifty/config/config_generator.rb @@ -0,0 +1,24 @@ +require 'generators/nifty' + +module Nifty + module Generators + class ConfigGenerator < Base + argument :config_name, :type => :string, :default => 'app', :banner => 'config_name' + + def create_config + template "load_config.rb", "config/initializers/load_#{file_name}_config.rb" + copy_file "config.yml", "config/#{file_name}_config.yml" + end + + private + + def file_name + config_name.underscore + end + + def constant_name + config_name.underscore.upcase + end + end + end +end diff --git a/lib/generators/nifty/config/templates/config.yml b/lib/generators/nifty/config/templates/config.yml new file mode 100644 index 0000000..3a26ebc --- /dev/null +++ b/lib/generators/nifty/config/templates/config.yml @@ -0,0 +1,8 @@ +development: + domain: localhost:3000 + +test: + domain: test.host + +production: + domain: example.com diff --git a/lib/generators/nifty/config/templates/load_config.rb b/lib/generators/nifty/config/templates/load_config.rb new file mode 100644 index 0000000..06e6a52 --- /dev/null +++ b/lib/generators/nifty/config/templates/load_config.rb @@ -0,0 +1,2 @@ +raw_config = File.read("#{Rails.root}/config/<%= file_name %>_config.yml") +<%= constant_name %>_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys diff --git a/lib/generators/nifty/layout/USAGE b/lib/generators/nifty/layout/USAGE new file mode 100644 index 0000000..f94af0d --- /dev/null +++ b/lib/generators/nifty/layout/USAGE @@ -0,0 +1,25 @@ +Description: + The nifty_layout generator creates a basic layout, stylesheet and + helper which will give some structure to a starting Rails app. + + The generator takes one argument which will be the name of the + layout and stylesheet files. If no argument is passed then it defaults + to "application". + + The helper module includes some methods which can be called in any + template or partial to set variables to be used in the layout, such as + page title and javascript/stylesheet includes. + +Examples: + rails generate nifty:layout + + Layout: app/views/layouts/application.html.erb + Stylesheet: public/stylesheets/application.css + Helper: app/helpers/layout_helper.rb + + + rails generate nifty:layout admin + + Layout: app/views/layouts/admin.html.erb + Stylesheet: public/stylesheets/admin.css + Helper: app/helpers/layout_helper.rb diff --git a/lib/generators/nifty/layout/layout_generator.rb b/lib/generators/nifty/layout/layout_generator.rb new file mode 100644 index 0000000..fb7f9f4 --- /dev/null +++ b/lib/generators/nifty/layout/layout_generator.rb @@ -0,0 +1,29 @@ +require 'generators/nifty' + +module Nifty + module Generators + class LayoutGenerator < Base + argument :layout_name, :type => :string, :default => 'application', :banner => 'layout_name' + + class_option :haml, :desc => 'Generate HAML for view, and SASS for stylesheet.', :type => :boolean, :default => true + + def create_layout + if options.haml? + template 'layout.html.haml', "app/views/layouts/#{file_name}.html.haml" + copy_file 'stylesheet.sass', "public/stylesheets/sass/#{file_name}.sass" + else + template 'layout.html.erb', "app/views/layouts/#{file_name}.html.erb" + copy_file 'stylesheet.css', "public/stylesheets/#{file_name}.css" + end + copy_file 'layout_helper.rb', 'app/helpers/layout_helper.rb' + copy_file 'error_messages_helper.rb', 'app/helpers/error_messages_helper.rb' + end + + private + + def file_name + layout_name.underscore + end + end + end +end diff --git a/lib/generators/nifty/layout/templates/error_messages_helper.rb b/lib/generators/nifty/layout/templates/error_messages_helper.rb new file mode 100644 index 0000000..8e9c4d3 --- /dev/null +++ b/lib/generators/nifty/layout/templates/error_messages_helper.rb @@ -0,0 +1,23 @@ +module ErrorMessagesHelper + # Render error messages for the given objects. The :message and :header_message options are allowed. + def error_messages_for(*objects) + options = objects.extract_options! + options[:header_message] ||= I18n.t(:"activerecord.errors.header", :default => "Invalid Fields") + options[:message] ||= I18n.t(:"activerecord.errors.message", :default => "Correct the following errors and try again.") + messages = objects.compact.map { |o| o.errors.full_messages }.flatten + unless messages.empty? + content_tag(:div, :class => "error_messages") do + list_items = messages.map { |msg| content_tag(:li, msg.html_safe) } + content_tag(:h2, options[:header_message].html_safe) + content_tag(:p, options[:message].html_safe) + content_tag(:ul, list_items.join.html_safe) + end + end + end + + module FormBuilderAdditions + def error_messages(options = {}) + @template.error_messages_for(@object, options) + end + end +end + +ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions) diff --git a/lib/generators/nifty/layout/templates/layout.html.haml b/lib/generators/nifty/layout/templates/layout.html.haml new file mode 100644 index 0000000..24ec1d6 --- /dev/null +++ b/lib/generators/nifty/layout/templates/layout.html.haml @@ -0,0 +1,21 @@ +!!! +%html + + %head + %title + = content_for?(:title) ? yield(:title) : "Untitled" + %meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/ + = stylesheet_link_tag "application" + = javascript_include_tag "application" + = csrf_meta_tag + = yield(:head) + + %body + #container + - flash.each do |name, msg| + = content_tag :div, msg, :id => "flash_#{name}" + + - if show_title? + %h1= yield(:title) + + = yield diff --git a/lib/generators/nifty/layout/templates/layout_helper.rb b/lib/generators/nifty/layout/templates/layout_helper.rb new file mode 100644 index 0000000..93011d6 --- /dev/null +++ b/lib/generators/nifty/layout/templates/layout_helper.rb @@ -0,0 +1,38 @@ +# These helper methods can be called in your template to set variables to be used in the layout +# This module should be included in all views globally, +# to do so you may need to add this line to your ApplicationController +# helper :layout +module LayoutHelper + + def title(page_title, show_title = true) + content_for(:title) { strip_tags(page_title.to_s) } + @show_title = show_title + end + + def show_title? + @show_title + end + + def stylesheet(*args) + content_for(:head) { stylesheet_link_tag(*args) } + end + + def javascript(*args) + content_for(:head) { javascript_include_tag(*args) } + end + + def translation_missing?(output) + (output =~ /span/ or output.empty?) + end + + def conditional_hint(translation_key) + output = t(translation_key) + return output unless translation_missing?(output) + false + end + + def conditional_t(translation_key) + output = t(translation_key) + strip_tags(output) + end +end
\ No newline at end of file diff --git a/lib/generators/nifty/layout/templates/stylesheet.css b/lib/generators/nifty/layout/templates/stylesheet.css new file mode 100644 index 0000000..448a53f --- /dev/null +++ b/lib/generators/nifty/layout/templates/stylesheet.css @@ -0,0 +1,83 @@ +html, body { + background-color: #4B7399; + font-family: Verdana, Helvetica, Arial; + font-size: 14px; +} + +a img { + border: none; +} + +a { + color: #0000FF; +} + +.clear { + clear: both; + height: 0; + overflow: hidden; +} + +#container { + width: 75%; + margin: 0 auto; + background-color: #FFF; + padding: 20px 40px; + border: solid 1px black; + margin-top: 20px; +} + +#flash_notice, #flash_error, #flash_alert { + padding: 5px 8px; + margin: 10px 0; +} + +#flash_notice { + background-color: #CFC; + border: solid 1px #6C6; +} + +#flash_error, #flash_alert { + background-color: #FCC; + border: solid 1px #C66; +} + +.error_messages { + width: 400px; + border: 2px solid #CF0000; + padding: 0px; + padding-bottom: 12px; + margin-bottom: 20px; + background-color: #f0f0f0; + font-size: 12px; +} + +.error_messages h2 { + text-align: left; + font-weight: bold; + padding: 5px 10px; + font-size: 12px; + margin: 0; + background-color: #c00; + color: #fff; +} + +.error_messages p { + margin: 8px 10px; +} + +.error_messages ul { + margin: 0; +} + +.field_with_errors { + display: inline; +} + +form .field, form .actions { + margin: 10px 0; +} + +form label { + display: block; +} diff --git a/lib/generators/nifty/layout/templates/stylesheet.sass b/lib/generators/nifty/layout/templates/stylesheet.sass new file mode 100644 index 0000000..383bfd3 --- /dev/null +++ b/lib/generators/nifty/layout/templates/stylesheet.sass @@ -0,0 +1,73 @@ +$primary_color: #4b7399 + +body + background-color: $primary_color + font: + family: Verdana, Helvetica, Arial + size: 14px + +a + color: blue + img + border: none + +.clear + clear: both + height: 0 + overflow: hidden + +#container + width: 75% + margin: 0 auto + background: white + padding: 20px 40px + border: solid 1px black + margin-top: 20px + +#flash_notice, +#flash_error, +#flash_alert + padding: 5px 8px + margin: 10px 0 + +#flash_notice + background-color: #ccffcc + border: solid 1px #66cc66 + +#flash_error, +#flash_alert + background-color: #ffcccc + border: solid 1px #cc6666 + +.error_messages + width: 400px + border: 2px solid #cf0000 + padding: 0 + padding-bottom: 12px + margin-bottom: 20px + background-color: #f0f0f0 + font: + size: 12px + h2 + text-align: left + padding: 5px 5px 5px 15px + margin: 0 + font: + weight: bold + size: 12px + background-color: #cc0000 + color: white + p + margin: 8px 10px + ul + margin: 0 + +.field_with_errors + display: inline + +form .field, +form .actions + margin: 10px 0 + +form label + display: block diff --git a/lib/generators/nifty/scaffold/USAGE b/lib/generators/nifty/scaffold/USAGE new file mode 100644 index 0000000..363fd26 --- /dev/null +++ b/lib/generators/nifty/scaffold/USAGE @@ -0,0 +1,51 @@ +Description: + Scaffolds an entire resource, from model and migration to controller and + views. The resource is ready to use as a starting point for your restful, + resource-oriented application. Tests or specs are also generated depending + on if you have a "spec" directory or not. + + IMPORTANT: This generator uses the "title" helper method which is generated + by the nifty_layout generator. You may want to run that generator first. + +Usage: + Pass the name of the model, either CamelCased or under_scored, as the first + argument along with an optional list of attribute pairs and controller actions. + + If no controller actions are specified, they will default to index, show, + new, create, edit, update, and destroy. + + IMPORTANT: If no attribute pairs are specified, no model will be generated. + It will try to determine the attributes from an existing model. + + Attribute pairs are column_name:sql_type arguments specifying the + model's attributes. Timestamps are added by default, so you don't have to + specify them by hand as 'created_at:datetime updated_at:datetime'. + + For example, `nifty:scaffold post name:string content:text hidden:boolean` + gives you a model with those three attributes, a controller that handles + the create/show/update/destroy, forms to create and edit your posts, and + an index that lists them all, as well as a map.resources :posts + declaration in config/routes.rb. + + Adding an "!" in the mix of arguments will invert the passed controller + actions. This will include all 7 controller actitons except the ones + mentioned. This option doesn't affect model attributes. + +Examples: + rails generate nifty:scaffold post + + Will create a controller called "posts" it will contain all seven + CRUD actions along with the views. A model will NOT be created, + instead it will look for an existing model and use those attributes. + + rails generate nifty:scaffold post name:string content:text index new edit + + Will create a Post model and migration file with the name and content + attributes. It will also create a controller with index, new, create, + edit, and update actions. Notice the create and update actions are + added automatically with new and edit. + + rails generate nifty:scaffold post ! show new + + Creates a posts controller (no model) with index, edit, update, and + destroy actions. diff --git a/lib/generators/nifty/scaffold/scaffold_generator.rb b/lib/generators/nifty/scaffold/scaffold_generator.rb new file mode 100644 index 0000000..1283e17 --- /dev/null +++ b/lib/generators/nifty/scaffold/scaffold_generator.rb @@ -0,0 +1,344 @@ +require 'generators/nifty' +require 'rails/generators/migration' +require 'rails/generators/generated_attribute' + +module Nifty + module Generators + class ScaffoldGenerator < Base + include Rails::Generators::Migration + no_tasks { attr_accessor :scaffold_name, :model_attributes, :controller_actions } + + argument :scaffold_name, :type => :string, :required => true, :banner => 'ModelName' + argument :args_for_c_m, :type => :array, :default => [], :banner => 'controller_actions and model:attributes' + + class_option :skip_model, :desc => 'Don\'t generate a model or migration file.', :type => :boolean + class_option :skip_migration, :desc => 'Don\'t generate migration file for model.', :type => :boolean + class_option :skip_timestamps, :desc => 'Don\'t add timestamps to migration file.', :type => :boolean + class_option :skip_controller, :desc => 'Don\'t generate controller, helper, or views.', :type => :boolean + class_option :invert, :desc => 'Generate all controller actions except these mentioned.', :type => :boolean + class_option :namespace_model, :desc => 'If the resource is namespaced, include the model in the namespace.', :type => :boolean + class_option :haml, :desc => 'Generate HAML views instead of ERB.', :type => :boolean, :default => true + + class_option :testunit, :desc => 'Use test/unit for test files.', :group => 'Test framework', :type => :boolean + class_option :rspec, :desc => 'Use RSpec for test files.', :group => 'Test framework', :type => :boolean + class_option :shoulda, :desc => 'Use shoulda for test files.', :group => 'Test framework', :type => :boolean + + def initialize(*args, &block) + super + + print_usage unless scaffold_name.underscore =~ /^[a-z][a-z0-9_\/]+$/ + + @controller_actions = [] + @model_attributes = [] + @skip_model = options.skip_model? + @namespace_model = options.namespace_model? + @invert_actions = options.invert? + + args_for_c_m.each do |arg| + if arg == '!' + @invert_actions = true + elsif arg.include?(':') + @model_attributes << Rails::Generators::GeneratedAttribute.new(*arg.split(':')) + else + @controller_actions << arg + @controller_actions << 'create' if arg == 'new' + @controller_actions << 'update' if arg == 'edit' + end + end + + @controller_actions.uniq! + @model_attributes.uniq! + + if @invert_actions || @controller_actions.empty? + @controller_actions = all_actions - @controller_actions + end + + if @model_attributes.empty? + @skip_model = true # skip model if no attributes + if model_exists? + model_columns_for_attributes.each do |column| + @model_attributes << Rails::Generators::GeneratedAttribute.new(column.name.to_s, column.type.to_s) + end + else + @model_attributes << Rails::Generators::GeneratedAttribute.new('name', 'string') + end + end + end + + def add_gems + # add_gem "mocha", :group => :test + add_gem 'haml' + add_gem 'simple_form' + add_gem 'cancan' + end + + def create_model + unless @skip_model + template 'model.rb', "app/models/#{model_path}.rb" + if test_framework == :rspec + template "tests/rspec/model.rb", "spec/models/#{model_path}_spec.rb" + # FUCK YOU FIXTURES, WE USE FACTORY GIRL. + # template 'fixtures.yml', "spec/fixtures/#{model_path.pluralize}.yml" + else + template "tests/#{test_framework}/model.rb", "test/unit/#{model_path}_test.rb" + template 'fixtures.yml', "test/fixtures/#{model_path.pluralize}.yml" + end + end + end + + def create_migration + unless @skip_model || options.skip_migration? + migration_template 'migration.rb', "db/migrate/create_#{model_path.pluralize.gsub('/', '_')}.rb" + end + end + + def create_controller + unless options.skip_controller? + template 'controller.rb', "app/controllers/#{plural_name}_controller.rb" + + template 'helper.rb', "app/helpers/#{plural_name}_helper.rb" + + controller_actions.each do |action| + if %w[index show new edit].include?(action) # Actions with templates + template "views/#{view_language}/#{action}.html.#{view_language}", "app/views/#{plural_name}/#{action}.html.#{view_language}" + end + end + + # Move the index_core (can't do it on the top.) + template "views/#{view_language}/_index_core.html.#{view_language}", "app/views/#{plural_name}/_index_core.html.#{view_language}" + + + if form_partial? + template "views/#{view_language}/_form.html.#{view_language}", "app/views/#{plural_name}/_form.html.#{view_language}" + template "views/#{view_language}/_form_core.html.#{view_language}", "app/views/#{plural_name}/_form_core.html.#{view_language}" + end + + namespaces = plural_name.split('/') + resource = namespaces.pop + route namespaces.reverse.inject("resources :#{resource}") { |acc, namespace| + "namespace(:#{namespace}){ #{acc} }" + } + + if test_framework == :rspec + template "tests/#{test_framework}/controller.rb", "spec/controllers/#{plural_name}_controller_spec.rb" + else + template "tests/#{test_framework}/controller.rb", "test/functional/#{plural_name}_controller_test.rb" + end + end + end + + def create_locales + template 'locale.yml', "config/locales/views/#{plural_name}/en.yml" + template 'locale_de.yml', "config/locales/views/#{plural_name}/de.yml" + # template 'locale.yml', "config/locales/views/#{plural_name}/es.yml" + # gsub_file("config/locales/views/#{plural_name}/es.yml", 'en:', 'es:') + # gsub_file("config/locales/views/#{plural_name}/de.yml", 'en:', 'de:') + end + + def configuration + gsub_file('config/application.rb', "# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]", + "config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*', '*', '*.{rb,yml}').to_s]") + end + + private + + def form_partial? + actions? :new, :edit + end + + def all_actions + %w[index show new create edit update destroy] + end + + def action?(name) + controller_actions.include? name.to_s + end + + def actions?(*names) + names.all? { |name| action? name } + end + + def singular_name + scaffold_name.underscore + end + + def plural_name + scaffold_name.underscore.pluralize + end + + def human_name + scaffold_name.humanize + end + + def table_name + if scaffold_name.include?('::') && @namespace_model + plural_name.gsub('/', '_') + end + end + + def class_name + if @namespace_model + scaffold_name.camelize + else + scaffold_name.split('::').last.camelize + end + end + + def model_path + class_name.underscore + end + + def plural_class_name + plural_name.camelize + end + + def instance_name + if @namespace_model + singular_name.gsub('/','_') + else + singular_name.split('/').last + end + end + + def instances_name + instance_name.pluralize + end + + def controller_methods(dir_name) + controller_actions.map do |action| + read_template("#{dir_name}/#{action}.rb") + end.join("\n").strip + end + + def render_form + if form_partial? + if options.haml? + "= render \"form\"" + else + "<%= render \"form\" %>" + end + else + read_template("views/#{view_language}/_form.html.#{view_language}") + end + end + + def item_resource + scaffold_name.underscore.gsub('/','_') + end + + def items_path + if action? :index + "#{item_resource.pluralize}_path" + else + "root_path" + end + end + + def item_path(options = {}) + name = options[:instance_variable] ? "@#{instance_name}" : instance_name + suffix = options[:full_url] ? "url" : "path" + if options[:action].to_s == "new" + "new_#{item_resource}_#{suffix}" + elsif options[:action].to_s == "edit" + "edit_#{item_resource}_#{suffix}(#{name})" + else + if scaffold_name.include?('::') && !@namespace_model + namespace = singular_name.split('/')[0..-2] + "[:#{namespace.join(', :')}, #{name}]" + else + name + end + end + end + + def item_url + if action? :show + item_path(:full_url => true, :instance_variable => true) + else + items_url + end + end + + def items_url + if action? :index + item_resource.pluralize + '_url' + else + "root_url" + end + end + + def item_path_for_spec(suffix = 'path') + if action? :show + "#{item_resource}_#{suffix}(assigns[:#{instance_name}])" + else + if suffix == 'path' + items_path + else + items_url + end + end + end + + def item_path_for_test(suffix = 'path') + if action? :show + "#{item_resource}_#{suffix}(assigns(:#{instance_name}))" + else + if suffix == 'path' + items_path + else + items_url + end + end + end + + def model_columns_for_attributes + class_name.constantize.columns.reject do |column| + column.name.to_s =~ /^(id|created_at|updated_at)$/ + end + end + + def view_language + options.haml? ? 'haml' : 'erb' + end + + def test_framework + return @test_framework if defined?(@test_framework) + if options.testunit? + return @test_framework = :testunit + elsif options.rspec? + return @test_framework = :rspec + elsif options.shoulda? + return @test_framework = :shoulda + else + return @test_framework = default_test_framework + end + end + + def default_test_framework + File.exist?(destination_path("spec")) ? :rspec : :testunit + end + + def model_exists? + File.exist? destination_path("app/models/#{singular_name}.rb") + end + + def read_template(relative_path) + ERB.new(File.read(find_in_source_paths(relative_path)), nil, '-').result(binding) + end + + def destination_path(path) + File.join(destination_root, path) + end + + # FIXME: Should be proxied to ActiveRecord::Generators::Base + # Implement the required interface for Rails::Generators::Migration. + def self.next_migration_number(dirname) #:nodoc: + if ActiveRecord::Base.timestamped_migrations + Time.now.utc.strftime("%Y%m%d%H%M%S") + else + "%.3d" % (current_migration_number(dirname) + 1) + end + end + end + end +end diff --git a/lib/generators/nifty/scaffold/templates/actions/create.rb b/lib/generators/nifty/scaffold/templates/actions/create.rb new file mode 100644 index 0000000..8365f0b --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/actions/create.rb @@ -0,0 +1,8 @@ + def create + @<%= instance_name %> = <%= class_name %>.new(params[:<%= instance_name %>]) + if @<%= instance_name %>.save + redirect_to <%= item_url %>, :notice => t('<%= plural_name %>.controller.successfuly_created') + else + render :new + end + end diff --git a/lib/generators/nifty/scaffold/templates/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/actions/destroy.rb new file mode 100644 index 0000000..8a236e0 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/actions/destroy.rb @@ -0,0 +1,5 @@ + def destroy + @<%= instance_name %> = <%= class_name %>.find(params[:id]) + @<%= instance_name %>.destroy + redirect_to <%= items_url %>, :notice => t('<%= plural_name %>.controller.successfuly_destroyed') + end diff --git a/lib/generators/nifty/scaffold/templates/actions/edit.rb b/lib/generators/nifty/scaffold/templates/actions/edit.rb new file mode 100644 index 0000000..907e928 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/actions/edit.rb @@ -0,0 +1,3 @@ + def edit + @<%= instance_name %> = <%= class_name %>.find(params[:id]) + end diff --git a/lib/generators/nifty/scaffold/templates/actions/index.rb b/lib/generators/nifty/scaffold/templates/actions/index.rb new file mode 100644 index 0000000..0a8420c --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/actions/index.rb @@ -0,0 +1,3 @@ + def index + @<%= instances_name %> = <%= class_name %>.all + end diff --git a/lib/generators/nifty/scaffold/templates/actions/new.rb b/lib/generators/nifty/scaffold/templates/actions/new.rb new file mode 100644 index 0000000..c0991bc --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/actions/new.rb @@ -0,0 +1,3 @@ + def new + @<%= instance_name %> = <%= class_name %>.new + end diff --git a/lib/generators/nifty/scaffold/templates/actions/show.rb b/lib/generators/nifty/scaffold/templates/actions/show.rb new file mode 100644 index 0000000..27a0467 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/actions/show.rb @@ -0,0 +1,3 @@ + def show + @<%= instance_name %> = <%= class_name %>.find(params[:id]) + end diff --git a/lib/generators/nifty/scaffold/templates/actions/update.rb b/lib/generators/nifty/scaffold/templates/actions/update.rb new file mode 100644 index 0000000..a1473a6 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/actions/update.rb @@ -0,0 +1,8 @@ + def update + @<%= instance_name %> = <%= class_name %>.find(params[:id]) + if @<%= instance_name %>.update_attributes(params[:<%= instance_name %>]) + redirect_to <%= item_url %>, :notice => t('<%= plural_name %>.controller.successfuly_updated') + else + render :edit + end + end diff --git a/lib/generators/nifty/scaffold/templates/controller.rb b/lib/generators/nifty/scaffold/templates/controller.rb new file mode 100644 index 0000000..a54de70 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/controller.rb @@ -0,0 +1,3 @@ +class <%= plural_class_name %>Controller < ApplicationController + <%= controller_methods :actions %> +end diff --git a/lib/generators/nifty/scaffold/templates/fixtures.yml b/lib/generators/nifty/scaffold/templates/fixtures.yml new file mode 100644 index 0000000..447eaf9 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/fixtures.yml @@ -0,0 +1,9 @@ +one: +<%- for attribute in model_attributes -%> + <%= attribute.name %>: <%= attribute.default %> +<%- end -%> + +two: +<%- for attribute in model_attributes -%> + <%= attribute.name %>: <%= attribute.default %> +<%- end -%> diff --git a/lib/generators/nifty/scaffold/templates/helper.rb b/lib/generators/nifty/scaffold/templates/helper.rb new file mode 100644 index 0000000..084b485 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/helper.rb @@ -0,0 +1,2 @@ +module <%= plural_class_name %>Helper +end diff --git a/lib/generators/nifty/scaffold/templates/locale.yml b/lib/generators/nifty/scaffold/templates/locale.yml new file mode 100644 index 0000000..46e4ce3 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/locale.yml @@ -0,0 +1,46 @@ +en: + <%= plural_name %>: + name: '<%= human_name %>' + controller: + successfuly_created: 'Successfully created <%= human_name %>.' + successfuly_updated: 'Successfully updated <%= human_name %>.' + successfuly_destroyed: 'Successfully destroyed <%= human_name %>.' + index: + page_title: 'Listing <%= human_name %>' + <%- for attribute in model_attributes -%> + <%= attribute.name %>: '<%= attribute.human_name %>' + <%- end -%> + actions: + confirm: 'Are you sure you want to delete this <%= human_name %>?' + destroy: 'Delete' + edit: 'Edit' + show: 'View' + create: 'New' + create_for: 'New <%= human_name %> for %{resource}' + show: + page_title: 'Show <%= human_name %>' + <%- for attribute in model_attributes -%> + <%= attribute.name %>: '<%= attribute.human_name %>' + <%- end -%> + actions: + confirm: 'Are you sure you want to delete this element?' + destroy: 'Delete' + edit: 'Edit' + view_all: 'View All' + new: + page_title: 'New <%= human_name %>' + actions: + back_to_list: 'Back to Index' + edit: + page_title: 'Editing <%= human_name %>' + actions: + back_to_list: 'Back to Index' + edit: 'Edit' + view_all: 'View All' + form: + <%- for attribute in model_attributes -%> + <%= attribute.name %>: + label: '<%= attribute.human_name %>' + hint: '' + <%- end -%> + button: 'Submit'
\ No newline at end of file diff --git a/lib/generators/nifty/scaffold/templates/locale_de.yml b/lib/generators/nifty/scaffold/templates/locale_de.yml new file mode 100644 index 0000000..027d36d --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/locale_de.yml @@ -0,0 +1,46 @@ +de: + <%= plural_name %>: + name: '<%= human_name %>' + controller: + successfuly_created: '<%= human_name %> wurde angelegt.' + successfuly_updated: '<%= human_name %> wurde aktualisiert.' + successfuly_destroyed: '<%= human_name %> wurde gelöscht.' + index: + page_title: 'Übersicht von <%= human_name %>' + <%- for attribute in model_attributes -%> + <%= attribute.name %>: '<%= attribute.human_name %>' + <%- end -%> + actions: + confirm: 'Sind Sie sicher, dass Sie folgendes löschen möchten: <%= human_name %>' + destroy: 'Löschen' + edit: 'Bearbeiten' + show: 'Anzeigen' + create: 'Neu anlegen' + create_for: '<%= human_name %> neu anlegen für %{resource}' + show: + page_title: '<%= human_name %> bearbeiten' + <%- for attribute in model_attributes -%> + <%= attribute.name %>: '<%= attribute.human_name %>' + <%- end -%> + actions: + confirm: 'Sind Sie sicher, dass die dieses Element löschen möchten?' + destroy: 'Löschen' + edit: 'Bearbeiten' + view_all: 'Alle anzeigen' + new: + page_title: '<%= human_name %> neu anlegen' + actions: + back_to_list: 'Zurück zur Übersicht' + edit: + page_title: '<%= human_name %> bearbeiten' + actions: + back_to_list: 'Zurück zur Übersicht' + edit: 'Bearbeiten' + view_all: 'Alle anzeigen' + form: + <%- for attribute in model_attributes -%> + <%= attribute.name %>: + label: '<%= attribute.human_name %>' + hint: '' + <%- end -%> + button: 'Absenden'
\ No newline at end of file diff --git a/lib/generators/nifty/scaffold/templates/migration.rb b/lib/generators/nifty/scaffold/templates/migration.rb new file mode 100644 index 0000000..02fd6bd --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/migration.rb @@ -0,0 +1,16 @@ +class Create<%= class_name.pluralize.delete('::') %> < ActiveRecord::Migration + def self.up + create_table :<%= table_name || plural_name.split('/').last %> do |t| + <%- for attribute in model_attributes -%> + t.<%= attribute.type %> :<%= attribute.name %> + <%- end -%> + <%- unless options[:skip_timestamps] -%> + t.timestamps + <%- end -%> + end + end + + def self.down + drop_table :<%= table_name || plural_name.split('/').last %> + end +end diff --git a/lib/generators/nifty/scaffold/templates/model.rb b/lib/generators/nifty/scaffold/templates/model.rb new file mode 100644 index 0000000..fe5f980 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/model.rb @@ -0,0 +1,4 @@ +class <%= class_name %> < ActiveRecord::Base +<%= " set_table_name :#{table_name}\n" if table_name -%> + attr_accessible <%= model_attributes.map { |a| ":#{a.name}" }.join(", ") %> +end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb new file mode 100644 index 0000000..ef5a906 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb @@ -0,0 +1,11 @@ + it "create action should render new template when model is invalid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(false) + post :create + response.should render_template(:new) + end + + it "create action should redirect when model is valid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(true) + post :create + response.should redirect_to(<%= item_path_for_spec('url') %>) + end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb new file mode 100644 index 0000000..8372953 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb @@ -0,0 +1,6 @@ + it "destroy action should destroy model and redirect to index action" do + <%= instance_name %> = <%= class_name %>.first + delete :destroy, :id => <%= instance_name %> + response.should redirect_to(<%= items_url %>) + <%= class_name %>.exists?(<%= instance_name %>.id).should be_false + end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb new file mode 100644 index 0000000..e144904 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb @@ -0,0 +1,4 @@ + it "edit action should render edit template" do + get :edit, :id => <%= class_name %>.first + response.should render_template(:edit) + end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb new file mode 100644 index 0000000..a40ea16 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb @@ -0,0 +1,4 @@ + it "index action should render index template" do + get :index + response.should render_template(:index) + end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb new file mode 100644 index 0000000..22e1b40 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb @@ -0,0 +1,4 @@ + it "new action should render new template" do + get :new + response.should render_template(:new) + end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb new file mode 100644 index 0000000..eaa3d93 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb @@ -0,0 +1,4 @@ + it "show action should render show template" do + get :show, :id => <%= class_name %>.first + response.should render_template(:show) + end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb new file mode 100644 index 0000000..c919962 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb @@ -0,0 +1,11 @@ + it "update action should render edit template when model is invalid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(false) + put :update, :id => <%= class_name %>.first + response.should render_template(:edit) + end + + it "update action should redirect when model is valid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(true) + put :update, :id => <%= class_name %>.first + response.should redirect_to(<%= item_path_for_spec('url') %>) + end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb new file mode 100644 index 0000000..5d97f63 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb @@ -0,0 +1,8 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe <%= plural_class_name %>Controller do + fixtures :all + render_views + + <%= controller_methods 'tests/rspec/actions' %> +end diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb new file mode 100644 index 0000000..25c3cc4 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb @@ -0,0 +1,7 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe <%= class_name %> do + it "should be valid" do + <%= class_name %>.new.should be_valid + end +end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb new file mode 100644 index 0000000..f305367 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb @@ -0,0 +1,13 @@ + context "create action" do + should "render new template when model is invalid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(false) + post :create + assert_template 'new' + end + + should "redirect when model is valid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(true) + post :create + assert_redirected_to <%= item_path_for_test('url') %> + end + end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb new file mode 100644 index 0000000..ea20133 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb @@ -0,0 +1,8 @@ + context "destroy action" do + should "destroy model and redirect to index action" do + <%= instance_name %> = <%= class_name %>.first + delete :destroy, :id => <%= instance_name %> + assert_redirected_to <%= items_url %> + assert !<%= class_name %>.exists?(<%= instance_name %>.id) + end + end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb new file mode 100644 index 0000000..47597d0 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb @@ -0,0 +1,6 @@ + context "edit action" do + should "render edit template" do + get :edit, :id => <%= class_name %>.first + assert_template 'edit' + end + end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb new file mode 100644 index 0000000..44b056b --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb @@ -0,0 +1,6 @@ + context "index action" do + should "render index template" do + get :index + assert_template 'index' + end + end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb new file mode 100644 index 0000000..5857a55 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb @@ -0,0 +1,6 @@ + context "new action" do + should "render new template" do + get :new + assert_template 'new' + end + end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb new file mode 100644 index 0000000..75b37f6 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb @@ -0,0 +1,6 @@ + context "show action" do + should "render show template" do + get :show, :id => <%= class_name %>.first + assert_template 'show' + end + end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb new file mode 100644 index 0000000..fc46f72 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb @@ -0,0 +1,13 @@ + context "update action" do + should "render edit template when model is invalid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(false) + put :update, :id => <%= class_name %>.first + assert_template 'edit' + end + + should "redirect when model is valid" do + <%= class_name %>.any_instance.stubs(:valid?).returns(true) + put :update, :id => <%= class_name %>.first + assert_redirected_to <%= item_path_for_test('url') %> + end + end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb new file mode 100644 index 0000000..e9f9764 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb @@ -0,0 +1,5 @@ +require 'test_helper' + +class <%= plural_class_name %>ControllerTest < ActionController::TestCase + <%= controller_methods 'tests/shoulda/actions' %> +end diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb new file mode 100644 index 0000000..9065963 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class <%= class_name %>Test < ActiveSupport::TestCase + should "be valid" do + assert <%= class_name %>.new.valid? + end +end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb new file mode 100644 index 0000000..5a6d2ac --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb @@ -0,0 +1,11 @@ + def test_create_invalid + <%= class_name %>.any_instance.stubs(:valid?).returns(false) + post :create + assert_template 'new' + end + + def test_create_valid + <%= class_name %>.any_instance.stubs(:valid?).returns(true) + post :create + assert_redirected_to <%= item_path_for_test('url') %> + end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb new file mode 100644 index 0000000..adedf91 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb @@ -0,0 +1,6 @@ + def test_destroy + <%= instance_name %> = <%= class_name %>.first + delete :destroy, :id => <%= instance_name %> + assert_redirected_to <%= items_url %> + assert !<%= class_name %>.exists?(<%= instance_name %>.id) + end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb new file mode 100644 index 0000000..55ed24a --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb @@ -0,0 +1,4 @@ + def test_edit + get :edit, :id => <%= class_name %>.first + assert_template 'edit' + end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb new file mode 100644 index 0000000..22d3bad --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb @@ -0,0 +1,4 @@ + def test_index + get :index + assert_template 'index' + end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb new file mode 100644 index 0000000..c551327 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb @@ -0,0 +1,4 @@ + def test_new + get :new + assert_template 'new' + end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb new file mode 100644 index 0000000..b74f371 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb @@ -0,0 +1,4 @@ + def test_show + get :show, :id => <%= class_name %>.first + assert_template 'show' + end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb new file mode 100644 index 0000000..b588bfc --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb @@ -0,0 +1,11 @@ + def test_update_invalid + <%= class_name %>.any_instance.stubs(:valid?).returns(false) + put :update, :id => <%= class_name %>.first + assert_template 'edit' + end + + def test_update_valid + <%= class_name %>.any_instance.stubs(:valid?).returns(true) + put :update, :id => <%= class_name %>.first + assert_redirected_to <%= item_path_for_test('url') %> + end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb new file mode 100644 index 0000000..8b99836 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb @@ -0,0 +1,49 @@ +require 'test_helper' + +class <%= plural_class_name %>ControllerTest < ActionController::TestCase + setup do + <%= item_path :instance_variable => true %> = <%= plural_name %>(:one) + end + + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:<%= plural_name %>) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create <%= item_path %>" do + assert_difference('<%= class_name %>.count') do + post :create, <%= item_path %>: @<%= item_path %>.attributes + end + + assert_redirected_to <%= item_path %>_path(assigns(:<%= item_path %>)) + end + + test "should show <%= item_path %>" do + get :show, id: @<%= item_path %>.to_param + assert_response :success + end + + test "should get edit" do + get :edit, id: @<%= item_path %>.to_param + assert_response :success + end + + test "should update <%= item_path %>" do + put :update, id: @<%= item_path %>.to_param, <%= item_path %>: @<%= item_path %>.attributes + assert_redirected_to <%= item_path %>_path(assigns(:<%= item_path %>)) + end + + test "should destroy <%= item_path %>" do + assert_difference('<%= class_name %>.count', -1) do + delete :destroy, id: @<%= item_path %>.to_param + end + + assert_redirected_to <%= plural_name %>_path + end +end diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb new file mode 100644 index 0000000..09b835c --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class <%= class_name %>Test < ActiveSupport::TestCase + def test_should_be_valid + assert <%= class_name %>.new.valid? + end +end diff --git a/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml new file mode 100644 index 0000000..57cb828 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml @@ -0,0 +1,7 @@ += simple_form_for(<%= item_path :instance_variable => true %>) do |f| + = f.error_notification + + = render "form_core", :f => f + + .actions + = f.button :submit, conditional_t('<%= plural_name %>.form.submit')
\ No newline at end of file diff --git a/lib/generators/nifty/scaffold/templates/views/haml/_form_core.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/_form_core.html.haml new file mode 100644 index 0000000..ca7f253 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/views/haml/_form_core.html.haml @@ -0,0 +1,4 @@ +.inputs +<%- model_attributes.each do |attribute| -%> + = f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %>, :label => t('<%= plural_name %>.form.<%= attribute.name %>.label'), :hint => conditional_hint('<%= plural_name %>.form.<%= attribute.name %>.hint') +<%- end -%> diff --git a/lib/generators/nifty/scaffold/templates/views/haml/_index_core.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/_index_core.html.haml new file mode 100644 index 0000000..9cbea63 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/views/haml/_index_core.html.haml @@ -0,0 +1,13 @@ +%table + %tr + <%- for attribute in model_attributes -%> + %th= t('<%= plural_name %>.index.<%= attribute.name %>') + <%- end -%> + + - reset_cycle + - for <%= instance_name %> in <%= instances_name %> + %tr{:class => cycle('odd', 'even')} + <%- for attribute in model_attributes -%> + %td= <%= instance_name %>.<%= attribute.name %> + <%- end -%> + =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:child => <%= instance_name %>}
\ No newline at end of file diff --git a/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml new file mode 100644 index 0000000..dc7de62 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml @@ -0,0 +1,3 @@ +- title t("<%= plural_name %>.edit.page_title") + +<%= render_form %>
\ No newline at end of file diff --git a/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml new file mode 100644 index 0000000..86c6b9e --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml @@ -0,0 +1,6 @@ +- title t("<%= plural_name %>.index.page_title") + +- if @<%= instances_name %> && @<%= instances_name %>.count > 0 + = render "index_core", :<%= instances_name %> => @<%= instances_name %> + += render :partial => 'shared/create_link', :locals => {:child_class => <%= instances_name.classify %>}
\ No newline at end of file diff --git a/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml new file mode 100644 index 0000000..4e7f871 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml @@ -0,0 +1,3 @@ +- title t("<%= plural_name %>.new.page_title") + +<%= render_form %>
\ No newline at end of file diff --git a/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml new file mode 100644 index 0000000..3d01340 --- /dev/null +++ b/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml @@ -0,0 +1,9 @@ +- title t("<%= plural_name %>.show.page_title") + +<%- for attribute in model_attributes -%> +%p + %strong= t('<%= plural_name %>.show.<%= attribute.name %>') + ":" + = @<%= instance_name %>.<%= attribute.name %> +<%- end -%> + += render :partial => 'shared/show_edit_destroy_part', :locals => { :child => @<%= instance_name %> }
\ No newline at end of file diff --git a/lib/phone_controllers/snom_phone.rb b/lib/phone_controllers/snom_phone.rb new file mode 100644 index 0000000..9c41e02 --- /dev/null +++ b/lib/phone_controllers/snom_phone.rb @@ -0,0 +1,23 @@ +class SnomPhone + + attr_accessor :phone, :destination_number + + def initialize( attributes = {} ) + @phone = attributes[:phone] + @destination_number = attributes[:destination_number] + end + + def initiate_call + # TODO Initiate a new call to the destination_number. + # Do what ever it takes. + 42 + end + + # persisted is important not to get "undefined method + # `to_key' for" error + # -- Huh? #TODO Add a better description. + def persisted? + false + end + +end diff --git a/lib/tasks/.gitkeep b/lib/tasks/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/lib/tasks/.gitkeep diff --git a/lib/tasks/cvs_user_import.rake b/lib/tasks/cvs_user_import.rake new file mode 100644 index 0000000..2475a43 --- /dev/null +++ b/lib/tasks/cvs_user_import.rake @@ -0,0 +1,331 @@ +namespace :user_import do + desc "Import users from a CSV file." + task :csv => :environment do + require 'csv' + require 'digest/md5' + + # Example CSV format in the file: + # UserName,LastName,FirstName,AcademicTitel,PhoneOffice,VoipNr1,VoipNr2,VoipNr3,VoipTelco,CellPhone,HardFax,SoftFax,Email,PIN + # 123456,Mustermann,Max,Dr.,+49 123 1001234,20,21,22,23,+49 160 12345678,+49 123 1001238,29,max.mustermann@example.com,1324 + + # A generic hook to manipulate each given phone number with Ruby tools. + # + def regex_convert_phone_numbers(phone_number = nil) + if phone_number.class == String && !phone_number.blank? + # 123 Example + # + # if !phone_number.match(/^123(..)$/).nil? + # phone_number = phone_number.gsub(/^123(..)$/,'123'+$1) + # end + end + + phone_number + end + + # Read the CSV data and store them in the new_users hash. + # + csv_data = CSV.read(IMPORT_CSV_FILE, encoding: IMPORT_CSV_ENCODING) + headers = csv_data.shift.map {|i| i.to_s } + string_data = csv_data.map {|row| row.map {|cell| cell.to_s } } + new_users = string_data.map {|row| Hash[*headers.zip(row).flatten] } + gs_node_id = GsNode.where(:ip_address => HOMEBASE_IP_ADDRESS).first.try(:id) + + if File.exists?(DOUBLE_CHECK_POSITIVE_USERS_CSV) + csv_data = CSV.read(DOUBLE_CHECK_POSITIVE_USERS_CSV, encoding: IMPORT_CSV_ENCODING) + if csv_data.blank? + double_checked_user_names = [] + else + headers = csv_data.shift.map {|i| i.to_s } + string_data = csv_data.map {|row| row.map {|cell| cell.to_s } } + double_check_positiv_users = string_data.map {|row| Hash[*headers.zip(row).flatten] } + + double_checked_user_names = double_check_positiv_users.map{|user| user['UserName']} + end + else + double_checked_user_names = new_users.map{|user| user['UserName']} + end + + tenant = Tenant.find(DEFAULT_API_TENANT_ID) + + # Destroy deleted user by making a diff of where(:importer_checksum) + # and users in the CSV file. + # + if defined?(USER_NAME_PREFIX) && !USER_NAME_PREFIX.blank? + new_users_user_names = new_users.map{|x| USER_NAME_PREFIX.to_s + x['UserName'].to_s} + else + new_users_user_names = new_users.map{|x| x['UserName']} + end + csv_imported_user_names_in_the_database = User.where('importer_checksum != ?', '').pluck(:user_name) + + + to_be_destroyed_user_names = csv_imported_user_names_in_the_database - new_users_user_names + + User.where(:user_name => to_be_destroyed_user_names, :gs_node_id => gs_node_id).destroy_all + + # Loop through all entries in the CSV file. + # + new_users.each do |csv_user| + if !(csv_user['UserName'].blank? || csv_user['Email'].blank?) && double_checked_user_names.include?(csv_user['UserName']) + csv_user['Email'] = csv_user['Email'].downcase + if defined?(USER_NAME_PREFIX) && !USER_NAME_PREFIX.blank? + csv_user['UserName'] = USER_NAME_PREFIX.to_s + csv_user['UserName'] + end + + md5_sum = Digest::MD5.hexdigest(csv_user.to_yaml) + user = nil + + # Check if this user already exists and has a changed checksum. + # + if tenant.users.where(:user_name => csv_user['UserName']).first.try(:importer_checksum).to_s != md5_sum.to_s + # Find or create the user + # + if tenant.users.where(:user_name => csv_user['UserName']).count > 0 + user = tenant.users.where(:user_name => csv_user['UserName']).first + if defined? IMPORT_IGNORE_PIN_ON_UPDATE && IMPORT_IGNORE_PIN_ON_UPDATE == true + user.update_attributes( + :last_name => csv_user['LastName'], + :first_name => csv_user['FirstName'], + :email => csv_user['Email'], + :importer_checksum => md5_sum, + :gs_node_id => gs_node_id, + ) + else + user.update_attributes( + :last_name => csv_user['LastName'], + :first_name => csv_user['FirstName'], + :email => csv_user['Email'], + :new_pin => csv_user['PIN'], + :new_pin_confirmation => csv_user['PIN'], + :password => csv_user['PIN'], + :password_confirmation => csv_user['PIN'], + :importer_checksum => md5_sum, + :gs_node_id => gs_node_id, + ) + end + else + if csv_user['PIN'].blank? + csv_user['PIN'] = (1..6).map{|i| (0 .. 9).to_a.sample}.join + end + user = tenant.users.create( + :user_name => csv_user['UserName'], + :last_name => csv_user['LastName'], + :first_name => csv_user['FirstName'], + :email => csv_user['Email'], + :new_pin => csv_user['PIN'], + :new_pin_confirmation => csv_user['PIN'], + :password => csv_user['PIN'], + :password_confirmation => csv_user['PIN'], + :language_id => tenant.language_id, + :importer_checksum => md5_sum, + :gs_node_id => gs_node_id, + :send_voicemail_as_email_attachment => true, + ) + end + + # Create group membership + if tenant.user_groups.exists?(:name => 'Users') + tenant.user_groups.where(:name => 'Users').first.user_group_memberships.create(:user => user) + end + end + + if user + # Find or create a sip_accounts + ['VoipNr1', 'VoipNr2', 'VoipNr3'].each_with_index do |phone_number_type, index| + + if index > 0 + auth_name = "#{csv_user['UserName']}_#{index}" + else + auth_name = csv_user['UserName'].to_s + end + + if !phone_number_type.blank? && !csv_user[phone_number_type].blank? + sip_account = user.sip_accounts.where(:auth_name => auth_name).first + if sip_account + if sip_account.caller_name.to_s != user.to_s + sip_account.update_attributes(:caller_name => user.to_s) + end + else + sip_account = user.sip_accounts.create( + :caller_name => user.to_s, + :voicemail_pin => csv_user['PIN'], + :auth_name => auth_name, + :password => csv_user['PIN'], + :clip => true, + :hotdeskable => true, + :callforward_rules_act_per_sip_account => true, + :gs_node_id => gs_node_id, + ) + end + + phone_numbers = Array.new() + phone_numbers.push(csv_user[phone_number_type].to_s.gsub(/[^0-9\+]/, '')) + + # Find or create phone numbers + converted_phone_number = regex_convert_phone_numbers(csv_user[phone_number_type]) + if converted_phone_number != csv_user[phone_number_type] + phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, '')) + end + phone_numbers_count = sip_account.phone_numbers.count + phone_numbers.each do |phone_number_number| + phone_number = sip_account.phone_numbers.where(:number => phone_number_number).first + if !phone_number + phone_number = sip_account.phone_numbers.create(:number => phone_number_number, :gs_node_id => gs_node_id) + end + end + + # Create default call forwarding entries + if phone_numbers_count < sip_account.phone_numbers.count + call_forward_case_offline = CallForwardCase.find_by_value('offline') + if call_forward_case_offline + sip_account.phone_numbers.first.call_forwards.create(:call_forward_case_id => call_forward_case_offline.id, :call_forwardable_type => 'Voicemail', :active => true, :depth => DEFAULT_CALL_FORWARD_DEPTH) + end + end + else + user.sip_accounts.where(:auth_name => auth_name).destroy_all + end + end + + if !csv_user['SoftFax'].blank? + phone_numbers = Array.new() + phone_numbers.push(csv_user['SoftFax'].to_s.gsub(/[^0-9\+]/, '')) + converted_phone_number = regex_convert_phone_numbers(csv_user['SoftFax']) + if converted_phone_number != csv_user['SoftFax'] + phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, '')) + end + + fax_account = user.fax_accounts.first + if fax_account + if fax_account.name != user.to_s || fax_account.email != user.email + fax_account.update_attributes(:name => user.to_s, :email => user.email) + end + else + fax_account = user.fax_accounts.create( + :name => user.to_s, + :station_id => converted_phone_number.gsub(/[^0-9\+]/,''), + :email => user.email, + :days_till_auto_delete => 90, + :retries => 3, + ) + end + + if fax_account + fax_account.phone_numbers.each do |phone_number| + if !phone_numbers.include?(phone_number.number) + phone_number.delete + end + end + phone_numbers.each do |phone_number_number| + phone_number = fax_account.phone_numbers.where(:number => phone_number_number).first + if !phone_number + phone_number = fax_account.phone_numbers.create(:number => phone_number_number) + end + end + end + else + user.fax_accounts.destroy_all + end + + if !csv_user['HardFax'].blank? + phone_numbers = Array.new() + phone_numbers.push(csv_user['HardFax'].to_s.gsub(/[^0-9\+]/, '')) + converted_phone_number = regex_convert_phone_numbers(csv_user['HardFax']) + if converted_phone_number != csv_user['HardFax'] + phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, '')) + end + + # Create a sip_account for a hardware fax. + # + fax_sip_account = user.sip_accounts.where(:description => 'Hardware-Fax').first + if fax_sip_account + if fax_sip_account.caller_name != "Hardware Fax of #{user.to_s}" + fax_sip_account.update_attributes(:caller_name => "Hardware Fax of #{user.to_s}") + end + else + fax_sip_account = user.sip_accounts.create( + :caller_name => "Hardware Fax of #{user.to_s}", + :description => 'Hardware-Fax', + :auth_name => 'HARDFAX' + csv_user['UserName'], + :password => csv_user['PIN'], + :clip => true, + :hotdeskable => false, + :callforward_rules_act_per_sip_account => true, + :gs_node_id => gs_node_id, + ) + end + + if fax_sip_account + fax_sip_account.phone_numbers.each do |phone_number| + if !phone_numbers.include?(phone_number.number) + phone_number.delete + end + end + phone_numbers.each do |phone_number_number| + phone_number = fax_sip_account.phone_numbers.where(:number => phone_number_number).first + if !phone_number + phone_number = fax_sip_account.phone_numbers.create(:number => phone_number_number) + end + end + end + else + user.sip_accounts.where(:description => 'Hardware-Fax').destroy_all + end + + if !csv_user['VoipTelco'].blank? + conference = user.conferences.first + if conference.nil? + # Create a conference room for this user. + # + conference = user.conferences.build + conference.name = "Default Conference for #{user.to_s}" + conference.start = nil + conference.end = nil + conference.open_for_anybody = true + conference.max_members = DEFAULT_MAX_CONFERENCE_MEMBERS + conference.pin = (1..MINIMUM_PIN_LENGTH).map{|i| (0 .. 9).to_a.sample}.join + conference.save + end + + phone_numbers = Array.new() + phone_numbers.push(csv_user['VoipTelco'].to_s.gsub(/[^0-9\+]/, '')) + converted_phone_number = regex_convert_phone_numbers(csv_user['VoipTelco']) + if converted_phone_number != csv_user['VoipTelco'] + phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, '')) + end + + if conference + conference.phone_numbers.each do |phone_number| + if !phone_numbers.include?(phone_number.number) + phone_number.delete + end + end + phone_numbers.each do |phone_number_number| + phone_number = conference.phone_numbers.where(:number => phone_number_number).first + if !phone_number + phone_number = conference.phone_numbers.create(:number => phone_number_number) + end + end + end + else + user.conferences.destroy_all + end + + # Create Whitelist Entry for default Callthrough + # + cell_phone_number = csv_user['CellPhone'].to_s.gsub(/[^0-9\+]/, '') + + if !cell_phone_number.blank? + callthrough = tenant.callthroughs.find_or_create_by_name(CALLTHROUGH_NAME_TO_BE_USED_FOR_DEFAULT_ACTIVATION) + + access_authorization = callthrough.access_authorizations.find_or_create_by_name('Cellphones') + + new_phone_number = access_authorization.phone_numbers.find_or_create_by_number(cell_phone_number, :name => user.to_s, :access_authorization_user_id => user.id) + end + end + else + # puts "#{csv_user['UserName']} (#{csv_user['Email']}) has not changed." + end + end + + + end +end
\ No newline at end of file diff --git a/lib/tasks/fax.rake b/lib/tasks/fax.rake new file mode 100644 index 0000000..1f1c282 --- /dev/null +++ b/lib/tasks/fax.rake @@ -0,0 +1,74 @@ +# encoding: UTF-8 + +desc "Import inbound fax" + +task :import_inbound_fax, [ + :fax_account_id, + :result_code, + :document_total_pages, + :document_transferred_pages, + :ecm_requested, + :ecm_used, + :image_resolution, + :remote_station_id, + :transfer_rate, + :transmission_time, + :document, + :caller_id_number, + :caller_id_name, + ] => :environment do |t, a| + + TIFF_FUFFIX = ".tiff" + PDF_SUFFIX = ".pdf" + + fax_arguments = a.to_hash + + tiff_file = fax_arguments[:document] + + if !tiff_file or !File.exists?( tiff_file ) + $stderr.puts "File \"#{tiff_file}\" does not exist" + exit 1 + end + + paper_size = "letter" + pdf_file = "#{File.dirname(tiff_file)}/#{File.basename(tiff_file, TIFF_FUFFIX)}#{PDF_SUFFIX}" + + system "tiff2pdf \\ + -o \"#{pdf_file}\" \\ + -p #{paper_size} \\ + -a \"#{fax_arguments[:remote_station_id]}\" \\ + -c \"AMOOMA Gemeinschaft version #{GEMEINSCHAFT_VERSION}\" \\ + -t \"#{fax_arguments[:remote_station_id]}\" \"#{tiff_file}\"" + + if !File.exists?( pdf_file ) + $stderr.puts "File \"#{pdf_file}\" does not exist" + exit 1 + end + + fax_account = FaxAccount.find(fax_arguments[:fax_account_id]) + if !fax_account + $stderr.puts "Fax account \"#{fax_arguments[:fax_account_id]}\" does not exist" + exit 1 + end + + fax_arguments[:document] = nil + fax_arguments[:success] = true + fax_arguments[:inbound] = true + fax_arguments[:sent_at] = Time.now + fax_arguments[:local_station_id] = fax_account.station_id + fax_arguments[:retry_counter] = 0 + fax_arguments[:fax_resolution_id] = FaxResolution.first.id + fax_arguments[:image_size] = File.size(tiff_file) + fax_arguments[:ecm_used] = fax_arguments[:ecm_used] == "on" ? true : false + fax_document = fax_account.fax_documents.build(fax_arguments) + fax_document.document = File.open(pdf_file) + + if fax_document.save + fax_document.mark_as_inbound! + exit 0 + else + $stderr.puts "Error(s) creating fax document:" + $stderr.puts fax_document.errors.inspect + exit 1 + end +end diff --git a/lib/tasks/gs_cluster.rake b/lib/tasks/gs_cluster.rake new file mode 100644 index 0000000..565fd83 --- /dev/null +++ b/lib/tasks/gs_cluster.rake @@ -0,0 +1,333 @@ +namespace :gs_cluster do + desc "Sync local data to other gs cluster nodes." + task :push_waiting_data_to_other_nodes => :environment do + infinity_loop_protection_counter = GsClusterSyncLogEntry.where(:homebase_ip_address => HOMEBASE_IP_ADDRESS, + :waiting_to_be_synced => true).count + 10 + + # One bite at a time. + # + while GsClusterSyncLogEntry.where(:homebase_ip_address => HOMEBASE_IP_ADDRESS, + :waiting_to_be_synced => true).any? && + infinity_loop_protection_counter > 0 + GsClusterSyncLogEntry.where(:homebase_ip_address => HOMEBASE_IP_ADDRESS, + :waiting_to_be_synced => true).first.populate_other_cluster_nodes + infinity_loop_protection_counter -= 1 + end + + end + + desc "Reset gs_cluster_sync_log." + task :reset_sync_log => :environment do + GsClusterSyncLogEntry.destroy_all + + User.where('is_native IS NOT FALSE').each do |user| + puts("Processing User=#{user.id}/#{user.uuid} - #{user.user_name}") + user.create_on_other_gs_nodes + end + + SipAccount.where('is_native IS NOT FALSE').each do |sip_account| + puts("Processing SipAccount=#{sip_account.id}/#{sip_account.uuid} - #{sip_account.auth_name}"); + sip_account.create_on_other_gs_nodes + end + + PhoneNumber.where('is_native IS NOT FALSE AND phone_numberable_type IN ("SipAccount", "Conference", "FaxAccount", "Callthrough", "HuntGroup", "AutomaticCallDistributor")').each do |phone_number| + puts("Processing PhoneNumber=#{phone_number.id}/#{phone_number.uuid} - #{phone_number.number}"); + phone_number.create_on_other_gs_nodes + end + end + + desc "Pull objects from nodes." + task :pull => :environment do + local_node = GsNode.where(:ip_address => HOMEBASE_IP_ADDRESS).first + GsNode.where(:accepts_updates_from => true).each do |remote_node| + if remote_node.id == local_node.id + next + end + + puts "Processing node: #{remote_node.name}" + pull_node(remote_node, local_node) + end + end + + def pull_node(remote_node, local_node) + require 'nokogiri' + require 'open-uri' + + is_native = false + remote_site = remote_node.site + local_node_id = local_node.id + last_sync = remote_node.last_sync.to_i + + remote_objects(remote_site, local_node_id, last_sync, Tenant).each do |tenant| + puts "Processing Tenant: #{tenant[:name]}" + end + + remote_objects(remote_site, local_node_id, last_sync, UserGroup).each do |remote_object| + attributes = make_hash(remote_object.attributes) + tenant = Tenant.where(:name => attributes[:tenant]).first + process_object(UserGroup, tenant.user_groups, UserGroup.where(:name => attributes[:name], :tenant_id => tenant.try(:id)).first, attributes) + end + + remote_objects(remote_site, local_node_id, last_sync, User).each do |remote_object| + attributes = make_hash(remote_object.attributes) + + tenant = Tenant.where(:name => attributes[:current_tenant]).first + attributes[:language_id] = Language.where(:code => attributes[:language]).first.try(:id) + attributes.delete(:language) + attributes.delete(:current_tenant) + + if tenant + if ! attributes[:gs_node].blank? + attributes[:gs_node_id] = GsNode.where(:name => attributes[:gs_node]).first.try(:id) + attributes.delete(:gs_node) + end + + process_object(User, tenant.users, User.where(:uuid => attributes[:uuid]).first, attributes, { :is_native => is_native }) + else + $stderr.puts "NO_PROCESSING User #{attributes[:uuid]} - no current tenant" + end + end + + remote_objects(remote_site, local_node_id, last_sync, UserGroupMembership).each do |remote_object| + attributes = make_hash(remote_object.attributes) + attributes[:user_id] = User.where(:uuid => attributes[:user_uuid]).first.try(:id) + attributes[:user_group_id] = UserGroup.where(:name => attributes[:user_group]).first.try(:id) + attributes.delete(:user_uuid) + attributes.delete(:user_group) + + if attributes[:user_id] && attributes[:user_group_id] + process_object(UserGroupMembership, UserGroupMembership, UserGroupMembership.where(:user_id => attributes[:user_id], :user_group_id => attributes[:user_group_id]).first, attributes) + end + end + + remote_objects(remote_site, local_node_id, last_sync, SipAccount).each do |remote_object| + attributes = make_hash(remote_object.attributes) + attributes[:tenant_id] = Tenant.where(:name => attributes[:tenant]).first.try(:id) + attributes[:sip_domain] = SipDomain.where(:host => attributes[:sip_domain]).first + + if ! attributes[:sip_accountable_uuid].blank? + attributes[:sip_accountable_id] = attributes[:sip_accountable_type].constantize.where(:uuid => attributes[:sip_accountable_uuid]).first.try(:id) + end + + if attributes[:sip_accountable_id] + if ! attributes[:gs_node].blank? + attributes[:gs_node_id] = GsNode.where(:name => attributes[:gs_node]).first.try(:id) + attributes.delete(:gs_node) + end + + attributes.delete(:sip_accountable_uuid) + attributes.delete(:tenant) + process_object(SipAccount, SipAccount, SipAccount.where(:uuid => attributes[:uuid]).first, attributes, { :is_native => is_native }) + end + end + + remote_objects(remote_site, local_node_id, last_sync, Conference).each do |remote_object| + attributes = make_hash(remote_object.attributes) + + if ! attributes[:conferenceable_uuid].blank? + attributes[:conferenceable_id] = attributes[:conferenceable_type].constantize.where(:uuid => attributes[:conferenceable_uuid]).first.try(:id) + end + attributes.delete(:conferenceable_uuid) + + process_object(Conference, Conference, Conference.where(:uuid => attributes[:uuid]).first, attributes) + end + + remote_objects(remote_site, local_node_id, last_sync, FaxAccount).each do |remote_object| + attributes = make_hash(remote_object.attributes) + attributes[:tenant_id] = Tenant.where(:name => attributes[:tenant]).first.try(:id) + if ! attributes[:fax_accountable_uuid].blank? + attributes[:fax_accountable_id] = attributes[:fax_accountable_type].constantize.where(:uuid => attributes[:fax_accountable_uuid]).first.try(:id) + end + attributes.delete(:fax_accountable_uuid) + attributes.delete(:tenant) + process_object(FaxAccount, FaxAccount, FaxAccount.where(:uuid => attributes[:uuid]).first, attributes) + end + + remote_objects(remote_site, local_node_id, last_sync, PhoneBook).each do |remote_object| + attributes = make_hash(remote_object.attributes) + + if ! attributes[:phone_bookable_uuid].blank? + attributes[:phone_bookable_id] = attributes[:phone_bookable_type].constantize.where(:uuid => attributes[:phone_bookable_uuid]).first.try(:id) + end + attributes.delete(:phone_bookable_uuid) + process_object(PhoneBook, PhoneBook, PhoneBook.where(:uuid => attributes[:uuid]).first, attributes) + end + + remote_objects(remote_site, local_node_id, last_sync, PhoneBookEntry).each do |remote_object| + attributes = make_hash(remote_object.attributes) + attributes[:phone_book_id] = PhoneBook.where(:uuid => attributes[:phone_book_uuid]).first.try(:id) + attributes.delete(:phone_book_uuid) + process_object(PhoneBookEntry, PhoneBookEntry, PhoneBookEntry.where(:uuid => attributes[:uuid]).first, attributes) + end + + remote_objects(remote_site, local_node_id, last_sync, PhoneNumber).each do |remote_object| + attributes = make_hash(remote_object.attributes) + + if ! attributes[:phone_numberable_uuid].blank? + attributes[:phone_numberable_id] = attributes[:phone_numberable_type].constantize.where(:uuid => attributes[:phone_numberable_uuid]).first.try(:id) + end + + if ! attributes[:gs_node].blank? + attributes[:gs_node_id] = GsNode.where(:name => attributes[:gs_node]).first.try(:id) + attributes.delete(:gs_node) + end + + if !attributes[:phone_numberable_id] + puts "WARNING PhoneNumber #{attributes[:number]} has no local parent object #{attributes[:phone_numberable_type]}/#{attributes[:phone_numberable_uuid]}" + end + + attributes.delete(:phone_numberable_uuid) + process_object(PhoneNumber, PhoneNumber, PhoneNumber.where(:uuid => attributes[:uuid]).first, attributes, { :is_native => is_native }) + end + + remote_objects(remote_site, local_node_id, last_sync, CallForward).each do |remote_object| + attributes = make_hash(remote_object.attributes) + + attributes[:phone_number_id] = PhoneNumber.where(:uuid => attributes[:phone_number_uuid]).first.try(:id) + + if ! attributes[:call_forwardable_uuid].blank? + attributes[:call_forwardable_id] = attributes[:call_forwardable_type].constantize.where(:uuid => attributes[:call_forwardable_uuid]).first.try(:id) + attributes.delete(:call_forwardable_uuid) + end + + attributes[:call_forward_case_id] = CallForwardCase.where(:value => attributes[:service]).first.try(:id) + + attributes.delete(:phone_number_uuid) + attributes.delete(:service) + + process_object(CallForward, CallForward, CallForward.where(:uuid => attributes[:uuid]).first, attributes) + end + + remote_objects(remote_site, local_node_id, last_sync, Softkey).each do |remote_object| + attributes = make_hash(remote_object.attributes) + attributes[:sip_account_id] = SipAccount.where(:uuid => attributes[:sip_account_uuid]).first.try(:id) + attributes[:call_forward_id] = CallForward.where(:uuid => attributes[:call_forward_uuid]).first.try(:id) + attributes[:softkey_function_id] = SoftkeyFunction.where(:name => attributes[:function]).first.try(:id) + attributes.delete(:sip_account_uuid) + attributes.delete(:call_forward_uuid) + attributes.delete(:softkey_function) + process_object(Softkey, Softkey, Softkey.where(:uuid => attributes[:uuid]).first, attributes) + end + + remote_objects(remote_site, local_node_id, last_sync, Ringtone).each do |remote_object| + attributes = make_hash(remote_object.attributes) + if ! attributes[:ringtoneable_uuid].blank? + attributes[:ringtoneable_id] = attributes[:ringtoneable_type].constantize.where(:uuid => attributes[:ringtoneable_uuid]).first.try(:id) + end + + if !attributes[:ringtoneable_id] + puts "WARNING Ringtone #{attributes[:number]} has no local parent object #{attributes[:ringtoneable_type]}/#{attributes[:ringtoneable_uuid]}" + else + attributes.delete(:ringtoneable_uuid) + process_object(Ringtone, Ringtone, Ringtone.where(:ringtoneable_type => attributes[:ringtoneable_type], :ringtoneable_id => attributes[:ringtoneable_id]).first, attributes) + end + end + + remote_objects(remote_site, local_node_id, last_sync, ConferenceInvitee).each do |remote_object| + attributes = make_hash(remote_object.attributes) + attributes[:conference_id] = Conference.where(:uuid => attributes[:conference_uuid]).first.try(:id) + attributes[:phone_number] = PhoneNumber.where(:uuid => attributes[:phone_number_uuid]).first + if !attributes[:conference_id] + puts "WARNING ConferenceInvitee #{attributes[:uuid]} has no local Conference object #{attributes[:conference_uuid]}" + else + attributes[:phone_book_entry_id] = PhoneBookEntry.where(:uuid => attributes[:phone_book_entry_uuid]).first.try(:id) + attributes.delete(:conference_uuid) + attributes.delete(:phone_number_uuid) + attributes.delete(:phone_book_entry_uuid) + process_object(ConferenceInvitee, ConferenceInvitee, ConferenceInvitee.where(:uuid => attributes[:uuid]).first, attributes) + end + end + + #remote_objects(remote_site, local_node_id, last_sync, FaxDocument).each do |remote_object| + # attributes = make_hash(remote_object.attributes) + # attributes[:fax_account_id] = FaxAccount.where(:uuid => attributes[:fax_account_uuid]).first.try(:id) + # attributes[:fax_resolution_id] = FaxResolution.where(:resolution_value => attributes[:fax_resolution]).first.try(:id) + # attributes.delete(:fax_account_uuid) + # attributes.delete(:fax_resolution) + # process_object(FaxDocument, FaxDocument, FaxDocument.where(:uuid => attributes[:uuid]).first, attributes) + #end + + #remote_objects(remote_site, local_node_id, last_sync, CallHistory).each do |remote_object| + # attributes = make_hash(remote_object.attributes) + # process_object(CallHistory, CallHistory, CallHistory.where(:caller_channel_uuid => attributes[:caller_channel_uuid], :call_historyable_type => attributes[:caller_channel_type], :call_historyable_id => call_historyable.try(:id)).first, attributes) + #end + + remote_objects(remote_site, local_node_id, last_sync, DeletedItem).each do |remote_object| + attributes = make_hash(remote_object.attributes) + deleted_item = remote_object[:class_name].constantize.where(:uuid => attributes[:uuid]).first + + if deleted_item + print "DELETE #{deleted_item.class.to_s} #{deleted_item.to_s} : " + + if deleted_item.destroy + puts "OK" + else + $stderr.puts "Couldn't delete #{deleted_item.class.to_s}. #{deleted_item.errors.inspect}" + end + else + puts "NO_DELETE #{remote_object[:class_name]} #{remote_object[:uuid]}" + end + end + + if ! remote_node.synced + $stderr.puts "Errors updating node #{remote_node.name}. #{remote_node.errors.inspect}" + end + end + + def make_hash(attributes, new_hash = Hash.new) + attributes.each do |key, value| + new_hash[key.to_sym] = value.to_s + end + return new_hash + end + + def remote_objects(remote_site, local_node_id, last_sync, object_class) + class_name = object_class.to_s.underscore + section_name = class_name.pluralize + doc = Nokogiri::XML(open("#{remote_site}/gs_nodes/#{local_node_id}/sync.xml?newer=#{last_sync}&image=false&class=#{section_name}", :proxy => nil, :read_timeout => 120)) + return doc.xpath("//gemeinschaft_sync/#{section_name}/#{class_name}") + end + + def process_object(object_class, belongs_to, local_object, attributes, local_attributes = Hash.new) + if local_object + if local_object.updated_at < attributes[:updated_at] + print "UPDATE #{object_class.to_s} #{local_object.to_s} : " + update_object(local_object, attributes, local_attributes) + else + print "NO_UPDATE #{object_class.to_s}: #{local_object.to_s} - last update: #{local_object.updated_at}, remote: #{attributes[:updated_at]}" + end + else + print "CREATE #{object_class.to_s} #{attributes[:name].to_s} #{attributes[:uuid].to_s} : " + create_object(belongs_to, attributes, local_attributes) + end + puts "." + end + + def create_object(object_class, attributes, local_attributes) + attributes = attributes.merge(local_attributes) + + new_local_copy = object_class.create(attributes, :without_protection => true) + if new_local_copy && new_local_copy.errors.count == 0 + print "Created object, #{new_local_copy.class.to_s} #{new_local_copy.to_s}" + return true + else + $stderr.print "Couldn't create object. #{new_local_copy.errors.messages.inspect}" + return false + end + end + + def update_object(local_object, attributes, local_attributes) + attributes = attributes.merge(local_attributes) + + if local_object.update_attributes(attributes, :without_protection => true) + print "Updated #{local_object.class.to_s}, ID #{local_object.id}." + return true + else + $stderr.print "Couldn't update UserGroup. #{local_user_group.errors.inspect}" + return true + end + end + + class DeletedItem + end +end diff --git a/lib/tasks/originate.rake b/lib/tasks/originate.rake new file mode 100644 index 0000000..5e7dfe3 --- /dev/null +++ b/lib/tasks/originate.rake @@ -0,0 +1,13 @@ +desc "Originate call" + +task :originate, [ + :sip_account_id, + :extension, + ] => :environment do |t, a| + + extension = a.extension.to_s + sip_account = SipAccount.where(:id => a.sip_account_id.to_i).first + + print "Originate #{sip_account} -> #{extension} ... " + puts sip_account.call(extension) +end
\ No newline at end of file diff --git a/lib/tasks/populate_area_codes_de.rake b/lib/tasks/populate_area_codes_de.rake new file mode 100644 index 0000000..7237f5d --- /dev/null +++ b/lib/tasks/populate_area_codes_de.rake @@ -0,0 +1,5211 @@ +# encoding: UTF-8 + +desc "Populate database with German area codes" +task :areacodes_germany => :environment do + if ! germany = Country.where( :name => 'Germany' ).first + $stderr.puts "Error. Country not found." + exit 1 + end + + AreaCode.create(:country => germany, :name => "Essen", :area_code => "201") + AreaCode.create(:country => germany, :name => "Wuppertal", :area_code => "202") + AreaCode.create(:country => germany, :name => "Duisburg", :area_code => "203") + AreaCode.create(:country => germany, :name => "Bottrop", :area_code => "2041") + AreaCode.create(:country => germany, :name => "Gladbeck", :area_code => "2043") + AreaCode.create(:country => germany, :name => "Bottrop-Kirchhellen", :area_code => "2045") + AreaCode.create(:country => germany, :name => "Velbert", :area_code => "2051") + AreaCode.create(:country => germany, :name => "Velbert-Langenberg", :area_code => "2052") + AreaCode.create(:country => germany, :name => "Velbert-Neviges", :area_code => "2053") + AreaCode.create(:country => germany, :name => "Essen-Kettwig", :area_code => "2054") + AreaCode.create(:country => germany, :name => "Heiligenhaus", :area_code => "2056") + AreaCode.create(:country => germany, :name => "Wülfrath", :area_code => "2058") + AreaCode.create(:country => germany, :name => "Dinslaken", :area_code => "2064") + AreaCode.create(:country => germany, :name => "Duisburg-Rheinhausen", :area_code => "2065") + AreaCode.create(:country => germany, :name => "Duisburg-Homberg", :area_code => "2066") + AreaCode.create(:country => germany, :name => "Oberhausen Rheinl", :area_code => "208") + AreaCode.create(:country => germany, :name => "Gelsenkirchen", :area_code => "209") + AreaCode.create(:country => germany, :name => "Ratingen", :area_code => "2102") + AreaCode.create(:country => germany, :name => "Hilden", :area_code => "2103") + AreaCode.create(:country => germany, :name => "Mettmann", :area_code => "2104") + AreaCode.create(:country => germany, :name => "Düsseldorf", :area_code => "211") + AreaCode.create(:country => germany, :name => "Solingen", :area_code => "212") + AreaCode.create(:country => germany, :name => "Haan Rheinl", :area_code => "2129") + AreaCode.create(:country => germany, :name => "Neuss", :area_code => "2131") + AreaCode.create(:country => germany, :name => "Meerbusch-Büderich", :area_code => "2132") + AreaCode.create(:country => germany, :name => "Dormagen", :area_code => "2133") + AreaCode.create(:country => germany, :name => "Neuss-Norf", :area_code => "2137") + AreaCode.create(:country => germany, :name => "Leverkusen", :area_code => "214") + AreaCode.create(:country => germany, :name => "Meerbusch-Lank", :area_code => "2150") + AreaCode.create(:country => germany, :name => "Krefeld", :area_code => "2151") + AreaCode.create(:country => germany, :name => "Kempen", :area_code => "2152") + AreaCode.create(:country => germany, :name => "Nettetal-Lobberich", :area_code => "2153") + AreaCode.create(:country => germany, :name => "Willich", :area_code => "2154") + AreaCode.create(:country => germany, :name => "Willich-Anrath", :area_code => "2156") + AreaCode.create(:country => germany, :name => "Nettetal-Kaldenkirchen", :area_code => "2157") + AreaCode.create(:country => germany, :name => "Grefrath b Krefeld", :area_code => "2158") + AreaCode.create(:country => germany, :name => "Meerbusch-Osterath", :area_code => "2159") + AreaCode.create(:country => germany, :name => "Mönchengladbach", :area_code => "2161") + AreaCode.create(:country => germany, :name => "Viersen", :area_code => "2162") + AreaCode.create(:country => germany, :name => "Schwalmtal Niederrhein", :area_code => "2163") + AreaCode.create(:country => germany, :name => "Jüchen-Otzenrath", :area_code => "2164") + AreaCode.create(:country => germany, :name => "Jüchen", :area_code => "2165") + AreaCode.create(:country => germany, :name => "Mönchengladbach-Rheydt", :area_code => "2166") + AreaCode.create(:country => germany, :name => "Leverkusen-Opladen", :area_code => "2171") + AreaCode.create(:country => germany, :name => "Langenfeld Rheinland", :area_code => "2173") + AreaCode.create(:country => germany, :name => "Burscheid Rheinl", :area_code => "2174") + AreaCode.create(:country => germany, :name => "Leichlingen Rheinland", :area_code => "2175") + AreaCode.create(:country => germany, :name => "Grevenbroich", :area_code => "2181") + AreaCode.create(:country => germany, :name => "Grevenbroich-Kapellen", :area_code => "2182") + AreaCode.create(:country => germany, :name => "Rommerskirchen", :area_code => "2183") + AreaCode.create(:country => germany, :name => "Remscheid", :area_code => "2191") + AreaCode.create(:country => germany, :name => "Hückeswagen", :area_code => "2192") + AreaCode.create(:country => germany, :name => "Dabringhausen", :area_code => "2193") + AreaCode.create(:country => germany, :name => "Radevormwald", :area_code => "2195") + AreaCode.create(:country => germany, :name => "Wermelskirchen", :area_code => "2196") + AreaCode.create(:country => germany, :name => "Bergisch Gladbach", :area_code => "2202") + AreaCode.create(:country => germany, :name => "Köln-Porz", :area_code => "2203") + AreaCode.create(:country => germany, :name => "Bensberg", :area_code => "2204") + AreaCode.create(:country => germany, :name => "Rösrath", :area_code => "2205") + AreaCode.create(:country => germany, :name => "Overath", :area_code => "2206") + AreaCode.create(:country => germany, :name => "Kürten-Dürscheid", :area_code => "2207") + AreaCode.create(:country => germany, :name => "Niederkassel", :area_code => "2208") + AreaCode.create(:country => germany, :name => "Köln", :area_code => "221") + AreaCode.create(:country => germany, :name => "Bornheim Rheinl", :area_code => "2222") + AreaCode.create(:country => germany, :name => "Königswinter", :area_code => "2223") + AreaCode.create(:country => germany, :name => "Bad Honnef", :area_code => "2224") + AreaCode.create(:country => germany, :name => "Meckenheim Rheinl", :area_code => "2225") + AreaCode.create(:country => germany, :name => "Rheinbach", :area_code => "2226") + AreaCode.create(:country => germany, :name => "Bornheim-Merten", :area_code => "2227") + AreaCode.create(:country => germany, :name => "Remagen-Rolandseck", :area_code => "2228") + AreaCode.create(:country => germany, :name => "Brühl Rheinl", :area_code => "2232") + AreaCode.create(:country => germany, :name => "Hürth Rheinl", :area_code => "2233") + AreaCode.create(:country => germany, :name => "Frechen", :area_code => "2234") + AreaCode.create(:country => germany, :name => "Erftstadt", :area_code => "2235") + AreaCode.create(:country => germany, :name => "Wesseling Rheinl", :area_code => "2236") + AreaCode.create(:country => germany, :name => "Kerpen Rheinl-Türnich", :area_code => "2237") + AreaCode.create(:country => germany, :name => "Pulheim", :area_code => "2238") + AreaCode.create(:country => germany, :name => "Siegburg", :area_code => "2241") + AreaCode.create(:country => germany, :name => "Hennef Sieg", :area_code => "2242") + AreaCode.create(:country => germany, :name => "Eitorf", :area_code => "2243") + AreaCode.create(:country => germany, :name => "Königswinter-Oberpleis", :area_code => "2244") + AreaCode.create(:country => germany, :name => "Much", :area_code => "2245") + AreaCode.create(:country => germany, :name => "Lohmar", :area_code => "2246") + AreaCode.create(:country => germany, :name => "Neunkirchen-Seelscheid", :area_code => "2247") + AreaCode.create(:country => germany, :name => "Hennef-Uckerath", :area_code => "2248") + AreaCode.create(:country => germany, :name => "Euskirchen", :area_code => "2251") + AreaCode.create(:country => germany, :name => "Zülpich", :area_code => "2252") + AreaCode.create(:country => germany, :name => "Bad Münstereifel", :area_code => "2253") + AreaCode.create(:country => germany, :name => "Weilerswist", :area_code => "2254") + AreaCode.create(:country => germany, :name => "Euskirchen-Flamersheim", :area_code => "2255") + AreaCode.create(:country => germany, :name => "Mechernich-Satzvey", :area_code => "2256") + AreaCode.create(:country => germany, :name => "Reckerscheid", :area_code => "2257") + AreaCode.create(:country => germany, :name => "Gummersbach", :area_code => "2261") + AreaCode.create(:country => germany, :name => "Wiehl", :area_code => "2262") + AreaCode.create(:country => germany, :name => "Engelskirchen", :area_code => "2263") + AreaCode.create(:country => germany, :name => "Marienheide", :area_code => "2264") + AreaCode.create(:country => germany, :name => "Reichshof-Eckenhagen", :area_code => "2265") + AreaCode.create(:country => germany, :name => "Lindlar", :area_code => "2266") + AreaCode.create(:country => germany, :name => "Wipperfürth", :area_code => "2267") + AreaCode.create(:country => germany, :name => "Kürten", :area_code => "2268") + AreaCode.create(:country => germany, :name => "Kierspe-Rönsahl", :area_code => "2269") + AreaCode.create(:country => germany, :name => "Bergheim Erft", :area_code => "2271") + AreaCode.create(:country => germany, :name => "Bedburg Erft", :area_code => "2272") + AreaCode.create(:country => germany, :name => "Kerpen-Horrem", :area_code => "2273") + AreaCode.create(:country => germany, :name => "Elsdorf Rheinl", :area_code => "2274") + AreaCode.create(:country => germany, :name => "Kerpen-Buir", :area_code => "2275") + AreaCode.create(:country => germany, :name => "Bonn", :area_code => "228") + AreaCode.create(:country => germany, :name => "Waldbröl", :area_code => "2291") + AreaCode.create(:country => germany, :name => "Windeck Sieg", :area_code => "2292") + AreaCode.create(:country => germany, :name => "Nümbrecht", :area_code => "2293") + AreaCode.create(:country => germany, :name => "Morsbach Sieg", :area_code => "2294") + AreaCode.create(:country => germany, :name => "Ruppichteroth", :area_code => "2295") + AreaCode.create(:country => germany, :name => "Reichshof-Brüchermühle", :area_code => "2296") + AreaCode.create(:country => germany, :name => "Wildbergerhütte", :area_code => "2297") + AreaCode.create(:country => germany, :name => "Holzwickede", :area_code => "2301") + AreaCode.create(:country => germany, :name => "Witten", :area_code => "2302") + AreaCode.create(:country => germany, :name => "Unna", :area_code => "2303") + AreaCode.create(:country => germany, :name => "Schwerte", :area_code => "2304") + AreaCode.create(:country => germany, :name => "Castrop-Rauxel", :area_code => "2305") + AreaCode.create(:country => germany, :name => "Lünen", :area_code => "2306") + AreaCode.create(:country => germany, :name => "Kamen", :area_code => "2307") + AreaCode.create(:country => germany, :name => "Unna-Hemmerde", :area_code => "2308") + AreaCode.create(:country => germany, :name => "Waltrop", :area_code => "2309") + AreaCode.create(:country => germany, :name => "Dortmund", :area_code => "231") + AreaCode.create(:country => germany, :name => "Herne", :area_code => "2323") + AreaCode.create(:country => germany, :name => "Hattingen Ruhr", :area_code => "2324") + AreaCode.create(:country => germany, :name => "Wanne-Eickel", :area_code => "2325") + AreaCode.create(:country => germany, :name => "Bochum-Wattenscheid", :area_code => "2327") + AreaCode.create(:country => germany, :name => "Herdecke", :area_code => "2330") + AreaCode.create(:country => germany, :name => "Hagen Westf", :area_code => "2331") + AreaCode.create(:country => germany, :name => "Gevelsberg", :area_code => "2332") + AreaCode.create(:country => germany, :name => "Ennepetal", :area_code => "2333") + AreaCode.create(:country => germany, :name => "Hagen-Hohenlimburg", :area_code => "2334") + AreaCode.create(:country => germany, :name => "Wetter Ruhr", :area_code => "2335") + AreaCode.create(:country => germany, :name => "Schwelm", :area_code => "2336") + AreaCode.create(:country => germany, :name => "Hagen-Dahl", :area_code => "2337") + AreaCode.create(:country => germany, :name => "Breckerfeld", :area_code => "2338") + AreaCode.create(:country => germany, :name => "Sprockhövel-Haßlinghausen", :area_code => "2339") + AreaCode.create(:country => germany, :name => "Bochum", :area_code => "234") + AreaCode.create(:country => germany, :name => "Lüdenscheid", :area_code => "2351") + AreaCode.create(:country => germany, :name => "Altena Westf", :area_code => "2352") + AreaCode.create(:country => germany, :name => "Halver", :area_code => "2353") + AreaCode.create(:country => germany, :name => "Meinerzhagen", :area_code => "2354") + AreaCode.create(:country => germany, :name => "Schalksmühle", :area_code => "2355") + AreaCode.create(:country => germany, :name => "Herscheid Westf", :area_code => "2357") + AreaCode.create(:country => germany, :name => "Meinerzhagen-Valbert", :area_code => "2358") + AreaCode.create(:country => germany, :name => "Kierspe", :area_code => "2359") + AreaCode.create(:country => germany, :name => "Haltern-Lippramsdorf", :area_code => "2360") + AreaCode.create(:country => germany, :name => "Recklinghausen", :area_code => "2361") + AreaCode.create(:country => germany, :name => "Dorsten", :area_code => "2362") + AreaCode.create(:country => germany, :name => "Datteln", :area_code => "2363") + AreaCode.create(:country => germany, :name => "Haltern Westf", :area_code => "2364") + AreaCode.create(:country => germany, :name => "Marl", :area_code => "2365") + AreaCode.create(:country => germany, :name => "Herten Westf", :area_code => "2366") + AreaCode.create(:country => germany, :name => "Henrichenburg", :area_code => "2367") + AreaCode.create(:country => germany, :name => "Oer-Erkenschwick", :area_code => "2368") + AreaCode.create(:country => germany, :name => "Dorsten-Wulfen", :area_code => "2369") + AreaCode.create(:country => germany, :name => "Iserlohn", :area_code => "2371") + AreaCode.create(:country => germany, :name => "Hemer", :area_code => "2372") + AreaCode.create(:country => germany, :name => "Menden Sauerland", :area_code => "2373") + AreaCode.create(:country => germany, :name => "Iserlohn-Letmathe", :area_code => "2374") + AreaCode.create(:country => germany, :name => "Balve", :area_code => "2375") + AreaCode.create(:country => germany, :name => "Wickede Ruhr", :area_code => "2377") + AreaCode.create(:country => germany, :name => "Fröndenberg-Langschede", :area_code => "2378") + AreaCode.create(:country => germany, :name => "Menden-Asbeck", :area_code => "2379") + AreaCode.create(:country => germany, :name => "Hamm Westf", :area_code => "2381") + AreaCode.create(:country => germany, :name => "Ahlen Westf", :area_code => "2382") + AreaCode.create(:country => germany, :name => "Bönen", :area_code => "2383") + AreaCode.create(:country => germany, :name => "Welver", :area_code => "2384") + AreaCode.create(:country => germany, :name => "Hamm-Rhynern", :area_code => "2385") + AreaCode.create(:country => germany, :name => "Drensteinfurt-Walstedde", :area_code => "2387") + AreaCode.create(:country => germany, :name => "Hamm-Uentrop", :area_code => "2388") + AreaCode.create(:country => germany, :name => "Werne", :area_code => "2389") + AreaCode.create(:country => germany, :name => "Plettenberg", :area_code => "2391") + AreaCode.create(:country => germany, :name => "Werdohl", :area_code => "2392") + AreaCode.create(:country => germany, :name => "Sundern-Allendorf", :area_code => "2393") + AreaCode.create(:country => germany, :name => "Neuenrade-Affeln", :area_code => "2394") + AreaCode.create(:country => germany, :name => "Finnentrop-Rönkhausen", :area_code => "2395") + AreaCode.create(:country => germany, :name => "Baesweiler", :area_code => "2401") + AreaCode.create(:country => germany, :name => "Stolberg Rheinl", :area_code => "2402") + AreaCode.create(:country => germany, :name => "Eschweiler Rheinl", :area_code => "2403") + AreaCode.create(:country => germany, :name => "Alsdorf Rheinl", :area_code => "2404") + AreaCode.create(:country => germany, :name => "Würselen", :area_code => "2405") + AreaCode.create(:country => germany, :name => "Herzogenrath", :area_code => "2406") + AreaCode.create(:country => germany, :name => "Herzogenrath-Kohlscheid", :area_code => "2407") + AreaCode.create(:country => germany, :name => "Aachen-Kornelimünster", :area_code => "2408") + AreaCode.create(:country => germany, :name => "Stolberg-Gressenich", :area_code => "2409") + AreaCode.create(:country => germany, :name => "Aachen", :area_code => "241") + AreaCode.create(:country => germany, :name => "Düren", :area_code => "2421") + AreaCode.create(:country => germany, :name => "Kreuzau", :area_code => "2422") + AreaCode.create(:country => germany, :name => "Langerwehe", :area_code => "2423") + AreaCode.create(:country => germany, :name => "Vettweiss", :area_code => "2424") + AreaCode.create(:country => germany, :name => "Nideggen-Embken", :area_code => "2425") + AreaCode.create(:country => germany, :name => "Nörvenich", :area_code => "2426") + AreaCode.create(:country => germany, :name => "Nideggen", :area_code => "2427") + AreaCode.create(:country => germany, :name => "Niederzier", :area_code => "2428") + AreaCode.create(:country => germany, :name => "Hürtgenwald", :area_code => "2429") + AreaCode.create(:country => germany, :name => "Erkelenz", :area_code => "2431") + AreaCode.create(:country => germany, :name => "Wassenberg", :area_code => "2432") + AreaCode.create(:country => germany, :name => "Hückelhoven", :area_code => "2433") + AreaCode.create(:country => germany, :name => "Wegberg", :area_code => "2434") + AreaCode.create(:country => germany, :name => "Erkelenz-Lövenich", :area_code => "2435") + AreaCode.create(:country => germany, :name => "Wegberg-Rödgen", :area_code => "2436") + AreaCode.create(:country => germany, :name => "Nettersheim-Tondorf", :area_code => "2440") + AreaCode.create(:country => germany, :name => "Kall", :area_code => "2441") + AreaCode.create(:country => germany, :name => "Mechernich", :area_code => "2443") + AreaCode.create(:country => germany, :name => "Schleiden-Gemünd", :area_code => "2444") + AreaCode.create(:country => germany, :name => "Schleiden Eifel", :area_code => "2445") + AreaCode.create(:country => germany, :name => "Heimbach Eifel", :area_code => "2446") + AreaCode.create(:country => germany, :name => "Dahlem b Kall", :area_code => "2447") + AreaCode.create(:country => germany, :name => "Hellenthal-Rescheid", :area_code => "2448") + AreaCode.create(:country => germany, :name => "Blankenheim Ahr", :area_code => "2449") + AreaCode.create(:country => germany, :name => "Geilenkirchen", :area_code => "2451") + AreaCode.create(:country => germany, :name => "Heinsberg Rheinl", :area_code => "2452") + AreaCode.create(:country => germany, :name => "Heinsberg-Randerath", :area_code => "2453") + AreaCode.create(:country => germany, :name => "Gangelt", :area_code => "2454") + AreaCode.create(:country => germany, :name => "Waldfeucht", :area_code => "2455") + AreaCode.create(:country => germany, :name => "Selfkant", :area_code => "2456") + AreaCode.create(:country => germany, :name => "Jülich", :area_code => "2461") + AreaCode.create(:country => germany, :name => "Linnich", :area_code => "2462") + AreaCode.create(:country => germany, :name => "Titz", :area_code => "2463") + AreaCode.create(:country => germany, :name => "Aldenhoven b Jülich", :area_code => "2464") + AreaCode.create(:country => germany, :name => "Inden", :area_code => "2465") + AreaCode.create(:country => germany, :name => "Roetgen Eifel", :area_code => "2471") + AreaCode.create(:country => germany, :name => "Monschau", :area_code => "2472") + AreaCode.create(:country => germany, :name => "Simmerath", :area_code => "2473") + AreaCode.create(:country => germany, :name => "Nideggen-Schmidt", :area_code => "2474") + AreaCode.create(:country => germany, :name => "Hellenthal", :area_code => "2482") + AreaCode.create(:country => germany, :name => "Mechernich-Eiserfey", :area_code => "2484") + AreaCode.create(:country => germany, :name => "Schleiden-Dreiborn", :area_code => "2485") + AreaCode.create(:country => germany, :name => "Nettersheim", :area_code => "2486") + AreaCode.create(:country => germany, :name => "Münster-Hiltrup", :area_code => "2501") + AreaCode.create(:country => germany, :name => "Nottuln", :area_code => "2502") + AreaCode.create(:country => germany, :name => "Telgte", :area_code => "2504") + AreaCode.create(:country => germany, :name => "Altenberge Westf", :area_code => "2505") + AreaCode.create(:country => germany, :name => "Münster-Wolbeck", :area_code => "2506") + AreaCode.create(:country => germany, :name => "Havixbeck", :area_code => "2507") + AreaCode.create(:country => germany, :name => "Drensteinfurt", :area_code => "2508") + AreaCode.create(:country => germany, :name => "Nottuln-Appelhülsen", :area_code => "2509") + AreaCode.create(:country => germany, :name => "Münster", :area_code => "251") + AreaCode.create(:country => germany, :name => "Wadersloh-Diestedde", :area_code => "2520") + AreaCode.create(:country => germany, :name => "Beckum", :area_code => "2521") + AreaCode.create(:country => germany, :name => "Oelde", :area_code => "2522") + AreaCode.create(:country => germany, :name => "Wadersloh", :area_code => "2523") + AreaCode.create(:country => germany, :name => "Ennigerloh", :area_code => "2524") + AreaCode.create(:country => germany, :name => "Beckum-Neubeckum", :area_code => "2525") + AreaCode.create(:country => germany, :name => "Sendenhorst", :area_code => "2526") + AreaCode.create(:country => germany, :name => "Lippetal-Lippborg", :area_code => "2527") + AreaCode.create(:country => germany, :name => "Ennigerloh-Enniger", :area_code => "2528") + AreaCode.create(:country => germany, :name => "Oelde-Stromberg", :area_code => "2529") + AreaCode.create(:country => germany, :name => "Ostbevern", :area_code => "2532") + AreaCode.create(:country => germany, :name => "Münster-Nienberge", :area_code => "2533") + AreaCode.create(:country => germany, :name => "Münster-Roxel", :area_code => "2534") + AreaCode.create(:country => germany, :name => "Sendenhorst-Albersloh", :area_code => "2535") + AreaCode.create(:country => germany, :name => "Münster-Albachten", :area_code => "2536") + AreaCode.create(:country => germany, :name => "Drensteinfurt-Rinkerode", :area_code => "2538") + AreaCode.create(:country => germany, :name => "Coesfeld", :area_code => "2541") + AreaCode.create(:country => germany, :name => "Gescher", :area_code => "2542") + AreaCode.create(:country => germany, :name => "Billerbeck Westf", :area_code => "2543") + AreaCode.create(:country => germany, :name => "Rosendahl-Darfeld", :area_code => "2545") + AreaCode.create(:country => germany, :name => "Coesfeld-Lette", :area_code => "2546") + AreaCode.create(:country => germany, :name => "Rosendahl-Osterwick", :area_code => "2547") + AreaCode.create(:country => germany, :name => "Dülmen-Rorup", :area_code => "2548") + AreaCode.create(:country => germany, :name => "Steinfurt-Burgsteinfurt", :area_code => "2551") + AreaCode.create(:country => germany, :name => "Steinfurt-Borghorst", :area_code => "2552") + AreaCode.create(:country => germany, :name => "Ochtrup", :area_code => "2553") + AreaCode.create(:country => germany, :name => "Laer Kr Steinfurt", :area_code => "2554") + AreaCode.create(:country => germany, :name => "Schöppingen", :area_code => "2555") + AreaCode.create(:country => germany, :name => "Metelen", :area_code => "2556") + AreaCode.create(:country => germany, :name => "Wettringen Kr Steinfurt", :area_code => "2557") + AreaCode.create(:country => germany, :name => "Horstmar", :area_code => "2558") + AreaCode.create(:country => germany, :name => "Ahaus", :area_code => "2561") + AreaCode.create(:country => germany, :name => "Gronau Westfalen", :area_code => "2562") + AreaCode.create(:country => germany, :name => "Stadtlohn", :area_code => "2563") + AreaCode.create(:country => germany, :name => "Vreden", :area_code => "2564") + AreaCode.create(:country => germany, :name => "Gronau-Epe", :area_code => "2565") + AreaCode.create(:country => germany, :name => "Legden", :area_code => "2566") + AreaCode.create(:country => germany, :name => "Ahaus-Alstätte", :area_code => "2567") + AreaCode.create(:country => germany, :name => "Heek", :area_code => "2568") + AreaCode.create(:country => germany, :name => "Greven Westf", :area_code => "2571") + AreaCode.create(:country => germany, :name => "Emsdetten", :area_code => "2572") + AreaCode.create(:country => germany, :name => "Nordwalde", :area_code => "2573") + AreaCode.create(:country => germany, :name => "Saerbeck", :area_code => "2574") + AreaCode.create(:country => germany, :name => "Greven-Reckenfeld", :area_code => "2575") + AreaCode.create(:country => germany, :name => "Warendorf", :area_code => "2581") + AreaCode.create(:country => germany, :name => "Everswinkel", :area_code => "2582") + AreaCode.create(:country => germany, :name => "Sassenberg", :area_code => "2583") + AreaCode.create(:country => germany, :name => "Warendorf-Milte", :area_code => "2584") + AreaCode.create(:country => germany, :name => "Warendorf-Hoetmar", :area_code => "2585") + AreaCode.create(:country => germany, :name => "Beelen", :area_code => "2586") + AreaCode.create(:country => germany, :name => "Ennigerloh-Westkirchen", :area_code => "2587") + AreaCode.create(:country => germany, :name => "Harsewinkel-Greffen", :area_code => "2588") + AreaCode.create(:country => germany, :name => "Dülmen-Buldern", :area_code => "2590") + AreaCode.create(:country => germany, :name => "Lüdinghausen", :area_code => "2591") + AreaCode.create(:country => germany, :name => "Selm", :area_code => "2592") + AreaCode.create(:country => germany, :name => "Ascheberg Westf", :area_code => "2593") + AreaCode.create(:country => germany, :name => "Dülmen", :area_code => "2594") + AreaCode.create(:country => germany, :name => "Olfen", :area_code => "2595") + AreaCode.create(:country => germany, :name => "Nordkirchen", :area_code => "2596") + AreaCode.create(:country => germany, :name => "Senden Westf", :area_code => "2597") + AreaCode.create(:country => germany, :name => "Senden-Ottmarsbocholt", :area_code => "2598") + AreaCode.create(:country => germany, :name => "Ascheberg-Herbern", :area_code => "2599") + AreaCode.create(:country => germany, :name => "Nauort", :area_code => "2601") + AreaCode.create(:country => germany, :name => "Montabaur", :area_code => "2602") + AreaCode.create(:country => germany, :name => "Bad Ems", :area_code => "2603") + AreaCode.create(:country => germany, :name => "Nassau Lahn", :area_code => "2604") + AreaCode.create(:country => germany, :name => "Löf", :area_code => "2605") + AreaCode.create(:country => germany, :name => "Winningen Mosel", :area_code => "2606") + AreaCode.create(:country => germany, :name => "Kobern-Gondorf", :area_code => "2607") + AreaCode.create(:country => germany, :name => "Welschneudorf", :area_code => "2608") + AreaCode.create(:country => germany, :name => "Koblenz a Rhein", :area_code => "261") + AreaCode.create(:country => germany, :name => "Neuhäusel Westerw", :area_code => "2620") + AreaCode.create(:country => germany, :name => "Lahnstein", :area_code => "2621") + AreaCode.create(:country => germany, :name => "Bendorf Rhein", :area_code => "2622") + AreaCode.create(:country => germany, :name => "Ransbach-Baumbach", :area_code => "2623") + AreaCode.create(:country => germany, :name => "Höhr-Grenzhausen", :area_code => "2624") + AreaCode.create(:country => germany, :name => "Ochtendung", :area_code => "2625") + AreaCode.create(:country => germany, :name => "Selters Westerwald", :area_code => "2626") + AreaCode.create(:country => germany, :name => "Braubach", :area_code => "2627") + AreaCode.create(:country => germany, :name => "Rhens", :area_code => "2628") + AreaCode.create(:country => germany, :name => "Mülheim-Kärlich", :area_code => "2630") + AreaCode.create(:country => germany, :name => "Neuwied", :area_code => "2631") + AreaCode.create(:country => germany, :name => "Andernach", :area_code => "2632") + AreaCode.create(:country => germany, :name => "Brohl-Lützing", :area_code => "2633") + AreaCode.create(:country => germany, :name => "Rengsdorf", :area_code => "2634") + AreaCode.create(:country => germany, :name => "Rheinbrohl", :area_code => "2635") + AreaCode.create(:country => germany, :name => "Burgbrohl", :area_code => "2636") + AreaCode.create(:country => germany, :name => "Weissenthurm", :area_code => "2637") + AreaCode.create(:country => germany, :name => "Waldbreitbach", :area_code => "2638") + AreaCode.create(:country => germany, :name => "Anhausen Kr Neuwied", :area_code => "2639") + AreaCode.create(:country => germany, :name => "Bad Neuenahr-Ahrweiler", :area_code => "2641") + AreaCode.create(:country => germany, :name => "Remagen", :area_code => "2642") + AreaCode.create(:country => germany, :name => "Altenahr", :area_code => "2643") + AreaCode.create(:country => germany, :name => "Linz am Rhein", :area_code => "2644") + AreaCode.create(:country => germany, :name => "Vettelschoss", :area_code => "2645") + AreaCode.create(:country => germany, :name => "Königsfeld Eifel", :area_code => "2646") + AreaCode.create(:country => germany, :name => "Kesseling", :area_code => "2647") + AreaCode.create(:country => germany, :name => "Mayen", :area_code => "2651") + AreaCode.create(:country => germany, :name => "Mendig", :area_code => "2652") + AreaCode.create(:country => germany, :name => "Kaisersesch", :area_code => "2653") + AreaCode.create(:country => germany, :name => "Polch", :area_code => "2654") + AreaCode.create(:country => germany, :name => "Weibern", :area_code => "2655") + AreaCode.create(:country => germany, :name => "Virneburg", :area_code => "2656") + AreaCode.create(:country => germany, :name => "Uersfeld", :area_code => "2657") + AreaCode.create(:country => germany, :name => "Bad Marienberg Westerwald", :area_code => "2661") + AreaCode.create(:country => germany, :name => "Hachenburg", :area_code => "2662") + AreaCode.create(:country => germany, :name => "Westerburg Westerw", :area_code => "2663") + AreaCode.create(:country => germany, :name => "Rennerod", :area_code => "2664") + AreaCode.create(:country => germany, :name => "Freilingen Westerw", :area_code => "2666") + AreaCode.create(:country => germany, :name => "Stein-Neukirch", :area_code => "2667") + AreaCode.create(:country => germany, :name => "Cochem", :area_code => "2671") + AreaCode.create(:country => germany, :name => "Treis-Karden", :area_code => "2672") + AreaCode.create(:country => germany, :name => "Ellenz-Poltersdorf", :area_code => "2673") + AreaCode.create(:country => germany, :name => "Bad Bertrich", :area_code => "2674") + AreaCode.create(:country => germany, :name => "Ediger-Eller", :area_code => "2675") + AreaCode.create(:country => germany, :name => "Ulmen", :area_code => "2676") + AreaCode.create(:country => germany, :name => "Lutzerath", :area_code => "2677") + AreaCode.create(:country => germany, :name => "Büchel b Cochem", :area_code => "2678") + AreaCode.create(:country => germany, :name => "Mündersbach", :area_code => "2680") + AreaCode.create(:country => germany, :name => "Altenkirchen Westerwald", :area_code => "2681") + AreaCode.create(:country => germany, :name => "Hamm Sieg", :area_code => "2682") + AreaCode.create(:country => germany, :name => "Asbach Westerw", :area_code => "2683") + AreaCode.create(:country => germany, :name => "Puderbach Westerw", :area_code => "2684") + AreaCode.create(:country => germany, :name => "Flammersfeld", :area_code => "2685") + AreaCode.create(:country => germany, :name => "Weyerbusch", :area_code => "2686") + AreaCode.create(:country => germany, :name => "Horhausen Westerwald", :area_code => "2687") + AreaCode.create(:country => germany, :name => "Kroppach", :area_code => "2688") + AreaCode.create(:country => germany, :name => "Dierdorf", :area_code => "2689") + AreaCode.create(:country => germany, :name => "Adenau", :area_code => "2691") + AreaCode.create(:country => germany, :name => "Kelberg", :area_code => "2692") + AreaCode.create(:country => germany, :name => "Antweiler", :area_code => "2693") + AreaCode.create(:country => germany, :name => "Wershofen", :area_code => "2694") + AreaCode.create(:country => germany, :name => "Insul", :area_code => "2695") + AreaCode.create(:country => germany, :name => "Nohn Eifel", :area_code => "2696") + AreaCode.create(:country => germany, :name => "Blankenheim-Ahrhütte", :area_code => "2697") + AreaCode.create(:country => germany, :name => "Siegen", :area_code => "271") + AreaCode.create(:country => germany, :name => "Lennestadt", :area_code => "2721") + AreaCode.create(:country => germany, :name => "Attendorn", :area_code => "2722") + AreaCode.create(:country => germany, :name => "Kirchhundem", :area_code => "2723") + AreaCode.create(:country => germany, :name => "Finnentrop-Serkenrode", :area_code => "2724") + AreaCode.create(:country => germany, :name => "Lennestadt-Oedingen", :area_code => "2725") + AreaCode.create(:country => germany, :name => "Kreuztal", :area_code => "2732") + AreaCode.create(:country => germany, :name => "Hilchenbach", :area_code => "2733") + AreaCode.create(:country => germany, :name => "Freudenberg Westf", :area_code => "2734") + AreaCode.create(:country => germany, :name => "Neunkirchen Siegerl", :area_code => "2735") + AreaCode.create(:country => germany, :name => "Burbach Siegerl", :area_code => "2736") + AreaCode.create(:country => germany, :name => "Netphen-Deuz", :area_code => "2737") + AreaCode.create(:country => germany, :name => "Netphen", :area_code => "2738") + AreaCode.create(:country => germany, :name => "Wilnsdorf", :area_code => "2739") + AreaCode.create(:country => germany, :name => "Betzdorf", :area_code => "2741") + AreaCode.create(:country => germany, :name => "Wissen", :area_code => "2742") + AreaCode.create(:country => germany, :name => "Daaden", :area_code => "2743") + AreaCode.create(:country => germany, :name => "Herdorf", :area_code => "2744") + AreaCode.create(:country => germany, :name => "Brachbach Sieg", :area_code => "2745") + AreaCode.create(:country => germany, :name => "Molzhain", :area_code => "2747") + AreaCode.create(:country => germany, :name => "Diedenshausen", :area_code => "2750") + AreaCode.create(:country => germany, :name => "Bad Berleburg", :area_code => "2751") + AreaCode.create(:country => germany, :name => "Bad Laasphe", :area_code => "2752") + AreaCode.create(:country => germany, :name => "Erndtebrück", :area_code => "2753") + AreaCode.create(:country => germany, :name => "Bad Laasphe-Feudingen", :area_code => "2754") + AreaCode.create(:country => germany, :name => "Bad Berleburg-Schwarzenau", :area_code => "2755") + AreaCode.create(:country => germany, :name => "Bad Berleburg-Girkhausen", :area_code => "2758") + AreaCode.create(:country => germany, :name => "Bad Berleburg-Aue", :area_code => "2759") + AreaCode.create(:country => germany, :name => "Olpe Biggesee", :area_code => "2761") + AreaCode.create(:country => germany, :name => "Wenden Südsauerland", :area_code => "2762") + AreaCode.create(:country => germany, :name => "Drolshagen-Bleche", :area_code => "2763") + AreaCode.create(:country => germany, :name => "Welschen Ennest", :area_code => "2764") + AreaCode.create(:country => germany, :name => "Eschenburg", :area_code => "2770") + AreaCode.create(:country => germany, :name => "Dillenburg", :area_code => "2771") + AreaCode.create(:country => germany, :name => "Herborn Hess", :area_code => "2772") + AreaCode.create(:country => germany, :name => "Haiger", :area_code => "2773") + AreaCode.create(:country => germany, :name => "Dietzhölztal", :area_code => "2774") + AreaCode.create(:country => germany, :name => "Driedorf", :area_code => "2775") + AreaCode.create(:country => germany, :name => "Bad Endbach-Hartenrod", :area_code => "2776") + AreaCode.create(:country => germany, :name => "Breitscheid Hess", :area_code => "2777") + AreaCode.create(:country => germany, :name => "Siegbach", :area_code => "2778") + AreaCode.create(:country => germany, :name => "Greifenstein-Beilstein", :area_code => "2779") + AreaCode.create(:country => germany, :name => "Xanten", :area_code => "2801") + AreaCode.create(:country => germany, :name => "Alpen", :area_code => "2802") + AreaCode.create(:country => germany, :name => "Wesel-Büderich", :area_code => "2803") + AreaCode.create(:country => germany, :name => "Xanten-Marienbaum", :area_code => "2804") + AreaCode.create(:country => germany, :name => "Wesel", :area_code => "281") + AreaCode.create(:country => germany, :name => "Kleve Niederrhein", :area_code => "2821") + AreaCode.create(:country => germany, :name => "Emmerich", :area_code => "2822") + AreaCode.create(:country => germany, :name => "Goch", :area_code => "2823") + AreaCode.create(:country => germany, :name => "Kalkar", :area_code => "2824") + AreaCode.create(:country => germany, :name => "Uedem", :area_code => "2825") + AreaCode.create(:country => germany, :name => "Kranenburg Niederrhein", :area_code => "2826") + AreaCode.create(:country => germany, :name => "Goch-Hassum", :area_code => "2827") + AreaCode.create(:country => germany, :name => "Emmerich-Elten", :area_code => "2828") + AreaCode.create(:country => germany, :name => "Geldern", :area_code => "2831") + AreaCode.create(:country => germany, :name => "Kevelaer", :area_code => "2832") + AreaCode.create(:country => germany, :name => "Kerken", :area_code => "2833") + AreaCode.create(:country => germany, :name => "Straelen", :area_code => "2834") + AreaCode.create(:country => germany, :name => "Issum", :area_code => "2835") + AreaCode.create(:country => germany, :name => "Wachtendonk", :area_code => "2836") + AreaCode.create(:country => germany, :name => "Weeze", :area_code => "2837") + AreaCode.create(:country => germany, :name => "Sonsbeck", :area_code => "2838") + AreaCode.create(:country => germany, :name => "Straelen-Herongen", :area_code => "2839") + AreaCode.create(:country => germany, :name => "Moers", :area_code => "2841") + AreaCode.create(:country => germany, :name => "Kamp-Lintfort", :area_code => "2842") + AreaCode.create(:country => germany, :name => "Rheinberg", :area_code => "2843") + AreaCode.create(:country => germany, :name => "Rheinberg-Orsoy", :area_code => "2844") + AreaCode.create(:country => germany, :name => "Neukirchen-Vluyn", :area_code => "2845") + AreaCode.create(:country => germany, :name => "Rees-Haldern", :area_code => "2850") + AreaCode.create(:country => germany, :name => "Rees", :area_code => "2851") + AreaCode.create(:country => germany, :name => "Hamminkeln", :area_code => "2852") + AreaCode.create(:country => germany, :name => "Schermbeck", :area_code => "2853") + AreaCode.create(:country => germany, :name => "Voerde Niederrhein", :area_code => "2855") + AreaCode.create(:country => germany, :name => "Hamminkeln-Brünen", :area_code => "2856") + AreaCode.create(:country => germany, :name => "Rees-Mehr", :area_code => "2857") + AreaCode.create(:country => germany, :name => "Hünxe", :area_code => "2858") + AreaCode.create(:country => germany, :name => "Wesel-Bislich", :area_code => "2859") + AreaCode.create(:country => germany, :name => "Borken Westf", :area_code => "2861") + AreaCode.create(:country => germany, :name => "Südlohn", :area_code => "2862") + AreaCode.create(:country => germany, :name => "Velen", :area_code => "2863") + AreaCode.create(:country => germany, :name => "Reken", :area_code => "2864") + AreaCode.create(:country => germany, :name => "Raesfeld", :area_code => "2865") + AreaCode.create(:country => germany, :name => "Dorsten-Rhade", :area_code => "2866") + AreaCode.create(:country => germany, :name => "Heiden Kr Borken", :area_code => "2867") + AreaCode.create(:country => germany, :name => "Bocholt", :area_code => "2871") + AreaCode.create(:country => germany, :name => "Rhede Westf", :area_code => "2872") + AreaCode.create(:country => germany, :name => "Isselburg-Werth", :area_code => "2873") + AreaCode.create(:country => germany, :name => "Isselburg", :area_code => "2874") + AreaCode.create(:country => germany, :name => "Warstein", :area_code => "2902") + AreaCode.create(:country => germany, :name => "Meschede-Freienohl", :area_code => "2903") + AreaCode.create(:country => germany, :name => "Bestwig", :area_code => "2904") + AreaCode.create(:country => germany, :name => "Bestwig-Ramsbeck", :area_code => "2905") + AreaCode.create(:country => germany, :name => "Meschede", :area_code => "291") + AreaCode.create(:country => germany, :name => "Soest", :area_code => "2921") + AreaCode.create(:country => germany, :name => "Werl", :area_code => "2922") + AreaCode.create(:country => germany, :name => "Lippetal-Herzfeld", :area_code => "2923") + AreaCode.create(:country => germany, :name => "Möhnesee", :area_code => "2924") + AreaCode.create(:country => germany, :name => "Warstein-Allagen", :area_code => "2925") + AreaCode.create(:country => germany, :name => "Neuengeseke", :area_code => "2927") + AreaCode.create(:country => germany, :name => "Soest-Ostönnen", :area_code => "2928") + AreaCode.create(:country => germany, :name => "Arnsberg", :area_code => "2931") + AreaCode.create(:country => germany, :name => "Neheim-Hüsten", :area_code => "2932") + AreaCode.create(:country => germany, :name => "Sundern Sauerland", :area_code => "2933") + AreaCode.create(:country => germany, :name => "Sundern-Altenhellefeld", :area_code => "2934") + AreaCode.create(:country => germany, :name => "Sundern-Hachen", :area_code => "2935") + AreaCode.create(:country => germany, :name => "Arnsberg-Oeventrop", :area_code => "2937") + AreaCode.create(:country => germany, :name => "Ense", :area_code => "2938") + AreaCode.create(:country => germany, :name => "Lippstadt", :area_code => "2941") + AreaCode.create(:country => germany, :name => "Geseke", :area_code => "2942") + AreaCode.create(:country => germany, :name => "Erwitte", :area_code => "2943") + AreaCode.create(:country => germany, :name => "Rietberg-Mastholte", :area_code => "2944") + AreaCode.create(:country => germany, :name => "Lippstadt-Benninghausen", :area_code => "2945") + AreaCode.create(:country => germany, :name => "Anröchte", :area_code => "2947") + AreaCode.create(:country => germany, :name => "Lippstadt-Rebbeke", :area_code => "2948") + AreaCode.create(:country => germany, :name => "Büren", :area_code => "2951") + AreaCode.create(:country => germany, :name => "Rüthen", :area_code => "2952") + AreaCode.create(:country => germany, :name => "Wünnenberg", :area_code => "2953") + AreaCode.create(:country => germany, :name => "Rüthen-Oestereiden", :area_code => "2954") + AreaCode.create(:country => germany, :name => "Büren-Wewelsburg", :area_code => "2955") + AreaCode.create(:country => germany, :name => "Wünnenberg-Haaren", :area_code => "2957") + AreaCode.create(:country => germany, :name => "Büren-Harth", :area_code => "2958") + AreaCode.create(:country => germany, :name => "Brilon", :area_code => "2961") + AreaCode.create(:country => germany, :name => "Olsberg", :area_code => "2962") + AreaCode.create(:country => germany, :name => "Brilon-Messinghausen", :area_code => "2963") + AreaCode.create(:country => germany, :name => "Brilon-Alme", :area_code => "2964") + AreaCode.create(:country => germany, :name => "Schmallenberg-Dorlar", :area_code => "2971") + AreaCode.create(:country => germany, :name => "Schmallenberg", :area_code => "2972") + AreaCode.create(:country => germany, :name => "Eslohe Sauerland", :area_code => "2973") + AreaCode.create(:country => germany, :name => "Schmallenberg-Fredeburg", :area_code => "2974") + AreaCode.create(:country => germany, :name => "Schmallenberg-Oberkirchen", :area_code => "2975") + AreaCode.create(:country => germany, :name => "Schmallenberg-Bödefeld", :area_code => "2977") + AreaCode.create(:country => germany, :name => "Winterberg Westf", :area_code => "2981") + AreaCode.create(:country => germany, :name => "Medebach", :area_code => "2982") + AreaCode.create(:country => germany, :name => "Winterberg-Siedlinghausen", :area_code => "2983") + AreaCode.create(:country => germany, :name => "Hallenberg", :area_code => "2984") + AreaCode.create(:country => germany, :name => "Winterberg-Niedersfeld", :area_code => "2985") + AreaCode.create(:country => germany, :name => "Marsberg-Bredelar", :area_code => "2991") + AreaCode.create(:country => germany, :name => "Marsberg", :area_code => "2992") + AreaCode.create(:country => germany, :name => "Marsberg-Canstein", :area_code => "2993") + AreaCode.create(:country => germany, :name => "Marsberg-Westheim", :area_code => "2994") + AreaCode.create(:country => germany, :name => "Berlin", :area_code => "30") + AreaCode.create(:country => germany, :name => "Oranienburg", :area_code => "3301") + AreaCode.create(:country => germany, :name => "Hennigsdorf", :area_code => "3302") + AreaCode.create(:country => germany, :name => "Birkenwerder", :area_code => "3303") + AreaCode.create(:country => germany, :name => "Velten", :area_code => "3304") + AreaCode.create(:country => germany, :name => "Nassenheide", :area_code => "33051") + AreaCode.create(:country => germany, :name => "Zehlendorf Kr Oberhavel", :area_code => "33053") + AreaCode.create(:country => germany, :name => "Liebenwalde", :area_code => "33054") + AreaCode.create(:country => germany, :name => "Kremmen", :area_code => "33055") + AreaCode.create(:country => germany, :name => "Mühlenbeck Kr Oberhavel", :area_code => "33056") + AreaCode.create(:country => germany, :name => "Gransee", :area_code => "3306") + AreaCode.create(:country => germany, :name => "Zehdenick", :area_code => "3307") + AreaCode.create(:country => germany, :name => "Marienthal Kr Oberhavel", :area_code => "33080") + AreaCode.create(:country => germany, :name => "Menz Kr Oberhavel", :area_code => "33082") + AreaCode.create(:country => germany, :name => "Schulzendorf Kr Oberhavel", :area_code => "33083") + AreaCode.create(:country => germany, :name => "Gutengermendorf", :area_code => "33084") + AreaCode.create(:country => germany, :name => "Seilershof", :area_code => "33085") + AreaCode.create(:country => germany, :name => "Grieben Kr Oberhavel", :area_code => "33086") + AreaCode.create(:country => germany, :name => "Bredereiche", :area_code => "33087") + AreaCode.create(:country => germany, :name => "Falkenthal", :area_code => "33088") + AreaCode.create(:country => germany, :name => "Himmelpfort", :area_code => "33089") + AreaCode.create(:country => germany, :name => "Fürstenberg Havel", :area_code => "33093") + AreaCode.create(:country => germany, :name => "Löwenberg", :area_code => "33094") + AreaCode.create(:country => germany, :name => "Potsdam", :area_code => "331") + AreaCode.create(:country => germany, :name => "Bergholz-Rehbrücke", :area_code => "33200") + AreaCode.create(:country => germany, :name => "Gross Glienicke", :area_code => "33201") + AreaCode.create(:country => germany, :name => "Töplitz", :area_code => "33202") + AreaCode.create(:country => germany, :name => "Kleinmachnow", :area_code => "33203") + AreaCode.create(:country => germany, :name => "Beelitz Mark", :area_code => "33204") + AreaCode.create(:country => germany, :name => "Michendorf", :area_code => "33205") + AreaCode.create(:country => germany, :name => "Fichtenwalde", :area_code => "33206") + AreaCode.create(:country => germany, :name => "Gross Kreutz", :area_code => "33207") + AreaCode.create(:country => germany, :name => "Fahrland", :area_code => "33208") + AreaCode.create(:country => germany, :name => "Caputh", :area_code => "33209") + AreaCode.create(:country => germany, :name => "Nauen Brandenb", :area_code => "3321") + AreaCode.create(:country => germany, :name => "Falkensee", :area_code => "3322") + AreaCode.create(:country => germany, :name => "Börnicke Kr Havelland", :area_code => "33230") + AreaCode.create(:country => germany, :name => "Pausin", :area_code => "33231") + AreaCode.create(:country => germany, :name => "Brieselang", :area_code => "33232") + AreaCode.create(:country => germany, :name => "Ketzin", :area_code => "33233") + AreaCode.create(:country => germany, :name => "Wustermark", :area_code => "33234") + AreaCode.create(:country => germany, :name => "Friesack", :area_code => "33235") + AreaCode.create(:country => germany, :name => "Paulinenaue", :area_code => "33237") + AreaCode.create(:country => germany, :name => "Senzke", :area_code => "33238") + AreaCode.create(:country => germany, :name => "Gross Behnitz", :area_code => "33239") + AreaCode.create(:country => germany, :name => "Werder Havel", :area_code => "3327") + AreaCode.create(:country => germany, :name => "Teltow", :area_code => "3328") + AreaCode.create(:country => germany, :name => "Stahnsdorf", :area_code => "3329") + AreaCode.create(:country => germany, :name => "Angermünde", :area_code => "3331") + AreaCode.create(:country => germany, :name => "Schwedt/Oder", :area_code => "3332") + AreaCode.create(:country => germany, :name => "Casekow", :area_code => "33331") + AreaCode.create(:country => germany, :name => "Gartz Oder", :area_code => "33332") + AreaCode.create(:country => germany, :name => "Tantow", :area_code => "33333") + AreaCode.create(:country => germany, :name => "Greiffenberg", :area_code => "33334") + AreaCode.create(:country => germany, :name => "Pinnow Kr Uckermark", :area_code => "33335") + AreaCode.create(:country => germany, :name => "Passow Kr Uckermark", :area_code => "33336") + AreaCode.create(:country => germany, :name => "Altkünkendorf", :area_code => "33337") + AreaCode.create(:country => germany, :name => "Stolpe/Oder", :area_code => "33338") + AreaCode.create(:country => germany, :name => "Eberswalde", :area_code => "3334") + AreaCode.create(:country => germany, :name => "Finowfurt", :area_code => "3335") + AreaCode.create(:country => germany, :name => "Joachimsthal", :area_code => "33361") + AreaCode.create(:country => germany, :name => "Liepe Kr Barnim", :area_code => "33362") + AreaCode.create(:country => germany, :name => "Altenhof Kr Barnim", :area_code => "33363") + AreaCode.create(:country => germany, :name => "Gross Ziethen Kr Barnim", :area_code => "33364") + AreaCode.create(:country => germany, :name => "Lüdersdorf Kr Barnim", :area_code => "33365") + AreaCode.create(:country => germany, :name => "Chorin", :area_code => "33366") + AreaCode.create(:country => germany, :name => "Friedrichswalde Brandenb", :area_code => "33367") + AreaCode.create(:country => germany, :name => "Hohensaaten", :area_code => "33368") + AreaCode.create(:country => germany, :name => "Oderberg", :area_code => "33369") + AreaCode.create(:country => germany, :name => "Biesenthal Brandenb", :area_code => "3337") + AreaCode.create(:country => germany, :name => "Bernau Brandenb", :area_code => "3338") + AreaCode.create(:country => germany, :name => "Gross Schönebeck Kr Barnim", :area_code => "33393") + AreaCode.create(:country => germany, :name => "Blumberg Kr Barnim", :area_code => "33394") + AreaCode.create(:country => germany, :name => "Zerpenschleuse", :area_code => "33395") + AreaCode.create(:country => germany, :name => "Klosterfelde", :area_code => "33396") + AreaCode.create(:country => germany, :name => "Wandlitz", :area_code => "33397") + AreaCode.create(:country => germany, :name => "Werneuchen", :area_code => "33398") + AreaCode.create(:country => germany, :name => "Strausberg", :area_code => "3341") + AreaCode.create(:country => germany, :name => "Neuenhagen b Berlin", :area_code => "3342") + AreaCode.create(:country => germany, :name => "Müncheberg", :area_code => "33432") + AreaCode.create(:country => germany, :name => "Buckow Märk Schweiz", :area_code => "33433") + AreaCode.create(:country => germany, :name => "Herzfelde b Strausberg", :area_code => "33434") + AreaCode.create(:country => germany, :name => "Rehfelde", :area_code => "33435") + AreaCode.create(:country => germany, :name => "Prötzel", :area_code => "33436") + AreaCode.create(:country => germany, :name => "Reichenberg b Strausberg", :area_code => "33437") + AreaCode.create(:country => germany, :name => "Altlandsberg", :area_code => "33438") + AreaCode.create(:country => germany, :name => "Fredersdorf-Vogelsdorf", :area_code => "33439") + AreaCode.create(:country => germany, :name => "Bad Freienwalde", :area_code => "3344") + AreaCode.create(:country => germany, :name => "Heckelberg", :area_code => "33451") + AreaCode.create(:country => germany, :name => "Neulewin", :area_code => "33452") + AreaCode.create(:country => germany, :name => "Wölsickendorf/Wollenberg", :area_code => "33454") + AreaCode.create(:country => germany, :name => "Wriezen", :area_code => "33456") + AreaCode.create(:country => germany, :name => "Altreetz", :area_code => "33457") + AreaCode.create(:country => germany, :name => "Falkenberg Mark", :area_code => "33458") + AreaCode.create(:country => germany, :name => "Seelow", :area_code => "3346") + AreaCode.create(:country => germany, :name => "Lietzen", :area_code => "33470") + AreaCode.create(:country => germany, :name => "Golzow b Seelow", :area_code => "33472") + AreaCode.create(:country => germany, :name => "Zechin", :area_code => "33473") + AreaCode.create(:country => germany, :name => "Neutrebbin", :area_code => "33474") + AreaCode.create(:country => germany, :name => "Letschin", :area_code => "33475") + AreaCode.create(:country => germany, :name => "Neuhardenberg", :area_code => "33476") + AreaCode.create(:country => germany, :name => "Trebnitz b Müncheberg", :area_code => "33477") + AreaCode.create(:country => germany, :name => "Gross Neuendorf", :area_code => "33478") + AreaCode.create(:country => germany, :name => "Küstrin-Kietz", :area_code => "33479") + AreaCode.create(:country => germany, :name => "Frankfurt (Oder)", :area_code => "335") + AreaCode.create(:country => germany, :name => "Podelzig", :area_code => "33601") + AreaCode.create(:country => germany, :name => "Alt Zeschdorf", :area_code => "33602") + AreaCode.create(:country => germany, :name => "Falkenhagen b Seelow", :area_code => "33603") + AreaCode.create(:country => germany, :name => "Lebus", :area_code => "33604") + AreaCode.create(:country => germany, :name => "Boossen", :area_code => "33605") + AreaCode.create(:country => germany, :name => "Müllrose", :area_code => "33606") + AreaCode.create(:country => germany, :name => "Briesen Mark", :area_code => "33607") + AreaCode.create(:country => germany, :name => "Jacobsdorf Mark", :area_code => "33608") + AreaCode.create(:country => germany, :name => "Brieskow-Finkenheerd", :area_code => "33609") + AreaCode.create(:country => germany, :name => "Fürstenwalde Spree", :area_code => "3361") + AreaCode.create(:country => germany, :name => "Erkner", :area_code => "3362") + AreaCode.create(:country => germany, :name => "Bad Saarow-Pieskow", :area_code => "33631") + AreaCode.create(:country => germany, :name => "Hangelsberg", :area_code => "33632") + AreaCode.create(:country => germany, :name => "Spreenhagen", :area_code => "33633") + AreaCode.create(:country => germany, :name => "Berkenbrück Kr Oder-Spree", :area_code => "33634") + AreaCode.create(:country => germany, :name => "Arensdorf Kr Oder-Spree", :area_code => "33635") + AreaCode.create(:country => germany, :name => "Steinhöfel Kr Oder-Spree", :area_code => "33636") + AreaCode.create(:country => germany, :name => "Beerfelde", :area_code => "33637") + AreaCode.create(:country => germany, :name => "Rüdersdorf b Berlin", :area_code => "33638") + AreaCode.create(:country => germany, :name => "Eisenhüttenstadt", :area_code => "3364") + AreaCode.create(:country => germany, :name => "Neuzelle", :area_code => "33652") + AreaCode.create(:country => germany, :name => "Ziltendorf", :area_code => "33653") + AreaCode.create(:country => germany, :name => "Fünfeichen", :area_code => "33654") + AreaCode.create(:country => germany, :name => "Grunow Kr Oder-Spree", :area_code => "33655") + AreaCode.create(:country => germany, :name => "Bahro", :area_code => "33656") + AreaCode.create(:country => germany, :name => "Steinsdorf Brandenb", :area_code => "33657") + AreaCode.create(:country => germany, :name => "Beeskow", :area_code => "3366") + AreaCode.create(:country => germany, :name => "Lieberose", :area_code => "33671") + AreaCode.create(:country => germany, :name => "Pfaffendorf b Beeskow", :area_code => "33672") + AreaCode.create(:country => germany, :name => "Weichensdorf", :area_code => "33673") + AreaCode.create(:country => germany, :name => "Trebatsch", :area_code => "33674") + AreaCode.create(:country => germany, :name => "Tauche", :area_code => "33675") + AreaCode.create(:country => germany, :name => "Friedland b Beeskow", :area_code => "33676") + AreaCode.create(:country => germany, :name => "Glienicke b Beeskow", :area_code => "33677") + AreaCode.create(:country => germany, :name => "Storkow Mark", :area_code => "33678") + AreaCode.create(:country => germany, :name => "Wendisch Rietz", :area_code => "33679") + AreaCode.create(:country => germany, :name => "Grossbeeren", :area_code => "33701") + AreaCode.create(:country => germany, :name => "Wünsdorf", :area_code => "33702") + AreaCode.create(:country => germany, :name => "Sperenberg", :area_code => "33703") + AreaCode.create(:country => germany, :name => "Baruth Mark", :area_code => "33704") + AreaCode.create(:country => germany, :name => "Rangsdorf", :area_code => "33708") + AreaCode.create(:country => germany, :name => "Luckenwalde", :area_code => "3371") + AreaCode.create(:country => germany, :name => "Jüterbog", :area_code => "3372") + AreaCode.create(:country => germany, :name => "Trebbin", :area_code => "33731") + AreaCode.create(:country => germany, :name => "Hennickendorf b Luckenwalde", :area_code => "33732") + AreaCode.create(:country => germany, :name => "Stülpe", :area_code => "33733") + AreaCode.create(:country => germany, :name => "Felgentreu", :area_code => "33734") + AreaCode.create(:country => germany, :name => "Niedergörsdorf", :area_code => "33741") + AreaCode.create(:country => germany, :name => "Oehna Brandenb", :area_code => "33742") + AreaCode.create(:country => germany, :name => "Blönsdorf", :area_code => "33743") + AreaCode.create(:country => germany, :name => "Hohenseefeld", :area_code => "33744") + AreaCode.create(:country => germany, :name => "Petkus", :area_code => "33745") + AreaCode.create(:country => germany, :name => "Werbig b Jüterbog", :area_code => "33746") + AreaCode.create(:country => germany, :name => "Marzahna", :area_code => "33747") + AreaCode.create(:country => germany, :name => "Treuenbrietzen", :area_code => "33748") + AreaCode.create(:country => germany, :name => "Königs Wusterhausen", :area_code => "3375") + AreaCode.create(:country => germany, :name => "Münchehofe Kr Dahme-Spreewald", :area_code => "33760") + AreaCode.create(:country => germany, :name => "Zeuthen", :area_code => "33762") + AreaCode.create(:country => germany, :name => "Bestensee", :area_code => "33763") + AreaCode.create(:country => germany, :name => "Mittenwalde Mark", :area_code => "33764") + AreaCode.create(:country => germany, :name => "Märkisch Buchholz", :area_code => "33765") + AreaCode.create(:country => germany, :name => "Teupitz", :area_code => "33766") + AreaCode.create(:country => germany, :name => "Friedersdorf b Berlin", :area_code => "33767") + AreaCode.create(:country => germany, :name => "Prieros", :area_code => "33768") + AreaCode.create(:country => germany, :name => "Töpchin", :area_code => "33769") + AreaCode.create(:country => germany, :name => "Zossen Brandenb", :area_code => "3377") + AreaCode.create(:country => germany, :name => "Ludwigsfelde", :area_code => "3378") + AreaCode.create(:country => germany, :name => "Mahlow", :area_code => "3379") + AreaCode.create(:country => germany, :name => "Brandenburg an der Havel", :area_code => "3381") + AreaCode.create(:country => germany, :name => "Lehnin", :area_code => "3382") + AreaCode.create(:country => germany, :name => "Ziesar", :area_code => "33830") + AreaCode.create(:country => germany, :name => "Weseram", :area_code => "33831") + AreaCode.create(:country => germany, :name => "Rogäsen", :area_code => "33832") + AreaCode.create(:country => germany, :name => "Wollin b Brandenburg", :area_code => "33833") + AreaCode.create(:country => germany, :name => "Pritzerbe", :area_code => "33834") + AreaCode.create(:country => germany, :name => "Golzow b Brandenburg", :area_code => "33835") + AreaCode.create(:country => germany, :name => "Butzow b Brandenburg", :area_code => "33836") + AreaCode.create(:country => germany, :name => "Brielow", :area_code => "33837") + AreaCode.create(:country => germany, :name => "Päwesin", :area_code => "33838") + AreaCode.create(:country => germany, :name => "Wusterwitz", :area_code => "33839") + AreaCode.create(:country => germany, :name => "Belzig", :area_code => "33841") + AreaCode.create(:country => germany, :name => "Niemegk", :area_code => "33843") + AreaCode.create(:country => germany, :name => "Brück Brandenb", :area_code => "33844") + AreaCode.create(:country => germany, :name => "Borkheide", :area_code => "33845") + AreaCode.create(:country => germany, :name => "Dippmannsdorf", :area_code => "33846") + AreaCode.create(:country => germany, :name => "Görzke", :area_code => "33847") + AreaCode.create(:country => germany, :name => "Raben", :area_code => "33848") + AreaCode.create(:country => germany, :name => "Wiesenburg Mark", :area_code => "33849") + AreaCode.create(:country => germany, :name => "Rathenow", :area_code => "3385") + AreaCode.create(:country => germany, :name => "Premnitz", :area_code => "3386") + AreaCode.create(:country => germany, :name => "Zollchow b Rathenow", :area_code => "33870") + AreaCode.create(:country => germany, :name => "Hohennauen", :area_code => "33872") + AreaCode.create(:country => germany, :name => "Grosswudicke", :area_code => "33873") + AreaCode.create(:country => germany, :name => "Stechow Brandenb", :area_code => "33874") + AreaCode.create(:country => germany, :name => "Rhinow", :area_code => "33875") + AreaCode.create(:country => germany, :name => "Buschow", :area_code => "33876") + AreaCode.create(:country => germany, :name => "Nitzahn", :area_code => "33877") + AreaCode.create(:country => germany, :name => "Nennhausen", :area_code => "33878") + AreaCode.create(:country => germany, :name => "Neuruppin", :area_code => "3391") + AreaCode.create(:country => germany, :name => "Walsleben b Neuruppin", :area_code => "33920") + AreaCode.create(:country => germany, :name => "Zechlinerhütte", :area_code => "33921") + AreaCode.create(:country => germany, :name => "Karwesee", :area_code => "33922") + AreaCode.create(:country => germany, :name => "Flecken Zechlin", :area_code => "33923") + AreaCode.create(:country => germany, :name => "Rägelin", :area_code => "33924") + AreaCode.create(:country => germany, :name => "Wustrau-Altfriesack", :area_code => "33925") + AreaCode.create(:country => germany, :name => "Herzberg Mark", :area_code => "33926") + AreaCode.create(:country => germany, :name => "Wildberg Brandenb", :area_code => "33928") + AreaCode.create(:country => germany, :name => "Gühlen-Glienicke", :area_code => "33929") + AreaCode.create(:country => germany, :name => "Rheinsberg Mark", :area_code => "33931") + AreaCode.create(:country => germany, :name => "Fehrbellin", :area_code => "33932") + AreaCode.create(:country => germany, :name => "Lindow Mark", :area_code => "33933") + AreaCode.create(:country => germany, :name => "Wittstock Dosse", :area_code => "3394") + AreaCode.create(:country => germany, :name => "Pritzwalk", :area_code => "3395") + AreaCode.create(:country => germany, :name => "Heiligengrabe", :area_code => "33962") + AreaCode.create(:country => germany, :name => "Wulfersdorf b Wittstock", :area_code => "33963") + AreaCode.create(:country => germany, :name => "Fretzdorf", :area_code => "33964") + AreaCode.create(:country => germany, :name => "Herzsprung b Wittstock", :area_code => "33965") + AreaCode.create(:country => germany, :name => "Dranse", :area_code => "33966") + AreaCode.create(:country => germany, :name => "Freyenstein", :area_code => "33967") + AreaCode.create(:country => germany, :name => "Meyenburg Kr Prignitz", :area_code => "33968") + AreaCode.create(:country => germany, :name => "Stepenitz", :area_code => "33969") + AreaCode.create(:country => germany, :name => "Neustadt Dosse", :area_code => "33970") + AreaCode.create(:country => germany, :name => "Kyritz Brandenb", :area_code => "33971") + AreaCode.create(:country => germany, :name => "Breddin", :area_code => "33972") + AreaCode.create(:country => germany, :name => "Zernitz b Neustadt Dosse", :area_code => "33973") + AreaCode.create(:country => germany, :name => "Dessow", :area_code => "33974") + AreaCode.create(:country => germany, :name => "Dannenwalde Kr Prignitz", :area_code => "33975") + AreaCode.create(:country => germany, :name => "Wutike", :area_code => "33976") + AreaCode.create(:country => germany, :name => "Gumtow", :area_code => "33977") + AreaCode.create(:country => germany, :name => "Segeletz", :area_code => "33978") + AreaCode.create(:country => germany, :name => "Wusterhausen Dosse", :area_code => "33979") + AreaCode.create(:country => germany, :name => "Putlitz", :area_code => "33981") + AreaCode.create(:country => germany, :name => "Hoppenrade Kr Prignitz", :area_code => "33982") + AreaCode.create(:country => germany, :name => "Gross Pankow Kr Prignitz", :area_code => "33983") + AreaCode.create(:country => germany, :name => "Blumenthal b Pritzwalk", :area_code => "33984") + AreaCode.create(:country => germany, :name => "Falkenhagen Kr Prignitz", :area_code => "33986") + AreaCode.create(:country => germany, :name => "Sadenbeck", :area_code => "33989") + AreaCode.create(:country => germany, :name => "Dessau Anh", :area_code => "340") + AreaCode.create(:country => germany, :name => "Leipzig", :area_code => "341") + AreaCode.create(:country => germany, :name => "Delitzsch", :area_code => "34202") + AreaCode.create(:country => germany, :name => "Zwenkau", :area_code => "34203") + AreaCode.create(:country => germany, :name => "Schkeuditz", :area_code => "34204") + AreaCode.create(:country => germany, :name => "Markranstädt", :area_code => "34205") + AreaCode.create(:country => germany, :name => "Rötha", :area_code => "34206") + AreaCode.create(:country => germany, :name => "Zwochau", :area_code => "34207") + AreaCode.create(:country => germany, :name => "Löbnitz b Delitzsch", :area_code => "34208") + AreaCode.create(:country => germany, :name => "Torgau", :area_code => "3421") + AreaCode.create(:country => germany, :name => "Schildau Gneisenaustadt", :area_code => "34221") + AreaCode.create(:country => germany, :name => "Arzberg b Torgau", :area_code => "34222") + AreaCode.create(:country => germany, :name => "Dommitzsch", :area_code => "34223") + AreaCode.create(:country => germany, :name => "Belgern Sachs", :area_code => "34224") + AreaCode.create(:country => germany, :name => "Eilenburg", :area_code => "3423") + AreaCode.create(:country => germany, :name => "Jesewitz", :area_code => "34241") + AreaCode.create(:country => germany, :name => "Hohenpriessnitz", :area_code => "34242") + AreaCode.create(:country => germany, :name => "Bad Düben", :area_code => "34243") + AreaCode.create(:country => germany, :name => "Mockrehna", :area_code => "34244") + AreaCode.create(:country => germany, :name => "Wurzen", :area_code => "3425") + AreaCode.create(:country => germany, :name => "Kühren b Wurzen", :area_code => "34261") + AreaCode.create(:country => germany, :name => "Falkenhain b Wurzen", :area_code => "34262") + AreaCode.create(:country => germany, :name => "Hohburg", :area_code => "34263") + AreaCode.create(:country => germany, :name => "Borsdorf", :area_code => "34291") + AreaCode.create(:country => germany, :name => "Brandis b Wurzen", :area_code => "34292") + AreaCode.create(:country => germany, :name => "Naunhof b Grimma", :area_code => "34293") + AreaCode.create(:country => germany, :name => "Rackwitz", :area_code => "34294") + AreaCode.create(:country => germany, :name => "Krensitz", :area_code => "34295") + AreaCode.create(:country => germany, :name => "Groitzsch b Pegau", :area_code => "34296") + AreaCode.create(:country => germany, :name => "Liebertwolkwitz", :area_code => "34297") + AreaCode.create(:country => germany, :name => "Taucha b Leipzig", :area_code => "34298") + AreaCode.create(:country => germany, :name => "Gaschwitz", :area_code => "34299") + AreaCode.create(:country => germany, :name => "Döbeln", :area_code => "3431") + AreaCode.create(:country => germany, :name => "Leisnig", :area_code => "34321") + AreaCode.create(:country => germany, :name => "Rosswein", :area_code => "34322") + AreaCode.create(:country => germany, :name => "Ostrau Sachs", :area_code => "34324") + AreaCode.create(:country => germany, :name => "Mochau-Lüttewitz", :area_code => "34325") + AreaCode.create(:country => germany, :name => "Waldheim Sachs", :area_code => "34327") + AreaCode.create(:country => germany, :name => "Hartha b Döbeln", :area_code => "34328") + AreaCode.create(:country => germany, :name => "Borna Stadt", :area_code => "3433") + AreaCode.create(:country => germany, :name => "Geithain", :area_code => "34341") + AreaCode.create(:country => germany, :name => "Neukieritzsch", :area_code => "34342") + AreaCode.create(:country => germany, :name => "Regis-Breitingen", :area_code => "34343") + AreaCode.create(:country => germany, :name => "Kohren-Sahlis", :area_code => "34344") + AreaCode.create(:country => germany, :name => "Bad Lausick", :area_code => "34345") + AreaCode.create(:country => germany, :name => "Narsdorf", :area_code => "34346") + AreaCode.create(:country => germany, :name => "Oelzschau b Borna", :area_code => "34347") + AreaCode.create(:country => germany, :name => "Frohburg", :area_code => "34348") + AreaCode.create(:country => germany, :name => "Oschatz", :area_code => "3435") + AreaCode.create(:country => germany, :name => "Dahlen Sachs", :area_code => "34361") + AreaCode.create(:country => germany, :name => "Mügeln b Oschatz", :area_code => "34362") + AreaCode.create(:country => germany, :name => "Cavertitz", :area_code => "34363") + AreaCode.create(:country => germany, :name => "Wermsdorf", :area_code => "34364") + AreaCode.create(:country => germany, :name => "Grimma", :area_code => "3437") + AreaCode.create(:country => germany, :name => "Colditz", :area_code => "34381") + AreaCode.create(:country => germany, :name => "Nerchau", :area_code => "34382") + AreaCode.create(:country => germany, :name => "Trebsen Mulde", :area_code => "34383") + AreaCode.create(:country => germany, :name => "Grossbothen", :area_code => "34384") + AreaCode.create(:country => germany, :name => "Mutzschen", :area_code => "34385") + AreaCode.create(:country => germany, :name => "Dürrweitzschen b Grimma", :area_code => "34386") + AreaCode.create(:country => germany, :name => "Zeitz", :area_code => "3441") + AreaCode.create(:country => germany, :name => "Osterfeld", :area_code => "34422") + AreaCode.create(:country => germany, :name => "Heuckewalde", :area_code => "34423") + AreaCode.create(:country => germany, :name => "Reuden b Zeitz", :area_code => "34424") + AreaCode.create(:country => germany, :name => "Droyssig", :area_code => "34425") + AreaCode.create(:country => germany, :name => "Kayna", :area_code => "34426") + AreaCode.create(:country => germany, :name => "Weissenfels Sachs-Anh", :area_code => "3443") + AreaCode.create(:country => germany, :name => "Hohenmölsen", :area_code => "34441") + AreaCode.create(:country => germany, :name => "Teuchern", :area_code => "34443") + AreaCode.create(:country => germany, :name => "Lützen", :area_code => "34444") + AreaCode.create(:country => germany, :name => "Stößen", :area_code => "34445") + AreaCode.create(:country => germany, :name => "Grosskorbetha", :area_code => "34446") + AreaCode.create(:country => germany, :name => "Naumburg Saale", :area_code => "3445") + AreaCode.create(:country => germany, :name => "Nebra Unstrut", :area_code => "34461") + AreaCode.create(:country => germany, :name => "Laucha Unstrut", :area_code => "34462") + AreaCode.create(:country => germany, :name => "Bad Kösen", :area_code => "34463") + AreaCode.create(:country => germany, :name => "Freyburg Unstrut", :area_code => "34464") + AreaCode.create(:country => germany, :name => "Bad Bibra", :area_code => "34465") + AreaCode.create(:country => germany, :name => "Janisroda", :area_code => "34466") + AreaCode.create(:country => germany, :name => "Eckartsberga", :area_code => "34467") + AreaCode.create(:country => germany, :name => "Altenburg Thür", :area_code => "3447") + AreaCode.create(:country => germany, :name => "Meuselwitz Thür", :area_code => "3448") + AreaCode.create(:country => germany, :name => "Schmölln Thür", :area_code => "34491") + AreaCode.create(:country => germany, :name => "Lucka", :area_code => "34492") + AreaCode.create(:country => germany, :name => "Gößnitz Thür", :area_code => "34493") + AreaCode.create(:country => germany, :name => "Ehrenhain", :area_code => "34494") + AreaCode.create(:country => germany, :name => "Dobitschen", :area_code => "34495") + AreaCode.create(:country => germany, :name => "Nöbdenitz", :area_code => "34496") + AreaCode.create(:country => germany, :name => "Langenleuba-Niederhain", :area_code => "34497") + AreaCode.create(:country => germany, :name => "Rositz", :area_code => "34498") + AreaCode.create(:country => germany, :name => "Halle Saale", :area_code => "345") + AreaCode.create(:country => germany, :name => "Ostrau Saalkreis", :area_code => "34600") + AreaCode.create(:country => germany, :name => "Teutschenthal", :area_code => "34601") + AreaCode.create(:country => germany, :name => "Landsberg Sachs-Anh", :area_code => "34602") + AreaCode.create(:country => germany, :name => "Nauendorf Sachs-Anh", :area_code => "34603") + AreaCode.create(:country => germany, :name => "Niemberg", :area_code => "34604") + AreaCode.create(:country => germany, :name => "Gröbers", :area_code => "34605") + AreaCode.create(:country => germany, :name => "Teicha Sachs-Anh", :area_code => "34606") + AreaCode.create(:country => germany, :name => "Wettin", :area_code => "34607") + AreaCode.create(:country => germany, :name => "Salzmünde", :area_code => "34609") + AreaCode.create(:country => germany, :name => "Merseburg Saale", :area_code => "3461") + AreaCode.create(:country => germany, :name => "Bad Dürrenberg", :area_code => "3462") + AreaCode.create(:country => germany, :name => "Mücheln Geiseltal", :area_code => "34632") + AreaCode.create(:country => germany, :name => "Braunsbedra", :area_code => "34633") + AreaCode.create(:country => germany, :name => "Bad Lauchstädt", :area_code => "34635") + AreaCode.create(:country => germany, :name => "Schafstädt", :area_code => "34636") + AreaCode.create(:country => germany, :name => "Frankleben", :area_code => "34637") + AreaCode.create(:country => germany, :name => "Zöschen", :area_code => "34638") + AreaCode.create(:country => germany, :name => "Wallendorf Luppe", :area_code => "34639") + AreaCode.create(:country => germany, :name => "Sangerhausen", :area_code => "3464") + AreaCode.create(:country => germany, :name => "Rossla", :area_code => "34651") + AreaCode.create(:country => germany, :name => "Allstedt", :area_code => "34652") + AreaCode.create(:country => germany, :name => "Rottleberode", :area_code => "34653") + AreaCode.create(:country => germany, :name => "Stolberg Harz", :area_code => "34654") + AreaCode.create(:country => germany, :name => "Wallhausen Sachs-Anh", :area_code => "34656") + AreaCode.create(:country => germany, :name => "Hayn Harz", :area_code => "34658") + AreaCode.create(:country => germany, :name => "Blankenheim b Sangerhausen", :area_code => "34659") + AreaCode.create(:country => germany, :name => "Artern Unstrut", :area_code => "3466") + AreaCode.create(:country => germany, :name => "Bad Frankenhausen Kyffhäuser", :area_code => "34671") + AreaCode.create(:country => germany, :name => "Rossleben", :area_code => "34672") + AreaCode.create(:country => germany, :name => "Heldrungen", :area_code => "34673") + AreaCode.create(:country => germany, :name => "Könnern", :area_code => "34691") + AreaCode.create(:country => germany, :name => "Alsleben Saale", :area_code => "34692") + AreaCode.create(:country => germany, :name => "Bernburg Saale", :area_code => "3471") + AreaCode.create(:country => germany, :name => "Nienburg Saale", :area_code => "34721") + AreaCode.create(:country => germany, :name => "Preusslitz", :area_code => "34722") + AreaCode.create(:country => germany, :name => "Aschersleben Sachs-Anh", :area_code => "3473") + AreaCode.create(:country => germany, :name => "Frose", :area_code => "34741") + AreaCode.create(:country => germany, :name => "Sylda", :area_code => "34742") + AreaCode.create(:country => germany, :name => "Ermsleben", :area_code => "34743") + AreaCode.create(:country => germany, :name => "Winningen Sachs-Anh", :area_code => "34745") + AreaCode.create(:country => germany, :name => "Giersleben", :area_code => "34746") + AreaCode.create(:country => germany, :name => "Lutherstadt Eisleben", :area_code => "3475") + AreaCode.create(:country => germany, :name => "Hettstedt Sachs-Anh", :area_code => "3476") + AreaCode.create(:country => germany, :name => "Querfurt", :area_code => "34771") + AreaCode.create(:country => germany, :name => "Helbra", :area_code => "34772") + AreaCode.create(:country => germany, :name => "Schwittersdorf", :area_code => "34773") + AreaCode.create(:country => germany, :name => "Röblingen am See", :area_code => "34774") + AreaCode.create(:country => germany, :name => "Wippra", :area_code => "34775") + AreaCode.create(:country => germany, :name => "Rothenschirmbach", :area_code => "34776") + AreaCode.create(:country => germany, :name => "Abberode", :area_code => "34779") + AreaCode.create(:country => germany, :name => "Greifenhagen", :area_code => "34781") + AreaCode.create(:country => germany, :name => "Mansfeld Südharz", :area_code => "34782") + AreaCode.create(:country => germany, :name => "Gerbstedt", :area_code => "34783") + AreaCode.create(:country => germany, :name => "Sandersleben", :area_code => "34785") + AreaCode.create(:country => germany, :name => "Roßlau Elbe", :area_code => "34901") + AreaCode.create(:country => germany, :name => "Coswig Anhalt", :area_code => "34903") + AreaCode.create(:country => germany, :name => "Oranienbaum", :area_code => "34904") + AreaCode.create(:country => germany, :name => "Wörlitz", :area_code => "34905") + AreaCode.create(:country => germany, :name => "Raguhn", :area_code => "34906") + AreaCode.create(:country => germany, :name => "Jeber-Bergfrieden", :area_code => "34907") + AreaCode.create(:country => germany, :name => "Aken Elbe", :area_code => "34909") + AreaCode.create(:country => germany, :name => "Lutherstadt Wittenberg", :area_code => "3491") + AreaCode.create(:country => germany, :name => "Kropstädt", :area_code => "34920") + AreaCode.create(:country => germany, :name => "Kemberg", :area_code => "34921") + AreaCode.create(:country => germany, :name => "Mühlanger", :area_code => "34922") + AreaCode.create(:country => germany, :name => "Cobbelsdorf", :area_code => "34923") + AreaCode.create(:country => germany, :name => "Zahna", :area_code => "34924") + AreaCode.create(:country => germany, :name => "Bad Schmiedeberg", :area_code => "34925") + AreaCode.create(:country => germany, :name => "Pretzsch Elbe", :area_code => "34926") + AreaCode.create(:country => germany, :name => "Globig-Bleddin", :area_code => "34927") + AreaCode.create(:country => germany, :name => "Seegrehna", :area_code => "34928") + AreaCode.create(:country => germany, :name => "Straach", :area_code => "34929") + AreaCode.create(:country => germany, :name => "Bitterfeld", :area_code => "3493") + AreaCode.create(:country => germany, :name => "Wolfen", :area_code => "3494") + AreaCode.create(:country => germany, :name => "Gräfenhainichen", :area_code => "34953") + AreaCode.create(:country => germany, :name => "Roitzsch b Bitterfeld", :area_code => "34954") + AreaCode.create(:country => germany, :name => "Gossa", :area_code => "34955") + AreaCode.create(:country => germany, :name => "Zörbig", :area_code => "34956") + AreaCode.create(:country => germany, :name => "Köthen Anhalt", :area_code => "3496") + AreaCode.create(:country => germany, :name => "Osternienburg", :area_code => "34973") + AreaCode.create(:country => germany, :name => "Görzig Kr Köthen", :area_code => "34975") + AreaCode.create(:country => germany, :name => "Gröbzig", :area_code => "34976") + AreaCode.create(:country => germany, :name => "Quellendorf", :area_code => "34977") + AreaCode.create(:country => germany, :name => "Radegast Kr Köthen", :area_code => "34978") + AreaCode.create(:country => germany, :name => "Wulfen Sachs-Anh", :area_code => "34979") + AreaCode.create(:country => germany, :name => "Pirna", :area_code => "3501") + AreaCode.create(:country => germany, :name => "Struppen", :area_code => "35020") + AreaCode.create(:country => germany, :name => "Königstein Sächs Schweiz", :area_code => "35021") + AreaCode.create(:country => germany, :name => "Bad Schandau", :area_code => "35022") + AreaCode.create(:country => germany, :name => "Bad Gottleuba", :area_code => "35023") + AreaCode.create(:country => germany, :name => "Stadt Wehlen", :area_code => "35024") + AreaCode.create(:country => germany, :name => "Liebstadt", :area_code => "35025") + AreaCode.create(:country => germany, :name => "Dürrröhrsdorf-Dittersbach", :area_code => "35026") + AreaCode.create(:country => germany, :name => "Weesenstein", :area_code => "35027") + AreaCode.create(:country => germany, :name => "Krippen", :area_code => "35028") + AreaCode.create(:country => germany, :name => "Langenhennersdorf", :area_code => "35032") + AreaCode.create(:country => germany, :name => "Rosenthal Sächs Schweiz", :area_code => "35033") + AreaCode.create(:country => germany, :name => "Dippoldiswalde", :area_code => "3504") + AreaCode.create(:country => germany, :name => "Kipsdorf Kurort", :area_code => "35052") + AreaCode.create(:country => germany, :name => "Glashütte Sachs", :area_code => "35053") + AreaCode.create(:country => germany, :name => "Lauenstein Sachs", :area_code => "35054") + AreaCode.create(:country => germany, :name => "Höckendorf b Dippoldiswalde", :area_code => "35055") + AreaCode.create(:country => germany, :name => "Altenberg Sachs", :area_code => "35056") + AreaCode.create(:country => germany, :name => "Hermsdorf Erzgeb", :area_code => "35057") + AreaCode.create(:country => germany, :name => "Pretzschendorf", :area_code => "35058") + AreaCode.create(:country => germany, :name => "Dresden", :area_code => "351") + AreaCode.create(:country => germany, :name => "Arnsdorf b Dresden", :area_code => "35200") + AreaCode.create(:country => germany, :name => "Langebrück", :area_code => "35201") + AreaCode.create(:country => germany, :name => "Klingenberg Sachs", :area_code => "35202") + AreaCode.create(:country => germany, :name => "Tharandt", :area_code => "35203") + AreaCode.create(:country => germany, :name => "Wilsdruff", :area_code => "35204") + AreaCode.create(:country => germany, :name => "Ottendorf-Okrilla", :area_code => "35205") + AreaCode.create(:country => germany, :name => "Kreischa b Dresden", :area_code => "35206") + AreaCode.create(:country => germany, :name => "Moritzburg", :area_code => "35207") + AreaCode.create(:country => germany, :name => "Radeburg", :area_code => "35208") + AreaCode.create(:country => germany, :name => "Mohorn", :area_code => "35209") + AreaCode.create(:country => germany, :name => "Meissen", :area_code => "3521") + AreaCode.create(:country => germany, :name => "Grossenhain Sachs", :area_code => "3522") + AreaCode.create(:country => germany, :name => "Coswig b Dresden", :area_code => "3523") + AreaCode.create(:country => germany, :name => "Tauscha b Großenhain", :area_code => "35240") + AreaCode.create(:country => germany, :name => "Lommatzsch", :area_code => "35241") + AreaCode.create(:country => germany, :name => "Nossen", :area_code => "35242") + AreaCode.create(:country => germany, :name => "Weinböhla", :area_code => "35243") + AreaCode.create(:country => germany, :name => "Krögis", :area_code => "35244") + AreaCode.create(:country => germany, :name => "Burkhardswalde-Munzig", :area_code => "35245") + AreaCode.create(:country => germany, :name => "Ziegenhain Sachs", :area_code => "35246") + AreaCode.create(:country => germany, :name => "Zehren Sachs", :area_code => "35247") + AreaCode.create(:country => germany, :name => "Schönfeld b Großenhain", :area_code => "35248") + AreaCode.create(:country => germany, :name => "Basslitz", :area_code => "35249") + AreaCode.create(:country => germany, :name => "Riesa", :area_code => "3525") + AreaCode.create(:country => germany, :name => "Gröditz b Riesa", :area_code => "35263") + AreaCode.create(:country => germany, :name => "Strehla", :area_code => "35264") + AreaCode.create(:country => germany, :name => "Glaubitz", :area_code => "35265") + AreaCode.create(:country => germany, :name => "Heyda b Riesa", :area_code => "35266") + AreaCode.create(:country => germany, :name => "Diesbar-Seusslitz", :area_code => "35267") + AreaCode.create(:country => germany, :name => "Stauchitz", :area_code => "35268") + AreaCode.create(:country => germany, :name => "Radeberg", :area_code => "3528") + AreaCode.create(:country => germany, :name => "Heidenau Sachs", :area_code => "3529") + AreaCode.create(:country => germany, :name => "Finsterwalde", :area_code => "3531") + AreaCode.create(:country => germany, :name => "Doberlug-Kirchhain", :area_code => "35322") + AreaCode.create(:country => germany, :name => "Sonnewalde", :area_code => "35323") + AreaCode.create(:country => germany, :name => "Crinitz", :area_code => "35324") + AreaCode.create(:country => germany, :name => "Rückersdorf b Finsterwalde", :area_code => "35325") + AreaCode.create(:country => germany, :name => "Schönborn Kr Elbe-Elster", :area_code => "35326") + AreaCode.create(:country => germany, :name => "Priessen", :area_code => "35327") + AreaCode.create(:country => germany, :name => "Dollenchen", :area_code => "35329") + AreaCode.create(:country => germany, :name => "Elsterwerda", :area_code => "3533") + AreaCode.create(:country => germany, :name => "Bad Liebenwerda", :area_code => "35341") + AreaCode.create(:country => germany, :name => "Mühlberg Elbe", :area_code => "35342") + AreaCode.create(:country => germany, :name => "Hirschfeld b Elsterwerda", :area_code => "35343") + AreaCode.create(:country => germany, :name => "Herzberg Elster", :area_code => "3535") + AreaCode.create(:country => germany, :name => "Schlieben", :area_code => "35361") + AreaCode.create(:country => germany, :name => "Schönewalde b Herzberg", :area_code => "35362") + AreaCode.create(:country => germany, :name => "Fermerswalde", :area_code => "35363") + AreaCode.create(:country => germany, :name => "Lebusa", :area_code => "35364") + AreaCode.create(:country => germany, :name => "Falkenberg Elster", :area_code => "35365") + AreaCode.create(:country => germany, :name => "Jessen Elster", :area_code => "3537") + AreaCode.create(:country => germany, :name => "Elster Elbe", :area_code => "35383") + AreaCode.create(:country => germany, :name => "Steinsdorf b Jessen", :area_code => "35384") + AreaCode.create(:country => germany, :name => "Annaburg", :area_code => "35385") + AreaCode.create(:country => germany, :name => "Prettin", :area_code => "35386") + AreaCode.create(:country => germany, :name => "Seyda", :area_code => "35387") + AreaCode.create(:country => germany, :name => "Klöden", :area_code => "35388") + AreaCode.create(:country => germany, :name => "Holzdorf Elster", :area_code => "35389") + AreaCode.create(:country => germany, :name => "Calau", :area_code => "3541") + AreaCode.create(:country => germany, :name => "Lübbenau Spreewald", :area_code => "3542") + AreaCode.create(:country => germany, :name => "Vetschau", :area_code => "35433") + AreaCode.create(:country => germany, :name => "Altdöbern", :area_code => "35434") + AreaCode.create(:country => germany, :name => "Gollmitz b Calau", :area_code => "35435") + AreaCode.create(:country => germany, :name => "Laasow b Calau", :area_code => "35436") + AreaCode.create(:country => germany, :name => "Zinnitz", :area_code => "35439") + AreaCode.create(:country => germany, :name => "Luckau Brandenb", :area_code => "3544") + AreaCode.create(:country => germany, :name => "Dahme Brandenb", :area_code => "35451") + AreaCode.create(:country => germany, :name => "Golssen", :area_code => "35452") + AreaCode.create(:country => germany, :name => "Drahnsdorf", :area_code => "35453") + AreaCode.create(:country => germany, :name => "Uckro", :area_code => "35454") + AreaCode.create(:country => germany, :name => "Walddrehna", :area_code => "35455") + AreaCode.create(:country => germany, :name => "Terpt", :area_code => "35456") + AreaCode.create(:country => germany, :name => "Lübben Spreewald", :area_code => "3546") + AreaCode.create(:country => germany, :name => "Birkenhainchen", :area_code => "35471") + AreaCode.create(:country => germany, :name => "Schlepzig", :area_code => "35472") + AreaCode.create(:country => germany, :name => "Neu Lübbenau", :area_code => "35473") + AreaCode.create(:country => germany, :name => "Schönwalde b Lübben", :area_code => "35474") + AreaCode.create(:country => germany, :name => "Straupitz", :area_code => "35475") + AreaCode.create(:country => germany, :name => "Wittmannsdorf-Bückchen", :area_code => "35476") + AreaCode.create(:country => germany, :name => "Rietzneuendorf-Friedrichshof", :area_code => "35477") + AreaCode.create(:country => germany, :name => "Goyatz", :area_code => "35478") + AreaCode.create(:country => germany, :name => "Cottbus", :area_code => "355") + AreaCode.create(:country => germany, :name => "Döbern NL", :area_code => "35600") + AreaCode.create(:country => germany, :name => "Peitz", :area_code => "35601") + AreaCode.create(:country => germany, :name => "Drebkau", :area_code => "35602") + AreaCode.create(:country => germany, :name => "Burg Spreewald", :area_code => "35603") + AreaCode.create(:country => germany, :name => "Krieschow", :area_code => "35604") + AreaCode.create(:country => germany, :name => "Komptendorf", :area_code => "35605") + AreaCode.create(:country => germany, :name => "Briesen b Cottbus", :area_code => "35606") + AreaCode.create(:country => germany, :name => "Jänschwalde", :area_code => "35607") + AreaCode.create(:country => germany, :name => "Gross Ossnig", :area_code => "35608") + AreaCode.create(:country => germany, :name => "Drachhausen", :area_code => "35609") + AreaCode.create(:country => germany, :name => "Guben", :area_code => "3561") + AreaCode.create(:country => germany, :name => "Forst Lausitz", :area_code => "3562") + AreaCode.create(:country => germany, :name => "Spremberg", :area_code => "3563") + AreaCode.create(:country => germany, :name => "Schwarze Pumpe", :area_code => "3564") + AreaCode.create(:country => germany, :name => "Bärenklau NL", :area_code => "35691") + AreaCode.create(:country => germany, :name => "Kerkwitz", :area_code => "35692") + AreaCode.create(:country => germany, :name => "Lauschütz", :area_code => "35693") + AreaCode.create(:country => germany, :name => "Gosda b Klinge", :area_code => "35694") + AreaCode.create(:country => germany, :name => "Simmersdorf", :area_code => "35695") + AreaCode.create(:country => germany, :name => "Briesnig", :area_code => "35696") + AreaCode.create(:country => germany, :name => "Bagenz", :area_code => "35697") + AreaCode.create(:country => germany, :name => "Hornow", :area_code => "35698") + AreaCode.create(:country => germany, :name => "Hoyerswerda", :area_code => "3571") + AreaCode.create(:country => germany, :name => "Lauta b Hoyerswerda", :area_code => "35722") + AreaCode.create(:country => germany, :name => "Bernsdorf OL", :area_code => "35723") + AreaCode.create(:country => germany, :name => "Lohsa", :area_code => "35724") + AreaCode.create(:country => germany, :name => "Wittichenau", :area_code => "35725") + AreaCode.create(:country => germany, :name => "Groß Särchen", :area_code => "35726") + AreaCode.create(:country => germany, :name => "Burghammer", :area_code => "35727") + AreaCode.create(:country => germany, :name => "Uhyst Spree", :area_code => "35728") + AreaCode.create(:country => germany, :name => "Senftenberg", :area_code => "3573") + AreaCode.create(:country => germany, :name => "Lauchhammer", :area_code => "3574") + AreaCode.create(:country => germany, :name => "Welzow", :area_code => "35751") + AreaCode.create(:country => germany, :name => "Ruhland", :area_code => "35752") + AreaCode.create(:country => germany, :name => "Großräschen", :area_code => "35753") + AreaCode.create(:country => germany, :name => "Klettwitz", :area_code => "35754") + AreaCode.create(:country => germany, :name => "Ortrand", :area_code => "35755") + AreaCode.create(:country => germany, :name => "Hosena", :area_code => "35756") + AreaCode.create(:country => germany, :name => "Weisswasser", :area_code => "3576") + AreaCode.create(:country => germany, :name => "Bad Muskau", :area_code => "35771") + AreaCode.create(:country => germany, :name => "Rietschen", :area_code => "35772") + AreaCode.create(:country => germany, :name => "Schleife", :area_code => "35773") + AreaCode.create(:country => germany, :name => "Boxberg Sachs", :area_code => "35774") + AreaCode.create(:country => germany, :name => "Pechern", :area_code => "35775") + AreaCode.create(:country => germany, :name => "Kamenz", :area_code => "3578") + AreaCode.create(:country => germany, :name => "Ossling", :area_code => "35792") + AreaCode.create(:country => germany, :name => "Elstra", :area_code => "35793") + AreaCode.create(:country => germany, :name => "Königsbrück", :area_code => "35795") + AreaCode.create(:country => germany, :name => "Panschwitz-Kuckau", :area_code => "35796") + AreaCode.create(:country => germany, :name => "Schwepnitz", :area_code => "35797") + AreaCode.create(:country => germany, :name => "Görlitz", :area_code => "3581") + AreaCode.create(:country => germany, :name => "Zodel", :area_code => "35820") + AreaCode.create(:country => germany, :name => "Hagenwerder", :area_code => "35822") + AreaCode.create(:country => germany, :name => "Ostritz", :area_code => "35823") + AreaCode.create(:country => germany, :name => "Kodersdorf", :area_code => "35825") + AreaCode.create(:country => germany, :name => "Königshain b Görlitz", :area_code => "35826") + AreaCode.create(:country => germany, :name => "Nieder-Seifersdorf", :area_code => "35827") + AreaCode.create(:country => germany, :name => "Reichenbach OL", :area_code => "35828") + AreaCode.create(:country => germany, :name => "Gersdorf b Görlitz", :area_code => "35829") + AreaCode.create(:country => germany, :name => "Zittau", :area_code => "3583") + AreaCode.create(:country => germany, :name => "Großschönau Sachs", :area_code => "35841") + AreaCode.create(:country => germany, :name => "Oderwitz", :area_code => "35842") + AreaCode.create(:country => germany, :name => "Hirschfelde b Zittau", :area_code => "35843") + AreaCode.create(:country => germany, :name => "Oybin Kurort", :area_code => "35844") + AreaCode.create(:country => germany, :name => "Löbau", :area_code => "3585") + AreaCode.create(:country => germany, :name => "Neugersdorf ,Sachs", :area_code => "3586") + AreaCode.create(:country => germany, :name => "Neusalza-Spremberg", :area_code => "35872") + AreaCode.create(:country => germany, :name => "Herrnhut", :area_code => "35873") + AreaCode.create(:country => germany, :name => "Bernstadt a d Eigen", :area_code => "35874") + AreaCode.create(:country => germany, :name => "Obercunnersdorf b Löbau", :area_code => "35875") + AreaCode.create(:country => germany, :name => "Weissenberg Sachs", :area_code => "35876") + AreaCode.create(:country => germany, :name => "Cunewalde", :area_code => "35877") + AreaCode.create(:country => germany, :name => "Niesky", :area_code => "3588") + AreaCode.create(:country => germany, :name => "Rothenburg OL", :area_code => "35891") + AreaCode.create(:country => germany, :name => "Horka OL", :area_code => "35892") + AreaCode.create(:country => germany, :name => "Mücka", :area_code => "35893") + AreaCode.create(:country => germany, :name => "Hähnichen", :area_code => "35894") + AreaCode.create(:country => germany, :name => "Klitten", :area_code => "35895") + AreaCode.create(:country => germany, :name => "Bautzen", :area_code => "3591") + AreaCode.create(:country => germany, :name => "Kirschau", :area_code => "3592") + AreaCode.create(:country => germany, :name => "Seitschen", :area_code => "35930") + AreaCode.create(:country => germany, :name => "Königswartha", :area_code => "35931") + AreaCode.create(:country => germany, :name => "Guttau", :area_code => "35932") + AreaCode.create(:country => germany, :name => "Neschwitz", :area_code => "35933") + AreaCode.create(:country => germany, :name => "Grossdubrau", :area_code => "35934") + AreaCode.create(:country => germany, :name => "Kleinwelka", :area_code => "35935") + AreaCode.create(:country => germany, :name => "Sohland Spree", :area_code => "35936") + AreaCode.create(:country => germany, :name => "Prischwitz", :area_code => "35937") + AreaCode.create(:country => germany, :name => "Großpostwitz OL", :area_code => "35938") + AreaCode.create(:country => germany, :name => "Hochkirch", :area_code => "35939") + AreaCode.create(:country => germany, :name => "Bischofswerda", :area_code => "3594") + AreaCode.create(:country => germany, :name => "Neukirch Lausitz", :area_code => "35951") + AreaCode.create(:country => germany, :name => "Großröhrsdorf OL", :area_code => "35952") + AreaCode.create(:country => germany, :name => "Burkau", :area_code => "35953") + AreaCode.create(:country => germany, :name => "Grossharthau", :area_code => "35954") + AreaCode.create(:country => germany, :name => "Pulsnitz", :area_code => "35955") + AreaCode.create(:country => germany, :name => "Neustadt i Sa", :area_code => "3596") + AreaCode.create(:country => germany, :name => "Sebnitz", :area_code => "35971") + AreaCode.create(:country => germany, :name => "Stolpen", :area_code => "35973") + AreaCode.create(:country => germany, :name => "Hinterhermsdorf", :area_code => "35974") + AreaCode.create(:country => germany, :name => "Hohnstein", :area_code => "35975") + AreaCode.create(:country => germany, :name => "Mühlhausen Thür", :area_code => "3601") + AreaCode.create(:country => germany, :name => "Ebeleben", :area_code => "36020") + AreaCode.create(:country => germany, :name => "Schlotheim", :area_code => "36021") + AreaCode.create(:country => germany, :name => "Grossengottern", :area_code => "36022") + AreaCode.create(:country => germany, :name => "Horsmar", :area_code => "36023") + AreaCode.create(:country => germany, :name => "Diedorf b Mühlhausen Thür", :area_code => "36024") + AreaCode.create(:country => germany, :name => "Körner", :area_code => "36025") + AreaCode.create(:country => germany, :name => "Struth b Mühlhausen Thür", :area_code => "36026") + AreaCode.create(:country => germany, :name => "Lengenfeld Unterm Stein", :area_code => "36027") + AreaCode.create(:country => germany, :name => "Kammerforst Thür", :area_code => "36028") + AreaCode.create(:country => germany, :name => "Menteroda", :area_code => "36029") + AreaCode.create(:country => germany, :name => "Bad Langensalza", :area_code => "3603") + AreaCode.create(:country => germany, :name => "Bad Tennstedt", :area_code => "36041") + AreaCode.create(:country => germany, :name => "Tonna", :area_code => "36042") + AreaCode.create(:country => germany, :name => "Kirchheilingen", :area_code => "36043") + AreaCode.create(:country => germany, :name => "Leinefelde", :area_code => "3605") + AreaCode.create(:country => germany, :name => "Heiligenstadt Heilbad", :area_code => "3606") + AreaCode.create(:country => germany, :name => "Teistungen", :area_code => "36071") + AreaCode.create(:country => germany, :name => "Weißenborn-Lüderode", :area_code => "36072") + AreaCode.create(:country => germany, :name => "Worbis", :area_code => "36074") + AreaCode.create(:country => germany, :name => "Dingelstädt Eichsfeld", :area_code => "36075") + AreaCode.create(:country => germany, :name => "Niederorschel", :area_code => "36076") + AreaCode.create(:country => germany, :name => "Grossbodungen", :area_code => "36077") + AreaCode.create(:country => germany, :name => "Arenshausen", :area_code => "36081") + AreaCode.create(:country => germany, :name => "Ershausen", :area_code => "36082") + AreaCode.create(:country => germany, :name => "Uder", :area_code => "36083") + AreaCode.create(:country => germany, :name => "Heuthen", :area_code => "36084") + AreaCode.create(:country => germany, :name => "Reinholterode", :area_code => "36085") + AreaCode.create(:country => germany, :name => "Wüstheuterode", :area_code => "36087") + AreaCode.create(:country => germany, :name => "Erfurt", :area_code => "361") + AreaCode.create(:country => germany, :name => "Elxleben b Arnstadt", :area_code => "36200") + AreaCode.create(:country => germany, :name => "Walschleben", :area_code => "36201") + AreaCode.create(:country => germany, :name => "Neudietendorf", :area_code => "36202") + AreaCode.create(:country => germany, :name => "Vieselbach", :area_code => "36203") + AreaCode.create(:country => germany, :name => "Stotternheim", :area_code => "36204") + AreaCode.create(:country => germany, :name => "Gräfenroda", :area_code => "36205") + AreaCode.create(:country => germany, :name => "Grossfahner", :area_code => "36206") + AreaCode.create(:country => germany, :name => "Plaue Thür", :area_code => "36207") + AreaCode.create(:country => germany, :name => "Ermstedt", :area_code => "36208") + AreaCode.create(:country => germany, :name => "Klettbach", :area_code => "36209") + AreaCode.create(:country => germany, :name => "Gotha Thür", :area_code => "3621") + AreaCode.create(:country => germany, :name => "Waltershausen Thür", :area_code => "3622") + AreaCode.create(:country => germany, :name => "Friedrichroda", :area_code => "3623") + AreaCode.create(:country => germany, :name => "Ohrdruf", :area_code => "3624") + AreaCode.create(:country => germany, :name => "Tambach-Dietharz Thür Wald", :area_code => "36252") + AreaCode.create(:country => germany, :name => "Georgenthal Thür Wald", :area_code => "36253") + AreaCode.create(:country => germany, :name => "Friedrichswerth", :area_code => "36254") + AreaCode.create(:country => germany, :name => "Goldbach b Gotha", :area_code => "36255") + AreaCode.create(:country => germany, :name => "Wechmar", :area_code => "36256") + AreaCode.create(:country => germany, :name => "Luisenthal Thür", :area_code => "36257") + AreaCode.create(:country => germany, :name => "Friemar", :area_code => "36258") + AreaCode.create(:country => germany, :name => "Tabarz Thür Wald", :area_code => "36259") + AreaCode.create(:country => germany, :name => "Arnstadt", :area_code => "3628") + AreaCode.create(:country => germany, :name => "Stadtilm", :area_code => "3629") + AreaCode.create(:country => germany, :name => "Nordhausen Thür", :area_code => "3631") + AreaCode.create(:country => germany, :name => "Sondershausen", :area_code => "3632") + AreaCode.create(:country => germany, :name => "Grossberndten", :area_code => "36330") + AreaCode.create(:country => germany, :name => "Ilfeld", :area_code => "36331") + AreaCode.create(:country => germany, :name => "Ellrich", :area_code => "36332") + AreaCode.create(:country => germany, :name => "Heringen Helme", :area_code => "36333") + AreaCode.create(:country => germany, :name => "Wolkramshausen", :area_code => "36334") + AreaCode.create(:country => germany, :name => "Grosswechsungen", :area_code => "36335") + AreaCode.create(:country => germany, :name => "Klettenberg", :area_code => "36336") + AreaCode.create(:country => germany, :name => "Schiedungen", :area_code => "36337") + AreaCode.create(:country => germany, :name => "Bleicherode", :area_code => "36338") + AreaCode.create(:country => germany, :name => "Sömmerda", :area_code => "3634") + AreaCode.create(:country => germany, :name => "Kölleda", :area_code => "3635") + AreaCode.create(:country => germany, :name => "Greussen", :area_code => "3636") + AreaCode.create(:country => germany, :name => "Grossenehrich", :area_code => "36370") + AreaCode.create(:country => germany, :name => "Schlossvippach", :area_code => "36371") + AreaCode.create(:country => germany, :name => "Kleinneuhausen", :area_code => "36372") + AreaCode.create(:country => germany, :name => "Buttstädt", :area_code => "36373") + AreaCode.create(:country => germany, :name => "Weissensee", :area_code => "36374") + AreaCode.create(:country => germany, :name => "Kindelbrück", :area_code => "36375") + AreaCode.create(:country => germany, :name => "Straussfurt", :area_code => "36376") + AreaCode.create(:country => germany, :name => "Rastenberg", :area_code => "36377") + AreaCode.create(:country => germany, :name => "Ostramondra", :area_code => "36378") + AreaCode.create(:country => germany, :name => "Holzengel", :area_code => "36379") + AreaCode.create(:country => germany, :name => "Jena", :area_code => "3641") + AreaCode.create(:country => germany, :name => "Camburg", :area_code => "36421") + AreaCode.create(:country => germany, :name => "Reinstädt Thür", :area_code => "36422") + AreaCode.create(:country => germany, :name => "Orlamünde", :area_code => "36423") + AreaCode.create(:country => germany, :name => "Kahla Thür", :area_code => "36424") + AreaCode.create(:country => germany, :name => "Isserstedt", :area_code => "36425") + AreaCode.create(:country => germany, :name => "Ottendorf b Stadtroda", :area_code => "36426") + AreaCode.create(:country => germany, :name => "Dornburg Saale", :area_code => "36427") + AreaCode.create(:country => germany, :name => "Stadtroda", :area_code => "36428") + AreaCode.create(:country => germany, :name => "Weimar Thür", :area_code => "3643") + AreaCode.create(:country => germany, :name => "Apolda", :area_code => "3644") + AreaCode.create(:country => germany, :name => "Kranichfeld", :area_code => "36450") + AreaCode.create(:country => germany, :name => "Buttelstedt", :area_code => "36451") + AreaCode.create(:country => germany, :name => "Berlstedt", :area_code => "36452") + AreaCode.create(:country => germany, :name => "Mellingen", :area_code => "36453") + AreaCode.create(:country => germany, :name => "Magdala", :area_code => "36454") + AreaCode.create(:country => germany, :name => "Bad Berka", :area_code => "36458") + AreaCode.create(:country => germany, :name => "Blankenhain Thür", :area_code => "36459") + AreaCode.create(:country => germany, :name => "Bad Sulza", :area_code => "36461") + AreaCode.create(:country => germany, :name => "Ossmannstedt", :area_code => "36462") + AreaCode.create(:country => germany, :name => "Gebstedt", :area_code => "36463") + AreaCode.create(:country => germany, :name => "Wormstedt", :area_code => "36464") + AreaCode.create(:country => germany, :name => "Oberndorf b Apolda", :area_code => "36465") + AreaCode.create(:country => germany, :name => "Pößneck", :area_code => "3647") + AreaCode.create(:country => germany, :name => "Neustadt an der Orla", :area_code => "36481") + AreaCode.create(:country => germany, :name => "Triptis", :area_code => "36482") + AreaCode.create(:country => germany, :name => "Ziegenrück", :area_code => "36483") + AreaCode.create(:country => germany, :name => "Knau b Pößneck", :area_code => "36484") + AreaCode.create(:country => germany, :name => "Gera", :area_code => "365") + AreaCode.create(:country => germany, :name => "Hermsdorf Thür", :area_code => "36601") + AreaCode.create(:country => germany, :name => "Ronneburg Thür", :area_code => "36602") + AreaCode.create(:country => germany, :name => "Weida", :area_code => "36603") + AreaCode.create(:country => germany, :name => "Münchenbernsdorf", :area_code => "36604") + AreaCode.create(:country => germany, :name => "Bad Köstritz", :area_code => "36605") + AreaCode.create(:country => germany, :name => "Kraftsdorf", :area_code => "36606") + AreaCode.create(:country => germany, :name => "Niederpöllnitz", :area_code => "36607") + AreaCode.create(:country => germany, :name => "Seelingstädt b Gera", :area_code => "36608") + AreaCode.create(:country => germany, :name => "Greiz", :area_code => "3661") + AreaCode.create(:country => germany, :name => "Elsterberg b Plauen", :area_code => "36621") + AreaCode.create(:country => germany, :name => "Triebes", :area_code => "36622") + AreaCode.create(:country => germany, :name => "Berga Elster", :area_code => "36623") + AreaCode.create(:country => germany, :name => "Teichwolframsdorf", :area_code => "36624") + AreaCode.create(:country => germany, :name => "Langenwetzendorf", :area_code => "36625") + AreaCode.create(:country => germany, :name => "Auma", :area_code => "36626") + AreaCode.create(:country => germany, :name => "Zeulenroda", :area_code => "36628") + AreaCode.create(:country => germany, :name => "Schleiz", :area_code => "3663") + AreaCode.create(:country => germany, :name => "Remptendorf", :area_code => "36640") + AreaCode.create(:country => germany, :name => "Harra", :area_code => "36642") + AreaCode.create(:country => germany, :name => "Thimmendorf", :area_code => "36643") + AreaCode.create(:country => germany, :name => "Hirschberg Saale", :area_code => "36644") + AreaCode.create(:country => germany, :name => "Mühltroff", :area_code => "36645") + AreaCode.create(:country => germany, :name => "Tanna b Schleiz", :area_code => "36646") + AreaCode.create(:country => germany, :name => "Saalburg Thür", :area_code => "36647") + AreaCode.create(:country => germany, :name => "Dittersdorf b Schleiz", :area_code => "36648") + AreaCode.create(:country => germany, :name => "Gefell b Schleiz", :area_code => "36649") + AreaCode.create(:country => germany, :name => "Lobenstein", :area_code => "36651") + AreaCode.create(:country => germany, :name => "Wurzbach", :area_code => "36652") + AreaCode.create(:country => germany, :name => "Lehesten Thür Wald", :area_code => "36653") + AreaCode.create(:country => germany, :name => "Eisenberg Thür", :area_code => "36691") + AreaCode.create(:country => germany, :name => "Bürgel", :area_code => "36692") + AreaCode.create(:country => germany, :name => "Crossen an der Elster", :area_code => "36693") + AreaCode.create(:country => germany, :name => "Schkölen Thür", :area_code => "36694") + AreaCode.create(:country => germany, :name => "Söllmnitz", :area_code => "36695") + AreaCode.create(:country => germany, :name => "Lichte", :area_code => "36701") + AreaCode.create(:country => germany, :name => "Lauscha", :area_code => "36702") + AreaCode.create(:country => germany, :name => "Gräfenthal", :area_code => "36703") + AreaCode.create(:country => germany, :name => "Steinheid", :area_code => "36704") + AreaCode.create(:country => germany, :name => "Oberweißbach Thür Wald", :area_code => "36705") + AreaCode.create(:country => germany, :name => "Saalfeld Saale", :area_code => "3671") + AreaCode.create(:country => germany, :name => "Rudolstadt", :area_code => "3672") + AreaCode.create(:country => germany, :name => "Sitzendorf", :area_code => "36730") + AreaCode.create(:country => germany, :name => "Unterloquitz", :area_code => "36731") + AreaCode.create(:country => germany, :name => "Könitz", :area_code => "36732") + AreaCode.create(:country => germany, :name => "Kaulsdorf", :area_code => "36733") + AreaCode.create(:country => germany, :name => "Leutenberg", :area_code => "36734") + AreaCode.create(:country => germany, :name => "Probstzella", :area_code => "36735") + AreaCode.create(:country => germany, :name => "Arnsgereuth", :area_code => "36736") + AreaCode.create(:country => germany, :name => "Drognitz", :area_code => "36737") + AreaCode.create(:country => germany, :name => "Königsee", :area_code => "36738") + AreaCode.create(:country => germany, :name => "Rottenbach", :area_code => "36739") + AreaCode.create(:country => germany, :name => "Bad Blankenburg", :area_code => "36741") + AreaCode.create(:country => germany, :name => "Uhlstädt", :area_code => "36742") + AreaCode.create(:country => germany, :name => "Teichel", :area_code => "36743") + AreaCode.create(:country => germany, :name => "Remda", :area_code => "36744") + AreaCode.create(:country => germany, :name => "Sonneberg Thür", :area_code => "3675") + AreaCode.create(:country => germany, :name => "Heubisch", :area_code => "36761") + AreaCode.create(:country => germany, :name => "Steinach Thür", :area_code => "36762") + AreaCode.create(:country => germany, :name => "Neuhaus-Schierschnitz", :area_code => "36764") + AreaCode.create(:country => germany, :name => "Schalkau", :area_code => "36766") + AreaCode.create(:country => germany, :name => "Ilmenau Thür", :area_code => "3677") + AreaCode.create(:country => germany, :name => "Grossbreitenbach", :area_code => "36781") + AreaCode.create(:country => germany, :name => "Schmiedefeld a Rennsteig", :area_code => "36782") + AreaCode.create(:country => germany, :name => "Gehren Thür", :area_code => "36783") + AreaCode.create(:country => germany, :name => "Stützerbach", :area_code => "36784") + AreaCode.create(:country => germany, :name => "Gräfinau-Angstedt", :area_code => "36785") + AreaCode.create(:country => germany, :name => "Neuhaus a Rennweg", :area_code => "3679") + AreaCode.create(:country => germany, :name => "Suhl", :area_code => "3681") + AreaCode.create(:country => germany, :name => "Zella-Mehlis", :area_code => "3682") + AreaCode.create(:country => germany, :name => "Schmalkalden", :area_code => "3683") + AreaCode.create(:country => germany, :name => "Trusetal", :area_code => "36840") + AreaCode.create(:country => germany, :name => "Schleusingen", :area_code => "36841") + AreaCode.create(:country => germany, :name => "Oberhof Thür", :area_code => "36842") + AreaCode.create(:country => germany, :name => "Benshausen", :area_code => "36843") + AreaCode.create(:country => germany, :name => "Rohr Thür", :area_code => "36844") + AreaCode.create(:country => germany, :name => "Gehlberg", :area_code => "36845") + AreaCode.create(:country => germany, :name => "Suhl-Dietzhausen", :area_code => "36846") + AreaCode.create(:country => germany, :name => "Steinbach-Hallenberg", :area_code => "36847") + AreaCode.create(:country => germany, :name => "Wernshausen", :area_code => "36848") + AreaCode.create(:country => germany, :name => "Kleinschmalkalden", :area_code => "36849") + AreaCode.create(:country => germany, :name => "Hildburghausen", :area_code => "3685") + AreaCode.create(:country => germany, :name => "Eisfeld", :area_code => "3686") + AreaCode.create(:country => germany, :name => "Masserberg", :area_code => "36870") + AreaCode.create(:country => germany, :name => "Bad Colberg-Heldburg", :area_code => "36871") + AreaCode.create(:country => germany, :name => "Themar", :area_code => "36873") + AreaCode.create(:country => germany, :name => "Schönbrunn b Hildburghaus", :area_code => "36874") + AreaCode.create(:country => germany, :name => "Straufhain-Streufdorf", :area_code => "36875") + AreaCode.create(:country => germany, :name => "Oberland", :area_code => "36878") + AreaCode.create(:country => germany, :name => "Eisenach Thür", :area_code => "3691") + AreaCode.create(:country => germany, :name => "Grossenlupnitz", :area_code => "36920") + AreaCode.create(:country => germany, :name => "Wutha-Farnroda", :area_code => "36921") + AreaCode.create(:country => germany, :name => "Gerstungen", :area_code => "36922") + AreaCode.create(:country => germany, :name => "Treffurt", :area_code => "36923") + AreaCode.create(:country => germany, :name => "Mihla", :area_code => "36924") + AreaCode.create(:country => germany, :name => "Marksuhl", :area_code => "36925") + AreaCode.create(:country => germany, :name => "Creuzburg", :area_code => "36926") + AreaCode.create(:country => germany, :name => "Unterellen", :area_code => "36927") + AreaCode.create(:country => germany, :name => "Neuenhof Thür", :area_code => "36928") + AreaCode.create(:country => germany, :name => "Ruhla", :area_code => "36929") + AreaCode.create(:country => germany, :name => "Meiningen", :area_code => "3693") + AreaCode.create(:country => germany, :name => "Oepfershausen", :area_code => "36940") + AreaCode.create(:country => germany, :name => "Wasungen", :area_code => "36941") + AreaCode.create(:country => germany, :name => "Bettenhausen Thür", :area_code => "36943") + AreaCode.create(:country => germany, :name => "Rentwertshausen", :area_code => "36944") + AreaCode.create(:country => germany, :name => "Henneberg", :area_code => "36945") + AreaCode.create(:country => germany, :name => "Erbenhausen Thür", :area_code => "36946") + AreaCode.create(:country => germany, :name => "Jüchsen", :area_code => "36947") + AreaCode.create(:country => germany, :name => "Römhild", :area_code => "36948") + AreaCode.create(:country => germany, :name => "Obermaßfeld-Grimmenthal", :area_code => "36949") + AreaCode.create(:country => germany, :name => "Bad Salzungen", :area_code => "3695") + AreaCode.create(:country => germany, :name => "Bad Liebenstein", :area_code => "36961") + AreaCode.create(:country => germany, :name => "Vacha", :area_code => "36962") + AreaCode.create(:country => germany, :name => "Dorndorf Rhön", :area_code => "36963") + AreaCode.create(:country => germany, :name => "Dermbach Rhön", :area_code => "36964") + AreaCode.create(:country => germany, :name => "Stadtlengsfeld", :area_code => "36965") + AreaCode.create(:country => germany, :name => "Kaltennordheim", :area_code => "36966") + AreaCode.create(:country => germany, :name => "Geisa", :area_code => "36967") + AreaCode.create(:country => germany, :name => "Rossdorf Rhön", :area_code => "36968") + AreaCode.create(:country => germany, :name => "Merkers", :area_code => "36969") + AreaCode.create(:country => germany, :name => "Chemnitz Sachs", :area_code => "371") + AreaCode.create(:country => germany, :name => "Wittgensdorf b Chemnitz", :area_code => "37200") + AreaCode.create(:country => germany, :name => "Claussnitz b Chemnitz", :area_code => "37202") + AreaCode.create(:country => germany, :name => "Gersdorf b Chemnitz", :area_code => "37203") + AreaCode.create(:country => germany, :name => "Lichtenstein Sachs", :area_code => "37204") + AreaCode.create(:country => germany, :name => "Frankenberg", :area_code => "37206") + AreaCode.create(:country => germany, :name => "Hainichen", :area_code => "37207") + AreaCode.create(:country => germany, :name => "Auerswalde", :area_code => "37208") + AreaCode.create(:country => germany, :name => "Einsiedel b Chemnitz", :area_code => "37209") + AreaCode.create(:country => germany, :name => "Meinersdorf", :area_code => "3721") + AreaCode.create(:country => germany, :name => "Limbach-Oberfrohna", :area_code => "3722") + AreaCode.create(:country => germany, :name => "Hohenstein-Ernstthal", :area_code => "3723") + AreaCode.create(:country => germany, :name => "Burgstädt", :area_code => "3724") + AreaCode.create(:country => germany, :name => "Zschopau", :area_code => "3725") + AreaCode.create(:country => germany, :name => "Flöha", :area_code => "3726") + AreaCode.create(:country => germany, :name => "Mittweida", :area_code => "3727") + AreaCode.create(:country => germany, :name => "Augustusburg", :area_code => "37291") + AreaCode.create(:country => germany, :name => "Oederan", :area_code => "37292") + AreaCode.create(:country => germany, :name => "Eppendorf Sachs", :area_code => "37293") + AreaCode.create(:country => germany, :name => "Grünhainichen", :area_code => "37294") + AreaCode.create(:country => germany, :name => "Lugau Erzgeb", :area_code => "37295") + AreaCode.create(:country => germany, :name => "Stollberg Erzgeb", :area_code => "37296") + AreaCode.create(:country => germany, :name => "Thum Sachs", :area_code => "37297") + AreaCode.create(:country => germany, :name => "Oelsnitz Erzgeb", :area_code => "37298") + AreaCode.create(:country => germany, :name => "Freiberg Sachs", :area_code => "3731") + AreaCode.create(:country => germany, :name => "Mulda Sachs", :area_code => "37320") + AreaCode.create(:country => germany, :name => "Frankenstein Sachs", :area_code => "37321") + AreaCode.create(:country => germany, :name => "Brand-Erbisdorf", :area_code => "37322") + AreaCode.create(:country => germany, :name => "Lichtenberg Erzgeb", :area_code => "37323") + AreaCode.create(:country => germany, :name => "Reinsberg Sachs", :area_code => "37324") + AreaCode.create(:country => germany, :name => "Niederbobritzsch", :area_code => "37325") + AreaCode.create(:country => germany, :name => "Frauenstein Sachs", :area_code => "37326") + AreaCode.create(:country => germany, :name => "Rechenberg-Bienenmühle", :area_code => "37327") + AreaCode.create(:country => germany, :name => "Grossschirma", :area_code => "37328") + AreaCode.create(:country => germany, :name => "Grosshartmannsdorf", :area_code => "37329") + AreaCode.create(:country => germany, :name => "Annaberg-Buchholz", :area_code => "3733") + AreaCode.create(:country => germany, :name => "Ehrenfriedersdorf", :area_code => "37341") + AreaCode.create(:country => germany, :name => "Cranzahl", :area_code => "37342") + AreaCode.create(:country => germany, :name => "Jöhstadt", :area_code => "37343") + AreaCode.create(:country => germany, :name => "Crottendorf Sachs", :area_code => "37344") + AreaCode.create(:country => germany, :name => "Geyer", :area_code => "37346") + AreaCode.create(:country => germany, :name => "Bärenstein Kr Annaberg", :area_code => "37347") + AreaCode.create(:country => germany, :name => "Oberwiesenthal Kurort", :area_code => "37348") + AreaCode.create(:country => germany, :name => "Scheibenberg", :area_code => "37349") + AreaCode.create(:country => germany, :name => "Marienberg Sachs", :area_code => "3735") + AreaCode.create(:country => germany, :name => "Olbernhau", :area_code => "37360") + AreaCode.create(:country => germany, :name => "Neuhausen Erzgeb", :area_code => "37361") + AreaCode.create(:country => germany, :name => "Seiffen Erzgeb", :area_code => "37362") + AreaCode.create(:country => germany, :name => "Zöblitz", :area_code => "37363") + AreaCode.create(:country => germany, :name => "Reitzenhain Erzgeb", :area_code => "37364") + AreaCode.create(:country => germany, :name => "Sayda", :area_code => "37365") + AreaCode.create(:country => germany, :name => "Rübenau", :area_code => "37366") + AreaCode.create(:country => germany, :name => "Lengefeld Erzgeb", :area_code => "37367") + AreaCode.create(:country => germany, :name => "Deutschneudorf", :area_code => "37368") + AreaCode.create(:country => germany, :name => "Wolkenstein", :area_code => "37369") + AreaCode.create(:country => germany, :name => "Rochlitz", :area_code => "3737") + AreaCode.create(:country => germany, :name => "Penig", :area_code => "37381") + AreaCode.create(:country => germany, :name => "Geringswalde", :area_code => "37382") + AreaCode.create(:country => germany, :name => "Lunzenau", :area_code => "37383") + AreaCode.create(:country => germany, :name => "Wechselburg", :area_code => "37384") + AreaCode.create(:country => germany, :name => "Plauen", :area_code => "3741") + AreaCode.create(:country => germany, :name => "Oelsnitz Vogtl", :area_code => "37421") + AreaCode.create(:country => germany, :name => "Markneukirchen", :area_code => "37422") + AreaCode.create(:country => germany, :name => "Adorf Vogtl", :area_code => "37423") + AreaCode.create(:country => germany, :name => "Eichigt", :area_code => "37430") + AreaCode.create(:country => germany, :name => "Mehltheuer Vogtl", :area_code => "37431") + AreaCode.create(:country => germany, :name => "Pausa Vogtl", :area_code => "37432") + AreaCode.create(:country => germany, :name => "Gutenfürst", :area_code => "37433") + AreaCode.create(:country => germany, :name => "Bobenneukirchen", :area_code => "37434") + AreaCode.create(:country => germany, :name => "Reuth b Plauen", :area_code => "37435") + AreaCode.create(:country => germany, :name => "Weischlitz", :area_code => "37436") + AreaCode.create(:country => germany, :name => "Bad Elster", :area_code => "37437") + AreaCode.create(:country => germany, :name => "Bad Brambach", :area_code => "37438") + AreaCode.create(:country => germany, :name => "Jocketa", :area_code => "37439") + AreaCode.create(:country => germany, :name => "Auerbach Vogtl.", :area_code => "3744") + AreaCode.create(:country => germany, :name => "Falkenstein Vogtl", :area_code => "3745") + AreaCode.create(:country => germany, :name => "Rothenkirchen Vogtl", :area_code => "37462") + AreaCode.create(:country => germany, :name => "Bergen Vogtl", :area_code => "37463") + AreaCode.create(:country => germany, :name => "Schöneck Vogtl", :area_code => "37464") + AreaCode.create(:country => germany, :name => "Tannenbergsthal Vogtl", :area_code => "37465") + AreaCode.create(:country => germany, :name => "Klingenthal Sachs", :area_code => "37467") + AreaCode.create(:country => germany, :name => "Treuen Vogtl", :area_code => "37468") + AreaCode.create(:country => germany, :name => "Zwickau", :area_code => "375") + AreaCode.create(:country => germany, :name => "Neumark Sachs", :area_code => "37600") + AreaCode.create(:country => germany, :name => "Mülsen Skt Jacob", :area_code => "37601") + AreaCode.create(:country => germany, :name => "Kirchberg Sachs", :area_code => "37602") + AreaCode.create(:country => germany, :name => "Wildenfels", :area_code => "37603") + AreaCode.create(:country => germany, :name => "Mosel", :area_code => "37604") + AreaCode.create(:country => germany, :name => "Hartenstein Sachs", :area_code => "37605") + AreaCode.create(:country => germany, :name => "Lengenfeld Vogtl", :area_code => "37606") + AreaCode.create(:country => germany, :name => "Ebersbrunn Sachs", :area_code => "37607") + AreaCode.create(:country => germany, :name => "Waldenburg Sachs", :area_code => "37608") + AreaCode.create(:country => germany, :name => "Wolkenburg Mulde", :area_code => "37609") + AreaCode.create(:country => germany, :name => "Werdau Sachs", :area_code => "3761") + AreaCode.create(:country => germany, :name => "Crimmitschau", :area_code => "3762") + AreaCode.create(:country => germany, :name => "Glauchau", :area_code => "3763") + AreaCode.create(:country => germany, :name => "Meerane", :area_code => "3764") + AreaCode.create(:country => germany, :name => "Reichenbach Vogtl", :area_code => "3765") + AreaCode.create(:country => germany, :name => "Aue Sachs", :area_code => "3771") + AreaCode.create(:country => germany, :name => "Schneeberg Erzgeb", :area_code => "3772") + AreaCode.create(:country => germany, :name => "Johanngeorgenstadt", :area_code => "3773") + AreaCode.create(:country => germany, :name => "Schwarzenberg", :area_code => "3774") + AreaCode.create(:country => germany, :name => "Eibenstock", :area_code => "37752") + AreaCode.create(:country => germany, :name => "Zwönitz", :area_code => "37754") + AreaCode.create(:country => germany, :name => "Schönheide Erzgeb", :area_code => "37755") + AreaCode.create(:country => germany, :name => "Breitenbrunn Erzgeb", :area_code => "37756") + AreaCode.create(:country => germany, :name => "Rittersgrün", :area_code => "37757") + AreaCode.create(:country => germany, :name => "Rostock", :area_code => "381") + AreaCode.create(:country => germany, :name => "Gelbensande", :area_code => "38201") + AreaCode.create(:country => germany, :name => "Volkenshagen", :area_code => "38202") + AreaCode.create(:country => germany, :name => "Bad Doberan", :area_code => "38203") + AreaCode.create(:country => germany, :name => "Broderstorf", :area_code => "38204") + AreaCode.create(:country => germany, :name => "Tessin b Rostock", :area_code => "38205") + AreaCode.create(:country => germany, :name => "Graal-Müritz Seeheilbad", :area_code => "38206") + AreaCode.create(:country => germany, :name => "Stäbelow", :area_code => "38207") + AreaCode.create(:country => germany, :name => "Kavelstorf", :area_code => "38208") + AreaCode.create(:country => germany, :name => "Sanitz b Rostock", :area_code => "38209") + AreaCode.create(:country => germany, :name => "Ribnitz-Damgarten", :area_code => "3821") + AreaCode.create(:country => germany, :name => "Wustrow Ostseebad", :area_code => "38220") + AreaCode.create(:country => germany, :name => "Marlow", :area_code => "38221") + AreaCode.create(:country => germany, :name => "Semlow", :area_code => "38222") + AreaCode.create(:country => germany, :name => "Saal Vorpom", :area_code => "38223") + AreaCode.create(:country => germany, :name => "Gresenhorst", :area_code => "38224") + AreaCode.create(:country => germany, :name => "Trinwillershagen", :area_code => "38225") + AreaCode.create(:country => germany, :name => "Dierhagen Ostseebad", :area_code => "38226") + AreaCode.create(:country => germany, :name => "Lüdershagen b Barth", :area_code => "38227") + AreaCode.create(:country => germany, :name => "Dettmannsdorf-Kölzow", :area_code => "38228") + AreaCode.create(:country => germany, :name => "Bad Sülze", :area_code => "38229") + AreaCode.create(:country => germany, :name => "Barth", :area_code => "38231") + AreaCode.create(:country => germany, :name => "Zingst Ostseebad", :area_code => "38232") + AreaCode.create(:country => germany, :name => "Prerow Ostseebad", :area_code => "38233") + AreaCode.create(:country => germany, :name => "Born a Darß", :area_code => "38234") + AreaCode.create(:country => germany, :name => "Kröpelin", :area_code => "38292") + AreaCode.create(:country => germany, :name => "Kühlungsborn Ostseebad", :area_code => "38293") + AreaCode.create(:country => germany, :name => "Neubukow", :area_code => "38294") + AreaCode.create(:country => germany, :name => "Satow b Bad Doberan", :area_code => "38295") + AreaCode.create(:country => germany, :name => "Rerik Ostseebad", :area_code => "38296") + AreaCode.create(:country => germany, :name => "Moitin", :area_code => "38297") + AreaCode.create(:country => germany, :name => "Insel Hiddensee", :area_code => "38300") + AreaCode.create(:country => germany, :name => "Putbus", :area_code => "38301") + AreaCode.create(:country => germany, :name => "Sagard", :area_code => "38302") + AreaCode.create(:country => germany, :name => "Sellin Ostseebad", :area_code => "38303") + AreaCode.create(:country => germany, :name => "Garz Rügen", :area_code => "38304") + AreaCode.create(:country => germany, :name => "Gingst", :area_code => "38305") + AreaCode.create(:country => germany, :name => "Samtens", :area_code => "38306") + AreaCode.create(:country => germany, :name => "Poseritz", :area_code => "38307") + AreaCode.create(:country => germany, :name => "Göhren Rügen", :area_code => "38308") + AreaCode.create(:country => germany, :name => "Trent", :area_code => "38309") + AreaCode.create(:country => germany, :name => "Stralsund", :area_code => "3831") + AreaCode.create(:country => germany, :name => "Tribsees", :area_code => "38320") + AreaCode.create(:country => germany, :name => "Martensdorf b Stralsund", :area_code => "38321") + AreaCode.create(:country => germany, :name => "Richtenberg", :area_code => "38322") + AreaCode.create(:country => germany, :name => "Prohn", :area_code => "38323") + AreaCode.create(:country => germany, :name => "Velgast", :area_code => "38324") + AreaCode.create(:country => germany, :name => "Rolofshagen", :area_code => "38325") + AreaCode.create(:country => germany, :name => "Grimmen", :area_code => "38326") + AreaCode.create(:country => germany, :name => "Elmenhorst Vorpom", :area_code => "38327") + AreaCode.create(:country => germany, :name => "Miltzow", :area_code => "38328") + AreaCode.create(:country => germany, :name => "Rakow Vorpom", :area_code => "38331") + AreaCode.create(:country => germany, :name => "Gross Bisdorf", :area_code => "38332") + AreaCode.create(:country => germany, :name => "Horst b Grimmen", :area_code => "38333") + AreaCode.create(:country => germany, :name => "Grammendorf", :area_code => "38334") + AreaCode.create(:country => germany, :name => "Greifswald", :area_code => "3834") + AreaCode.create(:country => germany, :name => "Mesekenhagen", :area_code => "38351") + AreaCode.create(:country => germany, :name => "Kemnitz b Greifswald", :area_code => "38352") + AreaCode.create(:country => germany, :name => "Gützkow b Greifswald", :area_code => "38353") + AreaCode.create(:country => germany, :name => "Wusterhusen", :area_code => "38354") + AreaCode.create(:country => germany, :name => "Züssow", :area_code => "38355") + AreaCode.create(:country => germany, :name => "Behrenhoff", :area_code => "38356") + AreaCode.create(:country => germany, :name => "Wolgast", :area_code => "3836") + AreaCode.create(:country => germany, :name => "Kröslin", :area_code => "38370") + AreaCode.create(:country => germany, :name => "Karlshagen", :area_code => "38371") + AreaCode.create(:country => germany, :name => "Usedom", :area_code => "38372") + AreaCode.create(:country => germany, :name => "Katzow", :area_code => "38373") + AreaCode.create(:country => germany, :name => "Lassan b Wolgast", :area_code => "38374") + AreaCode.create(:country => germany, :name => "Koserow", :area_code => "38375") + AreaCode.create(:country => germany, :name => "Zirchow", :area_code => "38376") + AreaCode.create(:country => germany, :name => "Zinnowitz", :area_code => "38377") + AreaCode.create(:country => germany, :name => "Heringsdorf Seebad", :area_code => "38378") + AreaCode.create(:country => germany, :name => "Benz Usedom", :area_code => "38379") + AreaCode.create(:country => germany, :name => "Bergen auf Rügen", :area_code => "3838") + AreaCode.create(:country => germany, :name => "Altenkirchen Rügen", :area_code => "38391") + AreaCode.create(:country => germany, :name => "Sassnitz", :area_code => "38392") + AreaCode.create(:country => germany, :name => "Binz Ostseebad", :area_code => "38393") + AreaCode.create(:country => germany, :name => "Wismar Meckl", :area_code => "3841") + AreaCode.create(:country => germany, :name => "Neukloster", :area_code => "38422") + AreaCode.create(:country => germany, :name => "Bad Kleinen", :area_code => "38423") + AreaCode.create(:country => germany, :name => "Bobitz", :area_code => "38424") + AreaCode.create(:country => germany, :name => "Kirchdorf Poel", :area_code => "38425") + AreaCode.create(:country => germany, :name => "Neuburg-Steinhausen", :area_code => "38426") + AreaCode.create(:country => germany, :name => "Blowatz", :area_code => "38427") + AreaCode.create(:country => germany, :name => "Hohenkirchen b Wismar", :area_code => "38428") + AreaCode.create(:country => germany, :name => "Glasin", :area_code => "38429") + AreaCode.create(:country => germany, :name => "Güstrow", :area_code => "3843") + AreaCode.create(:country => germany, :name => "Schwaan", :area_code => "3844") + AreaCode.create(:country => germany, :name => "Tarnow b Bützow", :area_code => "38450") + AreaCode.create(:country => germany, :name => "Hoppenrade b Güstrow", :area_code => "38451") + AreaCode.create(:country => germany, :name => "Lalendorf", :area_code => "38452") + AreaCode.create(:country => germany, :name => "Mistorf", :area_code => "38453") + AreaCode.create(:country => germany, :name => "Kritzkow", :area_code => "38454") + AreaCode.create(:country => germany, :name => "Plaaz", :area_code => "38455") + AreaCode.create(:country => germany, :name => "Langhagen b Güstrow", :area_code => "38456") + AreaCode.create(:country => germany, :name => "Krakow am See", :area_code => "38457") + AreaCode.create(:country => germany, :name => "Zehna", :area_code => "38458") + AreaCode.create(:country => germany, :name => "Laage", :area_code => "38459") + AreaCode.create(:country => germany, :name => "Bützow", :area_code => "38461") + AreaCode.create(:country => germany, :name => "Baumgarten Meckl", :area_code => "38462") + AreaCode.create(:country => germany, :name => "Bernitt", :area_code => "38464") + AreaCode.create(:country => germany, :name => "Jürgenshagen", :area_code => "38466") + AreaCode.create(:country => germany, :name => "Sternberg", :area_code => "3847") + AreaCode.create(:country => germany, :name => "Witzin", :area_code => "38481") + AreaCode.create(:country => germany, :name => "Warin", :area_code => "38482") + AreaCode.create(:country => germany, :name => "Brüel", :area_code => "38483") + AreaCode.create(:country => germany, :name => "Ventschow", :area_code => "38484") + AreaCode.create(:country => germany, :name => "Dabel", :area_code => "38485") + AreaCode.create(:country => germany, :name => "Gustävel", :area_code => "38486") + AreaCode.create(:country => germany, :name => "Demen", :area_code => "38488") + AreaCode.create(:country => germany, :name => "Schwerin Meckl", :area_code => "385") + AreaCode.create(:country => germany, :name => "Raben Steinfeld", :area_code => "3860") + AreaCode.create(:country => germany, :name => "Plate", :area_code => "3861") + AreaCode.create(:country => germany, :name => "Crivitz", :area_code => "3863") + AreaCode.create(:country => germany, :name => "Holthusen", :area_code => "3865") + AreaCode.create(:country => germany, :name => "Cambs", :area_code => "3866") + AreaCode.create(:country => germany, :name => "Lübstorf", :area_code => "3867") + AreaCode.create(:country => germany, :name => "Rastow", :area_code => "3868") + AreaCode.create(:country => germany, :name => "Dümmer", :area_code => "3869") + AreaCode.create(:country => germany, :name => "Parchim", :area_code => "3871") + AreaCode.create(:country => germany, :name => "Grebbin", :area_code => "38720") + AreaCode.create(:country => germany, :name => "Ziegendorf", :area_code => "38721") + AreaCode.create(:country => germany, :name => "Raduhn", :area_code => "38722") + AreaCode.create(:country => germany, :name => "Kladrum", :area_code => "38723") + AreaCode.create(:country => germany, :name => "Siggelkow", :area_code => "38724") + AreaCode.create(:country => germany, :name => "Gross Godems", :area_code => "38725") + AreaCode.create(:country => germany, :name => "Spornitz", :area_code => "38726") + AreaCode.create(:country => germany, :name => "Mestlin", :area_code => "38727") + AreaCode.create(:country => germany, :name => "Domsühl", :area_code => "38728") + AreaCode.create(:country => germany, :name => "Marnitz", :area_code => "38729") + AreaCode.create(:country => germany, :name => "Lübz", :area_code => "38731") + AreaCode.create(:country => germany, :name => "Gallin b Lübz", :area_code => "38732") + AreaCode.create(:country => germany, :name => "Karbow-Vietlübbe", :area_code => "38733") + AreaCode.create(:country => germany, :name => "Plau am See", :area_code => "38735") + AreaCode.create(:country => germany, :name => "Goldberg Meckl", :area_code => "38736") + AreaCode.create(:country => germany, :name => "Ganzlin", :area_code => "38737") + AreaCode.create(:country => germany, :name => "Karow b Lübz", :area_code => "38738") + AreaCode.create(:country => germany, :name => "Ludwigslust Meckl", :area_code => "3874") + AreaCode.create(:country => germany, :name => "Malliss", :area_code => "38750") + AreaCode.create(:country => germany, :name => "Picher", :area_code => "38751") + AreaCode.create(:country => germany, :name => "Zierzow b Ludwigslust", :area_code => "38752") + AreaCode.create(:country => germany, :name => "Wöbbelin", :area_code => "38753") + AreaCode.create(:country => germany, :name => "Leussow b Ludwigslust", :area_code => "38754") + AreaCode.create(:country => germany, :name => "Eldena", :area_code => "38755") + AreaCode.create(:country => germany, :name => "Grabow Meckl", :area_code => "38756") + AreaCode.create(:country => germany, :name => "Neustadt-Glewe", :area_code => "38757") + AreaCode.create(:country => germany, :name => "Dömitz", :area_code => "38758") + AreaCode.create(:country => germany, :name => "Tewswoos", :area_code => "38759") + AreaCode.create(:country => germany, :name => "Perleberg", :area_code => "3876") + AreaCode.create(:country => germany, :name => "Wittenberge", :area_code => "3877") + AreaCode.create(:country => germany, :name => "Lanz Brandenb", :area_code => "38780") + AreaCode.create(:country => germany, :name => "Mellen", :area_code => "38781") + AreaCode.create(:country => germany, :name => "Reetz b Perleberg", :area_code => "38782") + AreaCode.create(:country => germany, :name => "Dallmin", :area_code => "38783") + AreaCode.create(:country => germany, :name => "Kleinow Kr Prignitz", :area_code => "38784") + AreaCode.create(:country => germany, :name => "Berge b Perleberg", :area_code => "38785") + AreaCode.create(:country => germany, :name => "Glöwen", :area_code => "38787") + AreaCode.create(:country => germany, :name => "Gross Warnow", :area_code => "38788") + AreaCode.create(:country => germany, :name => "Wolfshagen b Perleberg", :area_code => "38789") + AreaCode.create(:country => germany, :name => "Bad Wilsnack", :area_code => "38791") + AreaCode.create(:country => germany, :name => "Lenzen (Elbe)", :area_code => "38792") + AreaCode.create(:country => germany, :name => "Dergenthin", :area_code => "38793") + AreaCode.create(:country => germany, :name => "Cumlosen", :area_code => "38794") + AreaCode.create(:country => germany, :name => "Viesecke", :area_code => "38796") + AreaCode.create(:country => germany, :name => "Karstädt Kr Prignitz", :area_code => "38797") + AreaCode.create(:country => germany, :name => "Grevesmühlen", :area_code => "3881") + AreaCode.create(:country => germany, :name => "Lüdersdorf Meckl", :area_code => "38821") + AreaCode.create(:country => germany, :name => "Diedrichshagen b Grevesmühlen", :area_code => "38822") + AreaCode.create(:country => germany, :name => "Selmsdorf", :area_code => "38823") + AreaCode.create(:country => germany, :name => "Mallentin", :area_code => "38824") + AreaCode.create(:country => germany, :name => "Klütz", :area_code => "38825") + AreaCode.create(:country => germany, :name => "Dassow", :area_code => "38826") + AreaCode.create(:country => germany, :name => "Kalkhorst", :area_code => "38827") + AreaCode.create(:country => germany, :name => "Schönberg Meckl", :area_code => "38828") + AreaCode.create(:country => germany, :name => "Hagenow", :area_code => "3883") + AreaCode.create(:country => germany, :name => "Neuhaus Elbe", :area_code => "38841") + AreaCode.create(:country => germany, :name => "Lüttenmark", :area_code => "38842") + AreaCode.create(:country => germany, :name => "Bennin", :area_code => "38843") + AreaCode.create(:country => germany, :name => "Gülze", :area_code => "38844") + AreaCode.create(:country => germany, :name => "Kaarssen", :area_code => "38845") + AreaCode.create(:country => germany, :name => "Boizenburg Elbe", :area_code => "38847") + AreaCode.create(:country => germany, :name => "Vellahn", :area_code => "38848") + AreaCode.create(:country => germany, :name => "Gammelin", :area_code => "38850") + AreaCode.create(:country => germany, :name => "Zarrentin Meckl", :area_code => "38851") + AreaCode.create(:country => germany, :name => "Wittenburg", :area_code => "38852") + AreaCode.create(:country => germany, :name => "Drönnewitz b Hagenow", :area_code => "38853") + AreaCode.create(:country => germany, :name => "Redefin", :area_code => "38854") + AreaCode.create(:country => germany, :name => "Lübtheen", :area_code => "38855") + AreaCode.create(:country => germany, :name => "Pritzier b Hagenow", :area_code => "38856") + AreaCode.create(:country => germany, :name => "Lassahn", :area_code => "38858") + AreaCode.create(:country => germany, :name => "Alt Zachun", :area_code => "38859") + AreaCode.create(:country => germany, :name => "Gadebusch", :area_code => "3886") + AreaCode.create(:country => germany, :name => "Mühlen Eichsen", :area_code => "38871") + AreaCode.create(:country => germany, :name => "Rehna", :area_code => "38872") + AreaCode.create(:country => germany, :name => "Carlow", :area_code => "38873") + AreaCode.create(:country => germany, :name => "Lützow", :area_code => "38874") + AreaCode.create(:country => germany, :name => "Schlagsdorf b Gadebusch", :area_code => "38875") + AreaCode.create(:country => germany, :name => "Roggendorf", :area_code => "38876") + AreaCode.create(:country => germany, :name => "Beetzendorf", :area_code => "39000") + AreaCode.create(:country => germany, :name => "Apenburg", :area_code => "39001") + AreaCode.create(:country => germany, :name => "Oebisfelde", :area_code => "39002") + AreaCode.create(:country => germany, :name => "Jübar", :area_code => "39003") + AreaCode.create(:country => germany, :name => "Köckte b Gardelegen", :area_code => "39004") + AreaCode.create(:country => germany, :name => "Kusey", :area_code => "39005") + AreaCode.create(:country => germany, :name => "Miesterhorst", :area_code => "39006") + AreaCode.create(:country => germany, :name => "Tangeln", :area_code => "39007") + AreaCode.create(:country => germany, :name => "Kunrau", :area_code => "39008") + AreaCode.create(:country => germany, :name => "Badel", :area_code => "39009") + AreaCode.create(:country => germany, :name => "Salzwedel", :area_code => "3901") + AreaCode.create(:country => germany, :name => "Diesdorf Altm", :area_code => "3902") + AreaCode.create(:country => germany, :name => "Brunau", :area_code => "39030") + AreaCode.create(:country => germany, :name => "Dähre", :area_code => "39031") + AreaCode.create(:country => germany, :name => "Mahlsdorf b Salzwedel", :area_code => "39032") + AreaCode.create(:country => germany, :name => "Wallstawe", :area_code => "39033") + AreaCode.create(:country => germany, :name => "Fleetmark", :area_code => "39034") + AreaCode.create(:country => germany, :name => "Kuhfelde", :area_code => "39035") + AreaCode.create(:country => germany, :name => "Binde", :area_code => "39036") + AreaCode.create(:country => germany, :name => "Pretzier", :area_code => "39037") + AreaCode.create(:country => germany, :name => "Henningen", :area_code => "39038") + AreaCode.create(:country => germany, :name => "Bonese", :area_code => "39039") + AreaCode.create(:country => germany, :name => "Haldensleben", :area_code => "3904") + AreaCode.create(:country => germany, :name => "Bartensleben", :area_code => "39050") + AreaCode.create(:country => germany, :name => "Calvörde", :area_code => "39051") + AreaCode.create(:country => germany, :name => "Erxleben b Haldensleben", :area_code => "39052") + AreaCode.create(:country => germany, :name => "Süplingen", :area_code => "39053") + AreaCode.create(:country => germany, :name => "Flechtingen", :area_code => "39054") + AreaCode.create(:country => germany, :name => "Hörsingen", :area_code => "39055") + AreaCode.create(:country => germany, :name => "Klüden", :area_code => "39056") + AreaCode.create(:country => germany, :name => "Rätzlingen Sachs-Anh", :area_code => "39057") + AreaCode.create(:country => germany, :name => "Uthmöden", :area_code => "39058") + AreaCode.create(:country => germany, :name => "Wegenstedt", :area_code => "39059") + AreaCode.create(:country => germany, :name => "Weferlingen", :area_code => "39061") + AreaCode.create(:country => germany, :name => "Bebertal", :area_code => "39062") + AreaCode.create(:country => germany, :name => "Gardelegen", :area_code => "3907") + AreaCode.create(:country => germany, :name => "Kalbe Milde", :area_code => "39080") + AreaCode.create(:country => germany, :name => "Kakerbeck Sachs-Anh", :area_code => "39081") + AreaCode.create(:country => germany, :name => "Mieste", :area_code => "39082") + AreaCode.create(:country => germany, :name => "Messdorf", :area_code => "39083") + AreaCode.create(:country => germany, :name => "Lindstedt", :area_code => "39084") + AreaCode.create(:country => germany, :name => "Zichtau", :area_code => "39085") + AreaCode.create(:country => germany, :name => "Jävenitz", :area_code => "39086") + AreaCode.create(:country => germany, :name => "Jerchel Altmark", :area_code => "39087") + AreaCode.create(:country => germany, :name => "Letzlingen", :area_code => "39088") + AreaCode.create(:country => germany, :name => "Bismark Altmark", :area_code => "39089") + AreaCode.create(:country => germany, :name => "Klötze Altmark", :area_code => "3909") + AreaCode.create(:country => germany, :name => "Magdeburg", :area_code => "391") + AreaCode.create(:country => germany, :name => "Gommern", :area_code => "39200") + AreaCode.create(:country => germany, :name => "Wolmirstedt", :area_code => "39201") + AreaCode.create(:country => germany, :name => "Gross Ammensleben", :area_code => "39202") + AreaCode.create(:country => germany, :name => "Barleben", :area_code => "39203") + AreaCode.create(:country => germany, :name => "Niederndodeleben", :area_code => "39204") + AreaCode.create(:country => germany, :name => "Langenweddingen", :area_code => "39205") + AreaCode.create(:country => germany, :name => "Eichenbarleben", :area_code => "39206") + AreaCode.create(:country => germany, :name => "Colbitz", :area_code => "39207") + AreaCode.create(:country => germany, :name => "Loitsche", :area_code => "39208") + AreaCode.create(:country => germany, :name => "Wanzleben", :area_code => "39209") + AreaCode.create(:country => germany, :name => "Burg b Magdeburg", :area_code => "3921") + AreaCode.create(:country => germany, :name => "Möckern b Magdeburg", :area_code => "39221") + AreaCode.create(:country => germany, :name => "Möser", :area_code => "39222") + AreaCode.create(:country => germany, :name => "Theessen", :area_code => "39223") + AreaCode.create(:country => germany, :name => "Büden", :area_code => "39224") + AreaCode.create(:country => germany, :name => "Altengrabow", :area_code => "39225") + AreaCode.create(:country => germany, :name => "Hohenziatz", :area_code => "39226") + AreaCode.create(:country => germany, :name => "Zerbst", :area_code => "3923") + AreaCode.create(:country => germany, :name => "Leitzkau", :area_code => "39241") + AreaCode.create(:country => germany, :name => "Prödel", :area_code => "39242") + AreaCode.create(:country => germany, :name => "Nedlitz b Zerbst", :area_code => "39243") + AreaCode.create(:country => germany, :name => "Steutz", :area_code => "39244") + AreaCode.create(:country => germany, :name => "Loburg", :area_code => "39245") + AreaCode.create(:country => germany, :name => "Lindau Anh", :area_code => "39246") + AreaCode.create(:country => germany, :name => "Güterglück", :area_code => "39247") + AreaCode.create(:country => germany, :name => "Dobritz", :area_code => "39248") + AreaCode.create(:country => germany, :name => "Stassfurt", :area_code => "3925") + AreaCode.create(:country => germany, :name => "Güsten Anh", :area_code => "39262") + AreaCode.create(:country => germany, :name => "Unseburg", :area_code => "39263") + AreaCode.create(:country => germany, :name => "Kroppenstedt", :area_code => "39264") + AreaCode.create(:country => germany, :name => "Löderburg", :area_code => "39265") + AreaCode.create(:country => germany, :name => "Förderstedt", :area_code => "39266") + AreaCode.create(:country => germany, :name => "Schneidlingen", :area_code => "39267") + AreaCode.create(:country => germany, :name => "Egeln", :area_code => "39268") + AreaCode.create(:country => germany, :name => "Schönebeck Elbe", :area_code => "3928") + AreaCode.create(:country => germany, :name => "Calbe Saale", :area_code => "39291") + AreaCode.create(:country => germany, :name => "Biederitz", :area_code => "39292") + AreaCode.create(:country => germany, :name => "Dreileben", :area_code => "39293") + AreaCode.create(:country => germany, :name => "Gross Rosenburg", :area_code => "39294") + AreaCode.create(:country => germany, :name => "Zuchau", :area_code => "39295") + AreaCode.create(:country => germany, :name => "Welsleben", :area_code => "39296") + AreaCode.create(:country => germany, :name => "Eickendorf Kr Schönebeck", :area_code => "39297") + AreaCode.create(:country => germany, :name => "Barby Elbe", :area_code => "39298") + AreaCode.create(:country => germany, :name => "Stendal", :area_code => "3931") + AreaCode.create(:country => germany, :name => "Schinne", :area_code => "39320") + AreaCode.create(:country => germany, :name => "Arneburg", :area_code => "39321") + AreaCode.create(:country => germany, :name => "Tangermünde", :area_code => "39322") + AreaCode.create(:country => germany, :name => "Schönhausen Elbe", :area_code => "39323") + AreaCode.create(:country => germany, :name => "Kläden b Stendal", :area_code => "39324") + AreaCode.create(:country => germany, :name => "Vinzelberg", :area_code => "39325") + AreaCode.create(:country => germany, :name => "Klietz", :area_code => "39327") + AreaCode.create(:country => germany, :name => "Rochau", :area_code => "39328") + AreaCode.create(:country => germany, :name => "Möringen", :area_code => "39329") + AreaCode.create(:country => germany, :name => "Genthin", :area_code => "3933") + AreaCode.create(:country => germany, :name => "Redekin", :area_code => "39341") + AreaCode.create(:country => germany, :name => "Gladau", :area_code => "39342") + AreaCode.create(:country => germany, :name => "Jerichow", :area_code => "39343") + AreaCode.create(:country => germany, :name => "Güsen", :area_code => "39344") + AreaCode.create(:country => germany, :name => "Parchen", :area_code => "39345") + AreaCode.create(:country => germany, :name => "Tucheim", :area_code => "39346") + AreaCode.create(:country => germany, :name => "Kade", :area_code => "39347") + AreaCode.create(:country => germany, :name => "Klitsche", :area_code => "39348") + AreaCode.create(:country => germany, :name => "Parey Elbe", :area_code => "39349") + AreaCode.create(:country => germany, :name => "Tangerhütte", :area_code => "3935") + AreaCode.create(:country => germany, :name => "Lüderitz", :area_code => "39361") + AreaCode.create(:country => germany, :name => "Grieben b Tangerhütte", :area_code => "39362") + AreaCode.create(:country => germany, :name => "Angern", :area_code => "39363") + AreaCode.create(:country => germany, :name => "Dolle", :area_code => "39364") + AreaCode.create(:country => germany, :name => "Bellingen b Stendal", :area_code => "39365") + AreaCode.create(:country => germany, :name => "Kehnert", :area_code => "39366") + AreaCode.create(:country => germany, :name => "Osterburg Altmark", :area_code => "3937") + AreaCode.create(:country => germany, :name => "Kamern", :area_code => "39382") + AreaCode.create(:country => germany, :name => "Sandau Elbe", :area_code => "39383") + AreaCode.create(:country => germany, :name => "Arendsee Altmark", :area_code => "39384") + AreaCode.create(:country => germany, :name => "Seehausen Altmark", :area_code => "39386") + AreaCode.create(:country => germany, :name => "Havelberg", :area_code => "39387") + AreaCode.create(:country => germany, :name => "Goldbeck Altm", :area_code => "39388") + AreaCode.create(:country => germany, :name => "Schollene", :area_code => "39389") + AreaCode.create(:country => germany, :name => "Iden", :area_code => "39390") + AreaCode.create(:country => germany, :name => "Lückstedt", :area_code => "39391") + AreaCode.create(:country => germany, :name => "Rönnebeck Sachs-Ahn", :area_code => "39392") + AreaCode.create(:country => germany, :name => "Werben Elbe", :area_code => "39393") + AreaCode.create(:country => germany, :name => "Hohenberg-Krusemark", :area_code => "39394") + AreaCode.create(:country => germany, :name => "Wanzer", :area_code => "39395") + AreaCode.create(:country => germany, :name => "Neukirchen Altmark", :area_code => "39396") + AreaCode.create(:country => germany, :name => "Geestgottberg", :area_code => "39397") + AreaCode.create(:country => germany, :name => "Gross Garz", :area_code => "39398") + AreaCode.create(:country => germany, :name => "Kleinau", :area_code => "39399") + AreaCode.create(:country => germany, :name => "Wefensleben", :area_code => "39400") + AreaCode.create(:country => germany, :name => "Neuwegersleben", :area_code => "39401") + AreaCode.create(:country => germany, :name => "Völpke", :area_code => "39402") + AreaCode.create(:country => germany, :name => "Gröningen Sachs-Ahn", :area_code => "39403") + AreaCode.create(:country => germany, :name => "Ausleben", :area_code => "39404") + AreaCode.create(:country => germany, :name => "Hötensleben", :area_code => "39405") + AreaCode.create(:country => germany, :name => "Harbke", :area_code => "39406") + AreaCode.create(:country => germany, :name => "Seehausen Börde", :area_code => "39407") + AreaCode.create(:country => germany, :name => "Hadmersleben", :area_code => "39408") + AreaCode.create(:country => germany, :name => "Eilsleben", :area_code => "39409") + AreaCode.create(:country => germany, :name => "Halberstadt", :area_code => "3941") + AreaCode.create(:country => germany, :name => "Osterwieck", :area_code => "39421") + AreaCode.create(:country => germany, :name => "Badersleben", :area_code => "39422") + AreaCode.create(:country => germany, :name => "Wegeleben", :area_code => "39423") + AreaCode.create(:country => germany, :name => "Schwanebeck Sachs-Anh", :area_code => "39424") + AreaCode.create(:country => germany, :name => "Dingelstedt a Huy", :area_code => "39425") + AreaCode.create(:country => germany, :name => "Hessen", :area_code => "39426") + AreaCode.create(:country => germany, :name => "Ströbeck", :area_code => "39427") + AreaCode.create(:country => germany, :name => "Pabstorf", :area_code => "39428") + AreaCode.create(:country => germany, :name => "Wernigerode", :area_code => "3943") + AreaCode.create(:country => germany, :name => "Blankenburg Harz", :area_code => "3944") + AreaCode.create(:country => germany, :name => "Wasserleben", :area_code => "39451") + AreaCode.create(:country => germany, :name => "Ilsenburg", :area_code => "39452") + AreaCode.create(:country => germany, :name => "Derenburg", :area_code => "39453") + AreaCode.create(:country => germany, :name => "Elbingerode Harz", :area_code => "39454") + AreaCode.create(:country => germany, :name => "Schierke", :area_code => "39455") + AreaCode.create(:country => germany, :name => "Altenbrak", :area_code => "39456") + AreaCode.create(:country => germany, :name => "Benneckenstein Harz", :area_code => "39457") + AreaCode.create(:country => germany, :name => "Heudeber", :area_code => "39458") + AreaCode.create(:country => germany, :name => "Hasselfelde", :area_code => "39459") + AreaCode.create(:country => germany, :name => "Quedlinburg", :area_code => "3946") + AreaCode.create(:country => germany, :name => "Thale", :area_code => "3947") + AreaCode.create(:country => germany, :name => "Hedersleben b Aschersleben", :area_code => "39481") + AreaCode.create(:country => germany, :name => "Gatersleben", :area_code => "39482") + AreaCode.create(:country => germany, :name => "Ballenstedt", :area_code => "39483") + AreaCode.create(:country => germany, :name => "Harzgerode", :area_code => "39484") + AreaCode.create(:country => germany, :name => "Gernrode Harz", :area_code => "39485") + AreaCode.create(:country => germany, :name => "Friedrichsbrunn", :area_code => "39487") + AreaCode.create(:country => germany, :name => "Güntersberge", :area_code => "39488") + AreaCode.create(:country => germany, :name => "Strassberg Harz", :area_code => "39489") + AreaCode.create(:country => germany, :name => "Oschersleben Bode", :area_code => "3949") + AreaCode.create(:country => germany, :name => "Neubrandenburg", :area_code => "395") + AreaCode.create(:country => germany, :name => "Zwiedorf", :area_code => "39600") + AreaCode.create(:country => germany, :name => "Friedland Meckl", :area_code => "39601") + AreaCode.create(:country => germany, :name => "Kleeth", :area_code => "39602") + AreaCode.create(:country => germany, :name => "Burg Stargard", :area_code => "39603") + AreaCode.create(:country => germany, :name => "Wildberg b Altentreptow", :area_code => "39604") + AreaCode.create(:country => germany, :name => "Gross Nemerow", :area_code => "39605") + AreaCode.create(:country => germany, :name => "Glienke", :area_code => "39606") + AreaCode.create(:country => germany, :name => "Kotelow", :area_code => "39607") + AreaCode.create(:country => germany, :name => "Staven", :area_code => "39608") + AreaCode.create(:country => germany, :name => "Altentreptow", :area_code => "3961") + AreaCode.create(:country => germany, :name => "Penzlin b Waren", :area_code => "3962") + AreaCode.create(:country => germany, :name => "Woldegk", :area_code => "3963") + AreaCode.create(:country => germany, :name => "Bredenfelde b Strasburg", :area_code => "3964") + AreaCode.create(:country => germany, :name => "Burow b Altentreptow", :area_code => "3965") + AreaCode.create(:country => germany, :name => "Cölpin", :area_code => "3966") + AreaCode.create(:country => germany, :name => "Oertzenhof b Strasburg", :area_code => "3967") + AreaCode.create(:country => germany, :name => "Schönbeck Meckl", :area_code => "3968") + AreaCode.create(:country => germany, :name => "Siedenbollentin", :area_code => "3969") + AreaCode.create(:country => germany, :name => "Anklam", :area_code => "3971") + AreaCode.create(:country => germany, :name => "Liepen b Anklam", :area_code => "39721") + AreaCode.create(:country => germany, :name => "Sarnow b Anklam", :area_code => "39722") + AreaCode.create(:country => germany, :name => "Krien", :area_code => "39723") + AreaCode.create(:country => germany, :name => "Klein Bünzow", :area_code => "39724") + AreaCode.create(:country => germany, :name => "Ducherow", :area_code => "39726") + AreaCode.create(:country => germany, :name => "Spantekow", :area_code => "39727") + AreaCode.create(:country => germany, :name => "Medow b Anklam", :area_code => "39728") + AreaCode.create(:country => germany, :name => "Pasewalk", :area_code => "3973") + AreaCode.create(:country => germany, :name => "Nechlin", :area_code => "39740") + AreaCode.create(:country => germany, :name => "Jatznick", :area_code => "39741") + AreaCode.create(:country => germany, :name => "Brüssow b Pasewalk", :area_code => "39742") + AreaCode.create(:country => germany, :name => "Zerrenthin", :area_code => "39743") + AreaCode.create(:country => germany, :name => "Rothenklempenow", :area_code => "39744") + AreaCode.create(:country => germany, :name => "Hetzdorf b Strasburg", :area_code => "39745") + AreaCode.create(:country => germany, :name => "Krackow", :area_code => "39746") + AreaCode.create(:country => germany, :name => "Züsedom", :area_code => "39747") + AreaCode.create(:country => germany, :name => "Viereck", :area_code => "39748") + AreaCode.create(:country => germany, :name => "Grambow b Pasewalk", :area_code => "39749") + AreaCode.create(:country => germany, :name => "Penkun", :area_code => "39751") + AreaCode.create(:country => germany, :name => "Blumenhagen b Strasburg", :area_code => "39752") + AreaCode.create(:country => germany, :name => "Strasburg", :area_code => "39753") + AreaCode.create(:country => germany, :name => "Löcknitz Vorpom", :area_code => "39754") + AreaCode.create(:country => germany, :name => "Torgelow b Ueckermünde", :area_code => "3976") + AreaCode.create(:country => germany, :name => "Ueckermünde", :area_code => "39771") + AreaCode.create(:country => germany, :name => "Rothemühl", :area_code => "39772") + AreaCode.create(:country => germany, :name => "Altwarp", :area_code => "39773") + AreaCode.create(:country => germany, :name => "Mönkebude", :area_code => "39774") + AreaCode.create(:country => germany, :name => "Ahlbeck b Torgelow", :area_code => "39775") + AreaCode.create(:country => germany, :name => "Hintersee", :area_code => "39776") + AreaCode.create(:country => germany, :name => "Borkenfriede", :area_code => "39777") + AreaCode.create(:country => germany, :name => "Ferdinandshof b Torgelow", :area_code => "39778") + AreaCode.create(:country => germany, :name => "Eggesin", :area_code => "39779") + AreaCode.create(:country => germany, :name => "Neustrelitz", :area_code => "3981") + AreaCode.create(:country => germany, :name => "Triepkendorf", :area_code => "39820") + AreaCode.create(:country => germany, :name => "Carpin", :area_code => "39821") + AreaCode.create(:country => germany, :name => "Kratzeburg", :area_code => "39822") + AreaCode.create(:country => germany, :name => "Rechlin", :area_code => "39823") + AreaCode.create(:country => germany, :name => "Hohenzieritz", :area_code => "39824") + AreaCode.create(:country => germany, :name => "Wokuhl", :area_code => "39825") + AreaCode.create(:country => germany, :name => "Blankensee b Neustrelitz", :area_code => "39826") + AreaCode.create(:country => germany, :name => "Schwarz b Neustrelitz", :area_code => "39827") + AreaCode.create(:country => germany, :name => "Wustrow Kr Mecklenburg-Strelitz", :area_code => "39828") + AreaCode.create(:country => germany, :name => "Blankenförde", :area_code => "39829") + AreaCode.create(:country => germany, :name => "Feldberg Meckl", :area_code => "39831") + AreaCode.create(:country => germany, :name => "Wesenberg Meckl", :area_code => "39832") + AreaCode.create(:country => germany, :name => "Mirow Kr Neustrelitz", :area_code => "39833") + AreaCode.create(:country => germany, :name => "Prenzlau", :area_code => "3984") + AreaCode.create(:country => germany, :name => "Göritz b Prenzlau", :area_code => "39851") + AreaCode.create(:country => germany, :name => "Schönermark b Prenzlau", :area_code => "39852") + AreaCode.create(:country => germany, :name => "Holzendorf b Prenzlau", :area_code => "39853") + AreaCode.create(:country => germany, :name => "Kleptow", :area_code => "39854") + AreaCode.create(:country => germany, :name => "Parmen-Weggun", :area_code => "39855") + AreaCode.create(:country => germany, :name => "Beenz b Prenzlau", :area_code => "39856") + AreaCode.create(:country => germany, :name => "Drense", :area_code => "39857") + AreaCode.create(:country => germany, :name => "Bietikow", :area_code => "39858") + AreaCode.create(:country => germany, :name => "Fürstenwerder", :area_code => "39859") + AreaCode.create(:country => germany, :name => "Gramzow b Prenzlau", :area_code => "39861") + AreaCode.create(:country => germany, :name => "Schmölln b Prenzlau", :area_code => "39862") + AreaCode.create(:country => germany, :name => "Seehausen b Prenzlau", :area_code => "39863") + AreaCode.create(:country => germany, :name => "Templin", :area_code => "3987") + AreaCode.create(:country => germany, :name => "Ringenwalde b Templin", :area_code => "39881") + AreaCode.create(:country => germany, :name => "Gollin", :area_code => "39882") + AreaCode.create(:country => germany, :name => "Groß Dölln", :area_code => "39883") + AreaCode.create(:country => germany, :name => "Hassleben b Prenzlau", :area_code => "39884") + AreaCode.create(:country => germany, :name => "Jakobshagen", :area_code => "39885") + AreaCode.create(:country => germany, :name => "Milmersdorf", :area_code => "39886") + AreaCode.create(:country => germany, :name => "Gerswalde", :area_code => "39887") + AreaCode.create(:country => germany, :name => "Lychen", :area_code => "39888") + AreaCode.create(:country => germany, :name => "Boitzenburg", :area_code => "39889") + AreaCode.create(:country => germany, :name => "Waren Müritz", :area_code => "3991") + AreaCode.create(:country => germany, :name => "Ankershagen", :area_code => "39921") + AreaCode.create(:country => germany, :name => "Dambeck b Röbel", :area_code => "39922") + AreaCode.create(:country => germany, :name => "Priborn", :area_code => "39923") + AreaCode.create(:country => germany, :name => "Stuer", :area_code => "39924") + AreaCode.create(:country => germany, :name => "Wredenhagen", :area_code => "39925") + AreaCode.create(:country => germany, :name => "Grabowhöfe", :area_code => "39926") + AreaCode.create(:country => germany, :name => "Nossentiner Hütte", :area_code => "39927") + AreaCode.create(:country => germany, :name => "Möllenhagen", :area_code => "39928") + AreaCode.create(:country => germany, :name => "Jabel b Waren", :area_code => "39929") + AreaCode.create(:country => germany, :name => "Röbel Müritz", :area_code => "39931") + AreaCode.create(:country => germany, :name => "Malchow b Waren", :area_code => "39932") + AreaCode.create(:country => germany, :name => "Vollrathsruhe", :area_code => "39933") + AreaCode.create(:country => germany, :name => "Groß Plasten", :area_code => "39934") + AreaCode.create(:country => germany, :name => "Malchin", :area_code => "3994") + AreaCode.create(:country => germany, :name => "Faulenrost", :area_code => "39951") + AreaCode.create(:country => germany, :name => "Grammentin", :area_code => "39952") + AreaCode.create(:country => germany, :name => "Schwinkendorf", :area_code => "39953") + AreaCode.create(:country => germany, :name => "Stavenhagen Reuterstadt", :area_code => "39954") + AreaCode.create(:country => germany, :name => "Jürgenstorf Meckl", :area_code => "39955") + AreaCode.create(:country => germany, :name => "Neukalen", :area_code => "39956") + AreaCode.create(:country => germany, :name => "Gielow", :area_code => "39957") + AreaCode.create(:country => germany, :name => "Dargun", :area_code => "39959") + AreaCode.create(:country => germany, :name => "Teterow", :area_code => "3996") + AreaCode.create(:country => germany, :name => "Gnoien", :area_code => "39971") + AreaCode.create(:country => germany, :name => "Walkendorf", :area_code => "39972") + AreaCode.create(:country => germany, :name => "Altkalen", :area_code => "39973") + AreaCode.create(:country => germany, :name => "Thürkow", :area_code => "39975") + AreaCode.create(:country => germany, :name => "Groß Bützin", :area_code => "39976") + AreaCode.create(:country => germany, :name => "Jördenstorf", :area_code => "39977") + AreaCode.create(:country => germany, :name => "Gross Roge", :area_code => "39978") + AreaCode.create(:country => germany, :name => "Demmin", :area_code => "3998") + AreaCode.create(:country => germany, :name => "Daberkow", :area_code => "39991") + AreaCode.create(:country => germany, :name => "Görmin", :area_code => "39992") + AreaCode.create(:country => germany, :name => "Hohenmocker", :area_code => "39993") + AreaCode.create(:country => germany, :name => "Metschow", :area_code => "39994") + AreaCode.create(:country => germany, :name => "Nossendorf", :area_code => "39995") + AreaCode.create(:country => germany, :name => "Törpin", :area_code => "39996") + AreaCode.create(:country => germany, :name => "Jarmen", :area_code => "39997") + AreaCode.create(:country => germany, :name => "Loitz b Demmin", :area_code => "39998") + AreaCode.create(:country => germany, :name => "Tutow", :area_code => "39999") + AreaCode.create(:country => germany, :name => "Hamburg", :area_code => "40") + AreaCode.create(:country => germany, :name => "Pinneberg", :area_code => "4101") + AreaCode.create(:country => germany, :name => "Ahrensburg", :area_code => "4102") + AreaCode.create(:country => germany, :name => "Wedel", :area_code => "4103") + AreaCode.create(:country => germany, :name => "Aumühle b Hamburg", :area_code => "4104") + AreaCode.create(:country => germany, :name => "Seevetal", :area_code => "4105") + AreaCode.create(:country => germany, :name => "Quickborn Kr Pinneberg", :area_code => "4106") + AreaCode.create(:country => germany, :name => "Siek Kr Stormarn", :area_code => "4107") + AreaCode.create(:country => germany, :name => "Rosengarten Kr Harburg", :area_code => "4108") + AreaCode.create(:country => germany, :name => "Tangstedt Bz Hamburg", :area_code => "4109") + AreaCode.create(:country => germany, :name => "Ellerhoop", :area_code => "4120") + AreaCode.create(:country => germany, :name => "Elmshorn", :area_code => "4121") + AreaCode.create(:country => germany, :name => "Uetersen", :area_code => "4122") + AreaCode.create(:country => germany, :name => "Barmstedt", :area_code => "4123") + AreaCode.create(:country => germany, :name => "Glückstadt", :area_code => "4124") + AreaCode.create(:country => germany, :name => "Seestermühe", :area_code => "4125") + AreaCode.create(:country => germany, :name => "Horst Holstein", :area_code => "4126") + AreaCode.create(:country => germany, :name => "Westerhorn", :area_code => "4127") + AreaCode.create(:country => germany, :name => "Kollmar", :area_code => "4128") + AreaCode.create(:country => germany, :name => "Haseldorf", :area_code => "4129") + AreaCode.create(:country => germany, :name => "Lüneburg", :area_code => "4131") + AreaCode.create(:country => germany, :name => "Amelinghausen", :area_code => "4132") + AreaCode.create(:country => germany, :name => "Wittorf Kr Lüneburg", :area_code => "4133") + AreaCode.create(:country => germany, :name => "Embsen Kr Lünebeburg", :area_code => "4134") + AreaCode.create(:country => germany, :name => "Kirchgellersen", :area_code => "4135") + AreaCode.create(:country => germany, :name => "Scharnebeck", :area_code => "4136") + AreaCode.create(:country => germany, :name => "Barendorf", :area_code => "4137") + AreaCode.create(:country => germany, :name => "Betzendorf Kr Lünebeburg", :area_code => "4138") + AreaCode.create(:country => germany, :name => "Hohnstorf Elbe", :area_code => "4139") + AreaCode.create(:country => germany, :name => "Estorf Kr Stade", :area_code => "4140") + AreaCode.create(:country => germany, :name => "Stade", :area_code => "4141") + AreaCode.create(:country => germany, :name => "Steinkirchen Kr Stade", :area_code => "4142") + AreaCode.create(:country => germany, :name => "Drochtersen", :area_code => "4143") + AreaCode.create(:country => germany, :name => "Himmelpforten", :area_code => "4144") + AreaCode.create(:country => germany, :name => "Stade-Bützfleth", :area_code => "4146") + AreaCode.create(:country => germany, :name => "Drochtersen-Assel", :area_code => "4148") + AreaCode.create(:country => germany, :name => "Fredenbeck", :area_code => "4149") + AreaCode.create(:country => germany, :name => "Schwarzenbek", :area_code => "4151") + AreaCode.create(:country => germany, :name => "Geesthacht", :area_code => "4152") + AreaCode.create(:country => germany, :name => "Lauenburg Elbe", :area_code => "4153") + AreaCode.create(:country => germany, :name => "Trittau", :area_code => "4154") + AreaCode.create(:country => germany, :name => "Büchen", :area_code => "4155") + AreaCode.create(:country => germany, :name => "Talkau", :area_code => "4156") + AreaCode.create(:country => germany, :name => "Roseburg", :area_code => "4158") + AreaCode.create(:country => germany, :name => "Basthorst", :area_code => "4159") + AreaCode.create(:country => germany, :name => "Buxtehude", :area_code => "4161") + AreaCode.create(:country => germany, :name => "Jork", :area_code => "4162") + AreaCode.create(:country => germany, :name => "Horneburg Niederelbe", :area_code => "4163") + AreaCode.create(:country => germany, :name => "Harsefeld", :area_code => "4164") + AreaCode.create(:country => germany, :name => "Hollenstedt Nordheide", :area_code => "4165") + AreaCode.create(:country => germany, :name => "Ahlerstedt", :area_code => "4166") + AreaCode.create(:country => germany, :name => "Apensen", :area_code => "4167") + AreaCode.create(:country => germany, :name => "Neu Wulmstorf-Elstorf", :area_code => "4168") + AreaCode.create(:country => germany, :name => "Sauensiek", :area_code => "4169") + AreaCode.create(:country => germany, :name => "Winsen Luhe", :area_code => "4171") + AreaCode.create(:country => germany, :name => "Salzhausen", :area_code => "4172") + AreaCode.create(:country => germany, :name => "Wulfsen", :area_code => "4173") + AreaCode.create(:country => germany, :name => "Stelle Kr Harburg", :area_code => "4174") + AreaCode.create(:country => germany, :name => "Egestorf Nordheide", :area_code => "4175") + AreaCode.create(:country => germany, :name => "Marschacht", :area_code => "4176") + AreaCode.create(:country => germany, :name => "Drage Elbe", :area_code => "4177") + AreaCode.create(:country => germany, :name => "Radbruch", :area_code => "4178") + AreaCode.create(:country => germany, :name => "Winsen-Tönnhausen", :area_code => "4179") + AreaCode.create(:country => germany, :name => "Königsmoor", :area_code => "4180") + AreaCode.create(:country => germany, :name => "Buchholz in der Nordheide", :area_code => "4181") + AreaCode.create(:country => germany, :name => "Tostedt", :area_code => "4182") + AreaCode.create(:country => germany, :name => "Jesteburg", :area_code => "4183") + AreaCode.create(:country => germany, :name => "Hanstedt Nordheide", :area_code => "4184") + AreaCode.create(:country => germany, :name => "Marxen Auetal", :area_code => "4185") + AreaCode.create(:country => germany, :name => "Buchholz-Trelde", :area_code => "4186") + AreaCode.create(:country => germany, :name => "Holm-Seppensen", :area_code => "4187") + AreaCode.create(:country => germany, :name => "Welle Nordheide", :area_code => "4188") + AreaCode.create(:country => germany, :name => "Undeloh", :area_code => "4189") + AreaCode.create(:country => germany, :name => "Kaltenkirchen Holst", :area_code => "4191") + AreaCode.create(:country => germany, :name => "Bad Bramstedt", :area_code => "4192") + AreaCode.create(:country => germany, :name => "Henstedt-Ulzburg", :area_code => "4193") + AreaCode.create(:country => germany, :name => "Sievershütten", :area_code => "4194") + AreaCode.create(:country => germany, :name => "Hartenholm", :area_code => "4195") + AreaCode.create(:country => germany, :name => "Achim b Bremen", :area_code => "4202") + AreaCode.create(:country => germany, :name => "Weyhe b Bremen", :area_code => "4203") + AreaCode.create(:country => germany, :name => "Thedinghausen", :area_code => "4204") + AreaCode.create(:country => germany, :name => "Ottersberg", :area_code => "4205") + AreaCode.create(:country => germany, :name => "Stuhr-Heiligenrode", :area_code => "4206") + AreaCode.create(:country => germany, :name => "Oyten", :area_code => "4207") + AreaCode.create(:country => germany, :name => "Grasberg", :area_code => "4208") + AreaCode.create(:country => germany, :name => "Schwanewede", :area_code => "4209") + AreaCode.create(:country => germany, :name => "Bremen", :area_code => "421") + AreaCode.create(:country => germany, :name => "Delmenhorst", :area_code => "4221") + AreaCode.create(:country => germany, :name => "Ganderkesee", :area_code => "4222") + AreaCode.create(:country => germany, :name => "Ganderkesee-Bookholzberg", :area_code => "4223") + AreaCode.create(:country => germany, :name => "Gross Ippener", :area_code => "4224") + AreaCode.create(:country => germany, :name => "Verden-Walle", :area_code => "4230") + AreaCode.create(:country => germany, :name => "Verden Aller", :area_code => "4231") + AreaCode.create(:country => germany, :name => "Langwedel Kr Verden", :area_code => "4232") + AreaCode.create(:country => germany, :name => "Blender", :area_code => "4233") + AreaCode.create(:country => germany, :name => "Dörverden", :area_code => "4234") + AreaCode.create(:country => germany, :name => "Langwedel-Etelsen", :area_code => "4235") + AreaCode.create(:country => germany, :name => "Kirchlinteln", :area_code => "4236") + AreaCode.create(:country => germany, :name => "Bendingbostel", :area_code => "4237") + AreaCode.create(:country => germany, :name => "Neddenaverbergen", :area_code => "4238") + AreaCode.create(:country => germany, :name => "Dörverden-Westen", :area_code => "4239") + AreaCode.create(:country => germany, :name => "Syke-Heiligenfelde", :area_code => "4240") + AreaCode.create(:country => germany, :name => "Bassum", :area_code => "4241") + AreaCode.create(:country => germany, :name => "Syke", :area_code => "4242") + AreaCode.create(:country => germany, :name => "Twistringen", :area_code => "4243") + AreaCode.create(:country => germany, :name => "Harpstedt", :area_code => "4244") + AreaCode.create(:country => germany, :name => "Neuenkirchen b Bassum", :area_code => "4245") + AreaCode.create(:country => germany, :name => "Twistringen-Heiligenloh", :area_code => "4246") + AreaCode.create(:country => germany, :name => "Affinghausen", :area_code => "4247") + AreaCode.create(:country => germany, :name => "Bassum-Neubruchhausen", :area_code => "4248") + AreaCode.create(:country => germany, :name => "Bassum-Nordwohlde", :area_code => "4249") + AreaCode.create(:country => germany, :name => "Hoya", :area_code => "4251") + AreaCode.create(:country => germany, :name => "Bruchhausen-Vilsen", :area_code => "4252") + AreaCode.create(:country => germany, :name => "Asendorf Kr Diepholz", :area_code => "4253") + AreaCode.create(:country => germany, :name => "Eystrup", :area_code => "4254") + AreaCode.create(:country => germany, :name => "Martfeld", :area_code => "4255") + AreaCode.create(:country => germany, :name => "Hilgermissen", :area_code => "4256") + AreaCode.create(:country => germany, :name => "Schweringen", :area_code => "4257") + AreaCode.create(:country => germany, :name => "Schwarme", :area_code => "4258") + AreaCode.create(:country => germany, :name => "Visselhövede-Wittorf", :area_code => "4260") + AreaCode.create(:country => germany, :name => "Rotenburg Wümme", :area_code => "4261") + AreaCode.create(:country => germany, :name => "Visselhövede", :area_code => "4262") + AreaCode.create(:country => germany, :name => "Scheessel", :area_code => "4263") + AreaCode.create(:country => germany, :name => "Sottrum Kr Rotenburg", :area_code => "4264") + AreaCode.create(:country => germany, :name => "Fintel", :area_code => "4265") + AreaCode.create(:country => germany, :name => "Brockel", :area_code => "4266") + AreaCode.create(:country => germany, :name => "Lauenbrück", :area_code => "4267") + AreaCode.create(:country => germany, :name => "Bötersen", :area_code => "4268") + AreaCode.create(:country => germany, :name => "Ahausen-Kirchwalsede", :area_code => "4269") + AreaCode.create(:country => germany, :name => "Sulingen", :area_code => "4271") + AreaCode.create(:country => germany, :name => "Siedenburg", :area_code => "4272") + AreaCode.create(:country => germany, :name => "Kirchdorf b Sulingen", :area_code => "4273") + AreaCode.create(:country => germany, :name => "Varrel b Sulingen", :area_code => "4274") + AreaCode.create(:country => germany, :name => "Ehrenburg", :area_code => "4275") + AreaCode.create(:country => germany, :name => "Borstel b Sulingen", :area_code => "4276") + AreaCode.create(:country => germany, :name => "Schwaförden", :area_code => "4277") + AreaCode.create(:country => germany, :name => "Zeven", :area_code => "4281") + AreaCode.create(:country => germany, :name => "Sittensen", :area_code => "4282") + AreaCode.create(:country => germany, :name => "Tarmstedt", :area_code => "4283") + AreaCode.create(:country => germany, :name => "Selsingen", :area_code => "4284") + AreaCode.create(:country => germany, :name => "Rhade b Zeven", :area_code => "4285") + AreaCode.create(:country => germany, :name => "Gyhum", :area_code => "4286") + AreaCode.create(:country => germany, :name => "Heeslingen-Boitzen", :area_code => "4287") + AreaCode.create(:country => germany, :name => "Horstedt Kr Rotenburg", :area_code => "4288") + AreaCode.create(:country => germany, :name => "Kirchtimke", :area_code => "4289") + AreaCode.create(:country => germany, :name => "Ritterhude", :area_code => "4292") + AreaCode.create(:country => germany, :name => "Ottersberg-Fischerhude", :area_code => "4293") + AreaCode.create(:country => germany, :name => "Riede Kr Verden", :area_code => "4294") + AreaCode.create(:country => germany, :name => "Emtinghausen", :area_code => "4295") + AreaCode.create(:country => germany, :name => "Schwanewede-Aschwarden", :area_code => "4296") + AreaCode.create(:country => germany, :name => "Ottersberg-Posthausen", :area_code => "4297") + AreaCode.create(:country => germany, :name => "Lilienthal", :area_code => "4298") + AreaCode.create(:country => germany, :name => "Kirchbarkau", :area_code => "4302") + AreaCode.create(:country => germany, :name => "Schlesen", :area_code => "4303") + AreaCode.create(:country => germany, :name => "Westensee", :area_code => "4305") + AreaCode.create(:country => germany, :name => "Raisdorf", :area_code => "4307") + AreaCode.create(:country => germany, :name => "Schwedeneck", :area_code => "4308") + AreaCode.create(:country => germany, :name => "Kiel", :area_code => "431") + AreaCode.create(:country => germany, :name => "Heidmühlen", :area_code => "4320") + AreaCode.create(:country => germany, :name => "Neumünster", :area_code => "4321") + AreaCode.create(:country => germany, :name => "Bordesholm", :area_code => "4322") + AreaCode.create(:country => germany, :name => "Bornhöved", :area_code => "4323") + AreaCode.create(:country => germany, :name => "Brokstedt", :area_code => "4324") + AreaCode.create(:country => germany, :name => "Wankendorf", :area_code => "4326") + AreaCode.create(:country => germany, :name => "Grossenaspe", :area_code => "4327") + AreaCode.create(:country => germany, :name => "Rickling", :area_code => "4328") + AreaCode.create(:country => germany, :name => "Langwedel Holst", :area_code => "4329") + AreaCode.create(:country => germany, :name => "Emkendorf", :area_code => "4330") + AreaCode.create(:country => germany, :name => "Rendsburg", :area_code => "4331") + AreaCode.create(:country => germany, :name => "Hamdorf b Rendsburg", :area_code => "4332") + AreaCode.create(:country => germany, :name => "Erfde", :area_code => "4333") + AreaCode.create(:country => germany, :name => "Bredenbek b Rendsburg", :area_code => "4334") + AreaCode.create(:country => germany, :name => "Hohn b Rendsburg", :area_code => "4335") + AreaCode.create(:country => germany, :name => "Owschlag", :area_code => "4336") + AreaCode.create(:country => germany, :name => "Jevenstedt", :area_code => "4337") + AreaCode.create(:country => germany, :name => "Alt Duvenstedt", :area_code => "4338") + AreaCode.create(:country => germany, :name => "Christiansholm", :area_code => "4339") + AreaCode.create(:country => germany, :name => "Achterwehr", :area_code => "4340") + AreaCode.create(:country => germany, :name => "Preetz Kr Plön", :area_code => "4342") + AreaCode.create(:country => germany, :name => "Laboe", :area_code => "4343") + AreaCode.create(:country => germany, :name => "Schönberg Holstein", :area_code => "4344") + AreaCode.create(:country => germany, :name => "Gettorf", :area_code => "4346") + AreaCode.create(:country => germany, :name => "Flintbek", :area_code => "4347") + AreaCode.create(:country => germany, :name => "Schönkirchen", :area_code => "4348") + AreaCode.create(:country => germany, :name => "Dänischenhagen", :area_code => "4349") + AreaCode.create(:country => germany, :name => "Eckernförde", :area_code => "4351") + AreaCode.create(:country => germany, :name => "Damp", :area_code => "4352") + AreaCode.create(:country => germany, :name => "Ascheffel", :area_code => "4353") + AreaCode.create(:country => germany, :name => "Fleckeby", :area_code => "4354") + AreaCode.create(:country => germany, :name => "Rieseby", :area_code => "4355") + AreaCode.create(:country => germany, :name => "Gross Wittensee", :area_code => "4356") + AreaCode.create(:country => germany, :name => "Sehestedt Eider", :area_code => "4357") + AreaCode.create(:country => germany, :name => "Loose b Eckernförde", :area_code => "4358") + AreaCode.create(:country => germany, :name => "Oldenburg in Holstein", :area_code => "4361") + AreaCode.create(:country => germany, :name => "Heiligenhafen", :area_code => "4362") + AreaCode.create(:country => germany, :name => "Lensahn", :area_code => "4363") + AreaCode.create(:country => germany, :name => "Dahme Kr Ostholstein", :area_code => "4364") + AreaCode.create(:country => germany, :name => "Heringsdorf Holst", :area_code => "4365") + AreaCode.create(:country => germany, :name => "Grömitz-Cismar", :area_code => "4366") + AreaCode.create(:country => germany, :name => "Grossenbrode", :area_code => "4367") + AreaCode.create(:country => germany, :name => "Burg auf Fehmarn", :area_code => "4371") + AreaCode.create(:country => germany, :name => "Westfehmarn", :area_code => "4372") + AreaCode.create(:country => germany, :name => "Lütjenburg", :area_code => "4381") + AreaCode.create(:country => germany, :name => "Wangels", :area_code => "4382") + AreaCode.create(:country => germany, :name => "Grebin", :area_code => "4383") + AreaCode.create(:country => germany, :name => "Selent", :area_code => "4384") + AreaCode.create(:country => germany, :name => "Hohenfelde b Kiel", :area_code => "4385") + AreaCode.create(:country => germany, :name => "Nortorf b Neumünster", :area_code => "4392") + AreaCode.create(:country => germany, :name => "Boostedt", :area_code => "4393") + AreaCode.create(:country => germany, :name => "Bokhorst", :area_code => "4394") + AreaCode.create(:country => germany, :name => "Brake Unterweser", :area_code => "4401") + AreaCode.create(:country => germany, :name => "Rastede", :area_code => "4402") + AreaCode.create(:country => germany, :name => "Bad Zwischenahn", :area_code => "4403") + AreaCode.create(:country => germany, :name => "Elsfleth", :area_code => "4404") + AreaCode.create(:country => germany, :name => "Edewecht", :area_code => "4405") + AreaCode.create(:country => germany, :name => "Berne", :area_code => "4406") + AreaCode.create(:country => germany, :name => "Wardenburg", :area_code => "4407") + AreaCode.create(:country => germany, :name => "Hude Oldenburg", :area_code => "4408") + AreaCode.create(:country => germany, :name => "Westerstede-Ocholt", :area_code => "4409") + AreaCode.create(:country => germany, :name => "Oldenburg (Oldb)", :area_code => "441") + AreaCode.create(:country => germany, :name => "Wilhelmshaven", :area_code => "4421") + AreaCode.create(:country => germany, :name => "Sande Kr Friesl", :area_code => "4422") + AreaCode.create(:country => germany, :name => "Fedderwarden", :area_code => "4423") + AreaCode.create(:country => germany, :name => "Wangerland-Hooksiel", :area_code => "4425") + AreaCode.create(:country => germany, :name => "Wangerland-Horumersiel", :area_code => "4426") + AreaCode.create(:country => germany, :name => "Wildeshausen", :area_code => "4431") + AreaCode.create(:country => germany, :name => "Dötlingen-Brettorf", :area_code => "4432") + AreaCode.create(:country => germany, :name => "Dötlingen", :area_code => "4433") + AreaCode.create(:country => germany, :name => "Colnrade", :area_code => "4434") + AreaCode.create(:country => germany, :name => "Grossenkneten", :area_code => "4435") + AreaCode.create(:country => germany, :name => "Vechta", :area_code => "4441") + AreaCode.create(:country => germany, :name => "Lohne Oldenburg", :area_code => "4442") + AreaCode.create(:country => germany, :name => "Dinklage", :area_code => "4443") + AreaCode.create(:country => germany, :name => "Goldenstedt", :area_code => "4444") + AreaCode.create(:country => germany, :name => "Visbek Kr Vechta", :area_code => "4445") + AreaCode.create(:country => germany, :name => "Bakum Kr Vechta", :area_code => "4446") + AreaCode.create(:country => germany, :name => "Vechta-Langförden", :area_code => "4447") + AreaCode.create(:country => germany, :name => "Varel Jadebusen", :area_code => "4451") + AreaCode.create(:country => germany, :name => "Zetel-Neuenburg", :area_code => "4452") + AreaCode.create(:country => germany, :name => "Zetel", :area_code => "4453") + AreaCode.create(:country => germany, :name => "Jade", :area_code => "4454") + AreaCode.create(:country => germany, :name => "Jade-Schweiburg", :area_code => "4455") + AreaCode.create(:country => germany, :name => "Varel-Altjührden", :area_code => "4456") + AreaCode.create(:country => germany, :name => "Wiefelstede-Spohle", :area_code => "4458") + AreaCode.create(:country => germany, :name => "Jever", :area_code => "4461") + AreaCode.create(:country => germany, :name => "Wittmund", :area_code => "4462") + AreaCode.create(:country => germany, :name => "Wangerland", :area_code => "4463") + AreaCode.create(:country => germany, :name => "Wittmund-Carolinensiel", :area_code => "4464") + AreaCode.create(:country => germany, :name => "Friedeburg Ostfriesl", :area_code => "4465") + AreaCode.create(:country => germany, :name => "Wittmund-Ardorf", :area_code => "4466") + AreaCode.create(:country => germany, :name => "Wittmund-Funnix", :area_code => "4467") + AreaCode.create(:country => germany, :name => "Friedeburg-Reepsholt", :area_code => "4468") + AreaCode.create(:country => germany, :name => "Wangerooge", :area_code => "4469") + AreaCode.create(:country => germany, :name => "Cloppenburg", :area_code => "4471") + AreaCode.create(:country => germany, :name => "Lastrup", :area_code => "4472") + AreaCode.create(:country => germany, :name => "Emstek", :area_code => "4473") + AreaCode.create(:country => germany, :name => "Garrel", :area_code => "4474") + AreaCode.create(:country => germany, :name => "Molbergen", :area_code => "4475") + AreaCode.create(:country => germany, :name => "Lastrup-Hemmelte", :area_code => "4477") + AreaCode.create(:country => germany, :name => "Cappeln Oldenburg", :area_code => "4478") + AreaCode.create(:country => germany, :name => "Molbergen-Peheim", :area_code => "4479") + AreaCode.create(:country => germany, :name => "Ovelgönne-Strückhausen", :area_code => "4480") + AreaCode.create(:country => germany, :name => "Hatten-Sandkrug", :area_code => "4481") + AreaCode.create(:country => germany, :name => "Hatten", :area_code => "4482") + AreaCode.create(:country => germany, :name => "Ovelgönne-Großenmeer", :area_code => "4483") + AreaCode.create(:country => germany, :name => "Hude-Wüsting", :area_code => "4484") + AreaCode.create(:country => germany, :name => "Elsfleth-Huntorf", :area_code => "4485") + AreaCode.create(:country => germany, :name => "Edewecht-Friedrichsfehn", :area_code => "4486") + AreaCode.create(:country => germany, :name => "Grossenkneten-Huntlosen", :area_code => "4487") + AreaCode.create(:country => germany, :name => "Westerstede", :area_code => "4488") + AreaCode.create(:country => germany, :name => "Apen", :area_code => "4489") + AreaCode.create(:country => germany, :name => "Friesoythe", :area_code => "4491") + AreaCode.create(:country => germany, :name => "Saterland", :area_code => "4492") + AreaCode.create(:country => germany, :name => "Friesoythe-Gehlenberg", :area_code => "4493") + AreaCode.create(:country => germany, :name => "Bösel Oldenburg", :area_code => "4494") + AreaCode.create(:country => germany, :name => "Friesoythe-Thüle", :area_code => "4495") + AreaCode.create(:country => germany, :name => "Friesoythe-Markhausen", :area_code => "4496") + AreaCode.create(:country => germany, :name => "Barßel-Harkebrügge", :area_code => "4497") + AreaCode.create(:country => germany, :name => "Saterland-Ramsloh", :area_code => "4498") + AreaCode.create(:country => germany, :name => "Barssel", :area_code => "4499") + AreaCode.create(:country => germany, :name => "Kastorf Holst", :area_code => "4501") + AreaCode.create(:country => germany, :name => "Lübeck-Travemünde", :area_code => "4502") + AreaCode.create(:country => germany, :name => "Timmendorfer Strand", :area_code => "4503") + AreaCode.create(:country => germany, :name => "Ratekau", :area_code => "4504") + AreaCode.create(:country => germany, :name => "Stockelsdorf-Curau", :area_code => "4505") + AreaCode.create(:country => germany, :name => "Stockelsdorf-Krumbeck", :area_code => "4506") + AreaCode.create(:country => germany, :name => "Krummesse", :area_code => "4508") + AreaCode.create(:country => germany, :name => "Groß Grönau", :area_code => "4509") + AreaCode.create(:country => germany, :name => "Lübeck", :area_code => "451") + AreaCode.create(:country => germany, :name => "Eutin", :area_code => "4521") + AreaCode.create(:country => germany, :name => "Plön", :area_code => "4522") + AreaCode.create(:country => germany, :name => "Malente", :area_code => "4523") + AreaCode.create(:country => germany, :name => "Scharbeutz-Pönitz", :area_code => "4524") + AreaCode.create(:country => germany, :name => "Ahrensbök", :area_code => "4525") + AreaCode.create(:country => germany, :name => "Ascheberg Holstein", :area_code => "4526") + AreaCode.create(:country => germany, :name => "Bosau", :area_code => "4527") + AreaCode.create(:country => germany, :name => "Schönwalde am Bungsberg", :area_code => "4528") + AreaCode.create(:country => germany, :name => "Süsel-Bujendorf", :area_code => "4529") + AreaCode.create(:country => germany, :name => "Bad Oldesloe", :area_code => "4531") + AreaCode.create(:country => germany, :name => "Bargteheide", :area_code => "4532") + AreaCode.create(:country => germany, :name => "Reinfeld Holstein", :area_code => "4533") + AreaCode.create(:country => germany, :name => "Steinburg Kr Storman", :area_code => "4534") + AreaCode.create(:country => germany, :name => "Nahe", :area_code => "4535") + AreaCode.create(:country => germany, :name => "Steinhorst Lauenb", :area_code => "4536") + AreaCode.create(:country => germany, :name => "Sülfeld Holst", :area_code => "4537") + AreaCode.create(:country => germany, :name => "Westerau", :area_code => "4539") + AreaCode.create(:country => germany, :name => "Ratzeburg", :area_code => "4541") + AreaCode.create(:country => germany, :name => "Mölln Lauenb", :area_code => "4542") + AreaCode.create(:country => germany, :name => "Nusse", :area_code => "4543") + AreaCode.create(:country => germany, :name => "Berkenthin", :area_code => "4544") + AreaCode.create(:country => germany, :name => "Seedorf Lauenb", :area_code => "4545") + AreaCode.create(:country => germany, :name => "Mustin Lauenburg", :area_code => "4546") + AreaCode.create(:country => germany, :name => "Gudow Lauenb", :area_code => "4547") + AreaCode.create(:country => germany, :name => "Bühnsdorf", :area_code => "4550") + AreaCode.create(:country => germany, :name => "Bad Segeberg", :area_code => "4551") + AreaCode.create(:country => germany, :name => "Leezen", :area_code => "4552") + AreaCode.create(:country => germany, :name => "Geschendorf", :area_code => "4553") + AreaCode.create(:country => germany, :name => "Wahlstedt", :area_code => "4554") + AreaCode.create(:country => germany, :name => "Seedorf b Bad Segeberg", :area_code => "4555") + AreaCode.create(:country => germany, :name => "Ahrensbök-Gnissau", :area_code => "4556") + AreaCode.create(:country => germany, :name => "Blunk", :area_code => "4557") + AreaCode.create(:country => germany, :name => "Todesfelde", :area_code => "4558") + AreaCode.create(:country => germany, :name => "Wensin", :area_code => "4559") + AreaCode.create(:country => germany, :name => "Neustadt in Holstein", :area_code => "4561") + AreaCode.create(:country => germany, :name => "Grömitz", :area_code => "4562") + AreaCode.create(:country => germany, :name => "Scharbeutz-Haffkrug", :area_code => "4563") + AreaCode.create(:country => germany, :name => "Schashagen", :area_code => "4564") + AreaCode.create(:country => germany, :name => "Freienwill", :area_code => "4602") + AreaCode.create(:country => germany, :name => "Havetoft", :area_code => "4603") + AreaCode.create(:country => germany, :name => "Grossenwiehe", :area_code => "4604") + AreaCode.create(:country => germany, :name => "Medelby", :area_code => "4605") + AreaCode.create(:country => germany, :name => "Wanderup", :area_code => "4606") + AreaCode.create(:country => germany, :name => "Janneby", :area_code => "4607") + AreaCode.create(:country => germany, :name => "Handewitt", :area_code => "4608") + AreaCode.create(:country => germany, :name => "Eggebek", :area_code => "4609") + AreaCode.create(:country => germany, :name => "Flensburg", :area_code => "461") + AreaCode.create(:country => germany, :name => "Schleswig", :area_code => "4621") + AreaCode.create(:country => germany, :name => "Taarstedt", :area_code => "4622") + AreaCode.create(:country => germany, :name => "Böklund", :area_code => "4623") + AreaCode.create(:country => germany, :name => "Kropp", :area_code => "4624") + AreaCode.create(:country => germany, :name => "Jübek", :area_code => "4625") + AreaCode.create(:country => germany, :name => "Treia", :area_code => "4626") + AreaCode.create(:country => germany, :name => "Dörpstedt", :area_code => "4627") + AreaCode.create(:country => germany, :name => "Barderup", :area_code => "4630") + AreaCode.create(:country => germany, :name => "Glücksburg Ostsee", :area_code => "4631") + AreaCode.create(:country => germany, :name => "Steinbergkirche", :area_code => "4632") + AreaCode.create(:country => germany, :name => "Satrup", :area_code => "4633") + AreaCode.create(:country => germany, :name => "Husby", :area_code => "4634") + AreaCode.create(:country => germany, :name => "Sörup", :area_code => "4635") + AreaCode.create(:country => germany, :name => "Langballig", :area_code => "4636") + AreaCode.create(:country => germany, :name => "Sterup", :area_code => "4637") + AreaCode.create(:country => germany, :name => "Tarp", :area_code => "4638") + AreaCode.create(:country => germany, :name => "Schafflund", :area_code => "4639") + AreaCode.create(:country => germany, :name => "Süderbrarup", :area_code => "4641") + AreaCode.create(:country => germany, :name => "Kappeln Schlei", :area_code => "4642") + AreaCode.create(:country => germany, :name => "Gelting Angeln", :area_code => "4643") + AreaCode.create(:country => germany, :name => "Karby", :area_code => "4644") + AreaCode.create(:country => germany, :name => "Mohrkirch", :area_code => "4646") + AreaCode.create(:country => germany, :name => "Sylt", :area_code => "4651") + AreaCode.create(:country => germany, :name => "Niebüll", :area_code => "4661") + AreaCode.create(:country => germany, :name => "Leck", :area_code => "4662") + AreaCode.create(:country => germany, :name => "Süderlügum", :area_code => "4663") + AreaCode.create(:country => germany, :name => "Neukirchen b Niebüll", :area_code => "4664") + AreaCode.create(:country => germany, :name => "Emmelsbüll-Horsbüll", :area_code => "4665") + AreaCode.create(:country => germany, :name => "Ladelund", :area_code => "4666") + AreaCode.create(:country => germany, :name => "Dagebüll", :area_code => "4667") + AreaCode.create(:country => germany, :name => "Klanxbüll", :area_code => "4668") + AreaCode.create(:country => germany, :name => "Bredstedt", :area_code => "4671") + AreaCode.create(:country => germany, :name => "Langenhorn", :area_code => "4672") + AreaCode.create(:country => germany, :name => "Joldelund", :area_code => "4673") + AreaCode.create(:country => germany, :name => "Ockholm", :area_code => "4674") + AreaCode.create(:country => germany, :name => "Wyk auf Föhr", :area_code => "4681") + AreaCode.create(:country => germany, :name => "Amrum", :area_code => "4682") + AreaCode.create(:country => germany, :name => "Oldsum", :area_code => "4683") + AreaCode.create(:country => germany, :name => "Langeneß Hallig", :area_code => "4684") + AreaCode.create(:country => germany, :name => "Sandstedt", :area_code => "4702") + AreaCode.create(:country => germany, :name => "Loxstedt-Donnern", :area_code => "4703") + AreaCode.create(:country => germany, :name => "Drangstedt", :area_code => "4704") + AreaCode.create(:country => germany, :name => "Wremen", :area_code => "4705") + AreaCode.create(:country => germany, :name => "Schiffdorf", :area_code => "4706") + AreaCode.create(:country => germany, :name => "Langen-Neuenwalde", :area_code => "4707") + AreaCode.create(:country => germany, :name => "Ringstedt", :area_code => "4708") + AreaCode.create(:country => germany, :name => "Bremerhaven", :area_code => "471") + AreaCode.create(:country => germany, :name => "Cuxhaven", :area_code => "4721") + AreaCode.create(:country => germany, :name => "Cuxhaven-Altenbruch", :area_code => "4722") + AreaCode.create(:country => germany, :name => "Cuxhaven-Altenwalde", :area_code => "4723") + AreaCode.create(:country => germany, :name => "Cuxhaven-Lüdingworth", :area_code => "4724") + AreaCode.create(:country => germany, :name => "Helgoland", :area_code => "4725") + AreaCode.create(:country => germany, :name => "Nordenham", :area_code => "4731") + AreaCode.create(:country => germany, :name => "Stadland-Rodenkirchen", :area_code => "4732") + AreaCode.create(:country => germany, :name => "Butjadingen-Burhave", :area_code => "4733") + AreaCode.create(:country => germany, :name => "Stadland-Seefeld", :area_code => "4734") + AreaCode.create(:country => germany, :name => "Butjadingen-Stollhamm", :area_code => "4735") + AreaCode.create(:country => germany, :name => "Butjadingen-Tossens", :area_code => "4736") + AreaCode.create(:country => germany, :name => "Stadland-Schwei", :area_code => "4737") + AreaCode.create(:country => germany, :name => "Loxstedt-Dedesdorf", :area_code => "4740") + AreaCode.create(:country => germany, :name => "Nordholz b Bremerhaven", :area_code => "4741") + AreaCode.create(:country => germany, :name => "Dorum", :area_code => "4742") + AreaCode.create(:country => germany, :name => "Langen b Bremerhaven", :area_code => "4743") + AreaCode.create(:country => germany, :name => "Loxstedt", :area_code => "4744") + AreaCode.create(:country => germany, :name => "Bad Bederkesa", :area_code => "4745") + AreaCode.create(:country => germany, :name => "Hagen b Bremerhaven", :area_code => "4746") + AreaCode.create(:country => germany, :name => "Beverstedt", :area_code => "4747") + AreaCode.create(:country => germany, :name => "Stubben b Bremerhaven", :area_code => "4748") + AreaCode.create(:country => germany, :name => "Schiffdorf-Geestenseth", :area_code => "4749") + AreaCode.create(:country => germany, :name => "Otterndorf", :area_code => "4751") + AreaCode.create(:country => germany, :name => "Neuhaus Oste", :area_code => "4752") + AreaCode.create(:country => germany, :name => "Balje", :area_code => "4753") + AreaCode.create(:country => germany, :name => "Bülkau", :area_code => "4754") + AreaCode.create(:country => germany, :name => "Ihlienworth", :area_code => "4755") + AreaCode.create(:country => germany, :name => "Odisheim", :area_code => "4756") + AreaCode.create(:country => germany, :name => "Wanna", :area_code => "4757") + AreaCode.create(:country => germany, :name => "Nordleda", :area_code => "4758") + AreaCode.create(:country => germany, :name => "Bremervörde", :area_code => "4761") + AreaCode.create(:country => germany, :name => "Kutenholz", :area_code => "4762") + AreaCode.create(:country => germany, :name => "Gnarrenburg", :area_code => "4763") + AreaCode.create(:country => germany, :name => "Gnarrenburg-Klenkendorf", :area_code => "4764") + AreaCode.create(:country => germany, :name => "Ebersdorf b Bremervörde", :area_code => "4765") + AreaCode.create(:country => germany, :name => "Basdahl", :area_code => "4766") + AreaCode.create(:country => germany, :name => "Bremervörde-Bevern", :area_code => "4767") + AreaCode.create(:country => germany, :name => "Hipstedt", :area_code => "4768") + AreaCode.create(:country => germany, :name => "Bremervörde-Iselersheim", :area_code => "4769") + AreaCode.create(:country => germany, :name => "Wischhafen", :area_code => "4770") + AreaCode.create(:country => germany, :name => "Hemmoor", :area_code => "4771") + AreaCode.create(:country => germany, :name => "Oberndorf Oste", :area_code => "4772") + AreaCode.create(:country => germany, :name => "Lamstedt", :area_code => "4773") + AreaCode.create(:country => germany, :name => "Hechthausen", :area_code => "4774") + AreaCode.create(:country => germany, :name => "Grossenwörden", :area_code => "4775") + AreaCode.create(:country => germany, :name => "Osten-Altendorf", :area_code => "4776") + AreaCode.create(:country => germany, :name => "Cadenberge", :area_code => "4777") + AreaCode.create(:country => germany, :name => "Wingst", :area_code => "4778") + AreaCode.create(:country => germany, :name => "Freiburg Elbe", :area_code => "4779") + AreaCode.create(:country => germany, :name => "Osterholz-Scharmbeck", :area_code => "4791") + AreaCode.create(:country => germany, :name => "Worpswede", :area_code => "4792") + AreaCode.create(:country => germany, :name => "Hambergen", :area_code => "4793") + AreaCode.create(:country => germany, :name => "Worpswede-Ostersode", :area_code => "4794") + AreaCode.create(:country => germany, :name => "Garlstedt", :area_code => "4795") + AreaCode.create(:country => germany, :name => "Teufelsmoor", :area_code => "4796") + AreaCode.create(:country => germany, :name => "Wrohm", :area_code => "4802") + AreaCode.create(:country => germany, :name => "Pahlen", :area_code => "4803") + AreaCode.create(:country => germany, :name => "Nordhastedt", :area_code => "4804") + AreaCode.create(:country => germany, :name => "Schafstedt", :area_code => "4805") + AreaCode.create(:country => germany, :name => "Sarzbüttel", :area_code => "4806") + AreaCode.create(:country => germany, :name => "Heide Holst", :area_code => "481") + AreaCode.create(:country => germany, :name => "Itzehoe", :area_code => "4821") + AreaCode.create(:country => germany, :name => "Kellinghusen", :area_code => "4822") + AreaCode.create(:country => germany, :name => "Wilster", :area_code => "4823") + AreaCode.create(:country => germany, :name => "Krempe", :area_code => "4824") + AreaCode.create(:country => germany, :name => "Burg Dithmarschen", :area_code => "4825") + AreaCode.create(:country => germany, :name => "Hohenlockstedt", :area_code => "4826") + AreaCode.create(:country => germany, :name => "Wacken", :area_code => "4827") + AreaCode.create(:country => germany, :name => "Lägerdorf", :area_code => "4828") + AreaCode.create(:country => germany, :name => "Wewelsfleth", :area_code => "4829") + AreaCode.create(:country => germany, :name => "Süderhastedt", :area_code => "4830") + AreaCode.create(:country => germany, :name => "Meldorf", :area_code => "4832") + AreaCode.create(:country => germany, :name => "Wesselburen", :area_code => "4833") + AreaCode.create(:country => germany, :name => "Büsum", :area_code => "4834") + AreaCode.create(:country => germany, :name => "Albersdorf Holst", :area_code => "4835") + AreaCode.create(:country => germany, :name => "Hennstedt Dithm", :area_code => "4836") + AreaCode.create(:country => germany, :name => "Neuenkirchen Dithm", :area_code => "4837") + AreaCode.create(:country => germany, :name => "Tellingstedt", :area_code => "4838") + AreaCode.create(:country => germany, :name => "Wöhrden Dithm", :area_code => "4839") + AreaCode.create(:country => germany, :name => "Husum Nordsee", :area_code => "4841") + AreaCode.create(:country => germany, :name => "Nordstrand", :area_code => "4842") + AreaCode.create(:country => germany, :name => "Viöl", :area_code => "4843") + AreaCode.create(:country => germany, :name => "Pellworm", :area_code => "4844") + AreaCode.create(:country => germany, :name => "Ostenfeld Husum", :area_code => "4845") + AreaCode.create(:country => germany, :name => "Hattstedt", :area_code => "4846") + AreaCode.create(:country => germany, :name => "Oster-Ohrstedt", :area_code => "4847") + AreaCode.create(:country => germany, :name => "Rantrum", :area_code => "4848") + AreaCode.create(:country => germany, :name => "Hooge", :area_code => "4849") + AreaCode.create(:country => germany, :name => "Marne", :area_code => "4851") + AreaCode.create(:country => germany, :name => "Brunsbüttel", :area_code => "4852") + AreaCode.create(:country => germany, :name => "Sankt Michaelisdonn", :area_code => "4853") + AreaCode.create(:country => germany, :name => "Friedrichskoog", :area_code => "4854") + AreaCode.create(:country => germany, :name => "Eddelak", :area_code => "4855") + AreaCode.create(:country => germany, :name => "Kronprinzenkoog", :area_code => "4856") + AreaCode.create(:country => germany, :name => "Barlt", :area_code => "4857") + AreaCode.create(:country => germany, :name => "Sankt Margarethen Holst", :area_code => "4858") + AreaCode.create(:country => germany, :name => "Windbergen", :area_code => "4859") + AreaCode.create(:country => germany, :name => "Tönning", :area_code => "4861") + AreaCode.create(:country => germany, :name => "Garding", :area_code => "4862") + AreaCode.create(:country => germany, :name => "Sankt Peter-Ording", :area_code => "4863") + AreaCode.create(:country => germany, :name => "Oldenswort", :area_code => "4864") + AreaCode.create(:country => germany, :name => "Osterhever", :area_code => "4865") + AreaCode.create(:country => germany, :name => "Hohenwestedt", :area_code => "4871") + AreaCode.create(:country => germany, :name => "Hanerau-Hademarschen", :area_code => "4872") + AreaCode.create(:country => germany, :name => "Aukrug", :area_code => "4873") + AreaCode.create(:country => germany, :name => "Todenbüttel", :area_code => "4874") + AreaCode.create(:country => germany, :name => "Stafstedt", :area_code => "4875") + AreaCode.create(:country => germany, :name => "Reher Holst", :area_code => "4876") + AreaCode.create(:country => germany, :name => "Hennstedt b Itzehoe", :area_code => "4877") + AreaCode.create(:country => germany, :name => "Friedrichstadt", :area_code => "4881") + AreaCode.create(:country => germany, :name => "Lunden", :area_code => "4882") + AreaCode.create(:country => germany, :name => "Süderstapel", :area_code => "4883") + AreaCode.create(:country => germany, :name => "Schwabstedt", :area_code => "4884") + AreaCode.create(:country => germany, :name => "Bergenhusen", :area_code => "4885") + AreaCode.create(:country => germany, :name => "Schenefeld Mittelholst", :area_code => "4892") + AreaCode.create(:country => germany, :name => "Hohenaspe", :area_code => "4893") + AreaCode.create(:country => germany, :name => "Jemgum-Ditzum", :area_code => "4902") + AreaCode.create(:country => germany, :name => "Wymeer", :area_code => "4903") + AreaCode.create(:country => germany, :name => "Leer Ostfriesland", :area_code => "491") + AreaCode.create(:country => germany, :name => "Wirdum", :area_code => "4920") + AreaCode.create(:country => germany, :name => "Emden Stadt", :area_code => "4921") + AreaCode.create(:country => germany, :name => "Borkum", :area_code => "4922") + AreaCode.create(:country => germany, :name => "Krummhörn-Pewsum", :area_code => "4923") + AreaCode.create(:country => germany, :name => "Moormerland-Oldersum", :area_code => "4924") + AreaCode.create(:country => germany, :name => "Hinte", :area_code => "4925") + AreaCode.create(:country => germany, :name => "Krummhörn-Greetsiel", :area_code => "4926") + AreaCode.create(:country => germany, :name => "Krummhörn-Loquard", :area_code => "4927") + AreaCode.create(:country => germany, :name => "Ihlow-Riepe", :area_code => "4928") + AreaCode.create(:country => germany, :name => "Ihlow Kr Aurich", :area_code => "4929") + AreaCode.create(:country => germany, :name => "Norden", :area_code => "4931") + AreaCode.create(:country => germany, :name => "Norderney", :area_code => "4932") + AreaCode.create(:country => germany, :name => "Dornum Ostfriesl", :area_code => "4933") + AreaCode.create(:country => germany, :name => "Marienhafe", :area_code => "4934") + AreaCode.create(:country => germany, :name => "Juist", :area_code => "4935") + AreaCode.create(:country => germany, :name => "Grossheide", :area_code => "4936") + AreaCode.create(:country => germany, :name => "Hagermarsch", :area_code => "4938") + AreaCode.create(:country => germany, :name => "Baltrum", :area_code => "4939") + AreaCode.create(:country => germany, :name => "Aurich", :area_code => "4941") + AreaCode.create(:country => germany, :name => "Südbrookmerland", :area_code => "4942") + AreaCode.create(:country => germany, :name => "Grossefehn", :area_code => "4943") + AreaCode.create(:country => germany, :name => "Wiesmoor", :area_code => "4944") + AreaCode.create(:country => germany, :name => "Grossefehn-Timmel", :area_code => "4945") + AreaCode.create(:country => germany, :name => "Grossefehn-Bagband", :area_code => "4946") + AreaCode.create(:country => germany, :name => "Aurich-Ogenbargen", :area_code => "4947") + AreaCode.create(:country => germany, :name => "Wiesmoor-Marcardsmoor", :area_code => "4948") + AreaCode.create(:country => germany, :name => "Holtland", :area_code => "4950") + AreaCode.create(:country => germany, :name => "Weener", :area_code => "4951") + AreaCode.create(:country => germany, :name => "Rhauderfehn", :area_code => "4952") + AreaCode.create(:country => germany, :name => "Bunde", :area_code => "4953") + AreaCode.create(:country => germany, :name => "Moormerland", :area_code => "4954") + AreaCode.create(:country => germany, :name => "Westoverledingen", :area_code => "4955") + AreaCode.create(:country => germany, :name => "Uplengen", :area_code => "4956") + AreaCode.create(:country => germany, :name => "Detern", :area_code => "4957") + AreaCode.create(:country => germany, :name => "Jemgum", :area_code => "4958") + AreaCode.create(:country => germany, :name => "Dollart", :area_code => "4959") + AreaCode.create(:country => germany, :name => "Papenburg", :area_code => "4961") + AreaCode.create(:country => germany, :name => "Papenburg-Aschendorf", :area_code => "4962") + AreaCode.create(:country => germany, :name => "Dörpen", :area_code => "4963") + AreaCode.create(:country => germany, :name => "Rhede Ems", :area_code => "4964") + AreaCode.create(:country => germany, :name => "Surwold", :area_code => "4965") + AreaCode.create(:country => germany, :name => "Neubörger", :area_code => "4966") + AreaCode.create(:country => germany, :name => "Rhauderfehn-Burlage", :area_code => "4967") + AreaCode.create(:country => germany, :name => "Neulehe", :area_code => "4968") + AreaCode.create(:country => germany, :name => "Esens", :area_code => "4971") + AreaCode.create(:country => germany, :name => "Langeoog", :area_code => "4972") + AreaCode.create(:country => germany, :name => "Wittmund-Burhafe", :area_code => "4973") + AreaCode.create(:country => germany, :name => "Neuharlingersiel", :area_code => "4974") + AreaCode.create(:country => germany, :name => "Westerholt Ostfriesl", :area_code => "4975") + AreaCode.create(:country => germany, :name => "Spiekeroog", :area_code => "4976") + AreaCode.create(:country => germany, :name => "Blomberg Ostfriesl", :area_code => "4977") + AreaCode.create(:country => germany, :name => "Nienburg Weser", :area_code => "5021") + AreaCode.create(:country => germany, :name => "Wietzen", :area_code => "5022") + AreaCode.create(:country => germany, :name => "Liebenau Kr Nienburg Weser", :area_code => "5023") + AreaCode.create(:country => germany, :name => "Rohrsen Kr Nienburg Weser", :area_code => "5024") + AreaCode.create(:country => germany, :name => "Estorf Weser", :area_code => "5025") + AreaCode.create(:country => germany, :name => "Steimbke", :area_code => "5026") + AreaCode.create(:country => germany, :name => "Linsburg", :area_code => "5027") + AreaCode.create(:country => germany, :name => "Pennigsehl", :area_code => "5028") + AreaCode.create(:country => germany, :name => "Wunstorf", :area_code => "5031") + AreaCode.create(:country => germany, :name => "Neustadt am Rübenberge", :area_code => "5032") + AreaCode.create(:country => germany, :name => "Wunstorf-Grossenheidorn", :area_code => "5033") + AreaCode.create(:country => germany, :name => "Neustadt-Hagen", :area_code => "5034") + AreaCode.create(:country => germany, :name => "Gross Munzel", :area_code => "5035") + AreaCode.create(:country => germany, :name => "Neustadt-Schneeren", :area_code => "5036") + AreaCode.create(:country => germany, :name => "Bad Rehburg", :area_code => "5037") + AreaCode.create(:country => germany, :name => "Springe Deister", :area_code => "5041") + AreaCode.create(:country => germany, :name => "Bad Münder am Deister", :area_code => "5042") + AreaCode.create(:country => germany, :name => "Lauenau", :area_code => "5043") + AreaCode.create(:country => germany, :name => "Springe-Eldagsen", :area_code => "5044") + AreaCode.create(:country => germany, :name => "Springe-Bennigsen", :area_code => "5045") + AreaCode.create(:country => germany, :name => "Bergen Kr Celle", :area_code => "5051") + AreaCode.create(:country => germany, :name => "Hermannsburg", :area_code => "5052") + AreaCode.create(:country => germany, :name => "Faßberg-Müden", :area_code => "5053") + AreaCode.create(:country => germany, :name => "Bergen-Sülze", :area_code => "5054") + AreaCode.create(:country => germany, :name => "Fassberg", :area_code => "5055") + AreaCode.create(:country => germany, :name => "Winsen-Meissendorf", :area_code => "5056") + AreaCode.create(:country => germany, :name => "Bodenburg", :area_code => "5060") + AreaCode.create(:country => germany, :name => "Holle b Hildesheim", :area_code => "5062") + AreaCode.create(:country => germany, :name => "Bad Salzdetfurth", :area_code => "5063") + AreaCode.create(:country => germany, :name => "Groß Düngen", :area_code => "5064") + AreaCode.create(:country => germany, :name => "Sibbesse", :area_code => "5065") + AreaCode.create(:country => germany, :name => "Sarstedt", :area_code => "5066") + AreaCode.create(:country => germany, :name => "Bockenem", :area_code => "5067") + AreaCode.create(:country => germany, :name => "Elze Leine", :area_code => "5068") + AreaCode.create(:country => germany, :name => "Nordstemmen", :area_code => "5069") + AreaCode.create(:country => germany, :name => "Schwarmstedt", :area_code => "5071") + AreaCode.create(:country => germany, :name => "Neustadt-Mandelsloh", :area_code => "5072") + AreaCode.create(:country => germany, :name => "Neustadt-Esperke", :area_code => "5073") + AreaCode.create(:country => germany, :name => "Rodewald", :area_code => "5074") + AreaCode.create(:country => germany, :name => "Langlingen", :area_code => "5082") + AreaCode.create(:country => germany, :name => "Hohne b Celle", :area_code => "5083") + AreaCode.create(:country => germany, :name => "Hambühren", :area_code => "5084") + AreaCode.create(:country => germany, :name => "Burgdorf-Ehlershausen", :area_code => "5085") + AreaCode.create(:country => germany, :name => "Celle-Scheuen", :area_code => "5086") + AreaCode.create(:country => germany, :name => "Pattensen", :area_code => "5101") + AreaCode.create(:country => germany, :name => "Laatzen", :area_code => "5102") + AreaCode.create(:country => germany, :name => "Wennigsen Deister", :area_code => "5103") + AreaCode.create(:country => germany, :name => "Barsinghausen", :area_code => "5105") + AreaCode.create(:country => germany, :name => "Gehrden Han", :area_code => "5108") + AreaCode.create(:country => germany, :name => "Ronnenberg", :area_code => "5109") + AreaCode.create(:country => germany, :name => "Hannover", :area_code => "511") + AreaCode.create(:country => germany, :name => "Hildesheim", :area_code => "5121") + AreaCode.create(:country => germany, :name => "Schellerten", :area_code => "5123") + AreaCode.create(:country => germany, :name => "Algermissen", :area_code => "5126") + AreaCode.create(:country => germany, :name => "Harsum", :area_code => "5127") + AreaCode.create(:country => germany, :name => "Hohenhameln", :area_code => "5128") + AreaCode.create(:country => germany, :name => "Söhlde", :area_code => "5129") + AreaCode.create(:country => germany, :name => "Wedemark", :area_code => "5130") + AreaCode.create(:country => germany, :name => "Garbsen", :area_code => "5131") + AreaCode.create(:country => germany, :name => "Lehrte", :area_code => "5132") + AreaCode.create(:country => germany, :name => "Burgwedel-Fuhrberg", :area_code => "5135") + AreaCode.create(:country => germany, :name => "Burgdorf Kr Hannover", :area_code => "5136") + AreaCode.create(:country => germany, :name => "Seelze", :area_code => "5137") + AreaCode.create(:country => germany, :name => "Sehnde", :area_code => "5138") + AreaCode.create(:country => germany, :name => "Burgwedel", :area_code => "5139") + AreaCode.create(:country => germany, :name => "Celle", :area_code => "5141") + AreaCode.create(:country => germany, :name => "Eschede", :area_code => "5142") + AreaCode.create(:country => germany, :name => "Winsen Aller", :area_code => "5143") + AreaCode.create(:country => germany, :name => "Wathlingen", :area_code => "5144") + AreaCode.create(:country => germany, :name => "Beedenbostel", :area_code => "5145") + AreaCode.create(:country => germany, :name => "Wietze", :area_code => "5146") + AreaCode.create(:country => germany, :name => "Uetze-Hänigsen", :area_code => "5147") + AreaCode.create(:country => germany, :name => "Steinhorst Niedersachs", :area_code => "5148") + AreaCode.create(:country => germany, :name => "Wienhausen", :area_code => "5149") + AreaCode.create(:country => germany, :name => "Hameln", :area_code => "5151") + AreaCode.create(:country => germany, :name => "Hessisch Oldendorf", :area_code => "5152") + AreaCode.create(:country => germany, :name => "Salzhemmendorf", :area_code => "5153") + AreaCode.create(:country => germany, :name => "Aerzen", :area_code => "5154") + AreaCode.create(:country => germany, :name => "Emmerthal", :area_code => "5155") + AreaCode.create(:country => germany, :name => "Coppenbrügge", :area_code => "5156") + AreaCode.create(:country => germany, :name => "Emmerthal-Börry", :area_code => "5157") + AreaCode.create(:country => germany, :name => "Hemeringen", :area_code => "5158") + AreaCode.create(:country => germany, :name => "Coppenbrügge-Bisperode", :area_code => "5159") + AreaCode.create(:country => germany, :name => "Walsrode", :area_code => "5161") + AreaCode.create(:country => germany, :name => "Fallingbostel", :area_code => "5162") + AreaCode.create(:country => germany, :name => "Fallingbostel-Dorfmark", :area_code => "5163") + AreaCode.create(:country => germany, :name => "Hodenhagen", :area_code => "5164") + AreaCode.create(:country => germany, :name => "Rethem Aller", :area_code => "5165") + AreaCode.create(:country => germany, :name => "Walsrode-Kirchboitzen", :area_code => "5166") + AreaCode.create(:country => germany, :name => "Walsrode-Westenholz", :area_code => "5167") + AreaCode.create(:country => germany, :name => "Walsrode-Stellichte", :area_code => "5168") + AreaCode.create(:country => germany, :name => "Peine", :area_code => "5171") + AreaCode.create(:country => germany, :name => "Ilsede", :area_code => "5172") + AreaCode.create(:country => germany, :name => "Uetze", :area_code => "5173") + AreaCode.create(:country => germany, :name => "Lahstedt", :area_code => "5174") + AreaCode.create(:country => germany, :name => "Lehrte-Arpke", :area_code => "5175") + AreaCode.create(:country => germany, :name => "Edemissen", :area_code => "5176") + AreaCode.create(:country => germany, :name => "Edemissen-Abbensen", :area_code => "5177") + AreaCode.create(:country => germany, :name => "Alfeld Leine", :area_code => "5181") + AreaCode.create(:country => germany, :name => "Gronau Leine", :area_code => "5182") + AreaCode.create(:country => germany, :name => "Lamspringe", :area_code => "5183") + AreaCode.create(:country => germany, :name => "Freden Leine", :area_code => "5184") + AreaCode.create(:country => germany, :name => "Duingen", :area_code => "5185") + AreaCode.create(:country => germany, :name => "Salzhemmendorf-Wallensen", :area_code => "5186") + AreaCode.create(:country => germany, :name => "Delligsen", :area_code => "5187") + AreaCode.create(:country => germany, :name => "Soltau-Emmingen", :area_code => "5190") + AreaCode.create(:country => germany, :name => "Soltau", :area_code => "5191") + AreaCode.create(:country => germany, :name => "Munster", :area_code => "5192") + AreaCode.create(:country => germany, :name => "Schneverdingen", :area_code => "5193") + AreaCode.create(:country => germany, :name => "Bispingen", :area_code => "5194") + AreaCode.create(:country => germany, :name => "Neuenkirchen b Soltau", :area_code => "5195") + AreaCode.create(:country => germany, :name => "Wietzendorf", :area_code => "5196") + AreaCode.create(:country => germany, :name => "Soltau-Frielingen", :area_code => "5197") + AreaCode.create(:country => germany, :name => "Schneverdingen-Wintermoor", :area_code => "5198") + AreaCode.create(:country => germany, :name => "Schneverdingen-Heber", :area_code => "5199") + AreaCode.create(:country => germany, :name => "Halle Westf", :area_code => "5201") + AreaCode.create(:country => germany, :name => "Oerlinghausen", :area_code => "5202") + AreaCode.create(:country => germany, :name => "Werther Westf", :area_code => "5203") + AreaCode.create(:country => germany, :name => "Steinhagen Westf", :area_code => "5204") + AreaCode.create(:country => germany, :name => "Bielefeld-Sennestadt", :area_code => "5205") + AreaCode.create(:country => germany, :name => "Bielefeld-Jöllenbeck", :area_code => "5206") + AreaCode.create(:country => germany, :name => "Schloss Holte-Stukenbrock", :area_code => "5207") + AreaCode.create(:country => germany, :name => "Leopoldshöhe", :area_code => "5208") + AreaCode.create(:country => germany, :name => "Gütersloh-Friedrichsdorf", :area_code => "5209") + AreaCode.create(:country => germany, :name => "Bielefeld", :area_code => "521") + AreaCode.create(:country => germany, :name => "Herford", :area_code => "5221") + AreaCode.create(:country => germany, :name => "Bad Salzuflen", :area_code => "5222") + AreaCode.create(:country => germany, :name => "Bünde", :area_code => "5223") + AreaCode.create(:country => germany, :name => "Enger Westf", :area_code => "5224") + AreaCode.create(:country => germany, :name => "Spenge", :area_code => "5225") + AreaCode.create(:country => germany, :name => "Bruchmühlen Westf", :area_code => "5226") + AreaCode.create(:country => germany, :name => "Vlotho-Exter", :area_code => "5228") + AreaCode.create(:country => germany, :name => "Detmold", :area_code => "5231") + AreaCode.create(:country => germany, :name => "Lage Lippe", :area_code => "5232") + AreaCode.create(:country => germany, :name => "Steinheim Westf", :area_code => "5233") + AreaCode.create(:country => germany, :name => "Horn-Bad Meinberg", :area_code => "5234") + AreaCode.create(:country => germany, :name => "Blomberg Lippe", :area_code => "5235") + AreaCode.create(:country => germany, :name => "Blomberg-Grossenmarpe", :area_code => "5236") + AreaCode.create(:country => germany, :name => "Augustdorf", :area_code => "5237") + AreaCode.create(:country => germany, :name => "Nieheim-Himmighausen", :area_code => "5238") + AreaCode.create(:country => germany, :name => "Gütersloh", :area_code => "5241") + AreaCode.create(:country => germany, :name => "Rheda-Wiedenbrück", :area_code => "5242") + AreaCode.create(:country => germany, :name => "Rietberg", :area_code => "5244") + AreaCode.create(:country => germany, :name => "Herzebrock-Clarholz", :area_code => "5245") + AreaCode.create(:country => germany, :name => "Verl", :area_code => "5246") + AreaCode.create(:country => germany, :name => "Harsewinkel", :area_code => "5247") + AreaCode.create(:country => germany, :name => "Langenberg Kr Gütersloh", :area_code => "5248") + AreaCode.create(:country => germany, :name => "Delbrück Westf", :area_code => "5250") + AreaCode.create(:country => germany, :name => "Paderborn", :area_code => "5251") + AreaCode.create(:country => germany, :name => "Bad Lippspringe", :area_code => "5252") + AreaCode.create(:country => germany, :name => "Bad Driburg", :area_code => "5253") + AreaCode.create(:country => germany, :name => "Paderborn-Schloss Neuhaus", :area_code => "5254") + AreaCode.create(:country => germany, :name => "Altenbeken", :area_code => "5255") + AreaCode.create(:country => germany, :name => "Hövelhof", :area_code => "5257") + AreaCode.create(:country => germany, :name => "Salzkotten", :area_code => "5258") + AreaCode.create(:country => germany, :name => "Bad Driburg-Neuenheerse", :area_code => "5259") + AreaCode.create(:country => germany, :name => "Lemgo", :area_code => "5261") + AreaCode.create(:country => germany, :name => "Extertal", :area_code => "5262") + AreaCode.create(:country => germany, :name => "Barntrup", :area_code => "5263") + AreaCode.create(:country => germany, :name => "Kalletal", :area_code => "5264") + AreaCode.create(:country => germany, :name => "Dörentrup", :area_code => "5265") + AreaCode.create(:country => germany, :name => "Lemgo-Kirchheide", :area_code => "5266") + AreaCode.create(:country => germany, :name => "Höxter", :area_code => "5271") + AreaCode.create(:country => germany, :name => "Brakel Westf", :area_code => "5272") + AreaCode.create(:country => germany, :name => "Beverungen", :area_code => "5273") + AreaCode.create(:country => germany, :name => "Nieheim", :area_code => "5274") + AreaCode.create(:country => germany, :name => "Höxter-Ottbergen", :area_code => "5275") + AreaCode.create(:country => germany, :name => "Marienmünster", :area_code => "5276") + AreaCode.create(:country => germany, :name => "Höxter-Fürstenau", :area_code => "5277") + AreaCode.create(:country => germany, :name => "Höxter-Ovenhausen", :area_code => "5278") + AreaCode.create(:country => germany, :name => "Bad Pyrmont", :area_code => "5281") + AreaCode.create(:country => germany, :name => "Schieder-Schwalenberg", :area_code => "5282") + AreaCode.create(:country => germany, :name => "Lügde-Rischenau", :area_code => "5283") + AreaCode.create(:country => germany, :name => "Schwalenberg", :area_code => "5284") + AreaCode.create(:country => germany, :name => "Bad Pyrmont-Kleinenberg", :area_code => "5285") + AreaCode.create(:country => germany, :name => "Ottenstein Niedersachs", :area_code => "5286") + AreaCode.create(:country => germany, :name => "Lichtenau-Atteln", :area_code => "5292") + AreaCode.create(:country => germany, :name => "Paderborn-Dahl", :area_code => "5293") + AreaCode.create(:country => germany, :name => "Hövelhof-Espeln", :area_code => "5294") + AreaCode.create(:country => germany, :name => "Lichtenau Westf", :area_code => "5295") + AreaCode.create(:country => germany, :name => "Salzgitter-Üfingen", :area_code => "5300") + AreaCode.create(:country => germany, :name => "Lehre-Essenrode", :area_code => "5301") + AreaCode.create(:country => germany, :name => "Vechelde", :area_code => "5302") + AreaCode.create(:country => germany, :name => "Wendeburg", :area_code => "5303") + AreaCode.create(:country => germany, :name => "Meine", :area_code => "5304") + AreaCode.create(:country => germany, :name => "Sickte", :area_code => "5305") + AreaCode.create(:country => germany, :name => "Cremlingen", :area_code => "5306") + AreaCode.create(:country => germany, :name => "Braunschweig-Wenden", :area_code => "5307") + AreaCode.create(:country => germany, :name => "Lehre", :area_code => "5308") + AreaCode.create(:country => germany, :name => "Lehre-Wendhausen", :area_code => "5309") + AreaCode.create(:country => germany, :name => "Braunschweig", :area_code => "531") + AreaCode.create(:country => germany, :name => "Torfhaus", :area_code => "5320") + AreaCode.create(:country => germany, :name => "Goslar", :area_code => "5321") + AreaCode.create(:country => germany, :name => "Bad Harzburg", :area_code => "5322") + AreaCode.create(:country => germany, :name => "Clausthal-Zellerfeld", :area_code => "5323") + AreaCode.create(:country => germany, :name => "Vienenburg", :area_code => "5324") + AreaCode.create(:country => germany, :name => "Goslar-Hahnenklee", :area_code => "5325") + AreaCode.create(:country => germany, :name => "Langelsheim", :area_code => "5326") + AreaCode.create(:country => germany, :name => "Bad Grund Harz", :area_code => "5327") + AreaCode.create(:country => germany, :name => "Altenau Harz", :area_code => "5328") + AreaCode.create(:country => germany, :name => "Schulenberg im Oberharz", :area_code => "5329") + AreaCode.create(:country => germany, :name => "Wolfenbüttel", :area_code => "5331") + AreaCode.create(:country => germany, :name => "Schöppenstedt", :area_code => "5332") + AreaCode.create(:country => germany, :name => "Dettum", :area_code => "5333") + AreaCode.create(:country => germany, :name => "Hornburg Kr Wolfenbüttel", :area_code => "5334") + AreaCode.create(:country => germany, :name => "Schladen", :area_code => "5335") + AreaCode.create(:country => germany, :name => "Semmenstedt", :area_code => "5336") + AreaCode.create(:country => germany, :name => "Kissenbrück", :area_code => "5337") + AreaCode.create(:country => germany, :name => "Gielde", :area_code => "5339") + AreaCode.create(:country => germany, :name => "Salzgitter", :area_code => "5341") + AreaCode.create(:country => germany, :name => "Lengede", :area_code => "5344") + AreaCode.create(:country => germany, :name => "Baddeckenstedt", :area_code => "5345") + AreaCode.create(:country => germany, :name => "Liebenburg", :area_code => "5346") + AreaCode.create(:country => germany, :name => "Burgdorf b Salzgitter", :area_code => "5347") + AreaCode.create(:country => germany, :name => "Helmstedt", :area_code => "5351") + AreaCode.create(:country => germany, :name => "Schöningen", :area_code => "5352") + AreaCode.create(:country => germany, :name => "Königslutter am Elm", :area_code => "5353") + AreaCode.create(:country => germany, :name => "Jerxheim", :area_code => "5354") + AreaCode.create(:country => germany, :name => "Frellstedt", :area_code => "5355") + AreaCode.create(:country => germany, :name => "Helmstedt-Barmke", :area_code => "5356") + AreaCode.create(:country => germany, :name => "Grasleben", :area_code => "5357") + AreaCode.create(:country => germany, :name => "Bahrdorf-Mackendorf", :area_code => "5358") + AreaCode.create(:country => germany, :name => "Wolfsburg", :area_code => "5361") + AreaCode.create(:country => germany, :name => "Wolfsburg-Fallersleben", :area_code => "5362") + AreaCode.create(:country => germany, :name => "Wolfsburg-Vorsfelde", :area_code => "5363") + AreaCode.create(:country => germany, :name => "Velpke", :area_code => "5364") + AreaCode.create(:country => germany, :name => "Wolfsburg-Neindorf", :area_code => "5365") + AreaCode.create(:country => germany, :name => "Jembke", :area_code => "5366") + AreaCode.create(:country => germany, :name => "Rühen", :area_code => "5367") + AreaCode.create(:country => germany, :name => "Parsau", :area_code => "5368") + AreaCode.create(:country => germany, :name => "Gifhorn", :area_code => "5371") + AreaCode.create(:country => germany, :name => "Meinersen", :area_code => "5372") + AreaCode.create(:country => germany, :name => "Hillerse Kr Gifhorn", :area_code => "5373") + AreaCode.create(:country => germany, :name => "Isenbüttel", :area_code => "5374") + AreaCode.create(:country => germany, :name => "Müden Aller", :area_code => "5375") + AreaCode.create(:country => germany, :name => "Wesendorf Kr Gifhorn", :area_code => "5376") + AreaCode.create(:country => germany, :name => "Ehra-Lessien", :area_code => "5377") + AreaCode.create(:country => germany, :name => "Sassenburg-Platendorf", :area_code => "5378") + AreaCode.create(:country => germany, :name => "Sassenburg-Grussendorf", :area_code => "5379") + AreaCode.create(:country => germany, :name => "Seesen", :area_code => "5381") + AreaCode.create(:country => germany, :name => "Bad Gandersheim", :area_code => "5382") + AreaCode.create(:country => germany, :name => "Lutter am Barenberge", :area_code => "5383") + AreaCode.create(:country => germany, :name => "Seesen-Groß Rhüden", :area_code => "5384") + AreaCode.create(:country => germany, :name => "Georgsmarienhütte", :area_code => "5401") + AreaCode.create(:country => germany, :name => "Bissendorf Kr Osnabrück", :area_code => "5402") + AreaCode.create(:country => germany, :name => "Bad Iburg", :area_code => "5403") + AreaCode.create(:country => germany, :name => "Westerkappeln", :area_code => "5404") + AreaCode.create(:country => germany, :name => "Hasbergen Kr Osnabrück", :area_code => "5405") + AreaCode.create(:country => germany, :name => "Belm", :area_code => "5406") + AreaCode.create(:country => germany, :name => "Wallenhorst", :area_code => "5407") + AreaCode.create(:country => germany, :name => "Hilter am Teutoburger Wald", :area_code => "5409") + AreaCode.create(:country => germany, :name => "Osnabrück", :area_code => "541") + AreaCode.create(:country => germany, :name => "Dissen am Teutoburger Wald", :area_code => "5421") + AreaCode.create(:country => germany, :name => "Melle", :area_code => "5422") + AreaCode.create(:country => germany, :name => "Versmold", :area_code => "5423") + AreaCode.create(:country => germany, :name => "Bad Rothenfelde", :area_code => "5424") + AreaCode.create(:country => germany, :name => "Borgholzhausen", :area_code => "5425") + AreaCode.create(:country => germany, :name => "Glandorf", :area_code => "5426") + AreaCode.create(:country => germany, :name => "Melle-Buer", :area_code => "5427") + AreaCode.create(:country => germany, :name => "Melle-Neuenkirchen", :area_code => "5428") + AreaCode.create(:country => germany, :name => "Melle-Wellingholzhausen", :area_code => "5429") + AreaCode.create(:country => germany, :name => "Quakenbrück", :area_code => "5431") + AreaCode.create(:country => germany, :name => "Löningen", :area_code => "5432") + AreaCode.create(:country => germany, :name => "Badbergen", :area_code => "5433") + AreaCode.create(:country => germany, :name => "Essen Oldenburg", :area_code => "5434") + AreaCode.create(:country => germany, :name => "Berge b Quakenbrück", :area_code => "5435") + AreaCode.create(:country => germany, :name => "Nortrup", :area_code => "5436") + AreaCode.create(:country => germany, :name => "Menslage", :area_code => "5437") + AreaCode.create(:country => germany, :name => "Bakum-Lüsche", :area_code => "5438") + AreaCode.create(:country => germany, :name => "Bersenbrück", :area_code => "5439") + AreaCode.create(:country => germany, :name => "Diepholz", :area_code => "5441") + AreaCode.create(:country => germany, :name => "Barnstorf Kr Diepholz", :area_code => "5442") + AreaCode.create(:country => germany, :name => "Lemförde", :area_code => "5443") + AreaCode.create(:country => germany, :name => "Wagenfeld", :area_code => "5444") + AreaCode.create(:country => germany, :name => "Drebber", :area_code => "5445") + AreaCode.create(:country => germany, :name => "Rehden", :area_code => "5446") + AreaCode.create(:country => germany, :name => "Lembruch", :area_code => "5447") + AreaCode.create(:country => germany, :name => "Barver", :area_code => "5448") + AreaCode.create(:country => germany, :name => "Ibbenbüren", :area_code => "5451") + AreaCode.create(:country => germany, :name => "Mettingen Westf", :area_code => "5452") + AreaCode.create(:country => germany, :name => "Recke", :area_code => "5453") + AreaCode.create(:country => germany, :name => "Hörstel-Riesenbeck", :area_code => "5454") + AreaCode.create(:country => germany, :name => "Tecklenburg-Brochterbeck", :area_code => "5455") + AreaCode.create(:country => germany, :name => "Westerkappeln-Velpe", :area_code => "5456") + AreaCode.create(:country => germany, :name => "Hopsten-Schale", :area_code => "5457") + AreaCode.create(:country => germany, :name => "Hopsten", :area_code => "5458") + AreaCode.create(:country => germany, :name => "Hörstel", :area_code => "5459") + AreaCode.create(:country => germany, :name => "Bramsche Hase", :area_code => "5461") + AreaCode.create(:country => germany, :name => "Ankum", :area_code => "5462") + AreaCode.create(:country => germany, :name => "Alfhausen", :area_code => "5464") + AreaCode.create(:country => germany, :name => "Neuenkirchen b Bramsche", :area_code => "5465") + AreaCode.create(:country => germany, :name => "Merzen", :area_code => "5466") + AreaCode.create(:country => germany, :name => "Voltlage", :area_code => "5467") + AreaCode.create(:country => germany, :name => "Bramsche-Engter", :area_code => "5468") + AreaCode.create(:country => germany, :name => "Bohmte", :area_code => "5471") + AreaCode.create(:country => germany, :name => "Bad Essen", :area_code => "5472") + AreaCode.create(:country => germany, :name => "Ostercappeln", :area_code => "5473") + AreaCode.create(:country => germany, :name => "Stemwede-Dielingen", :area_code => "5474") + AreaCode.create(:country => germany, :name => "Bohmte-Hunteburg", :area_code => "5475") + AreaCode.create(:country => germany, :name => "Ostercappeln-Venne", :area_code => "5476") + AreaCode.create(:country => germany, :name => "Lengerich Westf", :area_code => "5481") + AreaCode.create(:country => germany, :name => "Tecklenburg", :area_code => "5482") + AreaCode.create(:country => germany, :name => "Lienen", :area_code => "5483") + AreaCode.create(:country => germany, :name => "Lienen-Kattenvenne", :area_code => "5484") + AreaCode.create(:country => germany, :name => "Ladbergen", :area_code => "5485") + AreaCode.create(:country => germany, :name => "Damme Dümmer", :area_code => "5491") + AreaCode.create(:country => germany, :name => "Steinfeld Oldenburg", :area_code => "5492") + AreaCode.create(:country => germany, :name => "Neuenkirchen Kr Vechta", :area_code => "5493") + AreaCode.create(:country => germany, :name => "Holdorf Niedersachs", :area_code => "5494") + AreaCode.create(:country => germany, :name => "Vörden Kr Vechta", :area_code => "5495") + AreaCode.create(:country => germany, :name => "Dransfeld", :area_code => "5502") + AreaCode.create(:country => germany, :name => "Nörten-Hardenberg", :area_code => "5503") + AreaCode.create(:country => germany, :name => "Friedland Kr Göttingen", :area_code => "5504") + AreaCode.create(:country => germany, :name => "Hardegsen", :area_code => "5505") + AreaCode.create(:country => germany, :name => "Adelebsen", :area_code => "5506") + AreaCode.create(:country => germany, :name => "Ebergötzen", :area_code => "5507") + AreaCode.create(:country => germany, :name => "Gleichen-Rittmarshausen", :area_code => "5508") + AreaCode.create(:country => germany, :name => "Rosdorf Kr Göttingen", :area_code => "5509") + AreaCode.create(:country => germany, :name => "Göttingen", :area_code => "551") + AreaCode.create(:country => germany, :name => "Braunlage", :area_code => "5520") + AreaCode.create(:country => germany, :name => "Herzberg am Harz", :area_code => "5521") + AreaCode.create(:country => germany, :name => "Osterode am Harz", :area_code => "5522") + AreaCode.create(:country => germany, :name => "Bad Sachsa", :area_code => "5523") + AreaCode.create(:country => germany, :name => "Bad Lauterberg im Harz", :area_code => "5524") + AreaCode.create(:country => germany, :name => "Walkenried", :area_code => "5525") + AreaCode.create(:country => germany, :name => "Duderstadt", :area_code => "5527") + AreaCode.create(:country => germany, :name => "Gieboldehausen", :area_code => "5528") + AreaCode.create(:country => germany, :name => "Rhumspringe", :area_code => "5529") + AreaCode.create(:country => germany, :name => "Holzminden", :area_code => "5531") + AreaCode.create(:country => germany, :name => "Stadtoldendorf", :area_code => "5532") + AreaCode.create(:country => germany, :name => "Bodenwerder", :area_code => "5533") + AreaCode.create(:country => germany, :name => "Eschershausen a d Lenne", :area_code => "5534") + AreaCode.create(:country => germany, :name => "Polle", :area_code => "5535") + AreaCode.create(:country => germany, :name => "Holzminden-Neuhaus", :area_code => "5536") + AreaCode.create(:country => germany, :name => "Hann. Münden", :area_code => "5541") + AreaCode.create(:country => germany, :name => "Witzenhausen", :area_code => "5542") + AreaCode.create(:country => germany, :name => "Staufenberg Niedersachs", :area_code => "5543") + AreaCode.create(:country => germany, :name => "Reinhardshagen", :area_code => "5544") + AreaCode.create(:country => germany, :name => "Hedemünden", :area_code => "5545") + AreaCode.create(:country => germany, :name => "Scheden", :area_code => "5546") + AreaCode.create(:country => germany, :name => "Northeim", :area_code => "5551") + AreaCode.create(:country => germany, :name => "Katlenburg", :area_code => "5552") + AreaCode.create(:country => germany, :name => "Kalefeld", :area_code => "5553") + AreaCode.create(:country => germany, :name => "Moringen", :area_code => "5554") + AreaCode.create(:country => germany, :name => "Moringen-Fredelsloh", :area_code => "5555") + AreaCode.create(:country => germany, :name => "Lindau Harz", :area_code => "5556") + AreaCode.create(:country => germany, :name => "Einbeck", :area_code => "5561") + AreaCode.create(:country => germany, :name => "Dassel-Markoldendorf", :area_code => "5562") + AreaCode.create(:country => germany, :name => "Kreiensen", :area_code => "5563") + AreaCode.create(:country => germany, :name => "Dassel", :area_code => "5564") + AreaCode.create(:country => germany, :name => "Einbeck-Wenzen", :area_code => "5565") + AreaCode.create(:country => germany, :name => "Uslar", :area_code => "5571") + AreaCode.create(:country => germany, :name => "Bodenfelde", :area_code => "5572") + AreaCode.create(:country => germany, :name => "Uslar-Volpriehausen", :area_code => "5573") + AreaCode.create(:country => germany, :name => "Oberweser", :area_code => "5574") + AreaCode.create(:country => germany, :name => "Sankt Andreasberg", :area_code => "5582") + AreaCode.create(:country => germany, :name => "Braunlage-Hohegeiss", :area_code => "5583") + AreaCode.create(:country => germany, :name => "Hattorf am Harz", :area_code => "5584") + AreaCode.create(:country => germany, :name => "Herzberg-Sieber", :area_code => "5585") + AreaCode.create(:country => germany, :name => "Wieda", :area_code => "5586") + AreaCode.create(:country => germany, :name => "Gleichen-Bremke", :area_code => "5592") + AreaCode.create(:country => germany, :name => "Bovenden-Lenglern", :area_code => "5593") + AreaCode.create(:country => germany, :name => "Bovenden-Reyershausen", :area_code => "5594") + AreaCode.create(:country => germany, :name => "Schauenburg", :area_code => "5601") + AreaCode.create(:country => germany, :name => "Hessisch Lichtenau", :area_code => "5602") + AreaCode.create(:country => germany, :name => "Gudensberg", :area_code => "5603") + AreaCode.create(:country => germany, :name => "Grossalmerode", :area_code => "5604") + AreaCode.create(:country => germany, :name => "Kaufungen Hess", :area_code => "5605") + AreaCode.create(:country => germany, :name => "Zierenberg", :area_code => "5606") + AreaCode.create(:country => germany, :name => "Fuldatal", :area_code => "5607") + AreaCode.create(:country => germany, :name => "Söhrewald", :area_code => "5608") + AreaCode.create(:country => germany, :name => "Ahnatal", :area_code => "5609") + AreaCode.create(:country => germany, :name => "Kassel", :area_code => "561") + AreaCode.create(:country => germany, :name => "Bad Wildungen", :area_code => "5621") + AreaCode.create(:country => germany, :name => "Fritzlar", :area_code => "5622") + AreaCode.create(:country => germany, :name => "Edertal", :area_code => "5623") + AreaCode.create(:country => germany, :name => "Bad Emstal", :area_code => "5624") + AreaCode.create(:country => germany, :name => "Naumburg Hess", :area_code => "5625") + AreaCode.create(:country => germany, :name => "Bad Zwesten", :area_code => "5626") + AreaCode.create(:country => germany, :name => "Korbach", :area_code => "5631") + AreaCode.create(:country => germany, :name => "Willingen Upland", :area_code => "5632") + AreaCode.create(:country => germany, :name => "Diemelsee", :area_code => "5633") + AreaCode.create(:country => germany, :name => "Waldeck-Sachsenhausen", :area_code => "5634") + AreaCode.create(:country => germany, :name => "Vöhl", :area_code => "5635") + AreaCode.create(:country => germany, :name => "Lichtenfels-Goddelsheim", :area_code => "5636") + AreaCode.create(:country => germany, :name => "Warburg", :area_code => "5641") + AreaCode.create(:country => germany, :name => "Warburg-Scherfede", :area_code => "5642") + AreaCode.create(:country => germany, :name => "Borgentreich", :area_code => "5643") + AreaCode.create(:country => germany, :name => "Willebadessen-Peckelsheim", :area_code => "5644") + AreaCode.create(:country => germany, :name => "Borgentreich-Borgholz", :area_code => "5645") + AreaCode.create(:country => germany, :name => "Willebadessen", :area_code => "5646") + AreaCode.create(:country => germany, :name => "Lichtenau-Kleinenberg", :area_code => "5647") + AreaCode.create(:country => germany, :name => "Brakel-Gehrden", :area_code => "5648") + AreaCode.create(:country => germany, :name => "Cornberg", :area_code => "5650") + AreaCode.create(:country => germany, :name => "Eschwege", :area_code => "5651") + AreaCode.create(:country => germany, :name => "Bad Sooden-Allendorf", :area_code => "5652") + AreaCode.create(:country => germany, :name => "Sontra", :area_code => "5653") + AreaCode.create(:country => germany, :name => "Herleshausen", :area_code => "5654") + AreaCode.create(:country => germany, :name => "Wanfried", :area_code => "5655") + AreaCode.create(:country => germany, :name => "Waldkappel", :area_code => "5656") + AreaCode.create(:country => germany, :name => "Meissner", :area_code => "5657") + AreaCode.create(:country => germany, :name => "Wehretal", :area_code => "5658") + AreaCode.create(:country => germany, :name => "Ringgau", :area_code => "5659") + AreaCode.create(:country => germany, :name => "Melsungen", :area_code => "5661") + AreaCode.create(:country => germany, :name => "Felsberg Hess", :area_code => "5662") + AreaCode.create(:country => germany, :name => "Spangenberg", :area_code => "5663") + AreaCode.create(:country => germany, :name => "Morschen", :area_code => "5664") + AreaCode.create(:country => germany, :name => "Guxhagen", :area_code => "5665") + AreaCode.create(:country => germany, :name => "Hofgeismar", :area_code => "5671") + AreaCode.create(:country => germany, :name => "Bad Karlshafen", :area_code => "5672") + AreaCode.create(:country => germany, :name => "Immenhausen Hess", :area_code => "5673") + AreaCode.create(:country => germany, :name => "Grebenstein", :area_code => "5674") + AreaCode.create(:country => germany, :name => "Trendelburg", :area_code => "5675") + AreaCode.create(:country => germany, :name => "Liebenau Hess", :area_code => "5676") + AreaCode.create(:country => germany, :name => "Calden-Westuffeln", :area_code => "5677") + AreaCode.create(:country => germany, :name => "Homberg Efze", :area_code => "5681") + AreaCode.create(:country => germany, :name => "Borken Hessen", :area_code => "5682") + AreaCode.create(:country => germany, :name => "Wabern Hess", :area_code => "5683") + AreaCode.create(:country => germany, :name => "Frielendorf", :area_code => "5684") + AreaCode.create(:country => germany, :name => "Knüllwald", :area_code => "5685") + AreaCode.create(:country => germany, :name => "Schwarzenborn Knüll", :area_code => "5686") + AreaCode.create(:country => germany, :name => "Bad Arolsen", :area_code => "5691") + AreaCode.create(:country => germany, :name => "Wolfhagen", :area_code => "5692") + AreaCode.create(:country => germany, :name => "Volkmarsen", :area_code => "5693") + AreaCode.create(:country => germany, :name => "Diemelstadt", :area_code => "5694") + AreaCode.create(:country => germany, :name => "Twistetal", :area_code => "5695") + AreaCode.create(:country => germany, :name => "Bad Arolsen-Landau", :area_code => "5696") + AreaCode.create(:country => germany, :name => "Petershagen-Lahde", :area_code => "5702") + AreaCode.create(:country => germany, :name => "Hille", :area_code => "5703") + AreaCode.create(:country => germany, :name => "Petershagen-Friedewalde", :area_code => "5704") + AreaCode.create(:country => germany, :name => "Petershagen-Windheim", :area_code => "5705") + AreaCode.create(:country => germany, :name => "Porta Westfalica", :area_code => "5706") + AreaCode.create(:country => germany, :name => "Petershagen Weser", :area_code => "5707") + AreaCode.create(:country => germany, :name => "Minden Westf", :area_code => "571") + AreaCode.create(:country => germany, :name => "Stadthagen", :area_code => "5721") + AreaCode.create(:country => germany, :name => "Bückeburg", :area_code => "5722") + AreaCode.create(:country => germany, :name => "Bad Nenndorf", :area_code => "5723") + AreaCode.create(:country => germany, :name => "Obernkirchen", :area_code => "5724") + AreaCode.create(:country => germany, :name => "Lindhorst b Stadthagen", :area_code => "5725") + AreaCode.create(:country => germany, :name => "Wiedensahl", :area_code => "5726") + AreaCode.create(:country => germany, :name => "Bad Oeynhausen", :area_code => "5731") + AreaCode.create(:country => germany, :name => "Löhne", :area_code => "5732") + AreaCode.create(:country => germany, :name => "Vlotho", :area_code => "5733") + AreaCode.create(:country => germany, :name => "Bergkirchen Westf", :area_code => "5734") + AreaCode.create(:country => germany, :name => "Lübbecke", :area_code => "5741") + AreaCode.create(:country => germany, :name => "Preussisch Oldendorf", :area_code => "5742") + AreaCode.create(:country => germany, :name => "Espelkamp-Gestringen", :area_code => "5743") + AreaCode.create(:country => germany, :name => "Hüllhorst", :area_code => "5744") + AreaCode.create(:country => germany, :name => "Stemwede-Levern", :area_code => "5745") + AreaCode.create(:country => germany, :name => "Rödinghausen", :area_code => "5746") + AreaCode.create(:country => germany, :name => "Rinteln", :area_code => "5751") + AreaCode.create(:country => germany, :name => "Auetal-Hattendorf", :area_code => "5752") + AreaCode.create(:country => germany, :name => "Auetal-Bernsen", :area_code => "5753") + AreaCode.create(:country => germany, :name => "Extertal-Bremke", :area_code => "5754") + AreaCode.create(:country => germany, :name => "Kalletal-Varenholz", :area_code => "5755") + AreaCode.create(:country => germany, :name => "Stolzenau", :area_code => "5761") + AreaCode.create(:country => germany, :name => "Uchte", :area_code => "5763") + AreaCode.create(:country => germany, :name => "Steyerberg", :area_code => "5764") + AreaCode.create(:country => germany, :name => "Raddestorf", :area_code => "5765") + AreaCode.create(:country => germany, :name => "Rehburg-Loccum", :area_code => "5766") + AreaCode.create(:country => germany, :name => "Warmsen", :area_code => "5767") + AreaCode.create(:country => germany, :name => "Petershagen-Heimsen", :area_code => "5768") + AreaCode.create(:country => germany, :name => "Steyerberg-Voigtei", :area_code => "5769") + AreaCode.create(:country => germany, :name => "Rahden Westf", :area_code => "5771") + AreaCode.create(:country => germany, :name => "Espelkamp", :area_code => "5772") + AreaCode.create(:country => germany, :name => "Stemwede-Wehdem", :area_code => "5773") + AreaCode.create(:country => germany, :name => "Wagenfeld-Ströhen", :area_code => "5774") + AreaCode.create(:country => germany, :name => "Diepenau", :area_code => "5775") + AreaCode.create(:country => germany, :name => "Preussisch Ströhen", :area_code => "5776") + AreaCode.create(:country => germany, :name => "Diepenau-Essern", :area_code => "5777") + AreaCode.create(:country => germany, :name => "Wrestedt", :area_code => "5802") + AreaCode.create(:country => germany, :name => "Rosche", :area_code => "5803") + AreaCode.create(:country => germany, :name => "Rätzlingen Kr Uelzen", :area_code => "5804") + AreaCode.create(:country => germany, :name => "Oetzen", :area_code => "5805") + AreaCode.create(:country => germany, :name => "Barum b Bad Bevensen", :area_code => "5806") + AreaCode.create(:country => germany, :name => "Altenmedingen", :area_code => "5807") + AreaCode.create(:country => germany, :name => "Gerdau", :area_code => "5808") + AreaCode.create(:country => germany, :name => "Uelzen", :area_code => "581") + AreaCode.create(:country => germany, :name => "Suhlendorf", :area_code => "5820") + AreaCode.create(:country => germany, :name => "Bad Bevensen", :area_code => "5821") + AreaCode.create(:country => germany, :name => "Ebstorf", :area_code => "5822") + AreaCode.create(:country => germany, :name => "Bienenbüttel", :area_code => "5823") + AreaCode.create(:country => germany, :name => "Bad Bodenteich", :area_code => "5824") + AreaCode.create(:country => germany, :name => "Wieren", :area_code => "5825") + AreaCode.create(:country => germany, :name => "Suderburg", :area_code => "5826") + AreaCode.create(:country => germany, :name => "Unterlüß", :area_code => "5827") + AreaCode.create(:country => germany, :name => "Himbergen", :area_code => "5828") + AreaCode.create(:country => germany, :name => "Wriedel", :area_code => "5829") + AreaCode.create(:country => germany, :name => "Wittingen", :area_code => "5831") + AreaCode.create(:country => germany, :name => "Hankensbüttel", :area_code => "5832") + AreaCode.create(:country => germany, :name => "Brome", :area_code => "5833") + AreaCode.create(:country => germany, :name => "Wittingen-Knesebeck", :area_code => "5834") + AreaCode.create(:country => germany, :name => "Wahrenholz", :area_code => "5835") + AreaCode.create(:country => germany, :name => "Wittingen-Radenbeck", :area_code => "5836") + AreaCode.create(:country => germany, :name => "Sprakensehl", :area_code => "5837") + AreaCode.create(:country => germany, :name => "Gross Oesingen", :area_code => "5838") + AreaCode.create(:country => germany, :name => "Wittingen-Ohrdorf", :area_code => "5839") + AreaCode.create(:country => germany, :name => "Schnackenburg", :area_code => "5840") + AreaCode.create(:country => germany, :name => "Lüchow Wendland", :area_code => "5841") + AreaCode.create(:country => germany, :name => "Schnega", :area_code => "5842") + AreaCode.create(:country => germany, :name => "Wustrow", :area_code => "5843") + AreaCode.create(:country => germany, :name => "Clenze", :area_code => "5844") + AreaCode.create(:country => germany, :name => "Bergen Dumme", :area_code => "5845") + AreaCode.create(:country => germany, :name => "Gartow Niedersachs", :area_code => "5846") + AreaCode.create(:country => germany, :name => "Trebel", :area_code => "5848") + AreaCode.create(:country => germany, :name => "Waddeweitz", :area_code => "5849") + AreaCode.create(:country => germany, :name => "Neetze", :area_code => "5850") + AreaCode.create(:country => germany, :name => "Dahlenburg", :area_code => "5851") + AreaCode.create(:country => germany, :name => "Bleckede", :area_code => "5852") + AreaCode.create(:country => germany, :name => "Neu Darchau", :area_code => "5853") + AreaCode.create(:country => germany, :name => "Bleckede-Barskamp", :area_code => "5854") + AreaCode.create(:country => germany, :name => "Nahrendorf", :area_code => "5855") + AreaCode.create(:country => germany, :name => "Bleckede-Brackede", :area_code => "5857") + AreaCode.create(:country => germany, :name => "Hitzacker-Wietzetze", :area_code => "5858") + AreaCode.create(:country => germany, :name => "Thomasburg", :area_code => "5859") + AreaCode.create(:country => germany, :name => "Dannenberg Elbe", :area_code => "5861") + AreaCode.create(:country => germany, :name => "Hitzacker Elbe", :area_code => "5862") + AreaCode.create(:country => germany, :name => "Zernien", :area_code => "5863") + AreaCode.create(:country => germany, :name => "Jameln", :area_code => "5864") + AreaCode.create(:country => germany, :name => "Gusborn", :area_code => "5865") + AreaCode.create(:country => germany, :name => "Stoetze", :area_code => "5872") + AreaCode.create(:country => germany, :name => "Eimke", :area_code => "5873") + AreaCode.create(:country => germany, :name => "Soltendieck", :area_code => "5874") + AreaCode.create(:country => germany, :name => "Emmendorf", :area_code => "5875") + AreaCode.create(:country => germany, :name => "Gorleben", :area_code => "5882") + AreaCode.create(:country => germany, :name => "Lemgow", :area_code => "5883") + AreaCode.create(:country => germany, :name => "Fürstenau b Bramsche", :area_code => "5901") + AreaCode.create(:country => germany, :name => "Freren", :area_code => "5902") + AreaCode.create(:country => germany, :name => "Emsbüren", :area_code => "5903") + AreaCode.create(:country => germany, :name => "Lengerich Emsl", :area_code => "5904") + AreaCode.create(:country => germany, :name => "Beesten", :area_code => "5905") + AreaCode.create(:country => germany, :name => "Lünne", :area_code => "5906") + AreaCode.create(:country => germany, :name => "Geeste", :area_code => "5907") + AreaCode.create(:country => germany, :name => "Wietmarschen-Lohne", :area_code => "5908") + AreaCode.create(:country => germany, :name => "Wettrup", :area_code => "5909") + AreaCode.create(:country => germany, :name => "Lingen (Ems)", :area_code => "591") + AreaCode.create(:country => germany, :name => "Nordhorn", :area_code => "5921") + AreaCode.create(:country => germany, :name => "Bad Bentheim", :area_code => "5922") + AreaCode.create(:country => germany, :name => "Schüttorf", :area_code => "5923") + AreaCode.create(:country => germany, :name => "Bad Bentheim-Gildehaus", :area_code => "5924") + AreaCode.create(:country => germany, :name => "Wietmarschen", :area_code => "5925") + AreaCode.create(:country => germany, :name => "Engden", :area_code => "5926") + AreaCode.create(:country => germany, :name => "Meppen", :area_code => "5931") + AreaCode.create(:country => germany, :name => "Haren Ems", :area_code => "5932") + AreaCode.create(:country => germany, :name => "Lathen", :area_code => "5933") + AreaCode.create(:country => germany, :name => "Haren-Rütenbrock", :area_code => "5934") + AreaCode.create(:country => germany, :name => "Twist-Schöninghsdorf", :area_code => "5935") + AreaCode.create(:country => germany, :name => "Twist", :area_code => "5936") + AreaCode.create(:country => germany, :name => "Geeste-Gross Hesepe", :area_code => "5937") + AreaCode.create(:country => germany, :name => "Sustrum", :area_code => "5939") + AreaCode.create(:country => germany, :name => "Neuenhaus Dinkel", :area_code => "5941") + AreaCode.create(:country => germany, :name => "Uelsen", :area_code => "5942") + AreaCode.create(:country => germany, :name => "Emlichheim", :area_code => "5943") + AreaCode.create(:country => germany, :name => "Hoogstede", :area_code => "5944") + AreaCode.create(:country => germany, :name => "Wilsum", :area_code => "5945") + AreaCode.create(:country => germany, :name => "Georgsdorf", :area_code => "5946") + AreaCode.create(:country => germany, :name => "Laar Vechte", :area_code => "5947") + AreaCode.create(:country => germany, :name => "Itterbeck", :area_code => "5948") + AreaCode.create(:country => germany, :name => "Werlte", :area_code => "5951") + AreaCode.create(:country => germany, :name => "Sögel", :area_code => "5952") + AreaCode.create(:country => germany, :name => "Börger", :area_code => "5953") + AreaCode.create(:country => germany, :name => "Lorup", :area_code => "5954") + AreaCode.create(:country => germany, :name => "Esterwegen", :area_code => "5955") + AreaCode.create(:country => germany, :name => "Rastdorf", :area_code => "5956") + AreaCode.create(:country => germany, :name => "Lindern Oldenburg", :area_code => "5957") + AreaCode.create(:country => germany, :name => "Haselünne", :area_code => "5961") + AreaCode.create(:country => germany, :name => "Herzlake", :area_code => "5962") + AreaCode.create(:country => germany, :name => "Bawinkel", :area_code => "5963") + AreaCode.create(:country => germany, :name => "Lähden", :area_code => "5964") + AreaCode.create(:country => germany, :name => "Klein Berssen", :area_code => "5965") + AreaCode.create(:country => germany, :name => "Meppen-Apeldorn", :area_code => "5966") + AreaCode.create(:country => germany, :name => "Rheine", :area_code => "5971") + AreaCode.create(:country => germany, :name => "Neuenkirchen Kr Steinfurt", :area_code => "5973") + AreaCode.create(:country => germany, :name => "Rheine-Mesum", :area_code => "5975") + AreaCode.create(:country => germany, :name => "Salzbergen", :area_code => "5976") + AreaCode.create(:country => germany, :name => "Spelle", :area_code => "5977") + AreaCode.create(:country => germany, :name => "Hörstel-Dreierwalde", :area_code => "5978") + AreaCode.create(:country => germany, :name => "Ober-Mörlen", :area_code => "6002") + AreaCode.create(:country => germany, :name => "Rosbach v d Höhe", :area_code => "6003") + AreaCode.create(:country => germany, :name => "Lich-Eberstadt", :area_code => "6004") + AreaCode.create(:country => germany, :name => "Rosbach-Rodheim", :area_code => "6007") + AreaCode.create(:country => germany, :name => "Echzell", :area_code => "6008") + AreaCode.create(:country => germany, :name => "Heigenbrücken", :area_code => "6020") + AreaCode.create(:country => germany, :name => "Aschaffenburg", :area_code => "6021") + AreaCode.create(:country => germany, :name => "Obernburg a Main", :area_code => "6022") + AreaCode.create(:country => germany, :name => "Alzenau i Ufr", :area_code => "6023") + AreaCode.create(:country => germany, :name => "Schöllkrippen", :area_code => "6024") + AreaCode.create(:country => germany, :name => "Grossostheim", :area_code => "6026") + AreaCode.create(:country => germany, :name => "Stockstadt a Main", :area_code => "6027") + AreaCode.create(:country => germany, :name => "Sulzbach a Main", :area_code => "6028") + AreaCode.create(:country => germany, :name => "Mömbris", :area_code => "6029") + AreaCode.create(:country => germany, :name => "Friedberg Hess", :area_code => "6031") + AreaCode.create(:country => germany, :name => "Bad Nauheim", :area_code => "6032") + AreaCode.create(:country => germany, :name => "Butzbach", :area_code => "6033") + AreaCode.create(:country => germany, :name => "Wöllstadt", :area_code => "6034") + AreaCode.create(:country => germany, :name => "Reichelsheim Wetterau", :area_code => "6035") + AreaCode.create(:country => germany, :name => "Wölfersheim", :area_code => "6036") + AreaCode.create(:country => germany, :name => "Karben", :area_code => "6039") + AreaCode.create(:country => germany, :name => "Glauburg", :area_code => "6041") + AreaCode.create(:country => germany, :name => "Büdingen Hess", :area_code => "6042") + AreaCode.create(:country => germany, :name => "Nidda", :area_code => "6043") + AreaCode.create(:country => germany, :name => "Schotten Hess", :area_code => "6044") + AreaCode.create(:country => germany, :name => "Gedern", :area_code => "6045") + AreaCode.create(:country => germany, :name => "Ortenberg Hess", :area_code => "6046") + AreaCode.create(:country => germany, :name => "Altenstadt Hess", :area_code => "6047") + AreaCode.create(:country => germany, :name => "Büdingen-Eckartshausen", :area_code => "6048") + AreaCode.create(:country => germany, :name => "Kefenrod", :area_code => "6049") + AreaCode.create(:country => germany, :name => "Biebergemünd", :area_code => "6050") + AreaCode.create(:country => germany, :name => "Gelnhausen", :area_code => "6051") + AreaCode.create(:country => germany, :name => "Bad Orb", :area_code => "6052") + AreaCode.create(:country => germany, :name => "Wächtersbach", :area_code => "6053") + AreaCode.create(:country => germany, :name => "Birstein", :area_code => "6054") + AreaCode.create(:country => germany, :name => "Freigericht", :area_code => "6055") + AreaCode.create(:country => germany, :name => "Bad Soden-Salmünster", :area_code => "6056") + AreaCode.create(:country => germany, :name => "Flörsbachtal", :area_code => "6057") + AreaCode.create(:country => germany, :name => "Gründau", :area_code => "6058") + AreaCode.create(:country => germany, :name => "Jossgrund", :area_code => "6059") + AreaCode.create(:country => germany, :name => "Michelstadt", :area_code => "6061") + AreaCode.create(:country => germany, :name => "Erbach Odenw", :area_code => "6062") + AreaCode.create(:country => germany, :name => "Bad König", :area_code => "6063") + AreaCode.create(:country => germany, :name => "Michelstadt-Vielbrunn", :area_code => "6066") + AreaCode.create(:country => germany, :name => "Beerfelden", :area_code => "6068") + AreaCode.create(:country => germany, :name => "Dieburg", :area_code => "6071") + AreaCode.create(:country => germany, :name => "Babenhausen Hess", :area_code => "6073") + AreaCode.create(:country => germany, :name => "Rödermark", :area_code => "6074") + AreaCode.create(:country => germany, :name => "Gross-Umstadt", :area_code => "6078") + AreaCode.create(:country => germany, :name => "Usingen", :area_code => "6081") + AreaCode.create(:country => germany, :name => "Niederreifenberg", :area_code => "6082") + AreaCode.create(:country => germany, :name => "Weilrod", :area_code => "6083") + AreaCode.create(:country => germany, :name => "Schmitten Taunus", :area_code => "6084") + AreaCode.create(:country => germany, :name => "Waldsolms", :area_code => "6085") + AreaCode.create(:country => germany, :name => "Grävenwiesbach", :area_code => "6086") + AreaCode.create(:country => germany, :name => "Waldems", :area_code => "6087") + AreaCode.create(:country => germany, :name => "Heimbuchenthal", :area_code => "6092") + AreaCode.create(:country => germany, :name => "Laufach", :area_code => "6093") + AreaCode.create(:country => germany, :name => "Weibersbrunn", :area_code => "6094") + AreaCode.create(:country => germany, :name => "Bessenbach", :area_code => "6095") + AreaCode.create(:country => germany, :name => "Wiesen Unterfr", :area_code => "6096") + AreaCode.create(:country => germany, :name => "Bad Vilbel", :area_code => "6101") + AreaCode.create(:country => germany, :name => "Neu-Isenburg", :area_code => "6102") + AreaCode.create(:country => germany, :name => "Langen Hess", :area_code => "6103") + AreaCode.create(:country => germany, :name => "Heusenstamm", :area_code => "6104") + AreaCode.create(:country => germany, :name => "Mörfelden-Walldorf", :area_code => "6105") + AreaCode.create(:country => germany, :name => "Rodgau", :area_code => "6106") + AreaCode.create(:country => germany, :name => "Kelsterbach", :area_code => "6107") + AreaCode.create(:country => germany, :name => "Mühlheim am Main", :area_code => "6108") + AreaCode.create(:country => germany, :name => "Frankfurt-Bergen-Enkheim", :area_code => "6109") + AreaCode.create(:country => germany, :name => "Wiesbaden", :area_code => "611") + AreaCode.create(:country => germany, :name => "Aarbergen", :area_code => "6120") + AreaCode.create(:country => germany, :name => "Hofheim-Wallau", :area_code => "6122") + AreaCode.create(:country => germany, :name => "Eltville am Rhein", :area_code => "6123") + AreaCode.create(:country => germany, :name => "Bad Schwalbach", :area_code => "6124") + AreaCode.create(:country => germany, :name => "Idstein", :area_code => "6126") + AreaCode.create(:country => germany, :name => "Niedernhausen Taunus", :area_code => "6127") + AreaCode.create(:country => germany, :name => "Taunusstein", :area_code => "6128") + AreaCode.create(:country => germany, :name => "Schlangenbad", :area_code => "6129") + AreaCode.create(:country => germany, :name => "Schwabenheim an der Selz", :area_code => "6130") + AreaCode.create(:country => germany, :name => "Mainz", :area_code => "6131") + AreaCode.create(:country => germany, :name => "Ingelheim am Rhein", :area_code => "6132") + AreaCode.create(:country => germany, :name => "Oppenheim", :area_code => "6133") + AreaCode.create(:country => germany, :name => "Mainz-Kastel", :area_code => "6134") + AreaCode.create(:country => germany, :name => "Bodenheim Rhein", :area_code => "6135") + AreaCode.create(:country => germany, :name => "Nieder-Olm", :area_code => "6136") + AreaCode.create(:country => germany, :name => "Mommenheim", :area_code => "6138") + AreaCode.create(:country => germany, :name => "Budenheim", :area_code => "6139") + AreaCode.create(:country => germany, :name => "Rüsselsheim", :area_code => "6142") + AreaCode.create(:country => germany, :name => "Bischofsheim b Rüsselsheim", :area_code => "6144") + AreaCode.create(:country => germany, :name => "Flörsheim am Main", :area_code => "6145") + AreaCode.create(:country => germany, :name => "Hochheim am Main", :area_code => "6146") + AreaCode.create(:country => germany, :name => "Trebur", :area_code => "6147") + AreaCode.create(:country => germany, :name => "Weiterstadt", :area_code => "6150") + AreaCode.create(:country => germany, :name => "Darmstadt", :area_code => "6151") + AreaCode.create(:country => germany, :name => "Gross-Gerau", :area_code => "6152") + AreaCode.create(:country => germany, :name => "Ober-Ramstadt", :area_code => "6154") + AreaCode.create(:country => germany, :name => "Griesheim Hess", :area_code => "6155") + AreaCode.create(:country => germany, :name => "Pfungstadt", :area_code => "6157") + AreaCode.create(:country => germany, :name => "Riedstadt", :area_code => "6158") + AreaCode.create(:country => germany, :name => "Messel", :area_code => "6159") + AreaCode.create(:country => germany, :name => "Brensbach", :area_code => "6161") + AreaCode.create(:country => germany, :name => "Reinheim Odenw", :area_code => "6162") + AreaCode.create(:country => germany, :name => "Höchst i Odw", :area_code => "6163") + AreaCode.create(:country => germany, :name => "Reichelsheim Odenwald", :area_code => "6164") + AreaCode.create(:country => germany, :name => "Breuberg", :area_code => "6165") + AreaCode.create(:country => germany, :name => "Fischbachtal", :area_code => "6166") + AreaCode.create(:country => germany, :name => "Modautal", :area_code => "6167") + AreaCode.create(:country => germany, :name => "Oberursel Taunus", :area_code => "6171") + AreaCode.create(:country => germany, :name => "Bad Homburg v d Höhe", :area_code => "6172") + AreaCode.create(:country => germany, :name => "Kronberg im Taunus", :area_code => "6173") + AreaCode.create(:country => germany, :name => "Königstein im Taunus", :area_code => "6174") + AreaCode.create(:country => germany, :name => "Friedrichsdorf Taunus", :area_code => "6175") + AreaCode.create(:country => germany, :name => "Hanau", :area_code => "6181") + AreaCode.create(:country => germany, :name => "Seligenstadt", :area_code => "6182") + AreaCode.create(:country => germany, :name => "Erlensee", :area_code => "6183") + AreaCode.create(:country => germany, :name => "Langenselbold", :area_code => "6184") + AreaCode.create(:country => germany, :name => "Hammersbach Hess", :area_code => "6185") + AreaCode.create(:country => germany, :name => "Grosskrotzenburg", :area_code => "6186") + AreaCode.create(:country => germany, :name => "Schöneck", :area_code => "6187") + AreaCode.create(:country => germany, :name => "Kahl a Main", :area_code => "6188") + AreaCode.create(:country => germany, :name => "Hattersheim a Main", :area_code => "6190") + AreaCode.create(:country => germany, :name => "Hofheim am Taunus", :area_code => "6192") + AreaCode.create(:country => germany, :name => "Kelkheim Taunus", :area_code => "6195") + AreaCode.create(:country => germany, :name => "Bad Soden am Taunus", :area_code => "6196") + AreaCode.create(:country => germany, :name => "Eppstein", :area_code => "6198") + AreaCode.create(:country => germany, :name => "Weinheim Bergstr", :area_code => "6201") + AreaCode.create(:country => germany, :name => "Schwetzingen", :area_code => "6202") + AreaCode.create(:country => germany, :name => "Ladenburg", :area_code => "6203") + AreaCode.create(:country => germany, :name => "Viernheim", :area_code => "6204") + AreaCode.create(:country => germany, :name => "Hockenheim", :area_code => "6205") + AreaCode.create(:country => germany, :name => "Lampertheim", :area_code => "6206") + AreaCode.create(:country => germany, :name => "Wald-Michelbach", :area_code => "6207") + AreaCode.create(:country => germany, :name => "Mörlenbach", :area_code => "6209") + AreaCode.create(:country => germany, :name => "Mannheim", :area_code => "621") + AreaCode.create(:country => germany, :name => "Wilhelmsfeld", :area_code => "6220") + AreaCode.create(:country => germany, :name => "Heidelberg", :area_code => "6221") + AreaCode.create(:country => germany, :name => "Wiesloch", :area_code => "6222") + AreaCode.create(:country => germany, :name => "Neckargemünd", :area_code => "6223") + AreaCode.create(:country => germany, :name => "Sandhausen Baden", :area_code => "6224") + AreaCode.create(:country => germany, :name => "Meckesheim", :area_code => "6226") + AreaCode.create(:country => germany, :name => "Walldorf Baden", :area_code => "6227") + AreaCode.create(:country => germany, :name => "Schönau Odenw", :area_code => "6228") + AreaCode.create(:country => germany, :name => "Neckarsteinach", :area_code => "6229") + AreaCode.create(:country => germany, :name => "Hochdorf-Assenheim", :area_code => "6231") + AreaCode.create(:country => germany, :name => "Speyer", :area_code => "6232") + AreaCode.create(:country => germany, :name => "Frankenthal Pfalz", :area_code => "6233") + AreaCode.create(:country => germany, :name => "Mutterstadt", :area_code => "6234") + AreaCode.create(:country => germany, :name => "Schifferstadt", :area_code => "6235") + AreaCode.create(:country => germany, :name => "Neuhofen Pfalz", :area_code => "6236") + AreaCode.create(:country => germany, :name => "Maxdorf", :area_code => "6237") + AreaCode.create(:country => germany, :name => "Dirmstein", :area_code => "6238") + AreaCode.create(:country => germany, :name => "Bobenheim-Roxheim", :area_code => "6239") + AreaCode.create(:country => germany, :name => "Worms", :area_code => "6241") + AreaCode.create(:country => germany, :name => "Osthofen", :area_code => "6242") + AreaCode.create(:country => germany, :name => "Monsheim", :area_code => "6243") + AreaCode.create(:country => germany, :name => "Westhofen Rheinhess", :area_code => "6244") + AreaCode.create(:country => germany, :name => "Biblis", :area_code => "6245") + AreaCode.create(:country => germany, :name => "Eich Rheinhess", :area_code => "6246") + AreaCode.create(:country => germany, :name => "Worms-Pfeddersheim", :area_code => "6247") + AreaCode.create(:country => germany, :name => "Guntersblum", :area_code => "6249") + AreaCode.create(:country => germany, :name => "Bensheim", :area_code => "6251") + AreaCode.create(:country => germany, :name => "Heppenheim Bergstraße", :area_code => "6252") + AreaCode.create(:country => germany, :name => "Fürth Odenw", :area_code => "6253") + AreaCode.create(:country => germany, :name => "Lautertal Odenwald", :area_code => "6254") + AreaCode.create(:country => germany, :name => "Lindenfels", :area_code => "6255") + AreaCode.create(:country => germany, :name => "Lampertheim-Hüttenfeld", :area_code => "6256") + AreaCode.create(:country => germany, :name => "Seeheim-Jugenheim", :area_code => "6257") + AreaCode.create(:country => germany, :name => "Gernsheim", :area_code => "6258") + AreaCode.create(:country => germany, :name => "Mosbach Baden", :area_code => "6261") + AreaCode.create(:country => germany, :name => "Aglasterhausen", :area_code => "6262") + AreaCode.create(:country => germany, :name => "Neckargerach", :area_code => "6263") + AreaCode.create(:country => germany, :name => "Neudenau", :area_code => "6264") + AreaCode.create(:country => germany, :name => "Billigheim Baden", :area_code => "6265") + AreaCode.create(:country => germany, :name => "Hassmersheim", :area_code => "6266") + AreaCode.create(:country => germany, :name => "Fahrenbach Baden", :area_code => "6267") + AreaCode.create(:country => germany, :name => "Hüffenhardt", :area_code => "6268") + AreaCode.create(:country => germany, :name => "Gundelsheim Württ", :area_code => "6269") + AreaCode.create(:country => germany, :name => "Eberbach Baden", :area_code => "6271") + AreaCode.create(:country => germany, :name => "Hirschhorn Neckar", :area_code => "6272") + AreaCode.create(:country => germany, :name => "Waldbrunn Odenw", :area_code => "6274") + AreaCode.create(:country => germany, :name => "Rothenberg Odenw", :area_code => "6275") + AreaCode.create(:country => germany, :name => "Hesseneck", :area_code => "6276") + AreaCode.create(:country => germany, :name => "Buchen Odenwald", :area_code => "6281") + AreaCode.create(:country => germany, :name => "Walldürn", :area_code => "6282") + AreaCode.create(:country => germany, :name => "Hardheim Odenw", :area_code => "6283") + AreaCode.create(:country => germany, :name => "Mudau", :area_code => "6284") + AreaCode.create(:country => germany, :name => "Walldürn-Altheim", :area_code => "6285") + AreaCode.create(:country => germany, :name => "Walldürn-Rippberg", :area_code => "6286") + AreaCode.create(:country => germany, :name => "Limbach Baden", :area_code => "6287") + AreaCode.create(:country => germany, :name => "Adelsheim", :area_code => "6291") + AreaCode.create(:country => germany, :name => "Seckach", :area_code => "6292") + AreaCode.create(:country => germany, :name => "Schefflenz", :area_code => "6293") + AreaCode.create(:country => germany, :name => "Krautheim Jagst", :area_code => "6294") + AreaCode.create(:country => germany, :name => "RosenbergBaden", :area_code => "6295") + AreaCode.create(:country => germany, :name => "Ahorn Baden", :area_code => "6296") + AreaCode.create(:country => germany, :name => "Ravenstein Baden", :area_code => "6297") + AreaCode.create(:country => germany, :name => "Möckmühl", :area_code => "6298") + AreaCode.create(:country => germany, :name => "Otterbach Pfalz", :area_code => "6301") + AreaCode.create(:country => germany, :name => "Winnweiler", :area_code => "6302") + AreaCode.create(:country => germany, :name => "Enkenbach-Alsenborn", :area_code => "6303") + AreaCode.create(:country => germany, :name => "Wolfstein Pfalz", :area_code => "6304") + AreaCode.create(:country => germany, :name => "Hochspeyer", :area_code => "6305") + AreaCode.create(:country => germany, :name => "Trippstadt", :area_code => "6306") + AreaCode.create(:country => germany, :name => "Schopp", :area_code => "6307") + AreaCode.create(:country => germany, :name => "Olsbrücken", :area_code => "6308") + AreaCode.create(:country => germany, :name => "Kaiserslautern", :area_code => "631") + AreaCode.create(:country => germany, :name => "Neustadt an der Weinstraße", :area_code => "6321") + AreaCode.create(:country => germany, :name => "Bad Dürkheim", :area_code => "6322") + AreaCode.create(:country => germany, :name => "Edenkoben", :area_code => "6323") + AreaCode.create(:country => germany, :name => "Hassloch", :area_code => "6324") + AreaCode.create(:country => germany, :name => "Lambrecht Pfalz", :area_code => "6325") + AreaCode.create(:country => germany, :name => "Deidesheim", :area_code => "6326") + AreaCode.create(:country => germany, :name => "Neustadt-Lachen", :area_code => "6327") + AreaCode.create(:country => germany, :name => "Elmstein", :area_code => "6328") + AreaCode.create(:country => germany, :name => "Weidenthal Pfalz", :area_code => "6329") + AreaCode.create(:country => germany, :name => "Pirmasens", :area_code => "6331") + AreaCode.create(:country => germany, :name => "Zweibrücken", :area_code => "6332") + AreaCode.create(:country => germany, :name => "Waldfischbach-Burgalben", :area_code => "6333") + AreaCode.create(:country => germany, :name => "Thaleischweiler-Fröschen", :area_code => "6334") + AreaCode.create(:country => germany, :name => "Trulben", :area_code => "6335") + AreaCode.create(:country => germany, :name => "Dellfeld", :area_code => "6336") + AreaCode.create(:country => germany, :name => "Grossbundenbach", :area_code => "6337") + AreaCode.create(:country => germany, :name => "Hornbach Pfalz", :area_code => "6338") + AreaCode.create(:country => germany, :name => "Grosssteinhausen", :area_code => "6339") + AreaCode.create(:country => germany, :name => "Wörth-Schaidt", :area_code => "6340") + AreaCode.create(:country => germany, :name => "Landau in der Pfalz", :area_code => "6341") + AreaCode.create(:country => germany, :name => "Schweigen-Rechtenbach", :area_code => "6342") + AreaCode.create(:country => germany, :name => "Bad Bergzabern", :area_code => "6343") + AreaCode.create(:country => germany, :name => "Schwegenheim", :area_code => "6344") + AreaCode.create(:country => germany, :name => "Albersweiler", :area_code => "6345") + AreaCode.create(:country => germany, :name => "Annweiler am Trifels", :area_code => "6346") + AreaCode.create(:country => germany, :name => "Hochstadt Pfalz", :area_code => "6347") + AreaCode.create(:country => germany, :name => "Offenbach an der Queich", :area_code => "6348") + AreaCode.create(:country => germany, :name => "Billigheim-Ingenheim", :area_code => "6349") + AreaCode.create(:country => germany, :name => "Eisenberg Pfalz", :area_code => "6351") + AreaCode.create(:country => germany, :name => "Kirchheimbolanden", :area_code => "6352") + AreaCode.create(:country => germany, :name => "Freinsheim", :area_code => "6353") + AreaCode.create(:country => germany, :name => "Albisheim Pfrimm", :area_code => "6355") + AreaCode.create(:country => germany, :name => "Carlsberg Pfalz", :area_code => "6356") + AreaCode.create(:country => germany, :name => "Standenbühl", :area_code => "6357") + AreaCode.create(:country => germany, :name => "Kriegsfeld", :area_code => "6358") + AreaCode.create(:country => germany, :name => "Grünstadt", :area_code => "6359") + AreaCode.create(:country => germany, :name => "Rockenhausen", :area_code => "6361") + AreaCode.create(:country => germany, :name => "Alsenz", :area_code => "6362") + AreaCode.create(:country => germany, :name => "Niederkirchen", :area_code => "6363") + AreaCode.create(:country => germany, :name => "Nußbach Pfalz", :area_code => "6364") + AreaCode.create(:country => germany, :name => "Landstuhl", :area_code => "6371") + AreaCode.create(:country => germany, :name => "Bruchmühlbach-Miesau", :area_code => "6372") + AreaCode.create(:country => germany, :name => "Schönenberg-Kübelberg", :area_code => "6373") + AreaCode.create(:country => germany, :name => "Weilerbach", :area_code => "6374") + AreaCode.create(:country => germany, :name => "Wallhalben", :area_code => "6375") + AreaCode.create(:country => germany, :name => "Kusel", :area_code => "6381") + AreaCode.create(:country => germany, :name => "Lauterecken", :area_code => "6382") + AreaCode.create(:country => germany, :name => "Glan-Münchweiler", :area_code => "6383") + AreaCode.create(:country => germany, :name => "Konken", :area_code => "6384") + AreaCode.create(:country => germany, :name => "Reichenbach-Steegen", :area_code => "6385") + AreaCode.create(:country => germany, :name => "Altenkirchen Pfalz", :area_code => "6386") + AreaCode.create(:country => germany, :name => "Sankt Julian", :area_code => "6387") + AreaCode.create(:country => germany, :name => "Dahn", :area_code => "6391") + AreaCode.create(:country => germany, :name => "Hauenstein Pfalz", :area_code => "6392") + AreaCode.create(:country => germany, :name => "Fischbach bei Dahn", :area_code => "6393") + AreaCode.create(:country => germany, :name => "Bundenthal", :area_code => "6394") + AreaCode.create(:country => germany, :name => "Münchweiler an der Rodalb", :area_code => "6395") + AreaCode.create(:country => germany, :name => "Hinterweidenthal", :area_code => "6396") + AreaCode.create(:country => germany, :name => "Leimen Pfalz", :area_code => "6397") + AreaCode.create(:country => germany, :name => "Vorderweidenthal", :area_code => "6398") + AreaCode.create(:country => germany, :name => "Mücke", :area_code => "6400") + AreaCode.create(:country => germany, :name => "Grünberg Hess", :area_code => "6401") + AreaCode.create(:country => germany, :name => "Hungen", :area_code => "6402") + AreaCode.create(:country => germany, :name => "Linden Hess", :area_code => "6403") + AreaCode.create(:country => germany, :name => "Lich Hess", :area_code => "6404") + AreaCode.create(:country => germany, :name => "Laubach Hess", :area_code => "6405") + AreaCode.create(:country => germany, :name => "Lollar", :area_code => "6406") + AreaCode.create(:country => germany, :name => "Rabenau Hess", :area_code => "6407") + AreaCode.create(:country => germany, :name => "Buseck", :area_code => "6408") + AreaCode.create(:country => germany, :name => "Biebertal", :area_code => "6409") + AreaCode.create(:country => germany, :name => "Giessen", :area_code => "641") + AreaCode.create(:country => germany, :name => "Lahntal", :area_code => "6420") + AreaCode.create(:country => germany, :name => "Marburg", :area_code => "6421") + AreaCode.create(:country => germany, :name => "Kirchhain", :area_code => "6422") + AreaCode.create(:country => germany, :name => "Wetter Hessen", :area_code => "6423") + AreaCode.create(:country => germany, :name => "Ebsdorfergrund", :area_code => "6424") + AreaCode.create(:country => germany, :name => "Rauschenberg Hess", :area_code => "6425") + AreaCode.create(:country => germany, :name => "Fronhausen", :area_code => "6426") + AreaCode.create(:country => germany, :name => "Cölbe-Schönstadt", :area_code => "6427") + AreaCode.create(:country => germany, :name => "Stadtallendorf", :area_code => "6428") + AreaCode.create(:country => germany, :name => "Schweinsberg Hess", :area_code => "6429") + AreaCode.create(:country => germany, :name => "Hahnstätten", :area_code => "6430") + AreaCode.create(:country => germany, :name => "Limburg a d Lahn", :area_code => "6431") + AreaCode.create(:country => germany, :name => "Diez", :area_code => "6432") + AreaCode.create(:country => germany, :name => "Hadamar", :area_code => "6433") + AreaCode.create(:country => germany, :name => "Bad Camberg", :area_code => "6434") + AreaCode.create(:country => germany, :name => "Wallmerod", :area_code => "6435") + AreaCode.create(:country => germany, :name => "Dornburg Hess", :area_code => "6436") + AreaCode.create(:country => germany, :name => "Hünfelden", :area_code => "6438") + AreaCode.create(:country => germany, :name => "Holzappel", :area_code => "6439") + AreaCode.create(:country => germany, :name => "Kölschhausen", :area_code => "6440") + AreaCode.create(:country => germany, :name => "Wetzlar", :area_code => "6441") + AreaCode.create(:country => germany, :name => "Braunfels", :area_code => "6442") + AreaCode.create(:country => germany, :name => "Ehringshausen Dill", :area_code => "6443") + AreaCode.create(:country => germany, :name => "Bischoffen", :area_code => "6444") + AreaCode.create(:country => germany, :name => "Schöffengrund", :area_code => "6445") + AreaCode.create(:country => germany, :name => "Hohenahr", :area_code => "6446") + AreaCode.create(:country => germany, :name => "Langgöns-Niederkleen", :area_code => "6447") + AreaCode.create(:country => germany, :name => "Ehringshausen-Katzenfurt", :area_code => "6449") + AreaCode.create(:country => germany, :name => "Frankenberg Eder", :area_code => "6451") + AreaCode.create(:country => germany, :name => "Battenberg Eder", :area_code => "6452") + AreaCode.create(:country => germany, :name => "Gemünden Wohra", :area_code => "6453") + AreaCode.create(:country => germany, :name => "Lichtenfels-Sachsenberg", :area_code => "6454") + AreaCode.create(:country => germany, :name => "Frankenau Hess", :area_code => "6455") + AreaCode.create(:country => germany, :name => "Haina Kloster", :area_code => "6456") + AreaCode.create(:country => germany, :name => "Burgwald Eder", :area_code => "6457") + AreaCode.create(:country => germany, :name => "Rosenthal Hess", :area_code => "6458") + AreaCode.create(:country => germany, :name => "Biedenkopf", :area_code => "6461") + AreaCode.create(:country => germany, :name => "Gladenbach", :area_code => "6462") + AreaCode.create(:country => germany, :name => "Angelburg", :area_code => "6464") + AreaCode.create(:country => germany, :name => "Breidenbach b Biedenkopf", :area_code => "6465") + AreaCode.create(:country => germany, :name => "Dautphetal-Friedensdorf", :area_code => "6466") + AreaCode.create(:country => germany, :name => "Hatzfeld Eder", :area_code => "6467") + AreaCode.create(:country => germany, :name => "Dautphetal-Mornshausen", :area_code => "6468") + AreaCode.create(:country => germany, :name => "Weilburg", :area_code => "6471") + AreaCode.create(:country => germany, :name => "Weilmünster", :area_code => "6472") + AreaCode.create(:country => germany, :name => "Leun", :area_code => "6473") + AreaCode.create(:country => germany, :name => "Villmar-Aumenau", :area_code => "6474") + AreaCode.create(:country => germany, :name => "Weilmünster-Wolfenhausen", :area_code => "6475") + AreaCode.create(:country => germany, :name => "Mengerskirchen", :area_code => "6476") + AreaCode.create(:country => germany, :name => "Greifenstein-Nenderoth", :area_code => "6477") + AreaCode.create(:country => germany, :name => "Greifenstein-Ulm", :area_code => "6478") + AreaCode.create(:country => germany, :name => "Waldbrunn Westerwald", :area_code => "6479") + AreaCode.create(:country => germany, :name => "Runkel", :area_code => "6482") + AreaCode.create(:country => germany, :name => "Selters Taunus", :area_code => "6483") + AreaCode.create(:country => germany, :name => "Beselich", :area_code => "6484") + AreaCode.create(:country => germany, :name => "Nentershausen Westerw", :area_code => "6485") + AreaCode.create(:country => germany, :name => "Katzenelnbogen", :area_code => "6486") + AreaCode.create(:country => germany, :name => "Waldrach", :area_code => "6500") + AreaCode.create(:country => germany, :name => "Konz", :area_code => "6501") + AreaCode.create(:country => germany, :name => "Schweich", :area_code => "6502") + AreaCode.create(:country => germany, :name => "Hermeskeil", :area_code => "6503") + AreaCode.create(:country => germany, :name => "Thalfang", :area_code => "6504") + AreaCode.create(:country => germany, :name => "Kordel", :area_code => "6505") + AreaCode.create(:country => germany, :name => "Welschbillig", :area_code => "6506") + AreaCode.create(:country => germany, :name => "Neumagen-Dhron", :area_code => "6507") + AreaCode.create(:country => germany, :name => "Hetzerath Mosel", :area_code => "6508") + AreaCode.create(:country => germany, :name => "Büdlich", :area_code => "6509") + AreaCode.create(:country => germany, :name => "Trier", :area_code => "651") + AreaCode.create(:country => germany, :name => "Mettendorf", :area_code => "6522") + AreaCode.create(:country => germany, :name => "Holsthum", :area_code => "6523") + AreaCode.create(:country => germany, :name => "Rodershausen", :area_code => "6524") + AreaCode.create(:country => germany, :name => "Irrel", :area_code => "6525") + AreaCode.create(:country => germany, :name => "Bollendorf", :area_code => "6526") + AreaCode.create(:country => germany, :name => "Oberweis", :area_code => "6527") + AreaCode.create(:country => germany, :name => "Bernkastel-Kues", :area_code => "6531") + AreaCode.create(:country => germany, :name => "Zeltingen-Rachtig", :area_code => "6532") + AreaCode.create(:country => germany, :name => "Morbach Hunsrück", :area_code => "6533") + AreaCode.create(:country => germany, :name => "Mülheim Mosel", :area_code => "6534") + AreaCode.create(:country => germany, :name => "Osann-Monzel", :area_code => "6535") + AreaCode.create(:country => germany, :name => "Kleinich", :area_code => "6536") + AreaCode.create(:country => germany, :name => "Traben-Trarbach", :area_code => "6541") + AreaCode.create(:country => germany, :name => "Bullay", :area_code => "6542") + AreaCode.create(:country => germany, :name => "Büchenbeuren", :area_code => "6543") + AreaCode.create(:country => germany, :name => "Rhaunen", :area_code => "6544") + AreaCode.create(:country => germany, :name => "Blankenrath", :area_code => "6545") + AreaCode.create(:country => germany, :name => "Irrhausen", :area_code => "6550") + AreaCode.create(:country => germany, :name => "Prüm", :area_code => "6551") + AreaCode.create(:country => germany, :name => "Olzheim", :area_code => "6552") + AreaCode.create(:country => germany, :name => "Schönecken", :area_code => "6553") + AreaCode.create(:country => germany, :name => "Waxweiler", :area_code => "6554") + AreaCode.create(:country => germany, :name => "Bleialf", :area_code => "6555") + AreaCode.create(:country => germany, :name => "Pronsfeld", :area_code => "6556") + AreaCode.create(:country => germany, :name => "Hallschlag", :area_code => "6557") + AreaCode.create(:country => germany, :name => "Büdesheim Eifel", :area_code => "6558") + AreaCode.create(:country => germany, :name => "Leidenborn", :area_code => "6559") + AreaCode.create(:country => germany, :name => "Bitburg", :area_code => "6561") + AreaCode.create(:country => germany, :name => "Speicher", :area_code => "6562") + AreaCode.create(:country => germany, :name => "Kyllburg", :area_code => "6563") + AreaCode.create(:country => germany, :name => "Neuerburg Eifel", :area_code => "6564") + AreaCode.create(:country => germany, :name => "Dudeldorf", :area_code => "6565") + AreaCode.create(:country => germany, :name => "Körperich", :area_code => "6566") + AreaCode.create(:country => germany, :name => "Oberkail", :area_code => "6567") + AreaCode.create(:country => germany, :name => "Wolsfeld", :area_code => "6568") + AreaCode.create(:country => germany, :name => "Bickendorf", :area_code => "6569") + AreaCode.create(:country => germany, :name => "Wittlich", :area_code => "6571") + AreaCode.create(:country => germany, :name => "Manderscheid Eifel", :area_code => "6572") + AreaCode.create(:country => germany, :name => "Gillenfeld", :area_code => "6573") + AreaCode.create(:country => germany, :name => "Hasborn", :area_code => "6574") + AreaCode.create(:country => germany, :name => "Landscheid", :area_code => "6575") + AreaCode.create(:country => germany, :name => "Salmtal", :area_code => "6578") + AreaCode.create(:country => germany, :name => "Zemmer", :area_code => "6580") + AreaCode.create(:country => germany, :name => "Saarburg", :area_code => "6581") + AreaCode.create(:country => germany, :name => "Freudenburg", :area_code => "6582") + AreaCode.create(:country => germany, :name => "Palzem", :area_code => "6583") + AreaCode.create(:country => germany, :name => "Wellen Mosel", :area_code => "6584") + AreaCode.create(:country => germany, :name => "Ralingen", :area_code => "6585") + AreaCode.create(:country => germany, :name => "Beuren Hochwald", :area_code => "6586") + AreaCode.create(:country => germany, :name => "Zerf", :area_code => "6587") + AreaCode.create(:country => germany, :name => "Pluwig", :area_code => "6588") + AreaCode.create(:country => germany, :name => "Kell am See", :area_code => "6589") + AreaCode.create(:country => germany, :name => "Gerolstein", :area_code => "6591") + AreaCode.create(:country => germany, :name => "Daun", :area_code => "6592") + AreaCode.create(:country => germany, :name => "Hillesheim Eifel", :area_code => "6593") + AreaCode.create(:country => germany, :name => "Birresborn", :area_code => "6594") + AreaCode.create(:country => germany, :name => "Dockweiler", :area_code => "6595") + AreaCode.create(:country => germany, :name => "Üdersdorf", :area_code => "6596") + AreaCode.create(:country => germany, :name => "Jünkerath", :area_code => "6597") + AreaCode.create(:country => germany, :name => "Weidenbach b Gerolstein", :area_code => "6599") + AreaCode.create(:country => germany, :name => "Fulda", :area_code => "661") + AreaCode.create(:country => germany, :name => "Philippsthal Werra", :area_code => "6620") + AreaCode.create(:country => germany, :name => "Bad Hersfeld", :area_code => "6621") + AreaCode.create(:country => germany, :name => "Bebra", :area_code => "6622") + AreaCode.create(:country => germany, :name => "Rotenburg a d Fulda", :area_code => "6623") + AreaCode.create(:country => germany, :name => "Heringen Werra", :area_code => "6624") + AreaCode.create(:country => germany, :name => "Niederaula", :area_code => "6625") + AreaCode.create(:country => germany, :name => "Wildeck-Obersuhl", :area_code => "6626") + AreaCode.create(:country => germany, :name => "Nentershausen Hess", :area_code => "6627") + AreaCode.create(:country => germany, :name => "Oberaula", :area_code => "6628") + AreaCode.create(:country => germany, :name => "Schenklengsfeld", :area_code => "6629") + AreaCode.create(:country => germany, :name => "Schwalmtal-Storndorf", :area_code => "6630") + AreaCode.create(:country => germany, :name => "Alsfeld", :area_code => "6631") + AreaCode.create(:country => germany, :name => "Homberg Ohm", :area_code => "6633") + AreaCode.create(:country => germany, :name => "Gemünden Felda", :area_code => "6634") + AreaCode.create(:country => germany, :name => "Kirtorf", :area_code => "6635") + AreaCode.create(:country => germany, :name => "Romrod", :area_code => "6636") + AreaCode.create(:country => germany, :name => "Feldatal", :area_code => "6637") + AreaCode.create(:country => germany, :name => "Schwalmtal-Renzendorf", :area_code => "6638") + AreaCode.create(:country => germany, :name => "Ottrau", :area_code => "6639") + AreaCode.create(:country => germany, :name => "Lauterbach Hessen", :area_code => "6641") + AreaCode.create(:country => germany, :name => "Schlitz", :area_code => "6642") + AreaCode.create(:country => germany, :name => "Herbstein", :area_code => "6643") + AreaCode.create(:country => germany, :name => "Grebenhain", :area_code => "6644") + AreaCode.create(:country => germany, :name => "Ulrichstein", :area_code => "6645") + AreaCode.create(:country => germany, :name => "Grebenau", :area_code => "6646") + AreaCode.create(:country => germany, :name => "Herbstein-Stockhausen", :area_code => "6647") + AreaCode.create(:country => germany, :name => "Bad Salzschlirf", :area_code => "6648") + AreaCode.create(:country => germany, :name => "Hosenfeld", :area_code => "6650") + AreaCode.create(:country => germany, :name => "Rasdorf", :area_code => "6651") + AreaCode.create(:country => germany, :name => "Hünfeld", :area_code => "6652") + AreaCode.create(:country => germany, :name => "Burghaun", :area_code => "6653") + AreaCode.create(:country => germany, :name => "Gersfeld Rhön", :area_code => "6654") + AreaCode.create(:country => germany, :name => "Neuhof Kr Fulda", :area_code => "6655") + AreaCode.create(:country => germany, :name => "Ebersburg", :area_code => "6656") + AreaCode.create(:country => germany, :name => "Hofbieber", :area_code => "6657") + AreaCode.create(:country => germany, :name => "Poppenhausen Wasserkuppe", :area_code => "6658") + AreaCode.create(:country => germany, :name => "Eichenzell", :area_code => "6659") + AreaCode.create(:country => germany, :name => "Steinau-Marjoss", :area_code => "6660") + AreaCode.create(:country => germany, :name => "Schlüchtern", :area_code => "6661") + AreaCode.create(:country => germany, :name => "Steinau an der Straße", :area_code => "6663") + AreaCode.create(:country => germany, :name => "Sinntal-Sterbfritz", :area_code => "6664") + AreaCode.create(:country => germany, :name => "Sinntal-Altengronau", :area_code => "6665") + AreaCode.create(:country => germany, :name => "Freiensteinau", :area_code => "6666") + AreaCode.create(:country => germany, :name => "Steinau-Ulmbach", :area_code => "6667") + AreaCode.create(:country => germany, :name => "Birstein-Lichenroth", :area_code => "6668") + AreaCode.create(:country => germany, :name => "Neuhof-Hauswurz", :area_code => "6669") + AreaCode.create(:country => germany, :name => "Ludwigsau Hess", :area_code => "6670") + AreaCode.create(:country => germany, :name => "Eiterfeld", :area_code => "6672") + AreaCode.create(:country => germany, :name => "Haunetal", :area_code => "6673") + AreaCode.create(:country => germany, :name => "Friedewald Hess", :area_code => "6674") + AreaCode.create(:country => germany, :name => "Breitenbach a Herzberg", :area_code => "6675") + AreaCode.create(:country => germany, :name => "Hohenroda Hess", :area_code => "6676") + AreaCode.create(:country => germany, :name => "Neuenstein Hess", :area_code => "6677") + AreaCode.create(:country => germany, :name => "Wildeck-Hönebach", :area_code => "6678") + AreaCode.create(:country => germany, :name => "Hilders", :area_code => "6681") + AreaCode.create(:country => germany, :name => "Tann Rhön", :area_code => "6682") + AreaCode.create(:country => germany, :name => "Ehrenberg Rhön", :area_code => "6683") + AreaCode.create(:country => germany, :name => "Hofbieber-Schwarzbach", :area_code => "6684") + AreaCode.create(:country => germany, :name => "Schwalmstadt", :area_code => "6691") + AreaCode.create(:country => germany, :name => "Neustadt Hessen", :area_code => "6692") + AreaCode.create(:country => germany, :name => "Neuental", :area_code => "6693") + AreaCode.create(:country => germany, :name => "Neukirchen Knüll", :area_code => "6694") + AreaCode.create(:country => germany, :name => "Jesberg", :area_code => "6695") + AreaCode.create(:country => germany, :name => "Gilserberg", :area_code => "6696") + AreaCode.create(:country => germany, :name => "Willingshausen", :area_code => "6697") + AreaCode.create(:country => germany, :name => "Schrecksbach", :area_code => "6698") + AreaCode.create(:country => germany, :name => "Sprendlingen Rheinhess", :area_code => "6701") + AreaCode.create(:country => germany, :name => "Wöllstein Rheinhess", :area_code => "6703") + AreaCode.create(:country => germany, :name => "Langenlonsheim", :area_code => "6704") + AreaCode.create(:country => germany, :name => "Wallhausen Nahe", :area_code => "6706") + AreaCode.create(:country => germany, :name => "Windesheim", :area_code => "6707") + AreaCode.create(:country => germany, :name => "Bad Münster am Stein-Ebernburg", :area_code => "6708") + AreaCode.create(:country => germany, :name => "Fürfeld Kr Bad Kreuznach", :area_code => "6709") + AreaCode.create(:country => germany, :name => "Bad Kreuznach", :area_code => "671") + AreaCode.create(:country => germany, :name => "Bingen am Rhein", :area_code => "6721") + AreaCode.create(:country => germany, :name => "Rüdesheim am Rhein", :area_code => "6722") + AreaCode.create(:country => germany, :name => "Oestrich-Winkel", :area_code => "6723") + AreaCode.create(:country => germany, :name => "Stromberg Hunsrück", :area_code => "6724") + AreaCode.create(:country => germany, :name => "Gau-Algesheim", :area_code => "6725") + AreaCode.create(:country => germany, :name => "Lorch Rheingau", :area_code => "6726") + AreaCode.create(:country => germany, :name => "Gensingen", :area_code => "6727") + AreaCode.create(:country => germany, :name => "Ober-Hilbersheim", :area_code => "6728") + AreaCode.create(:country => germany, :name => "Alzey", :area_code => "6731") + AreaCode.create(:country => germany, :name => "Wörrstadt", :area_code => "6732") + AreaCode.create(:country => germany, :name => "Gau-Odernheim", :area_code => "6733") + AreaCode.create(:country => germany, :name => "Flonheim", :area_code => "6734") + AreaCode.create(:country => germany, :name => "Eppelsheim", :area_code => "6735") + AreaCode.create(:country => germany, :name => "Bechenheim", :area_code => "6736") + AreaCode.create(:country => germany, :name => "Köngernheim", :area_code => "6737") + AreaCode.create(:country => germany, :name => "St Goar", :area_code => "6741") + AreaCode.create(:country => germany, :name => "Boppard", :area_code => "6742") + AreaCode.create(:country => germany, :name => "Bacharach", :area_code => "6743") + AreaCode.create(:country => germany, :name => "Oberwesel", :area_code => "6744") + AreaCode.create(:country => germany, :name => "Gondershausen", :area_code => "6745") + AreaCode.create(:country => germany, :name => "Pfalzfeld", :area_code => "6746") + AreaCode.create(:country => germany, :name => "Emmelshausen", :area_code => "6747") + AreaCode.create(:country => germany, :name => "Bad Sobernheim", :area_code => "6751") + AreaCode.create(:country => germany, :name => "Kirn Nahe", :area_code => "6752") + AreaCode.create(:country => germany, :name => "Meisenheim", :area_code => "6753") + AreaCode.create(:country => germany, :name => "Martinstein", :area_code => "6754") + AreaCode.create(:country => germany, :name => "Odernheim am Glan", :area_code => "6755") + AreaCode.create(:country => germany, :name => "Winterbach Soonwald", :area_code => "6756") + AreaCode.create(:country => germany, :name => "Becherbach bei Kirn", :area_code => "6757") + AreaCode.create(:country => germany, :name => "Waldböckelheim", :area_code => "6758") + AreaCode.create(:country => germany, :name => "Simmern Hunsrück", :area_code => "6761") + AreaCode.create(:country => germany, :name => "Kastellaun", :area_code => "6762") + AreaCode.create(:country => germany, :name => "Kirchberg Hunsrück", :area_code => "6763") + AreaCode.create(:country => germany, :name => "Rheinböllen", :area_code => "6764") + AreaCode.create(:country => germany, :name => "Gemünden Hunsrück", :area_code => "6765") + AreaCode.create(:country => germany, :name => "Kisselbach", :area_code => "6766") + AreaCode.create(:country => germany, :name => "St Goarshausen", :area_code => "6771") + AreaCode.create(:country => germany, :name => "Nastätten", :area_code => "6772") + AreaCode.create(:country => germany, :name => "Kamp-Bornhofen", :area_code => "6773") + AreaCode.create(:country => germany, :name => "Kaub", :area_code => "6774") + AreaCode.create(:country => germany, :name => "Strüth Taunus", :area_code => "6775") + AreaCode.create(:country => germany, :name => "Dachsenhausen", :area_code => "6776") + AreaCode.create(:country => germany, :name => "Idar-Oberstein", :area_code => "6781") + AreaCode.create(:country => germany, :name => "Birkenfeld Nahe", :area_code => "6782") + AreaCode.create(:country => germany, :name => "Baumholder", :area_code => "6783") + AreaCode.create(:country => germany, :name => "Weierbach", :area_code => "6784") + AreaCode.create(:country => germany, :name => "Herrstein", :area_code => "6785") + AreaCode.create(:country => germany, :name => "Kempfeld", :area_code => "6786") + AreaCode.create(:country => germany, :name => "Niederbrombach", :area_code => "6787") + AreaCode.create(:country => germany, :name => "Sien", :area_code => "6788") + AreaCode.create(:country => germany, :name => "Heimbach Nahe", :area_code => "6789") + AreaCode.create(:country => germany, :name => "Völklingen-Lauterbach", :area_code => "6802") + AreaCode.create(:country => germany, :name => "Mandelbachtal-Ommersheim", :area_code => "6803") + AreaCode.create(:country => germany, :name => "Mandelbachtal", :area_code => "6804") + AreaCode.create(:country => germany, :name => "Kleinblittersdorf", :area_code => "6805") + AreaCode.create(:country => germany, :name => "Heusweiler", :area_code => "6806") + AreaCode.create(:country => germany, :name => "Grossrosseln", :area_code => "6809") + AreaCode.create(:country => germany, :name => "Saarbrücken", :area_code => "681") + AreaCode.create(:country => germany, :name => "Neunkirchen Saar", :area_code => "6821") + AreaCode.create(:country => germany, :name => "Ottweiler", :area_code => "6824") + AreaCode.create(:country => germany, :name => "Illingen Saar", :area_code => "6825") + AreaCode.create(:country => germany, :name => "Bexbach", :area_code => "6826") + AreaCode.create(:country => germany, :name => "Eppelborn", :area_code => "6827") + AreaCode.create(:country => germany, :name => "Saarlouis", :area_code => "6831") + AreaCode.create(:country => germany, :name => "Beckingen-Reimsbach", :area_code => "6832") + AreaCode.create(:country => germany, :name => "Rehlingen-Siersburg", :area_code => "6833") + AreaCode.create(:country => germany, :name => "Bous", :area_code => "6834") + AreaCode.create(:country => germany, :name => "Beckingen", :area_code => "6835") + AreaCode.create(:country => germany, :name => "Überherrn", :area_code => "6836") + AreaCode.create(:country => germany, :name => "Wallerfangen", :area_code => "6837") + AreaCode.create(:country => germany, :name => "Saarwellingen", :area_code => "6838") + AreaCode.create(:country => germany, :name => "Homburg Saar", :area_code => "6841") + AreaCode.create(:country => germany, :name => "Blieskastel", :area_code => "6842") + AreaCode.create(:country => germany, :name => "Gersheim", :area_code => "6843") + AreaCode.create(:country => germany, :name => "Blieskastel-Altheim", :area_code => "6844") + AreaCode.create(:country => germany, :name => "Homburg-Einöd", :area_code => "6848") + AreaCode.create(:country => germany, :name => "Kirkel", :area_code => "6849") + AreaCode.create(:country => germany, :name => "St Wendel", :area_code => "6851") + AreaCode.create(:country => germany, :name => "Nohfelden", :area_code => "6852") + AreaCode.create(:country => germany, :name => "Marpingen", :area_code => "6853") + AreaCode.create(:country => germany, :name => "Oberthal Saar", :area_code => "6854") + AreaCode.create(:country => germany, :name => "Freisen", :area_code => "6855") + AreaCode.create(:country => germany, :name => "St Wendel-Niederkirchen", :area_code => "6856") + AreaCode.create(:country => germany, :name => "Namborn", :area_code => "6857") + AreaCode.create(:country => germany, :name => "Ottweiler-Fürth", :area_code => "6858") + AreaCode.create(:country => germany, :name => "Merzig", :area_code => "6861") + AreaCode.create(:country => germany, :name => "Mettlach", :area_code => "6864") + AreaCode.create(:country => germany, :name => "Mettlach-Orscholz", :area_code => "6865") + AreaCode.create(:country => germany, :name => "Perl-Nennig", :area_code => "6866") + AreaCode.create(:country => germany, :name => "Perl", :area_code => "6867") + AreaCode.create(:country => germany, :name => "Mettlach-Tünsdorf", :area_code => "6868") + AreaCode.create(:country => germany, :name => "Merzig-Silwingen", :area_code => "6869") + AreaCode.create(:country => germany, :name => "Wadern", :area_code => "6871") + AreaCode.create(:country => germany, :name => "Losheim am See", :area_code => "6872") + AreaCode.create(:country => germany, :name => "Nonnweiler", :area_code => "6873") + AreaCode.create(:country => germany, :name => "Wadern-Nunkirchen", :area_code => "6874") + AreaCode.create(:country => germany, :name => "Nonnweiler-Primstal", :area_code => "6875") + AreaCode.create(:country => germany, :name => "Weiskirchen Saar", :area_code => "6876") + AreaCode.create(:country => germany, :name => "Lebach", :area_code => "6881") + AreaCode.create(:country => germany, :name => "Schmelz Saar", :area_code => "6887") + AreaCode.create(:country => germany, :name => "Lebach-Steinbach", :area_code => "6888") + AreaCode.create(:country => germany, :name => "Saarbrücken-Ensheim", :area_code => "6893") + AreaCode.create(:country => germany, :name => "St Ingbert", :area_code => "6894") + AreaCode.create(:country => germany, :name => "Sulzbach Saar", :area_code => "6897") + AreaCode.create(:country => germany, :name => "Völklingen", :area_code => "6898") + AreaCode.create(:country => germany, :name => "Frankfurt am Main", :area_code => "69") + AreaCode.create(:country => germany, :name => "Kirchheim unter Teck", :area_code => "7021") + AreaCode.create(:country => germany, :name => "Nürtingen", :area_code => "7022") + AreaCode.create(:country => germany, :name => "Weilheim an der Teck", :area_code => "7023") + AreaCode.create(:country => germany, :name => "Wendlingen am Neckar", :area_code => "7024") + AreaCode.create(:country => germany, :name => "Neuffen", :area_code => "7025") + AreaCode.create(:country => germany, :name => "Lenningen", :area_code => "7026") + AreaCode.create(:country => germany, :name => "Böblingen", :area_code => "7031") + AreaCode.create(:country => germany, :name => "Herrenberg", :area_code => "7032") + AreaCode.create(:country => germany, :name => "Weil Der Stadt", :area_code => "7033") + AreaCode.create(:country => germany, :name => "Ehningen", :area_code => "7034") + AreaCode.create(:country => germany, :name => "Mühlacker", :area_code => "7041") + AreaCode.create(:country => germany, :name => "Vaihingen an der Enz", :area_code => "7042") + AreaCode.create(:country => germany, :name => "Maulbronn", :area_code => "7043") + AreaCode.create(:country => germany, :name => "Mönsheim", :area_code => "7044") + AreaCode.create(:country => germany, :name => "Oberderdingen", :area_code => "7045") + AreaCode.create(:country => germany, :name => "Zaberfeld", :area_code => "7046") + AreaCode.create(:country => germany, :name => "Calw", :area_code => "7051") + AreaCode.create(:country => germany, :name => "Bad Liebenzell", :area_code => "7052") + AreaCode.create(:country => germany, :name => "Bad Teinach-Zavelstein", :area_code => "7053") + AreaCode.create(:country => germany, :name => "Wildberg Württ", :area_code => "7054") + AreaCode.create(:country => germany, :name => "Neuweiler Kr Calw", :area_code => "7055") + AreaCode.create(:country => germany, :name => "Gechingen", :area_code => "7056") + AreaCode.create(:country => germany, :name => "Beilstein Württ", :area_code => "7062") + AreaCode.create(:country => germany, :name => "Bad Wimpfen", :area_code => "7063") + AreaCode.create(:country => germany, :name => "Bad Rappenau-Bonfeld", :area_code => "7066") + AreaCode.create(:country => germany, :name => "Tübingen", :area_code => "7071") + AreaCode.create(:country => germany, :name => "Gomaringen", :area_code => "7072") + AreaCode.create(:country => germany, :name => "Ammerbuch", :area_code => "7073") + AreaCode.create(:country => germany, :name => "Bad Wildbad", :area_code => "7081") + AreaCode.create(:country => germany, :name => "Neuenbürg Württ", :area_code => "7082") + AreaCode.create(:country => germany, :name => "Bad Herrenalb", :area_code => "7083") + AreaCode.create(:country => germany, :name => "Schömberg b Neuenbürg", :area_code => "7084") + AreaCode.create(:country => germany, :name => "Enzklösterle", :area_code => "7085") + AreaCode.create(:country => germany, :name => "Stuttgart", :area_code => "711") + AreaCode.create(:country => germany, :name => "Reutlingen", :area_code => "7121") + AreaCode.create(:country => germany, :name => "St Johann Württ", :area_code => "7122") + AreaCode.create(:country => germany, :name => "Metzingen Württ", :area_code => "7123") + AreaCode.create(:country => germany, :name => "Trochtelfingen Hohenz", :area_code => "7124") + AreaCode.create(:country => germany, :name => "Bad Urach", :area_code => "7125") + AreaCode.create(:country => germany, :name => "Burladingen-Melchingen", :area_code => "7126") + AreaCode.create(:country => germany, :name => "Neckartenzlingen", :area_code => "7127") + AreaCode.create(:country => germany, :name => "Sonnenbühl", :area_code => "7128") + AreaCode.create(:country => germany, :name => "Lichtenstein Württ", :area_code => "7129") + AreaCode.create(:country => germany, :name => "Löwenstein Württ", :area_code => "7130") + AreaCode.create(:country => germany, :name => "Heilbronn Neckar", :area_code => "7131") + AreaCode.create(:country => germany, :name => "Neckarsulm", :area_code => "7132") + AreaCode.create(:country => germany, :name => "Lauffen am Neckar", :area_code => "7133") + AreaCode.create(:country => germany, :name => "Weinsberg", :area_code => "7134") + AreaCode.create(:country => germany, :name => "Brackenheim", :area_code => "7135") + AreaCode.create(:country => germany, :name => "Bad Friedrichshall", :area_code => "7136") + AreaCode.create(:country => germany, :name => "Schwaigern", :area_code => "7138") + AreaCode.create(:country => germany, :name => "Neuenstadt am Kocher", :area_code => "7139") + AreaCode.create(:country => germany, :name => "Ludwigsburg Württ", :area_code => "7141") + AreaCode.create(:country => germany, :name => "Bietigheim-Bissingen", :area_code => "7142") + AreaCode.create(:country => germany, :name => "Besigheim", :area_code => "7143") + AreaCode.create(:country => germany, :name => "Marbach am Neckar", :area_code => "7144") + AreaCode.create(:country => germany, :name => "Markgröningen", :area_code => "7145") + AreaCode.create(:country => germany, :name => "Remseck am Neckar", :area_code => "7146") + AreaCode.create(:country => germany, :name => "Sachsenheim Württ", :area_code => "7147") + AreaCode.create(:country => germany, :name => "Grossbottwar", :area_code => "7148") + AreaCode.create(:country => germany, :name => "Korntal-Münchingen", :area_code => "7150") + AreaCode.create(:country => germany, :name => "Waiblingen", :area_code => "7151") + AreaCode.create(:country => germany, :name => "Leonberg Württ", :area_code => "7152") + AreaCode.create(:country => germany, :name => "Plochingen", :area_code => "7153") + AreaCode.create(:country => germany, :name => "Kornwestheim", :area_code => "7154") + AreaCode.create(:country => germany, :name => "Ditzingen", :area_code => "7156") + AreaCode.create(:country => germany, :name => "Waldenbuch", :area_code => "7157") + AreaCode.create(:country => germany, :name => "Neuhausen auf den Fildern", :area_code => "7158") + AreaCode.create(:country => germany, :name => "Renningen", :area_code => "7159") + AreaCode.create(:country => germany, :name => "Göppingen", :area_code => "7161") + AreaCode.create(:country => germany, :name => "Süßen", :area_code => "7162") + AreaCode.create(:country => germany, :name => "Ebersbach an der Fils", :area_code => "7163") + AreaCode.create(:country => germany, :name => "Boll Kr Göppingen", :area_code => "7164") + AreaCode.create(:country => germany, :name => "Göppingen-Hohenstaufen", :area_code => "7165") + AreaCode.create(:country => germany, :name => "Adelberg", :area_code => "7166") + AreaCode.create(:country => germany, :name => "Schwäbisch Gmünd", :area_code => "7171") + AreaCode.create(:country => germany, :name => "Lorch Württ", :area_code => "7172") + AreaCode.create(:country => germany, :name => "Heubach", :area_code => "7173") + AreaCode.create(:country => germany, :name => "Mögglingen", :area_code => "7174") + AreaCode.create(:country => germany, :name => "Leinzell", :area_code => "7175") + AreaCode.create(:country => germany, :name => "Spraitbach", :area_code => "7176") + AreaCode.create(:country => germany, :name => "Schorndorf Württ", :area_code => "7181") + AreaCode.create(:country => germany, :name => "Welzheim", :area_code => "7182") + AreaCode.create(:country => germany, :name => "Rudersberg Württ", :area_code => "7183") + AreaCode.create(:country => germany, :name => "Kaisersbach", :area_code => "7184") + AreaCode.create(:country => germany, :name => "Backnang", :area_code => "7191") + AreaCode.create(:country => germany, :name => "Murrhardt", :area_code => "7192") + AreaCode.create(:country => germany, :name => "Sulzbach an der Murr", :area_code => "7193") + AreaCode.create(:country => germany, :name => "Spiegelberg", :area_code => "7194") + AreaCode.create(:country => germany, :name => "Winnenden", :area_code => "7195") + AreaCode.create(:country => germany, :name => "Karlsbad", :area_code => "7202") + AreaCode.create(:country => germany, :name => "Walzbachtal", :area_code => "7203") + AreaCode.create(:country => germany, :name => "Malsch-Völkersbach", :area_code => "7204") + AreaCode.create(:country => germany, :name => "Karlsruhe", :area_code => "721") + AreaCode.create(:country => germany, :name => "Forbach-Hundsbach", :area_code => "7220") + AreaCode.create(:country => germany, :name => "Baden-Baden", :area_code => "7221") + AreaCode.create(:country => germany, :name => "Rastatt", :area_code => "7222") + AreaCode.create(:country => germany, :name => "Bühl Baden", :area_code => "7223") + AreaCode.create(:country => germany, :name => "Gernsbach", :area_code => "7224") + AreaCode.create(:country => germany, :name => "Gaggenau", :area_code => "7225") + AreaCode.create(:country => germany, :name => "Bühl-Sand", :area_code => "7226") + AreaCode.create(:country => germany, :name => "Lichtenau Baden", :area_code => "7227") + AreaCode.create(:country => germany, :name => "Forbach", :area_code => "7228") + AreaCode.create(:country => germany, :name => "Iffezheim", :area_code => "7229") + AreaCode.create(:country => germany, :name => "Pforzheim", :area_code => "7231") + AreaCode.create(:country => germany, :name => "Königsbach-Stein", :area_code => "7232") + AreaCode.create(:country => germany, :name => "Niefern-Öschelbronn", :area_code => "7233") + AreaCode.create(:country => germany, :name => "Tiefenbronn", :area_code => "7234") + AreaCode.create(:country => germany, :name => "Unterreichenbach Kr Calw", :area_code => "7235") + AreaCode.create(:country => germany, :name => "Keltern", :area_code => "7236") + AreaCode.create(:country => germany, :name => "Neulingen Enzkreis", :area_code => "7237") + AreaCode.create(:country => germany, :name => "Pfinztal", :area_code => "7240") + AreaCode.create(:country => germany, :name => "Rheinstetten", :area_code => "7242") + AreaCode.create(:country => germany, :name => "Ettlingen", :area_code => "7243") + AreaCode.create(:country => germany, :name => "Weingarten Baden", :area_code => "7244") + AreaCode.create(:country => germany, :name => "Durmersheim", :area_code => "7245") + AreaCode.create(:country => germany, :name => "Malsch Kr Karlsruhe", :area_code => "7246") + AreaCode.create(:country => germany, :name => "Linkenheim-Hochstetten", :area_code => "7247") + AreaCode.create(:country => germany, :name => "Marxzell", :area_code => "7248") + AreaCode.create(:country => germany, :name => "Stutensee", :area_code => "7249") + AreaCode.create(:country => germany, :name => "Kraichtal", :area_code => "7250") + AreaCode.create(:country => germany, :name => "Bruchsal", :area_code => "7251") + AreaCode.create(:country => germany, :name => "Bretten", :area_code => "7252") + AreaCode.create(:country => germany, :name => "Bad Schönborn", :area_code => "7253") + AreaCode.create(:country => germany, :name => "Waghäusel", :area_code => "7254") + AreaCode.create(:country => germany, :name => "Graben-Neudorf", :area_code => "7255") + AreaCode.create(:country => germany, :name => "Philippsburg", :area_code => "7256") + AreaCode.create(:country => germany, :name => "Bruchsal-Untergrombach", :area_code => "7257") + AreaCode.create(:country => germany, :name => "Oberderdingen-Flehingen", :area_code => "7258") + AreaCode.create(:country => germany, :name => "Östringen-Odenheim", :area_code => "7259") + AreaCode.create(:country => germany, :name => "Sinsheim-Hilsbach", :area_code => "7260") + AreaCode.create(:country => germany, :name => "Sinsheim", :area_code => "7261") + AreaCode.create(:country => germany, :name => "Eppingen", :area_code => "7262") + AreaCode.create(:country => germany, :name => "Waibstadt", :area_code => "7263") + AreaCode.create(:country => germany, :name => "Bad Rappenau", :area_code => "7264") + AreaCode.create(:country => germany, :name => "Angelbachtal", :area_code => "7265") + AreaCode.create(:country => germany, :name => "Kirchardt", :area_code => "7266") + AreaCode.create(:country => germany, :name => "Gemmingen", :area_code => "7267") + AreaCode.create(:country => germany, :name => "Bad Rappenau-Obergimpern", :area_code => "7268") + AreaCode.create(:country => germany, :name => "Sulzfeld Baden", :area_code => "7269") + AreaCode.create(:country => germany, :name => "Wörth am Rhein", :area_code => "7271") + AreaCode.create(:country => germany, :name => "Rülzheim", :area_code => "7272") + AreaCode.create(:country => germany, :name => "Hagenbach Pfalz", :area_code => "7273") + AreaCode.create(:country => germany, :name => "Germersheim", :area_code => "7274") + AreaCode.create(:country => germany, :name => "Kandel", :area_code => "7275") + AreaCode.create(:country => germany, :name => "Herxheim bei Landau Pfalz", :area_code => "7276") + AreaCode.create(:country => germany, :name => "Wörth-Büchelberg", :area_code => "7277") + AreaCode.create(:country => germany, :name => "Roggenburg", :area_code => "7300") + AreaCode.create(:country => germany, :name => "Pfaffenhofen a d Roth", :area_code => "7302") + AreaCode.create(:country => germany, :name => "Illertissen", :area_code => "7303") + AreaCode.create(:country => germany, :name => "Blaustein Württ", :area_code => "7304") + AreaCode.create(:country => germany, :name => "Erbach Donau", :area_code => "7305") + AreaCode.create(:country => germany, :name => "Vöhringen Iller", :area_code => "7306") + AreaCode.create(:country => germany, :name => "Senden Iller", :area_code => "7307") + AreaCode.create(:country => germany, :name => "Nersingen", :area_code => "7308") + AreaCode.create(:country => germany, :name => "Weissenhorn", :area_code => "7309") + AreaCode.create(:country => germany, :name => "Ulm Donau", :area_code => "731") + AreaCode.create(:country => germany, :name => "Heidenheim a d Brenz", :area_code => "7321") + AreaCode.create(:country => germany, :name => "Giengen a d Brenz", :area_code => "7322") + AreaCode.create(:country => germany, :name => "Gerstetten", :area_code => "7323") + AreaCode.create(:country => germany, :name => "Herbrechtingen", :area_code => "7324") + AreaCode.create(:country => germany, :name => "Sontheim a d Brenz", :area_code => "7325") + AreaCode.create(:country => germany, :name => "Neresheim", :area_code => "7326") + AreaCode.create(:country => germany, :name => "Dischingen", :area_code => "7327") + AreaCode.create(:country => germany, :name => "Königsbronn", :area_code => "7328") + AreaCode.create(:country => germany, :name => "Steinheim am Albuch", :area_code => "7329") + AreaCode.create(:country => germany, :name => "Geislingen an der Steige", :area_code => "7331") + AreaCode.create(:country => germany, :name => "Lauterstein", :area_code => "7332") + AreaCode.create(:country => germany, :name => "Laichingen", :area_code => "7333") + AreaCode.create(:country => germany, :name => "Deggingen", :area_code => "7334") + AreaCode.create(:country => germany, :name => "Wiesensteig", :area_code => "7335") + AreaCode.create(:country => germany, :name => "Lonsee", :area_code => "7336") + AreaCode.create(:country => germany, :name => "Nellingen Alb", :area_code => "7337") + AreaCode.create(:country => germany, :name => "Neenstetten", :area_code => "7340") + AreaCode.create(:country => germany, :name => "Buch b Illertissen", :area_code => "7343") + AreaCode.create(:country => germany, :name => "Blaubeuren", :area_code => "7344") + AreaCode.create(:country => germany, :name => "Langenau Württ", :area_code => "7345") + AreaCode.create(:country => germany, :name => "Illerkirchberg", :area_code => "7346") + AreaCode.create(:country => germany, :name => "Dietenheim", :area_code => "7347") + AreaCode.create(:country => germany, :name => "Beimerstetten", :area_code => "7348") + AreaCode.create(:country => germany, :name => "Biberach an der Riß", :area_code => "7351") + AreaCode.create(:country => germany, :name => "Ochsenhausen", :area_code => "7352") + AreaCode.create(:country => germany, :name => "Schwendi", :area_code => "7353") + AreaCode.create(:country => germany, :name => "Erolzheim", :area_code => "7354") + AreaCode.create(:country => germany, :name => "Hochdorf Riß", :area_code => "7355") + AreaCode.create(:country => germany, :name => "Schemmerhofen", :area_code => "7356") + AreaCode.create(:country => germany, :name => "Attenweiler", :area_code => "7357") + AreaCode.create(:country => germany, :name => "Eberhardzell-Füramoos", :area_code => "7358") + AreaCode.create(:country => germany, :name => "Aalen", :area_code => "7361") + AreaCode.create(:country => germany, :name => "Bopfingen", :area_code => "7362") + AreaCode.create(:country => germany, :name => "Lauchheim", :area_code => "7363") + AreaCode.create(:country => germany, :name => "Oberkochen", :area_code => "7364") + AreaCode.create(:country => germany, :name => "Essingen Württ", :area_code => "7365") + AreaCode.create(:country => germany, :name => "Abtsgmünd", :area_code => "7366") + AreaCode.create(:country => germany, :name => "Aalen-Ebnat", :area_code => "7367") + AreaCode.create(:country => germany, :name => "Riedlingen Württ", :area_code => "7371") + AreaCode.create(:country => germany, :name => "Zwiefalten", :area_code => "7373") + AreaCode.create(:country => germany, :name => "Uttenweiler", :area_code => "7374") + AreaCode.create(:country => germany, :name => "Obermarchtal", :area_code => "7375") + AreaCode.create(:country => germany, :name => "Langenenslingen", :area_code => "7376") + AreaCode.create(:country => germany, :name => "Münsingen", :area_code => "7381") + AreaCode.create(:country => germany, :name => "Römerstein", :area_code => "7382") + AreaCode.create(:country => germany, :name => "Münsingen-Buttenhausen", :area_code => "7383") + AreaCode.create(:country => germany, :name => "Schelklingen-Hütten", :area_code => "7384") + AreaCode.create(:country => germany, :name => "Gomadingen", :area_code => "7385") + AreaCode.create(:country => germany, :name => "Hayingen", :area_code => "7386") + AreaCode.create(:country => germany, :name => "Hohenstein Württ", :area_code => "7387") + AreaCode.create(:country => germany, :name => "Pfronstetten", :area_code => "7388") + AreaCode.create(:country => germany, :name => "Heroldstatt", :area_code => "7389") + AreaCode.create(:country => germany, :name => "Ehingen Donau", :area_code => "7391") + AreaCode.create(:country => germany, :name => "Laupheim", :area_code => "7392") + AreaCode.create(:country => germany, :name => "Munderkingen", :area_code => "7393") + AreaCode.create(:country => germany, :name => "Schelklingen", :area_code => "7394") + AreaCode.create(:country => germany, :name => "Ehingen-Dächingen", :area_code => "7395") + AreaCode.create(:country => germany, :name => "Fluorn-Winzeln", :area_code => "7402") + AreaCode.create(:country => germany, :name => "Dunningen", :area_code => "7403") + AreaCode.create(:country => germany, :name => "Epfendorf", :area_code => "7404") + AreaCode.create(:country => germany, :name => "Rottweil", :area_code => "741") + AreaCode.create(:country => germany, :name => "Deisslingen", :area_code => "7420") + AreaCode.create(:country => germany, :name => "Schramberg", :area_code => "7422") + AreaCode.create(:country => germany, :name => "Oberndorf am Neckar", :area_code => "7423") + AreaCode.create(:country => germany, :name => "Spaichingen", :area_code => "7424") + AreaCode.create(:country => germany, :name => "Trossingen", :area_code => "7425") + AreaCode.create(:country => germany, :name => "Gosheim", :area_code => "7426") + AreaCode.create(:country => germany, :name => "Schömberg b Balingen", :area_code => "7427") + AreaCode.create(:country => germany, :name => "Rosenfeld", :area_code => "7428") + AreaCode.create(:country => germany, :name => "Egesheim", :area_code => "7429") + AreaCode.create(:country => germany, :name => "Albstadt-Ebingen", :area_code => "7431") + AreaCode.create(:country => germany, :name => "Albstadt-Tailfingen", :area_code => "7432") + AreaCode.create(:country => germany, :name => "Balingen", :area_code => "7433") + AreaCode.create(:country => germany, :name => "Winterlingen", :area_code => "7434") + AreaCode.create(:country => germany, :name => "Albstadt-Laufen", :area_code => "7435") + AreaCode.create(:country => germany, :name => "Messstetten-Oberdigisheim", :area_code => "7436") + AreaCode.create(:country => germany, :name => "Bad Rippoldsau", :area_code => "7440") + AreaCode.create(:country => germany, :name => "Freudenstadt", :area_code => "7441") + AreaCode.create(:country => germany, :name => "Baiersbronn", :area_code => "7442") + AreaCode.create(:country => germany, :name => "Dornstetten", :area_code => "7443") + AreaCode.create(:country => germany, :name => "Alpirsbach", :area_code => "7444") + AreaCode.create(:country => germany, :name => "Pfalzgrafenweiler", :area_code => "7445") + AreaCode.create(:country => germany, :name => "Lossburg", :area_code => "7446") + AreaCode.create(:country => germany, :name => "Baiersbronn-Schwarzenberg", :area_code => "7447") + AreaCode.create(:country => germany, :name => "Seewald", :area_code => "7448") + AreaCode.create(:country => germany, :name => "Baiersbronn-Obertal", :area_code => "7449") + AreaCode.create(:country => germany, :name => "Horb am Neckar", :area_code => "7451") + AreaCode.create(:country => germany, :name => "Nagold", :area_code => "7452") + AreaCode.create(:country => germany, :name => "Altensteig Württ", :area_code => "7453") + AreaCode.create(:country => germany, :name => "Sulz am Neckar", :area_code => "7454") + AreaCode.create(:country => germany, :name => "Dornhan", :area_code => "7455") + AreaCode.create(:country => germany, :name => "Haiterbach", :area_code => "7456") + AreaCode.create(:country => germany, :name => "Rottenburg-Ergenzingen", :area_code => "7457") + AreaCode.create(:country => germany, :name => "Ebhausen", :area_code => "7458") + AreaCode.create(:country => germany, :name => "Nagold-Hochdorf", :area_code => "7459") + AreaCode.create(:country => germany, :name => "Tuttlingen", :area_code => "7461") + AreaCode.create(:country => germany, :name => "Immendingen", :area_code => "7462") + AreaCode.create(:country => germany, :name => "Mühlheim an der Donau", :area_code => "7463") + AreaCode.create(:country => germany, :name => "Talheim Kr Tuttlingen", :area_code => "7464") + AreaCode.create(:country => germany, :name => "Emmingen-Liptingen", :area_code => "7465") + AreaCode.create(:country => germany, :name => "Beuron", :area_code => "7466") + AreaCode.create(:country => germany, :name => "Neuhausen ob Eck", :area_code => "7467") + AreaCode.create(:country => germany, :name => "Hechingen", :area_code => "7471") + AreaCode.create(:country => germany, :name => "Rottenburg am Neckar", :area_code => "7472") + AreaCode.create(:country => germany, :name => "Mössingen", :area_code => "7473") + AreaCode.create(:country => germany, :name => "Haigerloch", :area_code => "7474") + AreaCode.create(:country => germany, :name => "Burladingen", :area_code => "7475") + AreaCode.create(:country => germany, :name => "Bisingen", :area_code => "7476") + AreaCode.create(:country => germany, :name => "Jungingen b Hechingen", :area_code => "7477") + AreaCode.create(:country => germany, :name => "Hirrlingen", :area_code => "7478") + AreaCode.create(:country => germany, :name => "Horb-Dettingen", :area_code => "7482") + AreaCode.create(:country => germany, :name => "Horb-Mühringen", :area_code => "7483") + AreaCode.create(:country => germany, :name => "Simmersfeld", :area_code => "7484") + AreaCode.create(:country => germany, :name => "Empfingen", :area_code => "7485") + AreaCode.create(:country => germany, :name => "Horb-Altheim", :area_code => "7486") + AreaCode.create(:country => germany, :name => "Wolpertswende", :area_code => "7502") + AreaCode.create(:country => germany, :name => "Wilhelmsdorf Württ", :area_code => "7503") + AreaCode.create(:country => germany, :name => "Horgenzell", :area_code => "7504") + AreaCode.create(:country => germany, :name => "Fronreute", :area_code => "7505") + AreaCode.create(:country => germany, :name => "Wangen-Leupolz", :area_code => "7506") + AreaCode.create(:country => germany, :name => "Ravensburg", :area_code => "751") + AreaCode.create(:country => germany, :name => "Bodnegg", :area_code => "7520") + AreaCode.create(:country => germany, :name => "Wangen im Allgäu", :area_code => "7522") + AreaCode.create(:country => germany, :name => "Bad Waldsee", :area_code => "7524") + AreaCode.create(:country => germany, :name => "Aulendorf", :area_code => "7525") + AreaCode.create(:country => germany, :name => "Wolfegg", :area_code => "7527") + AreaCode.create(:country => germany, :name => "Neukirch b Tettnang", :area_code => "7528") + AreaCode.create(:country => germany, :name => "Waldburg Württ", :area_code => "7529") + AreaCode.create(:country => germany, :name => "Konstanz", :area_code => "7531") + AreaCode.create(:country => germany, :name => "Meersburg", :area_code => "7532") + AreaCode.create(:country => germany, :name => "Allensbach", :area_code => "7533") + AreaCode.create(:country => germany, :name => "Reichenau Baden", :area_code => "7534") + AreaCode.create(:country => germany, :name => "Friedrichshafen", :area_code => "7541") + AreaCode.create(:country => germany, :name => "Tettnang", :area_code => "7542") + AreaCode.create(:country => germany, :name => "Kressbronn am Bodensee", :area_code => "7543") + AreaCode.create(:country => germany, :name => "Markdorf", :area_code => "7544") + AreaCode.create(:country => germany, :name => "Immenstaad am Bodensee", :area_code => "7545") + AreaCode.create(:country => germany, :name => "Oberteuringen", :area_code => "7546") + AreaCode.create(:country => germany, :name => "Überlingen Bodensee", :area_code => "7551") + AreaCode.create(:country => germany, :name => "Pfullendorf", :area_code => "7552") + AreaCode.create(:country => germany, :name => "Salem Baden", :area_code => "7553") + AreaCode.create(:country => germany, :name => "Heiligenberg Baden", :area_code => "7554") + AreaCode.create(:country => germany, :name => "Deggenhausertal", :area_code => "7555") + AreaCode.create(:country => germany, :name => "Uhldingen-Mühlhofen", :area_code => "7556") + AreaCode.create(:country => germany, :name => "Herdwangen-Schönach", :area_code => "7557") + AreaCode.create(:country => germany, :name => "Illmensee", :area_code => "7558") + AreaCode.create(:country => germany, :name => "Leutkirch im Allgäu", :area_code => "7561") + AreaCode.create(:country => germany, :name => "Isny im Allgäu", :area_code => "7562") + AreaCode.create(:country => germany, :name => "Kisslegg", :area_code => "7563") + AreaCode.create(:country => germany, :name => "Bad Wurzach", :area_code => "7564") + AreaCode.create(:country => germany, :name => "Aichstetten Kr Ravensburg", :area_code => "7565") + AreaCode.create(:country => germany, :name => "Argenbühl", :area_code => "7566") + AreaCode.create(:country => germany, :name => "Leutkirch-Friesenhofen", :area_code => "7567") + AreaCode.create(:country => germany, :name => "Bad Wurzach-Hauerz", :area_code => "7568") + AreaCode.create(:country => germany, :name => "Isny-Eisenbach", :area_code => "7569") + AreaCode.create(:country => germany, :name => "Sigmaringen-Gutenstein", :area_code => "7570") + AreaCode.create(:country => germany, :name => "Sigmaringen", :area_code => "7571") + AreaCode.create(:country => germany, :name => "Mengen Württ", :area_code => "7572") + AreaCode.create(:country => germany, :name => "Stetten am kalten Markt", :area_code => "7573") + AreaCode.create(:country => germany, :name => "Gammertingen", :area_code => "7574") + AreaCode.create(:country => germany, :name => "Messkirch", :area_code => "7575") + AreaCode.create(:country => germany, :name => "Krauchenwies", :area_code => "7576") + AreaCode.create(:country => germany, :name => "Veringenstadt", :area_code => "7577") + AreaCode.create(:country => germany, :name => "Wald Hohenz", :area_code => "7578") + AreaCode.create(:country => germany, :name => "Schwenningen Baden", :area_code => "7579") + AreaCode.create(:country => germany, :name => "Saulgau", :area_code => "7581") + AreaCode.create(:country => germany, :name => "Bad Buchau", :area_code => "7582") + AreaCode.create(:country => germany, :name => "Bad Schussenried", :area_code => "7583") + AreaCode.create(:country => germany, :name => "Altshausen", :area_code => "7584") + AreaCode.create(:country => germany, :name => "Ostrach", :area_code => "7585") + AreaCode.create(:country => germany, :name => "Herbertingen", :area_code => "7586") + AreaCode.create(:country => germany, :name => "Hosskirch", :area_code => "7587") + AreaCode.create(:country => germany, :name => "Oberried Breisgau", :area_code => "7602") + AreaCode.create(:country => germany, :name => "Freiburg im Breisgau", :area_code => "761") + AreaCode.create(:country => germany, :name => "Schopfheim-Gersbach", :area_code => "7620") + AreaCode.create(:country => germany, :name => "Lörrach", :area_code => "7621") + AreaCode.create(:country => germany, :name => "Schopfheim", :area_code => "7622") + AreaCode.create(:country => germany, :name => "Rheinfelden Baden", :area_code => "7623") + AreaCode.create(:country => germany, :name => "Grenzach-Wyhlen", :area_code => "7624") + AreaCode.create(:country => germany, :name => "Zell im Wiesental", :area_code => "7625") + AreaCode.create(:country => germany, :name => "Kandern", :area_code => "7626") + AreaCode.create(:country => germany, :name => "Steinen Kr Lörrach", :area_code => "7627") + AreaCode.create(:country => germany, :name => "Efringen-Kirchen", :area_code => "7628") + AreaCode.create(:country => germany, :name => "Tegernau Baden", :area_code => "7629") + AreaCode.create(:country => germany, :name => "Müllheim Baden", :area_code => "7631") + AreaCode.create(:country => germany, :name => "Badenweiler", :area_code => "7632") + AreaCode.create(:country => germany, :name => "Staufen im Breisgau", :area_code => "7633") + AreaCode.create(:country => germany, :name => "Sulzburg", :area_code => "7634") + AreaCode.create(:country => germany, :name => "Schliengen", :area_code => "7635") + AreaCode.create(:country => germany, :name => "Münstertal Schwarzwald", :area_code => "7636") + AreaCode.create(:country => germany, :name => "Emmendingen", :area_code => "7641") + AreaCode.create(:country => germany, :name => "Endingen Kaiserstuh", :area_code => "7642") + AreaCode.create(:country => germany, :name => "Herbolzheim Breisgau", :area_code => "7643") + AreaCode.create(:country => germany, :name => "Kenzingen", :area_code => "7644") + AreaCode.create(:country => germany, :name => "Freiamt", :area_code => "7645") + AreaCode.create(:country => germany, :name => "Weisweil Breisgau", :area_code => "7646") + AreaCode.create(:country => germany, :name => "Titisee-Neustadt", :area_code => "7651") + AreaCode.create(:country => germany, :name => "Hinterzarten", :area_code => "7652") + AreaCode.create(:country => germany, :name => "Lenzkirch", :area_code => "7653") + AreaCode.create(:country => germany, :name => "Löffingen", :area_code => "7654") + AreaCode.create(:country => germany, :name => "Feldberg-Altglashütten", :area_code => "7655") + AreaCode.create(:country => germany, :name => "Schluchsee", :area_code => "7656") + AreaCode.create(:country => germany, :name => "Eisenbach Hochschwarzwald", :area_code => "7657") + AreaCode.create(:country => germany, :name => "St Peter Schwarzw", :area_code => "7660") + AreaCode.create(:country => germany, :name => "Kirchzarten", :area_code => "7661") + AreaCode.create(:country => germany, :name => "Vogtsburg im Kaiserstuh", :area_code => "7662") + AreaCode.create(:country => germany, :name => "Eichstetten", :area_code => "7663") + AreaCode.create(:country => germany, :name => "Freiburg-Tiengen", :area_code => "7664") + AreaCode.create(:country => germany, :name => "March Breisgau", :area_code => "7665") + AreaCode.create(:country => germany, :name => "Denzlingen", :area_code => "7666") + AreaCode.create(:country => germany, :name => "Breisach am Rhein", :area_code => "7667") + AreaCode.create(:country => germany, :name => "Ihringen", :area_code => "7668") + AreaCode.create(:country => germany, :name => "St Märgen", :area_code => "7669") + AreaCode.create(:country => germany, :name => "Todtnau", :area_code => "7671") + AreaCode.create(:country => germany, :name => "St Blasien", :area_code => "7672") + AreaCode.create(:country => germany, :name => "Schönau im Schwarzwald", :area_code => "7673") + AreaCode.create(:country => germany, :name => "Todtmoos", :area_code => "7674") + AreaCode.create(:country => germany, :name => "Bernau Baden", :area_code => "7675") + AreaCode.create(:country => germany, :name => "Feldberg Schwarzwald", :area_code => "7676") + AreaCode.create(:country => germany, :name => "Waldkirch Breisgau", :area_code => "7681") + AreaCode.create(:country => germany, :name => "Elzach", :area_code => "7682") + AreaCode.create(:country => germany, :name => "Simonswald", :area_code => "7683") + AreaCode.create(:country => germany, :name => "Glottertal", :area_code => "7684") + AreaCode.create(:country => germany, :name => "Gutach-Bleibach", :area_code => "7685") + AreaCode.create(:country => germany, :name => "Blumberg Baden", :area_code => "7702") + AreaCode.create(:country => germany, :name => "Bonndorf im Schwarzwald", :area_code => "7703") + AreaCode.create(:country => germany, :name => "Geisingen Baden", :area_code => "7704") + AreaCode.create(:country => germany, :name => "Wolterdingen Schwarzw", :area_code => "7705") + AreaCode.create(:country => germany, :name => "Oberbaldingen", :area_code => "7706") + AreaCode.create(:country => germany, :name => "Bräunlingen", :area_code => "7707") + AreaCode.create(:country => germany, :name => "Geisingen-Leipferdingen", :area_code => "7708") + AreaCode.create(:country => germany, :name => "Wutach", :area_code => "7709") + AreaCode.create(:country => germany, :name => "Donaueschingen", :area_code => "771") + AreaCode.create(:country => germany, :name => "Schwenningen a Neckar", :area_code => "7720") + AreaCode.create(:country => germany, :name => "Villingen i Schwarzw", :area_code => "7721") + AreaCode.create(:country => germany, :name => "Triberg im Schwarzwald", :area_code => "7722") + AreaCode.create(:country => germany, :name => "Furtwangen im Schwarzwald", :area_code => "7723") + AreaCode.create(:country => germany, :name => "St Georgen im Schwarzwald", :area_code => "7724") + AreaCode.create(:country => germany, :name => "Königsfeld im Schwarzwald", :area_code => "7725") + AreaCode.create(:country => germany, :name => "Bad Dürrheim", :area_code => "7726") + AreaCode.create(:country => germany, :name => "Vöhrenbach", :area_code => "7727") + AreaCode.create(:country => germany, :name => "Niedereschach", :area_code => "7728") + AreaCode.create(:country => germany, :name => "Tennenbronn", :area_code => "7729") + AreaCode.create(:country => germany, :name => "Singen Hohentwiel", :area_code => "7731") + AreaCode.create(:country => germany, :name => "Radolfzell am Bodensee", :area_code => "7732") + AreaCode.create(:country => germany, :name => "Engen Hegau", :area_code => "7733") + AreaCode.create(:country => germany, :name => "Gailingen", :area_code => "7734") + AreaCode.create(:country => germany, :name => "Öhningen", :area_code => "7735") + AreaCode.create(:country => germany, :name => "Tengen", :area_code => "7736") + AreaCode.create(:country => germany, :name => "Steisslingen", :area_code => "7738") + AreaCode.create(:country => germany, :name => "Hilzingen", :area_code => "7739") + AreaCode.create(:country => germany, :name => "Tiengen Hochrhein", :area_code => "7741") + AreaCode.create(:country => germany, :name => "Klettgau", :area_code => "7742") + AreaCode.create(:country => germany, :name => "Ühlingen-Birkendorf", :area_code => "7743") + AreaCode.create(:country => germany, :name => "Stühlingen", :area_code => "7744") + AreaCode.create(:country => germany, :name => "Jestetten", :area_code => "7745") + AreaCode.create(:country => germany, :name => "Wutöschingen", :area_code => "7746") + AreaCode.create(:country => germany, :name => "Berau", :area_code => "7747") + AreaCode.create(:country => germany, :name => "Grafenhausen Hochschwarzw", :area_code => "7748") + AreaCode.create(:country => germany, :name => "Waldshut", :area_code => "7751") + AreaCode.create(:country => germany, :name => "Albbruck", :area_code => "7753") + AreaCode.create(:country => germany, :name => "Görwihl", :area_code => "7754") + AreaCode.create(:country => germany, :name => "Weilheim Kr Waldshut", :area_code => "7755") + AreaCode.create(:country => germany, :name => "Bad Säckingen", :area_code => "7761") + AreaCode.create(:country => germany, :name => "Wehr Baden", :area_code => "7762") + AreaCode.create(:country => germany, :name => "Murg", :area_code => "7763") + AreaCode.create(:country => germany, :name => "Herrischried", :area_code => "7764") + AreaCode.create(:country => germany, :name => "Rickenbach Hotzenw", :area_code => "7765") + AreaCode.create(:country => germany, :name => "Stockach", :area_code => "7771") + AreaCode.create(:country => germany, :name => "Bodman-Ludwigshafen", :area_code => "7773") + AreaCode.create(:country => germany, :name => "Eigeltingen", :area_code => "7774") + AreaCode.create(:country => germany, :name => "Mühlingen", :area_code => "7775") + AreaCode.create(:country => germany, :name => "Sauldorf", :area_code => "7777") + AreaCode.create(:country => germany, :name => "Oberkirch Baden", :area_code => "7802") + AreaCode.create(:country => germany, :name => "Gengenbach", :area_code => "7803") + AreaCode.create(:country => germany, :name => "Oppenau", :area_code => "7804") + AreaCode.create(:country => germany, :name => "Appenweier", :area_code => "7805") + AreaCode.create(:country => germany, :name => "Bad Peterstal-Griesbach", :area_code => "7806") + AreaCode.create(:country => germany, :name => "Neuried Ortenaukreis", :area_code => "7807") + AreaCode.create(:country => germany, :name => "Hohberg b Offenburg", :area_code => "7808") + AreaCode.create(:country => germany, :name => "Offenburg", :area_code => "781") + AreaCode.create(:country => germany, :name => "Lahr Schwarzwald", :area_code => "7821") + AreaCode.create(:country => germany, :name => "Ettenheim", :area_code => "7822") + AreaCode.create(:country => germany, :name => "Seelbach Schutter", :area_code => "7823") + AreaCode.create(:country => germany, :name => "Schwanau", :area_code => "7824") + AreaCode.create(:country => germany, :name => "Kippenheim", :area_code => "7825") + AreaCode.create(:country => germany, :name => "Schuttertal", :area_code => "7826") + AreaCode.create(:country => germany, :name => "Hausach", :area_code => "7831") + AreaCode.create(:country => germany, :name => "Haslach im Kinzigtal", :area_code => "7832") + AreaCode.create(:country => germany, :name => "Hornberg Schwarzwaldbahn", :area_code => "7833") + AreaCode.create(:country => germany, :name => "Wolfach", :area_code => "7834") + AreaCode.create(:country => germany, :name => "Zell am Harmersbach", :area_code => "7835") + AreaCode.create(:country => germany, :name => "Schiltach", :area_code => "7836") + AreaCode.create(:country => germany, :name => "Oberharmersbach", :area_code => "7837") + AreaCode.create(:country => germany, :name => "Nordrach", :area_code => "7838") + AreaCode.create(:country => germany, :name => "Schapbach", :area_code => "7839") + AreaCode.create(:country => germany, :name => "Achern", :area_code => "7841") + AreaCode.create(:country => germany, :name => "Kappelrodeck", :area_code => "7842") + AreaCode.create(:country => germany, :name => "Renchen", :area_code => "7843") + AreaCode.create(:country => germany, :name => "Rheinau", :area_code => "7844") + AreaCode.create(:country => germany, :name => "Kehl", :area_code => "7851") + AreaCode.create(:country => germany, :name => "Willstätt", :area_code => "7852") + AreaCode.create(:country => germany, :name => "Kehl-Bodersweier", :area_code => "7853") + AreaCode.create(:country => germany, :name => "Kehl-Goldscheuer", :area_code => "7854") + AreaCode.create(:country => germany, :name => "Mainhardt", :area_code => "7903") + AreaCode.create(:country => germany, :name => "Ilshofen", :area_code => "7904") + AreaCode.create(:country => germany, :name => "Langenburg", :area_code => "7905") + AreaCode.create(:country => germany, :name => "Braunsbach", :area_code => "7906") + AreaCode.create(:country => germany, :name => "Schwäbisch Hall-Sulzdorf", :area_code => "7907") + AreaCode.create(:country => germany, :name => "Schwäbisch Hall", :area_code => "791") + AreaCode.create(:country => germany, :name => "Boxberg Baden", :area_code => "7930") + AreaCode.create(:country => germany, :name => "Bad Mergentheim", :area_code => "7931") + AreaCode.create(:country => germany, :name => "Niederstetten Württ", :area_code => "7932") + AreaCode.create(:country => germany, :name => "Creglingen", :area_code => "7933") + AreaCode.create(:country => germany, :name => "Weikersheim", :area_code => "7934") + AreaCode.create(:country => germany, :name => "Schrozberg", :area_code => "7935") + AreaCode.create(:country => germany, :name => "Schrozberg-Bartenstein", :area_code => "7936") + AreaCode.create(:country => germany, :name => "Dörzbach", :area_code => "7937") + AreaCode.create(:country => germany, :name => "Mulfingen Jagst", :area_code => "7938") + AreaCode.create(:country => germany, :name => "Schrozberg-Spielbach", :area_code => "7939") + AreaCode.create(:country => germany, :name => "Künzelsau", :area_code => "7940") + AreaCode.create(:country => germany, :name => "Öhringen", :area_code => "7941") + AreaCode.create(:country => germany, :name => "Neuenstein Württ", :area_code => "7942") + AreaCode.create(:country => germany, :name => "Schöntal Jagst", :area_code => "7943") + AreaCode.create(:country => germany, :name => "Kupferzell", :area_code => "7944") + AreaCode.create(:country => germany, :name => "Wüstenrot", :area_code => "7945") + AreaCode.create(:country => germany, :name => "Bretzfeld", :area_code => "7946") + AreaCode.create(:country => germany, :name => "Forchtenberg", :area_code => "7947") + AreaCode.create(:country => germany, :name => "Öhringen-Ohrnberg", :area_code => "7948") + AreaCode.create(:country => germany, :name => "Pfedelbach-Untersteinbach", :area_code => "7949") + AreaCode.create(:country => germany, :name => "Schnelldorf", :area_code => "7950") + AreaCode.create(:country => germany, :name => "Crailsheim", :area_code => "7951") + AreaCode.create(:country => germany, :name => "Gerabronn", :area_code => "7952") + AreaCode.create(:country => germany, :name => "Blaufelden", :area_code => "7953") + AreaCode.create(:country => germany, :name => "Kirchberg an der Jagst", :area_code => "7954") + AreaCode.create(:country => germany, :name => "Wallhausen Württ", :area_code => "7955") + AreaCode.create(:country => germany, :name => "Kressberg", :area_code => "7957") + AreaCode.create(:country => germany, :name => "Rot Am See-Brettheim", :area_code => "7958") + AreaCode.create(:country => germany, :name => "Frankenhardt", :area_code => "7959") + AreaCode.create(:country => germany, :name => "Ellwangen Jagst", :area_code => "7961") + AreaCode.create(:country => germany, :name => "Fichtenau", :area_code => "7962") + AreaCode.create(:country => germany, :name => "Adelmannsfelden", :area_code => "7963") + AreaCode.create(:country => germany, :name => "Stödtlen", :area_code => "7964") + AreaCode.create(:country => germany, :name => "Ellwangen-Röhlingen", :area_code => "7965") + AreaCode.create(:country => germany, :name => "Unterschneidheim", :area_code => "7966") + AreaCode.create(:country => germany, :name => "Jagstzell", :area_code => "7967") + AreaCode.create(:country => germany, :name => "Gaildorf", :area_code => "7971") + AreaCode.create(:country => germany, :name => "Gschwend b Gaildorf", :area_code => "7972") + AreaCode.create(:country => germany, :name => "Obersontheim", :area_code => "7973") + AreaCode.create(:country => germany, :name => "Bühlerzell", :area_code => "7974") + AreaCode.create(:country => germany, :name => "Untergröningen", :area_code => "7975") + AreaCode.create(:country => germany, :name => "Sulzbach-Laufen", :area_code => "7976") + AreaCode.create(:country => germany, :name => "Oberrot b Gaildorf", :area_code => "7977") + AreaCode.create(:country => germany, :name => "Weyarn", :area_code => "8020") + AreaCode.create(:country => germany, :name => "Waakirchen", :area_code => "8021") + AreaCode.create(:country => germany, :name => "Tegernsee", :area_code => "8022") + AreaCode.create(:country => germany, :name => "Bayrischzell", :area_code => "8023") + AreaCode.create(:country => germany, :name => "Holzkirchen", :area_code => "8024") + AreaCode.create(:country => germany, :name => "Miesbach", :area_code => "8025") + AreaCode.create(:country => germany, :name => "Hausham", :area_code => "8026") + AreaCode.create(:country => germany, :name => "Dietramszell", :area_code => "8027") + AreaCode.create(:country => germany, :name => "Fischbachau", :area_code => "8028") + AreaCode.create(:country => germany, :name => "Kreuth b Tegernsee", :area_code => "8029") + AreaCode.create(:country => germany, :name => "Rosenheim Oberbay", :area_code => "8031") + AreaCode.create(:country => germany, :name => "Rohrdorf Kr Rosenheim", :area_code => "8032") + AreaCode.create(:country => germany, :name => "Oberaudorf", :area_code => "8033") + AreaCode.create(:country => germany, :name => "Brannenburg", :area_code => "8034") + AreaCode.create(:country => germany, :name => "Raubling", :area_code => "8035") + AreaCode.create(:country => germany, :name => "Stephanskirchen Simssee", :area_code => "8036") + AreaCode.create(:country => germany, :name => "Vogtareuth", :area_code => "8038") + AreaCode.create(:country => germany, :name => "Rott a Inn", :area_code => "8039") + AreaCode.create(:country => germany, :name => "Bad Tölz", :area_code => "8041") + AreaCode.create(:country => germany, :name => "Lenggries", :area_code => "8042") + AreaCode.create(:country => germany, :name => "Jachenau", :area_code => "8043") + AreaCode.create(:country => germany, :name => "Lenggries-Fall", :area_code => "8045") + AreaCode.create(:country => germany, :name => "Bad Heilbrunn", :area_code => "8046") + AreaCode.create(:country => germany, :name => "Prien a Chiemsee", :area_code => "8051") + AreaCode.create(:country => germany, :name => "Aschau i Chiemgau", :area_code => "8052") + AreaCode.create(:country => germany, :name => "Bad Endorf", :area_code => "8053") + AreaCode.create(:country => germany, :name => "Breitbrunn a Chiemsee", :area_code => "8054") + AreaCode.create(:country => germany, :name => "Halfing", :area_code => "8055") + AreaCode.create(:country => germany, :name => "Eggstätt", :area_code => "8056") + AreaCode.create(:country => germany, :name => "Aschau-Sachrang", :area_code => "8057") + AreaCode.create(:country => germany, :name => "Bad Aibling", :area_code => "8061") + AreaCode.create(:country => germany, :name => "Bruckmühl Mangfall", :area_code => "8062") + AreaCode.create(:country => germany, :name => "Feldkirchen-Westerham", :area_code => "8063") + AreaCode.create(:country => germany, :name => "Au b Bad Aibling", :area_code => "8064") + AreaCode.create(:country => germany, :name => "Tuntenhausen-Schönau", :area_code => "8065") + AreaCode.create(:country => germany, :name => "Bad Feilnbach", :area_code => "8066") + AreaCode.create(:country => germany, :name => "Tuntenhausen", :area_code => "8067") + AreaCode.create(:country => germany, :name => "Wasserburg a Inn", :area_code => "8071") + AreaCode.create(:country => germany, :name => "Haag i OB", :area_code => "8072") + AreaCode.create(:country => germany, :name => "Gars a Inn", :area_code => "8073") + AreaCode.create(:country => germany, :name => "Schnaitsee", :area_code => "8074") + AreaCode.create(:country => germany, :name => "Amerang", :area_code => "8075") + AreaCode.create(:country => germany, :name => "Pfaffing", :area_code => "8076") + AreaCode.create(:country => germany, :name => "Dorfen Stadt", :area_code => "8081") + AreaCode.create(:country => germany, :name => "Schwindegg", :area_code => "8082") + AreaCode.create(:country => germany, :name => "Isen", :area_code => "8083") + AreaCode.create(:country => germany, :name => "Taufkirchen Vils", :area_code => "8084") + AreaCode.create(:country => germany, :name => "Sankt Wolfgang", :area_code => "8085") + AreaCode.create(:country => germany, :name => "Buchbach Oberbay", :area_code => "8086") + AreaCode.create(:country => germany, :name => "Kirchseeon", :area_code => "8091") + AreaCode.create(:country => germany, :name => "Grafing b München", :area_code => "8092") + AreaCode.create(:country => germany, :name => "Glonn Kr Ebersberg", :area_code => "8093") + AreaCode.create(:country => germany, :name => "Steinhöring", :area_code => "8094") + AreaCode.create(:country => germany, :name => "Aying", :area_code => "8095") + AreaCode.create(:country => germany, :name => "Höhenkirchen-Siegertsbrunn", :area_code => "8102") + AreaCode.create(:country => germany, :name => "Sauerlach", :area_code => "8104") + AreaCode.create(:country => germany, :name => "Gilching", :area_code => "8105") + AreaCode.create(:country => germany, :name => "Vaterstetten", :area_code => "8106") + AreaCode.create(:country => germany, :name => "Hallbergmoos", :area_code => "811") + AreaCode.create(:country => germany, :name => "Markt Schwaben", :area_code => "8121") + AreaCode.create(:country => germany, :name => "Erding", :area_code => "8122") + AreaCode.create(:country => germany, :name => "Moosinning", :area_code => "8123") + AreaCode.create(:country => germany, :name => "Forstern Oberbay", :area_code => "8124") + AreaCode.create(:country => germany, :name => "Dachau", :area_code => "8131") + AreaCode.create(:country => germany, :name => "Haimhausen Oberbay", :area_code => "8133") + AreaCode.create(:country => germany, :name => "Odelzhausen", :area_code => "8134") + AreaCode.create(:country => germany, :name => "Sulzemoos", :area_code => "8135") + AreaCode.create(:country => germany, :name => "Markt Indersdorf", :area_code => "8136") + AreaCode.create(:country => germany, :name => "Petershausen", :area_code => "8137") + AreaCode.create(:country => germany, :name => "Schwabhausen b Dachau", :area_code => "8138") + AreaCode.create(:country => germany, :name => "Röhrmoos", :area_code => "8139") + AreaCode.create(:country => germany, :name => "Fürstenfeldbruck", :area_code => "8141") + AreaCode.create(:country => germany, :name => "Olching", :area_code => "8142") + AreaCode.create(:country => germany, :name => "Inning a Ammersee", :area_code => "8143") + AreaCode.create(:country => germany, :name => "Grafrath", :area_code => "8144") + AreaCode.create(:country => germany, :name => "Mammendorf", :area_code => "8145") + AreaCode.create(:country => germany, :name => "Moorenweis", :area_code => "8146") + AreaCode.create(:country => germany, :name => "Starnberg", :area_code => "8151") + AreaCode.create(:country => germany, :name => "Herrsching a Ammersee", :area_code => "8152") + AreaCode.create(:country => germany, :name => "Wessling", :area_code => "8153") + AreaCode.create(:country => germany, :name => "Feldafing", :area_code => "8157") + AreaCode.create(:country => germany, :name => "Tutzing", :area_code => "8158") + AreaCode.create(:country => germany, :name => "Freising", :area_code => "8161") + AreaCode.create(:country => germany, :name => "Neufahrn b Freising", :area_code => "8165") + AreaCode.create(:country => germany, :name => "Allershausen Oberbay", :area_code => "8166") + AreaCode.create(:country => germany, :name => "Zolling", :area_code => "8167") + AreaCode.create(:country => germany, :name => "Attenkirchen", :area_code => "8168") + AreaCode.create(:country => germany, :name => "Straßlach-Dingharting", :area_code => "8170") + AreaCode.create(:country => germany, :name => "Wolfratshausen", :area_code => "8171") + AreaCode.create(:country => germany, :name => "Egling b Wolfratshausen", :area_code => "8176") + AreaCode.create(:country => germany, :name => "Münsing Starnberger See", :area_code => "8177") + AreaCode.create(:country => germany, :name => "Icking", :area_code => "8178") + AreaCode.create(:country => germany, :name => "Eurasburg a d Loisach", :area_code => "8179") + AreaCode.create(:country => germany, :name => "Landsberg a Lech", :area_code => "8191") + AreaCode.create(:country => germany, :name => "Schondorf a Ammersee", :area_code => "8192") + AreaCode.create(:country => germany, :name => "Geltendorf", :area_code => "8193") + AreaCode.create(:country => germany, :name => "Vilgertshofen", :area_code => "8194") + AreaCode.create(:country => germany, :name => "Weil Kr Landsberg a Lech", :area_code => "8195") + AreaCode.create(:country => germany, :name => "Pürgen", :area_code => "8196") + AreaCode.create(:country => germany, :name => "Althegnenberg", :area_code => "8202") + AreaCode.create(:country => germany, :name => "Grossaitingen", :area_code => "8203") + AreaCode.create(:country => germany, :name => "Mickhausen", :area_code => "8204") + AreaCode.create(:country => germany, :name => "Dasing", :area_code => "8205") + AreaCode.create(:country => germany, :name => "Egling a d Paar", :area_code => "8206") + AreaCode.create(:country => germany, :name => "Affing", :area_code => "8207") + AreaCode.create(:country => germany, :name => "Eurasburg b Augsburg", :area_code => "8208") + AreaCode.create(:country => germany, :name => "Augsburg", :area_code => "821") + AreaCode.create(:country => germany, :name => "Günzburg", :area_code => "8221") + AreaCode.create(:country => germany, :name => "Burgau Schwab", :area_code => "8222") + AreaCode.create(:country => germany, :name => "Ichenhausen", :area_code => "8223") + AreaCode.create(:country => germany, :name => "Offingen Donau", :area_code => "8224") + AreaCode.create(:country => germany, :name => "Jettingen-Scheppach", :area_code => "8225") + AreaCode.create(:country => germany, :name => "Bibertal", :area_code => "8226") + AreaCode.create(:country => germany, :name => "Gablingen", :area_code => "8230") + AreaCode.create(:country => germany, :name => "Königsbrunn b Augsburg", :area_code => "8231") + AreaCode.create(:country => germany, :name => "Schwabmünchen", :area_code => "8232") + AreaCode.create(:country => germany, :name => "Kissing", :area_code => "8233") + AreaCode.create(:country => germany, :name => "Bobingen", :area_code => "8234") + AreaCode.create(:country => germany, :name => "Fischach", :area_code => "8236") + AreaCode.create(:country => germany, :name => "Aindling", :area_code => "8237") + AreaCode.create(:country => germany, :name => "Gessertshausen", :area_code => "8238") + AreaCode.create(:country => germany, :name => "Langenneufnach", :area_code => "8239") + AreaCode.create(:country => germany, :name => "Buchloe", :area_code => "8241") + AreaCode.create(:country => germany, :name => "Fuchstal", :area_code => "8243") + AreaCode.create(:country => germany, :name => "Türkheim Wertach", :area_code => "8245") + AreaCode.create(:country => germany, :name => "Waal", :area_code => "8246") + AreaCode.create(:country => germany, :name => "Bad Wörishofen", :area_code => "8247") + AreaCode.create(:country => germany, :name => "Lamerdingen", :area_code => "8248") + AreaCode.create(:country => germany, :name => "Ettringen Wertach", :area_code => "8249") + AreaCode.create(:country => germany, :name => "Hilgertshausen-Tandern", :area_code => "8250") + AreaCode.create(:country => germany, :name => "Aichach", :area_code => "8251") + AreaCode.create(:country => germany, :name => "Schrobenhausen", :area_code => "8252") + AreaCode.create(:country => germany, :name => "Pöttmes", :area_code => "8253") + AreaCode.create(:country => germany, :name => "Altomünster", :area_code => "8254") + AreaCode.create(:country => germany, :name => "Inchenhofen", :area_code => "8257") + AreaCode.create(:country => germany, :name => "Sielenbach", :area_code => "8258") + AreaCode.create(:country => germany, :name => "Schiltberg", :area_code => "8259") + AreaCode.create(:country => germany, :name => "Mindelheim", :area_code => "8261") + AreaCode.create(:country => germany, :name => "Mittelneufnach", :area_code => "8262") + AreaCode.create(:country => germany, :name => "Breitenbrunn Schwab", :area_code => "8263") + AreaCode.create(:country => germany, :name => "Pfaffenhausen Schwab", :area_code => "8265") + AreaCode.create(:country => germany, :name => "Kirchheim i Schw", :area_code => "8266") + AreaCode.create(:country => germany, :name => "Dirlewang", :area_code => "8267") + AreaCode.create(:country => germany, :name => "Tussenhausen", :area_code => "8268") + AreaCode.create(:country => germany, :name => "Unteregg b Mindelheim", :area_code => "8269") + AreaCode.create(:country => germany, :name => "Meitingen", :area_code => "8271") + AreaCode.create(:country => germany, :name => "Wertingen", :area_code => "8272") + AreaCode.create(:country => germany, :name => "Nordendorf", :area_code => "8273") + AreaCode.create(:country => germany, :name => "Buttenwiesen", :area_code => "8274") + AreaCode.create(:country => germany, :name => "Baar Schwaben", :area_code => "8276") + AreaCode.create(:country => germany, :name => "Thannhausen Schwab", :area_code => "8281") + AreaCode.create(:country => germany, :name => "Krumbach Schwaben", :area_code => "8282") + AreaCode.create(:country => germany, :name => "Neuburg a d Kammel", :area_code => "8283") + AreaCode.create(:country => germany, :name => "Ziemetshausen", :area_code => "8284") + AreaCode.create(:country => germany, :name => "Burtenbach", :area_code => "8285") + AreaCode.create(:country => germany, :name => "Zusmarshausen", :area_code => "8291") + AreaCode.create(:country => germany, :name => "Dinkelscherben", :area_code => "8292") + AreaCode.create(:country => germany, :name => "Welden b Augsburg", :area_code => "8293") + AreaCode.create(:country => germany, :name => "Horgau", :area_code => "8294") + AreaCode.create(:country => germany, :name => "Altenmünster Schwab", :area_code => "8295") + AreaCode.create(:country => germany, :name => "Villenbach", :area_code => "8296") + AreaCode.create(:country => germany, :name => "Görisried", :area_code => "8302") + AreaCode.create(:country => germany, :name => "Waltenhofen", :area_code => "8303") + AreaCode.create(:country => germany, :name => "Wildpoldsried", :area_code => "8304") + AreaCode.create(:country => germany, :name => "Ronsberg", :area_code => "8306") + AreaCode.create(:country => germany, :name => "Kempten Allgäu", :area_code => "831") + AreaCode.create(:country => germany, :name => "Missen-Wilhams", :area_code => "8320") + AreaCode.create(:country => germany, :name => "Sonthofen", :area_code => "8321") + AreaCode.create(:country => germany, :name => "Oberstdorf", :area_code => "8322") + AreaCode.create(:country => germany, :name => "Immenstadt i Allgäu", :area_code => "8323") + AreaCode.create(:country => germany, :name => "Hindelang", :area_code => "8324") + AreaCode.create(:country => germany, :name => "Oberstaufen-Thalkirchdorf", :area_code => "8325") + AreaCode.create(:country => germany, :name => "Fischen i Allgäu", :area_code => "8326") + AreaCode.create(:country => germany, :name => "Rettenberg", :area_code => "8327") + AreaCode.create(:country => germany, :name => "Balderschwang", :area_code => "8328") + AreaCode.create(:country => germany, :name => "Riezlern (Österreich)", :area_code => "8329") + AreaCode.create(:country => germany, :name => "Legau", :area_code => "8330") + AreaCode.create(:country => germany, :name => "Memmingen", :area_code => "8331") + AreaCode.create(:country => germany, :name => "Ottobeuren", :area_code => "8332") + AreaCode.create(:country => germany, :name => "Babenhausen Schwab", :area_code => "8333") + AreaCode.create(:country => germany, :name => "Bad Grönenbach", :area_code => "8334") + AreaCode.create(:country => germany, :name => "Fellheim", :area_code => "8335") + AreaCode.create(:country => germany, :name => "Erkheim", :area_code => "8336") + AreaCode.create(:country => germany, :name => "Altenstadt Iller", :area_code => "8337") + AreaCode.create(:country => germany, :name => "Böhen", :area_code => "8338") + AreaCode.create(:country => germany, :name => "Baisweil", :area_code => "8340") + AreaCode.create(:country => germany, :name => "Kaufbeuren", :area_code => "8341") + AreaCode.create(:country => germany, :name => "Marktoberdorf", :area_code => "8342") + AreaCode.create(:country => germany, :name => "Aitrang", :area_code => "8343") + AreaCode.create(:country => germany, :name => "Westendorf b Kaufbeuren", :area_code => "8344") + AreaCode.create(:country => germany, :name => "Stöttwang", :area_code => "8345") + AreaCode.create(:country => germany, :name => "Pforzen", :area_code => "8346") + AreaCode.create(:country => germany, :name => "Friesenried", :area_code => "8347") + AreaCode.create(:country => germany, :name => "Bidingen", :area_code => "8348") + AreaCode.create(:country => germany, :name => "Stötten a Auerberg", :area_code => "8349") + AreaCode.create(:country => germany, :name => "Nesselwang", :area_code => "8361") + AreaCode.create(:country => germany, :name => "Füssen", :area_code => "8362") + AreaCode.create(:country => germany, :name => "Pfronten", :area_code => "8363") + AreaCode.create(:country => germany, :name => "Seeg", :area_code => "8364") + AreaCode.create(:country => germany, :name => "Wertach", :area_code => "8365") + AreaCode.create(:country => germany, :name => "Oy-Mittelberg", :area_code => "8366") + AreaCode.create(:country => germany, :name => "Roßhaupten Forggensee", :area_code => "8367") + AreaCode.create(:country => germany, :name => "Halblech", :area_code => "8368") + AreaCode.create(:country => germany, :name => "Rückholz", :area_code => "8369") + AreaCode.create(:country => germany, :name => "Wiggensbach", :area_code => "8370") + AreaCode.create(:country => germany, :name => "Obergünzburg", :area_code => "8372") + AreaCode.create(:country => germany, :name => "Altusried", :area_code => "8373") + AreaCode.create(:country => germany, :name => "Dietmannsried", :area_code => "8374") + AreaCode.create(:country => germany, :name => "Weitnau", :area_code => "8375") + AreaCode.create(:country => germany, :name => "Sulzberg Allgäu", :area_code => "8376") + AreaCode.create(:country => germany, :name => "Unterthingau", :area_code => "8377") + AreaCode.create(:country => germany, :name => "Buchenberg b Kempten", :area_code => "8378") + AreaCode.create(:country => germany, :name => "Waltenhofen-Oberdorf", :area_code => "8379") + AreaCode.create(:country => germany, :name => "Achberg", :area_code => "8380") + AreaCode.create(:country => germany, :name => "Lindenberg i Allgäu", :area_code => "8381") + AreaCode.create(:country => germany, :name => "Lindau Bodensee", :area_code => "8382") + AreaCode.create(:country => germany, :name => "Grünenbach Allgäu", :area_code => "8383") + AreaCode.create(:country => germany, :name => "Röthenbach Allgäu", :area_code => "8384") + AreaCode.create(:country => germany, :name => "Hergatz", :area_code => "8385") + AreaCode.create(:country => germany, :name => "Oberstaufen", :area_code => "8386") + AreaCode.create(:country => germany, :name => "Weiler-Simmerberg", :area_code => "8387") + AreaCode.create(:country => germany, :name => "Hergensweiler", :area_code => "8388") + AreaCode.create(:country => germany, :name => "Weissensberg", :area_code => "8389") + AreaCode.create(:country => germany, :name => "Markt Rettenbach", :area_code => "8392") + AreaCode.create(:country => germany, :name => "Holzgünz", :area_code => "8393") + AreaCode.create(:country => germany, :name => "Lautrach", :area_code => "8394") + AreaCode.create(:country => germany, :name => "Tannheim Württ", :area_code => "8395") + AreaCode.create(:country => germany, :name => "Münchsmünster", :area_code => "8402") + AreaCode.create(:country => germany, :name => "Pförring", :area_code => "8403") + AreaCode.create(:country => germany, :name => "Oberdolling", :area_code => "8404") + AreaCode.create(:country => germany, :name => "Stammham b Ingolstadt", :area_code => "8405") + AreaCode.create(:country => germany, :name => "Böhmfeld", :area_code => "8406") + AreaCode.create(:country => germany, :name => "Grossmehring", :area_code => "8407") + AreaCode.create(:country => germany, :name => "Ingolstadt Donau", :area_code => "841") + AreaCode.create(:country => germany, :name => "Eichstätt Bay", :area_code => "8421") + AreaCode.create(:country => germany, :name => "Dollnstein", :area_code => "8422") + AreaCode.create(:country => germany, :name => "Titting", :area_code => "8423") + AreaCode.create(:country => germany, :name => "Nassenfels", :area_code => "8424") + AreaCode.create(:country => germany, :name => "Walting Kr Eichstätt", :area_code => "8426") + AreaCode.create(:country => germany, :name => "Wellheim", :area_code => "8427") + AreaCode.create(:country => germany, :name => "Neuburg a d Donau", :area_code => "8431") + AreaCode.create(:country => germany, :name => "Burgheim", :area_code => "8432") + AreaCode.create(:country => germany, :name => "Königsmoos", :area_code => "8433") + AreaCode.create(:country => germany, :name => "Rennertshofen", :area_code => "8434") + AreaCode.create(:country => germany, :name => "Ehekirchen", :area_code => "8435") + AreaCode.create(:country => germany, :name => "Pfaffenhofen a d Ilm", :area_code => "8441") + AreaCode.create(:country => germany, :name => "Wolnzach", :area_code => "8442") + AreaCode.create(:country => germany, :name => "Hohenwart Paar", :area_code => "8443") + AreaCode.create(:country => germany, :name => "Schweitenkirchen", :area_code => "8444") + AreaCode.create(:country => germany, :name => "Gerolsbach", :area_code => "8445") + AreaCode.create(:country => germany, :name => "Pörnbach", :area_code => "8446") + AreaCode.create(:country => germany, :name => "Ingolstadt-Zuchering", :area_code => "8450") + AreaCode.create(:country => germany, :name => "Geisenfeld", :area_code => "8452") + AreaCode.create(:country => germany, :name => "Reichertshofen Oberbay", :area_code => "8453") + AreaCode.create(:country => germany, :name => "Karlshuld", :area_code => "8454") + AreaCode.create(:country => germany, :name => "Lenting", :area_code => "8456") + AreaCode.create(:country => germany, :name => "Vohburg a d Donau", :area_code => "8457") + AreaCode.create(:country => germany, :name => "Gaimersheim", :area_code => "8458") + AreaCode.create(:country => germany, :name => "Manching", :area_code => "8459") + AreaCode.create(:country => germany, :name => "Berching-Holnstein", :area_code => "8460") + AreaCode.create(:country => germany, :name => "Beilngries", :area_code => "8461") + AreaCode.create(:country => germany, :name => "Berching", :area_code => "8462") + AreaCode.create(:country => germany, :name => "Greding", :area_code => "8463") + AreaCode.create(:country => germany, :name => "Dietfurt a d Altmühl", :area_code => "8464") + AreaCode.create(:country => germany, :name => "Kipfenberg", :area_code => "8465") + AreaCode.create(:country => germany, :name => "Denkendorf Oberbay", :area_code => "8466") + AreaCode.create(:country => germany, :name => "Kinding", :area_code => "8467") + AreaCode.create(:country => germany, :name => "Altmannstein-Pondorf", :area_code => "8468") + AreaCode.create(:country => germany, :name => "Freystadt-Burggriesbach", :area_code => "8469") + AreaCode.create(:country => germany, :name => "Thyrnau", :area_code => "8501") + AreaCode.create(:country => germany, :name => "Fürstenzell", :area_code => "8502") + AreaCode.create(:country => germany, :name => "Neuhaus a Inn", :area_code => "8503") + AreaCode.create(:country => germany, :name => "Tittling", :area_code => "8504") + AreaCode.create(:country => germany, :name => "Hutthurm", :area_code => "8505") + AreaCode.create(:country => germany, :name => "Bad Höhenstadt", :area_code => "8506") + AreaCode.create(:country => germany, :name => "Neuburg a Inn", :area_code => "8507") + AreaCode.create(:country => germany, :name => "Ruderting", :area_code => "8509") + AreaCode.create(:country => germany, :name => "Passau", :area_code => "851") + AreaCode.create(:country => germany, :name => "Pocking", :area_code => "8531") + AreaCode.create(:country => germany, :name => "Griesbach i Rottal", :area_code => "8532") + AreaCode.create(:country => germany, :name => "Rotthalmünster", :area_code => "8533") + AreaCode.create(:country => germany, :name => "Tettenweis", :area_code => "8534") + AreaCode.create(:country => germany, :name => "Haarbach", :area_code => "8535") + AreaCode.create(:country => germany, :name => "Kößlarn", :area_code => "8536") + AreaCode.create(:country => germany, :name => "Bad Füssing-Aigen", :area_code => "8537") + AreaCode.create(:country => germany, :name => "Pocking-Hartkirchen", :area_code => "8538") + AreaCode.create(:country => germany, :name => "Vilshofen Niederbay", :area_code => "8541") + AreaCode.create(:country => germany, :name => "Ortenburg", :area_code => "8542") + AreaCode.create(:country => germany, :name => "Aidenbach", :area_code => "8543") + AreaCode.create(:country => germany, :name => "Eging a See", :area_code => "8544") + AreaCode.create(:country => germany, :name => "Hofkirchen Bay", :area_code => "8545") + AreaCode.create(:country => germany, :name => "Windorf-Otterskirchen", :area_code => "8546") + AreaCode.create(:country => germany, :name => "Osterhofen-Gergweis", :area_code => "8547") + AreaCode.create(:country => germany, :name => "Vilshofen-Sandbach", :area_code => "8548") + AreaCode.create(:country => germany, :name => "Vilshofen-Pleinting", :area_code => "8549") + AreaCode.create(:country => germany, :name => "Philippsreut", :area_code => "8550") + AreaCode.create(:country => germany, :name => "Freyung", :area_code => "8551") + AreaCode.create(:country => germany, :name => "Grafenau Niederbay", :area_code => "8552") + AreaCode.create(:country => germany, :name => "Spiegelau", :area_code => "8553") + AreaCode.create(:country => germany, :name => "Schönberg Niederbay", :area_code => "8554") + AreaCode.create(:country => germany, :name => "Perlesreut", :area_code => "8555") + AreaCode.create(:country => germany, :name => "Haidmühle", :area_code => "8556") + AreaCode.create(:country => germany, :name => "Mauth", :area_code => "8557") + AreaCode.create(:country => germany, :name => "Hohenau Niederbay", :area_code => "8558") + AreaCode.create(:country => germany, :name => "Pfarrkirchen Niederbay", :area_code => "8561") + AreaCode.create(:country => germany, :name => "Triftern", :area_code => "8562") + AreaCode.create(:country => germany, :name => "Bad Birnbach Rottal", :area_code => "8563") + AreaCode.create(:country => germany, :name => "Johanniskirchen", :area_code => "8564") + AreaCode.create(:country => germany, :name => "Dietersburg-Baumgarten", :area_code => "8565") + AreaCode.create(:country => germany, :name => "Simbach a Inn", :area_code => "8571") + AreaCode.create(:country => germany, :name => "Tann Niederbay", :area_code => "8572") + AreaCode.create(:country => germany, :name => "Ering", :area_code => "8573") + AreaCode.create(:country => germany, :name => "Wittibreut", :area_code => "8574") + AreaCode.create(:country => germany, :name => "Waldkirchen Niederbay", :area_code => "8581") + AreaCode.create(:country => germany, :name => "Röhrnbach", :area_code => "8582") + AreaCode.create(:country => germany, :name => "Neureichenau", :area_code => "8583") + AreaCode.create(:country => germany, :name => "Breitenberg Niederbay", :area_code => "8584") + AreaCode.create(:country => germany, :name => "Grainet", :area_code => "8585") + AreaCode.create(:country => germany, :name => "Hauzenberg", :area_code => "8586") + AreaCode.create(:country => germany, :name => "Obernzell", :area_code => "8591") + AreaCode.create(:country => germany, :name => "Wegscheid Niederbay", :area_code => "8592") + AreaCode.create(:country => germany, :name => "Untergriesbach", :area_code => "8593") + AreaCode.create(:country => germany, :name => "Traunstein", :area_code => "861") + AreaCode.create(:country => germany, :name => "Trostberg", :area_code => "8621") + AreaCode.create(:country => germany, :name => "Tacherting- Peterskirchen", :area_code => "8622") + AreaCode.create(:country => germany, :name => "Kirchweidach", :area_code => "8623") + AreaCode.create(:country => germany, :name => "Obing", :area_code => "8624") + AreaCode.create(:country => germany, :name => "Kienberg Oberbay", :area_code => "8628") + AreaCode.create(:country => germany, :name => "Palling", :area_code => "8629") + AreaCode.create(:country => germany, :name => "Oberneukirchen", :area_code => "8630") + AreaCode.create(:country => germany, :name => "Mühldorf a Inn", :area_code => "8631") + AreaCode.create(:country => germany, :name => "Tüßling", :area_code => "8633") + AreaCode.create(:country => germany, :name => "Garching a d Alz", :area_code => "8634") + AreaCode.create(:country => germany, :name => "Pleiskirchen", :area_code => "8635") + AreaCode.create(:country => germany, :name => "Ampfing", :area_code => "8636") + AreaCode.create(:country => germany, :name => "Lohkirchen", :area_code => "8637") + AreaCode.create(:country => germany, :name => "Waldkraiburg", :area_code => "8638") + AreaCode.create(:country => germany, :name => "Neumarkt-Sankt Veit", :area_code => "8639") + AreaCode.create(:country => germany, :name => "Reit Im Winkl", :area_code => "8640") + AreaCode.create(:country => germany, :name => "Grassau Kr Traunstein", :area_code => "8641") + AreaCode.create(:country => germany, :name => "Übersee", :area_code => "8642") + AreaCode.create(:country => germany, :name => "Schleching", :area_code => "8649") + AreaCode.create(:country => germany, :name => "Marktschellenberg", :area_code => "8650") + AreaCode.create(:country => germany, :name => "Bad Reichenhall", :area_code => "8651") + AreaCode.create(:country => germany, :name => "Berchtesgaden", :area_code => "8652") + AreaCode.create(:country => germany, :name => "Freilassing", :area_code => "8654") + AreaCode.create(:country => germany, :name => "Anger", :area_code => "8656") + AreaCode.create(:country => germany, :name => "Ramsau b Berchtesgaden", :area_code => "8657") + AreaCode.create(:country => germany, :name => "Grabenstätt Chiemsee", :area_code => "8661") + AreaCode.create(:country => germany, :name => "Siegsdorf Kr Traunstein", :area_code => "8662") + AreaCode.create(:country => germany, :name => "Ruhpolding", :area_code => "8663") + AreaCode.create(:country => germany, :name => "Chieming", :area_code => "8664") + AreaCode.create(:country => germany, :name => "Inzell", :area_code => "8665") + AreaCode.create(:country => germany, :name => "Teisendorf", :area_code => "8666") + AreaCode.create(:country => germany, :name => "Seeon-Seebruck", :area_code => "8667") + AreaCode.create(:country => germany, :name => "Traunreut", :area_code => "8669") + AreaCode.create(:country => germany, :name => "Reischach Kr Altötting", :area_code => "8670") + AreaCode.create(:country => germany, :name => "Altötting", :area_code => "8671") + AreaCode.create(:country => germany, :name => "Burghausen Salzach", :area_code => "8677") + AreaCode.create(:country => germany, :name => "Marktl", :area_code => "8678") + AreaCode.create(:country => germany, :name => "Burgkirchen a d Alz", :area_code => "8679") + AreaCode.create(:country => germany, :name => "Waging a See", :area_code => "8681") + AreaCode.create(:country => germany, :name => "Laufen Salzach", :area_code => "8682") + AreaCode.create(:country => germany, :name => "Tittmoning", :area_code => "8683") + AreaCode.create(:country => germany, :name => "Fridolfing", :area_code => "8684") + AreaCode.create(:country => germany, :name => "Kirchanschöring", :area_code => "8685") + AreaCode.create(:country => germany, :name => "Petting", :area_code => "8686") + AreaCode.create(:country => germany, :name => "Taching-Tengling", :area_code => "8687") + AreaCode.create(:country => germany, :name => "Wörth a d Isar", :area_code => "8702") + AreaCode.create(:country => germany, :name => "Essenbach", :area_code => "8703") + AreaCode.create(:country => germany, :name => "Altdorf-Pfettrach", :area_code => "8704") + AreaCode.create(:country => germany, :name => "Altfraunhofen", :area_code => "8705") + AreaCode.create(:country => germany, :name => "Vilsheim", :area_code => "8706") + AreaCode.create(:country => germany, :name => "Adlkofen", :area_code => "8707") + AreaCode.create(:country => germany, :name => "Weihmichl-Unterneuhausen", :area_code => "8708") + AreaCode.create(:country => germany, :name => "Eching Niederbay", :area_code => "8709") + AreaCode.create(:country => germany, :name => "Landshut", :area_code => "871") + AreaCode.create(:country => germany, :name => "Eggenfelden", :area_code => "8721") + AreaCode.create(:country => germany, :name => "Gangkofen", :area_code => "8722") + AreaCode.create(:country => germany, :name => "Arnstorf", :area_code => "8723") + AreaCode.create(:country => germany, :name => "Massing", :area_code => "8724") + AreaCode.create(:country => germany, :name => "Wurmannsquick", :area_code => "8725") + AreaCode.create(:country => germany, :name => "Schönau Niederbay", :area_code => "8726") + AreaCode.create(:country => germany, :name => "Falkenberg Niederbay", :area_code => "8727") + AreaCode.create(:country => germany, :name => "Geratskirchen", :area_code => "8728") + AreaCode.create(:country => germany, :name => "Dingolfing", :area_code => "8731") + AreaCode.create(:country => germany, :name => "Frontenhausen", :area_code => "8732") + AreaCode.create(:country => germany, :name => "Mengkofen", :area_code => "8733") + AreaCode.create(:country => germany, :name => "Reisbach Niederbay", :area_code => "8734") + AreaCode.create(:country => germany, :name => "Gangkofen-Kollbach", :area_code => "8735") + AreaCode.create(:country => germany, :name => "Vilsbiburg", :area_code => "8741") + AreaCode.create(:country => germany, :name => "Velden Vils", :area_code => "8742") + AreaCode.create(:country => germany, :name => "Geisenhausen", :area_code => "8743") + AreaCode.create(:country => germany, :name => "Gerzen", :area_code => "8744") + AreaCode.create(:country => germany, :name => "Bodenkirchen", :area_code => "8745") + AreaCode.create(:country => germany, :name => "Mainburg", :area_code => "8751") + AreaCode.create(:country => germany, :name => "Au i d Hallertau", :area_code => "8752") + AreaCode.create(:country => germany, :name => "Elsendorf Niederbay", :area_code => "8753") + AreaCode.create(:country => germany, :name => "Volkenschwand", :area_code => "8754") + AreaCode.create(:country => germany, :name => "Nandlstadt", :area_code => "8756") + AreaCode.create(:country => germany, :name => "Moosburg a d Isar", :area_code => "8761") + AreaCode.create(:country => germany, :name => "Wartenberg Oberbay", :area_code => "8762") + AreaCode.create(:country => germany, :name => "Mauern Kr Freising", :area_code => "8764") + AreaCode.create(:country => germany, :name => "Bruckberg Niederbay", :area_code => "8765") + AreaCode.create(:country => germany, :name => "Gammelsdorf", :area_code => "8766") + AreaCode.create(:country => germany, :name => "Ergoldsbach", :area_code => "8771") + AreaCode.create(:country => germany, :name => "Mallersdorf-Pfaffenberg", :area_code => "8772") + AreaCode.create(:country => germany, :name => "Neufahrn i NB", :area_code => "8773") + AreaCode.create(:country => germany, :name => "Bayerbach b Ergoldsbach", :area_code => "8774") + AreaCode.create(:country => germany, :name => "Rottenburg a d Laaber", :area_code => "8781") + AreaCode.create(:country => germany, :name => "Pfeffenhausen", :area_code => "8782") + AreaCode.create(:country => germany, :name => "Rohr i NB", :area_code => "8783") + AreaCode.create(:country => germany, :name => "Hohenthann", :area_code => "8784") + AreaCode.create(:country => germany, :name => "Rottenburg-Oberroning", :area_code => "8785") + AreaCode.create(:country => germany, :name => "Seeshaupt", :area_code => "8801") + AreaCode.create(:country => germany, :name => "Huglfing", :area_code => "8802") + AreaCode.create(:country => germany, :name => "Peissenberg", :area_code => "8803") + AreaCode.create(:country => germany, :name => "Hohenpeissenberg", :area_code => "8805") + AreaCode.create(:country => germany, :name => "Utting a Ammersee", :area_code => "8806") + AreaCode.create(:country => germany, :name => "Dießen a Ammersee", :area_code => "8807") + AreaCode.create(:country => germany, :name => "Pähl", :area_code => "8808") + AreaCode.create(:country => germany, :name => "Wessobrunn", :area_code => "8809") + AreaCode.create(:country => germany, :name => "Weilheim i OB", :area_code => "881") + AreaCode.create(:country => germany, :name => "Garmisch-Partenkirchen", :area_code => "8821") + AreaCode.create(:country => germany, :name => "Oberammergau", :area_code => "8822") + AreaCode.create(:country => germany, :name => "Mittenwald", :area_code => "8823") + AreaCode.create(:country => germany, :name => "Oberau Loisach", :area_code => "8824") + AreaCode.create(:country => germany, :name => "Krün", :area_code => "8825") + AreaCode.create(:country => germany, :name => "Murnau a Staffelsee", :area_code => "8841") + AreaCode.create(:country => germany, :name => "Bad Kohlgrub", :area_code => "8845") + AreaCode.create(:country => germany, :name => "Uffing a Staffelsee", :area_code => "8846") + AreaCode.create(:country => germany, :name => "Obersöchering", :area_code => "8847") + AreaCode.create(:country => germany, :name => "Kochel a See", :area_code => "8851") + AreaCode.create(:country => germany, :name => "Penzberg", :area_code => "8856") + AreaCode.create(:country => germany, :name => "Benediktbeuern", :area_code => "8857") + AreaCode.create(:country => germany, :name => "Kochel-Walchensee", :area_code => "8858") + AreaCode.create(:country => germany, :name => "Bernbeuren", :area_code => "8860") + AreaCode.create(:country => germany, :name => "Schongau", :area_code => "8861") + AreaCode.create(:country => germany, :name => "Steingaden Oberbay", :area_code => "8862") + AreaCode.create(:country => germany, :name => "Rottenbuch Oberbay", :area_code => "8867") + AreaCode.create(:country => germany, :name => "Schwabsoien", :area_code => "8868") + AreaCode.create(:country => germany, :name => "Kinsau", :area_code => "8869") + AreaCode.create(:country => germany, :name => "München", :area_code => "89") + AreaCode.create(:country => germany, :name => "Donauwörth", :area_code => "906") + AreaCode.create(:country => germany, :name => "Tapfheim", :area_code => "9070") + AreaCode.create(:country => germany, :name => "Dillingen a d Donau", :area_code => "9071") + AreaCode.create(:country => germany, :name => "Lauingen Donau", :area_code => "9072") + AreaCode.create(:country => germany, :name => "Gundelfingen a d Donau", :area_code => "9073") + AreaCode.create(:country => germany, :name => "Höchstädt a d Donau", :area_code => "9074") + AreaCode.create(:country => germany, :name => "Glött", :area_code => "9075") + AreaCode.create(:country => germany, :name => "Wittislingen", :area_code => "9076") + AreaCode.create(:country => germany, :name => "Bachhagel", :area_code => "9077") + AreaCode.create(:country => germany, :name => "Mertingen", :area_code => "9078") + AreaCode.create(:country => germany, :name => "Harburg Schwaben", :area_code => "9080") + AreaCode.create(:country => germany, :name => "Nördlingen", :area_code => "9081") + AreaCode.create(:country => germany, :name => "Oettingen i Bay", :area_code => "9082") + AreaCode.create(:country => germany, :name => "Möttingen", :area_code => "9083") + AreaCode.create(:country => germany, :name => "Bissingen Schwab", :area_code => "9084") + AreaCode.create(:country => germany, :name => "Alerheim", :area_code => "9085") + AreaCode.create(:country => germany, :name => "Fremdingen", :area_code => "9086") + AreaCode.create(:country => germany, :name => "Marktoffingen", :area_code => "9087") + AreaCode.create(:country => germany, :name => "Mönchsdeggingen", :area_code => "9088") + AreaCode.create(:country => germany, :name => "Bissingen-Unterringingen", :area_code => "9089") + AreaCode.create(:country => germany, :name => "Rain Lech", :area_code => "9090") + AreaCode.create(:country => germany, :name => "Monheim Schwab", :area_code => "9091") + AreaCode.create(:country => germany, :name => "Wemding", :area_code => "9092") + AreaCode.create(:country => germany, :name => "Polsingen", :area_code => "9093") + AreaCode.create(:country => germany, :name => "Tagmersheim", :area_code => "9094") + AreaCode.create(:country => germany, :name => "Marxheim", :area_code => "9097") + AreaCode.create(:country => germany, :name => "Kaisheim", :area_code => "9099") + AreaCode.create(:country => germany, :name => "Langenzenn", :area_code => "9101") + AreaCode.create(:country => germany, :name => "Wilhermsdorf", :area_code => "9102") + AreaCode.create(:country => germany, :name => "Cadolzburg", :area_code => "9103") + AreaCode.create(:country => germany, :name => "Emskirchen", :area_code => "9104") + AreaCode.create(:country => germany, :name => "Grosshabersdorf", :area_code => "9105") + AreaCode.create(:country => germany, :name => "Markt Erlbach", :area_code => "9106") + AreaCode.create(:country => germany, :name => "Trautskirchen", :area_code => "9107") + AreaCode.create(:country => germany, :name => "Nürnberg", :area_code => "911") + AreaCode.create(:country => germany, :name => "Leinburg", :area_code => "9120") + AreaCode.create(:country => germany, :name => "Schwabach", :area_code => "9122") + AreaCode.create(:country => germany, :name => "Lauf a d Pegnitz", :area_code => "9123") + AreaCode.create(:country => germany, :name => "Eckental", :area_code => "9126") + AreaCode.create(:country => germany, :name => "Rosstal Mittelfr", :area_code => "9127") + AreaCode.create(:country => germany, :name => "Feucht", :area_code => "9128") + AreaCode.create(:country => germany, :name => "Wendelstein", :area_code => "9129") + AreaCode.create(:country => germany, :name => "Erlangen", :area_code => "9131") + AreaCode.create(:country => germany, :name => "Herzogenaurach", :area_code => "9132") + AreaCode.create(:country => germany, :name => "Baiersdorf Mittelfr", :area_code => "9133") + AreaCode.create(:country => germany, :name => "Neunkirchen a Brand", :area_code => "9134") + AreaCode.create(:country => germany, :name => "Heßdorf Mittelfr", :area_code => "9135") + AreaCode.create(:country => germany, :name => "Weißenburg i Bay", :area_code => "9141") + AreaCode.create(:country => germany, :name => "Treuchtlingen", :area_code => "9142") + AreaCode.create(:country => germany, :name => "Pappenheim Mittelfr", :area_code => "9143") + AreaCode.create(:country => germany, :name => "Pleinfeld", :area_code => "9144") + AreaCode.create(:country => germany, :name => "Solnhofen", :area_code => "9145") + AreaCode.create(:country => germany, :name => "Markt Berolzheim", :area_code => "9146") + AreaCode.create(:country => germany, :name => "Nennslingen", :area_code => "9147") + AreaCode.create(:country => germany, :name => "Ettenstatt", :area_code => "9148") + AreaCode.create(:country => germany, :name => "Weissenburg-Suffersheim", :area_code => "9149") + AreaCode.create(:country => germany, :name => "Hersbruck", :area_code => "9151") + AreaCode.create(:country => germany, :name => "Hartenstein Mittelfr", :area_code => "9152") + AreaCode.create(:country => germany, :name => "Schnaittach", :area_code => "9153") + AreaCode.create(:country => germany, :name => "Pommelsbrunn", :area_code => "9154") + AreaCode.create(:country => germany, :name => "Simmelsdorf", :area_code => "9155") + AreaCode.create(:country => germany, :name => "Neuhaus a d Pegnitz", :area_code => "9156") + AreaCode.create(:country => germany, :name => "Alfeld Mittelfr", :area_code => "9157") + AreaCode.create(:country => germany, :name => "Offenhausen Mittelfr", :area_code => "9158") + AreaCode.create(:country => germany, :name => "Neustadt a d Aisch", :area_code => "9161") + AreaCode.create(:country => germany, :name => "Scheinfeld", :area_code => "9162") + AreaCode.create(:country => germany, :name => "Dachsbach", :area_code => "9163") + AreaCode.create(:country => germany, :name => "Langenfeld Mittelfr", :area_code => "9164") + AreaCode.create(:country => germany, :name => "Sugenheim", :area_code => "9165") + AreaCode.create(:country => germany, :name => "Münchsteinach", :area_code => "9166") + AreaCode.create(:country => germany, :name => "Oberscheinfeld", :area_code => "9167") + AreaCode.create(:country => germany, :name => "Schwanstetten", :area_code => "9170") + AreaCode.create(:country => germany, :name => "Roth Mittelfr", :area_code => "9171") + AreaCode.create(:country => germany, :name => "Georgensgmünd", :area_code => "9172") + AreaCode.create(:country => germany, :name => "Thalmässing", :area_code => "9173") + AreaCode.create(:country => germany, :name => "Hilpoltstein", :area_code => "9174") + AreaCode.create(:country => germany, :name => "Spalt", :area_code => "9175") + AreaCode.create(:country => germany, :name => "Allersberg", :area_code => "9176") + AreaCode.create(:country => germany, :name => "Heideck", :area_code => "9177") + AreaCode.create(:country => germany, :name => "Abenberg Mittelfr", :area_code => "9178") + AreaCode.create(:country => germany, :name => "Freystadt", :area_code => "9179") + AreaCode.create(:country => germany, :name => "Pyrbaum", :area_code => "9180") + AreaCode.create(:country => germany, :name => "Neumarkt i d Opf", :area_code => "9181") + AreaCode.create(:country => germany, :name => "Velburg", :area_code => "9182") + AreaCode.create(:country => germany, :name => "Burgthann", :area_code => "9183") + AreaCode.create(:country => germany, :name => "Deining Oberpf", :area_code => "9184") + AreaCode.create(:country => germany, :name => "Mühlhausen Oberpf", :area_code => "9185") + AreaCode.create(:country => germany, :name => "Lauterhofen Oberpf", :area_code => "9186") + AreaCode.create(:country => germany, :name => "Altdorf b Nürnberg", :area_code => "9187") + AreaCode.create(:country => germany, :name => "Postbauer-Heng", :area_code => "9188") + AreaCode.create(:country => germany, :name => "Berg b Neumarkt i d Opf", :area_code => "9189") + AreaCode.create(:country => germany, :name => "Heroldsbach", :area_code => "9190") + AreaCode.create(:country => germany, :name => "Forchheim Oberfr", :area_code => "9191") + AreaCode.create(:country => germany, :name => "Gräfenberg", :area_code => "9192") + AreaCode.create(:country => germany, :name => "Höchstadt a d Aisch", :area_code => "9193") + AreaCode.create(:country => germany, :name => "Ebermannstadt", :area_code => "9194") + AreaCode.create(:country => germany, :name => "Adelsdorf Mittelfr", :area_code => "9195") + AreaCode.create(:country => germany, :name => "Wiesenttal", :area_code => "9196") + AreaCode.create(:country => germany, :name => "Egloffstein", :area_code => "9197") + AreaCode.create(:country => germany, :name => "Heiligenstadt i Ofr", :area_code => "9198") + AreaCode.create(:country => germany, :name => "Kunreuth", :area_code => "9199") + AreaCode.create(:country => germany, :name => "Gesees", :area_code => "9201") + AreaCode.create(:country => germany, :name => "Waischenfeld", :area_code => "9202") + AreaCode.create(:country => germany, :name => "Neudrossenfeld", :area_code => "9203") + AreaCode.create(:country => germany, :name => "Plankenfels", :area_code => "9204") + AreaCode.create(:country => germany, :name => "Vorbach", :area_code => "9205") + AreaCode.create(:country => germany, :name => "Mistelgau-Obernsees", :area_code => "9206") + AreaCode.create(:country => germany, :name => "Königsfeld Oberfr", :area_code => "9207") + AreaCode.create(:country => germany, :name => "Bindlach", :area_code => "9208") + AreaCode.create(:country => germany, :name => "Emtmannsberg", :area_code => "9209") + AreaCode.create(:country => germany, :name => "Bayreuth", :area_code => "921") + AreaCode.create(:country => germany, :name => "Kasendorf-Azendorf", :area_code => "9220") + AreaCode.create(:country => germany, :name => "Kulmbach", :area_code => "9221") + AreaCode.create(:country => germany, :name => "Presseck", :area_code => "9222") + AreaCode.create(:country => germany, :name => "Rugendorf", :area_code => "9223") + AreaCode.create(:country => germany, :name => "Stadtsteinach", :area_code => "9225") + AreaCode.create(:country => germany, :name => "Neuenmarkt", :area_code => "9227") + AreaCode.create(:country => germany, :name => "Thurnau", :area_code => "9228") + AreaCode.create(:country => germany, :name => "Mainleus", :area_code => "9229") + AreaCode.create(:country => germany, :name => "Marktredwitz", :area_code => "9231") + AreaCode.create(:country => germany, :name => "Wunsiedel", :area_code => "9232") + AreaCode.create(:country => germany, :name => "Arzberg Oberfr", :area_code => "9233") + AreaCode.create(:country => germany, :name => "Neusorg", :area_code => "9234") + AreaCode.create(:country => germany, :name => "Thierstein", :area_code => "9235") + AreaCode.create(:country => germany, :name => "Nagel", :area_code => "9236") + AreaCode.create(:country => germany, :name => "Röslau", :area_code => "9238") + AreaCode.create(:country => germany, :name => "Pegnitz", :area_code => "9241") + AreaCode.create(:country => germany, :name => "Gößweinstein", :area_code => "9242") + AreaCode.create(:country => germany, :name => "Pottenstein", :area_code => "9243") + AreaCode.create(:country => germany, :name => "Betzenstein", :area_code => "9244") + AreaCode.create(:country => germany, :name => "Obertrubach", :area_code => "9245") + AreaCode.create(:country => germany, :name => "Pegnitz-Trockau", :area_code => "9246") + AreaCode.create(:country => germany, :name => "Münchberg", :area_code => "9251") + AreaCode.create(:country => germany, :name => "Helmbrechts", :area_code => "9252") + AreaCode.create(:country => germany, :name => "Weissenstadt", :area_code => "9253") + AreaCode.create(:country => germany, :name => "Gefrees", :area_code => "9254") + AreaCode.create(:country => germany, :name => "Marktleugast", :area_code => "9255") + AreaCode.create(:country => germany, :name => "Stammbach", :area_code => "9256") + AreaCode.create(:country => germany, :name => "Zell Oberfr", :area_code => "9257") + AreaCode.create(:country => germany, :name => "Wilhelmsthal Oberfr", :area_code => "9260") + AreaCode.create(:country => germany, :name => "Kronach", :area_code => "9261") + AreaCode.create(:country => germany, :name => "Wallenfels", :area_code => "9262") + AreaCode.create(:country => germany, :name => "Ludwigsstadt", :area_code => "9263") + AreaCode.create(:country => germany, :name => "Küps", :area_code => "9264") + AreaCode.create(:country => germany, :name => "Pressig", :area_code => "9265") + AreaCode.create(:country => germany, :name => "Mitwitz", :area_code => "9266") + AreaCode.create(:country => germany, :name => "Nordhalben", :area_code => "9267") + AreaCode.create(:country => germany, :name => "Teuschnitz", :area_code => "9268") + AreaCode.create(:country => germany, :name => "Tettau Kr Kronach", :area_code => "9269") + AreaCode.create(:country => germany, :name => "Creussen", :area_code => "9270") + AreaCode.create(:country => germany, :name => "Thurnau-Alladorf", :area_code => "9271") + AreaCode.create(:country => germany, :name => "Fichtelberg", :area_code => "9272") + AreaCode.create(:country => germany, :name => "Bad Berneck i Fichtelgebirge", :area_code => "9273") + AreaCode.create(:country => germany, :name => "Hollfeld", :area_code => "9274") + AreaCode.create(:country => germany, :name => "Speichersdorf", :area_code => "9275") + AreaCode.create(:country => germany, :name => "Bischofsgrün", :area_code => "9276") + AreaCode.create(:country => germany, :name => "Warmensteinach", :area_code => "9277") + AreaCode.create(:country => germany, :name => "Weidenberg", :area_code => "9278") + AreaCode.create(:country => germany, :name => "Mistelgau", :area_code => "9279") + AreaCode.create(:country => germany, :name => "Selbitz Oberfr", :area_code => "9280") + AreaCode.create(:country => germany, :name => "Hof Saale", :area_code => "9281") + AreaCode.create(:country => germany, :name => "Naila", :area_code => "9282") + AreaCode.create(:country => germany, :name => "Rehau", :area_code => "9283") + AreaCode.create(:country => germany, :name => "Schwarzenbach a d Saale", :area_code => "9284") + AreaCode.create(:country => germany, :name => "Kirchenlamitz", :area_code => "9285") + AreaCode.create(:country => germany, :name => "Oberkotzau", :area_code => "9286") + AreaCode.create(:country => germany, :name => "Selb", :area_code => "9287") + AreaCode.create(:country => germany, :name => "Bad Steben", :area_code => "9288") + AreaCode.create(:country => germany, :name => "Schwarzenbach a Wald", :area_code => "9289") + AreaCode.create(:country => germany, :name => "Konradsreuth", :area_code => "9292") + AreaCode.create(:country => germany, :name => "Berg Oberfr", :area_code => "9293") + AreaCode.create(:country => germany, :name => "Regnitzlosau", :area_code => "9294") + AreaCode.create(:country => germany, :name => "Töpen", :area_code => "9295") + AreaCode.create(:country => germany, :name => "Rottendorf Unterfr", :area_code => "9302") + AreaCode.create(:country => germany, :name => "Eibelstadt", :area_code => "9303") + AreaCode.create(:country => germany, :name => "Estenfeld", :area_code => "9305") + AreaCode.create(:country => germany, :name => "Kist", :area_code => "9306") + AreaCode.create(:country => germany, :name => "Altertheim", :area_code => "9307") + AreaCode.create(:country => germany, :name => "Würzburg", :area_code => "931") + AreaCode.create(:country => germany, :name => "Kitzingen", :area_code => "9321") + AreaCode.create(:country => germany, :name => "Iphofen", :area_code => "9323") + AreaCode.create(:country => germany, :name => "Dettelbach", :area_code => "9324") + AreaCode.create(:country => germany, :name => "Kleinlangheim", :area_code => "9325") + AreaCode.create(:country => germany, :name => "Markt Einersheim", :area_code => "9326") + AreaCode.create(:country => germany, :name => "Ochsenfurt", :area_code => "9331") + AreaCode.create(:country => germany, :name => "Marktbreit", :area_code => "9332") + AreaCode.create(:country => germany, :name => "Sommerhausen", :area_code => "9333") + AreaCode.create(:country => germany, :name => "Giebelstadt", :area_code => "9334") + AreaCode.create(:country => germany, :name => "Aub Kr Würzburg", :area_code => "9335") + AreaCode.create(:country => germany, :name => "Bütthard", :area_code => "9336") + AreaCode.create(:country => germany, :name => "Gaukönigshofen", :area_code => "9337") + AreaCode.create(:country => germany, :name => "Röttingen Unterfr", :area_code => "9338") + AreaCode.create(:country => germany, :name => "Ippesheim", :area_code => "9339") + AreaCode.create(:country => germany, :name => "Königheim-Brehmen", :area_code => "9340") + AreaCode.create(:country => germany, :name => "Tauberbischofsheim", :area_code => "9341") + AreaCode.create(:country => germany, :name => "Wertheim", :area_code => "9342") + AreaCode.create(:country => germany, :name => "Lauda-Königshofen", :area_code => "9343") + AreaCode.create(:country => germany, :name => "Gerchsheim", :area_code => "9344") + AreaCode.create(:country => germany, :name => "Külsheim Baden", :area_code => "9345") + AreaCode.create(:country => germany, :name => "Grünsfeld", :area_code => "9346") + AreaCode.create(:country => germany, :name => "Wittighausen", :area_code => "9347") + AreaCode.create(:country => germany, :name => "Werbach-Gamburg", :area_code => "9348") + AreaCode.create(:country => germany, :name => "Werbach-Wenkheim", :area_code => "9349") + AreaCode.create(:country => germany, :name => "Eussenheim-Hundsbach", :area_code => "9350") + AreaCode.create(:country => germany, :name => "Gemünden a Main", :area_code => "9351") + AreaCode.create(:country => germany, :name => "Lohr a Main", :area_code => "9352") + AreaCode.create(:country => germany, :name => "Karlstadt", :area_code => "9353") + AreaCode.create(:country => germany, :name => "Rieneck", :area_code => "9354") + AreaCode.create(:country => germany, :name => "Frammersbach", :area_code => "9355") + AreaCode.create(:country => germany, :name => "Burgsinn", :area_code => "9356") + AreaCode.create(:country => germany, :name => "Gräfendorf Bay", :area_code => "9357") + AreaCode.create(:country => germany, :name => "Gössenheim", :area_code => "9358") + AreaCode.create(:country => germany, :name => "Karlstadt-Wiesenfeld", :area_code => "9359") + AreaCode.create(:country => germany, :name => "Thüngen", :area_code => "9360") + AreaCode.create(:country => germany, :name => "Arnstein Unterfr", :area_code => "9363") + AreaCode.create(:country => germany, :name => "Zellingen", :area_code => "9364") + AreaCode.create(:country => germany, :name => "Rimpar", :area_code => "9365") + AreaCode.create(:country => germany, :name => "Geroldshausen Unterfr", :area_code => "9366") + AreaCode.create(:country => germany, :name => "Unterpleichfeld", :area_code => "9367") + AreaCode.create(:country => germany, :name => "Uettingen", :area_code => "9369") + AreaCode.create(:country => germany, :name => "Miltenberg", :area_code => "9371") + AreaCode.create(:country => germany, :name => "Klingenberg a Main", :area_code => "9372") + AreaCode.create(:country => germany, :name => "Amorbach", :area_code => "9373") + AreaCode.create(:country => germany, :name => "Eschau", :area_code => "9374") + AreaCode.create(:country => germany, :name => "Freudenberg Baden", :area_code => "9375") + AreaCode.create(:country => germany, :name => "Collenberg", :area_code => "9376") + AreaCode.create(:country => germany, :name => "Freudenberg-Boxtal", :area_code => "9377") + AreaCode.create(:country => germany, :name => "Eichenbühl-Riedern", :area_code => "9378") + AreaCode.create(:country => germany, :name => "Volkach", :area_code => "9381") + AreaCode.create(:country => germany, :name => "Gerolzhofen", :area_code => "9382") + AreaCode.create(:country => germany, :name => "Wiesentheid", :area_code => "9383") + AreaCode.create(:country => germany, :name => "Schwanfeld", :area_code => "9384") + AreaCode.create(:country => germany, :name => "Kolitzheim", :area_code => "9385") + AreaCode.create(:country => germany, :name => "Prosselsheim", :area_code => "9386") + AreaCode.create(:country => germany, :name => "Marktheidenfeld", :area_code => "9391") + AreaCode.create(:country => germany, :name => "Faulbach Unterfr", :area_code => "9392") + AreaCode.create(:country => germany, :name => "Rothenfels Unterfr", :area_code => "9393") + AreaCode.create(:country => germany, :name => "Esselbach", :area_code => "9394") + AreaCode.create(:country => germany, :name => "Triefenstein", :area_code => "9395") + AreaCode.create(:country => germany, :name => "Urspringen b Lohr", :area_code => "9396") + AreaCode.create(:country => germany, :name => "Wertheim-Dertingen", :area_code => "9397") + AreaCode.create(:country => germany, :name => "Birkenfeld b Würzburg", :area_code => "9398") + AreaCode.create(:country => germany, :name => "Neutraubling", :area_code => "9401") + AreaCode.create(:country => germany, :name => "Regenstauf", :area_code => "9402") + AreaCode.create(:country => germany, :name => "Donaustauf", :area_code => "9403") + AreaCode.create(:country => germany, :name => "Nittendorf", :area_code => "9404") + AreaCode.create(:country => germany, :name => "Bad Abbach", :area_code => "9405") + AreaCode.create(:country => germany, :name => "Mintraching", :area_code => "9406") + AreaCode.create(:country => germany, :name => "Wenzenbach", :area_code => "9407") + AreaCode.create(:country => germany, :name => "Altenthann", :area_code => "9408") + AreaCode.create(:country => germany, :name => "Pielenhofen", :area_code => "9409") + AreaCode.create(:country => germany, :name => "Regensburg", :area_code => "941") + AreaCode.create(:country => germany, :name => "Feldkirchen Niederbay", :area_code => "9420") + AreaCode.create(:country => germany, :name => "Straubing", :area_code => "9421") + AreaCode.create(:country => germany, :name => "Bogen Niederbay", :area_code => "9422") + AreaCode.create(:country => germany, :name => "Geiselhöring", :area_code => "9423") + AreaCode.create(:country => germany, :name => "Strasskirchen", :area_code => "9424") + AreaCode.create(:country => germany, :name => "Oberschneiding", :area_code => "9426") + AreaCode.create(:country => germany, :name => "Leiblfing", :area_code => "9427") + AreaCode.create(:country => germany, :name => "Kirchroth", :area_code => "9428") + AreaCode.create(:country => germany, :name => "Rain Niederbay", :area_code => "9429") + AreaCode.create(:country => germany, :name => "Schwandorf", :area_code => "9431") + AreaCode.create(:country => germany, :name => "Nabburg", :area_code => "9433") + AreaCode.create(:country => germany, :name => "Bodenwöhr", :area_code => "9434") + AreaCode.create(:country => germany, :name => "Schwarzenfeld", :area_code => "9435") + AreaCode.create(:country => germany, :name => "Nittenau", :area_code => "9436") + AreaCode.create(:country => germany, :name => "Fensterbach", :area_code => "9438") + AreaCode.create(:country => germany, :name => "Neunburg-Kemnath", :area_code => "9439") + AreaCode.create(:country => germany, :name => "Kelheim", :area_code => "9441") + AreaCode.create(:country => germany, :name => "Riedenburg", :area_code => "9442") + AreaCode.create(:country => germany, :name => "Abensberg", :area_code => "9443") + AreaCode.create(:country => germany, :name => "Siegenburg", :area_code => "9444") + AreaCode.create(:country => germany, :name => "Neustadt a d Donau", :area_code => "9445") + AreaCode.create(:country => germany, :name => "Altmannstein", :area_code => "9446") + AreaCode.create(:country => germany, :name => "Essing", :area_code => "9447") + AreaCode.create(:country => germany, :name => "Hausen Niederbay", :area_code => "9448") + AreaCode.create(:country => germany, :name => "Schierling", :area_code => "9451") + AreaCode.create(:country => germany, :name => "Langquaid", :area_code => "9452") + AreaCode.create(:country => germany, :name => "Thalmassing", :area_code => "9453") + AreaCode.create(:country => germany, :name => "Aufhausen Oberpf", :area_code => "9454") + AreaCode.create(:country => germany, :name => "Roding", :area_code => "9461") + AreaCode.create(:country => germany, :name => "Falkenstein Oberpf", :area_code => "9462") + AreaCode.create(:country => germany, :name => "Wald Oberpf", :area_code => "9463") + AreaCode.create(:country => germany, :name => "Walderbach", :area_code => "9464") + AreaCode.create(:country => germany, :name => "Neukirchen-Balbini", :area_code => "9465") + AreaCode.create(:country => germany, :name => "Stamsried", :area_code => "9466") + AreaCode.create(:country => germany, :name => "Michelsneukirchen", :area_code => "9467") + AreaCode.create(:country => germany, :name => "Zell Oberpf", :area_code => "9468") + AreaCode.create(:country => germany, :name => "Roding-Neubäu", :area_code => "9469") + AreaCode.create(:country => germany, :name => "Burglengenfeld", :area_code => "9471") + AreaCode.create(:country => germany, :name => "Hohenfels Oberpf", :area_code => "9472") + AreaCode.create(:country => germany, :name => "Kallmünz", :area_code => "9473") + AreaCode.create(:country => germany, :name => "Schmidmühlen", :area_code => "9474") + AreaCode.create(:country => germany, :name => "Sünching", :area_code => "9480") + AreaCode.create(:country => germany, :name => "Pfatter", :area_code => "9481") + AreaCode.create(:country => germany, :name => "Wörth a d Donau", :area_code => "9482") + AreaCode.create(:country => germany, :name => "Brennberg", :area_code => "9484") + AreaCode.create(:country => germany, :name => "Hemau", :area_code => "9491") + AreaCode.create(:country => germany, :name => "Parsberg", :area_code => "9492") + AreaCode.create(:country => germany, :name => "Beratzhausen", :area_code => "9493") + AreaCode.create(:country => germany, :name => "Breitenbrunn Oberpf", :area_code => "9495") + AreaCode.create(:country => germany, :name => "Seubersdorf i d Opf", :area_code => "9497") + AreaCode.create(:country => germany, :name => "Laaber", :area_code => "9498") + AreaCode.create(:country => germany, :name => "Painten", :area_code => "9499") + AreaCode.create(:country => germany, :name => "Frensdorf", :area_code => "9502") + AreaCode.create(:country => germany, :name => "Oberhaid Oberfr", :area_code => "9503") + AreaCode.create(:country => germany, :name => "Stadelhofen", :area_code => "9504") + AreaCode.create(:country => germany, :name => "Litzendorf", :area_code => "9505") + AreaCode.create(:country => germany, :name => "Bamberg", :area_code => "951") + AreaCode.create(:country => germany, :name => "Hassfurt", :area_code => "9521") + AreaCode.create(:country => germany, :name => "Eltmann", :area_code => "9522") + AreaCode.create(:country => germany, :name => "Hofheim i Ufr", :area_code => "9523") + AreaCode.create(:country => germany, :name => "Zeil a Main", :area_code => "9524") + AreaCode.create(:country => germany, :name => "Königsberg i Bay", :area_code => "9525") + AreaCode.create(:country => germany, :name => "Riedbach", :area_code => "9526") + AreaCode.create(:country => germany, :name => "Knetzgau", :area_code => "9527") + AreaCode.create(:country => germany, :name => "Donnersdorf", :area_code => "9528") + AreaCode.create(:country => germany, :name => "Oberaurach", :area_code => "9529") + AreaCode.create(:country => germany, :name => "Ebern", :area_code => "9531") + AreaCode.create(:country => germany, :name => "Maroldsweisach", :area_code => "9532") + AreaCode.create(:country => germany, :name => "Untermerzbach", :area_code => "9533") + AreaCode.create(:country => germany, :name => "Burgpreppach", :area_code => "9534") + AreaCode.create(:country => germany, :name => "Pfarrweisach", :area_code => "9535") + AreaCode.create(:country => germany, :name => "Kirchlauter", :area_code => "9536") + AreaCode.create(:country => germany, :name => "Schesslitz", :area_code => "9542") + AreaCode.create(:country => germany, :name => "Hirschaid", :area_code => "9543") + AreaCode.create(:country => germany, :name => "Baunach", :area_code => "9544") + AreaCode.create(:country => germany, :name => "Buttenheim", :area_code => "9545") + AreaCode.create(:country => germany, :name => "Burgebrach", :area_code => "9546") + AreaCode.create(:country => germany, :name => "Zapfendorf", :area_code => "9547") + AreaCode.create(:country => germany, :name => "Mühlhausen Mittelfr", :area_code => "9548") + AreaCode.create(:country => germany, :name => "Lisberg", :area_code => "9549") + AreaCode.create(:country => germany, :name => "Burgwindheim", :area_code => "9551") + AreaCode.create(:country => germany, :name => "Burghaslach", :area_code => "9552") + AreaCode.create(:country => germany, :name => "Ebrach Oberfr", :area_code => "9553") + AreaCode.create(:country => germany, :name => "Untersteinbach Unterfr", :area_code => "9554") + AreaCode.create(:country => germany, :name => "Schlüsselfeld-Aschbach", :area_code => "9555") + AreaCode.create(:country => germany, :name => "Geiselwind", :area_code => "9556") + AreaCode.create(:country => germany, :name => "Grub a Forst", :area_code => "9560") + AreaCode.create(:country => germany, :name => "Coburg", :area_code => "9561") + AreaCode.create(:country => germany, :name => "Sonnefeld", :area_code => "9562") + AreaCode.create(:country => germany, :name => "Rödental", :area_code => "9563") + AreaCode.create(:country => germany, :name => "Bad Rodach", :area_code => "9564") + AreaCode.create(:country => germany, :name => "Untersiemau", :area_code => "9565") + AreaCode.create(:country => germany, :name => "Meeder", :area_code => "9566") + AreaCode.create(:country => germany, :name => "Seßlach-Gemünda", :area_code => "9567") + AreaCode.create(:country => germany, :name => "Neustadt b Coburg", :area_code => "9568") + AreaCode.create(:country => germany, :name => "Sesslach", :area_code => "9569") + AreaCode.create(:country => germany, :name => "Lichtenfels Bay", :area_code => "9571") + AreaCode.create(:country => germany, :name => "Burgkunstadt", :area_code => "9572") + AreaCode.create(:country => germany, :name => "Staffelstein Oberfr", :area_code => "9573") + AreaCode.create(:country => germany, :name => "Marktzeuln", :area_code => "9574") + AreaCode.create(:country => germany, :name => "Weismain", :area_code => "9575") + AreaCode.create(:country => germany, :name => "Lichtenfels-Isling", :area_code => "9576") + AreaCode.create(:country => germany, :name => "Neustadt a d Waldnaab", :area_code => "9602") + AreaCode.create(:country => germany, :name => "Floss", :area_code => "9603") + AreaCode.create(:country => germany, :name => "Wernberg-Köblitz", :area_code => "9604") + AreaCode.create(:country => germany, :name => "Weiherhammer", :area_code => "9605") + AreaCode.create(:country => germany, :name => "Pfreimd", :area_code => "9606") + AreaCode.create(:country => germany, :name => "Luhe-Wildenau", :area_code => "9607") + AreaCode.create(:country => germany, :name => "Kohlberg Oberpf", :area_code => "9608") + AreaCode.create(:country => germany, :name => "Weiden i d Opf", :area_code => "961") + AreaCode.create(:country => germany, :name => "Amberg Oberpf", :area_code => "9621") + AreaCode.create(:country => germany, :name => "Hirschau Oberpf", :area_code => "9622") + AreaCode.create(:country => germany, :name => "Ensdorf Oberpf", :area_code => "9624") + AreaCode.create(:country => germany, :name => "Kastl b Amberg", :area_code => "9625") + AreaCode.create(:country => germany, :name => "Hohenburg", :area_code => "9626") + AreaCode.create(:country => germany, :name => "Freudenberg Oberpf", :area_code => "9627") + AreaCode.create(:country => germany, :name => "Ursensollen", :area_code => "9628") + AreaCode.create(:country => germany, :name => "Tirschenreuth", :area_code => "9631") + AreaCode.create(:country => germany, :name => "Waldsassen", :area_code => "9632") + AreaCode.create(:country => germany, :name => "Mitterteich", :area_code => "9633") + AreaCode.create(:country => germany, :name => "Wiesau", :area_code => "9634") + AreaCode.create(:country => germany, :name => "Bärnau", :area_code => "9635") + AreaCode.create(:country => germany, :name => "Plößberg", :area_code => "9636") + AreaCode.create(:country => germany, :name => "Falkenberg Oberpf", :area_code => "9637") + AreaCode.create(:country => germany, :name => "Neualbenreuth", :area_code => "9638") + AreaCode.create(:country => germany, :name => "Mähring", :area_code => "9639") + AreaCode.create(:country => germany, :name => "Grafenwöhr", :area_code => "9641") + AreaCode.create(:country => germany, :name => "Kemnath Stadt", :area_code => "9642") + AreaCode.create(:country => germany, :name => "Auerbach i d Opf", :area_code => "9643") + AreaCode.create(:country => germany, :name => "Pressath", :area_code => "9644") + AreaCode.create(:country => germany, :name => "Eschenbach i d Opf", :area_code => "9645") + AreaCode.create(:country => germany, :name => "Freihung", :area_code => "9646") + AreaCode.create(:country => germany, :name => "Kirchenthumbach", :area_code => "9647") + AreaCode.create(:country => germany, :name => "Neustadt a Kulm", :area_code => "9648") + AreaCode.create(:country => germany, :name => "Vohenstrauss", :area_code => "9651") + AreaCode.create(:country => germany, :name => "Waidhaus", :area_code => "9652") + AreaCode.create(:country => germany, :name => "Eslarn", :area_code => "9653") + AreaCode.create(:country => germany, :name => "Pleystein", :area_code => "9654") + AreaCode.create(:country => germany, :name => "Tännesberg", :area_code => "9655") + AreaCode.create(:country => germany, :name => "Moosbach b Vohenstrauß", :area_code => "9656") + AreaCode.create(:country => germany, :name => "Waldthurn", :area_code => "9657") + AreaCode.create(:country => germany, :name => "Georgenberg", :area_code => "9658") + AreaCode.create(:country => germany, :name => "Leuchtenberg", :area_code => "9659") + AreaCode.create(:country => germany, :name => "Sulzbach-Rosenberg", :area_code => "9661") + AreaCode.create(:country => germany, :name => "Vilseck", :area_code => "9662") + AreaCode.create(:country => germany, :name => "Neukirchen b Sulzbach-Rosenberg", :area_code => "9663") + AreaCode.create(:country => germany, :name => "Hahnbach", :area_code => "9664") + AreaCode.create(:country => germany, :name => "Königstein Oberpf", :area_code => "9665") + AreaCode.create(:country => germany, :name => "Illschwang", :area_code => "9666") + AreaCode.create(:country => germany, :name => "Oberviechtach", :area_code => "9671") + AreaCode.create(:country => germany, :name => "Neunburg vorm Wald", :area_code => "9672") + AreaCode.create(:country => germany, :name => "Tiefenbach Oberpf", :area_code => "9673") + AreaCode.create(:country => germany, :name => "Schönsee", :area_code => "9674") + AreaCode.create(:country => germany, :name => "Altendorf a Nabburg", :area_code => "9675") + AreaCode.create(:country => germany, :name => "Winklarn", :area_code => "9676") + AreaCode.create(:country => germany, :name => "Oberviechtach-Pullenried", :area_code => "9677") + AreaCode.create(:country => germany, :name => "Windischeschenbach", :area_code => "9681") + AreaCode.create(:country => germany, :name => "Erbendorf", :area_code => "9682") + AreaCode.create(:country => germany, :name => "Friedenfels", :area_code => "9683") + AreaCode.create(:country => germany, :name => "Sandberg Unterfr", :area_code => "9701") + AreaCode.create(:country => germany, :name => "Euerdorf", :area_code => "9704") + AreaCode.create(:country => germany, :name => "Bad Bocklet", :area_code => "9708") + AreaCode.create(:country => germany, :name => "Bad Kissingen", :area_code => "971") + AreaCode.create(:country => germany, :name => "Üchtelhausen", :area_code => "9720") + AreaCode.create(:country => germany, :name => "Schweinfurt", :area_code => "9721") + AreaCode.create(:country => germany, :name => "Werneck", :area_code => "9722") + AreaCode.create(:country => germany, :name => "Röthlein", :area_code => "9723") + AreaCode.create(:country => germany, :name => "Stadtlauringen", :area_code => "9724") + AreaCode.create(:country => germany, :name => "Poppenhausen Unterfr", :area_code => "9725") + AreaCode.create(:country => germany, :name => "Euerbach", :area_code => "9726") + AreaCode.create(:country => germany, :name => "Schonungen-Marktsteinach", :area_code => "9727") + AreaCode.create(:country => germany, :name => "Wülfershausen Unterfr", :area_code => "9728") + AreaCode.create(:country => germany, :name => "Grettstadt", :area_code => "9729") + AreaCode.create(:country => germany, :name => "Hammelburg", :area_code => "9732") + AreaCode.create(:country => germany, :name => "Münnerstadt", :area_code => "9733") + AreaCode.create(:country => germany, :name => "Burkardroth", :area_code => "9734") + AreaCode.create(:country => germany, :name => "Massbach", :area_code => "9735") + AreaCode.create(:country => germany, :name => "Oberthulba", :area_code => "9736") + AreaCode.create(:country => germany, :name => "Wartmannsroth", :area_code => "9737") + AreaCode.create(:country => germany, :name => "Rottershausen", :area_code => "9738") + AreaCode.create(:country => germany, :name => "Bad Brückenau", :area_code => "9741") + AreaCode.create(:country => germany, :name => "Kalbach Rhön", :area_code => "9742") + AreaCode.create(:country => germany, :name => "Zeitlofs-Detter", :area_code => "9744") + AreaCode.create(:country => germany, :name => "Wildflecken", :area_code => "9745") + AreaCode.create(:country => germany, :name => "Zeitlofs", :area_code => "9746") + AreaCode.create(:country => germany, :name => "Geroda Bay", :area_code => "9747") + AreaCode.create(:country => germany, :name => "Motten", :area_code => "9748") + AreaCode.create(:country => germany, :name => "Oberbach Unterfr", :area_code => "9749") + AreaCode.create(:country => germany, :name => "Bad Königshofen i Grabfeld", :area_code => "9761") + AreaCode.create(:country => germany, :name => "Saal a d Saale", :area_code => "9762") + AreaCode.create(:country => germany, :name => "Sulzdorf a d Lederhecke", :area_code => "9763") + AreaCode.create(:country => germany, :name => "Höchheim", :area_code => "9764") + AreaCode.create(:country => germany, :name => "Trappstadt", :area_code => "9765") + AreaCode.create(:country => germany, :name => "Grosswenkheim", :area_code => "9766") + AreaCode.create(:country => germany, :name => "Bad Neustadt a d Saale", :area_code => "9771") + AreaCode.create(:country => germany, :name => "Bischofsheim a d Rhön", :area_code => "9772") + AreaCode.create(:country => germany, :name => "Unsleben", :area_code => "9773") + AreaCode.create(:country => germany, :name => "Oberelsbach", :area_code => "9774") + AreaCode.create(:country => germany, :name => "Schönau a d Brend", :area_code => "9775") + AreaCode.create(:country => germany, :name => "Mellrichstadt", :area_code => "9776") + AreaCode.create(:country => germany, :name => "Ostheim v d Rhön", :area_code => "9777") + AreaCode.create(:country => germany, :name => "Fladungen", :area_code => "9778") + AreaCode.create(:country => germany, :name => "Nordheim v d Rhön", :area_code => "9779") + AreaCode.create(:country => germany, :name => "Ansbach-Katterbach", :area_code => "9802") + AreaCode.create(:country => germany, :name => "Colmberg", :area_code => "9803") + AreaCode.create(:country => germany, :name => "Aurach", :area_code => "9804") + AreaCode.create(:country => germany, :name => "Burgoberbach", :area_code => "9805") + AreaCode.create(:country => germany, :name => "Ansbach", :area_code => "981") + AreaCode.create(:country => germany, :name => "Lehrberg", :area_code => "9820") + AreaCode.create(:country => germany, :name => "Bechhofen a d Heide", :area_code => "9822") + AreaCode.create(:country => germany, :name => "Leutershausen", :area_code => "9823") + AreaCode.create(:country => germany, :name => "Dietenhofen", :area_code => "9824") + AreaCode.create(:country => germany, :name => "Herrieden", :area_code => "9825") + AreaCode.create(:country => germany, :name => "Weidenbach Mittelfr", :area_code => "9826") + AreaCode.create(:country => germany, :name => "Lichtenau Mittelfr", :area_code => "9827") + AreaCode.create(:country => germany, :name => "Rügland", :area_code => "9828") + AreaCode.create(:country => germany, :name => "Flachslanden", :area_code => "9829") + AreaCode.create(:country => germany, :name => "Gunzenhausen", :area_code => "9831") + AreaCode.create(:country => germany, :name => "Wassertrüdingen", :area_code => "9832") + AreaCode.create(:country => germany, :name => "Heidenheim Mittelfr", :area_code => "9833") + AreaCode.create(:country => germany, :name => "Theilenhofen", :area_code => "9834") + AreaCode.create(:country => germany, :name => "Ehingen Mittelfr", :area_code => "9835") + AreaCode.create(:country => germany, :name => "Gunzenhausen-Cronheim", :area_code => "9836") + AreaCode.create(:country => germany, :name => "Haundorf", :area_code => "9837") + AreaCode.create(:country => germany, :name => "Bad Windsheim", :area_code => "9841") + AreaCode.create(:country => germany, :name => "Uffenheim", :area_code => "9842") + AreaCode.create(:country => germany, :name => "Burgbernheim", :area_code => "9843") + AreaCode.create(:country => germany, :name => "Obernzenn", :area_code => "9844") + AreaCode.create(:country => germany, :name => "Oberdachstetten", :area_code => "9845") + AreaCode.create(:country => germany, :name => "Ipsheim", :area_code => "9846") + AreaCode.create(:country => germany, :name => "Ergersheim", :area_code => "9847") + AreaCode.create(:country => germany, :name => "Simmershofen", :area_code => "9848") + AreaCode.create(:country => germany, :name => "Dinkelsbühl", :area_code => "9851") + AreaCode.create(:country => germany, :name => "Feuchtwangen", :area_code => "9852") + AreaCode.create(:country => germany, :name => "Wilburgstetten", :area_code => "9853") + AreaCode.create(:country => germany, :name => "Wittelshofen", :area_code => "9854") + AreaCode.create(:country => germany, :name => "Dentlein a Forst", :area_code => "9855") + AreaCode.create(:country => germany, :name => "Dürrwangen", :area_code => "9856") + AreaCode.create(:country => germany, :name => "Schopfloch Mittelfr", :area_code => "9857") + AreaCode.create(:country => germany, :name => "Rothenburg ob der Tauber", :area_code => "9861") + AreaCode.create(:country => germany, :name => "Adelshofen Mittelfr", :area_code => "9865") + AreaCode.create(:country => germany, :name => "Geslau", :area_code => "9867") + AreaCode.create(:country => germany, :name => "Schillingsfürst", :area_code => "9868") + AreaCode.create(:country => germany, :name => "Wettringen Mittelfr", :area_code => "9869") + AreaCode.create(:country => germany, :name => "Windsbach", :area_code => "9871") + AreaCode.create(:country => germany, :name => "Heilsbronn", :area_code => "9872") + AreaCode.create(:country => germany, :name => "Abenberg-Wassermungenau", :area_code => "9873") + AreaCode.create(:country => germany, :name => "Neuendettelsau", :area_code => "9874") + AreaCode.create(:country => germany, :name => "Wolframs-Eschenbach", :area_code => "9875") + AreaCode.create(:country => germany, :name => "Rohr Mittelfr", :area_code => "9876") + AreaCode.create(:country => germany, :name => "Hengersberg Bay", :area_code => "9901") + AreaCode.create(:country => germany, :name => "Schöllnach", :area_code => "9903") + AreaCode.create(:country => germany, :name => "Lalling", :area_code => "9904") + AreaCode.create(:country => germany, :name => "Bernried Niederbay", :area_code => "9905") + AreaCode.create(:country => germany, :name => "Mariaposching", :area_code => "9906") + AreaCode.create(:country => germany, :name => "Zenting", :area_code => "9907") + AreaCode.create(:country => germany, :name => "Schöfweg", :area_code => "9908") + AreaCode.create(:country => germany, :name => "Deggendorf", :area_code => "991") + AreaCode.create(:country => germany, :name => "Bischofsmais", :area_code => "9920") + AreaCode.create(:country => germany, :name => "Regen", :area_code => "9921") + AreaCode.create(:country => germany, :name => "Zwiesel", :area_code => "9922") + AreaCode.create(:country => germany, :name => "Teisnach", :area_code => "9923") + AreaCode.create(:country => germany, :name => "Bodenmais", :area_code => "9924") + AreaCode.create(:country => germany, :name => "Bayerisch Eisenstein", :area_code => "9925") + AreaCode.create(:country => germany, :name => "Frauenau", :area_code => "9926") + AreaCode.create(:country => germany, :name => "Kirchberg Wald", :area_code => "9927") + AreaCode.create(:country => germany, :name => "Kirchdorf i Wald", :area_code => "9928") + AreaCode.create(:country => germany, :name => "Ruhmannsfelden", :area_code => "9929") + AreaCode.create(:country => germany, :name => "Plattling", :area_code => "9931") + AreaCode.create(:country => germany, :name => "Osterhofen", :area_code => "9932") + AreaCode.create(:country => germany, :name => "Wallersdorf", :area_code => "9933") + AreaCode.create(:country => germany, :name => "Stephansposching", :area_code => "9935") + AreaCode.create(:country => germany, :name => "Wallerfing", :area_code => "9936") + AreaCode.create(:country => germany, :name => "Oberpöring", :area_code => "9937") + AreaCode.create(:country => germany, :name => "Moos Niederbay", :area_code => "9938") + AreaCode.create(:country => germany, :name => "Kötzting", :area_code => "9941") + AreaCode.create(:country => germany, :name => "Viechtach", :area_code => "9942") + AreaCode.create(:country => germany, :name => "Lam Oberpf", :area_code => "9943") + AreaCode.create(:country => germany, :name => "Miltach", :area_code => "9944") + AreaCode.create(:country => germany, :name => "Arnbruck", :area_code => "9945") + AreaCode.create(:country => germany, :name => "Hohenwarth b Kötzing", :area_code => "9946") + AreaCode.create(:country => germany, :name => "Neukirchen b Hl Blut", :area_code => "9947") + AreaCode.create(:country => germany, :name => "Eschlkam", :area_code => "9948") + AreaCode.create(:country => germany, :name => "Landau a d Isar", :area_code => "9951") + AreaCode.create(:country => germany, :name => "Eichendorf", :area_code => "9952") + AreaCode.create(:country => germany, :name => "Pilsting", :area_code => "9953") + AreaCode.create(:country => germany, :name => "SimbachNiederbay", :area_code => "9954") + AreaCode.create(:country => germany, :name => "Mamming", :area_code => "9955") + AreaCode.create(:country => germany, :name => "Eichendorf-Aufhausen", :area_code => "9956") + AreaCode.create(:country => germany, :name => "Mitterfels", :area_code => "9961") + AreaCode.create(:country => germany, :name => "Schwarzach Niederbay", :area_code => "9962") + AreaCode.create(:country => germany, :name => "Konzell", :area_code => "9963") + AreaCode.create(:country => germany, :name => "Stallwang", :area_code => "9964") + AreaCode.create(:country => germany, :name => "Sankt Englmar", :area_code => "9965") + AreaCode.create(:country => germany, :name => "Wiesenfelden", :area_code => "9966") + AreaCode.create(:country => germany, :name => "Cham", :area_code => "9971") + AreaCode.create(:country => germany, :name => "Waldmünchen", :area_code => "9972") + AreaCode.create(:country => germany, :name => "Furth i Wald", :area_code => "9973") + AreaCode.create(:country => germany, :name => "Traitsching", :area_code => "9974") + AreaCode.create(:country => germany, :name => "Waldmünchen-Geigant", :area_code => "9975") + AreaCode.create(:country => germany, :name => "Rötz", :area_code => "9976") + AreaCode.create(:country => germany, :name => "Arnschwang", :area_code => "9977") + AreaCode.create(:country => germany, :name => "Schönthal Oberpf", :area_code => "9978") +end
\ No newline at end of file diff --git a/lib/tasks/populate_area_codes_pl.rake b/lib/tasks/populate_area_codes_pl.rake new file mode 100644 index 0000000..a3f725a --- /dev/null +++ b/lib/tasks/populate_area_codes_pl.rake @@ -0,0 +1,59 @@ +# encoding: UTF-8 + +desc "Populate database with Polish pre 2005 (now defunct) area codes" +task :areacodes_poland => :environment do + if ! poland = Country.where( :name => 'Poland' ).first + $stderr.puts "Error. Country not found." + exit 1 + end + + AreaCode.create(:country => poland, :name => "Biała Podlaska", :area_code => "83") + AreaCode.create(:country => poland, :name => "Białystok", :area_code => "85") + AreaCode.create(:country => poland, :name => "Bielsko-Biała", :area_code => "33") + AreaCode.create(:country => poland, :name => "Bydgoszcz", :area_code => "52") + AreaCode.create(:country => poland, :name => "Chełm", :area_code => "82") + AreaCode.create(:country => poland, :name => "Ciechanów", :area_code => "23") + AreaCode.create(:country => poland, :name => "Częstochowa", :area_code => "34") + AreaCode.create(:country => poland, :name => "Elbląg", :area_code => "55") + AreaCode.create(:country => poland, :name => "Gdańsk", :area_code => "58") + AreaCode.create(:country => poland, :name => "Gorzów Wielkopolski", :area_code => "95") + AreaCode.create(:country => poland, :name => "Jelenia Góra", :area_code => "75") + AreaCode.create(:country => poland, :name => "Kalisz", :area_code => "62") + AreaCode.create(:country => poland, :name => "Katowice", :area_code => "32") + AreaCode.create(:country => poland, :name => "Kielce", :area_code => "41") + AreaCode.create(:country => poland, :name => "Konin", :area_code => "63") + AreaCode.create(:country => poland, :name => "Koszalin", :area_code => "94") + AreaCode.create(:country => poland, :name => "Kraków", :area_code => "12") + AreaCode.create(:country => poland, :name => "Krosno", :area_code => "13") + AreaCode.create(:country => poland, :name => "Legnica", :area_code => "76") + AreaCode.create(:country => poland, :name => "Leszno", :area_code => "65") + AreaCode.create(:country => poland, :name => "Łódź", :area_code => "42") + AreaCode.create(:country => poland, :name => "Łomża", :area_code => "86") + AreaCode.create(:country => poland, :name => "Lublin", :area_code => "81") + AreaCode.create(:country => poland, :name => "Nowy Sącz", :area_code => "18") + AreaCode.create(:country => poland, :name => "Olsztyn", :area_code => "89") + AreaCode.create(:country => poland, :name => "Opole", :area_code => "77") + AreaCode.create(:country => poland, :name => "Ostrołęka", :area_code => "29") + AreaCode.create(:country => poland, :name => "Piła", :area_code => "67") + AreaCode.create(:country => poland, :name => "Piotrków Trybunalski", :area_code => "44") + AreaCode.create(:country => poland, :name => "Płock", :area_code => "24") + AreaCode.create(:country => poland, :name => "Poznań", :area_code => "61") + AreaCode.create(:country => poland, :name => "Przemyśl", :area_code => "16") + AreaCode.create(:country => poland, :name => "Radom", :area_code => "48") + AreaCode.create(:country => poland, :name => "Rzeszów", :area_code => "17") + AreaCode.create(:country => poland, :name => "Siedlce", :area_code => "25") + AreaCode.create(:country => poland, :name => "Sieradz", :area_code => "43") + AreaCode.create(:country => poland, :name => "Skierniewice", :area_code => "46") + AreaCode.create(:country => poland, :name => "Słupsk", :area_code => "59") + AreaCode.create(:country => poland, :name => "Suwałki", :area_code => "87") + AreaCode.create(:country => poland, :name => "Szczecin", :area_code => "91") + AreaCode.create(:country => poland, :name => "Tarnobrzeg", :area_code => "15") + AreaCode.create(:country => poland, :name => "Tarnów", :area_code => "14") + AreaCode.create(:country => poland, :name => "Toruń", :area_code => "56") + AreaCode.create(:country => poland, :name => "Wałbrzych", :area_code => "74") + AreaCode.create(:country => poland, :name => "Warszawa", :area_code => "22") + AreaCode.create(:country => poland, :name => "Włocławek", :area_code => "54") + AreaCode.create(:country => poland, :name => "Wrocław", :area_code => "71") + AreaCode.create(:country => poland, :name => "Zamość", :area_code => "84") + AreaCode.create(:country => poland, :name => "Zielona Góra", :area_code => "68") +end diff --git a/lib/tasks/populate_country_codes.rake b/lib/tasks/populate_country_codes.rake new file mode 100644 index 0000000..1129f81 --- /dev/null +++ b/lib/tasks/populate_country_codes.rake @@ -0,0 +1,244 @@ +# encoding: UTF-8 + +desc "Populate database with country codes" +task :country_codes => :environment do + + Country.create(:name => "American Samoa", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Anguilla", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Antigua and Barbuda", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Bahamas", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Barbados", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Bermuda", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "British Virgin Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Canada", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Cayman Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Dominica", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Dominican Republic", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Grenada", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Guam", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Jamaica", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Montserrat", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Northern Mariana Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Puerto Rico", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Saint Kitts and Nevis", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Saint Lucia", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Saint Vincent and the Grenadines", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Trinidad and Tobago", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Turks and Caicos Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "United States of America", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "United States Virgin Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" ) + Country.create(:name => "Egypt", :country_code => "20", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Morocco", :country_code => "212", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Algeria", :country_code => "213", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Tunisia", :country_code => "216", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Libya", :country_code => "218", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Gambia", :country_code => "220", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Senegal", :country_code => "221", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Mauritania", :country_code => "222", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Mali", :country_code => "223", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Guinea", :country_code => "224", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Côte d'Ivoire", :country_code => "225", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Burkina Faso", :country_code => "226", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Niger", :country_code => "227", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Togolese Republic", :country_code => "228", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Benin", :country_code => "229", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Mauritius", :country_code => "230", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Liberia", :country_code => "231", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Sierra Leone", :country_code => "232", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Ghana", :country_code => "233", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Nigeria", :country_code => "234", :international_call_prefix => "009", :trunk_prefix => "" ) + Country.create(:name => "Chad", :country_code => "235", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Central African Republic", :country_code => "236", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Cameroon", :country_code => "237", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Cape Verde", :country_code => "238", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Sao Tome and Principe", :country_code => "239", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Equatorial Guinea", :country_code => "240", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Gabonese Republic", :country_code => "241", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Congo", :country_code => "242", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Democratic Republic of the Congo", :country_code => "243", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Angola", :country_code => "244", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Guinea-Bissau", :country_code => "245", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Diego Garcia", :country_code => "246", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Ascension", :country_code => "247", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Seychelles", :country_code => "248", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Sudan", :country_code => "249", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Rwanda", :country_code => "250", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Ethiopia", :country_code => "251", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Somali Democratic Republic", :country_code => "252", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Djibouti", :country_code => "253", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Kenya", :country_code => "254", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Tanzania", :country_code => "255", :international_call_prefix => "000", :trunk_prefix => "" ) + Country.create(:name => "Uganda", :country_code => "256", :international_call_prefix => "000", :trunk_prefix => "" ) + Country.create(:name => "Burundi", :country_code => "257", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Mozambique", :country_code => "258", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Zambia", :country_code => "260", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Madagascar", :country_code => "261", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Reunion", :country_code => "262", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Zimbabwe", :country_code => "263", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Namibia", :country_code => "264", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Malawi", :country_code => "265", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Lesotho", :country_code => "266", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Botswana", :country_code => "267", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Swaziland", :country_code => "268", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Comoros", :country_code => "269", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Mayotte", :country_code => "269", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "South Africa", :country_code => "27", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Saint Helena", :country_code => "290", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Eritrea", :country_code => "291", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Aruba", :country_code => "297", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Faroe Islands", :country_code => "298", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Greenland", :country_code => "299", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Greece", :country_code => "30", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Netherlands", :country_code => "31", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Belgium", :country_code => "32", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "France", :country_code => "33", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Spain", :country_code => "34", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Gibraltar", :country_code => "350", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Portugal", :country_code => "351", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Luxembourg", :country_code => "352", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Ireland", :country_code => "353", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Iceland", :country_code => "354", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Albania", :country_code => "355", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Malta", :country_code => "356", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Cyprus", :country_code => "357", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Finland", :country_code => "358", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Bulgaria", :country_code => "359", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Hungary", :country_code => "36", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Lithuania", :country_code => "370", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Latvia", :country_code => "371", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Estonia", :country_code => "372", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Moldova", :country_code => "373", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Armenia", :country_code => "374", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Belarus", :country_code => "375", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Andorra", :country_code => "376", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Monaco", :country_code => "377", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "San Marino", :country_code => "378", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Vatican City State", :country_code => "379", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Ukraine", :country_code => "380", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Serbia and Montenegro", :country_code => "381", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Croatia", :country_code => "385", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Slovenia", :country_code => "386", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Bosnia and Herzegovina", :country_code => "387", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Group of countries, shared code", :country_code => "388", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "The Former Yugoslav Republic of Macedonia", :country_code => "389", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Italy", :country_code => "39", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Vatican City State", :country_code => "39", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Romania", :country_code => "40", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Switzerland", :country_code => "41", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Czech Republic", :country_code => "420", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Slovak Republic", :country_code => "421", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Liechtenstein", :country_code => "423", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Austria", :country_code => "43", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "United Kingdom of Great Britain and Northern Ireland", :country_code => "44", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Denmark", :country_code => "45", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Sweden", :country_code => "46", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Norway", :country_code => "47", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Poland", :country_code => "48", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Germany", :country_code => "49", :international_call_prefix => "00", :trunk_prefix => "0" ) + Country.create(:name => "Falkland Islands", :country_code => "500", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Belize", :country_code => "501", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Guatemala", :country_code => "502", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "El Salvador", :country_code => "503", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Honduras", :country_code => "504", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Nicaragua", :country_code => "505", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Costa Rica", :country_code => "506", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Panama", :country_code => "507", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Saint Pierre and Miquelon", :country_code => "508", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Haiti", :country_code => "509", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Peru", :country_code => "51", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Mexico", :country_code => "52", :international_call_prefix => "00", :trunk_prefix => "01" ) + Country.create(:name => "Cuba", :country_code => "53", :international_call_prefix => "119", :trunk_prefix => "" ) + Country.create(:name => "Argentine Republic", :country_code => "54", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Brazil", :country_code => "55", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Chile", :country_code => "56", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Colombia", :country_code => "57", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Venezuela", :country_code => "58", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Guadeloupe", :country_code => "590", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Bolivia", :country_code => "591", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Guyana", :country_code => "592", :international_call_prefix => "001", :trunk_prefix => "" ) + Country.create(:name => "Ecuador", :country_code => "593", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "French Guiana", :country_code => "594", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Paraguay", :country_code => "595", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Martinique", :country_code => "596", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Suriname", :country_code => "597", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Uruguay", :country_code => "598", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Netherlands Antilles", :country_code => "599", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Malaysia", :country_code => "60", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Australia", :country_code => "61", :international_call_prefix => "0011", :trunk_prefix => "" ) + Country.create(:name => "Indonesia", :country_code => "62", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Philippines", :country_code => "63", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "New Zealand", :country_code => "64", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Singapore", :country_code => "65", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Thailand", :country_code => "66", :international_call_prefix => "001", :trunk_prefix => "" ) + Country.create(:name => "Democratic Republic of Timor-Leste", :country_code => "670", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Australian External Territories", :country_code => "672", :international_call_prefix => "0011", :trunk_prefix => "" ) + Country.create(:name => "Brunei Darussalam", :country_code => "673", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Nauru", :country_code => "674", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Papua New Guinea", :country_code => "675", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Tonga", :country_code => "676", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Solomon Islands", :country_code => "677", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Vanuatu", :country_code => "678", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Fiji", :country_code => "679", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Palau", :country_code => "680", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Wallis and Futuna", :country_code => "681", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Cook Islands", :country_code => "682", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Niue", :country_code => "683", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Samoa", :country_code => "685", :international_call_prefix => "0", :trunk_prefix => "" ) + Country.create(:name => "Kiribati", :country_code => "686", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "New Caledonia", :country_code => "687", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Tuvalu", :country_code => "688", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "French Polynesia", :country_code => "689", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Tokelau", :country_code => "690", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Micronesia", :country_code => "691", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Marshall Islands", :country_code => "692", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Kazakhstan", :country_code => "7", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Russian Federation", :country_code => "7", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "International Freephone Service", :country_code => "800", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "International Shared Cost Service", :country_code => "808", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Japan", :country_code => "81", :international_call_prefix => "010", :trunk_prefix => "" ) + Country.create(:name => "Korea", :country_code => "82", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Viet Nam", :country_code => "84", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Democratic People's Republic of Korea", :country_code => "850", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Hong Kong, China", :country_code => "852", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Macao, China", :country_code => "853", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Cambodia", :country_code => "855", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Lao People's Democratic Republic", :country_code => "856", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "China", :country_code => "86", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Inmarsat SNAC", :country_code => "870", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Inmarsat", :country_code => "871", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Inmarsat", :country_code => "872", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Inmarsat", :country_code => "873", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Inmarsat", :country_code => "874", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Universal Personal Telecommunication Service", :country_code => "878", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Bangladesh", :country_code => "880", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Turkey", :country_code => "90", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "India", :country_code => "91", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Pakistan", :country_code => "92", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Afghanistan", :country_code => "93", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Sri Lanka", :country_code => "94", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Myanmar", :country_code => "95", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Maldives", :country_code => "960", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Lebanon", :country_code => "961", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Jordan", :country_code => "962", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Syrian Arab Republic", :country_code => "963", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Iraq", :country_code => "964", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Kuwait", :country_code => "965", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Saudi Arabia", :country_code => "966", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Yemen", :country_code => "967", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Oman", :country_code => "968", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "United Arab Emirates", :country_code => "971", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Israel", :country_code => "972", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Bahrain", :country_code => "973", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Qatar", :country_code => "974", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Bhutan", :country_code => "975", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Mongolia", :country_code => "976", :international_call_prefix => "001", :trunk_prefix => "" ) + Country.create(:name => "Nepal", :country_code => "977", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "International Premium Rate Service", :country_code => "979", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Iran", :country_code => "98", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Tajikistan", :country_code => "992", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Turkmenistan", :country_code => "993", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Azerbaijani Republic", :country_code => "994", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Georgia", :country_code => "995", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Kyrgyz Republic", :country_code => "996", :international_call_prefix => "00", :trunk_prefix => "" ) + Country.create(:name => "Uzbekistan", :country_code => "998", :international_call_prefix => "00", :trunk_prefix => "" ) +end diff --git a/lib/tasks/send_fax_notifications.rake b/lib/tasks/send_fax_notifications.rake new file mode 100644 index 0000000..039c509 --- /dev/null +++ b/lib/tasks/send_fax_notifications.rake @@ -0,0 +1,49 @@ +# encoding: UTF-8 + +desc "Import inbound fax" + +task :send_fax_notifications => :environment do + FaxDocument.where(:state => 'received').each do |fax_document| + TIFF_FUFFIX = ".tiff" + PDF_SUFFIX = ".pdf" + TMP_DIR = "/tmp/" + + tiff_file = File.basename(fax_document.tiff.to_s) + + if !File.exists?( "#{TMP_DIR}#{tiff_file}" ) + fax_document.state = 'unsuccessful' + fax_document.save + next + end + + paper_size = "letter" + pdf_file = "#{TMP_DIR}#{File.basename(tiff_file, TIFF_FUFFIX)}#{PDF_SUFFIX}" + + system "tiff2pdf \\ + -o \"#{pdf_file}\" \\ + -p #{paper_size} \\ + -a \"#{fax_document.remote_station_id}\" \\ + -c \"AMOOMA Gemeinschaft version #{GEMEINSCHAFT_VERSION}\" \\ + -t \"#{fax_document.remote_station_id}\" \"#{TMP_DIR}#{tiff_file}\"" + + if !File.exists?( pdf_file ) + fax_document.state = 'unsuccessful' + fax_document.save + next + end + + fax_document.document = File.open(pdf_file) + fax_document.state = 'successful' + + if fax_document.save + Notifications.new_fax(fax_document).deliver + File.delete("#{TMP_DIR}#{tiff_file}"); + File.delete(pdf_file); + fax_document.tiff = nil + fax_document.save + else + fax_document.state = 'unsuccessful' + fax_document.save + end + end +end diff --git a/lib/tasks/send_voicemail_notifications.rake b/lib/tasks/send_voicemail_notifications.rake new file mode 100644 index 0000000..214d832 --- /dev/null +++ b/lib/tasks/send_voicemail_notifications.rake @@ -0,0 +1,52 @@ +# encoding: UTF-8 + +desc "Import inbound voicemail" + +task :send_voicemail_notifications => :environment do + VoicemailMessage.where(:notification => nil).each do |message| + + message.notification = false + message.save + if !File.exists?( message.file_path ) + $stderr.puts "File \"#{message.file_path}\" does not exist" + next + end + + sip_account = SipAccount.where(:auth_name => message.username).first + if ! sip_account + $stderr.puts "SipAccount \"#{message.username}\" does not exist" + next + end + + user = sip_account.sip_accountable + if user.class != User + next + end + + if user.email.blank? + $stderr.puts "no email address" + next + end + + voicemail_settings = sip_account.voicemail_setting + if !voicemail_settings + voicemail_settings = VoicemailSetting.new(:notify => user.send_voicemail_as_email_attachment, :attachment => user.send_voicemail_as_email_attachment, :mark_read => user.send_voicemail_as_email_attachment) + end + + message.notification = voicemail_settings.notify + if voicemail_settings.notify + if Notifications.new_voicemail(message, voicemail_settings.attachment).deliver + if voicemail_settings.purge + message.delete + next + end + message.save + if voicemail_settings.mark_read + message.mark_read + end + end + else + message.save + end + end +end diff --git a/lib/templates/erb/scaffold/_form.html.erb b/lib/templates/erb/scaffold/_form.html.erb new file mode 100644 index 0000000..24a1768 --- /dev/null +++ b/lib/templates/erb/scaffold/_form.html.erb @@ -0,0 +1,13 @@ +<%%= simple_form_for(@<%= singular_table_name %>) do |f| %> + <%%= f.error_notification %> + + <div class="inputs"> + <%- attributes.each do |attribute| -%> + <%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> %> + <%- end -%> + </div> + + <div class="actions"> + <%%= f.button :submit %> + </div> +<%% end %> diff --git a/lib/uacsta.rb b/lib/uacsta.rb new file mode 100644 index 0000000..9303092 --- /dev/null +++ b/lib/uacsta.rb @@ -0,0 +1,83 @@ +class Uacsta + + def send(sip_account, domain, body) + require 'freeswitch_event' + + event = FreeswitchEvent.new("NOTIFY") + event.add_header("profile", "gemeinschaft") + event.add_header("event-string", "uaCSTA") + event.add_header("user", sip_account) + event.add_header("host", domain) + event.add_header("content-type", "application/csta+xml") + event.add_body(body); + + return event.fire(); + end + + def make_call(sip_account, domain, number) + body = '<?xml version="1.0" encoding="UTF-8"?> + <MakeCall xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed4"> + <callingDevice>' + sip_account.to_s + '</callingDevice> + <calledDirectoryNumber>' + number.to_s + '</calledDirectoryNumber> + <autoOriginate>doNotPrompt</autoOriginate> + </MakeCall>' + + self.send(sip_account, domain, body); + end + + def answer_call(sip_account, domain) + body = '<?xml version="1.0" encoding="UTF-8"?> + <AnswerCall xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed4"> + <callToBeAnswered> + <deviceID>' + sip_account + '</deviceID> + </callToBeAnswered> + </AnswerCall>' + + self.send(sip_account, domain, body) + end + + def set_microphone_mute(sip_account, domain, value) + body = '<?xml version="1.0" encoding="UTF-8"?> + <SetMicrophoneMute xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3"> + <device>' + sip_account + '</device> + <auditoryApparatus>1</auditoryApparatus> + <microphoneMuteOn>' + value.to_s + '</microphoneMuteOn> + </SetMicrophoneMute>' + + self.send(sip_account, domain, body) + end + + def set_speaker_volume(sip_account, domain, value) + body = '<?xml version="1.0" encoding="UTF-8"?> + <SetSpeakerVolume xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3"> + <device>' + sip_account + '</device> + <auditoryApparatus>1</auditoryApparatus> + <speakerVolume>' + value.to_s + '</speakerVolume> + </SetSpeakerVolume>' + + self.send(sip_account, domain, body) + end + + def set_do_not_disturb(sip_account, domain, value) + body = '<?xml version="1.0" encoding="UTF-8"?> + <SetDoNotDisturb xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3"> + <device>' + sip_account + '</device> + <doNotDisturbOn>' + value.to_s + '</doNotDisturbOn> + </SetDoNotDisturb>' + + self.send(sip_account, domain, body) + end + + def set_forwarding(sip_account, domain, forwarding_type, number, activate) + forwarding_types = [ "forwardImmediate", "forwardBusy", "forwardNoAns" ] + body = '<?xml version="1.0" encoding="UTF-8"?> + <SetForwarding xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3"> + <device>' + sip_account + '</device> + <forwardingType>' + forwarding_types[forwarding_type.to_i] + '</forwardingType> + <forwardDN>' + number.to_s + '</forwardDN> + <activateForward>' + activate.to_s + '</activateForward> + </SetForwarding>' + + self.send(sip_account, domain, body) + end +end |